/*
Theme Name: Kaisha Guide
Theme URI: https://kaishaguide.com
Author: Kaisha Guide
Author URI: https://kaishaguide.com
Description: An English-language directory theme for providers who help foreign entrepreneurs set up and run a company in Japan — immigration specialists, incorporation firms, tax accountants and office operators. Presents providers as an objective directory (not a ranking), with fee transparency, credentials and verification dates surfaced as comparable fields.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: kaisha-guide
*/

/* Self-hosted so the site makes no external font requests: no third-party
   connection for readers, and nothing to break if the CDN is unreachable. */
@font-face{
  font-family:"Source Serif 4";
  src:url("fonts/source-serif-4-latin.woff2") format("woff2");
  font-weight:400 700;
  font-style:normal;
  font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root{
  --color-bg:#fdfcfa;
  --color-bg-alt:#f7f4ef;
  --color-bg-tint:#eef1f0;
  --color-primary:#1b4a6b;
  --color-primary-dark:#12324a;
  --color-primary-soft:#4a7a99;
  --color-text:#1f2429;
  --color-text-muted:#5c6570;
  --color-border:#e2ddd4;
  --color-gold:#b08d57;
  --color-gold-text:#866a3f; /* 2026-08-31 小さい文字用。#b08d57は2.82:1で不足。枠線・大きい数字は--color-goldのまま */
  --color-gold-soft:#d8c8ac;
  --color-accent:#9d5c00; /* 2026-08-31 4.49->4.64 */
  --color-accent-bg:#f8efdf;
  --color-positive:#1a6b4f;
  --color-positive-bg:#e6f0ea;
  --radius-sm:4px;
  --radius-md:8px;
  --radius-lg:14px;
  --shadow-sm:0 1px 3px rgba(31,36,41,0.06);
  --shadow-md:0 10px 30px rgba(31,36,41,0.09);
  --max-width:1120px;
  --font-serif:"Source Serif 4",Georgia,"Times New Roman",serif;
  --font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);line-height:1.65;-webkit-font-smoothing:antialiased;}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
ul{list-style:none;}
h1,h2,h3{font-family:var(--font-serif);line-height:1.22;letter-spacing:-0.011em;font-weight:600;}

/* Editorial section label: small gold caps over a short rule. */
.eyebrow{display:block;font-family:var(--font-sans);font-size:0.7rem;font-weight:700;letter-spacing:0.16em;text-transform:uppercase;color:var(--color-gold-text);margin-bottom:12px;}
.eyebrow::after{content:"";display:block;width:34px;height:1px;background:var(--color-gold-soft);margin-top:10px;}

/* Reveal on scroll.
   Content is visible by default and is only hidden once JavaScript has
   confirmed it can and will reveal it again (the .js-reveal class is set by
   the footer script just before it starts observing). If the script never
   runs, throws, or the observer never fires, nothing was ever hidden — the
   directory listings can never disappear behind a failed animation. */
.reveal{transition:opacity .55s ease,transform .55s ease;}
.js-reveal .reveal:not(.is-visible){opacity:0;transform:translateY(14px);}
@media(prefers-reduced-motion:reduce){
  .js-reveal .reveal:not(.is-visible){opacity:1;transform:none;}
  .reveal{transition:none;}
}
.container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 20px;}
.container-narrow{width:100%;max-width:760px;margin:0 auto;padding:0 20px;}
.screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap;}

/* Keyboard users get a visible, consistent focus ring. :focus-visible keeps
   it off mouse clicks, so it costs nothing visually for pointer users. */
:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px;border-radius:2px;}
.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--color-primary-dark);color:#fff;padding:12px 20px;font-weight:600;border-radius:0 0 var(--radius-sm) 0;}
.skip-link:focus{left:0;}
#main:focus{outline:none;}

/* Correction prompt on every listing — the action our outreach email asks for. */
.correction-box{margin-top:20px;background:var(--color-accent-bg);border:1px solid #e8d3ab;border-radius:var(--radius-md);padding:20px 22px;}
.correction-box .correction-lead{font-family:var(--font-serif);font-size:1.08rem;font-weight:600;color:var(--color-primary-dark);margin-bottom:8px;}
.correction-box p{font-size:0.88rem;line-height:1.65;color:var(--color-text);max-width:70ch;}
.correction-box .btn{margin-top:14px;background:#fff;}

/* Header / Nav */
.site-header{position:sticky;top:0;z-index:50;background:rgba(253,252,250,0.96);backdrop-filter:blur(6px);border-bottom:1px solid var(--color-border);}
.nav-bar{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;max-width:var(--max-width);margin:0 auto;position:relative;}
.logo{display:flex;flex-direction:column;font-family:var(--font-serif);font-weight:600;font-size:1.24rem;letter-spacing:-0.01em;color:var(--color-primary-dark);}
.logo span{font-weight:500;font-size:0.65rem;color:var(--color-text-muted);letter-spacing:0.05em;text-transform:uppercase;margin-top:2px;}
.nav-toggle{display:none;}
.nav-toggle-label{font-size:1.7rem;cursor:pointer;color:var(--color-primary-dark);line-height:1;padding:4px;}
.nav-menu{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;border-bottom:1px solid var(--color-border);flex-direction:column;padding:6px 20px 18px;box-shadow:var(--shadow-md);}
.nav-toggle:checked ~ .nav-menu{display:flex;}
.nav-menu li{list-style:none;}
.nav-menu a{display:block;padding:13px 0;font-weight:500;color:var(--color-text);border-bottom:1px solid var(--color-border);}
.nav-menu li:last-child > a{border-bottom:none;}
.nav-cta{display:none;}
@media(min-width:860px){
  .nav-toggle-label{display:none;}
  .nav-menu{display:flex!important;position:static;flex-direction:row;background:none;border:none;box-shadow:none;padding:0;gap:28px;align-items:center;}
  .nav-menu a{padding:0;border:none;font-size:0.94rem;}
  .nav-menu a:hover{color:var(--color-primary);}
  .nav-cta{display:inline-flex;}
  /* Re-assert the button padding: ".nav-menu a" above outranks ".btn-sm". */
  .nav-menu a.nav-cta{padding:9px 16px;color:#fff;}
  .nav-menu a.nav-cta:hover{color:#fff;}
}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:13px 26px;border-radius:var(--radius-sm);font-weight:600;font-size:0.92rem;letter-spacing:0.01em;border:1px solid transparent;cursor:pointer;transition:all .15s ease;white-space:nowrap;}
.btn-primary{background:var(--color-primary);color:#fff;}
.btn-primary:hover{background:var(--color-primary-dark);}
.btn-outline{background:#fff;border-color:var(--color-primary);color:var(--color-primary-dark);}
.btn-outline:hover{background:var(--color-bg-tint);}
.btn-sm{padding:9px 16px;font-size:0.82rem;}
.btn-block{width:100%;}

/* Hero */
.hero{padding:60px 0 48px;background:linear-gradient(168deg,var(--color-bg-alt) 0%,var(--color-bg) 62%);border-bottom:1px solid var(--color-border);}

/* Photographic hero. The gradient is doing real work: it guarantees the
   contrast the white type needs regardless of what the photo does at that
   point, so the headline is never sitting on an unpredictable background. */
.hero-photo{position:relative;background-color:#0e2233;background-image:linear-gradient(100deg,rgba(10,26,40,0.94) 0%,rgba(10,26,40,0.86) 38%,rgba(10,26,40,0.55) 70%,rgba(10,26,40,0.45) 100%),url("img/hero-tokyo-station.jpg");background-size:cover;background-position:center 62%;border-bottom:none;}
.hero-photo .hero-eyebrow{color:var(--color-gold-soft);}
.hero-photo .hero-eyebrow::after{background:rgba(216,200,172,0.5);}
.hero-photo .hero-title{color:#fff;}
.hero-photo .hero-sub{color:rgba(255,255,255,0.86);}
.hero-photo .btn-outline{background:transparent;border-color:rgba(255,255,255,0.6);color:#fff;}
.hero-photo .btn-outline:hover{background:rgba(255,255,255,0.12);}
.hero-photo .btn-primary{background:#fff;color:var(--color-primary-dark);}
.hero-photo .btn-primary:hover{background:var(--color-gold-soft);}
@media(max-width:959px){
  /* Narrow screens stack the panel under the copy, so the photo must stay
     dark across its whole width rather than only on the left. */
  .hero-photo{background-image:linear-gradient(180deg,rgba(10,26,40,0.92) 0%,rgba(10,26,40,0.88) 100%),url("img/hero-tokyo-station.jpg");}
}

/* Directory / taxonomy hero. Shorter than the front page: this is a working
   page, so the photo sets context without pushing the listings off screen. */
.hero-directory{background-color:#12324a;background-image:linear-gradient(105deg,rgba(12,32,48,0.95) 0%,rgba(12,32,48,0.88) 45%,rgba(12,32,48,0.6) 100%),url("img/hero-directory.jpg");background-size:cover;background-position:center 55%;border-bottom:none;padding:48px 0 40px;}
.hero-directory .hero-eyebrow{color:var(--color-gold-soft);}
.hero-directory .hero-eyebrow::after{background:rgba(216,200,172,0.5);}
.hero-directory .hero-title{color:#fff;font-size:1.9rem;max-width:26ch;}
.hero-directory .hero-sub{color:rgba(255,255,255,0.85);}
.hero-directory .filter-bar a{background:rgba(255,255,255,0.08);border-color:rgba(255,255,255,0.28);color:rgba(255,255,255,0.92);}
.hero-directory .filter-bar a:hover{background:rgba(255,255,255,0.18);border-color:var(--color-gold-soft);color:#fff;}
.hero-directory .filter-bar a.is-active{background:#fff;border-color:#fff;color:var(--color-primary-dark);}
.hero-directory .filter-bar .count{background:rgba(255,255,255,0.16);color:#fff;}
.hero-directory .filter-bar a.is-active .count{background:var(--color-bg-alt);color:var(--color-text-muted);}
@media(min-width:860px){.hero-directory .hero-title{font-size:2.4rem;}}

/* Search */
.search-wrap{margin-top:22px;max-width:560px;}
.search-form{display:flex;gap:8px;}
.search-field{flex:1;min-width:0;padding:12px 14px;font-size:0.95rem;font-family:inherit;color:var(--color-text);background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-sm);}
.search-field:focus{border-color:var(--color-primary-soft);}
.search-field::placeholder{color:var(--color-text-muted);}
@media(max-width:520px){.search-form{flex-direction:column;}}

/* Table of contents */
.toc{margin:26px 0 30px;background:var(--color-bg-alt);border-left:3px solid var(--color-gold);border-radius:0 var(--radius-md) var(--radius-md) 0;padding:20px 24px;}
.toc-title{font-family:var(--font-sans);font-size:0.7rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--color-gold-text);margin-bottom:12px;}
.toc ol{counter-reset:toc;padding-left:0;list-style:none;}
.toc li{counter-increment:toc;list-style:none;margin-top:7px;padding-left:26px;position:relative;font-size:0.93rem;line-height:1.5;}
.toc li::before{content:counter(toc);position:absolute;left:0;top:1px;font-family:var(--font-serif);font-size:0.82rem;color:var(--color-gold-text);}
.toc a{color:var(--color-primary-dark);text-decoration:none;border-bottom:1px solid transparent;}
.toc a:hover{border-bottom-color:var(--color-gold-soft);}
/* Sticky header would otherwise cover the heading you just jumped to. */
.entry-content h2[id]{scroll-margin-top:90px;}

/* Article lead image */
.entry-figure{margin:0 0 6px;}
.entry-figure img{width:100%;height:auto;border-radius:var(--radius-md);display:block;}
.entry-figure figcaption{margin-top:8px;font-size:0.78rem;color:var(--color-text-muted);}
.post-thumb{display:block;margin-bottom:14px;border-radius:var(--radius-sm);overflow:hidden;}
.post-thumb img{width:100%;height:150px;object-fit:cover;display:block;}
.hero-eyebrow{display:block;font-size:0.7rem;font-weight:700;letter-spacing:0.16em;text-transform:uppercase;color:var(--color-gold);margin-bottom:14px;}
.hero-eyebrow::after{content:"";display:block;width:34px;height:1px;background:var(--color-gold-soft);margin-top:10px;}
.hero-title{font-family:var(--font-serif);font-size:2.1rem;font-weight:600;letter-spacing:-0.015em;color:var(--color-primary-dark);max-width:19ch;}
.hero-title em{font-style:italic;}
.hero-sub{margin-top:20px;font-size:1.05rem;color:var(--color-text-muted);max-width:60ch;}
.hero-actions{margin-top:30px;display:flex;flex-wrap:wrap;gap:12px;}
@media(min-width:860px){.hero{padding:88px 0 68px;}.hero-title{font-size:3rem;}}

/* Hero layout: copy on the left, the directory's own numbers on the right.
   The panel exists because the claim "we compare what firms publish" is more
   convincing as a count than as a sentence. */
.hero-grid{display:grid;gap:38px;grid-template-columns:1fr;align-items:start;}
@media(min-width:960px){
  .hero-grid{grid-template-columns:minmax(0,1.45fr) minmax(300px,0.85fr);gap:56px;align-items:center;}
}
.stat-panel{background:#fff;border:1px solid var(--color-border);border-top:3px solid var(--color-gold);border-radius:var(--radius-md);padding:26px 28px;box-shadow:var(--shadow-sm);}
.stat-panel dl{margin-top:4px;}
.stat-panel .stat{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--color-border);}
.stat-panel .stat:last-child{border-bottom:none;}
.stat-panel dt{font-size:0.9rem;color:var(--color-text-muted);}
.stat-panel dd{font-family:var(--font-serif);font-size:2rem;font-weight:600;line-height:1;color:var(--color-primary-dark);}
.stat-of{font-size:0.95rem;color:var(--color-text-muted);margin-left:4px;font-family:var(--font-sans);font-weight:400;}
.stat-note{margin-top:16px;padding-top:16px;border-top:1px solid var(--color-border);font-size:0.8rem;line-height:1.6;color:var(--color-text-muted);}

/* Four categories: 2x2 on tablet, one row on desktop — a 3-column grid
   would leave a single orphan card on the second row. */
.card-grid.is-categories{grid-template-columns:1fr;}
@media(min-width:600px){.card-grid.is-categories{grid-template-columns:repeat(2,1fr);}}
@media(min-width:1040px){.card-grid.is-categories{grid-template-columns:repeat(4,1fr);gap:16px;}}

/* Category cards: the count is the headline, not an afterthought. */
.category-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0 24px 24px;box-shadow:var(--shadow-sm);overflow:hidden;transition:box-shadow .15s ease,transform .15s ease,border-color .15s ease;}
.category-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--color-gold-soft);}
/* Image band bleeds to the card edges, so the padding is re-applied below it. */
.category-image{display:block;margin:0 -24px 18px;height:112px;overflow:hidden;background:var(--color-bg-alt);}
.category-image img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease;}
.category-card:hover .category-image img{transform:scale(1.04);}
.category-count{font-family:var(--font-serif);font-size:2.3rem;font-weight:600;line-height:1;color:var(--color-gold);}
.category-card h3{margin-top:10px;font-size:1.16rem;color:var(--color-primary-dark);}
.category-card p{margin-top:10px;font-size:0.88rem;line-height:1.6;color:var(--color-text-muted);flex-grow:1;}
.category-go{margin-top:18px;font-size:0.82rem;font-weight:600;letter-spacing:0.02em;color:var(--color-primary);}
.category-card:hover .category-go{color:var(--color-primary-dark);}

/* Legal text lives in its own strip, never under the call to action. */
.disclaimer-strip{background:var(--color-bg-alt);border-bottom:1px solid var(--color-border);padding:20px 0;}
.disclaimer-strip p{font-size:0.84rem;line-height:1.7;color:var(--color-text-muted);max-width:76ch;border-left:2px solid var(--color-gold-soft);padding-left:16px;}

/* Sections */
.section{padding:48px 0;}
.section-alt{background:var(--color-bg-alt);}
.section-title{font-family:var(--font-serif);font-size:1.6rem;font-weight:600;color:var(--color-primary-dark);}
.section-sub{margin-top:12px;color:var(--color-text-muted);max-width:68ch;}
.divider{height:1px;background:var(--color-border);margin:0 auto;}
@media(min-width:860px){.section{padding:70px 0;}.section-title{font-size:2rem;}}

/* Cards grid */
.card-grid{display:grid;gap:18px;margin-top:28px;grid-template-columns:1fr;}
@media(min-width:640px){.card-grid{grid-template-columns:repeat(2,1fr);}}
@media(min-width:960px){.card-grid{grid-template-columns:repeat(3,1fr);}}

.provider-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:22px;box-shadow:var(--shadow-sm);transition:box-shadow .15s ease,transform .15s ease,border-color .15s ease;}
.provider-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--color-gold-soft);}
.provider-card .kg-type{font-size:0.68rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--color-gold-text);}

/* Category accent. Colour is a scanning aid only — the category is always
   spelled out in text above the name, so nothing depends on seeing it. */
.provider-card{border-top:3px solid var(--color-border);}
.provider-card.is-immigration-visa{border-top-color:#1b4a6b;}
.provider-card.is-company-formation{border-top-color:#1a6b4f;}
.provider-card.is-tax-accounting{border-top-color:#8a5a1f;}
.provider-card.is-office-space{border-top-color:#5b4a8a;}
.provider-card.is-immigration-visa .kg-type{color:#1b4a6b;}
.provider-card.is-company-formation .kg-type{color:#1a6b4f;}
.provider-card.is-tax-accounting .kg-type{color:#8a5a1f;}
.provider-card.is-office-space .kg-type{color:#5b4a8a;}
.provider-card h3{margin-top:10px;font-family:var(--font-serif);font-size:1.18rem;font-weight:600;color:var(--color-primary-dark);}
.provider-card .kg-meta{margin-top:12px;display:flex;flex-direction:column;gap:7px;font-size:0.85rem;color:var(--color-text-muted);}
.provider-card .kg-meta strong{color:var(--color-text);font-weight:600;}
.provider-card .kg-card-foot{margin-top:16px;padding-top:14px;border-top:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:10px;}

/* Status pills */
.kg-pill{display:inline-block;font-size:0.72rem;font-weight:700;padding:3px 10px;border-radius:999px;letter-spacing:0.03em;}
.kg-pill-published{background:var(--color-positive-bg);color:var(--color-positive);}
.kg-pill-partial{background:var(--color-accent-bg);color:var(--color-accent);}
.kg-pill-none{background:var(--color-bg-alt);color:var(--color-text-muted);}

/* Tier label — required whenever placement is given for consideration
   (paid, or granted in exchange for a link) under stealth-marketing rules */
.kg-sponsored{display:inline-block;font-size:0.68rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;background:var(--color-accent-bg);color:var(--color-accent);border:1px solid #e8d3ab;padding:3px 9px;border-radius:var(--radius-sm);}
.kg-sponsored.is-featured{background:var(--color-positive-bg);color:var(--color-positive);border-color:currentColor;}

/* Promoted cards: pinned to the top of the grid, so they carry a logo and
   show their fields in full instead of the truncated free-listing summary */
.provider-card.is-promoted{border:1px solid var(--color-gold-soft);box-shadow:var(--shadow-md);background:linear-gradient(180deg,#fffdf8 0%,#fff 40%);}
.provider-card.is-promoted .kg-logo{margin:-4px 0 14px;}
.provider-card.is-promoted .kg-logo img{max-width:150px;max-height:56px;width:auto;height:auto;object-fit:contain;}

/* "Not published" — a deliberate, visible state rather than a hidden row */
.kg-unpublished{color:var(--color-text-muted);font-style:italic;}

/* Verification freshness note */
.kg-verified{margin-top:18px;font-size:0.82rem;color:var(--color-text-muted);background:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:12px 14px;}

/* Breadcrumb */
.breadcrumb{padding:20px 0 4px;font-size:0.82rem;color:var(--color-text-muted);}
.breadcrumb a:hover{color:var(--color-primary);text-decoration:underline;}
.breadcrumb .sep{margin:0 8px;color:var(--color-border);}
.breadcrumb .current{color:var(--color-text);}

/* Provider detail */
.detail-head{display:flex;flex-direction:column;gap:16px;padding:22px 0 6px;}
.detail-badges{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.detail-name{font-size:1.7rem;font-weight:800;color:var(--color-primary-dark);}
.detail-sub{margin-top:8px;color:var(--color-text-muted);}
@media(min-width:860px){
  .detail-head{flex-direction:row;align-items:flex-end;justify-content:space-between;}
  .detail-name{font-size:2.1rem;}
}

.table-wrap{margin-top:24px;overflow-x:auto;border:1px solid var(--color-border);border-top:3px solid var(--color-primary);border-radius:var(--radius-md);background:#fff;}
.info-table{width:100%;border-collapse:collapse;background:#fff;min-width:520px;}
.info-table th,.info-table td{text-align:left;padding:18px 22px;border-bottom:1px solid var(--color-border);vertical-align:top;font-size:0.95rem;line-height:1.7;}
.info-table th{width:31%;font-family:var(--font-sans);font-size:0.76rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--color-text-muted);background:transparent;}
.info-table tr:last-child th,.info-table tr:last-child td{border-bottom:none;}
/* The two fields the whole directory exists to expose get visual weight. */
.info-table tr.is-key th{color:var(--color-gold-text);}
.info-table tr.is-key td{background:var(--color-bg-alt);font-weight:500;}

.contact-box{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:20px;}
.contact-row{display:flex;flex-direction:column;gap:2px;padding:11px 0;border-bottom:1px solid var(--color-border);font-size:0.9rem;}
.contact-row:last-child{border-bottom:none;}
.contact-row .label{font-size:0.75rem;font-weight:700;letter-spacing:0.05em;text-transform:uppercase;color:var(--color-text-muted);}
.contact-panel{max-width:520px;margin-top:22px;}
.contact-actions{display:flex;flex-direction:column;gap:10px;}
.contact-note{margin-top:14px;font-size:0.78rem;color:var(--color-text-muted);}

/* Filters on the archive */
.filter-bar{margin-top:28px;display:flex;flex-wrap:wrap;gap:8px;}
.filter-bar a{display:inline-flex;align-items:center;gap:7px;font-size:0.85rem;font-weight:600;padding:9px 16px;border-radius:var(--radius-sm);border:1px solid var(--color-border);color:var(--color-text-muted);background:#fff;transition:all .15s ease;}
.filter-bar a:hover{border-color:var(--color-gold-soft);color:var(--color-primary);}
.filter-bar a.is-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff;}
.filter-bar .count{font-size:0.76rem;font-weight:600;color:var(--color-text-muted);background:var(--color-bg-alt);border-radius:999px;padding:1px 8px;}
.filter-bar a.is-active .count{background:rgba(255,255,255,0.2);color:#fff;}
.filter-bar a:hover .count{background:var(--color-bg-tint);}

/* Editorial content */
.entry-content{margin-top:22px;max-width:68ch;font-size:1.06rem;line-height:1.8;}
.entry-content > * + *{margin-top:1.15em;}
.entry-content h2{margin-top:2em;font-size:1.5rem;color:var(--color-primary-dark);}
.entry-content h3{margin-top:1.6em;font-size:1.18rem;color:var(--color-primary-dark);}
.entry-content ul,.entry-content ol{padding-left:1.4em;}
.entry-content ul li{list-style:disc;margin-top:0.4em;}
.entry-content ol li{list-style:decimal;margin-top:0.4em;}
.entry-content a{color:var(--color-primary);text-decoration:underline;}
.entry-content blockquote{border-left:3px solid var(--color-primary-soft);padding-left:16px;color:var(--color-text-muted);}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:1.1em;}
.table-scroll table{min-width:520px;}
.entry-content table{width:100%;border-collapse:collapse;font-size:0.9rem;}
.entry-content th,.entry-content td{border:1px solid var(--color-border);padding:10px 12px;text-align:left;}
.entry-content th{background:var(--color-bg-alt);}
.entry-meta{margin-top:10px;font-size:0.82rem;color:var(--color-text-muted);}

/* Post list */
.post-list{margin-top:26px;display:grid;gap:16px;grid-template-columns:1fr;}
@media(min-width:760px){.post-list{grid-template-columns:repeat(2,1fr);}}
.post-item{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:22px;transition:border-color .15s ease,box-shadow .15s ease;}
.post-item:hover{border-color:var(--color-gold-soft);box-shadow:var(--shadow-sm);}
.post-item h2{font-family:var(--font-serif);font-size:1.2rem;font-weight:600;color:var(--color-primary-dark);}
.post-item p{margin-top:8px;font-size:0.9rem;color:var(--color-text-muted);}

.pagination{margin-top:32px;display:flex;gap:8px;flex-wrap:wrap;}
.pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:0.9rem;background:#fff;}
.pagination .page-numbers.current{background:var(--color-primary);border-color:var(--color-primary);color:#fff;}

/* Footer */
.site-footer{margin-top:0;background:var(--color-primary-dark);color:#c9d8e3;padding:44px 0 26px;}
.footer-grid{display:grid;gap:26px;grid-template-columns:1fr;}
@media(min-width:760px){.footer-grid{grid-template-columns:1.3fr 1fr 1fr 1.3fr 1fr;}}
.footer-brand{font-family:var(--font-serif);font-weight:600;font-size:1.24rem;color:#fff;}
.footer-tag{margin-top:10px;font-size:0.88rem;max-width:340px;}
.footer-col h4{font-size:0.78rem;letter-spacing:0.08em;text-transform:uppercase;color:#fff;margin-bottom:12px;}
.footer-col a{display:block;padding:5px 0;font-size:0.88rem;}
.footer-col a:hover{color:#fff;text-decoration:underline;}
.footer-bottom{margin-top:30px;padding-top:18px;border-top:1px solid rgba(255,255,255,0.15);font-size:0.78rem;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;}
.footer-disclaimer{max-width:720px;line-height:1.6;}

/* "Start here" path — for readers who do not yet know which profession they need. */
.path-list{counter-reset:path;margin-top:26px;list-style:none;padding:0;display:grid;gap:14px;}
@media(min-width:860px){.path-list{grid-template-columns:repeat(2,1fr);gap:16px;}}
.path-list li{counter-increment:path;list-style:none;position:relative;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:22px 24px 20px 62px;box-shadow:var(--shadow-sm);}
.path-list li::before{content:counter(path);position:absolute;left:24px;top:20px;font-family:var(--font-serif);font-size:1.5rem;font-weight:600;color:var(--color-gold);line-height:1;}
.path-q{display:block;font-family:var(--font-serif);font-size:1.12rem;font-weight:600;color:var(--color-primary-dark);}
.path-a{display:block;margin-top:8px;font-size:0.9rem;line-height:1.6;color:var(--color-text-muted);}
.path-list a{display:inline-block;margin-top:12px;font-size:0.86rem;font-weight:600;color:var(--color-primary);}
.path-list a:hover{color:var(--color-primary-dark);text-decoration:underline;}

/* Publication date on cards — freshness is the site's main claim, so it has
   to be legible from a listing, not only from inside an article. */
.post-date{margin-top:6px;font-size:0.78rem;color:var(--color-text-muted);letter-spacing:0.02em;}

/* Named accountability in the footer. */
.footer-editor{display:inline-block;margin-top:4px;font-size:0.76rem;color:rgba(201,216,227,0.75);}

/* Paid listings: a logo and a statement in the firm's own words. The statement
   is styled as an aside, not as body copy, because it is the one block on the
   page we did not write or check. */
.kg-provider-logo{margin:0 0 22px;}
.kg-provider-logo img{max-width:200px;max-height:70px;width:auto;height:auto;object-fit:contain;}
.kg-pitch{margin:0 0 28px;padding:20px 22px;border:1px solid var(--color-gold-soft);border-left-width:3px;background:linear-gradient(180deg,#fffdf8 0%,#fff 60%);border-radius:6px;}
.kg-pitch-title{margin:0 0 4px;font-size:1.05rem;}
.kg-pitch-note{margin:0 0 12px;font-size:0.82rem;color:var(--color-muted);}
.kg-pitch p:last-child{margin-bottom:0;}

/* Data pages: the tables are the content, so they get room to breathe and the
   long "does not publish" roll is a readable run of links rather than a list. */
.kg-datanote{background:var(--color-surface-alt,#f4f5f3);border-left:3px solid var(--color-accent,#1f4e6d);
  padding:14px 18px;margin:0 0 28px;font-size:0.95rem;}
.kg-inline-list{line-height:2;font-size:0.95rem;}
.entry-content h3{margin-top:38px;}
/* The firm name is the row's identity; let it have room instead of wrapping
   a three-word name onto three lines. */
.entry-content table td:first-child{min-width:11em;}

/* ---------------------------------------------------------------------------
   Provider comparison table (2026-09-05)
   トップの見出しが "Compare the firms" なのに、一覧は37枚のカードで
   各3項目しか出ておらず、比較するには37ページ開くしかなかった。
   列は機械的に導ける項目だけ。判断が要る項目は入れない。
   --------------------------------------------------------------------------- */
.compare-wrap{margin:0 0 44px;}
.compare-title{font-size:1.35rem;margin:0 0 8px;}
.compare-note{font-size:0.82rem;line-height:1.7;color:var(--color-text-muted);margin:8px 0 0;}
.compare-note + .compare-note{margin-top:6px;}

.compare-table{width:100%;border-collapse:collapse;font-size:0.88rem;background:var(--color-bg);}
.compare-table th,.compare-table td{border:1px solid var(--color-border);padding:9px 11px;text-align:left;vertical-align:top;}
.compare-table thead th{
  background:var(--color-bg-alt);
  font-weight:600;
  white-space:nowrap;
  cursor:pointer;
  user-select:none;
  position:sticky;
  top:0;
  z-index:1;
}
.compare-table thead th:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px;}
/* 並べ替えの向きを文字で示す。色や記号だけに頼らない。 */
.compare-table thead th::after{content:"";margin-left:6px;font-size:0.75em;color:var(--color-text-muted);}
.compare-table thead th[aria-sort="ascending"]::after{content:"▲";}
.compare-table thead th[aria-sort="descending"]::after{content:"▼";}
.compare-table tbody th{font-weight:600;background:var(--color-bg);}
.compare-table tbody th a{color:var(--color-primary);text-decoration:none;}
.compare-table tbody th a:hover,.compare-table tbody th a:focus{text-decoration:underline;}
.compare-table tbody tr:nth-child(even) th,
.compare-table tbody tr:nth-child(even) td{background:var(--color-bg-alt);}
.compare-type{color:var(--color-text-muted);white-space:nowrap;}

.cmp{display:inline-block;padding:2px 8px;border-radius:11px;font-size:0.8rem;white-space:nowrap;}
.cmp-yes{background:var(--color-positive-bg);color:var(--color-positive);}
.cmp-partial{background:var(--color-accent-bg);color:var(--color-accent);}
.cmp-none{background:var(--color-bg-tint);color:var(--color-text-muted);}

.csv-link{color:var(--color-primary);}

@media (max-width:640px){
  .compare-table{font-size:0.82rem;}
  .compare-table th,.compare-table td{padding:7px 8px;}
  .compare-table thead th{position:static;}
}
