@charset "UTF-8";

/* Grobal Selector */
/* ============================================ */
*,
*::before,
*::after {
	margin: 0; /* マージンは0に */
	padding: 0; /* パディングも常に0に */
	box-sizing: border-box; /* もちろん、より直感的なbox-sizingに設定 */
  border-style: solid;
  border-width: 0;
}


/* Bug Fix */
/* ============================================ */

main {
  display: block; /* Render the `main` element consistently in IE. */
}

details {
  display: block; /* Add the correct display in Edge, IE 10+, and Firefox. */
}

summary {
	display: list-item; /* Add the correct display in all browsers. */
}

textarea {
  overflow: auto; /* Remove the default vertical scrollbar in IE 10+. */
}

input, textarea {
	-webkit-user-select: auto; /* Safari - solving issue when using user-select:none on the <body> text input doesn't working */
}

[type="number"] {
  -moz-appearance: textfield; /* Fix appearance for Firefox */
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; /* Correct the cursor style of increment and decrement buttons in Chrome. */
}

[type="search"] {
  outline-offset: -2px; /* Correct the outline style in Safari. */
}

[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; /* Remove the inner padding in Chrome and Safari on macOS. */
}

::-webkit-file-upload-button {
  -webkit-appearance: button; /* Correct the inability to style clickable types in iOS and Safari. */
  font: inherit; /* Fix font inheritance. */
}

:-moz-focusring {
  outline: auto; /* Improve outlines for Firefox and unify style with input elements & buttons. */
}

select:disabled {
  opacity: inherit; /* Improve outlines for Firefox and unify style with input elements & buttons. */
}


/* Styling & Fix */
/* ============================================ */

:where([hidden]:not([hidden='until-found'])) {
	display: none !important;  /* hiddenは非表示を意味します */
}

:where(html) {
	-webkit-text-size-adjust: none; /* iOSのランドスケープでテキストが調整されないようにする */
	-webkit-tap-highlight-color: transparent; /* Remove gray overlay on links for iOS.*/
	/*color-scheme: dark light;*/ /* ユーザーがダークテーマを好む場合、自動的にダークテーマになる */
}

@supports not (min-block-size: 100dvb) {
	:where(html) {
		block-size: 100%;
	}
}

@media (prefers-reduced-motion: no-preference) {
	:where(html:focus-within) {
		scroll-behavior: smooth; /* 何かにフォーカスがある場合のみスムーズスクロール */
	}
}

:where(body) {
	block-size: 100%; /* サファリ以外のブラウザのフォールバック */
	block-size: 100dvb; /* 1dvbは動的ビューポートの長さの1%、100dvbで高さいっぱいに */
	line-height: 1.5; /* アクセシブルな行の高さ */
	font-family: system-ui, sans-serif; /* timeの代わりにシステムフォントを使用 */
	-webkit-font-smoothing: antialiased; /* テキストのレンダリングを改善 */
}

:where(input, button, textarea, select, optgroup) {
	font: inherit; /* フォーム コントロールは親フォントを継承 */
	color: inherit; /* カラーも継承 */
  -webkit-appearance: none; /* Make form elements stylable across systems iOS especially. */
  appearance: none;
  vertical-align: middle;
  background: transparent;
  padding: 0;
  margin: 0;
  border-radius: 0;
  text-align: inherit;
  text-transform: inherit; /* Inherit text-transform from parent. */
}

:where(textarea) {
	resize: vertical; /* テキストエリアの水平リサイズを無効に */
	resize: block;
	white-space: revert; /* revert the 'white-space' property for textarea elements on Safari */
}

:where(progress) {
	vertical-align: baseline; /* vertical-align: baseline; */
}

:where(meter) {
    -webkit-appearance: revert; /* minimum style to allow to style meter element */
    appearance: revert; /* minimum style to allow to style meter element */
}

:where(::placeholder) {
    color: unset; /* reset default text opacity of input placeholder */
}

:where(button, label, select, summary, [type="button"], [type="reset"], [type="submit"], [role='button'], [role='option']) {
	cursor: pointer; /* インタラクティブなものにカーソルを合わせる */
}

:where(:disabled) {
	cursor: not-allowed; /* フォームコントロール無効時のカーソルを許可しない */
}

:where(label:has(> input:disabled), label:has(+ input:disabled)) {
	cursor: not-allowed; /* ラベルにもカーソルを許可しない */
}

:where(button) {
	border-style: solid; /* ボタンのボーダーのスタイルを設定しやすくする */
}

:where(a) {
	text-underline-offset: 0.2ex; /* 下線の上にスペースを追加する */
}

:where(ul, ol, menu) {
	list-style: none; /* ビュレットを削除、必要に応じて手動で追加する */
}

:where(img, svg, video, canvas, audio, iframe, embed, object) {
	display: block; /* 置換された要素をより予測可能にする */
	vertical-align: bottom;
}

:where(img, picture, svg) {
	max-inline-size: 100%; /* images should never overflow past the available space */
	block-size: auto; /* アスペクト比を保持 */
}

:where(fieldset) { /* Reset to invisible */
  margin: 0;
  padding: 0;
  min-width: 0;
}

:where(table) {
	border-color: inherit; /* Correct table border color inheritance in all Chrome and Safari. */
  border-collapse: collapse; /* removes spacing between cells in tables */
}

:where(p, h1, h2, h3, h4, h5, h6) {
	overflow-wrap: break-word; /* 長い単語は改行 */
}

:where(h1, h2, h3) {
	line-height: calc(1em + 0.5rem); /* 見出しの行の高さを減らす */
}

:where(address) {
  font-style: inherit;
}

:where(pre, code, kbd, samp) {
  font-family: monospace, monospace; /* Correct the inheritance and scaling of font size in all browsers. */
  font-size: inherit; /* Correct the odd `em` font sizing in all browsers. */
}

:where(abbr[title]) {
  text-decoration: underline dotted; /* Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */
}

:where(b, strong) {
  font-weight: bolder; /* Add the correct font weight in Chrome, Edge, and Safari. */
}

:where(small) {
  font-size: 80%; /* Add the correct font size in all browsers. */
}

:where(sub, sup) { /* Prevent `sub` and `sup` elements from affecting the line height in all browsers. */
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

:where(sub) {
  bottom: -0.25em;
}

:where(sup) {
  top: -0.5em;
}

:where(hr) { /* より一貫性のある、スタイリッシュなhr */
	border: none;
	border-block-start: 1px solid;
	color: inherit;
	block-size: 0;
	overflow: visible; /* Show the overflow in Edge and IE. */
  box-sizing: content-box; /* Add the correct box sizing in Firefox. */
  height: 0; /* Add the correct box sizing in Firefox. */
	clear: both;
}

:where(:focus-visible) { /* より一貫性のある、カスタマイズ可能なフォーカスのアウトライン */
	outline: 2px solid var(--focus-color, Highlight);
	outline-offset: 2px;
}

/* revert for bug in Chromium browsers
   - fix for the content editable attribute will work properly.
   - webkit-user-select: auto; added for Safari in case of using user-select:none on wrapper element*/
:where([contenteditable]:not([contenteditable="false"])) {
    -moz-user-modify: read-write;
    -webkit-user-modify: read-write;
    overflow-wrap: break-word;
    -webkit-line-break: after-white-space;
    -webkit-user-select: auto;
}
:where([contenteditable]:focus) {
    outline: auto; /* Remove outline for editable content. */
}

/* apply back the draggable feature - exist only in Chromium and Safari */
:where([draggable="true"]) {
    -webkit-user-drag: element;
}

:where([hidden]) {
    display: none; /* fix the feature of 'hidden' attribute. display:revert; revert to element instead of attribute */
}

 /* .visually-hiddenは後のカスケードレイヤーを上書きするために!importantを使用 */
:where(.visually-hidden:not(:focus, :active, :focus-within, .not-visually-hidden)) {
	clip-path: inset(50%) !important;
	height: 1px !important;
	width: 1px !important;
	overflow: hidden !important;
	position: absolute !important;
	white-space: nowrap !important;
	border: 0 !important;
}


/* Accessibility */
/* ============================================ */
@media (prefers-reduced-motion: reduce) {
	* {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

@media screen { /* Hide content from screens but not screenreaders */
	[hidden~="screen"] {
		display: inherit;
	}
	[hidden~="screen"]:not(:active):not(:focus):not(:target) {
		position: absolute !important;
		clip: rect(0 0 0 0) !important;
	}
}

[disabled] {
	cursor: not-allowed;
}

[aria-busy="true"] { /* Specify the progress cursor of updating elements */
	cursor: progress;
}

[aria-controls] { /* Specify the pointer cursor of trigger elements */
	cursor: pointer;
}

[aria-disabled] { /* Specify the unstyled cursor of disabled, not-editable, or otherwise inoperable elements */
	cursor: default;
}

[role='application'], [role='tabpanel'], [role='dialog'] {
	display: block;
}

[aria-hidden='false']{
	display: block;
}

[aria-hidden="true"]{
	display: none;
}

[aria-modal='true'] {
	overflow-y: auto;
	box-sizing: border-box;
	max-height: 100vh;
}

:focus:not(:focus-visible) {
    outline: none;
}





/* Extra Setting */
/* ============================================ */

[aria-hidden="true"]{
	display: none !important;
}

/*[  Visually Hidden  ]----------------------------------------------------------------*/
[data-screenreader],.visually-hidden{/**
 * Makes elements visually invisible but still accessible to screen-readers.
 *
 * This Css has been carefully tested to ensure screen-readers can read and
 * activate (in case of links and buttons) the elements with this class. Please
 * use caution when changing anything, even seemingly safe ones. For example
 * changing width from 1 to 0 would prevent TalkBack from activating (clicking)
 * buttons despite TalkBack reading them just fine. This is because
 * element needs to have a defined size and be on viewport otherwise TalkBack
 * does not allow activation of buttons.
 */
  position: fixed !important;
  /* keep it on viewport */
  top: 0px !important;
  left: 0px !important;
  /* give it non-zero size, VoiceOver on Safari requires at least 2 pixels
     before allowing buttons to be activated. */
  width: 4px !important;
  height: 4px !important;
  /* visually hide it with overflow and opacity */
  opacity: 0 !important;
  overflow: hidden !important;
  /* remove any margin or padding */
  border: none !important;
  margin: 0 !important;
  padding: 0 !important;
  /* ensure no other style sets display to none */
  display: block !important;
  visibility: visible !important;
}

/*[  Fix Flash Of Unstyled Text (FOUT)  ]----------------------------------------------------------------*/
/*
	html {
		visibility: hidden;
	}
		html.wf-active, html.loading-delay {
		visibility: visible;
	}
*/

/*[  Page Layout Setting  ]----------------------------------------------------------------*/
	html{
		font-size: 16px; /* = 1rem */
	}
	:where(body) {
		block-size: 100%; /* サファリ以外のブラウザのフォールバック */
	}
	body{
		block-size: 100% !important;
		min-height: 100dvh;
		background: white;
		color: #111;
		font-style: normal;
		font-size: 1rem;
		font-weight: 400;
		line-height: 1;
		letter-spacing: 0;
		position: relative;
		overflow-x: hidden;
	}

/*[  Imposing Text / Text Decoration  ]----------------------------------------------------------------*/
	b,
	i {
		font-weight: inherit;
		font-style: normal;
	}
	em {
		font-weight: 500;
	}
	strong {
		font-weight: 700;
	}
	mark{
		background: #F9D348;
	}


/*[  Dialog  ]----------------------------------------------------------------*/
	html:has(dialog[open]) {
		overflow: hidden;
	}
	dialog:not([open]) {
		display: none;
	}
	dialog:modal{
		max-height: none;
		max-width: none;
	}
	dialog#modalDialog[open]{
		position: relative;
		height: 100vh;
		width: 100%;
		display: grid;
		place-items: center;
		background: transparent;
		&::backdrop{
			backdrop-filter: blur(3px);
		}
		/*
		& > #closeDialog{
			position: absolute;
			top: 0.5em;
			right: 1em;
		}
		*/
		& > #modalDialogContents{
			background: white;
			box-shadow: 0 0 16px rgba(0,0,0,0.1);
			border-radius: 0.5rem;
			padding: 2em 3em;
			margin: 1em;
			@media (max-width: 480px) {
				padding: 2em;
			}
		}
	}

/*[  Sticky Guide  ]----------------------------------------------------------------*/
hr[data-sticky-guide]{
	height: 1px;
	border: none;
}
