@charset "UTF-8";
/* リキッドレイアウト対応 */
:root {
  --inner-value: 1200;
  --inner: 1200px;
  --inner-large: 1300px;
  --inner-small: 1000px;
  --padding-pc: 25px;
  --padding-sp: 20px;
}

:root {
  --base-font: "Noto Sans JP", sans-serif;
  --poppins-font: "Poppins", sans-serif;
  --yuji-font: "Yuji Boku", serif;
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;
}

:root {
  --black: #000;
  --white: #fff;
  --red: #FB0F0C;
  --ivory: #FDFCF7;
  --brown: #380B0B;
  --bg-red: #BB0907;
  --yellow: #FEDE80;
  --orange: #EF6E01;
  --cream: #F6F2E1;
}

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

:root {
  --header-height: calc(110/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: calc(var(--header-height) + 20px);
}

body {
  background-color: var(--ivory);
  color: var(--brown);
  container-type: inline-size;
  font-family: var(--base-font);
  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) {
  /* The `margin` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset here. */
  margin: unset;
  /*
  * 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;
}

/* ======================================================
// 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) {
  font-size: 2em;
  /*
  * 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;
}

: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) {
  /*
  * 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: "";
  /* The `padding-inline-start` specified in the User Agent (UA) stylesheet is often unnecessary, so it is reset. */
  padding-inline-start: unset;
}

: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;
  /* 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;
  font-variation-settings: initial;
}

:where(abbr[title]) {
  cursor: help;
  /*
  * 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;
}

: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;
  inline-size: 100%;
  /* Prevents overflow by setting the maximum width to `100%`. */
  max-inline-size: 100%;
  /* Prevents extra space from appearing at the bottom of the element. */
  vertical-align: bottom;
}

: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 styles specified in the UA stylesheet are often unnecessary, so they are reset to allow for inheritance. */
  border-color: unset;
  border-radius: unset;
  border-style: solid;
  /*
  * 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;
  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;
}

@supports (-webkit-touch-callout: none) {
  :where(input[type=search i]) {
    /* normalize the background color on iOS. */
    background-color: Canvas;
  }
}
: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) {
  border: unset;
  /* The following default styles are often unnecessary, so they are reset. */
  margin-inline: unset;
  /*
  * 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;
  padding: 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) {
  /* Changing the cursor to a pointer clarifies the clickability of the element. */
  cursor: pointer;
  /* The default triangle marker is often unnecessary, so it is disabled. */
  list-style-type: "";
}

: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]) {
  border: unset;
  /*
  * 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;
}

: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) {
  max-block-size: unset;
  /*
  * 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;
}

: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 {
  margin-inline: auto;
  max-width: calc(var(--inner) + var(--padding-pc) * 2);
  padding-inline: var(--padding-pc);
  width: 100%;
}

.inner-large {
  margin-inline: auto;
  max-width: calc(var(--inner-large) + var(--padding-pc) * 2);
  padding-inline: var(--padding-pc);
  width: 100%;
}

.inner-small {
  margin-inline: auto;
  max-width: calc(var(--inner-small) + var(--padding-pc) * 2);
  padding-inline: var(--padding-pc);
  width: 100%;
}

.l-about {
  background-color: var(--bg-red);
  display: grid;
  gap: 7.5rem;
  margin-top: 11.5rem;
  padding-block: 6.25rem;
  position: relative;
}

.l-company-contact {
  margin-top: 17.5rem;
}

.l-contact {
  margin-top: 8.75rem;
}

.l-intro {
  margin-top: 6.25rem;
}

.l-loop-text {
  margin-top: 6.25rem;
}

.l-message {
  margin-top: 6.25rem;
}

.l-product {
  margin-top: 12.5rem;
}

.l-service-contact {
  margin-top: 14.375rem;
}

.l-sub-common {
  margin-top: 8.75rem;
}

.l-sub-mv {
  margin-top: 6.875rem;
}

.l-sub-product {
  margin-top: 8.75rem;
}

.l-sub-service {
  margin-top: 7.5rem;
}

.wave::before,
.wave::after {
  background-color: inherit;
  content: "";
  height: 8.75rem;
  inset-inline: 0;
  position: absolute;
  -webkit-mask-image: url(../images/common/wave.svg);
          mask-image: url(../images/common/wave.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: 100% 100%;
          mask-size: 100% 100%;
}

.wave::before {
  top: 1px;
  translate: 0 -100%;
}

.wave::after {
  bottom: 1px;
  scale: -1;
  translate: 0 100%;
}

.about {
  position: relative;
}

.about::before {
  aspect-ratio: 124/185;
  background-image: -webkit-image-set(url(../images/common/fork.avif) type("image/avif"), url(../images/common/fork.png) type("image/png"));
  background-image: image-set(url(../images/common/fork.avif) type("image/avif"), url(../images/common/fork.png) type("image/png"));
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  content: "";
  filter: drop-shadow(0 1px 0.4375rem rgba(76, 13, 13, 0.15));
  left: calc(50% - min(43.2638888889vw, 1000px));
  position: absolute;
  rotate: -19deg;
  top: -17.5rem;
  width: 7.75rem;
}

.about__lead {
  color: var(--white);
  font-weight: var(--fw-semibold);
  margin-top: 3.75rem;
  text-align: center;
}

.about__text {
  color: var(--white);
  margin-top: 3rem;
  text-align: center;
}

.button-tel {
  --base-color: var(--red);
  --text-color: var(--white);
  background-color: var(--base-color);
  border: 1px solid var(--base-color);
  border-radius: calc(infinity * 1px);
  color: var(--text-color);
  display: inline-grid;
  gap: 0.5rem;
  grid-template-columns: auto 1fr;
  padding: 0.9375rem 1.5rem;
  place-items: center;
  transition: background-color 0.3s ease-out, color 0.3s ease-out;
}

.button-tel::before {
  aspect-ratio: 1/1;
  background-color: currentColor;
  content: "";
  width: max(12px, 0.9375rem);
  -webkit-mask-image: url(../images/common/icon-phone.svg);
          mask-image: url(../images/common/icon-phone.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: contain;
          mask-size: contain;
  transition: background-color 0.3s ease-out;
}

.button-tel__text {
  font-family: var(--poppins-font);
  font-size: max(12px, 0.9375rem);
  font-weight: var(--fw-bold);
  letter-spacing: 0.04em;
  line-height: 1;
}

.button-tel--white {
  --base-color: var(--white);
  --text-color: var(--red);
}

.button-tel--large::before {
  width: 1.25rem;
}

.button-tel--large .button-tel__text {
  font-size: 1.25rem;
}

.button {
  --base-color: var(--white);
  --text-color: var(--red);
  align-items: center;
  background-color: var(--base-color);
  border: 1px solid var(--text-color);
  border-radius: calc(infinity * 1px);
  color: var(--text-color);
  display: inline-grid;
  font-size: 1.125rem;
  font-weight: var(--fw-bold);
  gap: 0.5em;
  grid-template-columns: 1fr auto;
  letter-spacing: 0.04em;
  line-height: 2;
  min-width: 20.9375rem;
  padding: 1rem 2.25rem;
  transition: background-color 0.3s ease-out, color 0.3s ease-out;
}

.button::before,
.button::after {
  content: "";
  grid-area: 1/2/2/3;
  place-self: center;
}

.button::before {
  aspect-ratio: 1/1;
  background-color: currentColor;
  border-radius: 50%;
  transition: background-color 0.3s ease-out;
  width: 2.25rem;
}

.button::after {
  aspect-ratio: 1/1;
  background-color: var(--base-color);
  width: 62.5%;
  -webkit-mask-image: url(../images/common/arrow.svg);
          mask-image: url(../images/common/arrow.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: contain;
          mask-size: contain;
  transition: background-color 0.3s ease-out;
}
.contact {
  background-color: var(--bg-red);
  overflow-x: clip;
  padding-block: 3.75rem;
  position: relative;
}

.contact__inner.inner {
  position: relative;
}

.contact__inner::before,
.contact__inner::after {
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  content: "";
  filter: drop-shadow(0 1px 0.4375rem rgba(76, 13, 13, 0.15));
  position: absolute;
}

.contact__inner::before {
  aspect-ratio: 268/204;
  background-image: -webkit-image-set(url(../images/common/spaghetti.avif) type("image/avif"), url(../images/common/spaghetti.png) type("image/png"));
  background-image: image-set(url(../images/common/spaghetti.avif) type("image/avif"), url(../images/common/spaghetti.png) type("image/png"));
  left: calc(50% - clamp(35.125rem, 39.0277777778vw, 580px));
  rotate: -13deg;
  top: 0px;
  width: 16.75rem;
}

.contact__inner::after {
  aspect-ratio: 1/1;
  background-image: -webkit-image-set(url(../images/common/cake.avif) type("image/avif"), url(../images/common/cake.png) type("image/png"));
  background-image: image-set(url(../images/common/cake.avif) type("image/avif"), url(../images/common/cake.png) type("image/png"));
  bottom: 6.875rem;
  right: calc(50% - clamp(37.5rem, 45.4861111111vw, 660px));
  rotate: 13deg;
  width: 11rem;
}

.contact__container {
  background-color: var(--white);
  border-radius: 3.75rem;
  padding: 3.75rem min(6.9444444444vw, 100px);
  text-align: center;
}

.contact__tel {
  margin-top: 2.625rem;
}

.contact__tel-link {
  align-items: center;
  color: var(--orange);
  display: inline-flex;
  font-family: var(--poppins-font);
  font-size: 3.125rem;
  font-weight: var(--fw-bold);
  gap: 0.875rem;
  letter-spacing: 0.04em;
  line-height: 1;
}

.contact__tel-link::before {
  aspect-ratio: 1/1;
  background-color: currentColor;
  content: "";
  width: 3.125rem;
  -webkit-mask-image: url(../images/common/icon-phone.svg);
          mask-image: url(../images/common/icon-phone.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: contain;
          mask-size: contain;
  transition: background-color 0.3s ease-out;
}

.contact__text {
  margin-top: 0.375rem;
}

.contact__map {
  margin-top: 2.75rem;
}

.contact__map iframe {
  aspect-ratio: 1000/392;
  border-radius: 3rem;
  object-fit: cover;
}

.contact__logo {
  margin-top: 3.75rem;
  text-align: center;
}

.contact__logo-link {
  display: inline-block;
  transition: filter 0.3s ease-out;
  width: 18.25rem;
}

.contact__logo-link img {
  aspect-ratio: 292/112;
  object-fit: contain;
}
.footer {
  background-image: -webkit-image-set(url(../images/common/bg-footer.avif) type("image/avif"), url(../images/common/bg-footer.png) type("image/png"));
  background-image: image-set(url(../images/common/bg-footer.avif) type("image/avif"), url(../images/common/bg-footer.png) type("image/png"));
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  padding-block: 10.625rem 2rem;
  position: relative;
}

.footer__inner.inner {
  max-width: 49.6875rem;
}

.footer__container {
  align-items: center;
  display: flex;
  gap: 2.5rem;
  justify-content: space-between;
  padding-right: 1.25rem;
}

.footer__logo {
  display: grid;
  gap: 1.5rem;
  transition: opacity 0.3s ease-out;
  width: 16.875rem;
}

.footer__logo-group img {
  object-fit: contain;
}

.footer__logo-company img {
  object-fit: contain;
}

.footer__address {
  font-size: max(12px, 1rem);
  letter-spacing: 0.04em;
  line-height: 2;
  margin-top: 1.375rem;
}

.footer__text + .footer__text {
  margin-top: 1rem;
}

.footer__tel {
  margin-top: 1.625rem;
}

.footer__nav-link {
  align-items: center;
  display: flex;
  font-size: max(14px, 1rem);
  gap: 0.75rem;
  letter-spacing: 0.04em;
  line-height: 1;
  padding-block: 1rem;
  perspective: 800px;
  transition: color 0.3s ease-out;
}

.footer__nav-link::before {
  aspect-ratio: 14/10;
  background-color: var(--red);
  content: "";
  position: relative;
  top: 1px;
  width: 0.875rem;
  -webkit-mask-image: url(../images/common/icon-title.svg);
          mask-image: url(../images/common/icon-title.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: contain;
          mask-size: contain;
  transform-style: preserve-3d;
  transition: background-color 0.3s ease-out;
}

.footer__pagetop {
  --base-color: var(--red);
  --bg-color: var(--white);
  --position-right: max(calc(50/16*1rem), 50/1440*100vw);
  --position-bottom: max(calc(54/16*1rem), 54/1440*100vw);
  aspect-ratio: 1/1;
  background-color: var(--bg-color);
  border: 1px solid var(--base-color);
  border-radius: 50%;
  bottom: var(--position-bottom);
  color: var(--base-color);
  display: grid;
  justify-items: center;
  place-content: center;
  position: absolute;
  right: var(--position-right);
  transition: background-color 0.3s ease-out, color 0.3s ease-out;
  width: 4.375rem;
}

.footer__pagetop:before {
  aspect-ratio: 1/1;
  background-color: currentColor;
  content: "";
  width: 1.375rem;
  -webkit-mask-image: url(../images/common/chevron.svg);
          mask-image: url(../images/common/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;
}

.footer__pagetop span {
  font-family: var(--poppins-font);
  font-size: 1.25rem;
  font-weight: var(--fw-bold);
  letter-spacing: 0.04em;
  line-height: 1;
}

.footer__copyright {
  margin-top: 3.25rem;
  text-align: center;
}

.footer__copyright-text {
  font-family: var(--poppins-font);
  font-size: 12px;
  font-weight: var(--fw-medium);
  letter-spacing: 0.04em;
  line-height: 1;
  text-transform: uppercase;
}
@keyframes kurukuru {
  0% {
    rotate: x 0deg;
  }
  100% {
    rotate: x 360deg;
  }
}
.form .wpcf7-spinner {
  display: none;
}

.form.wpcf7-not-valid-tip {
  font-family: var(--serif-font);
  font-weight: var(--fw-semi-bold);
}

.form .wpcf7-list-item {
  margin-left: initial;
}

.wpcf7 form.sent .wpcf7-response-output {
  border-color: var(--gold3);
}

.grecaptcha-badge {
  visibility: hidden;
}

input:focus-visible,
[type=checkbox]:focus-visible,
[type=radio]:focus-visible,
label:has(input[type=checkbox]):focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 1px solid var(--ocher);
}

.form {
  display: grid;
  font-family: var(--sans-font);
  font-size: 1rem;
  gap: 1.25rem;
  grid-template-columns: 100%;
}

.form__wrap {
  display: grid;
  gap: 0.5rem;
  grid-template-columns: 1fr;
}

.form__label {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  font-family: var(--serif-font);
  font-size: 1.125rem;
  font-weight: var(--fw-semi-bold);
  height: -moz-fit-content;
  height: fit-content;
  row-gap: 0.25rem;
}

.form__note {
  font-size: 1.125rem;
  line-height: 1;
}

.form__wrap:has(input[aria-required=true]) .form__note {
  color: var(--red);
}

.form__input input,
.form__date input,
.form__file {
  background-color: var(--white);
  border: 1px solid;
  border-color: var(--gold3);
  border-radius: 0.25rem;
  padding: 0.8em;
  width: 100%;
}

.form__input input::-moz-placeholder, .form__textarea textarea::-moz-placeholder {
  color: #999;
}

.form__input input::placeholder,
.form__textarea textarea::placeholder {
  color: #999;
}

.form__select select {
  background-color: var(--white);
  border: 1px solid;
  border-color: var(--gold3);
  border-radius: 0.25rem;
  color: var(--black);
  padding: 0.8em;
  width: 33%;
}

.form__select > span:after {
  aspect-ratio: 1/1;
  border-bottom: 2px solid var(--primary);
  border-right: 2px solid var(--primary);
  content: "";
  pointer-events: none;
  position: absolute;
  right: 1em;
  rotate: 45deg;
  top: 50%;
  translate: 0 -50%;
  width: 0.625rem;
}

.form__file-wrap {
  display: grid;
  gap: 0.5rem;
  grid-template-columns: repeat(2, 1fr);
  width: 100%;
}

.form__file {
  display: grid;
  position: relative;
}

.form__file:has(.file__preview img[style="display: block;"]) {
  gap: 1.25rem;
}

.form__file input {
  padding-right: 1.5em;
  width: 100%;
}

.file__preview {
  margin-inline: auto;
  width: min(50%, 15rem);
}

.file__preview img {
  display: none;
  object-fit: contain;
}

.form__remove-button {
  display: none;
  font-size: 1.1em;
  position: absolute;
  right: 0.8em;
  top: 0.9em;
}

.form__date input {
  color: var(--black);
  width: 33%;
  -moz-text-align-last: left;
       text-align-last: left;
}

.form__textarea textarea {
  background-color: var(--white);
  border: 1px solid;
  border-color: var(--gold3);
  border-radius: 0.25rem;
  line-height: 1.5;
  min-height: 12.5rem;
  padding: 0.8em;
  width: 100%;
  field-sizing: content;
  overflow-wrap: anywhere;
  resize: none;
  word-break: keep-all;
}

.form__policy {
  font-family: var(--serif-font);
  margin-inline: auto;
  margin-top: 2.5rem;
  max-width: 37.5rem;
  text-align: center;
}

.form__policy-head {
  font-size: 1.125rem;
  font-weight: var(--fw-bold);
}

.form__policy-text {
  line-height: 2;
  margin-top: 0.75rem;
}

.form__policy-text a {
  text-decoration: underline;
  text-underline-offset: 0.125rem;
  transition: color 0.3s ease;
}

.form__acceptance {
  margin-top: 1.25rem;
  text-align: center;
}

.form__acceptance label {
  align-items: center;
  display: inline-grid;
  gap: 0.5em;
  grid-template-columns: auto 1fr;
  justify-items: center;
}

.form__text {
  font-family: var(--serif-font);
  font-size: 1.125rem;
  font-weight: var(--fw-bold);
}

.form__send {
  background-color: var(--gold);
  border: 1px solid var(--primary);
  margin-inline: auto;
  margin-top: 1.875rem;
  position: relative;
  width: min(100%, 20.625rem);
}

[type=submit] {
  color: var(--white);
  font-family: var(--serif-font);
  font-size: 1.25rem;
  font-weight: var(--fw-semi-bold);
  letter-spacing: 0.05em;
  line-height: 1.65;
  padding-block: 1rem;
  padding-inline: 1em;
  position: relative;
  transition: background-color 0.3s ease;
  width: 100%;
  z-index: 2;
}

.form__send::before {
  background-color: var(--primary);
  clip-path: inset(0 100% 0 0);
  content: "";
  inset: 0;
  position: absolute;
  transition: clip-path 0.3s ease;
  z-index: 1;
}

.form__send::after {
  background-color: var(--white);
  content: "";
  display: block;
  height: 1px;
  pointer-events: none;
  position: absolute;
  right: 1.25rem;
  top: 50%;
  transition: right 0.3s ease;
  translate: 0 -50%;
  width: 3.75rem;
  z-index: 2;
}

.form__recaptcha-note {
  color: var(--gray2);
  font-family: var(--serif-font);
  font-size: 0.75rem;
  margin-top: 6.25rem;
  text-align: center;
}

.form__recaptcha-note a {
  text-decoration: underline;
}

:is(.wpcf7-checkbox, .wpcf7-radio) {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

:is(.form__checkbox, .form__radio) label {
  display: inline-grid;
  gap: 0.375rem;
  grid-template-columns: auto 1fr;
  justify-items: center;
}

.form__radio label {
  place-items: center;
}

.form__checkbox [type=checkbox] {
  position: absolute;
}

label:has(input[type=checkbox])::before {
  aspect-ratio: 1/1;
  background-color: var(--white);
  border: 1px solid;
  border-color: var(--gold3);
  border-radius: 0.1875rem;
  content: "";
  cursor: pointer;
  grid-column: 1/2;
  grid-row: 1/2;
  position: relative;
  width: 1.125rem;
}

label:has(input[type=checkbox]:checked)::after {
  aspect-ratio: 5/8;
  border-bottom: 2px solid var(--primary);
  border-right: 2px solid var(--primary);
  content: "";
  grid-column: 1/2;
  grid-row: 1/2;
  position: relative;
  rotate: 45deg;
  top: -0.125rem;
  width: 0.5rem;
}

.form__radio label::before {
  aspect-ratio: 1/1;
  background-color: var(--white);
  border: 1px solid;
  border-color: color-mix(in srgb, var(--primary) 70%, var(--white));
  border-radius: 50%;
  content: "";
  cursor: pointer;
  grid-column: 1/2;
  grid-row: 1/2;
  width: 0.9375rem;
}

.form__radio label:has(input:checked)::after {
  aspect-ratio: 1/1;
  background-color: var(--primary);
  border-radius: 50%;
  content: "";
  grid-column: 1/2;
  grid-row: 1/2;
  position: relative;
  width: 0.625rem;
}
@keyframes repeatLine {
  0% {
    clip-path: inset(0 0 0 0);
  }
  33% {
    clip-path: inset(0 0 0 100%);
  }
  66% {
    clip-path: inset(0 100% 0 0);
  }
  100% {
    clip-path: inset(0 0 0 0);
  }
}
.header {
  background-color: var(--ivory);
  height: var(--header-height);
  inset-inline: 0;
  position: sticky;
  top: 0;
  transition: background-color 0.3s ease-out, height 0.3s ease-out;
  z-index: var(--z-index-header);
}

.header.is-scrolled {
  height: 5rem;
}

.header__inner.inner {
  height: inherit;
  max-width: 2200px;
  padding-inline: 4.8611111111%;
}

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

.header__logo {
  align-items: center;
  display: flex;
  gap: 2rem;
  height: inherit;
  transition: opacity 0.3s ease-out, width 0.3s ease-out;
  width: min(40.9230769231%, 532px);
}

.header.is-scrolled .header__logo {
  width: 24.875rem;
}

.header__logo-group {
  align-items: center;
  display: grid;
  height: inherit;
  width: 28.1954887218%;
}

.header.is-scrolled .header__logo-group {
  width: 27.6381909548%;
}

.header__logo-group img {
  object-fit: contain;
}

.header__logo-company {
  align-items: center;
  display: grid;
  flex: 1;
  height: inherit;
}

.header__logo-company img {
  object-fit: contain;
}

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

.header__nav-item {
  height: inherit;
}

.header__nav-link {
  align-items: center;
  display: grid;
  height: inherit;
  padding-inline: 1.5625rem;
}

.header__nav-text {
  color: transparent;
  display: inline-block;
  font-size: max(12px, 0.9375rem);
  font-weight: var(--fw-bold);
  letter-spacing: 0.04em;
  overflow: clip;
  text-shadow: 0 -1.5em 0 var(--brown), 0 0 0 var(--brown);
  transition: text-shadow 0.3s ease-out;
}

.header__tel {
  margin-left: 1.5625rem;
}

.header__hamburger {
  display: none;
}

.header__hamburger-line,
.header__hamburger-line::before,
.header__hamburger-line::after {
  background-color: var(--base-color);
  height: 0.09375rem;
  transition: background-color 0.3s ease-out, rotate 0.3s ease-out, top 0.3s ease-out;
  width: var(--line-width);
}

.header__hamburger-line {
  position: relative;
}

.header__hamburger-line::before,
.header__hamburger-line::after {
  content: "";
  left: 0;
  position: absolute;
}

.header__hamburger-line::before {
  top: -0.375rem;
}

.header__hamburger-line::after {
  top: 0.375rem;
}

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

.header__hamburger.is-open .header__hamburger-line::before {
  left: -0.0625rem;
  rotate: 45deg;
  top: 0.0625rem;
  width: var(--close-line-width);
}

.header__hamburger.is-open .header__hamburger-line::after {
  left: -0.0625rem;
  rotate: -45deg;
  top: 0.0625rem;
  width: var(--close-line-width);
}

.header__drawer {
  display: none;
}

.header__drawer.is-open {
  --top-position: var(--header-height);
  background-color: var(--ivory);
  opacity: 1;
  visibility: visible;
}

.header.is-scrolled .header__drawer.is-open {
  --top-position: calc(var(--header-height) * 0.8);
}

.header__drawer-wrapper {
  --before-height: calc(26/16*1rem);
  background-color: var(--bg-red);
  display: grid;
  padding-block: 3.25rem max(19.2vw, 72px);
  position: relative;
  scrollbar-width: none;
  transition: translate 0.4s ease-out;
  translate: 0 calc(-100% - var(--before-height));
}

.header__drawer.is-open .header__drawer-wrapper {
  translate: 0 0;
}

.header__drawer-wrapper::before {
  background-color: inherit;
  bottom: 0;
  content: "";
  height: 1.625rem;
  inset-inline: 0;
  position: absolute;
  translate: 0 100%;
  -webkit-mask-image: url(../images/common/bg-drawer.svg);
          mask-image: url(../images/common/bg-drawer.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: 100% 100%;
          mask-size: 100% 100%;
}

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

.header__drawer-inner.inner {
  padding-inline: 2.5rem;
}

.header__drawer-link {
  align-items: center;
  border-bottom: 1px solid;
  color: var(--white);
  display: grid;
  font-size: 1rem;
  gap: 1.25rem;
  grid-template-columns: 1.75rem 1fr;
  letter-spacing: 0.14em;
  line-height: 1.625;
  padding: 1.25rem 1rem;
}

.header__drawer-link-icon {
  filter: brightness(0) invert(1);
}

.header__drawer-link-icon img {
  aspect-ratio: 1/1;
  height: 100%;
  object-fit: contain;
  width: 100%;
}

.header__drawer-link-wrap {
  display: grid;
  font-weight: var(--fw-bold);
  gap: 0.25rem;
  letter-spacing: 0.04em;
  line-height: 1;
}

.header__drawer-link-en {
  font-family: var(--poppins-font);
  font-size: 1.75rem;
  text-transform: uppercase;
}

.header__drawer-link-ja {
  font-size: 0.875rem;
}

.header__drawer-tel {
  margin-top: 3.5rem;
  text-align: center;
}
.intro__inner.inner {
  text-align: center;
}

.intro__title {
  font-weight: var(--fw-bold);
}

.intro__title > span {
  display: inline-block;
  opacity: 0;
}

.intro__text {
  font-feature-settings: "pwid";
  font-size: 1.25rem;
  font-weight: var(--fw-medium);
  letter-spacing: 0.04em;
  line-height: 2;
  margin-top: 3.5rem;
}

.loader {
  animation: fadeOut 0.8s ease-in-out forwards;
  animation-delay: 2.8s;
  background-color: var(--ivory);
  display: none;
  inset: 0;
  place-items: center;
  position: fixed;
  z-index: var(--z-index-loader);
}

.loader::after {
  background-color: inherit;
  content: "";
  height: 8.75rem;
  inset-inline: 0;
  position: absolute;
  -webkit-mask-image: url(../images/common/wave.svg);
          mask-image: url(../images/common/wave.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: 100% 100%;
          mask-size: 100% 100%;
}

.loader::after {
  bottom: 1px;
  scale: -1;
  translate: 0 100%;
}

.loader__inner {
  align-items: center;
  animation: kororin 1.2s ease-out forwards;
  display: flex;
  gap: 1.5rem;
  width: 33%;
}

.loader__item {
  animation: bounce, itemOut;
  animation-duration: 1.4s, 0.7s;
  animation-fill-mode: none, forwards;
  animation-iteration-count: infinite, 1;
  animation-timing-function: ease-in-out, ease-out;
  width: auto;
}

.loader__item:nth-child(1) {
  animation-delay: 0s, 1.7s;
}

.loader__item:nth-child(2) {
  animation-delay: 0.15s, 1.9s;
}

.loader__item:nth-child(3) {
  animation-delay: 0.3s, 2.1s;
}

.loader__item:nth-child(4) {
  animation-delay: 0.45s, 2.3s;
}

.loader__item img {
  object-fit: contain;
}

@keyframes kororin {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
@keyframes itemOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
@keyframes bounce {
  0%, 100% {
    transform: translateY(0) scale(1);
  }
  20% {
    transform: translateY(0.625rem) scale(1.02, 0.98);
  }
  40% {
    transform: translateY(-0.75rem) scale(0.96, 1.02);
  }
  60% {
    transform: translateY(0.375rem) scale(1.02, 0.96);
  }
  80% {
    transform: translateY(0) scale(1);
  }
}
@keyframes fadeOut {
  0% {
    opacity: 1;
    translate: 0 0;
  }
  100% {
    opacity: 0;
    translate: 0 -100%;
  }
}
.loop-text {
  display: flex;
  overflow-x: clip;
  white-space: nowrap;
}

.loop-text__wrap {
  animation: loop 20s linear infinite;
  display: flex;
}

.loop-text__text {
  color: var(--cream);
  font-family: var(--poppins-font);
  font-size: 9.125rem;
  font-weight: var(--fw-bold);
  letter-spacing: 0.06em;
  line-height: 1.3;
  margin-right: 0.5em;
  text-transform: uppercase;
}

@keyframes loop {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-100%);
  }
}
.message {
  overflow-x: clip;
}

.message__inner.inner-small {
  max-width: 65.625rem;
}

.message__container {
  background-color: var(--cream);
  border-radius: 1rem;
  filter: drop-shadow(0 0.125rem 0.625rem rgba(80, 69, 23, 0.15));
  padding: 4.375rem 3.125rem;
  position: relative;
}

.message__en {
  left: calc(50% - 35.75rem);
  position: absolute;
  rotate: -7deg;
  top: -2.1875rem;
  width: 26.8125rem;
}

.message__en svg {
  aspect-ratio: 429/140;
  object-fit: contain;
  width: 100%;
}

.message__en-text {
  -webkit-mask: url(#message-line);
          mask: url(#message-line);
  fill: var(--yellow);
}

.message__en-line {
  fill: none;
  stroke: var(--white);
  stroke-width: 1.25rem;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 2800;
  stroke-dashoffset: 2800;
}

.message__en-line {
  --custom-ease: cubic-bezier(.35, .14, .24, .88);
}

.message__text-wrap {
  display: grid;
  gap: 1.5rem;
  margin-top: 3.75rem;
}

.message__text {
  font-feature-settings: "pwid";
  font-size: 1.125rem;
  letter-spacing: 0.04em;
  line-height: 2.5;
}

.message__sign {
  align-items: flex-end;
  display: flex;
  gap: 1.5rem;
  justify-content: flex-end;
  margin-top: 2rem;
}

.message__small {
  font-size: 1rem;
  letter-spacing: 0.04em;
  line-height: 1;
}

.message__name {
  width: 8.8125rem;
}

.message__name img {
  object-fit: contain;
}

.mv__inner.inner {
  max-width: 2200px;
  padding-inline: 4.8611111111%;
}

.mv__container {
  --column-left: calc(553/1300*100%);
  --column-right: 1fr;
  --row-top: calc(478/763*100%);
  --row-bottom: 1fr;
  aspect-ratio: 1300/763;
  display: grid;
  grid-template-columns: var(--column-left) var(--column-right);
  grid-template-rows: var(--row-top) var(--row-bottom);
  position: relative;
  width: 100%;
}

.mv__slider {
  grid-column: 1/-1;
  grid-row: 1/-1;
  width: 100%;
  -webkit-mask-image: url(../images/top/mv-mask.svg);
          mask-image: url(../images/top/mv-mask.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: 100% 100%;
          mask-size: 100% 100%;
  opacity: 0;
}

.mv__slide.swiper-slide-active .mv__slide-img img,
.mv__slide.swiper-slide-duplicate-active .mv__slide-img img,
.mv__slide.swiper-slide-prev .mv__slide-img img {
  animation: zoomUp 8s linear both;
}

.mv__slide-img {
  display: block;
  height: 100%;
}

.mv__slide-img img {
  aspect-ratio: 1300/763;
  height: 100%;
  object-fit: cover;
}

.mv__catch {
  display: inline-grid;
  grid-column: 1/2;
  grid-row: 2/3;
  grid-template-columns: repeat(2, auto);
  -moz-column-gap: 2.2222222222vw;
  align-content: start;
       column-gap: 2.2222222222vw;
  justify-content: center;
  opacity: 0;
  padding-inline: min(4.8611111111vw, 70px) 1.25rem;
  padding-top: 1.75rem;
  row-gap: 2px;
}

:is(.mv__catch-text1, .mv__catch-text2) {
  font-size: min(3.4722222222vw, 60px);
  font-weight: var(--fw-bold);
  letter-spacing: 0.04em;
  line-height: 1.8;
}

.mv__catch-text1 {
  grid-column: 1/-1;
}

.mv__catch-text2 {
  align-self: end;
  line-height: 1;
}

.mv__catch-main {
  align-items: flex-start;
  display: inline-flex;
  padding-left: 0.375rem;
}

.mv__catch-main::before,
.mv__catch-main::after {
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  content: "";
  position: relative;
}

.mv__catch-main::before {
  aspect-ratio: 27/44;
  background-image: url(../images/top/kakko1.svg);
  height: inherit;
  margin-right: 1.1805555556vw;
  top: 0.8125rem;
  width: 1.875vw;
}

.mv__catch-main::after {
  align-self: flex-end;
  aspect-ratio: 23/46;
  background-image: url(../images/top/kakko2.svg);
  bottom: -0.75rem;
  height: inherit;
  margin-left: 1.9444444444vw;
  width: 1.5972222222vw;
}

.mv__catch-main-img {
  display: block;
  width: 7.9861111111vw;
}

.mv__catch-main-img img {
  aspect-ratio: 115/111;
  height: 100%;
  object-fit: cover;
  width: 100%;
}

.outer {
  --scrollbar: calc(100vw - 100cqw);
  min-height: 100vh;
}

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

.overview__inner.inner-small {
  max-width: 53.125rem;
}

.overview__list {
  align-items: center;
  display: grid;
  gap: 1.25rem 1rem;
  grid-template-columns: max(160px, 24.6010638298%) 1fr;
  margin-top: 3.75rem;
}

.overview__item {
  border-bottom: 1px solid #ddd;
  display: grid;
  grid-column: span 2;
  grid-template-columns: subgrid;
  padding-bottom: 1.1875rem;
  padding-inline: 1rem;
}

:is(.overview__term, .overview__desc) {
  font-size: max(14px, 1rem);
  letter-spacing: 0.04em;
  line-height: 1.7;
}

.overview__term {
  font-weight: var(--fw-bold);
}

.overview__desc {
  font-weight: var(--fw-regular);
}

.product__inner.inner {
  max-width: initial;
  padding-inline: initial;
}

.product__container {
  --padding-inline: var(--padding-pc);
  --side: minmax(var(--padding-inline), 1fr);
  --content: minmax(0, 600px);
  align-items: center;
  display: grid;
  grid-template-columns: var(--side) repeat(2, var(--content)) var(--side);
  margin-top: 1.875rem;
}

.product__content {
  display: grid;
  gap: 3rem;
  grid-column: 2/3;
  padding-top: 1.875rem;
}

.product__lead {
  font-size: 2.25rem;
  font-weight: var(--fw-semibold);
  letter-spacing: 0.04em;
  line-height: 1.6;
}

.product__slider-container {
  display: grid;
  grid-column: span 2;
  grid-template-columns: subgrid;
  overflow-x: clip;
  position: relative;
  width: 100%;
}

.product__en {
  position: absolute;
  right: calc(50% - 23.0555555556vw);
  rotate: -7deg;
  top: -4.75rem;
  width: min(36.5972222222vw, 32.9375rem);
  z-index: 2;
}

.product__en svg {
  aspect-ratio: 527/146;
  object-fit: contain;
  width: 100%;
}

.product__en-text {
  -webkit-mask: url(#product-line);
          mask: url(#product-line);
  fill: var(--yellow);
}

.product__en-line {
  fill: none;
  stroke: var(--white);
  stroke-width: 3.125rem;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 3600;
  stroke-dashoffset: 3600;
}

.product__en-line {
  --custom-ease: cubic-bezier(.24, .2, .8, .88);
}

.product__slider {
  grid-column: 1/-1;
  overflow: visible;
  padding-block: 1.875rem;
  width: 100%;
}

.product__slide {
  width: 24.75rem;
}

.product__img img {
  aspect-ratio: 396/462;
  border-radius: 4rem;
  filter: drop-shadow(0 0.125rem 0.9375rem rgba(80, 69, 23, 0.15));
  height: 100%;
  object-fit: cover;
}

.product__buttons {
  display: flex;
  gap: 3.75rem;
  justify-content: flex-end;
  margin-top: 1.125rem;
  position: relative;
}

.product__buttons * {
  --base-color: var(--red);
  --bg-color: var(--white);
  height: initial;
  inset: initial;
  margin: initial;
  position: relative;
}

:is(.product__button-prev, .product__button-next) {
  aspect-ratio: 1/1;
  background-color: var(--bg-color);
  border: 1px solid var(--base-color);
  border-radius: 50%;
  transition: background-color 0.3s ease-out;
  width: 3.75rem;
}

.product__button-prev::after,
.product__button-next::after {
  aspect-ratio: 1/1;
  background-color: var(--base-color);
  content: "";
  width: 55%;
  -webkit-mask-image: url(../images/common/arrow.svg);
          mask-image: url(../images/common/arrow.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: contain;
          mask-size: contain;
  transition: background-color 0.3s ease-out;
}

.product__button-prev::after {
  scale: -1;
}
.section-common__text {
  font-size: 1.5rem;
  letter-spacing: 0.04em;
  line-height: 2;
  margin-top: 3.75rem;
  text-align: center;
}

.section-common__text .color-orange {
  font-weight: var(--fw-bold);
}

.section-title {
  --base-color: var(--red);
  display: grid;
  font-size: 1.75rem;
  font-weight: var(--fw-bold);
  gap: 0.625rem;
  letter-spacing: 0.15em;
  line-height: 1;
  place-items: center;
}

.section-title::before {
  aspect-ratio: 19/14;
  background-color: var(--base-color);
  content: "";
  width: 1.1875rem;
  -webkit-mask-image: url(../images/common/icon-title.svg);
          mask-image: url(../images/common/icon-title.svg);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-size: contain;
          mask-size: contain;
}

.section-title--en {
  font-size: 1.5rem;
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
}

.section-title--white {
  --base-color: var(--white);
  color: var(--base-color);
}

.service {
  container-type: inline-size;
  overflow-x: clip;
  position: relative;
}

.service::before {
  aspect-ratio: 230/182;
  background-image: -webkit-image-set(url(../images/common/pancake.avif) type("image/avif"), url(../images/common/pancake.png) type("image/png"));
  background-image: image-set(url(../images/common/pancake.avif) type("image/avif"), url(../images/common/pancake.png) type("image/png"));
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  content: "";
  filter: drop-shadow(0 1px 0.4375rem rgba(76, 13, 13, 0.15));
  position: absolute;
  right: calc(50% - min(48.6111111111vw, 900px));
  rotate: 9deg;
  top: -6.5rem;
  width: 14.375rem;
}

.service__container {
  align-items: center;
  display: flex;
  gap: min(6.1111111111vw, 88px);
  margin-top: 3.75rem;
}

.service__img {
  filter: drop-shadow(0 0.125rem 0.9375rem rgba(76, 13, 13, 0.15));
  flex: 1;
  margin-left: calc(50% - 50cqi);
  position: relative;
}

.service__img img {
  --radius: calc(48/16*1rem);
  aspect-ratio: 600/343;
  border-bottom-right-radius: var(--radius);
  border-top-right-radius: var(--radius);
  object-fit: cover;
}

.service__en {
  left: 50.5%;
  position: absolute;
  rotate: -7deg;
  top: -7.375rem;
  translate: -50% 0;
  width: 23.375rem;
}

.service__en svg {
  aspect-ratio: 375/139;
  object-fit: contain;
  width: 100%;
}

.service__en-text {
  -webkit-mask: url(#service-line);
          mask: url(#service-line);
  fill: var(--yellow);
}

.service__en-line {
  fill: none;
  stroke: var(--white);
  stroke-width: 1rem;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 2400;
  stroke-dashoffset: 2400;
}

.service__en-line {
  --custom-ease: cubic-bezier(.12, .9, .34, .99);
}

.service__content {
  color: var(--white);
  display: grid;
  gap: 3rem;
  width: min(100%, 39.5rem);
}

.service__lead {
  font-weight: var(--fw-semibold);
}

.sub-mv__inner.inner-large {
  max-width: clamp(1250px, 86.8055555556vw, 1800px);
}

.sub-mv__container {
  display: grid;
  gap: 1.75rem;
}

.sub-mv__title {
  display: grid;
  gap: 1rem;
}

.sub-mv__en {
  color: var(--red);
  font-family: var(--poppins-font);
  font-size: 6.25rem;
  font-weight: var(--fw-semibold);
  letter-spacing: 0.07em;
  line-height: 1;
  text-transform: uppercase;
}

.sub-mv__ja {
  font-size: max(16px, 1.25rem);
  font-weight: var(--fw-bold);
  letter-spacing: 0.15em;
  line-height: 1;
}

.sub-mv__breadcrumbs {
  --gap: calc(11/16*1rem);
  align-items: center;
  display: flex;
  gap: var(--gap);
  justify-content: flex-end;
  margin-inline: auto;
  padding-inline: min(6.9444444444vw, 100px);
  width: 100%;
}

.sub-mv__breadcrumbs-item {
  align-items: center;
  display: flex;
  gap: var(--gap);
  position: relative;
}

.sub-mv__breadcrumbs-item:not(:last-child)::after {
  aspect-ratio: 1/1;
  background-color: #B5B5B5;
  content: "";
  display: block;
  width: 16px;
  -webkit-mask-image: url(../images/common/chevron.svg);
          mask-image: url(../images/common/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;
  rotate: 90deg;
}

.sub-mv__breadcrumbs-home {
  display: grid;
  transition: filter 0.3s ease;
  width: 16px;
}

.sub-mv__breadcrumbs-home img {
  aspect-ratio: 1/1;
  object-fit: contain;
}

.sub-mv__breadcrumbs-current {
  font-size: 14px;
  font-weight: var(--fw-bold);
  letter-spacing: 0.04em;
  line-height: 1;
}

.sub-mv__img {
  animation: fade 0.6s ease-out forwards;
  opacity: 0;
}

@keyframes fade {
  100% {
    opacity: 1;
  }
}
.sub-mv__img img {
  aspect-ratio: 1200/480;
  border-radius: 3.75rem;
  object-fit: cover;
}
.sub-product__inner {
  --padding-inline: var(--padding-pc);
  --side: minmax(var(--padding-inline), 1fr);
  --content: min(720/1440*100%, 1200px);
  --img: 4fr;
  --padding-block: calc(80/16*1rem);
  align-items: center;
  display: grid;
  grid-template-columns: var(--side) var(--content) var(--img) var(--side);
  grid-template-rows: var(--padding-block) repeat(2, auto) var(--padding-block);
  position: relative;
}

.sub-product__inner::before {
  --radius: calc(60/16*1rem);
  background-color: var(--cream);
  border-bottom-right-radius: var(--radius);
  border-top-right-radius: var(--radius);
  content: "";
  grid-column: 1/4;
  grid-row: 1/-1;
  inset: 0;
  position: absolute;
}

.sub-product__en {
  left: calc(50% - min(46.3888888889vw, 1000px));
  position: absolute;
  rotate: -7deg;
  top: -2.25rem;
  width: min(36.5972222222vw, 740px);
  z-index: 1;
}

.sub-product__en svg {
  aspect-ratio: 527/146;
  object-fit: contain;
  width: 100%;
}

.sub-product__en-text {
  -webkit-mask: url(#product-line);
          mask: url(#product-line);
  fill: var(--yellow);
}

.sub-product__en-line {
  fill: none;
  stroke: var(--white);
  stroke-width: 3.125rem;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 3600;
  stroke-dashoffset: 3600;
}

.sub-product__en-line {
  --custom-ease: cubic-bezier(.24, .2, .8, .88);
}

.sub-product__img {
  filter: drop-shadow(0 0.125rem 0.9375rem rgba(76, 13, 13, 0.15));
  grid-column: 3/-1;
  grid-row-start: 2;
  position: relative;
}

.sub-product__img img {
  --radius: calc(48/16*1rem);
  aspect-ratio: 600/395;
  border-bottom-left-radius: var(--radius);
  border-top-left-radius: var(--radius);
  object-fit: cover;
}

.sub-product__content {
  grid-column: 1/3;
  grid-row-start: 2;
  justify-self: end;
  padding-inline: 5.2083333333vw;
  position: relative;
}

.sub-product__title {
  font-weight: var(--fw-bold);
}

.sub-product__text {
  margin-top: 3rem;
  min-width: 34.0625rem;
}

.sub-product__list {
  display: grid;
  gap: 1.5rem;
  grid-column: 1/4;
  grid-row-start: 3;
  grid-template-columns: repeat(5, minmax(0, 200px));
  justify-content: center;
  margin-top: 3.125rem;
  padding-inline: min(3.8888888889vw, 56px) 2.5rem;
  position: relative;
}

.sub-product__item {
  display: grid;
  gap: 1.5rem;
  place-items: center;
}

.sub-product__item-img {
  display: grid;
  place-items: center;
}

.sub-product__item-img img {
  aspect-ratio: 1/1;
  border-radius: 50%;
  filter: drop-shadow(0 0.125rem 0.9375rem rgba(76, 13, 13, 0.15));
  object-fit: cover;
}

.sub-product__item-caption {
  font-size: 1.125rem;
  letter-spacing: 0.04em;
  line-height: 1.7;
  text-align: center;
}

.sub-service__inner {
  --padding-inline: var(--padding-pc);
  --side: minmax(var(--padding-inline), 1fr);
  --img: 4fr;
  --content: min(720/1440*100%, 1200px);
  --padding-block: calc(80/16*1rem);
  align-items: center;
  display: grid;
  grid-template-columns: var(--side) var(--img) var(--content) var(--side);
  grid-template-rows: var(--padding-block) repeat(2, auto) var(--padding-block);
  position: relative;
}

.sub-service__inner::before {
  --radius: calc(60/16*1rem);
  background-color: var(--bg-red);
  border-bottom-left-radius: var(--radius);
  border-top-left-radius: var(--radius);
  content: "";
  grid-column: 2/-1;
  grid-row: 1/-1;
  inset: 0;
  position: absolute;
}

.sub-service__en {
  position: absolute;
  right: calc(50% - min(45.1388888889vw, 800px));
  rotate: -7deg;
  top: -28px;
  width: clamp(230px, 25.9722222222vw, 600px);
  z-index: 1;
}

.sub-service__en svg {
  aspect-ratio: 375/139;
  object-fit: contain;
  width: 100%;
}

.sub-service__en-text {
  -webkit-mask: url(#service-line);
          mask: url(#service-line);
  fill: var(--yellow);
}

.sub-service__en-line {
  fill: none;
  stroke: var(--white);
  stroke-width: 1rem;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 2400;
  stroke-dashoffset: 2400;
}

.sub-service__en-line {
  --custom-ease: cubic-bezier(.12, .9, .34, .99);
}

.sub-service__img {
  filter: drop-shadow(0 0.125rem 0.9375rem rgba(76, 13, 13, 0.15));
  grid-column: 1/3;
  grid-row-start: 2;
  position: relative;
}

.sub-service__img img {
  --radius: calc(48/16*1rem);
  aspect-ratio: 600/395;
  border-bottom-right-radius: var(--radius);
  border-top-right-radius: var(--radius);
  object-fit: cover;
}

.sub-service__content {
  color: var(--white);
  grid-column: 3/-1;
  grid-row-start: 2;
  max-width: clamp(695px, 48.2638888889vw, 1030px);
  padding-inline: min(5.2083333333vw, 75px);
  position: relative;
}

.sub-service__title {
  font-weight: var(--fw-bold);
}

.sub-service__text {
  margin-top: 3rem;
}

.sub-service__list {
  display: grid;
  gap: 4rem;
  grid-column: 2/-1;
  grid-row-start: 3;
  grid-template-columns: repeat(3, 12.5rem);
  justify-content: center;
  margin-top: 3.125rem;
  position: relative;
}

.sub-service__item {
  display: grid;
  gap: 1.5rem;
  place-items: center;
}

.sub-service__item-img-wrap {
  aspect-ratio: 1/1;
  background-color: var(--white);
  border-radius: 50%;
  display: grid;
  filter: drop-shadow(0 0.125rem 0.9375rem rgba(76, 13, 13, 0.15));
  place-items: center;
  width: 100%;
}

.sub-service__item-img {
  width: 62%;
}

.sub-service__item-img img {
  aspect-ratio: 1/1;
  object-fit: contain;
}

.sub-service__item-caption {
  color: var(--white);
  font-size: 1.125rem;
  letter-spacing: 0.04em;
  line-height: 1.7;
  text-align: center;
}

.text {
  font-size: max(12px, 1rem);
  letter-spacing: 0.04em;
  line-height: 2;
}

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

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

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

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

.js-pon::before,
.js-pon::after {
  opacity: 0;
  scale: 0.7;
  translate: 0 30%;
}

.js-pon.is-scrolled::before,
.js-pon.is-scrolled::after {
  --ease: cubic-bezier(.3, .57, .12, 1.51);
  animation: pon 0.5s var(--ease) forwards;
}

.js-pon.is-scrolled::after {
  animation-delay: 0.3s;
}

@keyframes pon {
  100% {
    opacity: 1;
    scale: 1;
    translate: 0 0;
  }
}
.js-shoku.is-animated {
  animation: piko 0.6s linear forwards;
}

@keyframes piko {
  0% {
    rotate: 0deg;
  }
  20% {
    rotate: -4deg;
  }
  40% {
    rotate: 4deg;
  }
  60% {
    rotate: -4deg;
  }
  80% {
    rotate: 4deg;
  }
  100% {
    rotate: 0deg;
  }
}
.js-service-en.is-animated {
  animation: drawLine 5.2s var(--custom-ease) forwards;
}

.js-product-en.is-animated {
  animation: drawLine 1.2s var(--custom-ease) forwards;
}

.js-message-en.is-animated {
  animation: drawLine 1.7s var(--custom-ease) forwards;
}

@keyframes drawLine {
  100% {
    stroke-dashoffset: 0;
  }
}
@keyframes zoomUp {
  0% {
    transform: scale3d(1, 1, 1);
  }
  100% {
    transform: scale3d(1.2, 1.2, 1.2);
  }
}
.color-orange {
  color: var(--orange);
}

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

.pc-only {
  display: block;
}

.sp-only {
  display: none;
}

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

@media (min-width: 768px){
  a[href^="tel:"] {
    pointer-events: none;
  }
}

@media (max-width: 1200px){
  html {
    font-size: calc(16 / var(--inner-value) * 100vw);
  }
}

@media screen and (max-width: 767px){
  :root {
    --header-height: calc(65/16*1rem);
  }
  html {
    scroll-padding-top: calc(var(--header-height) + 10.6666666667vw);
  }
  html {
    font-size: 16px;
  }
  .inner {
    max-width: 600px;
    padding-inline: var(--padding-sp);
  }
  .inner-large {
    max-width: 600px;
    padding-inline: var(--padding-sp);
  }
  .inner-small {
    max-width: 600px;
    padding-inline: var(--padding-sp);
  }
  .l-about {
    gap: 5rem;
    margin-top: 5rem;
    padding-block: 3.75rem;
  }
  .l-company-contact {
    margin-top: 8.75rem;
  }
  .l-contact {
    margin-top: 4rem;
  }
  .l-intro {
    margin-top: 3.75rem;
  }
  .l-loop-text {
    margin-top: 3.125rem;
  }
  .l-message {
    margin-top: 3.75rem;
  }
  .l-product {
    margin-top: 6.25rem;
  }
  .l-service-contact {
    margin-top: 7.5rem;
  }
  .l-sub-common {
    margin-top: 5rem;
  }
  .l-sub-mv {
    margin-top: 3.75rem;
  }
  .l-sub-product {
    margin-top: clamp(3.75rem, 16vw, 90px);
  }
  .l-sub-service {
    margin-top: min(21.3333333333vw, 100px);
  }
  .wave::before,
  .wave::after {
    height: 3.125rem;
  }
  .about::before {
    top: -7.5rem;
    width: min(17.0666666667vw, 80px);
  }
  .about__lead {
    margin-top: 2rem;
  }
  .about__text {
    margin-top: 2rem;
    word-break: keep-all;
  }
  .button-tel::before {
    width: 1.25rem;
  }
  .button-tel__text {
    font-size: 1.25rem;
  }
  .button {
    font-size: 1rem;
    min-width: 18.75rem;
    padding: 0.75rem 1.5rem;
  }
  .button::before {
    width: 1.625rem;
  }
  .contact {
    padding-block: 3rem;
  }
  .contact__inner::before {
    left: 0;
    top: -1.5rem;
    width: min(32vw, 150px);
  }
  .contact__inner::after {
    bottom: 4rem;
    right: 0;
    width: min(21.3333333333vw, 100px);
  }
  .contact__container {
    border-radius: 2.5rem;
    padding: 2.5rem 1.25rem;
  }
  .contact__tel {
    margin-top: 2rem;
  }
  .contact__tel-link {
    font-size: 1.75rem;
    gap: 0.625rem;
  }
  .contact__tel-link::before {
    width: 1.75rem;
  }
  .contact__map {
    margin-top: 2rem;
  }
  .contact__map iframe {
    aspect-ratio: 295/174;
    border-radius: 1.5rem;
    max-height: 16.25rem;
  }
  .contact__logo {
    margin-top: 2.5rem;
  }
  .contact__logo-link {
    width: 11.25rem;
  }
  .footer {
    background-image: -webkit-image-set(url(../images/common/bg-footer-sp.avif) type("image/avif"), url(../images/common/bg-footer-sp.png) type("image/png"));
    background-image: image-set(url(../images/common/bg-footer-sp.avif) type("image/avif"), url(../images/common/bg-footer-sp.png) type("image/png"));
    background-position: left top;
    background-repeat: repeat;
    background-size: 18.75rem 18.75rem;
    padding-top: 7.5rem;
  }
  .footer__inner.inner {
    max-width: 600px;
  }
  .footer__container {
    flex-direction: column;
    padding-right: initial;
  }
  .footer__logo {
    gap: 1rem;
    width: 15rem;
  }
  .footer__address {
    font-size: 1rem;
  }
  .footer__nav-link {
    font-size: 1rem;
  }
  .footer__pagetop {
    --position-right: max(calc(20/16*1rem), 20/1440*100vw);
    --position-bottom: max(calc(30/16*1rem), 30/1440*100vw);
    width: 3rem;
  }
  .footer__pagetop:before {
    width: 1rem;
  }
  .footer__pagetop span {
    font-size: 0.875rem;
  }
  .footer__copyright {
    margin-top: 2.5rem;
  }
  .form__label {
    font-size: 1rem;
  }
  .form__note {
    font-size: 1rem;
  }
  .form__select select {
    width: min(100%, 20.625rem);
  }
  .form__select > span:after {
    width: 0.75rem;
  }
  .form__file-wrap {
    grid-template-columns: 1fr;
  }
  .form__file:has(.file__preview img[style="display: block;"]) {
    gap: 0.625rem;
  }
  .form__date input {
    width: min(100%, 20.625rem);
  }
  .form__textarea textarea {
    min-height: 15rem;
  }
  .form__policy {
    max-width: 33.4375rem;
    text-align: left;
  }
  .form__policy-head {
    text-align: center;
  }
  .form__policy-text {
    line-height: 1.8;
  }
  .form__acceptance label {
    gap: 0.5em;
  }
  [type=submit] {
    font-size: 1.125rem;
  }
  .form__send::after {
    right: 1.5rem;
    width: 2.5rem;
  }
  .form__recaptcha-note {
    overflow-wrap: anywhere;
    word-break: keep-all;
  }
  :is(.wpcf7-checkbox, .wpcf7-radio) {
    gap: 1rem;
  }
  :is(.form__checkbox, .form__radio) label {
    gap: 0.5rem;
  }
  .form__radio label::before {
    width: 1.125rem;
  }
  .form__radio label:has(input:checked)::after {
    width: 0.75rem;
  }
  .header.is-scrolled {
    height: calc(var(--header-height) * 0.8);
  }
  .header__inner.inner {
    padding-inline: var(--padding-sp);
  }
  .header__logo {
    gap: 0.875rem;
    width: auto;
  }
  .header.is-scrolled .header__logo {
    width: auto;
  }
  .header__logo-group {
    width: 4rem;
  }
  .header.is-scrolled .header__logo-group {
    width: 4rem;
  }
  .header__logo-company {
    flex: initial;
    width: 9.625rem;
  }
  .header__nav {
    display: none;
  }
  .header__tel {
    display: none;
  }
  .header__hamburger {
    --base-color: var(--red);
    --line-width: calc(17/16*1rem);
    --close-line-width: calc(20/16*1rem);
    aspect-ratio: 1/1;
    border-color: var(--base-color);
    border-radius: 50%;
    display: grid;
    margin-left: auto;
    place-content: center;
    transition: rotate 0.4s ease-out;
    width: 2.4375rem;
  }
  .header__drawer {
    --top-position: var(--header-height);
    background-color: transparent;
    display: block;
    inset: var(--top-position) 0 0;
    opacity: 0;
    overflow-y: auto;
    position: fixed;
    transition: background-color 0.3s ease-out, opacity 0.3s ease-out, visibility 0.3s ease-out;
    visibility: hidden;
  }
  .intro__text {
    font-size: 1rem;
    margin-top: 1.5rem;
  }
  .loader::after {
    height: 3.125rem;
  }
  .loader__inner {
    gap: 0.75rem;
    padding-left: 1rem;
    width: 70%;
  }
  .loop-text__text {
    font-size: 4.5rem;
  }
  .message__inner.inner-small {
    max-width: 600px;
  }
  .message__container {
    padding-block: 3.75rem 3.125rem;
    padding-inline: 4.2666666667vw;
  }
  .message__en {
    left: 4%;
    top: -1.875rem;
    width: min(58.6666666667vw, 240px);
  }
  .message__text-wrap {
    margin-top: 2.5rem;
  }
  .message__text {
    font-size: 0.9375rem;
    line-height: 2;
  }
  .message__sign {
    gap: 1.25rem;
    margin-top: 2.5rem;
  }
  .message__small {
    font-size: 0.9375rem;
  }
  .message__name {
    width: 6.875rem;
  }
  .mv__inner.inner {
    padding-inline: var(--padding-sp);
  }
  .mv__container {
    --column-left: calc(180/335*100%);
    --row-top: calc(160/250*100%);
    aspect-ratio: 335/280;
  }
  .mv__slider {
    -webkit-mask-image: url(../images/top/mv-mask-sp.svg);
            mask-image: url(../images/top/mv-mask-sp.svg);
  }
  .mv__slide-img img {
    aspect-ratio: 335/280;
  }
  .mv__catch {
    gap: 0 2.6666666667vw;
    padding: 0.5rem;
    place-content: center;
  }
  :is(.mv__catch-text1, .mv__catch-text2) {
    font-size: clamp(10px, 4.8vw, 28px);
  }
  .mv__catch-main::before {
    margin-right: 1.0666666667vw;
    top: 0.25rem;
    width: 2.4vw;
  }
  .mv__catch-main::after {
    bottom: 0;
    margin-left: 1.6vw;
    width: 2.1333333333vw;
  }
  .mv__catch-main-img {
    width: 10.6666666667vw;
  }
  .overview__inner.inner-small {
    max-width: 600px;
  }
  .overview__list {
    grid-template-columns: 1.25fr 2fr;
    -moz-column-gap: 0.75rem;
         column-gap: 0.75rem;
    margin-top: 3rem;
  }
  .overview__item {
    padding-inline: 0.625rem;
  }
  :is(.overview__term, .overview__desc) {
    font-size: 0.9375rem;
  }
  .product__inner.inner {
    max-width: revert;
  }
  .product__container {
    --padding-inline: var(--padding-sp);
    grid-template-columns: var(--side) var(--content) var(--side);
    margin-top: 2rem;
  }
  .product__content {
    gap: 2rem;
    padding-top: initial;
    text-align: center;
  }
  .product__lead {
    font-size: 1.125rem;
  }
  .product__text {
    word-break: keep-all;
  }
  .product__slider-container {
    grid-column: span 3;
    margin-top: 4.375rem;
  }
  .product__en {
    right: 4%;
    top: -1.5rem;
    width: min(53.3333333333vw, 220px);
  }
  .product__slider {
    padding-block: 1.25rem;
    padding-inline: var(--padding-sp);
  }
  .product__slide {
    width: 15rem;
  }
  .product__img img {
    border-radius: 2.75rem;
    filter: drop-shadow(0 0.125rem 0.625rem rgba(80, 69, 23, 0.15));
  }
  .product__buttons {
    gap: 1.875rem;
    grid-column: 2/3;
    margin-top: 0.625rem;
  }
  :is(.product__button-prev, .product__button-next) {
    width: 2.5rem;
  }
  .section-common__text {
    font-size: 1rem;
    margin-top: 2.5rem;
    word-break: keep-all;
  }
  .section-title {
    font-size: 1.25rem;
  }
  .section-title::before {
    width: 0.875rem;
  }
  .section-title--en {
    font-size: 1.25rem;
  }
  .service::before {
    right: calc(50% - min(46.4vw, 330px));
    top: -2.5rem;
    width: min(24vw, 110px);
  }
  .service__container {
    flex-direction: column;
    gap: 2.5rem;
  }
  .service__img img {
    --radius: calc(30/16*1rem);
  }
  .service__en {
    left: 8%;
    top: -3.75rem;
    translate: 0;
    width: min(53.3333333333vw, 240px);
  }
  .service__content {
    gap: 2rem;
  }
  .service__text {
    word-break: keep-all;
  }
  .service__button {
    text-align: center;
  }
  .sub-mv__inner.inner-large {
    padding-inline: 5.3333333333%;
  }
  .sub-mv__container {
    gap: 1.25rem;
  }
  .sub-mv__en {
    font-size: 3.125rem;
  }
  .sub-mv__ja {
    font-size: 1rem;
  }
  .sub-mv__breadcrumbs {
    --gap: calc(5/16*1rem);
    padding-inline: 1.25rem;
  }
  .sub-mv__img img {
    aspect-ratio: 335/180;
    border-radius: 1.875rem;
  }
  .sub-product__inner {
    --padding-inline: var(--padding-sp);
    --content: minmax(0, 600px);
    --padding-block: calc(40/16*1rem);
    grid-template-columns: var(--side) var(--content) var(--side);
    grid-template-rows: var(--padding-block) repeat(3, auto) var(--padding-block);
  }
  .sub-product__inner::before {
    --radius: calc(40/16*1rem);
    grid-column: 1/3;
  }
  .sub-product__en {
    left: calc(50% - min(42.6666666667vw, 280px));
    top: -1.5%;
    width: min(100%, min(72vw, 370px));
  }
  .sub-product__img {
    grid-column: 2/-1;
  }
  .sub-product__img img {
    --radius: calc(30/16*1rem);
  }
  .sub-product__content {
    grid-column: 2/3;
    grid-row-start: 3;
    justify-self: center;
    margin-top: 2.5rem;
    padding-inline: 1.25rem;
  }
  .sub-product__text {
    margin-top: 2rem;
    min-width: initial;
  }
  .sub-product__list {
    gap: 2rem;
    grid-column: 2/3;
    grid-row-start: 4;
    grid-template-columns: min(78.431372549%, 300px);
  }
  .sub-product__item {
    gap: 1rem;
  }
  .sub-product__item-caption {
    font-size: 0.9375rem;
  }
  .sub-service__inner {
    --padding-inline: var(--padding-sp);
    --content: minmax(0, 600px);
    --padding-block: calc(40/16*1rem);
    grid-template-columns: var(--side) var(--content) var(--side);
    grid-template-rows: var(--padding-block) repeat(3, auto) var(--padding-block);
  }
  .sub-service__inner::before {
    --radius: calc(40/16*1rem);
  }
  .sub-service__en {
    right: calc(50% - min(39.4666666667vw, 260px));
    top: -3%;
    width: min(100%, min(58.6666666667vw, 300px));
  }
  .sub-service__img img {
    --radius: calc(30/16*1rem);
  }
  .sub-service__content {
    grid-column: 2/3;
    grid-row-start: 3;
    margin-top: 2.5rem;
    max-width: 100%;
    padding-inline: 5.3333333333vw 3.2vw;
  }
  .sub-service__text {
    margin-top: 2rem;
  }
  .sub-service__list {
    gap: 2rem;
    grid-column: 2/3;
    grid-row-start: 4;
    grid-template-columns: min(59.7014925373%, 300px);
  }
  .sub-service__item {
    gap: 1rem;
  }
  .sub-service__item-caption {
    font-size: 0.9375rem;
  }
  .text {
    font-size: 0.875rem;
  }
  .text-middle {
    font-size: 0.9375rem;
  }
  .text-large {
    font-size: 1.125rem;
  }
  .js-service-en.is-animated {
    animation-duration: 4.2s;
  }
  .js-product-en.is-animated {
    animation-duration: 1s;
  }
  .js-message-en.is-animated {
    animation-duration: 1.6s;
  }
  .pc-only {
    display: none;
  }
  .sp-only {
    display: block;
  }
}

@media (max-width: 375px){
  html {
    font-size: 4.2666666667vw;
  }
}

@media (any-hover: hover){
  .button:hover {
    background-color: var(--text-color);
    color: var(--base-color);
  }
  .button:hover::after {
    background-color: var(--text-color);
  }
  .contact__logo-link:hover {
    filter: brightness(0.8);
  }
  .footer__logo:hover {
    opacity: 0.7;
  }
  .footer__nav-link:hover {
    color: var(--red);
  }
  .footer__nav-link:hover::before {
    animation: kurukuru 1.5s linear infinite;
  }
  .footer__pagetop:hover {
    background-color: var(--base-color);
    color: var(--bg-color);
  }
  .form__policy-text a:hover {
    color: var(--primary);
  }
  .form__send:has([type=submit]:not([disabled]):hover)::before,
  .form__send:has([type=submit]:not([disabled]):focus)::before {
    clip-path: inset(0 0 0 0);
  }
  .form__send:has([type=submit]:not([disabled]):hover)::after {
    animation: repeatLine 0.5s ease-out forwards;
  }
  .header__logo:hover {
    opacity: 0.6;
  }
  .header__nav-link:hover .header__nav-text {
    text-shadow: 0 0 0 var(--red), 0 1.5em 0 var(--red);
  }
  :is(.product__button-prev, .product__button-next):hover {
    background-color: var(--base-color);
  }
  :is(.product__button-prev, .product__button-next):hover::after {
    background-color: var(--bg-color);
  }
  .sub-mv__breadcrumbs-home:hover {
    filter: brightness(0.8);
  }
}

@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 print{
  :where(mark) {
    border-style: dotted;
    /*
    * 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;
  }
}