/* ============================================================
   Aroza HP - Design System (共通スタイル)
   index.html とサブページで共有
   ============================================================ */

:root{
  --ink:#0e1320;
  --ink-2:#1a2236;
  --muted:#5b6577;
  --muted-2:#8993a4;
  --line:#e7ebf2;
  --line-2:#eef1f6;
  --bg:#ffffff;
  --bg-soft:#f5f7fb;
  --blue:#3a5bff;
  --blue-2:#1f6bff;
  --cyan:#22d3ee;
  --grad: linear-gradient(135deg,#5d6bff 0%,#22a8ff 55%,#22d3ee 100%);
  --grad-soft: linear-gradient(135deg,#7a86ff 0%,#3aa6ff 60%,#5be4f0 100%);
  --shadow-card: 0 1px 0 rgba(16,24,40,.02), 0 10px 30px -12px rgba(31,53,120,.12);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;background:transparent;color:var(--ink);
  font-family:"Noto Sans JP","Inter",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  font-feature-settings:"palt";
  -webkit-font-smoothing:antialiased;
  line-height:1.7;
  overflow-x:hidden;
  -webkit-text-size-adjust:100%;
}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%;height:auto}
ul{list-style:none;padding:0;margin:0}
.wrap{max-width:1120px;margin:0 auto;padding:0 64px}

/* ---------- Header ---------- */
.site-header{
  position:fixed;top:0;left:0;right:0;z-index:20;
  padding:22px 0;
  background:transparent;
  transform:translateY(0) !important; /* main.js の hide-on-scroll を無効化 */
  transition:background-color .3s ease, box-shadow .3s ease, padding .3s ease, backdrop-filter .3s ease;
}
.site-header.scrolled{
  background:rgba(255,255,255,.86);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  box-shadow:0 1px 0 rgba(16,24,40,.06), 0 10px 30px -18px rgba(31,53,120,.18);
  padding:14px 0;
}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:24px}
.logo{
  font-family:"Cormorant Garamond",serif;
  font-size:34px;font-weight:500;letter-spacing:-.01em;color:#0d1224;
}
nav.primary{display:flex;gap:44px}
nav.primary a{
  font-size:14px;font-weight:500;color:#2a3142;letter-spacing:.02em;
  transition:color .15s;
}
nav.primary a:hover{color:var(--blue)}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:44px;padding:0 26px;border-radius:999px;
  font-size:14px;font-weight:600;letter-spacing:.02em;
  border:1px solid transparent;cursor:pointer;
  transition:transform .15s ease, box-shadow .2s ease, opacity .15s;
}
.btn:hover{transform:translateY(-1px)}
.btn-grad{
  color:#fff;background:var(--grad);
  box-shadow:0 8px 22px -8px rgba(58,91,255,.55);
}
.btn-outline{
  background:#fff;border-color:#d7dde8;color:#0d1224;
}
.btn-dark{
  background:#0c0f17;color:#fff;border-radius:12px;height:54px;padding:0 36px;
  font-size:15px;font-weight:600;
}
.btn-dark:hover{background:#1a1f2c}
.header-cta{height:48px;padding:0 28px;font-size:14px}

/* ---------- Menu toggle (mobile) ---------- */
.menu-toggle{display:none;width:44px;height:44px;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:6px;background:transparent;border:none;padding:0;z-index:70;-webkit-tap-highlight-color:transparent;position:relative}
.menu-toggle span{display:block;width:24px;height:2px;background:#0d1224;border-radius:2px;transition:transform .25s, opacity .25s, background-color .25s}
.menu-toggle.active span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.menu-toggle.active span:nth-child(2){opacity:0}
.menu-toggle.active span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}

/* ---------- Fixed background stage ---------- */
.bg-stage{
  position:fixed;inset:0;z-index:0;overflow:hidden;
  background:transparent;
  pointer-events:none;
}
body > header,
body > section,
body > main,
body > footer{position:relative;z-index:1}
.bg-layer{
  position:absolute;inset:0;
  background-size:cover;background-repeat:no-repeat;
  opacity:0;
  transition:opacity 1.4s ease;
  will-change:opacity;
}
.bg-layer.is-active{opacity:1}
.bg-layer.bg-hero{
  background-position:right center;
}
.bg-layer.bg-feature{
  background-position:center;
}
.bg-layer.bg-mission{
  background-position:center;
}

/* ---------- Section common ---------- */
.section-head{text-align:center;margin:0 auto 50px}
.section-head h2{
  font-family:"Cormorant Garamond",serif;
  font-weight:500;font-size:46px;line-height:1.1;margin:0 0 6px;color:#0a0f1c;
  letter-spacing:.005em;
}
.section-head .ja{
  display:inline-block;font-size:13px;color:#4a5266;letter-spacing:.4em;
  padding-top:8px;border-top:1px solid #d7dde8;
}
.eyebrow{
  font-size:13px;font-weight:600;color:var(--blue);letter-spacing:.06em;margin:0 0 14px;
  font-family:"Inter",sans-serif;
}

/* ---------- Footer ---------- */
footer{
  padding:60px 0 28px;
  background:linear-gradient(180deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.95) 30%,#fff 100%);
  margin-top:0;
}
.foot{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:32px;align-items:flex-start}
.foot .brand .logo{font-size:30px;margin-bottom:14px}
.foot .brand .addr{font-size:13px;line-height:1.9;color:#3a4256}
.foot h5{font-size:13px;font-weight:700;margin:0 0 16px;color:#0a0f1c;letter-spacing:.02em}
.foot ul{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.foot ul li a{font-size:13px;color:#3a4256;transition:color .15s}
.foot ul li a:hover{color:var(--blue)}
.copy{
  border-top:1px solid #eef1f6;margin-top:50px;padding-top:22px;
  text-align:center;font-size:12px;color:#8993a4;letter-spacing:.04em;
}

/* ============================================================
   サブページ共通 (page-)
   src/*.html, blog/*.html で使う
   ============================================================ */

/* サブページ用：ヘッダー分のスペースと bg-stage 表示用の白下地 */
body.page-sub{
  background:#fbfcfe;
  min-height:100vh;
}
body.page-sub .bg-stage{
  /* サブページではヒーロー画像を控えめに */
  opacity:.25;
}

/* ページタイトル（旧 consulting-hero/company-info の代替） */
.page-hero{
  position:relative;
  padding:200px 0 90px;
  background:linear-gradient(180deg,rgba(247,250,255,.92) 0%,rgba(238,243,255,.88) 60%,rgba(255,255,255,.0) 100%);
  border-bottom:1px solid rgba(31,53,120,.08);
  margin-bottom:40px;
  isolation:isolate;
}
.page-hero::before{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:60px;
  background:linear-gradient(180deg,rgba(255,255,255,0) 0%,#fbfcfe 100%);
  pointer-events:none;z-index:1;
}
.page-hero::after{
  content:"";position:absolute;left:50%;bottom:-14px;
  width:56px;height:28px;transform:translateX(-50%);
  background:#fbfcfe;border:1px solid rgba(31,53,120,.10);
  border-radius:0 0 28px 28px;border-top:none;z-index:2;
}
.page-hero .wrap{position:relative;z-index:3}
.page-hero h1{
  font-family:"Cormorant Garamond",serif;
  font-weight:500;
  font-size:64px;line-height:1.05;letter-spacing:-.01em;
  margin:0 0 14px;color:#0a0f1c;
  position:relative;display:inline-block;
}
.page-hero h1::after{
  content:"";display:block;width:64px;height:3px;margin-top:18px;
  background:var(--grad);border-radius:999px;
}
/* .ja を eyebrow tag風のチップに */
.page-hero .ja{
  display:inline-flex;align-items:center;gap:8px;
  padding:6px 14px;border-radius:999px;
  background:linear-gradient(135deg,rgba(93,107,255,.10),rgba(34,168,255,.10));
  border:1px solid rgba(93,107,255,.20);
  color:var(--blue);font-size:11px;font-weight:700;letter-spacing:.22em;
  margin-top:10px;text-transform:uppercase;border-top:none;
}
.page-hero .ja::before{
  content:"";width:6px;height:6px;border-radius:50%;
  background:linear-gradient(135deg,#5d6bff,#22a8ff);
  flex:0 0 6px;
}
.page-hero .lead{
  font-size:17px;line-height:1.95;color:#2c3346;font-weight:500;
  margin:28px 0 0;max-width:760px;
}

/* ページコンテンツ */
.page-content{
  padding:20px 0 100px;
  position:relative;z-index:1;
}
.page-content .wrap{position:relative}

/* セクションブロック (サブページ内の章) */
.page-section{
  padding:48px 0;
}
.page-section:first-child{padding-top:24px}
.page-section h2{
  font-size:32px;font-weight:700;color:#0a0f1c;letter-spacing:-.005em;
  margin:0 0 8px;
}
.page-section h2 .num{
  display:inline-block;
  font-family:"Cormorant Garamond",serif;
  font-weight:500;color:var(--blue);
  margin-right:14px;font-size:32px;
}
.page-section h3{
  font-size:20px;font-weight:600;color:#0a0f1c;margin:32px 0 12px;
}
.page-section p{
  font-size:15px;line-height:1.95;color:#3a4256;margin:0 0 16px;
}
.page-section ul, .page-section ol{
  font-size:15px;line-height:1.95;color:#3a4256;margin:0 0 16px;padding-left:24px;
}
.page-section ul{list-style:disc}
.page-section ol{list-style:decimal}
.page-section ul li, .page-section ol li{margin-bottom:6px}

/* テーブル (会社概要等) */
.info-table{
  width:100%;
  border-collapse:collapse;
  margin:24px 0;
  background:#fff;
  border-radius:12px;
  overflow:hidden;
  box-shadow:var(--shadow-card);
}
.info-table th, .info-table td{
  padding:18px 22px;
  text-align:left;
  border-bottom:1px solid var(--line-2);
  font-size:14px;
  line-height:1.7;
}
.info-table tr:last-child th,
.info-table tr:last-child td{border-bottom:none}
.info-table th{
  width:28%;font-weight:600;color:#1c2434;background:#fafbfd;
  letter-spacing:.02em;
}
.info-table td{color:#3a4256}

/* カードグリッド (process/value 用) */
.feature-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(260px,1fr));
  gap:20px;margin:24px 0;
}
.feature-grid .feature-card{
  background:#fff;border:1px solid #eaeef5;border-radius:14px;
  padding:28px 24px;box-shadow:var(--shadow-card);
  transition:transform .2s ease, box-shadow .2s ease;
}
.feature-grid .feature-card:hover{transform:translateY(-3px);box-shadow:0 16px 40px -14px rgba(31,53,120,.18)}
.feature-grid .feature-card .icon{
  width:48px;height:48px;border-radius:12px;
  background:var(--grad-soft);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:16px;
  box-shadow:0 8px 18px -8px rgba(48,124,255,.5);
}
.feature-grid .feature-card .step-num{
  display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;border-radius:50%;
  background:var(--grad);color:#fff;font-weight:700;font-size:16px;
  margin-bottom:14px;
}
.feature-grid .feature-card h3{
  font-size:17px;font-weight:700;color:#0a0f1c;margin:0 0 10px;
}
.feature-grid .feature-card p{
  font-size:14px;line-height:1.85;color:#3a4256;margin:0;
}

/* CTAバナー (戻るリンク等) */
.back-link{text-align:center;margin:60px 0 0}
.back-link a{
  display:inline-flex;align-items:center;gap:8px;
  color:var(--blue);font-weight:600;font-size:14px;
}
.back-link a:hover{text-decoration:underline}

/* 規約系の見出し階層 */
.legal-body h2{
  font-size:22px;font-weight:700;color:#0a0f1c;margin:40px 0 14px;
  padding-bottom:10px;border-bottom:2px solid var(--line);
}
.legal-body h3{
  font-size:17px;font-weight:600;color:#0a0f1c;margin:24px 0 10px;
}
.legal-body p, .legal-body li{
  font-size:14px;line-height:1.95;color:#3a4256;
}
.legal-body ul, .legal-body ol{
  margin:12px 0 16px;padding-left:24px;
}
.legal-body ul{list-style:disc}
.legal-body ol{list-style:decimal}
.legal-body li{margin-bottom:6px}

/* ブログカード */
.blog-grid{
  display:grid;grid-template-columns:repeat(auto-fit, minmax(320px,1fr));
  gap:24px;margin-top:32px;
}
.blog-card{
  background:#fff;border:1px solid var(--line);border-radius:16px;
  overflow:hidden;box-shadow:var(--shadow-card);
  transition:transform .2s ease, box-shadow .2s ease;
  display:flex;flex-direction:column;
}
.blog-card:hover{transform:translateY(-3px);box-shadow:0 16px 40px -14px rgba(31,53,120,.18)}
.blog-card-image{
  width:100%;height:180px;
  background:var(--grad);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:42px;
}
.blog-card-content{padding:22px 24px 26px;display:flex;flex-direction:column;flex:1}
.blog-card .category{
  display:inline-block;background:#eef3ff;color:var(--blue);
  padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;
  letter-spacing:.04em;margin-bottom:10px;align-self:flex-start;
}
.blog-card h3{
  font-size:16px;font-weight:700;color:#0a0f1c;margin:0 0 8px;line-height:1.5;
}
.blog-card .date{
  font-size:12px;color:var(--muted);margin-bottom:10px;
}
.blog-card p{
  font-size:13px;line-height:1.8;color:#3a4256;margin:0 0 14px;flex:1;
}
.blog-card .read-more{
  font-size:13px;font-weight:600;color:var(--blue);
  display:inline-flex;align-items:center;gap:6px;align-self:flex-start;
}
.blog-card .read-more:hover{text-decoration:underline}

/* ブログ記事ページ */
.article-body{
  max-width:780px;margin:0 auto;
}
.article-body h2{
  font-size:26px;font-weight:700;color:#0a0f1c;margin:40px 0 16px;
}
.article-body h3{
  font-size:18px;font-weight:600;color:#0a0f1c;margin:28px 0 12px;
}
.article-body p{font-size:15px;line-height:1.95;color:#1c2434;margin:0 0 18px}
.article-body ul, .article-body ol{font-size:15px;line-height:1.95;color:#1c2434;margin:0 0 18px;padding-left:24px}
.article-body ul{list-style:disc}
.article-body ol{list-style:decimal}
.article-body li{margin-bottom:6px}
.article-body img{margin:24px auto;border-radius:12px;box-shadow:var(--shadow-card)}
.article-body blockquote{
  border-left:4px solid var(--blue);
  background:#f5f7fb;padding:16px 22px;margin:20px 0;
  border-radius:0 10px 10px 0;color:#1c2434;
}
.article-meta{text-align:center;margin-bottom:24px}
.article-meta .category{
  display:inline-block;background:#eef3ff;color:var(--blue);
  padding:4px 12px;border-radius:6px;font-size:12px;font-weight:600;
  letter-spacing:.04em;margin-right:10px;
}
.article-meta .date{font-size:13px;color:var(--muted)}

/* ---------- fadeIn animation ---------- */
.fadeIn{opacity:1;transform:none;transition:opacity .8s ease, transform .8s ease}
html.js .fadeIn{opacity:0;transform:translateY(20px)}
html.js .fadeIn.is-visible{opacity:1;transform:none}

/* ---------- Responsive ---------- */
@media (max-width: 1024px){
  .wrap{padding:0 48px}
  .foot{grid-template-columns:1fr 1fr 1fr;gap:28px}
  .foot .brand{grid-column:1 / -1}
  .page-hero{padding:170px 0 76px}
  .page-hero h1{font-size:48px}
  .page-hero h1::after{width:56px;margin-top:16px}
}
@media (max-width: 768px){
  .wrap{padding:0 20px}
  .site-header{padding:14px 0}
  .site-header.scrolled{padding:10px 0}
  .logo{font-size:28px}
  .menu-toggle{display:flex}
  nav.primary{
    position:fixed;top:0;right:-100%;
    width:82%;max-width:340px;height:100vh;
    background:#ffffff;flex-direction:column;gap:0;
    padding:88px 24px 32px;
    box-shadow:-12px 0 50px -8px rgba(20,30,60,.28);
    transition:right .3s ease;z-index:60;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    -webkit-backdrop-filter:none;
            backdrop-filter:none;
  }
  nav.primary.active{right:0}
  nav.primary a{padding:16px 0;border-bottom:1px solid #eef1f6;font-size:15px;min-height:44px;display:flex;align-items:center;color:#0d1224;font-weight:600}
  .menu-overlay{
    position:fixed;inset:0;background:rgba(10,15,28,.55);
    opacity:0;visibility:hidden;transition:opacity .3s, visibility .3s;z-index:40;
  }
  .menu-overlay.active{opacity:1;visibility:visible}
  body.menu-open{overflow:hidden}
  /* メニュー展開中はヘッダー側を最前面の stacking context に持ち上げて
     nav.primary (header の子) が overlay より上に描画されるようにする
     ＋背景透明化で nav の白を邪魔しない */
  body.menu-open .site-header{
    background:transparent !important;
    box-shadow:none !important;
    -webkit-backdrop-filter:none !important;
            backdrop-filter:none !important;
    z-index:65 !important; /* overlay:40 より上に */
  }
  /* メニュー展開中、ロゴと × は nav より前面に出す */
  body.menu-open .menu-toggle{z-index:70}
  body.menu-open .logo{position:relative;z-index:70}
  .header-cta{display:none}

  /* セクション共通の見出し縮小 */
  .section-head{margin:0 auto 32px}
  .section-head h2{font-size:34px}
  .section-head .ja{font-size:11px;letter-spacing:.3em}

  /* ボタンのタップ領域確保 */
  .btn{min-height:44px}
  .btn-dark{height:50px;padding:0 28px;font-size:14px}

  /* page hero 余白 */
  .page-hero{padding:108px 0 54px;margin-bottom:28px}
  .page-hero::before{height:40px}
  .page-hero::after{width:44px;height:22px;bottom:-11px;border-radius:0 0 22px 22px}
  .page-hero h1{font-size:30px;line-height:1.18;margin:0 0 10px}
  .page-hero h1::after{width:48px;height:2.5px;margin-top:14px}
  .page-hero .ja{font-size:10px;letter-spacing:.18em;padding:5px 12px}
  .page-hero .lead{font-size:14px;line-height:1.85;margin-top:18px}
  .page-content{padding:0 0 64px}
  .page-section{padding:32px 0}
  .page-section h2{font-size:22px;line-height:1.4}
  .page-section h2 .num{font-size:24px;margin-right:10px}
  .page-section h3{font-size:17px;margin:24px 0 10px}
  .page-section p, .page-section ul, .page-section ol{font-size:14px;line-height:1.85}

  /* info-table を縦積みに（スマホ可読性UP）
     ※ th と td が交互の「2列×複数行」テーブルを想定。
       料金表など3列以上の表は <table class="info-table info-table--scroll"> を付ける。 */
  .info-table:not(.info-table--scroll){border-radius:10px}
  .info-table:not(.info-table--scroll) th,
  .info-table:not(.info-table--scroll) td{padding:12px 16px;display:block;width:100%;font-size:14px}
  .info-table:not(.info-table--scroll) th{background:#fafbfd;border-bottom:none;padding-bottom:6px;font-size:12px;letter-spacing:.06em;color:#5b6577;text-transform:uppercase}
  .info-table:not(.info-table--scroll) td{padding-top:4px;padding-bottom:14px;border-bottom:1px solid var(--line-2)}
  .info-table:not(.info-table--scroll) tr:last-child td{border-bottom:none}

  /* 3列以上の表（料金表等）は横スクロールで対応 */
  .info-table--scroll{
    display:block;width:100%;overflow-x:auto;
    -webkit-overflow-scrolling:touch;white-space:nowrap;
  }
  .info-table--scroll thead,
  .info-table--scroll tbody,
  .info-table--scroll tr{display:table;width:max-content;min-width:100%;table-layout:auto}
  .info-table--scroll th, .info-table--scroll td{padding:11px 14px;font-size:13px}

  /* legal-body 内の info-table はもしクラス指定がなくても、3列以上を疑って自動で横スクロール可能にしない。
     ただし1つ目のセルが3つ以上ある行があれば崩れる。手動で .info-table--scroll を付与する運用とする。 */

  /* feature-grid 単列化 */
  .feature-grid{grid-template-columns:1fr;gap:16px;margin:20px 0}
  .feature-grid .feature-card{padding:22px 20px;border-radius:12px}
  .feature-grid .feature-card h3{font-size:16px}
  .feature-grid .feature-card p{font-size:14px;line-height:1.8}
  .feature-grid .feature-card .icon{width:42px;height:42px;font-size:18px;border-radius:10px}
  .feature-grid .feature-card .step-num{width:36px;height:36px;font-size:15px}

  /* blog */
  .blog-grid{grid-template-columns:1fr;gap:18px;margin-top:24px}
  .blog-card-image{height:140px;font-size:36px}
  .blog-card-content{padding:18px 20px 22px}
  .blog-card h3{font-size:15px}
  .blog-card p{font-size:13px}
  .article-body h2{font-size:22px;margin:32px 0 14px}
  .article-body h3{font-size:17px;margin:24px 0 10px}
  .article-body p,
  .article-body ul,
  .article-body ol{font-size:14px;line-height:1.9}
  .article-body blockquote{padding:14px 18px;margin:16px 0;font-size:14px}
  .article-meta .category{font-size:11px;padding:3px 10px}
  .article-meta .date{font-size:12px}

  /* legal */
  .legal-body h2{font-size:18px;margin:32px 0 12px;padding-bottom:8px}
  .legal-body h3{font-size:15px;margin:20px 0 10px}
  .legal-body p, .legal-body li{font-size:13px;line-height:1.85}

  /* back link tap area */
  .back-link{margin:40px 0 0}
  .back-link a{padding:10px 12px;display:inline-flex;font-size:14px}

  footer{padding:40px 0 22px}
  .foot{grid-template-columns:1fr 1fr;gap:22px;text-align:left}
  .foot .brand{grid-column:1 / -1;text-align:left}
  .foot .brand .logo{font-size:26px;margin-bottom:10px}
  .foot .brand .addr{font-size:12px;line-height:1.85}
  .foot h5{font-size:12px;margin:0 0 12px}
  .foot ul{gap:8px}
  .foot ul li a{font-size:12.5px;padding:6px 0;display:inline-block;min-height:32px}
  .copy{margin-top:32px;padding-top:18px;font-size:11px}

  /* サブページの背景画像はモバイルだと邪魔なので更に薄く */
  body.page-sub .bg-stage{opacity:.18}
}
@media (max-width: 480px){
  .wrap{padding:0 16px}
  .foot{grid-template-columns:1fr;gap:18px}
  .page-hero{padding:96px 0 44px}
  .page-hero h1{font-size:26px}
  .page-hero h1::after{width:42px;margin-top:12px}
  .page-hero .lead{font-size:13.5px}
  .section-head h2{font-size:30px}
  .page-section h2{font-size:20px}
  .info-table th, .info-table td{padding:10px 14px}
  .feature-grid .feature-card{padding:20px 18px}
  .logo{font-size:26px}
}

/* タッチデバイス: hover を無効化（タップ後に hover が残るのを防ぐ） */
@media (hover: none){
  .btn:hover{transform:none}
  .feature-grid .feature-card:hover{transform:none;box-shadow:var(--shadow-card)}
  .blog-card:hover{transform:none;box-shadow:var(--shadow-card)}
  nav.primary a:hover{color:#2a3142}
}
