:root {
    --primary: #AC3BED;
    --primary-foreground: #FFFFFF;

    --spacing-negative: -0.025em;
    --spacing-sm: 0.5rem;
    --spacing-md: 1rem;
    --spacing-lg: 2rem;

    --radius: 0.5rem;
    --radius-lg: 1rem;
    --radius-xl: 1.5rem;

    --badge-background: #AC3BED1A;
    --badge-background-half: #AC3BED0D;
    --muted-bg: #F7F5FD;
    --badge-border: #AC3BED33;
    --bg-color: #FBFAFF;
    --bg-alt-color: #FAF6FF;
    --header-dark: #1A142A;
    --sub-header: #6A5C8A;
    --text-lighter: #1A142A99;
    --text-dark: #1A142AB2;
    --text-darker: #1A142ACC;
    --button-dark: #29224F;
    --gradient-primary: linear-gradient(135deg, hsl(278 83% 58%), hsl(250 40% 22%));
    --gradient-hero: radial-gradient(circle at 20% 50%, hsl(278 83% 58% / .1) 0%, transparent 50%), radial-gradient(circle at 80% 20%, hsl(250 40% 22% / .08) 0%, transparent 50%), radial-gradient(circle at 40% 80%, hsl(278 83% 68% / .06) 0%, transparent 50%);
    --gradient-overlay: linear-gradient(90deg, rgba(254, 248, 255, 0.05), rgba(254, 239, 255, 0.14));
    --gradient-card: linear-gradient(145deg, hsl(255 255% 100%), hsl(255 20% 98%));
    --gradient-section: linear-gradient(to bottom, #FFFFFF, #f4f3f766);
    --pink-card-gradient: linear-gradient(to right, var(--badge-background), var(--badge-background-half), var(--badge-background));
    --off-white: #F9F6FF;
    --section-background: #f4f3f766;
    --muted: 255 20% 96%;
    --font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif;
    --border: #E3E0EB33;
    --border-dark: #E3E0EB80;
    --border-color: #E3E0EB;

    --shadow-soft: 0 4px 20px -4px hsl(278 83% 58% / .08);
    --shadow-medium: 0 8px 40px -8px hsl(278 83% 58% / .12);
    --shadow-strong: 0 20px 80px -16px hsl(278 83% 58% / .16);
    --shadow-glow: 0 0 40px hsl(278 83% 58% / .15);

    --star-color: #FACC14;
}

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

body {
    font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif;
    font-size: 1rem;
    color: var(--header-dark);
    background-color: var(--bg-color);
    line-height: 1.6;
    text-align: center;
    min-height: 100dvh;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

button {
    font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif;
}

.content-container {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
}

.flex-column {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 100%;
}

.flex-row {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    width: 100%;
}

.main-btn {
    display: inline-block;
    color: var(--primary-foreground);
    background-color: var(--primary);
    padding: .8rem 2rem;
    font-weight: 600;
    font-size: 1rem;
    transition: all 0.2s ease-in-out;
    cursor: pointer;
    border: none;
    border-radius: 12px;
    text-decoration: none;
    text-align: center;
    line-height: 1;
}

.main-btn:hover {
    opacity: 0.8;
}

.main-btn-alt {
    display: inline-block;
    color: var(--header-dark);
    background-color: var(--off-white);
    padding: .8rem 2rem;
    font-weight: 600;
    font-size: 1rem;
    transition: all 0.2s ease-in-out;
    cursor: pointer;
    border: none;
    border-radius: 12px;
    text-decoration: none;
    text-align: center;
    line-height: 1;
}

.main-btn-alt:hover {
    background-color: var(--primary);
    color: var(--primary-foreground);
}

.main-btn-inverse {
    display: inline-block;
    background-color: var(--primary-foreground);
    color: var(--primary);
    padding: .8rem 2rem;
    font-weight: 600;
    font-size: 1rem;
    transition: all 0.2s ease-in-out;
    cursor: pointer;
    border: none;
    border-radius: 12px;
    text-decoration: none;
    text-align: center;
    line-height: 1;
}

.main-btn-inverse:hover {
    opacity: 0.9;
}

.tooltip-style {
    --balloon-color: #272727 !important;
    --balloon-border-radius: 5px !important;
    --balloon-opacity: 1 !important;
}

.primary {
    color: var(--primary);
}

.lh-xsm {
    line-height: 1;
}

.lh-sm {
    line-height: 1.25;
}

.text-sm {
    font-size: .875rem;
    line-height: 1.25;
}

.text-reg {
    font-size: 1rem;
}

.text-lg {
    font-size: 1.25rem;
}

.text-xl {
    font-size: 1.5rem;
    line-height: 2rem;
}

.header-clamp {
    font-size: clamp(2.25rem, 5vw, 3rem);
    line-height: 1.1;
}

.subheader-clamp {
    font-size: clamp(1rem, 3vw, 1.25rem);
}

.header-clamp-2 {
    font-size: clamp(2rem, 4vw, 2.25rem);
    line-height: 1.1;
}

.subheader-clamp-2 {
    font-size: clamp(1rem, 3vw, 1.125rem);
}

.py-5 {
    padding-top: 5rem;
    padding-bottom: 5rem;
}

.py-4 {
    padding-top: 4rem;
    padding-bottom: 4rem;
}

.px-5 {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
}

.bold {
    font-weight: 500;
}

.bolder {
    font-weight: 700;
}

.mb-05 {
    margin-bottom: .5rem;
}

.mb-1 {
    margin-bottom: 1rem;
}

.mb-2 {
    margin-bottom: 1.5rem;
}

.mb-3 {
    margin-bottom: 2rem;
}

.mb-4 {
    margin-bottom: 3rem;
}

.mt-05 {
    margin-top: .5rem;
}

.mt-1 {
    margin-top: 1rem;
}

.mt-2 {
    margin-top: 1.5rem;
}

.mt-3 {
    margin-top: 2rem;
}

.mt-4 {
    margin-top: 3rem;
}

.ml-05 {
    margin-left: .5rem;
}

.ml-1 {
    margin-left: 1rem;
}

.mr-05 {
    margin-right: .5rem;
}

.mr-1 {
    margin-right: 1rem;
}

.w-100 {
    width: 100%;
}

.ta-c {
    text-align: center;
}

.ta-l {
    text-align: left;
}

.g-1 {
    gap: 1rem;
}

.auto {
    width: auto;
}

.neg-space {
    letter-spacing: var(--spacing-negative);
}

.border {
    border: 1px solid var(--border-color);
}

.image-enlarge {
    transition: transform 0.3s ease-in-out;
}

.image-enlarge:hover {
    cursor: pointer;
    transform: scale(1.1);
}

input, select {
    width: 100%;
    background: var(--primary-foreground);
    border: 1px solid var(--border-color);
    border-radius: 10px;
    padding: .75rem 1.25rem;
    accent-color: var(--primary);
}

select {
    position: relative;
    -webkit-appearance: none;
    line-height: 1.3125;
}

.select-carat {
    position: absolute;
    top: 50%;
    right: 0.35rem;
    transform: translateY(-50%);
    pointer-events: none; /* don't block clicks */
    font-size: 0.8rem;
}

input[type=checkbox] {
    width: 1rem;
    height: 1rem;
    cursor: pointer;
}

textarea {
    width: 100%;
    border: 1px solid var(--border-color);
    background: var(--primary-foreground);
    border-radius: 10px;
    padding: .75rem 1.25rem;
    resize: vertical;
    min-height: 6rem;
    max-height: 15rem;
    font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif;
    accent-color: var(--primary);
}

label {
    font-size: .875rem;
    font-weight: 500;
    width: 100%;
    text-align: left;
    padding-bottom: .25rem;
}

.req {
    color: var(--primary);
    margin-left: .2rem;
}

.error-msg {
    color: red;
    display: none;
    font-size: .8rem;
    padding: 0;
    margin-left: .2rem;
    width: 100%;
    justify-content: left;
}

.banner-container {
    position: relative;
    display: flex;
    width: 100%;
    height: auto;
    background: var(--gradient-hero);
}

.overlay {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    flex: 1;
    background: var(--gradient-overlay);
    padding-top: 4.4rem;
}

.banner-title-container {
    padding-top: 3rem;
    padding-bottom: 3rem;
    gap: 2rem;
}

.banner-header {
    font-size: clamp(2.25rem, 5vw, 3.5rem);
    line-height: 1.2;
    max-width: 56rem;
}

.banner-subheader {
    color: var(--text-dark);
    font-size: clamp(1rem, 2vw, 1.25rem);
    margin-bottom: .75rem;
    max-width: 48rem;
}

.card-icon-container {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-shrink: 0;
    width: 3rem;
    height: 3rem;
    background-color: var(--badge-background);
    border-radius: 16px;
    margin-bottom: 1rem;
    color: var(--primary);
}

.card-header {
    margin-bottom: .5rem;
    letter-spacing: var(--spacing-negative);
}

.card-subheader {
    color: var(--text-dark);
}

.section-title-container {
    margin-bottom: 4rem;
}

.section-header-type-1 {
    color: var(--header-dark);
    margin-bottom: 1.5rem;
    line-height: 1.1;
}

.section-subheader-type-1 {
    color: var(--text-dark);
    max-width: 48rem;
}

.section-subheader-type-2 {
    font-size: clamp(1rem, 3vw, 1.125rem);
    color: var(--sub-header);
    max-width: 48rem;
}

.section-card-type-1 {
    display: flex;
    flex-direction: column;
    justify-content: start;
    align-items: center;
    width: 100%;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    padding: 2rem;
}

.color-pop {
    background-image: var(--gradient-primary);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.modal {
    display: none;
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0,0,0,0.4);
    z-index: 1000000;
}

.modal-background {
    position: absolute;
    top: 100px;
    left: 50%;
    transform: translateX(-50%);
    padding-bottom: 50px;
}

.modal-card {
    background-color: #ffffff;
    border-radius: 10px;
    border: 1px solid black;
}

@media (max-width: 31.25rem) {
    .banner-title-container {
        padding-top: 2rem;
        padding-bottom: 2rem;
    }
}
