:root {
	--inner-value: 1090;
	--inner: 1090px;
	--padding-pc: 40px;
	--padding-sp: 20px;
}

:root {
	--rem: 1rem / 16;
	--em: 1em / 16;
	--vw: 375 * 100vw;
	--inner-percent: var(--inner-value) * 100%;
}

:root {
	--base-font: "MFW-PShinGoPr6N-Regular", sans-serif;
	--en-font: "MFW-PShinGoPr6N-Regular", sans-serif;
	--gazzetta-font: "gazzetta-variable", sans-serif;
	--fw-light: 300;
	--fw-regular: 400;
	--fw-medium: 500;
	--fw-semibold: 600;
	--fw-bold: 700;
	--fw-extrabold: 800;
	--fw-black: 900;
}

:root {
	--black: #000;
	--white: #fff;
	--light-blue: #47deef;
	--orange: #e8693f;
	--pink: #ff7bca;
	--green: #85ed36;
	--red: #b93e3e;
	--gray: #aeaeae;
	--bg-light-gray: #f1f1f1;
	--text-black: #191919;
	--text-black2: #1f1f1f;
}

:root {
	--z-index-loader: 200;
	--z-index-header: 100;
}

:root {
	--header-height: calc(54 / 16 * 1rem);
	--scrollbar-width: 0;
}

@property --scrollbar {
	syntax: "<length>";
	initial-value: 0;
	inherits: true;
}

:root:has(:modal[open],
.is-scroll-lock,
.loader) {
	overflow: hidden;
}

html {
	scroll-padding-top: var(--header-height);
}

body {
	container-type: inline-size;
	background-color: var(--white);
	font-family: var(--base-font);
	color: var(--text-black);
	font-weight: var(--fw-medium);
}

html {
	font-size: 16px;
}

/*! kiso.css v1.2.2 | MIT License | https://github.com/tak-dcxi/kiso.css */

/* ======================================================
//  MARK: Universal
// ====================================================== */

*,
::before,
::after { /*
  * Includes `padding` and `border` in the element's specified dimensions.
  * It is highly recommended to set `box-sizing: border-box;` by default, as it makes styling much easier, especially when specifying `width: 100%;`.
  */
	box-sizing: border-box;
}

/* ======================================================
//  MARK: Document and Body Elements
// ====================================================== */

:where(:root) { /* In Safari, if `font-family` is not specified, a serif font is applied by default, so `sans-serif` is set as the default here. */
	font-family: sans-serif; /*
  * For accessibility, it is recommended to set the `line-height` to at least 1.5 times the text size within paragraphs.
  * @see https://waic.jp/translations/WCAG21/#visual-presentation
  */
	line-height: 1.5; /* Remove space when punctuation marks are adjacent, and also remove leading spaces in a line. */
	text-spacing-trim: trim-start; /* Improves readability by inserting a small space between Japanese and alphanumeric characters. */
	text-autospace: normal; /* Prevents misreading by applying strict line-breaking rules. */
	line-break: strict; /* Wraps English words mid-word. Specifying `anywhere` also prevents content from overflowing in layouts like `flex` or `grid`. */
	overflow-wrap: anywhere; /*
  * Mobile browsers have an algorithm that automatically adjusts font sizes to prevent text from becoming too small.
  * This controls the auto-adjustment feature to prevent unwanted resizing.
  */
	-webkit-text-size-adjust: 100%;
	-moz-text-size-adjust: 100%;
	text-size-adjust: 100%; /* Prevents layout shift caused by the appearance or disappearance of the scrollbar. */
	scrollbar-gutter: stable; /* Suppresses the tap highlight on iOS. */
	-webkit-tap-highlight-color: transparent;
}

:where(body) { /*
  * When creating a sticky footer, a minimum height is often required.
  * Setting the `min-block-size` to the dynamic viewport height ensures enough space for the footer.
  */
	min-block-size: 100dvb; /* The `margin` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset here. */
	margin: unset;
}

/* ======================================================
// MARK: Sections
// ------------------------------------------------------ */

:where(h1,
h2,
h3,
h4,
h5,
h6) { /* Prevents the last line of text from ending with a single word, which can look awkward (known as an orphan). */
	text-wrap: pretty;
}

:where(h1) { /*
  * Adjusts user agent (UA) styles for `h1` elements within sectioning content.
  * This addresses DevTools warnings that appear when `h1` elements nested within sectioning content lack `font-size` and `margin` properties.
  * @see https://html.spec.whatwg.org/#sections-and-headings
  */
	margin-block: 0;
	font-size: 2em;
}

:where(h2,
h3,
h4,
h5,
h6) { /* The `margin-block` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset. */
	margin-block: unset;
}

:where(search) { /*
  * The `<search>` element is supported from Safari 17.
  * This prevents it from being displayed as an inline element in unsupported environments.
  */
	display: block flow;
}

/* ======================================================
//  MARK: Grouping content
// ====================================================== */

:where(p,
blockquote,
figure,
pre,
address,
ul,
ol,
dl,
menu) { /* The `margin-block` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset. */
	margin-block: unset;
}

:where(blockquote,
figure) { /* The `margin-inline` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset. */
	margin-inline: unset;
}

:where(p:lang(en)) { /*
  * In English, a single word on the last line is called a "widow" or "orphan" and is considered something to avoid as it makes the text harder to read.
  * Therefore, when lang="en", this prevents the last line from ending with a single word.
  */
	text-wrap: pretty;
}

:where(address:lang(ja)) { /* Italic style is not common in Japanese, so the `font-style` is reset. */
	font-style: unset;
}

:where(ul,
ol,
menu) { /* The `padding-inline-start` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset. */
	padding-inline-start: unset; /*
  * In Safari, using `list-style: none` prevents screen readers from announcing lists.
  * `list-style-type: ""` is used to hide markers without affecting accessibility.
  * @see https://matuzo.at/blog/2023/removing-list-styles-without-affecting-semantics
  */
	list-style-type: "";
}

:where(dt) { /* It is common to display `<dt>` elements in bold, so `font-weight: bolder;` is set by default. */
	font-weight: bolder;
}

:where(dd) { /* The `margin-inline-start` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset. */
	margin-inline-start: unset;
}

:where(pre) { /*
  * Since `text-spacing-trim` can affect spacing in `<pre>` elements even with its initial value, the final rendering may depend on the user's font settings.
  * To ensure consistent alignment, `space-all` is explicitly specified and inheritance is prevented.
  */
	text-spacing-trim: space-all; /* Set to `no-autospace` as it can cause misalignment with monospaced fonts. */
	text-autospace: no-autospace;
}

/* ======================================================
//  MARK: Text-level semantics
// ====================================================== */

:where(em:lang(ja)) { /* In Japanese, emphasis is commonly represented by bold text, so `font-weight: bolder;` is set by default. */
	font-weight: bolder;
}

:where(:is(i,
cite,
em,
dfn,
var):lang(ja)) { /* Italic style is not common in Japanese, so the `font-style` is reset. */
	font-style: unset;
}

:where(code,
kbd,
samp) { /*
  * Set a monospace font family referencing Tailwind.
  * @see https://tailwindcss.com/docs/font-family
  */
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* Font feature settings can have adverse effects on monospaced fonts, so their values are explicitly set to `initial` to prevent inheritance. */
	font-feature-settings: initial;
	font-variation-settings: initial; /* Resets the `font-size` specified in the UA stylesheet to allow inheritance. */
	font-size: unset; /*
  * Disables font ligatures for programming fonts (like Fira Code)
  * to prevent character combinations like `=>` from being rendered as a single symbol (e.g., `⇒`).
  */
	font-variant-ligatures: none;
}

:where(abbr[title]) { /*
  * The `<abbr>` element with the `title` attribute isn't helpful regarding accessibility because support is inconsistent, and it's only accessible to some users.
  * This rule shows a dotted underline on abbreviations in all browsers (there's a bug in Safari) and changes the cursor.
  * @see https://adrianroselli.com/2024/01/using-abbr-element-with-title-attribute.html
  */
	text-decoration-line: underline;
	text-decoration-style: dotted;
	cursor: help;
}

:where(time) { /* Set to `no-autospace` because date notations in typography do not include spaces. */
	text-autospace: no-autospace;
}

/* ======================================================
//  MARK: Links
// ====================================================== */

:where(a:-moz-any-link) { /* The default `color` from the UA stylesheet is rarely used as is, so it's reset to allow inheritance. */
	color: unset; /*
  * While link underlines can be useful, they are often obstructive.
  * They are disabled by default.
  * If needed, restore them using `text-decoration-line: revert;`.
  */
	text-decoration-line: unset; /* Set the underline thickness to the font's default thickness. */
	text-decoration-thickness: from-font;
}

:where(a:any-link) { /* The default `color` from the UA stylesheet is rarely used as is, so it's reset to allow inheritance. */
	color: unset; /*
  * While link underlines can be useful, they are often obstructive.
  * They are disabled by default.
  * If needed, restore them using `text-decoration-line: revert;`.
  */
	text-decoration-line: unset; /* Set the underline thickness to the font's default thickness. */
	text-decoration-thickness: from-font;
}

/* ======================================================
//  MARK: Embedded content
// ====================================================== */

:where(img,
svg,
picture,
video,
canvas,
model,
audio,
iframe,
embed,
object) { /* Automatically adjust block size based on content. */
	block-size: auto; /* Prevents overflow by setting the maximum width to `100%`. */
	max-inline-size: 100%;
	inline-size: 100%; /* Prevents extra space from appearing at the bottom of the element. */
	vertical-align: bottom;
}

:where(img) {
	display: block;
}

:where(iframe) { /* The `border` specified in the UA stylesheet is often unnecessary, so it is reset. */
	border: unset;
}

/* ======================================================
//  MARK: Tabular data
// ====================================================== */

:where(table) { /* Collapse borders for a more refined table design. */
	border-collapse: collapse;
}

:where(caption,
th) { /* The `text-align` specified in the UA stylesheet is often unnecessary, so it is reset. */
	text-align: unset;
}

:where(caption) { /* Prevents the last line of text from ending with a single word, which can look awkward (known as an orphan). */
	text-wrap: pretty;
}

/* ======================================================
//  MARK: Forms
// ====================================================== */

:where(button,
input,
select,
textarea),
::file-selector-button { /*
  * These elements are often styled with a border, so a `1px` border is applied by default for consistency.
  * This ensures readability even for unstyled elements.
  * When resetting, it's recommended to use `border-color: transparent` instead of `border: none` to account for forced color modes.
  */
	border-width: 1px;
	border-style: solid; /* These styles specified in the UA stylesheet are often unnecessary, so they are reset to allow for inheritance. */
	border-color: unset;
	border-radius: unset;
	color: unset;
	font: unset;
	letter-spacing: unset;
	text-align: unset;
}

:where(input:is([type=radio i],
[type=checkbox i])) { /* The `margin` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset here. */
	margin: unset;
}

:where(input[type=file i]) { /* The `border` is often unnecessary, so it is reset here. */
	border: unset;
}

:where(input[type=search i]) { /* Remove the rounded corners of search inputs on macOS and normalize the background color. */
	-webkit-appearance: textfield;
}

:where(input:is([type=tel i],
[type=url i],
[type=email i],
[type=number i]):not(:-moz-placeholder)) { /*
  * Certain input types need to maintain left alignment even in right-to-left (RTL) languages.
  * However, this only applies when the value is not empty, as the placeholder should be right-aligned.
  * @see https://rtlstyling.com/posts/rtl-styling#form-inputs
  */
	direction: ltr;
}

:where(input:is([type=tel i],
[type=url i],
[type=email i],
[type=number i]):not(:placeholder-shown)) { /*
  * Certain input types need to maintain left alignment even in right-to-left (RTL) languages.
  * However, this only applies when the value is not empty, as the placeholder should be right-aligned.
  * @see https://rtlstyling.com/posts/rtl-styling#form-inputs
  */
	direction: ltr;
}

:where(textarea) { /* The `margin-block` specified in Firefox's UA stylesheet is often unnecessary, so it is reset. */
	margin-block: unset; /* Allows vertical resizing for `<textarea>` elements. */
	resize: block;
}

:where(input:not([type=button i],
[type=submit i],
[type=reset i]),
textarea,
[contenteditable]) { /* Set to `no-autospace` because `text-autospace` can insert spaces during input, potentially causing erratic behavior. */
	text-autospace: no-autospace;
}

:where(button,
input:is([type=button i],
[type=submit i],
[type=reset i])),
::file-selector-button { /* The `background-color` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset here. */
	background-color: unset;
}

:where(button,
input:is([type=button i],
[type=submit i],
[type=reset i]),
[role=tab i],
[role=button i],
[role=option i]),
::file-selector-button { /*
  * On iOS, double-tapping a button can cause zooming, which harms usability.
  * `touch-action: manipulation` is specified to disable zooming on double-tap.
  * Third-party plugins such as Swiper sometimes use div elements with these roles as buttons, since double-tapping a div can still trigger zooming, it's advisable to specify this property.
  */
	touch-action: manipulation;
}

:where(button:enabled,
label[for],
select:enabled,
input:is([type=button i],
[type=submit i],
[type=reset i],
[type=radio i],
[type=checkbox i]):enabled,
[role=tab i],
[role=button i],
[role=option i]),
:where(:enabled)::file-selector-button { /* Indicate clickable elements with a pointer cursor. */
	cursor: pointer;
}

:where(fieldset) { /*
  * Prevent fieldset from causing overflow.
  * Reset the default `min-inline-size: min-content` to prevent children from stretching fieldset.
  * @see https://github.com/twbs/bootstrap/issues/12359
  */
	min-inline-size: 0; /* The following default styles are often unnecessary, so they are reset. */
	margin-inline: unset;
	padding: unset;
	border: unset;
}

:where(legend) { /* The default `padding-inline` is often unnecessary, so it is reset. */
	padding-inline: unset;
}

:where(progress) { /* Resets the vertical alignment of the `<progress>` element to its initial value. */
	vertical-align: unset;
}

::-moz-placeholder { /* Standardize the opacity of placeholder text (it may be set lower by default in Firefox). */
	opacity: unset;
}

::placeholder { /* Standardize the opacity of placeholder text (it may be set lower by default in Firefox). */
	opacity: unset;
}

/* ======================================================
//  MARK: Interactive elements
// ====================================================== */

:where(summary) { /* The default triangle marker is often unnecessary, so it is disabled. */
	list-style-type: ""; /* Changing the cursor to a pointer clarifies the clickability of the element. */
	cursor: pointer;
}

:where(summary)::-webkit-details-marker { /* In Safari versions earlier than 18.4 (released in April 2025), a triangle icon is displayed using the -webkit-details-marker CSS pseudo-element, so it should be removed. */
	display: none;
}

:where(dialog,
[popover]) { /*
  * When these fixed-position elements are scrolled, preventing scroll chaining on the underlying page and bounce effects on mobile improves usability.
  * Disabling block-direction scroll chaining is recommended.
  */
	overscroll-behavior-block: contain; /* The following default styles are often unnecessary, so they are reset. */
	padding: unset;
	border: unset;
}

:where(dialog:not([open],
[popover]),
[popover]:not(:popover-open)) { /*
  * These elements can be easily displayed by explicitly setting their `display` property.
  * To prevent them from appearing when not in an open state, they are forcibly hidden.
  */
	display: none !important;
}

:where(dialog) { /*
  * The max width and height of a `<dialog>` element are typically determined by the design.
  * These UA stylesheet properties are reset as they can be obstructive, especially when trying to make the dialog full-screen.
  */
	max-inline-size: unset;
	max-block-size: unset;
}

:where(dialog)::backdrop { /* Normalize the background color of the `::backdrop` element. */
	background-color: oklch(0% 0 0deg / 0.3);
}

:where([popover]) { /*
  * While the UA stylesheet's `margin` for `<dialog>` elements is useful for centering with `inset: 0`,
  * but `margin` for `popover` elements is often obstructive as they frequently use Anchor Positioning.
  */
	margin: unset;
}

/* ======================================================
//  MARK: Focus Styles
// ====================================================== */

:where(:focus-visible) { /* Add space between the content and the focus outline. */
}

[tabindex="-1"]:focus { /* Prevent programmatically focused elements from displaying an outline unless they are naturally focusable. */
	outline: none !important;
}

/* ======================================================
//  MARK: Misc
// ====================================================== */

:where(:disabled,
[aria-disabled=true i]) { /* Display the default cursor on disabled elements to reflect their non-interactive state. */
	cursor: default;
}

[hidden]:not([hidden=until-found i]) { /* Ensure that elements intended to be hidden are not displayed, improving clarity and layout control. */
	display: none !important;
}

/* ======================================================
//  MARK: a[href^="tel:"]
// ====================================================== */

.inner {
	width: 100%;
	margin-inline: auto;
	padding-inline: calc(20 / var(--vw));
}

.aware-button {
	--_button-width: calc(300*var(--rem));
	position: relative;
	display: block;
	width: min(100%, var(--_button-width));
	padding: 0.375rem 0.625rem;
	background-color: #030303;
	font-size: 1.25rem;
	font-weight: var(--fw-extrabold);
	line-height: 2.3;
	color: var(--white);
	text-align: center;
	overflow: clip;
	cursor: pointer;
}

.aware-button::before {
	content: "";
	position: absolute;
	top: var(--_top);
	left: var(--_left);
	transform: translate(-50%, -50%);
	display: block;
	width: 0;
	height: 0;
	border-radius: 50%;
	background-color: var(--red);
	transition: width 0.4s ease-in-out, height 0.4s ease-in-out;
}

.aware-button__text {
	position: relative;
}

.button {
	display: grid;
	gap: 0.125rem;
	place-items: center;
	padding: 0.5rem;
	background-image: url(../images/bg_contact.avif);
	background-size: 200% 200%;
	background-position: right top;
	background-repeat: no-repeat;
	border: 2px solid;
	color: var(--white);
	transition: filter 0.3s ease-out;
}

.button--large {
	min-height: 3.375rem;
}

.button__en {
	font-size: 1.5rem;
	font-weight: var(--fw-semibold);
	font-family: var(--en-font);
	line-height: 1;
	text-transform: uppercase;
}

.button__ja {
	font-size: 0.875rem;
	font-weight: var(--fw-semibold);
	line-height: 1.5;
	letter-spacing: 0.1em;
}

.client-loop {
	overflow-x: clip;
	padding-block: 1.875rem;
}

.client-loop__item {
	height: 3.5625rem;
}

.client-loop__item img {
	width: auto;
	height: 100%;
	object-fit: contain;
}

.client {
	padding-block: 6.25rem 3.125rem;
	background-color: var(--white);
}

.client__inner.inner {
	padding-inline: calc(15 / var(--vw));
	max-width: 600px;
}

.client__title {
	text-align: center;
}

.client__list {
	margin-top: 6.25rem;
	margin-inline: -0.3125rem;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: calc(58 / var(--vw)) 1.5rem;
	justify-content: center;
}

.client__item {
	flex-shrink: 0;
	width: auto;
	height: min(58 / var(--vw), 80px);
}

.client__item img {
	margin-inline: auto;
	width: auto;
	height: 100%;
	object-fit: contain;
}

.complete {
	position: relative;
	overflow-x: clip;
	display: grid;
	place-items: center;
	padding-block: 6.25rem;
	height: max(100%, 37.5rem);
}

.complete__container {
	position: relative;
	z-index: 2;
	display: grid;
	gap: 1.5rem;
}

.complete__container p {
	overflow-wrap: anywhere;
	word-break: keep-all;
}

.complete__button {
	display: grid;
	place-items: center;
	margin-top: 3.125rem;
}

.complete__deco {
	position: absolute;
	z-index: 1;
	bottom: 26%;
	left: 10%;
	rotate: -90deg;
	opacity: 0.3;
}

.complete__deco.deco {
	width: min(640 / var(--vw), 1200px);
}

.contact {
	padding-block: 3.125rem;
	background-color: var(--white);
}

.contact__title {
	text-align: center;
}

.contact__lead {
	margin-top: 6.25rem;
	font-size: 0.9375rem;
	font-weight: var(--fw-semibold);
	line-height: 1.875;
	text-align: center;
}

.contact__form {
	margin-top: 3.75rem;
	padding-inline: 0.625rem;
}

.contact__form ::-moz-placeholder {
	color: var(--gray);
}

.contact__form ::placeholder {
	color: var(--gray);
}

.contact__form-list {
	display: grid;
	gap: 1.25rem;
}

.contact__form-item {
	display: grid;
	grid-template-rows: auto 1fr;
	gap: 0.3125rem;
}

.contact__form-label {
	font-size: 1rem;
	font-weight: var(--fw-semibold);
	line-height: 1.875;
}

.contact__form-input {
	width: 100%;
	min-height: 3.125rem;
	padding: 0.625rem 0.9375rem;
	border: none;
	border-radius: 0.625rem;
	background-color: var(--bg-light-gray);
	font-size: 16px;
	font-weight: var(--fw-semibold);
	line-height: 1.875;
}

.contact__form-textarea {
	width: 100%;
	min-height: 16.5rem;
	padding: 0.625rem 0.9375rem;
	border: none;
	border-radius: 0.625rem;
	background-color: var(--bg-light-gray);
	font-size: 16px;
	font-weight: var(--fw-semibold);
	line-height: 1.875;
	resize: none;
	field-sizing: content;
}

.contact__form-submit {
	--_button-width: calc(386 * var(--rem));
	position: relative;
	margin-top: 3.75rem;
	margin-inline: auto;
	display: block;
	width: min(100%, var(--_button-width));
	background-color: #030303;
	overflow: clip;
	cursor: pointer;
}

.contact__form-submit::before {
	content: "";
	position: absolute;
	top: var(--_top);
	left: var(--_left);
	transform: translate(-50%, -50%);
	display: block;
	width: 0;
	height: 0;
	border-radius: 50%;
	background-color: var(--red);
	transition: width 0.4s ease-in-out, height 0.4s ease-in-out;
	z-index: 0;
	pointer-events: none;
}

.contact__form-submit input[type=submit] {
	position: relative;
	width: 100%;
	padding: 0.375rem 0.625rem;
	border: none;
	background-color: transparent;
	font-size: 1.25rem;
	font-weight: var(--fw-extrabold);
	line-height: 2.3;
	color: var(--white);
	text-align: center;
	cursor: pointer;
	z-index: 1;
}

.contact__form-submit .wpcf7-spinner {
	position: relative;
	z-index: 1;
}

.wpcf7 form.sent .wpcf7-response-output {
	display: none;
}

.wpcf7-spinner {
	display: none;
}

.contact__recaptcha {
	margin-top: 4rem;
	margin-inline: auto;
	max-width: 540px;
	font-size: 0.875rem;
	font-weight: var(--fw-medium);
	color: var(--gray);
	text-align: center;
	overflow-wrap: anywhere;
	word-break: keep-all;
}

.grecaptcha-badge {
	visibility: hidden;
}

.deco {
	width: min(1602 / var(--vw), 1602px);
	pointer-events: none;
}

.deco img {
	aspect-ratio: 1602/678;
	object-fit: contain;
}

.faq-block {
	border-bottom: 1px solid;
}

.faq-block__wrap {
	display: grid;
	grid-template-columns: 1fr auto;
	grid-template-areas: "question icon" "answer icon";
	-moz-column-gap: 1.5rem;
	column-gap: 1.5rem;
	align-items: center;
	border-top: 1px solid;
}

.faq-block__wrap::before,
.faq-block__wrap::after {
	content: "";
	position: relative;
	right: 1px;
	grid-area: icon;
	width: 1rem;
	aspect-ratio: 16/4;
	background-color: var(--text-black);
	transition: rotate 0.3s ease-out;
}

.faq-block__wrap::after {
	rotate: 90deg;
}

.faq-block__wrap.is-opened::before {
	rotate: 180deg;
}

.faq-block__wrap.is-opened::after {
	rotate: 180deg;
}

.faq-block__question {
	grid-area: question;
	display: flex;
	gap: 1rem;
	align-items: center;
	padding-block: 1.375rem;
}

.faq-block__question-text {
	text-box: trim-both cap alphabetic;
}

.faq-block__icon {
	flex-shrink: 0;
	width: 2.1875rem;
}

.faq-block__icon img {
	aspect-ratio: 35/40;
	object-fit: contain;
}

.faq-block__icon[data-faq=a] {
	align-self: start;
}

.faq-block__answer {
	grid-area: answer;
	overflow: clip;
	transition: block-size 0.3s ease-out;
}

.faq-block__answer-inner {
	display: flex;
	gap: 1rem;
	align-items: center;
	padding-block: 0.5rem 1.375rem;
}

.faq {
	padding-block: 3.125rem;
	background-color: var(--white);
}

.faq__container {
	padding-inline: 0.625rem;
}

.faq__title {
	text-align: center;
}

.faq__list {
	margin-top: 6.25rem;
}

.flow {
	container-type: inline-size;
	overflow: clip;
	padding-block: 4rem 3.75rem;
	background-color: var(--pink);
}

.flow__deco {
	display: none;
}

.flow__inner.inner {
	position: relative;
	z-index: 1;
}

.flow__tab-wrap {
	overflow-x: auto;
	margin-top: 2.5rem;
	margin-inline: calc(50% - 50cqi);
	padding-inline: calc(50cqi - 50%);
	padding-block: 0.625rem;
}

.flow__tab-list {
	display: flex;
	flex-wrap: nowrap;
	gap: 1.875rem;
	width: -moz-max-content;
	width: max-content;
	padding-inline: 0.625rem;
}

.flow__tab-item a {
	display: block;
	padding-block: 0.125rem;
	font-size: 1.25rem;
	font-weight: var(--fw-semibold);
	line-height: 1.3;
	color: var(--text-black2);
	text-box: trim-both cap alphabetic;
	transition: color 0.3s ease-out, background-color 0.3s ease-out, padding 0.3s ease-out, width 0.3s ease-out;
}

.flow__tab-item a[aria-selected=true] {
	padding-inline: 0.5rem;
	background-color: var(--text-black);
	color: var(--white);
}

.flow__tab-item a::before {
	content: "";
	grid-area: icon;
	width: 1.25rem;
	aspect-ratio: 1;
	background-color: var(--text-black2);
	border-radius: 50%;
}

.flow__tab-item a::after {
	content: "";
	grid-area: icon;
	place-self: center;
	width: 0.375rem;
	aspect-ratio: 6/10;
	background-color: var(--white);
	-webkit-mask-image: url(../images/chevron.svg);
	mask-image: url(../images/chevron.svg);
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}

.flow__tabpanel {
	margin-top: 1.25rem;
	padding-inline: 0.625rem;
}

[role=tabpanel] {
	display: none;
	animation: fadeOut 0.3s ease-out;
}

[role=tabpanel]:not([hidden]) {
	display: block;
	animation: fadeIn 0.3s ease-out;
}

.flow__tabpanel-head {
	font-size: 1.75rem;
	font-family: "MFW-PShinGoPr6N-Regular", sans-serif;
	font-weight: var(--fw-medium);
	line-height: 1;
}

.flow__tabpanel-list {
	margin-top: 2.1875rem;
	display: flex;
	flex-direction: column;
	gap: 0.9375rem;
}

.flow__tabpanel-item {
	display: flex;
	gap: 0.75rem;
	align-items: center;
	padding: 0.5625rem 0.875rem;
	background-color: var(--white);
}

.flow__tabpanel-num {
	display: grid;
	place-items: center;
	min-width: 1.125em;
	font-size: 1.75rem;
	font-weight: var(--fw-bold);
	font-family: var(--en-font);
	line-height: 1;
	white-space: nowrap;
	text-box: trim-both cap alphabetic;
}

.flow__tabpanel-text {
	font-size: 1.25rem;
	font-weight: var(--fw-semibold);
	line-height: 1.3;
	text-box: trim-both cap alphabetic;
}

.footer {
	padding-block: 3.125rem 2.1875rem;
}

.footer__inner.inner {
	padding-inline: 0.5rem;
}

.footer__container {
	display: grid;
	gap: 1.25rem;
	place-items: center;
}

.footer__logo {
	display: block;
	width: 13.5rem;
	transition: opacity 0.3s ease-out;
}

.footer__logo img {
	aspect-ratio: 216/38;
	object-fit: contain;
}

.footer__text {
	font-size: 0.75rem;
	font-weight: var(--fw-semibold);
	line-height: 1.5714285714;
	text-align: center;
}

.footer__copyright {
	font-size: 0.75rem;
	font-weight: var(--fw-semibold);
	line-height: 2.1428571429;
	text-align: center;
}

.fv {
	position: relative;
	overflow: clip;
	display: grid;
	grid-template-columns: 100%;
	grid-template-rows: 1fr auto;
	align-items: center;
}

.fv__bg {
	grid-area: 1/1/-1/-1;
	width: 100%;
}

.fv__bg video {
	display: block;
	aspect-ratio: 375/565;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.fv__bg img {
	aspect-ratio: 375/565;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.fv__inner.inner {
	grid-area: 1/1/2/2;
	position: relative;
	z-index: 1;
	max-width: 600px;
}

.fv__container {
	padding-top: 1.75rem;
}

.fv__catch {
	display: grid;
	gap: 1.875rem;
	text-align: center;
}

.fv__catch-large {
	font-size: 6.125rem;
	font-family: var(--gazzetta-font);
	font-weight: var(--fw-semibold);
	line-height: 0.6;
	text-box: trim-both cap alphabetic;
	opacity: 0;
	visibility: hidden;
	transform: scale(1.3);
	animation: fadeInScaleLogo 1s cubic-bezier(0.26, 0, 0, 1) 0.3s forwards;
}

.fv__catch-text {
	font-size: 1.125rem;
	font-weight: var(--fw-medium);
	line-height: 2;
	text-align: center;
	opacity: 0;
	visibility: hidden;
	transform: scale(1);
	animation: fadeInScaleLogo2 1s cubic-bezier(0.26, 0, 0, 1) 0.3s forwards;
}

.header {
	position: fixed;
	inset: 0;
	z-index: var(--z-index-header);
	height: var(--header-height);
	background-color: var(--white);
}

.header__inner {
	position: relative;
	z-index: 1;
	margin-inline: auto;
	padding-inline: var(--padding-sp);
	height: inherit;
}

.header__container {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	height: inherit;
}

.header__logo {
	flex-shrink: 0;
	display: flex;
	align-items: center;
	padding-top: 0.375rem;
	width: 6.25rem;
	height: inherit;
	transition: opacity 0.3s ease-out;
}

.header__logo-img {
	display: flex;
	align-items: center;
	height: inherit;
}

.header__logo-img img {
	aspect-ratio: 664/154;
	object-fit: contain;
}

.header__nav {
	display: none;
}

.header__nav-item {
	position: relative;
	display: flex;
	align-items: center;
	height: inherit;
}

.header__nav-item:not(:last-of-type)::after {
	content: "/";
}

.header__nav-link {
	display: flex;
	align-items: center;
	height: inherit;
	padding-inline: min(18 / var(--vw), 18px);
	font-size: max(10px, 0.875rem);
	color: var(--black);
	text-transform: uppercase;
	transition: letter-spacing 0.3s ease-out;
}

.header__nav-link-text {
	overflow: clip;
	display: inline-block;
	text-shadow: 0 1.5em 0;
}

.header__nav-link-text span {
	display: inline-block;
}

.header__contact {
	display: none;
}

.header__contact-loop {
	position: absolute;
	top: 0;
}

.header__contact-loop[data-loop="1"] {
	left: calc(50% - min(170.4166666667vw, 2454px));
	rotate: 57.8deg;
}

.header__contact-loop[data-loop="2"] {
	left: calc(50% - min(179.8611111111vw, 2590px));
	rotate: 25deg;
}

.header__contact-line {
	display: flex;
	flex-wrap: nowrap;
	width: -moz-max-content;
	width: max-content;
	animation: loop-contact 72s linear infinite;
}

.header__contact-line picture {
	width: min(2335 / var(--vw), 2335px);
}

.header__contact-line img {
	flex-shrink: 0;
	aspect-ratio: 2335/74;
	height: 100%;
	object-fit: contain;
}

.header__contact-link {
	display: grid;
	place-items: center;
	width: min(202 / var(--vw), 202px);
	aspect-ratio: 202/165;
	padding-inline: min(40 / var(--vw), 40px) 20px;
	padding-bottom: min(32 / var(--vw), 32px);
	background-image: -webkit-image-set(url(../images/bg_contact.avif) type("image/avif"), url(../images/bg_contact.png) type("image/png"));
	background-image: image-set(url(../images/bg_contact.avif) type("image/avif"), url(../images/bg_contact.png) type("image/png"));
	background-repeat: no-repeat;
	background-position: center;
	background-size: 100% 100%;
	transition: filter 0.3s ease-out;
}

.header__contact-text {
	display: grid;
	place-items: center;
	gap: 0.125rem;
	rotate: 21deg;
	color: var(--white);
}

.header__contact-en {
	font-size: min(58 / var(--vw), 58px);
	font-weight: var(--fw-regular);
	font-family: var(--gazzetta-font);
	line-height: 0.8;
	letter-spacing: 0.04em;
	white-space: nowrap;
	text-transform: uppercase;
}

.header__contact-ja {
	font-size: min(17 / var(--vw), 17px);
	font-weight: var(--fw-semibold);
	line-height: 1.8823529412;
	letter-spacing: 0.2352941176em;
}

.header__hamburger {
	position: relative;
	display: grid;
	grid-template: 2px/calc(16 * var(--rem));
	align-content: center;
	margin-left: auto;
	padding-inline: 0.1875rem;
	aspect-ratio: 1;
	border: none;
	transition: rotate 0.3s ease-out;
}

.header__hamburger-line {
	--gap: calc(7 * var(--rem));
	--base-color: #030001;
	display: grid;
	grid-template-areas: "stack";
	align-self: stretch;
	background-color: var(--base-color);
	transition: background-color 0.3s ease-out;
}

.header__hamburger-line::before {
	content: "";
	grid-area: stack;
	background-color: var(--base-color);
	translate: 0 calc(var(--gap) * -1);
	transform-origin: top left;
	transition: rotate 0.3s ease-out, width 0.3s ease-out;
}

.header__hamburger-line::after {
	content: "";
	grid-area: stack;
	background-color: var(--base-color);
	transform-origin: bottom left;
	translate: 0 var(--gap);
	transition: rotate 0.3s ease-out;
}

.header__hamburger.is-open .header__hamburger-line {
	background-color: transparent;
}

.header__hamburger.is-open .header__hamburger-line::before {
	width: 130%;
	rotate: 45deg;
}

.header__hamburger.is-open .header__hamburger-line::after {
	width: 130%;
	rotate: -45deg;
}

.header__drawer {
	position: fixed;
	inset: 0;
	padding-top: var(--header-height);
	opacity: 0;
	visibility: hidden;
	translate: 100%;
	transition: opacity 0.3s ease-out, visibility 0.3s ease-out, translate 0.3s ease-out;
}

.header__drawer.is-open {
	opacity: 1;
	visibility: visible;
	translate: 0;
}

.header__drawer-wrapper {
	display: grid;
	align-items: center;
	overflow-y: auto;
	scrollbar-width: none;
	height: 100%;
	padding-block: 2.5rem 5rem;
	background-color: color-mix(in srgb, var(--black) 90%, transparent);
	backdrop-filter: blur(2px);
}

.header__drawer-wrapper::-webkit-scrollbar {
	display: none;
}

.header__drawer-list {
	display: grid;
	grid-template-columns: 1fr;
}

.header__drawer-item {
	width: 100%;
}

.header__drawer-link {
	display: block;
	padding-block: 1.25rem;
	font-size: 1.125rem;
	font-weight: var(--fw-semibold);
	line-height: 1.375;
	color: var(--white);
	text-align: center;
}

.header__drawer-button {
	margin-top: 2.5rem;
	margin-inline: auto;
	width: min(100%, 18.75rem);
}

.outer {
	--scrollbar: calc(100vw - 100cqw);
	overflow: clip;
	display: grid;
	grid-template-columns: 100%;
	grid-template-rows: 1fr auto;
	min-height: 100vh;
}

body:has(.loader) .outer {
	opacity: 0;
}

.page-404 {
	position: relative;
	overflow-x: clip;
	display: grid;
	place-items: center;
	padding-block: 6.25rem 3.75rem;
	height: max(100%, 25rem);
}

.page-404__container {
	position: relative;
	z-index: 2;
	display: grid;
	place-items: center;
}

.page-404__title {
	font-size: 3rem;
	font-family: var(--en-font);
	font-weight: var(--fw-bold);
	line-height: 1;
	letter-spacing: 0.05em;
}

.page-404__text {
	margin-top: 2rem;
	width: -moz-fit-content;
	width: fit-content;
	font-size: 0.875rem;
	font-weight: var(--fw-medium);
	line-height: 2;
}

.page-404__button {
	display: grid;
	place-items: center;
	margin-top: 3.125rem;
	width: min(100%, 18.75rem);
}

.page-404__deco {
	position: absolute;
	z-index: 1;
	bottom: 26%;
	left: 10%;
	rotate: -90deg;
	opacity: 0.3;
}

.page-404__deco.deco {
	width: min(640 / var(--vw), 1200px);
}

.portfolio {
	position: relative;
	overflow: clip;
	background-color: var(--light-blue);
}

.portfolio__deco {
	display: none;
}

.portfolio__container {
	padding-block: 4rem 3.125rem;
}

.portfolio__list {
	display: grid;
}

.portfolio__item {
	position: relative;
	display: grid;
	grid-template-areas: "area";
	max-height: 25rem;
	overflow: clip;
}

.portfolio__item-bg {
	grid-area: area;
	position: relative;
	max-height: inherit;
}

.portfolio__item-bg::before {
	content: "";
	position: absolute;
	inset: 0;
	background-color: var(--black);
	opacity: 0.4;
}

.portfolio__item-bg::after {
	content: "";
	position: absolute;
	top: var(--_top);
	left: var(--_left);
	translate: -50% -50%;
	background-color: var(--black);
	width: 225%;
	height: 225%;
	opacity: 0;
	clip-path: circle(0% at 50% 50%);
	transition: clip-path 0.3s ease-out, opacity 0.3s ease-out;
}

.portfolio__item-bg img {
	aspect-ratio: 1;
	height: 100%;
	object-fit: cover;
}

.portfolio__item-content {
	grid-area: area;
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 260px) 1.875rem;
	grid-template-rows: auto auto 1fr;
	grid-template-areas: "title icon" "label ." "text .";
	-moz-column-gap: calc(25 / var(--vw));
	column-gap: calc(25 / var(--vw));
	padding: 1.875rem calc(30 / var(--vw));
}

.portfolio__item-content::after {
	content: "";
	grid-area: icon;
	margin-top: 0.625rem;
	width: 100%;
	aspect-ratio: 1;
	background-color: var(--white);
	-webkit-mask-image: url(../images/icon_blank.svg);
	mask-image: url(../images/icon_blank.svg);
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}

.portfolio__item-title {
	grid-area: title;
	font-family: var(--gazzetta-font);
	font-size: min(64 / var(--vw), 64px);
	line-height: 1;
	letter-spacing: 0.01em;
	color: var(--white);
	font-weight: var(--fw-medium);
}

.portfolio__item-label {
	grid-area: label;
	margin-top: 1.375rem;
	display: inline-flex;
	align-items: center;
	width: -moz-fit-content;
	width: fit-content;
	padding: 0.1875rem 0.5rem;
	background-color: var(--white);
}

.portfolio__item-label span {
	font-size: 1.25rem;
	font-weight: var(--fw-semibold);
	line-height: 1;
	text-box: trim-both cap alphabetic;
}

.portfolio__item-text {
	grid-area: text;
	margin-top: 1.25rem;
	font-size: max(12px, 0.875rem);
	font-weight: var(--fw-semibold);
	line-height: 1.7142857143;
	color: var(--white);
}

.section-title__num {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	font-size: min(24 / var(--vw), 24px);
	font-weight: var(--fw-bold);
	font-family: var(--en-font);
	line-height: 1;
}

.section-title__num-lead {
	font-size: 1rem;
	font-weight: var(--fw-semibold);
	line-height: 1.375;
}

.section-title__en {
	margin-top: 0.5rem;
	font-size: 8.75rem;
	font-weight: var(--fw-medium);
	font-family: var(--gazzetta-font);
	line-height: 1;
	letter-spacing: 0.01em;
}

.section-title__ja {
	margin-top: -0.5rem;
	font-size: 1.375rem;
	font-weight: var(--fw-semibold);
	line-height: 1.0714285714;
}

.service {
	overflow: clip;
	padding-block: 4rem 3.75rem;
	background-color: var(--green);
}

.service__deco {
	display: none;
}

.service__list {
	--gap: calc(24*var(--rem));
	margin-top: 3.125rem;
	padding-inline: 0.625rem;
	display: grid;
	gap: var(--gap);
}

.service__item {
	display: grid;
	row-gap: 0.75rem;
	align-content: center;
}

.service__item:not(:last-child) {
	padding-bottom: var(--gap);
	border-bottom: 1px solid;
}

.service__item-title {
	font-size: 1.75rem;
	font-weight: var(--fw-semibold);
	line-height: 1.0714285714;
	letter-spacing: -0.02em;
}

.service__item-label {
	background-color: var(--text-black);
	width: -moz-fit-content;
	width: fit-content;
	padding: 0.375rem 0.625rem;
	font-size: 1rem;
	font-weight: var(--fw-semibold);
	line-height: 1;
	text-box: trim-both cap alphabetic;
	color: var(--white);
}

.skills {
	container-type: inline-size;
	position: relative;
	overflow: clip;
	padding-block: 4rem 3.75rem;
	background-color: var(--orange);
}

.skills__deco {
	display: none;
}

.skills__list {
	--gap: calc(47 * var(--rem));
	margin-top: 3.125rem;
	padding-inline: 0.625rem;
	display: grid;
	gap: var(--gap);
}

.skills__item {
	display: grid;
	gap: 0.9375rem;
}

.skills__item:not(:last-child) {
	position: relative;
	padding-bottom: var(--gap);
}

.skills__item::before {
	content: "";
	position: absolute;
	bottom: 0;
	inset-inline: 0;
	height: 1px;
	background-color: currentColor;
}

.skills__item-label {
	width: -moz-fit-content;
	width: fit-content;
	padding: 0.4375rem 0.625rem;
	background-color: var(--text-black);
	font-size: 0.75rem;
	font-weight: var(--fw-semibold);
	color: var(--white);
	line-height: 1;
	text-box: trim-both cap alphabetic;
}

.skills__item-title {
	font-size: 2rem;
	font-weight: var(--fw-semibold);
	line-height: 1.25;
	letter-spacing: 0.05em;
}

.skills__item-text {
	font-size: max(12px, 1rem);
	font-weight: var(--fw-semibold);
	line-height: 1.625;
}

.text {
	font-size: 0.875rem;
	font-weight: var(--fw-semibold);
	line-height: 1.7142857143;
}

.text-middle {
	font-size: 1.125rem;
	line-height: 2;
	letter-spacing: 0.04em;
}

.text-large {
	font-size: 2rem;
	line-height: 1.6;
	letter-spacing: 0.04em;
}

.js-fadeIn {
	opacity: 0;
	translate: 0 1.875rem;
}

.js-fadeInTitle .section-title__en,
.js-fadeInTitle .section-title__ja {
	opacity: 0;
	translate: 0 1.875rem;
}

.js-slideIn {
	opacity: 0;
	transform: translateX(-100%);
}

.js-slideIns .portfolio__item-title,
.js-slideIns .portfolio__item-label {
	opacity: 0;
	transform: translateX(-100%);
}

.color-orange {
	color: var(--orange);
}

.inline-block {
	display: inline-block;
}

.pc-only {
	display: none;
}

.sp-only {
	display: block;
}

.visually-hidden {
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	width: 1px;
	height: 1px;
	overflow: hidden;
	position: absolute;
	inset: 0;
	white-space: nowrap;
}

@media (forced-colors: active) {

:where(mark) { /*
    * In forced-colors mode, the color of the mark element may not change, which can be problematic. Use system colors in forced-colors mode.
    * @see https://adrianroselli.com/2017/12/tweaking-text-level-styles.html#MarkWHCM
    */
	background-color: Highlight;
	color: HighlightText;
}

}

@media (any-hover: hover) {

.aware-button:hover::before {
	width: 225%;
	height: calc(var(--_button-width) * 2.24);
}

.button:hover {
	filter: brightness(0.8);
}

.contact__form-submit:hover::before {
	width: 225%;
	height: calc(var(--_button-width) * 2.24);
}

.flow__tab-item a:hover {
	opacity: 1;
}

.footer__logo:hover {
	opacity: 0.7;
}

.header__logo:hover {
	opacity: 0.6;
}

.header__contact-link:hover {
	filter: brightness(0.8);
}

.portfolio__item:hover .portfolio__item-bg::after {
	clip-path: circle(100% at 50% 50%);
	opacity: 0.7;
}

}

@media screen and (min-width: 768px) {

:root {
	--vw: 1440 * 100vw;
}

:root {
	--header-height: calc(80 / 16 * 1rem);
}

html {
	font-size: calc(16 / var(--inner-value) * 100vw);
}

.inner {
	max-width: calc(var(--inner) + var(--padding-pc) * 2);
	padding-inline: calc(40 / var(--vw));
}

.client {
	position: sticky;
	top: 0;
	padding-top: 12.5rem;
}

.client__inner.inner {
	padding-inline: min(40 / var(--vw), 40px);
	max-width: calc(var(--inner) + var(--padding-pc) * 2);
}

.client__list {
	display: flex;
	flex-wrap: wrap;
	gap: 4.375rem min(140 / var(--vw), 140px);
}

.client__item {
	height: 3.875rem;
}

.complete__container {
	gap: 2rem;
}

.complete__deco {
	bottom: 0;
	left: 50%;
	transform: translate(-50%, 80%);
	rotate: 0deg;
}

.complete__deco.deco {
	width: min(1400 / var(--vw), 1400px);
}

.contact {
	padding-block: 12.5rem 4.375rem;
}

.contact__inner.inner {
	max-width: clamp(608px, 1080 / var(--vw), 1080px);
}

.contact__lead {
	font-size: 1rem;
}

.contact__form {
	padding-inline: initial;
}

.contact__form-list {
	grid-template-columns: repeat(2, 1fr);
	grid-template-areas: "name ." "mail phone" "company position" "message message";
	-moz-column-gap: 2.1875rem;
	column-gap: 2.1875rem;
}

.contact__form-item:has(#email) {
	grid-area: mail;
}

.contact__form-item:has(#phone) {
	grid-area: phone;
}

.contact__form-item:has(#company) {
	grid-area: company;
}

.contact__form-item:has(#position) {
	grid-area: position;
}

.contact__form-item:has(#message) {
	grid-area: message;
}

.contact__form-input {
	padding-inline: 1.625rem;
}

.contact__form-submit {
	margin-top: 3.125rem;
}

.contact__recaptcha {
	margin-top: 5rem;
	max-width: initial;
}

.faq-block__question {
	padding-block: 1.5625rem;
}

.faq-block__answer-inner {
	padding-block: 0 2.125rem;
}

.faq {
	padding-block: 12.5rem 6.25rem;
}

.faq__inner.inner {
	max-width: clamp(608px, 1080 / var(--vw), 1080px);
}

.faq__container {
	padding-inline: initial;
}

.flow {
	position: sticky;
	top: 0;
	padding-top: 6.25rem;
	min-height: 100vh;
}

.flow__deco {
	display: block;
	position: absolute;
	bottom: -43%;
	bottom: -17.625rem;
	right: -52.5%;
}

.flow__inner.inner {
	max-width: 1440px;
}

.flow__container {
	--tab: max-content;
	--gap: minmax(40px, 1fr);
	--content: minmax(0, 723px);
	display: grid;
	grid-template-columns: var(--tab) var(--gap) var(--content);
	grid-template-rows: auto 1fr;
	grid-template-areas: "title . content" "tab . content";
}

.flow__title {
	grid-area: title;
}

.flow__tab-wrap {
	grid-area: tab;
	overflow: initial;
	padding: initial;
	margin-inline: initial;
	margin-top: 2rem;
	width: min(100%, 25.125rem);
}

.flow__tab-list {
	flex-direction: column;
	flex-wrap: wrap;
	gap: 1.25rem;
	width: 100%;
}

.flow__tab-item a {
	position: relative;
	display: grid;
	grid-template-columns: 1fr auto;
	grid-template-areas: "text icon";
	gap: 0.4375rem;
	align-items: center;
	width: -moz-fit-content;
	width: fit-content;
	opacity: 0.5;
}

.flow__tab-item a[aria-selected=true] {
	width: 100%;
	opacity: 1;
}

.flow__tabpanel {
	grid-area: content;
	padding-inline: initial;
	margin-top: 2.625rem;
}

.flow__tabpanel-head {
	font-size: min(70 / var(--vw), 70px);
	overflow-wrap: anywhere;
	word-break: keep-all;
}

.flow__tabpanel-list {
	margin-top: 3.125rem;
	flex-direction: row;
	gap: 1.25rem;
}

.flow__tabpanel-item {
	flex-direction: column;
	padding: 0.9375rem 0.125rem;
	height: -moz-fit-content;
	height: fit-content;
}

.flow__tabpanel-num {
	min-width: 1.125em;
	font-size: 1.75rem;
	text-box: unset;
	letter-spacing: -0.02em;
}

.flow__tabpanel-text {
	position: relative;
	right: 1px;
	font-size: 1.5rem;
	line-height: 1;
	writing-mode: vertical-rl;
	text-box: unset;
}

.footer {
	padding-bottom: 3.125rem;
}

.footer__text {
	font-size: 0.875rem;
}

.footer__copyright {
	font-size: 0.875rem;
}

.fv__bg video {
	aspect-ratio: 1440/797;
}

.fv__bg img {
	aspect-ratio: 1440/797;
}

.fv__inner.inner {
	max-width: -moz-fit-content;
	max-width: fit-content;
}

.fv__container {
	padding-top: 5.3125rem;
}

.fv__catch {
	gap: 2.5rem;
	text-align: left;
	word-break: keep-all;
}

.fv__catch-large {
	text-align: center;
	line-height: 0.8;
	font-size: min(210 / var(--vw), 210px);
}

.fv__catch-text {
	font-size: min(32 / var(--vw), 32px);
	font-weight: var(--fw-regular);
	line-height: 1.875;
}

.header__inner {
	padding-inline: min(30 / var(--vw), 30px);
	max-width: 1600px;
}

.header__logo {
	width: 6.25rem;
}

.header__nav {
	display: flex;
	align-items: center;
	height: inherit;
	margin-left: 0.875rem;
}

.header__contact {
	display: block;
	position: absolute;
	top: 0;
	right: 0;
	z-index: 1;
}

.header__hamburger {
	display: none;
}

.header__drawer-inner.inner {
	max-width: 420px;
}

.page-404 {
	height: max(100%, 37.5rem);
}

.page-404__title {
	font-size: 7.5rem;
}

.page-404__text {
	margin-top: 2.5rem;
	font-size: 1rem;
	line-height: 2;
}

.page-404__button {
	margin-top: 4rem;
}

.page-404__deco {
	bottom: 0;
	left: 50%;
	transform: translate(-50%, 80%);
	rotate: 0deg;
}

.page-404__deco.deco {
	width: min(1400 / var(--vw), 1400px);
}

.portfolio {
	position: sticky;
	top: 0;
}

.portfolio__deco {
	position: absolute;
	bottom: 51.5%;
	right: -46%;
	display: block;
	rotate: -90deg;
}

.portfolio__wrapper {
	display: grid;
	min-height: 100vh;
}

.portfolio__inner.inner {
	max-width: 1440px;
}

.portfolio__container {
	padding-top: 100px;
}

.portfolio__list {
	grid-template-columns: repeat(3, 1fr);
}

.portfolio__item {
	max-height: initial;
}

.portfolio__item-bg {
	min-height: 320px;
}

.portfolio__item-bg img {
	aspect-ratio: 480/396;
}

.portfolio__item-content {
	-moz-column-gap: 1.875rem;
	column-gap: 1.875rem;
	justify-content: space-between;
	padding: 1.875rem;
}

.portfolio__item-title {
	white-space: nowrap;
	font-size: min(80 / var(--vw), 80px);
	line-height: 1;
}

.portfolio__item-text {
	font-size: 14px;
}

.section-title__num {
	align-items: center;
	padding-left: 0.625rem;
}

.section-title__num:has(.section-title__num-lead) {
	flex-direction: row;
	gap: 1.25rem;
}

.section-title__num-lead {
	font-size: min(28 / var(--vw), 28px);
	line-height: 1.0714285714;
}

.section-title__en {
	margin-top: 0.25rem;
	font-size: min(315 / var(--vw), 315px);
	letter-spacing: 0.01em;
	margin-top: -0.25rem;
}

.section-title__ja {
	padding-left: 0.625rem;
	font-size: min(32 / var(--vw), 32px);
	line-height: 1.25;
	margin-top: -1.25rem;
}

.service {
	position: sticky;
	top: 0;
	padding-top: 6.25rem;
	min-height: 100vh;
}

.service__deco {
	position: absolute;
	bottom: 52%;
	right: -46%;
	display: block;
	rotate: -90deg;
}

.service__inner.inner {
	max-width: 1440px;
}

.service__container {
	max-width: 49.875rem;
}

.service__list {
	--gap: calc(28*var(--rem));
	grid-template-columns: auto 1fr;
	-moz-column-gap: initial;
	column-gap: initial;
}

.service__item:nth-last-of-type(-n+2) {
	border: none;
}

.service__item:nth-of-type(2n) {
	position: relative;
	display: grid;
	grid-template-columns: auto 1fr;
	grid-template-areas: "before title" "before label";
	align-items: center;
}

.service__item:nth-of-type(2n)::before {
	content: "";
	grid-area: before;
	margin-inline: min(66 / var(--vw), 66px) min(38 / var(--vw), 38px);
	width: 5rem;
	height: 0.125rem;
	background-color: var(--text-black);
	rotate: -60deg;
}

.skills {
	position: sticky;
	top: 0;
	padding-top: 6.25rem;
	min-height: 100vh;
}

.skills__deco {
	position: absolute;
	bottom: -30%;
	left: -71%;
	display: block;
}

.skills__inner.inner {
	max-width: 1440px;
}

.skills__container {
	display: grid;
	grid-template-columns: max-content minmax(0, min(582 / var(--vw), 582px));
	-moz-column-gap: min(138 / var(--vw), 138px);
	column-gap: min(138 / var(--vw), 138px);
	max-width: 76rem;
}

.skills__list {
	--gap: min(47 / var(--vw), 47px);
	margin-top: min(30 / var(--vw), 30px);
	padding-inline: initial;
}

.skills__item {
	gap: 0.5rem;
	max-width: 36.375rem;
}

.skills__item:not(:last-child) {
	padding-bottom: min(47 / var(--vw), 47px);
}

.skills__item::before {
	right: calc(50% - 50cqi);
}

.skills__item-label {
	font-size: 0.875rem;
}

.skills__item-title {
	font-size: min(48 / var(--vw), 48px);
	font-weight: var(--fw-extrabold);
	letter-spacing: 0em;
}

.text {
	font-size: max(12px, 0.875rem);
}

.text-middle {
	font-size: 0.9375rem;
}

.text-large {
	font-size: 1.125rem;
}

.pc-only {
	display: block;
}

.sp-only {
	display: none;
}

}

@media (min-width: 768px) {

a[href^="tel:"] {
	pointer-events: none;
}

}

@media (min-width: 1090px) {

html {
	font-size: 16px;
}

}

@media (max-width: 375px) {

html {
	font-size: 4.2666666667vw;
}

}

@media print {

:where(mark) { /*
    * Not all printers support color, and users might print in grayscale.
    * It's worth adding a non-disruptive style that scales with the text, as an alternative to relying only on background color.
    * @see https://adrianroselli.com/2017/12/tweaking-text-level-styles.html#MarkPrint
    */
	border-width: 1px;
	border-style: dotted;
}

}

@keyframes fadeOut {

from {
	opacity: 1;
}

to {
	opacity: 0;
}

}

@keyframes fadeIn {

from {
	opacity: 0;
}

to {
	opacity: 1;
}

}

@keyframes fadeInScaleLogo {

0% {
	opacity: 0;
	visibility: hidden;
	transform: scale(1.3);
}

1% {
	visibility: visible;
}

100% {
	opacity: 1;
	visibility: visible;
	transform: scale(1);
}

}

@keyframes fadeInScaleLogo2 {

0% {
	opacity: 0;
	visibility: hidden;
	transform: scale(0);
}

1% {
	visibility: visible;
}

100% {
	opacity: 1;
	visibility: visible;
	transform: scale(1);
}

}

@keyframes loop-contact {

0% {
	transform: translateX(0);
}

100% {
	transform: translateX(47%);
}

}

