/*
  Josh's Custom CSS Reset
  https://www.joshwcomeau.com/css/custom-css-reset/
*/

*, *::before, *::after {
  box-sizing: border-box;
}

* {
  line-height: 0;
  margin: 0;
}

:root {
  interpolate-size: allow-keywords;
}

body {
  -webkit-font-smoothing: antialiased;
}

img, picture, video, canvas, svg {
  display: block;
  max-width: 100%;
}

input, button, textarea, select {
  font: inherit;
}

input::placeholder {
  color: inherit;
  opacity: 1;
}

a, p, h2, h3, h4, h5, h6, button, aside, section, details, summary {
  line-height: calc(1em + 0.5rem);
  overflow-wrap: break-word;
}

p {
  text-wrap: pretty;
}

h1, h2, h3, h4, h5, h6 {
  text-wrap: balance;
}

:root {
    --urbanist: 'DM Sans', Helvetica, sans-serif;

    --black: rgba(0, 0, 0, 0.87);
    --white: #FFFFFC;

    --midnight-blue: #18206F;
    --soft-blush: #FFD9DA;
    --yellow: #FBFF12;
    --neon-pink: #FF206E;
    --tropical-mint: rgb(15, 244, 198);

    --border-width: .3rem;
    --box-shadow-width: .3rem;

    --default-font-size: calc(1rem + 0.5vw);

    font-size: var(--default-font-size);
}

/*** soft blush ***/
.bg-color-one {
    background-color: var(--soft-blush);
}

.border-color-one {
    border: var(--border-width) solid var(--soft-blush);
}

.box-shadow-color-one {
    box-shadow: calc(var(--box-shadow-width) * -1) calc(var(--box-shadow-width) * -1) 0 0 var(--soft-blush);
}

/*** midnight blue ***/
.bg-color-two {
    background-color: var(--midnight-blue);
}

.text-color-two {
    color: var(--midnight-blue);
}

.border-color-two {
    border: var(--border-width) solid var(--midnight-blue);
}

/*** neon pink ***/
.bg-color-three {
    background-color: var(--neon-pink);
}

.text-color-three {
    color: var(--neon-pink);
}

.border-color-three {
    border: var(--border-width) solid var(--neon-pink);
}

.outline-color-three {
    outline: var(--border-width) solid var(--neon-pink);
}

/*** yellow ***/
.text-color-four {
    color: var(--yellow);
}

.border-color-four {
    border: var(--border-width) solid var(--yellow);
}

/*** tropical mint ***/
.text-color-five {
    color: var(--tropical-mint);
}

.border-color-five {
    border: var(--border-width) solid var(--tropical-mint);
}

.outline-color-five {
    outline: var(--border-width) solid var(--tropical-mint);
}

/*** white ***/
.bg-color-six {
    background-color: var(--white);
}

.border-color-six {
    border: var(--border-width) solid var(--white);
}

.outline-color-six {
    outline: var(--border-width) solid var(--white);
}

/*** patterns ***/
.patterned-bg {
    --bg-size: 1.5rem;

    --bg-a: transparent;
    --bg-b: transparent;

    --bg-plaid-img-1: linear-gradient(to right,
            var(--bg-b) 5%,
            transparent 5%);
    --bg-plaid-img-2: linear-gradient(to bottom,
            var(--bg-b) 5%,
            transparent 5%);
    --bg-plaid-img-3: linear-gradient(to right,
            color-mix(in oklab, var(--bg-a), transparent) 50%,
            transparent 50%);
    --bg-plaid-img-4: linear-gradient(to bottom,
            color-mix(in oklab, var(--bg-a), transparent) 50%,
            transparent 50%);
    --bg-plaid-position-1: calc(var(--bg-size)/4) 0;
    --bg-plaid-position-2: 0 calc(var(--bg-size)/4);
    --bg-plaid-position-3: 0 0;
    --bg-plaid-size-1: var(--bg-size);
    --bg-plaid-size-2: var(--bg-size) var(--bg-size);
    --bg-plaid: var(--bg-plaid-img-1) var(--bg-plaid-position-1) / var(--bg-plaid-size-1),
        var(--bg-plaid-img-2) var(--bg-plaid-position-2) / var(--bg-plaid-size-2),
        var(--bg-plaid-img-3) var(--bg-plaid-position-3) / var(--bg-plaid-size-1),
        var(--bg-plaid-img-4) var(--bg-plaid-position-3) / var(--bg-plaid-size-2);

    --bg-polka-dots-img-1: radial-gradient(
                var(--bg-a) 34%, transparent 36%);
    --bg-polka-dots-img-2: radial-gradient(
                var(--bg-a) 34%, transparent 36%);
    --bg-polka-dots-position-1: 0 0;
    --bg-polka-dots-position-2: calc(var(--bg-size)/2) calc(var(--bg-size)/2);
    --bg-polka-dots-size: var(--bg-size) var(--bg-size);
    --bg-polka-dots-color: var(--bg-b);
    --bg-polka-dots: var(--bg-polka-dots-img-1) var(--bg-polka-dots-position-1) / var(--bg-polka-dots-size),
        var(--bg-polka-dots-img-2) var(--bg-polka-dots-position-2) / var(--bg-polka-dots-size) var(--bg-polka-dots-color);

    --bg-chevron-img-1: linear-gradient(135deg, var(--bg-a) 25%, transparent 25%);
    --bg-chevron-img-2: linear-gradient(225deg, var(--bg-a) 25%, transparent 25%);
    --bg-chevron-img-3: linear-gradient(315deg, var(--bg-a) 25%, transparent 25%);
    --bg-chevron-img-4: linear-gradient(45deg, var(--bg-a) 25%, transparent 25%);
    --bg-chevron-position-1: calc(var(--bg-size)/2) 0;
    --bg-chevron-position-2: 0 0;
    --bg-chevron-size: var(--bg-size) var(--bg-size);
    --bg-chevron-color: var(--bg-b);
    --bg-chevron: var(--bg-chevron-img-1) var(--bg-chevron-position-1) / var(--bg-chevron-size),
        var(--bg-chevron-img-2) var(--bg-chevron-position-1) / var(--bg-chevron-size),
        var(--bg-chevron-img-3) var(--bg-chevron-position-2) / var(--bg-chevron-size),
        var(--bg-chevron-img-4) var(--bg-chevron-position-2) / var(--bg-chevron-size) var(--bg-chevron-color);

    --bg-check-img-1: linear-gradient(to right,
            var(--bg-a) 19%,
            transparent 20%);
    --bg-check-img-2: linear-gradient(to bottom,
        var(--bg-a) 19%,
        transparent 20%);
    --bg-check-position-1: calc(var(--bg-size)/4) 0;
    --bg-check-position-2: 0 calc(var(--bg-size)/4);
    --bg-check-size-1: calc(var(--bg-size)/2);
    --bg-check-size-2: calc(var(--bg-size)/2) calc(var(--bg-size)/2);
    --bg-check-color: var(--bg-b);
    --bg-check: var(--bg-check-img-1) var(--bg-check-position-1) / var(--bg-check-size-1),
        var(--bg-check-img-2) var(--bg-check-position-2) / var(--bg-check-size-2) var(--bg-check-color);

    --bg-stripe-img-1: linear-gradient(to right,
        transparent 70%,
        var(--bg-b) 70%,
        var(--bg-b) 80%,
        transparent 80%);
    --bg-stripe-img-2: linear-gradient(to right,
        var(--bg-a) 50%,
        transparent 50%);
    --bg-stripe-position: 25% 0;
    --bg-stripe-size: var(--bg-size);
    --bg-stripe: var(--bg-stripe-img-1) var(--bg-stripe-position) / var(--bg-stripe-size),
        var(--bg-stripe-img-2) var(--bg-stripe-position) / var(--bg-stripe-size);

    position: relative;
}

.patterned-bg:before {
    content: "";
    display: block;
    inset: 0;
    pointer-events: none;
    position: absolute;
}

.patterned-bg.neon-pink-a {
    --bg-a: var(--neon-pink);
}

.patterned-bg.neon-pink-b {
    --bg-b: var(--neon-pink);
}

.patterned-bg.soft-blush-a {
    --bg-a: var(--soft-blush);
}

.patterned-bg.soft-blush-b {
    --bg-b: var(--soft-blush);
}

.patterned-bg.midnight-blue-a {
    --bg-a: var(--midnight-blue);
}

.patterned-bg.midnight-blue-b {
    --bg-b: var(--midnight-blue);
}

.patterned-bg.tropical-mint-a {
    --bg-a: var(--tropical-mint);
}

.patterned-bg.tropical-mint-b {
    --bg-b: var(--tropical-mint);
}

.patterned-bg.yellow-a {
    --bg-a: var(--yellow);
}

.patterned-bg.yellow-b {
    --bg-b: var(--yellow);
}

.patterned-bg.white-a {
    --bg-a: var(--white);
}

.patterned-bg.white-b {
    --bg-b: var(--white);
}

.plaid-bg {
    background: var(--bg-plaid);
}

.polka-dots-bg {
    background: var(--bg-polka-dots);
}

.chevron-bg {
    background: var(--bg-chevron);
}

.check-bg {
    background: var(--bg-check);
}

.stripe-bg {
    background: var(--bg-stripe);
}

.flowers-bg {
    background-color: var(--bg-b);
}

.flowers-bg:before {
    background-color: var(--bg-a);
    mask: url("/assets/bg-flowers.svg");
    mask-position: 50%;
    mask-size: cover;
}

.ferns-bg {
    background-color: var(--bg-b);
}

.ferns-bg:before {
    background-color: var(--bg-a);
    mask-image: url("/assets/bg-ferns.svg");
    mask-position: 50%;
    mask-size: cover;
}

.leopard-print-bg {
    background-color: var(--bg-b);
    position: relative;
}

.leopard-print-bg:before {
    background-color: var(--bg-a);
    mask-image: url("/assets/bg-leopard-print.svg");
    mask-position: 50%;
    mask-size: contain;
}

.text-primary-font {
    font-family: var(--urbanist);
    font-weight: 500;
    letter-spacing: -.05rem;
}

.larger-font-size {
    font-size: 1.25rem;
}

.small-font-size {
    font-size: .65rem;
}

.rotate-left {
    rotate: -2.26deg;
}

.rotate-right {
    rotate: 1.42deg;
}

strong {
    font-weight: 700;
}

img {
    height: auto;
    width: 100%;
}

a, a:visited {
    color: inherit;
}

a:hover, a:active {
    color: var(--yellow);
}

a.lockup {
    text-decoration: none;
}

.patchwork {
    display: flex;
    width: 100%;

    .patterned-bg {
        border: .2rem solid var(--black);
        border-bottom-width: 0;
        border-right-width: 0;
        position: relative;
        width: 100%;
    }
}

.patchwork:first-of-type {
    .block:first-of-type {
        width: 50%;
    }
}

.patchwork:last-of-type {
    border-bottom: .2rem solid var(--black);

    .patterned-bg:last-of-type {
        width: 50%;
    }
}

header {
    margin-top: -1.5rem;
}

.patchwork {
    height: 2.5rem;
}

main {
    display: flex;
    flex-direction: column;
    gap: 2rem;
    max-width: calc(100% - 2rem);
    margin: 2.5rem auto;
}

.kooky-border {
    inset: 0;
    pointer-events: none;
    position: absolute;
    z-index: 0;
}

.patterned-bg .kooky-border {
    inset: 1rem;
}

/*.outline {
    outline-offset: calc(var(--border-width) * -2);
}*/

/*** index ***/
*:has(> .kooky-border) {
    padding: 0 1rem 1rem;
    position: relative;
    text-align: center;
}

*:has(> .kooky-border) h2 {
    display: inline-block;
    font-size: 1.25em;
    font-weight: 900;
    line-height: .8;
    margin: -1rem 0 1rem;
    padding: .25em .4em;
    position: relative;
    text-transform: uppercase;
    z-index: 1;
}

*:has(> .kooky-border) p {
    padding: .5rem;
    position: relative;
    z-index: 2;
}

@media screen and (orientation: landscape) {
    :root {
        --box-shadow-width: .3rem
    }

    header {
        margin-top: -6rem;
    }

    .patchwork {
        height: 5rem;
    }

    main {
        gap: 5rem;
        max-width: calc(100% - 10rem);
    }

    main .intro {
        grid-area: intro;
    }

    main .flyer {
        grid-area: flyer;
    }

    main .services {
        align-self: start;
        grid-area: services;
    }

    .patterned-bg .kooky-border {
        inset: 2rem;
    }

    /*** index ***/
    *:has(> .kooky-border) {
        padding: 0 2rem 2rem;
    }

    *:has(> .kooky-border) p {
        padding: 1rem;
    }
}

.logo {
    text-align: center;
}

.logo .column {
    align-items: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-bottom: 1rem;
}

.logo .row {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .25rem;
    justify-content: center;
}

.logo span {
    color: var(--yellow);
    display: inline-block;
    font-weight: 900;
    line-height: 1;
    padding: .25em .4em;
    text-transform: uppercase;
    width: auto;
}

.logo span:first-of-type {
    position: relative;
    z-index: 1;
}

.logo .large-font-size {
    font-size: 2.4rem;
}

.logo .small-font-size {
    font-size: 1.2rem;
    color: var(--midnight-blue);
    padding-bottom: 0;
}

.logo svg {
    color: var(--tropical-mint);
    width: .75rem;
}

.subheadline {
    border-width: 0 0 .3rem 0;
    margin-bottom: .2rem;
    padding-bottom: .2rem;
}

.logo hr {
    border-width: 0 0 var(--border-width) 0;
    color: var(--tropical-mint);
    margin: .5rem auto 0;
    width: 50vw;
}

aside {
    background-color: var(--neon-pink);
    padding: .3rem;
    text-align: center;
    width: 100%;
}

aside p {
    color: var(--soft-blush);
    display: inline-block;
    line-height: 1;
}

aside p a, aside p a:visited {
    color: var(--yellow);
}

aside p a:hover, aside p a:active {
    color: var(--dusk-blue);
}

.socials {
    display: flex;
    flex-wrap: wrap;
    gap: .3em 1em;
    justify-content: center;
    margin-bottom: 1rem;
    width: 100%;
}

.socials a {
    align-items: center;
    display: inline-flex;
    gap: .3em;
}

.socials .icon {
    width: auto;
    height: 1.2em;
}

.prices span {
    line-height: 1;
}

.prices ul {
    padding: 0;
}

.prices li {
    align-items: center;
    border-bottom: 1px dashed var(--yellow);
    display: flex;
    justify-content: space-between;
    line-height: 1.2;
    padding: .75rem;
    text-align: left;
}

.prices li:last-child {
    border: 0;
}

.prices .alt {
    flex-basis: 60%;
}

