/*
Theme Name: CD&S Techblog
Description: techblog.cloud-designsolution.com のテーマ。案A（インデックス型）。設計書_テックブログ刷新.xlsx パラメータ_表示・パラメータ_デザイン、ui-spec.md 案A。
Version: 0.1.0
Requires at least: 6.2
Requires PHP: 7.4
Text Domain: cds-techblog
*/

/* パラメータ_デザイン No.1〜8、27〜31、62〜68 */
:root{
  --color-bg:#ffffff; --color-surface:#f6f7f9; --color-line:#e7e9ee;
  --color-ink:#151b26; --color-body:#3b4250; --color-muted:#6a7180; --color-accent:#1f3864; --color-link:#2350c8;
  --code-bg:#121b2c; --code-fg:#e4e9f2; --code-comment:#8391ab; --code-string:#f2cf8a; --code-keyword:#93b5ff; --code-attr:#9fdccb; --code-command:#c8bbff;
  --font-sans:'IBM Plex Sans JP','Hiragino Sans','Yu Gothic',Meiryo,sans-serif;
  --font-mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --title-indent:46px;
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--color-bg);color:var(--color-body);font:400 16px/1.85 var(--font-sans)}
a{color:var(--color-link);text-underline-offset:3px;text-decoration-thickness:1px}
a:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}
h1,h2,h3{color:var(--color-ink);text-wrap:balance;word-break:auto-phrase}
.vh,.screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ヘッダー（パラメータ_デザイン No.9〜26。基本設計 9.5） */
.head{border-bottom:1px solid var(--color-line);background:#FAFAF7 url("assets/img/hero-flow-lines.svg") right center / cover no-repeat}
.head__in{max-width:1240px;margin:0 auto;padding:16px 32px 20px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:center;gap:0 24px}
.brand{grid-column:1;grid-row:1;justify-self:start;display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--color-ink)}
.brand i{width:36px;height:26px;background:url("assets/img/logo.png") center/contain no-repeat;flex:none}
.brand b{font-family:'Hiragino Mincho Pro','ヒラギノ明朝 Pro','Hiragino Mincho ProN','ヒラギノ明朝 ProN','YuMincho','Yu Mincho','游明朝','Noto Serif JP',serif;font-size:16.5px;font-weight:700;color:#1f3864;letter-spacing:.02em;line-height:1.35;white-space:nowrap}
.sitetitle{grid-column:1 / -1;grid-row:2;justify-self:start;margin:2px 0 0 var(--title-indent);font-size:32px;font-weight:700;line-height:1.2;letter-spacing:.02em;color:#1f3864;white-space:nowrap;text-align:left}
.sitetitle a{color:inherit;text-decoration:none}
.home .head{background-position:right 85%}
.home .head__in{min-height:200px;grid-template-rows:auto 1fr}
.home .sitetitle{align-self:start;margin-top:8px}

/* 本文と右の列（パラメータ_表示 No.1〜4、パラメータ_デザイン No.45〜47） */
.shell{display:grid;grid-template-columns:minmax(0,1fr) 264px;gap:56px;max-width:1240px;margin:0 auto;padding:0 32px}
.shell--article{grid-template-columns:minmax(0,1fr)}
.main{min-width:0;padding:48px 0 88px}
.intro{max-width:720px;margin-bottom:24px}
.intro h1{font-size:26px;line-height:1.5;font-weight:700;margin:0 0 8px}
.intro p{margin:0;color:var(--color-muted);font-size:15px}
.crumbs{font-size:13px;color:var(--color-muted);margin:0 0 8px;line-height:1.6}
.crumbs a{color:var(--color-muted);text-decoration:none}.crumbs a:hover{color:var(--color-ink)}
.count{font:400 13px/1 var(--font-mono);color:var(--color-muted);margin:12px 0 0!important}
.sec{font-size:18px;font-weight:700;color:var(--color-ink);line-height:1.5;margin:0;padding-bottom:12px}

/* 一覧の行（パラメータ_表示 No.17、パラメータ_デザイン No.56） */
.rows{max-width:760px}
.row{display:grid;grid-template-columns:96px minmax(0,1fr);gap:0 24px;padding:24px 0;border-top:1px solid var(--color-line)}
.row time{font:400 13px/1.9 var(--font-mono);color:var(--color-muted);font-variant-numeric:tabular-nums}
.row .crumbs{margin:0 0 2px}
.row h2,.row h3{font-size:18px;line-height:1.55;font-weight:600;margin:0 0 4px}
.row h2 a,.row h3 a{color:var(--color-ink);text-decoration:none}
.row h2 a:hover,.row h3 a:hover{color:var(--color-link)}
.row p{margin:0;font-size:14.5px;line-height:1.75;color:var(--color-body)}
.row .tags{margin-top:8px;font-size:12.5px;color:var(--color-muted)}
.tags{display:flex;flex-wrap:wrap;gap:4px 14px;list-style:none;margin:0;padding:0}
.tags a{color:inherit;text-decoration:none}.tags a:hover{color:var(--color-ink)}
.empty{max-width:760px;border-top:1px solid var(--color-line);padding:24px 0;color:var(--color-muted)}
.empty p{margin:0}
.pagination{max-width:760px;border-top:1px solid var(--color-line);padding-top:24px}
.pagination .nav-links{display:flex;flex-wrap:wrap;gap:8px}
.pagination .page-numbers{display:inline-block;min-width:36px;padding:6px 10px;border:1px solid var(--color-line);border-radius:6px;text-align:center;font-size:14px;color:var(--color-body);text-decoration:none}
.pagination .page-numbers.current{background:var(--color-accent);border-color:var(--color-accent);color:#fff}
.pagination .page-numbers.dots{border:0}

/* 記事詳細（パラメータ_デザイン No.48〜50） */
.art{display:grid;grid-template-columns:minmax(0,700px) 200px;gap:56px;align-items:start}
.art__head{margin-bottom:8px}
.art__head h1{font-size:30px;line-height:1.5;font-weight:700;margin:0 0 12px}
.meta{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:13px;color:var(--color-muted);margin:0}
.meta .tags{gap:4px 12px}
.toc-side{position:sticky;top:24px;font-size:13px;line-height:1.6;padding-top:6px}
.toc-side h2,.rel h2{font-size:12px;font-weight:600;color:var(--color-muted);letter-spacing:.06em;margin:0 0 10px}
.toc-side ol,.toc-in ol{list-style:none;margin:0;padding:0}
.toc-side li{padding:4px 0 4px 12px;border-left:1px solid var(--color-line)}
.toc-side li:has(a[aria-current]){border-left:2px solid var(--color-accent);padding-left:11px}
.toc-side a,.toc-in a{color:var(--color-muted);text-decoration:none}
.toc-side a:hover,.toc-in a:hover{color:var(--color-ink)}
.toc-side a[aria-current]{color:var(--color-ink);font-weight:600}
.toc-in{display:none;border-top:1px solid var(--color-line);border-bottom:1px solid var(--color-line);margin:20px 0 0}
.toc-in summary{cursor:pointer;padding:12px 0;font-size:14px;font-weight:600;color:var(--color-ink)}
.toc-in ol{padding:0 0 12px}.toc-in li{padding:4px 0;font-size:14px}
.toc-side[hidden],.toc-in[hidden]{display:none!important}
@media (min-width:1121px){.shell--article .art{max-width:956px;margin:0 auto}}

/* 本文（基本設計 3.3・3.4、パラメータ_デザイン No.33〜44、51〜58） */
.post{margin-top:32px}
.post h2{font-size:21px;line-height:1.5;font-weight:700;margin:56px 0 14px;scroll-margin-top:24px}
.post h3{font-size:17px;line-height:1.55;font-weight:600;margin:36px 0 8px}
.post h4,.post h5,.post h6{font-size:16px;line-height:1.6;font-weight:600;color:var(--color-ink);margin:28px 0 8px}
.post p{margin:0 0 20px}
.post ul,.post ol{margin:0 0 20px;padding-left:1.4em}
.post li{margin-bottom:6px}
.post li:has(>input[type=checkbox]){list-style:none;margin-left:-1.4em}
.post li>input[type=checkbox]{margin:0 .5em 0 0;vertical-align:-1px}
.post hr{border:0;border-top:1px solid var(--color-line);margin:40px 0}
.post img{display:block;max-width:100%;height:auto;border-radius:6px;border:1px solid var(--color-line)}
.post p:has(>img)>em{display:block;font-style:normal;font-size:13px;color:var(--color-muted);margin-top:8px}
.post code{font:400 .86em/1.5 var(--font-mono);background:var(--color-surface);color:var(--color-ink);padding:.12em .38em;border-radius:4px}
.post blockquote{margin:0 0 24px;padding:2px 0 2px 16px;border-left:2px solid var(--color-accent);color:var(--color-body);font-size:15px}
.post blockquote p{margin:0}
.post blockquote p+p{margin-top:8px}
.post table{display:block;width:max-content;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:0 0 24px;font-size:14px;line-height:1.65}
.post th,.post td{border-bottom:1px solid var(--color-line);padding:8px 20px 8px 0;text-align:left;vertical-align:top}
.post th{color:var(--color-ink);font-weight:600;white-space:nowrap;border-bottom-color:var(--color-ink)}
.post th[align=center],.post td[align=center]{text-align:center}
.post th[align=right],.post td[align=right]{text-align:right}

/* コードブロック（パラメータ_表示 No.23〜25、パラメータ_デザイン No.62〜70） */
.codebox{position:relative;margin:0 0 24px;background:var(--code-bg);border-radius:8px;overflow:hidden}
.codebox__head{display:flex;justify-content:space-between;align-items:center;padding:8px 10px 0 18px}
.codebox__lang{font:400 12px/1.6 var(--font-mono);color:#8e9bb3}
.codebox__copy{font:400 12px/1.6 var(--font-sans);color:#c6d0e2;background:transparent;border:1px solid #2c3a55;border-radius:4px;padding:1px 10px;cursor:pointer}
.codebox__copy:hover{border-color:#6f81a6;color:#fff}
.codebox__copy:focus-visible{outline:2px solid #fff}
.post pre{margin:0 0 24px;padding:8px 18px 16px;overflow-x:auto;tab-size:2;background:var(--code-bg);border-radius:8px}
.codebox pre{margin:0;border-radius:0;background:none}
.post pre code{display:block;width:max-content;min-width:100%;font:400 13.5px/1.75 var(--font-mono);background:none;color:var(--code-fg);padding:0;border-radius:0;white-space:pre}
.post pre code.hljs{background:none;color:var(--code-fg);padding:0}
.hljs-comment,.hljs-quote{color:var(--code-comment)}
.hljs-string,.hljs-regexp,.hljs-template-variable{color:var(--code-string)}
.hljs-keyword,.hljs-literal,.hljs-selector-tag,.hljs-type{color:var(--code-keyword)}
.hljs-attr,.hljs-attribute,.hljs-property,.hljs-variable,.hljs-params{color:var(--code-attr)}
.hljs-built_in,.hljs-title,.hljs-section,.hljs-meta{color:var(--code-command)}
.hljs-number,.hljs-symbol{color:#f1b29b}
.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}

/* 問い合わせ・あわせて読む */
.cta{margin:56px 0 0;padding:20px 0;border-top:1px solid var(--color-line);border-bottom:1px solid var(--color-line);display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between}
.cta p{margin:0;color:var(--color-ink);font-weight:600;line-height:1.6}
.cta small{display:block;font-weight:400;font-size:13px;color:var(--color-muted)}
.btn{display:inline-block;background:var(--color-accent);color:#fff;text-decoration:none;font-size:14px;font-weight:600;padding:9px 20px;border-radius:6px;white-space:nowrap}
.btn:hover{background:#16294a}
.rel{margin-top:40px}
.rel .row{grid-template-columns:96px minmax(0,1fr);padding:14px 0}
.rel .row h3{font-size:15.5px;margin:0}

/* 404・固定ページ */
.nf{max-width:600px}
.nf__code{font:500 13px/1 var(--font-mono);color:var(--color-muted);margin:0 0 14px}
.nf h1{font-size:26px;line-height:1.5;margin:0 0 12px}
.nf ul{list-style:none;padding:0;margin:24px 0 0;display:flex;flex-wrap:wrap;gap:8px 24px}
.page-body{max-width:700px}
.page-body h1{font-size:26px;line-height:1.5;margin:0 0 24px}

/* フッター */
.foot{border-top:1px solid var(--color-line);font-size:13px;line-height:1.7;color:var(--color-muted)}
.foot__in{max-width:1240px;margin:0 auto;padding:24px 32px;display:flex;flex-wrap:wrap;gap:8px 32px;justify-content:space-between}
.foot ul{display:flex;flex-wrap:wrap;gap:4px 18px;list-style:none;margin:0;padding:0}
.foot a{color:var(--color-muted);text-decoration:none}.foot a:hover{color:var(--color-ink)}

/* 右の列（基本設計 5.4〜5.8） */
.rail{display:flex;flex-direction:column;gap:36px;font-size:13.5px;line-height:1.75;min-width:0;padding:48px 0 72px}
.rail h2{position:relative;font-size:15px;font-weight:700;color:var(--color-ink);margin:0 0 16px;padding-bottom:10px;border-bottom:2px solid var(--color-line)}
.rail h2::after{content:"";position:absolute;left:0;bottom:-2px;width:56px;height:2px;background:var(--color-accent)}
.rail p{margin:0}
.rail__rss{margin-top:8px!important}
.search{display:flex;gap:6px}
.search input{flex:1;min-width:0;font:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--color-line);border-radius:6px;background:#fff;color:var(--color-ink)}
.search input:focus{outline:2px solid var(--color-link);outline-offset:-1px}
.search button{font:inherit;font-size:13px;font-weight:600;padding:7px 12px;border:0;border-radius:6px;background:var(--color-accent);color:#fff;cursor:pointer;white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.chips a{display:block;background:var(--color-surface);color:var(--color-body);text-decoration:none;font-size:13.5px;line-height:1.5;padding:5px 11px;border-radius:4px}
.chips a:hover{color:var(--color-ink);filter:brightness(.97)}
.chips a[aria-current]{background:var(--color-accent);color:#fff}
.chips span{font-variant-numeric:tabular-nums}
.arch details{margin:0 0 4px}
.arch summary{cursor:pointer;color:var(--color-link);font-size:14px}
.arch summary::marker{color:var(--color-ink);font-size:11px}
.arch ul{list-style:none;margin:6px 0 4px;padding:0 0 0 18px}
.arch li{padding:3px 0}
.arch li::before{content:"└";color:var(--color-muted);margin-right:8px;font-size:12px}
.arch a{color:var(--color-link);text-decoration:none;font-variant-numeric:tabular-nums}
.arch a:hover{text-decoration:underline}
.pop{list-style:none;margin:0;padding:0}
.pop a{display:grid;grid-template-columns:22px minmax(0,1fr);gap:0 10px;padding:9px 0;border-top:1px solid var(--color-line);color:var(--color-ink);text-decoration:none;line-height:1.6}
.pop li:last-child a{border-bottom:1px solid var(--color-line)}
.pop a:hover span{color:var(--color-link);text-decoration:underline}
.pop b{font-weight:700;color:var(--color-accent);font-variant-numeric:tabular-nums;text-align:center;line-height:1.6}
.rail__none{color:var(--color-muted)}

/* 1120px 以下（パラメータ_デザイン No.60） */
@media (max-width:1120px){
  .shell{grid-template-columns:minmax(0,1fr) 232px;gap:40px}
  .shell--article{grid-template-columns:minmax(0,1fr)}
  .art{display:block;max-width:700px}
  .toc-side{display:none}
  .toc-in{display:block}
}
/* 760px 以下（パラメータ_デザイン No.61） */
@media (max-width:760px){
  .head__in{grid-template-columns:minmax(0,1fr);row-gap:6px;padding:12px 16px}
  .sitetitle{grid-column:1;grid-row:2;font-size:26px;margin:0 0 2px var(--title-indent)}
  .home .head__in{min-height:160px;grid-template-rows:auto 1fr auto}
  .home .sitetitle{margin-top:4px}
  .shell,.shell--article{display:block;padding:0}
  .main{padding:28px 16px 56px}
  .rail{padding:32px 16px 48px;border-top:1px solid var(--color-line);gap:32px}
  .intro h1{font-size:22px}
  .art__head h1{font-size:24px}
  .row,.rel .row{display:block;padding:20px 0}
  .row time{display:block;line-height:1.6;margin-bottom:2px}
  .row h2,.row h3{font-size:17px}
  .post h2{font-size:19px;margin-top:44px}
  .post td{min-width:9.5em}
  .post td code{white-space:nowrap}
  .post pre{padding:8px 14px 14px}
  .post pre code{font-size:13px}
  .foot__in{padding:20px 16px}
}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
