.c-container {
    width: 100%;
    min-height: 100vh;

    display: flex;
    flex-direction: column;
}

.c-section-wrapper {
    padding: var(--space-xs);
}

.c-section {
    display: flex;
    flex-direction: column;

    padding: var(--space-xxl);
}

.c-header {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
}

.c-title {
    font-family: NotoSans, Helvetica, Arial, sans-serif;
    font-size: 48px;
    font-weight: 800;
}

.c-heading {
    font-family: NotoSans, Helvetica, Arial, sans-serif;
    font-size: 40px;
    font-weight: 800;
}

.c-subheading {
    font-family: NotoSans, Helvetica, Arial, sans-serif;
    font-size: 24px;
    font-weight: 600;
}

.c-subheading--02,
.c-subheading--02 > span {
    font-family: NotoSans, Helvetica, Arial, sans-serif;
    font-size: 20px;
    font-weight: 400;
}

.c-text-highlight {
    color: var(--color-01);
}

.c-link {
    transition: var(--transition-02);
    -webkit-transition: var(--transition-02);
}

.c-link:hover {
    color: var(--color-01);
}

.c-response-message {
    display: none;
}

.c-response-message._active {
    display: flex;
}

.c-response-message._active._success {
    color: var(--color-09);
}

.c-response-message._active._failure {
    color: var(--color-10);
}

.c-field-container {
    position: relative;
}

.c-field-label {
    color: var(--color-05);

    font-size: var(--font-size-m);

    line-height: 1;

    transform: translateY(11px);
    -webkit-transform: translateY(11px);

    position: absolute;

    left: var(--space-xs);

    z-index: 0;

    pointer-events: none;

    transition: var(--transition-01);
    -webkit-transition: var(--transition-01);
}

.c-field:focus + .c-field-label,
.c-field:not(:placeholder-shown) + .c-field-label,
.c-field:valid + .c-field-label {
    font-size: var(--font-size-s);

    transform: translateY(-8px);
    -webkit-transform: translateY(-8px);
    
    /* top: 0%; */
}

.c-field {
    width: 100%;

    border: none;
    border-bottom: 1px solid var(--color-05);

    outline: none;

    background: none;

    font-size: var(--font-size-m);

    padding: var(--space-xs);

    position: relative;

    z-index: 1;

    appearance: none;
    -moz-appearance: textfield;
}

.c-field::placeholder {
    color: transparent;
}

.c-field::-webkit-outer-spin-button,
.c-field::-webkit-inner-spin-button {
    margin: 0;

    appearance: none;
    -webkit-appearance: none;
}

.c-field:focus {
    border-color: var(--color-01);
}

.c-select {
    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjE5MyIgdmlld0JveD0iMCAwIDMyMCAxOTMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xODIuNiAxODMuNkMxNzAuMSAxOTYuMSAxNDkuOCAxOTYuMSAxMzcuMyAxODMuNkw5LjI5OTY1IDU1LjYwMDRDMC4wOTk2NTMyIDQ2LjQwMDQgLTIuNjAwMzUgMzIuNzAwNCAyLjM5OTY1IDIwLjcwMDRDNy4zOTk2NSA4LjcwMDQxIDE4Ljk5OTcgMC45MDAzOTEgMzEuOTk5NyAwLjkwMDM5MUgyODhDMzAwLjkgMC45MDAzOTEgMzEyLjYgOC43MDA0MSAzMTcuNiAyMC43MDA0QzMyMi42IDMyLjcwMDQgMzE5LjggNDYuNDAwNCAzMTAuNyA1NS42MDA0TDE4Mi43IDE4My42SDE4Mi42WiIgZmlsbD0iI0ZGQjUxNyIvPgo8L3N2Zz4K");
    background-repeat: no-repeat;
    background-position: right 20px center;
    background-size: auto 7px;
    
    cursor: pointer;
}

.c-primary-btn {
    width: max-content;

    border: 1px solid var(--color-01);
    border-radius: var(--radius-l);

    outline: none;

    color: var(--color-03);

    background-color: var(--color-01);

    font-size: var(--font-size-m);

    padding: var(--space-xs) var(--space-m);

    cursor: pointer;

    transition: var(--transition-02);
    -webkit-transition: var(--transition-02);
}

.c-primary-btn:hover {
    background-color: var(--color-02);
}

.c-secondary-btn {
    width: max-content;
    
    border: 1px solid var(--color-05);
    border-radius: var(--radius-l);

    outline: none;

    color: var(--color-07);

    background: transparent;

    font-size: var(--font-size-m);

    display: flex;
    align-items: center;
    gap: var(--space-xs);

    padding: var(--space-xs) var(--space-m);

    cursor: pointer;

    transition: var(--transition-02);
    -webkit-transition: var(--transition-02);
}

.c-secondary-btn:hover {
    border-color: var(--color-01);

    color: var(--color-03);

    background-color: var(--color-01);
}

.c-btn-with-loader {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.c-btn-with-loader-icon {
    height: 14px;

    animation: spin 1s linear infinite;
}

.c-blurred-circle {
    position: absolute;
}

.c-hr {
    height: 1px;

    background-color: var(--border-color);
}

.c-hidden {
    display: none;
}

@media only screen and (max-width: 800px) {
    .c-title {
        font-size: 36px;
    }
}

@media only screen and (max-width: 600px) {
    .c-title {
        font-size: 28px;
    }

    .c-heading {
        font-size: 28px;
    }

    .c-heading-highlight {
        font-size: 28px;
    }
}

@media only screen and (max-width: 400px) {
    .c-title {
        font-size: 20px;
    }

    .c-heading {
        font-size: 20px;
    }

    .c-heading-highlight {
        font-size: 20px;
    }
}
/* Deferred media — paired with script/ui/lazy-media.js.

   Every rule here is scoped to html.js (set by an inline script in
   HTMLComponents::render_head before first paint). With JavaScript disabled
   none of this applies, so images and backgrounds render normally and nothing
   is ever hidden. The laziness itself is native loading="lazy" and does not
   depend on any of this.

   The fade is an ANIMATION, not a transition, and this is deliberate. A
   `transition` shorthand here would out-specify (0,2,2) the site's own
   img hover rules such as `.post-metadata > a > img` (0,1,2), replacing their
   `transition: var(--transition-02)` and silently killing those hover effects.
   An animation cannot collide with them.

   It is also keyed on ._deferred._loaded rather than ._loaded alone, so only
   images that were actually still loading animate. A cached image gets
   ._loaded without ._deferred and therefore appears instantly, with no flash. */

html.js img._deferred {
    opacity: 0;
}

html.js img._deferred._loaded {
    /* opacity is the failsafe, not decoration: the keyframe lives in
       animations-v2.css, and without this an image would sit at opacity 0 forever
       on any page that ever ships without that stylesheet. */
    opacity: 1;

    animation: media-fade-in var(--transition-02) ease-out forwards;
}

@media (prefers-reduced-motion: reduce) {
    html.js img._deferred._loaded {
        animation-duration: 1ms;
    }
}
