:root {
	--print-navy: #18305b;
	--print-green: #247565;
	--print-text: #183c36;
	--print-line: #d8e4e0;
}

* {
	box-sizing: border-box;
}

html {
	background: #edf2f1;
}

body {
	margin: 0;
	color: var(--print-text);
	font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", "YuGothic", Meiryo, sans-serif;
	-webkit-print-color-adjust: exact;
	print-color-adjust: exact;
}

.print-toolbar {
	position: sticky;
	z-index: 10;
	top: 0;
	display: flex;
	gap: 18px;
	align-items: center;
	justify-content: center;
	padding: 14px 24px;
	background: var(--print-navy);
	color: #fff;
}

.print-toolbar p {
	margin: 0;
	font-size: var(--font-xs);
}

.print-toolbar button,
.print-toolbar a {
	padding: 10px 16px;
	border: 1px solid #fff;
	background: #fff;
	color: var(--print-navy);
	font: inherit;
	font-size: var(--font-xs);
	font-weight: 700;
	text-decoration: none;
	cursor: pointer;
}

.print-toolbar a {
	background: transparent;
	color: #fff;
}

.print-document {
	width: min(100% - 40px, 210mm);
	margin: 32px auto;
	padding: 16mm 14mm;
	background: #fff;
	box-shadow: 0 14px 40px rgba(24, 60, 54, 0.12);
}

.print-header {
	display: grid;
	grid-template-columns: 46mm minmax(0, 1fr);
	gap: 14mm;
	align-items: end;
	padding-bottom: 8mm;
	border-bottom: 2px solid var(--print-navy);
}

.print-header img {
	display: block;
	width: 100%;
	height: auto;
}

.print-header p {
	margin: 0 0 2mm;
	color: var(--print-green);
	font-size: 9pt;
	font-weight: 700;
	letter-spacing: 0.18em;
}

.print-header h1 {
	margin: 0;
	font-size: 24pt;
	line-height: 1.3;
}

.print-summary {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 10mm;
	align-items: end;
	padding: 7mm 0 4mm;
}

.print-summary > p {
	margin: 0;
	font-size: 9.5pt;
	line-height: 1.8;
}

.print-summary dl {
	display: flex;
	gap: 7mm;
	margin: 0;
	font-size: 8.5pt;
}

.print-summary dl div {
	display: flex;
	gap: 2mm;
}

.print-summary dt {
	color: #73817e;
}

.print-summary dd {
	margin: 0;
	font-weight: 700;
}

.print-group {
	margin-top: 8mm;
}

.print-group > header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	padding: 0 0 2.5mm;
	border-bottom: 1.5px solid var(--print-navy);
}

.print-group > header h2 {
	margin: 0;
	font-size: 15pt;
}

.print-group > header p {
	margin: 0;
	font-size: 8.5pt;
}

.print-group__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 3mm 7mm;
	padding-top: 4mm;
}

.print-group__list article {
	padding: 3.5mm 0;
	border-bottom: 1px solid var(--print-line);
	break-inside: avoid;
	page-break-inside: avoid;
}

.print-group__list h3 {
	margin: 0 0 2.5mm;
	font-size: 10.5pt;
	line-height: 1.45;
}

.print-group__list dl {
	margin: 0;
	font-size: 7.8pt;
}

.print-group__list dl div {
	display: grid;
	grid-template-columns: 17mm minmax(0, 1fr);
	gap: 2mm;
	padding: 1.1mm 0;
}

.print-group__list dt {
	color: #73817e;
}

.print-group__list dd {
	margin: 0;
	line-height: 1.5;
}

.print-footer {
	display: flex;
	justify-content: space-between;
	margin-top: 10mm;
	padding-top: 4mm;
	border-top: 1px solid var(--print-line);
	font-size: 8pt;
}

.print-footer p {
	margin: 0;
}

@media (max-width: 700px) {
	.print-toolbar {
		position: static;
		flex-wrap: wrap;
		justify-content: flex-start;
	}

	.print-toolbar p {
		width: 100%;
	}

	.print-document {
		width: 100%;
		margin: 0;
		padding: 24px 18px;
		box-shadow: none;
	}

	.print-header,
	.print-summary,
	.print-group__list {
		grid-template-columns: 1fr;
	}

	.print-header img {
		width: 180px;
	}
}

@page {
	size: A4 portrait;
	margin: 12mm;
}

@media print {
	html,
	body {
		background: #fff;
	}

	.print-toolbar {
		display: none !important;
	}

	.print-document {
		width: auto;
		margin: 0;
		padding: 0;
		box-shadow: none;
	}

	.print-header {
		padding-bottom: 6mm;
	}

	.print-group {
		break-before: auto;
	}

	.print-group > header {
		break-after: avoid;
		page-break-after: avoid;
	}
}
