/* 共通デザイン。人物本文とDreamweaver編集領域はHTMLで管理します。 */
:root { --ink:#243442; --muted:#526575; --accent:#235b86; --paper:#f3f7fa; --line:#d4dfe8; }
* { box-sizing:border-box; }
html { scroll-padding-top:24px; }
body { background:var(--paper); color:var(--ink); font-family:"Yu Gothic", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif; font-size:calc(16px * var(--text-scale, 1)); line-height:1.8; border-top:5px solid var(--accent); }
p, li, span, div { line-height:inherit; }
a:link, a:visited, .data .data_txt a:link, .data .data_txt a:visited { color:#1e4f76; text-underline-offset:4px; }
a:hover, .data .data_txt a:hover { color:#163952; }
a:focus-visible, button:focus-visible, input:focus-visible { outline:3px solid #155eab; outline-offset:4px; }
img { max-width:100%; height:auto; vertical-align:middle; }
[hidden] { display:none !important; }
.page { width:min(1040px, 100%); padding:0 40px; }
.site-header { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:28px 0; border-bottom:1px solid var(--line); }
.brand { display:block; text-decoration:none; }
.brand span { display:block; font-size:calc(13px * var(--text-scale, 1)); letter-spacing:.12em; color:var(--muted); }
.brand strong { display:block; font-family:"Yu Mincho", "Hiragino Mincho ProN", serif; font-size:calc(32px * var(--text-scale, 1)); letter-spacing:.16em; line-height:1.5; color:var(--accent); }
.site-header nav { display:flex; gap:8px; flex-wrap:wrap; }
.site-header nav a { padding:10px 16px; border-radius:4px; text-decoration:none; font-weight:bold; }
.site-header nav a[aria-current="page"] { background:#e0ebf4; }
.contents { width:100%; padding:36px 0 52px; background:transparent; }
.footer { width:100%; border-top:1px solid var(--line); color:var(--muted); padding:24px 0; font-size:calc(12px * var(--text-scale, 1)); line-height:1.8; }
.skip-link { position:absolute; top:-100px; left:16px; z-index:10; padding:12px 20px; background:white; }
.skip-link:focus { top:12px; outline:3px solid #155eab; }
h1, h2 { font-family:"Yu Mincho", "Hiragino Mincho ProN", serif; }
h1 { font-size:calc(36px * var(--text-scale, 1)); line-height:1.5; font-weight:bold; }
h2 { font-size:calc(25px * var(--text-scale, 1)); line-height:1.6; font-weight:bold; }
.eyebrow { color:var(--accent); font-size:calc(13px * var(--text-scale, 1)); letter-spacing:.1em; margin-bottom:12px; font-weight:bold; }
.lead { margin:12px 0 28px; color:var(--muted); }
.home-hero { display:grid; grid-template-columns:1.1fr 1fr; align-items:center; gap:42px; max-width:1040px; padding:18px 0 44px; }
.home-hero h1 { font-size:calc(clamp(30px,4vw,46px) * var(--text-scale, 1)); line-height:1.6; margin-bottom:18px; letter-spacing:.04em; }
.home-hero h1 span { white-space:nowrap; }
.home-hero img { width:100%; border-radius:6px; mix-blend-mode:multiply; }
.primary-link:link, .primary-link:visited { display:inline-flex; align-items:center; gap:32px; padding:14px 24px; margin-top:26px; background:var(--accent); color:white; text-decoration:none; border-radius:4px; font-weight:bold; }
.primary-link:hover { background:#194568; }
.home-categories { max-width:1040px; border-top:1px solid var(--line); padding:28px 0; }
.home-categories .category-nav { gap:8px; }
.home-categories .category-nav a { padding-inline:10px; }
.category-nav { display:flex; flex-wrap:wrap; gap:10px; margin:20px 0 32px; }
.category-nav a { padding:10px 18px; background:#ffffff; border:1px solid #b1c3d2; border-radius:4px; text-decoration:none; font-size:calc(15px * var(--text-scale, 1)); }
.category-nav a:hover { background:#e0ebf4; border-color:var(--accent); }
.introduction { max-width:1040px; padding:28px 0; border-top:1px solid var(--line); }
.introduction p { margin-top:20px; line-height:2; }
.contact { display:flex; align-items:center; gap:20px; margin-top:28px; padding-top:28px; border-top:1px solid var(--line); }
.contact p { font-size:calc(14px * var(--text-scale, 1)); }
.contents .bread_nav { width:auto; font-size:calc(13px * var(--text-scale, 1)); line-height:1.9; margin:0 0 28px; }
.search-panel { background:#e6eef5; padding:24px; border-radius:6px; margin:28px 0; }
.search-panel label { display:block; font-weight:bold; margin-bottom:10px; }
.search-row { display:flex; gap:10px; max-width:660px; }
.search-row input { flex:1; min-width:0; width:100%; background:white; border:1px solid #7f95a8; border-radius:4px; padding:12px 16px; font:inherit; color:var(--ink); }
button { cursor:pointer; padding:10px 16px; min-height:48px; border:1px solid #7f95a8; border-radius:4px; background:white; color:#1e4f76; font:inherit; }
button:hover { background:#edf4fa; }
#search-help { font-size:calc(13px * var(--text-scale, 1)); color:var(--muted); margin-top:8px; }
#search-status { font-size:calc(14px * var(--text-scale, 1)); margin-top:12px; }
#no-results { padding:24px; border:1px solid var(--line); background:white; }
.person-section { margin:36px 0 56px; scroll-margin-top:24px; }
.person-section h2 { border-bottom:1px solid var(--line); border-left:4px solid var(--accent); padding:0 0 12px 16px; display:flex; align-items:baseline; gap:16px; }
.category-count { font-family:Meiryo,sans-serif; color:var(--muted); font-size:calc(14px * var(--text-scale, 1)); white-space:nowrap; font-weight:normal; }
.person-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; margin-top:24px; }
.person-card { min-width:0; }
.person-card a { display:flex; flex-direction:column; align-items:center; height:100%; text-decoration:none; padding:24px 16px; background:#ffffff; border:1px solid var(--line); border-radius:6px; }
.person-card a:hover { border-color:var(--accent); background:#fff; box-shadow:0 4px 14px #173e610d; }
.person-card img { width:150px; height:156px; object-fit:contain; margin-bottom:18px; mix-blend-mode:multiply; }
.person-name { font-family:"Yu Mincho",serif; font-size:calc(22px * var(--text-scale, 1)); font-weight:bold; text-decoration:underline; text-underline-offset:5px; text-align:center; }
.person-reading { color:var(--muted); font-size:calc(12px * var(--text-scale, 1)); margin-top:6px; text-align:center; }
.person-years { color:var(--ink); font-size:calc(14px * var(--text-scale, 1)); margin-top:6px; }
.section-top { display:inline-block; margin-top:20px; padding:8px 0; font-size:calc(13px * var(--text-scale, 1)); }
.profile .contents { max-width:920px; margin:auto; }
.profile .data h1 { background:none; height:auto; padding:16px 0 10px; text-indent:0; font-size:calc(38px * var(--text-scale, 1)); line-height:1.6; text-align:center; }
.profile .data h1 a { background:none; height:auto; padding:0; text-indent:0; font:inherit; color:var(--accent); }
.profile .data h2 { width:auto; max-width:760px; height:auto; padding:8px 0 28px; font-size:calc(23px * var(--text-scale, 1)); line-height:1.8; border-bottom:1px solid var(--line); margin:0 auto 32px; }
.data .data_txt { width:100%; display:flow-root; }
.data .data_img { float:none; width:280px; padding:24px; margin:0 auto 32px; border:1px solid var(--line); border-radius:6px; background:#ffffff; line-height:1.9; }
.data .data_img img { max-height:250px; object-fit:contain; margin-bottom:16px; mix-blend-mode:multiply; }
.data .data_txt p { max-width:740px; padding:0; margin:0 auto 24px; font-size:calc(17px * var(--text-scale, 1)); line-height:2.1; overflow-wrap:anywhere; }
.data .data_txt ruby, .data .data_txt rb { font-size:inherit; line-height:inherit; }
.data .data_txt rt { font-size:.6em; line-height:1; }
.data .data_txt ul { max-width:740px; margin:32px auto; padding:20px; background:#e6eef5; border-radius:4px; }
.data .data_txt li { list-style:none; text-indent:0; padding:0; line-height:1.9; }
.profile-back { margin-top:32px; }
.profile-back a { display:inline-block; padding:12px 18px; border:1px solid #b1c3d2; border-radius:4px; }
.page .contents .contents_totop { width:100%; margin-top:28px; text-align:right; }
.contents_totop a { display:inline-block; padding:10px 0; font-size:calc(13px * var(--text-scale, 1)); }
@media (max-width:760px) {
 .page { padding:0 22px; }
 .site-header { padding:20px 0; gap:12px; }
 .brand strong { font-size:calc(26px * var(--text-scale, 1)); }
 .site-header nav a { padding:10px; font-size:calc(14px * var(--text-scale, 1)); }
 .home-hero { gap:24px; }
 .person-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
 .profile .data h1 { font-size:calc(32px * var(--text-scale, 1)); }
}
@media (max-width:520px) {
 .page { padding:0 18px; }
 .site-header { align-items:flex-start; flex-direction:column; gap:12px; }
 .site-header nav { width:100%; border-top:1px solid var(--line); padding-top:10px; }
 .site-header nav a { flex:1; text-align:center; }
 .contents { padding-top:26px; }
 .home-hero { grid-template-columns:1fr; gap:24px; }
 .home-hero img { max-height:240px; object-fit:cover; object-position:top; }
 h1 { font-size:calc(30px * var(--text-scale, 1)); }
 h2, .person-section h2 { font-size:calc(22px * var(--text-scale, 1)); }
 .category-nav { gap:8px; }
 .category-nav a { padding:10px 12px; font-size:calc(14px * var(--text-scale, 1)); }
 .person-grid { grid-template-columns:1fr; }
 .person-card a { padding:24px; }
 .person-card img { width:160px; height:160px; }
 .search-panel { padding:18px; }
 .search-row input { padding:10px; }
 .search-row button { padding:10px; }
 .profile .data h1 { font-size:calc(30px * var(--text-scale, 1)); }
 .profile .data h2 { font-size:calc(20px * var(--text-scale, 1)); }
 .data .data_img { max-width:100%; }
 .data .data_txt p { font-size:calc(16px * var(--text-scale, 1)); }
 .contact { align-items:flex-start; gap:14px; }
 .contact img { min-width:48px; }
}
@media print {
 body { background:white; border:0; }
 .page { width:100%; padding:0; }
 .site-header nav, .skip-link, .search-panel, .category-nav, .section-top, .contents_totop, .profile-back { display:none; }
 .person-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .person-card, .data_img { break-inside:avoid; }
}

/* 文字サイズ：PCは従来の倍率、スマートフォンは1段階小さい倍率を使用。 */
:root { --text-scale:1; }
:root[data-text-size="medium"] { --text-scale:1.2; }
:root[data-text-size="large"] { --text-scale:1.4; }
@media (max-width:760px) {
 :root { --text-scale:.8; }
 :root[data-text-size="medium"] { --text-scale:1; }
 :root[data-text-size="large"] { --text-scale:1.2; }
}
.reading-tools { display:flex; justify-content:flex-end; align-items:center; flex-wrap:wrap; gap:8px; padding:14px 0 0; }
.reading-tools span { font-size:14px; margin-right:4px; }
.reading-tools button { min-width:38px; min-height:38px; padding:4px 9px; font-size:15px; }
.reading-tools button[aria-pressed="true"] { background:var(--accent); color:white; border-color:var(--accent); font-weight:bold; box-shadow:inset 0 0 0 2px var(--paper); }
.reading-tools + .contents { padding-top:18px; }
@media print { .reading-tools { display:none; } }

/* 提供画像を縦横比そのままで表示。小画面でも切り抜きません。 */
.hero-portraits { min-width:0; }
.home-hero .hero-portraits img { display:block; width:100%; height:auto; max-height:none; object-fit:contain; mix-blend-mode:normal; }

/* 全体の縦方向の余白を約40%縮小。文字の大きさと行間は維持します。 */
.site-header { padding-block:17px; }
.contents { padding-block:22px 31px; }
.reading-tools { padding-top:8px; }
.reading-tools + .contents { padding-top:18px; }
.home-hero { gap:25px; padding-block:11px 26px; }
.home-hero h1 { margin-bottom:11px; }
.home-categories { padding-block:17px; }
.category-nav { margin-block:12px 19px; }
.introduction { padding-block:17px; }
.introduction p { margin-top:12px; }
.contact { margin-top:17px; padding-top:17px; }
.person-section { margin-block:22px 34px; }
.person-grid { gap:12px; margin-top:14px; }
.person-card a { padding-block:14px; }
.profile-back { margin-top:19px; }
.data .data_txt p { margin-bottom:14px; }
.data .data_txt ul { margin-block:19px; padding:12px; }
@media (max-width:520px) {
 .hero-portraits { width:min(100%, 360px); margin-inline:auto; }
}
