/*
Theme Name: Maekawa Kazuhito
Author: KAZUHITO MAEKAWA
Description: 前川多仁 オフィシャルサイト用WordPressテーマ
Version: 2.0.0
Text Domain: maekawa
*/

/* ================================================
   CSS カスタムプロパティ
================================================ */
:root {
    --color-primary: #e81919;
    --color-footer:  #da1616;
    --color-dark:    #1b1d21;
    --color-white:   #ffffff;
    --color-overlay: rgba(27,29,33,0.82);
    --font-serif:    "Noto Serif JP", "游明朝", YuMincho, serif;
    --font-sans:     "Noto Sans JP", sans-serif;
    --max-width:     1170px;
    --ease:          0.3s ease;
}

/* ================================================
   Reset / Base
================================================ */
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:smooth; }
body {
    background: var(--color-primary);
    color: var(--color-white);
    font-family: var(--font-sans);
    font-size: 16px;
    line-height: 1.8;
    -webkit-font-smoothing: antialiased;
}
img { max-width:100%; height:auto; display:block; }
a   { color:inherit; text-decoration:none; transition:opacity var(--ease); }
a:hover { opacity:.75; }
ul  { list-style:none; padding:0; margin:0; }
button { cursor:pointer; border:none; background:none; font-family:inherit; }

/* ================================================
   Layout
================================================ */
.section__inner {
    max-width: var(--max-width);
    margin: 0 auto;
    padding: 0 30px;
}
.section { padding: 80px 0; }

/* ================================================
   Header（スクロールでフェード）
================================================ */
.site-header {
    position: fixed;
    top:0; left:0; right:0;
    z-index: 100;
    background: var(--color-overlay);
    transition: background var(--ease), padding var(--ease);
    padding: 10px 0;
}
.site-header.is-top { background: transparent; }

.site-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: var(--max-width);
    margin: 0 auto;
    padding: 0 60px;
}
.site-title {
    font-family: var(--font-serif);
    font-size: 1.05rem;
    letter-spacing: .05em;
    color: var(--color-white);
    white-space: nowrap;
}
.site-title small {
    display: block;
    font-size: .6rem;
    letter-spacing: .15em;
    font-family: var(--font-sans);
    margin-top: 2px;
    opacity: .8;
}
.global-nav ul { display:flex; gap:1.8rem; align-items:center; }
.global-nav a {
    font-size: .75rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--color-white);
    padding: 3px 0;
    border-bottom: 1px solid transparent;
    transition: border-color var(--ease);
}
.global-nav a:hover,
.global-nav a.current { border-bottom-color:var(--color-white); opacity:1; }
.lang-switcher { display:flex; gap:.4rem; font-size:.7rem; margin-left:1.5rem; }
.lang-switcher a {
    padding: 2px 6px;
    border: 1px solid rgba(255,255,255,.4);
    border-radius: 2px;
    transition: border-color var(--ease), background var(--ease);
}
.lang-switcher a:hover,
.lang-switcher a.active { border-color:var(--color-white); background:rgba(255,255,255,.1); opacity:1; }
.nav-toggle { display:none; padding:8px; }
.nav-toggle span { display:block; width:26px; height:2px; background:var(--color-white); margin:5px 0; transition:transform var(--ease),opacity var(--ease); }

/* ================================================
   Hero / スライドショー
================================================ */
.hero {
    position: relative;
    width: 100%;
    height: 70vh;
    min-height: 500px;
    background: var(--color-primary);
    overflow: hidden;
}
.hero__slider { position:absolute; inset:0; }
.hero__slide {
    position: absolute; inset:0;
    opacity: 0;
    transition: opacity 1.2s ease-in-out;
    background-size: cover;
    background-position: center;
}
.hero__slide.is-active { opacity:1; }

/* スライド個別オーバーレイ */
.hero__slide-overlay {
    position: absolute; inset:0;
    display: flex; flex-direction:column;
    align-items:center; justify-content:flex-end;
    padding-bottom: 64px;
    background: linear-gradient(to top, rgba(0,0,0,.45) 0%, transparent 55%);
    z-index: 1;
}
.hero__slide-title {
    font-family: var(--font-serif);
    font-size: clamp(.9rem,1.8vw,1.25rem);
    color: var(--color-white);
    letter-spacing: .12em;
    text-shadow: 0 1px 8px rgba(0,0,0,.5);
    margin-bottom: .25rem;
}
.hero__slide-body {
    font-size: clamp(.68rem,1.1vw,.82rem);
    color: rgba(255,255,255,.85);
    letter-spacing: .08em;
    text-shadow: 0 1px 6px rgba(0,0,0,.5);
}

/* メインキャプション（全スライド共通・最前面） */
.hero__caption {
    position: absolute; inset:0;
    display: flex; flex-direction:column;
    align-items:center; justify-content:center;
    text-align:center; z-index:3;
    pointer-events:none;
}
.hero__title {
    font-family: var(--font-serif);
    font-size: clamp(2.4rem,6vw,4.8rem);
    font-weight: 400;
    letter-spacing: .15em;
    color: var(--color-white);
    text-shadow: 0 2px 24px rgba(0,0,0,.4);
    animation: fadeUp 1.2s ease both .3s;
}
.hero__subtitle {
    font-size: clamp(.75rem,1.4vw,.95rem);
    letter-spacing: .3em;
    color: var(--color-white);
    margin-top: .6rem;
    text-shadow: 0 1px 10px rgba(0,0,0,.4);
    animation: fadeUp 1.2s ease both .6s;
}
.hero__scroll {
    position: absolute; bottom:28px; left:50%;
    transform: translateX(-50%);
    z-index:3;
    display:flex; flex-direction:column; align-items:center; gap:6px;
    font-size:.58rem; letter-spacing:.2em;
    color:rgba(255,255,255,.65);
    animation: bounce 2s infinite;
}
.hero__scroll::after {
    content:""; display:block;
    width:1px; height:38px;
    background:rgba(255,255,255,.45);
}

/* ================================================
   お知らせセクション
================================================ */
.news-section {
    padding: 70px 0 60px;
    background: var(--color-primary);
    border-top: 1px solid rgba(255,255,255,.12);
}
.news-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 1.5rem;
}
.section-heading {
    font-family: var(--font-serif);
    font-size: clamp(1.3rem,2.5vw,1.9rem);
    font-weight: 400;
    letter-spacing: .1em;
    color: var(--color-white);
    padding-bottom: .75rem;
    border-bottom: 1px solid rgba(255,255,255,.25);
    flex:1;
}
.news-archive-link {
    font-size: .75rem;
    letter-spacing: .08em;
    color: rgba(255,255,255,.7);
    border-bottom: 1px solid rgba(255,255,255,.3);
    margin-left: 2rem;
    white-space: nowrap;
    transition: color var(--ease), border-color var(--ease);
}
.news-archive-link:hover { color:var(--color-white); border-color:var(--color-white); opacity:1; }

/* お知らせリスト */
.news-list { border-top:1px solid rgba(255,255,255,.12); }
.news-item  { border-bottom:1px solid rgba(255,255,255,.12); }
.news-item__btn {
    display: flex;
    align-items: center;
    gap: 1rem;
    width: 100%;
    padding: 1.1rem 0;
    color: var(--color-white);
    text-align: left;
    transition: opacity var(--ease);
}
.news-item__btn:hover { opacity:.72; }
.news-item__date {
    font-size: .8rem;
    letter-spacing: .06em;
    opacity: .65;
    white-space: nowrap;
    flex-shrink: 0;
    min-width: 6em;
}
.news-item__cat {
    font-size: .68rem;
    letter-spacing: .08em;
    padding: 2px 8px;
    border: 1px solid rgba(255,255,255,.35);
    border-radius: 2px;
    white-space: nowrap;
    flex-shrink: 0;
}
.news-item__title {
    flex: 1;
    font-size: .9rem;
    line-height: 1.6;
}
.news-item__arrow {
    font-size: .85rem;
    opacity: .5;
    flex-shrink: 0;
    transition: transform var(--ease), opacity var(--ease);
}
.news-item__btn:hover .news-item__arrow { transform:translateX(4px); opacity:1; }
.news-empty { font-size:.9rem; opacity:.6; padding:1rem 0; }

/* ページネーション */
.news-pagination { margin-top:2.5rem; text-align:center; }
.news-pagination .page-numbers {
    display:inline-block; padding:6px 12px;
    border:1px solid rgba(255,255,255,.3);
    margin:0 3px; font-size:.8rem;
    transition:background var(--ease);
}
.news-pagination .page-numbers.current,
.news-pagination .page-numbers:hover {
    background:rgba(255,255,255,.15);
    border-color:var(--color-white); opacity:1;
}

/* ================================================
   モーダル
================================================ */
.news-modal {
    position: fixed; inset:0;
    z-index: 500;
    display: flex; align-items:center; justify-content:center;
}
.news-modal[hidden] { display:none; }
.news-modal__backdrop {
    position: absolute; inset:0;
    background: rgba(0,0,0,.72);
    cursor: pointer;
}
.news-modal__panel {
    position: relative;
    background: #1f2227;
    border: 1px solid rgba(255,255,255,.1);
    border-radius: 3px;
    width: min(660px, 92vw);
    max-height: 85vh;
    overflow-y: auto;
    padding: 48px 48px 44px;
    z-index: 1;
    animation: modalIn .25s ease both;
}
.news-modal__close {
    position: absolute; top:14px; right:18px;
    font-size: 1.5rem;
    color: rgba(255,255,255,.55);
    line-height:1;
    transition: color var(--ease);
}
.news-modal__close:hover { color:var(--color-white); }
.news-modal__loading { color:rgba(255,255,255,.5); font-size:.85rem; text-align:center; padding:2rem 0; }

/* モーダル内コンテンツ */
.modal-date-cat { display:flex; align-items:center; gap:.75rem; margin-bottom:1rem; }
.modal-date {
    font-size: .78rem; letter-spacing:.06em; opacity:.6;
}
.modal-cat {
    font-size: .68rem; letter-spacing:.08em;
    padding: 2px 8px;
    border: 1px solid rgba(255,255,255,.3);
    border-radius: 2px;
}
.modal-title {
    font-family: var(--font-serif);
    font-size: clamp(1.1rem,2.5vw,1.5rem);
    font-weight: 400;
    line-height: 1.5;
    margin-bottom: 1.5rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid rgba(255,255,255,.15);
}
.modal-body { font-size:.88rem; line-height:1.9; }
.modal-body p   { margin-bottom:1em; }
.modal-body img { width:100%; height:auto; margin-bottom:1.25rem; border-radius:2px; }
.modal-body a   { border-bottom:1px solid rgba(255,255,255,.4); }
.modal-body a:hover { border-bottom-color:var(--color-white); opacity:1; }

/* ================================================
   CV セクション
================================================ */
.site-main {
    background: var(--color-primary);
    padding: 70px 0 90px;
    border-top: 1px solid rgba(255,255,255,.1);
}
.cv-wrap {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 64px;
    align-items: start;
}
.cv-heading-small {
    font-size: .78rem; font-weight:700;
    letter-spacing: .25em; text-transform:uppercase;
    opacity: .55; margin-bottom:.8rem;
}
.cv-name {
    font-family: var(--font-serif);
    font-size: clamp(1.6rem,3vw,2.2rem);
    font-weight: 700;
    color: var(--color-white);
    line-height: 1.4; margin-bottom:.25rem;
}
.cv-name-kana { font-size:.65em; font-weight:400; letter-spacing:.08em; opacity:.8; }
.cv-job { font-size:.9rem; font-weight:700; margin-bottom:2.5rem; letter-spacing:.05em; }
.cv-heading {
    font-size: .95rem; font-weight:700;
    color: var(--color-white);
    margin: 2rem 0 .65rem;
    padding-bottom: .4rem;
    border-bottom: 1px solid rgba(255,255,255,.2);
    letter-spacing: .06em;
}
/* WP追記行 */
.cv-addition-row {
    display: flex; gap:.75rem;
    padding: .45rem 0;
    border-bottom: 1px solid rgba(255,255,255,.1);
    font-size: .88rem; line-height:1.7;
    align-items: baseline;
    border-left: 2px solid var(--color-primary);   /* 静的と区別しない（同色） */
}
.cv-addition { margin-bottom:.75rem; font-size:.9rem; line-height:1.85; }
.cv-addition p { margin-bottom:.5em; }

/* リスト共通 */
.cv-list { margin:0 0 .25rem; }
.cv-list li {
    display: flex; gap:.75rem;
    padding: .45rem 0;
    border-bottom: 1px solid rgba(255,255,255,.08);
    font-size: .88rem; line-height:1.7;
    align-items: baseline;
}
.cv-list li:last-child { border-bottom:none; }
.cv-year {
    font-weight: 700; white-space:nowrap;
    flex-shrink:0; min-width:7em;
}
.cv-year--label { min-width:4em; }
.cv-desc { flex:1; }
.cv-award { display:inline-block; margin-left:.5em; font-weight:700; }
.cv-list--plain li { display:block; font-size:.95rem; padding:.35rem 0; border-bottom:none; line-height:1.9; }

/* 研究著作 */
.cv-list--research li.cv-research__item { display:block; padding:1rem 0; border-bottom:1px solid rgba(255,255,255,.1); }
.cv-list--research li.cv-research__item:last-child { border-bottom:none; }
.cv-research__label { display:block; font-weight:700; font-size:.82rem; margin-bottom:.3rem; opacity:.8; }
.cv-research__body  { font-size:.88rem; line-height:1.8; }
.cv-research__sub   { padding-left:1rem; margin-top:.4rem; }
.cv-research__sub li { font-size:.88rem; line-height:1.8; padding:.2rem 0; display:block; border-bottom:none; }

/* 写真 */
.cv-photo { position:sticky; top:80px; text-align:center; }
.cv-photo__img { width:100%; max-width:400px; height:auto; border-radius:2px; margin:0 auto; }
.cv-photo__link { margin-top:1.2rem; }

/* ボタン */
.btn-cv {
    display: inline-block;
    padding: .55rem 1.4rem;
    border: 1px solid var(--color-white);
    font-size: .75rem; letter-spacing:.1em;
    color: var(--color-white);
    transition: background var(--ease), color var(--ease);
}
.btn-cv:hover { background:var(--color-white); color:var(--color-primary); opacity:1; }

/* ページヘッダー（下層ページ） */
.page-hero { padding:140px 0 50px; text-align:center; }
.page-hero__title   { font-family:var(--font-serif); font-size:clamp(1.8rem,4vw,3rem); font-weight:400; letter-spacing:.15em; }
.page-hero__subtitle{ font-size:.78rem; letter-spacing:.2em; opacity:.6; margin-top:.4rem; }

/* ================================================
   Footer
================================================ */
.site-footer {
    background: var(--color-footer);
    padding: 40px 0 28px;
    text-align: center;
}
.site-footer p { font-size:.7rem; line-height:2; color:rgba(255,255,255,.8); letter-spacing:.04em; }

/* ================================================
   アニメーション
================================================ */
@keyframes fadeUp {
    from { opacity:0; transform:translateY(20px); }
    to   { opacity:1; transform:translateY(0); }
}
@keyframes bounce {
    0%,100% { transform:translateX(-50%) translateY(0); }
    50%      { transform:translateX(-50%) translateY(8px); }
}
@keyframes modalIn {
    from { opacity:0; transform:translateY(16px) scale(.98); }
    to   { opacity:1; transform:translateY(0)    scale(1); }
}
.fade-in { opacity:0; transform:translateY(20px); transition:opacity .7s ease, transform .7s ease; }
.fade-in.visible { opacity:1; transform:translateY(0); }

/* ================================================
   Responsive
================================================ */
@media (max-width:900px) {
    .site-header__inner { padding:0 20px; }
    .global-nav { display:none; }
    .global-nav.is-open {
        display:flex; position:fixed; inset:0;
        background:rgba(27,29,33,.97);
        flex-direction:column; align-items:center; justify-content:center;
        z-index:200;
    }
    .global-nav.is-open ul { flex-direction:column; gap:1.5rem; font-size:1.1rem; }
    .nav-toggle { display:block; z-index:201; }
    .cv-wrap    { grid-template-columns:1fr; gap:40px; }
    .cv-photo   { position:static; }
}
@media (max-width:640px) {
    .section__inner { padding:0 16px; }
    .section { padding:50px 0; }
    .news-section { padding:50px 0 40px; }
    .news-item__btn { gap:.6rem; flex-wrap:wrap; }
    .news-modal__panel { padding:32px 22px 28px; }
    .cv-wrap { gap:28px; }
    .site-main { padding:50px 0 60px; }
}
