@charset "UTF-8";
/* ==========================================================================
   TrueCamera — 新聞（ブロードシート）レイアウト / 青・白・黒
   ========================================================================== */

:root {
	--tc-paper: #ffffff;
	--tc-paper-tint: #f4f6fa;
	--tc-ink: #101114;
	--tc-ink-mid: #5b5f68;
	--tc-blue: #0b3f9c;
	--tc-blue-bright: #1a5fd6;
	--tc-blue-tint: #eaf0fb;
	--tc-blue-soft: #9db4e0;
	--tc-rule: #101114;
	--tc-rule-soft: #c9cdd6;

	/* すべてゴシック体に統一。明朝・等幅に戻す場合はここだけ書き換える */
	--tc-serif: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif;
	--tc-sans: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif;
	--tc-mono: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif;

	--tc-gutter: clamp(16px, 3vw, 40px);
	--tc-max: 1440px;
}

/* ---------- base ---------- */

*,
*::before,
*::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
	margin: 0;
	/* 用紙の左右の枠線が画面端に重ならないよう、外側に余白を取る */
	padding-inline: clamp(10px, 1.6vw, 20px);
	background: var(--tc-paper-tint);
	color: var(--tc-ink);
	font-family: var(--tc-sans);
	font-size: 15px;
	line-height: 1.9;
	font-feature-settings: "palt" 1;
	-webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }

a { color: var(--tc-blue); text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3, h4 {
	font-family: var(--tc-serif);
	font-weight: 700;
	line-height: 1.4;
	margin: 0;
	letter-spacing: 0.01em;
}

p { margin: 0 0 1.2em; }
p:last-child { margin-bottom: 0; }

::selection { background: var(--tc-blue); color: #fff; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden; clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%); white-space: nowrap;
}

.skip-link:focus {
	position: fixed; top: 8px; left: 8px; z-index: 100;
	width: auto; height: auto; clip: auto; clip-path: none;
	background: var(--tc-blue); color: #fff; padding: 10px 16px;
}

/* ---------- paper frame ---------- */

.tc-paper {
	/* 何かが枠からはみ出しても紙面の外に出ないようにする（実機での崩れ対策） */
	overflow-x: clip;
	max-width: var(--tc-max);
	margin: clamp(8px, 2vw, 28px) auto;
	background: var(--tc-paper);
	border: 1px solid var(--tc-rule);
	box-shadow: 0 1px 0 var(--tc-rule), 0 18px 48px rgba(16, 17, 20, 0.08);
}

/* ---------- masthead ---------- */

.tc-masthead { border-bottom: 3px double var(--tc-rule); }

.tc-masthead__rail {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	border-bottom: 1px solid var(--tc-rule);
	font-family: var(--tc-sans);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.08em;
}

.tc-masthead__rail > * {
	margin: 0;
	padding: 8px var(--tc-gutter);
}

.tc-masthead__edition {
	border-left: 1px solid var(--tc-rule);
	border-right: 1px solid var(--tc-rule);
	text-align: center;
	color: var(--tc-blue);
}

.tc-masthead__link { text-align: right; }

.tc-masthead__rail--empty { min-height: 34px; }

.tc-masthead__rail--empty .tc-masthead__edition {
	border-left: 0;
	border-right: 0;
}
.tc-masthead__link a { color: var(--tc-ink); }
.tc-masthead__link a:hover { color: var(--tc-blue); }

.tc-masthead__main {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: clamp(18px, 3.4vw, 38px) var(--tc-gutter) clamp(14px, 2.4vw, 26px);
}

.tc-masthead__brand { flex: 1; text-align: center; }

.tc-masthead__logo img { margin: 0 auto; max-height: 72px; width: auto; }

.tc-masthead__title {
	font-family: var(--tc-serif);
	font-weight: 900;
	font-size: clamp(26px, 5.4vw, 58px);
	letter-spacing: 0.04em;
	line-height: 1.1;
	margin: 0;
}

.tc-masthead__title a { color: var(--tc-ink); text-decoration: none; }
.tc-masthead__title a:hover { color: var(--tc-blue); }

.tc-masthead__tagline {
	margin: 10px 0 0;
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.3em;
	color: var(--tc-blue);
	text-transform: uppercase;
}

/* nav */

.tc-nav {
	border-top: 1px solid var(--tc-rule);
	border-bottom: 1px solid var(--tc-rule);
	background: var(--tc-paper);
}

.tc-nav__list {
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
}

.tc-nav__list > li { flex: 1 1 auto; border-right: 1px solid var(--tc-rule-soft); }
.tc-nav__list > li:last-child { border-right: 0; }

.tc-nav__list > li > a {
	display: block;
	padding: 10px 8px;
	text-align: center;
	color: var(--tc-ink);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.04em;
	transition: background .15s ease, color .15s ease;
}

.tc-nav__list > li > a:hover,
.tc-nav__list > li.current-menu-item > a {
	background: var(--tc-blue);
	color: #fff;
	text-decoration: none;
}

.tc-nav__ja { display: block; }

.tc-nav__en {
	display: block;
	font-family: var(--tc-mono);
	font-size: 9px;
	letter-spacing: 0.18em;
	color: var(--tc-blue);
	margin-top: 2px;
}

.tc-nav__list > li > a:hover .tc-nav__en,
.tc-nav__list > li.current-menu-item > a .tc-nav__en { color: rgba(255, 255, 255, .75); }

.tc-navtoggle {
	display: none;
	align-items: center;
	gap: 8px;
	background: var(--tc-paper);
	border: 1px solid var(--tc-rule);
	padding: 8px 12px;
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.16em;
	cursor: pointer;
}

.tc-navtoggle__bars,
.tc-navtoggle__bars::before,
.tc-navtoggle__bars::after {
	display: block; width: 18px; height: 1px; background: var(--tc-ink); content: "";
}

.tc-navtoggle__bars { position: relative; }
.tc-navtoggle__bars::before { position: absolute; top: -5px; }
.tc-navtoggle__bars::after { position: absolute; top: 5px; }

/* ---------- hero ---------- */

.tc-hero { border-bottom: 3px double var(--tc-rule); }

.tc-hero__grid {
	display: grid;
	/* 画像側の列を絞り、上下中央で揃えて余白を詰める */
	grid-template-columns: minmax(280px, 1.05fr) minmax(0, 0.95fr);
	align-items: center;
}

.tc-hero__lead {
	padding: clamp(22px, 3vw, 40px) var(--tc-gutter);
}

.tc-hero__eyebrow {
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.18em;
	color: #fff;
	background: var(--tc-blue);
	display: inline-block;
	padding: 4px 10px;
	margin-bottom: 18px;
}

.tc-hero__title {
	font-size: clamp(30px, 4.2vw, 52px);
	font-weight: 900;
	line-height: 1.24;
	letter-spacing: 0.01em;
	margin-bottom: 18px;
}

.tc-hero__body {
	font-size: 15px;
	border-top: 1px solid var(--tc-rule-soft);
	padding-top: 16px;
}

.tc-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 22px 0 0;
}

.tc-hero__note {
	margin: 14px 0 0;
	font-size: 12.5px;
	line-height: 1.8;
	color: var(--tc-ink-mid);
}

.tc-hero__app { margin-top: 26px; max-width: 260px; }

.tc-hero__app .tc-figure__img {
	border: 0;
	background: transparent;
}

.tc-hero__visual { padding: clamp(22px, 3vw, 40px) var(--tc-gutter); }

/* key visual + hotspots */

.tc-keyvisual__frame {
	display: grid;
	place-items: center;
	overflow: hidden;
}

.tc-keyvisual__img {
	display: block;
	width: auto;
	max-width: 100%;
	max-height: clamp(320px, 34vw, 440px);
	filter: contrast(1.12) saturate(1.05);
}

.tc-keyvisual__caption,
.tc-figure__caption {
	margin: 8px 0 0;
	font-family: var(--tc-mono);
	font-size: 10px;
	letter-spacing: 0.08em;
	color: var(--tc-ink-mid);
}

/* ---------- buttons ---------- */

.tc-btn {
	display: inline-block;
	padding: 11px 22px;
	border: 1px solid var(--tc-ink);
	background: var(--tc-paper);
	color: var(--tc-ink);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.06em;
	transition: background .15s ease, color .15s ease;
}

.tc-btn:hover { background: var(--tc-ink); color: #fff; text-decoration: none; }

.tc-btn--primary {
	background: var(--tc-blue);
	border-color: var(--tc-blue);
	color: #fff;
}

.tc-btn--primary:hover { background: var(--tc-ink); border-color: var(--tc-ink); }

/* ---------- sections ---------- */

.tc-section {
	padding: clamp(32px, 4.4vw, 60px) var(--tc-gutter);
	border-bottom: 1px solid var(--tc-rule);
}

.tc-section:last-child { border-bottom: 0; }

.tc-section__head {
	display: flex;
	align-items: baseline;
	gap: 16px;
	flex-wrap: wrap;
	border-bottom: 3px double var(--tc-rule);
	padding-bottom: 12px;
	margin-bottom: clamp(20px, 2.6vw, 34px);
}

.tc-section__label {
	margin: 0;
	display: flex;
	align-items: center;
	gap: 10px;
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.24em;
	color: var(--tc-blue);
	text-transform: uppercase;
}

.tc-section__index {
	display: grid; place-items: center;
	width: 24px; height: 24px;
	background: var(--tc-blue);
	color: #fff;
	font-size: 11px;
	letter-spacing: 0;
}

.tc-section__title {
	font-size: clamp(24px, 3.4vw, 38px);
	font-weight: 900;
	letter-spacing: 0.04em;
	margin: 0;
	flex: 1;
}

.tc-section__lead {
	max-width: 62em;
	font-size: 15px;
	margin-bottom: clamp(20px, 2.6vw, 32px);
}

.tc-section__more {
	margin: 24px 0 0;
	text-align: right;
	font-family: var(--tc-mono);
	font-size: 12px;
	letter-spacing: 0.1em;
	border-top: 1px solid var(--tc-rule-soft);
	padding-top: 12px;
}

.tc-empty {
	border: 1px dashed var(--tc-rule-soft);
	padding: 24px;
	text-align: center;
	color: var(--tc-ink-mid);
	font-size: 14px;
}

/* figures */

.tc-figure { margin: 0; }

.tc-figure__img {
	width: 100%;
	border: 1px solid var(--tc-rule);
	background: var(--tc-paper-tint);
	filter: contrast(1.12) saturate(1.05);
}

.tc-figure__placeholder {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	aspect-ratio: 4 / 3;
	border: 1px dashed var(--tc-blue);
	background: var(--tc-blue-tint);
	text-align: center;
	padding: 18px;
}

.tc-figure__placeholder-mark {
	font-family: var(--tc-serif);
	font-weight: 900;
	font-size: 26px;
	letter-spacing: 0.12em;
	color: var(--tc-blue);
}

.tc-figure__placeholder--edit {
	text-decoration: none;
	transition: border-color .15s, background-color .15s;
}

.tc-figure__placeholder--edit:hover {
	border-color: var(--tc-blue);
	background: var(--tc-blue-tint);
}

.tc-figure__placeholder-hint {
	margin-top: 6px;
	font-family: var(--tc-mono);
	font-size: 10px;
	letter-spacing: 0.08em;
	color: var(--tc-blue);
}

.tc-figure__placeholder-note {
	font-family: var(--tc-mono);
	font-size: 10px;
	letter-spacing: 0.06em;
	color: var(--tc-ink-mid);
	line-height: 1.7;
}

/* ---------- vision ---------- */

.tc-vision {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	gap: clamp(20px, 3vw, 40px);
}

.tc-vision__visual .tc-figure__placeholder { aspect-ratio: 16 / 10; }

.tc-vision__visual {
	display: grid;
	place-items: center;
	padding: clamp(16px, 2.6vw, 36px);
}

.tc-vision__visual .tc-figure { width: 100%; }

.tc-vision__visual .tc-figure__img {
	border: 0;
	background: transparent;
	max-width: 62%;
	margin-inline: auto;
}

.tc-statement {
	border-top: 1px solid var(--tc-rule);
	padding: 14px 0;
}

/* 最初の項目（キーワード）の上の罫線は出さない */
.tc-statement:first-child {
	border-top: 0;
	padding-top: 0;
}

.tc-statement__label {
	font-family: var(--tc-mono);
	font-size: 10px;
	letter-spacing: 0.24em;
	color: var(--tc-blue);
	margin: 0 0 6px;
	text-transform: uppercase;
}

.tc-statement__value {
	font-family: var(--tc-serif);
	font-weight: 900;
	font-size: clamp(22px, 2.9vw, 34px);
	line-height: 1.4;
	margin: 0;
}

.tc-statement__value--keyword { color: var(--tc-blue); }

.tc-vision__body {
	border-top: 1px solid var(--tc-rule);
	padding-top: 14px;
	font-size: 14px;
}

/* ---------- news ---------- */

.tc-newslist {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	border-top: 1px solid var(--tc-rule);
}

.tc-newslist__item {
	border-right: 1px solid var(--tc-rule-soft);
	border-bottom: 1px solid var(--tc-rule-soft);
}

.tc-newslist__item:nth-child(2n) { border-right: 0; }

.tc-newslist__link {
	display: block;
	height: 100%;
	padding: 18px;
	color: var(--tc-ink);
	transition: background .15s ease;
}

.tc-newslist__link:hover { background: var(--tc-blue-tint); text-decoration: none; }

.tc-newslist__thumb { margin-bottom: 12px; border: 1px solid var(--tc-rule); }

.tc-newslist__meta {
	display: flex;
	align-items: center;
	gap: 10px;
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.1em;
	color: var(--tc-ink-mid);
	margin-bottom: 8px;
}

.tc-newslist__cat {
	background: var(--tc-blue);
	color: #fff;
	padding: 2px 8px;
	font-size: 10px;
	letter-spacing: 0.08em;
}

.tc-newslist__title {
	font-size: 17px;
	line-height: 1.5;
	margin-bottom: 8px;
}

.tc-newslist__excerpt {
	font-size: 13px;
	line-height: 1.8;
	color: var(--tc-ink-mid);
	margin: 0;
}

.tc-newslist--archive {
	grid-template-columns: repeat(2, 1fr);
}

/* ---------- business ---------- */

.tc-article {
	display: grid;
	grid-template-columns: 0.95fr 1.05fr;
	gap: clamp(20px, 3vw, 40px);
	padding-bottom: clamp(22px, 3vw, 36px);
	margin-bottom: clamp(22px, 3vw, 36px);
}

.tc-article__lead {
	font-size: 16px;
	font-family: var(--tc-serif);
	line-height: 1.95;
	border-left: 3px solid var(--tc-blue);
	padding-left: 18px;
}

.tc-article__body { font-size: 14.5px; }

.tc-ref {
	margin-top: 14px;
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.04em;
	line-height: 1.7;
	word-break: break-word;
}

.tc-cards {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	/* タイトル / 画像 / 本文 の3行。カード側で共有し、横並び時に位置を揃える。 */
	grid-template-rows: auto auto auto;
	gap: 0;
	border: 1px solid var(--tc-rule);
}

.tc-card {
	display: grid;
	grid-row: span 3;
	grid-template-rows: subgrid;
	padding: clamp(18px, 2.4vw, 28px);
	border-right: 1px solid var(--tc-rule-soft);
}

/* サブグリッド非対応ブラウザ向け。タイトルに2行分の高さを確保する。 */
@supports not (grid-template-rows: subgrid) {
	.tc-card { display: block; }
	.tc-card__title { min-height: 2.8em; }
}

.tc-card:last-child { border-right: 0; }

.tc-card__title { font-size: 20px; margin-bottom: 14px; }
.tc-card .tc-figure { margin-bottom: 14px; }
.tc-card__body { font-size: 14px; }

/* ---------- features ---------- */

.tc-features {
	border-top: 1px solid var(--tc-rule);
	border-bottom: 1px solid var(--tc-rule);
}

.tc-feature {
	display: grid;
	grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
	gap: clamp(16px, 2.6vw, 40px);
	align-items: start;
	padding: clamp(18px, 2.4vw, 28px);
	border-bottom: 1px solid var(--tc-rule-soft);
}

.tc-feature:last-child { border-bottom: 0; }

.tc-feature__head { position: relative; }

.tc-feature__num {
	font-family: var(--tc-serif);
	font-weight: 900;
	font-size: 40px;
	line-height: 1;
	color: var(--tc-blue-soft);
	margin-bottom: 6px;
}

.tc-feature__title { font-size: clamp(19px, 2vw, 23px); margin-bottom: 0; }

/* 試作：番号の見た目はそのままに、タイトルと同じ行へ */
.tc-feature__head--inline {
	display: flex;
	align-items: baseline;
	gap: .4em;
	flex-wrap: wrap;
}

.tc-feature__head--inline .tc-feature__num { margin-bottom: 0; }

.tc-feature__body {
	font-size: 14.5px;
	margin: 0;
	border-left: 1px solid var(--tc-rule-soft);
	padding-left: clamp(16px, 2.2vw, 32px);
}

/* ---------- use cases ---------- */

.tc-usecases {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	border: 1px solid var(--tc-rule);
}

.tc-usecase {
	display: flex;
	flex-direction: column;
	padding: clamp(18px, 2.4vw, 28px);
	border-right: 1px solid var(--tc-rule-soft);
	border-bottom: 1px solid var(--tc-rule-soft);
}

.tc-usecase:nth-child(2n) { border-right: 0; }
.tc-usecase:nth-last-child(1),
.tc-usecase:nth-last-child(2):nth-child(2n+1) { border-bottom: 0; }

/* 枠の高さは直接指定する。aspect-ratio から高さを算出すると、
   Safari が画像の height:100% を解決できず、はみ出して切れるため。 */
.tc-usecase__thumb {
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	height: clamp(190px, 21vw, 300px);
	padding: 12px 20px;
	--tc-thumb-box: clamp(190px, 21vw, 300px);
	margin-bottom: 0;
	overflow: hidden;
}

.tc-usecase__thumb img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	filter: contrast(1.12) saturate(1.05);
}

.tc-usecase__caption {
	margin: 10px 0 0;
	font-family: var(--tc-mono);
	font-size: 10px;
	letter-spacing: 0.08em;
	color: var(--tc-ink-mid);
}

.tc-usecase__thumb--md img { max-width: 80%; max-height: 80%; }
.tc-usecase__thumb--sm img { max-width: 72%; max-height: 72%; }

/* 一覧ページのみ、縦長・横長とも同じ正方形の枠に収めて大きさを揃える */
.tc-ucrow__visual .tc-usecase__thumb img {
	max-width: min(100%, var(--tc-thumb-box));
	max-height: 100%;
}

.tc-ucrow__visual .tc-usecase__thumb--md img {
	max-width: min(88%, calc(var(--tc-thumb-box) * .88));
	max-height: 88%;
}

.tc-ucrow__visual .tc-usecase__thumb--sm img {
	max-width: min(72%, calc(var(--tc-thumb-box) * .72));
	max-height: 72%;
}

.tc-usecase__placeholder {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	height: 100%;
	background-image: repeating-linear-gradient(45deg, rgba(11, 63, 156, .07) 0 8px, transparent 8px 16px);
}

.tc-usecase__placeholder-mark {
	font-family: var(--tc-serif);
	font-weight: 900;
	font-size: 26px;
	letter-spacing: 0.12em;
	color: var(--tc-blue);
}

.tc-usecase__placeholder-note {
	font-family: var(--tc-mono);
	font-size: 10px;
	color: var(--tc-ink-mid);
}

.tc-usecase__text {
	margin-top: 16px;
}

.tc-usecase__org {
	font-family: var(--tc-mono);
	font-size: 12px;
	letter-spacing: 0.14em;
	color: var(--tc-blue);
	margin-bottom: 6px;
}

.tc-usecase__title { font-size: 19px; margin-bottom: 10px; }
.tc-usecase__body { font-size: 14px; margin-bottom: 8px; }

.tc-section__action {
	margin: clamp(20px, 2.6vw, 30px) 0 0;
	text-align: center;
}

/* ---------- ユースケース一覧ページ ---------- */

.tc-ucarchive {
	border-top: 1px solid var(--tc-rule);
}

.tc-ucrow {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	gap: clamp(20px, 3vw, 48px);
	align-items: start;
	padding: clamp(24px, 3.4vw, 44px) var(--tc-gutter);
	border-bottom: 1px solid var(--tc-rule-soft);
}

.tc-ucrow__num {
	font-family: var(--tc-serif);
	font-weight: 900;
	font-size: 34px;
	line-height: 1;
	color: var(--tc-blue-soft);
	margin-bottom: 8px;
}

.tc-ucrow__title {
	font-size: clamp(22px, 2.6vw, 30px);
	font-weight: 900;
	line-height: 1.45;
	margin-bottom: 14px;
}

.tc-ucrow__body {
	font-size: 15px;
	border-top: 1px solid var(--tc-rule-soft);
	padding-top: 14px;
}

.tc-ucarchive__foot {
	display: flex;
	justify-content: space-between;
	align-items: center;
	flex-wrap: wrap;
	gap: 14px;
	padding: clamp(24px, 3vw, 40px) var(--tc-gutter);
}

.tc-ucarchive__foot p { margin: 0; }

@media (max-width: 719px) {
	.tc-ucrow { grid-template-columns: 1fr; }
}

/* ---------- company ---------- */

.tc-company {
	display: grid;
	grid-template-columns: 1.25fr 0.75fr;
	gap: clamp(20px, 3vw, 40px);
	align-items: start;
}

/* 会社写真が未設定のときは1カラムにする */
.tc-company--nofigure { grid-template-columns: 1fr; }

.tc-company__table {
	width: 100%;
	border-collapse: collapse;
	border-top: 1px solid var(--tc-rule);
	font-size: 14.5px;
}

.tc-company__table th,
.tc-company__table td {
	border-bottom: 1px solid var(--tc-rule-soft);
	padding: 14px 10px;
	text-align: left;
	vertical-align: top;
}

.tc-company__table th {
	width: 8.5em;
	font-family: var(--tc-mono);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.1em;
	color: var(--tc-blue);
	white-space: nowrap;
}

/* ---------- contact ---------- */

.tc-formwrap {
	border: 1px solid var(--tc-rule);
	background: var(--tc-paper-tint);
	padding: clamp(8px, 1.5vw, 16px);
}

.tc-formwrap__frame {
	display: block;
	width: 100%;
	min-height: 900px;
	border: 0;
	background: var(--tc-paper);
}

.tc-contact__fallback {
	margin: 14px 0 0;
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.06em;
	color: var(--tc-ink-mid);
	text-align: center;
}

/* ---------- inner pages ---------- */

.tc-main { padding: 0; }

.tc-section--pagehead { border-bottom: 0; padding-bottom: 0; }
.tc-section--pagehead .tc-section__lead { margin-bottom: clamp(24px, 3vw, 40px); }

.tc-pagehead__label {
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.26em;
	color: var(--tc-blue);
	margin-bottom: 10px;
}

.tc-pagehead__title {
	font-size: clamp(26px, 4vw, 42px);
	font-weight: 900;
	letter-spacing: 0.04em;
}

.tc-pagehead__desc {
	max-width: 62em;
	margin-top: 16px;
	text-align: left;
	font-size: 15px;
}

.tc-layout {
	display: grid;
	grid-template-columns: 1fr;
	padding: clamp(28px, 4vw, 52px) var(--tc-gutter);
	gap: clamp(24px, 3vw, 44px);
}

body:not(.no-sidebar) .tc-layout { grid-template-columns: minmax(0, 1fr) 280px; }

.tc-layout__side { border-left: 1px solid var(--tc-rule-soft); padding-left: clamp(16px, 2vw, 28px); }

.widget { margin-bottom: 28px; }

.widget-title {
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.2em;
	color: var(--tc-blue);
	border-bottom: 1px solid var(--tc-rule);
	padding-bottom: 8px;
	margin-bottom: 12px;
	text-transform: uppercase;
}

.widget ul { list-style: none; margin: 0; padding: 0; font-size: 14px; }
.widget li { border-bottom: 1px dotted var(--tc-rule-soft); padding: 8px 0; }

.tc-entry { max-width: 820px; }

.tc-entry__head { border-bottom: 1px solid var(--tc-rule); padding-bottom: 16px; margin-bottom: 24px; }

.tc-entry__meta {
	display: flex; align-items: center; gap: 10px;
	font-family: var(--tc-mono);
	font-size: 11px;
	letter-spacing: 0.12em;
	color: var(--tc-ink-mid);
	margin-bottom: 10px;
}

.tc-entry__cat { background: var(--tc-blue); color: #fff; padding: 2px 8px; font-size: 10px; }

.tc-entry__title { font-size: clamp(24px, 3.4vw, 36px); font-weight: 900; line-height: 1.4; }

.tc-entry__thumb {
	display: flex;
	justify-content: center;
	margin: 0 0 24px;
	max-width: 100%;
}

.tc-entry__thumb img {
	width: auto;
	max-width: 100%;
	/* 記事の主役は本文なので、画像は大きくなりすぎない高さに収める */
	max-height: clamp(220px, 34vw, 380px);
	height: auto;
}

.tc-entry__content { font-size: 15.5px; }
.tc-entry__content h2 {
	font-size: 24px; margin: 2em 0 .8em;
	border-left: 4px solid var(--tc-blue); padding-left: 14px;
}
.tc-entry__content h3 { font-size: 20px; margin: 1.8em 0 .7em; }
.tc-entry__content ul,
.tc-entry__content ol { padding-left: 1.4em; margin: 0 0 1.4em; }
.tc-entry__content li { margin-bottom: .4em; }
.tc-entry__content img { border: 1px solid var(--tc-rule); max-width: 100%; height: auto; }
.tc-entry__content figure,
.tc-entry__content table,
.tc-entry__content pre { max-width: 100%; }
.tc-entry__content pre { overflow-x: auto; }
.tc-entry__content blockquote {
	border-left: 3px solid var(--tc-blue);
	background: var(--tc-blue-tint);
	margin: 0 0 1.4em;
	padding: 16px 20px;
}
.tc-entry__content table { width: 100%; border-collapse: collapse; }
.tc-entry__content th,
.tc-entry__content td { border: 1px solid var(--tc-rule-soft); padding: 10px; }

.tc-entry__foot {
	border-top: 1px solid var(--tc-rule);
	margin-top: 36px;
	padding-top: 18px;
	font-size: 13px;
}

.tc-entry__nav { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.tc-entry__back { margin: 0; font-family: var(--tc-mono); font-size: 12px; letter-spacing: 0.08em; }

.navigation.pagination {
	margin-top: 32px;
	border-top: 1px solid var(--tc-rule);
	padding-top: 16px;
	font-family: var(--tc-mono);
	font-size: 12px;
}

.navigation.pagination .nav-links { display: flex; gap: 8px; flex-wrap: wrap; }

.navigation.pagination .page-numbers {
	display: grid; place-items: center;
	min-width: 34px; height: 34px;
	border: 1px solid var(--tc-rule-soft);
	padding: 0 10px;
	color: var(--tc-ink);
}

.navigation.pagination .page-numbers.current,
.navigation.pagination .page-numbers:hover {
	background: var(--tc-blue); border-color: var(--tc-blue); color: #fff; text-decoration: none;
}

/* 404 & search form */

.tc-404 { padding: clamp(50px, 8vw, 110px) var(--tc-gutter); text-align: center; }
.tc-404__label { font-family: var(--tc-mono); font-size: 12px; letter-spacing: 0.3em; color: var(--tc-blue); }
.tc-404__title { font-size: clamp(26px, 4vw, 42px); font-weight: 900; margin: 12px 0 16px; }
.tc-404__back { margin: 22px 0; }

.tc-searchform { display: flex; gap: 0; max-width: 420px; margin: 0 auto; }

.tc-searchform__field {
	flex: 1;
	border: 1px solid var(--tc-rule);
	background: var(--tc-paper);
	padding: 10px 14px;
	font: inherit;
	font-size: 14px;
	min-width: 0;
}

.tc-searchform__submit {
	border: 1px solid var(--tc-blue);
	background: var(--tc-blue);
	color: #fff;
	padding: 10px 18px;
	font-family: var(--tc-mono);
	font-size: 12px;
	letter-spacing: 0.1em;
	cursor: pointer;
}

/* ---------- footer ---------- */

.tc-footer { border-top: 3px double var(--tc-rule); }

.tc-footer__top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 14px var(--tc-gutter);
	border-bottom: 1px solid var(--tc-rule);
}

.tc-footer__tagline {
	margin: 0;
	font-family: var(--tc-serif);
	font-weight: 900;
	font-size: clamp(18px, 2.4vw, 26px);
	letter-spacing: 0.06em;
}

.tc-footer__back { margin: 0; font-family: var(--tc-mono); font-size: 11px; letter-spacing: 0.1em; }

.tc-footer__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	border-bottom: 1px solid var(--tc-rule);
}

.tc-footer__col {
	padding: clamp(18px, 2.4vw, 28px) var(--tc-gutter);
	border-right: 1px solid var(--tc-rule-soft);
}

.tc-footer__col:last-child { border-right: 0; }

.tc-footer__heading {
	font-family: var(--tc-mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.2em;
	color: var(--tc-blue);
	margin-bottom: 10px;
}

.tc-footer__body { font-size: 13px; line-height: 1.9; margin: 0; }
.tc-footer__body a { color: var(--tc-ink); border-bottom: 1px solid var(--tc-blue); }

.tc-footer__menu { list-style: none; margin: 0; padding: 0; font-size: 13px; }
.tc-footer__menu a { color: var(--tc-ink); }

.tc-footer__bottom {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
	padding: 12px var(--tc-gutter);
	font-family: var(--tc-mono);
	font-size: 10px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--tc-ink-mid);
}

.tc-footer__bottom p { margin: 0; }

/* ---------- responsive ---------- */

@media (max-width: 1080px) {
	:root { --tc-gutter: clamp(14px, 2.4vw, 28px); }

	.tc-hero__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
	.tc-vision { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
	.tc-article { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
	.tc-company { grid-template-columns: minmax(0, 1.4fr) minmax(0, 0.6fr); }
	.tc-company--nofigure { grid-template-columns: 1fr; }
	.tc-hero__title { font-size: clamp(26px, 3.6vw, 40px); }
	.tc-feature { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }

	body:not(.no-sidebar) .tc-layout { grid-template-columns: 1fr; }
	.tc-layout__side { border-left: 0; border-top: 1px solid var(--tc-rule); padding-left: 0; padding-top: 24px; }
}

@media (max-width: 719px) {
	.tc-hero__grid,
	.tc-vision,
	.tc-article,
	.tc-company { grid-template-columns: 1fr; }

	.tc-cards,
	.tc-usecases { grid-template-columns: 1fr; }
	.tc-card { border-right: 0; border-bottom: 1px solid var(--tc-rule-soft); }
	.tc-card:last-child { border-bottom: 0; }
	/* 1列表示では、2列前提の「最後から2番目は線なし」指定を打ち消す
	   （同じ強さの指定で上書きする必要があるため、セレクタを揃える） */
	.tc-usecase { border-right: 0; border-bottom: 1px solid var(--tc-rule-soft); }
	.tc-usecase:nth-last-child(2):nth-child(2n+1) { border-bottom: 1px solid var(--tc-rule-soft); }
	.tc-usecase:nth-last-child(1) { border-bottom: 0; }
	.tc-newslist { grid-template-columns: 1fr; }
	.tc-newslist__item { border-right: 0; }
	.tc-feature { grid-template-columns: 1fr; gap: 10px; }
	.tc-feature__body { border-left: 0; padding-left: 0; }
	.tc-formwrap__frame { min-height: 1100px; }
}

@media (max-width: 719px) {
	.tc-masthead__main { justify-content: space-between; }
	.tc-masthead__brand { text-align: left; }
	.tc-masthead__logo img { margin: 0; }

	.tc-navtoggle { display: inline-flex; }

	.tc-nav { display: none; }
	.tc-nav.is-open { display: block; }

	.tc-nav__list { flex-direction: column; }
	.tc-nav__list > li { border-right: 0; border-bottom: 1px solid var(--tc-rule-soft); }
	.tc-nav__list > li > a { text-align: left; padding: 12px var(--tc-gutter); }
	.tc-nav__en { display: inline; margin-left: 10px; }

	.tc-masthead__rail { grid-template-columns: 1fr; text-align: center; }
	.tc-masthead__rail > * { padding: 6px var(--tc-gutter); }
	.tc-masthead__edition { border-left: 0; border-right: 0; border-top: 1px solid var(--tc-rule-soft); border-bottom: 1px solid var(--tc-rule-soft); }
	/* 帯が空のときは灰色の線を出さない */
	.tc-masthead__rail--empty .tc-masthead__edition { border-top: 0; border-bottom: 0; }
	.tc-masthead__link { text-align: center; }

	.tc-newslist { grid-template-columns: 1fr; }
	.tc-newslist__item { border-right: 0; }
	.tc-newslist--archive { grid-template-columns: 1fr; }

	.tc-section__head { gap: 8px; }
	.tc-footer__col { border-right: 0; border-bottom: 1px solid var(--tc-rule-soft); }
	.tc-footer__top { flex-direction: column; align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	* { transition: none !important; }
}

/* ---------- print ---------- */

@media print {
	body { background: #fff; }
	body { padding-inline: 0; }
	.tc-paper { border: 0; box-shadow: none; margin: 0; }
	.tc-nav, .tc-navtoggle, .tc-formwrap { display: none; }
}
