:root{
  /* ── カラー ── */
  --indigo:#1a2333;         /* 深い藍 */
  --indigo-2:#252f42;
  --indigo-3:#343e54;
  --ivory:#f5f1e8;          /* 上質な象牙 */
  --ivory-2:#ebe5d6;
  --ivory-soft:#faf7f0;
  --pearl:#ffffff;
  --amber:#8a6638;          /* 琥珀（控えめな金）淡背景上でAA確保 */
  --amber-display:#b08854;  /* 大見出し・暗背景上の装飾用（淡背景の本文には使わない） */
  --amber-soft:#c9a57a;
  --amber-light:#e5d0ae;
  --silver:#5F6673;         /* 燻銀（注釈テキスト用にAA確保） */
  --silver-2:#b0b6c2;
  --wine:#722831;           /* 深いワイ�� */
  --rule:rgba(26,35,51,0.08);
  --rule-2:rgba(26,35,51,0.15);

  /* ── シャドウ ── */
  --shadow-soft:0 30px 80px -40px rgba(26,35,51,0.22);
  --shadow-strong:0 40px 100px -40px rgba(26,35,51,0.35);

  /* ── フ���ント ── */
  --serif:"Hiragino Mincho ProN","Yu Mincho","MS PMincho",serif;
  --serif-en:Georgia,"Times New Roman",serif;
  --sans:"Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic","Meiryo",system-ui,sans-serif;

  /* ── スペーシング（余白の一元管理��� ── */
  --sp-xs:8px;
  --sp-sm:16px;
  --sp-md:24px;
  --sp-lg:40px;
  --sp-xl:80px;
  --sp-2xl:140px;
  --sp-section:140px 40px;       /* セクション標準余白 */
  --sp-section-lg:160px 40px;    /* 特殊セクション余白 */

  /* ── フォントサイズ（頻出サイズの統一） ���─ */
  --fs-xs:10px;
  --fs-sm:11px;
  --fs-base:13px;
  --fs-md:14px;
  --fs-lg:17px;
  --fs-xl:22px;
  --fs-2xl:32px;
  --fs-3xl:48px;

  /* ── コンテナ幅 ── */
  --container-wide:1320px;
  --container:1100px;
  --container-md:960px;
  --container-narrow:780px;

  /* ── ブレイクポイント（参照用・@mediaでは直書き） ── */
  /* --bp-lg: 1180px;  PC→タブレット */
  /* --bp-md: 820px;   タブレット→スマホ */
  /* --bp-sm: 540px;   スマホ小画面 */

  /* ── z-index ── */
  --z-base:1;
  --z-content:2;
  --z-overlay:90;
  --z-header:100;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;
  font-size:16px;
}
body{
  font-family:var(--serif);
  color:var(--indigo);
  background:var(--ivory);
  line-height:1.9;
  font-feature-settings:"palt";
  overflow-x:hidden;
  letter-spacing:0.02em;
}
img{max-width:100%;height:auto;display:block;}
a{color:inherit;text-decoration:none;transition:color 0.3s ease;}
button{font-family:inherit;cursor:pointer;border:none;background:none;}

/* ── ユーティリティクラス（インラインstyle撲滅用） ── */
.text-note{font-size:var(--fs-xs);opacity:0.7;}
.text-disclaimer{text-align:center;margin-top:32px;font-size:12px;color:var(--silver);letter-spacing:0.05em;font-style:italic;}
.price-upto{font-size:var(--fs-md);color:var(--amber-soft);font-weight:400;margin-right:6px;font-family:var(--serif-en);font-style:italic;}
.record-scale{display:block;font-size:12px;color:var(--indigo-2);margin-top:6px;letter-spacing:0.1em;font-weight:500;font-family:var(--serif-en);font-style:italic;}
.record-upto{font-size:var(--fs-md);color:var(--amber);font-weight:400;margin-right:6px;font-family:var(--serif-en);font-style:italic;}
.hero-stat-num--text{font-size:30px;}
.hero-stat-num--text .unit{font-size:var(--fs-md);}
.link-accent{color:var(--wine);border-bottom:1px solid var(--amber-soft);}

/* ── CTA共通基盤（.open-btn / .school-btn / .contact-btn が継承） ── */
.open-btn,
.school-btn,
.contact-btn{
  font-size:var(--fs-md);
  font-weight:600;
  letter-spacing:0.08em;
  text-decoration:none;
  transition:all 0.35s ease;
  display:inline-flex;
  align-items:center;
  gap:8px;
  cursor:pointer;
}

/* Fine noise texture for paper feel */
body::before{
  content:"";
  position:fixed;inset:0;
  pointer-events:none;
  z-index:1;
  opacity:0.03;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ── アクセシビリティ: フォーカス可視化（a11y監査対応 2026-06-08）── */
a:focus-visible,
button:focus-visible,
[tabindex]:focus-visible,
.btn-primary:focus-visible,
.contact-btn:focus-visible{
  outline:3px solid var(--amber-display);
  outline-offset:2px;
  border-radius:4px;
}

/* ── アクセシビリティ: モーション低減設定の尊重 ── */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
    scroll-behavior:auto !important;
  }
}
