@charset "Shift_JIS";

/* フォント */
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&display=swap");

/* lightbox */
@import url("./lightbox.css");

/* ルート */
:root {
	--max-width: 820px;
	--main-color-1: hsl(23, 100%, 10%);
	--main-color-2: hsl(23, 100%, 30%);
	--main-color-3: hsl(23, 100%, 50%);
	--main-color-4: hsl(23, 100%, 90%);
	--main-color-5: hsl(23, 100%, 95%);
	--main-color-6: hsl(23, 100%, 98%);
	--base-color-1: #fff;
	--base-color-2: hsl(23, 30%, 95%);
	--base-color-3: hsl(23, 30%, 90%);
	--base-color-4: hsl(23, 30%, 85%);
	--base-color-5: hsl(23, 30%, 80%);
	--base-color-6: hsl(23, 30%, 75%);
	--sub-color-1: hsl(23, 30%, 30%);
	--attention-color: hsl(3, 100%, 50%);
	--line-height: 30px;
}

/* 文書本体 */
body {
	margin: 0;
	background-color: var(--base-color-1);
	color: var(--main-color-1);
	font-family: "Noto Sans JP", sans-serif;
	font-weight: 500;
	font-size: 16px;
	line-height: var(--line-height);
}

/* リンク */
a {
	color: var(--main-color-2);
	cursor: pointer;
}
a:hover {
	color: var(--main-color-3);
}

/* 基本的なナビ用リンク */
a.nav {
	display: grid;
	grid-template-columns: 1fr auto;
	align-items: center;
	gap: 10px;
	padding: 7px 10px;
	background-color: var(--main-color-6);
	font-size: 12px;
	line-height: 16px;
	text-decoration: none;
}
a.nav:hover {
	background-color: var(--main-color-5);
}
a.nav.active {
	background-color: var(--main-color-4);
}
a.nav::after {
	content: "\25B6";
	font-size: 10px;
}

/* フォーム要素 */
input, textarea, select, button {
	appearance: none;
	margin: 0;
	border: 0;
	padding: 0;
	box-sizing: border-box;
	background-color: var(--base-color-1);
	color: #000;
	font-family: inherit;
	font-size: 16px;
	line-height: 24px;
}
input:where([type="text"], [type="password"], [type="email"]), textarea, select, button {
	border: 1px solid currentColor;
	border-radius: 4px;
	padding: 7px;
}
button {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background-color: var(--main-color-6);
	color: var(--main-color-2);
	cursor: pointer;
}
button:hover {
	background-color: var(--main-color-5);
	color: var(--main-color-3);
}
button.next::after {
	content: "\25B6";
	font-size: 10px;
}
button.back::before {
	content: "\25C0";
	font-size: 10px;
}
button.special {
	border-color: var(--main-color-2);
	background-color: var(--main-color-2);
	color: var(--base-color-1);
}
button.special:hover {
	border-color: var(--main-color-3);
	background-color: var(--main-color-3);
}

/* 注目 */
.attention {
	color: var(--attention-color);
}

/* ヘッダー＞キャッチコピー */
header .catchphrase {
	display: grid;
	grid-template-columns: 1fr var(--max-width) 1fr;
	padding: 3px 0;
	background-color: var(--main-color-1);
	color: var(--base-color-1);
	font-size: 10px;
	line-height: 14px;
}
header .catchphrase::before {
	content: "";
}

/* ヘッダー＞サイト名＆HOMEへのリンク */
header .sitename-homenav-wrapper {
	display: grid;
	grid-template-columns: 1fr var(--max-width) 1fr;
	align-items: end;
	border-block: 1px solid var(--main-color-1);
	border-top-color: transparent;
	padding: 4px 0;
	background-color: var(--base-color-1);
}
header .sitename-homenav-wrapper > * {
	grid-row: 1;
	grid-column: 2;
}

/* ヘッダー＞ラッパー＞サイト名 */
header .sitename-homenav-wrapper > a.sitename {
	justify-self: start;
	color: var(--main-color-1) !important;
	text-decoration: none;
}
header .sitename-homenav-wrapper > a.sitename > .logo {
	display: block;
	height: 70px;
}

/* ヘッダー＞ラッパー＞HOMEへのリンク */
header .sitename-homenav-wrapper > a.nav.home {
	justify-self: end;
	gap: 4px;
	padding: 2px 0;
	background-color: transparent !important;
}
header .sitename-homenav-wrapper > a.nav.home::before {
	content: "HOME";
}

/* ヘッダー＞大見出し */
header h1 {
	margin: 0;
	padding: 10px 0;
	background-color: var(--base-color-2);
	font-weight: 800;
	font-size: 20px;
}
header h1 img {
	margin: 0 auto;
	display: block;
	width: var(--max-width);
}

/* ボディとフッターの背景 */
.body-footer-wrapper {
	background-color: var(--base-color-2);
	background-image: repeating-linear-gradient(#fff, transparent 220px, transparent 100%);
}

/* ボディ */
.body {
	display: grid;
	grid-template-areas: "nav main";
	grid-template-columns: 210fr 580fr;
	align-items: start;
	gap: 10px;
	margin: 0 auto;
	border: 1px solid var(--base-color-6);
	border-bottom: 0;
	padding: 9px;
	width: var(--max-width);
	box-sizing: border-box;
	background-color: #fff;
}

/* ボディ＞メイン */
.body > main {
	grid-area: main;
	display: flex;
	flex-direction: column;
	gap: var(--line-height);
	margin: 10px;
}
.body > main > * {
	margin-block: 0 !important;
}
.body > main > img {
	align-self: center;
	max-width: 100%;
}

/* メイン＞ページ見出し */
main h2 {
	display: flex;
	align-items: baseline;
	gap: 4px;
	margin: 0;
	border-bottom: 1px solid currentColor;
	padding-block: 3px 6px;
	font-weight: 800;
	font-size: 24px;
}
main h2::before {
	content: "\273F";
	flex: 0 0 auto;
}

/* メイン＞小見出し */
main h3 {
	display: flex;
	align-items: baseline;
	margin: 0;
	border-bottom: 1px solid currentColor;
	padding-block: 5px 4px;
	font-weight: 800;
	font-size: 20px;
}
main h3::before {
	content: "\273d";
	flex: 0 0 auto;
}

/* メイン＞極小見出し */
main h4 {
	margin: 0;
	font-weight: 700;
	font-size: 18px;
}
main h4:not(.no-marker) {
	display: flex;
	align-items: baseline;
}
main h4:not(.no-marker)::before {
	content: "\25A0";
	flex: 0 0 auto;
	scale: 0.75;
}


/* メイン＞極極小見出し */
main h5 {
	display: flex;
	align-items: baseline;
	margin: 0;
	font-weight: 700;
	font-size: 16px;
}
main h5::before {
	content: "\25CF";
	flex: 0 0 auto;
	scale: 0.75;
}

/* メイン＞段落 */
main p {
	margin: 0;
}

/**/
.indent-1 {
	padding-left: 1em;
}
.indent-2 {
	padding-left: 2em;
}

/* データテーブル */
table.data {
	border-collapse: collapse;
}
table.data caption {
	font-weight: 600;
	text-align: left;
}
table.data caption::before {
	content: "\25A0";
	display: inline-block;
	scale: 0.75;
}
table.data :where(th, td) {
	border: 1px solid currentColor;
	padding: 9px;
	font-weight: inherit;
	text-align: left;
}
table.data th {
	width: 1px;
	background-color: var(--base-color-2);
	white-space: nowrap;
}

/* データテーブル：料金表 */
table.data.price-list {
	width: fit-content;
}
table.data.price-list td:not(:first-of-type) {
	border-left-width: 0 !important;
	padding-left: 0 !important;
}
table.data.price-list td:not(:last-of-type) {
	border-right-width: 0 !important;
	padding-right: 0 !important;
}
table.data.price-list :where(.free, .price, .tax, .dash) {
	white-space: nowrap;
}
table.data.price-list .free {
	text-align: center;
}
table.data.price-list .price {
	width: 6em;
	text-align: right;
}
table.data.price-list .tax {
	width: 4em;
}
table.data.price-list .dash {
	width: 1em;
}

/* メイン＞Google カレンダー */
main .google-calendar {
	display: block;
	border: 0;
	width: 100%;
	aspect-ratio: 4 / 3;
}

/* メイン＞トップの医院紹介レイアウト */
main .top-clinic-introduction {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 10px;
	align-items: end;
}
main .top-clinic-introduction > * {
	margin-block: 0 !important;
}

/* メイン＞トップの携帯版 QR コード */
main .mobile-qr-code img {
	display: block;
	width: 130px;
	height: 127px;
	overflow: hidden;
}

/* メイン＞診療時間 */
main .clinic-hours {
	width: 100%;
}

/* メイン＞トップの感染対策 */
main .prevention {
	display: flex;
	flex-direction: column;
	gap: var(--line-height);
}
main .prevention ul.attention {
	margin: 0;
	padding-left: 1em;
}
main .prevention .images {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	justify-content: space-between;
}
main .prevention .images > figure {
	display: grid;
	margin: 0;
}
main .prevention .images > figure > img {
	width: 175px;
	height: 140px;
}
main .prevention .images > figure > figcaption {
	font-size: 14px;
	text-align: center;
}

/* メイン＞予防歯科の用品リスト */
main ul.preventive-dental-supply {
	margin: 0;
	padding: 0;
	list-style: none;
}
main ul.preventive-dental-supply li {
	display: grid;
	grid-template:
		"image name    " auto
		"image overview" 1fr
		/auto  1fr;
	gap: 0 10px;
	margin-block: var(--line-height);
}
main ul.preventive-dental-supply li:first-child {
	margin-top: 0;
}
main ul.preventive-dental-supply li:last-child {
	margin-bottom: 0;
}
main ul.preventive-dental-supply li .image {
	grid-area: image;
	display: grid;
	align-items: center;
	border: 1px solid currentColor;
	padding: 9px;
}
main ul.preventive-dental-supply li .image:hover {
	border-width: 2px;
	padding: 8px;
}
main ul.preventive-dental-supply li .image .thumbnail {
	width: 130px;
	height: 130px;
	overflow: hidden;
	object-fit: scale-down;
}
main ul.preventive-dental-supply li .name {
	grid-area: name;
	font-weight: 800;
	font-size: 18px;
}
main ul.preventive-dental-supply li .overview {
	grid-area: overview;
}

/* 院長紹介のレイアウト */
.director-introduction {
	display: grid;
	grid-template:
		"portrait name     " auto
		"portrait biography" 1fr
		/auto     1fr;
	gap: 16px;
}
.director-introduction > .portrait {
	grid-area: portrait;
	width: 120px;
	overflow: hidden;
}
.director-introduction > .name {
	grid-area: name;
	font-weight: bold;
	font-size: 112.5%;
}
.director-introduction > .biography {
	grid-area: biography;
	border-collapse: collapse;
}
.director-introduction > .biography > caption {
	font-weight: bold;
	text-align: left;
}
.director-introduction > .biography > tbody > tr > td {
	padding: 0.5em 0 0;
	vertical-align: baseline;
}
.director-introduction > .biography > tbody > tr > td:not(:last-child) {
	white-space: nowrap;
}
.director-introduction > .biography > tbody > tr > td:not(:first-child, :last-child) {
	width: 1px;
	text-align: right;
}
.director-introduction > .biography > tbody > tr > td:last-child {
	padding-left: 1em;
}

/* 院内紹介の写真一覧 */
.clinic-photos {
	display: flex;
	flex-wrap: wrap;
	align-items: start;
	gap: 1em;
	justify-content: space-between;
}
.clinic-photos > figure {
	display: grid;
	margin: 0;
}
.clinic-photos > figure > img {
	width: 270px;
	height: 180px;
}
.clinic-photos > figure > figcaption {
	text-align: center;
}

/* 届出施設基準 */
.facility-standards {
	display: flex;
	flex-direction: column;
	gap: 30px;
	border: 1px solid #999;
	padding: calc(2em - 1px);
}
.facility-standards .facility-standards-title {
	font-weight: bold;
	font-size: 20px;
	text-align: center;
}
.facility-standards .facility-standards-introduction {
	margin: 0;
	padding-left: 1em;
	list-style: circle;
}
.facility-standards .facility-standards-body {
	display: flex;
	flex-direction: column;
	gap: 30px;
	margin: 0;
	padding-left: 1em;
	list-style: disc;
}
.facility-standards .facility-standards-head {
	font-weight: bold;
}
.facility-standards .facility-standards-signature {
	text-align: right;
}

/* 周辺地図 */
.area-map {
	margin: 0;
}
.area-map > figcaption {
	font-weight: 600;
}
.area-map > figcaption::before {
	content: "\25A0";
	display: inline-block;
	scale: 0.75;
}
.area-map > iframe {
	display: block;
	border: 0;
	width: 100%;
	aspect-ratio: 4 / 3;
	box-sizing: border-box;
}

/* 交通アクセスの住所等 */
.address-and-other {
	display: grid;
	grid-template-columns: 1fr auto;
	align-items: start;
	gap: 1em;
}
.address-and-other > img {
	width: 184px;
	overflow: hidden;
}

/* 歯周病・口腔外科の写真と説明 */
figure.periodontal-disease,
figure.wisdom-teeth {
	display: grid;
	gap: 10px;
	margin: 0 auto;
	width: 350px;
	font-size: 14px;
	line-height: 20px;
}
figure:where(.periodontal-disease, .wisdom-teeth) img {
	width: 100%;
}
figure:where(.periodontal-disease, .wisdom-teeth) figcaption {
	color: #de3800;
}

/* 予防歯科用品一覧 */
.preventive-dental-supplies {
	display: flex;
	flex-direction: column;
	gap: 1.5em;
	margin: 0;
	list-style: none;
}
.preventive-dental-supplies > .group > .header {
	font-weight: bold;
}
.preventive-dental-supplies > .group > .header::before {
	content: "";
	display: inline-block;
	margin: 7px 4px 0 0;
	border: 1px solid #73654b;
	width: 8px;
	aspect-ratio: 1;
	box-sizing: border-box;
	overflow: hidden;
	background-color: #826f31;
	background-image: linear-gradient(135deg, #826f31, #b2a578);
	vertical-align: top;
}
.preventive-dental-supplies > .group > .header .note {
	margin-left: 1em;
	color: #de3800;
	font-weight: normal;
	font-size: 87.5%;
}
.preventive-dental-supplies > .group > .body {
	display: flex;
	flex-direction: column;
	gap: 1px;
	margin: 0;
	padding: 1px;
	background-color: #999;
	list-style: none;
}
.preventive-dental-supplies .supply {
	display: grid;
	grid-template:
		"image name    " auto
		"image overview" 1fr
		/auto  1fr;
	gap: 0 1px;
}
.preventive-dental-supplies .supply .image {
	grid-area: image;
	padding: 10px;
	background-color: #f5f3e9;
	color: #73654b;
}
.preventive-dental-supplies .supply .image:hover {
	background-color: #fff;
}
.preventive-dental-supplies .supply .image .thumbnail {
	display: block;
	width: 69px;
	height: 120px;
	object-fit: scale-down;
}
.preventive-dental-supplies .supply .name {
	grid-area: name;
	padding: 10px 10px 0;
	background-color: #fff;
	font-weight: bold;
}
.preventive-dental-supplies .supply .overview {
	grid-area: overview;
	padding: 0 10px 10px;
	background-color: #fff;
}

/* 小児歯科レイアウト */
.pediatric-dentistry-layout {
	display: grid;
	grid-template-columns: 1fr 192px;
	gap: 16px;
	overflow: hidden;
}
.pediatric-dentistry-layout > img {
	justify-self: center;
	max-width: 100%;
}

/* 先頭に※ */
.asterisk {
	display: grid;
	grid-template-columns: auto 1fr;
}
.asterisk::before {
	content: "※";
	color: var(--attention-color);
}

/* インプラント費用 */
table.implant-cost th {
	width: 15em;
}

/* インプラントの写真一覧 */
.implant-photos {
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
	align-items: start;
	margin-inline: auto;
}
.implant-photos > img {
	width: 160px;
	object-fit: contain;
}

/* 審美歯科：セラミックインレーの図 */
.ceramic-inlay-figure {
	align-self: center;
	display: grid;
	grid-auto-flow: column;
	justify-content: space-between;
	width: 480px;
	font-size: 14px;
}
.ceramic-inlay-figure::after {
	content: "\25B6";
	order: 2;
	display: grid;
	align-items: center;
	height: 162px;
	font-size: 25px;
	line-height: 1;
	scale: 0.64 1;
}
.ceramic-inlay-figure figure {
	display: grid;
	margin: 0;
	text-align: center;
}
.ceramic-inlay-figure figure:first-child {
	order: 1;
}
.ceramic-inlay-figure figure:last-child {
	order: 3;
}

/* 矯正方法例 */
figure.correction-method {
	margin: 0;
}
figure.correction-method figcaption {
	font-weight: 600;
}
figure.correction-method figcaption::before {
	content: "\25A0";
	display: inline-block;
	scale: 0.75;
}
figure.correction-method .images {
	--cols: 2;
	--gap: 20px;
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap);
}
figure.correction-method img {
	width: calc((100% - var(--gap) * (var(--cols) - 1)) / var(--cols));
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

/* 矯正治療症例 */
figure.orthodontic-treatment-case {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	gap: 0 10px;
	margin: 0 auto;
	width: fit-content;
	text-align: center;
}
figure.orthodontic-treatment-case > figcaption {
	grid-row: 1;
	grid-column: 1 / 4;
	font-weight: 600;
	text-align: left;
}
figure.orthodontic-treatment-case > figcaption::before {
	content: "\25A0";
	display: inline-block;
	scale: 0.75;
}
figure.orthodontic-treatment-case::before {
	content: "\25B6";
	grid-row: 2;
	grid-column: 2;
	align-self: center;
	line-height: 1;
	scale: 1 1.5;
}
figure.orthodontic-treatment-case > figure {
	grid-row: 2;
	grid-column: 1;
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	border: 1px solid #ccc;
	border-radius: 2px;
	padding: 10px;
}
figure.orthodontic-treatment-case > figure:last-child {
	grid-column: 3;
}
figure.orthodontic-treatment-case > figure figcaption {
	font-size: 14px;
	line-height: 20px;
}
figure.orthodontic-treatment-case img {
	display: block;
	width: 240px;
	height: 160px;
	object-fit: cover;
}

/* 矯正費用 */
table.orthodontic-treatment-cost th {
	width: 8em;
}

/* マウスガード費用 */
table.mouthguard-cost .price {
	width: auto !important;
}

/* ご予約電話番号 */
.reservation-phone-number {
	color: var(--attention-color);
	font-size: 32px;
	line-height: 50px;
	text-align: center;
}

/* 予約システムへのアクセス */
.reservation-service-access {
	display: flex;
	flex-direction: column;
	gap: 10px;
	width: fit-content;
	max-width: 100%;
}
.reservation-service-access > ul {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding: 0;
	width: fit-content;
	max-width: 100%;
}
.reservation-service-access > ul > li {
	display: grid;
	grid-template:
		"name qr  " auto
		"url  qr  " 1fr
		/1fr  auto;
	align-items: start;
	border: 1px solid #ccc;
	border-radius: 2px;
}
.reservation-service-access > ul > li > .name {
	grid-area: name;
	padding: 10px;
	padding-bottom: 0;
	font-weight: 700;
}
.reservation-service-access > ul > li > .url {
	grid-area: url;
	justify-self: start;
	padding: 10px;
	padding-top: 0;
	overflow-wrap: anywhere;
	line-break: strict;
	font-size: 14px;
}
.reservation-service-access > ul > li:has(> img) > .text {
	padding-right: 0;
}
.reservation-service-access > ul > li > .qr {
	grid-area: qr;
}

/* 携帯電話向け予約システムのQRコード */
.reservation-service-for-mobile-qr-code {
	vertical-align: text-bottom;
}

/* ご予約の流れ */
.reservation-flow {
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.reservation-flow > ol {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding-left: 2em;
}

/* お問い合わせフォーム */
form.contact-form {
	display: flex;
	flex-direction: column;
	gap: var(--line-height);
}
form.contact-form table {
	width: 100%;
	box-sizing: border-box;
}
form.contact-form table th:has(+ td [required])::after {
	content: "\203B";
	color: var(--attention-color);
}
form.contact-form table :where(input:where([type="text"], [type="email"]), textarea) {
	display: block;
	width: 100%;
}
form.contact-form table .multi {
	display: flex;
	flex-wrap: wrap;
	align-items: start;
	gap: 0 1em;
}
form.contact-form table .multi label {
	display: flex;
	align-items: baseline;
	line-height: 24px;
	cursor: pointer;
}
form.contact-form table .multi label input {
	cursor: pointer;
}
form.contact-form table .multi label input::before {
	content: "\25CB";
}
form.contact-form table .multi label input:checked:before {
	content: "\25C9";
}
form.contact-form .buttons {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	gap: 1em;
}
form.contact-form .buttons > .back {
	grid-column: 1;
	justify-self: start;
}
form.contact-form .buttons > .reset {
	grid-column: 2;
}
form.contact-form .buttons > .next {
	grid-column: 3;
	justify-self: end;
}

/* プライバシーポリシーリスト */
ul.privacy-policy-1 {
	padding-left: 1em;
}
ul.privacy-policy-1 > li::marker {
	content: "※";
}
ol.privacy-policy-2 {
	padding-left: 1.1em;
}
ol.privacy-policy-2 ul {
	padding-left: 1em;
}

/* サイドナビ */
.body > nav.side {
	grid-area: nav;
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 14px;
	line-height: 20px;
}
.body > nav.side .nav-group {
	display: flex;
	flex-direction: column;
	gap: 1px;
	padding: 1px;
	background-color: var(--base-color-6);
}
.body > nav.side .nav-group-header {
	padding: 5px 9px;
	background-color: var(--base-color-2);
	color: var(--sub-color-1);
	font-weight: 800;
}
.body > nav.side .nav-group-body {
	display: flex;
	flex-direction: column;
	gap: 1px;
	background-image: repeating-linear-gradient(90deg, transparent, transparent 1px, var(--main-color-6) 1px, var(--main-color-6) 3px);
}
.body > nav.side .nav-group:has(+ .nav-group) .nav-group-body {
	border-bottom: 0;
}
.body > nav.side a.nav.special {
	border: 1px solid transparent;
	padding-block: 9px;
	background-color: var(--main-color-2);
	color: var(--base-color-1) !important;
	font-size: 14px;
	line-height: 20px;
}
.body > nav.side a.nav.special:where(:hover, .active) {
	background-color: var(--main-color-3);
}
.body > nav.side .creditcard {
	display: block;
	margin-inline: auto;
	padding-block: 10px;
	max-width: 100%;
}

/* フッター */
.body-footer-wrapper > footer {
	display: grid;
	margin: 0 auto;
	width: var(--max-width);
	box-sizing: border-box;
	color: #73654b;
	font-size: 12px;
	line-height: calc(4 / 3);
}

/* フッター＞ナビ */
.body-footer-wrapper > footer nav {
	display: flex;
	justify-content: space-between;
	gap: 4px;
	border: 1px solid var(--base-color-6);
	padding: 4px;
	background-color: var(--main-color-6);
}
.body-footer-wrapper > footer nav :where(.left, .right) {
	display: flex;
	flex-wrap: wrap;
	gap: 1px;
}
.body-footer-wrapper > footer nav a.nav {
	gap: 4px;
	white-space: nowrap;
}
.body-footer-wrapper > footer nav a.nav.top::before {
	content: "TOP";
}
.body-footer-wrapper > footer nav a.nav.top::after {
	content: "\25B2";
}

/* フッター＞コピーライト */
.body-footer-wrapper > footer .copyright {
	border: 1px solid transparent;
	padding: 6px 9px;
	text-align: center;
}
