:root{
  --ink:#161514; --paper:#fbfaf8; --shu:#d94a2b; --gray:#75716c; --line:#dcd8d2; --pale:#f1eeea;
  --min:"Shippori Mincho B1","Yu Mincho","游明朝",serif;
  --goth:"Zen Kaku Gothic New","Yu Gothic","游ゴシック",sans-serif;
  --en:"Cormorant Garamond",serif;
  --gut:clamp(20px,5vw,72px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--goth);font-size:16px;line-height:1.9;-webkit-font-smoothing:antialiased}
img{display:block;width:100%;height:100%;object-fit:cover;background:var(--pale)}
a{color:inherit}
.en{font-family:var(--en);font-style:italic;letter-spacing:.04em}
.wrap{max-width:1240px;margin:0 auto;padding:0 var(--gut)}

/* ヘッダー */
header{position:sticky;top:0;z-index:10;background:rgba(251,250,248,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.head{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{font-family:var(--min);font-weight:700;font-size:17px;text-decoration:none;letter-spacing:.06em}
.brand small{display:block;font-family:var(--en);font-style:italic;font-weight:500;font-size:11px;color:var(--gray);letter-spacing:.12em;line-height:1.2}
nav{display:flex;align-items:center;gap:28px;font-size:13.5px}
nav a{text-decoration:none}
nav a:hover{color:var(--shu)}
.btn{display:inline-block;background:var(--ink);color:#fff;text-decoration:none;padding:10px 22px;font-size:13.5px;font-weight:700;letter-spacing:.06em;transition:background .2s}
.btn:hover{background:var(--shu);color:#fff}
.btn.shu{background:var(--shu)} .btn.shu:hover{background:#fff;color:var(--ink)}
.btn.line{background:transparent;color:var(--ink);border:1px solid var(--ink)} .btn.line:hover{background:var(--ink);color:#fff}
.brand,.btn{white-space:nowrap}
@media screen and (max-width:860px){nav a:not(.btn){display:none}}
@media screen and (max-width:480px){.brand{font-size:14px;letter-spacing:.02em}.brand small{font-size:9.5px;letter-spacing:.04em}header .btn{padding:8px 12px;font-size:12px}}

/* 表紙 */
.cover{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:clamp(16px,3vw,48px);align-items:stretch;padding-top:clamp(24px,4vw,56px);padding-bottom:clamp(40px,6vw,88px)}
.cover .meta{writing-mode:vertical-rl;font-size:12px;letter-spacing:.3em;color:var(--gray);display:flex;justify-content:space-between}
.cover .meta b{color:var(--shu);font-weight:500}
.cover .photo{position:relative;min-width:0;height:clamp(420px,74vh,680px);overflow:hidden}
.cover .photo figcaption{position:absolute;left:0;bottom:0;background:var(--paper);padding:10px 18px 0 0;font-size:12px;color:var(--gray)}
.cover h1{writing-mode:vertical-rl;font-family:var(--min);font-weight:800;font-size:min(5.6vw,8.4vh,84px);line-height:1.5;letter-spacing:.08em;width:3em;white-space:nowrap}
.cover h1 em{font-style:normal;color:var(--shu)}
@media screen and (max-width:700px){.cover{grid-template-columns:minmax(0,1fr) auto}.cover .meta{display:none}.cover .photo{height:clamp(380px,62vh,560px)}.cover h1{font-size:9vw}}

/* 巻頭 */
.lead{border-top:1px solid var(--ink);padding:clamp(48px,7vw,104px) 0}
.lead .cols{display:grid;grid-template-columns:1fr 1.25fr;gap:clamp(24px,5vw,80px)}
.lead h2{font-family:var(--min);font-weight:700;font-size:clamp(22px,2.8vw,38px);line-height:1.6}
.lead p+p{margin-top:1.4em}
.kicker{font-family:var(--en);font-style:italic;font-size:18px;color:var(--shu);display:block;margin-bottom:14px;letter-spacing:.06em}
@media screen and (max-width:800px){.lead .cols{grid-template-columns:1fr}}

/* 数字 */
.nums{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.nums div{padding:28px 20px 26px;border-left:1px solid var(--line)}
.nums div:first-child{border-left:0;padding-left:0}
.nums b{display:block;font-family:var(--min);font-weight:700;font-size:clamp(30px,4.2vw,56px);line-height:1.1}
.nums b i{font-style:normal;font-size:.42em;margin-left:4px}
.nums span{font-size:12.5px;color:var(--gray)}
@media screen and (max-width:700px){.nums{grid-template-columns:1fr 1fr}.nums div:nth-child(3){border-left:0;padding-left:0}.nums div:nth-child(n+3){border-top:1px solid var(--line)}}

/* 特集 */
.sec{padding:clamp(64px,9vw,128px) 0}
.sec-head{display:flex;align-items:baseline;gap:20px;margin-bottom:clamp(32px,5vw,64px)}
.sec-head h2{font-family:var(--min);font-weight:700;font-size:clamp(26px,3.4vw,44px);letter-spacing:.06em}
.sec-head .en{font-size:20px;color:var(--gray)}
.feature{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(24px,5vw,72px);align-items:center;margin-bottom:clamp(56px,8vw,112px)}
.feature:last-child{margin-bottom:0}
.feature:nth-of-type(even) figure{order:2}
.feature figure{aspect-ratio:3/2;overflow:hidden}
.feature figure.illust{background:var(--pale)}
.feature figure.illust img{object-fit:contain;padding:6%}
.feature .no{font-family:var(--en);font-size:clamp(64px,9vw,128px);line-height:.8;color:var(--shu)}
.feature h3{font-family:var(--min);font-weight:700;font-size:clamp(22px,2.6vw,34px);line-height:1.55;margin:18px 0 16px}
.feature .tag{font-size:12.5px;color:var(--gray);margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
@media screen and (max-width:800px){.feature{grid-template-columns:1fr}.feature:nth-of-type(even) figure{order:0}}

/* 商品 */
.product{background:var(--pale)}
.product .wrap{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(24px,5vw,80px);align-items:center}
.product figure{aspect-ratio:1/1;overflow:hidden}
.product h2{font-family:var(--min);font-weight:800;font-size:clamp(28px,3.8vw,52px);line-height:1.4}
.product .sub{font-size:14px;color:var(--gray);margin:10px 0 22px}
.shops{font-size:13.5px;margin:22px 0 28px;padding-top:18px;border-top:1px solid var(--ink)}
.shops dt{font-weight:700;float:left;width:8.5em;clear:left}
.shops dd{margin:0 0 8px 9em}
.btns{display:flex;gap:12px;flex-wrap:wrap}
@media screen and (max-width:800px){.product .wrap{grid-template-columns:1fr}}

/* 歩み */
.history ol{list-style:none;border-top:1px solid var(--ink)}
.history li{display:grid;grid-template-columns:140px 1fr;gap:24px;padding:22px 0;border-bottom:1px solid var(--line);align-items:baseline}
.history time{font-family:var(--min);font-weight:700;font-size:26px}
@media screen and (max-width:600px){.history li{grid-template-columns:1fr;gap:2px}}

/* スポンサー */
.sponsor{background:var(--ink);color:#fff}
.sponsor .sec-head .en{color:#a8a39c}
.sponsor .intro{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(24px,5vw,80px);margin-bottom:56px}
.sponsor .intro h3{font-family:var(--min);font-weight:700;font-size:clamp(24px,3.2vw,42px);line-height:1.6}
.plans{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #fff}
.plans div{padding:26px 22px 30px;border-left:1px solid #48443f}
.plans div:first-child{border-left:0;padding-left:0}
.plans h4{font-family:var(--min);font-size:20px;font-weight:700}
.plans b{display:block;font-family:var(--min);font-size:clamp(28px,3.4vw,44px);color:var(--shu);line-height:1.3;margin:6px 0 12px}
.plans b i{font-style:normal;font-size:.5em}
.plans p{font-size:13.5px;color:#cfcac3;line-height:1.75}
.sponsor .foot{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;margin-top:40px;padding-top:28px;border-top:1px solid #48443f}
.sponsor .foot p{font-size:13px;color:#a8a39c}
.draft{display:inline-block;border:1px solid var(--shu);color:var(--shu);font-size:11.5px;padding:1px 8px;margin-left:10px;vertical-align:middle;letter-spacing:.05em}
@media screen and (max-width:860px){.sponsor .intro{grid-template-columns:1fr}.plans{grid-template-columns:1fr 1fr}.plans div:nth-child(3){border-left:0;padding-left:0}.plans div:nth-child(n+3){border-top:1px solid #48443f}}

/* お知らせ */
.news ul{list-style:none;border-top:1px solid var(--ink)}
.news li{display:grid;grid-template-columns:130px 1fr;gap:20px;padding:20px 0;border-bottom:1px solid var(--line)}
.news time{font-family:var(--en);font-size:18px;color:var(--gray)}
@media screen and (max-width:600px){.news li{grid-template-columns:1fr;gap:0}}

/* フッター */
footer{border-top:1px solid var(--ink);padding:56px 0 40px;font-size:13.5px}
footer .wrap{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:40px}
footer h5{font-family:var(--min);font-size:20px;font-weight:700;margin-bottom:10px}
footer dl dt{color:var(--gray);font-size:12px;margin-top:10px}
footer .copy{grid-column:1/-1;color:var(--gray);font-size:12px;border-top:1px solid var(--line);padding-top:20px}
@media screen and (max-width:800px){footer .wrap{grid-template-columns:1fr}}

/* スクロール演出（JSが動く時だけ） */
.js .rv{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease}
.js .rv.on{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.js .rv{opacity:1;transform:none;transition:none}}

/* ---- 下層ページ ---- */
.page-head{padding:clamp(48px,7vw,104px) 0 clamp(36px,5vw,72px);border-bottom:1px solid var(--ink)}
.page-head h1{font-family:var(--min);font-weight:800;font-size:clamp(30px,5vw,68px);line-height:1.45;letter-spacing:.06em}
.page-head p{max-width:42em;margin-top:22px}
.block{padding:clamp(44px,6vw,88px) 0;border-bottom:1px solid var(--line)}
.two{display:grid;grid-template-columns:1fr 1.7fr;gap:clamp(24px,5vw,80px);align-items:start}
.two>h2,.two>div>h2{font-family:var(--min);font-weight:700;font-size:clamp(22px,2.5vw,32px);line-height:1.6}
@media screen and (max-width:800px){.two{grid-template-columns:1fr}}
.prose p+p{margin-top:1.4em}
.prose .sign{font-family:var(--min);font-weight:700;margin-top:2em}
.portrait{aspect-ratio:4/3;overflow:hidden}
.tbl-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:14.5px;min-width:560px}
.tbl th,.tbl td{padding:14px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-weight:400}
.tbl tbody th{color:var(--gray);font-size:13px;width:9em;white-space:nowrap}
.tbl thead th{border-top:2px solid var(--ink);border-bottom:1px solid var(--ink);font-weight:700;font-size:13.5px}
.tbl .c{text-align:center;white-space:nowrap}
.tbl-wrap .tbl:not(:has(thead)){min-width:0;border-top:1px solid var(--ink)}
.projects{list-style:none;border-top:1px solid var(--ink)}
.projects li{display:grid;grid-template-columns:clamp(64px,10vw,140px) 1fr;gap:clamp(16px,3vw,40px);padding:clamp(22px,3vw,36px) 0;border-bottom:1px solid var(--line);align-items:start}
.projects .no{font-family:var(--en);font-size:clamp(40px,5.5vw,72px);line-height:1;color:var(--shu)}
.projects h3{font-family:var(--min);font-weight:700;font-size:clamp(19px,2.1vw,26px);margin-bottom:8px}
.projects.compact li{grid-template-columns:64px 1fr;padding:20px 0}
.projects.compact .no{font-size:36px}
.projects.compact h3{font-size:19px;margin-bottom:4px}
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.gallery figure{aspect-ratio:4/3;overflow:hidden}
@media screen and (max-width:600px){.gallery{grid-template-columns:1fr}}
.logos{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.logos span{aspect-ratio:3/2;border:1px dashed var(--line);display:grid;place-items:center;color:var(--gray);font-size:13px}
@media screen and (max-width:600px){.logos{grid-template-columns:1fr 1fr}}
.flow{list-style:none;counter-reset:f;border-top:1px solid var(--ink)}
.flow li{counter-increment:f;display:grid;grid-template-columns:48px 12em 1fr;gap:12px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--line)}
.flow li::before{content:counter(f);font-family:var(--en);font-size:26px;color:var(--shu)}
.flow span{color:var(--gray);font-size:14px}
@media screen and (max-width:600px){.flow li{grid-template-columns:40px 1fr}.flow span{grid-column:2}}
.cta{background:var(--pale);padding:clamp(48px,7vw,96px) 0}
.cta .wrap{display:flex;justify-content:space-between;align-items:center;gap:28px;flex-wrap:wrap}
.cta h2{font-family:var(--min);font-weight:700;font-size:clamp(20px,2.6vw,32px);line-height:1.6}
nav a[aria-current]{color:var(--shu)}

/* ---- 現サイトの原文を流し込むページ ---- */
.page-head h1.long{font-size:clamp(24px,3.6vw,46px)}
.article{max-width:960px;padding-top:clamp(36px,5vw,64px);padding-bottom:clamp(64px,9vw,120px)}
.article h2{font-family:var(--min);font-weight:700;font-size:clamp(20px,2.4vw,28px);line-height:1.6;margin:2.8em 0 .9em;padding-top:1.3em;border-top:1px solid var(--ink)}
.article>h2:first-child{margin-top:0}
.article h3{font-family:var(--min);font-weight:700;font-size:clamp(17px,1.9vw,21px);margin:2.2em 0 .6em}
.article p{margin:.95em 0;overflow-wrap:anywhere}
.article .note{font-size:14px;color:var(--gray);margin-top:-.4em}
.article a{color:var(--shu);text-underline-offset:3px}
.article figure{margin:1.6em 0}
.article figure img,.article .figs img{width:auto;height:auto;max-width:100%;background:none}
.figs{display:grid;gap:12px;margin:1.6em 0;align-items:start}
.figs figure{margin:0}
.figs-2{grid-template-columns:1fr 1fr}.figs-3{grid-template-columns:repeat(3,1fr)}.figs-4{grid-template-columns:1fr 1fr}
@media screen and (max-width:600px){.figs-3{grid-template-columns:1fr}}
.video{aspect-ratio:16/9;max-width:640px;margin:1.2em 0 .5em;background:var(--pale)}
.video iframe{width:100%;height:100%;border:0;display:block}
.newslist{list-style:none;border-top:1px solid var(--ink);margin-bottom:1em}
.newslist li{display:grid;grid-template-columns:128px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid var(--line);align-items:baseline}
.newslist time{font-family:var(--en);font-size:17px;color:var(--gray)}
.newslist p{margin:0}
@media screen and (max-width:600px){.newslist li{grid-template-columns:1fr;gap:0}}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:24px 20px;margin:1.6em 0}
.cards a{display:block;aspect-ratio:4/3;overflow:hidden}
.cards img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.cards a:hover img{transform:scale(1.04)}
.cards p{font-size:14.5px;margin:.6em 0 0}
/* ---- トップの Topics ---- */
.topic .wrap{display:grid;grid-template-columns:1fr 1.25fr;gap:clamp(24px,5vw,80px);align-items:start}
.topic figure{position:sticky;top:96px}
.topic figure img{height:auto}
.topic h2{font-family:var(--min);font-weight:800;font-size:clamp(24px,3.2vw,42px);line-height:1.45;margin-bottom:.8em}
.topic p{margin:.95em 0}
.topic .label{font-weight:700;margin-top:1.8em;padding-top:1.2em;border-top:1px solid var(--ink)}
.topic ul{list-style:none;font-size:14.5px}
.topic li{padding:9px 0;border-bottom:1px solid var(--line)}
.topic a{text-underline-offset:3px}
.topic a:hover{color:var(--shu)}
.topic .btns{margin-top:28px}
@media screen and (max-width:800px){.topic .wrap{grid-template-columns:1fr}.topic figure{position:static}}
.credit{display:grid;grid-template-columns:120px 1fr;gap:20px;align-items:center;margin-top:36px;padding:20px;background:#fff;font-size:13.5px;line-height:1.8}
.credit img{height:auto;background:none}
.credit b{font-family:var(--min);font-size:16px}
.more{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.more a{padding:28px 20px;text-decoration:none;font-family:var(--min);font-weight:700;font-size:clamp(16px,1.8vw,21px);border-left:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;transition:background .2s,color .2s}
.more a:first-child{border-left:0}
.more a:hover{background:var(--ink);color:#fff}
.more a::after{content:"→";font-family:var(--goth);font-weight:400}
@media screen and (max-width:800px){.more{grid-template-columns:1fr 1fr}.more a:nth-child(3){border-left:0}.more a:nth-child(n+3){border-top:1px solid var(--line)}}
.contact{text-align:center}
.contact h2{font-family:var(--min);font-weight:700;font-size:clamp(24px,3vw,38px);margin-bottom:.6em}
.contact .mail{font-family:var(--en);font-size:clamp(22px,3vw,34px);margin-top:.6em}
.contact small{color:var(--gray)}

/* ---- 印刷・PDF書き出し用（画面には影響しない） ---- */
@page{size:340mm 481mm;margin:10mm 0}
@media print{
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  header{position:static;backdrop-filter:none}
  .js .rv{opacity:1!important;transform:none!important}
  .topic figure{position:static}
  figure,li,tr,.plans,.credit,.cards>div,.video,h2,h3{break-inside:avoid}
  h2,h3{break-after:avoid}
  .video{display:none}
}

/* ---- 協賛：法人／個人 ---- */
.plans.two{grid-template-columns:1fr 1fr}
.plans.three{grid-template-columns:repeat(3,1fr)}
.plans.light{border-top:1px solid var(--ink)}
.plans.light div{border-left-color:var(--line)}
.plans.light p{color:var(--ink)}
.personal{background:var(--pale)}
.personal .intro{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(24px,5vw,80px);margin-bottom:56px}
.personal .intro h3{font-family:var(--min);font-weight:700;font-size:clamp(24px,3.2vw,42px);line-height:1.6}
.plan-note{font-size:13px;color:var(--gray);margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}
.two h2 small{display:block;font-family:var(--goth);font-weight:400;font-size:14px;color:var(--shu);margin-top:8px}
.personal + .sec{background:var(--pale)}
@media screen and (max-width:860px){.personal .intro{grid-template-columns:1fr}.plans.three{grid-template-columns:1fr}.plans.three div{border-left:0;padding-left:0;border-top:1px solid var(--line)}.plans.three div:first-child{border-top:0}}
@media screen and (max-width:600px){.plans.two{grid-template-columns:1fr}.plans.two div{border-left:0;padding-left:0}.plans.two div+div{border-top:1px solid #48443f}}
