/* Copied from design0324.html (<style>...</style>) */

/* ============ Design Tokens ============ */
:root {
  --color-primary: #31A54A;
  --color-primary-dark: #288B3D;
  --color-primary-bg: #F0FDF4;
  --color-accent: #EE1D46;
  --color-accent-yellow: #FDE133;
  --color-blue: #2563EB;
  --color-blue-bg: #EFF6FF;
  --color-blue-border: #BFDBFE;
  
  --color-text: #111827;
  --color-text-muted: #4B5563;
  --color-text-light: #6B7280;
  --color-text-lighter: #9CA3AF;
  
  --color-border: #E5E7EB;
  --color-border-light: #D1D5DB;
  --color-bg: #F9FAFB;
  --color-surface: #ffffff;
  --color-dark: #1F2937;
  --color-darker: #030712;
  --color-gray-100: #F3F4F6;

  --color-orange: #F27E37;
  --color-orange-bg: #FFF2EB;
  --color-orange-shadow: rgb(242 126 55 / 15%);
  --color-orange-shadow-strong: rgb(242 126 55 / 30%);

  --color-alert-bg: #FEF2F2;
  --color-alert-border: #FECACA;
  --color-alert-icon: #FCA5A5;
  --color-alert-text: #7F1D1D;
  --color-alert-title: #991B1B;

  --color-required: #EF4444;
  --color-footer-bg: rgb(245 245 231);

  --container-max: 1280px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 24px;
  --radius-xl: 32px;
  --radius-card: 20px;
  --radius-full: 9999px;
  --font-sans: 'Google Sans', 'Noto Sans JP', sans-serif;
}

/* ============ Reset & Base ============ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; scroll-behavior: smooth; }
body {
  font-family: var(--font-sans);
  color: var(--color-text);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
  word-break: keep-all;
  overflow-wrap: break-word;
}
img { max-width: 100%; display: block; }
a { text-decoration: none; color: inherit; }
ul { list-style: none; }

/* ============ Utility ============ */
.container { max-width: var(--container-max); margin: 0 auto; padding: 0 80px; }
/* タブレット・iPad横向け調整 */
@media (max-width: 1200px) { .container { padding: 0 32px; } }
@media (max-width: 768px) { .container { padding: 0 24px; } }
@media (max-width: 480px) { .container { padding: 0 16px; } }
.fa, .fas, .fab { font-style: normal; }

/* ============ Scroll Reveal ============ */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 700ms ease-out, transform 700ms ease-out;
}
.reveal.visible { opacity: 100%; transform: translateY(0); }

/* ============ Header ============ */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: rgb(255 255 255 / 95%);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--color-border);
}
.site-header .inner {
  display: flex; align-items: center; justify-content: space-between;
  height: 64px; max-width: var(--container-max); margin: 0 auto; padding: 0 40px;
}
@media (max-width: 768px) { .site-header .inner { padding: 0 16px; height: 56px; } }
.header-brand { display: flex; align-items: center; gap: 12px; }
.logo { display: flex; align-items: center; }
.logo-img { height: 28px; width: auto; display: block; }
@media (max-width: 640px) { .logo-img { height: 20px; } }
.campaign-badge {
  display: inline-flex; align-items: center; background: var(--color-primary); color: var(--color-surface);
  padding: 6px 20px; border-radius: var(--radius-full); font-size: 14px; font-weight: 700; line-height: 140%;
  box-shadow: 0 2px 4px rgb(0 0 0 / 15%); white-space: nowrap;
}
.header-brand .campaign-badge { font-size: 12px; padding: 5px 14px; box-shadow: none; }
@media (max-width: 640px) { .header-brand .campaign-badge { font-size: 10px; padding: 4px 8px; } }

.nav-links { display: flex; align-items: center; gap: 4px; }
.nav-links a {
  font-size: 16px; font-weight: 700; color: var(--color-text-muted);
  padding: 8px 16px; border-radius: var(--radius-sm);
  transition: background 200ms, color 200ms;
}
.nav-links a:hover { background: var(--color-gray-100); color: var(--color-text); }
.header-cta {
  display: flex; flex-direction: column; align-items: center;
  background: var(--color-primary); color: var(--color-surface);
  padding: 8px 20px; border-radius: var(--radius-sm);
  font-size: 14px; font-weight: 700; line-height: 140%;
  box-shadow: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 10px 15px -3px rgb(0 0 0 / 10%);
  transition: transform 200ms, box-shadow 200ms;
}
.header-cta:hover { transform: translateY(-2px); box-shadow: 0 8px 16px rgb(0 0 0 / 15%); }
.header-cta small { font-weight: 500; font-size: 12px; color: var(--color-border); letter-spacing: 1px; }

.mobile-menu-btn { display: none; background: none; border: none; font-size: 22px; color: var(--color-text-muted); cursor: pointer; padding: 8px; }
@media (max-width: 768px) {
  .nav-links, .header-cta { display: none !important; }
  .mobile-menu-btn { display: block; }
}
.mobile-menu {
  display: none; position: absolute; top: 100%; left: 0; right: 0;
  background: var(--color-surface); border-bottom: 1px solid var(--color-border);
  padding: 12px 16px; z-index: 99;
}
.mobile-menu.open { display: block; }
.mobile-menu a { display: block; padding: 12px 16px; font-weight: 700; font-size: 16px; color: var(--color-text-muted); border-radius: var(--radius-sm); }
.mobile-menu a:hover { background: var(--color-gray-100); }
.mobile-menu .mobile-cta { background: var(--color-primary); color: var(--color-surface); text-align: center; border-radius: var(--radius-sm); margin-top: 8px; }
.mobile-menu .mobile-cta:hover { background: var(--color-primary-dark); }

/* ============ HERO ============ */
.hero { position: relative; overflow: hidden; background: var(--color-bg); min-height: 85vh; display: flex; align-items: center; padding: 60px 0; clip-path: inset(0); }
.hero-bg-img { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; object-fit: cover; object-position: center; z-index: 0; transform: translateZ(0); }
.hero-overlay { position: absolute; inset: 0; background: rgb(0 0 0 / 15%); }
.hero .container { position: relative; z-index: 2; display: grid; grid-template-columns: 320px 1fr; gap: 64px; align-items: center; width: 100%; }
@media (max-width: 1200px) {
  .hero .container { grid-template-columns: 280px 1fr; gap: 40px; }
}
@media (max-width: 900px) {
  .hero .container { grid-template-columns: 1fr; gap: 40px; text-align: center; }
  .hero-left { order: 2; display: flex; justify-content: center; }
  .hero-right { order: 1; align-items: center; }
}

.hero-phone-mock-img { width: 100%; max-width: 320px; height: auto; filter: drop-shadow(0 24px 24px rgba(0, 0, 0, 0.5)); }
@media (max-width: 1200px) { .hero-phone-mock-img { max-width: 280px; } }
@media (max-width: 900px) { .hero-phone-mock-img { max-width: 240px; } }

.hero-right { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
@media (max-width: 900px) { .hero-right { align-items: center; } }
.hero-sub-row { display: flex; align-items: center; justify-content: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 8px; }
@media (max-width: 900px) { .hero-sub-row { justify-content: center; } }
.hero-sub { font-size: clamp(24px, 4vw, 36px); font-weight: 900; color: var(--color-surface); line-height: 120%; text-shadow: 0 2px 4px rgb(0 0 0 / 20%); }
.hero-title { font-size: clamp(40px, 6vw, 72px); font-weight: 900; color: var(--color-surface); line-height: 110%; text-shadow: 0 4px 8px rgb(0 0 0 / 25%); margin: 0; letter-spacing: -1px; }
.hero-desc { font-size: clamp(16px, 2.5vw, 18px); font-weight: 500; color: var(--color-surface); line-height: 160%; text-shadow: 0 2px 4px rgb(0 0 0 / 20%); margin-top: 8px; }

.campaign-banner-group { position: relative; display: flex; flex-direction: column; align-items: center; margin: 32px 0 24px; width: 100%; max-width: 860px; }
.price-card-img { width: 100%; height: auto; border-radius: var(--radius-card); box-shadow: 0 8px 16px rgb(0 0 0 / 15%); }

.hero-badges { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: -20px; position: relative; z-index: 2; width: 100%; }
.hero-badge {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--color-accent-yellow); color: var(--color-primary);
  padding: 8px 16px 8px 10px; border-radius: var(--radius-full); font-size: clamp(12px, 2vw, 15px); font-weight: 900; line-height: 120%;
  box-shadow: 0 4px 6px rgb(0 0 0 / 15%);
}
.badge-check { width: 22px; height: 22px; background: var(--color-primary); border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.badge-check svg { width: 12px; height: 12px; fill: none; stroke: var(--color-surface); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }

.hero-info-pill {
  background: var(--color-accent-yellow); color: var(--color-primary-dark);
  border-radius: var(--radius-full); padding: 12px 24px 12px 16px; font-size: clamp(14px, 2.5vw, 18px); font-weight: 900;
  display: inline-flex; align-items: center; gap: 12px; position: relative; margin-bottom: 24px;
  box-shadow: 0 4px 8px rgb(0 0 0 / 15%); text-align: left;
}
.hero-info-pill::after { content: ''; position: absolute; bottom: -10px; right: 40px; border-width: 10px 10px 0; border-style: solid; border-color: var(--color-accent-yellow) transparent transparent transparent; }
@media (max-width: 900px) { .hero-info-pill::after { left: 50%; transform: translateX(-50%); right: auto; } }

.cta-group { display: flex; gap: 16px; justify-content: flex-start; align-items: stretch; width: 100%; max-width: 640px; }
@media (max-width: 900px) { .cta-group { justify-content: center; } }
@media (max-width: 640px) { .cta-group { flex-direction: column; align-items: stretch; } }

.btn-primary {
  display: flex; align-items: center; justify-content: center; gap: 16px; flex: 1;
  background: var(--color-accent); color: var(--color-surface);
  padding: 16px 24px; border-radius: var(--radius-md); text-decoration: none;
  box-shadow: 0 6px 16px rgb(238 29 70 / 30%); transition: transform 200ms, box-shadow 200ms;
}
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgb(238 29 70 / 40%); }
.btn-primary .btn-inner { display: flex; flex-direction: column; align-items: center; }
.btn-primary .btn-main { font-size: clamp(20px, 4vw, 32px); font-weight: 900; line-height: 100%; }
.btn-primary .btn-sub { font-size: 12px; color: rgb(255 255 255 / 90%); margin-top: 4px; font-weight: 500; }
.btn-primary .fas { font-size: 24px; }

.btn-secondary {
  display: flex; align-items: center; justify-content: center; gap: 10px; flex: 1;
  background: var(--color-surface); color: var(--color-text);
  padding: 16px 24px; border-radius: var(--radius-md); font-size: 18px; font-weight: 900;
  box-shadow: 0 4px 12px rgb(0 0 0 / 10%); transition: transform 200ms, background 200ms;
  border: none; cursor: pointer; font-family: inherit; white-space: nowrap;
}
.btn-secondary:hover { transform: translateY(-2px); background: var(--color-gray-100); }

.hero-note { font-size: 12px; font-weight: 700; color: rgb(255 255 255 / 80%); line-height: 133%; margin-top: 12px; text-align: center; width: 100%; }

/* ============ Video Modal ============ */
.video-modal-overlay {
  position: fixed; inset: 0; z-index: 1000;
  background: rgb(0 0 0 / 85%); display: flex; align-items: center; justify-content: center;
  padding: 24px; opacity: 0; visibility: hidden; transition: opacity 300ms, visibility 300ms;
}
.video-modal-overlay.is-open { opacity: 100%; visibility: visible; }
.video-modal-inner { position: relative; width: 100%; max-width: 900px; aspect-ratio: 16/9; background: #000; border-radius: var(--radius-md); overflow: hidden; box-shadow: 0 24px 48px rgb(0 0 0 / 50%); }
.video-modal-inner iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: none; }
.video-modal-close {
  position: absolute; top: -44px; right: 0; width: 40px; height: 40px; border: none; background: rgb(255 255 255 / 20%);
  color: #fff; font-size: 24px; cursor: pointer; border-radius: var(--radius-sm); transition: background 200ms;
}
.video-modal-close:hover { background: rgb(255 255 255 / 30%); }
.video-modal-fallback { position: absolute; bottom: -36px; left: 0; width: 100%; text-align: center; font-size: 14px; color: rgb(255 255 255 / 90%); }
.video-modal-fallback a { color: inherit; text-decoration: underline; }

/* ============ SECTION: Proven Results ============ */
.sec-proven { background: var(--color-bg); padding: 80px 0; position: relative; overflow: hidden; }
body > section.sec-proven {
  background-image: url('../zoro.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.proven-bg-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 30%; pointer-events: none; z-index: 1; }
.sec-proven .container { position: relative; z-index: 2; }
.sec-proven .label { text-align: center; font-size: 14px; font-weight: 700; color: var(--color-primary); letter-spacing: 2px; text-transform: uppercase; margin-bottom: 8px; }
.sec-proven .heading { text-align: center; font-size: clamp(24px, 4vw, 30px); font-weight: 900; line-height: 133%; margin-bottom: 56px; padding: 0 16px; }

.proven-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; position: relative; z-index: 2; max-width: 1100px; margin: 0 auto; }

.proven-item { display: flex; flex-direction: column; align-items: center; padding-top: 48px; min-width: 0; }
.proven-card {
  background: var(--color-surface); border-radius: var(--radius-lg); padding: 24px; width: 100%;
  box-shadow: 0 4px 16px rgb(0 0 0 / 7%); flex-grow: 1; display: flex; flex-direction: column; align-items: center;
  overflow-wrap: break-word; word-break: break-word;
}
.proven-illust { width: 100%; aspect-ratio: 330/180; position: relative; margin-top: -64px; border-radius: var(--radius-md); overflow: hidden; }
.proven-illust .illust-img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.proven-desc { font-size: 14px; font-weight: 700; color: var(--color-text-muted); text-align: center; line-height: 170%; margin-top: 24px; }
.proven-down-arrow { color: var(--color-text-light); margin: 12px 0; }
.proven-down-arrow svg { width: 24px; height: 24px; fill: var(--color-border-light); }

.proven-metrics {
  width: 100%; text-align: center; border-top: 1px dashed var(--color-border); padding-top: 20px;
}
.proven-metrics .metric-label { font-size: 20px; font-weight: 900; color: var(--color-primary); line-height: 100%; margin-bottom: 12px; }
.proven-metrics .metric-value {
  display: flex; align-items: baseline; justify-content: center; width: fit-content; margin: 0 auto 6px; gap: 4px;
}
.proven-metrics .metric-big { font-size: 80px; font-weight: 900; color: var(--color-primary); line-height: 85%; letter-spacing: -2px; }
.proven-metrics .metric-unit { font-size: 22px; font-weight: 900; color: var(--color-text-light); line-height: 140%; }
.proven-metrics .metric-note { font-size: 12px; font-weight: 500; color: var(--color-text-lighter); line-height: 160%; margin-bottom: 12px; }
.proven-metrics .metric-compare {
  display: flex; align-items: baseline; justify-content: center; gap: 6px;
}
.proven-metrics .metric-compare .old { font-size: 40px; font-weight: 900; color: var(--color-border-light); line-height: 85%; text-decoration: line-through; text-decoration-color: var(--color-accent); letter-spacing: -1px; }
.proven-metrics .metric-compare .unit { font-size: 16px; font-weight: 700; color: var(--color-text-muted); line-height: 180%; }
.proven-metrics .metric-compare .arrow { font-size: 20px; font-weight: 700; color: var(--color-text-lighter); }
.proven-metrics .metric-compare .new { font-size: 40px; font-weight: 900; color: var(--color-primary); line-height: 85%; letter-spacing: -1px; }
.proven-metrics .metric-sub { font-size: 28px; font-weight: 900; color: var(--color-primary); line-height: 120%; display: block; margin-bottom: 10px; letter-spacing: -1px; }

/* ============ SECTION: Video Embed ============ */
.sec-video { background: var(--color-bg); padding: clamp(60px, 8vw, 100px) 0; position: relative; z-index: 2; }
.sec-video .container { max-width: 1000px; }
.video-top { text-align: center; margin-bottom: clamp(24px, 4vw, 48px); }
.video-top h2 { font-size: clamp(24px, 4vw, 40px); font-weight: 900; letter-spacing: -1px; padding: 0 16px;}
.video-wrap { position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: var(--radius-lg); overflow: hidden; box-shadow: 0 24px 64px rgb(0 0 0 / 15%); background: var(--color-darker); }
.video-wrap iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: none; }

/* 動画タブ切り替え用スタイル */
.video-tabs {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-bottom: 24px;
}
.video-tab {
  background: var(--color-surface);
  border: 2px solid var(--color-border);
  color: var(--color-text-muted);
  padding: 12px 24px;
  border-radius: var(--radius-full);
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  transition: all 200ms ease;
}
.video-tab:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
}
.video-tab.active {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-surface);
  box-shadow: 0 4px 12px rgb(49 165 74 / 30%);
}
.video-container .video-wrap {
  display: none; /* デフォルトは非表示 */
}
.video-container .video-wrap.active {
  display: block; /* activeクラスが付いたものだけ表示 */
  animation: videoFadeIn 300ms ease-in-out;
}
@keyframes videoFadeIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

/* スマホ用調整 */
@media (max-width: 640px) {
  .video-tabs { flex-direction: column; gap: 8px; }
  .video-tab { width: 100%; }
}

/* ============ SECTION: Solution ============ */
.sec-solution { position: relative; height: 300vh; background: var(--color-darker); }
.sol-sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; display: flex; flex-direction: column; }
.sol-bg-wrap { position: absolute; inset: 0; z-index: 1; }
.sol-bg-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 400ms ease, transform 400ms ease; will-change: opacity, transform; }
.sol-bg-overlay { position: absolute; inset: 0; background: rgb(0 0 0 / 50%); }
.sol-header { padding: clamp(100px, 15vh, 140px) 24px 0; text-align: center; z-index: 20; flex-shrink: 0; position: relative; }
.sol-label { font-size: 12px; font-weight: 900; color: var(--color-accent-yellow); letter-spacing: 2px; text-transform: uppercase; margin-bottom: 12px; }
.sol-heading { font-size: clamp(24px, 4vw, 42px); font-weight: 900; line-height: 130%; letter-spacing: -1px; color: var(--color-surface); text-shadow: 0 4px 12px rgb(0 0 0 / 30%); }
.sol-heading em { color: var(--color-accent-yellow); font-style: normal; }
.sol-container { flex: 1; display: flex; align-items: center; justify-content: center; max-width: 1280px; margin: 0 auto; width: 100%; padding: 0 40px; position: relative; z-index: 10; }
.sol-text-col { width: 100%; position: relative; height: 320px; }
.sol-content-wrap { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; opacity: 0; will-change: opacity, transform; pointer-events: none; }
.sol-content { position: relative; z-index: 1; padding: 24px; width: 50%; min-height: 280px; display: flex; flex-direction: column; justify-content: center; }
@media (max-width: 900px) { .sol-content { width: 80%; margin: 0 auto; } }
.sol-content.align-right { margin-left: auto; }
.sol-content.align-left { margin-right: auto; }
.sol-step-num { font-size: clamp(100px, 15vw, 180px); font-weight: 900; line-height: 100%; color: rgb(255 255 255 / 15%); position: absolute; top: -50px; left: -10px; letter-spacing: -4px; z-index: 0; user-select: none; }
.sol-content-inner { position: relative; z-index: 1; }
.sol-content h3 { font-size: clamp(28px, 5vw, 64px); font-weight: 900; line-height: 120%; margin-bottom: 24px; letter-spacing: -1px; color: var(--color-surface); text-shadow: 0 4px 12px rgb(0 0 0 / 50%); }
.sol-content h3 .badge-new { background: var(--color-accent-yellow); color: var(--color-primary-dark); font-size: 14px; padding: 4px 12px; border-radius: var(--radius-full); letter-spacing: 1px; vertical-align: middle; margin-left: 12px; box-shadow: 0 2px 4px rgb(0 0 0 / 20%); text-shadow: none; display: inline-block; margin-top: 8px; }
.sol-content p { font-size: clamp(15px, 2.5vw, 18px); font-weight: 700; color: rgb(255 255 255 / 90%); line-height: 180%; text-shadow: 0 2px 8px rgb(0 0 0 / 60%); }
.sol-content .dev-badge { color: var(--color-accent-yellow); font-size: 13px; font-weight: 900; display: inline-block; margin-top: 12px; text-shadow: 0 2px 4px rgb(0 0 0 / 60%); }
.sol-dots { position: absolute; left: max(16px, 2vw); top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 12px; z-index: 30; }
.sol-dot { width: 8px; height: 8px; border-radius: 50%; background: rgb(255 255 255 / 30%); transition: background 300ms, height 300ms; }
.sol-dot.active { background: var(--color-accent-yellow); height: 24px; border-radius: 4px; }
.sol-hint { position: absolute; bottom: 32px; left: 50%; transform: translateX(-50%); z-index: 30; display: flex; flex-direction: column; align-items: center; gap: 8px; transition: opacity 500ms; }
.sol-hint.hidden { opacity: 0; pointer-events: none; }
.sol-hint span { font-size: 11px; font-weight: 900; color: rgb(255 255 255 / 60%); letter-spacing: 2px; text-transform: uppercase; }
.sol-hint-arrow { width: 20px; height: 20px; border-right: 2px solid rgb(255 255 255 / 60%); border-bottom: 2px solid rgb(255 255 255 / 60%); transform: rotate(45deg); animation: sol-bounce 1400ms ease-in-out infinite; }
@keyframes sol-bounce { 0%, 100% { transform: rotate(45deg) translate(0, 0); } 50% { transform: rotate(45deg) translate(6px, 6px); } }
.sol-count { position: absolute; right: max(16px, 2vw); top: 50%; transform: translateY(-50%); z-index: 30; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.sol-count-num { font-size: 13px; font-weight: 900; color: rgb(255 255 255 / 40%); line-height: 100%; transition: color 300ms; }
.sol-count-num.active { color: var(--color-accent-yellow); }
.sol-count-sep { width: 1px; height: 20px; background: rgb(255 255 255 / 30%); }
.sol-progress { position: absolute; bottom: 0; left: 0; height: 4px; background: var(--color-accent-yellow); z-index: 30; width: 0%; }
@media (max-width: 768px) { .sol-dots, .sol-count { display: none; } }

/* ============ SECTION: Comparison ============ */
.sec-comparison { position: relative; background: linear-gradient(0deg, rgba(255, 249, 238, 1) 0%, rgba(255, 251, 242, 1) 32%, rgba(237, 226, 201, 1) 66%, rgba(215, 198, 164, 1) 100%); padding: 80px 0; overflow: visible; z-index: 1; }
.comp-wrapper { max-width: var(--container-max); margin: 0 auto; position: relative; display: flex; justify-content: center; align-items: flex-start; }
.comp-char { position: sticky; top: 50vh; transform: translateY(-50%); width: 22vw; max-width: 300px; z-index: 1; display: flex; align-items: center; justify-content: center; }
.comp-char.left { margin-right: auto; }
.comp-char.right { margin-left: auto; }
.comp-char img { max-height: 100vh; width: 100%; object-fit: contain; }
/* 1200px以下でキャラを非表示 */
@media (max-width: 1200px) {
  .comp-char { display: none; }
  .comp-content { margin: 0 auto; padding: 0 20px; max-width: 800px; }
}

.comp-content { width: 100%; max-width: 840px; position: relative; z-index: 2; margin: 0; }
@media (max-width: 1200px) { .comp-content { margin: 0 auto; padding: 0 20px; max-width: 800px; } }
@media (max-width: 768px) { .comp-content { padding: 0; } }

.comp-heading-wrap { text-align: center; margin-bottom: 56px; }
.comp-heading-wrap .comp-label { font-size: 12px; font-weight: 900; letter-spacing: 2px; text-transform: uppercase; color: var(--color-primary); margin-bottom: 12px; }
.comp-heading-wrap h2 { font-size: clamp(24px, 4vw, 40px); font-weight: 900; letter-spacing: -1px; color: var(--color-darker); padding: 0 16px; }
.comp-headers { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-bottom: 16px; padding: 0 16px; }
.comp-header { text-align: center; }
.comp-header .tag { font-size: 11px; font-weight: 900; letter-spacing: 1px; padding: 6px 20px; border-radius: var(--radius-full); display: inline-block; margin-bottom: 12px; }
.comp-header.old .tag { color: var(--color-text-light); background: var(--color-surface); box-shadow: 0 4px 12px rgb(0 0 0 / 5%); }
.comp-header.new .tag { color: var(--color-surface); background: var(--color-orange); box-shadow: 0 4px 12px var(--color-orange-shadow-strong); }
.comp-header h3 { font-weight: 900; line-height: 120%; }
.comp-header.old h3 { font-size: 20px; color: var(--color-text-muted); }
.comp-header.new h3 { font-size: 24px; color: var(--color-darker); }
@media (max-width: 768px) { .comp-headers { gap: 12px; margin-bottom: 12px; padding: 0 12px; }
  .comp-header.old h3 { font-size: 16px; }
  .comp-header.new h3 { font-size: 18px; }
}
.comp-row-wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-bottom: 24px; position: relative; }
.comp-item { border-radius: var(--radius-lg); padding: 40px 20px; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.comp-item.old { background: var(--color-surface); box-shadow: 0 12px 32px rgb(0 0 0 / 4%); border: none; }
.comp-item.new { background: var(--color-surface); border: 2px solid var(--color-orange); box-shadow: 0 16px 48px var(--color-orange-shadow); }
.comp-item .row-label { font-size: 11px; font-weight: 900; margin-bottom: 24px; padding: 6px 20px; border-radius: var(--radius-full); letter-spacing: 1px; }
.comp-item.old .row-label { color: var(--color-text-muted); background: var(--color-gray-100); }
.comp-item.new .row-label { color: var(--color-surface); background: var(--color-orange); font-size: 13px; font-weight: 900; letter-spacing: 1px; word-wrap: break-word; }
.comp-img-box { width: 200px; height: 200px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-bottom: 24px; background: var(--color-gray-100); overflow: hidden; }
@media (min-width: 900px) { .comp-img-box { width: 240px; height: 240px; margin-bottom: 32px; } }
.comp-item.new .comp-img-box { background: var(--color-orange-bg); }
.comp-img-box img { width: 100%; height: 100%; object-fit: cover; }
.comp-item.new .comp-img-box img { box-shadow: 0 8px 24px var(--color-orange-shadow); }
.comp-item .row-val { font-weight: 900; line-height: 120%; margin-bottom: 8px; letter-spacing: -1px; }
.comp-item.old .row-val { color: var(--color-text-muted); font-size: clamp(20px, 3vw, 24px); }
.comp-item.new .row-val { color: var(--color-orange); font-size: clamp(28px, 4vw, 40px); font-weight: 700; word-wrap: break-word; }
.comp-item.new .row-val small { color: var(--color-orange); font-size: clamp(16px, 2vw, 20px); font-weight: 900; word-wrap: break-word; }
.comp-item .row-sub { font-size: 13px; font-weight: 700; color: var(--color-text-light); line-height: 160%; }
.comp-item.new .row-sub { color: var(--color-text-light); font-size: 14px; font-weight: 700; line-height: 160%; word-wrap: break-word; }
.comp-vs-circle { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 48px; height: 48px; background: var(--color-accent-yellow); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 15px; box-shadow: 0 8px 16px rgb(0 0 0 / 10%); z-index: 10; color: var(--color-darker); }

/* ============ SECTION: CTA Slim ============ */
.sec-cta-slim { background: var(--color-primary); padding: clamp(24px, 4vw, 40px) 0; }
.sec-cta-slim .container { display: flex; align-items: center; justify-content: center; gap: 24px; flex-wrap: wrap; text-align: center; }
.sec-cta-slim-text { font-size: clamp(16px, 3vw, 24px); font-weight: 900; color: var(--color-surface); margin: 0; }
.btn-cta-slim { background: var(--color-surface); color: var(--color-primary-dark); padding: 14px 32px; border-radius: var(--radius-md); font-size: clamp(16px, 2.5vw, 18px); font-weight: 900; display: inline-flex; align-items: center; justify-content: center; gap: 12px; box-shadow: 0 8px 24px rgb(0 0 0 / 15%); transition: transform 250ms, box-shadow 250ms; text-decoration: none; white-space: nowrap; }
.btn-cta-slim:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgb(0 0 0 / 25%); }
@media (max-width: 768px) { .sec-cta-slim .container { flex-direction: column; gap: 16px; } .btn-cta-slim { width: 100%; max-width: 320px; } }

/* ============ SECTION: AI ============ */
.sec-ai { background: var(--color-surface); padding: clamp(60px, 8vw, 120px) 0; border-top: 1px solid var(--color-gray-100); }
.ai-top { text-align: center; margin-bottom: clamp(40px, 6vw, 80px); padding: 0 16px; }
.ai-chip { display: inline-flex; align-items: center; gap: 8px; background: var(--color-primary-bg); border: 1px solid var(--color-primary); color: var(--color-primary); font-size: 12px; font-weight: 900; padding: 6px 20px; border-radius: var(--radius-full); margin-bottom: 20px; letter-spacing: 1px; }
.ai-heading { font-size: clamp(24px, 4vw, 44px); font-weight: 900; line-height: 130%; letter-spacing: -1px; }
.ai-heading em { font-style: normal; color: var(--color-primary); }
.ai-sub { font-size: clamp(14px, 2.5vw, 16px); font-weight: 700; color: var(--color-text-light); line-height: 180%; margin: 16px auto 0; max-width: 580px; }

.ai-zigzag-list { display: flex; flex-direction: column; gap: clamp(60px, 8vw, 80px); max-width: 1040px; margin: 0 auto; }
.ai-zz-item { display: flex; align-items: center; }
.ai-zz-item.reverse { flex-direction: row-reverse; }

.ai-zz-img { width: 45%; aspect-ratio: 4/3; background: var(--color-dark); border-radius: var(--radius-lg); padding: 16px; box-shadow: 0 24px 48px -12px rgb(0 0 0 / 25%), inset 0 0 0 2px #374151; z-index: 3; position: relative; display: flex; flex-shrink: 0; }
.ai-zz-img img { width: 100%; height: 100%; object-fit: cover; border-radius: 8px; background: var(--color-surface); }
.ai-zz-img::after { content: ''; position: absolute; top: 50%; left: 8px; transform: translateY(-50%); width: 6px; height: 6px; background: var(--color-text); border-radius: 50%; box-shadow: inset 0 1px 2px rgb(0 0 0 / 50%); }
.ai-zz-item.reverse .ai-zz-img::after { left: auto; right: 8px; }

.ai-zz-content {
  width: 55%;
  background: rgb(255 255 255 / 92%);
  border-radius: var(--radius-lg);
  padding: 40px;
  box-shadow: 0 24px 48px -12px rgb(0 0 0 / 15%);
  border: 1px solid var(--color-border);
  position: relative;
  z-index: 1;
}
/* 1024px以下はマイナスマージンを解除し、自然な配置へ */
@media (min-width: 1025px) {
  .ai-zz-content.right { margin-left: -3%; padding: 40px 40px 40px clamp(56px, 8vw, 96px); }
  .ai-zz-content.left { margin-right: -3%; padding: 40px clamp(56px, 8vw, 96px) 40px 40px; }
}
@media (max-width: 1024px) {
  .ai-zz-item, .ai-zz-item.reverse { flex-direction: column; gap: 0; }
  .ai-zz-img { width: 90%; max-width: 600px; border-radius: var(--radius-card); padding: 12px; z-index: 2; margin: 0 auto; }
  .ai-zz-img::after { top: 8px; left: 50%; transform: translateX(-50%); }
  .ai-zz-item.reverse .ai-zz-img::after { right: auto; left: 50%; top: 8px; transform: translateX(-50%); }
  .ai-zz-content { width: 95%; max-width: 680px; margin: -40px auto 0; padding: 64px 32px 32px; }
}
@media (max-width: 480px) {
  .ai-zz-img { width: 100%; }
  .ai-zz-content { width: 100%; padding: 56px 20px 24px; }
}

.ai-zz-header { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; }
.ai-zz-num { font-size: clamp(36px, 5vw, 48px); font-weight: 900; color: var(--color-alert-text); line-height: 100%; letter-spacing: -1px; }
.ai-zz-header h3 { font-size: clamp(18px, 3vw, 24px); font-weight: 900; line-height: 130%; }
.ai-zz-content p.desc { font-size: clamp(14px, 2.5vw, 15px); font-weight: 700; color: var(--color-text-muted); line-height: 170%; margin-bottom: 24px; }
.ai-zz-content .dev-note { color: var(--color-blue); font-size: 12px; font-weight: 900; letter-spacing: 1px; display: block; margin-top: 8px;}

.ai-chart { margin-bottom: 24px; display: flex; flex-direction: column; gap: 12px; }
.ai-bar-row { display: flex; align-items: center; gap: 12px; }
.ai-bar-label { font-size: 12px; font-weight: 900; color: var(--color-text-light); width: 64px; text-align: right; flex-shrink: 0; }
.ai-bar-track { flex: 1; height: 8px; background: var(--color-gray-100); border-radius: 4px; }
.ai-bar-fill { height: 100%; border-radius: 4px; background: var(--color-blue); }

.ai-alert-box { background: var(--color-alert-bg); border: 1px solid var(--color-alert-border); border-radius: var(--radius-md); padding: 16px; margin-bottom: 24px; display: flex; gap: 16px; align-items: flex-start; }
.ai-alert-icon { width: 40px; height: 40px; background: var(--color-alert-icon); border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 18px; color: var(--color-alert-title); flex-shrink: 0; }
.ai-alert-title { font-size: 15px; font-weight: 900; color: var(--color-alert-title); margin-bottom: 4px; }
.ai-alert-text { font-size: 13px; font-weight: 700; color: var(--color-alert-text); line-height: 160%; }

.data-examples { border-top: 1px solid var(--color-border); padding-top: 20px; margin-top: auto; }
.data-examples .label { font-size: 11px; font-weight: 900; color: var(--color-text-lighter); margin-bottom: 12px; text-transform: uppercase; letter-spacing: 1px; }
.data-pills { display: flex; gap: 6px; flex-wrap: wrap; }
.data-pill { background: var(--color-blue-bg); border: 1px solid var(--color-blue-border); border-radius: 6px; padding: 6px 12px; font-size: 11px; font-weight: 900; color: var(--color-blue); white-space: nowrap; flex: 1; text-align: center; min-width: 70px;}

.check-list { display: flex; flex-direction: column; gap: 8px; margin-top: auto; border-top: 1px solid var(--color-border); padding-top: 20px; }
.check-item { display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: var(--color-bg); border: 1px solid var(--color-border); border-radius: 10px; font-size: 14px; font-weight: 900; color: var(--color-text-muted); }
.check-item .fas { color: var(--color-primary); font-size: 14px; }

/* ============ SECTION: Device ============ */
.sec-device { background: var(--color-bg); padding: clamp(60px, 8vw, 120px) 0; }
.dev-top { text-align: center; margin-bottom: clamp(40px, 6vw, 72px); padding: 0 16px; }
.dev-top .dev-label { font-size: 11px; font-weight: 900; letter-spacing: 2px; text-transform: uppercase; color: var(--color-primary); margin-bottom: 12px; }
.dev-top h2 { font-size: clamp(24px, 4vw, 40px); font-weight: 900; line-height: 130%; letter-spacing: -1px; }
.dev-top h2 em { font-style: normal; color: var(--color-primary); }
.badge-new { background: var(--color-accent-yellow); color: var(--color-primary-dark); font-size: 14px; padding: 4px 12px; border-radius: var(--radius-full); vertical-align: middle; margin-left: 8px; white-space: nowrap; display: inline-block; font-style: normal; }
.dev-top p { font-size: clamp(14px, 2.5vw, 16px); font-weight: 500; color: var(--color-text-light); line-height: 170%; max-width: 560px; margin: 16px auto 0; }

.device-layout { display: grid; grid-template-columns: 6fr 4fr; background: var(--color-surface); border-radius: var(--radius-xl); box-shadow: 0 40px 80px -20px rgb(0 0 0 / 10%); overflow: hidden; }
@media (max-width: 1024px) { .device-layout { grid-template-columns: 1fr; } }

.device-img { position: relative; min-height: 360px; background: var(--color-gray-100); overflow: hidden; }
@media (min-width: 900px) { .device-img { min-height: 480px; } }
.device-img img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 600ms ease-out; transform-origin: 80% 50%; }
.device-img:hover img { transform: scale(1.15); }

.device-features { padding: clamp(24px, 4vw, 56px); display: flex; flex-direction: column; justify-content: center; }
.device-feat { display: flex; gap: 16px; padding: 24px 0; border-bottom: 1px solid var(--color-border); }
@media (max-width: 480px) { .device-feat { flex-direction: column; gap: 8px; } }
.device-feat:last-child { border-bottom: none; padding-bottom: 0; }
.device-feat:first-child { padding-top: 0; }
.feat-num { font-size: clamp(36px, 5vw, 48px); font-weight: 100; color: var(--color-border-light); line-height: 100%; flex-shrink: 0; width: auto; min-width: 64px; letter-spacing: -1px; white-space: nowrap; }
.device-feat h4 { font-size: 16px; font-weight: 900; line-height: 140%; margin-bottom: 6px; }
.device-feat p { font-size: 14px; font-weight: 500; color: var(--color-text-light); line-height: 170%; }

/* ============ SECTION: Testimonial ============ */
.sec-testimonial { position: relative; padding: clamp(60px, 8vw, 120px) 0; background-image: url('../test-img-col-back1.webp'); background-size: cover; background-position: center; background-attachment: fixed; background-repeat: no-repeat; }
@media (max-width: 768px) { .sec-testimonial { background-attachment: scroll; } /* スマホでの背景固定の不具合回避 */ }
.sec-testimonial::after { content: ''; position: absolute; inset: 0; background: rgb(0 0 0 / 25%); }
.test-top { text-align: center; margin-bottom: clamp(32px, 5vw, 64px); position: relative; z-index: 2; padding: 0 16px; }
.test-label { font-size: 12px; font-weight: 900; letter-spacing: 2px; text-transform: uppercase; color: var(--color-accent-yellow); margin-bottom: 12px; }
.test-heading { font-size: clamp(24px, 4vw, 40px); font-weight: 900; color: var(--color-surface); letter-spacing: -1px; }

.test-card { background: var(--color-surface); border-radius: var(--radius-xl); box-shadow: 0 24px 64px rgb(0 0 0 / 20%); display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 4fr); overflow: hidden; position: relative; z-index: 2; }
@media (max-width: 900px) { .test-card { grid-template-columns: 1fr; } .test-img-col { order: -1; aspect-ratio: 1 / 1; min-height: auto; } }

.test-img-col { position: relative; min-height: 300px; min-width: 0; background: var(--color-border); }
@media (min-width: 900px) { .test-img-col { min-height: 360px; } }
.test-img-col img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

.test-content-col { padding: clamp(24px, 4vw, 64px); display: flex; flex-direction: column; justify-content: center; min-width: 0; }
.test-stat-wrap { display: flex; align-items: baseline; gap: 12px; margin-bottom: 24px; border-bottom: 2px dashed var(--color-border); padding-bottom: 20px; }
.test-stat-huge { font-size: clamp(48px, 6vw, 72px); font-weight: 900; color: var(--color-primary); line-height: 85%; letter-spacing: -2px; }
.test-stat-label { font-size: clamp(14px, 2vw, 18px); font-weight: 700; color: var(--color-text-muted); }

.test-content-col h3 { font-size: clamp(18px, 3vw, 28px); font-weight: 900; line-height: 150%; margin-bottom: 20px; }
.test-content-col h3 .hl { background: linear-gradient(transparent 60%, var(--color-accent-yellow) 60%); padding: 0 4px; }
.test-content-col blockquote { font-size: clamp(14px, 2.5vw, 15px); font-weight: 700; color: var(--color-text-muted); line-height: 190%; margin-bottom: 32px; }

.test-profile-wrap { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 16px; }
.test-profile .name { font-size: 18px; font-weight: 900; margin-bottom: 4px; }
.test-profile .meta { font-size: 12px; font-weight: 700; color: var(--color-text-light); }
.test-content-col .tags { display: flex; gap: 8px; flex-wrap: wrap; }
.test-content-col .tag { background: var(--color-gray-100); border-radius: 6px; padding: 6px 12px; font-size: 11px; font-weight: 900; color: var(--color-text-muted); letter-spacing: 1px; }

/* ============ SECTION: Support ============ */
.sec-support { background: var(--color-bg); padding: clamp(60px, 8vw, 120px) 0; }
.sup-top { text-align: center; margin-bottom: clamp(40px, 6vw, 80px); padding: 0 16px; }
.sup-top .sup-label { font-size: 11px; font-weight: 900; letter-spacing: 2px; text-transform: uppercase; color: var(--color-primary); margin-bottom: 12px; }
.sup-top h2 { font-size: clamp(24px, 4vw, 40px); font-weight: 900; letter-spacing: -1px; line-height: 130%; }
.sup-top p { font-size: clamp(14px, 2.5vw, 15px); font-weight: 500; color: var(--color-text-light); line-height: 170%; max-width: 580px; margin: 16px auto 0; }

.support-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }

.support-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-card); padding: clamp(20px, 3vw, 32px); display: flex; flex-direction: column; position: relative; transition: box-shadow 400ms, transform 400ms; min-width: 0; word-break: break-word; }
.support-card:hover { box-shadow: 0 20px 48px -8px rgb(0 0 0 / 10%); transform: translateY(-8px); }
.support-card::before { content: ''; position: absolute; top: 0; left: 24px; right: 24px; height: 3px; border-radius: 0 0 2px 2px; }
.support-card:nth-child(1)::before, .support-card:nth-child(2)::before { background: var(--color-dark); }
.support-card:nth-child(3)::before { background: var(--color-blue); }
.support-card.blue-border { border-color: var(--color-blue-border); }

.support-card .card-header { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.support-card .card-initial { width: 48px; height: 48px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 900; color: var(--color-surface); flex-shrink: 0; }
.support-card .card-initial.dark { background: var(--color-dark); }
.support-card .card-initial.blue { background: var(--color-blue); }
.support-card .card-logo { height: 40px; width: auto; max-width: 100px; object-fit: contain; flex-shrink: 0; }

.support-card .role { font-size: 10px; font-weight: 900; letter-spacing: 1px; text-transform: uppercase; margin-bottom: 3px; }
.support-card .role.gray { color: var(--color-text-lighter); }
.support-card .role.blue { color: var(--color-blue); }
.support-card .company { font-size: 14px; font-weight: 900; line-height: 130%; }
.support-card p { font-size: 13px; font-weight: 500; color: var(--color-text-light); line-height: 170%; flex-grow: 1; }
.support-link-text { margin-top: 16px; font-size: 13px; font-weight: 900; color: var(--color-primary); display: flex; align-items: center; gap: 8px; transition: gap 300ms; }
.support-card:hover .support-link-text { gap: 12px; }
.support-link-text .fas { font-size: 11px; }

/* ============ SECTION: CTA ============ */
.sec-cta { position: relative; padding: clamp(40px, 8vw, 80px) 0; overflow: hidden; background: var(--color-surface); z-index: 1; }
.cta-header-wrap { display: flex; align-items: center; justify-content: center; gap: 24px; margin-bottom: 32px; padding: 0 16px;}
.cta-text-area { text-align: center; max-width: 700px; }

.cta-illust { width: 140px; height: 140px; flex-shrink: 0; display: none; }
@media (min-width: 1024px) { .cta-illust { display: block; width: 180px; height: 180px; } }

.cta-eyecatch { font-size: clamp(13px, 2vw, 15px); font-weight: 900; color: var(--color-primary); margin-bottom: 12px; display: flex; align-items: center; justify-content: center; gap: 12px; letter-spacing: 1px; }
.cta-eyecatch::before, .cta-eyecatch::after { content: ''; width: 20px; height: 2px; background: var(--color-primary); border-radius: 2px; }

.cta-title { font-size: clamp(24px, 4vw, 40px); font-weight: 900; line-height: 140%; margin-bottom: 24px; letter-spacing: -1px; }
.cta-title .hl { position: relative; display: inline-block; padding: 0 8px; z-index: 1; }
.cta-title .hl::before { content: '“'; position: absolute; top: -10px; left: -20px; font-size: clamp(40px, 6vw, 56px); color: var(--color-accent-yellow); font-family: Georgia, serif; z-index: -1; }
.cta-title .hl::after { content: '”'; position: absolute; bottom: -30px; right: -20px; font-size: clamp(40px, 6vw, 56px); color: var(--color-accent-yellow); font-family: Georgia, serif; z-index: -1; }

.cta-capsule { display: inline-block; background: var(--color-primary); color: var(--color-surface); font-size: clamp(14px, 2vw, 20px); font-weight: 900; padding: 10px 24px; border-radius: var(--radius-full); margin-bottom: 24px; box-shadow: 0 8px 16px rgb(49 165 74 / 25%); letter-spacing: 1px; }
.cta-lead { font-size: clamp(13px, 2vw, 14px); font-weight: 700; color: var(--color-text-muted); line-height: 180%; }

.cta-card { background: var(--color-surface); border-radius: var(--radius-lg); padding: clamp(24px, 5vw, 48px) 16px; max-width: 860px; margin: 0 auto; box-shadow: 0 24px 64px -12px rgb(0 0 0 / 10%); text-align: center; border: 1px solid var(--color-border); }
.cta-card-title { font-size: clamp(16px, 3vw, 22px); font-weight: 900; margin-bottom: 20px; letter-spacing: 1px; }
.cta-card-divider { width: 100%; height: 1px; background: var(--color-border); margin: 0 auto 24px; }
.cta-card-text { font-size: clamp(16px, 3vw, 24px); font-weight: 900; line-height: 160%; margin-bottom: 16px; letter-spacing: -1px; }
.cta-card-text .strong { color: var(--color-primary-dark); }
.cta-card-text .hl-text { color: var(--color-accent); background: linear-gradient(transparent 60%, var(--color-accent-yellow) 60%); padding: 0 4px; }
.cta-card-note { font-size: 12px; font-weight: 700; color: var(--color-text-light); letter-spacing: 1px; margin-bottom: 32px; }

.btn-cta-main { background: var(--color-accent); color: var(--color-surface); padding: 16px 32px; border-radius: var(--radius-md); font-size: clamp(16px, 2vw, 18px); font-weight: 900; display: inline-flex; align-items: center; justify-content: center; gap: 12px; box-shadow: 0 8px 24px rgb(238 29 70 / 25%); transition: transform 250ms, box-shadow 250ms; width: 100%; max-width: 320px; }
.btn-cta-main:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgb(238 29 70 / 35%); }

/* ============ SECTION: Form ============ */
.sec-form { background: var(--color-primary); padding: clamp(40px, 8vw, 80px) 0; }
.sec-form > .container { text-align: center; }
.sec-form .badge { display: inline-flex; align-items: center; background: var(--color-accent-yellow); color: var(--color-primary-dark); font-size: 12px; font-weight: 900; padding: 6px 16px; border-radius: var(--radius-full); margin: 0 auto 16px; box-shadow: 0 4px 6px rgb(0 0 0 / 10%); }
.sec-form .heading { text-align: center; font-size: clamp(24px, 5vw, 36px); font-weight: 900; color: var(--color-surface); line-height: 120%; margin-bottom: 16px; padding: 0 16px; }
.sec-form .sub-text { text-align: center; font-size: clamp(14px, 2.5vw, 16px); color: rgb(255 255 255 / 90%); line-height: 160%; margin-bottom: 32px; padding: 0 16px; }

.form-card { background: var(--color-surface); border-radius: var(--radius-lg); padding: clamp(24px, 5vw, 48px); max-width: 768px; margin: 0 auto; box-shadow: 0 20px 40px -12px rgb(0 0 0 / 25%); }

.form-group { margin-bottom: 20px; }
label.field-label { display: block; font-size: 14px; font-weight: 700; color: var(--color-text-muted); margin-bottom: 8px; }
label.field-label .req { color: var(--color-required); }
input[type="text"], input[type="email"], input[type="tel"], select, textarea { width: 100%; background: var(--color-bg); border: 1px solid var(--color-border-light); border-radius: var(--radius-sm); padding: 14px 16px; font-size: 16px; font-family: inherit; color: var(--color-text); outline: none; transition: border-color 200ms; }
input:focus, select:focus, textarea:focus { border-color: var(--color-blue); }
input::placeholder, textarea::placeholder { color: var(--color-text-lighter); }
textarea { resize: vertical; min-height: 120px; }

.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 480px) { .form-row { grid-template-columns: 1fr; gap: 12px; } }

.radio-group { display: flex; gap: 12px; flex-wrap: wrap; }
.radio-option { flex: 1; min-width: 200px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); padding: 12px 16px; display: flex; align-items: center; gap: 10px; cursor: pointer; transition: border-color 200ms; }
@media (max-width: 480px) { .radio-option { min-width: 100%; } }
.radio-option:has(input:checked) { border-color: var(--color-blue); }
.radio-option input[type="radio"] { width: 20px; height: 20px; accent-color: var(--color-blue); flex-shrink: 0; }
.radio-option span { font-size: 15px; font-weight: 700; color: var(--color-dark); }

.terms-box { background: var(--color-bg); border: 1px solid var(--color-border-light); border-radius: var(--radius-sm); padding: 16px; max-height: 180px; overflow-y: auto; margin-bottom: 12px; }
.terms-box .terms-title { font-size: 13px; font-weight: 700; color: var(--color-text-muted); margin-bottom: 8px; line-height: 140%; }
.terms-box ul { list-style: disc; padding-left: 20px; display: flex; flex-direction: column; gap: 8px; }
.terms-box ul li { font-size: 13px; color: var(--color-text-muted); line-height: 150%; }

.checkbox-wrap { display: flex; align-items: center; gap: 10px; cursor: pointer; }
.checkbox-wrap input[type="checkbox"] { width: 20px; height: 20px; border-radius: 4px; accent-color: var(--color-text); flex-shrink: 0; }
.checkbox-wrap span { font-size: 14px; font-weight: 700; color: var(--color-text-muted); }

.btn-submit { width: 100%; background: var(--color-text); color: var(--color-surface); padding: 16px; border-radius: var(--radius-md); font-size: 18px; font-weight: 700; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 10px; transition: background 200ms; margin-top: 24px; }
.btn-submit:hover { background: var(--color-dark); }

.form-privacy { text-align: center; font-size: 11px; color: var(--color-text-lighter); margin-top: 16px; display: flex; align-items: center; justify-content: center; gap: 4px; }
.form-divider { border-top: 1px solid var(--color-border); margin: 32px 0; padding-top: 24px; text-align: center; }
.form-divider p { font-size: 13px; font-weight: 700; color: var(--color-text-muted); margin-bottom: 12px; }
.btn-shop { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; background: var(--color-bg); border: 1px solid var(--color-border-light); border-radius: var(--radius-sm); padding: 14px; font-size: 15px; font-weight: 700; color: var(--color-dark); transition: background 200ms; text-decoration: none; }
.btn-shop:hover { background: var(--color-gray-100); }
.btn-shop .fa-external-link-alt { font-size: 12px; color: var(--color-text-lighter); }
.form-postal { max-width: 220px; margin-bottom: 8px; }
.form-address { margin-bottom: 8px; }

/* ============ FOOTER ============ */
.site-footer { background-color: var(--color-footer-bg); padding: 64px 0 0; color: var(--color-text-muted); border-top: 1px solid var(--color-border); }
.footer-top { display: flex; justify-content: space-between; gap: 48px; padding-bottom: 48px; }
@media (max-width: 900px) { .footer-top { flex-direction: column; gap: 40px; } }
.footer-brand { max-width: 400px; }
.brand { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; }

.footer-brand p { font-size: 13px; line-height: 160%; color: var(--color-text-muted); }

.footer-links { display: flex; gap: 64px; }
@media (max-width: 480px) { .footer-links { flex-direction: column; gap: 32px; } }
.footer-links h4 { font-size: 14px; font-weight: 700; color: var(--color-darker); letter-spacing: 1px; text-transform: uppercase; margin-bottom: 16px; }
.company-item { margin-bottom: 12px; }
.company-item .role { font-size: 11px; color: var(--color-text-light); display: block; margin-bottom: 2px; }
.company-item .name { font-size: 13px; font-weight: 700; color: var(--color-text); }
.footer-links ul li { margin-bottom: 12px; }
.footer-links ul li a { font-size: 13px; color: var(--color-text-muted); transition: color 200ms; }
.footer-links ul li a:hover { color: var(--color-primary); }

.footer-bottom { border-top: 1px solid var(--color-border-light); padding: 24px 0; display: flex; justify-content: space-between; font-size: 11px; color: var(--color-text-light); }
@media (max-width: 640px) { .footer-bottom { flex-direction: column; gap: 8px; text-align: center; } }

/* ============ SECTION: Pricing (お試し後の料金) ============ */
.sec-pricing { background: var(--color-bg); padding: clamp(40px, 8vw, 80px) 0; }
.pricing-header { text-align: center; margin-bottom: 32px; padding: 0 16px; }
.pricing-header h3 { font-size: clamp(20px, 4vw, 28px); font-weight: 900; margin-bottom: 12px; letter-spacing: -1px; }
.pricing-header p { font-size: clamp(13px, 2vw, 15px); font-weight: 700; color: var(--color-text-muted); line-height: 170%; }
.pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 24px; max-width: 860px; margin: 0 auto; padding: 0 16px; }
.pricing-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: clamp(24px, 4vw, 32px); box-shadow: 0 8px 24px rgb(0 0 0 / 4%); }
.pricing-card h4 { font-size: 18px; font-weight: 900; color: var(--color-darker); margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }
.pricing-card p.desc { font-size: 13px; font-weight: 700; color: var(--color-text-muted); margin-bottom: 24px; line-height: 160%; }
.pricing-block { margin-bottom: 20px; }
.pricing-block.last { margin-bottom: 0; border-top: 1px dashed var(--color-border); padding-top: 20px; }
.pricing-label { font-size: 12px; font-weight: 900; color: var(--color-text-light); margin-bottom: 4px; }
.pricing-val { font-size: clamp(24px, 4vw, 32px); font-weight: 900; color: var(--color-darker); display: flex; align-items: baseline; gap: 4px; letter-spacing: -1px; }
.pricing-val small { font-size: 14px; font-weight: 700; letter-spacing: 0; }
.pricing-val.primary { color: var(--color-primary); font-size: clamp(20px, 3vw, 28px); }
.pricing-note { font-size: 12px; font-weight: 500; color: var(--color-text-light); margin-top: 8px; line-height: 160%; }
.pricing-footer-note { text-align: center; font-size: 12px; font-weight: 700; color: var(--color-text-light); margin-top: 24px; padding: 0 16px; }
@media (max-width: 640px) { .pricing-grid { grid-template-columns: 1fr; } }

/* ============ Responsive: Tablet (1200px) — iPad Pro 11横(1194px)もカバー ============ */
@media (max-width: 1200px) {
  /* グローバル */
  body { word-break: normal; overflow-wrap: anywhere; }
  h1, h2, h3, h4, h5, h6 { max-width: 100%; box-sizing: border-box; overflow-wrap: anywhere; }

  /* Hero - テキストはみ出し防止 */
  .hero-sub, .hero-title, .hero-desc, .hero-info-pill, .hero-badge {
    word-break: normal; overflow-wrap: anywhere; white-space: normal;
  }
  .hero-right { min-width: 0; width: 100%; max-width: 100%; }
  .campaign-banner-group, .cta-group { width: 100%; max-width: 100%; box-sizing: border-box; }
  .btn-secondary, .btn-cta-slim, .btn-cta-main, .campaign-badge, .test-content-col .tag {
    white-space: normal; text-align: center; height: auto;
  }

  /* Solution */
  .sol-content { width: 60%; padding: 24px; }
  .sol-content h3 { font-size: clamp(24px, 4vw, 36px); }

  /* Comparison */
  .comp-headers { gap: 24px; }
  .comp-img-box { width: 180px; height: 180px; margin-bottom: 24px; }
  .comp-item .row-val { font-size: clamp(20px, 2.5vw, 24px); }
  .comp-item.new .row-val { font-size: clamp(24px, 3vw, 32px); }

  /* Testimonial */
  .test-content-col { padding: 32px; }
  .test-stat-huge { font-size: clamp(40px, 5vw, 56px); }
  .test-content-col h3 { font-size: clamp(18px, 2.5vw, 24px); }

  /* Testimonial - iOS背景固定バグ回避 */
  .sec-testimonial { background-attachment: scroll; }
}

/* ============ Responsive: Tablet AI Section (1025px-1200px) ============ */
@media (max-width: 1200px) and (min-width: 1025px) {
  .ai-zz-item, .ai-zz-item.reverse { align-items: center; }
  .ai-zz-img { width: 50%; max-height: 400px; }
  .ai-zz-content { width: 55%; margin: 0; padding: 32px; }
  .ai-zz-content.right { margin-left: -5%; z-index: 1; }
  .ai-zz-content.left { margin-right: -5%; z-index: 1; }
  .ai-zz-content p.desc { margin-bottom: 16px; }
}

/* ============ Responsive: Tablet (1024px) — iPad Pro 12.9縦(1024px)等で横スクロールに変換 ============ */
@media (max-width: 1024px) {
  .proven-grid, .support-grid {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    margin-left: -32px;
    margin-right: -32px;
    padding-left: 32px;
    padding-right: 32px;
    padding-bottom: 24px;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  .proven-grid::-webkit-scrollbar, .support-grid::-webkit-scrollbar { display: none; }
  .proven-item, .support-card { flex: 0 0 75%; max-width: 400px; scroll-snap-align: center; }
  .proven-item:last-child { max-width: 400px; margin: 0; }
}

/* ============ Responsive: Mobile (768px) ============ */
@media (max-width: 768px) {
  /* グローバル - テキストはみ出し防止 */
  body { word-break: normal; overflow-wrap: anywhere; }
  h1, h2, h3, h4, h5, h6 { max-width: 100%; box-sizing: border-box; overflow-wrap: anywhere; }
  .btn-secondary, .btn-cta-slim, .btn-cta-main, .campaign-badge, .test-content-col .tag {
    white-space: normal; text-align: center; height: auto;
  }

  /* Hero - テキストはみ出し防止 */
  .hero-right, .hero-sub, .hero-title, .hero-desc, .hero-info-pill {
    word-break: normal; overflow-wrap: anywhere; white-space: normal;
  }
  .hero-right { width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden; }
  .campaign-banner-group, .hero-info-pill, .cta-group { width: 100%; max-width: 100%; box-sizing: border-box; }
  .hero-title { font-size: clamp(32px, 8vw, 44px); }

  /* Hero - バッジの縦並び */
  .hero-badges { margin-top: 16px; flex-direction: column; align-items: stretch; gap: 12px; }
  .hero-badge {
    width: 100%; justify-content: flex-start;
    padding: 12px 24px 12px 16px; font-size: clamp(14px, 2.5vw, 18px);
    box-shadow: 0 4px 8px rgb(0 0 0 / 15%); white-space: normal;
    text-align: left; gap: 12px;
  }

  /* Solution */
  .sol-container { padding: 0 16px; }
  .sol-text-col { height: auto; min-height: 380px; }
  .sol-content { width: 100%; padding: 24px 0; text-align: center; align-items: stretch; }
  .sol-content-inner { width: 100%; max-width: 100%; }
  .sol-step-num { font-size: 80px; top: -20px; left: 0; right: 0; text-align: center; opacity: 0.2; }
  .sol-content h3 { font-size: 24px; margin-bottom: 16px; }
  .sol-content p { font-size: 14px; line-height: 160%; }

  /* Comparison */
  .comp-content { padding: 0 12px; }
  .comp-row-wrap { gap: 12px; }
  .comp-img-box { width: 120px; height: 120px; margin-left: auto; margin-right: auto; margin-bottom: 12px; }
  .comp-item { padding: 24px 10px; overflow: hidden; word-break: break-word; }
  .comp-item.old { box-shadow: 0 8px 24px rgb(0 0 0 / 4%); }
  .comp-item.new .row-val { font-size: 24px; }
  .comp-vs-circle { display: none; }

  /* AI */
  .ai-zz-item, .ai-zz-item.reverse { gap: 0; }
  .ai-zz-img { width: 100%; padding: 8px; }
  .ai-zz-content { width: 100%; margin: -20px auto 0; padding: 40px 16px 24px; }
  .ai-zz-header { flex-direction: column; align-items: flex-start; gap: 8px; }
  .ai-zz-num { font-size: 32px; }

  /* Device */
  .device-img { min-height: 240px; }
  .device-features { padding: 24px 16px; }

  /* Form */
  .form-card { margin: 0 16px; }

  /* 横スクロールカードの余白調整 */
  .proven-grid, .support-grid { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }
  .proven-item, .support-card { flex: 0 0 85%; max-width: 360px; }
}

/* ============ Responsive: Small Mobile (640px) ============ */
@media (max-width: 640px) {
  .comp-row-wrap { gap: 8px; }
  .comp-img-box { width: 100px; height: 100px; margin-bottom: 8px; }
  .comp-item { padding: 20px 8px; }
  .comp-item .row-label { font-size: 10px; padding: 4px 12px; margin-bottom: 16px; }
  .comp-item .row-val { font-size: 16px; }
  .comp-item.new .row-val { font-size: 20px; }
  .comp-item .row-sub { font-size: 11px; }

  .proven-item { padding-top: 32px; }
  .proven-illust { margin-top: -32px; }
  .proven-metrics .metric-big { font-size: 64px; }
}

/* ============ Responsive: Small Mobile (480px) — 横スクロール余白調整 ============ */
@media (max-width: 480px) {
  .proven-grid, .support-grid { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; }
  .proven-item, .support-card { flex: 0 0 90%; }
}
