/* ============================================================
   RakuVisa サイト外殻（ヘッダー / フッター）— 2026-08 サイト刷新 便1
   ・全ページ共有のため _Layout から読み込む
   ・既存 styles.css / Bootstrap との衝突を避けるため全て rv- 接頭辞
   ============================================================ */

:root {
    /* 端末内のゴシックを先に使い、無ければ Noto Sans JP（_Layoutが読み込むwebフォント）へ。
       webフォントの取得が遅い・失敗した場合に明朝へ落ちるのを防ぐ。承認済みモックの指定と同じ。 */
    --rv-font: "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic Medium", "Yu Gothic", Meiryo, "Noto Sans JP", system-ui, -apple-system, "Segoe UI", sans-serif;
    --rv-brand: #ff7900;
    --rv-brand-deep: #DD6200;
    --rv-brand-ink: #A34700;
    --rv-brand-wash: #FFF3E7;
    --rv-brand-line: #FFD9B4;
    --rv-ink: #2B2320;
    --rv-ink-2: #4A403A;
    --rv-muted: #6E645C;
    --rv-faint: #9A9089;
    --rv-ground: #FFFFFF;
    --rv-ground-2: #FAF7F3;
    --rv-line: #E9E2DA;
    --rv-card: #FFFFFF;
    --rv-ok: #1C7A48;
    --rv-ok-wash: #E4F2EA;
    --rv-guard: #2F5D8A;
    --rv-guard-wash: #EAF1F8;
    --rv-guard-line: #C6D9EC;
    --rv-lift: 0 1px 2px rgba(43,35,32,.05), 0 10px 30px rgba(43,35,32,.06);
}

.rv-wrap {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 26px;
}

/* ---- ボタン（Bootstrap の .btn とは別系統） ---- */
.rv-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border-radius: 9px;
    padding: 11px 22px;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.4;
    border: 1px solid transparent;
    cursor: pointer;
    font-family: inherit;
    text-decoration: none;
    transition: transform .16s ease, background .16s ease, border-color .16s ease;
}

    .rv-btn:hover {
        transform: translateY(-1px);
        text-decoration: none;
    }

.rv-btn-fill {
    background: var(--rv-brand);
    color: #fff;
    box-shadow: 0 4px 16px rgba(255,121,0,.32);
}

    .rv-btn-fill:hover,
    .rv-btn-fill:focus {
        background: var(--rv-brand-deep);
        color: #fff;
    }

.rv-btn-line {
    border-color: var(--rv-line);
    color: var(--rv-ink);
    background: var(--rv-card);
}

    .rv-btn-line:hover,
    .rv-btn-line:focus {
        border-color: var(--rv-brand-line);
        color: var(--rv-ink);
    }

/* 枠のない控えめなボタン。ヘッダーの「会員登録」用＝ログインと無料相談より一段弱くする */
.rv-btn-ghost {
    border-color: transparent;
    background: transparent;
    color: var(--rv-muted);
}

    .rv-btn-ghost:hover,
    .rv-btn-ghost:focus {
        color: var(--rv-ink);
        background: var(--rv-ground-2);
    }

.rv-btn-lg {
    padding: 15px 30px;
    font-size: 15.5px;
    border-radius: 11px;
}

/* ---- ヘッダー ---- */
header.rv-header {
    position: sticky;
    top: 0;
    z-index: 1030;
    background: rgba(255,255,255,.92);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--rv-line);
    font-family: var(--rv-font);
    font-size: 16px;
    line-height: 1.85;
    color: var(--rv-ink);
}

    header.rv-header a {
        color: inherit;
        text-decoration: none;
    }

    header.rv-header a:focus-visible,
    header.rv-header button:focus-visible {
        outline: 2px solid var(--rv-brand);
        outline-offset: 3px;
        border-radius: 4px;
    }

.rv-nav {
    display: flex;
    align-items: center;
    gap: 26px;
    height: 64px;
}

.rv-brandlogo {
    height: 26px;
    width: auto;
    flex: none;
    display: block;
}

.rv-navlinks {
    display: flex;
    gap: 22px;
    font-size: 14.5px;
    color: var(--rv-muted);
    margin-right: auto;
}

    .rv-navlinks a {
        position: relative;
        padding: 4px 0;
        white-space: nowrap;
    }

        .rv-navlinks a:hover {
            color: var(--rv-ink);
        }

        .rv-navlinks a::after {
            content: "";
            position: absolute;
            left: 0;
            right: 100%;
            bottom: 0;
            height: 2px;
            background: var(--rv-brand);
            transition: right .22s ease;
        }

        .rv-navlinks a:hover::after {
            right: 0;
        }

.rv-navright {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-left: auto;
}

/* ---- 言語切替（全画面モーダルの後継） ---- */
.rv-lang {
    position: relative;
}

.rv-langbtn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13.5px;
    color: var(--rv-muted);
    border: 1px solid var(--rv-line);
    background: var(--rv-card);
    border-radius: 999px;
    padding: 6px 13px;
    cursor: pointer;
    font-family: inherit;
    white-space: nowrap;
}

    .rv-langbtn:hover {
        border-color: var(--rv-brand-line);
        color: var(--rv-ink);
    }

    .rv-langbtn img.rv-flag {
        width: 18px;
        height: 13px;
        object-fit: cover;
        border-radius: 2px;
        display: block;
    }

    .rv-langbtn .rv-caret {
        font-size: 10px;
        line-height: 1;
    }

.rv-langmenu {
    position: absolute;
    right: 0;
    top: calc(100% + 8px);
    display: none;
    grid-template-columns: 1fr 1fr;
    gap: 2px;
    min-width: 340px;
    padding: 8px;
    background: var(--rv-card);
    border: 1px solid var(--rv-line);
    border-radius: 12px;
    box-shadow: var(--rv-lift);
    z-index: 1040;
}

    .rv-langmenu.rv-open {
        display: grid;
    }

    .rv-langmenu form {
        margin: 0;
    }

    .rv-langmenu button {
        display: flex;
        align-items: center;
        gap: 9px;
        width: 100%;
        padding: 8px 11px;
        border: 0;
        background: transparent;
        border-radius: 8px;
        font-size: 13.5px;
        font-family: inherit;
        color: var(--rv-ink);
        text-align: left;
        cursor: pointer;
        white-space: nowrap;
    }

        .rv-langmenu button:hover {
            background: var(--rv-brand-wash);
        }

        .rv-langmenu button img {
            width: 20px;
            height: 14px;
            object-fit: cover;
            border-radius: 2px;
            flex: none;
        }

    .rv-langmenu button[aria-current="true"] {
        font-weight: 700;
        color: var(--rv-brand-ink);
        background: var(--rv-brand-wash);
    }

/* ---- モバイル ---- */
.rv-burger {
    display: none;
    width: 40px;
    height: 40px;
    border: 1px solid var(--rv-line);
    background: var(--rv-card);
    border-radius: 9px;
    cursor: pointer;
    padding: 0;
    position: relative;
    flex: none;
}

    .rv-burger span,
    .rv-burger span::before,
    .rv-burger span::after {
        position: absolute;
        left: 50%;
        width: 18px;
        height: 2px;
        background: var(--rv-ink);
        border-radius: 2px;
        transform: translateX(-50%);
        content: "";
    }

    .rv-burger span {
        top: 50%;
        margin-top: -1px;
    }

        .rv-burger span::before {
            top: -6px;
        }

        .rv-burger span::after {
            top: 6px;
        }

.rv-mobilemenu {
    display: none;
    border-top: 1px solid var(--rv-line);
    background: var(--rv-ground);
    padding: 14px 26px 22px;
}

    .rv-mobilemenu.rv-open {
        display: block;
    }

    .rv-mobilemenu a.rv-mitem {
        display: block;
        padding: 13px 2px;
        font-size: 15.5px;
        color: var(--rv-ink);
        border-bottom: 1px solid var(--rv-line);
    }

.rv-mobilemenu-cta {
    display: flex;
    gap: 10px;
    margin-top: 18px;
}

    .rv-mobilemenu-cta .rv-btn {
        flex: 1;
    }

@media (max-width: 980px) {
    .rv-navlinks {
        display: none;
    }

    .rv-burger {
        display: block;
    }

    .rv-navright .rv-btn {
        display: none;
    }

    .rv-nav {
        gap: 14px;
    }
}

@media (max-width: 420px) {
    .rv-langbtn .rv-langname {
        display: none;
    }

    .rv-langmenu {
        min-width: 260px;
        grid-template-columns: 1fr;
        max-height: 60vh;
        overflow-y: auto;
    }
}

/* ---- フッター ---- */
footer.rv-footer {
    background: var(--rv-ground-2);
    border-top: 1px solid var(--rv-line);
    padding: 52px 0 34px;
    font-family: var(--rv-font);
    font-size: 14px;
    line-height: 1.85;
    color: var(--rv-muted);
}

    footer.rv-footer a {
        color: inherit;
        text-decoration: none;
    }

        footer.rv-footer a:hover {
            color: var(--rv-ink);
            text-decoration: none;
        }

.rv-foot {
    display: grid;
    grid-template-columns: 1.5fr 1fr 1fr 1fr;
    gap: 34px;
    margin-bottom: 36px;
}

    .rv-foot h5 {
        margin: 0 0 13px;
        font-size: 13px;
        letter-spacing: .08em;
        color: var(--rv-ink);
        font-weight: 700;
    }

    .rv-foot ul {
        list-style: none;
        margin: 0;
        padding: 0;
        display: flex;
        flex-direction: column;
        gap: 9px;
    }

.rv-footlogo {
    height: 22px;
    margin-bottom: 14px;
    display: block;
}

.rv-footaddr {
    font-size: 13px;
    line-height: 1.9;
}

/* 署名・共有画面の最小フッター（サービス導線を出さない） */
footer.rv-footer-minimal {
    padding: 24px 0;
}

    footer.rv-footer-minimal .rv-foot-end {
        border-top: 0;
        padding-top: 0;
    }

/* 署名・共有画面のヘッダーは言語切替を右端へ寄せる */
.rv-navspacer {
    margin-right: auto;
}

.rv-foot-end {
    border-top: 1px solid var(--rv-line);
    padding-top: 20px;
    display: flex;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    font-size: 11.5px;
    color: var(--rv-faint);
}

    .rv-foot-end nav {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

@media (max-width: 980px) {
    .rv-foot {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 580px) {
    .rv-foot {
        grid-template-columns: 1fr;
        gap: 26px;
    }
}

/* ============================================================
   エラー画面
   下地CSS(site-public.css)ではなくここに置く。下地は非ログイン時しか
   読み込まれず body.rv-public も非ログイン時しか付かないため、あちらに置くと
   **ログイン中のエラー画面だけレイアウトが当たらない**。Error401/403 は
   そもそもログイン中にしか出ないし、RedirectTo404Page() は業務画面でも使う。
   h1/p の寸法も下地の共通ルールに頼らず、ここで明示する。
   ============================================================ */
.rv-errorpage {
    padding: 72px 0 96px;
}

    .rv-errorpage .rv-errorcode {
        font-size: 13px;
        font-weight: 800;
        letter-spacing: .16em;
        color: var(--rv-brand);
        margin-bottom: 12px;
    }

    .rv-errorpage h1 {
        margin: 0 0 14px;
        font-size: clamp(24px, 2.6vw, 31px);
        font-weight: 800;
        line-height: 1.5;
        color: var(--rv-ink);
    }

    .rv-errorpage p {
        margin: 0 0 8px;
        font-size: 15.5px;
        line-height: 1.9;
        color: var(--rv-muted);
    }

    .rv-errorpage .rv-erroractions {
        display: flex;
        gap: 12px;
        flex-wrap: wrap;
        margin-top: 28px;
    }
