/* ヨネンカン 共通スタイル */
:root{
  --ink:#17304A;--ink-soft:#5A6B7D;--paper:#F6F7F9;--card:#FFFFFF;
  --rule:#DDE3E9;--rule-strong:#C3CCD6;--plus:#1F7A5E;--minus:#BD4038;
  --amber:#E09B3D;--marker:#FFE27A;--focus:#2F6FB3;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --ink:#E8EDF2;--ink-soft:#9BAAB8;--paper:#131A21;--card:#1B242D;
  --rule:#2B3640;--rule-strong:#3C4A57;--marker:#7A6520;
  --plus:#4CAE8B;--minus:#E07C72;color-scheme:dark}}
:root[data-theme="dark"]{
  --ink:#E8EDF2;--ink-soft:#9BAAB8;--paper:#131A21;--card:#1B242D;
  --rule:#2B3640;--rule-strong:#3C4A57;--marker:#7A6520;
  --plus:#4CAE8B;--minus:#E07C72;color-scheme:dark}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);line-height:1.8;
  font-family:"Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;
  font-size:16px;-webkit-font-smoothing:antialiased;padding:0 16px 56px}
.wrap{max-width:960px;margin:0 auto}
a{color:var(--focus)}
a:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
img,svg{max-width:100%}

/* 共通ヘッダー */
.sitehead{max-width:960px;margin:0 auto;padding:14px 0 0;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.sitehead .brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);flex:none}
.sitehead .brand svg{width:22px;height:22px;display:block}
.sitehead .brand b{font-size:1rem;letter-spacing:.06em;font-weight:900}
.sitenav{display:flex;gap:16px;flex-wrap:wrap;font-size:.84rem;margin-left:auto}
.sitenav a{color:var(--ink-soft);text-decoration:none}
.sitenav a:hover{color:var(--ink);text-decoration:underline}

.crumb{font-size:.8rem;color:var(--ink-soft);padding-top:18px;margin:0 0 14px}
.crumb a{color:inherit}
h1{font-size:clamp(1.5rem,3.8vw,2.2rem);line-height:1.5;margin:0 0 12px}
.lede{color:var(--ink-soft);margin:0 0 6px;max-width:44em}
.updated{font-size:.76rem;color:var(--ink-soft);margin:0 0 30px}
h2{font-size:clamp(1.1rem,2.4vw,1.35rem);margin:40px 0 12px;
  padding-bottom:8px;border-bottom:2px solid var(--ink)}
h3{font-size:1rem;margin:24px 0 8px}
p{margin:0 0 14px;max-width:46em}

/* 数値カード */
.stats{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:18px 0 8px}
.stat{background:var(--card);border:1px solid var(--rule);border-radius:4px;padding:14px 16px}
.stat .k{font-size:.78rem;color:var(--ink-soft);margin:0 0 2px}
.stat .v{font-size:1.55rem;font-weight:700;font-variant-numeric:tabular-nums;margin:0;line-height:1.25}
.stat .v small{font-size:.58em;font-weight:500;color:var(--ink-soft);margin-left:3px}
.stat .n{font-size:.76rem;color:var(--ink-soft);margin:4px 0 0;line-height:1.6}
.is-plus{color:var(--plus)}
.is-minus{color:var(--minus)}
.hl{background:linear-gradient(transparent 62%,var(--marker) 62%);font-weight:700}

/* 表 */
.tscroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--rule);font-size:.92rem}
th,td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--rule);white-space:nowrap}
th{background:var(--paper);font-weight:700;font-size:.85rem}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td.rk{width:3em;color:var(--ink-soft);font-variant-numeric:tabular-nums}
tr:last-child td{border-bottom:0}
.src{font-size:.76rem;color:var(--ink-soft);margin:8px 0 0;line-height:1.7}

/* 切り替えボタン */
.tabs{display:flex;gap:8px;margin:18px 0 12px;flex-wrap:wrap}
.tabs button{font:inherit;font-size:.86rem;padding:7px 16px;border-radius:999px;cursor:pointer;
  border:1px solid var(--rule-strong);background:var(--card);color:var(--ink-soft)}
.tabs button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.tabs button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

.callout{background:var(--card);border-left:3px solid var(--ink);padding:14px 18px;margin:18px 0;font-size:.92rem}
.callout p{margin:0}
.callout p + p{margin-top:8px}

.disclaimer{font-size:.78rem;color:var(--ink-soft);background:var(--card);border:1px solid var(--rule);
  padding:14px 16px;border-radius:4px;margin-top:36px;line-height:1.7}
.back{display:inline-block;margin-top:26px;font-size:.92rem}

/* 都道府県リンクのグリッド */
.prefgrid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));margin:16px 0}
.prefgrid a{display:flex;justify-content:space-between;align-items:baseline;gap:6px;
  background:var(--card);border:1px solid var(--rule);border-radius:3px;
  padding:9px 12px;text-decoration:none;color:var(--ink);font-size:.9rem}
.prefgrid a:hover{border-color:var(--rule-strong)}
.prefgrid a b{font-weight:500}
.prefgrid a span{font-size:.82rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}

/* 棒 */
.bar{display:block;height:6px;background:var(--rule);border-radius:3px;overflow:hidden;margin:0}
.bar i{display:block;height:100%;background:var(--ink)}
.bar.amber i{background:var(--amber)}

/* 地域セレクター */
.region{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:var(--card);border:1px solid var(--rule);border-radius:4px;
  padding:13px 16px;margin:18px 0}
.region label{font-size:.86rem;color:var(--ink-soft);flex:none}
.region .f{display:inline-flex;border:1px solid var(--rule-strong);border-radius:3px;background:var(--paper)}
.region .f:focus-within{outline:2px solid var(--focus);outline-offset:1px}
.region select{border:0;background:transparent;color:var(--ink);font:inherit;
  font-size:.92rem;padding:8px 10px;cursor:pointer}
.region select:focus{outline:none}
.region .fig{font-size:.82rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;
  margin-left:auto;text-align:right}
@media (max-width:620px){.region .fig{margin-left:0;width:100%;text-align:left}}

/* 分布の帯 */
.dist{margin:14px 0 18px;padding:14px 16px 10px;background:var(--card);
  border:1px solid var(--rule);border-radius:4px;color:var(--ink)}
.dist svg{display:block;width:100%;height:auto}
.dist figcaption{font-size:.8rem;color:var(--ink-soft);margin-top:4px}

/* 学部系統の選択 */
.keito{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:var(--card);border:1px solid var(--rule);border-radius:4px;
  padding:13px 16px;margin:14px 0 18px}
.keito label{font-size:.86rem;color:var(--ink-soft);flex:none}
.keito .f{display:inline-flex;border:1px solid var(--rule-strong);border-radius:3px;background:var(--paper)}
.keito .f:focus-within{outline:2px solid var(--focus);outline-offset:1px}
.keito select{border:0;background:transparent;color:var(--ink);font:inherit;
  font-size:.92rem;padding:8px 10px;cursor:pointer}
.keito select:focus{outline:none}
.keito .note{font-size:.8rem;color:var(--ink-soft);flex:1 1 280px}
