
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--bg);line-height:1.9;font-size:16px;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto}
a{color:var(--link);text-underline-offset:.22em;text-decoration-thickness:1px}
a:hover{color:var(--accent-d,var(--accent))}
ul{margin:0;padding:0}
.sec{scroll-margin-top:var(--offset,80px)}
.wrap{max-width:var(--w,720px);margin:0 auto;padding:0 20px}
h2{margin:0 0 1.6rem;font-weight:500;line-height:1.4}
h2 .en{display:block;font-size:.75rem;letter-spacing:.22em;text-transform:uppercase;color:var(--sub);font-family:var(--sans)}
h2 .ja{display:block;font-family:var(--serif);font-size:1.5rem;letter-spacing:.08em;margin-top:.15em}
h3{margin:2.4rem 0 .8rem;font-size:1rem;font-weight:700;letter-spacing:.08em;color:var(--ink)}
p{margin:0 0 1em}
.prose p{margin:0 0 1.1em}
.lead{color:var(--ink)}
.rows{margin:0}
.rows>div{display:grid;grid-template-columns:var(--dt,5.5em) 1fr;gap:.1em 1.2em;padding:.75em 0;border-top:1px solid var(--line)}
.rows>div:last-child{border-bottom:1px solid var(--line)}
.rows dt{color:var(--sub);font-size:.9rem}
.rows dd{margin:0}
.books{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:1.8rem 1.4rem}
.cover,.portrait{background:var(--ph);display:grid;place-items:center;color:var(--sub);font-size:.7rem;letter-spacing:.2em}
.cover{aspect-ratio:3/4}
.b-title{margin:.7em 0 0;font-weight:500;line-height:1.55;font-size:.92rem}
.b-pub{margin:.15em 0 0;color:var(--sub);font-size:.8rem}
.btn{display:inline-block;padding:.55em 1.5em;border:1px solid var(--accent);color:var(--accent);text-decoration:none;font-size:.9rem;letter-spacing:.06em;background:transparent;transition:background .15s,color .15s}
.btn:hover{background:var(--accent);color:#fff}
.more{margin-top:2rem}
.linklist{list-style:none}
.linklist li{padding:.65em 0;border-top:1px solid var(--line)}
.linklist li:last-child{border-bottom:1px solid var(--line)}
.sns{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem 1.4rem}
.sns a{text-decoration:none;font-size:.9rem;letter-spacing:.06em}
.archive{list-style:none}
.archive li{display:grid;grid-template-columns:var(--dt2,8em) 1fr;gap:.2em 1em;padding:.5em 0;border-top:1px solid var(--line);font-size:.92rem;line-height:1.7}
.archive li:last-child{border-bottom:1px solid var(--line)}
.archive li:has(.d:empty),.archive li:not(:has(.d)){display:block}
.archive .d{color:var(--sub)}
.archive .note{color:var(--sub);font-size:.82rem}
.year{font-family:var(--serif);font-weight:500;font-size:1.1rem;letter-spacing:.1em;margin:2.2rem 0 .6rem}
.chips{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem .5rem}
.chips li{border:1px solid var(--line);padding:.15em .8em;font-size:.88rem}
.site-footer{padding:3rem 0 4rem;color:var(--sub);font-size:.8rem;text-align:center}
.site-footer p{margin:0 0 .3em}
@media (max-width:640px){
 body{font-size:15.5px}
 .books{grid-template-columns:repeat(2,1fr);gap:1.4rem 1rem}
 .rows>div{grid-template-columns:1fr}
 .archive li{grid-template-columns:1fr}
 h2 .ja{font-size:1.35rem}
}

:root{--bg:#ffffff;--band:#f2f5f9;--hero:#e7edf5;--ink:#1d2433;--sub:#5d6678;--line:#d6dde8;--accent:#27407a;--accent-d:#182a55;--link:#27407a;--ph:#d7dfeb;
--sans:"Noto Sans JP","Hiragino Sans","Yu Gothic",Meiryo,sans-serif;--serif:"Noto Sans JP","Hiragino Sans","Yu Gothic",Meiryo,sans-serif;--w:880px;--offset:72px}
h2 .ja{font-weight:700;font-size:1.45rem;letter-spacing:.06em}
.site-header{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.94);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.site-header .in{max-width:1040px;margin:0 auto;padding:.9rem 20px;display:flex;justify-content:space-between;align-items:center;gap:.6rem 2rem}
.brand{font-weight:700;letter-spacing:.1em;text-decoration:none;color:var(--ink);font-size:1rem}
.site-header nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:.1rem 1.5rem}
.site-header nav a{text-decoration:none;color:var(--ink);font-size:.85rem;letter-spacing:.05em}
.site-header nav a:hover{color:var(--accent)}
.nav-toggle,.burger{display:none}
@media (max-width:860px){
 .site-header .in{position:relative;padding-top:.5rem;padding-bottom:.5rem;min-height:56px}
 .nav-toggle{display:block;position:absolute;right:10px;top:50%;margin:-22px 0 0;width:44px;height:44px;opacity:0;cursor:pointer;z-index:3}
 .burger{display:block;position:relative;flex:0 0 44px;width:44px;height:44px;margin-right:-10px}
 .burger span{position:absolute;left:11px;top:21px;width:22px;height:2px;background:var(--ink);transition:background .2s}
 .burger span::before,.burger span::after{content:"";position:absolute;left:0;width:22px;height:2px;background:var(--ink);transition:transform .2s,top .2s}
 .burger span::before{top:-7px}
 .burger span::after{top:7px}
 .nav-toggle:checked + .burger span{background:transparent}
 .nav-toggle:checked + .burger span::before{top:0;transform:rotate(45deg)}
 .nav-toggle:checked + .burger span::after{top:0;transform:rotate(-45deg)}
 .nav-toggle:focus-visible + .burger{outline:2px solid var(--accent);outline-offset:-2px;border-radius:4px}
 .site-header nav{display:none;position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 8px 16px rgba(29,36,51,.08)}
 .nav-toggle:checked ~ nav{display:block}
 .site-header nav ul{flex-direction:column;gap:0}
 .site-header nav li{border-top:1px solid var(--line)}
 .site-header nav a{display:block;padding:.95rem 20px;font-size:1rem}
}
.hero{background:var(--hero)}
.hero .in{max-width:1040px;margin:0 auto;padding:4.5rem 20px;display:grid;grid-template-columns:1.25fr .75fr;gap:3rem;align-items:center}
.hero .name{font-size:2.5rem;font-weight:700;letter-spacing:.14em;margin:0;line-height:1.3}
.hero .name-en{margin:.4em 0 0;font-size:.82rem;letter-spacing:.22em;color:var(--sub)}
.hero .titles{margin:1.6rem 0 0;font-size:.98rem;line-height:2;color:var(--ink)}
.hero .lead-line{margin:1.4rem 0 0;color:var(--sub);font-size:.92rem;max-width:36em;text-wrap:balance}
.hero .portrait{display:block;aspect-ratio:2/3;object-fit:cover;object-position:top;border-radius:4px;max-width:300px;justify-self:end;width:100%;height:auto}
.sec{padding:4.2rem 0}
.sec:nth-of-type(even){background:var(--band)}
h2+h3{margin-top:0}
.book .cover{border-radius:3px}
.book .cover{aspect-ratio:2/3;width:80%;margin:0 auto}
.book .b-title{margin:1.3em .3rem 0;line-height:1.7}
.book .b-pub{margin:.55em .3rem 0}
.book .cover.has-img{background:transparent;overflow:hidden}
.book .cover img{display:block;width:100%;height:100%;object-fit:contain}
.cat{font-size:1.2rem;margin:3.2rem 0 .4rem;padding-bottom:.4rem;border-bottom:2px solid var(--accent);letter-spacing:.08em}
.yr{font-size:.95rem;font-weight:700;letter-spacing:.1em;margin:1.8rem 0 .3rem;color:var(--sub)}
.archive{--dt2:7.5em}
.folds{margin-top:1.4rem;border-bottom:1px solid var(--line)}
.yr-fold{border-top:1px solid var(--line)}
.yr-fold summary{list-style:none;cursor:pointer;display:flex;align-items:baseline;gap:.8rem;padding:.75rem 0;font-weight:700;font-size:.95rem;letter-spacing:.1em;color:var(--sub)}
.yr-fold summary::-webkit-details-marker{display:none}
.yr-fold summary::before{content:"+";display:inline-block;width:1.1em;color:var(--accent);font-weight:400}
.yr-fold[open] summary::before{content:"\2212"}
.yr-fold[open] summary{color:var(--ink)}
.yr-fold summary:hover{color:var(--accent)}
.yr-fold summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.yr-fold .cnt{font-weight:400;font-size:.8rem;letter-spacing:.04em}
.yr-fold .archive{margin:0 0 1.2rem}
.yr-fold .archive li:first-child{border-top:0}
.sns-icons{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:1rem}
.sns-icons li{flex:0 0 calc((100% - 2rem)/3)}
.sns-icons a{display:flex;align-items:center;gap:.9rem;height:100%;min-height:76px;padding:.9rem 1.1rem;background:#fff;border:1px solid var(--line);border-radius:4px;text-decoration:none;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.sns-icons img{display:block;flex:0 0 40px;width:40px;height:40px}
.sns-icons .tx{display:flex;flex-direction:column;min-width:0;line-height:1.4}
.sns-icons .nm{font-weight:700;font-size:.95rem;letter-spacing:.04em}
.sns-icons .sub{color:var(--sub);font-size:.78rem;white-space:nowrap}
.sns-icons a:hover{border-color:var(--accent);box-shadow:0 2px 10px rgba(39,64,122,.15)}
.sns-icons a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media (max-width:640px){.sns-icons li{flex-basis:calc((100% - 1rem)/2)}.sns-icons a{padding:.7rem .75rem;gap:.6rem}.sns-icons img{flex-basis:32px;width:32px;height:32px}.sns-icons .nm{font-size:.9rem}.sns-icons .sub{font-size:.7rem}}
.cases{list-style:none}
.case{padding:1.2rem 0;border-top:1px solid var(--line)}
.case:last-child{border-bottom:1px solid var(--line)}
.c-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .9rem;margin-bottom:.35rem;font-size:.8rem;color:var(--sub)}
.c-tag{border:1px solid var(--accent);color:var(--accent);padding:0 .7em;border-radius:2px;font-size:.75rem;letter-spacing:.06em;line-height:1.7}
.c-title{display:block;font-weight:700;line-height:1.65;color:var(--ink);text-decoration:none}
.c-title:hover{color:var(--accent);text-decoration:underline;text-underline-offset:.2em}
.c-desc{margin:.35rem 0 0;font-size:.92rem}
.c-src{margin:.15rem 0 0;font-size:.8rem;color:var(--sub)}
.booklist{list-style:none}
.booklist li{display:grid;grid-template-columns:76px 1fr;gap:1.1rem;padding:.9rem 0;border-top:1px solid var(--line);align-items:center}
.booklist li:last-child{border-bottom:1px solid var(--line)}
.booklist .th{display:block;width:76px;aspect-ratio:2/3}
.booklist .th img{display:block;width:100%;height:100%;object-fit:contain}
.booklist .t{display:block;font-weight:500;font-size:.92rem;line-height:1.7;color:var(--ink);text-decoration:none}
.booklist .p{display:block;margin-top:.3rem;color:var(--sub);font-size:.8rem;line-height:1.6}
a.t:hover{color:var(--accent);text-decoration:underline;text-underline-offset:.2em}
.booklist .note{color:var(--sub);font-size:.8rem}
.book a{display:block;color:inherit;text-decoration:none}
.book a:hover .b-title{color:var(--accent);text-decoration:underline;text-underline-offset:.2em}
.book a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.carousel{position:relative}
.carousel-track{list-style:none;display:flex;gap:1.2rem;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;position:relative;padding:0;margin:0;overscroll-behavior-x:contain}
.carousel-track::-webkit-scrollbar{display:none}
.carousel-track .book{flex:0 0 calc((100% - 2.4rem)/3);scroll-snap-align:start}
.car-ctrl{display:none;align-items:center;gap:.6rem;margin-top:1.2rem}
.carousel.is-ready .car-ctrl{display:flex}
.car-btn{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--accent);font-size:1.4rem;line-height:1;cursor:pointer;padding:0 0 .12em}
.car-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.car-dots{display:none;gap:.55rem}
.car-dots button{width:8px;height:8px;padding:0;border:0;border-radius:50%;background:var(--line);cursor:pointer}
.car-dots button[aria-current="true"]{background:var(--accent)}
.car-toggle{margin-left:auto;border:0;background:transparent;color:var(--sub);font-size:.8rem;font-family:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:.2em}
.car-toggle:hover{color:var(--accent)}
.car-btn:focus-visible,.car-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (max-width:767.98px){
 .carousel-track .book{flex-basis:76%;scroll-snap-align:center}
 .car-prev,.car-next{display:none}
 .car-dots{display:flex}
}
.btn{border-radius:2px}
.site-footer .assoc{color:#848da1;font-size:.72rem}
.book{background:#fff;padding:1.2rem 1rem 1.6rem;border:1px solid var(--line);border-radius:4px}
.sec:nth-of-type(odd) .book{background:var(--band)}
.rows>div{border-color:var(--line)}
@media (max-width:760px){
 .hero .in{grid-template-columns:1fr;padding:2.8rem 20px;gap:2rem}
 .hero .portrait{justify-self:start;max-width:220px;order:-1}
 .hero .name{font-size:2rem}
}
