/* =========================================================
   blanca — style.css
   丸ゴシック系 / 赤アクセント / 暖色ベース / 読みやすさ優先
   ========================================================= */

/* ---------- トークン ---------- */
:root{
  --ink:      #2A2430;
  --ink-soft: #6E6675;
  --bg:       #FFFFFF;
  --cream:    #FFF7EF;
  --peach:    #FFEDE3;
  --red:      #F5333F;
  --red-dark: #D91F2C;
  --yellow:   #FFC24B;
  --teal:     #17B0C4;
  --line:     #EFE1D6;

  --radius:   20px;
  --radius-sm:12px;
  --shadow:   0 18px 40px -22px rgba(80,40,30,.35);
  --shadow-sm:0 8px 22px -14px rgba(80,40,30,.35);

  --container: 1120px;
  --gap-sec: clamp(64px, 10vw, 120px);

  --font-disp: "Zen Maru Gothic", "M PLUS Rounded 1c", sans-serif;
  --font-body: "Noto Sans JP", "M PLUS Rounded 1c", sans-serif;
  --font-num:  "Poppins", "Noto Sans JP", sans-serif;
}

/* ---------- リセット ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--bg);
  line-height:1.9;
  font-weight:500;
  letter-spacing:.01em;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; margin:0; padding:0; }
h1,h2,h3,p,dl,dd{ margin:0; }
button{ font-family:inherit; cursor:pointer; }
:focus-visible{ outline:3px solid var(--red); outline-offset:3px; border-radius:6px; }

/* ---------- 共通レイアウト ---------- */
.container{ width:min(100% - 48px, var(--container)); margin-inline:auto; }
.container.narrow{ width:min(100% - 48px, 820px); }
.pc-br{ display:inline; }
.sp-br{ display:none; }

.eyebrow{
  font-family:var(--font-num);
  font-weight:700;
  font-size:.82rem;
  letter-spacing:.14em;
  color:var(--red);
  display:inline-flex;
  align-items:center;
  gap:.55em;
  margin-bottom:1rem;
}
.eyebrow-dot{ width:26px; height:8px; border-radius:99px;
  background:radial-gradient(circle 2px at 4px 4px, var(--red) 60%, transparent 62%) 0 0/8px 8px repeat; }

/* セクション見出し上の英語ラベルをピル型バッジで目立たせる */
.eyebrow.center{
  width:fit-content; margin-inline:auto; margin-bottom:1.2rem;
  display:flex; align-items:center; gap:.55em;
  background:var(--red); color:#fff;
  font-size:.92rem; font-weight:800; letter-spacing:.16em;
  padding:.55em 1.3em; border-radius:99px;
  box-shadow:0 10px 20px -10px rgba(245,51,63,.55);
}
.eyebrow.center .eyebrow-dot{
  width:8px; height:8px; border-radius:50%; background:#fff;
}

.sec-head{
  font-family:var(--font-disp);
  font-weight:900;
  font-size:clamp(1.8rem, 4vw, 2.8rem);
  line-height:1.35;
  letter-spacing:.01em;
}
.sec-head.center{ text-align:center; }
/* 字数の少ない見出しは字間を広げて締まりを出す（末尾のアキは相殺） */
.sec-head.wide-track{ letter-spacing:.16em; text-indent:.16em; }
.sec-lead{
  color:var(--ink-soft);
  font-size:1.0625rem;
  margin-top:1.2rem;
}
.sec-lead.center{ text-align:center; }
.center{ text-align:center; }

.hl{ color:var(--red); position:relative; white-space:nowrap; }
.hl::after{
  content:""; position:absolute; left:-2%; right:-2%; bottom:.06em; height:.42em;
  background:var(--yellow); opacity:.5; z-index:-1; border-radius:99px;
}
.hl-y{ color:var(--yellow); }

/* ---------- ボタン ---------- */
.btn{
  --btn-bg:var(--ink); --btn-fg:#fff;
  display:inline-flex; align-items:center; gap:.5em;
  font-family:var(--font-disp); font-weight:700;
  background:var(--btn-bg); color:var(--btn-fg);
  padding:.85em 1.5em; border-radius:99px; border:2px solid transparent;
  font-size:.98rem; line-height:1;
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease;
  box-shadow:var(--shadow-sm);
}
.btn:hover{ transform:translateY(-3px); box-shadow:var(--shadow); }
.btn .ico{ width:1.15em; height:1.15em; }
.btn-sm{ padding:.62em 1.1em; font-size:.86rem; }
.btn-lg{ padding:1.05em 2em; font-size:1.05rem; }
.btn-red{ --btn-bg:var(--red); --btn-fg:#fff; }
.btn-red:hover{ background:var(--red-dark); }
.btn-white{ --btn-bg:#fff; --btn-fg:var(--ink); }
.btn-blue{ --btn-bg:#0087ef; --btn-fg:#fff; }
.btn-blue:hover{ background:#006fc4; }
.btn-ghost{ background:transparent; color:var(--ink); border-color:var(--line); box-shadow:none; }
.btn-ghost:hover{ background:var(--peach); border-color:var(--red); color:var(--red); }
.back-top{ text-align:center; margin:clamp(2.5rem,6vw,4.5rem) 0 clamp(3rem,7vw,5rem); }

/* アンカー遷移時に追従ヘッダー（74px）へ潜り込まないように */
section[id]{ scroll-margin-top:90px; }

/* ---------- ヘッダー ---------- */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.88);
  backdrop-filter:blur(10px);
  border-bottom:1px solid transparent;
  transition:border-color .25s ease, box-shadow .25s ease;
}
.site-header.scrolled{ border-color:var(--line); box-shadow:0 6px 20px -16px rgba(80,40,30,.5); }
.header-inner{
  width:min(100% - 40px, 1280px); margin-inline:auto;
  display:flex; align-items:center; gap:1.5rem;
  height:74px;
}
.brand-logo{ height:56px; width:auto; }
.gnav{ display:flex; gap:1.35rem; margin-left:.5rem; margin-right:auto; }
.gnav a{
  font-family:var(--font-disp); font-weight:700; font-size:.92rem;
  color:var(--ink); padding:.3em 0; position:relative;
  white-space:nowrap;
}
.gnav a::after{
  content:""; position:absolute; left:0; right:100%; bottom:-2px; height:3px;
  background:var(--red); border-radius:99px; transition:right .25s ease;
}
.gnav a:hover{ color:var(--red); }
.gnav a:hover::after{ right:0; }
.header-cta{ display:flex; gap:.6rem; }
.header-cta .btn{ white-space:nowrap; }
/* 1180〜1300px は項目が詰まるので、ナビだけ少し引き締める */
@media (max-width:1300px){
  .gnav{ gap:1rem; }
  .gnav a{ font-size:.88rem; }
}
.hamburger{
  display:none; flex-direction:column; gap:5px; width:44px; height:44px;
  border:none; background:transparent; align-items:center; justify-content:center;
}
.hamburger span{ width:24px; height:2.6px; background:var(--ink); border-radius:99px; transition:.25s ease; }
.hamburger[aria-expanded="true"] span:nth-child(1){ transform:translateY(7.6px) rotate(45deg); }
.hamburger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.hamburger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7.6px) rotate(-45deg); }

/* ---------- ヒーロー ---------- */
.hero{ position:relative; background:
    radial-gradient(120% 90% at 90% -10%, var(--peach) 0%, transparent 55%),
    var(--cream);
  padding-top:clamp(40px,7vw,84px); padding-bottom:clamp(56px,8vw,96px); overflow:hidden; }
.hero-dots{
  position:absolute; inset:auto -80px -60px auto; width:340px; height:340px; opacity:.5;
  background:radial-gradient(circle 4px at 6px 6px, var(--yellow) 55%, transparent 58%) 0 0/24px 24px;
  -webkit-mask:radial-gradient(circle at 70% 70%, #000, transparent 72%);
          mask:radial-gradient(circle at 70% 70%, #000, transparent 72%);
  pointer-events:none;
}
.hero-inner{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  column-gap:clamp(2rem,5vw,4rem); row-gap:1.8rem; align-items:center; position:relative; z-index:1; }
.hero-main{ display:flex; flex-direction:column; gap:1.9rem; min-width:0; }
.hero-copy{ min-width:0; }
.hero-title{
  font-family:var(--font-disp); font-weight:900;
  font-size:clamp(2.2rem, 4.4vw, 3.35rem); line-height:1.22; letter-spacing:.005em;
  margin-bottom:1.3rem;
}
.hero .eyebrow{ font-size:1.25rem; letter-spacing:.04em; margin-bottom:1.1rem; }
.hero-lead{ color:var(--ink); font-size:1.22rem; font-weight:500; }

.hero-stats{ display:flex; gap:1.4rem; flex-wrap:nowrap; align-items:flex-end; justify-content:center; }
.emblem{ position:relative; flex:1 1 0; min-width:0; max-width:250px;
  display:flex; flex-direction:column; align-items:center; }

/* --- 月桂冠エンブレム（実績数／画像素材＋文字重ね） --- */
.emblem-wreath{ position:relative; justify-content:flex-end; }
.wreath-img{ width:100%; max-width:228px; height:auto; display:block; margin-inline:auto;
  filter:drop-shadow(0 8px 12px rgba(150,110,20,.22)); }
.emblem-core{
  position:absolute; left:50.7%; top:53.5%; transform:translate(-50%,-50%); z-index:1;
  width:56%; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; line-height:1.1;
}
.emblem-title{ font-family:var(--font-disp); font-weight:700; font-size:.78rem; color:var(--ink); margin-bottom:.5em; }
.emblem-pre{ font-family:var(--font-disp); font-weight:700; font-size:.82rem; color:var(--ink); margin-bottom:.42em; }
.emblem-num{ font-family:var(--font-num); font-weight:800; color:var(--red);
  display:flex; align-items:baseline; justify-content:center; line-height:.85; }
.emblem-num .count{ font-size:3rem; letter-spacing:-.02em; }
.emblem-suf{ font-family:var(--font-disp); font-weight:700; font-size:.82rem; color:var(--ink); white-space:nowrap; }

/* --- ゴールドメダル（リピート率／画像素材＋数字重ね） --- */
.emblem-medal{ position:relative; justify-content:flex-end; transform:translateY(40px); }
.medal-img{ width:100%; max-width:214px; height:auto; display:block; margin-inline:auto;
  filter:drop-shadow(0 8px 12px rgba(150,110,20,.25)); }
.medal-face{
  position:absolute; left:50%; top:43.5%; transform:translate(-50%,-50%); z-index:1;
  width:52%; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; line-height:1; gap:.5em;
}
.medal-label{ font-family:var(--font-disp); font-weight:700; font-size:1.08rem; color:#5E430D; }
.medal-num{ font-family:var(--font-num); font-weight:800; color:#4E360A;
  display:flex; align-items:baseline; justify-content:center; line-height:.9; }
.medal-num .count{ font-size:3.3rem; }
.medal-pct{ font-family:var(--font-disp); font-weight:700; font-size:1.3rem; margin-left:.06em; }

.hero-clients{ width:min(100% - 48px, var(--container)); margin:clamp(30px,4vw,52px) auto 0; }
.hero-clients .clients-label{ margin:0 0 .8rem;
  font-family:var(--font-disp); font-weight:700; font-size:1.05rem; }
.marquee{ width:100%; overflow:hidden;
          -webkit-mask:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
          mask:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent); }
.marquee-track{ display:flex; gap:2.2rem; width:max-content; animation:marquee 150s linear infinite; }
.marquee-track span{
  font-family:var(--font-disp); font-weight:700; font-size:1.2rem; color:var(--ink);
  white-space:nowrap; opacity:.8;
}
.marquee-track span.etc{ color:var(--ink-soft); font-weight:500; }
@keyframes marquee{ to{ transform:translateX(-25%); } }

/* オービット図 */
.hero-visual{ display:flex; justify-content:center; }
.orbit{
  position:relative; width:min(100%, 560px); aspect-ratio:1; display:flex; align-items:center; justify-content:center;
  container-type:inline-size;
}
.orbit::before{
  content:""; position:absolute; inset:14%; border:2px dashed var(--line); border-radius:50%;
  animation:spin 40s linear infinite;
}
/* 周囲に散らばる装飾（回転させない） */
.orbit-decor{ position:absolute; inset:-10%; width:120%; height:120%; overflow:visible; z-index:0; pointer-events:none; }
.orbit-center{
  width:38%; aspect-ratio:1; border-radius:50%;
  background:#fff; padding:8% 3.5% 5%;
  border:3px solid var(--red);
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
  box-shadow:var(--shadow); z-index:2;
}
.orbit-cap{ font-family:var(--font-disp); font-weight:700; font-size:clamp(.78rem,3.1cqw,1.18rem); line-height:1.35; }
.orbit-min{ font-family:var(--font-disp); font-weight:700; font-size:clamp(.85rem,3.4cqw,1.28rem); color:var(--ink-soft); margin-top:.15em; }
.orbit-num{ font-family:var(--font-num); font-weight:800; font-size:clamp(2.5rem,13.5cqw,4.7rem); color:var(--red); line-height:.9; }
.orbit-num small{ font-family:var(--font-disp); font-size:clamp(.85rem,3.5cqw,1.32rem); color:var(--ink); font-weight:700; margin-left:2px; }
.orbit-nodes{ position:absolute; inset:0; z-index:1; }
.orbit-nodes li{
  position:absolute; width:26%; aspect-ratio:1; transform:translate(-50%,-50%);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  background:var(--c,var(--red)); border-radius:50%; color:#fff;
  font-size:clamp(.62rem, 2.7cqw, .98rem); font-weight:700; text-align:center;
  padding:0 2.2cqw 2cqw; line-height:1.3;  /* 下パディングで内容をやや上寄せ */
  box-shadow:0 10px 20px rgba(42,36,48,.12);
}
/* 6角形の各頂点（点線円＝中心から36%の位置）にノードを配置。色も個別に */
.orbit-nodes li:nth-child(1){ --c:#F5333F; left:50%;   top:14%; }
.orbit-nodes li:nth-child(2){ --c:#F08A22; left:81.2%; top:32%; }
.orbit-nodes li:nth-child(3){ --c:#E5A417; left:81.2%; top:68%; }
.orbit-nodes li:nth-child(4){ --c:#E9646B; left:50%;   top:86%; }
.orbit-nodes li:nth-child(5){ --c:#2FA8A0; left:18.8%; top:68%; }
.orbit-nodes li:nth-child(6){ --c:#1F6FA8; left:18.8%; top:32%; }
.node-ico{
  display:flex; align-items:center; justify-content:center;
  width:clamp(26px, 8.2cqw, 48px); height:clamp(26px, 8.2cqw, 48px);
  margin:0 0 .3em; color:#fff;
}
.node-ico svg{ width:100%; height:100%; }
/* 日本語を文節単位で折り返す（非対応ブラウザは通常の折り返しにフォールバック） */
.node-txt{ display:block; word-break:auto-phrase; overflow-wrap:anywhere; }

/* ミシン目区切り（レシートの切り取り線を想起させる帯） */
.perforation{
  height:26px; margin-top:clamp(30px,5vw,60px); background:var(--cream);
  -webkit-mask:radial-gradient(circle 13px at 13px 0, transparent 12px, #000 13px) top/26px 26px repeat-x;
          mask:radial-gradient(circle 13px at 13px 0, transparent 12px, #000 13px) top/26px 26px repeat-x;
}

/* ---------- お悩み ---------- */
.worry{ padding-block:var(--gap-sec); background:var(--cream); }
.worry .sec-head{ text-align:center; margin-bottom:2.6rem; }
.worry-grid{ display:grid; grid-template-columns:repeat(5,1fr); gap:1.1rem; }
.worry-card{
  background:var(--wc,var(--red)); border-radius:var(--radius); padding:1.1rem 1rem 1.15rem; text-align:center;
  border:none; box-shadow:var(--shadow-sm); font-size:.95rem; font-weight:700; color:#fff;
  display:flex; flex-direction:column; align-items:center;
  transition:transform .2s ease, box-shadow .2s ease;
}
.worry-card:hover{ transform:translateY(-5px); box-shadow:var(--shadow); }
.worry-card p{ line-height:1.55; }
.worry-ico{ display:block; width:70px; height:70px; margin-bottom:.7rem; color:#fff; }
.worry-ico svg{ width:100%; height:100%; }
.worry-answer{
  margin-top:2.4rem; background:linear-gradient(120deg,#2BB4F0 0%,#0498E2 55%,#0378C4 100%); color:#fff; border-radius:var(--radius);
  padding:1.2rem 2rem; text-align:center; position:relative; overflow:hidden;
  box-shadow:0 12px 30px rgba(4,152,226,.28);
}
.answer-badge{ font-family:var(--font-disp); font-weight:900; font-size:clamp(1.8rem,4.5vw,2.7rem); }
.answer-badge strong{ color:var(--yellow); }
.answer-lead{ color:rgba(255,255,255,.9); margin-top:.8rem; font-size:clamp(1.05rem,2vw,1.25rem); }

/* ---- レシートキャンペーンだけじゃない ---- */
.notonly{
  margin-top:1.6rem; background:#ffd4d4; border-radius:var(--radius);
  padding:2.2rem clamp(1.4rem,3vw,2.6rem); display:flex; align-items:center;
  justify-content:center; gap:clamp(1rem,2vw,2rem); flex-wrap:wrap;
}
.notonly-left{ flex:0 1 560px; min-width:300px; max-width:560px; }
.notonly-lead .nw{ white-space:nowrap; }
.proof-label .nw{ white-space:nowrap; }
.notonly-ribbon{
  display:inline-block; background:var(--red); color:#fff; font-family:var(--font-disp);
  font-weight:700; font-size:1.5rem; padding:.4em 1.9em; margin-bottom:.8rem;
  clip-path:polygon(0 0, 100% 0, calc(100% - 11px) 50%, 100% 100%, 0 100%, 11px 50%);
  filter:drop-shadow(0 4px 8px rgba(245,51,63,.28));
}
.notonly-head{
  font-family:var(--font-disp); font-weight:900; color:var(--ink); line-height:1.2;
  font-size:clamp(2.2rem,4.9vw,3.35rem); letter-spacing:.01em;
}
.notonly-mark{
  white-space:nowrap; color:var(--red);
  background:linear-gradient(rgba(255,194,75,.6),rgba(255,194,75,.6)) no-repeat;
  background-size:100% .42em; background-position:0 90%;
}
.notonly-lead{
  margin-top:.85rem; color:var(--ink); font-weight:700; line-height:1.7;
  font-size:clamp(1.12rem,2.3vw,1.38rem);
}
.notonly-right{ flex:0 1 auto; }
.proof-title{
  display:flex; align-items:center; justify-content:center; gap:.5rem;
  font-family:var(--font-disp); font-weight:700; color:var(--ink);
  font-size:clamp(1.2rem,2.3vw,1.5rem); margin-bottom:1.1rem;
}
.pt-deco{ display:inline-flex; width:22px; height:28px; flex:none; }
.pt-deco svg{ width:100%; height:100%; }
.proof-list{
  list-style:none; margin:0 auto; padding:0; max-width:380px;
  display:grid; grid-template-columns:repeat(6,1fr); gap:1.4rem .3rem;
}
.proof-item{ grid-column:span 2; display:flex; flex-direction:column; align-items:center; gap:.5rem; text-align:center; }
.proof-item:nth-child(4){ grid-column:2 / span 2; } /* 2段目を中央寄せ */
.proof-ico{
  width:98px; height:98px; border-radius:50%; background:#fff; display:grid; place-items:center;
  box-shadow:0 6px 16px rgba(42,36,48,.1);
}
.proof-ico svg{ width:70px; height:70px; }
.proof-ico.is-blue{ color:#0498E2; }
.proof-ico.is-orange{ color:#F08A22; }
.proof-label{ font-size:.78rem; font-weight:700; color:var(--ink); line-height:1.35; word-break:keep-all; }
.notonly-etc{ display:block; text-align:right; margin-top:-1.7rem; font-size:.8rem; color:var(--ink-soft); }
@media (max-width:900px){
  .proof-ico{ width:74px; height:74px; }
  .proof-ico svg{ width:52px; height:52px; }
}
@media (max-width:640px){
  .notonly{ flex-direction:column; align-items:stretch; text-align:center; }
  /* 縦積みでは flex-basis が「高さ」になり余白が空くのでリセット */
  .notonly-left{ flex:0 0 auto; min-width:0; max-width:none; }
  .notonly-ribbon{ align-self:center; }
  .notonly-lead br{ display:none; }
  .notonly-lead .nw{ white-space:normal; }
  .notonly-right{ margin-top:1.6rem; }
  .proof-list{ gap:1.2rem .3rem; }
}

/* ---------- サービス（レシパシャ） ---------- */
.service{ padding-block:var(--gap-sec); }
.service .sec-lead{ max-width:720px; margin-inline:auto; }
.plan-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.4rem; margin-top:3rem; }
.plan-card{
  background:#fff; border:2px solid var(--line); border-top:5px solid var(--pc,var(--line));
  border-radius:var(--radius); padding:1.7rem 1.6rem;
 
  box-shadow:var(--shadow-sm); position:relative; transition:transform .2s ease, box-shadow .2s ease;
  display:flex; flex-direction:column;
}
.plan-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); }
/* 3プランをそれぞれ別の色に（優劣の強調はしない） */
.plan-grid .plan-card:nth-child(1){ --pc:#F5333F; --pt:#FFEDEE; }
.plan-grid .plan-card:nth-child(2){ --pc:#17B0C4; --pt:#DEF3F6; }
.plan-grid .plan-card:nth-child(3){ --pc:#EF8A1F; --pt:#FCEBD6; }
.plan-tag{ font-size:.82rem; font-weight:700; color:var(--pc,var(--red)); }
.plan-name{ font-family:var(--font-disp); font-weight:900; font-size:1.5rem; margin:.2rem 0 .5rem; color:var(--pc,var(--ink)); }
.plan-desc{ font-size:.9rem; color:var(--ink-soft); min-height:2.6em; }
.plan-spec{ margin:1.2rem 0 0; border-top:1px dashed var(--line); }
.plan-spec li{ display:flex; justify-content:space-between; align-items:center;
  padding:.62rem 0; border-bottom:1px dashed var(--line); font-size:.92rem; }
.plan-spec span{ color:var(--ink-soft); font-weight:500; }
.plan-spec b{ font-family:var(--font-disp); font-weight:700; }
.plan-spec b.ok{ color:var(--ink); }
.plan-spec b.ok::before{ content:"◯ "; color:var(--pc,var(--red)); }
.plan-spec b.no{ color:var(--ink-soft); }
.plan-spec b.no::before{ content:"– "; }
.plan-note{ text-align:center; margin-top:2rem; font-weight:700; color:var(--ink); }
.plan-note::before{ content:"✎ "; color:var(--red); }
.service .plan-note,
.features .plan-note{ font-family:var(--font-disp); font-weight:900; font-size:clamp(1.6rem,3.6vw,2.05rem); line-height:1.5; }
.features .plan-note-sub{ text-align:center; margin-top:.7rem; font-family:var(--font-disp); font-weight:700; font-size:1.15rem; color:var(--ink-soft); }

/* ---------- 機能アイコン（4×3） ---------- */
.features{ padding-block:var(--gap-sec); background:var(--cream); }
.feature-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.1rem; margin-top:3rem; }
.feature-card{
  background:#fff; border:2px solid var(--line); border-radius:var(--radius);
  padding:1.5rem 1rem; text-align:center; box-shadow:var(--shadow-sm);
  display:flex; flex-direction:column; align-items:center; gap:.9rem; min-height:190px; justify-content:flex-start;
  transition:transform .2s ease, box-shadow .2s ease;
}
.feature-card:hover{ transform:translateY(-5px); box-shadow:var(--shadow); }
.feature-ico{
  width:102px; height:102px; border-radius:50%; background:var(--peach);
  display:flex; align-items:center; justify-content:center; color:var(--red); flex:none;
}
.feature-ico svg{ width:89px; height:89px; }
.feature-card p{ font-family:var(--font-disp); font-weight:700; font-size:1.02rem; line-height:1.4; }

/* ---------- 実例・事例 ---------- */
.cases{ padding-block:var(--gap-sec); }
.case-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.4rem; margin-top:3rem; }
.case-card{
  background:#fff; border:2px solid var(--line); border-radius:var(--radius); overflow:hidden;
  box-shadow:var(--shadow-sm); display:flex; flex-direction:column;
  transition:transform .2s ease, box-shadow .2s ease;
}
.case-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); }
.case-illust{
  height:134px; display:flex; align-items:center; justify-content:center;
  color:var(--cc,var(--red));
  background:
    radial-gradient(circle 2.4px at 20px 26px, color-mix(in srgb, var(--cc,var(--red)) 28%, transparent) 50%, transparent 52%) 0 0/46px 40px,
    radial-gradient(circle 1.8px at 40px 12px, color-mix(in srgb, var(--cc,var(--red)) 22%, transparent) 50%, transparent 52%) 0 0/54px 52px,
    var(--cc-tint,var(--peach));
}
.case-illust svg{ width:125px; height:125px; }
/* 横長のイラスト（冷凍食品パッケージ）は幅を使って描画する */
.case-illust svg.illust-wide{ width:168px; height:120px; }
.case-body{ padding:1.3rem 1.4rem 1.5rem; display:flex; flex-direction:column; gap:.5rem; }
.case-cat{
  align-self:flex-start; font-family:var(--font-disp); font-weight:700; font-size:.76rem;
  background:var(--cc,var(--ink)); color:#fff; padding:.28em .8em; border-radius:99px;
}
.case-title{ font-family:var(--font-disp); font-weight:900; font-size:1.12rem; line-height:1.4; color:var(--cc,var(--red)); }
.case-meta{ display:flex; flex-wrap:wrap; gap:.2rem 1.1rem; font-size:.82rem; }
.case-meta > div{ display:flex; gap:.4em; }
/* 1行目＝対象店舗、2行目＝制作期間・応募数 に全カードで揃える */
.case-meta > div:first-child{ flex:0 0 100%; }
.case-meta dt{ color:var(--ink-soft); font-weight:500; }
.case-meta dt::after{ content:"："; }
.case-meta dd{ font-weight:700; }
.case-flow{ counter-reset:flow; display:flex; flex-direction:column; gap:.45rem; margin-top:.4rem;
  border-top:1px dashed var(--line); padding-top:.8rem; }
.case-flow li{ position:relative; padding-left:1.9em; font-size:.85rem; line-height:1.55; }
.case-flow li::before{
  content:"✓";
  position:absolute; left:0; top:.28em; width:1.35em; height:1.35em; border-radius:50%;
  background:var(--cc,var(--red)); color:#fff; font-weight:700; font-size:.72rem;
  display:flex; align-items:center; justify-content:center;
}
.case-note{
  margin-top:.7rem; align-self:flex-start; font-family:var(--font-disp); font-weight:700;
  font-size:.8rem; line-height:1.4; color:var(--cc,var(--red));
  background:var(--cc-tint,var(--peach)); border-radius:99px; padding:.4em .95em;
  display:inline-flex; align-items:center; gap:.4em;
}
.cases-caption{ text-align:center; color:var(--ink-soft); font-size:.82rem; margin-top:2rem; }

/* ---------- ワンストップ（対応範囲・縦積み） ---------- */
.support{ padding-block:var(--gap-sec); background:var(--cream); }

/* 3ブロックをそれぞれ別の色に（カラー変数で切替） */
.support-block{
  --sc:var(--ink-soft); --sct:#F1ECF3;
  background:#fff; border:2.5px solid var(--sc); border-radius:22px;
  max-width:940px; margin:0 auto; overflow:hidden; box-shadow:var(--shadow-sm); padding:0;
}
.support-block.is-you{ --sc:#3E6FE6; --sct:#E8EEFC; margin-top:clamp(2.2rem,5vw,3.4rem); }
.support-block.is-blanca{ --sc:#F5333F; --sct:#FFE7E9; margin-top:0; }
.support-block.is-option{ --sc:#159FB2; --sct:#DEF2F5; margin-top:2.8rem; }

/* ヘッダー帯 */
.support-label{
  background:var(--sc); color:#fff; margin:0; text-align:center;
  font-family:var(--font-disp); font-weight:900; font-size:clamp(1.25rem,3.2vw,1.6rem);
  padding:.75em 1em; letter-spacing:.02em;
}
.tag-you, .tag-blanca, .tag-opt{
  background:rgba(255,255,255,.22); color:#fff; padding:.08em .55em; border-radius:8px; margin:0 .12em;
}

/* 本文の余白 */
.you-list, .option-list{ display:flex; flex-wrap:wrap; gap:.85rem; justify-content:center;
  padding:1.8rem clamp(1.2rem,4vw,2rem); }

.you-list li{
  display:inline-flex; align-items:center; gap:.55em;
  background:var(--sct); color:var(--ink); border:2px solid var(--sc);
  border-radius:99px; padding:.45em 1.3em .45em .45em; font-weight:700; font-size:1.08rem;
}
.you-ico{
  width:32px; height:32px; border-radius:50%; background:var(--sc); color:#fff; flex:none;
  display:flex; align-items:center; justify-content:center;
}
.you-ico svg{ width:18px; height:18px; }

.flow-list{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.4rem 1rem;
  padding:2.4rem clamp(1.2rem,4vw,2rem) 1.9rem; }
.flow-list li{
  position:relative; background:var(--sct); border:2px solid var(--sc); border-radius:16px;
  padding:1.6rem .7rem 1.1rem; font-family:var(--font-disp); font-weight:700; font-size:1.14rem;
  text-align:center; line-height:1.35; color:var(--ink);
}
.flow-ico{ display:block; width:42px; height:42px; margin:.1rem auto .5rem; color:var(--sc); }
.flow-ico svg{ width:100%; height:100%; }
.flow-no{
  position:absolute; top:-17px; left:50%; transform:translateX(-50%);
  width:36px; height:36px; border-radius:50%; background:var(--sc); color:#fff;
  font-family:var(--font-num); font-weight:700; font-size:1.1rem;
  display:flex; align-items:center; justify-content:center; box-shadow:0 0 0 3px #fff;
}
.iso-note{ margin:0 clamp(1.2rem,4vw,2rem) 1.8rem; background:var(--sct); border-radius:12px;
  padding:1rem 1.2rem; font-size:.98rem; font-weight:500; color:var(--ink); }

.support-arrow{ display:flex; justify-content:center; color:var(--red); margin:2.2rem 0; }
.support-arrow svg{ width:40px; height:40px; }

/* ---------- ブランカにおまかせ（パッケージ／オプション） ---------- */
.omakase{
  max-width:940px; margin:0 auto; background:#fff; border-radius:22px; overflow:hidden;
  box-shadow:var(--shadow); border:1px solid var(--line);
}
.omakase-head{
  background:var(--red); color:#fff; text-align:center;
  font-family:var(--font-disp); font-weight:900; font-size:clamp(1.3rem,3.6vw,2rem);
  padding:.75em 1em; letter-spacing:.02em;
}
.omakase-brand{ background:rgba(255,255,255,.24); border-radius:12px; padding:.1em .55em; margin-right:.15em; }
.omakase-body{ padding:clamp(1.3rem,3.4vw,2.4rem); }

.omakase-secline{ display:flex; align-items:center; gap:.85rem; margin-bottom:1.5rem; }
.omakase-secline + .omakase-grid{ margin-top:0; }
.sl-rule{ height:2px; background:var(--red); border-radius:2px; }
.sl-rule.l{ width:24px; flex:none; }
.sl-rule.r{ flex:1; }
.omakase-secline.opt .sl-rule{ background:#F08A22; }
.omakase-pill{
  font-family:var(--font-disp); font-weight:800; color:#fff; border-radius:11px;
  padding:.42em 1.1em; font-size:clamp(.9rem,2.3vw,1.1rem); white-space:nowrap; flex:none;
}
.omakase-pill.std{ background:var(--red); }
.omakase-pill.opt{ background:#F08A22; }
.omakase-secsub{ color:var(--ink); font-weight:500; font-size:clamp(.8rem,2vw,.95rem); white-space:nowrap; }

.std-grid{ display:grid; grid-template-columns:repeat(6,1fr); gap:.9rem; margin-bottom:2.2rem; }
.opt-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.1rem; margin-bottom:1.7rem; }

.omakase-card{
  position:relative; border:1.5px solid var(--peach); background:linear-gradient(#fff,#FFF8F5);
  border-radius:15px; padding:1.5rem .5rem 1.15rem; display:flex; flex-direction:column;
  align-items:center; gap:.7rem; text-align:center;
}
.omakase-no{
  position:absolute; top:-12px; left:11px; width:27px; height:27px; border-radius:50%;
  background:var(--red); color:#fff; font-family:var(--font-num); font-weight:700; font-size:.95rem;
  display:flex; align-items:center; justify-content:center; box-shadow:0 2px 7px rgba(245,51,63,.4);
}
.omakase-ico{
  width:68px; height:68px; border-radius:50%; background:#FBE9E9; color:var(--red); flex:none;
  display:flex; align-items:center; justify-content:center;
}
.omakase-ico svg{ width:38px; height:38px; }
.omakase-label{ font-family:var(--font-disp); font-weight:700; font-size:.94rem; line-height:1.35; color:var(--ink); }

.opt-card{
  flex-direction:row; align-items:center; gap:1rem; text-align:left;
  background:linear-gradient(#fff,#FFF6ED); border-color:#F8DCC1; padding:1.25rem 1.4rem;
}
.opt-card .omakase-no{ background:#F08A22; box-shadow:0 2px 7px rgba(240,138,34,.4); }
.opt-card .omakase-ico{ background:#FCEEDD; color:#F08A22; }
.opt-card .omakase-label{ flex:1; }
.omakase-opttag{
  background:#F08A22; color:#fff; font-family:var(--font-disp); font-weight:700;
  font-size:.74rem; border-radius:6px; padding:.22em .6em; white-space:nowrap; flex:none;
}

.omakase-iso{
  background:var(--peach); border-radius:12px; padding:.9rem 1.2rem; text-align:center;
  font-size:clamp(.78rem,2vw,.92rem); font-weight:500; color:var(--ink); margin:0;
}

.option-list li{
  font-weight:700; font-size:1.02rem; padding:.55em 1.2em; border:2px solid var(--sc);
  border-radius:99px; background:#fff; color:var(--ink);
}
.option-list li::before{ content:"✓ "; color:var(--sc); font-weight:800; }
.option-list li:last-child{ background:var(--sc); color:#fff; }
.option-list li:last-child::before{ content:""; }

/* ---------- 制作スケジュール ---------- */
.schedule{ padding-block:var(--gap-sec); }
.sched-head{ display:flex; flex-direction:column; align-items:center; gap:.5rem; }
.sched-sup{
  display:inline-block; font-family:var(--font-disp); font-weight:700;
  font-size:clamp(.95rem,2.4vw,1.15rem); color:var(--ink); letter-spacing:.02em;
  background:var(--peach); border-radius:99px; padding:.3em 1.2em;
}
.sched-lead{
  display:block; font-family:var(--font-disp); font-weight:700; line-height:1.3;
  font-size:clamp(1rem,2.6vw,1.35rem); color:var(--ink-soft); margin-bottom:-.15em;
}
.sched-main{
  display:block; font-family:var(--font-disp); font-weight:900; line-height:1.2;
  font-size:clamp(2.1rem,5.4vw,3.4rem);
}
.schedule-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.6rem; margin-top:3rem; }
/* 2枚を色分け（ヘッダー帯＋機能チップ＋説明＋制作期間） */
.sched-card{
  --sc:#F5333F; --sct:#FFE7E9;
  background:#fff; border:2.5px solid var(--sc); border-radius:22px;
  box-shadow:var(--shadow-sm); overflow:hidden; padding:0;
  display:flex; flex-direction:column;
}
.sched-card:nth-child(1){ --sc:#F5333F; --sct:#FFE7E9; }
.sched-card:nth-child(2){ --sc:#4C6FE0; --sct:#E7EDFC; }
.sched-title{
  background:var(--sc); color:#fff; margin:0; text-align:center;
  font-family:var(--font-disp); font-weight:900; font-size:clamp(1.15rem,3vw,1.45rem);
  padding:.75em 1em;
}
.sched-body{ padding:1.6rem clamp(1.2rem,4vw,1.9rem) 1.8rem; flex:1; display:flex; flex-direction:column; }
.sched-sub{ text-align:center; font-family:var(--font-disp); font-weight:700; font-size:1.02rem; color:var(--ink); margin:0; }
.sched-feats{ display:flex; flex-wrap:wrap; gap:.65rem; align-items:center; justify-content:center; margin:1.4rem 0; }
.feat{
  display:flex; align-items:center; gap:.55em;
  background:#fff; border:2px solid var(--sc); border-radius:14px;
  padding:.5em .95em .5em .5em; font-family:var(--font-disp); font-weight:700; font-size:.9rem;
  color:var(--ink); text-align:left; line-height:1.3;
  box-shadow:0 6px 14px -10px rgba(0,0,0,.4);
}
.feat-ico{
  width:34px; height:34px; border-radius:10px; background:var(--sct); color:var(--sc); flex:none;
  display:flex; align-items:center; justify-content:center;
}
.feat-ico svg{ width:20px; height:20px; }
.feat-plus{ font-family:var(--font-num); font-weight:800; color:var(--sc); font-size:1.5rem; }

/* 右カード（機能が多い方）は2列グリッドで整列してバランス改善 */
.sched-card:nth-child(2) .sched-feats{ display:grid; grid-template-columns:1fr 1fr; gap:.6rem; align-items:stretch; }
.sched-card:nth-child(2) .feat:last-child{ grid-column:1 / -1; justify-content:center; }
.sched-desc{ font-size:.92rem; color:var(--ink); line-height:1.85; }
.sched-desc .note{ display:block; color:var(--ink-soft); font-size:.82rem; margin-top:.4rem; }
.sched-term{ text-align:center; margin-top:auto; padding-top:1.5rem; font-family:var(--font-disp); font-weight:700; font-size:1.05rem; }
.sched-term b{ color:var(--sc); font-family:var(--font-num); font-size:1.4rem; margin-left:.3em; }

/* ---------- FAQ ---------- */
.faq{ padding-block:var(--gap-sec); background:var(--cream); }
.faq-list{ margin-top:2.6rem; display:flex; flex-direction:column; gap:.9rem; }
.faq-item{ background:#fff; border:2px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; }
.faq-item summary{
  list-style:none; cursor:pointer; padding:1.15rem 3.2rem 1.15rem 1.4rem; position:relative;
  font-family:var(--font-disp); font-weight:700; font-size:1rem;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::before{ content:"Q"; color:var(--red); font-family:var(--font-num); font-weight:800; margin-right:.6em; }
.faq-item summary::after{
  content:""; position:absolute; right:1.4rem; top:50%; width:12px; height:12px;
  border-right:2.6px solid var(--red); border-bottom:2.6px solid var(--red);
  transform:translateY(-70%) rotate(45deg); transition:transform .25s ease;
}
.faq-item[open] summary::after{ transform:translateY(-30%) rotate(-135deg); }
.faq-a{ padding:0 1.4rem 1.3rem 2.5rem; }
.faq-a p{ color:var(--ink-soft); font-size:.94rem; }
.faq-cat{ font-family:var(--font-disp); font-weight:800; font-size:1.3rem; color:var(--ink);
  margin:3rem 0 1.2rem; padding-left:.72rem; border-left:5px solid var(--red); line-height:1.35; }
.faq-cat:first-of-type{ margin-top:2.6rem; }
.faq-cat .en{ display:block; font-family:var(--font-num); font-weight:700; font-size:.7rem;
  letter-spacing:.08em; color:var(--red); margin-bottom:.15em; }

/* ---------- プライバシーポリシー ---------- */
.privacy{ padding-block:var(--gap-sec); }
.privacy-card{
  margin-top:clamp(1.8rem,4vw,2.6rem);
  display:grid; grid-template-columns:minmax(0,1fr) 340px; align-items:center;
  row-gap:1rem; column-gap:clamp(.6rem,1.4vw,1rem);
  background:#fff; border:2px solid var(--line); border-radius:var(--radius);
  padding:clamp(1.5rem,3.2vw,2.4rem); box-shadow:var(--shadow-sm);
}
.privacy-sub{
  grid-column:1 / -1;  /* 2カラムをまたいで全幅に */
  font-family:var(--font-disp); font-weight:900; line-height:1.5;
  font-size:clamp(1.2rem,2.9vw,1.55rem);
}
.privacy-sub::before{
  content:""; display:inline-block; width:.42em; height:.42em; border-radius:50%;
  background:var(--red); margin-right:.55em; vertical-align:.12em;
}
.privacy-card p{ line-height:1.9; }
.privacy-sign{ margin-top:1.1rem; font-weight:700; color:var(--ink-soft); font-size:.94rem; }
.privacy-cert{ background:#fff; }
.privacy-cert img{ width:100%; height:auto; display:block; margin-inline:auto; }

/* 方針ボタン（プライバシー／対応範囲の両方で使用）— CTAと同じく等幅に揃える */
.policy-btns{
  display:grid; grid-auto-flow:column; grid-auto-columns:1fr; gap:1rem;
  width:fit-content; margin-inline:auto;
  margin-top:clamp(1.6rem,3.2vw,2.2rem);
}
.policy-btns .btn{ justify-content:center; }

/* ---------- 規約系ページ（個人情報保護方針 / 情報セキュリティ基本方針） ---------- */
.legal{ padding-block:var(--gap-sec); background:var(--cream); }
.legal-list{ margin-top:clamp(2rem,4vw,2.8rem); display:flex; flex-direction:column; gap:1.1rem; }
.legal-item{
  background:#fff; border:2px solid var(--line); border-radius:var(--radius-sm);
  padding:clamp(1.2rem,3vw,1.7rem) clamp(1.2rem,3vw,1.9rem);
  box-shadow:var(--shadow-sm);
}
.legal-h{
  display:flex; align-items:center; gap:.7em;
  font-family:var(--font-disp); font-weight:800; font-size:1.1rem; line-height:1.5;
  padding-bottom:.75rem; border-bottom:2px dashed var(--line);
}
.legal-no{
  flex:none; display:inline-flex; align-items:center; justify-content:center;
  min-width:2.2em; height:2.2em; padding:0 .55em; border-radius:99px;
  background:var(--red); color:#fff;
  font-family:var(--font-num); font-weight:800; font-size:.78rem;
}
.legal-body{ margin-top:1rem; color:var(--ink-soft); font-size:.96rem; line-height:1.95; }
.legal-body p + p{ margin-top:.7rem; }
.legal-note{
  margin-top:clamp(2rem,4vw,2.8rem);
  background:var(--peach); border-radius:var(--radius);
  padding:clamp(1.4rem,3.2vw,2.2rem);
}
.legal-note p{ font-size:.96rem; }
.legal-sign{ margin-top:1.2rem; text-align:right; font-family:var(--font-disp);
  font-weight:700; color:var(--ink-soft); font-size:.94rem; }
.legal-btns{ display:flex; flex-wrap:wrap; justify-content:center; gap:1rem; margin-top:1.6rem; }

/* ---------- 会社案内 ---------- */
.company-page{ padding-block:var(--gap-sec); background:var(--cream); }
/* 各ブロック共通の白カード */
.com-card{
  margin-top:1.6rem;
  background:#fff; border:2px solid var(--line); border-radius:var(--radius);
  padding:clamp(1.2rem,3vw,1.9rem) clamp(1.2rem,3vw,2rem);
  box-shadow:var(--shadow-sm);
}

/* 会社概要 */
.com-row{ display:flex; flex-wrap:wrap; gap:.1rem 1.4rem; padding:.95rem 0; border-top:2px dashed var(--line); }
.com-row:first-child{ border-top:none; padding-top:0; }
.com-row:last-child{ padding-bottom:0; }
.com-row dt{ flex:0 0 8.5em; font-family:var(--font-disp); font-weight:700; font-size:.95rem; }
.com-row dd{ flex:1 1 260px; color:var(--ink-soft); font-size:.96rem; }
.com-row dd a{ text-decoration:underline; text-underline-offset:.2em; }
.com-row dd a:hover{ color:var(--red); }

/* 主要取引先 */
.client-list{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.5rem 1.2rem; }
.client-list li{ position:relative; padding-left:.95em; font-size:.86rem; line-height:1.65; color:var(--ink-soft); }
.client-list li::before{
  content:""; position:absolute; left:0; top:.62em; width:5px; height:5px;
  border-radius:50%; background:var(--red);
}
.client-note{ margin-top:1.2rem; text-align:right; font-size:.82rem; color:var(--ink-soft); }

/* アクセス */
.com-map{ border-radius:var(--radius-sm); overflow:hidden; line-height:0; }
.com-map iframe{ width:100%; height:340px; border:0; display:block; }
.com-access-body{ margin-top:1.5rem; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.6rem 2rem; }
.com-addr{ font-family:var(--font-disp); font-weight:700; line-height:1.95; font-size:.95rem; }
.com-addr .name{ color:var(--red); font-size:1.05rem; }
.com-contact{ margin-top:.9rem; display:flex; flex-direction:column; gap:.2rem; }
.com-contact > div{ display:flex; gap:.8em; font-size:.94rem; }
.com-contact dt{ flex:0 0 3.4em; font-family:var(--font-num); font-weight:700; font-size:.78rem; color:var(--red); padding-top:.28em; }
.com-contact dd{ color:var(--ink-soft); }
.com-contact dd a{ text-decoration:underline; text-underline-offset:.2em; }
.com-contact dd a:hover{ color:var(--red); }
.com-sub{ font-family:var(--font-disp); font-weight:800; font-size:1.05rem; line-height:1.4;
  padding-left:.7rem; border-left:5px solid var(--red); }
.com-route{ margin-top:1rem; display:flex; flex-direction:column; gap:.9rem; }
.com-route li{ font-size:.92rem; line-height:1.8; }
.com-route .line{ display:block; font-size:.82rem; font-weight:700; color:var(--ink-soft); }

/* ---------- CTA ---------- */
.cta{ padding-block:clamp(56px,8vw,96px); background:#FF9797; color:var(--ink); position:relative; overflow:hidden; }
.cta-dots{
  position:absolute; inset:0; opacity:.28; pointer-events:none;
  background:radial-gradient(circle 3px at 6px 6px, #fff 55%, transparent 58%) 0 0/26px 26px;
}
.cta-inner{ text-align:center; position:relative; z-index:1; }
.cta-eyebrow{
  font-family:var(--font-disp); font-weight:800; color:#9E0F1B;
  font-size:clamp(1.35rem,3.4vw,2.2rem); line-height:1.6; margin-bottom:1rem;
}
/* 折り返しても行ごとに黄色マーカーが乗るよう clone で描画 */
.cta-eyebrow span{
  padding:.08em .5em;
  background:linear-gradient(var(--yellow),var(--yellow)) no-repeat;
  background-size:100% .6em; background-position:0 80%;
  -webkit-box-decoration-break:clone; box-decoration-break:clone;
}
.cta-title{ font-family:var(--font-disp); font-weight:900; font-size:clamp(1.9rem,5vw,3rem); line-height:1.3; color:var(--ink); }
.cta-title .hl-y{ color:#E01524; }
.cta-title .hl-y::after{ display:none; }
/* 2つのボタンを広い方の幅に揃える（グリッドの 1fr 列で自動的に等幅） */
.cta-btns{ display:inline-grid; grid-auto-flow:column; grid-auto-columns:1fr; gap:1rem; margin-top:2rem; }
.cta-btns .btn{ justify-content:center; }

/* ---------- フッター ---------- */
.site-footer{ background:#c81924; color:rgba(255,255,255,.9); padding-top:clamp(48px,7vw,72px); }
.footer-inner{ display:flex; justify-content:space-between; gap:2rem; flex-wrap:wrap; padding-bottom:2.4rem; }
.footer-logo{ height:28px; filter:brightness(0) invert(1); margin-bottom:.9rem; }
.footer-tag{ font-size:.9rem; max-width:320px; }
.footer-nav{ display:grid; grid-template-columns:repeat(2,auto); gap:.7rem 2.2rem; }
.footer-nav a{ font-size:.92rem; font-weight:500; }
.footer-nav a:hover{ color:var(--yellow); }
.copyright{ text-align:center; font-size:.8rem; padding:1.4rem; border-top:1px solid rgba(255,255,255,.25);
  color:rgba(255,255,255,.75); font-family:var(--font-num); }

/* ---------- スクロール演出（フェード） ---------- */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .6s ease, transform .6s ease; }
.reveal.in{ opacity:1; transform:none; }
/* グリッド内のスタガー */
.worry-grid .reveal.in,
.plan-grid .reveal.in,
.feature-grid .reveal.in,
.case-grid .reveal.in{ transition-delay:var(--d,0s); }

/* ---------- アニメーション ---------- */
@keyframes spin{ to{ transform:rotate(360deg); } }

/* ---------- レスポンシブ ---------- */
/* ヘッダーだけは項目が入り切らなくなる 1180px でハンバーガーへ切替 */
@media (max-width:1180px){
  .gnav, .header-cta{ display:none; }
  .hamburger{ display:flex; margin-left:auto; }

  /* モバイルメニュー */
  .gnav.open{
    display:flex; flex-direction:column; gap:0;
    position:absolute; top:74px; left:0; right:0; background:#fff;
    border-bottom:1px solid var(--line); box-shadow:var(--shadow); padding:.5rem 0;
  }
  .gnav.open a{ padding:.9rem 1.5rem; border-bottom:1px solid var(--line); }
  .gnav.open a::after{ display:none; }
}

@media (max-width:1000px){
  .hero-inner{ grid-template-columns:minmax(0,1fr); }
  /* 縦積み順：タイトル → 実績/リピート → オービット → 取引先 */
  .hero-main{ display:contents; }
  .hero-copy{ order:1; }
  .hero-stats{ order:2; }
  .hero-visual{ order:3; margin-top:.4rem; }
  .hero-clients{ order:4; }
  .orbit{ width:min(96%, 480px); }
  .worry-grid{ grid-template-columns:repeat(2,1fr); }
  /* 5枚目は行に1枚だけ余るので、幅はそのままで中央に置く */
  .worry-grid .worry-card:last-child{
    grid-column:span 2; justify-self:center; width:calc((100% - 1.1rem) / 2);
  }
  .plan-grid{ grid-template-columns:1fr; max-width:460px; margin-inline:auto; }
  .feature-grid{ grid-template-columns:repeat(3,1fr); }
  .std-grid{ grid-template-columns:repeat(3,1fr); gap:1.1rem 1rem; }
  .case-grid{ grid-template-columns:repeat(2,1fr); }
  .schedule-grid{ grid-template-columns:1fr; }
  .privacy-card{ grid-template-columns:1fr; }
  .privacy-cert img{ max-width:280px; }
}

@media (max-width:820px){
  .client-list{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .com-access-body{ grid-template-columns:1fr; }
}

@media (max-width:640px){
  .pc-br{ display:none; }
  .sp-br{ display:inline; }
  .com-row dt{ flex:0 0 100%; }
  .com-map iframe{ height:260px; }
  .feature-grid{ grid-template-columns:repeat(2,1fr); }
  .case-grid{ grid-template-columns:1fr; max-width:420px; margin-inline:auto; }
  .flow-list{ grid-template-columns:repeat(2,1fr); }
  .std-grid{ grid-template-columns:repeat(2,1fr); }
  .opt-grid{ grid-template-columns:1fr; }
  .omakase-secline{ flex-wrap:wrap; }
  .omakase-secline .sl-rule.r{ display:none; }
  .worry-answer{ padding:1.5rem 1.2rem; }
  .hero-stats{ gap:1rem; }
  .orbit{ width:min(96%, 360px); }
  /* ボタン2つ並びは縦積み（等幅は維持） */
  .cta-btns,
  .policy-btns{ grid-auto-flow:row; grid-auto-columns:auto; width:min(100%, 320px); }
}

@media (max-width:520px){
  .hero-stats{ gap:.8rem; }
  .emblem{ max-width:220px; }
}

@media (max-width:480px){
  .client-list{ grid-template-columns:1fr; }
}

@media (max-width:380px){
  .worry-grid{ grid-template-columns:1fr; }
  .worry-grid .worry-card:last-child{ grid-column:auto; width:auto; }
}

/* ---------- モーション削減 ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important; scroll-behavior:auto !important; }
  .reveal{ opacity:1; transform:none; }
  .marquee-track{ animation:none; }
  .orbit::before{ animation:none; }
}
