*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
@media (prefers-reduced-motion: reduce){*{transition:none!important;scroll-behavior:auto!important}}

:root{
  --olive:#4f5d2f;--olive-dk:#3c4723;--olive-lt:#eef0e6;
  --gray:#5a5550;--gray-lt:#8f8a84;--line:#dcdad6;--bg2:#f4f4f2;--white:#ffffff;--ink:#2c2a27;
  --ff:'BIZ UDPGothic',sans-serif;--ff-num:'Barlow Semi Condensed','BIZ UDPGothic',sans-serif;
  --maxw:1100px;
}
body{font-family:var(--ff);color:var(--ink);background:var(--white);font-size:16px;line-height:1.95;-webkit-font-smoothing:antialiased}
:focus-visible{outline:2px solid var(--olive);outline-offset:3px}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}

/* ===== header：1段・文字リンク＋縦罫 ===== */
.hd{border-bottom:1px solid var(--line);position:relative;background:var(--white)}
.hd .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:62px}
.logo{font-weight:700;font-size:18px;color:var(--olive);letter-spacing:.03em;white-space:nowrap}
.hd-nav ul{display:flex;align-items:center}
.hd-nav li+li{border-left:1px solid var(--line)}
.hd-nav a{display:block;padding:2px 14px;font-size:14px;color:var(--gray);transition:color .2s}
.hd-nav li:last-child a{padding-right:0}
.hd-nav a:hover{color:var(--olive)}
.hd-nav a.is-active{color:var(--olive);font-weight:700;text-decoration:underline;text-underline-offset:7px;text-decoration-thickness:2px}
.burger{display:none;width:42px;height:42px;background:none;border:1px solid var(--line);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.burger span{display:block;width:18px;height:2px;background:var(--gray);transition:.3s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.drawer{display:none}

/* ===== 年表帯（共通） ===== */
.tl{display:grid;grid-template-columns:repeat(5,1fr);position:relative}
.tl::before{content:"";position:absolute;left:10%;right:10%;top:var(--dot-y);height:2px;background:var(--line)}
.tl li{position:relative;text-align:center}
.tl a{display:block;padding:0 8px}
.tl .dot{display:block;width:var(--dot);height:var(--dot);margin:0 auto;border-radius:50%;background:var(--white);border:2px solid var(--gray-lt);position:relative;z-index:1;transition:border-color .2s,background .2s}
.tl .no{display:block;font-family:var(--ff-num);font-weight:600;color:var(--gray-lt);line-height:1}
.tl .tt{display:block;font-weight:700;color:var(--gray)}
.tl a:hover .dot{border-color:var(--olive)}
.tl a:hover .tt{color:var(--olive)}
.tl li.done .dot{border-color:var(--olive)}
.tl li.cur .dot{background:var(--olive);border-color:var(--olive)}
.tl li.cur .tt,.tl li.cur .no{color:var(--olive)}

/* トップの大きい年表 */
.top-hero .wrap{padding-top:72px;padding-bottom:48px}
.top-hero h1{font-size:clamp(28px,4vw,44px);line-height:1.45;font-weight:700;letter-spacing:.02em}
.top-hero h1 .sub{display:block;font-size:.55em;font-weight:400;color:var(--gray);margin-top:6px;letter-spacing:.05em}
.top-lead{margin-top:26px;max-width:36em;color:var(--gray)}
.top-tl{background:var(--bg2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.top-tl .wrap{padding-top:52px;padding-bottom:56px}
.top-tl .cap{font-size:13.5px;color:var(--gray);margin-bottom:30px}
.tl.big{--dot:22px;--dot-y:40px}
.tl.big .no{font-size:24px;margin-bottom:6px}
.tl.big .dot{background:var(--bg2)}
.tl.big .tt{font-size:17px;margin-top:16px}
.tl.big .ds{display:block;font-size:13.5px;line-height:1.8;color:var(--gray);margin-top:8px;text-align:left}

/* 下層の小さい年表 */
.lower-tl{border-bottom:1px solid var(--line);background:var(--bg2)}
.lower-tl .wrap{padding-top:22px;padding-bottom:18px;max-width:900px}
.tl.small{--dot:14px;--dot-y:22px}
.tl.small .no{font-size:15px;margin-bottom:4px}
.tl.small .dot{background:var(--bg2)}
.tl.small li.cur .dot{background:var(--olive)}
.tl.small .tt{font-size:13px;margin-top:6px;font-weight:400}
.tl.small li.cur .tt{font-weight:700}

/* ===== 本文 ===== */
.article{max-width:40em;margin:0 auto;padding:56px 28px 80px}
.article .pos{font-size:13.5px;color:var(--gray-lt);margin-bottom:6px}
.article .pos b{font-family:var(--ff-num);font-weight:600;font-size:17px;color:var(--olive)}
.article h1{font-size:clamp(26px,3.4vw,36px);font-weight:700;line-height:1.45;letter-spacing:.03em;margin-bottom:34px;padding-bottom:18px;border-bottom:2px solid var(--olive)}
.article p{margin-bottom:1.5em}
.pager{display:flex;justify-content:space-between;gap:16px;margin-top:48px;padding-top:24px;border-top:1px solid var(--line)}
.pager a{display:block;min-width:42%;padding:12px 18px;border:1px solid var(--line);transition:border-color .2s,background .2s}
.pager a:hover{border-color:var(--olive);background:var(--olive-lt)}
.pager small{display:block;font-size:12px;color:var(--gray-lt)}
.pager strong{font-size:15px;color:var(--olive)}
.pager .next{margin-left:auto;text-align:right}

/* ===== sitemap／links ===== */
.single{max-width:820px;margin:0 auto;padding:56px 28px 80px}
.single h1{font-size:clamp(26px,3.4vw,36px);font-weight:700;letter-spacing:.03em;margin-bottom:20px;padding-bottom:18px;border-bottom:2px solid var(--olive)}
.single .intro{color:var(--gray);margin-bottom:30px}
.map-list li{border-bottom:1px solid var(--line)}
.map-list li:first-child{border-top:1px solid var(--line)}
.map-list a{display:block;padding:18px 4px;transition:background .2s}
.map-list a:hover{background:var(--bg2)}
.map-list .tt{display:block;font-weight:700;color:var(--olive);font-size:17px}
.map-list .ds{display:block;font-size:14.5px;color:var(--gray);line-height:1.8;margin-top:2px}
.map-list .child a{padding-left:28px}
.pending{padding:26px 24px;background:var(--bg2);border:1px solid var(--line);color:var(--gray)}

/* ===== footer：中央そろえ ===== */
.ft{border-top:4px solid var(--olive);background:var(--bg2);text-align:center;padding:40px 24px 22px}
.ft-name{font-weight:700;font-size:16px;color:var(--olive);margin-bottom:16px}
.ft-nav ul{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 0;font-size:13.5px}
.ft-nav li+li{border-left:1px solid var(--line)}
.ft-nav a{display:block;padding:0 14px;color:var(--gray)}
.ft-nav a:hover{color:var(--olive);text-decoration:underline;text-underline-offset:4px}
.ft-copy{margin-top:26px;font-size:12px;color:var(--gray-lt)}

.to-top{position:fixed;right:18px;bottom:18px;width:44px;height:44px;background:var(--olive);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;border-radius:50%;opacity:0;pointer-events:none;transition:opacity .3s;z-index:50}
.to-top.show{opacity:1;pointer-events:auto}

/* ===== responsive ===== */
@media(max-width:980px){
  .hd-nav{display:none}
  .burger{display:flex}
  .drawer.open{display:block;position:absolute;top:100%;left:0;right:0;background:var(--white);border-bottom:2px solid var(--olive);z-index:40}
  .drawer ul{padding:4px 28px 12px}
  .drawer li{border-bottom:1px solid var(--line)}
  .drawer a{display:block;padding:12px 0;font-size:15px;color:var(--gray)}
  .drawer a.is-active{color:var(--olive);font-weight:700}
}
@media(max-width:720px){
  /* トップの年表は縦に */
  .tl.big{grid-template-columns:1fr;gap:0}
  .tl.big::before{left:10px;right:auto;top:8px;bottom:8px;width:2px;height:auto}
  .tl.big li{text-align:left}
  .tl.big a{display:grid;grid-template-columns:22px 1fr;gap:0 18px;padding:0 0 26px}
  .tl.big .dot{grid-column:1;grid-row:1/4;margin:4px 0 0}
  .tl.big .no{grid-column:2;font-size:20px;margin-bottom:2px}
  .tl.big .tt{grid-column:2;margin-top:0}
  .tl.big .ds{grid-column:2;margin-top:4px}
  .top-hero .wrap{padding-top:44px;padding-bottom:36px}
  .tl.small .tt{display:none}
}
@media(max-width:480px){
  .wrap{padding:0 20px}
  .article,.single{padding-left:20px;padding-right:20px}
  .drawer ul{padding:4px 20px 12px}
  .logo{font-size:16px}
  .pager{flex-direction:column}
  .ft-nav ul{gap:8px 18px}
  .ft-nav li+li{border-left:none}
  .ft-nav a{padding:0}
  .pager a{min-width:0}
  .pager .next{margin-left:0}
}
