.ftd-theme-main {
	--ftd-theme-ink: #17384a;
	--ftd-theme-muted: #5c7080;
	--ftd-theme-line: #d6e6f2;
	--ftd-theme-soft: #f4faff;
	--ftd-theme-blue: #075399;
	--ftd-theme-blue-2: #2b78b8;
	background: #f6f9fc;
	color: var(--ftd-theme-ink);
	min-height: 100vh;
}

.ftd-theme-main,
.ftd-theme-main * { box-sizing: border-box; }
.ftd-theme-main :where(h1,h2,h3,h4,p,li,a,dt,dd,summary,span) { overflow-wrap: break-word; }

.ftd-theme-article {
	width: min(1180px, calc(100% - 40px));
	margin: 0 auto;
	padding: 32px 0 72px;
}

.ftd-theme-hero,
.ftd-theme-card,
.ftd-theme-view,
.ftd-theme-map__group,
.ftd-theme-barrier,
.ftd-theme-faq-list details {
	background: #fff;
	border: 1px solid var(--ftd-theme-line);
	border-radius: 14px;
	box-shadow: none;
}

.ftd-theme-hero {
	display: grid;
	gap: 28px;
	margin: 24px 0 0;
	padding: clamp(32px, 5vw, 56px);
	border-radius: 22px;
	background: linear-gradient(135deg, #f4faff, #fff);
	box-shadow: 0 16px 44px rgba(14,70,113,.07);
}

.ftd-theme-hero__heading { max-width: 880px; }
.ftd-theme-hero h1 {
	margin: 0;
	color: var(--ftd-theme-ink);
	font-size: clamp(2.35rem, 4.6vw, 4.35rem);
	line-height: 1.06;
	letter-spacing: -.04em;
}

.ftd-theme-hero__heading p {
	margin: 16px 0 0;
	color: #214b63;
	font-size: clamp(1.18rem, 2vw, 1.55rem);
	font-weight: 800;
	line-height: 1.5;
}

.ftd-theme-hero__content {
	display: grid;
	grid-template-columns: minmax(0, .92fr) minmax(360px, 1.08fr);
	gap: clamp(24px, 4vw, 44px);
	align-items: start;
}

.ftd-theme-hero__definition,
.ftd-theme-hero__lead {
	margin: 0;
	color: #284252;
	font-size: clamp(1rem, 1.35vw, 1.12rem);
	line-height: 1.88;
}
.ftd-theme-hero__lead { margin-top: 16px; }

.ftd-theme-hero__date {
	display: flex;
	gap: 12px;
	align-items: baseline;
	margin: 22px 0 0;
	color: var(--ftd-theme-muted);
	font-size: .86rem;
	line-height: 1.7;
}
.ftd-theme-hero__date span,
.ftd-theme-hero__date time { font-weight: 800; }
.ftd-theme-hero__date time { color: var(--ftd-theme-ink); }

.ftd-theme-blueprint { margin: -25px 0 0; }
.ftd-theme-blueprint figcaption {
	margin: 0 0 6px;
	color: var(--ftd-theme-muted);
	font-size: .78rem;
	font-weight: 800;
	line-height: 1.5;
}
.ftd-theme-blueprint__svg {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 14px;
	box-shadow: none;
}
.ftd-theme-blueprint__connector {
	fill: none;
	stroke: var(--ftd-theme-blue-2);
	stroke-width: 2;
	stroke-linecap: round;
}
.ftd-theme-blueprint__node rect {
	fill: rgba(255,255,255,.92);
	stroke: #9fc8e6;
	stroke-width: 1.4;
}
.ftd-theme-blueprint__icon {
	fill: none;
	stroke: var(--ftd-theme-blue);
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.ftd-theme-blueprint__label {
	fill: var(--ftd-theme-ink);
	font-size: 20px;
	font-weight: 800;
}
.ftd-theme-blueprint__summary {
	fill: #31556c;
	font-size: 13px;
	font-weight: 700;
}
.ftd-theme-blueprint__detail {
	fill: var(--ftd-theme-muted);
	font-size: 12px;
	font-weight: 700;
}
.ftd-theme-blueprint__list { display: none; }

.ftd-theme-jump {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 18px 0 0;
	padding: 10px;
	background: #fff;
	border: 1px solid var(--ftd-theme-line);
	border-radius: 16px;
}
.ftd-theme-jump a {
	min-height: 40px;
	display: inline-flex;
	align-items: center;
	color: var(--ftd-theme-blue);
	font-size: .9rem;
	font-weight: 800;
	line-height: 1.45;
	text-decoration: none;
	padding: 8px 12px;
	border-radius: 10px;
}
.ftd-theme-jump a:hover,
.ftd-theme-jump a:focus-visible {
	background: var(--ftd-theme-soft);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ftd-theme-section {
	margin-top: clamp(36px, 6vw, 72px);
	padding: 0;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
}

.ftd-theme-section + .ftd-theme-section {
	padding-top: clamp(28px, 4vw, 44px);
	border-top: 1px solid var(--ftd-theme-line);
}
.ftd-theme-section--split {
	display: grid;
	grid-template-columns: minmax(220px, .75fr) minmax(0, 1.25fr);
	gap: 28px;
}
.ftd-theme-kicker {
	margin: 0 0 10px;
	color: var(--ftd-theme-blue);
	font-size: .78rem;
	font-weight: 850;
	letter-spacing: .06em;
}
.ftd-theme-section h2 {
	margin: 6px 0 14px;
	color: var(--ftd-theme-ink);
	font-size: clamp(1.55rem, 2.2vw, 2rem);
	line-height: 1.32;
	letter-spacing: -.03em;
}
.ftd-theme-section h3 {
	margin: 0 0 10px;
	color: #214b63;
	font-size: 1.05rem;
	line-height: 1.52;
}
.ftd-theme-section :where(p,li,dd) {
	color: #284252;
	font-size: .94rem;
	line-height: 1.82;
}
.ftd-theme-section p { margin: 0; }

.ftd-theme-check-list,
.ftd-theme-barrier ul,
.ftd-theme-map ul,
.ftd-theme-linked-entities ul {
	margin: 14px 0 0;
	padding-left: 1.2em;
}

.ftd-theme-signal-layout {
	display: grid;
	grid-template-columns: minmax(240px, .8fr) minmax(0, 1.2fr);
	gap: 18px;
}
.ftd-theme-view,
.ftd-theme-card,
.ftd-theme-map__group,
.ftd-theme-barrier,
.ftd-theme-faq-list details {
	box-shadow: none;
	background: #fff;
	padding: 20px;
	border-radius: 12px;
}

#theme-signals .ftd-theme-view,
#theme-signals .ftd-theme-card {
	background: var(--ftd-theme-soft);
}

.ftd-theme-signal-grid,
.ftd-theme-tech-grid,
.ftd-theme-future-grid,
.ftd-theme-barrier-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
}
.ftd-theme-card span,
.ftd-theme-barrier span,
.ftd-theme-map__group header span {
	display: inline-block;
	margin-bottom: 8px;
	color: var(--ftd-theme-blue);
	font-size: .78rem;
	font-weight: 800;
}
.ftd-theme-card a,
.ftd-theme-map a,
.ftd-theme-linked-entities a {
	color: #0b5da7;
	font-weight: 800;
	text-decoration: none;
}
.ftd-theme-card a:hover,
.ftd-theme-card a:focus-visible,
.ftd-theme-map a:hover,
.ftd-theme-map a:focus-visible,
.ftd-theme-linked-entities a:hover,
.ftd-theme-linked-entities a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ftd-theme-map {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
	margin-top: 18px;
}
.ftd-theme-map__group {
	position: relative;
	overflow: hidden;
	background: linear-gradient(180deg, #fff, #f8fcff);
}
.ftd-theme-map__group::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 4px;
	background: var(--ftd-theme-blue-2);
}

.ftd-theme-tech-grid {
	gap: 0 28px;
}

.ftd-theme-tech-card {
	padding: 18px 0;
	border: 0;
	border-top: 1px solid var(--ftd-theme-line);
	border-radius: 0;
	background: transparent;
}

.ftd-theme-tech-card:nth-child(-n+3) {
	border-top-color: #bcd9ef;
}

.ftd-theme-tech-card dl {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
	margin: 16px 0 0;
}
.ftd-theme-tech-card dt {
	color: var(--ftd-theme-muted);
	font-size: .78rem;
	font-weight: 700;
}
.ftd-theme-tech-card dd {
	margin: 3px 0 0;
	color: var(--ftd-theme-ink);
	font-size: .86rem;
	font-weight: 800;
	line-height: 1.6;
}

.ftd-theme-use-case-grid { display: grid; gap: 16px; }
.ftd-theme-use-case-grid--3col { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ftd-theme-use-case-grid--2col { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ftd-theme-score { color: #174b78; font-weight: 800; }

.ftd-theme-use-case-grid .ftd-theme-card,
.ftd-theme-future-grid .ftd-theme-card {
	border-radius: 12px;
	background: #fff;
}

.ftd-theme-future-grid .ftd-theme-card {
	border-left: 4px solid #bcd9ef;
}
.ftd-theme-future-card__media {
	display: block;
	overflow: hidden;
	aspect-ratio: 16 / 9;
	margin: -8px -8px 14px;
	border-radius: 10px;
	background: var(--ftd-theme-soft);
}
.ftd-theme-future-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ftd-theme-linked-entities {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px;
	margin-top: 24px;
}
.ftd-theme-linked-entities section {
	border-top: 1px solid var(--ftd-theme-line);
	padding-top: 16px;
}
.ftd-theme-linked-entities li span {
	display: inline-block;
	margin-left: 8px;
	color: var(--ftd-theme-muted);
	font-size: .85rem;
}

.ftd-theme-faq-list { display: grid; gap: 10px; }
.ftd-theme-faq-list details {
	background: #fff;
	border-radius: 12px;
}
.ftd-theme-faq-list summary {
	cursor: pointer;
	color: var(--ftd-theme-ink);
	font-size: 1rem;
	font-weight: 800;
	line-height: 1.55;
}
.ftd-theme-faq-list p { margin-top: 12px; }

@media (max-width: 900px) {
	.ftd-theme-hero__content,
	.ftd-theme-section--split,
	.ftd-theme-signal-layout,
	.ftd-theme-linked-entities { grid-template-columns: 1fr; }
	.ftd-theme-map,
	.ftd-theme-signal-grid,
	.ftd-theme-tech-grid,
	.ftd-theme-future-grid,
	.ftd-theme-barrier-grid,
	.ftd-theme-use-case-grid,
	.ftd-theme-use-case-grid--3col,
	.ftd-theme-use-case-grid--2col { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 520px) {
	.ftd-theme-article { width: 100%; padding: 0 14px 56px; }
	.ftd-theme-hero { padding: 22px; }
	.ftd-theme-section { padding: 0; }
	.ftd-theme-hero { border-radius: 24px; }
	.ftd-theme-hero h1 {
		font-size: clamp(2.15rem, 12vw, 3.1rem);
		line-height: 1.1;
	}
	.ftd-theme-hero__heading p { font-size: 1.08rem; }
	.ftd-theme-hero__date { display: grid; gap: 2px; }
	.ftd-theme-blueprint { margin-top: 0; }
	.ftd-theme-blueprint figcaption { margin-bottom: 8px; }
	.ftd-theme-blueprint__svg { display: none; }
	.ftd-theme-blueprint__list {
		display: grid;
		gap: 10px;
		margin: 0;
		padding: 0;
		list-style: none;
	}
	.ftd-theme-blueprint__list li {
		position: relative;
		display: grid;
		gap: 3px;
		padding: 16px;
		border: 1px solid #bcd9ef;
		border-radius: 16px;
		background:
			linear-gradient(#f8fcff, #f8fcff) padding-box,
			repeating-linear-gradient(0deg, #e4f1fa 0 1px, transparent 1px 18px),
			repeating-linear-gradient(90deg, #e4f1fa 0 1px, transparent 1px 18px);
	}
	.ftd-theme-blueprint__list li + li::before {
		content: "↓";
		position: absolute;
		top: -21px;
		left: 50%;
		transform: translateX(-50%);
		color: var(--ftd-theme-blue);
		font-weight: 800;
	}
	.ftd-theme-blueprint__list strong {
		color: var(--ftd-theme-ink);
		font-size: 1.08rem;
		line-height: 1.35;
	}
	.ftd-theme-blueprint__list span {
		color: #31556c;
		font-size: .9rem;
		line-height: 1.65;
	}
	.ftd-theme-map,
	.ftd-theme-signal-grid,
	.ftd-theme-tech-grid,
	.ftd-theme-future-grid,
	.ftd-theme-barrier-grid,
	.ftd-theme-use-case-grid,
	.ftd-theme-use-case-grid--3col,
	.ftd-theme-use-case-grid--2col { grid-template-columns: minmax(0, 1fr); }
	.ftd-theme-jump { flex-wrap: wrap; }
	.ftd-theme-jump a { white-space: normal; }
}
