/*
Theme Name: Astra Child - 南但JC
Template: astra
Version: 1.1.0
Description: 南但青年会議所 カスタム子テーマ
*/

/* =========================================
   Google Fonts
   ========================================= */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;700&family=Lato:wght@400;700&display=swap');

/* =========================================
   グローバル ベーススタイル
   ========================================= */
:root {
    --njc-navy:   #1a2e5a;
    --njc-navy-d: #0d1f3c;
    --njc-navy-l: #2a4472;
    --njc-gold:   #c8a847;
    --njc-gold-l: #e0be5a;
    --njc-gray:   #f5f7fa;
    --njc-border: #e0e6ef;
    --njc-text:   #333333;
    --njc-muted:  #666666;
}

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

body {
    font-family: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', sans-serif;
    font-size: 17px;
    line-height: 1.85;
    color: var(--njc-text);
    -webkit-font-smoothing: antialiased;
}

/* Astra デフォルト上書き */
.ast-single-post .site-content,
.ast-page-builder-template .site-content { padding: 0; }

/* ページビルダー系：余白除去 */
.entry-content { padding: 0 !important; margin: 0 !important; }
.entry-content > .alignfull { margin-left: 0 !important; margin-right: 0 !important; }

/* =========================================
   ヘッダー
   ========================================= */
#masthead,
.site-header,
.ast-primary-header-bar {
    background: rgba(255,255,255,1) !important;
    box-shadow: 0 2px 12px rgba(0,0,0,.08) !important;
    transition: background .3s, box-shadow .3s;
}
.ast-header-break-point .ast-primary-header-bar {
    padding: 8px 0;
}
/* ロゴ下の余白除去 */
.site-header + * .njc-hero,
.site-header + * .njc-page-hero { margin-top: 0; }

/* ナビゲーション リンク */
.ast-builder-menu-1 .menu-item a,
.main-header-menu .menu-item a,
.main-navigation .main-header-menu .menu-item a {
    font-size: 14px;
    font-weight: 700;
    letter-spacing: .04em;
    color: var(--njc-navy) !important;
    padding: 8px 14px;
    position: relative;
    transition: color .2s;
}
.ast-builder-menu-1 .menu-item a::after,
.main-header-menu .menu-item a::after {
    content: '';
    position: absolute;
    bottom: 0; left: 14px; right: 14px;
    height: 2px;
    background: var(--njc-gold);
    transform: scaleX(0);
    transition: transform .25s;
    transform-origin: left;
}
.ast-builder-menu-1 .menu-item a:hover::after,
.main-header-menu .menu-item a:hover::after {
    transform: scaleX(1);
}
.ast-builder-menu-1 .menu-item a:hover,
.main-header-menu .menu-item a:hover {
    color: var(--njc-gold) !important;
}

/* ドロップダウン */
.ast-builder-menu-1 .sub-menu,
.main-header-menu .sub-menu {
    background: #fff !important;
    border-top: 3px solid var(--njc-gold) !important;
    box-shadow: 0 8px 24px rgba(0,0,0,.12) !important;
    border-radius: 0 0 4px 4px;
}
.ast-builder-menu-1 .sub-menu .menu-item a,
.main-header-menu .sub-menu .menu-item a {
    font-size: 13px !important;
    padding: 10px 20px !important;
    border-bottom: 1px solid #f0f2f5;
}
.ast-builder-menu-1 .sub-menu .menu-item a::after,
.main-header-menu .sub-menu .menu-item a::after { display: none; }
.ast-builder-menu-1 .sub-menu .menu-item a:hover,
.main-header-menu .sub-menu .menu-item a:hover {
    background: var(--njc-gray) !important;
}

/* =========================================
   フッター
   ========================================= */
#colophon,
.site-footer,
.ast-footer-overlay {
    background: #0d1f3c !important;
    color: #a0b4cc !important;
}
.ast-footer-widget-area { padding: 60px 0 40px; }
.footer-widget-area-inner { max-width: 1140px; margin: 0 auto; padding: 0 20px; }
.ast-footer-copyright { background: #060f20 !important; padding: 16px 0 !important; }
.ast-footer-copyright .ast-copyright-text { color: #667 !important; font-size: 12px !important; }

.site-footer a,
#colophon a {
    color: #a0b4cc !important;
    text-decoration: none;
    transition: color .2s;
}
.site-footer a:hover,
#colophon a:hover { color: var(--njc-gold) !important; }

.widget-title,
.site-footer .widget-title {
    font-family: 'Lato', sans-serif;
    font-size: 11px !important;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--njc-gold) !important;
    border-bottom: 1px solid rgba(255,255,255,.1) !important;
    padding-bottom: 12px !important;
    margin-bottom: 20px !important;
}

.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer ul li { padding: 5px 0; font-size: 13px; }

/* =========================================
   ページ本文コンテナ（Astra余白除去）
   ========================================= */
.ast-page-builder-template .entry-content,
body.page .entry-content {
    max-width: 100% !important;
    padding: 0 !important;
}
/* =========================================
   ロゴサイズ
   ========================================= */
.custom-logo {
    width: 220px !important;
    height: auto !important;
}
@media (max-width: 921px) {
    .custom-logo { width: 170px !important; }
}

/* =========================================
   ヘッダーコンテナ 左右余白を詰める
   ========================================= */
.site-primary-header-wrap.ast-container,
.ast-primary-header-bar .ast-container {
    padding-left: 24px !important;
    padding-right: 24px !important;
}

/* =========================================
   トップページ：動画上の余白を全消し
   ヘッダー分のオフセットはヒーロー側で吸収
   ========================================= */
body.home .site-content,
body.home #content,
body.home .ast-container,
body.home #primary,
body.home .content-area,
body.home #main,
body.home .site-main,
body.home .ast-article-single,
body.home article,
body.home .hentry {
    padding-top:    0 !important;
    padding-bottom: 0 !important;
    margin-top:     0 !important;
    margin-bottom:  0 !important;
}
body.home .entry-header {
    display: none !important;
}
body.home .entry-content {
    padding: 0 !important;
    margin:  0 !important;
}

/* =========================================
   セクション・フッター full-bleed
   （Astraコンテナの左右制約を突破）
   ========================================= */
.njc-section,
.njc-cta,
.njc-topmsg {
    width: 100vw !important;
    max-width: 100vw !important;
    margin-left:  calc(50% - 50vw) !important;
    margin-right: calc(50% - 50vw) !important;
    box-sizing: border-box;
}

/* フッター：Astraのコンテナ余白を打ち消す */
#colophon,
.site-footer {
    width: 100% !important;
    max-width: 100% !important;
    margin-left:  0 !important;
    margin-right: 0 !important;
    box-sizing: border-box;
}

/* =========================================
   固定ページヒーロー full-bleed
   ========================================= */
.njc-page-hero {
    width: 100vw !important;
    max-width: 100vw !important;
    margin-left:  calc(50% - 50vw) !important;
    margin-right: calc(50% - 50vw) !important;
    box-sizing: border-box;
}

/* =========================================
   コンテンツコンテナ幅制限を解除（全ページ）
   各セクションが自分の幅・パディングを管理する
   ========================================= */
#content .ast-container,
#content #primary,
#content #main,
#content article.hentry,
#content .entry-content {
    max-width: 100% !important;
    width: 100% !important;
    padding-left:  0 !important;
    padding-right: 0 !important;
    box-sizing: border-box;
}

.ast-footer-copyright,
.ast-footer-copyright * {
  display: none !important;
  height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  border: none !important;
}

.site-below-footer-wrap {
  display: none !important;
}


/* =========================================
   Contact Form - UI/UX 全面改善 v2 (njc-contact-form-v2)
   ========================================= */

/* フォームコンテナ */
.njc-contact-form {
    max-width: 600px;
    margin: 0 auto;
    padding: 0 20px;
}

/* フォームグループ（ラベル＋フィールドのセット） */
.njc-form-group {
    margin-bottom: 24px;
}

/* ラベル */
.njc-form-label {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 700;
    color: #1a2e5a;
    margin-bottom: 8px;
    font-family: "Noto Sans JP", sans-serif;
}

/* 必須／任意バッジ */
.njc-badge {
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    padding: 2px 7px;
    border-radius: 3px;
    letter-spacing: .03em;
    line-height: 1.6;
}
.njc-badge--required {
    background: #c0392b;
    color: #fff;
}
.njc-badge--optional {
    background: #e8ecf2;
    color: #7a8a9a;
}

/* 入力フィールド共通 */
.njc-contact-form .wpcf7 input[type="text"],
.njc-contact-form .wpcf7 input[type="email"],
.njc-contact-form .wpcf7 input[type="tel"],
.njc-contact-form .wpcf7 select,
.njc-contact-form .wpcf7 textarea {
    width: 100% !important;
    padding: 12px 14px !important;
    border: 1.5px solid #d0d8e8 !important;
    border-radius: 6px !important;
    font-size: 15px !important;
    font-family: "Noto Sans JP", sans-serif !important;
    background: #fff !important;
    color: #1a2e5a !important;
    transition: border-color .2s, box-shadow .2s !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    appearance: none;
    -webkit-appearance: none;
}

/* フォーカス時 */
.njc-contact-form .wpcf7 input[type="text"]:focus,
.njc-contact-form .wpcf7 input[type="email"]:focus,
.njc-contact-form .wpcf7 input[type="tel"]:focus,
.njc-contact-form .wpcf7 select:focus,
.njc-contact-form .wpcf7 textarea:focus {
    outline: none !important;
    border-color: #c8a847 !important;
    box-shadow: 0 0 0 3px rgba(200,168,71,.15) !important;
    background: #fffef8 !important;
}

/* セレクトボックス（矢印アイコン付き） */
.njc-contact-form .wpcf7 select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%231a2e5a' d='M6 8L0 0h12z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 14px center !important;
    background-size: 10px !important;
    padding-right: 36px !important;
    cursor: pointer !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}

/* テキストエリア */
.njc-contact-form .wpcf7 textarea {
    min-height: 140px !important;
    resize: vertical !important;
    line-height: 1.7 !important;
}

/* プライバシー同意 */
.njc-form-group--privacy {
    background: #f4f6fa;
    border: 1px solid #d0d8e8;
    border-radius: 6px;
    padding: 16px 20px;
    font-size: 14px;
    color: #555;
}
.njc-form-group--privacy .wpcf7-list-item {
    margin: 0 !important;
}
.njc-form-group--privacy input[type="checkbox"] {
    width: 16px !important;
    height: 16px !important;
    margin-right: 8px !important;
    accent-color: #1a2e5a;
    vertical-align: middle;
}
.njc-form-group--privacy a {
    color: #1a2e5a;
    text-decoration: underline;
}

/* 送信ボタン */
.njc-contact-form .wpcf7 input[type="submit"] {
    display: block !important;
    width: 100% !important;
    padding: 16px !important;
    background: #1a2e5a !important;
    color: #fff !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    letter-spacing: .1em !important;
    border: none !important;
    border-radius: 6px !important;
    cursor: pointer !important;
    transition: background .25s, transform .15s !important;
    margin-top: 8px !important;
    font-family: "Noto Sans JP", sans-serif !important;
}
.njc-contact-form .wpcf7 input[type="submit"]:hover {
    background: #c8a847 !important;
    transform: translateY(-1px) !important;
}

/* 完了メッセージ */
.njc-contact-form .wpcf7-mail-sent-ok,
.njc-contact-form .wpcf7 .wpcf7-response-output.wpcf7-mail-sent-ok {
    background: #eaf7ed !important;
    border: 1.5px solid #4caf50 !important;
    color: #2e7d32 !important;
    border-radius: 6px !important;
    padding: 16px 20px !important;
    font-size: 14px !important;
    margin-top: 16px !important;
}

/* エラーメッセージ */
.njc-contact-form .wpcf7-not-valid-tip {
    color: #c0392b !important;
    font-size: 12px !important;
    margin-top: 4px !important;
    display: block !important;
}
.njc-contact-form .wpcf7 input.wpcf7-not-valid,
.njc-contact-form .wpcf7 select.wpcf7-not-valid,
.njc-contact-form .wpcf7 textarea.wpcf7-not-valid {
    border-color: #c0392b !important;
    background: #fff8f8 !important;
}
.njc-contact-form .wpcf7 .wpcf7-response-output {
    border-radius: 6px !important;
    padding: 14px 20px !important;
    font-size: 14px !important;
    margin-top: 16px !important;
}

/* モバイル最適化 */
@media (max-width: 600px) {
    .njc-contact-form {
        padding: 0 4px;
    }
    .njc-form-group {
        margin-bottom: 20px;
    }
}


/* contact-select-fix */
.njc-contact-form .wpcf7 select {
    overflow: visible !important;
    text-overflow: unset !important;
    white-space: nowrap !important;
    padding-left: 20px !important;
    text-indent: 0 !important;
}
