html {
  overflow-x: hidden; /* bodyに指定するとscrollYが0固定になるためhtmlのみ */
}
html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
}
body {
  background: var(--color-white);
  color: var(--color-text);
  font-family: var(--font-sans);
}
.link-pc-viewport {
  --pc-base-width: 1920;
  --pc-pin: 2600;
  --pc-info-h: 166;
  --pc-foot-pad: 100;
  --pc-fv-extra: 125;
  --pc-base-height: calc(7299 - var(--pc-info-h) + var(--pc-pin) + var(--pc-fv-extra) + var(--pc-foot-pad));
  --pc-scale: var(--pc-scale-js, calc(100vw / (var(--pc-base-width) * 1px)));
  position: relative;
  width: 100%;
  height: calc(var(--pc-base-height) * 1px * var(--pc-scale));
  overflow: hidden;
}
.link-pc {
  position: absolute;
  top: 0;
  left: 50%;
  width: 1920px;
  height: calc(var(--pc-base-height) * 1px);
  background: var(--color-white);
  overflow: hidden;
  transform: translateX(-50%) scale(var(--pc-scale));
  transform-origin: top center;
}
.link-pc .abs { position: absolute; }
.link-pc p, .link-pc h1, .link-pc h2 { margin: 0; padding: 0; font-weight: 400; }
.link-pc .nw { white-space: nowrap; }

/* ---------- Hero / Header ---------- */
.pc-hero { position: absolute; left: 0; top: 0; width: 1920px; height: calc((1296 + var(--pc-fv-extra)) * 1px); background: #fff; }
.pc-hero-photo {
  position: absolute; left: 0; top: 0; width: 1920px; height: calc((1296 + var(--pc-fv-extra)) * 1px); overflow: hidden;
}
.pc-hero-photo img { position: absolute; left: 0; top: 73px; width: 1920px; height: 1365px; max-width: none; }
.pc-hero-photo .fv-movie { position: absolute; left: 0; top: 73px; width: 1920px; height: 1296px; max-width: none; object-fit: cover; object-position: 50% 50%; background: #e9e6e0; }
/* 写真の上端の波形：XDの白い図形「合体 1」（アートボード座標のまま）を写真の上に重ねる */
.pc-hero-photo .fv-wave { position: absolute; left: 0; top: 0; width: 1920px; height: 1296px; }

/* ロゴはXDのベクターから書き出したSVG（座標はXD実測のバウンディングボックス） */
.pc-logo-mark { position: absolute; left: 342.56px; top: 66.8px; width: 161.13px; height: 253.5px; }
.pc-logo-mark img { width: 100%; height: 100%; }
.pc-logo-word { position: absolute; left: 532.38px; top: 139.28px; width: 219.83px; height: 50.18px; }
.pc-tag1 { position: absolute; left: 534px; top: 209px; font-family: var(--font-en); font-weight: 400; font-size: 20px; line-height: 30px; letter-spacing: 0; color: #000; white-space: nowrap; }
.pc-tag2 { position: absolute; left: 533px; top: 249px; font-family: var(--font-en); font-weight: 400; font-size: 16px; line-height: 30px; letter-spacing: 0; color: #000; white-space: nowrap; }

/* ナビ（ヘッダー・フッター共通） */
.pc-nav { position: absolute; width: 213px; border-left: 2px solid var(--color-text); padding-left: 21px; }
.pc-nav a { display: block; height: 35px; line-height: 35px; white-space: nowrap; color: #000; }
.pc-nav .en { font-family: var(--font-en); font-weight: 400; font-size: 16px; }
.pc-nav .ja { font-family: var(--font-sans); font-weight: 400; font-size: 12px; }
.pc-nav .sep { font-family: var(--font-en); font-size: 12px; padding: 0 4px; }
.pc-nav--header { left: 1182px; top: 3px; height: 223px; padding-top: 52px; }
.pc-nav--header a:first-child { margin-top: -7px; }

/* 縦書きキャッチ */
.pc-catch { position: absolute; left: 1522px; top: 97px; font-family: var(--font-serif); font-weight: 300; font-size: 30px; color: #000; }
.pc-catch span { display: block; width: 32px; height: 33px; line-height: 33px; text-align: center; }
.pc-catch .gap { height: 33px; }
.pc-catch .punc { writing-mode: vertical-rl; }
.pc-catch .punc:not(:last-child) { height: 18px; overflow: visible; }

/* ---------- Section heading ---------- */
.pc-h2 { position: absolute; white-space: nowrap; line-height: 40px; color: #000; }
.pc-h2 .en { font-family: var(--font-en); font-weight: 500; font-size: var(--pc-h2-en); letter-spacing: 0; }
.pc-h2 .ja { font-family: var(--font-sans); font-weight: 300; font-size: var(--pc-h2-ja); }
.pc-h2 .ja::before { content: ":"; font-family: var(--font-en); font-size: 20px; padding: 0 8px 0 10px; }

/* ---------- Concept ---------- */
.pc-concept-h2 { left: 386px; top: 1409px; }
.pc-concept-title { position: absolute; left: 878px; top: 1394px; font-family: var(--font-serif); font-weight: 400; font-size: 35px; line-height: 45px; white-space: nowrap; }
.pc-concept-sub { position: absolute; left: 879px; top: 1453px; font-family: var(--font-serif); font-size: 18px; line-height: 30px; white-space: nowrap; }
.pc-concept-body { position: absolute; left: 879px; top: 1536px; font-family: var(--font-serif); font-weight: 400; font-size: 18px; line-height: 45.2px; white-space: nowrap; font-feature-settings: "palt"; }
.pc-concept-body .blank { display: block; height: 45.2px; }

/* ---------- Information ---------- */
.pc-info { position: absolute; left: 0; top: 2436px; width: 1920px; height: 410px; background: var(--color-bg-info); overflow: hidden; }
.pc-info-h2 { left: 333px; top: 2530px; }
.pc-dots { position: absolute; left: 330px; top: 2591px; display: flex; gap: 11px; margin: 0; padding: 0; list-style: none; }
.pc-dots li { width: 10px; height: 10px; border-radius: 50%; border: 1px solid #9aa; background: transparent; }
.pc-dots li.is-on { background: var(--color-teal-dot); border-color: var(--color-teal-dot); }
.pc-viewall { position: absolute; left: 330px; top: 2706px; width: 306px; height: 50px; background: var(--color-teal-deep); color: #fff; font-family: var(--font-en); font-weight: 400; font-size: 22px; line-height: 50px; text-align: center; letter-spacing: 0.02em; }
.pc-viewall::after { content: ""; position: absolute; right: 18px; top: 17px; border-left: 9px solid #fff; border-top: 8px solid transparent; border-bottom: 8px solid transparent; }

.pc-card { position: absolute; top: 2515px; width: 743px; height: 264px; background: #fff; border-radius: 30px; }
.pc-card--1 { left: 741px; }
.pc-card--2 { left: 1519px; }
.pc-card-img { position: absolute; left: 31px; top: 26px; width: 321px; height: 215px; border-radius: 16px; overflow: hidden; }
.pc-card-img img { position: absolute; left: -26px; top: -24px; width: 373px; height: 264px; max-width: none; }
.pc-card-date { position: absolute; left: 397px; top: 34px; font-family: var(--font-serif); font-weight: 400; font-size: 18px; line-height: 28px; color: var(--color-teal); }
.pc-card-new { position: absolute; left: 671px; top: 26px; width: 31px; height: 31px; border-radius: 50%; background: var(--color-teal-dot); color: #fff; font-family: var(--font-en); font-size: 8px; line-height: 31px; text-align: center; }
.pc-card-title { position: absolute; left: 397px; top: 80px; font-family: var(--font-sans); font-weight: 300; font-size: 20px; line-height: 40px; color: var(--color-text); white-space: nowrap; }
.pc-card-tag { position: absolute; left: 606px; top: 218px; font-family: var(--font-serif); font-size: 16px; line-height: 24px; color: var(--color-teal); white-space: nowrap; }

/* ---------- Experience ---------- */
.pc-exp-h2 { left: 333px; top: 2990px; }
.pc-exp-lead { position: absolute; left: 331px; top: 3110px; font-family: var(--font-sans); font-weight: 400; font-size: 18px; line-height: 40px; white-space: nowrap; }
.pc-photo { position: absolute; overflow: hidden; border-radius: 20px; }
.pc-photo img { position: absolute; max-width: none; }
.pc-exp-item { position: absolute; width: 7px; height: 111px; }
.pc-exp-item .bar { position: absolute; left: 0; top: 0; width: 7px; height: 111px; }
.pc-exp-text { position: absolute; height: 111px; font-family: var(--font-sans); font-weight: 400; font-size: 18px; line-height: 37px; white-space: nowrap; }
.pc-exp-text strong { display: block; font-weight: 700; font-size: 24px; }

/* ---------- Space ---------- */
.pc-space { position: absolute; left: 0; top: 5252px; width: 1920px; height: 1202px; background: var(--color-bg-space); overflow: hidden; }
.pc-space-h2 { left: 332px; top: 5388px; }
.pc-space-list { position: absolute; left: 402px; top: 5509px; margin: 0; padding: 0; list-style: none; }
.pc-space-list li { height: 48.4px; line-height: 48px; white-space: nowrap; }
.pc-space-list .no, .pc-space-cap .no { font-family: var(--font-en); font-weight: 500; font-size: 28px; margin-right: 10px; }
.pc-space-list .tx, .pc-space-cap .tx { font-family: var(--font-sans); font-weight: 400; font-size: 20px; }
.pc-floor { position: absolute; left: 331.04px; top: 5900.54px; width: 413.88px; height: 378.4px; overflow: visible; }
.fl-t { font-family: var(--font-en); }
.pc-space-photo { position: absolute; left: 852px; top: 5470px; width: 1068px; height: 753px; overflow: hidden; }
/* 写真の切り抜き位置は index.html の img の style と #space-data の crop（新XDの値を%で）で指定 */
.pc-space-photo img { position: absolute; max-width: none; }
.pc-space-cap { position: absolute; left: 853px; top: 6241px; line-height: 48px; white-space: nowrap; }
.pc-space-cap .tx { margin-left: 14px; }
.pc-space-cap .tx:last-child { display: block; margin: 4px 0 0; font-size: 17px; line-height: 32px; white-space: nowrap; }

/* ---------- About / Footer ---------- */
.pc-about-h2 { left: 330px; top: 6545px; }
/* ロゴ・タグライン（XDではアウトライン済み）はSVG */
.pc-foot-logo { position: absolute; left: 373.2px; top: 6653.29px; width: 161.13px; height: 311.71px; }
.pc-foot-tag { position: absolute; left: 1041.12px; top: 6731px; width: 548.88px; height: 93.53px; }
.pc-address { position: absolute; left: 331px; top: 7056px; font-family: var(--font-sans); font-weight: 400; font-size: 16px; line-height: 35px; white-space: nowrap; }
.pc-address a { color: inherit; }
.pc-copy { position: absolute; left: 330px; top: 7256px; font-family: var(--font-en); font-weight: 300; font-size: 12px; line-height: 28px; white-space: nowrap; }
.pc-nav--foot { left: 1386px; top: 7051px; height: 248px; padding-top: 0; }
.pc-nav--foot a:first-child { margin-top: 0; }

/* 箇条書きの「●」（XDは小さめの丸） */
.pc-exp-text .dot, .sp-exp-txt .dot { display: inline-block; width: 6px; height: 6px; margin-right: 2px; border-radius: 50%; background: currentColor; vertical-align: middle; position: relative; top: -1px; }
[hidden] { display: none !important; }
/* FVより下の要素をまとめて --pc-pin だけ下げる（中の座標はXDのまま） */
.pc-after { position: absolute; left: 0; top: calc((var(--pc-pin) + var(--pc-fv-extra)) * 1px); width: 1920px; height: 0; }
/* Experience 以降を Information の高さぶん上へ詰める */
.pc-shift { position: absolute; left: 0; top: calc(var(--pc-info-h) * -1px); width: 1920px; height: 0; }
/* FVは止まっている間 motion.js が translate で画面に留める */
.pc-hero { z-index: 2; will-change: transform; }
.pc-nav a.foot-insta { display: inline-block; width: 28px; height: 28px; margin-top: 14px; line-height: 0; color: #000; transition: opacity .3s; }
.pc-nav a.foot-insta svg { width: 100%; height: 100%; }
@media (hover: hover) { .pc-nav a.foot-insta:hover { opacity: .55; } }
.pc-bank { position: absolute; left: 331px; top: 7220px; display: block; width: 230px; line-height: 0; transition: opacity .3s; }
.pc-bank img { display: block; width: 100%; height: auto; }
@media (hover: hover) { .pc-bank:hover { opacity: .6; } }
