/* ==========================================
   プレミアホーム パターン6
   デザイン：ダークモード和モダン・ラグジュアリー
   漆黒＋金の高級感ある配色
   ========================================== */

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

:root {
    --bg: #0e0e0c;
    --bg2: #161614;
    --bg3: #1e1e1b;
    --surface: #252520;
    --body: #b0a898;
    --muted: #6e665c;
    --border: #2e2c28;
    --border-light: #3a3832;
    --text: #e8e4dc;
    --white: #ffffff;
    --kin: #c9a96e;
    --kin-dark: #a08545;
    --kin-light: #dcc08a;
    --aka: #c0392b;

    --ff-mincho: 'Noto Serif JP', serif;
    --ff-gothic: 'Noto Sans JP', sans-serif;

    --max-w: 1100px;
    --sec-py: 120px;
    --hd-h: 72px;
}

html { scroll-behavior: smooth; font-size: 16px; }

body {
    font-family: var(--ff-gothic);
    color: var(--body);
    line-height: 2;
    background: var(--bg);
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
}
body.menu-open { overflow: hidden; }

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; transition: color .3s ease; }
a:hover { color: var(--kin); }

.container { max-width: var(--max-w); margin: 0 auto; padding: 0 32px; }


/* === ボタン === */
.btn {
    display: inline-block;
    font-family: var(--ff-gothic);
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 0.2em;
    padding: 15px 44px;
    border: none;
    cursor: pointer;
    transition: all .3s ease;
    text-align: center;
}
.btn--kin { background: var(--kin); color: var(--bg); }
.btn--kin:hover { background: var(--kin-dark); color: var(--bg); }
.btn--outline { background: transparent; color: var(--text); border: 1px solid var(--border-light); }
.btn--outline:hover { border-color: var(--kin); color: var(--kin); }
.btn--white { background: var(--white); color: var(--bg); }
.btn--white:hover { background: var(--text); color: var(--bg); }
.btn--lg { padding: 17px 56px; font-size: 0.8125rem; }

.link-more {
    font-size: 0.75rem;
    letter-spacing: 0.15em;
    color: var(--kin);
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.link-more::after { content: '→'; transition: transform .3s ease; }
.link-more:hover::after { transform: translateX(4px); }


/* === セクション === */
.sec { padding: var(--sec-py) 0; }
.sec--surface { background: var(--bg2); }
.sec--gold { background: var(--surface); }

.sec_head { margin-bottom: 56px; }
.sec_head--center { text-align: center; }

.sec_label {
    display: block;
    font-size: 0.5625rem;
    letter-spacing: 0.45em;
    color: var(--kin);
    margin-bottom: 14px;
}

.sec_title {
    font-family: var(--ff-mincho);
    font-size: 1.625rem;
    font-weight: 400;
    letter-spacing: 0.12em;
    line-height: 1.8;
    color: var(--text);
}
.sec_title--lg { font-size: 2rem; }

/* 金の装飾線 */
.sec_head--center::after {
    content: '';
    display: block;
    width: 40px;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--kin), transparent);
    margin: 20px auto 0;
}

.sec_cta { text-align: center; margin-top: 56px; }

.lead {
    text-align: center;
    font-size: 0.9375rem;
    line-height: 2.4;
    max-width: 560px;
    margin: 0 auto;
    color: var(--body);
}


/* ==========================================
   ヘッダー
   ========================================== */
.hd {
    position: fixed;
    top: 0; left: 0; width: 100%;
    z-index: 1000;
    height: var(--hd-h);
    background: transparent;
    transition: all .4s ease;
}
.hd--solid, .hd.is-scrolled {
    background: rgba(14,14,12,0.95);
    backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--border);
}

.hd_inner {
    max-width: 1300px;
    margin: 0 auto;
    padding: 0 28px;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.hd_logo_main {
    font-family: var(--ff-mincho);
    font-size: 1.0625rem;
    font-weight: 500;
    letter-spacing: 0.15em;
    color: var(--kin);
    display: block;
    transition: opacity .3s ease;
}
.hd_logo_sub {
    font-size: 0.4375rem;
    letter-spacing: 0.12em;
    color: var(--muted);
    display: block;
}
.hd_logo:hover .hd_logo_main { opacity: 0.7; }

.hd_nav { display: flex; align-items: center; gap: 4px; }
.hd_nav_list { display: flex; gap: 0; list-style: none; margin-right: 16px; }
.hd_nav_list a {
    font-size: 0.6875rem;
    letter-spacing: 0.12em;
    color: var(--muted);
    padding: 8px 12px;
    transition: color .3s ease;
}
.hd_nav_list a:hover, .hd_nav_list a.is-active { color: var(--kin); }

.hd_cta {
    font-size: 0.625rem;
    letter-spacing: 0.15em;
    padding: 7px 18px;
    border: 1px solid var(--kin);
    color: var(--kin) !important;
    transition: all .3s ease;
}
.hd_cta:hover { background: var(--kin); color: var(--bg) !important; }

.hd_burger {
    display: none;
    width: 24px; height: 14px;
    background: none; border: none; cursor: pointer;
    position: relative; z-index: 1001;
}
.hd_burger span {
    display: block; width: 100%; height: 1px;
    background: var(--kin);
    position: absolute; left: 0;
    transition: all .3s ease;
}
.hd_burger span:first-child { top: 0; }
.hd_burger span:last-child { bottom: 0; }
.hd_burger.is-active span:first-child { top: 50%; transform: translateY(-50%) rotate(45deg); }
.hd_burger.is-active span:last-child { bottom: 50%; transform: translateY(50%) rotate(-45deg); }


/* ==========================================
   メインビジュアル（左テキスト＋右画像 スプリット）
   ========================================== */
.mv {
    display: grid;
    grid-template-columns: 45% 55%;
    min-height: 100vh;
}

.mv_left {
    background: var(--bg);
    display: flex;
    align-items: center;
    padding: 0 6%;
}
.mv_left_inner { max-width: 440px; }

.mv_catch {
    font-size: 0.5625rem;
    letter-spacing: 0.5em;
    color: var(--kin);
    margin-bottom: 28px;
    display: block;
}

.mv_title {
    font-family: var(--ff-mincho);
    font-size: clamp(1.75rem, 2.8vw, 2.5rem);
    font-weight: 400;
    line-height: 2.2;
    letter-spacing: 0.15em;
    color: var(--text);
    margin-bottom: 24px;
}

/* タイトル下の金の縦線 */
.mv_line {
    width: 1px;
    height: 40px;
    background: var(--kin);
    margin-bottom: 24px;
}

.mv_desc {
    font-size: 0.8125rem;
    line-height: 2.2;
    color: var(--muted);
    margin-bottom: 40px;
    letter-spacing: 0.04em;
}

.mv_actions { display: flex; gap: 12px; flex-wrap: wrap; }

.mv_right {
    position: relative;
    overflow: hidden;
}
.mv_slider { position: absolute; inset: 0; }
.mv_slide {
    position: absolute; inset: 0;
    background-size: cover;
    background-position: center;
    opacity: 0;
    transition: opacity 1.5s ease;
}
.mv_slide.is-active { opacity: 1; }

.mv_counter {
    position: absolute;
    bottom: 32px; right: 32px;
    z-index: 2;
    display: flex; align-items: center; gap: 8px;
    font-size: 0.625rem;
    color: rgba(255,255,255,0.4);
}
.mv_counter_now { font-size: 1rem; color: var(--white); }
.mv_counter_bar { width: 36px; height: 1px; background: rgba(255,255,255,0.15); position: relative; overflow: hidden; }
.mv_counter_bar span { position: absolute; inset: 0; background: var(--kin); transform-origin: left; animation: barProgress 6s linear infinite; }
@keyframes barProgress { 0% { transform: scaleX(0); } 100% { transform: scaleX(1); } }


/* ==========================================
   特徴
   ========================================== */
.feat {
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
}
.feat_inner {
    max-width: var(--max-w);
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
}
.feat_item {
    padding: 44px 28px;
    border-right: 1px solid var(--border);
    text-align: center;
}
.feat_item:last-child { border-right: none; }
.feat_num {
    font-family: var(--ff-mincho);
    font-size: 0.9375rem;
    color: var(--kin);
    display: block;
    margin-bottom: 14px;
}
.feat_item h3 {
    font-family: var(--ff-mincho);
    font-size: 0.9375rem;
    font-weight: 400;
    color: var(--text);
    letter-spacing: 0.1em;
    margin-bottom: 8px;
}
.feat_item p { font-size: 0.6875rem; color: var(--muted); }


/* ==========================================
   ブロック
   ========================================== */
.block { padding: var(--sec-py) 0; }
.block_inner {
    max-width: var(--max-w);
    margin: 0 auto;
    padding: 0 32px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 72px;
    align-items: center;
}
.block--reverse .block_inner { direction: rtl; }
.block--reverse .block_inner > * { direction: ltr; }

.block_img { position: relative; }
.block_img img { width: 100%; height: 420px; object-fit: cover; }
/* 金の角装飾 */
.block_img::after {
    content: '';
    position: absolute;
    bottom: -6px; right: -6px;
    width: 60px; height: 60px;
    border-bottom: 1px solid var(--kin);
    border-right: 1px solid var(--kin);
}

.block_body .sec_label { margin-bottom: 10px; }
.block_body .sec_title { margin-bottom: 24px; }
.block_body p { font-size: 0.9375rem; line-height: 2.2; margin-bottom: 28px; }

.dl { margin-bottom: 24px; }
.dl dt { font-size: 0.625rem; color: var(--muted); letter-spacing: 0.12em; margin-bottom: 2px; }
.dl dd { font-size: 0.9375rem; color: var(--text); margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--border); }
.dl dd:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }


/* ==========================================
   数字
   ========================================== */
.nums { background: var(--surface); padding: 72px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.nums_inner { max-width: var(--max-w); margin: 0 auto; padding: 0 32px; display: grid; grid-template-columns: repeat(3, 1fr); text-align: center; }
.nums_item { padding: 20px; border-right: 1px solid var(--border); }
.nums_item:last-child { border-right: none; }
.nums_val { font-family: var(--ff-mincho); font-size: 3rem; color: var(--text); line-height: 1; font-weight: 400; }
.nums_unit { font-size: 0.8125rem; color: var(--kin); margin-left: 2px; }
.nums_label { display: block; font-size: 0.625rem; color: var(--muted); margin-top: 12px; letter-spacing: 0.15em; }


/* ==========================================
   サービス（カード型 ダークスタイル）
   ========================================== */
.svc { padding: var(--sec-py) 0; }

.svc_grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }

.svc_card {
    background: var(--bg2);
    overflow: hidden;
    transition: background .3s ease;
    position: relative;
}
.svc_card:hover { background: var(--surface); color: inherit; }

.svc_card_img { overflow: hidden; aspect-ratio: 3/2; position: relative; }
.svc_card_img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; opacity: 0.85; }
.svc_card:hover .svc_card_img img { transform: scale(1.05); opacity: 1; }
.svc_card_no {
    position: absolute;
    bottom: 0; left: 0;
    font-family: var(--ff-mincho);
    font-size: 0.6875rem;
    color: var(--kin);
    background: var(--bg);
    padding: 4px 12px;
    letter-spacing: 0.15em;
}

.svc_card h3 { font-family: var(--ff-mincho); font-size: 0.9375rem; font-weight: 400; color: var(--text); padding: 18px 18px 6px; letter-spacing: 0.06em; }
.svc_card p { font-size: 0.6875rem; color: var(--muted); padding: 0 18px 20px; line-height: 1.9; }


/* ==========================================
   施工事例（ダーク背景ギャラリー）
   ========================================== */
.wk { padding: var(--sec-py) 0; background: var(--bg2); }
.wk_grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }
.wk_card { display: block; overflow: hidden; position: relative; }
.wk_card_img { aspect-ratio: 1/1; overflow: hidden; }
.wk_card_img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.wk_card:hover .wk_card_img img { transform: scale(1.06); }
.wk_card_over {
    position: absolute; inset: 0;
    background: rgba(14,14,12,0.7);
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    opacity: 0;
    transition: opacity .4s ease;
}
.wk_card:hover .wk_card_over { opacity: 1; }
.wk_card_cat { font-size: 0.5rem; letter-spacing: 0.2em; padding: 3px 12px; border: 1px solid var(--kin); color: var(--kin); margin-bottom: 10px; }
.wk_card_over h3 { font-family: var(--ff-mincho); font-size: 0.875rem; font-weight: 400; color: var(--text); text-align: center; letter-spacing: 0.06em; padding: 0 16px; }


/* ==========================================
   CTA
   ========================================== */
.home-cta {
    padding: 100px 0;
    background: var(--surface);
    text-align: center;
    border-top: 1px solid var(--border);
}
.home-cta h2 { font-family: var(--ff-mincho); font-size: 1.375rem; font-weight: 400; color: var(--text); margin-bottom: 16px; letter-spacing: 0.15em; }
.home-cta p { color: var(--muted); margin-bottom: 36px; font-size: 0.8125rem; }
.home-cta_btns { display: flex; gap: 12px; justify-content: center; }


/* ==========================================
   ページヒーロー
   ========================================== */
.ph {
    position: relative;
    height: 44vh;
    min-height: 300px;
    background-size: cover;
    background-position: center;
    display: flex;
    align-items: center;
    justify-content: center;
}
.ph::after { content: ''; position: absolute; inset: 0; background: rgba(14,14,12,0.6); }
.ph_content { position: relative; z-index: 1; text-align: center; }
.ph_label { font-size: 0.5rem; letter-spacing: 0.5em; color: var(--kin); margin-bottom: 14px; display: block; }
.ph_title { font-family: var(--ff-mincho); font-size: 2rem; font-weight: 400; color: var(--text); letter-spacing: 0.25em; }
.ph_bread { position: absolute; bottom: 20px; left: 28px; z-index: 1; font-size: 0.5625rem; letter-spacing: 0.1em; color: var(--muted); }
.ph_bread a { color: var(--muted); }
.ph_bread a:hover { color: var(--kin); }
.ph_bread span { margin: 0 6px; }


/* ==========================================
   ページCTA
   ========================================== */
.p-cta { padding: 80px 0; background: var(--bg2); text-align: center; border-top: 1px solid var(--border); }
.p-cta h2 { font-family: var(--ff-mincho); font-size: 1.125rem; font-weight: 400; color: var(--text); margin-bottom: 10px; letter-spacing: 0.1em; }
.p-cta p { color: var(--muted); margin-bottom: 24px; font-size: 0.8125rem; }


/* ==========================================
   テーブル
   ========================================== */
.tbl { max-width: 680px; margin: 0 auto; }
.tbl_row { display: flex; border-bottom: 1px solid var(--border); padding: 20px 0; }
.tbl_row dt { width: 130px; flex-shrink: 0; font-size: 0.75rem; font-weight: 500; color: var(--text); letter-spacing: 0.08em; }
.tbl_row dd { flex: 1; font-size: 0.9375rem; color: var(--body); }
.tbl_row dd a { color: var(--kin); }


/* ==========================================
   理念
   ========================================== */
.phil { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }
.phil_card { padding: 40px 24px; background: var(--bg2); text-align: center; transition: background .3s ease; }
.phil_card:hover { background: var(--surface); }
.phil_no { font-family: var(--ff-mincho); font-size: 0.75rem; color: var(--kin); letter-spacing: 0.2em; display: block; margin-bottom: 14px; }
.phil_card h3 { font-family: var(--ff-mincho); font-size: 1.0625rem; font-weight: 400; color: var(--text); margin-bottom: 12px; letter-spacing: 0.08em; }
.phil_card p { font-size: 0.75rem; line-height: 2; color: var(--muted); }


/* ==========================================
   アクセス
   ========================================== */
.acc { display: grid; grid-template-columns: 1fr 1fr; gap: 36px; align-items: start; }
.acc_map iframe { display: block; }
.acc_info { padding: 12px 0; }
.acc_info h3 { font-family: var(--ff-mincho); font-size: 1rem; font-weight: 400; color: var(--text); margin-bottom: 12px; }
.acc_info p { font-size: 0.875rem; margin-bottom: 8px; }
.acc_info a { color: var(--kin); }


/* ==========================================
   バリューカード
   ========================================== */
.vals { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2px; }
.vals_card { padding: 32px 28px; background: var(--bg2); transition: background .3s ease; }
.vals_card:hover { background: var(--surface); }
.vals_no { font-family: var(--ff-mincho); font-size: 0.75rem; color: var(--kin); letter-spacing: 0.2em; display: block; margin-bottom: 8px; }
.vals_card h3 { font-family: var(--ff-mincho); font-size: 1rem; font-weight: 400; color: var(--text); margin-bottom: 8px; }
.vals_card p { font-size: 0.75rem; line-height: 2; color: var(--muted); }


/* ==========================================
   お約束
   ========================================== */
.prom { max-width: 560px; margin: 0 auto; }
.prom_item { display: flex; align-items: flex-start; gap: 14px; padding: 16px 0; border-bottom: 1px solid var(--border); }
.prom_mark { font-size: 0.875rem; color: var(--kin); flex-shrink: 0; margin-top: 2px; }
.prom_item p { font-size: 0.875rem; color: var(--text); }


/* ==========================================
   サービス詳細
   ========================================== */
.svc-detail { padding: 80px 0; border-bottom: 1px solid var(--border); }
.svc-detail_inner { max-width: var(--max-w); margin: 0 auto; padding: 0 32px; display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.svc-detail--rev .svc-detail_inner { direction: rtl; }
.svc-detail--rev .svc-detail_inner > * { direction: ltr; }
.svc-detail_no { font-family: var(--ff-mincho); font-size: 0.875rem; color: var(--kin); letter-spacing: 0.2em; display: block; margin-bottom: 12px; }
.svc-detail_body h3 { font-family: var(--ff-mincho); font-size: 1.25rem; font-weight: 400; color: var(--text); margin-bottom: 14px; letter-spacing: 0.08em; }
.svc-detail_body p { font-size: 0.9375rem; line-height: 2.1; margin-bottom: 18px; }
.svc-detail_list { list-style: none; }
.svc-detail_list li { font-size: 0.8125rem; padding: 5px 0 5px 16px; position: relative; color: var(--body); }
.svc-detail_list li::before { content: ''; position: absolute; left: 0; top: 13px; width: 6px; height: 1px; background: var(--kin); }
.svc-detail_img img { width: 100%; height: 360px; object-fit: cover; }


/* ==========================================
   フロー
   ========================================== */
.flow { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; max-width: 900px; margin: 0 auto; }
.flow_step { text-align: center; padding: 24px 8px; position: relative; }
.flow_step::after { content: '→'; position: absolute; top: 34px; right: -6px; font-size: 0.6875rem; color: var(--kin); }
.flow_step:last-child::after { display: none; }
.flow_no { font-family: var(--ff-mincho); font-size: 0.75rem; color: var(--kin); letter-spacing: 0.15em; display: block; margin-bottom: 10px; }
.flow_step h3 { font-family: var(--ff-mincho); font-size: 0.8125rem; font-weight: 400; color: var(--text); margin-bottom: 6px; }
.flow_step p { font-size: 0.625rem; color: var(--muted); line-height: 1.7; }


/* ==========================================
   アーカイブ
   ========================================== */
.wk-archive { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2px; }
.wk-archive_item { background: var(--bg2); overflow: hidden; transition: background .3s ease; }
.wk-archive_item:hover { background: var(--surface); color: inherit; }
.wk-archive_img { overflow: hidden; aspect-ratio: 16/10; }
.wk-archive_img img { width: 100%; height: 100%; object-fit: cover; opacity: 0.9; transition: all .5s ease; }
.wk-archive_item:hover .wk-archive_img img { opacity: 1; transform: scale(1.04); }
.wk-archive_body { padding: 20px 22px; }
.wk-archive_body h3 { font-family: var(--ff-mincho); font-size: 0.9375rem; font-weight: 400; color: var(--text); margin-bottom: 4px; }
.wk-archive_body p { font-size: 0.6875rem; color: var(--muted); line-height: 1.8; margin-bottom: 8px; }
.wk-archive_link { font-size: 0.5625rem; letter-spacing: 0.12em; color: var(--kin); }


/* ==========================================
   ニュース
   ========================================== */
.news_item { display: flex; gap: 24px; padding: 28px 0; border-bottom: 1px solid var(--border); transition: opacity .3s ease; }
.news_item:first-child { padding-top: 0; }
.news_item:hover { opacity: 0.75; color: inherit; }
.news_img { width: 160px; flex-shrink: 0; overflow: hidden; aspect-ratio: 4/3; }
.news_img img { width: 100%; height: 100%; object-fit: cover; opacity: 0.9; }
.news_body { flex: 1; }
.news_meta { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.news_badge { font-size: 0.5rem; letter-spacing: 0.12em; padding: 2px 8px; border: 1px solid; }
.news_badge--sem { border-color: var(--kin); color: var(--kin); }
.news_badge--blog { border-color: var(--muted); color: var(--muted); }
.news_meta time { font-size: 0.625rem; color: var(--muted); }
.news_status { font-size: 0.5rem; padding: 2px 8px; background: var(--kin); color: var(--bg); }
.news_body h3 { font-family: var(--ff-mincho); font-size: 0.9375rem; font-weight: 400; color: var(--text); line-height: 1.7; margin-bottom: 4px; }
.news_body p { font-size: 0.6875rem; color: var(--muted); line-height: 1.8; }


/* ==========================================
   お問い合わせ
   ========================================== */
.ct-layout { display: grid; grid-template-columns: 1fr 320px; gap: 44px; align-items: start; }

.form-note { font-size: 0.625rem; color: var(--muted); margin-bottom: 24px; }
.form_group { margin-bottom: 18px; }
.form_group label { display: block; font-size: 0.75rem; font-weight: 500; color: var(--text); margin-bottom: 6px; }
.req { color: var(--aka); font-size: 0.5625rem; }
.form_group input, .form_group select, .form_group textarea {
    width: 100%; padding: 10px 12px; font-family: var(--ff-gothic); font-size: 0.875rem;
    border: 1px solid var(--border); background: var(--bg2); color: var(--text);
    outline: none; transition: border-color .3s ease; -webkit-appearance: none; appearance: none; border-radius: 0;
}
.form_group input:focus, .form_group select:focus, .form_group textarea:focus { border-color: var(--kin); }
.form_group textarea { resize: vertical; }
.form_row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.form_check label { display: flex; align-items: center; gap: 8px; cursor: pointer; font-weight: 400; }
.form_check input[type="checkbox"] { width: 16px; height: 16px; flex-shrink: 0; }
.form_check a { color: var(--kin); text-decoration: underline; }
.form_submit { margin-top: 24px; }

.ct-card { background: var(--bg2); padding: 24px 18px; border: 1px solid var(--border); }
.ct-card h3 { font-family: var(--ff-mincho); font-size: 0.875rem; font-weight: 400; color: var(--text); margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--kin); }
.ct-card_item { margin-bottom: 12px; }
.ct-card_item span { font-size: 0.5rem; font-weight: 500; color: var(--muted); letter-spacing: 0.12em; display: block; margin-bottom: 3px; }
.ct-card_item a { color: var(--kin); font-size: 0.75rem; }
.ct-card_item p { font-size: 0.75rem; line-height: 1.8; }


/* ==========================================
   FAQ
   ========================================== */
.faq { max-width: 680px; margin: 0 auto; }
.faq_item { border-bottom: 1px solid var(--border); }
.faq_q { width: 100%; padding: 18px 0; background: none; border: none; font-family: var(--ff-gothic); font-size: 0.875rem; font-weight: 500; color: var(--text); text-align: left; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.faq_icon { width: 10px; height: 10px; flex-shrink: 0; position: relative; }
.faq_icon::before, .faq_icon::after { content: ''; position: absolute; background: var(--kin); transition: transform .3s ease; }
.faq_icon::before { width: 10px; height: 1px; top: 50%; transform: translateY(-50%); }
.faq_icon::after { width: 1px; height: 10px; left: 50%; transform: translateX(-50%); }
.faq_item.is-open .faq_icon::after { transform: translateX(-50%) rotate(90deg); }
.faq_a { max-height: 0; overflow: hidden; transition: max-height .4s ease, padding .4s ease; }
.faq_item.is-open .faq_a { max-height: 300px; padding-bottom: 18px; }
.faq_a p { font-size: 0.8125rem; line-height: 2; color: var(--muted); }


/* ==========================================
   フッター
   ========================================== */
.ft { background: var(--bg); color: var(--muted); border-top: 1px solid var(--border); }
.ft_inner { max-width: var(--max-w); margin: 0 auto; padding: 0 32px; }
.ft_top { display: flex; justify-content: space-between; align-items: flex-start; padding: 52px 0 40px; border-bottom: 1px solid var(--border); }
.ft_logo { font-family: var(--ff-mincho); font-size: 1rem; font-weight: 400; letter-spacing: 0.12em; color: var(--kin); display: block; margin-bottom: 4px; }
.ft_logo_sub { font-size: 0.4375rem; color: var(--muted); letter-spacing: 0.1em; display: block; margin-bottom: 14px; }
.ft_brand p { font-size: 0.625rem; line-height: 1.8; margin-bottom: 4px; }
.ft_brand a { color: var(--kin); }
.ft_nav ul { list-style: none; display: flex; gap: 20px; }
.ft_nav a { font-size: 0.625rem; letter-spacing: 0.08em; color: var(--muted); }
.ft_nav a:hover { color: var(--kin); }
.ft_bottom { padding: 16px 0; text-align: center; }
.ft_bottom p { font-size: 0.5rem; letter-spacing: 0.06em; }


/* ==========================================
   エラー・アニメーション
   ========================================== */
.form_error { color: var(--aka); font-size: 0.5625rem; margin-top: 4px; }
.is-error { border-color: var(--aka) !important; }
.fade-up { opacity: 0; transform: translateY(16px); transition: opacity .8s ease, transform .8s ease; }
.fade-up.is-visible { opacity: 1; transform: translateY(0); }


/* ==========================================
   ページヒーロー（サブページ用）
   ========================================== */
.p-hero {
    padding: calc(var(--hd-h) + 60px) 0 60px;
    text-align: center;
    background: var(--bg);
    border-bottom: 1px solid var(--border);
}
.p-hero_inner { max-width: var(--max-w); margin: 0 auto; padding: 0 32px; }
.p-hero_title {
    font-family: var(--ff-mincho);
    font-size: 2rem;
    font-weight: 400;
    color: var(--text);
    letter-spacing: 0.25em;
}

/* セクション説明文 */
.sec_desc {
    font-size: 0.9375rem;
    line-height: 2.2;
    color: var(--body);
    margin-top: 20px;
}

/* バリューカード（コンセプトページ用） */
.vals_grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2px; }
.val_card { padding: 36px 28px; background: var(--surface); transition: background .3s ease; }
.val_card:hover { background: var(--bg3); }
.val_num { font-family: var(--ff-mincho); font-size: 0.75rem; color: var(--kin); letter-spacing: 0.2em; display: block; margin-bottom: 10px; }
.val_title { font-family: var(--ff-mincho); font-size: 1rem; font-weight: 400; color: var(--text); margin-bottom: 8px; }
.val_card p { font-size: 0.75rem; line-height: 2; color: var(--muted); }

/* プロミス（コンセプトページ用 拡張） */
.prom_list { max-width: 680px; margin: 0 auto; }
.prom_item { display: flex; align-items: flex-start; gap: 16px; padding: 24px 0; border-bottom: 1px solid var(--border); }
.prom_item:last-child { border-bottom: none; }
.prom_mark { font-size: 1rem; color: var(--kin); flex-shrink: 0; margin-top: 4px; }
.prom_body h3 { font-family: var(--ff-mincho); font-size: 0.9375rem; font-weight: 400; color: var(--text); margin-bottom: 6px; letter-spacing: 0.04em; }
.prom_body p { font-size: 0.8125rem; line-height: 2; color: var(--muted); }

/* ページCTA（拡張） */
.p-cta_inner { max-width: 600px; margin: 0 auto; }

/* サービス詳細（reverse修正） */
.svc-detail--reverse .svc-detail_inner { direction: rtl; }
.svc-detail--reverse .svc-detail_inner > * { direction: ltr; }
.svc-detail_num { font-family: var(--ff-mincho); font-size: 0.875rem; color: var(--kin); letter-spacing: 0.2em; display: block; margin-bottom: 12px; }
.svc-detail_title { font-family: var(--ff-mincho); font-size: 1.25rem; font-weight: 400; color: var(--text); margin-bottom: 14px; letter-spacing: 0.08em; }
.svc-detail_body > p { font-size: 0.9375rem; line-height: 2.1; margin-bottom: 18px; }

/* フロー（アイテム型） */
.flow_list { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; max-width: 900px; margin: 0 auto; }
.flow_item { text-align: center; padding: 24px 12px; position: relative; }
.flow_item::after { content: '→'; position: absolute; top: 34px; right: -6px; font-size: 0.6875rem; color: var(--kin); }
.flow_item:last-child::after { display: none; }
.flow_num { font-family: var(--ff-mincho); font-size: 0.75rem; color: var(--kin); letter-spacing: 0.15em; display: block; margin-bottom: 10px; }
.flow_item h3 { font-family: var(--ff-mincho); font-size: 0.8125rem; font-weight: 400; color: var(--text); margin-bottom: 6px; }
.flow_item p { font-size: 0.625rem; color: var(--muted); line-height: 1.7; }

/* 施工事例アーカイブ カテゴリタグ */
.wk-archive_cat { font-size: 0.5rem; letter-spacing: 0.15em; padding: 2px 10px; border: 1px solid var(--kin); color: var(--kin); display: inline-block; margin-bottom: 8px; }

/* 会社概要テーブル（table要素版） */
.tbl table { width: 100%; }
.tbl th, .tbl td { padding: 16px 0; border-bottom: 1px solid var(--border); font-size: 0.9375rem; text-align: left; vertical-align: top; }
.tbl th { width: 130px; font-weight: 500; color: var(--text); font-size: 0.75rem; letter-spacing: 0.08em; }
.tbl td { color: var(--body); }
.tbl td a { color: var(--kin); }
.tbl tr:last-child th, .tbl tr:last-child td { border-bottom: none; }

/* 企業理念（phil_grid + phil_num） */
.phil_grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }
.phil_num { font-family: var(--ff-mincho); font-size: 0.75rem; color: var(--kin); letter-spacing: 0.2em; display: block; margin-bottom: 14px; }

/* アクセス（access系） */
.access_wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 36px; align-items: start; }
.access_map iframe { display: block; }
.access_info { padding: 12px 0; }
.access_info h3 { font-family: var(--ff-mincho); font-size: 1rem; font-weight: 400; color: var(--text); margin-bottom: 12px; }
.access_info p { font-size: 0.875rem; margin-bottom: 8px; }
.access_info a { color: var(--kin); }

/* ニュース（拡張クラス） */
.news_list { max-width: 800px; margin: 0 auto; }
.news_item { display: flex; gap: 24px; padding: 28px 0; border-bottom: 1px solid var(--border); transition: opacity .3s ease; }
.news_item:first-child { padding-top: 0; }
.news_item:hover { opacity: 0.75; color: inherit; }
.news_item_img { width: 180px; flex-shrink: 0; overflow: hidden; aspect-ratio: 4/3; }
.news_item_img img { width: 100%; height: 100%; object-fit: cover; opacity: 0.9; }
.news_item_body { flex: 1; }
.news_item_meta { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.news_item_meta time { font-size: 0.625rem; color: var(--muted); }
.news_item_tag { font-size: 0.5rem; letter-spacing: 0.12em; padding: 2px 8px; border: 1px solid; }
.news_item_tag--seminar { border-color: var(--kin); color: var(--kin); }
.news_item_tag--blog { border-color: var(--muted); color: var(--muted); }
.news_item_body h3 { font-family: var(--ff-mincho); font-size: 0.9375rem; font-weight: 400; color: var(--text); line-height: 1.7; margin-bottom: 6px; }
.news_item_body p { font-size: 0.6875rem; color: var(--muted); line-height: 1.8; }

/* ニュースタブ */
.news-tabs { display: flex; gap: 0; justify-content: center; margin-bottom: 40px; }
.news-tab { background: none; border: 1px solid var(--border); padding: 8px 24px; font-family: var(--ff-gothic); font-size: 0.6875rem; letter-spacing: 0.12em; color: var(--muted); cursor: pointer; transition: all .3s ease; }
.news-tab:first-child { border-right: none; }
.news-tab:last-child { border-left: none; }
.news-tab.is-active, .news-tab:hover { background: var(--kin); color: var(--bg); border-color: var(--kin); }

/* お問い合わせレイアウト（拡張） */
.ct-layout_form { min-width: 0; }
.ct-layout_side { min-width: 0; }
.ct-side_info { margin-top: 28px; padding: 20px 18px; background: var(--bg2); border: 1px solid var(--border); }
.ct-side_info h3 { font-family: var(--ff-mincho); font-size: 0.875rem; font-weight: 400; color: var(--text); margin-bottom: 10px; }
.ct-side_info p { font-size: 0.75rem; line-height: 1.8; margin-bottom: 4px; }
.ct-side_info a { color: var(--kin); }

/* フォーム（拡張クラス） */
.form_label { display: block; font-size: 0.75rem; font-weight: 500; color: var(--text); margin-bottom: 6px; }
.form_req { color: var(--aka); font-size: 0.5625rem; margin-left: 4px; }
.form_input {
    width: 100%; padding: 10px 12px; font-family: var(--ff-gothic); font-size: 0.875rem;
    border: 1px solid var(--border); background: var(--bg2); color: var(--text);
    outline: none; transition: border-color .3s ease; -webkit-appearance: none; appearance: none; border-radius: 0;
}
.form_input:focus { border-color: var(--kin); }
.form_textarea { resize: vertical; }
.form_checkbox { display: flex; align-items: center; gap: 8px; cursor: pointer; font-size: 0.75rem; color: var(--body); }
.form_checkbox input[type="checkbox"] { width: 16px; height: 16px; flex-shrink: 0; }
.form_checkbox a { color: var(--kin); text-decoration: underline; }
.form_submit { margin-top: 24px; }

/* FAQ（サイドバー用） */
.ct-layout_side .faq { max-width: none; padding: 20px 18px; border: 1px solid var(--border); }
.ct-layout_side .faq_q { font-size: 0.75rem; padding: 12px 0; }
.ct-layout_side .faq_a p { font-size: 0.6875rem; }


/* ==========================================
   レスポンシブ
   ========================================== */
@media (max-width: 1024px) {
    :root { --sec-py: 80px; }
    .svc_grid { grid-template-columns: repeat(2, 1fr); }
    .svc-detail_inner, .svc-detail--rev .svc-detail_inner, .svc-detail--reverse .svc-detail_inner { grid-template-columns: 1fr; gap: 32px; direction: ltr; }
    .flow { grid-template-columns: 1fr; }
    .flow_step { text-align: left; padding: 14px 0 14px 44px; border-bottom: 1px solid var(--border); position: relative; }
    .flow_step::after { display: none; }
    .flow_no { position: absolute; left: 0; top: 18px; }
    .flow_list { grid-template-columns: 1fr; }
    .flow_item { text-align: left; padding: 14px 0 14px 44px; border-bottom: 1px solid var(--border); position: relative; }
    .flow_item::after { display: none; }
    .flow_item .flow_num { position: absolute; left: 0; top: 18px; }
    .wk-archive { grid-template-columns: 1fr; }
    .access_wrap { grid-template-columns: 1fr; gap: 20px; }
}

@media (max-width: 768px) {
    :root { --sec-py: 56px; --hd-h: 60px; }

    .hd_burger { display: block; }
    .hd_nav {
        position: fixed; top: 0; right: -100%; width: 80%; max-width: 300px; height: 100vh;
        background: var(--bg2); flex-direction: column; align-items: stretch;
        padding: 72px 24px 32px; transition: right .4s ease; z-index: 1000;
        box-shadow: -6px 0 20px rgba(0,0,0,0.3); gap: 0;
    }
    .hd_nav.is-open { right: 0; }
    .hd_nav_list { flex-direction: column; gap: 0; margin-right: 0; margin-bottom: 20px; }
    .hd_nav_list li { border-bottom: 1px solid var(--border); }
    .hd_nav_list a { display: block; padding: 14px 0; }
    .hd_cta { display: block; text-align: center; }
    .hd_inner { padding: 0 16px; }

    .mv { grid-template-columns: 1fr; min-height: auto; }
    .mv_left { padding: calc(var(--hd-h) + 40px) 24px 40px; order: 2; }
    .mv_right { height: 50vh; min-height: 280px; order: 1; }
    .mv_title { font-size: 1.5rem; }
    .mv_actions { flex-direction: column; }
    .mv_counter { bottom: 16px; right: 16px; }

    .feat_inner { grid-template-columns: 1fr; }
    .feat_item { border-right: none; border-bottom: 1px solid var(--border); }
    .feat_item:last-child { border-bottom: none; }

    .block_inner, .block--reverse .block_inner { grid-template-columns: 1fr; gap: 28px; direction: ltr; }
    .block_img img { height: 240px; }
    .block_img::after { display: none; }

    .nums_inner { grid-template-columns: 1fr; }
    .nums_item { border-right: none; border-bottom: 1px solid var(--border); padding: 20px 16px; }
    .nums_item:last-child { border-bottom: none; }
    .nums_val { font-size: 2.25rem; }

    .svc_grid { grid-template-columns: 1fr; }
    .wk_grid { grid-template-columns: repeat(2, 1fr); }

    .home-cta h2 { font-size: 1.0625rem; }
    .home-cta_btns { flex-direction: column; align-items: center; }

    .ph { height: 36vh; min-height: 240px; }
    .ph_title { font-size: 1.5rem; }

    .tbl_row { flex-direction: column; gap: 4px; }
    .tbl_row dt { width: auto; }
    .phil { grid-template-columns: 1fr; }
    .phil_grid { grid-template-columns: 1fr; }
    .vals { grid-template-columns: 1fr; }
    .vals_grid { grid-template-columns: 1fr; }
    .acc { grid-template-columns: 1fr; gap: 20px; }
    .svc-detail_img img { height: 240px; }
    .ct-layout { grid-template-columns: 1fr; gap: 24px; }
    .form_row { grid-template-columns: 1fr; gap: 0; }

    .news_item { flex-direction: column; gap: 10px; }
    .news_img { width: 100%; }
    .news_item_img { width: 100%; }
    .p-hero_title { font-size: 1.5rem; }

    .ft_top { flex-direction: column; gap: 24px; }
    .ft_nav ul { flex-wrap: wrap; gap: 8px 14px; }
    .sec_title { font-size: 1.25rem; }
}

/* WordPress Single Pages */
.single-works, .single-news { max-width: 800px; margin: 0 auto; }
.single-works_img, .single-news_img { margin-bottom: 2rem; border-radius: 12px; overflow: hidden; }
.single-works_img img, .single-news_img img { width: 100%; height: auto; display: block; }
.single-works_cats { margin-bottom: 1rem; display: flex; gap: 8px; }
.single-works_title, .single-news_title { font-family: 'Noto Serif JP', serif; font-size: 1.75rem; margin-bottom: 1.5rem; }
.single-news_meta { display: flex; align-items: center; gap: 12px; margin-bottom: 1rem; }
.single-news_meta time { color: #999; font-size: 0.9rem; }
.single-works_content, .single-news_content { line-height: 1.9; margin-bottom: 3rem; }
.single-works_content p, .single-news_content p { margin-bottom: 1.5em; }
.single-works_content img, .single-news_content img { max-width: 100%; height: auto; border-radius: 8px; }
.single-works_back, .single-news_back { padding-top: 2rem; border-top: 1px solid rgba(255,255,255,0.1); }
.entry-content { line-height: 1.9; }
.entry-content img { max-width: 100%; height: auto; }
.aligncenter { display: block; margin: 0 auto; }
.alignleft { float: left; margin: 0 1.5em 1em 0; }
.alignright { float: right; margin: 0 0 1em 1.5em; }

/* ========== Contact Form 7 ========== */
.wpcf7 { max-width: 100%; }
.wpcf7-form p { margin-bottom: 18px; font-size: 0.75rem; font-weight: 500; color: var(--text); }
.wpcf7-form p label { display: block; margin-bottom: 6px; }
.wpcf7-form .wpcf7-form-control-wrap { display: block; margin-top: 6px; }

/* テキスト・メール・電話・URL入力 */
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form input[type="url"],
.wpcf7-form input[type="number"],
.wpcf7-form select,
.wpcf7-form textarea {
    width: 100%;
    padding: 10px 12px;
    font-family: var(--ff-gothic);
    font-size: 0.875rem;
    border: 1px solid var(--border);
    background: var(--bg2);
    color: var(--text);
    outline: none;
    transition: border-color .3s ease;
    -webkit-appearance: none;
    appearance: none;
    border-radius: 0;
}
.wpcf7-form input[type="text"]:focus,
.wpcf7-form input[type="email"]:focus,
.wpcf7-form input[type="tel"]:focus,
.wpcf7-form input[type="url"]:focus,
.wpcf7-form select:focus,
.wpcf7-form textarea:focus {
    border-color: var(--kin);
}
.wpcf7-form textarea { resize: vertical; min-height: 150px; }
.wpcf7-form select { cursor: pointer; }

/* チェックボックス・ラジオ */
.wpcf7-form .wpcf7-checkbox,
.wpcf7-form .wpcf7-acceptance { display: flex; align-items: center; gap: 8px; font-size: 0.75rem; color: var(--body); }
.wpcf7-form .wpcf7-checkbox input[type="checkbox"],
.wpcf7-form .wpcf7-acceptance input[type="checkbox"] { width: 16px; height: 16px; flex-shrink: 0; }
.wpcf7-form .wpcf7-list-item { margin: 0; }

/* 送信ボタン */
.wpcf7-form input[type="submit"],
.wpcf7-form .wpcf7-submit {
    display: inline-block;
    padding: 14px 48px;
    font-family: var(--ff-gothic);
    font-size: 0.875rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    background: var(--kin);
    color: var(--bg);
    border: none;
    cursor: pointer;
    transition: background .3s ease;
}
.wpcf7-form input[type="submit"]:hover,
.wpcf7-form .wpcf7-submit:hover { background: var(--kin-dark); }

/* バリデーションエラー */
.wpcf7-not-valid { border-color: var(--aka) !important; }
.wpcf7-not-valid-tip { color: var(--aka); font-size: 0.5625rem; margin-top: 4px; display: block; }

/* レスポンスメッセージ */
.wpcf7-response-output {
    margin: 24px 0 0 !important;
    padding: 12px 16px !important;
    font-size: 0.8125rem;
    border-radius: 0;
}
.wpcf7-mail-sent-ok,
.wpcf7 form.sent .wpcf7-response-output {
    border-color: var(--kin) !important;
    color: var(--kin);
    background: rgba(201, 169, 110, 0.08);
}
.wpcf7-validation-errors,
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output {
    border-color: var(--aka) !important;
    color: var(--aka);
    background: rgba(192, 57, 43, 0.08);
}

/* スピナー */
.wpcf7-spinner { display: none; }

/* 必須マーク用（CF7フォーム内で手動追加する場合） */
.cf7-req { color: var(--aka); font-size: 0.5625rem; margin-left: 4px; }

@media (max-width: 600px) {
    .wpcf7-form input[type="submit"],
    .wpcf7-form .wpcf7-submit { width: 100%; text-align: center; }
}
