/* =============================================
   Lime LP - 電動モビリティスペース
   ============================================= */

:root {
  --color-primary: #0fc554;
  --color-primary-dark: #008f5b;
  --color-primary-darker: #004d2a;
  --color-primary-light: #91e4b0;
  --color-primary-bg: #e8f8ed;
  --color-accent: #00dd00;
  --color-yellow-bg: #fff8e1;
  --color-yellow-border: #ffd54f;
  --color-text: #000;
  --color-text-light: #666;
  --color-white: #fff;
  --color-border: #ddd;
  --font-family: "Noto Sans JP", sans-serif;
  --header-height: min(13vw, 56px);
}

/* ---------- Reset ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
html {
  scroll-behavior: smooth;
  scroll-padding-top: var(--header-height);
}
body {
  font-family: var(--font-family);
  font-size: 15px;
  line-height: 1.8;
  color: var(--color-text);
  background: var(--color-white);
  -webkit-font-smoothing: antialiased;
}
img {
  max-width: 100%;
  height: auto;
  display: block;
  object-fit: contain;
}
a {
  color: inherit;
  text-decoration: none;
}
ul {
  list-style: none;
}
button,
input,
textarea,
select {
  font-family: inherit;
  font-size: inherit;
}

/* ---------- BR制御 ---------- */
.br-pc { display: none; }
@media (min-width: 768px) {
  .br-sp { display: none; }
  .br-pc { display: inline; }
}

/* ---------- Layout ---------- */
.section-inner {
  max-width: 960px;
  margin: 0 auto;
  padding: 48px 20px;
}
.section-title {
  text-align: center;
  margin-bottom: min(12vw, 100px);
}
.section-title img {
  width: min(95%, 460px);
  margin: 0 auto;
}

.section-title.thin img {
  width: min(75%, 460px);
}

.section-info {
  text-align: center;
  font-weight: 700;
  font-size: min(4vw, 18px);
  padding-bottom: min(6vw, 30px);
}

/* ========== HEADER ========== */
.header {
  position: fixed;
  max-width: 960px;
  margin: 0 auto;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: #ffffff;
  border-radius: 0 0 min(5vw,20px) min(5vw,20px);
  height: var(--header-height);
  box-shadow: 0 0 10px 0 rgba(0,0,0,0.2)
}
.header-inner {
  max-width: 100%;
  margin: 0 auto;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 min(1vw, 10px) 0 min(2vw, 20px);
}
.header-left {
  display: flex;
  align-items: center;
  gap: min(3vw, 20px);
}
.header-logo img {
  width: min(22vw, 100px);
  height: auto;
}
.header-catch {
  font-size: min(3vw, 14px);
  font-weight: 700;
  line-height: 1.4;
  color: var(--color-text);
  white-space: nowrap;
}
.header-btn {
  align-self: flex-start;
}
.header-btn img {
  height: min(17vw, 75px);
  width: auto;
  object-fit: contain;
  transition: filter 0.3s;
}
.header-btn:hover img {
  filter: brightness(0.98);
}

/* ========== FV ========== */
.fv {
  background: var(--color-primary);
  padding: var(--header-height) 0 0;
  overflow-x: clip;
  width: 100%;
  height: min(115vw, 654px);
}
.fv-inner {
  position: relative;
  width: min(100%, 960px);
  height: 100%;
  margin: 0 auto;
  text-align: center;
}

/* FVアニメーション（CSS only） */
@keyframes fv-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes fv-slide-up {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes fv-slide-right {
  from { opacity: 0; transform: translateX(40px); }
  to { opacity: 1; transform: translateX(0); }
}
.fv-balloon {
  animation: fv-fade-in 0.5s ease both 0.1s;
}
.fv-bike {
  animation: fv-slide-right 0.6s ease-out both 0.3s;
}
.fv-main-txt1 {
  animation: fv-slide-up 0.4s ease-out both 0.5s;
}
.fv-main-txt2 {
  animation: fv-slide-up 0.4s ease-out both 0.65s;
}
.fv-features {
  animation: fv-slide-up 0.4s ease-out both 0.8s;
}
.fv-sub {
  animation: fv-fade-in 0.4s ease both 0.95s;
}

/* FVバルーン */
.fv-balloon {
  position: absolute;
  background: url(../images/bg_fv_balloon.svg) no-repeat center center / contain;
  width: min(70vw, 520px);
  height: min(70vw, 520px);
  left: -31vw;
  top: -24vw;
}

/* FVテキスト画像 */
.fv-main-txt {
  display: flex;
  width: min(100%, 550px);
  position: absolute;
  z-index: 1;
  top: min(59vw, 360px);
  flex-direction: column;
  align-content: space-between;
  gap: min(1.5vw, 10px);
}
.fv-main-txt1 {
  width: min(80vw, 427px);
  align-self: flex-start;
}
.fv-main-txt2 {
  width: min(86vw, 456px);
  align-self: flex-end;
}
.fv-features {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: min(1.5vw, 10px);
  margin: 0 min(1.5vw, 10px) 0 0;
}
.fv-feature-img {
  width: min(20vw, 100px);
}
.fv-sub {
  position: absolute;
  right: -16vw;
  bottom: 10vw;
}
.fv-sub-img {
  width: min(51vw, 320px);
}

/* FVバイク画像 */
.fv-bike {
  position: absolute;
  top: 5vw;
  right: -31.5vw;
}
.fv-bike-img {
  width: min(100vw, 750px);
  margin: 0 auto;
}

/* FV CTA */
.fv-cta {
  text-align: center;
  background-color: var(--color-white);
  padding: min(16vw, 100px) min(4vw, 30px) min(9vw, 70px);
}
.fv-cta-btn {
  display: inline-block;
  transition: transform 0.3s;
}
.fv-cta-btn:hover {
  transform: scale(1.05);
}
.fv-cta-btn img {
  width: min(95%, 460px);
  margin: 0 auto;
  animation: pulse-scale 2s ease-in-out infinite;
}
.fv-cta-prompt {
  font-size: min(4vw, 20px);
  font-weight: 700;
}
.fv-cta-point {
  font-size: min(5.2vw, 30px);
  font-weight: 700;
  padding-bottom: min(6vw, 40px)
}
.fv-zero-num {
  font-size: min(8vw, 42px);
  padding: 0 .1em;
}

/* ========== WORRIES ========== */
.worries {
  background: #209e8e;
  position: relative;
  overflow: hidden;
}
.worries::before {
  content: "";
  position: absolute;
  top: 0;
  left: 50%;
  transform: translate(-50%, -10%);
  width: min(130%, 1200px);
  aspect-ratio: 1150 / 779;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1150' height='779' viewBox='0 0 1150 779'%3E%3Cpath fill-rule='evenodd' opacity='.102' fill='%23000' d='M1.097,194.679 C-9.342,162.457 56.893,176.340 91.587,153.577 C126.282,130.811 108.809,118.160 143.505,95.396 C178.205,72.627 195.677,85.282 230.377,62.516 C265.077,39.747 241.510,9.624 288.172,2.146 C356.115,-8.742 358.615,25.437 427.803,31.558 C496.988,37.679 500.214,20.352 569.400,26.473 C638.594,32.594 635.369,49.920 704.563,56.040 C773.758,62.162 788.260,29.914 850.345,51.847 C901.976,70.083 871.048,96.257 907.404,127.422 C943.759,158.584 963.508,147.638 999.863,178.801 C1036.223,209.968 1016.474,220.914 1052.834,252.081 C1089.194,283.250 1125.157,268.623 1147.154,305.631 C1161.035,328.984 1119.917,333.415 1117.038,358.574 C1114.158,383.734 1139.422,385.109 1136.542,410.267 C1133.662,435.429 1108.398,434.055 1105.518,459.220 C1102.638,484.380 1135.262,488.668 1124.502,512.797 C1115.612,532.733 1085.490,523.171 1069.293,540.786 C1053.095,558.404 1074.500,567.753 1058.302,585.371 C1042.102,602.989 1020.696,593.637 1004.496,611.256 C988.296,628.874 1014.984,646.786 989.864,658.419 C941.593,680.773 924.098,657.947 870.103,672.834 C816.111,687.721 825.523,703.941 771.530,718.828 C717.530,733.715 708.118,717.497 654.118,732.384 C600.118,747.275 609.182,778.355 551.030,779.006 C490.816,779.682 498.115,748.377 441.241,734.732 C384.369,721.086 376.038,737.583 319.166,723.936 C262.285,710.288 270.617,693.790 213.737,680.142 C156.857,666.493 128.991,696.825 86.774,667.218 C53.271,643.722 99.507,627.107 90.748,594.721 C81.988,562.334 57.075,565.535 48.315,533.151 C39.554,500.760 64.467,497.558 55.706,465.166 C46.945,432.776 -0.964,430.682 13.665,399.313 C27.193,370.306 67.317,388.465 100.553,368.378 C133.790,348.288 117.082,335.153 150.319,315.065 C183.560,294.975 200.268,308.107 233.510,288.017 C266.752,267.923 245.919,244.701 286.848,233.179 C328.692,221.398 337.548,248.016 382.657,246.051 C427.765,244.084 426.166,226.650 471.274,224.683 C516.388,222.717 517.987,240.151 563.101,238.184 C608.215,236.219 614.136,206.911 656.754,217.301 C689.145,225.196 664.582,249.373 686.417,267.655 C708.254,285.941 727.820,274.840 749.656,293.124 C771.496,311.412 751.930,322.513 773.769,340.802 C795.608,359.089 830.224,346.663 839.438,369.485 C845.795,385.226 807.084,384.092 798.813,399.405 C790.541,414.721 814.291,420.815 806.019,436.130 C797.746,451.448 773.996,445.352 765.723,460.668 C757.449,475.985 785.375,486.457 771.214,499.566 C756.207,513.459 733.450,498.137 713.653,508.806 C693.856,519.475 709.465,533.237 689.667,543.906 C669.867,554.576 654.257,540.815 634.457,551.486 C614.657,562.155 629.677,585.150 604.962,588.296 C577.576,591.784 578.777,566.526 551.781,561.812 C524.785,557.097 518.561,574.031 491.564,569.318 C464.563,564.602 470.787,547.669 443.786,542.953 C416.786,538.240 396.269,562.018 377.367,547.918 C364.974,538.672 403.269,531.800 407.545,519.561 C411.820,507.326 387.182,503.236 391.458,491.003 C395.736,478.759 420.373,482.851 424.651,470.609 C428.929,458.366 399.028,446.871 411.890,437.928 C427.524,427.058 446.091,447.046 466.956,441.806 C487.822,436.565 479.146,420.151 500.012,414.911 C520.881,409.670 529.557,426.084 550.425,420.843 C571.294,415.603 583.180,384.823 597.507,396.520 C611.924,408.290 565.971,411.464 555.227,424.971 C544.483,438.479 566.705,446.877 555.960,460.386 C545.215,473.898 522.993,465.500 512.247,479.012 C501.501,492.522 499.261,492.611 512.200,505.175 C525.379,517.973 526.076,516.873 548.656,514.856 C571.237,512.836 567.978,495.513 590.559,493.493 C613.143,491.474 616.403,508.797 638.987,506.781 C661.571,504.758 660.249,503.402 671.512,489.761 C685.956,472.264 690.549,472.846 686.052,452.955 C681.555,433.064 656.515,435.752 652.018,415.864 C647.520,395.968 672.560,393.279 668.063,373.386 C663.565,353.492 664.009,353.296 639.593,342.246 C612.173,329.835 612.297,329.454 579.816,332.612 C547.334,335.767 550.873,353.065 518.391,356.222 C485.904,359.381 482.365,342.085 449.878,345.242 C417.391,348.401 421.837,359.720 391.476,368.289 C366.745,375.273 358.037,365.306 337.521,377.111 C317.003,388.914 333.242,402.324 312.724,414.129 C292.204,425.934 275.965,412.525 255.445,424.331 C234.924,436.135 242.518,439.622 234.630,457.225 C226.969,474.324 217.960,474.311 225.519,491.430 C233.078,508.550 257.322,503.464 264.881,520.584 C272.442,537.707 248.197,542.794 255.757,559.915 C263.317,577.037 272.395,573.092 291.553,585.173 C317.135,601.304 311.234,608.009 343.808,616.199 C376.384,624.385 385.066,607.974 417.642,616.164 C450.223,624.351 441.541,640.763 474.122,648.952 C506.703,657.142 508.768,648.733 543.444,648.390 C588.364,647.950 590.295,656.555 633.310,647.624 C676.324,638.692 669.014,621.964 712.028,613.031 C755.048,604.099 762.359,620.824 805.379,611.892 C848.399,602.958 846.869,601.180 878.869,579.442 C910.635,557.862 913.176,558.931 926.494,529.591 C939.812,500.252 915.626,495.035 928.944,465.698 C942.264,436.354 966.450,441.570 979.770,412.228 C993.091,382.884 990.436,382.783 981.881,352.609 C972.945,321.088 975.482,320.287 946.685,295.039 C917.888,269.794 897.966,280.590 869.170,255.344 C840.370,230.094 860.292,219.298 831.492,194.048 C802.692,168.798 799.522,171.443 758.118,156.708 C708.896,139.191 710.452,135.705 655.455,131.130 C600.460,126.560 597.426,143.901 542.431,139.332 C487.428,134.760 490.462,117.416 435.460,112.841 C380.457,108.269 380.211,117.850 325.007,121.072 C283.699,123.484 280.674,114.243 241.866,124.293 C203.060,134.343 211.973,150.696 173.167,160.747 C134.355,170.798 119.168,149.904 84.253,165.318 C38.104,185.689 10.133,222.573 1.097,194.679Z'/%3E%3C/svg%3E") no-repeat top center / 100% auto;
  pointer-events: none;
  z-index: 0;
}
.worries .section-inner {
  position: relative;
  z-index: 1;
  padding-bottom: 0;
  margin-bottom: -15px;
}
#worries .section-title {
  margin-bottom: min(5vw, 40px);
}
.worries-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.worries-list li {
  background: var(--color-white);
  border-radius: 8px;
  padding: 16px 20px 16px 60px;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.6;
  position: relative;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.25s ease, transform 0.25s ease;
}
.worries-list li.is-checked {
  opacity: 1;
  transform: translateY(0);
}
.check-icon {
  position: absolute;
  left: 21px;
  top: 30px;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
  flex-shrink: 0;
}
.check-path {
  stroke-dasharray: 40;
  stroke-dashoffset: 40;
  transition: stroke-dashoffset 0.2s ease 0.25s;
}
.worries-list li.is-checked .check-path {
  stroke-dashoffset: 0;
}
.worries-arrow {
  text-align: center;
  margin-bottom: 8px;
}

/* ========== CTA BLOCK (共通) ========== */
.cta-block {
  padding: 0 min(6vw, 50px) min(14vw, 100px);
}
.cta-block-inner {
  max-width: 600px;
  margin: 0 auto;
  text-align: center;
}
.cta-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-bottom: -27px;
}
.cta-txt-img {
  flex: 1;
  min-width: 0;
  position: relative;
  padding: 20px 0;
}
.cta-txt-img::before,
.cta-txt-img::after {
  content: "";
  display: block;
  width: 100%;
  height: 2px;
  background: var(--color-white);
  margin: 0 auto;
}
.cta-txt-img::before {
  margin-bottom: 30px;
  transform: rotate(5deg);
}
.cta-txt-img::after {
  margin-top: 20px;
  transform: rotate(-5deg);
}
.cta-txt-img img {
  max-width: 100%;
  margin: 0 auto;
}
.cta-woman {
  position: relative;
  flex-shrink: 0;
}
.cta-woman img {
  width: min(25vw, 160px);
}
.cta-btn-img {
  display: inline-block;
  transition: transform 0.3s;
}
.cta-btn-img:hover {
  transform: scale(1.05);
}
.cta-btn-img img {
 width: min(100%, 460px);
  margin: 0 auto;
  animation: pulse-scale 2s ease-in-out infinite;
}
.cta-mail-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  width: fit-content;
  margin: min(8vw, 30px) auto 0;
  padding: 10px 32px 10px 24px;
  background: var(--color-white);
  color: var(--color-primary-dark);
  font-size: 16px;
  font-weight: 700;
  border: 2px solid var(--color-primary-dark);
  border-radius: 50px;
  text-align: center;
  transition: background 0.3s, color 0.3s;
}
.cta-mail-btn::before {
  content: "";
  display: inline-block;
  width: 18px;
  height: 14px;
  flex-shrink: 0;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16' fill='none'%3E%3Crect x='1' y='1' width='18' height='14' rx='2' stroke='%23008f5b' stroke-width='1.5'/%3E%3Cpath d='M1 3l9 5 9-5' stroke='%23008f5b' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
}
.cta-mail-btn:hover {
  background: var(--color-primary-dark);
  color: var(--color-white);
}
.cta-mail-btn:hover::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16' fill='none'%3E%3Crect x='1' y='1' width='18' height='14' rx='2' stroke='%23fff' stroke-width='1.5'/%3E%3Cpath d='M1 3l9 5 9-5' stroke='%23fff' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E");
}
@keyframes pulse-scale {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.06); }
}

/* ---------- マーカー ---------- */
.marker {
  background: linear-gradient(transparent 60%, #f3ff3a 60%);
  background-size: 0% 100%;
  background-repeat: no-repeat;
  transition: background-size 0.6s ease;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
.marker.is-drawn {
  background-size: 100% 100%;
}

/* CTA worries */
.cta-worries {
  position: relative;
  z-index: 1;
}

/* CTA about */
.cta-about {
  background: var(--color-primary);
}

/* ========== ABOUT ========== */
.about {
  background: var(--color-primary);
  position: relative;
  overflow: hidden;
  margin-bottom: -30px;
}
.about .section-title {
  position: relative;
  z-index: 1;
}
.about .section-title::before,
.about .section-title::after {
  content: "";
  position: absolute;
  background: url("../images/bg_about.svg") no-repeat center / contain;
  z-index: -1;
}
.about .section-title::before {
  top: -20px;
  right: -40px;
  transform: translateY(-50%);
  width: min(45vw, 320px);
  height: min(45vw, 320px);
  transform: rotate(21deg);
}
.about .section-title::after {
  top: 0;
  left: -40px;
  width: min(30vw, 200px);
  height: min(30vw, 200px);
  transform: rotate(-22deg);
}
.about .section-inner {
  position: relative;
  z-index: 1;
  padding-bottom: min(12vw, 80px);
}
.about-lead,
.about-lead-sub {
  position: relative;
  z-index: 1;
  width: min(100%, 640px);
  margin: 0 auto;
  font-size: min(3.5vw, 18px);
  font-weight: 700;
  color: var(--color-white);
  line-height: 2;
  letter-spacing: .11em;
  margin-bottom: 32px;
  padding: 0 10px;
}
.about-lead-sub {
  font-size: min(5.4vw, 20px);
  text-align: center;
}
.about-free {
  text-align: center;
  margin-bottom: 32px;
  opacity: 0;
  transform: scale(0.7);
  transition: opacity 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.about-free.is-visible {
  opacity: 1;
  transform: scale(1);
}
.about-free img {
  margin: 0 auto;
}
.about-howto-grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  margin-bottom: 24px;
}
.about-howto-item {
  position: relative;
  border-radius: 8px;
  background: var(--color-white);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  padding-top: 26px;
  margin-top: 16px;
  text-align: center;
}
.howto-num {
  position: absolute;
  top: -16px;
  left: 50%;
  transform: translateX(-50%);
  width: 32px;
  height: 32px;
  background: #000;
  color: var(--color-white);
  font-size: min(6vw, 20px);
  font-weight: 900;
  line-height: 32px;
  text-align: center;
  border-radius: 50%;
  z-index: 1;
}
.about-howto-item img {
  width: 100%;
  height: auto;
}
.howto-label {
  font-size: min(3.5vw, 18px);
  font-weight: 700;
  line-height: 1.5;
  padding: 8px 8px 12px;
  color: var(--color-text);
}
.howto-label small {
  font-size: min(2.8vw, 14px);
  font-weight: 500;
}
.about-info-img {
  margin-bottom: 16px;
}
.about-info-img.first {
  position: relative;
  margin-bottom: min(10vw, 80px);
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.about-info-img.first.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.about-info-img.first::before {
  position: absolute;
  content: "";
  width: min(110vw, 750px);
  height: min(80vw, 480px);
  background-color: var(--color-primary-dark);
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
}
.about-info-img img,
.about-free img {
  position: relative;
  width: min(98%, 600px);
  margin: 0 auto;
  padding-left: min(2vw, 10px);
}

.fixed-income {
  opacity: 0;
  transform: scale(0.7);
  transition: opacity 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) 0.2s, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) 0.2s;
}
.fixed-income.is-visible {
  opacity: 1;
  transform: scale(1);
}
.fixed-income img {
  width: min(90%, 520px);
  margin: 0 auto;
  padding-left: min(2vw, 10px);
}

.about-bottom {
  padding-top: min(23vw, 150px);
  padding-bottom: min(10vw, 80px);
  margin-top: -31vw;
  background-color: var(--color-primary-dark);
}

/* ========== MERIT ========== */
.merit {
  background: var(--color-white);
}
.merit-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: min(11vw, 90px) 16px;
}
.merit-card {
  position: relative;
  background: var(--color-white);
  border-radius: 12px;
  padding: min(14vw, 58px) 20px 24px 20px;
  border: solid 2px var(--color-primary);
  text-align: center;
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.4s ease, transform 0.4s ease;
}
.merit-card.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.merit-img {
  position: absolute;
  left: 50%;
  bottom: 75%;
  transform: translateX(-50%);
}
.merit-img img {
  margin: 0 auto;
  border-radius: 8px;
}
.merit-title {
  font-size: min(5vw, 25px);
  line-height: 1.4;
  font-weight: 900;
  margin-bottom: 8px;
}
.num-accent {
  font-size: 28px;
  color: var(--color-primary);
}
.merit-desc {
  font-size: 14px;
  line-height: 1.5;
  text-align: left;
}

/* ========== VOICE ========== */
.voice {
  background: #f4fbf7;
}
.voice .section-title {
  margin-bottom: min(4vw, 30px);
}
.voice-list {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.voice-card {
  position: relative;
  background: var(--color-white);
  border: 2px solid var(--color-primary-light);
  border-radius: 12px;
  padding: 24px 20px;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.35s ease, transform 0.35s ease;
}
.voice-quote-icon {
  position: absolute;
  right: 20px;
  opacity: .3;
}
.voice-quote-icon img {
  width: 32px;
  height: auto;
}
.voice-text {
  position: relative;
  font-size: 16px;
  line-height: 1.8;
  padding-top: 12px;
  padding-bottom: 12px;
  margin-bottom: 12px;
  border-bottom: 1px solid var(--color-border);
}
.voice-area {
  font-size: 13px;
}
.voice-author {
  font-size: 14px;
  font-weight: 700;
  text-align: left;
}
.voice-progress {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-primary);
  text-align: right;
}

/* ========== FLOW ========== */
.flow {
  width: 100%;
  overflow-x: hidden;
  background: #2193ab;
}
.flow .section-inner {
  max-width: 520px;
}
.flow-heading {
  text-align: center;
  font-size: min(6vw, 26px);
  font-weight: 900;
  color: var(--color-white);
  margin-bottom: 4px;
}
.flow-sub {
  text-align: center;
  font-size: min(3.5vw, 15px);
  color: rgba(255,255,255,0.7);
  margin-bottom: 40px;
}
.flow-timeline {
  display: flex;
  flex-direction: column;
  gap: min(2vw, 50px);  
  position: relative;
  padding-left: 40%;
}
.flow-timeline::before {
  content: "";
  position: absolute;
  left: 11%;
  top: 0;
  bottom: 0;
  width: 2px;
  border-left: 5px solid #89e8fd;
}
.flow-step {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 0;
  padding-bottom: 36px;
}
.flow-step:last-child {
  padding-bottom: 0;
}
.flow-img {
  position: absolute;
  left: -79%;
  top: 0;
  width: min(35vw, 200px);
  height: min(35vw, 200px);
  filter: drop-shadow(2px 5px 10px rgba(0,0,0,0.2));
}
.flow-img img {
  width: min(35vw, 200px);
  height: min(35vw, 200px);
  border-radius: 50%;
  object-fit: cover;
}
.flow-step-body {
  flex: 1;
}
.flow-label {
  display: inline-block;
  font-size: min(4vw, 20px);
  font-weight: 700;
  color: #89e8fd;
  letter-spacing: 0.05em;
  margin-bottom: 4px;
  margin-left: -1.5em;
}
.flow-step-title {
  position: relative;
  font-size: min(5vw, 20px);
  font-weight: 700;
  color: var(--color-white);
  margin-bottom: 6px;
  letter-spacing: .1em;
  line-height: 1.4;
  background-color: #083039;
  padding: min(2vw,13px) min(2vw,15px) min(2vw,15px) min(8vw,30px);
  border-radius: 50vw;
  width: 141%;
  margin-left: -19%;
}

.flow-step-desc {
  font-size: min(3.8vw, 18px);
  color: var(--color-white);
  line-height: 1.7;
}

/* ========== CTA LAST ========== */
.cta-last-content {
  max-width: 600px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  flex-direction: column;
}
.cta-last-woman {
  flex-shrink: 0;
}
.cta-last-woman img {
  max-width: min(50%, 320px);
  width: auto;
  margin: 0 auto;
}
.cta-last-right {
  flex-shrink: 0;
}
.cta-last-btn {
  display: inline-block;
  transition: transform 0.3s;
}
.cta-last-btn:hover {
  transform: scale(1.05);
}
.cta-last-btn img {
  max-width: min(100%, 450px);
}

.cta-last-bottom {
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* ========== FAQ ========== */
.faq {
  background: var(--color-primary);
}
.faq-title {
  text-align: center;
  font-size: min(6vw, 28px);
  font-weight: 900;
  color: var(--color-white);
  margin-bottom: 32px;
}
.faq-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.faq-item {
  background: var(--color-white);
  border-radius: 8px;
  overflow: hidden;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.35s ease, transform 0.35s ease;
}
.voice-card.is-visible,
.faq-item.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.faq-question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 20px;
  font-size: 18px;
  font-weight: 700;
  cursor: pointer;
  list-style: none;
}
.faq-question::-webkit-details-marker {
  display: none;
}
.faq-question::after {
  content: "";
  flex-shrink: 0;
  width: 10px;
  height: 10px;
  border-right: 2px solid var(--color-primary);
  border-bottom: 2px solid var(--color-primary);
  transform: translateY(-25%) rotate(45deg);
  transition: transform 0.3s;
}
details[open] .faq-question {
  background-color: #edfff4;
}
details[open] .faq-question::after {
  transform: translateY(25%) rotate(-135deg);
}
.faq-answer {
  padding: 20px;
  font-size: 16px;
  line-height: 1.8;
}

/* ========== FORM ========== */
.form-section {
  background: #e7e5de;
}
.form-section .section-inner {
  padding-bottom: 60px;
}
.form-lead {
  width: min(100%, 640px);
  margin: 0 auto;
  font-size: min(3.5vw, 16px);
  line-height: 1.9;
  margin-bottom: min(8vw, 60px);
}
.contact-form {
  max-width: 480px;
  margin: 0 auto;
}
.form-group {
  margin-bottom: 20px;
}
.form-group label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 6px;
  border-left: solid 6px #209e8e;
  padding-left: 10px;
  margin: 30px 6px 10px;
}
.form-required,
.form-optional {
  font-size: 11px;
  padding: 1px 8px;
  border-radius: 3px;
  font-weight: 500;
}
.form-required {
  background: #e53935;
  color: var(--color-white);
}
.form-optional {
  background: #9e9e9e;
  color: var(--color-white);
}
.form-group input,
.form-group textarea,
.form-group select {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid #737373;
  border-radius: 8px;
  font-size: 18px;
  transition: border-color 0.3s;
  background: #fafafa;
  appearance: none;
}
.form-group select {
  background: #fafafa url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23666' stroke-width='1.5' fill='none'/%3E%3C/svg%3E") no-repeat right 14px center;
  padding-right: 36px;
  cursor: pointer;
  color: #000;
  -webkit-text-fill-color: #000;
}
.form-group input:focus,
.form-group textarea:focus,
.form-group select:focus {
  outline: none;
  border-color: var(--color-primary);
  background-color: var(--color-white);
}
.form-group textarea {
  resize: vertical;
}
.form-zip-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.form-zip-prefix {
  font-size: 16px;
  font-weight: 700;
  flex-shrink: 0;
}
.form-zip-input {
  width: 140px !important;
  flex-shrink: 0;
}
.zip-search-btn {
  flex-shrink: 0;
  padding: 10px 16px;
  background: var(--color-primary);
  color: var(--color-white);
  font-size: 16px;
  font-weight: 700;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: opacity 0.3s;
  white-space: nowrap;
}
.zip-search-btn:hover {
  opacity: 0.85;
}
.form-turnstile {
  display: flex;
  justify-content: center;
  margin-bottom: 20px;
}
.form-privacy {
  margin-bottom: 24px;
  background: #fff8c4;
  border-radius: 10px;
  padding: 20px 20px 20px 24px;
  border-left: solid 5px #209e8e;
}
.privacy-label {
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: min(4.2vw, 18px);
  font-weight: 700;
  line-height: 1.6;
  cursor: pointer;
}
.privacy-label input[type="checkbox"] {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  accent-color: #209e8e;
  border-radius: 4px;
}
.privacy-label a {
  color: #209e8e;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.form-submit {
  text-align: center;
}
.submit-btn {
  display: inline-block;
  background: linear-gradient(0deg, #f23300 0%, #ff5f3f 100%);
  color: var(--color-white);
  font-size: 18px;
  font-weight: 700;
  padding: 16px 60px;
  border: none;
  border-radius: 50px;
  cursor: pointer;
  transition: transform 0.3s, box-shadow 0.3s;
  box-shadow: 0 4px 12px rgba(223, 68, 0, 0.3);
}
.submit-btn:hover {
  transform: translateY(-2px);
}

/* ========== 確認画面 ========== */
.confirm-heading {
  text-align: center;
  font-size: min(6vw, 24px);
  font-weight: 900;
  margin-bottom: 8px;
}
.confirm-lead {
  text-align: center;
  font-size: 14px;
  color: var(--color-text-light);
  margin-bottom: 32px;
}
.confirm-table {
  max-width: 560px;
  margin: 0 auto 32px;
}
.confirm-row {
  display: flex;
  flex-direction: column;
  padding: 16px 0;
  border-bottom: 1px solid var(--color-border);
}
.confirm-row:first-child {
  border-top: 1px solid var(--color-border);
}
.confirm-row dt {
  font-size: 13px;
  font-weight: 700;
  color: var(--color-primary-dark);
  margin-bottom: 4px;
}
.confirm-row dd {
  font-size: 15px;
  line-height: 1.7;
}
.confirm-buttons {
  display: flex;
  justify-content: center;
  gap: 16px;
  max-width: 560px;
  margin: 0 auto;
}
.confirm-back {
  display: inline-block;
  padding: 16px 36px;
  background: var(--color-white);
  color: var(--color-text);
  font-size: 16px;
  font-weight: 700;
  border: 2px solid var(--color-border);
  border-radius: 50px;
  cursor: pointer;
  transition: background 0.3s;
}
.confirm-back:hover {
  background: #f5f5f5;
}

/* ========== モーダル ========== */
.modal-overlay {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.6);
  z-index: 200;
  justify-content: center;
  align-items: center;
  padding: 20px;
}
.modal-overlay.is-open {
  display: flex;
}
.modal-content {
  background: var(--color-white);
  border-radius: 12px;
  max-width: 600px;
  width: 100%;
  max-height: 80vh;
  overflow-y: auto;
  padding: 32px 24px;
  position: relative;
}
.modal-close {
  position: sticky;
  top: -10px;
  float: right;
  background: #939393;
  border: none;
  font-size: 28px;
  color: var(--color-white);
  cursor: pointer;
  z-index: 1;
  margin-top: -32px;
  padding: 8px;
  line-height: 1;
  padding: 8px;
  border-radius: 50%;
}
.modal-close:hover {
  background: #6b6b6b;
}
.modal-title {
  font-size: 18px;
  font-weight: 900;
  text-align: center;
  margin-bottom: 24px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--color-primary);
}
.modal-body {
  font-size: 14px;
  line-height: 1.9;
  color: var(--color-text);
}
.modal-body h3 {
  font-size: 15px;
  font-weight: 700;
  margin: 20px 0 8px;
}
.modal-body ul {
  list-style: disc;
  padding-left: 1.5em;
  margin-bottom: 8px;
}
.modal-body .modal-date {
  margin-top: 24px;
  text-align: right;
  font-size: 13px;
  color: var(--color-text-light);
}
.modal-close-bottom {
  text-align: center;
  margin-top: 28px;
}
.modal-close-btn {
  display: inline-block;
  padding: 12px 48px;
  background: var(--color-white);
  color: var(--color-text);
  font-size: 15px;
  font-weight: 700;
  border: 2px solid var(--color-border);
  border-radius: 50px;
  cursor: pointer;
  transition: background 0.3s;
}
.modal-close-btn:hover {
  background: #f5f5f5;
}

/* ========== 完了・エラーページ ========== */
.result-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 80px 20px;
  text-align: center;
}
.result-icon {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: var(--color-primary);
  color: var(--color-white);
  font-size: 36px;
  font-weight: 900;
  line-height: 72px;
  margin-bottom: 24px;
}
.result-error .result-icon {
  background: #e53935;
}
.result-title {
  font-size: 22px;
  font-weight: 900;
  margin-bottom: 16px;
}
.result-text {
  font-size: 15px;
  line-height: 1.8;
  color: var(--color-text-light);
  margin-bottom: 32px;
}
.result-back {
  display: inline-block;
  padding: 14px 40px;
  background: var(--color-primary);
  color: var(--color-white);
  font-size: 15px;
  font-weight: 700;
  border-radius: 50px;
  transition: opacity 0.3s;
}
.result-back:hover {
  opacity: 0.85;
}

/* ========== FOOTER ========== */
.footer {
  background-color: #ebebeb;
  padding: 32px 20px;
  text-align: center;
}
.footer-logo {
  margin-bottom: 12px;
}
.footer-logo img {
  margin: 0 auto;
  filter: brightness(0) invert(1);
  opacity: 0.8;
}
.footer-copy {
  font-size: 12px;
}

/* ========================================
   Responsive - Tablet (768px)
   ======================================== */
@media (min-width: 768px) {
  :root {
    --header-height: 64px;
  }

  .section-inner {
    max-width: 720px;
    padding: 64px 32px;
  }
  .section-title {
    margin-bottom: 100px;
  }
  .section-title img {
    max-width: 400px;
  }

  /* Header */
  .header-logo img {
    width: 120px;
  }
  .header-btn img {
    height: 80px;
  }

  /* FV */
  .fv {
    padding: var(--header-height) 32px 0;
  }
  .fv {
    padding: var(--header-height) 40px 0;
  }
  .fv-main-txt {
    top: 360px;
  }
  .fv-cta-btn img {
    max-width: 460px;
  }
  .fv-balloon {
    width: 440px;
    height: 440px;
    left: -21px;
    top: -100px;
  }
  .fv-sub {
    right: 29%;
    bottom: 49%;
    transform: translate(26%, 67%);
  }
  .fv-bike {
    right: -38%;
    left: 30%;
  }

  /* Worries */
  #worries .section-title {
      margin-bottom: 40px;
  }
  .worries-list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
  }
  .worries .section-inner {
    margin-bottom: 50px;
  }

  /* CTA */
  .cta-txt-img img {
    max-width: 380px;
  }

  /* About */
  .about-howto-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
  }
  .about-bottom {
    margin-top: -200px;
  }

  /* Merit */
  .merit-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .merit-img img {
    max-width: 110px;
  }

  /* Voice */
  .voice-list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
  }
  .voice-list .voice-card:last-child {
    grid-column: 1 / -1;
    max-width: 50%;
    justify-self: center;
  }

  /* Flow */
  .flow-timeline::before {
    left: 60px;
  }

  /* CTA Last */
  .cta-last-woman img {
    max-width: 250px;
  }
  .cta-last-btn img {
    max-width: 450px;
  }

  /* Form */
  .contact-form {
    max-width: 520px;
  }
}

/* ========================================
   Responsive - Desktop (1024px)
   ======================================== */
@media (min-width: 1024px) {
  .section-inner {
    max-width: 960px;
    padding: 80px 40px;
  }
  .section-title img {
    max-width: 440px;
  }

  /* Header */
  .header-inner {
    padding: 0 20px;
  }

  /* FV */
  .fv-bike {
    right: -96px;
    top: 22px;
  }

  /* Merit */
  .merit-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  /* Voice */
  .voice-list {
    grid-template-columns: repeat(3, 1fr);
  }
  .voice-list .voice-card:last-child {
    grid-column: auto;
    max-width: none;
  }

  /* Flow */
  .flow .section-inner {
    max-width: 560px;
  }

  /* Form */
  .contact-form {
    max-width: 560px;
  }
}
