:root{--ink:#172033;--muted:#637083;--line:#e7eaf0;--bg:#f7f8fb;--brand:#14213d;--accent:#fca311;--white:#fff;--radius:18px;--shadow:0 12px 30px rgba(23,32,51,.08)}
*{box-sizing:border-box}body{margin:0;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic",Meiryo,sans-serif;line-height:1.8;background:var(--white)}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;vertical-align:middle}.container{width:min(1120px,92vw);margin:auto}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;background:#fff;padding:.6rem;z-index:99}.site-header{position:sticky;top:0;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);z-index:50}.header-inner{display:flex;align-items:center;justify-content:space-between;padding:14px 0}.site-title{font-size:1.55rem;font-weight:900;letter-spacing:.02em}.brand p{margin:0;color:var(--muted);font-size:.82rem}.primary-menu ul{display:flex;gap:20px;list-style:none;margin:0;padding:0}.primary-menu a{font-weight:700;font-size:.94rem}.menu-toggle{display:none;border:1px solid var(--line);background:#fff;border-radius:999px;padding:.5rem .8rem}.breadcrumbs{width:min(1120px,92vw);margin:14px auto 0;font-size:.84rem;color:var(--muted)}.breadcrumbs ol{display:flex;gap:.55rem;list-style:none;padding:0;margin:0;flex-wrap:wrap}.breadcrumbs li:not(:last-child)::after{content:"/";margin-left:.55rem}.hero{background:linear-gradient(135deg,#f6f8ff,#fff4df);padding:72px 0}.hero-inner{max-width:880px}.eyebrow{font-weight:800;color:var(--accent);letter-spacing:.08em;text-transform:uppercase}.hero h1{font-size:clamp(2rem,5vw,4rem);line-height:1.25;margin:.2em 0}.hero p{font-size:1.1rem;color:var(--muted)}.search-form{display:flex;gap:10px;margin-top:20px}.search-form label{flex:1}.search-form input{width:100%;border:1px solid var(--line);border-radius:999px;padding:14px 18px;font-size:1rem}.search-form button,.lx-cta a{border:0;background:var(--brand);color:#fff;border-radius:999px;padding:12px 20px;font-weight:800}.section{padding:52px 0}.section h2,.archive-head h1{font-size:clamp(1.6rem,3vw,2.2rem);margin:0 0 24px}.card-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.card-thumb{display:block;aspect-ratio:1.52;background:var(--bg);display:grid;place-items:center;font-weight:900;color:var(--muted)}.card-body{padding:16px}.card h3{font-size:1.05rem;line-height:1.55;margin:.5rem 0}.card p{color:var(--muted);font-size:.92rem}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{background:#fff4df;color:#8a5600;border-radius:999px;padding:.16rem .55rem;font-size:.75rem;font-weight:700}.category-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.category-card{padding:24px;border-radius:var(--radius);background:var(--bg);border:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.category-card span{font-weight:900}.layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:36px;padding:48px 0}.article{max-width:820px}.article h1{font-size:clamp(1.8rem,4vw,3rem);line-height:1.35;margin:.4em 0}.post-meta{display:flex;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:.9rem;border-bottom:1px solid var(--line);padding-bottom:16px}.featured{margin:28px 0}.featured img{border-radius:var(--radius);box-shadow:var(--shadow)}.toc-note,.author-box,.lx-cta{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin:24px 0}.entry-content h2{font-size:1.65rem;margin-top:2.2em;border-left:5px solid var(--accent);padding-left:.7em}.entry-content h3{font-size:1.28rem;margin-top:1.8em;background:#f5f7fb;border-radius:12px;padding:.65em .85em}.entry-content p{margin:1.05em 0}.entry-content ul,.entry-content ol{padding-left:1.5em}.entry-content table{width:100%;border-collapse:collapse;margin:24px 0}.entry-content th,.entry-content td{border:1px solid var(--line);padding:12px}.entry-content th{background:var(--bg)}.lx-cta{display:flex;justify-content:space-between;gap:18px;align-items:center;background:#fff9ec}.lx-cta strong{font-size:1.15rem}.lx-faq{border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:14px 0;background:#fff}.lx-faq summary{font-weight:900;cursor:pointer}.sidebar .widget{border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:18px;background:#fff}.widget-title,.widget h3{margin-top:0}.site-footer{margin-top:60px;background:var(--brand);color:#fff;padding:36px 0 18px}.footer-grid{display:flex;justify-content:space-between;gap:24px}.site-footer ul{list-style:none;margin:0;padding:0;display:flex;gap:18px;flex-wrap:wrap}.copyright{text-align:center;margin-top:24px;color:rgba(255,255,255,.72);font-size:.85rem}.screen-reader-text{position:absolute;left:-9999px}.pagination{margin-top:28px}.nav-links{display:flex;gap:10px;justify-content:center}.page-numbers{padding:.4rem .75rem;border:1px solid var(--line);border-radius:8px}.current{background:var(--brand);color:#fff}
@media(max-width:900px){.menu-toggle{display:block}.primary-menu{display:none;position:absolute;top:70px;left:4vw;right:4vw;background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow)}.primary-menu.is-open{display:block}.primary-menu ul{display:block}.primary-menu li{padding:10px 0;border-bottom:1px solid var(--line)}.card-grid{grid-template-columns:repeat(2,1fr)}.category-grid{grid-template-columns:1fr}.layout{grid-template-columns:1fr}.sidebar{order:2}.footer-grid{display:block}.lx-cta{display:block}.lx-cta a{display:inline-block;margin-top:12px}}
@media(max-width:560px){.hero{padding:46px 0}.search-form{display:block}.search-form button{width:100%;margin-top:10px}.card-grid{grid-template-columns:1fr}.article h1{font-size:1.75rem}.post-meta{display:block}.entry-content h2{font-size:1.35rem}.entry-content h3{font-size:1.1rem}.header-inner{align-items:flex-start}.brand p{max-width:220px}}
.category-tree-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.category-tree-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow);padding:20px}.category-tree-title{display:block;font-size:1.08rem;font-weight:900;margin-bottom:10px}.category-tree-children{display:flex;gap:8px;flex-wrap:wrap}.category-tree-children a,.area-children a,.area-chip{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:.28rem .7rem;font-size:.82rem;background:var(--bg);font-weight:700;color:var(--ink)}.category-grid.compact{grid-template-columns:repeat(4,1fr)}.area-filter{border:1px solid var(--line);border-radius:var(--radius);padding:22px;background:var(--bg)}.area-filter h2{margin-bottom:16px}.area-filter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.area-filter-group{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px}.area-parent{display:block;font-weight:900;margin-bottom:10px}.area-children{display:flex;gap:8px;flex-wrap:wrap}.area-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.area-chip{background:#eef6ff;color:#214c78;border-color:#d6e8f8}.card .area-chip{font-size:.72rem;padding:.12rem .5rem}
@media(max-width:900px){.category-tree-grid,.area-filter-grid,.category-grid.compact{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.category-tree-grid,.area-filter-grid,.category-grid.compact{grid-template-columns:1fr}.area-filter{padding:16px}}


/* v1.2: improved hero readability and mobile hamburger menu */
.hero{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 85% 18%, rgba(252,163,17,.18), transparent 30%),
    linear-gradient(135deg,#f8fafc 0%,#fff7e8 100%);
  padding:86px 0 78px;
}
.hero::before{
  content:"";
  position:absolute;
  inset:22px;
  border-radius:28px;
  background:rgba(255,255,255,.54);
  border:1px solid rgba(231,234,240,.72);
  pointer-events:none;
}
.hero-inner{
  position:relative;
  max-width:900px;
  padding:8px 0;
}
.hero h1{
  max-width:760px;
  color:var(--ink);
  letter-spacing:.02em;
  text-wrap:balance;
}
.hero p:not(.eyebrow){
  max-width:820px;
  color:#4f5d70;
  font-weight:500;
}
.eyebrow{
  color:#506785;
  font-weight:900;
}
.hero .search-form{
  max-width:760px;
}
.hero .search-form input{
  background:rgba(255,255,255,.96);
  box-shadow:0 8px 20px rgba(23,32,51,.06);
}
.menu-toggle{
  align-items:center;
  gap:8px;
  font-weight:800;
  color:var(--ink);
}
.menu-toggle .hamburger-lines{
  position:relative;
  width:20px;
  height:14px;
  display:inline-block;
}
.menu-toggle .hamburger-lines::before,
.menu-toggle .hamburger-lines::after,
.menu-toggle .hamburger-lines span{
  content:"";
  position:absolute;
  left:0;
  width:20px;
  height:2px;
  border-radius:2px;
  background:var(--ink);
  transition:transform .2s ease, opacity .2s ease, top .2s ease;
}
.menu-toggle .hamburger-lines::before{top:0}
.menu-toggle .hamburger-lines span{top:6px}
.menu-toggle .hamburger-lines::after{top:12px}
.menu-toggle[aria-expanded="true"] .hamburger-lines::before{top:6px;transform:rotate(45deg)}
.menu-toggle[aria-expanded="true"] .hamburger-lines span{opacity:0}
.menu-toggle[aria-expanded="true"] .hamburger-lines::after{top:6px;transform:rotate(-45deg)}
@media(max-width:900px){
  .header-inner{position:relative;align-items:center;padding:12px 0}
  .menu-toggle{display:inline-flex;position:relative;z-index:70;padding:.55rem .8rem;background:#fff;box-shadow:0 8px 20px rgba(23,32,51,.06)}
  .primary-menu{top:calc(100% + 10px);left:auto;right:0;width:min(360px,92vw);z-index:65;padding:10px 16px}
  .primary-menu ul{display:block}
  .primary-menu a{display:block;padding:4px 0;font-size:1rem}
}
@media(max-width:560px){
  .site-header{position:sticky}
  .site-title{font-size:1.35rem}
  .brand p{font-size:.72rem;max-width:210px;line-height:1.45}
  .menu-toggle .menu-label{display:none}
  .menu-toggle{padding:.68rem;border-radius:14px}
  .hero{padding:54px 0 48px}
  .hero::before{inset:12px;border-radius:22px}
  .hero h1{font-size:clamp(1.85rem,10vw,2.65rem);line-height:1.28;margin:.35em 0}
  .hero p:not(.eyebrow){font-size:.98rem;line-height:1.85}
  .hero .search-form{margin-top:18px}
}


/* v1.3: category icons + full-screen mobile menu */
body.menu-open{overflow:hidden}
.category-tree-card{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:12px;min-height:240px}
.category-tree-icon-wrap{display:inline-flex;width:78px;height:78px;border-radius:22px;overflow:hidden;box-shadow:0 10px 24px rgba(23,32,51,.08);background:#fff}
.category-tree-icon{width:100%;height:100%;object-fit:cover;display:block}
.category-tree-title{margin-bottom:0}
.category-tree-card p{margin:.25rem 0 0;color:var(--muted);font-weight:700}

@media(max-width:900px){
  .site-header{z-index:120}
  .header-inner{position:relative;z-index:120}
  .menu-toggle{position:relative;z-index:140}
  .primary-menu{display:none;position:fixed;inset:0;width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;padding:108px 24px 32px;background:rgba(255,255,255,.98);backdrop-filter:blur(10px);box-shadow:none;overflow-y:auto;z-index:130}
  .primary-menu.is-open{display:block}
  .primary-menu ul{display:flex;flex-direction:column;gap:0;min-height:calc(100dvh - 140px);justify-content:flex-start}
  .primary-menu li{padding:0;border-bottom:1px solid var(--line)}
  .primary-menu li:first-child{border-top:1px solid var(--line)}
  .primary-menu a{display:block;padding:18px 0;font-size:1.28rem;line-height:1.45;font-weight:900}
  .category-tree-card{min-height:auto}
}
@media(max-width:560px){
  .menu-toggle{padding:.72rem;border-radius:18px;background:#fff}
  .primary-menu{padding:96px 20px 28px}
  .primary-menu a{font-size:1.15rem;padding:16px 0}
  .category-tree-icon-wrap{width:72px;height:72px}
}


/* v1.5: better balanced category cards */
.category-tree-card{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  gap:18px;
  min-height:340px;
  padding:28px 26px;
  text-align:center;
}
.category-tree-head{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  width:100%;
}
.category-tree-icon-wrap{
  width:108px;
  height:108px;
  border-radius:28px;
}
.category-tree-title{
  display:block;
  margin:0;
  font-size:1.45rem;
  line-height:1.4;
  font-weight:900;
}
.category-tree-description{
  margin:0;
  max-width:290px;
  color:var(--muted);
  font-size:.94rem;
  line-height:1.8;
}
.category-tree-children{
  width:100%;
  justify-content:center;
  align-content:flex-start;
  margin-top:auto;
}
.category-tree-children a{
  justify-content:center;
}
.category-tree-more{
  margin-top:auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-weight:800;
  color:var(--brand);
}
@media(max-width:900px){
  .category-tree-card{
    min-height:300px;
    padding:24px 20px;
  }
  .category-tree-icon-wrap{
    width:92px;
    height:92px;
    border-radius:24px;
  }
  .category-tree-title{
    font-size:1.28rem;
  }
}
@media(max-width:560px){
  .category-tree-card{
    min-height:auto;
    padding:22px 18px;
    gap:16px;
  }
  .category-tree-icon-wrap{
    width:84px;
    height:84px;
    border-radius:22px;
  }
  .category-tree-description{
    font-size:.9rem;
  }
}


/* v1.6: Japan map UI for area section */
.area-map-section{
  border:1px solid var(--line);
  border-radius:28px;
  background:linear-gradient(180deg,#fbfcff 0%, #f8fafc 100%);
  padding:28px;
  box-shadow:var(--shadow);
}
.area-map-header{
  margin-bottom:22px;
}
.area-map-header h2{
  margin:0 0 8px;
}
.area-map-header p{
  margin:0;
  color:var(--muted);
}
.japan-tile-map{
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  gap:14px;
  align-items:start;
}
.map-region-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:22px;
  padding:16px;
  min-height:120px;
  box-shadow:0 10px 24px rgba(23,32,51,.05);
}
.map-region-card .area-parent{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:1.05rem;
  font-weight:900;
  color:var(--brand);
  margin-bottom:12px;
}
.map-region-card .area-children{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.map-region-card .area-children a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--line);
  border-radius:999px;
  padding:.34rem .72rem;
  background:#fff;
  color:var(--ink);
  font-size:.82rem;
  font-weight:700;
}
.area-pos-hokkaido{grid-column:9 / span 3; grid-row:1;}
.area-pos-tohoku{grid-column:8 / span 3; grid-row:2;}
.area-pos-kanto{grid-column:8 / span 3; grid-row:3;}
.area-pos-chubu{grid-column:5 / span 4; grid-row:3;}
.area-pos-kinki{grid-column:4 / span 3; grid-row:4;}
.area-pos-chugoku{grid-column:1 / span 4; grid-row:4;}
.area-pos-shikoku{grid-column:3 / span 3; grid-row:5;}
.area-pos-kyushu{grid-column:1 / span 4; grid-row:6;}
@media(max-width:1100px){
  .japan-tile-map{grid-template-columns:repeat(8,1fr)}
  .area-pos-hokkaido{grid-column:6 / span 3; grid-row:1;}
  .area-pos-tohoku{grid-column:5 / span 3; grid-row:2;}
  .area-pos-kanto{grid-column:5 / span 3; grid-row:3;}
  .area-pos-chubu{grid-column:2 / span 4; grid-row:3;}
  .area-pos-kinki{grid-column:2 / span 3; grid-row:4;}
  .area-pos-chugoku{grid-column:1 / span 3; grid-row:5;}
  .area-pos-shikoku{grid-column:3 / span 3; grid-row:5;}
  .area-pos-kyushu{grid-column:1 / span 4; grid-row:6;}
}
@media(max-width:780px){
  .area-map-section{padding:20px}
  .japan-tile-map{grid-template-columns:1fr 1fr; gap:12px}
  .area-pos-hokkaido,.area-pos-tohoku,.area-pos-kanto,.area-pos-chubu,.area-pos-kinki,.area-pos-chugoku,.area-pos-shikoku,.area-pos-kyushu{grid-column:auto; grid-row:auto}
  .map-region-card{min-height:auto}
}
@media(max-width:560px){
  .japan-tile-map{grid-template-columns:1fr}
  .area-map-section{padding:18px; border-radius:22px}
}


/* v1.7: more map-like area UI, active colors, article counts */
.area-map-section{
  padding:30px;
  overflow:hidden;
}
.area-map-header p{
  max-width:760px;
  line-height:1.8;
}
.japan-map-canvas{
  position:relative;
  min-height:860px;
  border-radius:28px;
  background:
    radial-gradient(circle at 84% 12%, rgba(20,33,61,.05), transparent 18%),
    radial-gradient(circle at 14% 82%, rgba(252,163,17,.08), transparent 22%),
    linear-gradient(180deg,#fbfdff 0%, #f4f8fc 100%);
  border:1px solid rgba(231,234,240,.8);
  overflow:hidden;
}
.japan-map-silhouette{
  position:absolute;
  inset:0;
  background:
    linear-gradient(90deg, transparent 0 62%, rgba(20,33,61,.035) 62% 64%, transparent 64% 100%),
    radial-gradient(circle at 76% 12%, rgba(20,33,61,.06) 0 4.5%, transparent 4.6%),
    radial-gradient(circle at 70% 24%, rgba(20,33,61,.05) 0 5.5%, transparent 5.6%),
    radial-gradient(circle at 68% 37%, rgba(20,33,61,.05) 0 6%, transparent 6.1%),
    radial-gradient(circle at 55% 43%, rgba(20,33,61,.05) 0 6.5%, transparent 6.6%),
    radial-gradient(circle at 43% 52%, rgba(20,33,61,.05) 0 5.3%, transparent 5.4%),
    radial-gradient(circle at 28% 53%, rgba(20,33,61,.05) 0 5.8%, transparent 5.9%),
    radial-gradient(circle at 35% 65%, rgba(20,33,61,.05) 0 4.4%, transparent 4.5%),
    radial-gradient(circle at 22% 76%, rgba(20,33,61,.05) 0 6.8%, transparent 6.9%),
    radial-gradient(circle at 12% 92%, rgba(20,33,61,.05) 0 3.2%, transparent 3.3%);
  pointer-events:none;
  opacity:.9;
}
.japan-map-flow{
  position:absolute;
  left:56%; top:11%; bottom:14%;
  width:2px;
  background:linear-gradient(180deg, rgba(20,33,61,.10), rgba(20,33,61,.03));
  pointer-events:none;
}
.map-region-card{
  position:absolute;
  min-width:220px;
  max-width:300px;
  padding:18px;
  border-radius:24px;
  border:1px solid rgba(209,216,227,.95);
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(8px);
  box-shadow:0 18px 36px rgba(23,32,51,.08);
  transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.map-region-card:hover{
  transform:translateY(-2px);
  box-shadow:0 22px 42px rgba(23,32,51,.10);
}
.map-region-card.is-active{
  border-color:#355d96;
  box-shadow:0 20px 44px rgba(20,33,61,.15);
}
.map-region-card::after{
  content:"";
  position:absolute;
  inset:auto auto -18px 18px;
  width:48px;
  height:2px;
  background:linear-gradient(90deg, rgba(20,33,61,.18), transparent);
  opacity:.55;
}
.map-region-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px;
}
.map-region-card .area-parent{
  margin:0;
  font-size:1.08rem;
}
.area-parent-count{
  display:inline-flex;
  align-items:flex-end;
  gap:2px;
  min-width:52px;
  justify-content:center;
  padding:6px 10px;
  border-radius:999px;
  background:#eef4fb;
  color:#214c78;
  font-weight:900;
  line-height:1;
}
.area-parent-count small{
  font-size:.72rem;
  font-weight:800;
}
.map-region-card .area-children{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.area-pref-chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:.38rem .72rem;
  border:1px solid var(--line);
  border-radius:999px;
  background:#fff;
  color:var(--ink);
  font-size:.82rem;
  font-weight:800;
  transition:background .18s ease, color .18s ease, border-color .18s ease, transform .18s ease;
}
.area-pref-chip:hover,
.area-pref-chip:focus-visible{
  background:#eef4fb;
  color:#173969;
  border-color:#b8cbe4;
  transform:translateY(-1px);
}
.area-pref-chip:active{
  background:#173969;
  color:#fff;
  border-color:#173969;
}
.area-pref-chip.is-active{
  background:#14213d;
  color:#fff;
  border-color:#14213d;
  box-shadow:0 8px 18px rgba(20,33,61,.18);
}
.pref-count{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:22px;
  padding:0 6px;
  border-radius:999px;
  background:#fff4df;
  color:#8a5600;
  font-size:.72rem;
  font-weight:900;
}
.area-pref-chip.is-active .pref-count,
.area-pref-chip:active .pref-count{
  background:rgba(255,255,255,.18);
  color:#fff;
}
.area-pos-hokkaido{right:58px; top:28px; width:250px;}
.area-pos-tohoku{right:112px; top:170px; width:250px;}
.area-pos-kanto{right:98px; top:338px; width:280px;}
.area-pos-chubu{right:330px; top:328px; width:300px;}
.area-pos-kinki{right:408px; top:508px; width:286px;}
.area-pos-chugoku{left:56px; top:492px; width:286px;}
.area-pos-shikoku{left:188px; top:658px; width:240px;}
.area-pos-kyushu{left:44px; top:722px; width:296px;}
.area-pos-hokkaido::after{left:-46px; bottom:34px; width:44px; transform:rotate(8deg);}
.area-pos-tohoku::after{left:-38px; bottom:30px; width:36px; transform:rotate(12deg);}
.area-pos-kanto::after{left:-54px; bottom:38px; width:52px; transform:rotate(-8deg);}
.area-pos-chubu::after{left:-42px; bottom:46px; width:40px; transform:rotate(-12deg);}
.area-pos-kinki::after{left:-54px; bottom:38px; width:52px; transform:rotate(8deg);}
.area-pos-shikoku::after{left:-46px; bottom:28px; width:44px; transform:rotate(3deg);}
.area-pos-kyushu::after{left:40px; bottom:-18px; width:48px; transform:rotate(25deg);}
@media(max-width:1180px){
  .japan-map-canvas{min-height:950px}
  .map-region-card{max-width:280px}
  .area-pos-hokkaido{right:32px}
  .area-pos-tohoku{right:72px}
  .area-pos-kanto{right:54px}
  .area-pos-chubu{right:264px}
  .area-pos-kinki{right:322px}
  .area-pos-chugoku{left:28px}
}
@media(max-width:980px){
  .japan-map-canvas{display:grid;grid-template-columns:1fr 1fr;gap:14px;min-height:auto;padding:14px}
  .japan-map-silhouette,.japan-map-flow{display:none}
  .map-region-card{position:relative;left:auto;right:auto;top:auto;bottom:auto;width:auto;max-width:none;min-width:0}
  .map-region-card::after{display:none}
}
@media(max-width:640px){
  .area-map-section{padding:18px}
  .japan-map-canvas{grid-template-columns:1fr}
  .map-region-top{align-items:flex-start}
}


/* v1.8: show full featured image on single post without cropping */
.single .featured,
.single-case .featured {
  width: 100%;
  margin: 28px 0;
  overflow: visible;
}

.single .featured img,
.single-case .featured img {
  display: block;
  width: 100%;
  height: auto;
  max-height: none;
  object-fit: contain;
  object-position: center center;
  border-radius: var(--radius);
}

.article .featured {
  aspect-ratio: auto;
}

@media(max-width:560px){
  .single .featured,
  .single-case .featured {
    margin: 20px 0;
  }
}


/* v1.8.1: prevent overlap in area map cards on medium desktop widths */
.japan-map-canvas{
  min-height:980px;
}
.map-region-card{
  max-width:280px;
}
.area-pos-hokkaido{right:48px; top:26px; width:240px;}
.area-pos-tohoku{right:92px; top:168px; width:238px;}
.area-pos-kanto{right:84px; top:338px; width:260px;}
.area-pos-chubu{right:332px; top:334px; width:260px;}
.area-pos-kinki{right:392px; top:530px; width:258px;}
.area-pos-chugoku{left:48px; top:506px; width:258px;}
.area-pos-shikoku{left:172px; top:686px; width:228px;}
.area-pos-kyushu{left:42px; top:770px; width:270px;}

@media(max-width:1320px){
  .japan-map-canvas{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:16px;
    min-height:auto;
    padding:16px;
  }
  .japan-map-silhouette,
  .japan-map-flow{display:none}
  .map-region-card{
    position:relative;
    left:auto;
    right:auto;
    top:auto;
    bottom:auto;
    width:auto;
    max-width:none;
    min-width:0;
  }
  .map-region-card::after{display:none}
}
@media(max-width:720px){
  .japan-map-canvas{
    grid-template-columns:1fr;
  }
}


/* v1.8.2: use original featured image ratio on single posts */
.single .article .featured,
.single-case .article .featured {
  display: block;
  width: 100%;
  margin: 28px 0;
  overflow: visible;
  background: transparent;
  border-radius: var(--radius);
}

.single .article .featured img,
.single-case .article .featured img {
  display: block;
  width: 100%;
  height: auto !important;
  aspect-ratio: auto !important;
  object-fit: contain !important;
  object-position: center center !important;
  border-radius: var(--radius);
}

.single .article .featured img[class*="wp-image"],
.single-case .article .featured img[class*="wp-image"] {
  max-height: none !important;
}


/* v1.9: use provided Japan map image for area UI */
.area-map-section{
  border:1px solid var(--line);
  border-radius:28px;
  background:linear-gradient(180deg,#fbfcff 0%, #f8fafc 100%);
  padding:28px;
  box-shadow:var(--shadow);
}
.area-map-layout{
  display:grid;
  grid-template-columns:minmax(0, 1.08fr) minmax(320px, .92fr);
  gap:22px;
  align-items:start;
}
.area-map-visual{
  margin:0;
  background:#fff;
  border:1px solid var(--line);
  border-radius:24px;
  padding:14px;
  box-shadow:0 10px 24px rgba(23,32,51,.05);
}
.area-map-visual img{
  display:block;
  width:100%;
  height:auto;
  border-radius:18px;
}
.area-map-region-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:14px;
  align-content:start;
}
.map-region-card{
  position:relative;
  min-width:0;
  max-width:none;
  width:auto;
  padding:18px;
  border-radius:22px;
  border:1px solid rgba(209,216,227,.95);
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(8px);
  box-shadow:0 12px 26px rgba(23,32,51,.06);
}
.map-region-card::after{display:none}
.map-region-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}
.map-region-card .area-parent{
  display:inline-flex;
  align-items:center;
  font-size:1.05rem;
  font-weight:900;
  color:var(--brand);
}
.area-parent-count{
  display:inline-flex;
  align-items:flex-end;
  justify-content:center;
  gap:2px;
  min-width:52px;
  padding:6px 10px;
  border-radius:999px;
  background:#eef4fb;
  color:#214c78;
  font-weight:900;
  line-height:1;
}
.area-parent-count small{font-size:.72rem;font-weight:800}
.map-region-card .area-children{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.area-pref-chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:.38rem .72rem;
  border:1px solid var(--line);
  border-radius:999px;
  background:#fff;
  color:var(--ink);
  font-size:.82rem;
  font-weight:800;
  transition:background .18s ease, color .18s ease, border-color .18s ease, transform .18s ease;
}
.area-pref-chip:hover,
.area-pref-chip:focus-visible{
  background:#eef4fb;
  color:#173969;
  border-color:#b8cbe4;
  transform:translateY(-1px);
}
.area-pref-chip:active,
.area-pref-chip.is-active{
  background:#14213d;
  color:#fff;
  border-color:#14213d;
  box-shadow:0 8px 18px rgba(20,33,61,.18);
}
.pref-count{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:22px;
  padding:0 6px;
  border-radius:999px;
  background:#fff4df;
  color:#8a5600;
  font-size:.72rem;
  font-weight:900;
}
.area-pref-chip.is-active .pref-count,
.area-pref-chip:active .pref-count{
  background:rgba(255,255,255,.18);
  color:#fff;
}
@media(max-width:1100px){
  .area-map-layout{grid-template-columns:1fr}
}
@media(max-width:640px){
  .area-map-section{padding:18px}
  .area-map-visual{padding:10px}
  .map-region-card{padding:16px}
}


/* v1.9.1: area shortcuts, ordered cards, stronger prefecture navigation */
.area-map-left{display:flex;flex-direction:column;gap:14px}
.area-shortcuts{display:flex;flex-wrap:wrap;gap:10px}
.area-shortcut{
  display:inline-flex;align-items:center;justify-content:center;
  padding:.62rem 1rem;border-radius:999px;font-weight:800;
  border:1px solid var(--line);background:#fff;color:var(--ink);
  box-shadow:0 8px 20px rgba(23,32,51,.04);
}
.area-shortcut:hover,.area-shortcut:focus-visible{transform:translateY(-1px);border-color:#b8cbe4;background:#eef4fb;color:#173969}
.area-shortcut.is-active{background:#14213d;color:#fff;border-color:#14213d}
.area-map-region-grid{display:grid;grid-template-columns:1fr;gap:14px;align-content:start}
.map-region-card{scroll-margin-top:110px}
.map-region-card.region-hokkaido{background:linear-gradient(180deg,#fcfbff 0%, #f5f2ff 100%);border-color:#d9d3ff}
.map-region-card.region-tohoku{background:linear-gradient(180deg,#fbfdff 0%, #eef5ff 100%);border-color:#cfe0ff}
.map-region-card.region-kanto{background:linear-gradient(180deg,#fbfff9 0%, #eef9ec 100%);border-color:#d7ebd0}
.map-region-card.region-chubu{background:linear-gradient(180deg,#fbfff5 0%, #f3fae3 100%);border-color:#dbe9b7}
.map-region-card.region-kinki{background:linear-gradient(180deg,#fffef9 0%, #fff5dc 100%);border-color:#f0dfaa}
.map-region-card.region-chugoku{background:linear-gradient(180deg,#fffdfa 0%, #fff1d8 100%);border-color:#f1d29d}
.map-region-card.region-shikoku{background:linear-gradient(180deg,#fffbfd 0%, #ffe8ee 100%);border-color:#f0c4cf}
.map-region-card.region-kyushu-okinawa{background:linear-gradient(180deg,#fffafb 0%, #ffe8e8 100%);border-color:#f0c2c2}
.area-region-actions{margin-top:14px;padding-top:12px;border-top:1px dashed rgba(23,32,51,.12)}
.area-region-link{display:inline-flex;align-items:center;font-weight:800;color:#173969}
.area-region-link::after{content:"→";margin-left:.45rem}
.area-region-link:hover{opacity:.8}
.area-archive-head{padding-bottom:24px}
.area-archive-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.area-back-link{display:inline-flex;align-items:center;justify-content:center;padding:.72rem 1rem;border-radius:999px;background:#14213d;color:#fff;font-weight:800}
.area-back-link.is-secondary{background:#eef4fb;color:#173969}
.area-sibling-section{padding-top:0}
.area-sibling-chips{display:flex;flex-wrap:wrap;gap:10px}
@media(max-width:640px){
  .area-shortcuts{gap:8px}
  .area-shortcut{padding:.55rem .9rem;font-size:.92rem}
  .area-archive-links{flex-direction:column;align-items:flex-start}
}


/* v1.9.2: keep Kinki/Kanto/Chubu always visible and toggle other regions */
.area-map-region-grid{grid-template-columns:1fr;gap:14px;align-content:start}
.map-region-card[hidden]{display:none !important}
.area-shortcut{
  appearance:none;
  cursor:pointer;
  font:inherit;
}
.area-shortcut.region-kinki,
.area-shortcut.region-kanto,
.area-shortcut.region-chubu{
  border-color:#cfd8e6;
}
.area-shortcut.is-active{
  background:#14213d;
  color:#fff;
  border-color:#14213d;
}
@media(max-width:1100px){
  .area-map-layout{grid-template-columns:1fr}
}


/* v1.9.3: tighten category child chips under descriptions */
.category-tree-card {
  justify-content: flex-start;
  gap: 16px;
}

.category-tree-head {
  margin-bottom: 0;
}

.category-tree-description {
  margin-bottom: 0;
}

.category-tree-children {
  margin-top: 2px !important;
  align-content: flex-start;
}

.category-tree-more {
  margin-top: 4px !important;
}

@media(min-width:901px){
  .category-tree-card {
    min-height: 300px;
  }

  .category-tree-card:has(.category-tree-children) {
    min-height: 360px;
  }
}

@media(max-width:900px){
  .category-tree-card {
    gap: 14px;
  }

  .category-tree-children {
    margin-top: 0 !important;
  }
}


/* v1.9.4: tighten spacing in category cards, especially pest-control */
.category-tree-card{
  justify-content:flex-start;
}
.category-tree-head{
  margin-bottom:0;
}
.category-tree-description{
  margin-bottom:0;
}
.category-tree-children{
  margin-top:6px !important;
  width:100%;
  justify-content:center;
  align-content:flex-start;
}
.category-tree-card .category-tree-head + .category-tree-children{
  margin-top:4px !important;
}
.category-tree-more{
  margin-top:10px !important;
}
@media(min-width:901px){
  .category-tree-card{
    gap:14px;
  }
}
@media(max-width:900px){
  .category-tree-card{
    gap:12px;
  }
  .category-tree-children{
    margin-top:2px !important;
  }
}


/* v1.10.0: homepage main visual image implementation */
.hero.hero-has-visual{
  background:linear-gradient(180deg,#fbfcff 0%, #fff9ef 100%);
  padding:34px 0 42px;
}
.hero.hero-has-visual::before{
  display:none;
}
.hero-visual-inner{
  max-width:1120px;
  padding:0;
}
.hero-main-visual{
  margin:0;
  border-radius:28px;
  overflow:hidden;
  background:#fff;
  border:1px solid rgba(231,234,240,.9);
  box-shadow:0 18px 38px rgba(23,32,51,.08);
}
.hero-main-visual img{
  display:block;
  width:100%;
  height:auto;
}
.hero-search-wrap{
  max-width:760px;
  margin:22px auto 0;
}
.hero.hero-has-visual .search-form{
  justify-content:center;
}
.hero.hero-has-visual .search-form input{
  background:#fff;
}
@media(max-width:900px){
  .hero.hero-has-visual{
    padding:22px 0 30px;
  }
  .hero-main-visual{
    border-radius:22px;
  }
  .hero-search-wrap{
    margin-top:18px;
    max-width:100%;
  }
}
@media(max-width:560px){
  .hero.hero-has-visual{
    padding:16px 0 24px;
  }
  .hero-main-visual{
    border-radius:18px;
  }
  .hero-search-wrap{
    margin-top:14px;
  }
}


/* v1.10.1: remove hero search, add CTA buttons, improve mobile visual */
html{
  scroll-behavior:smooth;
}
.hero-search-wrap{
  display:none !important;
}
.hero-cta-group{
  display:flex;
  justify-content:center;
  gap:14px;
  flex-wrap:wrap;
  margin:20px auto 0;
}
.hero-cta-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:220px;
  padding:14px 22px;
  border-radius:999px;
  font-weight:900;
  font-size:1rem;
  letter-spacing:.01em;
  border:1px solid transparent;
  box-shadow:0 10px 24px rgba(23,32,51,.08);
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease;
}
.hero-cta-button:hover,
.hero-cta-button:focus-visible{
  transform:translateY(-1px);
  box-shadow:0 14px 30px rgba(23,32,51,.12);
}
.hero-cta-button.is-primary{
  background:var(--brand);
  color:#fff;
}
.hero-cta-button.is-secondary{
  background:#fff;
  color:var(--brand);
  border-color:rgba(20,33,61,.14);
}
.hero.hero-has-visual{
  padding:24px 0 34px;
}
.hero-main-visual{
  border-radius:26px;
}
@media(max-width:900px){
  .hero.hero-has-visual{
    padding:18px 0 28px;
  }
  .hero-main-visual{
    border-radius:20px;
  }
  .hero-cta-group{
    margin-top:16px;
    gap:10px;
  }
  .hero-cta-button{
    min-width:0;
    padding:13px 18px;
  }
}
@media(max-width:560px){
  .hero.hero-has-visual{
    padding:12px 0 22px;
  }
  .hero-visual-inner{
    width:100%;
  }
  .hero-main-visual{
    border-radius:16px;
  }
  .hero-main-visual img{
    width:100%;
    height:auto;
  }
  .hero-cta-group{
    display:grid;
    grid-template-columns:1fr;
    gap:10px;
    margin-top:14px;
  }
  .hero-cta-button{
    width:100%;
    padding:13px 16px;
    font-size:.96rem;
    min-width:0;
  }
}


/* v1.10.2: Contact Form 7 implementation */
.contact-page-head{
  padding-bottom:24px;
}
.contact-page-head p:not(.eyebrow){
  max-width:760px;
  color:var(--muted);
}
.contact-layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) 320px;
  gap:32px;
  align-items:start;
  padding-bottom:56px;
}
.contact-form-card,
.contact-side-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:24px;
  box-shadow:var(--shadow);
}
.contact-form-card{
  padding:28px;
}
.contact-side{
  display:grid;
  gap:18px;
}
.contact-side-card{
  padding:22px;
}
.contact-side-card h2{
  font-size:1.18rem;
  margin:0 0 12px;
}
.contact-side-card ul{
  margin:0;
  padding-left:1.3em;
}
.contact-side-card p{
  margin:0;
  color:var(--muted);
}
.contact-setup-note h2{
  margin-top:0;
}
.contact-setup-note pre{
  background:#f5f7fb;
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px;
  overflow:auto;
}
.wpcf7{
  width:100%;
}
.wpcf7 form{
  display:grid;
  gap:18px;
}
.wpcf7 label{
  display:grid;
  gap:8px;
  color:var(--ink);
  font-weight:800;
}
.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="url"],
.wpcf7 input[type="number"],
.wpcf7 select,
.wpcf7 textarea{
  width:100%;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
  padding:13px 14px;
  font-size:1rem;
  color:var(--ink);
  outline:none;
  transition:border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.wpcf7 textarea{
  min-height:180px;
  resize:vertical;
}
.wpcf7 input:focus,
.wpcf7 select:focus,
.wpcf7 textarea:focus{
  border-color:#9fb6d8;
  box-shadow:0 0 0 4px rgba(20,33,61,.08);
}
.wpcf7 input[type="file"]{
  width:100%;
  border:1px dashed #cbd5e1;
  background:#f8fafc;
  border-radius:14px;
  padding:14px;
}
.wpcf7 .wpcf7-acceptance label{
  display:flex;
  align-items:flex-start;
  gap:10px;
  font-weight:700;
  color:var(--muted);
}
.wpcf7 input[type="submit"]{
  display:inline-flex;
  justify-content:center;
  align-items:center;
  border:0;
  border-radius:999px;
  background:var(--brand);
  color:#fff;
  padding:14px 28px;
  font-weight:900;
  cursor:pointer;
  box-shadow:0 10px 24px rgba(23,32,51,.12);
}
.wpcf7 input[type="submit"]:hover{
  opacity:.92;
}
.wpcf7 form .wpcf7-response-output{
  margin:0;
  padding:14px 16px;
  border-radius:14px;
}
.wpcf7-not-valid-tip{
  color:#b42318;
  font-size:.86rem;
  font-weight:700;
  margin-top:4px;
}
.lx-contact-cta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  background:#fff9ec;
  border:1px solid #f0dfaa;
  border-radius:20px;
  padding:20px;
  margin:24px 0;
}
.lx-contact-cta strong{
  display:block;
  font-size:1.15rem;
}
.lx-contact-cta p{
  margin:.35rem 0 0;
  color:var(--muted);
}
.lx-contact-cta a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  white-space:nowrap;
  border-radius:999px;
  background:var(--brand);
  color:#fff;
  padding:12px 18px;
  font-weight:900;
}
@media(max-width:900px){
  .contact-layout{
    grid-template-columns:1fr;
  }
}
@media(max-width:560px){
  .contact-form-card,
  .contact-side-card{
    border-radius:18px;
    padding:18px;
  }
  .wpcf7 textarea{
    min-height:150px;
  }
  .wpcf7 input[type="submit"]{
    width:100%;
  }
  .lx-contact-cta{
    display:block;
  }
  .lx-contact-cta a{
    width:100%;
    margin-top:12px;
  }
}
