/* =========================
   基本トークン（重複排除）
   ========================= */
:root{
  --bg:#140f08;
  --fg:#e6e8ee;
  --muted:#a6abbd;
  --acc:#c8ff68;
  --card:#231c1c;
  --header-h: 68px; /* ← 1箇所に統一 */
}
@media (max-width: 700px){
  :root{ --header-h: 64px; } /* ← モバイルのみ上書き */
}

/* =========================
   ベース
   ========================= */
*{ box-sizing:border-box; }
html,body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:"Jost","M PLUS 1",system-ui,-apple-system,Segoe UI,Roboto,"Noto Sans JP","Hiragino Kaku Gothic ProN",Meiryo,sans-serif;
}
img{ max-width:100%; display:block; }
a{ color:var(--acc); text-decoration:none; }
a:hover{ text-decoration:underline; }
.container{ width:min(1100px,92vw); margin:0 auto; }

main{
  padding-top:8px;
  padding-bottom:28px;
}

.section{ margin:28px 0; }
.section h1,.section h2{ margin:0 0 12px; font-size:clamp(32px,3vw,42px); }
.card{ background:var(--card); border:1px solid #232834; border-radius:1px; padding:16px; }

.grid{ display:grid; gap:14px; }
.grid.cols-2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.grid.cols-3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
@media(max-width:700px){ .grid.cols-2,.grid.cols-3{ grid-template-columns:1fr; } }

.video{
  position:relative;
  aspect-ratio:16/9;
  width:100%;
  border:0;
  border-radius:10px;
  overflow:hidden;
  background:#000;
}

.site-footer{
  border-top:1px solid #232834;
  padding:8px 0;
  background:rgba(108, 108, 108, 0.7);
  color:var(--muted);
  text-align:center;
}

.mono{ font-family:'Jost'; font-size:12px; color:var(--muted); }

/* =========================
   ヘッダー（重複定義を一本化）
   ========================= */
.site-header{
  position: sticky;        /* ← relative 上書きを廃止 */
  top: 0;
  z-index: 13000;          /* ← ドロワーより前に固定 */
  background: rgba(20, 15, 8, 0.7);
  -webkit-backdrop-filter: saturate(140%) blur(8px);
  backdrop-filter: saturate(140%) blur(8px);
  border-bottom:1px solid #333533;
  margin-bottom:30px;      /* アイコン分の余白 */
  overflow: visible;
}
.header-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 0;
  position: relative;      /* ← ハンバーガーの絶対配置の基準にする */
}
.logo img{ height:40px; }

.logo-wrap{ position: relative; display:flex; align-items:center; }

/* PCナビ */
.nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;                          /* 隙間なし（線で区切る） */
  overflow: hidden;                /* はみ出し防止 */
}

.nav a {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px 24px;
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  font-size: 0.95rem;
  border-right: 1px solid  #2a2e3a; /* 縦線の区切り */
  transition: background 0.2s ease, color 0.2s ease;
}

.nav a:last-child {
  border-right: none; /* 最後の縦線は消す */
}

/* ホバー＆クリック時の反応 */
.nav a:hover,
.nav a:focus-visible {
  background: rgba(255, 255, 255, 0.08);
  color: var(--acc);
}

/* 現在ページ */
.nav a[aria-current="page"] {
  background: var(--card);
  color: var(--acc);
}

.nav a[aria-current="page"]{ background:var(--card); text-decoration:none; }

/* ヘッダー下にぶら下げるSNS */
/* SNSバーをヘッダーの背面レイヤーに送る */
.header-social-bar{
  position: absolute;
  left: 0;
  top: 100%;
  transform: translateY(26px);
  display: flex;
  gap: 10px;
  background: none;
  border: none;
  box-shadow: none;
  

  z-index: auto;              /* ヘッダー内でのz-indexをリセット */
  pointer-events: auto;

  /* 新たに背面用のスタックを作成して後ろへ */
  isolation: isolate;         /* 自身を独立レイヤーにする */
}
.header-social-bar::before{
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;                /* 背面の仮想レイヤーを作る */
}


.header-social-bar a{
  color:#fff;
  font-size:1.4rem;
  line-height:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transition:transform .15s ease, opacity .15s ease, color .15s ease;
}
.header-social-bar a:hover{
  transform: translateY(-1px);
  color: var(--acc);
}

/* モバイル時のフォント微調整 */
@media (max-width: 700px){
  .site-header, .nav a, h1, h2, h3{
    font-family: 'Jost';
    letter-spacing: 0.05em;
  }
  .header-social-bar{
    position: fixed;  
    left:24px;
    bottom:-1px;
    transform: translateY(calc(100% + 18px));
    gap:10px;
    z-index: 11000;
  }
}

.social-icons a{
  font-size:1.2rem;
  line-height:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transition:transform .15s ease, opacity .15s ease;
}
.social-icons a:hover{
  transform: translateY(-1px);
}

/* =========================
   カラードットバー
   ========================= */
.color-dots{
  display:inline-flex;
  gap:6px;
  margin-left:12px;
  vertical-align:middle;
}
.color-dots .dot-s{
  width:10px;
  height:3px;
}
@media (max-width: 700px){
  .color-dots{ gap:5px; margin-left:10px; }
  .color-dots .dot-s{ width:9px; height:9px; }
}

/* =========================
   ヒーロー
   ========================= */
.hero{
  position:relative;
  width:100%;
  height: calc(min(100svh, 100vh) - var(--header-h));
  margin:0;
  overflow:hidden;
  background:#000;
}
.hero-bg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  z-index:0;
}
.hero::after{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(180deg, rgba(0,0,0,.25) 0%, rgba(0,0,0,.55) 60%, rgba(0,0,0,0.9) 100%);
  pointer-events:none;
  z-index:1;
}
.hero-inner{
  position:absolute;
  inset:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  gap:12px;
  padding:20px;
  color:#fff;
  z-index:2;
}
.hero-content{
  position:relative;
  z-index:2;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  height:100%;
  text-align:center;
}
.hero-title{
  font-size: clamp(40px, 4vw, 100px);
  font-weight:800;
  color:#fff;
  margin-bottom:20px;
}
.hero-title .mono{ color:#fff; font-size:0.5em; }
.hero-tag{
  margin:0;
  letter-spacing:.12em;
  font-weight:700;
  font-size: clamp(14px, 2vw, 18px);
  color: var(--muted);
}
.btn{
  display:inline-block;
  padding:14px 28px;
  border-radius:4px;
  background:transparent;
  color:#fff;
  border:2px solid #fff;
  font-weight:700;
  font-size:1.1rem;
  text-decoration:none;
  transition: transform .15s ease, filter .15s ease, background .15s ease;
}
.btn:hover{
  background: rgba(255, 255, 255, 0.15);
  transform: translateY(-2px);
}
@media (max-width: 700px){
  .hero-bg{ object-position:center 30%; }
  .hero-title{ font-size: clamp(22px, 6vw, 34px); }
  .hero-tag{ font-size: clamp(12px, 3.8vw, 14px); }
  .btn{ font-size:1rem; padding:12px 20px; }
}

/* =========================
   Works カード
   ========================= */
.works-list{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap:16px;
}
.work-hero{
  position:relative;
  aspect-ratio:16/9;
  border-radius:12px;
  overflow:hidden;
  background:#000 center/cover no-repeat;
  box-shadow:0 4px 16px rgba(0,0,0,.3);
  transition: transform .18s ease;
}
.work-hero::before{
  content:"";
  position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(0,0,0,.25) 0%, rgba(0,0,0,.55) 60%, rgba(0,0,0,.75) 100%);
  pointer-events:none;
}
.work-body{
  position:absolute; left:0; right:0; bottom:12px;
  display:flex; flex-direction:column; align-items:center; text-align:center;
  gap:4px;
  padding:0 10px;
}
.work-body h3{
  margin:0;
  font-size:clamp(16px, 2vw, 18px);
  line-height:1.3;
}
.work-body .mono{
  margin:0; opacity:.85;
  font-size:clamp(12px, 1.8vw, 14px);
}
.work-link{ position:absolute; inset:0; }
.work-hero:hover{ transform:translateY(-2px); }
.work-hero:hover::before{
  background: linear-gradient(180deg, rgba(0,0,0,.2) 0%, rgba(0,0,0,.45) 60%, rgba(0,0,0,.65) 100%);
}

/* =========================
   スマホ調整（ナビの間隔）
   ========================= */
@media (max-width: 700px){
  .nav{ gap:12px; }
}

/* =========================
   ハンバーガー（PCは非表示）
   ========================= */
.hamburger{ display:none; } /* PCでは表示しない */

/* モバイル表示 */
@media (max-width: 700px){
  .nav{ display:none; }     /* PCナビは隠す */

  /* 右上に固定・確実に見えるレイヤー */
  .hamburger{
    display:inline-flex;
    position:absolute; top:20px; right:12px;
    flex-direction:column; justify-content:space-between;
    width:40px; height:20px;
    background:transparent; border:0; cursor:pointer;
    z-index:13010;          /* ← ヘッダー内で最前面 */
    pointer-events:auto;
  }
  .hamburger span{
    display:block;
    width:100%;             /* ← 幅潰れ防止 */
    height:2px;
    background:#fff;
    border-radius:2px;
    transition:transform .25s, opacity .25s;
  }
}

/* =========================
   モバイルドロワー
   ========================= */
.mobile-nav{
  position:fixed;
  top: 0;   
  bottom: 0;
  right:-200px;                 /* ← width と同じ値に */
  width:200px;
  height: 100lvh;
  background: var(--card);
  border-left:1px solid #4b4545;
  box-shadow: -10px 0 30px rgba(0,0,0,.45);
  transition:right .28s ease;
  padding-top:110px;
  z-index:11010;
  
}
.mobile-nav.open{ right:0; }

.mobile-nav-inner{
  display:flex;
  flex-direction:column;
  padding: 0;          
}

.mobile-nav a{
  top: 200px;   
}

.mobile-nav-inner a{
  display:block;               /* 行全体をリンクに */
  padding:14px 18px;           /* 目安: 最低44px程度のタップ高 */
  line-height:1.4;

  font-weight: 600;
  font-size: 0.95rem;
  color: var(--acc);                  /* 文字色（お好みで var(--fg) でも） */
  text-decoration:none;
}

.mobile-nav-inner a:not(:last-child){
  border-bottom:1px solid #4a3d3d;  /* 行ごとの仕切り線 */
}


/* 操作感 */
.mobile-nav-inner a:hover,
.mobile-nav-inner a:active{
  background: rgba(255,255,255,.06);
  color: var(--acc);
}
.mobile-nav-inner a:focus-visible{
  outline: 2px solid var(--acc);
  outline-offset: -2px;
}

/* =========================
   オーバーレイ（初期は無効化）
   ========================= */
.mobile-overlay{
  position: fixed;
  left:0; right:0; bottom:0;
  top: 0;   
  background: rgba(0,0,0,.45);
  opacity: 0;                 /* ← 透明にして */
  pointer-events: none;       /* ← クリックも無効で開始 */
  transition: opacity .2s ease;
  z-index: 1000;
}
.mobile-overlay.show{
  opacity:1;
  pointer-events:auto;
}

/* =========================
   その他
   ========================= */
.about-slider img{
  max-width: min(720px, 80%);
  margin: 0 auto;
  display: block;
}
/* Slick のドット上書き */
.about-slider .slick-dots li button:before{
  font-size:10px;
  color:#888 !important;
  opacity:1 !important;
}
.about-slider .slick-dots li.slick-active button:before{
  color:#fff !important;
}

/* News セクションのシンプル版 */
.news-box{
  height: 100px;
  background: var(--card);     /* #231c1c */
  border: 1px solid #232834;
  border-radius: 8px;
  padding: 16px 24px;
  overflow-y: auto;            /* 内容が多いときにスクロール */
}

/* リスト（丸ポチつき） */
.news-list{
  margin: 0;
  padding-left: 1.2em;         /* 丸ポチ位置 */
  color: #fff;
  font-size: 0.9rem;
  line-height: 1.6;
}

/* 各項目内のリンク */
.news-list a{
  color: #fff;
  text-decoration: none;
}
.news-list a:hover{
  text-decoration: underline;
  color: var(--acc);           /* アクセント色で反応 */
}
/* スクロールバー控えめ（対応ブラウザ） */
.news-box::-webkit-scrollbar{ width: 10px; }
.news-box::-webkit-scrollbar-track{ background: rgba(255,255,255,0.05); border-radius: 8px; }
.news-box::-webkit-scrollbar-thumb{ background: rgba(255,255,255,0.15); border-radius: 8px; }

/* セクションを画面いっぱいに広げる *//* これまでの .full-bleed を全削除して、以下に置き換え */
.full-bleed{
  width: 100vw;
  max-width: 100vw;
  margin-left: 50%;
  transform: translateX(-50%);  /* ← これでビューポートに水平センタリング */
  padding: 0 24px;              /* 端の余白（好みで調整） */
}

/* PC=4列 / モバイル=1列のまま */
.grid.cols-4{
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}
@media (max-width: 700px){
  .grid.cols-4{ grid-template-columns: 1fr; }
}

/* News ボックスは全幅で */
.full-bleed .news-box{
  width: 100%;
  max-width: none;
  margin: 0;
}

/* 横スクロール抑止（100vw使用時の保険） */
html, body{ overflow-x: hidden; }


/* iframe はそのカラム幅いっぱい */
.video{
  width: 100%;
  aspect-ratio: 16/9;
  display: block;
  border: 0;
  border-radius: 10px;
  background: #000;
}
