@layer reset, base, layout, components, utilities;

@layer reset {
  *,*::before,*::after{box-sizing:border-box}
  html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
  body,h1,h2,h3,h4,p,ul,ol,figure,blockquote,table{margin:0}
  ul[role="list"]{list-style:none;padding:0}
  a{color:inherit;text-decoration:none}
  img{max-width:100%;display:block}
  button{font:inherit;color:inherit;cursor:pointer}
  table{border-collapse:collapse;width:100%}
}
@layer base {
  :root{
    --bg:#f3eee1;--paper:#faf7ef;--panel:#efe9d9;
    --green:#2f4a38;--green-deep:#233a2b;--green-soft:#5c7362;
    --terracotta:#b4472a;--terracotta-deep:#9c3a21;--gold:#b79a5b;
    --ink:#2c2c26;--muted:#78725f;--line:#e2dcc9;--line-soft:#ece6d6;
    --serif:"Shippori Mincho",'Yu Mincho','Hiragino Mincho ProN',serif;
    --latin:"Cormorant Garamond",serif;
    --sans:"Zen Kaku Gothic New",'Hiragino Kaku Gothic ProN','Noto Sans JP',sans-serif;
    --wrap:1160px;--radius:4px;
  }
  body{font-family:var(--sans);color:var(--ink);background:var(--bg);line-height:1.85;
    font-size:clamp(.9rem,.85rem + .3vw,1rem);letter-spacing:.02em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
  h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.45;letter-spacing:.03em}
  :where(a){transition:color .2s,background-color .2s,opacity .2s}
  :focus-visible{outline:2px solid var(--terracotta);outline-offset:2px}
}
@layer layout {
  .wrap{width:min(100% - 2.4rem,var(--wrap));margin-inline:auto}
  .section{padding-block:clamp(2.6rem,6vw,4.4rem)}
  .eyebrow{font-family:var(--latin);letter-spacing:.34em;text-transform:uppercase;font-size:.72rem;color:var(--green-soft);text-align:center;font-weight:600}
  .sec-title{text-align:center;font-size:clamp(1.4rem,1.1rem + 1.4vw,2rem);margin-top:.5rem}
  .sec-lead{text-align:center;color:var(--muted);font-size:.85rem;margin-top:.8rem;line-height:1.9}
}
@layer components {
  /* Header */
  .site-head{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
  .head-inner{display:flex;align-items:center;gap:1.4rem;min-height:74px}
  .brand{display:flex;flex-direction:column;line-height:1.1}
  .brand b{font-family:var(--latin);font-weight:600;font-size:1.7rem;letter-spacing:.22em;color:var(--green)}
  .brand span{font-family:var(--serif);font-size:.62rem;letter-spacing:.16em;color:var(--muted);margin-top:.28rem}
  .head-nav{margin-inline-start:auto;display:flex;gap:1.2rem;font-size:.78rem;font-weight:500}
  .head-nav a{color:var(--ink);padding-block:.4rem}
  .head-nav a[aria-current]{color:var(--green)}
  .head-nav a:hover{color:var(--green)}
  .head-tools{display:flex;align-items:center;gap:.8rem}
  .search-pill{display:flex;align-items:center;gap:.5rem;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:.5rem .95rem;color:var(--muted);font-size:.75rem;min-width:180px}
  .search-pill input{border:0;background:transparent;font:inherit;color:var(--ink);width:100%;outline:none}
  .btn{display:inline-flex;align-items:center;gap:.5rem;border:0;border-radius:999px;font-weight:600;font-size:.8rem;padding:.62rem 1.15rem;background:var(--green);color:#fff}
  .btn:hover{background:var(--green-deep)}
  .btn-terra{background:var(--terracotta)}.btn-terra:hover{background:var(--terracotta-deep)}
  .btn .ar{font-size:.7em}
  .nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:0;padding:.4rem}
  .nav-toggle span{width:24px;height:2px;background:var(--green);border-radius:2px}
  /* Hero */
  .hero{background:linear-gradient(120deg,var(--green),var(--green-deep));color:#fff;position:relative;overflow:hidden}
  .hero::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 82% 30%,color-mix(in srgb,#fff 12%,transparent) 0 8%,transparent 9%),radial-gradient(circle at 92% 62%,color-mix(in srgb,#fff 9%,transparent) 0 11%,transparent 12%),radial-gradient(circle at 70% 78%,color-mix(in srgb,#fff 7%,transparent) 0 6%,transparent 7%)}
  .hero-inner{position:relative;z-index:1;padding-block:clamp(2.8rem,7vw,4.8rem);max-width:38rem}
  .hero h1{font-size:clamp(1.7rem,1.2rem + 2.6vw,2.7rem);line-height:1.5;color:#fff}
  .hero p{margin-top:1.2rem;color:color-mix(in srgb,#fff 82%,transparent);font-size:.9rem;line-height:1.9}
  .hero .btn{margin-top:1.8rem;padding:.8rem 1.5rem;font-size:.88rem}
  .hero-note{position:absolute;right:1.4rem;bottom:1rem;z-index:1;color:color-mix(in srgb,#fff 55%,transparent);font-size:.66rem}
  /* type cards */
  .type-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:1rem;margin-top:2.2rem}
  .type-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem .8rem;text-align:center;transition:transform .2s,box-shadow .2s,border-color .2s}
  .type-card:hover{transform:translateY(-3px);box-shadow:0 10px 26px -18px rgba(35,58,43,.5);border-color:var(--green-soft)}
  .type-mark{width:58px;height:58px;border-radius:50%;margin:0 auto .85rem;display:grid;place-items:center;background:radial-gradient(circle at 50% 38%,#e7dfc7,#d8cdac);color:var(--green-deep);font-family:var(--serif);font-size:1.15rem;font-weight:700}
  .type-card h3{font-size:.95rem;color:var(--green-deep)}
  .type-card p{color:var(--muted);font-size:.72rem;line-height:1.7;margin-top:.35rem}
  .type-card .tag{display:block;color:var(--terracotta);font-size:.68rem;margin-top:.3rem;font-weight:600}
  /* library */
  .lib{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:clamp(1.2rem,3vw,2rem);margin-top:2rem}
  .lib-search{display:flex;align-items:center;gap:.6rem;border:1px solid var(--line);border-radius:999px;background:var(--bg);padding:.7rem 1.1rem;color:var(--muted)}
  .lib-search input{border:0;background:transparent;font:inherit;width:100%;outline:none;color:var(--ink)}
  .chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.1rem}
  .chip{border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:.3rem .7rem;font-size:.76rem;color:var(--muted)}
  .chip:hover{border-color:var(--green-soft);color:var(--green)}
  .lib-cats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-top:1.4rem}
  .lib-cat{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
  .lib-cat .body{padding:.85rem 1rem}
  .lib-cat h4{font-size:.9rem}
  .lib-cat span{color:var(--terracotta);font-size:.74rem;font-weight:600}
  /* placeholder */
  .ph{position:relative;background:repeating-linear-gradient(-45deg,#ddd3ba 0 2px,#d7ccb0 2px 12px),#dccfb0;aspect-ratio:16/10}
  .ph::after{content:"写真";position:absolute;right:.5rem;bottom:.4rem;font-size:.6rem;color:#8a7f63;background:color-mix(in srgb,#fff 55%,transparent);padding:.05rem .35rem;border-radius:3px}
  .ph.sq{aspect-ratio:1}.ph.wide{aspect-ratio:1200/500}
  /* season */
  .season{background:var(--panel);border:1px solid var(--line);border-radius:6px;display:grid;grid-template-columns:auto 1fr;gap:1.4rem;padding:clamp(1.1rem,3vw,1.6rem) clamp(1.2rem,3vw,2rem);align-items:center}
  .season-mark{text-align:center;padding-inline-end:1.4rem;border-inline-end:1px solid var(--line)}
  .season-mark b{font-family:var(--serif);font-size:1.6rem;color:var(--green-deep);display:block}
  .season-mark span{font-size:.66rem;color:var(--muted)}
  .season-body h3{font-size:1.05rem;color:var(--green-deep)}
  .season-body p{color:var(--muted);font-size:.82rem;margin:.5rem 0 .8rem}
  /* layout */
  .layout{display:grid;grid-template-columns:1fr 300px;gap:clamp(1.6rem,4vw,3rem);align-items:start}
  .block-head{display:flex;align-items:baseline;gap:.9rem;border-inline-start:3px solid var(--terracotta);padding-inline-start:.9rem;margin-bottom:1.4rem}
  .block-head .en{font-family:var(--latin);letter-spacing:.28em;text-transform:uppercase;font-size:.68rem;color:var(--green-soft);font-weight:600}
  .block-head h2{font-size:1.25rem}
  .art-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.3rem}
  .art{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column}
  .art:hover{box-shadow:0 12px 30px -22px rgba(35,58,43,.55)}
  .art .cat{position:absolute;margin:.7rem;background:var(--green);color:#fff;font-size:.66rem;padding:.2rem .55rem;border-radius:3px}
  .art .media{position:relative}
  .art .body{padding:1rem 1.1rem 1.2rem}
  .art time{color:var(--muted);font-size:.72rem}
  .art h3{font-size:1rem;line-height:1.6;margin-top:.35rem}
  .art h3 a:hover{color:var(--green)}
  .art p{color:var(--muted);font-size:.78rem;margin-top:.5rem}
  .more{display:block;width:max-content;margin:1.8rem auto 0;border:1px solid var(--green);color:var(--green);border-radius:999px;padding:.55rem 1.5rem;font-size:.8rem;font-weight:600}
  .more:hover{background:var(--green);color:#fff}
  .pick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
  .pick .body{padding:.9rem 1rem 1.1rem}
  .pick h3{font-size:.9rem;line-height:1.55}
  .pick p{color:var(--muted);font-size:.74rem;margin-top:.4rem}
  /* sidebar */
  .side{display:flex;flex-direction:column;gap:1.4rem;position:sticky;top:92px}
  .card{background:var(--paper);border:1px solid var(--line);border-radius:6px;overflow:hidden}
  .card > h4{background:var(--green);color:#fff;font-size:.85rem;padding:.7rem 1rem;font-weight:600}
  .card .in{padding:1rem 1.1rem}
  .prof{text-align:center}
  .prof .ph{width:84px;height:84px;border-radius:50%;margin:.4rem auto .7rem}
  .prof .role{color:var(--terracotta);font-size:.72rem;font-weight:600}
  .prof .nm{font-family:var(--serif);font-size:1.05rem;margin:.2rem 0 .5rem}
  .prof p{color:var(--muted);font-size:.76rem;text-align:justify}
  .catlist{list-style:none;padding:0;margin:0;font-size:.82rem}
  .catlist li{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px dashed var(--line)}
  .catlist li:last-child{border-bottom:0}
  .catlist .sub{padding-inline-start:1rem;color:var(--muted);font-size:.78rem}
  .catlist b{color:var(--muted);font-weight:500}
  .ranklist{list-style:none;padding:0;margin:0;counter-reset:r}
  .ranklist li{display:flex;gap:.7rem;padding:.6rem 0;border-bottom:1px dashed var(--line);font-size:.8rem;line-height:1.6}
  .ranklist li:last-child{border-bottom:0}
  .ranklist li::before{counter-increment:r;content:counter(r);flex:0 0 auto;width:22px;height:22px;background:var(--terracotta);color:#fff;font-family:var(--latin);font-weight:600;border-radius:3px;display:grid;place-items:center;font-size:.78rem}
  .cal{list-style:none;padding:0;margin:0;font-size:.82rem}
  .cal li{display:grid;grid-template-columns:2.4rem 1fr;gap:.6rem;padding:.45rem 0;border-bottom:1px dashed var(--line)}
  .cal li:last-child{border-bottom:0}
  .cal b{font-family:var(--serif);color:var(--green-deep)}
  /* ------- Article page ------- */
  .crumb{font-size:.72rem;color:var(--muted);padding-block:.9rem;border-bottom:1px solid var(--line)}
  .crumb a:hover{color:var(--green)}
  .crumb span{margin-inline:.4rem;color:var(--line)}
  .art-head .tags{display:flex;gap:.5rem;margin-bottom:.9rem}
  .art-head .tags a{background:var(--green);color:#fff;font-size:.68rem;padding:.22rem .6rem;border-radius:3px}
  .art-head .tags a.alt{background:var(--panel);color:var(--green-deep);border:1px solid var(--line)}
  .art-title{font-size:clamp(1.35rem,1rem + 1.8vw,1.9rem);line-height:1.5}
  .art-meta{color:var(--muted);font-size:.74rem;margin-top:.8rem;display:flex;gap:1rem;flex-wrap:wrap}
  .eyecatch{margin:1.4rem 0}
  .lead{font-size:.92rem;line-height:2}
  .toc{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:1.1rem 1.3rem;margin:1.5rem 0}
  .toc h4{text-align:center;font-size:.9rem;margin-bottom:.6rem}
  .toc ol{margin:0;padding-inline-start:1.2rem;font-size:.83rem;line-height:1.9}
  .toc ol ol{padding-inline-start:1rem;color:var(--muted);list-style:disc}
  .prose h2{font-size:1.15rem;color:#fff;background:var(--green);padding:.6rem .9rem;border-radius:var(--radius);margin:2.2rem 0 1rem}
  .prose h3{font-size:1.02rem;color:var(--green-deep);border-inline-start:3px solid var(--gold);padding-inline-start:.7rem;margin:1.6rem 0 .7rem}
  .prose p{margin:.9rem 0}
  .point{background:var(--panel);border:1px dashed var(--green-soft);border-radius:6px;padding:.9rem 1.1rem;margin:1.1rem 0;font-size:.85rem}
  .point b{display:block;color:var(--terracotta);font-size:.72rem;letter-spacing:.06em;margin-bottom:.3rem}
  .prose table{margin:1.1rem 0;font-size:.82rem;background:var(--paper);border:1px solid var(--line)}
  .prose th{background:var(--green);color:#fff;font-weight:600;text-align:start;padding:.6rem .8rem}
  .prose td{border-top:1px solid var(--line);padding:.6rem .8rem}
  .prose tbody tr:nth-child(even){background:color-mix(in srgb,var(--panel) 55%,transparent)}
  .food-card{display:flex;gap:1rem;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:1rem;margin:1.3rem 0}
  .food-card .ph{width:84px;height:84px;flex:0 0 auto;border-radius:4px}
  .food-card h4{font-size:.92rem;margin-bottom:.35rem}
  .food-card .mini{display:flex;gap:.4rem;margin-bottom:.4rem}
  .food-card .mini span{background:var(--panel);border:1px solid var(--line);font-size:.68rem;padding:.1rem .45rem;border-radius:3px;color:var(--green-deep)}
  .food-card p{font-size:.78rem;color:var(--muted);margin:0}
  .disclaimer{border:1px dashed var(--line);color:var(--muted);font-size:.74rem;border-radius:6px;padding:.9rem 1.1rem;margin:1.6rem 0;line-height:1.8}
  .author{display:flex;gap:1.1rem;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:1.1rem;margin:1.4rem 0}
  .author .ph{width:72px;height:72px;border-radius:50%;flex:0 0 auto}
  .author .nm{font-family:var(--serif);font-size:1rem}
  .author .role{color:var(--terracotta);font-size:.72rem;margin-inline-start:.5rem}
  .author p{font-size:.78rem;color:var(--muted);margin:.4rem 0 0}
  .related{margin-top:1.8rem}
  .related-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;margin-top:1rem}
  /* sidebar sticky toc */
  .side .toc-live ol{list-style:decimal;padding-inline-start:1.2rem;font-size:.8rem;line-height:1.9;margin:0}
  .side .toc-live a:hover{color:var(--green)}
  .kana{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.7rem}
  .kana span{border:1px solid var(--line);background:var(--bg);border-radius:4px;padding:.15rem .5rem;font-size:.74rem;color:var(--muted)}
  /* footer */
  .site-foot{background:var(--green-deep);color:color-mix(in srgb,#fff 82%,transparent);margin-top:clamp(2.6rem,6vw,4.4rem)}
  .foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr 1fr;gap:2rem;padding-block:clamp(2.2rem,5vw,3.4rem)}
  .foot-brand b{font-family:var(--latin);font-size:1.5rem;letter-spacing:.2em;color:#fff;display:block}
  .foot-brand span{font-family:var(--serif);font-size:.66rem;color:color-mix(in srgb,#fff 55%,transparent)}
  .foot-col h5{font-size:.8rem;color:#fff;margin-bottom:.8rem;font-weight:600;font-family:var(--sans)}
  .foot-col ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem;font-size:.78rem}
  .foot-col a:hover{color:#fff}
  .foot-bottom{border-top:1px solid color-mix(in srgb,#fff 12%,transparent);padding-block:1.1rem;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.68rem;color:color-mix(in srgb,#fff 50%,transparent)}
}
@layer utilities {
  @media (max-width:1000px){
    .type-grid{grid-template-columns:repeat(3,1fr)}
    .lib-cats{grid-template-columns:repeat(2,1fr)}
    .layout{grid-template-columns:1fr}
    .side{position:static}
    .foot-top{grid-template-columns:1fr 1fr}
  }
  @media (max-width:720px){
    .head-nav,.head-tools .search-pill,.head-tools .btn{display:none}
    .nav-toggle{display:flex;margin-inline-start:auto}
    .head-nav.open{display:flex;position:absolute;inset-inline:0;top:100%;background:var(--paper);flex-direction:column;gap:0;border-bottom:1px solid var(--line);padding:.4rem 1.2rem}
    .head-nav.open a{padding:.7rem 0;border-bottom:1px solid var(--line-soft)}
    .art-grid,.pick-grid,.related-grid{grid-template-columns:1fr}
    .type-grid{grid-template-columns:repeat(3,1fr);gap:.7rem}
    .lib-cats{grid-template-columns:1fr 1fr}
    .season{grid-template-columns:1fr}
    .season-mark{border-inline-end:0;border-bottom:1px solid var(--line);padding:0 0 .8rem}
    .foot-top{grid-template-columns:1fr}
    .hero-note{position:static;display:block;margin-top:1.5rem}
    .food-card{flex-direction:column;text-align:center}
  }
}

/* --- scroll reveal (簡単なアニメーション) --- */
@media (prefers-reduced-motion: no-preference){
  body.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
  body.js .reveal.in{opacity:1;transform:none}
  .hero h1,.hero p,.hero .btn{animation:heroUp .9s ease both}
  .hero p{animation-delay:.12s}.hero .btn{animation-delay:.24s}
  @keyframes heroUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
}
