/* ===== 共通UIの小修正（試作） =====
 * 言語切替: ホバー中は閉じない。元CSSはホバーで開くが、ボタンとメニューの間に 6px の隙間があり、
 * そこを横切る瞬間に :hover が外れて閉じていた。隙間を橋渡しし、閉じるのも少し遅らせる。 */
.lang-switcher::after{content:'';position:absolute;left:0;right:0;top:100%;height:10px}
.lang-dropdown{display:block !important;opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity .15s ease,transform .15s ease,visibility 0s linear .3s}
.lang-switcher:hover .lang-dropdown,.lang-switcher.open .lang-dropdown,.lang-switcher:focus-within .lang-dropdown{
  opacity:1;visibility:visible;transform:none;transition-delay:0s}

/* ヘッダ: 幅の狭い端末では中央の社名がロゴ/アイコンに重なる（元サイトの既存不具合）。480px以下では社名を隠しロゴだけにする */
@media(max-width:480px){.site-title-center{display:none}}
/* 横スクロール（ページ幅の膨張）を根元で止める。膨張すると固定バナーの右端（同意ボタン）が画面外に出る */
/* 🔴 overflow-x:hidden は body を scroll container にして position:sticky（About の右パネル等）を壊す。clip なら壊さない */
html,body{overflow-x:clip}

/* ===== 文字のはみ出し（全ページ監査 2026-09-16） =====
 * 1) .text-box h2 の white-space:nowrap が原因で、英語の長い見出し（例: Where Security Meets Japanese Aesthetic）が
 *    枠の右へ突き抜ける。日本語でもスマホ幅では同じ。折り返しを許可する。 */
.text-box h2{white-space:normal;overflow-wrap:anywhere}
/* 2) 背景の飾り文字（15vw/18vw・nowrap）が画面幅を越え、横スクロールの原因になる。親でクリップする */
.viewer-container,#fixed-viewer-container,.pillar-visual{overflow:hidden}
/* 3) プライバシーポリシーの長いURLが折り返せず枠外へ（スマホ幅） */
.policy-block a,.policy-block li,.policy-block p{overflow-wrap:anywhere;word-break:break-word}

/* ===== 見出し・キャッチコピーの改行位置 ===== */
/* 行数が最小になる範囲で各行の長さを揃え、最後の1語だけ孤立する折り返しを避ける */
h1,h2,h3,.hero-sub,.hero-subtitle,.sub,.pillar-label,.column-card-title,.pp-card-title,.pp-sec-title,.pp-hero-title,.contact-subtitle,.text-box p{text-wrap:balance}
/* 意味のまとまり（句）は途中で折らない。まとまりの間でだけ折り返す */
.nb{white-space:nowrap}
/* 幅の狭い端末では句の長さが行幅を超えるので、句の途中でも折り返しを許可（balance は効き続ける） */
@media(max-width:599px){.nb{white-space:normal}}
/* 広い画面でだけ効く改行（文と文の間） */
.pp-br{display:none}
@media(min-width:992px){.pp-br{display:inline}}

/* ===== Global ページのダークモード補正（元CSSが #111/#444/#fff 直書き。ja/en/zh 共通） ===== */
[data-theme="dark"] .global-hero[data-astro-cid-7g45ctut]{background:var(--color-surface)}
[data-theme="dark"] .hero-title[data-astro-cid-7g45ctut],[data-theme="dark"] .pillar-title[data-astro-cid-7g45ctut],[data-theme="dark"] .items-title[data-astro-cid-7g45ctut]{color:var(--color-text)}
[data-theme="dark"] .hero-sub[data-astro-cid-7g45ctut],[data-theme="dark"] .items-desc[data-astro-cid-7g45ctut],[data-theme="dark"] .faq-panel[data-astro-cid-7g45ctut]{color:var(--color-text-muted)}
[data-theme="dark"] .pillar-desc[data-astro-cid-7g45ctut]{color:var(--color-text)}
[data-theme="dark"] .pillar-row[data-astro-cid-7g45ctut],[data-theme="dark"] .faq-item[data-astro-cid-7g45ctut],[data-theme="dark"] .support-table[data-astro-cid-7g45ctut] tr[data-astro-cid-7g45ctut]{border-bottom-color:var(--color-gray-border)}
[data-theme="dark"] .pillar-visual[data-astro-cid-7g45ctut]{background:var(--color-surface-alt)}
[data-theme="dark"] .pillar-bg-letter[data-astro-cid-7g45ctut]{color:rgba(255,255,255,.05)}
[data-theme="dark"] .support-items-section[data-astro-cid-7g45ctut],[data-theme="dark"] .table-container[data-astro-cid-7g45ctut]{background:var(--color-surface);border-color:var(--color-gray-border)}
[data-theme="dark"] .support-table[data-astro-cid-7g45ctut] tr[data-astro-cid-7g45ctut]:hover,[data-theme="dark"] .col-icon[data-astro-cid-7g45ctut]{background-color:var(--color-surface-alt)}
[data-theme="dark"] .col-name[data-astro-cid-7g45ctut],[data-theme="dark"] .price-value[data-astro-cid-7g45ctut]{color:var(--color-text)}
[data-theme="dark"] .pillar-label[data-astro-cid-7g45ctut]{color:#5aa0ff}

/* ---- スマホ(<600px) 共通: Cookieバーを畳む・タップ領域を確保 ---- */
@media(max-width:599px){
  #cookie-banner{padding:10px 14px 12px}
  #cookie-banner .cookie-inner{gap:8px}
  #cookie-banner .cookie-msg{font-size:.74rem;line-height:1.5;min-width:0}
  #cookie-banner .cookie-btns{width:100%;justify-content:flex-end}
  #cookie-banner .cbtn{padding:8px 16px;font-size:.78rem}
  .lang-trigger{min-height:40px;padding:6px 10px}
  .footer-menus a{display:inline-block;padding:8px 6px}
  .footer-copyright a{display:inline-block;padding:6px 4px}
}

/* ---- スクロール連動ページ(ND/Orbital/About)のスマホ: ダークで文字箱が白のまま=文字が消える ---- */
@media(max-width:991px){
  [data-theme="dark"] .text-box{background:rgba(17,17,17,.9);box-shadow:0 -4px 20px rgba(0,0,0,.5)}
}
/* model-viewer の「指」プロンプトは全ページで出さない（スクロール連動の背景モデルに操作を促す意味が無い） */
model-viewer::part(interaction-prompt){display:none !important}
@media(max-width:599px){
  .text-box h2{font-size:1.55rem !important;line-height:1.35}   /* 「防犯と美学の融合」が語の途中で折れない大きさ */
  .text-box{padding:22px 20px}
}
/* About のスマホ: 「経歴年表」「専門領域」の見出し列(20%)が縦1文字ずつになり本文列を圧迫 → 見出しを上に積む */
@media(max-width:599px){
  .about-founder-history-table tr,.about-founder-history-table th.about-head-col,.about-founder-history-table td.about-data-col{display:block;width:100%;box-sizing:border-box}
  .about-founder-history-table th.about-head-col{padding:10px 16px;border-bottom:none}
  .about-founder-history-table td.about-data-col{padding:0 16px 12px}
  .about-founder-history-table td.about-data-col .about-inner-history-table td{padding-left:0;padding-right:0}
}
/* スマホのスクロール連動ページ: 固定3D領域が100vhで画面中央にモデルが来て、下寄せの文字箱と重なる → 上58%に収める */
@media(max-width:991px){ .viewer-container{height:58vh !important;background:transparent !important} .viewer-container .viewer-bg-text{top:40%} }
/* 記事ページのスマホ: 見出しが大きすぎて語の途中で折れる */
@media(max-width:599px){
  .entry-content h2{font-size:1.45rem !important;line-height:1.4}
  .entry-content h3{font-size:1.2rem !important}
  article header h1{font-size:1.6rem !important;line-height:1.4}
  .section-title{font-size:1.7rem}
}

/* ---- ND「導入事例」: en/zh でスタイルが当たらない問題 ----
 * これらの規則は ja のページのインライン <style> の中にしか無く、
 * 節の markup だけを en/zh へ複製したため素のまま(display:block)で出ていた。
 * 属性セレクタが付いているので ND ページの要素にしか当たらない。ja では同じ値が二重に当たるだけ。 */
.case-studies-section[data-astro-cid-5aj5x6zi]{padding:100px 20px;background:var(--color-surface);position:relative;z-index:2}
.case-grid[data-astro-cid-5aj5x6zi]{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:50px}
.case-card[data-astro-cid-5aj5x6zi]{display:block;text-decoration:none;color:inherit;border-radius:8px;overflow:hidden;box-shadow:0 4px 16px #00000014;transition:transform .3s,box-shadow .3s}
.case-card[data-astro-cid-5aj5x6zi]:hover{transform:translateY(-6px);box-shadow:0 8px 30px #0000001f;opacity:1}
.case-img[data-astro-cid-5aj5x6zi]{height:220px;background-size:cover;background-position:center;background-color:#e0e0e0;position:relative;display:flex;align-items:flex-end;padding:16px}
.case-city[data-astro-cid-5aj5x6zi]{background:#000000b3;color:#fff;padding:4px 12px;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;border-radius:2px}
.case-body[data-astro-cid-5aj5x6zi]{padding:20px}
.case-type[data-astro-cid-5aj5x6zi]{font-size:11px;font-weight:700;color:var(--color-primary);text-transform:uppercase;letter-spacing:.15em;margin:0 0 6px}
.case-body[data-astro-cid-5aj5x6zi] h3[data-astro-cid-5aj5x6zi]{font-size:1rem;font-weight:700;margin:0;line-height:1.4}
@media(max-width:991px){.case-grid[data-astro-cid-5aj5x6zi]{grid-template-columns:repeat(2,1fr);gap:20px}}
@media(max-width:600px){.case-grid[data-astro-cid-5aj5x6zi]{grid-template-columns:1fr}.case-img[data-astro-cid-5aj5x6zi]{height:180px}}

/* ---- ダークモードで固定色のまま残っていた箇所 ----
 * どちらも元CSS側に [data-theme=dark] の上書きが1つも無く、ライトの色がそのまま出ていた。 */

/* Global の FAQ: 背景が --global-bg-gray(#f9f9f9) 固定。文字は明色なので白帯に白文字でほぼ読めなかった。
 * 付随して境界線(#eee)と本文(#666)も暗い背景では浮く／沈むので合わせて当てる。
 * Orbital の FAQ は --color-surface / --color-text-muted を使っていて元から追随するので触らない。 */
[data-theme="dark"] .global-faq-section{background-color:var(--color-gray-light)}
[data-theme="dark"] .global-faq-section .faq-item{border-bottom-color:var(--color-gray-border)}
[data-theme="dark"] .global-faq-section .faq-panel{color:var(--color-text-muted)}

/* Philosophy: ページのインライン style に #fff / #f7f8fa / #333 / #555 / #666 / #ba0000 が直書き。
 * 背景だけ暗くすると今度は文字が読めなくなるので、背景・本文・アクセントをセットで当てる。 */
[data-theme="dark"] .phil-hero,
[data-theme="dark"] .phil-beliefs{background:var(--color-base)}
[data-theme="dark"] .phil-statement,
[data-theme="dark"] .phil-why{background:var(--color-gray-light)}
/* 元は .phil-quote[cid] p[cid] = 属性2つ分だけ詳細度が高く負けるので、クラスを重ねて並べる
   (ハッシュの astro cid を書くと将来ずれるので使わない) */
[data-theme="dark"] .phil-quote.phil-quote p{color:var(--color-text)}
[data-theme="dark"] .phil-hero-sub,
[data-theme="dark"] .phil-signature,
[data-theme="dark"] .phil-belief-body,
[data-theme="dark"] .phil-why-text{color:var(--color-text-muted)}
[data-theme="dark"] .phil-hero-label,
[data-theme="dark"] .phil-belief-num,
[data-theme="dark"] .phil-link{color:var(--color-primary)}
[data-theme="dark"] .phil-quote{border-left-color:var(--color-primary)}

/* ---- ND「導入事例」を背景画像から <img> に変えたぶんの手当て ----
 * .case-img は position:relative の flex（下端に都市バッジ）。写真は絶対配置で敷き、
 * バッジを前に出す。ホバーの拡大も背景画像のときと同じ見え方にする。 */
.case-img[data-astro-cid-5aj5x6zi] img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s}
.case-card[data-astro-cid-5aj5x6zi]:hover .case-img[data-astro-cid-5aj5x6zi] img{transform:scale(1.04)}
.case-city[data-astro-cid-5aj5x6zi]{position:relative;z-index:1}

/* ---- ダークでコントラストが足りない小見出しの青 ----
 * .pillar-label / .partnership-label / .partnership-link は --global-accent / --orbital-blue の
 * #0056b3 固定。暗い背景では 12px 太字に対してコントラスト比が約2.2:1しかなく WCAG AA(4.5:1)に届かない。
 * ダークのときだけ同系統の明るい青に振る（ライトは変えない）。 */
:root[data-theme="dark"]{--global-accent:#4d9fff;--orbital-blue:#4d9fff}

/* 施工事例の写真の下敷き(#e0e0e0)がダークで読み込み中に白く光るので、暗い側に寄せる */
[data-theme="dark"] .case-img[data-astro-cid-5aj5x6zi]{background-color:var(--color-gray-light)}
