@charset "UTF-8";
/*!
Theme Name: Theme
Description: theme.
Version: 1.0
Author: Artarakt
Author URI: http://artarakt.com
Version: 1.0
License: Artarakt
License URI: http://artarakt.com
*/
*, *::before, *::after {
  box-sizing: border-box; }

* {
  margin: 0;
  padding: 0; }

html, body {
  height: 100%; }

body {
  line-height: 1.5;
  -webkit-font-smoothing: antialiased; }

img, picture, video, canvas, svg {
  display: inline-block;
  max-width: 100%; }

input, button, textarea, select {
  font: inherit; }

p, h1, h2, h3, h4, h5, h6 {
  overflow-wrap: break-word; }

a {
  text-decoration: none; }

#root, #__next {
  isolation: isolate; }

input[type="submit"],
input[type="button"] {
  background: 0;
  border-radius: 0;
  -webkit-box-sizing: content-box;
  -webkit-appearance: button;
  appearance: button;
  border: none;
  box-sizing: border-box; }
  input[type="submit"]::-webkit-search-decoration,
  input[type="button"]::-webkit-search-decoration {
    display: none; }
  input[type="submit"]::focus,
  input[type="button"]::focus {
    outline-offset: -2px; }

html, body {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0; }

body {
  font-family: serif;
  font-size: 16px;
  line-height: 35px;
  font-weight: 400;
  color: #000; }

small {
  font-size: 90%; }

a {
  transition-duration: 0.5s; }

a:hover {
  transition-duration: 0.5s; }

.hidden {
  display: none; }

.sp {
  display: none !important; }

.pc {
  display: block !important; }

@media screen and (max-width: 420px) {
  .sp {
    display: block !important; }
  .pc {
    display: none !important; } }

.flex {
  display: flex;
  align-items: flex-start; }

.inner {
  width: 100%;
  max-width: 1000px;
  margin: 0 auto; }

.center {
  text-align: center; }

@media screen and (max-width: 840px) {
  .flex {
    display: block; } }

html,
body {
  height: 100%; }

body {
  margin: 0;
  background: #282828;
  font-family: "Noto Sans JP", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Noto Sans JP", "Yu Gothic", "Meiryo", sans-serif;
  overflow-x: hidden;
  color: #fff; }

/* ----------------------------
   Background Vimeo
   PC: right-bottom, width 90vw (object-like)
   SP: bottom, 100vw x 50vh, crop allowed
---------------------------- */
.bg-video {
  position: fixed;
  right: 0;
  bottom: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
  width: 90vw;
  max-height: 90vh; }

.bg-video iframe {
  display: block;
  width: 100%;
  height: 56.25vw;
  /* 16:9 */
  max-height: 90vh;
  border: none; }

/* ----------------------------
   Overlay
---------------------------- */
.overlay {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1;
  /* 左濃く、右薄く */
  background: linear-gradient(90deg, rgba(0, 0, 0, 0.58) 0%, rgba(0, 0, 0, 0.58) 52%, rgba(0, 0, 0, 0.45) 68%, rgba(0, 0, 0, 0.25) 100%); }

/* ----------------------------
   Layout
---------------------------- */
.wrap {
  position: relative;
  z-index: 2;
  min-height: 100vh;
  width: 100%;
  box-sizing: border-box;
  padding: 45px 55px;
  /* PC */
  display: flex;
  flex-direction: column; }

.hero {
  margin: 0;
  padding: 0;
  width: 100%; }
  .hero img,
  .hero picture {
    display: block;
    width: 100%;
    height: auto; }

/* ----------------------------
   CTA (hero直下 / 通常フロー)
   margin-top: 48px (PC/SP共通)
   SPでも左寄せ
---------------------------- */
.cta {
  margin-top: 48px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 36px;
  flex-wrap: wrap; }

.btn {
  width: 280px;
  height: 67px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.9);
  color: #000;
  text-decoration: none;
  font-size: 18px;
  font-weight: 500;
  letter-spacing: 0.02em;
  border-radius: 0;
  position: relative;
  padding-right: 44px;
  box-sizing: border-box;
  transition: opacity 0.25s ease; }

.btn:after {
  content: "→";
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  opacity: 1;
  transition: transform 0.25s ease, opacity 0.25s ease; }

.btn:hover {
  opacity: 0.6; }

.btn:hover:after {
  transform: translateY(-50%) translateX(16px);
  opacity: 0; }

.note {
  margin: 0;
  font-size: 24px;
  font-weight: 300;
  color: #fff;
  line-height: 1.2;
  white-space: nowrap; }

/* ----------------------------
   Logo bottom-right
---------------------------- */
.logo {
  position: fixed;
  right: 55px;
  bottom: 45px;
  z-index: 3;
  margin: 0; }

.logo img {
  display: block;
  width: 226px;
  height: auto; }

/* ----------------------------
   Footer (通常フローで下へ)
---------------------------- */
.footer {
  margin-top: auto;
  padding-top: 24px; }

.copy {
  margin: 0;
  font-size: 10px;
  color: #fff;
  opacity: 0.9; }

/* ----------------------------
   Responsive
---------------------------- */
@media screen and (max-width: 840px) {
  .note {
    white-space: normal; }
  .wrap {
    padding: 20px; }
  /* SPは全体やや濃く（読みやすさ優先） */
  .overlay {
    background: rgba(0, 0, 0, 0.55); }
  /* SP: 背景映像を高さ半分くらい、横トリミングOK */
  .bg-video {
    right: 0;
    left: 0;
    /* 横いっぱい */
    width: 100vw;
    height: 50vh;
    /* 高さ半分くらい */
    max-height: none;
    /* PC用の制限を解除 */ }
  /* iframeをcoverっぽく見せる（中央寄せで横をトリミング） */
  .bg-video iframe {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    /* coverのために、コンテナより大きくする */
    width: 160vw;
    /* 横を伸ばしてトリミング */
    height: 90vh;
    /* 高さも伸ばしてトリミング */
    max-height: none; }
  /* CTA: 左寄せ維持（中央寄せにしない） */
  .cta {
    margin-top: 48px;
    /* PC/SP共通 */
    gap: 12px;
    flex-direction: column;
    align-items: flex-start;
    text-align: left; }
  .btn {
    font-size: 16px;
    width: 100%;
    max-width: 280px; }
  .note {
    font-size: 16px;
    white-space: normal; }
  .logo {
    display: none;
    right: 20px;
    bottom: 20px; }
  .logo img {
    width: 180px; } }
