/* =========================================================
   あんしんカメラ119 — ThemeCamera119 / 案C "Dark Secure"
   Bootstrap5 + Bootstrap Icons の上に重ねる自己完結スタイル。
   配色は3〜5色（graphite / steel / orange / ice / muted）に限定。
   ========================================================= */
:root,
[data-bs-theme="dark"]{
  --graphite:#0D0D14; --graphite-2:#101826;
  --steel:#2A4A6B; --steel-2:#34597f;
  --orange:#FF6B35; --orange-2:#ff8154;
  --ice:#E8EDF2; --muted:#9FB0C3; --line:#2C3E5A;
  --surface:#14141F; --surface-2:#1B1B2A;
  --glow:0 0 0 1px rgba(255,107,53,.28), 0 6px 22px rgba(255,107,53,.20);
  --shadow:0 14px 40px rgba(0,0,0,.55);

  /* Bootstrap ダークテーマ変数を案Cに上書き（配色をワントーンで統一） */
  --bs-body-bg:#0D0D14; --bs-body-color:#E8EDF2;
  --bs-body-font-family:"Noto Sans JP",system-ui,sans-serif;
  --bs-tertiary-bg:#14141F; --bs-secondary-bg:#1B1B2A;
  --bs-border-color:#2C3E5A; --bs-border-color-translucent:rgba(255,255,255,.08);
  --bs-emphasis-color:#fff; --bs-heading-color:#fff;
  --bs-primary:#2A4A6B; --bs-primary-rgb:42,74,107;
  --bs-warning:#FF6B35; --bs-warning-rgb:255,107,53; --bs-warning-text-emphasis:#FF6B35;
  --bs-link-color:#FF6B35; --bs-link-color-rgb:255,107,53; --bs-link-hover-color:#ff8154;
  --bs-secondary-color:#9FB0C3;
}
.btn-warning{ --bs-btn-color:#0D0D14; --bs-btn-bg:#FF6B35; --bs-btn-border-color:#FF6B35; --bs-btn-hover-color:#0D0D14; --bs-btn-hover-bg:#ff8154; --bs-btn-hover-border-color:#ff8154; --bs-btn-active-bg:#ff8154; --bs-btn-active-border-color:#ff8154; }

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
.cam-body{
  margin:0; color:var(--ice); font-family:"Noto Sans JP",system-ui,sans-serif;
  font-weight:400; line-height:1.85; padding-bottom:0;
  background:
    radial-gradient(1100px 560px at 82% -10%, rgba(42,74,107,.30), transparent 60%),
    var(--graphite);
  -webkit-text-size-adjust:100%; -webkit-font-smoothing:antialiased;
}
@media (max-width:991.98px){ .cam-body{ padding-bottom:64px; } }  /* FAB分の余白 */
.en{ font-family:"Syne",sans-serif; font-weight:800; color:var(--orange); letter-spacing:.01em; }

/* ===== 共通リンク/ボタン（whisper motion） ===== */
.cam-tel{
  display:inline-flex; align-items:center; background:var(--orange); color:#0D0D14!important;
  font-weight:900; padding:10px 18px; border-radius:12px; text-decoration:none;
  box-shadow:var(--glow); transition:transform .16s ease, background .16s ease; white-space:nowrap;
}
.cam-tel:hover{ background:var(--orange-2); transform:translateY(-1px); }
.cam-tel:active{ transform:translateY(0) scale(.98); }

/* ===== Header ===== */
.cam-header{
  background:linear-gradient(135deg,var(--graphite-2),var(--graphite) 72%);
  border-bottom:1px solid var(--line); box-shadow:0 6px 26px rgba(0,0,0,.5);
  z-index:1030; backdrop-filter:saturate(120%);
}
.cam-logo{ color:var(--ice); }
.cam-logo-badge{
  display:inline-grid; place-items:center; width:46px; height:46px; border-radius:12px;
  background:var(--surface); border:1px solid var(--steel); box-shadow:var(--glow); margin-right:12px; flex:0 0 auto;
}
.cam-logo-badge img{ width:36px; height:36px; object-fit:contain; }
.cam-logo-kicker{ display:block; font-size:11px; color:var(--muted); font-weight:700; letter-spacing:.06em; }
.cam-logo-brand{ display:block; font-weight:900; font-size:20px; color:#fff; line-height:1.15; letter-spacing:.01em; }
.cam-nav-link{ color:var(--ice); font-weight:700; padding:8px 13px; border-radius:9px; text-decoration:none; transition:.15s; }
.cam-nav-link:hover,.cam-nav-link.active{ background:rgba(42,74,107,.5); color:#fff; }
.cam-burger{ color:var(--ice); font-size:26px; line-height:1; border:1px solid var(--line); padding:2px 12px; border-radius:10px; }
.cam-burger:hover{ color:#fff; background:rgba(42,74,107,.4); }
.cam-offcanvas{ background:var(--graphite); color:var(--ice); border-left:1px solid var(--line); }
.cam-offcanvas .cam-nav-link{ font-size:17px; }

/* ===== Hero（visualシートをフルブリードで） ===== */
.cam-hero-zone{ position:relative; overflow:hidden; border-bottom:1px solid var(--line); background:linear-gradient(120deg,#0c1320,var(--graphite)); }
.cam-hero-zone::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:repeating-linear-gradient(0deg, rgba(63,182,201,.045) 0 2px, transparent 2px 4px);
  mix-blend-mode:screen; opacity:.5;
}
.cam-hero-zone .bk-sheet,.cam-hero-zone .bk-blocks{ position:relative; z-index:2; }
.cam-hero-zone img{ width:100%; height:auto; display:block; }
.cam-hero-zone h1,.cam-hero-zone h2{ color:#fff; text-shadow:0 2px 18px rgba(0,0,0,.6); }

/* ===== Page banner ===== */
.cam-pagebanner{ background:linear-gradient(120deg,var(--graphite-2),var(--graphite)); border-bottom:1px solid var(--line); padding:38px 0; }
.cam-pagebanner-kicker{ color:var(--orange); font-weight:800; font-size:13px; letter-spacing:.05em; }
.cam-pagebanner-title{ font-weight:900; color:#fff; font-size:clamp(24px,4.6vw,38px); margin:6px 0 0; line-height:1.3; }

/* ===== Main content + 汎用ブロック ===== */
.cam-content{ padding:0; }
.cam-doc{ max-width:1120px; margin:0 auto; padding:44px 20px 64px; }
.cam-main{ font-size:17px; }
.cam-main h1,.cam-main h2,.cam-main h3,.cam-main h4{ font-family:"Noto Sans JP",sans-serif; font-weight:900; color:#fff; line-height:1.4; letter-spacing:.01em; }
.cam-main h2{ font-size:clamp(22px,3.4vw,30px); position:relative; padding-bottom:12px; margin:40px 0 18px; }
.cam-main h2::after{ content:""; position:absolute; left:0; bottom:0; width:54px; height:3px; background:var(--orange); border-radius:2px; }
.cam-main h3{ font-size:clamp(18px,2.6vw,22px); margin:28px 0 12px; padding-left:14px; border-left:4px solid var(--steel-2); }
.cam-main p{ margin:0 0 1.1em; }
.cam-main a{ color:var(--orange); font-weight:700; text-decoration:none; }
.cam-main a:hover{ color:var(--orange-2); text-decoration:underline; }
.cam-main img{ max-width:100%; height:auto; border-radius:14px; }
.cam-main hr{ border-color:var(--line); opacity:1; }
.cam-main ul,.cam-main ol{ padding-left:1.3em; }
.cam-main li{ margin:.35em 0; }
.cam-main table{ width:100%; border-collapse:collapse; margin:1em 0; }
.cam-main th,.cam-main td{ border:1px solid var(--line); padding:10px 14px; }
.cam-main th{ background:var(--surface-2); color:#fff; }
.cam-main blockquote{ border-left:4px solid var(--orange); background:var(--surface); padding:14px 18px; border-radius:0 12px 12px 0; margin:1em 0; color:var(--muted); }

/* Baked シート/ブロックの基本余白 */
.cam-main .bk-sheet{ margin:0; }
.cam-main .bk-block{ margin-bottom:18px; }
.cam-main .bk-block:last-child{ margin-bottom:0; }

/* TextPhoto をカード調に（dark） */
.cam-main .BlockTextPhoto .bk-block-content{ display:flex; flex-wrap:wrap; gap:22px; align-items:center; background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:22px; box-shadow:var(--shadow); }
.cam-main .BlockTextPhoto img{ border-radius:14px; }

/* ブロック内のボタンをオレンジに寄せる */
.cam-main .button,.cam-main .btn{ border-radius:11px!important; font-weight:800!important; }

/* ===== Footer ===== */
.cam-footer{ background:linear-gradient(180deg,#0c0c13,#0a0a10); border-top:1px solid var(--line); padding:52px 0 26px; margin-top:30px; }
.cam-footer-lead{ color:var(--muted); font-size:14.5px; line-height:1.9; }
.cam-footer-group{ color:var(--muted); font-size:13px; }
.cam-footer-h{ font-weight:900; color:#fff; margin-bottom:16px; }
.cam-footer-info{ color:var(--muted); font-size:14px; margin-top:8px; }
.cam-footer-menu li{ margin-bottom:10px; }
.cam-footer-menu a{ color:var(--ice); font-size:14.5px; text-decoration:none; transition:.15s; }
.cam-footer-menu a:hover{ color:var(--orange); padding-left:3px; }
.cam-footer-copy{ border-top:1px solid var(--line); margin-top:20px; padding-top:20px; text-align:center; color:var(--muted); font-size:12.5px; }

/* ===== Floating CTA（mobile） ===== */
.cam-fab{
  position:fixed; left:0; right:0; bottom:0; z-index:1040; display:flex; gap:1px;
  background:var(--line); box-shadow:0 -8px 24px rgba(0,0,0,.5);
}
.cam-fab a{
  flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px;
  padding:9px 4px; text-decoration:none; font-weight:800; font-size:12.5px;
}
.cam-fab a i{ font-size:19px; }
.cam-fab-tel{ background:var(--orange); color:#0D0D14; }
.cam-fab-form{ background:var(--surface-2); color:var(--ice); }
.cam-fab a:active{ filter:brightness(.92); }

/* ===== 404 ===== */
.cam-404{ text-align:center; padding:60px 0; }
.cam-404-code{ font-family:"Syne",sans-serif; font-weight:800; font-size:clamp(72px,16vw,140px); color:var(--steel-2); line-height:1; }
.cam-404-msg{ color:var(--muted); margin:8px 0 26px; }

/* ===== Blog（自己完結の一覧/記事） ===== */
.cam-blog-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:22px; margin:8px 0 24px; }
.cam-card{ display:flex; flex-direction:column; background:var(--surface); border:1px solid var(--line); border-radius:18px; overflow:hidden; text-decoration:none; color:var(--ice); box-shadow:var(--shadow); transition:transform .18s ease, border-color .18s ease; }
.cam-card:hover{ transform:translateY(-4px); border-color:var(--steel-2); }
.cam-card-thumb{ aspect-ratio:16/9; background:var(--surface-2) center/cover no-repeat; display:grid; place-items:center; color:var(--steel-2); font-size:34px; }
.cam-card-thumb img{ width:100%; height:100%; object-fit:cover; }
.cam-card-body{ padding:16px 18px; }
.cam-card-date{ color:var(--orange); font-weight:800; font-size:12.5px; letter-spacing:.03em; }
.cam-card-title{ font-weight:900; color:#fff; font-size:16.5px; line-height:1.5; margin:6px 0 8px; }
.cam-card-excerpt{ color:var(--muted); font-size:14px; line-height:1.8; }
.cam-entry{ max-width:860px; margin:0 auto; background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:clamp(20px,4vw,40px); box-shadow:var(--shadow); }
.cam-entry-title{ font-weight:900; color:#fff; font-size:clamp(22px,4vw,32px); line-height:1.4; margin:0 0 10px; }
.cam-entry-meta{ color:var(--muted); font-size:13.5px; margin-bottom:22px; }
.cam-entry-body{ font-size:16.5px; }
.cam-entry-body img{ max-width:100%; height:auto; border-radius:14px; }
.cam-postnav{ display:flex; justify-content:space-between; gap:12px; margin-top:30px; }
.cam-postnav a{ color:var(--ice); text-decoration:none; font-weight:700; font-size:14px; padding:10px 14px; border:1px solid var(--line); border-radius:11px; transition:.15s; }
.cam-postnav a:hover{ border-color:var(--steel-2); color:var(--orange); }

@media (min-width:992px){
  .cam-main .BlockTextPhoto .bk-block-content > *{ flex:1 1 0; min-width:240px; }
}
@media (max-width:575.98px){
  .cam-logo-kicker{ font-size:10px; }
  .cam-logo-brand{ font-size:17px; }
  .cam-content{ padding:30px 0 44px; }
}

/* =========================================================
   LP コンポーネント（BlockCode セクション共通）
   ========================================================= */
.cam-sec{ padding:clamp(48px,7vw,86px) 0; position:relative; }
.cam-sec .container{ max-width:1140px; }
.cam-sec--alt{ background:linear-gradient(180deg,#0b0b12,#0e0e18); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.cam-sec--steel{ background:linear-gradient(135deg,#0e1726,#0c0f1a); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.cam-kicker{ display:inline-flex; align-items:center; gap:8px; color:var(--orange); font-weight:800; font-size:13px; letter-spacing:.08em; text-transform:uppercase; }
.cam-kicker::before{ content:""; width:26px; height:2px; background:var(--orange); display:inline-block; }
.cam-sec-title{ font-weight:900; color:#fff; font-size:clamp(26px,4.4vw,40px); line-height:1.34; letter-spacing:.01em; margin:14px 0 0; }
.cam-sec-title .hl{ color:var(--orange); }
.cam-sec-lead{ color:var(--muted); font-size:clamp(15px,1.7vw,17px); line-height:2; margin:16px 0 0; max-width:760px; }
.cam-center{ text-align:center; }
.cam-center .cam-sec-lead{ margin-left:auto; margin-right:auto; }
.cam-center .cam-kicker::before{ display:none; }

/* グリッド */
.cam-grid{ display:grid; gap:22px; margin-top:38px; }
.cam-grid-3{ grid-template-columns:repeat(3,1fr); }
.cam-grid-2{ grid-template-columns:repeat(2,1fr); }
.cam-grid-4{ grid-template-columns:repeat(4,1fr); }
@media (max-width:900px){ .cam-grid-3,.cam-grid-4{ grid-template-columns:1fr 1fr; } }
@media (max-width:600px){ .cam-grid-2,.cam-grid-3,.cam-grid-4{ grid-template-columns:1fr; } }

/* 特徴カード */
.cam-feat{ background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:26px 24px; box-shadow:var(--shadow); transition:transform .2s ease, border-color .2s ease; height:100%; }
.cam-feat:hover{ transform:translateY(-5px); border-color:var(--steel-2); }
.cam-feat-ico{ display:inline-grid; place-items:center; width:54px; height:54px; border-radius:14px; background:rgba(255,107,53,.12); border:1px solid rgba(255,107,53,.3); color:var(--orange); font-size:26px; margin-bottom:16px; }
.cam-feat-no{ font-family:"Syne",sans-serif; font-weight:800; color:var(--steel-2); font-size:14px; letter-spacing:.1em; }
.cam-feat-h{ font-weight:900; color:#fff; font-size:19px; line-height:1.5; margin:8px 0 10px; }
.cam-feat-p{ color:var(--muted); font-size:14.5px; line-height:1.95; margin:0; }
.cam-feat-media{ width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:14px; margin-bottom:18px; border:1px solid var(--line); }

/* 実績スタッツ */
.cam-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:18px; overflow:hidden; margin-top:40px; }
@media (max-width:700px){ .cam-stats{ grid-template-columns:1fr 1fr; } }
.cam-stat{ background:var(--surface); padding:26px 16px; text-align:center; }
.cam-stat-num{ font-family:"Syne",sans-serif; font-weight:800; color:var(--orange); font-size:clamp(30px,5vw,44px); line-height:1; }
.cam-stat-lbl{ color:var(--muted); font-size:13px; margin-top:8px; font-weight:700; }

/* チェックリスト */
.cam-checks{ list-style:none; padding:0; margin:24px 0 0; display:grid; gap:12px; }
.cam-checks li{ display:flex; gap:12px; align-items:flex-start; color:var(--ice); font-size:15.5px; line-height:1.8; }
.cam-checks .bi{ color:var(--orange); font-size:20px; flex:0 0 auto; margin-top:2px; }

/* 料金 */
.cam-price{ background:linear-gradient(180deg,var(--surface),var(--surface-2)); border:1px solid var(--line); border-radius:22px; padding:34px 30px; text-align:center; box-shadow:var(--shadow); position:relative; }
.cam-price--feature{ border-color:var(--orange); box-shadow:var(--glow),var(--shadow); }
.cam-price-badge{ position:absolute; top:-13px; left:50%; transform:translateX(-50%); background:var(--orange); color:#0D0D14; font-weight:900; font-size:12.5px; padding:6px 16px; border-radius:30px; white-space:nowrap; }
.cam-price-name{ font-weight:900; color:#fff; font-size:19px; }
.cam-price-yen{ font-family:"Syne",sans-serif; font-weight:800; color:#fff; font-size:clamp(40px,7vw,58px); line-height:1.1; margin:10px 0 2px; }
.cam-price-yen small{ font-size:18px; color:var(--muted); font-weight:700; }
.cam-price-note{ color:var(--muted); font-size:13.5px; }

/* 流れ STEP */
.cam-steps{ display:grid; gap:18px; margin-top:38px; }
.cam-step{ display:grid; grid-template-columns:64px 1fr; gap:20px; align-items:start; background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:22px 24px; }
.cam-step-no{ font-family:"Syne",sans-serif; font-weight:800; color:#0D0D14; background:var(--orange); width:52px; height:52px; border-radius:14px; display:grid; place-items:center; font-size:22px; }
.cam-step-h{ font-weight:900; color:#fff; font-size:17px; margin:2px 0 6px; }
.cam-step-p{ color:var(--muted); font-size:14.5px; line-height:1.9; margin:0; }

/* 用途タグ */
.cam-uses{ display:flex; flex-wrap:wrap; gap:12px; margin-top:34px; }
.cam-use{ display:inline-flex; align-items:center; gap:10px; background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:14px 18px; color:var(--ice); font-weight:700; font-size:15px; transition:.18s; }
.cam-use:hover{ border-color:var(--steel-2); transform:translateY(-2px); }
.cam-use .bi{ color:var(--orange); font-size:20px; }

/* FAQ */
.cam-faq{ margin-top:30px; display:grid; gap:14px; }
.cam-faq-item{ background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:20px 22px; }
.cam-faq-q{ font-weight:900; color:#fff; font-size:16px; display:flex; gap:10px; }
.cam-faq-q .bi{ color:var(--orange); flex:0 0 auto; }
.cam-faq-a{ color:var(--muted); font-size:14.5px; line-height:1.9; margin:10px 0 0; padding-left:26px; }

/* CTA バンド */
.cam-ctaband{ background:radial-gradient(900px 360px at 50% -30%, rgba(255,107,53,.18), transparent 60%), linear-gradient(135deg,#101826,#0D0D14); border-top:1px solid var(--line); }
.cam-ctaband .cam-sec-title{ margin-top:8px; }
.cam-cta-btns{ display:flex; flex-wrap:wrap; gap:14px; justify-content:center; margin-top:30px; }
.cam-btn{ display:inline-flex; align-items:center; gap:10px; font-weight:900; font-size:17px; padding:15px 28px; border-radius:14px; text-decoration:none; transition:transform .16s ease, filter .16s ease; }
.cam-btn-primary{ background:var(--orange); color:#0D0D14; box-shadow:var(--glow); }
.cam-btn-primary:hover{ background:var(--orange-2); color:#0D0D14; transform:translateY(-2px); }
.cam-btn-ghost{ background:transparent; color:var(--ice); border:1.5px solid var(--line); }
.cam-btn-ghost:hover{ border-color:var(--orange); color:#fff; transform:translateY(-2px); }
.cam-btn-lg{ font-size:clamp(20px,2.4vw,26px); padding:18px 34px; }
.cam-btn-tel small{ display:block; font-weight:700; font-size:11px; opacity:.8; margin-bottom:-3px; }

/* ===== HERO（visualシート内 BlockCode 用） ===== */
.cam-hero{ position:relative; min-height:clamp(560px,82vh,760px); display:flex; align-items:center; overflow:hidden; }
.cam-hero-bg{ position:absolute; inset:0; background:#0a0a10 center/cover no-repeat; }
.cam-hero-bg::after{ content:""; position:absolute; inset:0; background:linear-gradient(105deg, rgba(10,10,16,.94) 0%, rgba(10,10,16,.78) 42%, rgba(10,10,16,.45) 100%); }
.cam-hero .container{ position:relative; z-index:2; max-width:1140px; }
.cam-hero-badge{ display:inline-flex; align-items:center; gap:9px; background:rgba(255,107,53,.14); border:1px solid rgba(255,107,53,.42); color:var(--orange); font-weight:800; font-size:13.5px; padding:8px 16px; border-radius:30px; }
.cam-hero-h1{ font-weight:900; color:#fff; font-size:clamp(32px,5.6vw,60px); line-height:1.22; letter-spacing:.01em; margin:20px 0 0; text-shadow:0 2px 24px rgba(0,0,0,.6); }
.cam-hero-h1 .hl{ color:var(--orange); }
.cam-hero-sub{ color:#cfdae6; font-size:clamp(15px,2vw,19px); line-height:1.95; margin:20px 0 0; max-width:620px; }
.cam-hero-pills{ display:flex; flex-wrap:wrap; gap:10px; margin:24px 0 0; }
.cam-hero-pill{ display:inline-flex; align-items:center; gap:8px; background:rgba(20,20,31,.7); border:1px solid var(--line); color:#fff; font-weight:700; font-size:13.5px; padding:9px 15px; border-radius:11px; backdrop-filter:blur(4px); }
.cam-hero-pill .bi{ color:var(--orange); }
.cam-hero-cta{ display:flex; flex-wrap:wrap; gap:14px; margin:30px 0 0; }
@media (max-width:575.98px){ .cam-hero{ min-height:auto; padding:54px 0; } }

/* スキャンライン演出（hero内） */
.cam-hero .cam-scan{ position:absolute; inset:0; pointer-events:none; z-index:1; background:repeating-linear-gradient(0deg, rgba(63,182,201,.05) 0 2px, transparent 2px 5px); mix-blend-mode:screen; opacity:.45; }

/* ===== お問い合わせフォーム ===== */
.cam-form{ max-width:680px; margin:36px auto 0; text-align:left; }
.cam-form-row{ margin-bottom:18px; }
.cam-form label{ display:block; font-weight:800; color:#fff; font-size:14.5px; margin-bottom:8px; }
.cam-form label .req{ color:var(--orange); font-size:12px; margin-left:6px; }
.cam-form input,.cam-form select,.cam-form textarea{
  width:100%; background:#0c0c13; color:var(--ice); border:2px solid var(--line); border-radius:12px;
  padding:13px 15px; font-size:16px; font-family:inherit; transition:border-color .15s, box-shadow .15s;
}
.cam-form input:focus,.cam-form select:focus,.cam-form textarea:focus{
  outline:none; border-color:var(--orange); box-shadow:0 0 0 3px rgba(255,107,53,.18);
}
.cam-form textarea{ min-height:140px; resize:vertical; }
.cam-form .cam-hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.cam-form-submit{ width:100%; border:0; background:var(--orange); color:#0D0D14; font-weight:900; font-size:18px;
  padding:16px; border-radius:14px; cursor:pointer; box-shadow:var(--glow); transition:transform .15s, filter .15s; }
.cam-form-submit:hover{ filter:brightness(1.05); transform:translateY(-1px); }
.cam-form-submit:disabled{ opacity:.6; cursor:wait; transform:none; }
.cam-form-note{ color:var(--muted); font-size:12.5px; text-align:center; margin-top:14px; }
.cam-form-msg{ display:none; border-radius:12px; padding:16px 18px; margin-bottom:18px; font-weight:700; }
.cam-form-msg.ok{ display:block; background:rgba(42,74,107,.3); border:1px solid var(--steel-2); color:#fff; }
.cam-form-msg.ng{ display:block; background:rgba(255,107,53,.12); border:1px solid var(--orange); color:#ffcdb8; }

/* ===== 実績ギャラリー（cases） ===== */
.cam-gallery{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:38px; }
@media (max-width:860px){ .cam-gallery{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .cam-gallery{ grid-template-columns:1fr; } }
.cam-gallery figure{ margin:0; background:var(--surface); border:1px solid var(--line); border-radius:16px; overflow:hidden; box-shadow:var(--shadow); transition:transform .2s ease, border-color .2s ease; }
.cam-gallery figure:hover{ transform:translateY(-4px); border-color:var(--steel-2); }
.cam-gallery img{ width:100%; aspect-ratio:4/3; object-fit:cover; display:block; }
.cam-gallery figcaption{ padding:12px 14px; color:var(--ice); font-size:13.5px; font-weight:700; display:flex; align-items:center; gap:8px; }
.cam-gallery figcaption .bi{ color:var(--orange); }

/* ===== お客様の声（voice） ===== */
.cam-voice-feature{ display:grid; grid-template-columns:300px 1fr; gap:38px; align-items:center; margin-top:40px; background:linear-gradient(180deg,var(--surface),var(--surface-2)); border:1px solid var(--line); border-radius:22px; padding:34px; box-shadow:var(--shadow); }
@media (max-width:780px){ .cam-voice-feature{ grid-template-columns:1fr; gap:24px; justify-items:center; text-align:center; } }
.cam-voice-shot{ width:100%; max-width:300px; border-radius:20px; border:1px solid var(--line); box-shadow:0 18px 44px rgba(0,0,0,.5); display:block; }
.cam-voice-q{ position:relative; }
.cam-voice-q .qmark{ font-family:"Syne",sans-serif; font-size:62px; line-height:.7; color:var(--orange); opacity:.5; }
.cam-voice-q blockquote{ border:0; background:none; padding:0; margin:6px 0 0; color:#fff; font-size:clamp(17px,2.2vw,21px); font-weight:700; line-height:1.95; }
.cam-voice-meta{ color:var(--muted); font-size:13.5px; margin-top:18px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.cam-voice-stars{ color:var(--orange); font-size:16px; letter-spacing:2px; }
.cam-voice-badge{ display:inline-flex; align-items:center; gap:6px; background:rgba(42,74,107,.4); border:1px solid var(--steel-2); color:var(--ice); font-size:12px; font-weight:700; padding:5px 12px; border-radius:30px; }

/* ===== 施工実績ギャラリー + ライトボックス ===== */
.cam-filter{ display:flex; flex-wrap:wrap; gap:9px; margin:30px 0 6px; }
.cam-filter button{ background:var(--surface); border:1px solid var(--line); color:var(--ice); font-weight:700; font-size:13.5px; padding:8px 16px; border-radius:30px; cursor:pointer; transition:.15s; }
.cam-filter button:hover{ border-color:var(--steel-2); }
.cam-filter button.is-active{ background:var(--orange); border-color:var(--orange); color:#0D0D14; }
.cam-works{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:18px; }
@media (max-width:900px){ .cam-works{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:560px){ .cam-works{ grid-template-columns:repeat(2,1fr); } }
.cam-work{ position:relative; border:0; padding:0; margin:0; background:var(--surface); border-radius:14px; overflow:hidden; cursor:pointer; aspect-ratio:4/3; box-shadow:var(--shadow); }
.cam-work img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .35s ease, opacity .2s; }
.cam-work:hover img{ transform:scale(1.07); }
.cam-work::after{ content:"\F4FE"; font-family:"bootstrap-icons"; position:absolute; right:8px; bottom:8px; width:30px; height:30px; display:grid; place-items:center; background:rgba(13,13,20,.7); border:1px solid var(--line); border-radius:9px; color:var(--orange); font-size:15px; opacity:0; transition:.2s; }
.cam-work:hover::after{ opacity:1; }
.cam-work-cap{ position:absolute; left:0; right:0; bottom:0; padding:18px 10px 8px; background:linear-gradient(transparent,rgba(13,13,20,.85)); color:#fff; font-size:11.5px; font-weight:700; text-align:left; opacity:0; transition:.2s; }
.cam-work:hover .cam-work-cap{ opacity:1; }
.cam-work.is-hidden{ display:none; }

/* Lightbox */
.cam-lb{ position:fixed; inset:0; z-index:2000; background:rgba(6,6,10,.94); display:none; align-items:center; justify-content:center; flex-direction:column; padding:20px; backdrop-filter:blur(3px); }
.cam-lb.is-open{ display:flex; }
.cam-lb-img{ max-width:min(96vw,1100px); max-height:80vh; border-radius:12px; box-shadow:0 30px 80px rgba(0,0,0,.7); border:1px solid var(--line); }
.cam-lb-cap{ color:var(--ice); margin-top:16px; font-weight:700; font-size:15px; text-align:center; }
.cam-lb-count{ color:var(--muted); font-size:12.5px; margin-top:4px; }
.cam-lb-close{ position:absolute; top:16px; right:18px; width:46px; height:46px; border-radius:50%; background:var(--surface); border:1px solid var(--line); color:#fff; font-size:22px; cursor:pointer; display:grid; place-items:center; }
.cam-lb-close:hover{ background:var(--orange); color:#0D0D14; }
.cam-lb-nav{ position:absolute; top:50%; transform:translateY(-50%); width:54px; height:54px; border-radius:50%; background:rgba(20,20,31,.8); border:1px solid var(--line); color:#fff; font-size:24px; cursor:pointer; display:grid; place-items:center; transition:.15s; }
.cam-lb-nav:hover{ background:var(--orange); color:#0D0D14; }
.cam-lb-prev{ left:14px; } .cam-lb-next{ right:14px; }
@media (max-width:560px){ .cam-lb-nav{ width:44px; height:44px; font-size:20px; } .cam-lb-img{ max-height:72vh; } }
