@charset "utf-8";
/*! 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%;
  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.67em;
  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;
}

@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) {
    /*
    * 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;
  }
}

/* ======================================================
//  MARK: Links
// ====================================================== */
: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%;

  /* 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 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;
}

@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(: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;
}

::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 {
  /* ::backdropは使用せず、::before疑似要素でFirefox対応 */
  background-color: transparent;
}

: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. */
  outline-offset: 3px;
}

[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;
}

/* ---------------------------------------------
*   color setting
--------------------------------------------- */
@property --color-pure-black {
  syntax: "<color>";
  inherits: false;
  initial-value: #000000;
}
@property --color-main-black {
  syntax: "<color>";
  inherits: false;
  initial-value: #333333;
}
@property --color-pure-white {
  syntax: "<color>";
  inherits: false;
  initial-value: #ffffff;
}
@property --color-main-brown {
  syntax: "<color>";
  inherits: false;
  initial-value: #ba8d51;
}
@property --color-main-brown-l {
  syntax: "<color>";
  inherits: false;
  initial-value: #ecba80;
}
@property --color-main-brown-ultra-light {
  syntax: "<color>";
  inherits: false;
  initial-value: #fafafa;
}
@property --color-main-brown-border {
  syntax: "<color>";
  inherits: false;
  initial-value: #AA8350;
}
@property --color-primary-gray {
  syntax: "<color>";
  inherits: false;
  initial-value: #C0BFBF;
}
@property --color-primary-gray-l {
  syntax: "<color>";
  inherits: false;
  initial-value: #b3b3b3;
}
@property --color-cell-gray {
  syntax: "<color>";
  inherits: false;
  initial-value: #ededed;
}
@property --color-cell-brown {
  syntax: "<color>";
  inherits: false;
  initial-value: #ba8d51;
}
@property --color-primary-gray-d {
  syntax: "<color>";
  inherits: false;
  initial-value: #808080;
}
@property --color-primary-blue {
  syntax: "<color>";
  inherits: false;
  initial-value: #191893;
}


/* ---------------------------------------------
*   font setting
--------------------------------------------- */
:root {
  --font-size-pc: 16px;
  --font-size-sp: 14px;
  --font-family-ja: "Noto Sans JP", sans-serif;
  --font-family-en: "Manrope", sans-serif;
  --header-offset: 25px;
  --header-height: 80px;
  font-family: var(--font-family-ja);
}

@media (max-width: 768px) {
  :root {
    --font-size-sp: 14px;
  }
}

/* ---------------------------------------------
*   base setting
--------------------------------------------- */
html {
  font-size: var(--font-size-sp);
  scroll-padding-top: 80px; /* ヘッダーの高さ分のオフセット（モバイル） */
}

@media (min-width: 769px) {
  html {
    font-size: var(--font-size-pc);
    scroll-padding-top: 120px; /* ヘッダーの高さ分のオフセット（PC） */
  }
}

body {
  color: var(--color-main-black);
  /* overflow-x: hidden; */
  width: 100%;
  max-width: 100%;
  position: relative;
}

body.is-modal-open {
  overflow: hidden;
}

h1 {
  margin: 0;
}

svg {
  image-rendering: -webkit-optimize-contrast; /* WebKit独自のアンチエイリアシング最適化 */
  shape-rendering: geometricPrecision; /* SVGの形状レンダリングをシャープに */
  text-rendering: geometricPrecision; /* テキストのレンダリング精度を向上 */
}

button,
a {
  cursor: pointer;

  &:focus-visible {
    outline: 2px solid transparent;
    outline-offset: 2px;
  }
}

a, img {
  display: inline-block;
}

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

/* ---------------------------------------------
*   utils
--------------------------------------------- */
@media (max-width: 1365px) {
  .u-desktop-visible {
    display: none;
  }
}

@media screen and (max-width: 768px) {
  .u-tablet-visible {
    display: none;
  }
}

@media screen and (min-width: 1366px) {
  .u-tablet-visible {
    display: none;
  }
}

@media screen and (min-width: 769px) and (max-width: 1365px) {
  .u-tablet-hidden {
    display: none;
  }
}

@media (max-width: 1024px) {
  .u-tablet-mobile-hidden {
    display: none;
  }
}

@media (min-width: 1366px) {
  .u-mobile-visible {
    display: none;
  }
}

@media (min-width: 769px) {
  .u-sp-visible {
    display: none;
  }
}

@media (min-width: 1025px) {
  .u-table-mobile-visible {
    display: none;
  }
}

@media (max-width: 1024px) {
  .u-table-desktop-visible {
    display: none;
  }
}

.u-overflow-wrap {
  position: relative;
  overflow-x: clip; /* 横方向のはみ出しを切り取る（stickyを阻害しない） */
}

/* ---------------------------------------------
*   button
--------------------------------------------- */
.button {
  width: 100%;
  height: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  text-decoration: none;
  border-radius: 999px;
  transition: opacity .3s;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .button {
    font-size: max(12px, calc(14 * 100vw / 1366));
  }
}

.button.-primary {
  background-color: var(--color-main-brown);
  color: var(--color-pure-white);
}

.button.-small {
  font-size: 14px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .button.-small {
    font-size: max(12px, calc(14 * 100vw / 1366));
  }
}

.button.-large {
  font-size: 20px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .button.-large {
    font-size: max(18px, calc(20 * 100vw / 1366));
  }
}

@media (max-width: 768px) {
  .button.-large {
    font-size: calc(18 * 100vw / 375);
  }
}

@media (any-hover: hover) {
  .button:hover {
    opacity: 0.7;
  }
}

.tab-button {
  border-top-width: 0;
  border-right-width: 0;
  border-left-width: 0;
}

/* ---------------------------------------------
*   layout
--------------------------------------------- */
.main {
  min-height: 0;
  width: 100%;
  max-width: 100%;
}

/* ---------------------------------------------
*   header
--------------------------------------------- */
.header {
  position: fixed;
  top: 25px;
  left: 0;
  width: 100%;
  z-index: 999;
  transition: transform .3s;
}

@media (max-width: 768px) {
  .header {
    top: 5px;
  }
}

.header.is-hidden {
  transform: translateY(calc(-100% - 25px));
}

.header-container {
  background-color: color-mix(in srgb, var(--color-pure-white) 40%, transparent);
  max-width: calc(100% - 50px);
  margin-inline: auto;
  padding: 20px 0 20px 20px;
  border-radius: 10px;
  position: relative;
}

@media (max-width: 768px) {
  .header-container {
    max-width: calc(100% - 20px);
    padding-block: calc(15 * 100vw / 375);
  }
}

.header-contents {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}

.header-logo-link {
  display: flex;
  transition: opacity .3s;
}

@media (any-hover: hover) {
  .header-logo-link:hover {
    opacity: 0.7;
  }
}

@media (max-width: 1023px) {
  .header-nav {
    display: none;
  }
}

.header-nav-container {
  display: flex;
  align-items: center;
}

.header-nav-list {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: calc(46 * 100vw / 1366);
}

@media (min-width: 769px) and (max-width: 1365px) {
  .header-nav-list {
    gap: calc(20 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .header-nav-list {
    display: none;
  }
}

.header-nav-link {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-pure-black);
  transition: opacity .3s;
}

@media (any-hover: hover) {
  .header-nav-link:hover {
    opacity: 0.7;
  }
}

.header-nav-button {
  width: 180px;
  height: 40px;
  margin-inline-start: 46px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .header-nav-button {
    margin-inline-start: calc(46 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .header-nav-button {
    display: none;
  }
}

.header-nav-button-icon {
  position: relative;
  width: 80px;
  height: 40px;
  cursor: pointer;
  border: none;
  background-color: transparent;
  z-index: 1001;
  overflow: hidden;
}

@media (any-hover: hover) {
  .header-nav-button-icon:hover {
    opacity: 0.7;
  }
}

.header-nav-button-icon-svg {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 40px;
  height: 40px;
  color: var(--color-pure-black);
}

/* 開くアイコン（ハンバーガー）のアニメーション */
.header-nav-button-icon-svg.-open {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  transition: clip-path 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 閉じるアイコン（バツ）のアニメーション */
.header-nav-button-icon-svg.-close {
  clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%);
  transition: clip-path 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.header-nav-button-icon[aria-expanded="true"] {
  .header-nav-button-icon-svg.-open {
    clip-path: polygon(0 0, 0 0, 0 100%, 0 100%);
  }

  .header-nav-button-icon-svg.-close {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  }
}

/*  drawer
--------------------------------------------- */

.drawer-menu {
  position: fixed;
  top: 25px;
  right: 25px;
  left: auto;
  bottom: auto;
  background-color: var(--color-pure-white);
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1) inset;
  z-index: 1000;
  max-width: 460px;
  width: 460px;
  height: calc(100vh - 100px);
  height: calc(100dvh - 10px);
  max-height: calc(100vh - 50px);
  max-height: calc(100dvh - 50px);
  border-radius: 10px;
  border: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  overscroll-behavior: contain;
  text-align: left;
}

@media (max-width: 768px) {
  .drawer-menu {
    max-width: calc(100% - 20px);
    height: calc(100vh - 10px);
    height: calc(100dvh - 10px);
    width: 100%;
    top: 5px;
    right: 10px;
  }
}

/* 開くアニメーション用の初期状態 */
.drawer-menu.opening {
  clip-path: inset(0 0 100% 100% round 10px);
  opacity: 0;
}

/* 開いた状態 */
.drawer-menu[open] {
  clip-path: inset(0 0 0 0 round 10px);
  opacity: 1;
  transition:
    clip-path 0.5s cubic-bezier(0.4, 0, 0.2, 1),
    opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 閉じるアニメーション用 */
.drawer-menu.closing {
  clip-path: inset(0 0 100% 100% round 10px);
  opacity: 0;
  transition:
    clip-path 0.5s cubic-bezier(0.4, 0, 0.2, 1),
    opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.drawer-menu::backdrop {
  background-color: transparent;
}

.drawer-close-button {
  border: none;
  background: transparent;
  cursor: pointer;
  position: absolute;
  top: 20px;
  right: 20px;
  padding: 0;
  width: 40px;
  height: 40px;
  z-index: 1;
  overflow: hidden;
}

@media (any-hover: hover) {
  .drawer-close-button:hover {
    opacity: 0.7;
  }
}

@media (max-width: 768px) {
  .drawer-close-button {
    top: calc(15 * 100vw / 375);
    right: calc(20 * 100vw / 375);
  }
}

.drawer-close-button-svg {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 40px;
  height: 40px;
  color: var(--color-pure-black);
}

/* 開くアイコン（ハンバーガー）のアニメーション */
.drawer-close-button-svg.-open {
  clip-path: polygon(0 0, 0 0, 0 100%, 0 100%);
  transition: clip-path 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 閉じるアイコン（バツ）のアニメーション */
.drawer-close-button-svg.-close {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  transition: clip-path 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.drawer-menu-inner {
  display: flex;
  flex-direction: column;
  padding-block: 70px 30px;
  padding-inline: 70px 60px;
  overflow-y: auto;
  overflow-x: hidden;
  flex: 1;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 768px) {
  .drawer-menu-inner {
    text-align: left;
    padding: calc(36 * 100vw / 375);
  }
}

/* Navigation */
.drawer-menu-nav {
  width: 100%;
  max-width: 600px;
}

@media (max-width: 768px) {
  .drawer-menu-logo {
  }

  .drawer-menu-logo img {
      width: calc(168 * 100vw / 375);
  }
}

.drawer-menu-list {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 32px;
  margin-block-start: calc(40 * 100vw / 375);
}

@media (min-width: 769px) {
  .drawer-menu-list {
    margin-block-start: 40px;
    gap: 18px;
  }
}

.drawer-menu-item {
}

.drawer-menu-link {
  display: inline-block;
  font-size: calc(18 * 100vw / 1366);
  font-weight: 700;
  color: var(--color-main-black);
  text-decoration: none;
  transition: opacity 0.3s;
}

@media (max-width: 768px) {
  .drawer-menu-link {
    font-size: calc(20 * 100vw / 375);
  }
}

@media (any-hover: hover) {
  .drawer-menu-link:hover {
    opacity: 0.7;
  }
}

/* Subnavigation */

.drawer-menu-sublist {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 18px;
  margin-block-start: 16px;
  padding-inline-start: 40px;
  padding-block: 4px;

  &::before {
    position: absolute;
    content: "";
    top: 0;
    left: 0.4em;
    width: 1px;
    height: 100%;
    background-color: #4d4d4d;
  }
}

.drawer-menu-subitem {
  text-align: left;
}

@media (min-width: 769px) {
  .drawer-menu-sublist {
    margin-block-start: 10px;
    padding-inline-start: 22px;
    gap: 15px;
  }
}

.drawer-menu-sublink {
  display: inline-block;
  font-size: 16px;
  font-weight: 500;
  color: #4d4d4d;
  text-decoration: none;
  transition: opacity 0.3s;
}

@media (max-width: 768px) {
  .drawer-menu-sublink {
    font-size: calc(16 * 100vw / 375);
  }
}

@media (any-hover: hover) {
  .drawer-menu-sublink:hover {
    opacity: 0.7;
  }
}

/* CTA Button */
.drawer-menu-cta {
  margin-block-start: 40px;
  width: 100%;
  max-width: 400px;
}

@media (max-width: 768px) {
  .drawer-menu-cta {
    margin-block-start: calc(40 * 100vw / 375);
    max-width: calc(330 * 100vw / 375);
  }
}

.drawer-menu-cta .button {
  width: 100%;
  padding-block: 20px;
}

/* Footer Links */
.drawer-menu-footer {
  margin-block-start: 24px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
  align-items: center;
}

@media (min-width: 769px) {
  .drawer-menu-footer {
    display: flex;
    flex-direction: column;
    flex-direction: row;
    gap: 32px;
  }
}

.drawer-menu-footer-link {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-main-black);
  text-decoration: none;
  transition: opacity 0.3s;
}

@media (max-width: 768px) {
  .drawer-menu-footer-link {
    font-size: calc(14 * 100vw / 375);
  }
}

.drawer-menu-footer-link:hover {
  opacity: 0.7;
}

/* Body scroll lock when drawer is open */
body.is-drawer-open {
  overflow: hidden;
}

/* ---------------------------------------------
*   footer
--------------------------------------------- */
.footer {
  background-color: var(--color-pure-black);
  color: var(--color-pure-white);
}

.footer-download {
  background: url(../images/bg_footer-download.webp) no-repeat left calc(-245 * 100vw / 1366) top calc(-303 * 100vw / 1366) / calc(2066 * 100vw / 1295) auto;
  /* height: 490px; */
  text-align: center;
  padding-block: 74px;
}

@media (max-width: 768px) {
  .footer-download {
    background: url(../images/bg_footer-download-sp.webp) no-repeat center top calc(-136 * 100vw / 375) / calc(1376 * 100vw / 375) auto;
    height: calc(550 * 100vw / 375);
    padding-block: calc(83 * 100vw / 375);
  }
}

.footer-download-title {
  font-size: 28px;
  font-weight: 600;
  margin-block-end: 44px;
  font-feature-settings: "palt";
  letter-spacing: 0.02em;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .footer-download-title {
    font-size: max(20px, calc(28 * 100vw / 1366));
  }
}

@media (max-width: 768px) {
  .footer-download-title {
    font-size: calc(27 * 100vw / 375);
    margin-block-end: calc(32 * 100vw / 375);
  }
}

.footer-download-logo {
  max-width: 480px;
  margin-inline: auto;
  margin-block-end: 66px;
}

@media (max-width: 768px) {
  .footer-download-logo {
    max-width: calc(323 * 100vw / 375);
    margin-block-end: calc(88 * 100vw / 375);
  }
}

.footer-download-button {
  width: 340px;
  height: 70px;
  margin-inline: auto;
  letter-spacing: -0.02em;
}

@media (max-width: 768px) {
  .footer-download-button {
    width: calc(330 * 100vw / 375);
    height: calc(70 * 100vw / 375);
  }
}

.footer-download-textlinks {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 40px;
}

@media (max-width: 768px) {
  .footer-download-textlinks {
    gap: calc(30 * 100vw / 375);
  }
}

.footer-download-textlink {
  position: relative;
  font-size: 18px;
  font-weight: 400;
  letter-spacing: 0.06em;
  margin-block-start: 40px;

  &+& {
    &::before {
      position: absolute;
      top: 50%;
      left: -22px;
      content: "|";
      color: var(--color-pure-white);
      transform: translateY(-50%);
    }
  }
}

@media (max-width: 768px) {
  .footer-download-textlink {
    margin-block-start: calc(40 * 100vw / 375);
    font-size: calc(18 * 100vw / 375);

    }

  .footer-download-textlink &+& {
      &::before {
        left: calc(-15 * 100vw / 375);
  }
  }
}

.footer-contents {
  height: 270px;
  text-align: center;
  padding-block: 54px 36px;
  padding-inline: 20px;
}

@media (max-width: 768px) {
  .footer-contents {
    height: auto;
    padding-inline: calc(10 * 100vw / 375);
  }
}

.footer-logo {
  text-align: center;
  margin-block-end: 32px;
}

.footer-nav-list {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 86px;
  margin-block-end: 34px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .footer-nav-list {
    gap: calc(86 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .footer-nav-list {
    flex-direction: column;
    gap: 10px;
  }
}

.footer-nav-link {
  font-size: 15px;
  transition: opacity .3s;
  font-weight: 600;
}

@media (any-hover: hover) {
  .footer-nav-link:hover {
    opacity: 0.7;
  }
}

.footer-copyright {
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.06em;
}

@media (max-width: 768px) {
  .footer-copyright {
    letter-spacing: 0;
  }
}

/* ---------------------------------------------
*   section
--------------------------------------------- */
.section {
  content-visibility: auto;
  contain-intrinsic-size: auto 1000px;
}

.section-title {
  font-size: 44px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-align: center;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .section-title {
    font-size: calc(44 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .section-title {
    font-size: calc(28 * 100vw / 375);
  }
}

/* ---------------------------------------------
*   fv
--------------------------------------------- */
.fv {
  position: relative;
  padding-block-start: calc(768 / 1366 * 100%);
  overflow: hidden;
  height: 100vh;
  /* height: 100dvh; */
}

@media (max-width: 768px) {
  .fv {
    padding-block-start: calc(600 / 375 * 100%);
  }
}

.fv-shine {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(200, 160, 100, 1) 30%,
    transparent 50%,
    transparent 70%,
    transparent 100%
  );
  transform: translateX(-120%) skewX(30deg);
  pointer-events: none;
  z-index: 100;
  opacity: 1;
}

@keyframes fv-shine {
  0% {
    transform: translateX(-120%) skewX(30deg);
    opacity: 1;
  }
  100% {
    transform: translateX(120%) skewX(30deg);
    opacity: 0;
  }
}

.fv-picture {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 100%;

  img {
    width: 100%;
  }
}

.fv-inner {
  position: absolute;
  inset: 0;
  padding-inline: calc(90 * 100vw / 1366);
  color: var(--color-pure-white);
}

.fv-bg {
  position: absolute;
  inset: 0;
  opacity: 0;

  img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
}

.fv-model {
  position: absolute;
  width: calc(777 / 1366 * 100%);
  top: calc(265 * 100vh / 1366);
  left: calc(263 * 100vw / 1366);
  opacity: 0;
}

@media (max-width: 768px) {
  .fv-model {
    width: calc(570 / 375 * 100%);
    top: calc(70 * 100vh / 375);
    left: calc(-130 * 100vw / 375);
  }
}

.fv-catchcopy {
  margin-block-start: calc(364 * 100vh / 1366);
  font-size: calc(36 * 100vw / 1366);
  font-weight: 700;
  letter-spacing: 0.1em;
  opacity: 0;
}
@media (max-width: 768px) {
  .fv-catchcopy {
    text-align: center;
    font-size: calc(28 * 100vw / 375);
    margin-block-start: calc(300 * 100vw / 375);
    margin-inline-start: calc(26 * 100vw / 375);
    letter-spacing: 0.2em;
    font-feature-settings: "palt";
  }
}

.fv-title-group {
  margin-block-start: calc(258 * 100vw / 1366);
}

@media (max-width: 768px) {
  .fv-title-group {
    margin-block-start: calc(161 * 100vw / 375);
    margin-inline-start: calc(10 * 100vw / 375);
  }
}

.fv-title-before {
  font-size: calc(24 * 100vw / 1366);
  font-weight: 700;
  letter-spacing: 0.04em;
  margin-block-end: calc(14 * 100vw / 1366);
  opacity: 0;
}

@media (max-width: 768px) {
  .fv-title-before {
    font-size: calc(18 * 100vw / 375);
    margin-block-end: calc(10 * 100vw / 375);
    letter-spacing: 0.06em;
  }
}

.fv-title-main {
  width: calc(602 * 100vw / 1366);
  opacity: 0;
  position: relative;
  overflow: hidden;
}

.fv-title-main img {
  width: 100%;
}

/* FVテキストアニメーション用の横線 */
.fv-catchcopy,
.fv-title-before {
  position: relative;
  display: inline-block;
}

.fv-catchcopy-line,
.fv-title-before-line {
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  height: 1px;
  background: var(--color-pure-white);
  transform: translateY(-50%) scaleX(0);
  transform-origin: left center;
  opacity: 1;
  pointer-events: none;
  z-index: 10;
}

@media (max-width: 768px) {
  .fv-title-main {
    width: calc(310 * 100vw / 375);
  }
}

.scroll-obj {
  position: absolute;
  bottom: 50px;
  right: 40px;
  writing-mode: vertical-rl;
  color: var(--color-pure-white);
  font-size: 12px;
  font-weight: 400;
  z-index: 4;

  &::before {
    animation: scroll 2s infinite;
    background-color: var(--color-pure-white);
    top: -90px;
    content: "";
    height: 78px;
    left: 0;
    margin: auto;
    position: absolute;
    right: 0;
    width: 1px;
  }
}

@keyframes scroll {
  0% {
    transform: scale(1, 0);
    transform-origin: 0 0;
  }
  50% {
    transform: scale(1, 1);
    transform-origin: 0 0;
  }
  51% {
    transform: scale(1, 1);
    transform-origin: 0 100%;
  }
  100% {
    transform: scale(1, 0);
    transform-origin: 0 100%;
  }
}

/* FVアニメーション: アクセシビリティ対応 */
@media (prefers-reduced-motion: reduce) {
  .fv-bg,
  .fv-model,
  .fv-catchcopy,
  .fv-title-before,
  .fv-title-main {
    opacity: 1 !important;
    transform: none !important;
  }
}


/* ============================================
   Story
============================================ */
.fullpage {
  /* height: 400vh; */
  aspect-ratio: 1366 / 3072;
  position: relative;
}

.story {
  position: relative;
}

.story-content {
  position: relative;
}

.story-heading {
  position: absolute;
  top: calc(60 * 100vw / 1366);
  left: 20px;
  z-index: 100;
  font-size: calc(20 * 100vw / 1366);
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-pure-white);
}

@media (max-width: 768px) {
  .story-heading {
    font-size: calc(16 * 100vw / 375);
    top: calc(38 * 100vw / 375);
    left: 0;
  }
}

.story-list {
  position: relative;
  list-style: none;
  padding: 0;
  margin: 0;
}

.story-item {
  position: sticky;
  width: 100vw;
  aspect-ratio: 1366 / 1068;
  transition: filter 0.3s ease-in-out;

  &+& {
    margin-block-start: 200px;
  }
}

@media (max-width: 768px) {
  .story-item {
    aspect-ratio: 375 / 967;

    &:nth-last-child(1) {
      aspect-ratio: 375 / 667;
    }
  }
}

.story-item:nth-child(1) {
  top: 0;
  z-index: 0;
}

.story-item:nth-child(2) {
  top: 0;
  z-index: 1;
}

@media (max-width: 768px) {
  .story-item:nth-child(1) {
    .story-item-text {
      margin-block-start: calc(57 * 100vw / 375);
    }
  }
}

@media (max-width: 768px) {
  .story-item:nth-child(2) {
    .story-item-heading {
      margin-block-start: calc(200 * 100vw / 375);
    }
    .story-item-text {
      margin-block-start: calc(36 * 100vw / 375);
    }
  }
}

.story-item:nth-child(3) {
  top: 0;
  z-index: 2;
}

@media (min-width: 769px) {
  .story-item:nth-child(3) {
    .story-item-text-group {
      z-index: 1;
      position: relative;
      /* position: absolute;
      bottom: calc(120 * 100vw / 1366);
      left: calc(20 * 100vw / 1366); */
    }
    .story-item-text {
      position: static;
    }
  }
}

@media (max-width: 768px) {
  .story-item:nth-child(3) {
    .story-item-heading {
      margin-block-start: calc(120 * 100vw / 375);
    }
    .story-item-text-group {
      position: relative;
      z-index: 1;
      margin-block-start: calc(36 * 100vw / 375);
    }
    .story-item-text {
      margin-block-start: calc(36 * 100vw / 375);
    }
  }
}

.story-item:nth-child(4) {
  top: 0;
  z-index: 3;

  .story-item-heading {
    margin-block-start: calc(270 * 100vw / 1366);
  }

  .story-item-text {
    opacity: 1;

    img {
      width: calc(602 * 100vw / 1366);
      translate: 0 calc(-25 * 100vw / 1366);
    }
  }
}

@media (max-width: 768px) {
  .story-item:nth-child(4) {
    .story-item-heading {
      margin-block-start: calc(310 * 100vw / 375);
    }
    .story-item-text {
      margin-block-start: calc(194 * 100vw / 1366);

      img {
        width: calc(256 * 100vw / 375);
        translate: 0 calc(-6 * 100vw / 375);
      }
    }

    .story-item-subtext {
      margin-block-start: calc(22 * 100vw / 375);
    }
  }
}

.story-item-inner {
  position: relative;
  max-width: calc(1150 * 100vw / 1366);
  margin-inline: auto;
  width: 100%;
  height: 100%;
  padding: calc(80 * 100vw / 1366) calc(6 * 100vw / 1366) calc(80 * 100vw / 1366) calc(20 * 100vw / 1366);
}

@media (max-width: 768px) {
  .story-item-inner {
    aspect-ratio: 375 / 667;
    padding-inline: 0;
    max-width: calc(328 * 100vw / 375);
  }
}

.story-item-image {
  pointer-events: none;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
}

.story-item-image picture,
.story-item-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 768px) {
  .story-item-image {
    aspect-ratio: 375 / 667;
  }
}

.story-item-heading {
  position: relative;
  z-index: 1;
  margin-block-start: calc(100 * 100vw / 1366);
}

@media (max-width: 768px) {
  .story-item-heading {
    margin-block-start: calc(130 * 100vw / 375);
  }
}

.story-item-title,
.story-item-subtext,
.story-item-text {
  position: relative;
  z-index: 1;
  color: var(--color-pure-white);
}

.story-item-title {
  font-size: calc(16 * 100vw / 1366);
  font-weight: 700;
  line-height: 1.3;
}

@media (max-width: 768px) {
  .story-item-title {
    font-size: calc(16 * 100vw / 375);
  }
}

.story-item-subtext {
  letter-spacing: 0.04em;
  font-feature-settings: "palt";
  margin-block-start: calc(30 * 100vw / 1366);
  font-size: calc(26 * 100vw / 1366);
  font-weight: 700;
  line-height: 1.6;

  .line {
    width: 3em;
    height: 1px;
    background-color: var(--color-pure-white);
    display: inline-block;
    translate: 12px -0.3em;
  }
}

@media (max-width: 768px) {
  .story-item-subtext {
    font-size: calc(16 * 100vw / 375);
    margin-block-start: calc(22 * 100vw / 375);

    .line {
      width: 2.2em;
    }
  }
}

.story-item-text {
  letter-spacing: 0.06em;
  font-feature-settings: "palt";
  font-size: calc(40 * 100vw / 1366);
  font-weight: 700;
  line-height: 1.6;

  img {
    width: calc(301 * 100vw / 1366);
    translate: calc(12 * 100vw / 1366) calc(-15 * 100vw / 1366);
  }
}

@media (min-width: 769px) {
  .story-item-text {
    margin-block-start: 80px;
    /* position: absolute;
    bottom: calc(180 * 100vw / 1366);
    left: calc(20 * 100vw / 1366); */
  }
}

@media (max-width: 768px) {
  .story-item-text {
    font-size: calc(24 * 100vw / 375);

    img {
      margin-block-start: 10px;
      width: calc(256 * 100vw / 375);
      translate: 0;
    }
  }
}


@media (prefers-reduced-motion: reduce) {
  .story-item * {
    animation: none !important;
    transition: none !important;
  }
}

/* 右側のフローティングコンテナ */
.story-floating {
  position: absolute;
  top: 0;
  right: calc(30 * 100vw / 1366);
  height: calc(768 * 100vw / 1366);
  height: 100%;
  pointer-events: none;
  z-index: 100;
  display: flex;
  flex-direction: column;
  align-items: center;
}

@media (max-width: 768px) {
  .story-floating {
    right: calc(20 * 100vw / 375);
  }
}

.story-floating > * {
  pointer-events: auto;
}

/* ページネーション */
.story-pagination {
  position: sticky;
  top: calc((100vw * 768 / 1366) / 2);
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(24 * 100vw / 1366);
  margin-top: calc((100vw * 768 / 1366) / 2);
  margin-bottom: calc((50vw * 768 / 1366) / 2);
}

@media (max-width: 768px) {
  .story-pagination {
    top: calc((100vh) / 2);
    margin-top: calc(310 * 100vw / 375);
    gap: calc(16 * 100vw / 375);
    /* 4枚目の上下中央で停止させるための margin-bottom */
    margin-bottom: calc(220 * 100vw / 375);
  }
}

.story-pagination-number {
  font-family: 'Manrope', sans-serif;
  font-size: calc(20 * 100vw / 1366);
  font-weight: 600;
  line-height: 1;
  color: var(--color-pure-white);
}

@media (max-width: 768px) {
  .story-pagination-number {
    font-size: calc(20 * 100vw / 375);
  }
}

.story-pagination-dots {
  list-style: none;
  padding-block: calc(40 * 100vw / 1366);
  border-radius: calc(40 * 100vw / 1366);
  margin: 0;
  display: flex;
  align-items: center;
  flex-direction: column;
  gap: calc(16 * 100vw / 1366);
  width: calc(40 * 100vw / 1366);
  background-color: rgba(255, 255, 255, 0.3);
}

@media (max-width: 768px) {
  .story-pagination-dots {
    padding-block: calc(28 * 100vw / 375);
    border-radius: calc(40 * 100vw / 375);
    gap: calc(10 * 100vw / 375);
    width: calc(32 * 100vw / 375);
  }
}

.story-pagination-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: var(--color-pure-white);
  opacity: 0.5;
  transition: background 0.3s ease, opacity 0.3s ease;
  pointer-events: none;
}

.story-pagination-dot.is-active {
  opacity: 1;
  background-color: var(--color-pure-white);
}

/* storyセクション内のscroll-obj */
.story-floating .scroll-obj {
  position: sticky;
  /* story-item 1枚分の下端から50px上の位置 */
  top: calc((100vw * 768 / 1366) - (50 * 100vw / 1366));
  margin-top: auto;
}

/* ---------------------------------------------
*   feature
--------------------------------------------- */
.feature {
  background: url(../images/bg_gradation.webp) no-repeat center top / 2560px 4559px;
  padding-block: 65px 142px;
  position: relative;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature {
    background: url(../images/bg_gradation.webp) no-repeat center top / auto 100%;
    padding-block: calc(65 * 100vw / 1366) calc(142 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature {
    background: url(../images/bg_gradation-sp.webp) no-repeat center top / 100% auto;
    padding-block: calc(18 * 100vw / 375) calc(96 * 100vw / 375);
  }
}

.feature-bg-x {
  position: absolute;
  content: "";
  bottom: 0;
  right: calc(50% - 110px);
  width: 1198px;
  height: 1104px;
}

@media (max-width: 768px) {
  .feature-bg-x {
    display: none;
  }
}

.feature-inner {
  padding-inline: 20px;
}

.feature-fv {
  position: relative;
  border-radius: 10px;
  border: 2px solid var(--color-main-brown);
  max-width: 1200px;
  margin-inline: auto;
  padding: 40px 48px 124px;
  background: url(../images/bg_feature.webp) no-repeat center center / 100% auto;
  height: 600px;
  opacity: 0;

  &::before {
    content: "";
    position: absolute;
    bottom: -40px;
    right: -8px;
    width: 177px;
    height: 65px;
    background: url(../images/obj_x.svg) no-repeat center center / 100% auto;
  }
}

@media screen and (min-width: 769px) and (max-width: 1365px) {
  .feature-fv {
    padding: calc(40 * 100vw / 1366) calc(48 * 100vw / 1366) calc(124 * 100vw / 1366);
    height: calc(600 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-fv {
    max-width: calc(330 * 100vw / 375);
    height: calc(600 * 100vw / 375);
    margin-inline: auto;
    padding: calc(20 * 100vw / 375) calc(20 * 100vw / 375) calc(100 * 100vw / 375);
    background: url(../images/bg_feature-sp.webp) no-repeat center center / cover;

  }

  .feature-fv &::before {
      bottom: -36px;
      right: -46px;
  }
}

.feature-title-group {
  color: var(--color-pure-white);
  opacity: 0;
  transform: translateY(30px);
}

.feature-title-before {
  font-size: 20px;
  font-weight: 700;
}

@media (max-width: 768px) {
  .feature-title-before {
    font-size: calc(16 * 100vw / 375);
  }
}

.feature-title-main {
  margin-block-start: 32px;
  letter-spacing: 0.07em;
  font-size: 44px;
  font-weight: 700;
  display: flex;
  gap: 13px;
  flex-direction: column;
  align-items: center;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-title-main {
    margin-block-start: calc(32 * 100vw / 1366);
    font-size: calc(44 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-title-main {
    margin-block-start: calc(56 * 100vw / 375);
    font-size: calc(36 * 100vw / 375);
    text-align: center;
  }
}

.feature-title-cross {
  width: 60px;
  height: 60px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-title-cross {
    width: calc(60 * 100vw / 1366);
    height: calc(60 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-title-cross {
    width: calc(60 * 100vw / 375);
    height: calc(60 * 100vw / 375);
  }
}

#feature-performance {
  padding-block-start: 175px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  #feature-performance {
    padding-block-start: calc(175 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  #feature-performance {
    padding-block-start: calc(148 * 100vw / 375);
  }
}

.feature-sub-section {
  position: relative;
  z-index: 1;

  &+& {
    padding-block-start: 142px;
  }

  &:last-of-type {
    padding-block-start: 180px;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-sub-section {

  }

  .feature-sub-section &+& {
      padding-block-start: calc(142 * 100vw / 1366);
  }
}

.feature-sub-section-inner {
  max-width: 1140px;
  margin-inline: auto;
  padding-inline: 20px;
}

.feature-sub-section-title {
  text-align: center;
  color: var(--color-pure-white);
  font-weight: 700;
  margin-block-end: 60px;
}

@media (max-width: 768px) {
  #feature-ui .feature-sub-section-title {
    margin-block-end: 40px;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-sub-section-title {
    margin-block-end: calc(70 * 100vw / 1366);
  }
}

.feature-sub-section-title-before {
  letter-spacing: 0.07em;
  font-size: 20px;
  margin-block-end: 24px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-sub-section-title-before {
    font-size: max(16px, calc(20 * 100vw / 1366));
    margin-block-end: calc(24 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-sub-section-title-before {
    font-size: calc(16 * 100vw / 375);
    margin-block-end: calc(22 * 100vw / 375);
  }
}

.feature-sub-section-title-main {
  letter-spacing: 0.07em;
  font-size: 44px;
  line-height: 1.4;
  font-feature-settings: "palt";
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-sub-section-title-main {
    font-size: calc(44 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-sub-section-title-main {
    font-size: calc(28 * 100vw / 375);
  }
}

.feature-column-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}

@media (max-width: 768px) {
  .feature-column-list {
    grid-template-columns: 1fr;
    gap: calc(42 * 100vw / 375);
  }
}

.feature-column-item {
  border-radius: 12px;
  padding-block: 20px 40px;
  padding-inline: 40px 34px;
  background-color: var(--color-main-brown);
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 3;
  position: relative;

  &.-other {
    background: color-mix(in srgb, var(--color-pure-white) 20%, transparent);
  }

  &:not(.-other)::before {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 1px solid var(--color-pure-white);
    content: "";
    pointer-events: none;
  }
}

@media (max-width: 768px) {
  .feature-column-item {
    gap: 0;
    padding-block: calc(20 * 100vw / 375) calc(40 * 100vw / 375);
    padding-inline: calc(28 * 100vw / 375);
  }
}

.feature-column-item-heading {
  font-size: 30px;
  font-weight: 700;
  color: var(--color-pure-white);
  letter-spacing: 0.02em;
  line-height: 2;
  margin-block-end: 18px ;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-column-item-heading {
    font-size: calc(30 * 100vw / 1366);
    margin-block-end: calc(18 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-column-item-heading {
    font-size: calc(22 * 100vw / 375);
    margin-block-end: 0;

  }

  .feature-column-item-heading span {
      font-size: calc(20 * 100vw / 375);
  }
}

@media (max-width: 768px) {
  .feature-column-item-image {
    margin-block-start: calc(20 * 100vw / 375);
  }
}

.feature-column-item-heading-group {
  img {
    margin-block: 10px 15px;
  }

  .feature-column-item-heading {
    line-height: 1.6;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-column-item-heading-group {
  }

  .feature-column-item-heading-group img {
      width: calc(239 * 100vw / 1366);
      height: calc(37 * 100vw / 1366);
      margin-block: calc(10 * 100vw / 1366) calc(15 * 100vw / 1366);
  }
}

.feature-column-item-text {
  margin-block-start: 5px;
  color: var(--color-pure-white);
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0.06em;
  font-feature-settings: "palt";
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-column-item-text {
    font-size: calc(22 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-column-item-text {
    margin-block-start: calc(10 * 100vw / 375);
    font-size: calc(18 * 100vw / 375);
  }
}

.feature-column-item-design {
  position: absolute;
  width: 6px;
  height: 6px;
  border: 1px solid var(--color-pure-white);
  pointer-events: none;

  &.-left {
    top: -3px;
    left: -3px;
  }

  &.-right {
    top: -3px;
    right: -3px;
  }

  &.-bottom-left {
    bottom: -3px;
    left: -3px;
  }

  &.-bottom-right {
    bottom: -3px;
    right: -3px;
  }
}

.feature-support {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support {
    gap: 20px;
  }
}

@media (max-width: 768px) {
  .feature-support {
    grid-template-columns: 1fr;
  }
}

.feature-support-item {
  position: relative;
  color: var(--color-pure-white);
  padding-block: 55px 88px;
}

.feature-support-item.-before {
  padding-inline-start: calc((100vw - 1100px) / 2);
}

.feature-support-item.-before::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% + 36px);
  height: 100%;
  background: color-mix(in srgb, var(--color-pure-white) 20%, transparent);
  clip-path: polygon(0 0, calc(100% - 114px) 0, 100% 50%, calc(100% - 114px) 100%, 0 100%);
  z-index: -1;
}

.feature-support-item.-after {
  padding-inline-start: 104px;
}

.feature-support-item.-after::before {
  content: "";
  position: absolute;
  top: 0;
  left: -82px;
  width: calc(100% + 82px);
  height: 100%;
  background: var(--color-main-brown);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 114px 50%);
  z-index: -1;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support-item {
    padding-block: calc(55 * 100vw / 1366) calc(88 * 100vw / 1366);
  }

  .feature-support-item.-before {
    padding-inline: 40px;
  }

  .feature-support-item.-after {
    padding-inline: calc(104 * 100vw / 1366) calc(40 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-support-item {
    padding-block: calc(42 * 100vw / 375) calc(88 * 100vw / 375);
    padding-inline: calc(20 * 100vw / 375);
    width: calc(100% - 40px);
    margin-inline: auto;
  }

  .feature-support-item.-before {
    padding-inline: calc(28 * 100vw / 375);
  }

  .feature-support-item.-before::before {
    width: 100%;
    left: 50%;
    transform: translateX(-50%);
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 62px), 50% 100%, 0 calc(100% - 62px));
  }

  .feature-support-item.-after {
    padding-block: calc(54 * 100vw / 375) calc(100 * 100vw / 375);
    padding-inline: calc(28 * 100vw / 375);
  }

  .feature-support-item.-after::before {
    width: 100%;
    left: 50%;
    transform: translateX(-50%);
    clip-path: polygon(0 0, 50% 62px, 100% 0, 100% 100%, 0 100%);
  }
}

.feature-support-text {
  font-size: 21px;
  font-weight: 700;
  font-feature-settings: "palt";
  letter-spacing: 0.07em;
  margin-block-end: 30px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support-text {
    font-size: calc(21 * 100vw / 1366);
    margin-block-end: calc(30 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-support-text {
    font-size: calc(20 * 100vw / 375);
    margin-block-end: calc(20 * 100vw / 375);
  }
}

.feature-support-item-title {
  font-weight: 700;
  margin-block-end: 52px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support-item-title {
    font-size: calc(30 * 100vw / 1366);
    margin-block-end: calc(52 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-support-item-title {
    margin-block-end: calc(28 * 100vw / 375);
  }
}

.feature-support-label {
  background-color: var(--color-primary-blue);
  border-radius: 4px;
  display: inline-block;
  text-align: center;
  padding-inline: 20px;
  padding-block: 2px;
  font-size: 30px;
  margin-block-end: 6px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support-label {
    padding-inline: calc(20 * 100vw / 1366);
    font-size: calc(30 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-support-label {
    font-size: calc(30 * 100vw / 375);
    margin-block-end: calc(18 * 100vw / 375);
    padding-inline: calc(16 * 100vw / 375);
  }
}

.feature-support-title {
  font-size: 30px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support-title {
    font-size: calc(30 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-support-title {
    line-height: 1.2;
    font-size: calc(26 * 100vw / 375);
  }
}

.feature-support-item-contents {
  display: flex;
  gap: 44px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support-item-contents {
    flex-direction: column;
    gap: calc(44 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-support-item-contents {
    flex-direction: column;
    gap: 20px;
  }
}

.feature-support-item-contents-title {
  font-size: 22px;
  font-weight: 700;
  font-feature-settings: "palt";
  letter-spacing: 0.07em;
  margin-block-end: 30px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support-item-contents-title {
    font-size: max(16px, calc(22 * 100vw / 1366));
    margin-block-end: calc(30 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-support-item-contents-title {
    font-size: calc(22 * 100vw / 375);
    margin-block-end: calc(20 * 100vw / 375);
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support-item-contents-image {
    width: max(150px, calc(150 * 100vw / 1366));
  }
}

@media (max-width: 768px) {
  .feature-support-item-contents-image {
    width: calc(150 * 100vw / 375);

  }

  .feature-support-item-contents-image img {
      width: 100%;
  }
}

.feature-support-item-contents-text {
  font-weight: 500;
  letter-spacing: 0.05em;
  font-size: 16px;

  &+& {
    margin-block-start: 0.7em;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-support-item-contents-text {
    font-size: max(14px, calc(16 * 100vw / 1366));
  }
}

@media (max-width: 768px) {
  .feature-support-item-contents-text {
    font-size: calc(16 * 100vw / 375);
  }
}

.feature-strengths {
  color: var(--color-pure-white);
  margin-block-start: 96px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  max-width: 1140px;
  margin-inline: auto;
  padding-inline: 20px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-strengths {
    padding-inline: calc(136 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-strengths {
    margin-block-start: calc(24 * 100vw / 375);
    grid-template-columns: 1fr;
    gap: calc(62 * 100vw / 375);
  }
}

.feature-strengths-item {
  border-top: 3px solid var(--color-main-brown);
  padding-block-start: 30px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-strengths-item {
    border-top: calc(3 * 100vw / 1366) solid var(--color-main-brown);
    padding-block-start: calc(30 * 100vw / 1366);
  }
}

.feature-strengths-item-title {
  font-size: 38px;
  font-weight: 700;
  font-feature-settings: "palt";
  letter-spacing: 0.07em;
  margin-block-end: 6px;

  strong {
    font-weight: 700;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-strengths-item-title {
    font-size: calc(38 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-strengths-item-title {
    font-size: calc(38 * 100vw / 375);
    letter-spacing: 0.03em;
  }
}

.feature-strengths-item-text {
  font-size: 30px;
  letter-spacing: 0.04em;
  font-weight: 700;
  line-height: 2.5;

  strong {
    color: var(--color-main-brown-l);
    font-size: 100px;
    font-weight: 700;
    letter-spacing: -0.07em;
  }

  .en {
    display: inline-block;
    line-height: 1;
    font-family: var(--font-family-en);

    &.-num50000 {
      translate: -7px 4px;
      margin-inline-end: 10px;
    }

    &.-num200 {
      translate: 14px 4px;
      margin-inline-end: 30px;
    }
  }

  .design {
    display: inline-block;
    line-height: 1.5;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-strengths-item-text {
    font-size: calc(30 * 100vw / 1366);

  }

  .feature-strengths-item-text strong {
      font-size: calc(100 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-strengths-item-text {
    font-size: calc(24 * 100vw / 375);
    font-feature-settings: "palt";
    letter-spacing: 0;



    }

  .feature-strengths-item-text strong {
      font-size: calc(80 * 100vw / 375);
  }

  .feature-strengths-item-text .en {
      &.-num50000 {
        margin-inline-end: 0;
  }

  .feature-strengths-item-text &.-num200 {
        margin-inline-end: calc(20 * 100vw / 375);
  }
  }
}

/*  feature-ui
--------------------------------------------- */
.feature-ui-tab-buttons {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-block-end: 40px;
}

@media (max-width: 768px) {
  .feature-ui-tab-buttons {
    margin-block-end: calc(40 * 100vw / 375);
  }
}

.feature-ui-tab-button {
  font-size: 18px;
  font-weight: 700;
  font-feature-settings: "palt";
  letter-spacing: 0.2em;
  width: 250px;
  text-align: center;
  padding-block: 14px;
  color: var(--color-primary-gray);
  border-bottom: 2px solid var(--color-primary-gray);

  &.is-active {
    color: var(--color-pure-white);
    border-bottom: 2px solid var(--color-pure-white);
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-ui-tab-button {
    font-size: max(16px, calc(18 * 100vw / 1366));
    width: calc(250 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-ui-tab-button {
    width: calc(160 * 100vw / 375);
    font-size: calc(16 * 100vw / 375);
  }
}

.feature-ui-tab-contents {
  min-height: 613px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.feature-ui-figure {
  overflow: hidden;
  width: 100%;
  max-width: 100%;

  &.js-ui-pc-contents {
    max-width: calc(1024px + 40px);
    padding-inline: 20px;
  }
  &.js-ui-sp-contents {
    padding-inline: 20px;
  }
}

@media (max-width: 768px) {
  .feature-ui-tab-contents {
    min-height: calc(300 * 100vw / 375);
  }
}

.feature-ui-figure-image {
  text-align: center;
  display: block;
  max-width: 1024px;
  margin-inline: auto;
  padding-top: 630px;
  position: relative;

  &.-sp {
    max-width: 500px;
    padding-top: 690px;
  }
}

@media (min-width: 769px) and (max-width: 1064px) {
  .feature-ui-figure-image {
    padding-top: calc(1461 / 2382 * 100%);
    &.-sp {
      padding-top: 1166px;
    }
  }
}

@media (max-width: 768px) {
  .feature-ui-figure-image {
    max-width: calc(330 * 100vw / 375);
    padding-top: calc(330 / 610 * 100%);
    aspect-ratio: 179 / 110;

    &.-sp {
      max-width: 100%;
      padding-top: calc(1280 / 610 * 100%);
    }
  }
}

@media (max-width: 768px) {
  .feature-ui-figure-image {
  }
}

.feature-ui-figure-image img {
  position: absolute;
  inset: 0;
  margin-inline: auto;
  width: 70%;
  max-width: 100%;
  transform: translateZ(0);
}

@media (max-width: 768px) {
  .feature-ui-figure-image img {
    width: 100%;
    max-width: 100%;
  }
}

.video-element-pc {
  position: absolute;
  inset: 0;
  transform: translateZ(0);
  margin-inline: auto;
  aspect-ratio: 16 / 9;
  left: 0;
  top: calc(44 / 504 * 100%);
}

@media (max-width: 768px) {
  .video-element-pc {
  }
}

.video-element-sp {
  position: absolute;
  inset: 0;
  transform: translateZ(0);
  margin-inline: auto;
  top: calc(64 / 820 * 100%);
  max-width: 420px;
  max-width: 480px;
}

@media (min-width: 769px) and (max-width: 1064px) {
  .video-element-sp {
    top: calc(64 / 820 * 100%);
    max-width: 400px;
  }
}

@media (max-width: 768px) {
  .video-element-sp {
    max-width: 100%;
    top: calc(42 / 600 * 100%);
  }
}

/*  dialog （Storyとfeature共通）
--------------------------------------------- */
.feature-dialog,
.story-dialog {
  bottom: 0;
  left: 0;
  margin: 0;
  width: min(100%, 1260px);
  max-width: calc(100% - 40px);
  height: 100%;
  max-height: none;
  margin-inline: auto;
  border-radius: 10px 10px 0 0;
  background: none;
  overflow: visible;
  padding: 0;
  border: none;
  display: flex;
  align-items: flex-end;
}

.feature-dialog[closing],
.story-dialog[closing] {
  pointer-events: none;
}

/* 開くアニメーション：innerをスライド */
.feature-dialog[open] .dialog-inner,
.story-dialog[open] .dialog-inner {
  animation: dialog-slide-in 0.8s cubic-bezier(0.32, 0.72, 0, 1) forwards;
}

/* 閉じるアニメーション：innerをその場でフェードアウト */
.feature-dialog[closing] .dialog-inner,
.story-dialog[closing] .dialog-inner {
  animation: dialog-fade-out 0.9s ease-out forwards;
}

/* Backdrop: 20px blur + フェード (::before疑似要素を使用してFirefox対応) */
.feature-dialog::before,
.story-dialog::before {
  content: '';
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100vw;
  height: 100vh;
  background: color-mix(in srgb, #000 30%, transparent);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  opacity: 0;
  pointer-events: none;
  display: none;
}

.feature-dialog[open]::before,
.story-dialog[open]::before {
  display: block;
  animation: dialog-backdrop-in 0.8s ease-out forwards;
}

.feature-dialog[closing]::before,
.story-dialog[closing]::before {
  pointer-events: none;
  animation: dialog-backdrop-out 0.9s ease-out forwards;
  outline: none;
}

/* keyframes */
@keyframes dialog-slide-in {
  from {
    transform: translateY(100%);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes dialog-fade-out {
  from { opacity: 1; }
  to   { opacity: 0; }
}

@keyframes dialog-backdrop-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes dialog-backdrop-out {
  from { opacity: 1; }
  to   { opacity: 0; }
}

.feature-dialog-button {
  display: block;
  width: 500px;
  height: 60px;
  margin-inline: auto;
  margin-block-start: 68px;
  border-radius: 10px;
  border: 2px solid var(--color-main-brown);
  color: var(--color-pure-white);
  padding-inline: 32px 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-feature-settings: "palt";
  letter-spacing: 0.05em;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .feature-dialog-button {
    width: max(440px, calc(500 * 100vw / 1366));
    margin-block-start: calc(68 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .feature-dialog-button {
    margin-block-start: calc(48 * 100vw / 375);
    padding: calc(24 * 100vw / 375);
    width: calc(330 * 100vw / 375);
    height: calc(90 * 100vw / 375);
  }
}

.dialog-inner {
  position: relative;
  transform: translateY(100%);
  opacity: 0;
  width: 100%;
}

.dialog-inner > div {
  height: auto;
  max-height: calc(100vh - 50px); /* フォールバック */
  max-height: calc(100svh - 50px); /* アドレスバー・ツールバー考慮 */
  overflow: hidden scroll;
  border-radius: 10px 10px 0 0;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  pointer-events: auto;
  touch-action: pan-y;
  display: block;
  background: var(--color-pure-white);
  padding: 80px;
  pointer-events: auto;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .dialog-inner > div {
    padding: calc(80 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .dialog-inner > div {
    padding: calc(48 * 100vw / 375) calc(12 * 100vw / 375);
  }
}

.dialog-heading {
  font-size: 44px;
  font-weight: 700;
  letter-spacing: 0.07em;
  font-feature-settings: "palt";
  text-align: center;
  margin-block-end: 62px;
  display: flex;
  justify-content: center;
  gap: 4px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .dialog-heading {
    font-size: calc(44 * 100vw / 1366);
    margin-block-end: calc(62 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .dialog-heading {
    font-size: calc(24 * 100vw / 375);
    margin-block-end: calc(40 * 100vw / 375);
  }
}

.dialog-column-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  color: var(--color-pure-white);
}

@media (min-width: 769px) and (max-width: 1365px) {
  .dialog-column-list {
    gap: calc(20 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .dialog-column-list {
    grid-template-columns: 1fr;
  }
}

.dialog-column-item {
  border-radius: 12px;
  padding-block: 20px 40px;
  padding-inline: 40px 34px;
  background-color: var(--color-main-brown);
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 3;
  gap: 0;
  position: relative;

  &.-other {
    background: #999999;
  }

  &:not(.-other)::before {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 1px solid var(--color-pure-white);
    content: "";
    pointer-events: none;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .dialog-column-item {
    padding-block: calc(20 * 100vw / 1366) calc(40 * 100vw / 1366);
    padding-inline: calc(36 * 100vw / 1366) calc(34 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .dialog-column-item {
    padding: calc(20 * 100vw / 375);
  }
}

.dialog-column-item-heading {
  font-size: 30px;
  font-weight: 700;
  color: var(--color-pure-white);
  font-feature-settings: "palt";
  line-height: 1.5;
  margin-block-end: 18px ;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .dialog-column-item-heading {
    letter-spacing: 0.08em;
    font-size: calc(30 * 100vw / 1366);
    margin-block-end: calc(18 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .dialog-column-item-heading {
    letter-spacing: 0.04em;
    font-size: calc(20 * 100vw / 375);

  }
}

.dialog-column-item-heading-group {
  font-size: 30px;

  img {
    margin-block: 10px 15px;
  }

  .dialog-column-item-heading {
    line-height: 1.6;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .dialog-column-item-heading-group {
    font-size: calc(30 * 100vw / 1366);
    min-height: 36px;
  }

  .dialog-column-item-heading-group img {
    width: calc(239 * 100vw / 1366);
    height: calc(37 * 100vw / 1366);
    margin-block: calc(10 * 100vw / 1366) calc(15 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .dialog-column-item-heading-group {
    font-size: calc(30 * 100vw / 375);
  }

  .dialog-column-item-heading-group img {
    width: calc(240 * 100vw / 375);
  }
}

.dialog-column-item-text {
  margin-block-start: 48px;
  color: var(--color-pure-white);
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 0.06em;
  font-feature-settings: "palt";
  text-align: center;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .dialog-column-item-text {
    margin-block-start: calc(48 * 100vw / 1366);
    font-size: calc(22 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .dialog-column-item-text {
    margin-block-start: calc(20 * 100vw / 375);
    font-size: calc(18 * 100vw / 375);
    text-align: left;
  }
}

.dialog-column-item-subtext {
  font-size: 18px;
  font-weight: 500;
  letter-spacing: 0.05em;
  font-feature-settings: "palt";
  line-height: 1.6;
  margin-block-end: 10px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .dialog-column-item-subtext {
    font-size: clamp(14px, calc(18 * 100vw / 1366), 18px);
  }
}

@media (max-width: 768px) {
  .dialog-column-item-subtext {
    font-size: calc(16 * 100vw / 375);
  }
}

.dialog-image {
  img {
    width: 100%;
  }
}

@media (max-width: 768px) {
  .dialog-image {
    max-width: calc(290 * 100vw / 375);
  }
}

.dialog-catchcopy {
  margin-block-start: 62px;
  font-size: 38px;
  font-weight: 700;
  color: var(--color-main-brown);
  letter-spacing: 0.06em;
  text-align: center;
  font-feature-settings: "palt";
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .dialog-catchcopy {
    font-size: calc(38 * 100vw / 1366);
    margin-block-start: calc(62 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .dialog-catchcopy {
    font-size: calc(24 * 100vw / 375);
  }
}

.dialog-close-button {
  border: none;
  position: absolute;
  top: 40px;
  right: 40px;
  z-index: 10;
}

@media (max-width: 768px) {
  .dialog-close-button {
    top: calc(20 * 100vw / 375);
    right: calc(20 * 100vw / 375);
  }
}

/* ---------------------------------------------
*   partner
--------------------------------------------- */
.partner {
  background: url(../images/bg_partner.webp) no-repeat center center / 100% auto;
  height: calc(758 * 100vw / 1366);
  padding-block-start: calc(127 * 100vw / 1366);
  color: var(--color-pure-white);
}

@media (max-width: 768px) {
  .partner {
    background: url(../images/bg_partner-sp.webp) no-repeat center center / cover;
    height: calc(768 * 100vw / 375);
    padding-block-start: calc(52 * 100vw / 375);
  }
}

.partner-inner {
  width: calc(400 * 100vw / 1366);
  margin-block-start: calc(120 * 100vw / 1366);
  margin-inline-start: calc(900 * 100vw / 1366);
}

@media (max-width: 768px) {
  .partner-inner {
    text-align: center;
    width: 100%;
    margin-block-start: 0;
    margin-inline: auto;
  }
}

.partner-copy {
  font-size: calc(24 * 100vw / 1366);
  font-weight: 700;
  letter-spacing: 0.1em;
  line-height: 2;
  margin-block-end: calc(48 * 100vw / 1366);
}

@media (max-width: 768px) {
  .partner-copy {
    font-size: calc(22 * 100vw / 375);
    line-height: 1.7;
    letter-spacing: 0;
  }
}

.partner-logo {
  width: calc(336 * 100vw / 1366);

  img {
    width: 100%;
  }
}

@media (max-width: 768px) {
  .partner-logo {
    margin-inline: auto;
    width: calc(314 * 100vw / 375);
  }
}
/* ---------------------------------------------
*   他社製品比較
--------------------------------------------- */
.comparison {
  position: relative;
  background-color: var(--color-pure-white);
  padding-block: 176px;

  &::after {
    content: "";
    position: absolute;
    bottom: 0;
    right: -8px;
    width: 177px;
    height: 65px;
    background: url(../images/obj_x.svg) no-repeat center center / 100% auto;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .comparison {
    padding-block: calc(176 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .comparison {
    padding-block: calc(110 * 100vw / 375) calc(180 * 100vw / 375);

  }

  .comparison &::after {
      right: -50px;
  }
}

.comparison-inner {
  max-width: calc(1200px + 40px);
  margin-inline: auto;
  padding-inline: 20px;
}

@media (max-width: 1365px) {
  .comparison-inner {
    padding-inline: 0;
    max-width: 100vw;
  }
}

.comparison-table-wrapper {
  margin-block: 36px 66px;
  max-width: 940px;
  margin-inline: auto;
  overflow-x: scroll;
  -ms-overflow-style: none; /* Edge: デフォルトスクロールバーを非表示 */
  scrollbar-width: none; /* Firefox: デフォルトスクロールバーを非表示 */
  &::-webkit-scrollbar {
    display: none;
  }
}


@media (min-width: 769px) and (max-width: 1024px) {
  .comparison-table-wrapper {
    margin-block: calc(36 * 100vw / 1366) calc(66 * 100vw / 1366);
    max-width: 940px;
  }
}

@media (max-width: 1024px) {
  .comparison-table-wrapper {
    width: 100%;
    overflow-x: scroll;
    padding-inline: 20px;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x;

    /* SimpleBar カスタムスタイル */
    .simplebar-track.simplebar-horizontal {
      height: 4px;
      background: #c7c6c6;
      border-radius: 2px;
      max-width: calc(100% - 40px);
      margin-inline: auto;
    }

    .simplebar-scrollbar::before {
      background: var(--color-primary-blue);
      border-radius: 2px;
      opacity: 1;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
    }

    .simplebar-scrollbar:hover::before {
      background: rgba(var(--color-primary-blue-rgb), 0.8);
    }

    /* SimpleBarのコンテンツラッパーのスタイル調整 */
    .simplebar-content-wrapper {
      overflow-x: auto;
      overflow-y: hidden;
    }
  }
}

@media (max-width: 768px) {
  .comparison-table-wrapper {
    margin-block: calc(12 * 100vw / 375) calc(120 * 100vw / 375);
  }
}

.comparison-table {
  width: 100%;
  margin-inline: auto;
  border-spacing: 12px;
  border-collapse: separate;
}

@media (max-width: 768px) {
  .comparison-table {
    width: calc(1750 * 100vw / 375);
    border-spacing: 10px;
    padding-block-end: 50px
  }
}

@media screen and (min-width: 769px) and (max-width: 1024px) {
  .comparison-table {
    padding-block-end: calc(50 * 100vw / 375);
    width: calc(2865 * 100vw / 1366);
  }
}

.comparison-table-header {
  padding-block: 24px;
  padding-inline: 20px;
  font-size: 26px;
  font-weight: 700;
  text-align: center;
  vertical-align: middle;
}

@media (min-width: 769px) and (max-width: 1024px) {
  .comparison-table-header {
    padding-block: calc(24 * 100vw / 1366);
    padding-inline: calc(20 * 100vw / 1366);
    font-size: calc(32 * 100vw / 1366);
  }
}

@media (max-width: 1024px) {
  .comparison-table-header {
    font-size: clamp(16px, calc(16 * 100vw / 375), 18px);
    padding-block: 24px;
    padding-inline: 24px;
  }
}

.comparison-table-header-logo {
  display: flex;
  align-items: center;
  justify-content: center;

  img {
    flex-shrink: 0;
  }
}

@media (max-width: 768px) {
  .comparison-table-header-logo {
    justify-content: flex-start;
  }

  .comparison-table-header-logo img {
      width: calc(154 * 100vw / 375);
  }
}

.comparison-table-row-header {
  width: 200px;
  padding-block: 20px;
  padding-inline: 24px;
  font-size: 20px;
  font-weight: 700;
  vertical-align: middle;
  line-height: 1.5;
}

@media (min-width: 769px) and (max-width: 1024px) {
  .comparison-table-row-header {
    width: calc(200 * 100vw / 1366);
    padding-block: calc(20 * 100vw / 1366);
    padding-inline: calc(24 * 100vw / 1366);
    font-size: calc(22 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .comparison-table-row-header {
    width: calc(170 * 100vw / 375);
    font-size: calc(18 * 100vw / 375);
    padding-inline: 0;
  }
}

.comparison-table-cell-inner {
  display: grid;
  grid-template-columns: 80px auto;
  align-items: center;
  gap: 28px;
}

@media (min-width: 769px) and (max-width: 1024px) {
  .comparison-table-cell-inner {
    grid-template-columns: calc(80 * 100vw / 1366) auto;
    gap: calc(28 * 100vw / 1366);
  }
}

@media (max-width: 1024px) {
  .comparison-table-cell-inner {
    gap: 20px;
  }
}

.comparison-table-cell {
  padding: 36px 40px;
  text-align: center;
  vertical-align: middle;
  border-radius: 2px;
}

@media (min-width: 769px) and (max-width: 1024px) {
  .comparison-table-cell {
    padding: calc(36 * 100vw / 1366) calc(24 * 100vw / 1366);
    width: calc(360 * 100vw / 375);
  }
}

@media (max-width: 768px) {
  .comparison-table-cell {
    width: calc(290 * 100vw / 375);
    padding: calc(22 * 100vw / 375);
    border-radius: 2px;
  }
}

.comparison-table-cell.-other {
  background-color: var(--color-cell-gray);
}

.comparison-table-cell.-timepro {
  background-color: color-mix(in srgb, var(--color-cell-brown) 18%, transparent);
}

.comparison-table-icon {
  display: block;
  max-width: 100%;
  height: auto;
  margin-inline: auto;
}

@media (max-width: 1359px) {
  .comparison-table-icon {
    width: calc(72 * 100vw / 375);
  }
}

.comparison-table-text {
  text-align: left;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.6;
  color: var(--color-main-black);
}

@media (max-width: 768px) {
  .comparison-table-text {
    font-size: calc(14 * 100vw / 375);
  }
}

.comparison-copy {
  color: var(--color-main-brown);
  font-size: 38px;
  font-feature-settings: "palt";
  letter-spacing: 0.06em;
  text-align: center;
  line-height: 1.6;

  strong {
    font-weight: 700;
  }
}

@media (min-width: 769px) and (max-width: 1024px) {
  .comparison-copy {
    font-size: calc(38 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .comparison-copy {
    font-size: calc(24 * 100vw / 375);
  }
}

/* ---------------------------------------------
*   History
--------------------------------------------- */
.sticky-wrap,
.scroll-container {
  height: 100vh;
  height: 100dvh;
}

.history {
  position: relative;
  background-color: var(--color-pure-white);
  overflow: visible;
  background-color: var(--color-main-brown-ultra-light);
  height: 100dvh;
  box-sizing: border-box;
  display: flex;
  align-items: flex-start;
}

/* .history.horizontal-scrollセクション全体をstickyに */
.history.horizontal-scroll {
  position: -webkit-sticky; /* Safari対応 */
  position: sticky;
  top: 0;
  left: 0;
  width: var(--history-scroll-width, 4246px);
  height: 100vh;
  height: 100dvh;
  display: flex;
  align-self: flex-start;
  z-index: 1; /* Safari用 */
  will-change: position;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-x;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .history.horizontal-scroll {
    width: var(--history-scroll-width, calc(4246 * 100vw / 1366));
  }
}

@media (max-width: 768px) {
  .history.horizontal-scroll {
    width: var(--history-scroll-width, calc(3558 * 100vw / 375));
  }
}

.history-inner {
  position: relative;
  z-index: 1;
  width: 100%;
  padding-block: 90px 116px;
}

@media (min-width: 768px) and (max-width: 1365px) {
  .history-inner {
    padding-block: calc(216 * 100vw / 1366) calc(136 * 100vw / 1366);
  }
}

/* タブレットが横向きの時のメディアクエリ landscapeが横画面の時 */
@media (min-width: 768px) and (max-width: 1365px) and (orientation: landscape) {
  .history-inner {
    padding-block: 120px calc(136 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .history-inner {
    padding-block: calc(80 * 100vw / 375);
  }
}

.history-background {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--history-scroll-width, 4246px);
  /* width: 4246px; */
  height: 100%;
  background: linear-gradient(to right, var(--color-main-brown-ultra-light) 0%, var(--color-main-brown-ultra-light) 46%, var(--color-main-brown) 100%);
  z-index: 0;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .history-background {
    width: var(--history-scroll-width, calc(4246 * 100vw / 1366));
  }
}

@media (max-width: 768px) {
  .history-background {
    width: var(--history-scroll-width, calc(3558 * 100vw / 375));
  }
}

.history-title {
  font-feature-settings: "palt";
  letter-spacing: 0.05em;
  max-width: 100vw;
  position: relative;
  z-index: 2;
  margin-block-end: 44px;
  font-size: 32px;

  &::before {
    content: "";
    position: absolute;
    top: -30px;
    left: -18px;
    width: 177px;
    height: 66px;
    background: url(../images/obj_x.svg) no-repeat center center / 100% auto;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .history-title {
    margin-block-end: calc(44 * 100vw / 1366);
    font-size: calc(30 * 100vw / 1366);
  }
}

@media (min-width: 768px) and (max-width: 1365px) and (orientation: landscape) {
  .history-title {
    margin-block-end: calc(60 * 100vw / 1366);
    &::before {
      top: calc(-90 * 100vw / 1365);
    }
  }
}

@media (max-width: 768px) {
  .history-title {
    margin-block-end: calc(40 * 100vw / 375);

    &::before {
      top: calc(-77 * 100vw / 375);
      left: calc(-18 * 100vw / 375);
      width: calc(136 * 100vw / 375);
      height: calc(61 * 100vw / 375);
    }
  }
}
@media (max-width: 767px) {
  .history-title {
    font-size: calc(24 * 100vw / 375);
  }
}

.history-wrapper {
  position: relative;
  display: flex;
  align-items: center;
  width: var(--history-scroll-width, 4246px);
  height: 628px;
  padding-inline-start: 180px;

  &::before {
    position: absolute;
    top: 398px;
    left: 180px;
    content: "";
    width: var(--history-chronology-width, 3156px);
    height: 10px;
    background: linear-gradient(to right, var(--color-main-brown) 0%, var(--color-main-brown-ultra-light) 100%);
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .history-wrapper {
    padding-inline-start: calc(180 * 100vw / 1366);
    width: var(--history-scroll-width, calc(4246 * 100vw / 1366));
    height: calc(628 * 100vw / 1366);

    &::before {
      top: calc(398 * 100vw / 1366);
      left: calc(180 * 100vw / 1366);
      width: var(--history-chronology-width, calc(3156 * 100vw / 1366));
      height: calc(10 * 100vw / 1366);
    }
  }
}

@media (max-width: 768px) {
  .history-wrapper {
    width: var(--history-scroll-width, calc(3558 * 100vw / 375));
    padding-inline-start: calc(50 * 100vw / 375);
    height: calc(520 * 100vw / 375);

    &::before {
      width: var(--history-chronology-width, calc(2783 * 100vw / 375));
      top: calc(304 * 100vw / 375);
      left: calc(44 * 100vw / 375);
    }
  }
}

.history-item {
  display: flex;
  flex-shrink: 0;
  flex-direction: column;
  padding-inline: 54px 116px;
  position: relative;
  height: 100%;

  &::before {
    content: "";
    position: absolute;
    left: 0;
    width: 1px;
    height: 410px;
    background-color: var(--color-main-brown);
  }

  &::after {
    content: "";
    position: absolute;
    top: 393px;
    left: -11px;
    width: 22px;
    height: 22px;
    background-color: var(--color-main-brown);
    border-radius: 50%;
  }

  &.item1931 {
    .history-item-image {
      margin-block-start: 16px;
      margin-inline-start: 226px;
    }

    &::before {
      top: 0;
    }
  }

  &.item1966 {
    padding-inline-end: 150px;

    .history-item-age {
      order: 3;
      margin-block-start: 106px;
    }
    .history-item-head {
      order: 2;
    }
    .history-item-image {
      order: 1;
      translate: -54px;
    }

    &::before {
      bottom: 0;
    }
  }
  &.item1992 {
    padding-inline-end: 150px;

    .history-item-image {
      margin-left: 240px;
      translate: 0 -15px;
    }

    &::before {
      top: 0;
    }
  }
  &.item2001 {
    padding-inline-end: 150px;
    padding-block-start: 186px;

    .history-item-age {
      order: 3;
      margin-block-start: 88px;
    }
    .history-item-head {
      order: 2;
    }
    .history-item-image {
      order: 1;
      translate: -54px;
    }


    &::before {
      bottom: 0;
    }
  }
  &.item2025 {
    padding-inline-end: 180px;

    .history-item-title {
      margin-block-start: 48px;
    }
    .history-item-text {
      font-size: 16px;

      img {
        width: 420px;
        margin-inline-end: 36px;
      }

      span {
        display: inline-block;
        translate: 0 3px;
      }
    }

    &::before {
      top: 0;
    }
  }
  &.itemNext {
    padding-inline-end: 335px;

    .history-item-age {
      color: var(--color-pure-white);
    }
    .history-item-title {
      color: var(--color-pure-white);
    }
    .history-item-text {
      color: var(--color-pure-white);
    }
    .history-item-copy {
      margin-block-start: 62px;
      margin-inline-start: 76px;
      color: var(--color-pure-white);
      font-size: 40px;
      font-weight: 700;
    }

    &::before {
      top: 0;
    }
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .history-item {
    padding-inline: calc(54 * 100vw / 1366) calc(116 * 100vw / 1366);

    &::before {
      height: calc(410 * 100vw / 1366);
    }

    &::after {
      top: calc(393 * 100vw / 1366);
      left: calc(-11 * 100vw / 1366);
      width: calc(22 * 100vw / 1366);
      height: calc(22 * 100vw / 1366);
    }

    &.item1931 {
      .history-item-image {
        margin-block-start: calc(16 * 100vw / 1366);
        margin-inline-start: calc(226 * 100vw / 1366);
      }
    }

    &.item1966 {
      padding-inline-end: calc(150 * 100vw / 1366);

      .history-item-age {
        margin-block-start: calc(106 * 100vw / 1366);
      }
      .history-item-image {
        translate: calc(-54 * 100vw / 1366);
      }
    }
    &.item1992 {
      padding-inline-end: calc(150 * 100vw / 1366);

      .history-item-image {
        margin-left: calc(240 * 100vw / 1366);
        translate: 0 calc(-15 * 100vw / 1366);
      }
    }
    &.item2001 {
      padding-inline-end: calc(150 * 100vw / 1366);
      padding-block-start: calc(186 * 100vw / 1366);

      .history-item-age {
        margin-block-start: calc(88 * 100vw / 1366);
      }
      .history-item-image {
        translate: calc(-54 * 100vw / 1366);
      }
    }
    &.item2025 {
      padding-inline-end: calc(180 * 100vw / 1366);

      .history-item-title {
        margin-block-start: calc(36 * 100vw / 1366);
      }
      .history-item-text {
        font-size: calc(20 * 100vw / 1366);

        img {
          width: calc(420 * 100vw / 1366);
          margin-inline-end: calc(26 * 100vw / 1366);
        }
      }
    }
    &.itemNext {
      padding-inline-end: calc(335 * 100vw / 1366);

      .history-item-copy {
        margin-block-start: calc(70 * 100vw / 1366);
        margin-inline-start: calc(100 * 100vw / 1366);
        font-size: calc(44 * 100vw / 1366);
      }
    }
  }
}

@media (max-width: 768px) {
  .history-item {
    padding-inline: calc(40 * 100vw / 375) calc(48 * 100vw / 375);

    &::before {
      height: calc(305 * 100vw / 375);
    }

    &::after {
      top: calc(298 * 100vw / 375);
    }

    &.item1931 {
      padding-inline-end: calc(75 * 100vw / 375);

      .history-item-image {
        margin-block-start: calc(15 * 100vw / 375);
        margin-inline-start: calc(180 * 100vw / 375);
      }
    }
    &.item1966 {
      padding-inline-end: calc(75 * 100vw / 375);

      .history-item-age {
        margin-block-start: calc(40 * 100vw / 375);
      }
      .history-item-image {
        translate: calc(-32 * 100vw / 375);
      }
    }
    &.item1992 {
      padding-inline-end: calc(75 * 100vw / 375);
      .history-item-image {
        margin-left: calc(214 * 100vw / 375);
      }
    }
    &.item2001 {
      padding-inline-end: calc(75 * 100vw / 375);
      padding-block-start: calc(142 * 100vw / 375);
      .history-item-age {
        margin-block-start: calc(40 * 100vw / 375);
      }
      .history-item-title {
        margin-block-start: calc(26 * 100vw / 375);
      }
    }
    &.item2025 {
      padding-inline-end: calc(75 * 100vw / 375);

      .history-item-title {
        margin-block-start: calc(26 * 100vw / 375);
      }

      .history-item-text {
        margin-block-start: calc(40 * 100vw / 375);
        font-size: calc(24 * 100vw / 375);

        img {
          width: calc(380 * 100vw / 375);
          margin-inline-end: calc(16 * 100vw / 375);
        }

        span {
          font-size: calc(16 * 100vw / 375);
        }
      }
    }
    &.itemNext {
      padding-inline-end: calc(120 * 100vw / 375);

      .history-item-copy {
        margin-block-start: calc(30 * 100vw / 375);
        margin-inline-start: 0;
        font-size: calc(36 * 100vw / 375);
      }
    }
  }
}

.history-item-age {
  font-family: var(--font-family-en);
  font-size: 80px;
  font-weight: 700;
  font-style: italic;
  color: var(--color-main-brown);
  line-height: 1;
  translate: -14px;
  letter-spacing: -0.05em;

  span {
    margin-block-start: 14px;
    display: block;
    font-style: normal;
    font-family: revert;
    font-size: 20px;
    padding-inline-start: 14px;
    letter-spacing: 0;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .history-item-age {
    font-size: calc(90 * 100vw / 1366);
    translate: calc(-14 * 100vw / 1366);

    span {
      margin-block-start: calc(14 * 100vw / 1366);
      font-size: calc(20 * 100vw / 1366);
      padding-inline-start: calc(14 * 100vw / 1366);
    }
  }
}

@media (max-width: 768px) {
  .history-item-age {
    font-size: calc(60 * 100vw / 375);

    span {
      font-size: calc(18 * 100vw / 375);
    }
  }
}

.history-item-title {
  margin-block-start: 18px;
  font-size: 24px;
  font-weight: 700;
  font-feature-settings: "palt";
  letter-spacing: 0.05em;
  line-height: 1.5;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .history-item-title {
    margin-block-start: calc(18 * 100vw / 1366);
    font-size: calc(24 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .history-item-title {
    margin-block-start: calc(16 * 100vw / 375);
    font-size: calc(20 * 100vw / 375);
  }
}

.history-item-text {
  margin-block-start: 20px;
  font-size: 16px;
  font-weight: 500;
  letter-spacing: 0.06em;
  line-height: 1.5;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .history-item-text {
    margin-block-start: calc(20 * 100vw / 1366);
    font-size: calc(16 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .history-item-text {
    margin-block-start: calc(14 * 100vw / 375);
    font-size: calc(14 * 100vw / 375);
    letter-spacing: 0;
  }
}


.history-item-image {
  display: block;

  &.img1931 {
    width: 169px;
  }
  &.img1966 {
    width: 305px;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .history-item-image {
    &.img1931 {
      width: calc(169 * 100vw / 1366);
    }
    &.img1966 {
      width: calc(305 * 100vw / 1366);
    }
  }
}

@media (max-width: 768px) {
  .history-item-image {
    &.img1931 {
      width: calc(150 * 100vw / 375);
    }
    &.img1966 {
      width: calc(269 * 100vw / 375);
    }
  }
}

/* ---------------------------------------------
*   plan
--------------------------------------------- */
.plan {
  background-color: var(--color-pure-white);
  padding-block: 160px 0;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan {
    padding-block: calc(160 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .plan {
    padding-block: calc(96 * 100vw / 375);
  }
}

.plan-inner {
  max-width: calc(1100px + 40px);
  padding-inline: 20px;
  margin-inline: auto;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-inner {
    padding-inline: calc(20 * 100vw / 1366);
  }
}

.plan-body {
  margin-block-start: 92px;
  padding-block-end: 8px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-body {
    margin-block-start: calc(92 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .plan-body {
    margin-block-start: calc(74 * 100vw / 375);
  }
}

.plan-column-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-column-list {
    gap: calc(20 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .plan-column-list {
    grid-template-columns: 1fr;
    gap: calc(80 * 100vw / 375);
  }
}

.plan-column-list-item {
  border-radius: 12px;
  border: 3px solid var(--color-main-brown);
  background-color: var(--color-pure-white);
  padding-block: 46px 32px;
  padding-inline: 40px;
  position: relative;

  &::after {
    position: absolute;
    bottom: -10px;
    right: 31px;
    content: "";
    width: 22px;
    height: 18px;
    background: var(--color-pure-white) url(../images/img_obj.png) no-repeat top left / 100% auto;
  }

  &.onpremises {
    padding-block-start: 42px;
    .plan-item-head {
      padding-block-end: 18px;
    }
    .plan-item-text {
      font-size: 16px;
    }
    .plan-item-image {
      transform: translateY(-10px);
    }
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-column-list-item {
    padding-block: calc(46 * 100vw / 1366) calc(32 * 100vw / 1366);
    padding-inline: calc(40 * 100vw / 1366);

    &::after {
      width: calc(22 * 100vw / 1366);
      height: calc(18 * 100vw / 1366);
      bottom: calc(-10px * 100vw / 1366);
      right: calc(31 * 100vw / 1366);
    }
  }
  .plan-column-list-item.onpremises {
    .plan-item-head {
      padding-block-end: calc(18 * 100vw / 1366);
    }
    .plan-item-text {
      font-size: calc(16 * 100vw / 1366);
    }
    .plan-item-image {
      transform: translateY(calc(-10px * 100vw / 1366));
    }
  }
}

@media (max-width: 768px) {
  .plan-column-list-item {
    padding-block: calc(42 * 100vw / 375) calc(32 * 100vw / 375);
    padding-inline: calc(24 * 100vw / 375) calc(17 * 100vw / 375);

    &::after {
      width: calc(22 * 100vw / 375);
      height: calc(14 * 100vw / 375);
      bottom: calc(-6 * 100vw / 375);
      right: calc(31 * 100vw / 375);
    }

    &.onpremises {
      .plan-item-head {
        padding-block-end: calc(18 * 100vw / 375);
      }
      .plan-item-text {
        font-size: calc(16 * 100vw / 375);
      }
      .plan-item-image {
        transform: translateY(calc(-10px * 100vw / 375));
      }
    }
  }
}

.plan-column-list-item-heading {
  display: flex;
  align-items: center;
  gap: 20px;
  font-size: 28px;
  font-weight: 700;
  font-feature-settings: "palt";
  line-height: 1;
  background-color: var(--color-pure-white);
  position: absolute;
  top: -0.8em;
  left: 30px;

  img {
    transform: translateY(6px);
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-column-list-item-heading {
    align-items: flex-end;
    left: calc(30 * 100vw / 1366);
    font-size: calc(28 * 100vw / 1366);
    gap: calc(20 * 100vw / 1366);

    img {
      transform: none;
    }
  }
}

@media (max-width: 768px) {
  .plan-column-list-item-heading {
    align-items: flex-end;
    font-size: calc(28 * 100vw / 375);
    left: calc(26 * 100vw / 375);
    gap: calc(14 * 100vw / 375);

    img {
      transform: none;
      width: calc(22 * 100vw / 375);
      height: calc(14 * 100vw / 375);
    }
  }
}

.plan-item-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding-block-end: 40px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-item-head {
    padding-block-end: calc(40 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .plan-item-head {
    flex-direction: column;
    align-items: flex-start;
  }
}

.plan-item-label {
  display: inline-block;
  background-color: var(--color-main-brown);
  color: var(--color-pure-white);
  padding-block: 10px;
  padding-inline: 10px;
  border-radius: 4px;
  font-size: 14px;
  font-weight: 700;
  font-feature-settings: normal;
  letter-spacing: 0.05em;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-item-label {
    font-size: calc(14 * 100vw / 1366);
    padding-block: calc(5 * 100vw / 1366);
    padding-inline: calc(10 * 100vw / 1366);
  }
}

@media (min-width: 769px) {
  .plan-item-label {
    margin-block-end: 0;
  }
}

@media (max-width: 768px) {
  .plan-item-label {
    font-size: calc(14 * 100vw / 375);
    padding-block: calc(6 * 100vw / 375);
    padding-inline: calc(10 * 100vw / 375);
    margin-block-end: calc(10 * 100vw / 375);
  }
}

@media (max-width: 768px) {
  .plan-item-label.u-tablet-mobile-hidden {
    display: none;
  }
}

@media (min-width: 769px) {
  .plan-item-label.u-tablet-mobile-visible {
    display: none;
  }
}


.plan-item-model {
  display: inline-block;
  color: var(--color-pure-white);
  background-color: var(--color-primary-blue);
  padding-inline: 10px;
  border-radius: 4px;
  font-size: 30px;
  font-weight: 700;
  margin-block-end: 20px;
}
.onpremises .plan-item-model {
  padding-inline: 18px;
  line-height: 1.2;
  padding-block: 8px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-item-model {
    font-size: calc(30 * 100vw / 1366);
    margin-block-end: calc(20 * 100vw / 1366);
    padding-inline: calc(10 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .plan-item-model {
    font-size: calc(30 * 100vw / 375);
    margin-block-end: calc(20 * 100vw / 375);
    padding-inline: calc(10 * 100vw / 375);
  }
}

.plan-item-text {
  font-size: 18px;
  font-weight: 500;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-item-text {
    font-size: calc(18 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .plan-item-text {
    font-size: calc(18 * 100vw / 375);
  }
}

.plan-item-image {
  transform: translateY(10px);
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-item-image {
    transform: translateY(calc(10 * 100vw / 1366));
  }
}

@media (max-width: 768px) {
  .plan-item-image {
    transform: none;
    margin-block-start: calc(12 * 100vw / 375);

    img {
      width: calc(241 * 100vw / 375);
    }
  }
}

.plan-contents-wrapper {
  padding-block-start: 32px;
  background-image : linear-gradient(to right, var(--color-main-brown) 2px, transparent 2px);
  background-size: 6px 2px;
  background-repeat: repeat-x;
  background-position: left top;
  display: grid;
  grid-template-columns: calc(61% - 10px) calc(39% - 10px);
  gap: 20px;

  &.onpremises {
    grid-template-columns: calc(40% - 10px) calc(60% - 10px);
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-contents-wrapper {
    padding-block-start: calc(32 * 100vw / 1366);
    gap: calc(20 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .plan-contents-wrapper {
    grid-template-columns: 1fr;
    padding-block-start: calc(36 * 100vw / 375);

    &.onpremises {
      grid-template-columns: 1fr;
    }
  }
}

.plan-contents {
  &.pros .plan-contents-list {
    color: var(--color-primary-blue);
  }
}

.plan-contents-heading {
  font-size: 18px;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 10px;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-contents-list {
    font-size: calc(18 * 100vw / 1366);
    gap: calc(10 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .plan-contents-heading {
    font-size: calc(18 * 100vw / 375);
    gap: calc(10 * 100vw / 375);

    img {
      width: calc(20 * 100vw / 375);
    }
  }
}

.plan-contents-list {
  margin-block-start: 6px;
  padding-inline-start: 1em;
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-contents-list {
    margin-block-start: calc(6 * 100vw / 1366);
  }
}

@media (max-width: 768px) {
  .plan-contents-list {
    margin-block-start: calc(10 * 100vw / 375);
    padding-inline-start: 1.2em;
  }
}

.plan-contents-item {
  list-style: disc;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.5;

  span {
    font-size: 14px;
  }
}

@media (min-width: 769px) and (max-width: 1365px) {
  .plan-contents-item {
    font-size: calc(16 * 100vw / 1366);

    span {
      font-size: calc(14 * 100vw / 1366);
    }
  }
}

@media (max-width: 768px) {
  .plan-contents-item {
    font-size: calc(15 * 100vw / 375);
    letter-spacing: 0;
    text-indent: -0.2em;

    span {
      font-size: calc(14 * 100vw / 375);
    }
  }
}

/* ---------------------------------------------
*   cta
--------------------------------------------- */
	.cta {
	padding: calc(80 * 100vw / 1366) calc(6 * 100vw / 1366)	calc(80 * 100vw / 1366) calc(20 * 100vw / 1366);
	padding-inline: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 40px;
}

.cta-button {
  width: 340px;
  height: 70px;
  letter-spacing: -0.02em;
}

.cta-button.-demo .button,
.cta-button.-inquiry .button {
	background-color: var(--color-pure-white);
	color: var(--color-main-brown);
	border: 2px solid var(--color-main-brown);
}

@media (max-width: 1024px) {
  .cta {
    gap: 20px;
  }
}

@media (max-width: 768px) {
  .cta {
    flex-direction: column;
  }

  .cta-button {
    width: calc(330 * 100vw / 375);
    height: calc(70 * 100vw / 375);
	}
}

	/* ---------------------------------------------
*  Animation settings
--------------------------------------------- */
	.feature-sub-section-title {
  opacity: 0;
  transform: translateY(30px);
}

#feature-performance .feature-column-item {
  opacity: 0;
  transform: translateY(30px);
}

#feature-performance .feature-column-item > figure {
  opacity: 0;
  transform: translateY(30px);
}

#feature-performance .feature-column-item-heading {
  opacity: 0;
  transform: translateY(30px);
}

#feature-performance .feature-column-item-text {
  opacity: 0;
  transform: translateY(30px);
}

#feature-performance .feature-dialog-button {
  opacity: 0;
  transform: translateY(30px);
}

#feature-support .feature-sub-section-title {
  opacity: 0;
  transform: translateY(30px);
}

#feature-support .feature-support-item.-before {
  --before-opacity: 0;
  --before-translate-x: -50px;
  --before-translate-y: 0px;
}

#feature-support .feature-support-item.-before::before {
  opacity: var(--before-opacity);
  transform: translate(
    var(--before-translate-x, 0px),
    var(--before-translate-y, 0px)
  );
}

#feature-support .feature-support-item.-after {
  --after-opacity: 0;
  --after-translate-x: -50px;
  --after-translate-y: 0px;
}

#feature-support .feature-support-item.-after::before {
  opacity: var(--after-opacity);
  transform: translate(
    var(--after-translate-x, 0px),
    var(--after-translate-y, 0px)
  );
}

@media (max-width: 768px) {
  #feature-support .feature-support-item.-before {
    --before-translate-x: 0px;
    --before-translate-y: -50px;
  }

  #feature-support .feature-support-item.-before::before {
    transform: translate(-50%, 10px);
  }

  #feature-support .feature-support-item.-after {
    --after-translate-x: 0px;
    --after-translate-y: -50px;
  }

  #feature-support .feature-support-item.-after::before {
    transform: translate(-50%, -50px);
  }
}

#feature-support .feature-support-item .feature-support-text,
#feature-support .feature-support-item .feature-support-item-title,
#feature-support .feature-support-item .feature-support-item-contents {
  opacity: 0;
  transform: translateY(30px);
}

#feature-support .feature-strengths-item {
  opacity: 0;
  transform: translateY(30px);
}

#feature-ui .feature-sub-section-title {
  opacity: 0;
  transform: translateY(30px);
}

#feature-ui .feature-ui-tab-buttons {
  opacity: 0;
  transform: translateY(30px);
}

.section.partner .partner-copy {
  opacity: 0;
  transform: translateY(30px);
}

.section.partner .partner-logo {
  opacity: 0;
  transform: translateY(30px);
}

.footer-download-title {
  opacity: 0;
  transform: translateY(30px);
}

.footer-download-logo {
  opacity: 0;
  transform: translateY(30px);
}

.footer-download-button {
  opacity: 0;
  transform: translateY(30px);
}

.footer-download-textlinks {
  opacity: 0;
  transform: translateY(30px);
}
