@charset "UTF-8";

/* =========================================================
         トップページリニューアル: 独自ヘッダー+MV+Links
   ※ portal_update.html 専用。クラスは camelCase（プレフィックスなし）。
         ※ レスポンシブは各クラスの通常指定の直後にメディアクエリを併記する。
   ========================================================= */
.mv,.mv *{
  margin:0;
  padding:0;
  box-sizing:border-box;
}
:root{
  --tpu-cream:#f5f0e8;
  --tpu-dark:#161310;
  --tpu-accent:#BD2121;
  --tpu-white:#fff;
}

/* ---- HEADER ---- */
.siteHeader{
  position:fixed;
  top:0;
  left:0;
  right:0;
  z-index:200;
  padding:24px 48px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  pointer-events:none;
  transition:background .5s ease,backdrop-filter .5s ease,box-shadow .5s ease;
}
@media print, screen and (max-width: 1023px){
  .siteHeader{
    padding:18px 22px;
  }
}
.siteHeader.isScrolled{
  background:rgba(255,255,255,.98);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  box-shadow:0 1px 32px rgba(22,19,16,.08);
}
.siteLogo{
  pointer-events:auto;
  display:flex;
  align-items:center;
  position:relative;
}
.siteLogo img{
  height:34px;
  width:auto;
  display:block;
  transition:opacity .3s;
}
@media print, screen and (max-width: 1023px){
  .siteLogo img{
    height:28px;
  }
}
.logoDark{
  position:absolute;
  left:0;
  top:0;
  opacity:0;
}
.siteHeader.isScrolled .logoWhite{
  opacity:0;
}
.siteHeader.isScrolled .logoDark{
  opacity:1;
}
.siteNav{
  display:flex;
  gap:40px;
}
@media print, screen and (max-width: 1023px){
  .siteNav{
    display:none;
  }
}
.siteNav a{
  pointer-events:auto;
  font-size:15px;
  font-weight:300;
  letter-spacing:.16em;
  color:var(--tpu-white);
  text-decoration:none;
  position:relative;
  height:1.5em;
  overflow:hidden;
  display:inline-flex;
  flex-direction:column;
  transition:color .3s;
}
.siteNav a .en{
  transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .25s;
}
.siteNav a::before{
  content:attr(data-ja);
  position:absolute;
  top:100%;
  left:0;
  font-size:13px;
  letter-spacing:.05em;
  white-space:nowrap;
  transition:top .3s cubic-bezier(.22,1,.36,1),opacity .25s;
  opacity:0;
}
.siteNav a:hover .en{
  transform:translateY(-130%);
  opacity:0;
}
.siteNav a:hover::before{
  top:.15em;
  opacity:1;
}
.siteHeader.isScrolled .siteNav a{
  color:var(--tpu-dark);
}
.hamburger{
  display:none;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:5px;
  width:40px;
  height:40px;
  cursor:pointer;
  background:none;
  border:none;
  padding:0;
  pointer-events:auto;
}
@media print, screen and (max-width: 1023px){
  .hamburger{
    display:flex;
  }
}
.hamburger span{
  display:block;
  width:24px;
  height:1.5px;
  background:var(--tpu-white);
  transition:transform .35s cubic-bezier(.22,1,.36,1),opacity .25s,background .3s;
}
.siteHeader.isScrolled .hamburger span{
  background:var(--tpu-dark);
}
.hamburger.isOpen span{
  background:#fff;
}
.hamburger.isOpen span:nth-child(1){
  transform:translateY(6.5px) rotate(45deg);
}
.hamburger.isOpen span:nth-child(2){
  opacity:0;
}
.hamburger.isOpen span:nth-child(3){
  transform:translateY(-6.5px) rotate(-45deg);
}

/* ---- MOBILE MENU ---- */
.spMenu{
  position:fixed;
  inset:0;
  z-index:190;
  background:rgba(22,19,16,.97);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:44px;
  opacity:0;
  pointer-events:none;
  transition:opacity .45s cubic-bezier(.45,0,.55,1);
}
.spMenu.isOpen{
  opacity:1;
  pointer-events:auto;
}
.spMenu a{
  font-family:'Cormorant Garamond',serif;
  font-size:2rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:rgba(255,255,255,.85);
  text-decoration:none;
  text-align:center;
}
.spMenu a .ja{
  display:block;
  font-family:'Noto Sans JP',sans-serif;
  font-size:.62rem;
  letter-spacing:.2em;
  color:rgba(255,255,255,.4);
  margin-top:7px;
}

/* ---- MV (CAROUSEL) ---- */

/* このページはMVをヘッダー下まで全面表示するため、共通CSSの固定ヘッダー用余白を打ち消す */
body[data-current="top"] .wrapper{
  padding-top:0;
}
.mv{
  position:relative;
  width:100%;
  height:100vh;
  overflow:hidden;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
  background:#161310;
}
.mvSlide{
  position:absolute;
  inset:0;
  display:block;
  opacity:0;
  pointer-events:none;
  transition:opacity .9s cubic-bezier(.45,0,.55,1);
}
.mvSlide.isActive{
  opacity:1;
  pointer-events:auto;
}
.mvBg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  z-index:0;
}
.mvSlide.isActive .mvBg{
  animation:mvZoomOut 8s ease-out forwards;
}
@keyframes mvZoomOut{
  from{
    transform:scale(1.08);
  }
  to{
    transform:scale(1);
  }
}
.mvSlide::after{
  content:'';
  position:absolute;
  inset:0;
  z-index:1;
  background:linear-gradient(100deg,rgba(8,6,4,.72) 0%,rgba(8,6,4,.45) 40%,rgba(8,6,4,.08) 70%,rgba(8,6,4,0) 100%);
}
.mvCopy{
  position:absolute;
  top:50%;
  left:8%;
  transform:translateY(-50%);
  z-index:10;
  max-width:600px;
}
@media print, screen and (max-width: 1023px){
  .mvCopy{
    left:6%;
    right:6%;
    max-width:100%;
  }
}
.mvHeading{
  font-family:'Cormorant Garamond',serif;
  font-size:clamp(2.6rem,4.4vw,4rem);
  font-weight:500;
  line-height:1;
  color:#fff;
  letter-spacing:.02em;
  margin-bottom:14px;
  opacity:0;
  transform:translateY(18px);
  transition:opacity .8s .3s ease,transform .8s .3s ease;
}
.mvSlide.isActive .mvHeading{
  opacity:1;
  transform:translateY(0);
}

/* 画像見出し（headingImage 指定時）。テキスト見出しと同じ登場アニメーション */
.mvHeadingImg{
  display:block;
  width:auto;
  height:54px;
  max-width:min(70%,340px);
  margin-bottom:14px;
  opacity:0;
  transform:translateY(18px);
  transition:opacity .8s .3s ease,transform .8s .3s ease;
}
.mvSlide.isActive .mvHeadingImg{
  opacity:1;
  transform:translateY(0);
}

@media print, screen and (max-width: 1023px) {
  .mvHeadingImg{
    height:37px;
  }
}

.mvSubtitle{
  display:block;
  font-size:clamp(1rem,1.4vw,1.25rem);
  font-weight:300;
  color:#fff;
  letter-spacing:.04em;
  margin-bottom:28px;
  opacity:0;
  transform:translateY(12px);
  transition:opacity .7s .45s ease,transform .7s .45s ease;
}
.mvSlide.isActive .mvSubtitle{
  opacity:1;
  transform:translateY(0);
}
.mvCta{
  display:inline-flex;
  align-items:center;
  gap:18px;
  font-size:.85rem;
  font-weight:300;
  letter-spacing:.18em;
  color:#fff;
  text-decoration:none;
  background:rgba(255,255,255,.16);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,.3);
  border-radius:60px;
  padding:13px 16px 13px 26px;
  opacity:0;
  transform:translateY(12px);
  transition:opacity .7s .55s ease,transform .7s .55s ease;
}
.mvSlide.isActive .mvCta{
  opacity:1;
  transform:translateY(0);
}
.mvCtaArrow{
  width:36px;
  height:36px;
  border-radius:50%;
  background:rgba(255,255,255,.2);
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  transition:background .4s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1);
}
.mvCtaArrow svg{
  width:14px;
  color:#fff;
}
.mvSlide:hover .mvCtaArrow{
  background:var(--tpu-accent);
  transform:scale(1.15);
}

/* thumbnails */
.mvThumbs{
  position:absolute;
  right:24px;
  top:50%;
  transform:translateY(-50%);
  z-index:50;
  display:flex;
  flex-direction:column;
  gap:8px;
  max-height:70vh;
  padding:8px 4px;
}
@media print, screen and (max-width: 1023px){
  .mvThumbs{
    right:0;
    left:0;
    bottom:0;
    top:auto;
    transform:none;
    max-height:none;
    flex-direction:row;
    overflow-x:auto;
    overflow-y:hidden;
    justify-content:flex-start;
    align-items:flex-end;
    background:linear-gradient(to top, rgba(8, 6, 4, .65), transparent);
    padding:14px 16px 24px;
    gap:6px;
    scrollbar-width:none;
    -ms-overflow-style:none;
  }
  .mvThumbs::-webkit-scrollbar{
    display:none;
  }
}
.mvThumb{
  width:80px;
  height:56px;
  border-radius:4px;
  overflow:hidden;
  cursor:pointer;
  position:relative;
  border:2px solid rgba(255,255,255,.4);
  background:none;
  padding:0;
  flex-shrink:0;
  transition:height .4s cubic-bezier(.34,1.56,.64,1),width .4s cubic-bezier(.34,1.56,.64,1),border-color .3s;
}
.mvThumb::before{
  content:'';
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.3);
  z-index:2;
  transition:opacity .4s;
}
.mvThumb.isActive{
  height:88px;
  border-color:#fff;
}
.mvThumb.isActive::before{
  opacity:0;
}
.mvThumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .4s;
}
.mvThumb:hover img{
  transform:scale(1.06);
}
@media print, screen and (max-width: 1023px){
  .mvThumb{
    width:66px;
    height:46px;
    border-width:1.5px;
  }
  .mvThumb.isActive{
    width:94px;
    height:46px;
  }
}

/* counter */
.mvCounter{
  position:absolute;
  bottom:44px;
  right:24px;
  z-index:50;
  display:flex;
  align-items:flex-end;
  pointer-events:none;
}
@media print, screen and (max-width: 1023px){
  .mvCounter{
    bottom:96px;
    right:20px;
  }
}
.mvNum{
  font-weight:300;
  font-size:clamp(2.6rem,4vw,3.6rem);
  line-height:1;
  color:#fff;
  transition:opacity .35s ease,transform .35s ease;
}
@media print, screen and (max-width: 1023px){
  .mvNum{
    font-size:2.1rem;
  }
}
.mvNum.isChanging{
  opacity:0;
  transform:translateY(8px);
}
.mvSep{
  font-weight:300;
  font-size:clamp(1rem,1.6vw,1.4rem);
  color:rgba(255,255,255,.35);
  margin:0 8px 6px;
}
.mvTotal{
  font-weight:300;
  font-size:clamp(1rem,1.6vw,1.4rem);
  color:rgba(255,255,255,.38);
  margin-bottom:6px;
}
@media print, screen and (max-width: 1023px){
  .mvSep, .mvTotal{
    font-size:.95rem;
    margin-bottom:4px;
  }
}
.mvBar{
  position:absolute;
  bottom:-14px;
  right:0;
  width:clamp(80px,10vw,110px);
  height:3px;
  background:rgba(255,255,255,.18);
  overflow:hidden;
  border-radius:2px;
}
@media print, screen and (max-width: 1023px){
  .mvBar{
    width:72px;
  }
}
.mvBarFill{
  display:block;
  height:100%;
  width:0;
  background:var(--tpu-accent);
}

/* ---- Links（MV直下の4枚タイル） ---- */
.links{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  width:100%;
  height:55vh;
  min-height:380px;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
}
@media print, screen and (max-width: 1023px){
  .links{
    grid-template-columns:repeat(2, 1fr);
    height:auto;
    min-height:0;
  }
}
.linkTile{
  position:relative;
  display:block;
  text-decoration:none;
  overflow:hidden;
  cursor:pointer;
  transition:transform .5s cubic-bezier(.22,1,.36,1),box-shadow .5s;
}
.linkTile:hover{
  transform:translateY(-10px) scale(1.015);
  box-shadow:0 28px 64px rgba(0,0,0,.55);
  z-index:2;
}
@media print, screen and (max-width: 1023px){
  .linkTile{
    aspect-ratio:1/1;
  }
  .linkTile:hover{
    transform:none;
    box-shadow:none;
  }
}
.linkImg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:brightness(.88);
  transition:transform .9s cubic-bezier(.25,.46,.45,.94),filter .7s;
}
.linkTile:hover .linkImg{
  transform:scale(1.07);
  filter:brightness(1.06);
}
.linkGlass{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  padding:18px 22px 22px;
  display:flex;
  flex-direction:column;
  gap:8px;
  background:rgba(10,8,5,.42);
  backdrop-filter:blur(20px) saturate(180%);
  -webkit-backdrop-filter:blur(20px) saturate(180%);
  border-top:1px solid rgba(255,255,255,.18);
  transition:background .4s;
}
@media print, screen and (max-width: 1023px){
  .linkGlass{
    padding:12px 14px 14px;
    gap:5px;
  }
}
.linkTile:hover .linkGlass{
  background:rgba(10,8,5,.28);
}
.linkTag{
  font-size:10px;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:rgba(255,255,255,.6);
  transition:color .3s;
}
.linkTile:hover .linkTag{
  color:rgba(255,255,255,.95);
}
.linkTitle{
  font-size:clamp(1rem,1.3vw,1.25rem);
  font-weight:500;
  color:#fff;
  letter-spacing:.04em;
  line-height:1.3;
  transition:transform .45s cubic-bezier(.22,1,.36,1);
}
@media print, screen and (max-width: 1023px){
  .linkTitle{
    font-size:.95rem;
  }
}
.linkTile:hover .linkTitle{
  transform:translateY(-2px);
}
.linkArrow{
  margin-top:4px;
  width:34px;
  height:34px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.5);
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s cubic-bezier(.22,1,.36,1),border-color .4s,transform .4s;
}
@media print, screen and (max-width: 1023px){
  .linkArrow{
    width:30px;
    height:30px;
  }
}
.linkArrow img{
  width:13px;
  height:auto;
  display:block;
}
.linkTile:hover .linkArrow{
  background:var(--tpu-accent);
  border-color:var(--tpu-accent);
  transform:scale(1.12);
}

/* ---- vision ---- */
.vision{
  background:#fff;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
  padding:120px 48px;
}
@media print, screen and (max-width: 1023px){
  .vision{
    padding:64px 24px;
  }
}
.visionInner{
  max-width:724px;
  margin:0 auto;
  display:flex;
  gap:48px;
  align-items:flex-start;
}
@media print, screen and (max-width: 1023px){
  .visionInner{
    flex-direction:column;
    gap:32px;
    align-items:stretch;
  }
}
.visionHeading{
  flex-shrink:0;
  margin:0;
  display:flex;
  flex-direction:row-reverse;
  justify-content:flex-end;
  align-items:flex-start;
  gap:20px;
  font-family:'YuGothic','Yu Gothic','Hiragino Kaku Gothic ProN','Noto Sans JP',sans-serif;
  font-weight:700;
  font-size:28px;
  color:#191919;
}
@media print, screen and (max-width: 1023px){
  .visionHeading{
    justify-content:center;
    font-size:24px;
  }
}
.visionHeadingCol{
  writing-mode:vertical-rl;
  line-height:1.5;
  letter-spacing:.3em;
  border-right:1px solid rgba(25,25,25,.25);
  padding-right:20px;
}
.visionMain{
  flex:1;
}
.visionText p{
  font-size:.92rem;
  line-height:2.1;
  color:#3a3530;
  letter-spacing:.04em;
  margin-bottom:1.7em;
}
.visionText p:last-child{
  margin-bottom:0;
}
@media print, screen and (max-width: 1023px){
  .visionText p{
    font-size:.85rem;
    line-height:2;
  }
}
.visionLinks{
  display:flex;
  flex-wrap:wrap;
  gap:36px;
  margin-top:44px;
}
@media print, screen and (max-width: 1023px){
  .visionLinks{
    flex-direction:column;
    gap:18px;
    margin-top:32px;
  }
}
.visionLink{
  display:inline-flex;
  align-items:center;
  gap:14px;
  font-size:.9rem;
  font-weight:500;
  color:#1a1a1a;
  text-decoration:none;
  letter-spacing:.04em;
  transition:color .3s;
}
.visionLink:hover{
  color:var(--tpu-accent);
}
.visionLinkArrow{
  width:22px;
  height:22px;
  border-radius:50%;
  background:rgba(151,152,168,.4);
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1);
}
.visionLinkArrow svg{
  width:11px;
  color:#fff;
}
.visionLink:hover .visionLinkArrow{
  background:var(--tpu-accent);
  transform:scale(1.1);
}

/* ---- interview ---- */
.interview,.interview *{
  margin:0;
  padding:0;
  box-sizing:border-box;
}
.interview{
  background:#f8f8f8;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
  padding:80px 48px;
}
@media print, screen and (max-width: 1023px){
  .interview{
    padding:56px 24px;
  }
}
.interviewInner{
  max-width:1100px;
  margin:0 auto;
}
.interviewHead{
  display:flex;
  align-items:flex-end;
  gap:16px;
  margin-bottom:40px;
}
@media print, screen and (max-width: 1023px){
  .interviewHead{
    flex-direction:column;
    align-items:flex-start;
    gap:12px;
    margin-bottom:28px;
  }
}
.interviewHeadText{
  flex:1;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.interviewEn{
  font-family:'Poppins',sans-serif;
  font-weight:700;
  font-size:14px;
  letter-spacing:.08em;
  color:#c4c4c4;
  line-height:1;
}
.interviewTitle{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:28px;
  color:#191919;
  line-height:1.4;
}
@media print, screen and (max-width: 1023px){
  .interviewTitle{
    font-size:22px;
  }
}
.interviewMore{
  display:inline-flex;
  align-items:center;
  gap:12px;
  font-weight:700;
  font-size:14px;
  color:#191919;
  text-decoration:none;
  white-space:nowrap;
  transition:color .3s;
}
.interviewMore:hover{
  color:var(--tpu-accent);
}
.interviewMoreArrow{
  width:22px;
  height:22px;
  border-radius:50%;
  background:rgba(151,152,168,.4);
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s,transform .4s;
}
.interviewMoreArrow svg{
  width:11px;
  color:#fff;
}
.interviewMore:hover .interviewMoreArrow{
  background:var(--tpu-accent);
  transform:scale(1.1);
}
.interviewList{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  column-gap:28px;
  row-gap:44px;
}
@media print, screen and (max-width: 1023px){
  .interviewList{
    grid-template-columns:1fr;
    row-gap:36px;
  }
}
.interviewCard{
  display:block;
  text-decoration:none;
  position:relative;
}
.interviewCardImg{
  width:100%;
  aspect-ratio:536/322;
  border-radius:4px;
  overflow:hidden;
  background:#eaeaea;
}
.interviewCardImg img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .7s;
}
.interviewCard:hover .interviewCardImg img{
  transform:scale(1.04);
}
.interviewPanel{
  position:relative;
  margin:-70px 0 0 -10px;
  width:calc(100% - 76px);
  background:rgba(255,255,255,.9);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-radius:4px;
  box-shadow:0 0 7px rgba(159,159,159,.15);
  padding:20px 30px;
  display:flex;
  flex-direction:column;
  gap:10px;
}
@media print, screen and (max-width: 1023px){
  .interviewPanel{
    margin:-60px 0 0 0;
    width:calc(100% - 24px);
    padding:16px 20px;
  }
}
.interviewTags{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  list-style:none;
}
.interviewTag{
  border:1px solid #d9d9d9;
  border-radius:4px;
  padding:2px 10px;
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:13px;
  color:#898989;
  white-space:nowrap;
}
.interviewPanelBottom{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}
.interviewCardTitle{
  flex:1;
  min-width:0;
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:18px;
  line-height:1.7;
  color:#191919;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
}
@media print, screen and (max-width: 1023px){
  .interviewCardTitle{
    font-size:16px;
  }
}
.interviewArrow{
  width:42px;
  height:42px;
  border-radius:50%;
  background:rgba(151,152,168,.4);
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s,transform .4s;
}
.interviewArrow svg{
  width:16px;
  color:#fff;
}
.interviewCard:hover .interviewArrow{
  background:var(--tpu-accent);
  transform:scale(1.08);
}

/* ---- works ---- */
.works,.works *{
  margin:0;
  padding:0;
  box-sizing:border-box;
}
.works{
  background:#f2f2f2;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
  padding:60px 48px;
}
@media print, screen and (max-width: 1023px){
  .works{
    padding:56px 24px;
  }
}
.worksInner{
  max-width:1100px;
  margin:0 auto;
  display:flex;
  gap:67px;
  align-items:flex-start;
}
@media print, screen and (max-width: 1023px){
  .worksInner{
    flex-direction:column;
    gap:24px;
  }
}
.worksHead{
  flex-shrink:0;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.worksEn{
  font-family:'Poppins',sans-serif;
  font-weight:700;
  font-size:14px;
  letter-spacing:.08em;
  color:#c4c4c4;
  line-height:1;
}
.worksHeadMain{
  display:flex;
  flex-direction:column;
  gap:40px;
}
@media print, screen and (max-width: 1023px){
  .worksHeadMain{
    gap:20px;
  }
}
.worksTitle{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:24px;
  color:#191919;
  white-space:nowrap;
}
.worksMore{
  display:inline-flex;
  align-items:center;
  gap:12px;
  font-weight:700;
  font-size:14px;
  color:#191919;
  text-decoration:none;
  transition:color .3s;
}
.worksMore:hover{
  color:var(--tpu-accent);
}
.worksMoreArrow{
  width:22px;
  height:22px;
  border-radius:50%;
  background:rgba(151,152,168,.4);
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s,transform .4s;
}
.worksMoreArrow svg{
  width:11px;
  color:#fff;
}
.worksMore:hover .worksMoreArrow{
  background:var(--tpu-accent);
  transform:scale(1.1);
}
.worksList{
  flex:1;
  min-width:0;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:26px;
}
@media print, screen and (max-width: 1023px){
  .worksList{
    display:flex;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;
    gap:16px;
    padding-bottom:6px;
    scrollbar-width:none;
  }
  .worksList::-webkit-scrollbar{
    display:none;
  }
}
.worksCard{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:8px;
  text-decoration:none;
}
@media print, screen and (max-width: 1023px){
  .worksCard{
    flex:0 0 72%;
    scroll-snap-align:start;
  }
}
.worksCardImg{
  position:relative;
  width:100%;
  aspect-ratio:254/184;
  border-radius:4px;
  overflow:hidden;
  background:#eaeaea;
}
.worksCardImg img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .7s;
}
.worksCard:hover .worksCardImg img{
  transform:scale(1.04);
}
.worksCardArrow{
  position:absolute;
  right:10px;
  bottom:10px;
  width:22px;
  height:22px;
  border-radius:50%;
  background:rgba(151,152,168,.4);
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s,transform .4s;
}
.worksCardArrow svg{
  width:11px;
  color:#fff;
}
.worksCard:hover .worksCardArrow{
  background:var(--tpu-accent);
  transform:scale(1.08);
}
.works .c-labelSquare_list{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  list-style:none;
}
.works .worksSpecLabel{
  border:1px solid #d9d9d9;
  border-radius:4px;
  padding:2px 10px;
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:12px;
  color:#898989;
  line-height:1.6;
}
.worksTags{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  list-style:none;
}
.worksTag{
  border:1px solid #d9d9d9;
  border-radius:4px;
  padding:2px 10px;
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:12px;
  color:#898989;
}
.worksCardTitle{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:16px;
  line-height:1.7;
  color:#191919;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
}

/* ---- seminar ---- */
.seminar,.seminar *{
  margin:0;
  padding:0;
  box-sizing:border-box;
}
.seminar{
  background:#fff;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
  padding:80px 48px;
}
@media print, screen and (max-width: 1023px){
  .seminar{
    padding:56px 24px;
  }
}
.seminarInner{
  max-width:1100px;
  margin:0 auto;
  display:flex;
  gap:29px;
  align-items:stretch;
}
@media print, screen and (max-width: 1023px){
  .seminarInner{
    flex-direction:column;
    gap:28px;
  }
}
.seminarLeft{
  flex:630 1 0;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:32px;
}
@media print, screen and (max-width: 1023px){
  .seminarLeft{
    flex:auto;
    gap:28px;
  }
}
.seminarRight{
  flex:442 1 0;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:28px;
}
@media print, screen and (max-width: 1023px){
  .seminarRight{
    flex:auto;
  }
}
.seminarHead{
  flex-shrink:0;
  display:flex;
  flex-direction:column;
  gap:32px;
}
.seminarHeadTop{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.seminarEn{
  font-family:'Poppins',sans-serif;
  font-weight:700;
  font-size:14px;
  letter-spacing:.08em;
  color:#c4c4c4;
  line-height:1;
}
.seminarTitle{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:28px;
  color:#191919;
}
@media print, screen and (max-width: 1023px){
  .seminarTitle{
    font-size:22px;
  }
}
.seminarLead{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:500;
  font-size:15px;
  line-height:1.8;
  color:#191919;
}
.seminarCard{
  position:relative;
  display:block;
  border-radius:4px;
  overflow:hidden;
  text-decoration:none;
  background:#eaeaea;
}
.seminarRight .seminarCard{
  aspect-ratio:442/230;
}
.seminarLeft .seminarCard{
  flex:1;
  min-height:240px;
}
@media print, screen and (max-width: 1023px){
  .seminarLeft .seminarCard,
  .seminarRight .seminarCard{
    flex:none;
    aspect-ratio:343/200;
  }
}
.seminarCard img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .7s;
}
.seminarCard:hover img{
  transform:scale(1.04);
}
.seminarLabel{
  position:absolute;
  left:0;
  bottom:0;
  display:flex;
  align-items:center;
  gap:10px;
  background:#fff;
  border-radius:0 8px 0 0;
  padding:10px 16px 6px 20px;
}
.seminarLabelText{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:18px;
  letter-spacing:.1em;
  color:#191919;
  white-space:nowrap;
}
@media print, screen and (max-width: 1023px){
  .seminarLabelText{
    font-size:15px;
  }
}
.seminarLabelArrow{
  width:42px;
  height:42px;
  border-radius:50%;
  background:rgba(151,152,168,.4);
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s,transform .4s;
}
.seminarLabelArrow svg{
  width:16px;
  color:#fff;
}
.seminarCard:hover .seminarLabelArrow{
  background:var(--tpu-accent);
  transform:scale(1.08);
}
@media print, screen and (max-width: 1023px){
  .seminarLabelArrow{
    width:34px;
    height:34px;
  }
  .seminarLabelArrow svg{
    width:13px;
  }
}

/* ---- servicemenu ---- */
.service,.service *{
  margin:0;
  padding:0;
  box-sizing:border-box;
}
.service{
  position:relative;
  overflow:hidden;
  display:flex;
  min-height:680px;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
}
@media print, screen and (max-width: 1023px){
  .service{
    display:block;
    min-height:0;
  }
}
.serviceBg{
  position:absolute;
  inset:0;
  z-index:0;
}
.serviceBg img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.serviceTopImg{
  display:none;
}
@media print, screen and (max-width: 1023px){
  .serviceTopImg{
    display:block;
    position:relative;
    z-index:1;
    height:196px;
    overflow:hidden;
  }
}
.serviceTopImg img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.servicePanel{
  position:relative;
  z-index:1;
  width:clamp(480px,44%,600px);
  min-height:680px;
  padding:80px 50px;
  display:flex;
  flex-direction:column;
  gap:60px;
  background:rgba(255,255,255,.8);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-right:1px solid rgba(255,255,255,.38);
}
@media print, screen and (max-width: 1023px){
  .servicePanel{
    width:100%;
    min-height:0;
    padding:40px 20px;
    gap:40px;
    border-right:none;
    border-top:1px solid rgba(255,255,255,.48);
  }
}
.serviceHead{
  display:flex;
  flex-direction:column;
  gap:10px;
}
@media print, screen and (max-width: 1023px){
  .serviceHead{
    gap:6px;
  }
}
.serviceEn{
  font-family:'Poppins',sans-serif;
  font-weight:700;
  font-size:14px;
  letter-spacing:.08em;
  color:#a4a4a4;
  line-height:1;
}
@media print, screen and (max-width: 1023px){
  .serviceEn{
    font-size:12px;
    font-weight:600;
  }
}
.serviceTitle{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:28px;
  color:#191919;
}
@media print, screen and (max-width: 1023px){
  .serviceTitle{
    font-size:24px;
  }
}
.serviceBody{
  display:flex;
  flex-direction:column;
  gap:40px;
}
@media print, screen and (max-width: 1023px){
  .serviceBody{
    gap:24px;
  }
}
.serviceLead{
  display:flex;
  flex-direction:column;
  gap:20px;
  color:#191919;
}
@media print, screen and (max-width: 1023px){
  .serviceLead{
    gap:13px;
  }
}
.serviceLeadStrong{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:16px;
  line-height:1.8;
}
@media print, screen and (max-width: 1023px){
  .serviceLeadStrong{
    font-size:14px;
  }
}
.serviceLeadText{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:500;
  font-size:14px;
  line-height:1.8;
}
.serviceGroup{
  display:flex;
  flex-direction:column;
  gap:10px;
}
@media print, screen and (max-width: 1023px){
  .serviceGroup{
    gap:8px;
  }
}
.serviceGroupLabel{
  display:flex;
  align-items:center;
  gap:10px;
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:16px;
  color:#191919;
}
@media print, screen and (max-width: 1023px){
  .serviceGroupLabel{
    font-size:14px;
  }
}
.serviceGroupLabel::before{
  content:'';
  width:24px;
  height:1px;
  background:#191919;
  flex-shrink:0;
}
@media print, screen and (max-width: 1023px){
  .serviceGroupLabel::before{
    width:16px;
  }
}
.serviceBtns{
  display:flex;
  flex-wrap:wrap;
  gap:16px;
}
@media print, screen and (max-width: 1023px){
  .serviceBtns{
    flex-direction:column;
  }
}
.serviceBtn{
  flex:1 1 240px;
  max-width:240px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  height:58px;
  padding:8px 10px 8px 30px;
  border-radius:150px;
  background:rgba(255,255,255,.4);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
  border:1px solid rgba(255,255,255,.8);
  text-decoration:none;
  transition:background .3s,border-color .3s;
}
@media print, screen and (max-width: 1023px){
  .serviceBtn{
    flex:none;
    max-width:none;
  }
}
.serviceBtn:hover{
  background:rgba(255,255,255,.75);
}
.serviceBtnText{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:16px;
  color:#191919;
  white-space:nowrap;
}
@media print, screen and (max-width: 1023px){
  .serviceBtnText{
    font-size:15px;
  }
}
.serviceBtnArrow{
  width:42px;
  height:42px;
  border-radius:50%;
  background:rgba(151,152,168,.4);
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s,transform .4s;
}
.serviceBtnArrow svg{
  width:16px;
  color:#fff;
}
.serviceBtn:hover .serviceBtnArrow{
  background:var(--tpu-accent);
  transform:scale(1.08);
}

/* ---- feature ---- */
.feature,.feature *{
  margin:0;
  padding:0;
  box-sizing:border-box;
}
.feature{
  background:#fff;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
  padding:80px 48px;
}
@media print, screen and (max-width: 1023px){
  .feature{
    padding:56px 24px;
  }
}
.featureInner{
  max-width:1100px;
  margin:0 auto;
  display:flex;
  flex-direction:column;
  gap:80px;
}
@media print, screen and (max-width: 1023px){
  .featureInner{
    gap:60px;
  }
}
.featureRow{
  display:flex;
  gap:28px;
  align-items:center;
}
.featureRowReverse{
  flex-direction:row-reverse;
}
@media print, screen and (max-width: 1023px){
  .featureRow,
  .featureRowReverse{
    flex-direction:column;
    align-items:stretch;
    gap:32px;
  }
}
.featureImg{
  flex:1;
  min-width:0;
  aspect-ratio:535/365;
  border-radius:4px;
  overflow:hidden;
  background:#eaeaea;
}
@media print, screen and (max-width: 1023px){
  .featureImg{
    aspect-ratio:335/251;
  }
}
.featureImg img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.featureImgBottom img{
  object-position:bottom;
}
.featureText{
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:40px;
}
@media print, screen and (max-width: 1023px){
  .featureText{
    gap:32px;
  }
}
.featureHead{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.featureEn{
  font-family:'Poppins',sans-serif;
  font-weight:700;
  font-size:14px;
  letter-spacing:.08em;
  color:#c4c4c4;
  line-height:1;
}
@media print, screen and (max-width: 1023px){
  .featureEn{
    font-size:12px;
    font-weight:600;
  }
}
.featureTitle{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:28px;
  color:#191919;
}
@media print, screen and (max-width: 1023px){
  .featureTitle{
    font-size:24px;
  }
}
.featureBody{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:24px;
}
@media print, screen and (max-width: 1023px){
  .featureBody{
    gap:16px;
  }
}
.featureLead{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:16px;
  line-height:1.8;
  color:#191919;
}
@media print, screen and (max-width: 1023px){
  .featureLead{
    font-size:14px;
  }
}
.featureDesc{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:500;
  font-size:14px;
  line-height:1.8;
  color:#191919;
}
.featureBtn{
  display:inline-flex;
  align-items:center;
  gap:30px;
  height:58px;
  padding:8px 10px 8px 30px;
  border:1px solid #e2e2e2;
  border-radius:150px;
  text-decoration:none;
  transition:background .3s,border-color .3s;
}
.featureBtn:hover{
  background:#f7f7f7;
}
@media print, screen and (max-width: 1023px){
  .featureBtn{
    gap:10px;
    padding:8px 10px 8px 16px;
    height:auto;
    min-height:58px;
    max-width:100%;
  }
}
.featureBtnText{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:14px;
  color:#191919;
  white-space:nowrap;
}
@media print, screen and (max-width: 1023px){
  .featureBtnText{
    font-size:15px;
    white-space:normal;
  }
}
.featureBtnArrow{
  width:42px;
  height:42px;
  border-radius:50%;
  background:rgba(151,152,168,.4);
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s,transform .4s;
}
.featureBtnArrow svg{
  width:16px;
  color:#fff;
}
.featureBtn:hover .featureBtnArrow{
  background:var(--tpu-accent);
  transform:scale(1.08);
}
@media print, screen and (max-width: 1023px){
  .featureBtnArrow{
    width:32px;
    height:32px;
  }
  .featureBtnArrow svg{
    width:13px;
  }
}

/* ---- showroom ---- */
.showroom,.showroom *{
  margin:0;
  padding:0;
  box-sizing:border-box;
}
.showroom{
  background:#f8f8f8;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
  padding:80px 48px;
}
@media print, screen and (max-width: 1023px){
  .showroom{
    padding:56px 24px;
  }
}
.showroomInner{
  max-width:1100px;
  margin:0 auto;
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:40px;
}
@media print, screen and (max-width: 1023px){
  .showroomInner{
    flex-direction:column;
    align-items:stretch;
    gap:32px;
  }
}
.showroomLeft{
  display:flex;
  flex-direction:column;
  gap:24px;
}
.showroomHead{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.showroomEn{
  font-family:'Poppins',sans-serif;
  font-weight:700;
  font-size:14px;
  letter-spacing:.08em;
  color:#c4c4c4;
  line-height:1;
}
@media print, screen and (max-width: 1023px){
  .showroomEn{
    font-size:12px;
    font-weight:600;
  }
}
.showroomTitle{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:28px;
  color:#191919;
}
@media print, screen and (max-width: 1023px){
  .showroomTitle{
    font-size:24px;
  }
}
.showroomMap{
  width:518px;
  max-width:100%;
}
.showroomMap img{
  width:100%;
  height:auto;
  display:block;
}
@media print, screen and (max-width: 1023px){
  .showroomMap{
    width:100%;
    display:flex;
    justify-content:center;
  }
  .showroomMap img{
    width:213px;
  }
}
.showroomAreas{
  flex-shrink:0;
  width:440px;
  display:flex;
  flex-direction:column;
  gap:12px;
}
@media print, screen and (max-width: 1023px){
  .showroomAreas{
    width:100%;
  }
}
.showroomArea{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.showroomAreaName{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:14px;
  line-height:1.8;
  color:#191919;
}
.showroomAreaBtns{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.showroomBtn{
  width:104px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:8px 10px;
  background:#fff;
  border:1px solid #e2e2e2;
  border-radius:8px;
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:14px;
  color:#214263;
  text-decoration:none;
  white-space:nowrap;
  transition:border-color .3s,background .3s;
}
.showroomBtn:hover{
  border-color:#214263;
  background:#eef2f6;
}
@media print, screen and (max-width: 1023px){
  .showroomBtn{
    width:auto;
    min-width:calc((100% - 16px) / 3);
    flex-shrink:0;
  }
}

/* ---- footer ---- */
.tpuFooter,.tpuFooter *{
  margin:0;
  padding:0;
  box-sizing:border-box;
}
.tpuFooter{
  background:#fff;
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
  color:#191919;
  padding:80px 48px;
}
@media print, screen and (max-width: 1023px){
  .tpuFooter{
    padding:60px 20px;
  }
}
.footerInner{
  max-width:1100px;
  margin:0 auto;
  display:flex;
  flex-direction:column;
  gap:80px;
}
@media print, screen and (max-width: 1023px){
  .footerInner{
    gap:56px;
  }
}
.footerTop{
  display:flex;
  gap:60px;
  align-items:flex-start;
}
@media print, screen and (max-width: 1023px){
  .footerTop{
    flex-direction:column;
    gap:48px;
  }
}
.footerLeft{
  width:253px;
  flex-shrink:0;
  display:flex;
  flex-direction:column;
  gap:88px;
}
@media print, screen and (max-width: 1023px){
  .footerLeft{
    width:100%;
    gap:40px;
    align-items:center;
  }
}
.footerBrand{
  width:100%;
  display:flex;
  flex-direction:column;
  gap:48px;
}
@media print, screen and (max-width: 1023px){
  .footerBrand{
    gap:40px;
    align-items:center;
  }
}
.footerLogo{
  display:block;
}
.footerLogo img{
  height:42px;
  width:auto;
  display:block;
}
@media print, screen and (max-width: 1023px){
  .footerLogo img{
    height:44px;
  }
}
.footerCtas{
  width:100%;
  display:flex;
  flex-direction:column;
  gap:15px;
}
.footerCta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  height:58px;
  padding:8px 10px 8px 30px;
  border:1px solid #e2e2e2;
  border-radius:150px;
  text-decoration:none;
  transition:background .3s;
}
.footerCta:hover{
  background:#f7f7f7;
}
.footerCtaFill{
  background:rgba(213,214,220,.6);
}
.footerCtaFill:hover{
  background:rgba(213,214,220,.85);
}
.footerCtaText{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:14px;
  color:#191919;
}
@media print, screen and (max-width: 1023px){
  .footerCtaText{
    font-size:15px;
  }
}
.footerCtaArrow{
  width:42px;
  height:42px;
  border-radius:50%;
  background:rgba(151,152,168,.4);
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .4s,transform .4s;
}
.footerCtaArrow svg{
  width:16px;
  color:#fff;
}
.footerCta:hover .footerCtaArrow{
  background:var(--tpu-accent);
  transform:scale(1.08);
}
.footerSns{
  width:100%;
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:0 20px;
}
@media print, screen and (max-width: 1023px){
  .footerSns{
    justify-content:center;
    gap:23px;
    padding:0;
  }
}
.footerSnsLink{
  position:relative;
  width:23px;
  height:23px;
  display:flex;
  align-items:center;
  justify-content:center;
}
.footerSnsLink img{
  max-width:23px;
  max-height:23px;
  width:auto;
  height:auto;
  display:block;
  transition:opacity .3s;
}
.footerSnsLink--yt img{
  max-width:24px;
  max-height:24px;
}
/* 既定=黒アイコン、hover=カラーアイコンに切替（_footer.html 踏襲） */
.footerSnsBase,
.footerSnsHover{
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
}
.footerSnsHover{
  opacity:0;
}
.footerSnsLink:hover .footerSnsBase{
  opacity:0;
}
.footerSnsLink:hover .footerSnsHover{
  opacity:1;
}
.footerSnsLink--x:hover img{
  opacity:.5;
}
.footerNav{
  flex:1;
  min-width:0;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  column-gap:40px;
  row-gap:80px;
}
@media print, screen and (max-width: 1023px){
  .footerNav{
    display:flex;
    flex-direction:column;
    width:100%;
    gap:0;
  }
}
.footerNavTitle{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:16px;
  letter-spacing:.12em;
  color:#191919;
  text-decoration:none;
  display:inline-block;
  margin-bottom:16px;
}
.footerNavTitle:hover{
  color:var(--tpu-accent);
}
.footerNavToggle{
  display:none;
}
.footerNavList{
  list-style:none;
  display:flex;
  flex-direction:column;
  gap:24px;
}
.footerNavList a{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:500;
  font-size:14px;
  line-height:1.4;
  color:#191919;
  text-decoration:none;
}
.footerNavList a:hover{
  color:var(--tpu-accent);
}
.footerNavSolo{
  display:flex;
  flex-direction:column;
  gap:32px;
}
.footerNavSoloLink{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:16px;
  letter-spacing:.12em;
  color:#191919;
  text-decoration:none;
}
.footerNavSoloLink:hover{
  color:var(--tpu-accent);
}
.footerNavSoloArrow{
  display:none;
}
@media print, screen and (max-width: 1023px){
  .footerNavGroup{
    border-bottom:1px solid #e5e5e5;
  }
  .footerNavHead{
    display:flex;
    align-items:center;
    justify-content:space-between;
  }
  .footerNavTitle{
    margin:0;
    flex:1;
    padding:14px 10px;
    font-size:15px;
  }
  .footerNavToggle{
    display:flex;
    align-items:center;
    justify-content:center;
    width:44px;
    align-self:stretch;
    background:none;
    border:none;
    color:#191919;
    cursor:pointer;
  }
  .footerNavChevron{
    position:relative;
    display:block;
    width:22px;
    height:22px;
    transition:transform .3s ease;
  }
  /* 横線(::before)と縦線(::after)。回転で作らず軸に沿わせ、太さ・濃さを均一に */
  .footerNavChevron::before,
  .footerNavChevron::after{
    content:'';
    position:absolute;
    left:50%;
    top:50%;
    background:#464646;
    transform:translate(-50%,-50%);
    transition:transform .3s ease,opacity .3s ease;
  }
  .footerNavChevron::before{
    width:14px;
    height:1px;
  }
  .footerNavChevron::after{
    width:1px;
    height:14px;
  }
  /* 開いたら全体を180度回転しつつ、縦線を消して横線1本だけの - にする */
  .footerNavGroup.isOpen .footerNavChevron{
    transform:rotate(180deg);
  }
  .footerNavGroup.isOpen .footerNavChevron::after{
    opacity:0;
    transform:translate(-50%,-50%) scaleY(0);
  }
  .footerNavList{
    max-height:0;
    overflow:hidden;
    visibility:hidden;
    gap:0;
    transition:max-height .3s ease,visibility 0s .3s;
  }
  .footerNavGroup.isOpen .footerNavList{
    max-height:400px;
    visibility:visible;
    transition:max-height .3s ease,visibility 0s;
  }
  .footerNavList li{
    padding:0 30px;
  }
  .footerNavList li:first-child{
    padding-top:8px;
  }
  .footerNavList li:last-child{
    padding-bottom:8px;
  }
  .footerNavList li + li{
    margin-top:16px;
  }
  .footerNavList li a{
    display:block;
    padding:4px 0;
  }
  .footerNavSolo{
    gap:0;
  }
  .footerNavSoloLink{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:14px 10px;
    font-size:15px;
    border-bottom:1px solid #e5e5e5;
  }
  .footerNavSoloArrow{
    display:flex;
    align-items:center;
    width:22px;
    flex-shrink:0;
    color:#464646;
  }
}
.footerBottom{
  border-top:1px solid #d5d5d5;
  padding-top:32px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}
@media print, screen and (max-width: 1023px){
  .footerBottom{
    border-top:none;
    padding-top:0;
    flex-direction:column-reverse;
    align-items:flex-start;
    gap:48px;
  }
}
.footerCopy{
  font-family:'Poppins',sans-serif;
  font-weight:500;
  font-size:12px;
  letter-spacing:.06em;
  color:#606060;
}
.footerLinks{
  list-style:none;
  display:flex;
  align-items:center;
  gap:24px;
}
@media print, screen and (max-width: 1023px){
  .footerLinks{
    flex-direction:column;
    align-items:flex-start;
    gap:24px;
  }
}
.footerLinks a{
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:500;
  font-size:12px;
  letter-spacing:.02em;
  color:#606060;
  text-decoration:none;
}
@media print, screen and (max-width: 1023px){
  .footerLinks a{
    font-size:14px;
  }
}
.footerLinks a:hover{
  color:var(--tpu-accent);
}

/* ---- sideCta（固定クイックメニュー） ---- */
.sideCta,.sideCta *{
  margin:0;
  padding:0;
  box-sizing:border-box;
}
.sideCta{
  position:fixed;
  right:0;
  top:50%;
  transform:translate(100%, -50%);
  opacity:0;
  pointer-events:none;
  z-index:80;
  display:flex;
  flex-direction:column;
  width:52px;
  background:rgba(85,85,85,.8);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
  border:1px solid #616161;
  border-radius:10px 0 0 10px;
  overflow:hidden auto;
  max-height:calc(100vh - 32px);
  font-family:'Noto Sans JP','Yu Gothic',sans-serif;
  transition:transform .7s cubic-bezier(.22,1,.36,1), opacity .5s ease;
}
.sideCta.isVisible{
  transform:translate(0, -50%);
  opacity:1;
  pointer-events:auto;
}
.sideCtaItem{
  position:relative;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:20px 0;
  color:#fff;
  text-decoration:none;
  transition:background .3s;
}
.sideCtaItem + .sideCtaItem{
  border-top:1px solid rgba(199,199,199,.5);
}
.sideCtaItem::before{
  content:'';
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:2px;
  background:var(--tpu-accent);
  transform:scaleY(0);
  transform-origin:top;
  transition:transform .4s cubic-bezier(.22,1,.36,1);
  z-index:1;
}
.sideCtaItem:hover::before{
  transform:scaleY(1);
}
.sideCtaItem:hover{
  background:rgba(255,255,255,.12);
}
.sideCtaIcon{
  display:flex;
  width:20px;
  color:#fff;
}
.sideCtaIcon svg{
  width:100%;
  height:auto;
  display:block;
}
.sideCtaText{
  writing-mode:vertical-rl;
  text-orientation:upright;
  font-family:'YuGothic','Yu Gothic',sans-serif;
  font-weight:700;
  font-size:14px;
  letter-spacing:.05em;
  line-height:1.4;
  color:#fff;
}
@media print, screen and (max-width: 1023px){
  .sideCta{
    right:auto;
    top:auto;
    left:0;
    bottom:0;
    transform:translateY(100%);
    opacity:1;
    width:100%;
    max-height:none;
    overflow:visible;
    flex-direction:row;
    border:none;
    border-top:1px solid rgba(211,211,211,.4);
    border-radius:0;
    transition:transform .55s cubic-bezier(.22,1,.36,1);
  }
  .sideCta.isVisible{
    transform:translateY(0);
  }
  .sideCtaItem{
    flex:1;
    min-width:0;
    gap:6px;
    padding:9px 0;
  }
  .sideCtaItem + .sideCtaItem{
    border-top:none;
    border-left:1px solid rgba(192,192,192,.5);
  }
  .sideCtaItem::before{
    top:0;
    left:0;
    right:0;
    bottom:auto;
    width:auto;
    height:2px;
    transform:scaleX(0);
    transform-origin:left;
  }
  .sideCtaItem:hover::before,
  .sideCtaItem:active::before{
    transform:scaleX(1);
  }
  .sideCtaIcon{
    width:16px;
  }
  .sideCtaText{
    writing-mode:horizontal-tb;
    text-orientation:mixed;
    font-size:12px;
    letter-spacing:0;
  }
  /* SP下部固定バーがフッター下端を隠さないようクリアランス確保 */
  .tpuFooter{
    padding-bottom:84px;
  }
}
