/* ================================================================
   [수정] Footer Styles - 기본 상태를 완전히 숨김으로 설정
   ================================================================ */
body, html, #app-container {
    overflow: visible !important;
    height: auto !important;
    min-height: auto !important;
}

/* 기본 상태: 화면 아래 위치에 완전히 숨어있음 (로드 시 자동 표시 차단) */
.page-footer {
    display: block !important;
    position: fixed !important;
    left: 0 !important;
    bottom: -300px !important; 
    width: 100% !important;
    z-index: 99998 !important; 
    background: transparent !important;
    color: #fff !important;
    padding: 28px 0 !important;
    text-align: left !important;
    opacity: 0 !important; 
    visibility: hidden !important;
    /* 20% 투명도의 화이트 컬러 상단 구분선 추가 */
    border-top: 1px solid rgba(255, 255, 255, 0.2) !important; 
    transition: bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity 0.5s ease, visibility 0.5s ease !important;
    pointer-events: none !important;
}

/* JS에서 .visible 클래스가 추가되면 화면 바닥(0px)으로 스르륵 올라옴 */
.page-footer.visible {
    bottom: 0 !important;
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
}

.page-footer-spacer {
    display: none;
    width: 100%;
    height: 0;
    pointer-events: none;
}

/* Shared desktop footer behavior. Page-level footer overrides load before this
   file, so these modes remain the single source of truth. */
@media (min-width: 769px) {
    html.footer-scroll-mode,
    body.footer-scroll-mode {
        height: auto !important;
        min-height: calc(100dvh + var(--site-footer-h, 150px)) !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
    }

    body.footer-scroll-mode #app-container {
        overflow: visible !important;
    }

    body.footer-scroll-mode .page-footer-spacer {
        display: block !important;
        height: var(--site-footer-h, 150px) !important;
    }

    body.footer-scroll-mode .page-footer {
        position: fixed !important;
        left: 0 !important;
        right: 0 !important;
        bottom: -300px !important;
        opacity: 0 !important;
        visibility: hidden !important;
        pointer-events: none !important;
        transform: none !important;
    }

    body.footer-scroll-mode .page-footer.visible {
        bottom: 0 !important;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: auto !important;
    }

    html.footer-immediate-mode,
    body.footer-immediate-mode {
        width: 100% !important;
        height: 100% !important;
        min-height: 100% !important;
        overflow-x: hidden !important;
        overflow-y: hidden !important;
    }

    body.footer-immediate-mode:has(#page-about-intro.active) {
        overflow-y: hidden !important;
    }

    body.footer-immediate-mode .page-footer-spacer {
        display: none !important;
        height: 0 !important;
    }

    body.footer-immediate-mode .page-footer,
    body.footer-immediate-mode .page-footer.visible {
        position: fixed !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: auto !important;
        transform: none !important;
        transition: none !important;
        animation: none !important;
    }

    body.footer-immediate-mode .scroll-hint-overlay {
        display: none !important;
        opacity: 0 !important;
        visibility: hidden !important;
    }

    body.footer-immediate-mode.page-login .auth-main {
        bottom: var(--site-footer-h, 150px) !important;
    }

    body.footer-immediate-mode[data-page="billing"] #page-billing .billing-snap:has(.billing-login-required) {
        height: calc(100dvh - var(--site-footer-h, 150px)) !important;
        min-height: calc(100dvh - var(--site-footer-h, 150px)) !important;
        max-height: calc(100dvh - var(--site-footer-h, 150px)) !important;
        overflow: hidden !important;
    }

    body.footer-immediate-mode[data-page="partners"] #app-container,
    body.footer-immediate-mode[data-page="partners"] #page-partners {
        height: calc(100dvh - var(--site-footer-h, 150px)) !important;
        min-height: 0 !important;
        overflow: hidden !important;
    }

    body.footer-immediate-mode[data-page="partners"] #page-partners {
        display: flex !important;
        flex-direction: column !important;
    }

    body.footer-immediate-mode[data-page="partners"] .partners-hero {
        flex: 0 0 auto;
        padding-top: calc(var(--site-header-h, 90px) + clamp(8px, 2dvh, 24px)) !important;
        padding-bottom: clamp(18px, 3dvh, 42px) !important;
    }

    body.footer-immediate-mode[data-page="partners"] .partners-grid {
        flex: 0 1 auto;
    }

    body.footer-immediate-mode[data-page="partners"] .partners-card {
        min-height: clamp(210px, 32dvh, 300px) !important;
    }

    body.footer-immediate-mode[data-page="partners"] .partners-note {
        flex: 0 0 auto;
        padding: clamp(14px, 2.5dvh, 28px) 0 clamp(10px, 1.8dvh, 20px) !important;
    }
}

/* The shared scroll cue is also used on pages that do not render one. */
.scroll-hint-overlay {
    position: fixed !important;
    left: 50% !important;
    bottom: 80px !important;
    z-index: 100005 !important;
    pointer-events: none !important;
    opacity: 0;
    visibility: hidden;
    transform: translateX(-50%) !important;
    transition: opacity 0.4s ease, visibility 0.4s ease !important;
}

.scroll-hint-overlay.visible {
    opacity: 1 !important;
    visibility: visible !important;
}

.scroll-hint-overlay .mouse-shape {
    position: relative;
    width: 26px;
    height: 42px;
    border: 2px solid #fff !important;
    border-radius: 13px;
    box-sizing: border-box;
    animation: footerHintFloat 2s infinite ease-in-out;
    filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 1)) drop-shadow(0 0 15px rgba(0, 0, 0, 0.9)) !important;
}

.scroll-hint-overlay .mouse-shape::before {
    content: '';
    position: absolute;
    top: 12px;
    left: 0;
    width: 100%;
    height: 2px;
    background: #fff !important;
}

.scroll-hint-overlay .mouse-shape::after {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    width: 2px;
    height: 12px;
    background: #fff !important;
    transform: translateX(-50%);
}

@keyframes footerHintFloat {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(10px); }
}

.page-footer .footer-info {
    pointer-events: auto;
    width: 100%;
    margin: 0 auto;
    padding: 0 60px;
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
}
.page-footer .footer-info h3 { font-size: 16px; margin-bottom: 0; }
.page-footer .footer-info .footer-company { margin: 0 0 4px; line-height: 1.2; font-size: 20px; font-weight: 700; color: #d2d2d2; }
.page-footer .footer-info .footer-left { text-align: left; }
.page-footer .footer-info .footer-meta { text-align: right !important; }
.page-footer .footer-info .footer-meta p { text-align: right !important; }
.page-footer .footer-info p { font-size: 14px; color: #888; margin: 4px 0; }
.page-footer .footer-link { color: #888; text-decoration: none; transition: color 0.25s ease; }
.page-footer .footer-link:hover { color: #ffffff; text-decoration: none; }
.page-footer .footer-service-links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0;
    margin-top: 10px;
    max-width: 560px;
}
.page-footer .footer-service-links .footer-link {
    font-size: 14px;
    color: #888;
}
.page-footer .footer-policy { margin-top: 12px; }
.page-footer .footer-policy .footer-link { font-size: 14px; color: #888; }
.page-footer .footer-policy .footer-link:hover { color: #fff; }
.page-footer .footer-sep { font-size: 14px; color: #888; }
body.light-mode .page-footer .footer-sep { color: #444; }
body.light-mode .page-footer .footer-policy .footer-link { color: #444; }
body.light-mode .page-footer .footer-policy .footer-link:hover { color: #111; }

/* Light Mode: 20% 투명도의 #0b0b0b 컬러 상단 구분선 적용 */
body.light-mode .page-footer { 
    border-top: 1px solid rgba(11, 11, 11, 0.2) !important; 
    color: #0b0b0b !important; 
}
body.light-mode .page-footer h3 { color: #0b0b0b !important; }
body.light-mode .page-footer p, body.light-mode .page-footer a { color: #444 !important; }

/* Footer brand/action layout */
.page-footer .footer-brand-row {
    display: flex;
    align-items: center;
    gap: 28px;
    margin-bottom: 10px;
}

.page-footer .footer-logo {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    text-decoration: none;
}

.page-footer .footer-logo img {
    width: 124px;
    height: auto;
    max-height: 56px;
    object-fit: contain;
    display: block;
}

.page-footer .footer-actions {
    display: flex;
    align-items: center;
    gap: 22px;
    min-width: 0;
}

.page-footer .footer-service-toggle {
    appearance: none;
    border: 0;
    background: transparent;
    color: rgba(255, 255, 255, 0.78);
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 0;
    font: inherit;
    font-size: 14px;
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    transition: color 0.25s ease;
}

.page-footer .footer-service-toggle:hover,
.page-footer .footer-service-toggle[aria-expanded="true"] {
    color: #fff;
}

.page-footer .footer-toggle-arrow {
    width: 8px;
    height: 8px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg) translateY(-2px);
    transform-origin: center;
    transition: transform 0.25s ease;
}

.page-footer .footer-service-toggle[aria-expanded="true"] .footer-toggle-arrow {
    transform: rotate(225deg) translate(-1px, -1px);
}

.page-footer .footer-policy {
    display: inline-flex;
    align-items: center;
    gap: 0;
    margin-top: 0;
    white-space: nowrap;
}

.page-footer .footer-service-links {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    margin-top: 0;
    transform: translateY(-4px);
    transition: max-height 0.32s ease, opacity 0.24s ease, margin-top 0.32s ease, transform 0.32s ease;
}

.page-footer .footer-service-links.is-open {
    max-height: 44px;
    opacity: 1;
    margin-top: 8px;
    transform: translateY(0);
}

.page-footer .footer-service-links .footer-link,
.page-footer .footer-policy .footer-link,
.page-footer .footer-service-toggle {
    letter-spacing: 0;
}

body.light-mode .page-footer .footer-logo img {
    filter: invert(1) !important;
}

body.light-mode .page-footer .footer-service-toggle {
    color: rgba(11, 11, 11, 0.72) !important;
}

body.light-mode .page-footer .footer-service-toggle:hover,
body.light-mode .page-footer .footer-service-toggle[aria-expanded="true"] {
    color: #0b0b0b !important;
}

body.light-mode .page-footer .footer-service-links .footer-link,
body.light-mode .page-footer .footer-policy .footer-link,
body.light-mode .page-footer .footer-sep {
    color: #444 !important;
}

body.light-mode .page-footer .footer-service-links .footer-link:hover,
body.light-mode .page-footer .footer-policy .footer-link:hover {
    color: #111 !important;
}

/* Final footer alignment and overlay accordion */
.page-footer .footer-info {
    padding-left: 60px !important;
    padding-right: 60px !important;
    align-items: flex-end !important;
}

.page-footer .footer-left {
    min-width: 0;
}

.page-footer .footer-brand-row {
    align-items: flex-start !important;
    margin-bottom: 0 !important;
}

.page-footer .footer-action-stack {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    min-width: 0;
    padding-top: 3px;
}

.page-footer .footer-actions {
    position: relative;
    display: flex;
    align-items: center;
    gap: 22px;
}

.page-footer .footer-service-menu {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.page-footer .footer-service-links {
    position: absolute;
    left: 0;
    top: calc(100% + 8px);
    z-index: 3;
    width: max-content;
    max-width: min(620px, calc(100vw - 120px));
    max-height: none;
    margin-top: 0 !important;
    padding: 12px 16px;
    box-sizing: border-box;
    border: 1px solid rgba(255, 255, 255, 0.38);
    border-radius: 0;
    background: rgba(255, 255, 255, 0.68);
    backdrop-filter: blur(18px) saturate(145%);
    -webkit-backdrop-filter: blur(18px) saturate(145%);
    box-shadow: 0 14px 34px rgba(0, 0, 0, 0.18);
    opacity: 0;
    overflow: visible;
    pointer-events: none;
    transform: translateY(-6px);
    transition: opacity 0.24s ease, transform 0.28s ease;
}

.page-footer .footer-service-links.is-open {
    max-height: none;
    margin-top: 0 !important;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

.page-footer .footer-copy {
    margin: 0 !important;
    font-size: 14px !important;
    line-height: 1.35;
    white-space: nowrap;
}

.page-footer .footer-info p,
.page-footer .footer-info .footer-link,
.page-footer .footer-sep,
.page-footer .footer-service-toggle {
    font-size: 14px !important;
}

.page-footer .footer-meta {
    padding-bottom: 0;
}

.page-footer .footer-meta-group {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: clamp(16px, 1.4vw, 24px);
    min-width: 0;
}

.page-footer .footer-socials {
    display: flex;
    align-items: center;
    gap: 14px;
    flex: 0 0 auto;
}

.page-footer .footer-social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    opacity: 0.7;
    transition: opacity 0.24s ease;
}

.page-footer .footer-social-link:hover,
.page-footer .footer-social-link:focus-visible {
    opacity: 1;
}

.page-footer .footer-social-link img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.page-footer .footer-meta-row {
    margin: 4px 0 !important;
    white-space: nowrap;
}

.page-footer .footer-inline-sep {
    color: inherit;
}

.page-footer .footer-service-links .footer-link,
.page-footer .footer-service-links .footer-sep {
    color: #171717 !important;
}

.page-footer .footer-service-links .footer-link:hover {
    color: #ff6e2e !important;
}

body.light-mode .page-footer .footer-logo img {
    filter: none !important;
}

body.light-mode .page-footer .footer-policy .footer-link,
body.light-mode .page-footer .footer-policy .footer-sep {
    color: #fff !important;
}

body.light-mode .page-footer .footer-policy .footer-link:hover {
    color: rgba(255, 255, 255, 0.76) !important;
}

body.light-mode .page-footer .footer-service-links {
    border-color: rgba(255, 255, 255, 0.44);
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: blur(18px) saturate(145%);
    -webkit-backdrop-filter: blur(18px) saturate(145%);
}

body.light-mode .page-footer .footer-service-links .footer-link,
body.light-mode .page-footer .footer-service-links .footer-sep {
    color: #171717 !important;
}

body.light-mode .page-footer .footer-service-links .footer-link:hover {
    color: #ff6e2e !important;
}

.page-footer .footer-service-toggle,
.page-footer .footer-service-toggle span,
.page-footer .footer-policy,
.page-footer .footer-policy .footer-link,
.page-footer .footer-service-links .footer-link,
.page-footer .footer-sep {
    white-space: nowrap !important;
    word-break: keep-all !important;
    overflow-wrap: normal !important;
}

.page-footer .footer-copy,
.page-footer .footer-meta-row,
.page-footer .footer-meta-row span,
.page-footer .footer-meta-row a {
    word-break: keep-all !important;
    overflow-wrap: normal !important;
}

@media (max-width: 1600px) and (min-width: 769px) {
    .page-footer {
        padding: 20px 0 !important;
    }

    .page-footer .footer-info {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 10px !important;
        padding-left: clamp(32px, 5vw, 60px) !important;
        padding-right: clamp(32px, 5vw, 60px) !important;
    }

    .page-footer .footer-left,
    .page-footer .footer-meta-group,
    .page-footer .footer-meta {
        width: 100% !important;
        min-width: 0 !important;
    }

    .page-footer .footer-meta-group {
        justify-content: flex-end !important;
    }

    .page-footer .footer-brand-row {
        width: 100% !important;
        align-items: center !important;
        gap: clamp(18px, 2.6vw, 28px) !important;
    }

    .page-footer .footer-logo img {
        width: clamp(104px, 12vw, 124px) !important;
    }

    .page-footer .footer-action-stack {
        flex: 1 1 auto !important;
        min-width: 0 !important;
    }

    .page-footer .footer-actions {
        min-width: 0 !important;
        flex-wrap: wrap !important;
        gap: 8px 16px !important;
    }

    .page-footer .footer-copy {
        white-space: normal !important;
        font-size: clamp(12px, 1.15vw, 14px) !important;
        max-width: 100% !important;
    }

    .page-footer .footer-info .footer-meta,
    .page-footer .footer-info .footer-meta p {
        text-align: right !important;
    }

    .page-footer .footer-meta-row {
        white-space: normal !important;
        line-height: 1.45 !important;
        font-size: clamp(12px, 1.15vw, 14px) !important;
    }

    .page-footer .footer-meta-row span,
    .page-footer .footer-meta-row a {
        white-space: nowrap !important;
    }
}

/* Mobile */
@media (max-width: 768px) {
    .scroll-hint-overlay {
        display: none !important;
        opacity: 0 !important;
        visibility: hidden !important;
    }

    .page-footer {
        position: relative !important;
        bottom: 0 !important;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: auto !important;
        text-align: center;
        background: rgba(10,10,10,0.95) !important;
        padding: 20px 0 !important;
        margin-top: 0;
    }
    body.light-mode .page-footer { background: #f8f8f8 !important; }
    .page-footer .footer-info { padding: 0 20px !important; flex-direction: column; gap: 15px; align-items: center !important; }
    .page-footer .footer-info .footer-left { width: 100%; text-align: center !important; }
    .page-footer .footer-brand-row {
        width: 100%;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
        gap: 12px;
        margin-bottom: 12px;
    }
    .page-footer .footer-logo {
        justify-content: center !important;
    }
    .page-footer .footer-action-stack { align-items: center !important; padding-top: 0; }
    .page-footer .footer-actions {
        width: 100% !important;
        max-width: calc(100vw - 40px) !important;
        justify-content: center;
        flex-wrap: wrap;
        gap: 12px 18px;
        min-width: 0 !important;
        position: relative;
    }
    .page-footer .footer-service-menu {
        position: static !important;
    }
    .page-footer .footer-service-links {
        left: 50%;
        top: calc(100% + 8px);
        width: min(360px, calc(100vw - 32px));
        max-width: calc(100vw - 32px);
        box-sizing: border-box;
        flex-wrap: wrap;
        justify-content: center;
        gap: 6px 0;
        transform: translate(-50%, -6px);
    }
    .page-footer .footer-service-links.is-open { transform: translate(-50%, 0); }
    .page-footer .footer-copy { white-space: normal; text-align: center; }
    .page-footer .footer-info .footer-meta {
        width: 100%;
        text-align: center !important;
    }
    .page-footer .footer-meta-group {
        width: 100%;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 10px;
    }
    .page-footer .footer-social-link {
        width: 30px;
        height: 30px;
    }
    .page-footer .footer-socials {
        gap: 10px;
    }
    .page-footer .footer-info .footer-meta p { text-align: center !important; }
    .page-footer .footer-meta-row {
        white-space: normal;
        line-height: 1.7;
        margin: 0 !important;
    }
    .page-footer .footer-mobile-line {
        display: block;
    }
    .page-footer .footer-desktop-sep {
        display: none;
    }
    .page-footer .footer-registration-sep {
        padding: 0 2px;
    }
    .page-footer .footer-info .footer-right { text-align: center; }
}

@media (max-width: 1400px) {
    html,
    body {
        height: auto !important;
        min-height: 100% !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
    }

    #app-container {
        min-height: 100svh !important;
        overflow: visible !important;
    }

    .page-section.active {
        min-height: 100svh !important;
    }

    .page-footer,
    .page-footer.visible {
        position: relative !important;
        left: auto !important;
        right: auto !important;
        bottom: auto !important;
        opacity: 1 !important;
        visibility: visible !important;
        pointer-events: auto !important;
        transform: none !important;
        z-index: 1 !important;
        margin-top: 0 !important;
    }

    /* Identity is a horizontal 100svh canvas. Keep the footer in normal
       document flow so a vertical swipe reaches it after the last viewport. */
    html.footer-mobile-mode:has(#page-about-intro.active),
    body.footer-mobile-mode:has(#page-about-intro.active) {
        height: auto !important;
        min-height: calc(100svh + var(--site-footer-h, 260px)) !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        overscroll-behavior-y: auto !important;
    }

    body.footer-mobile-mode:has(#page-about-intro.active) #app-container {
        display: block !important;
        width: 100% !important;
        height: 100svh !important;
        min-height: 100svh !important;
        overflow: visible !important;
    }

    body.footer-mobile-mode:has(#page-about-intro.active) #page-about-intro {
        height: 100svh !important;
        min-height: 100svh !important;
        touch-action: pan-x pan-y !important;
    }

    body.footer-mobile-mode:has(#page-about-intro.active) .page-footer-spacer {
        display: none !important;
        height: 0 !important;
    }

    body.footer-mobile-mode.rnd-modal-open {
        overflow: hidden !important;
    }
}

/* Keep policy links and their separator fully white in light mode. */
body.light-mode .page-footer .footer-policy .footer-link,
body.light-mode .page-footer .footer-policy .footer-sep {
    color: #fff !important;
    -webkit-text-fill-color: #fff !important;
    opacity: 1 !important;
}

body.light-mode .page-footer .footer-policy .footer-link:hover {
    color: #fff !important;
}

.page-footer .footer-info {
    padding-left: var(--site-edge-inset, clamp(32px, 8vw, 160px)) !important;
    padding-right: var(--site-edge-inset, clamp(32px, 8vw, 160px)) !important;
}

/* White branding is reserved for the homepage's video background. */
body.light-mode:not(.is-home-active) .page-footer .footer-logo img,
body.light-mode:not(.is-home-active) .page-footer .footer-social-link img {
    filter: brightness(0) !important;
}
body.light-mode:not(.is-home-active) .page-footer .footer-policy .footer-link,
body.light-mode:not(.is-home-active) .page-footer .footer-policy .footer-sep {
    color: #333 !important;
    -webkit-text-fill-color: #333 !important;
}
body.light-mode:not(.is-home-active) .page-footer .footer-policy .footer-link:hover {
    color: #ff6e2e !important;
    -webkit-text-fill-color: #ff6e2e !important;
}
body.light-mode:not(.is-home-active) .page-footer .footer-social-link { opacity: 0.85; }

body.light-mode:not(.is-home-active) .scroll-hint-overlay .mouse-shape {
    border-color: #333 !important;
    filter: none !important;
}
body.light-mode:not(.is-home-active) .scroll-hint-overlay .mouse-shape::before,
body.light-mode:not(.is-home-active) .scroll-hint-overlay .mouse-shape::after {
    background: #333 !important;
}

/* Company details, contact/policy links, and social/copyright links. */
.page-footer.footer-three-column {
    --footer-ink: rgba(255, 255, 255, .7);
    --footer-ink-hover: #fff;
    --footer-text-size: clamp(14px, 1.25vw, 18px);
    --footer-row-gap: 10px;
}

html body .page-footer.footer-three-column .footer-info {
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content minmax(0, 1fr);
    gap: clamp(18px, 1.5vw, 28px) !important;
    align-items: start !important;
    padding-left: var(--site-edge-inset) !important;
    padding-right: var(--site-edge-inset) !important;
}
.page-footer.footer-three-column .footer-company-details {
    display: flex;
    flex-direction: column;
    gap: var(--footer-row-gap);
    min-width: 0;
    text-align: left;
}
.page-footer.footer-three-column .footer-company-details p {
    text-align: left !important;
    line-height: 1.35;
    margin: 0 !important;
    white-space: normal !important;
    word-break: keep-all;
    overflow-wrap: anywhere;
}
.page-footer.footer-three-column .footer-company-line {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px 10px;
}
.page-footer.footer-three-column .footer-company-line > span {
    white-space: nowrap;
}
.page-footer.footer-three-column .footer-copy {
    margin-top: 0 !important;
    white-space: normal !important;
}
.page-footer.footer-three-column .footer-contact-block {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--footer-row-gap);
    text-align: left;
    min-width: 0;
    max-width: 100%;
}
.page-footer.footer-three-column .footer-contact-row {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--footer-row-gap);
    max-width: 100%;
}
.page-footer.footer-three-column .footer-contact-block .footer-policy {
    text-align: left;
    justify-content: flex-start;
    margin: 0;
}
.page-footer.footer-three-column .footer-contact-block .footer-link {
    text-align: left;
    white-space: normal;
    overflow-wrap: anywhere;
    max-width: 100%;
    line-height: 1.35;
}
.page-footer.footer-three-column .footer-contact-link {
    position: relative;
    display: flex;
    align-items: center;
    gap: 8px;
    justify-content: flex-start;
}
.page-footer.footer-three-column .footer-contact-link::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -2px;
    height: 2px;
    background: var(--footer-ink-hover);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform .3s ease;
    pointer-events: none;
}
.page-footer.footer-three-column .footer-contact-link:is(:hover, :focus-visible)::after {
    transform: scaleX(1);
}
@media (prefers-reduced-motion: reduce) {
    .page-footer.footer-three-column .footer-contact-link::after {
        transition: none;
    }
}
html body .page-footer.footer-three-column .footer-contact-arrow {
    display: block;
    width: 18px;
    height: 18px;
    flex: 0 0 18px;
    overflow: visible;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    color: inherit !important;
    pointer-events: none;
}
html body .page-footer.footer-three-column .footer-contact-arrow path {
    color: inherit !important;
    fill: none;
    vector-effect: non-scaling-stroke;
}
.page-footer.footer-three-column .footer-links-block {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-self: end;
    align-self: end;
    min-width: 0;
    gap: 14px;
    text-align: right;
}
.page-footer.footer-three-column .footer-links-block .footer-copy {
    text-align: right !important;
    line-height: 1.35;
    overflow-wrap: anywhere !important;
}
.page-footer.footer-three-column .footer-policy {
    display: flex;
    text-align: right;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin: 0;
    flex-wrap: wrap;
    max-width: 100%;
}
.page-footer.footer-three-column .footer-policy .footer-link {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
}
html body .page-footer.footer-three-column .footer-info :is(.footer-link, .footer-copy, .footer-policy .footer-link, .footer-policy .footer-sep, p, span) {
    font-size: var(--footer-text-size) !important;
    color: var(--footer-ink) !important;
    -webkit-text-fill-color: var(--footer-ink) !important;
    transition: color .2s ease, -webkit-text-fill-color .2s ease;
}
html body .page-footer.footer-three-column .footer-info :is(.footer-link:hover, .footer-link:focus-visible, .footer-policy .footer-link:hover, .footer-policy .footer-link:focus-visible) {
    color: var(--footer-ink-hover) !important;
    -webkit-text-fill-color: var(--footer-ink-hover) !important;
}

@media (min-width: 901px) and (max-width: 1200px) {
    html body .page-footer.footer-three-column .footer-info { gap: 18px !important; }
    .page-footer.footer-three-column .footer-company-line > span { white-space: normal; }
}

@media (max-width: 1400px) {
    html body .page-footer.footer-three-column .footer-info {
        grid-template-columns: minmax(0, 1fr);
        gap: 24px !important;
        align-items: start !important;
    }
    .page-footer.footer-three-column .footer-contact-block {
        justify-self: center;
    }
    html body.light-mode .page-footer.footer-three-column {
        --footer-ink: rgba(11, 11, 11, .7);
        --footer-ink-hover: #0b0b0b;
        background: #f8f8f8 !important;
    }
    html body.light-mode .page-footer.footer-three-column .footer-social-link img {
        filter: brightness(0) !important;
    }
}

/* Match the page background in each preview theme. */
@media (max-width: 1400px) {
    html body .page-footer.footer-three-column .footer-info {
        width: 100%;
        max-width: 1000px;
        margin-inline: auto;
        grid-template-columns: minmax(0, 1fr);
        gap: 28px !important;
    }
    html body .page-footer.footer-three-column :is(.footer-company-details, .footer-contact-block, .footer-links-block) {
        align-items: flex-start;
        justify-self: start;
        text-align: left;
    }
    html body .page-footer.footer-three-column .footer-policy { justify-content: flex-start; }
    html body .page-footer.footer-three-column .footer-copy { text-align: left !important; }
}
@media (min-width: 600px) and (max-width: 1400px) {
    .page-footer.footer-three-column { --footer-text-size: clamp(18px, 1.8vw, 24px); --footer-row-gap: 14px; }
    html body .page-footer.footer-three-column { padding-block: 40px !important; }
}
html body .page-footer.footer-three-column {
    --footer-ink: rgba(255, 255, 255, .7);
    --footer-ink-hover: #fff;
    background: #0b0b0b !important;
    border-top: 1px solid rgba(255, 255, 255, .08) !important;
}
html body.light-mode .page-footer.footer-three-column {
    --footer-ink: rgba(17, 17, 17, .7);
    --footer-ink-hover: #111;
    background: #fcfcfc !important;
    border-top-color: #e9e9e9 !important;
}
html body .page-footer.footer-three-column .footer-social-link img {
    filter: brightness(0) invert(1) !important;
    opacity: 1;
}
html body.light-mode .page-footer.footer-three-column .footer-social-link img {
    filter: brightness(0) !important;
    opacity: 1;
}
html body .page-footer.footer-three-column .footer-social-link:is(:hover, :focus-visible) img {
    opacity: 1;
}
/* Shared scroll cue, including the home scenes until the footer enters view. */
html body #scroll-hint-overlay {
    align-items: center;
    gap: 10px;
    bottom: 44px !important;
    color: #fff;
    font-size: 15px;
    font-weight: 400;
    letter-spacing: .08em;
    line-height: 1;
    white-space: nowrap;
    animation: scrollCueFloat 2.4s ease-in-out infinite;
}
@keyframes scrollCueFloat {
    0%, 100% { translate: 0 0; }
    50% { translate: 0 -7px; }
}
html body #scroll-hint-overlay .scroll-hint-label { color: inherit !important; }
html body #scroll-hint-overlay .scroll-hint-chevron {
    display: block;
    flex: 0 0 21px;
    width: 21px;
    height: 26px;
}
html body.light-mode:not(.is-home-active) #scroll-hint-overlay { color: #333; }
@media (min-width: 769px) {
    html body #scroll-hint-overlay { display: flex; }
}
html body.is-home-active #scroll-hint-overlay {
    display: flex !important;
    color: #fff !important;
    -webkit-text-fill-color: #fff !important;
}
@media (prefers-reduced-motion: reduce) {
    html body #scroll-hint-overlay { animation: none; }
}

/* Company profile and social icons share the same compact height. */
.page-footer.footer-three-column { --footer-social-size: 36px; }
.page-footer.footer-three-column .footer-social-link {
    width: var(--footer-social-size);
    height: var(--footer-social-size);
    flex: 0 0 var(--footer-social-size);
}
.page-footer.footer-three-column .footer-profile-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    height: var(--footer-social-size);
    padding: 0 12px;
    border: 1px solid currentColor;
    border-radius: 5px;
    background: transparent;
    line-height: 1;
    white-space: nowrap;
    text-decoration: none;
}
.page-footer.footer-three-column .footer-profile-link:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
@media (max-width: 768px) {
    .page-footer.footer-three-column { --footer-social-size: 28px; }
    .page-footer.footer-three-column .footer-profile-link { padding-inline: 10px; }
}

html body .page-footer.footer-three-column .footer-info a.footer-link.footer-profile-link {
    gap: 8px;
    transition: color .2s ease, -webkit-text-fill-color .2s ease, background-color .2s ease;
}
html body .page-footer.footer-three-column .footer-profile-link:is(:hover, :focus-visible) { background-color: #1f1f1f; }
html body.light-mode:not(.is-home-active) .page-footer.footer-three-column .footer-profile-link:is(:hover, :focus-visible) { background-color: #f5f5f5; }

/* Apply icon transparency once, on the link, to avoid compounded opacity. */
html body .page-footer.footer-three-column .footer-info .footer-social-link { opacity: .7; }
html body .page-footer.footer-three-column .footer-info .footer-social-link:is(:hover, :focus-visible) { opacity: 1; }

/* Guest monthly billing has an immediately visible, in-flow footer at every width. */
html.billing-guest-footer {height:auto!important;min-height:100svh!important;overflow-y:auto!important}
body.billing-guest-footer {display:flex;flex-direction:column;min-height:100svh!important;height:auto!important;overflow-y:visible!important}
body.billing-guest-footer #app-container {flex:1 0 auto;display:flex;flex-direction:column}
body.billing-guest-footer #page-billing {flex:1 0 auto;display:flex;flex-direction:column;width:100%}
body.billing-guest-footer #page-billing .billing-snap:has(.billing-login-required) {flex:1 0 auto;min-height:0!important;height:auto!important;max-height:none!important;overflow:visible!important;justify-content:center!important;padding:calc(var(--site-header-h,90px) + 20px) 0 40px!important}
body.billing-guest-footer .page-footer,body.billing-guest-footer .page-footer.visible {position:relative!important;inset:auto!important;flex:none;margin-top:auto;opacity:1!important;visibility:visible!important;pointer-events:auto!important;transform:none!important;transition:none!important;animation:none!important}
body.billing-guest-footer .page-footer-spacer,body.billing-guest-footer #scroll-hint-overlay {display:none!important}
body.billing-guest-footer .billing-login-required {padding:42px 24px;gap:20px}
@media(max-width:600px) {body.billing-guest-footer .billing-login-required {padding:24px 20px;gap:16px}body.billing-guest-footer .billing-lock-icon {width:40px;height:40px}body.billing-guest-footer #page-billing .billing-snap:has(.billing-login-required) {padding-bottom:28px!important}body.billing-guest-footer #page-billing .sub-header {margin-top:0;margin-bottom:16px;padding-bottom:0}}
body.billing-guest-footer #app-container,body.billing-guest-footer #page-billing {min-height:0!important;height:auto!important}
@media(max-width:600px) {body.billing-guest-footer .billing-login-required {padding-block:18px}body.billing-guest-footer #page-billing .billing-snap:has(.billing-login-required) {padding-top:calc(var(--site-header-h,90px) + 4px)!important}}

/* Flow pages never reserve an additional fixed-footer viewport underneath. */
html.footer-flow-mode,html body.footer-flow-mode {
 height:auto!important;min-height:100svh!important;overflow-x:clip!important;overflow-y:auto!important;
}
html body.footer-flow-mode {display:flex;flex-direction:column}
html body.footer-flow-mode #app-container {flex:1 0 auto;width:100%;min-height:0!important;height:auto!important;overflow:visible!important}
html body.footer-flow-mode .page-footer,
html body.footer-flow-mode .page-footer.visible {
 position:relative!important;inset:auto!important;flex:none;margin-top:auto;margin-bottom:0;
 opacity:1!important;visibility:visible!important;pointer-events:auto!important;transform:none!important;transition:none!important;
}
html body.footer-flow-mode .page-footer-spacer {display:none!important;height:0!important}
