@charset "utf-8";
/* 基本部品・フォント・共通ナビゲーション
 * 編集先の案内: ../CSS_MAINTENANCE.md
 * 各章の順序はカスケードを維持するため固定。日付・改修番号のCSSを追加しない。
 */

/* ===== SECTION 01 | 移行元: styles.css ===== */
/* 基本スタイルと既存の共通部品。ページ固有の調整はr3.cssを参照してください。 */
.page-top {
  font-family: "Noto Sans JP TOP", "Noto Sans JP", sans-serif;
}

:root {
  --ink: #18394e;
  --muted: #4e6677;
  --blue: #1768cf;
  --royal: #245bc4;
  --navy: #17457e;
  --pale: #f0f7ff;
  --line: #cbdff2;
  --orange: #ba5414;
  --orange-light: #ffd9b3;
  --warm: #fff4e6;
  --radius: 20px;
  --header-height: 64px;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: auto;
  scroll-padding-top: 88px;
}

body {
  margin: 0;
  /* padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px)); */
  color: var(--ink);
  background: #fff;
  font-family: "Noto Sans JP", sans-serif;
  font-size: 16px;
  line-height: 1.9;
  overflow-wrap: anywhere;
  -webkit-text-size-adjust: 100%;
}

body.modal-open {
  overflow: hidden;
  padding-right: var(--scrollbar-space, 0px);
}

[hidden] {
  display: none !important;
}

img {
  display: block;
  width: var(--image-width, auto);
  max-width: 100%;
  height: auto;
}

figure {
  margin: 0;
}

figcaption {
  font-size: 12px;
  color: var(--muted);
  text-align: right;
  margin-top: 6px;
}

a {
  color: var(--blue);
  text-underline-offset: 4px;
}

button,
input {
  font: inherit;
}

button {
  cursor: pointer;
}

button:disabled {
  cursor: not-allowed;
}

a,
button,
summary {
  -webkit-tap-highlight-color: transparent;
}

:focus-visible {
  outline: 3px solid #bd581d;
  outline-offset: 5px;
}

h1,
h2,
h3,
h4,
p {
  margin: 0;
}

h1,
h2,
h3,
h4 {
  font-weight: 700;
  line-height: 1.55;
}

h1 {
  font-size: clamp(32px, 3.3vw, 43px);
  letter-spacing: -.025em;
}

h2 {
  font-size: clamp(28px, 2.8vw, 36px);
  letter-spacing: .015em;
}

h3 {
  font-size: 23px;
}

h4 {
  font-size: 18px;
}

p + p {
  margin-top: 16px;
}

strong,
b {
  font-weight: 700;
}

small {
  font-size: 13px;
}

ul,
ol {
  padding: 0;
  margin: 0;
  list-style: none;
}

dl,
dd {
  margin: 0;
}

.container {
  width: min(1040px, calc(100% - 64px));
  margin-inline: auto;
}

.section {
  padding: 92px 0;
}

.section-heading {
  margin-bottom: 38px;
}

.section-heading .lead {
  margin-top: 22px;
}

.lead {
  font-size: 17px;
  line-height: 2;
}

.eyebrow {
  color: var(--blue);
  font-size: 14px;
  font-weight: 700;
  margin-bottom: 10px;
  letter-spacing: .06em;
}

.pale {
  background: var(--pale);
}

.warm {
  background: var(--warm);
}

.centered {
  text-align: center;
}

.note {
  font-size: 14px;
  line-height: 1.85;
  color: var(--muted);
}

.bold {
  font-weight: 700;
}

.phrase {
  display: inline-block;
}

.accent {
  color: var(--blue);
}

.mobile-break {
  display: none;
}

.two-columns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}

.button {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 20px;
  min-height: 56px;
  max-width: 100%;
  padding: 14px 25px;
  border: 1px solid transparent;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.6;
  text-decoration: none;
  transition: background-position .35s ease, box-shadow .18s;
}

/* 申し込み導線の矢印はサービス開発ボタンと同じ山形SVGに統一。 */
.cta-chevron {
  display: block;
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  align-self: center;
}

.primary {
  background: #fd7c2b linear-gradient(to right, #ee6819 50%, #fd7c2b 50%);
  background-size: 205% 100%;
  background-position: right bottom;
  color: #fff;
  box-shadow: 0 4px 0 #cf6629;
}

@media (hover: hover) {
  .primary:not(:disabled):hover {
    background-position: left bottom;
  }

  .outline:hover {
    background-position: left bottom;
  }
}

.primary:disabled {
  opacity: .85;
}

.outline {
  background: #fff linear-gradient(to right, #eaf3ff 50%, #fff 50%);
  background-size: 205% 100%;
  background-position: right bottom;
  color: var(--blue);
  border-color: var(--blue);
}

.compact {
  min-height: 42px;
  padding: 7px 20px;
  font-size: 14px;
}

.text-link {
  padding: 0;
  border: 0;
  background: none;
  color: var(--blue);
  font-weight: 700;
  font-size: 14px;
  text-decoration: underline;
  text-underline-offset: 4px;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Hero: copy and a single photograph, without a competing caption. */

.hero {
  background: linear-gradient(140deg, #fff 32%, #eff7ff 100%);
  padding-bottom: 64px;
  overflow: clip;
}

.wordmark {
  display: inline-block;
  color: var(--navy);
  font-size: 23px;
  font-weight: 700;
  letter-spacing: -.04em;
  text-decoration: none;
  white-space: nowrap;
}

.wordmark span {
  color: var(--blue);
}

.hero-grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 24px;
  align-items: center;
  padding-top: 26px;
}

.hero-copy {
  position: relative;
  z-index: 1;
}

.audience {
  color: var(--blue);
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 25px;
}

.hero-lead {
  margin-top: 24px;
  font-size: 17px;
}

.hero-services {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 21px;
}

.hero-services > span {
  color: var(--navy);
  background: #e7f1ff;
  padding: 4px 10px;
  border-radius: 5px;
  font-size: 13px;
  font-weight: 600;
}

.hero-price,
.price-number {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 8px;
  color: var(--navy);
}

.hero-price {
  justify-content: start;
  margin-top: 24px;
}

.hero-price strong,
.price-number strong {
  font-size: 64px;
  line-height: 1.2;
  letter-spacing: -.045em;
  font-variant-numeric: lining-nums;
}

.hero-price > span,
.price-number > span {
  font-size: 18px;
}

.price-number small {
  display: block;
  line-height: 1.5;
  text-align: center;
}

.payment {
  font-size: 14px;
  margin-top: 6px;
}

.hero-cta {
  margin-top: 22px;
  min-width: 345px;
}

.hero-visual {
  position: relative;
  isolation: isolate;
  align-self: stretch;
  display: grid;
  place-items: center;
}

.hero-visual::before {
  content: "";
  position: absolute;
  width: 115%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: #d9ecff;
  top: 40px;
  left: -3%;
  z-index: -1;
}

.hero-photo {
  width: 100%;
  border-radius: 48% 48% 20px 20px;
}

.visual-dot {
  position: absolute;
  right: -8px;
  bottom: 42px;
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: var(--orange-light);
  z-index: -1;
}

/* Overview and scope. */

.service-card {
  background: #fff;
  border: 1px solid var(--line);
  border-top: 4px solid var(--blue);
  border-radius: var(--radius);
  padding: 30px;
  position: relative;
}

.service-kicker {
  display: flex;
  gap: 14px;
  align-items: center;
  color: var(--blue);
  margin-bottom: 14px;
  padding-right: 35px;
}

.service-kicker span {
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
}

.service-kicker p {
  font-size: 14px;
  font-weight: 600;
}

.service-card > img {
  position: absolute;
  top: 30px;
  right: 25px;
}

.service-card h3 {
  margin-bottom: 18px;
}

.overview-plus {
  padding: 23px 28px;
  background: var(--warm);
  border-radius: 12px;
  display: flex;
  align-items: center;
  gap: 20px;
  margin-top: 24px;
  font-weight: 600;
}

.plus {
  font-size: 33px;
  color: var(--orange);
}

.facts-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-block: 1px solid var(--line);
  margin: 36px 0 18px;
  padding: 22px 0;
}

.facts-strip > div {
  padding: 0 15px;
  text-align: center;
  border-right: 1px solid var(--line);
}

.facts-strip > div:last-child {
  border: 0;
}

.facts-strip span {
  font-size: 13px;
  display: block;
}

.facts-strip strong {
  display: block;
  font-size: 21px;
  color: var(--blue);
}

.split-heading {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 40px;
  align-items: center;
  margin-bottom: 42px;
}

.split-heading .section-heading {
  margin-bottom: 0;
}

.split-heading figure img {
  border-radius: 20px;
}

.scope-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.scope-item {
  background: #fff;
  border: 1px solid #dce9f7;
  border-radius: 14px;
  padding: 22px 12px 25px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.scope-item img {
  margin: 0 auto 12px;
  height: 44px;
  object-fit: contain;
}

.scope-place {
  font-size: 12px;
  font-weight: 500;
  color: #5c6c7e;
  margin-bottom: 5px;
}

.scope-item h3 {
  font-size: 18px;
  line-height: 1.65;
  font-weight: 700;
  color: var(--navy);
}

/* Shared availability band in the hero and service coverage. */

.service-value-band {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: center;
  text-align: center;
  gap: 10px;
}

.service-value-band strong {
  color: var(--blue);
  font-size: clamp(14px, 1.7vw, 24px);
  line-height: 1.5;
}

.service-value-band strong + strong {
  border-left: 1px solid #b9d2ef;
}

.hero .service-value-band {
  margin-top: 22px;
  padding: 16px 8px;
  background: #e2efff;
  border-radius: 12px;
}

/* REV6: 住まいの駆けつけと、付帯する端末保険。 */

.scope-table-intro {
  text-align: left;
  font-size: 14px;
  margin-bottom: 14px;
  color: #5c6c7e;
}

/* 大きな配線図を使わず、相談から応急処置、次の対応へ。 */

.flow-stages {
  list-style: none;
  padding: 0;
  display: grid;
  gap: 28px;
}

.flow-stage {
  position: relative;
  display: grid;
  grid-template-columns: 38px 48px 1fr;
  gap: 16px;
  align-items: center;
  padding: 24px 26px;
  background: var(--pale);
  border: 1px solid #d7e5f5;
  border-radius: 16px;
}

.flow-stage:first-child::after {
  content: '↓';
  position: absolute;
  bottom: -28px;
  left: 50%;
  color: #7194bc;
  font-size: 24px;
  line-height: 28px;
}

.step-number {
  white-space: nowrap;
  color: var(--blue);
  font-weight: 700;
  font-size: 30px;
  align-self: start;
}

.flow-stage > img {
  width: 46px;
  height: 60px;
  object-fit: contain;
}

.flow-stage h3 {
  font-size: 18px;
  margin-bottom: 8px;
}

.flow-stage p {
  font-size: 14px;
  line-height: 1.85;
}

.flow-stage small {
  display: block;
  font-size: 13px;
  line-height: 1.85;
  margin-top: 8px;
}

.cost-label {
  display: inline-block;
  border-radius: 6px;
  font-size: 12px;
  line-height: 1.6;
  padding: 5px 12px;
  font-weight: 700;
}

.free-cost {
  background: #dcecff;
  color: var(--blue);
  margin-top: 12px;
}

.flow-branch-intro {
  display: flex;
  gap: 18px;
  align-items: center;
  margin: 36px 0 20px;
  padding-inline: 27px;
  position: relative;
}

.flow-branch-intro::before {
  content: '↓';
  position: absolute;
  top: -34px;
  left: 50%;
  color: #7194bc;
  font-size: 24px;
  line-height: 28px;
}

.flow-results::before {
  content: '';
  position: absolute;
  top: 0;
  left: calc((100% - var(--flow-gap)) / 4);
  right: calc((100% - var(--flow-gap)) / 4);
  border-top: 2px solid #b1c7df;
}

.flow-results::after {
  content: '';
  position: absolute;
  top: -18px;
  left: 50%;
  height: 18px;
  border-left: 2px solid #b1c7df;
}

.flow-result::before {
  content: '';
  position: absolute;
  top: -26px;
  left: calc(50% - 1px);
  height: 24px;
  border-left: 2px solid #b1c7df;
}

.flow-result::after {
  content: '';
  position: absolute;
  top: -9px;
  left: calc(50% - 4px);
  width: 8px;
  height: 8px;
  border-right: 2px solid #b1c7df;
  border-bottom: 2px solid #b1c7df;
  transform: rotate(45deg);
}

.flow-branch-intro h3 {
  font-size: 23px;
  line-height: 1.65;
  color: var(--navy);
}

.flow-results {
  --flow-gap: 22px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--flow-gap);
  position: relative;
  padding-top: 25px;
  margin-top: 18px;
}

.flow-result {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 24px;
  border: 1px solid #d7e5f5;
  border-radius: 14px;
  background: #f7faff;
  position: relative;
}

.flow-result > img {
  width: 44px;
  height: 44px;
  margin-bottom: 14px;
}

.flow-result h3 {
  font-size: 18px;
  line-height: 1.7;
  color: var(--navy);
  margin-bottom: 10px;
}

.flow-result p {
  font-size: 14px;
  line-height: 1.9;
}

.flow-cost {
  display: block;
  font-size: 13px;
  line-height: 1.8;
  color: #52677f;
  margin-top: 12px;
}

.flow-secondary {
  margin-top: 24px;
  border-top: 1px solid #e0e6ed;
  padding-top: 16px;
  font-size: 13px;
  line-height: 1.9;
  color: #606b79;
}

.flow-secondary small {
  display: block;
  font-size: 13px;
  margin-top: 8px;
}

.price-layout.simple-price {
  grid-template-columns: 1fr;
  max-width: 760px;
  margin: 0 auto;
}

.phone-eligibility {
  margin-top: 34px;
  padding: 28px;
  background: white;
  border: 1px solid #d7e5f5;
  border-radius: 16px;
}

.phone-eligibility h3 {
  font-size: 23px;
  margin-bottom: 10px;
}

.phone-eligibility > p {
  font-size: 14px;
}

.phone-eligibility-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  margin: 22px 0;
}

.phone-eligibility-options article {
  padding: 22px;
  background: #eef5ff;
  border-radius: 12px;
}

.phone-eligibility-options span,
.phone-eligibility-options strong {
  display: block;
}

.phone-eligibility-options span {
  font-size: 12px;
}

.phone-eligibility-options strong {
  font-size: 20px;
  color: var(--blue);
  line-height: 1.5;
  margin: 6px 0 10px;
}

.phone-eligibility-options em {
  font-size: 36px;
  font-style: normal;
}

.phone-eligibility-options p {
  font-size: 13px;
  line-height: 1.8;
}

.phone-eligibility .note {
  font-size: 12px;
  line-height: 1.85;
}

.phone-eligibility .text-link {
  margin-top: 18px;
}

.faq-category-links {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-bottom: 30px;
}

.faq-category-links a {
  color: var(--blue);
  padding: 10px 18px;
  border: 1px solid #c7def7;
  border-radius: 8px;
  text-decoration: none;
  font-weight: 600;
}

.story-teaser {
  background: #f9fafb;
  text-align: center;
}

.story-teaser h2 {
  font-size: 30px;
  line-height: 1.6;
}

.story-teaser-copy {
  max-width: 760px;
  margin: 24px auto;
  text-align: left;
  line-height: 2;
}

.story-teaser-copy p + p {
  margin-top: 18px;
}

@media(max-width:900px) {}

@media(max-width:760px) {
  .symptom-routing {
    margin: 32px 0;
  }

  .flow-stage {
    grid-template-columns: 26px 34px 1fr;
    gap: 10px;
    padding: 18px 14px;
  }

  .flow-stage > img {
    width: 32px;
    height: 46px;
  }

  .step-number {
    font-size: 23px;
  }

  .flow-stage h3 {
    font-size: 16px;
  }

  .flow-stage p {
    font-size: 13px;
  }

  .flow-branch-intro {
    gap: 12px;
    padding-inline: 15px;
  }

  .flow-results {
    --flow-gap: 12px;
  }

  .flow-branch-intro h3 {
    font-size: 19px;
  }

  .flow-results {
    gap: 12px;
  }

  .flow-result {
    padding: 18px 12px;
  }

  .flow-result h3 {
    font-size: 15px;
  }

  .flow-result p {
    font-size: 12px;
  }

  .flow-cost {
    font-size: 13px;
  }

  .phone-eligibility {
    padding: 20px 16px;
  }

  .phone-eligibility h3 {
    font-size: 20px;
  }

  .phone-eligibility-options {
    gap: 12px;
  }

  .phone-eligibility-options article {
    padding: 16px 12px;
  }

  .phone-eligibility-options strong {
    font-size: 17px;
  }

  .phone-eligibility-options em {
    font-size: 28px;
  }

  .phone-eligibility-options p {
    font-size: 12px;
  }

  .faq-category-links {
    gap: 8px;
  }

  .faq-category-links a {
    padding: 10px;
    font-size: 13px;
  }

  .story-teaser h2 {
    font-size: 26px;
  }
}

/* REV7: 症状から判断する範囲説明、事故から理解する付帯特典。 */

.decision-copy {
  padding: 30px 34px;
  border-left: 4px solid var(--blue);
  background: #f5f9ff;
}

.decision-concerns {
  margin-bottom: 28px;
}

.decision-concerns-title {
  font-size: 16px;
  font-weight: 600;
  color: #526a82;
  margin-bottom: 13px;
}

.decision-concerns ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 15px;
  list-style: none;
  padding: 0;
}

.decision-concerns li {
  background: #fff;
  border-left: 3px solid #91b8e4;
  border-radius: 0 8px 8px 0;
  padding: 14px 18px;
  line-height: 1.8;
  font-size: 15px;
}

.decision-copy h2 {
  font-size: 32px;
  line-height: 1.65;
  margin-bottom: 22px;
}

.decision-copy > p {
  max-width: 820px;
  line-height: 1.95;
}

.decision-copy > p + p {
  margin-top: 14px;
}

.decision-principle strong {
  display: block;
  font-size: 20px;
  color: var(--navy);
}

.decision-principle span {
  font-size: 14px;
}

.phone-scenes {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}

.phone-scenes figure img {
  width: 100%;
  height: auto;
  aspect-ratio: 3/2;
  object-fit: cover;
  border-radius: 12px;
}

.phone-scenes h3 {
  font-size: 16px;
  line-height: 1.7;
  margin-top: 0;
}

.phone-scenes > .note {
  grid-column: 1/-1;
  margin: 0;
}

.repair-prices.phone-repair-costs {
  margin-top: 36px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.repair-table-caption {
  caption-side: top;
  text-align: left;
  font-size: 13px;
  padding-bottom: 10px;
}

.phone-repair-costs table {
  background: #fff;
  width: 100%;
  max-width: 660px;
  margin: 24px auto 0;
  table-layout: fixed;
}

.repair-cost-notes {
  margin-top: 14px;
  font-size: 12px;
  color: #52677f;
}

.repair-cost-notes > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 0;
  color: var(--blue);
}

.repair-cost-notes > div {
  padding-top: 8px;
}

.phone-coverage {
  margin-top: 36px;
  padding: 28px 30px;
  border-radius: 16px;
  background: #e2efff;
}

.phone-coverage > h3 {
  font-size: 24px;
  line-height: 1.6;
  margin-bottom: 22px;
}

.phone-coverage-grid {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: 34px;
  align-items: start;
}

.phone-coverage .insurance-limit {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  margin: 0;
}

.phone-coverage .insurance-limit-note {
  margin: 16px 0 0;
}

.phone-coverage-devices h4 {
  font-size: 17px;
}

.phone-coverage .devices {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 16px 0;
}

.phone-coverage .devices > div {
  padding: 8px;
  background: transparent;
}

.phone-coverage .devices span {
  font-size: 13px;
}

.phone-family {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 12px 24px;
  margin-top: 36px;
  padding-top: 30px;
  border-top: 1px solid #c7def7;
}

.phone-family > img {
  grid-row: 1/4;
  max-width: 72px;
  width: 100%;
  height: 80px;
  object-fit: contain;
}

.phone-family h3 {
  font-size: 24px;
  line-height: 1.6;
}

.phone-family > p {
  grid-column: 2;
}

.phone-family .note {
  font-size: 12px;
}

.phone-comparison {
  margin-top: 34px;
  padding: 30px 0 0;
  border-top: 1px solid #c7def7;
}

.phone-comparison h3 {
  font-size: 24px;
  margin-bottom: 12px;
}

.phone-comparison p {}

.phone-detail-link {
  display: block;
  margin-top: 22px;
}

.price-includes {
  text-align: center;
  line-height: 1.9;
  margin: 0 auto 24px;
  font-size: 16px;
}

.faq-group + .faq-group {
  margin-top: 44px;
}

.faq-group h3 {
  font-size: 22px;
  line-height: 1.6;
  border-left: 4px solid var(--blue);
  padding-left: 14px;
  margin-bottom: 18px;
}

.faq-group .faq-list {
  gap: 0;
  border: 1px solid #d7e5f5;
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
}

.faq-group .accordion {
  margin: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.faq-group .accordion + .accordion {
  border-top: 1px solid #d7e5f5;
}

.faq-group .accordion > summary {
  padding: 18px 22px;
  gap: 12px;
  align-items: baseline;
  justify-content: start;
  font-size: 16px;
  line-height: 1.8;
}

.faq-group .accordion > summary .q {
  flex: 0 0 24px;
  font-size: 18px;
}

.faq-group .accordion > summary > span:last-child {
  margin-left: auto;
  color: var(--blue);
}

.faq-group .accordion-body {
  border: 0;
  padding: 0 22px 20px 58px;
  font-size: 14px;
}

@media (max-width:760px) {
  .phone-coverage-grid {
    gap: 24px;
  }

  .phone-scenes h3 {
    font-size: 15px;
  }

  .phone-coverage {
    padding: 26px;
  }
}

@media(max-width:760px) {
  .decision-copy {
    padding: 24px 18px;
  }

  .decision-copy h2 {
    font-size: 24px;
  }

  .decision-copy > p {
    font-size: 14px;
  }

  .decision-principle strong {
    font-size: 18px;
  }

  .phone-scenes {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  .phone-scenes figure {
    display: block;
  }

  .phone-scenes h3 {
    font-size: 14px;
    line-height: 1.7;
    margin: 0;
  }

  .phone-scenes h3 br {
    display: none;
  }

  .phone-coverage {
    padding: 24px 18px;
  }

  .phone-coverage > h3 {
    font-size: 21px;
  }

  .phone-coverage-grid {
    grid-template-columns: 1fr;
    gap: 26px;
  }

  .phone-coverage .insurance-limit-note {
    font-size: 12px;
  }

  .phone-coverage-devices h4 {
    font-size: 16px;
  }

  .phone-coverage .devices {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .phone-family {
    grid-template-columns: 48px 1fr;
    gap: 12px 16px;
  }

  .phone-family > img {
    width: 48px;
    height: 56px;
    grid-row: 1;
  }

  .phone-family h3 {
    font-size: 21px;
  }

  .phone-family > p {
    grid-column: 1/-1;
    font-size: 14px;
  }

  .phone-family .note {
    font-size: 12px;
  }

  .phone-comparison h3 {
    font-size: 21px;
  }

  .phone-detail-link {
    font-size: 13px;
  }

  .price-includes {
    font-size: 14px;
  }

  .faq-group h3 {
    font-size: 20px;
  }

  .faq-group .accordion > summary {
    padding: 15px 14px;
    gap: 9px;
    font-size: 14px;
  }

  .faq-group .accordion > summary .q {
    flex-basis: 20px;
    font-size: 17px;
  }

  .faq-group .accordion-body {
    padding: 0 14px 18px 43px;
    font-size: 13px;
  }
}

/* FVの特典帯：内容、補償額、詳細の順に読む。注記は帯の外側へ。 */

.hero-phone-benefit {
  order: 3;
  grid-column: 1/-1;
  position: relative;
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) auto;
  grid-template-areas: "photo copy limit" "photo copy link" "note note note";
  align-items: center;
  gap: 6px 22px;
  padding: 16px 22px;
  margin-bottom: 0;
  border: 1px solid #e9cba3;
  border-radius: 16px;
  background: #fff5e7;
}

.hero-phone-benefit > img {
  grid-area: photo;
  width: 150px;
  height: 102px;
  object-fit: cover;
  border-radius: 9px;
}

.hero-benefit-copy {
  grid-area: copy;
}

.hero-limit-count {
  display: block;
  margin-top: 4px;
  font-size: 14px;
}


.hero-phone-benefit .eyebrow {
  font-size: 12px;
  color: #a45516;
  margin-bottom: 2px;
}

.hero-phone-benefit h2 {
  font-size: clamp(18px, 1.8vw, 23px);
  line-height: 1.5;
  margin: 0;
}

.hero-phone-benefit > div > p:last-child {
  font-size: 13px;
  margin-top: 3px;
}

.hero-phone-limit {
  grid-area: limit;
  color: #a45516;
  white-space: nowrap;
  justify-self: start;
}

.hero-phone-limit strong {
  display: block;
  font-size: 18px;
  line-height: 1.3;
}

.note-mark {
  font-size: .65em;
  line-height: 0;
  vertical-align: super;
}

.hero-limit-amount {
  position: relative;
  display: inline-block;
  line-height: 1;
}

.hero-limit-amount::before {
  content: '';
  position: absolute;
  top: -7px;
  left: 12%;
  width: 76%;
  height: 6px;
  border-top: 2px solid #bb6928;
  border-radius: 50%;
}

.scope-grid-note {
  margin-top: 13px;
  text-align: left;
}

.scope-grid-note .text-link {
  font-size: inherit;
}

.scope-basic-title::before,
.scope-basic-title::after {
  content: '';
  width: 2px;
  height: 24px;
  background: #fff;
  flex-shrink: 0;
}

.scope-basic-title::before {
  transform: rotate(-24deg);
}

.scope-basic-title::after {
  transform: rotate(24deg);
}

.hero-phone-limit em {
  font-style: normal;
  font-size: 44px;
}

.hero-benefit-note {
  grid-area: note;
  margin-top: 4px;
  font-size: 13px;
  line-height: 1.6;
  color: #5f6570;
}

.hero-phone-benefit .text-link {
  grid-area: link;
  border: 0;
  padding: 0;
  background: none;
  font: inherit;
  cursor: pointer;
  justify-self: end;
  font-size: 13px;
  white-space: nowrap;
}

.free-guarantee-logo {
  width: 100%;
  max-width: 285px;
  height: auto;
  display: block;
  margin: 0 auto;
}

/* 症状一覧：設備ごとのまとまりを罫線で作り、対象外も同じ一覧に置く。 */

/* 対応範囲表：3列を維持し、設備写真と対応内外を並べます。 */
.symptom-table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  background: #fff;
  font-size: 14px;
  line-height: 1.8;
}

.symptom-table th,
.symptom-table td {
  text-align: left;
  vertical-align: top;
  padding: 18px;
  border-bottom: 1px solid #dde5ee;
  overflow-wrap: anywhere;
}

.symptom-table thead th {
  color: var(--navy);
  background: #edf4fc;
  vertical-align: middle;
}

.symptom-table thead th:first-child {
  width: 22%;
}

.symptom-table thead th:nth-child(2) {
  width: 39%;
}

.symptom-table tbody th {
  font-weight: 700;
  background: #f8fafc;
}

.symptom-table tbody th > span {
  display: block;
}

.symptom-table .scope-not-applicable {
  color: #687583;
}

.scope-equipment-photo {
  display: block;
  width: 116px;
  max-width: 100%;
  height: 82px;
  object-fit: cover;
  border-radius: 6px;
  margin-bottom: 9px;
}

.scope-status {
  display: inline-block;
  margin-right: 7px;
  font-size: 22px;
  line-height: 1;
  vertical-align: -.08em;
}

.scope-status-yes {
  color: #1768cf;
}

.scope-status-no {
  color: #5e6c7c;
}

.scope-table-disclosure {
  margin: 18px 0;
}

.scope-table-viewport {
  position: relative;
}

.scope-table-disclosure.is-ready .scope-table-viewport {
  overflow: hidden;
  transition: height .35s ease;
}

.scope-table-disclosure.is-collapsed .scope-table-viewport::after {
  content: '';
  position: absolute;
  inset: auto 0 0;
  height: 145px;
  pointer-events: none;
  background: linear-gradient(transparent, rgba(255, 255, 255, .75) 52%, #fff);
}

.scope-table-toggle-wrap {
  position: relative;
  text-align: center;
  padding: 10px 0 2px;
}

.scope-table-disclosure.is-collapsed .scope-table-toggle-wrap {
  margin-top: -24px;
}

.scope-table-toggle {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 8px 20px;
  border: 1px solid #b9ccdf;
  border-radius: 7px;
  background: #fff;
  color: var(--navy);
  font: inherit;
  font-size: 14px;
  cursor: pointer;
}

.scope-table-toggle:hover {
  background: #edf4fc;
}

.scope-table-toggle:focus-visible {
  outline: 3px solid #1768cf;
  outline-offset: 3px;
}

@media (max-width: 640px) {
  .symptom-table {
    font-size: 12px;
    line-height: 1.75;
  }

  .symptom-table th,
  .symptom-table td {
    padding: 11px 9px;
  }

  .symptom-table thead th:first-child {
    width: 26%;
  }

  .symptom-table thead th:nth-child(2) {
    width: 37%;
  }

  .scope-equipment-photo {
    width: 80px;
    height: 64px;
  }

  .scope-status {
    display: block;
    margin: 0 0 5px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .scope-table-disclosure.is-ready .scope-table-viewport {
    transition: none;
  }
}

/* 詳細は小カードに分けず、4つの大きなまとまりで探しやすくする。 */

.scope-detail-group {
  padding: 26px 0;
  border-top: 1px solid #dae4ef;
}

.scope-detail-group:first-of-type {
  margin-top: 22px;
}

#scopeDetails .scope-detail-heading {
  display: flex;
  gap: 12px;
  align-items: center;
  margin: 0 0 18px;
  font-size: 22px;
}

.scope-detail-heading > span {
  color: var(--blue);
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
  min-width: 38px;
}

.scope-detail-group h4 {
  font-size: 16px;
  margin: 20px 0 10px;
  color: var(--navy);
}

.scope-detail-group h4:first-of-type {
  margin-top: 0;
}

.scope-detail-group p {
  line-height: 1.9;
}

.scope-detail-group .note {
  margin-top: 12px;
}

.scope-detail-free .check-list {
  padding: 16px 20px;
  background: #edf5ff;
  border-radius: 10px;
}

.scope-detail-excluded .plain-list {
  padding-left: 1.5em;
}

.scope-detail-excluded .plain-list li + li {
  margin-top: 9px;
}

.scope-detail-group .detail-list > div {
  display: grid;
  grid-template-columns: 160px minmax(0, 1fr);
  gap: 18px;
  padding: 14px 0;
  border-bottom: 1px solid #e6edf5;
}

.scope-detail-group .detail-list dt {
  color: var(--navy);
}

.scope-detail-group .detail-list dd {
  margin: 0;
  line-height: 1.8;
}

/* 応急処置から選択の説明へつなぎ、企業紹介と特典は区切る。 */

#how-it-works {
  padding-bottom: 32px;
}

#decision {
  background: #fffae7;
  padding-top: 24px;
}

#mobile-benefit {
  background: #fffaf3;
  border-top: 1px solid #eddfcf;
}

#mobile-benefit > .container > .section-heading .eyebrow {
  color: #a45516;
  margin-bottom: 12px;
}

.phone-scenes figure {
  overflow: hidden;
  background: #fff;
  border: 1px solid #ebdfd2;
  border-radius: 12px;
}

.phone-scenes figure img {
  border-radius: 0;
  display: block;
}

.phone-scenes figcaption {
  text-align: center;
  padding: 16px 10px;
  margin: 0;
}

.phone-family-members {
  grid-column: 2;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.phone-family-members li + li {
  border-left: 1px solid #d5e0eb;
  padding-left: 16px;
}

.phone-family-members strong {
  display: block;
  font-size: 15px;
  margin-bottom: 5px;
}

.phone-family-members span {
  display: block;
  font-size: 13px;
  line-height: 1.7;
}

.phone-comparison > .comparison-intro {
  font-size: 15px;
  margin-bottom: 18px;
}

.phone-comparison > .note {
  font-size: 12px;
  line-height: 1.8;
  margin-top: 12px;
}

.phone-comparison .comparison-scroll-hint {
  font-size: 13px;
}

.comparison-conclusion p {
  margin: 0;
}

@media (max-width:760px) {
  .hero-phone-benefit {
    grid-template-columns: 120px minmax(0, 1fr) auto;
    gap: 10px 16px;
    padding: 16px 18px;
  }

  .hero-phone-benefit > img {
    width: 120px;
  }

  .hero-phone-benefit h2 {
    font-size: 19px;
  }

  .hero-phone-benefit .text-link {
    justify-self: end;
  }

  .note-mark {
    font-size: .65em;
    line-height: 0;
    vertical-align: super;
  }

  .hero-limit-amount {
    position: relative;
    display: inline-block;
    line-height: 1;
  }

  .hero-limit-amount::before {
    content: '';
    position: absolute;
    top: -7px;
    left: 12%;
    width: 76%;
    height: 6px;
    border-top: 2px solid #bb6928;
    border-radius: 50%;
  }

  .scope-grid-note {
    margin-top: 13px;
    text-align: left;
  }

  .scope-grid-note .text-link {
    font-size: inherit;
  }

  .scope-basic-title::before,
  .scope-basic-title::after {
    content: '';
    width: 2px;
    height: 24px;
    background: #fff;
    flex-shrink: 0;
  }

  .scope-basic-title::before {
    transform: rotate(-24deg);
  }

  .scope-basic-title::after {
    transform: rotate(24deg);
  }

  .hero-phone-limit em {
    font-size: 40px;
  }

  .phone-family-members {
    gap: 12px;
  }

  .phone-family-members li + li {
    padding-left: 12px;
  }
}

@media(max-width:760px) {
  .hero-phone-benefit {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr);
    grid-template-areas: "photo copy" "limit limit" "link link" "note note";
    gap: 8px 12px;
    padding: 16px;
    margin-bottom: 22px;
  }

  .hero-phone-benefit > img {
    width: 100%;
    height: 106px;
  }

  .hero-phone-benefit h2 {
    font-size: 18px;
  }

  .hero-phone-benefit > div > p:last-child {
    font-size: 12px;
  }

  .hero-phone-limit {
    justify-self: start;
  }

  .hero-phone-limit strong {
    font-size: 16px;
  }

  .note-mark {
    font-size: .65em;
    line-height: 0;
    vertical-align: super;
  }

  .hero-limit-amount {
    position: relative;
    display: inline-block;
    line-height: 1;
  }

  .hero-limit-amount::before {
    content: '';
    position: absolute;
    top: -7px;
    left: 12%;
    width: 76%;
    height: 6px;
    border-top: 2px solid #bb6928;
    border-radius: 50%;
  }

  .scope-grid-note {
    margin-top: 13px;
    text-align: left;
  }

  .scope-grid-note .text-link {
    font-size: inherit;
  }

  .scope-basic-title::before,
  .scope-basic-title::after {
    content: '';
    width: 2px;
    height: 24px;
    background: #fff;
    flex-shrink: 0;
  }

  .scope-basic-title::before {
    transform: rotate(-24deg);
  }

  .scope-basic-title::after {
    transform: rotate(24deg);
  }

  .hero-phone-limit em {
    font-size: 36px;
  }

  .hero-phone-benefit .text-link {
    font-size: 12px;
  }

  .hero-benefit-note {
    font-size: 13px;
  }

  .symptom-routing > .note {
    font-size: 12px;
    line-height: 1.65;
  }

  #scopeDetails .scope-detail-heading {
    font-size: 19px;
  }

  .scope-detail-group {
    padding: 22px 0;
  }

  .scope-detail-group h4 {
    font-size: 15px;
  }

  .scope-detail-group .detail-list > div {
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 13px 0;
  }

  .scope-detail-free .check-list {
    padding: 14px;
  }

  #how-it-works {
    padding-bottom: 24px;
  }

  #decision {
    padding-top: 16px;
  }

  .phone-scenes {
    gap: 16px;
  }

  .phone-scenes figure img {
    height: 168px;
    aspect-ratio: auto;
  }

  .phone-scenes figcaption {
    padding: 12px 14px;
  }

  .phone-scenes h3 br {
    display: initial;
  }

  .phone-family-members {
    grid-column: 1/-1;
    grid-template-columns: 1fr;
    gap: 0;
  }

  .phone-family-members li {
    display: grid;
    grid-template-columns: 140px minmax(0, 1fr);
    gap: 12px;
    padding: 11px 0;
  }

  .phone-family-members li + li {
    border-left: 0;
    padding-left: 0;
    border-top: 1px solid #d5e0eb;
  }

  .phone-family-members strong {
    font-size: 14px;
    margin: 0;
  }

  .phone-family-members span {
    font-size: 12px;
  }
}

/* 対応範囲：症状を見て基本ルールを理解したあと、詳細確認へ。 */

.scope-basic-title {
  font-size: 22px;
  line-height: 1.6;
  color: #fff;
  margin-bottom: 18px;
  display: inline-flex;
  align-items: center;
  gap: 16px;
}

.scope-detail-zone {
  margin-top: 50px;
  padding-top: 28px;
  border-top: 1px solid #d0dbe8;
}

.scope-detail-zone > .note {
  border-top: 1px solid #dde5ef;
  padding-top: 16px;
  margin-top: 20px;
  color: #5b697a;
  font-size: 12px;
  line-height: 1.85;
}

.scope-detail-zone .symptom-routing > .note {
  color: #5b697a;
  font-size: 12px;
  line-height: 1.85;
}

.scope-detail-zone > .centered {
  margin-top: 20px;
}

.flow-secondary .flow-secondary-intro {
  font-weight: 600;
  margin-bottom: 7px;
}

/* 比較条件は見える位置に保持し、出典の開閉後にも全体価値を着地点に。 */

.comparison-conditions {
  margin-top: 20px;
  padding-left: 16px;
  border-left: 2px solid #d8dfe8;
}

.comparison-conditions .note {
  font-size: 12px;
  color: #5b697a;
  line-height: 1.85;
}

.comparison-conditions .note + .note {
  margin-top: 12px;
}

.comparison-source-details {
  margin-top: 16px;
  font-size: 13px;
}

.comparison-source-details summary {
  display: inline-flex;
  gap: 12px;
  align-items: center;
  padding: 4px 0;
  color: #52677f;
  cursor: pointer;
}

.comparison-source-details summary > span {
  font-size: 17px;
  line-height: 1;
}

.comparison-source-details[open] summary > span {
  transform: rotate(45deg);
}

.comparison-source-details .comparison-sources {
  font-size: 12px;
  line-height: 1.85;
  margin-top: 12px;
}

/* 開始日を主役にし、契約の基本条件・更新・規約へ順に進む。 */

.contract-basic-title {
  font-size: 20px;
  line-height: 1.6;
  margin-bottom: 16px;
}

.schedule .start .date {
  font-size: 40px;
  line-height: 1.2;
  color: var(--blue);
  font-weight: 700;
}

.schedule .start > strong {
  font-size: 19px;
  color: var(--navy);
}

.schedule-example .contract-period strong {
  font-weight: 500;
}

/* 料金を共通の上位に置き、その月額に含まれる二つの価値を並べる。 */

.final-benefits.member-attached-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  align-items: stretch;
}

.member-attached-summary .final-home-value,
.member-attached-summary .final-attached-value {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  align-items: start;
  gap: 18px;
  padding: 24px;
  margin: 0;
  text-align: left;
  border: 1px solid #d8e5f5;
  background: #edf5ff;
}

.member-attached-summary .final-attached-value {
  border-color: #ecdcc5;
  background: #fff5e7;
}

.member-attached-summary .final-home-value > img,
.member-attached-summary .final-attached-value > img {
  width: 48px;
  height: 48px;
  object-fit: contain;
  margin: 27px 0 0;
}

.member-attached-summary .final-value-label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.6;
  color: #42658c;
  margin-bottom: 8px;
}

.member-attached-summary .final-attached-value .final-value-label {
  color: #995319;
}

.member-attached-summary .final-home-value strong,
.member-attached-summary .final-attached-value strong {
  display: block;
  font-size: 18px;
  line-height: 1.6;
  color: var(--navy);
  margin: 0;
}

.member-attached-summary .final-home-value p,
.member-attached-summary .final-attached-value p {
  font-size: 13px;
  line-height: 1.8;
  margin-top: 10px;
}

.member-attached-summary .final-attached-value b {
  font-size: 16px;
  color: #985015;
}

@media (max-width:760px) {

  .member-attached-summary .final-home-value,
  .member-attached-summary .final-attached-value {
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 12px;
    padding: 20px 16px;
  }

  .member-attached-summary .final-home-value > img,
  .member-attached-summary .final-attached-value > img {
    width: 38px;
    height: 42px;
  }

  .member-attached-summary .final-home-value strong,
  .member-attached-summary .final-attached-value strong {
    font-size: 16px;
  }
}

@media(max-width:760px) {
  .scope-basic-title {
    font-size: 18px;
    margin-bottom: 16px;
  }

  .scope-detail-zone {
    margin-top: 34px;
    padding-top: 24px;
  }

  .scope-detail-zone > .note {
    font-size: 12px;
  }

  .scope-detail-zone .symptom-routing > .note {
    line-height: 1.8;
  }

  .comparison-conditions {
    padding-left: 12px;
  }

  .contract-basic-title {
    font-size: 18px;
  }

  .schedule-panel > h3 {
    font-size: 23px;
  }

  .schedule .start .date {
    font-size: 34px;
  }

  .schedule .start > strong {
    font-size: 18px;
  }

  .final-benefits.member-attached-summary {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .member-attached-summary .final-home-value,
  .member-attached-summary .final-attached-value {
    padding: 20px 16px;
  }

  .member-attached-summary .final-home-value p,
  .member-attached-summary .final-attached-value p {
    font-size: 13px;
    margin-top: 7px;
  }

  .member-attached-summary .final-attached-value b {
    font-size: 15px;
  }
}

/* 基本の無料範囲は、個別カードではなく大きな一つのベネフィットに。 */

.scope-availability {
  font-size: 16px;
  font-weight: 600;
  letter-spacing: .04em;
  display: inline-block;
  background: #fff;
  color: #1265ca;
  padding: 6px 15px;
  border-radius: 8px;
}

.scope-free-message {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 32px;
  margin-top: 16px;
}

.scope-free-service {
  display: inline-flex;
  align-items: center;
  gap: 18px;
  text-align: left;
}

.scope-free-service > span {
  font-size: 21px;
  font-weight: 600;
  line-height: 1.6;
}

.scope-free-service strong {
  font-size: 76px;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -.035em;
  white-space: nowrap;
}

.scope-free-service strong small {
  font-size: 28px;
  margin-left: 3px;
  letter-spacing: 0;
}

.scope-free-plus {
  font-size: 30px;
  font-weight: 400;
  color: #d8eaff;
}

/* 修理例は数値の対応を近づけ、見出しの金額を先に読む。 */

.phone-repair-costs h3 em {
  font-style: normal;
  font-size: 1.3em;
  color: #9b4b13;
  white-space: nowrap;
}

.phone-repair-costs thead th:not(:first-child) {
  text-align: right;
}

.phone-repair-costs th:first-child {
  width: 32%;
}

@media (max-width:760px) {
  .scope-free-message {
    gap: 20px;
  }

  .scope-free-service {
    gap: 12px;
  }

  .scope-free-service > span {
    font-size: 18px;
  }

  .scope-free-service strong {
    font-size: 64px;
  }
}

@media(max-width:760px) {
  .scope-free-message {
    flex-wrap: wrap;
    gap: 4px 12px;
    max-width: 340px;
    margin-inline: auto;
  }

  .scope-free-service {
    justify-content: space-between;
    width: 100%;
    max-width: 260px;
  }

  .scope-free-service > span {
    font-size: 18px;
  }

  .scope-free-service strong {
    font-size: 60px;
  }

  .scope-free-service strong small {
    font-size: 24px;
  }

  .scope-free-plus {
    width: 100%;
    font-size: 24px;
    line-height: 1.2;
  }

  .scope-availability {
    font-size: 14px;
  }

  .phone-repair-costs th,
  .phone-repair-costs td {
    padding: 12px 10px;
  }

  .phone-repair-costs table {
    font-size: 13px;
  }

  .phone-repair-costs td {
    font-size: 16px;
  }

  .phone-repair-costs h3 {
    font-size: 20px;
  }

  .phone-repair-costs h3 em {
    font-size: 1.15em;
  }
}

.scope-value-panel {
  display: block;
  background: #1265ca;
  padding: 30px 40px;
  border-radius: 14px;
  margin: 44px 0 0;
  text-align: center;
  color: #fff;
}

.scope-value-explanation {
  font-size: 14px;
  line-height: 1.9;
  margin-top: 20px;
  color: #fff;
}

.scope-free-note {
  font-size: 12px;
  line-height: 1.9;
  text-align: left;
  margin-top: 18px;
  color: #e4efff;
  max-width: 780px;
  margin-inline: auto;
}

.symptom-routing {
  margin: 0;
}

.symptom-routing > h3 {
  font-size: 18px;
  text-align: left;
  margin-bottom: 12px;
  color: #40536a;
}

.scope-item .scope-example {
  display: block;
  font-size: 12px;
  line-height: 1.75;
  color: #52677f;
  margin-top: auto;
  padding-top: 10px;
}

.symptom-routing > .note {
  margin-top: 14px;
}

#scope .centered {
  margin-top: 28px;
}

.next-options {
  margin-top: 32px;
  text-align: center;
}

.next-options > p:first-child {
  font-size: 18px;
  font-weight: 600;
  margin-bottom: 18px;
}

.next-options a {
  border: 1px solid #c7def7;
  border-radius: 12px;
  text-align: left;
  padding: 20px 24px;
  text-decoration: none;
  color: var(--navy);
}

.next-options a:last-child {
  border-color: #f1cca4;
  background: #fff9f1;
}

.next-options a > span,
.next-options a strong {
  display: block;
}

.next-options a > span {
  font-size: 14px;
}

.next-options a strong {
  margin-top: 5px;
  display: flex;
  justify-content: space-between;
}

.next-options > .note {
  margin-top: 18px;
}

.direct-route {
  border-left: 4px solid var(--blue);
  background: #f6f9fd;
  padding: 18px 24px;
  margin-top: 28px;
}

.direct-route p {
  font-size: 14px;
  margin-top: 6px;
}

/* Comparison stays open. */

.support-block {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 24px;
  padding: 38px;
  margin-top: 30px;
  scroll-margin-top: 88px;
}

.support-heading {
  display: flex;
  gap: 20px;
  align-items: center;
  margin-bottom: 24px;
}

.support-heading > img {
  margin-left: auto;
}

.support-heading .eyebrow {
  margin-bottom: 3px;
}

.number-disc {
  background: var(--blue);
  color: #fff;
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  flex: 0 0 auto;
  font-weight: 700;
}

.support-block > p {
  max-width: 900px;
}

.comparison-title {
  margin: 32px 0 15px;
  font-size: 17px;
}

.comparison {
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: clip;
}

.comparison-row {
  display: grid;
  grid-template-columns: .68fr 1fr 1.2fr;
}

.comparison-row + .comparison-row {
  border-top: 1px solid var(--line);
}

.comparison-row > * {
  padding: 18px;
  font-size: 15px;
  align-content: center;
}

.comparison-row > :nth-child(2) {
  background: #f7f9fc;
  color: var(--muted);
  border-left: 1px solid #e2e9f0;
}

.comparison-row > :last-child {
  background: #eaf3ff;
  color: var(--navy);
  border-left: 1px solid var(--line);
}

.comparison-head {
  font-weight: 700;
}

.comparison-head > :last-child {
  color: #fff;
  background: var(--blue);
}

.comparison + .note {
  margin-top: 14px;
}

.check {
  color: var(--blue);
  font-size: 18px;
  margin-right: 4px;
}

.cost-note {
  border-top: 1px solid var(--line);
  padding-top: 22px;
  margin-top: 26px;
}

.cost-note > p {
  font-size: 14px;
  margin-top: 9px;
}

.exchange-block {
  border-top: 4px solid #e3a261;
}

.exchange-block .number-disc {
  background: var(--orange);
}

.exchange-block .eyebrow {
  color: var(--orange);
}

.quote-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin: 30px 0;
}

.quote-steps li {
  background: var(--warm);
  border-radius: 12px;
  padding: 22px 14px;
  text-align: center;
  position: relative;
}

.quote-steps li > span {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid #e2b384;
  color: var(--orange);
  margin: 0 auto 12px;
  font-weight: 700;
}

.quote-steps li strong {
  display: block;
  font-size: 20px;
  color: #844318;
  line-height: 1.7;
}

.quote-steps li small {
  display: block;
  font-size: 12px;
  margin-top: 13px;
}

.quote-steps li:not(:last-child)::after {
  content: "";
  position: absolute;
  right: -12px;
  top: 50%;
  width: 14px;
  height: 14px;
  background: #dda365;
  transform: rotate(45deg);
  z-index: 1;
}

.benefit-callout {
  text-align: center;
  color: var(--orange);
  font-size: 20px;
  font-weight: 700;
  padding-bottom: 10px;
}

/* Support philosophy and quiet company introduction. */

.philosophy {
  display: grid;
  grid-template-columns: 1.2fr .8fr;
  gap: 46px;
}

.philosophy > div > img {
  float: left;
  margin: 6px 22px 10px 0;
}

.choice-card {
  background: var(--warm);
  border-radius: 20px;
  padding: 28px;
  align-self: start;
}

.choice-card h3 {
  color: #884313;
  margin-bottom: 20px;
}

.check-list > li {
  position: relative;
  padding-left: 27px;
  margin-bottom: 14px;
}

.check-list > li::before {
  content: "✓";
  color: var(--blue);
  position: absolute;
  left: 0;
  font-weight: 700;
}

.choice-card p {
  font-size: 14px;
}

.accordion {
  border: 1px solid var(--line);
  border-radius: 12px;
  margin-top: 32px;
  background: #fff;
}

summary {
  cursor: pointer;
  list-style: none;
}

summary::-webkit-details-marker {
  display: none;
}

.accordion > summary {
  padding: 18px 24px;
  font-size: 15px;
  font-weight: 600;
  display: flex;
  justify-content: space-between;
  gap: 18px;
}

.accordion > summary > span:last-child {
  flex: 0 0 auto;
}

details[open] > summary > [aria-hidden="true"]:last-child {
  transform: rotate(45deg);
}

.accordion-body {
  border-top: 1px solid var(--line);
  padding: 24px;
  font-size: 14px;
}

.accordion-body h3 {
  font-size: 18px;
  margin-bottom: 16px;
}

.evidence-example {
  display: flex;
  gap: 20px;
  background: #f5f8fc;
  padding: 20px;
  margin: 20px 0;
}

.evidence-example img {
  width: 60px;
  height: fit-content;
}

.trust {
  background: #edf4fc;
}

.trust .section-heading {
  text-align: center;
}

.trust-copy {
  max-width: 800px;
  margin: 0 auto;
}

.company-pair {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 34px;
  margin: 34px 0 22px;
}

.company-pair > div {
  padding: 14px 24px;
  text-align: center;
}

.company-logo {
  display: block;
  width: 240px;
  max-width: 100%;
  height: 52px;
  object-fit: contain;
  margin: 0 auto 12px;
}

.price-service-logo {
  width: 230px;
  max-width: 100%;
  height: auto;
  margin-inline: auto;
}

.repair-example-note + .repair-example-note {
  margin-top: 7px;
}

.phone-continued-cover {
  margin-top: 22px;
  padding: 22px;
  background: #eaf3ff;
  border-left: 4px solid var(--blue);
  border-radius: 0 10px 10px 0;
}

.phone-continued-cover > p:first-child {
  color: var(--navy);
  font-size: 18px;
}

.phone-continued-steps {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 24px;
  margin-top: 16px;
  text-align: center;
  font-size: 15px;
}

.phone-continued-steps > span:not([aria-hidden]) {
  flex: 1;
  min-width: 0;
}

.phone-continued-steps > span:nth-child(2) {
  color: #7194bc;
  font-size: 25px;
}

.phone-continued-cover .note {
  margin-top: 14px;
}

.company-pair strong {
  display: block;
  color: var(--navy);
  font-size: 24px;
}

.company-pair div span {
  font-size: 13px;
}

.pair-mark {
  color: #6f99c3;
  font-size: 28px;
}

/* Price and renewal benefits. */

.price-layout {
  display: grid;
  grid-template-columns: .9fr 1.1fr;
  border: 1px solid var(--line);
  border-radius: 22px;
  overflow: clip;
}

.price-main {
  text-align: center;
  padding: 42px 25px;
  background: var(--pale);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.price-main > p:first-child {
  font-weight: 700;
  color: var(--navy);
  margin-bottom: 18px;
}

.price-main > .note {
  margin-top: 22px;
}

.price-number {
  flex-wrap: nowrap;
}

.included {
  padding: 30px;
}

.included h3 {
  font-size: 20px;
  margin-bottom: 22px;
}

.included .check-list p {
  font-size: 14px;
  margin-top: 5px;
}

.extra-costs {
  padding: 24px 28px;
  margin: 24px 0;
  background: #f7f9fc;
  border-radius: 14px;
}

.extra-costs h3 {
  font-size: 19px;
  margin-bottom: 18px;
}

.extra-costs .two-columns p {
  font-size: 15px;
  margin: 0;
}

.extra-costs > .note {
  margin-top: 15px;
}

#renewal-benefit .section-heading {
  text-align: center;
}

#renewal-benefit .lead {
  color: var(--orange);
  font-size: 20px;
  font-weight: 600;
}

.benefit-main {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 28px;
  padding: 36px;
  border: 1px solid #f0d2ae;
  border-radius: 22px;
  background: #fff;
  text-align: center;
  margin-bottom: 23px;
}

.point-art-pair {
  display: flex;
  align-items: center;
  gap: 16px;
}

.point-art-pair img {
  object-fit: contain;
  width: 70px;
  height: 82px;
}

.point-art-pair .point-house-mark {
  width: 64px;
  height: 82px;
}

.renewal-bubble {
  position: relative;
  border-radius: 18px;
  padding: 20px 16px;
  background: #fff1d9;
  border: 2px solid #e9a846;
  color: #9c5314;
}

.renewal-bubble::before {
  content: '';
  position: absolute;
  left: -10px;
  top: 46%;
  width: 16px;
  height: 16px;
  background: #fff1d9;
  border-left: 2px solid #e9a846;
  border-bottom: 2px solid #e9a846;
  transform: rotate(45deg);
}

.renewal-bubble > span {
  display: block;
  font-size: 13px;
  font-weight: 600;
}

.renewal-bubble > strong {
  display: block;
  font-size: 42px;
  line-height: 1.5;
  white-space: nowrap;
}

.renewal-bubble strong small {
  font-size: 15px;
  margin-right: 6px;
}

.point-conversion-note {
  color: #63574e;
  font-size: 12px;
  line-height: 1.9;
  margin: 0 auto 20px;
  max-width: 900px;
}

.renewal-chair-copy {
  color: var(--navy);
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 18px;
}

/* All three member benefits share the warm fee-section treatment. */

.member-benefit-summary {
  margin: 36px 0;
  text-align: center;
}

.member-benefit-summary h2 {
  font-size: 26px;
  margin-bottom: 22px;
}

.compact-benefits {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.compact-benefits > a {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 24px 18px;
  border: 1px solid #ecd2af;
  border-radius: 14px;
  background: #fff;
  text-decoration: none;
}

.compact-benefits img {
  width: 46px;
  height: 46px;
  margin-bottom: 14px;
}

.compact-benefits strong {
  font-size: 17px;
  line-height: 1.7;
}

.compact-benefits small {
  display: block;
  font-size: 13px;
  margin: 10px 0 18px;
}

.compact-benefits span {
  color: var(--blue);
  font-size: 13px;
  margin-top: auto;
}

.benefit-condition {
  font-size: 17px;
  font-weight: 600;
}

.benefit-number {
  color: var(--orange);
  margin: 10px 0;
  line-height: 1.3;
}

.benefit-number strong {
  font-size: 72px;
  letter-spacing: -.04em;
}

.benefit-number span {
  font-size: 25px;
  margin-left: 8px;
  font-weight: 700;
}

.benefit-main h3 {
  color: var(--navy);
}

#renewal-benefit .note {
  max-width: 760px;
  margin: 22px auto;
}

/* A readable yearly narrative, with source-qualified fee examples. */

.story-intro {
  display: grid;
  grid-template-columns: 1fr 225px;
  gap: 36px;
  align-items: center;
  margin-bottom: 35px;
}

.story-intro .section-heading {
  margin-bottom: 15px;
}

/* Native year-group table. */

.timeline-wrap {
  border: 1px solid var(--line);
  border-radius: 16px;
  overflow: hidden;
}

.timeline-table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
}

.timeline-table .year-col {
  width: 7%;
}

.timeline-table .event-col {
  width: 26%;
}

.timeline-table .flow-col {
  width: 39%;
}

.timeline-table .value-col {
  width: 28%;
}

.timeline-table th,
.timeline-table td {
  padding: 20px 16px;
  font-size: 14px;
  text-align: left;
  vertical-align: top;
}

.timeline-table thead {
  background: var(--blue);
  color: #fff;
}

.timeline-table thead th {
  font-size: 13px;
  padding-block: 15px;
}

.timeline-table tbody + tbody {
  border-top: 3px solid #bcd2ee;
}

.timeline-table tbody tr + tr {
  border-top: 1px solid var(--line);
}

.timeline-table .timeline-year {
  background: var(--pale);
  color: var(--blue);
  text-align: center;
  vertical-align: middle;
  font-size: 28px;
  padding-inline: 6px;
}

.timeline-year span {
  display: block;
  font-size: 13px;
}

.timeline-event img {
  width: 30px;
  height: 30px;
  object-fit: contain;
  float: left;
  margin: 3px 10px 8px 0;
}

.timeline-event div {
  overflow: hidden;
}

.timeline-event strong,
.timeline-event small {
  display: block;
}

.timeline-event small {
  color: #945019;
  font-size: 12px;
  margin-bottom: 5px;
}

.timeline-value {
  background: #f7faff;
}

.timeline-value b {
  color: var(--blue);
  font-size: 14px;
}

.timeline-value strong {
  display: block;
  color: #b45817;
  font-size: 17px;
}

.timeline-value small {
  display: block;
  margin-top: 6px;
  font-size: 12px;
}

.timeline-table .reward td {
  background: #fff6e7;
}

.timeline-wrap + .note {
  margin-top: 22px;
}

.source-note {
  margin-top: 20px;
}

.point-timing {
  margin-top: 28px;
  border-left: 4px solid #d78537;
  padding: 20px 24px;
  background: var(--warm);
}

.point-timing > strong {
  display: block;
  color: #884313;
  font-size: 18px;
}

.point-timing p {
  margin-top: 10px;
  font-size: 15px;
}

/* Campaign and insurance. */

.campaign {
  background: #fff0da;
  border-block: 1px solid #f4d9b8;
}

.campaign-layout {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  align-items: center;
  gap: 55px;
}

.campaign-layout img {
  border-radius: 22px;
}

.campaign-label {
  color: #8c4c17;
  font-size: 14px;
  font-weight: 700;
  margin-bottom: 18px;
}

.campaign h2 {
  font-size: 30px;
}

.campaign h2 em {
  font-style: normal;
  color: var(--orange);
  background: linear-gradient(transparent 70%, #ffd398 70%);
}

.cashback {
  display: flex;
  align-items: center;
  color: var(--orange);
  gap: 15px;
  margin: 17px 0 25px;
}

.cashback strong {
  font-size: 76px;
  letter-spacing: -.05em;
  line-height: 1.3;
}

.cashback span {
  font-size: 22px;
  font-weight: 700;
  line-height: 1.5;
}

.insurance-layout {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 40px;
}

.devices {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 26px 0 18px;
}

.devices > div {
  background: #fff;
  padding: 18px 8px 12px;
  border-radius: 10px;
  text-align: center;
}

.devices img {
  height: 46px;
  object-fit: contain;
  margin: 0 auto 12px;
}

.devices span {
  display: block;
  font-size: 13px;
  font-weight: 600;
}

.insurance-limit {
  text-align: center;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 24px;
  margin-bottom: 20px;
}

.limit-number {
  color: var(--blue);
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 6px;
  margin: 4px 0 12px;
}

.limit-number strong {
  font-size: 66px;
  line-height: 1.3;
}

.limit-number span {
  font-weight: 700;
  font-size: 18px;
}

.insurance-limit > p:last-child {
  font-size: 13px;
}

.insurance-layout .button {
  width: 100%;
  font-size: 14px;
  padding-inline: 16px;
}

/* Contract schedule: dates and the month being paid remain explicit. */

.contract-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: 1px solid var(--line);
  border-radius: 16px;
  overflow: clip;
  margin-bottom: 30px;
}

.contract-grid > div {
  padding: 22px 24px;
  border-bottom: 1px solid var(--line);
}

.contract-grid > div:nth-child(odd) {
  border-right: 1px solid var(--line);
}

.contract-grid > div:nth-last-child(-n+2) {
  border-bottom: 0;
}

.contract-grid dt {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 6px;
}

.contract-grid dd {
  font-weight: 600;
}

.schedule-panel {
  background: #f5f8fc;
  border-radius: 20px;
  padding: 30px;
  margin-bottom: 34px;
}

.schedule-panel > h3 {
  color: var(--navy);
  margin-bottom: 12px;
  font-size: 28px;
  line-height: 1.6;
}

.schedule-example {
  background: none;
  padding: 0;
  border-radius: 0;
  font-size: 14px;
  margin-block: 24px 18px;
}

.schedule {
  display: grid;
  grid-template-columns: 1fr 1.3fr 1fr;
  gap: 18px;
  align-items: stretch;
}

.schedule > li {
  background: #fff;
  border: 1px solid #d7e3ef;
  border-radius: 10px;
  padding: 21px 15px;
  position: relative;
}

.schedule > li::before {
  content: "";
  position: absolute;
  top: 35px;
  right: -20px;
  width: 18px;
  border-top: 2px solid #92b9e4;
}

.schedule > li:last-child::before {
  display: none;
}

.schedule .date {
  color: #5c6c7e;
  font-size: 17px;
  font-weight: 600;
  margin-bottom: 12px;
}

.schedule strong {
  font-size: 16px;
}

.schedule li > p:last-child {
  margin-top: 10px;
  font-size: 14px;
}

.schedule li.start {
  border: 1px solid #b7d0ef;
  padding: 21px 15px;
  background: #e5effd;
}

.schedule-summary {
  margin-top: 24px;
  font-size: 13px;
  color: #546477;
}

.schedule-summary p + p {
  margin-top: 3px;
}

.before-start {
  margin-top: 22px;
  border-top: 1px solid var(--line);
  padding-top: 18px;
}

.before-start h4 {
  margin-bottom: 10px;
}

.before-start p {
  font-size: 14px;
}

.renewal-note {
  border: 0;
  border-radius: 0;
  padding: 26px 0;
  margin-top: 28px;
  border-top: 1px solid var(--line);
}

.renewal-note h3 {
  font-size: 20px;
  margin-bottom: 14px;
}

.renewal-note > p {
  font-size: 15px;
}

.renewal-note > .note {
  font-size: 14px;
}

/* FAQ. */

.faq-list {
  display: grid;
  gap: 12px;
}

.faq-item {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
}

.faq-item summary {
  display: grid;
  grid-template-columns: 25px 1fr 20px;
  gap: 16px;
  padding: 22px 24px;
  font-weight: 600;
  line-height: 1.8;
}

.q {
  color: var(--blue);
  font-size: 20px;
  line-height: 1.4;
}

.faq-plus {
  color: var(--blue);
}

.faq-answer {
  margin-inline: 65px 24px;
  padding-block: 0 24px;
}

.faq-answer p {
  font-size: 15px;
}

.faq-answer .button {
  margin-top: 20px;
  font-size: 14px;
}

/* Final conversion area. */

.apply {
  color: #fff;
  background: linear-gradient(125deg, #164c96, #123c72);
}

.apply-heading {
  display: flex;
  gap: 30px;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
}

.apply-heading h2 {
  margin-bottom: 14px;
}

.apply-art {
  max-width: 18%;
}

.apply-panel {
  background: #fff;
  color: var(--ink);
  border-radius: 22px;
  padding: 26px;
}

.apply-price {
  text-align: center;
  margin-bottom: 22px;
}

.apply-price > p:first-child {
  font-weight: 700;
  margin-bottom: 12px;
}

.apply-price .note {
  margin-top: 10px;
}

.final-benefits {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.final-benefits > div {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 20px;
  border-radius: 12px;
  background: var(--pale);
}

.final-benefits > div > img {
  width: 38px;
  height: 38px;
  margin-bottom: 12px;
}

.final-benefits p {
  font-size: 13px;
  margin-bottom: 14px;
}

.final-benefits strong {
  line-height: 1.65;
  display: block;
  font-size: 18px;
  color: var(--navy);
}

.final-benefits small {
  display: block;
  margin-top: 13px;
}

.final-benefits .text-link {
  margin-top: auto;
  padding-top: 12px;
}

.final-campaign {
  display: grid;
  grid-template-columns: 1fr auto;
  background: var(--warm);
  border: 1px solid #f0d0aa;
  border-radius: 12px;
  padding: 20px 24px;
  margin-top: 22px;
  text-decoration: none;
  color: #8d4717;
}

.final-campaign > span:first-child {
  font-size: 13px;
}

.final-campaign strong {
  grid-column: 1;
  font-size: 24px;
}

.final-campaign > span:last-child {
  grid-column: 2;
  grid-row: 1 / 3;
  align-self: center;
}

.final-action {
  text-align: center;
  margin-top: 22px;
}

.final-action > p:first-child {
  font-size: 15px;
  font-weight: 600;
  margin-bottom: 16px;
}

.final-action > .button {
  min-width: 390px;
  min-height: 62px;
}

.test-note {
  font-size: 12px;
  color: var(--muted);
  margin-top: 14px;
}

.provider {
  font-size: 13px;
  margin-top: 22px;
}

footer {
  text-align: center;
  padding: 30px 20px;
  font-size: 13px;
  background: #fff;
}

footer p + p {
  margin-top: 4px;
}

/* One navigation control, two viewport-specific surfaces. */

.smart-header {
  position: fixed;
  z-index: 40;
  top: 0;
  left: 0;
  right: 0;
  height: var(--header-height);
  background: #fffffff5;
  border-bottom: 1px solid var(--line);
  box-shadow: 0 3px 15px #17457e0a;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 0 28px;
}

.smart-header .wordmark {
  font-size: 20px;
}

.desktop-rail {
  display: none;
}

.rail-title {
  font-size: 12px;
  color: var(--muted);
  font-weight: 700;
  padding: 0 8px 10px;
}

#railNav {
  display: grid;
  gap: 3px;
}

#railNav a {
  display: block;
  text-decoration: none;
  border-radius: 6px;
  padding: 8px 10px;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.65;
  border-left: 3px solid transparent;
}

#railNav a[aria-current="location"] {
  color: var(--blue);
  background: #eaf3ff;
  border-left-color: var(--blue);
  font-weight: 700;
}

.nav-campaign {
  display: block;
  margin-top: 16px;
  border: 1px solid #efc998;
  background: var(--warm);
  border-radius: 10px;
  padding: 13px 12px;
  text-decoration: none;
  color: #8c4310;
}

.nav-campaign > span {
  display: block;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.8;
}

.nav-campaign > strong {
  display: block;
  font-size: 28px;
  line-height: 1.5;
  margin-top: 3px;
}

.nav-campaign > b {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
}

.bottom-cta {
  position: fixed;
  z-index: 45;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 28px;
  padding: 8px 20px calc(10px + env(safe-area-inset-bottom, 0px));
  background: #fff;
  border-top: 1px solid var(--line);
  box-shadow: 0 -5px 20px #163e7410;
}

.bottom-cta > div {
  line-height: 1.5;
}

.bottom-cta > div > span {
  font-size: 14px;
  display: block;
}

.bottom-cta strong {
  font-size: 22px;
  color: var(--navy);
}

.bottom-cta > div > small {
  display: block;
  font-size: 13px;
}

.bottom-cta .button {
  min-height: 44px;
  padding: 9px 28px;
  font-size: 15px;
}

body.modal-open .bottom-cta {
  display: none;
}

/* Native dialogs provide focus isolation and Escape dismissal. */

dialog {
  color: var(--ink);
  font-family: inherit;
  line-height: 1.9;
  border: 0;
  padding: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}

dialog::backdrop {
  background: #122d49a8;
}

.modal {
  width: min(900px, calc(100% - 36px));
  max-height: 88dvh;
  border-radius: 18px;
}

.modal-header {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #fff;
  border-bottom: 1px solid var(--line);
  padding: 19px 26px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.modal-header h2 {
  font-size: 21px;
}

.close-button {
  display: inline-flex;
  gap: 10px;
  align-items: center;
  flex: 0 0 auto;
  min-height: 40px;
  padding: 7px 12px;
  font-size: 13px;
  background: var(--pale);
  color: var(--navy);
  border: 1px solid var(--line);
  border-radius: 6px;
}

.close-button span {
  font-size: 20px;
  line-height: 1;
}

.modal-body {
  padding: 30px;
}

.modal-body > h3 {
  font-size: 21px;
  margin: 30px 0 16px;
}

.modal-body > h3:first-child {
  margin-top: 0;
}

.modal-body .lead {
  font-size: 16px;
}

.modal-end {
  margin-top: 34px;
}

.modal .facts-strip {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.detail-list,
.definition-list {
  border-top: 1px solid var(--line);
  margin-top: 24px;
}

.detail-list > div,
.definition-list > div {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 20px;
  border-bottom: 1px solid var(--line);
  padding: 20px 0;
}

.detail-list dt,
.definition-list dt {
  font-weight: 700;
  font-size: 14px;
}

.detail-list dd,
.definition-list dd {
  font-size: 14px;
}

.plain-list,
.document-list {
  padding-left: 22px;
  list-style: disc;
  font-size: 14px;
}

.plain-list li + li,
.document-list li + li {
  margin-top: 10px;
}

.modal-gift {
  text-align: center;
  padding: 26px 18px;
  border-radius: 16px;
  background: var(--warm);
}

.modal-gift h3 {
  font-size: 24px;
  margin-top: 20px;
}

.modal-gift strong {
  color: var(--orange);
  font-size: 34px;
}

.receive-steps {
  display: grid;
  gap: 15px;
}

.receive-steps li {
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 12px;
  display: flex;
  align-items: center;
  gap: 24px;
}

.receive-steps img {
  flex: 0 0 44px;
}

.receive-steps h4 {
  font-size: 17px;
  margin-bottom: 7px;
}

.receive-steps p {
  font-size: 14px;
}

/* 保険詳細は写真・端末アイコン・補償額・対象者の順に理解できます。 */

.insurance-scenes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin: 22px 0 14px;
}

.insurance-scenes img {
  width: 100%;
  aspect-ratio: 2.1;
  object-fit: cover;
  border-radius: 12px;
}

.insurance-scenes figcaption {
  font-size: 13px;
  margin-top: 8px;
  text-align: center;
  color: var(--navy);
}

.insurance-repair-cases {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.insurance-repair-cases > div {
  position: relative;
  padding: 22px 18px 20px 64px;
  background: #eff6ff;
  border-radius: 14px;
}

.insurance-repair-cases img {
  position: absolute;
  left: 18px;
  top: 22px;
  width: 30px;
  height: 30px;
}

.insurance-repair-cases span {
  display: block;
  font-size: 14px;
  font-weight: 600;
}

.insurance-repair-cases strong {
  color: var(--blue);
  display: block;
  font-size: 22px;
  line-height: 1.6;
}

.insurance-repair-cases em {
  font-style: normal;
  font-size: 44px;
  margin: 0 3px;
}

.insurance-repair-cases p {
  font-size: 12px;
}

.insurance-year-limit {
  text-align: center;
  margin: 16px 0 12px;
  color: var(--blue);
  font-weight: 700;
}

.device-modal-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  list-style: none;
  padding: 0;
  margin-top: 20px;
}

.device-modal-list li {
  text-align: center;
  font-size: 12px;
}

.device-modal-list img {
  width: 52px;
  height: 48px;
  object-fit: contain;
  margin: 0 auto 12px;
}

.insurance-family-summary {
  display: flex;
  align-items: center;
  gap: 24px;
  margin: 30px 0 22px;
}

.insurance-family-summary > img {
  width: 100px;
  height: 100px;
  object-fit: contain;
  flex-shrink: 0;
}

.insurance-family-summary h3 {
  font-size: 20px;
  margin-bottom: 10px;
}

.insurance-family-summary p {
  font-size: 13px;
}

.insurance-device-count {
  border-left: 3px solid #78a9e6;
  padding-left: 18px;
  margin-bottom: 24px;
}

.insurance-device-count strong,
.insurance-device-count span {
  display: block;
}

.insurance-device-count strong {
  font-size: 16px;
}

.insurance-device-count span {
  font-size: 12px;
  margin-top: 6px;
}

.insurance-damage-summary {
  margin-top: 26px;
}

.insurance-damage-summary > div + div {
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
}

.insurance-damage-summary h3 {
  font-size: 16px;
  margin-bottom: 8px;
}

.insurance-damage-summary p {
  font-size: 13px;
}

.insurance-docs .document-list {
  padding: 22px 26px 22px 44px;
  margin: 0;
  list-style-position: outside;
}

.insurance-document-links {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  margin: 18px 0 24px;
}

.insurance-document-links small {
  font-size: 13px;
  color: #52677f;
}

.terms-links {
  margin-top: 32px;
  padding-top: 26px;
  border-top: 1px solid var(--line);
}

.terms-links h3 {
  font-size: 20px;
  margin-bottom: 10px;
}

.terms-links ul {
  list-style: none;
  padding: 0;
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.pending-document {
  cursor: default;
}

.insurance-contact {
  border: 1px solid var(--line);
  padding: 20px;
  border-radius: 12px;
  margin-top: 24px;
}

@media (min-width: 1440px) {

  .hero,
  main,
  footer {
    margin-right: 236px;
  }

  .desktop-rail {
    display: block;
    position: fixed;
    top: 86px;
    right: 18px;
    bottom: calc(92px + env(safe-area-inset-bottom, 0px));
    width: 204px;
    height: fit-content;
    max-height: calc(100dvh - 184px);
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    padding: 16px 8px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 14px;
    box-shadow: 0 8px 25px #173b6610;
  }
}

@media (max-width: 1000px) {
  .section {
    padding: 72px 0;
  }

  .hero-grid {
    gap: 16px;
  }

  .hero-cta {
    min-width: 0;
  }

  .audience {
    font-size: 12px;
  }

  h1 {
    font-size: 35px;
  }

  .hero-lead {
    font-size: 15px;
  }

  .hero-visual::before {
    top: 80px;
  }

  .scope-grid {
    gap: 12px;
  }

  .scope-item h3 {
    font-size: 14px;
  }

  .support-block {
    padding: 28px;
  }

  .comparison-row > * {
    padding: 15px 12px;
    font-size: 14px;
  }

  .philosophy {
    gap: 28px;
  }

  .price-layout {
    grid-template-columns: .85fr 1.15fr;
  }

  .price-main {
    padding: 30px 16px;
  }

  .price-number strong {
    font-size: 56px;
  }

  .event img {
    margin-bottom: 8px;
  }

  .campaign-layout {
    gap: 30px;
  }

  .cashback strong {
    font-size: 65px;
  }

  .cashback span {
    font-size: 19px;
  }

  .insurance-layout {
    gap: 25px;
  }
}

@media (min-width: 761px) and (max-width: 1050px) {
  .benefit-main {
    gap: 20px;
    padding: 24px;
  }

  .point-art-pair {
    flex-direction: row;
    gap: 10px;
  }

  .point-art-pair img,
  .point-art-pair .point-house-mark {
    width: 48px;
    height: 58px;
  }

  .renewal-bubble > strong {
    font-size: 34px;
  }
}

@media (max-width: 900px) {}

@media (max-width: 760px) {
  .container {
    width: calc(100% - 36px);
  }

  body {
    font-size: 15px;
    line-height: 1.95;
  }

  .section {
    padding: 54px 0;
  }

  h2 {
    font-size: 27px;
    line-height: 1.65;
    letter-spacing: 0;
  }

  h3 {
    font-size: 21px;
  }

  .lead {
    font-size: 15px;
  }

  .section-heading {
    margin-bottom: 28px;
  }

  .section-heading .lead {
    margin-top: 17px;
  }

  .note {
    font-size: 13px;
  }

  .eyebrow {
    font-size: 12px;
  }

  .desktop-break {
    display: none;
  }

  .mobile-break {
    display: initial;
  }

  .two-columns {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  .button {
    font-size: 14px;
    padding: 14px 18px;
    gap: 16px;
  }

  .wordmark {
    font-size: 20px;
  }

  .hero {
    padding-bottom: 38px;
  }

  .hero-grid {
    display: flex;
    flex-direction: column;
    gap: 30px;
    padding-top: 16px;
  }

  .hero-copy {
    width: 100%;
    order: 1;
  }

  .audience {
    font-size: 12px;
    margin-bottom: 18px;
  }

  h1 {
    font-size: 33px;
    line-height: 1.6;
  }

  .hero-lead {
    margin-top: 21px;
    font-size: 15px;
  }

  .hero-services {
    margin-top: 18px;
  }

  .hero-services > span {
    padding-inline: 9px;
    font-size: 12px;
  }

  .hero-price {
    margin-top: 20px;
  }

  .hero-price strong {
    font-size: 58px;
  }

  .hero-cta {
    width: 100%;
    margin-top: 20px;
  }

  .hero-visual {
    align-self: center;
    width: 82%;
    max-width: 360px;
  }

  .hero-visual::before {
    width: 116%;
    top: 10px;
  }

  .hero-photo {
    border-radius: 45% 45% 18px 18px;
  }

  .visual-dot {
    width: 38px;
    height: 38px;
    bottom: 24px;
  }

  .service-card {
    padding: 24px;
  }

  .service-card > img {
    top: 23px;
    right: 23px;
  }

  .service-kicker {
    gap: 12px;
    margin-bottom: 14px;
  }

  .service-kicker span {
    font-size: 27px;
  }

  .service-kicker p {
    font-size: 12px;
  }

  .service-card h3 {
    font-size: 21px;
    margin-bottom: 14px;
  }

  .overview-plus {
    align-items: flex-start;
    padding: 19px;
    gap: 12px;
    font-size: 14px;
  }

  .plus {
    font-size: 26px;
    line-height: 1.5;
  }

  .facts-strip {
    gap: 0;
    padding-block: 15px;
    margin-top: 27px;
  }

  .facts-strip > div {
    padding-inline: 5px;
  }

  .facts-strip span {
    font-size: 13px;
    line-height: 1.7;
    min-height: 38px;
    align-content: center;
  }

  .facts-strip strong {
    font-size: 15px;
    margin-top: 4px;
  }

  .split-heading {
    grid-template-columns: 1fr;
    gap: 25px;
    margin-bottom: 25px;
  }

  .split-heading figure {
    width: 78%;
    max-width: 340px;
    margin-inline: auto;
  }

  .scope-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }

  .scope-item {
    padding: 20px 8px;
  }

  .scope-item h3 {
    font-size: 16px;
  }

  .next-options > p:first-child {
    font-size: 16px;
  }

  .next-options .two-columns {
    gap: 12px;
  }

  .next-options a {
    padding: 17px 20px;
  }

  .direct-route {
    padding: 18px;
  }

  .direct-route strong {
    font-size: 14px;
  }

  .direct-route p {
    font-size: 13px;
  }

  .support-block {
    padding: 24px 16px;
    border-radius: 16px;
  }

  .support-heading {
    gap: 12px;
    align-items: flex-start;
  }

  .number-disc {
    width: 34px;
    height: 34px;
    font-size: 13px;
  }

  .support-heading > img {
    display: none;
  }

  .support-heading h3 {
    font-size: 21px;
  }

  .support-block > p {
    font-size: 14px;
  }

  .comparison-title {
    font-size: 15px;
    margin-top: 25px;
  }

  .comparison-row {
    grid-template-columns: .63fr 1fr 1.14fr;
  }

  .comparison-row > * {
    padding: 12px 7px;
    font-size: 12px;
    line-height: 1.9;
  }

  .comparison-head > :last-child {
    font-size: 12px;
  }

  .comparison-row br {
    display: none;
  }

  .check {
    font-size: 14px;
    margin-right: 2px;
  }

  .cost-note > p {
    font-size: 13px;
  }

  .quote-steps {
    grid-template-columns: 1fr;
    gap: 14px;
    margin-block: 24px;
  }

  .quote-steps li {
    display: grid;
    grid-template-columns: 28px 1fr;
    gap: 4px 13px;
    text-align: left;
    padding: 19px;
  }

  .quote-steps li > span {
    margin: 2px 0 0;
    grid-row: 1 / 3;
  }

  .quote-steps li strong {
    font-size: 18px;
  }

  .quote-steps li strong br {
    display: none;
  }

  .quote-steps li small {
    margin-top: 5px;
  }

  .quote-steps li:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: -9px;
    left: 26px;
    width: 12px;
    height: 12px;
  }

  .benefit-callout {
    font-size: 17px !important;
  }

  .philosophy {
    grid-template-columns: 1fr;
    gap: 27px;
  }

  .philosophy > div > img {
    width: 55px;
    margin-right: 15px;
  }

  .choice-card {
    padding: 24px;
  }

  .accordion > summary {
    padding: 17px 18px;
    font-size: 14px;
  }

  .accordion-body {
    padding: 20px 18px;
    font-size: 13px;
  }

  .evidence-example {
    padding: 16px;
    gap: 12px;
  }

  .evidence-example img {
    width: 36px;
  }

  .trust .section-heading {
    text-align: left;
  }

  .company-pair {
    gap: 10px;
    margin-top: 26px;
  }

  .company-pair > div {
    padding: 10px 0;
  }

  .company-pair strong {
    font-size: 18px;
  }

  .company-pair div span {
    font-size: 13px;
  }

  .pair-mark {
    font-size: 21px;
  }

  .price-layout {
    grid-template-columns: 1fr;
  }

  .price-main {
    padding: 28px 20px;
  }

  .price-number strong {
    font-size: 58px;
  }

  .included {
    padding: 26px 22px;
  }

  .included h3 {
    font-size: 19px;
  }

  .extra-costs {
    padding: 22px;
  }

  .extra-costs h3 {
    font-size: 18px;
  }

  .extra-costs .two-columns {
    gap: 14px;
  }

  .extra-costs .two-columns p {
    font-size: 14px;
  }

  #renewal-benefit .section-heading {
    text-align: left;
  }

  #renewal-benefit .lead {
    font-size: 17px;
  }

  .benefit-main {
    grid-template-columns: 1fr;
    padding: 24px 16px;
    gap: 20px;
  }

  .point-art-pair {
    flex-direction: row;
    justify-content: center;
    gap: 12px;
  }

  .point-art-pair img,
  .point-art-pair .point-house-mark {
    width: 40px;
    height: 48px;
  }

  .renewal-bubble {
    grid-column: 1 / -1;
    justify-self: center;
    padding: 14px 24px;
  }

  .renewal-bubble::before {
    top: -10px;
    left: calc(50% - 8px);
    transform: rotate(135deg);
  }

  .point-conversion-note {
    font-size: 13px;
  }

  .renewal-chair-copy {
    font-size: 18px;
  }

  .service-value-band {
    gap: 6px;
  }

  .service-value-band strong {
    font-size: 14px;
  }

  .hero .service-value-band {
    padding: 14px 4px;
    margin-top: 18px;
  }

  .scope-value-explanation {
    font-size: 12px;
  }

  .scope-free-note {
    font-size: 12px;
  }

  .symptom-routing > h3 {
    font-size: 18px;
  }

  .hero-grid > .hero-visual {
    order: 3;
  }

  .scope-value-panel {
    padding: 30px 20px;
  }

  .insurance-scenes {
    gap: 12px;
  }

  .insurance-scenes img {
    aspect-ratio: 1.5;
  }

  .insurance-scenes figcaption {
    font-size: 13px;
  }

  .insurance-repair-cases {
    gap: 12px;
  }

  .insurance-repair-cases > div {
    padding: 18px 10px;
    text-align: center;
  }

  .insurance-repair-cases img {
    position: static;
    margin: 0 auto 8px;
    width: 28px;
    height: 28px;
  }

  .insurance-repair-cases span {
    font-size: 12px;
  }

  .insurance-repair-cases em {
    font-size: 34px;
  }

  .insurance-repair-cases strong {
    font-size: 18px;
  }

  .insurance-repair-cases p {
    font-size: 13px;
  }

  .insurance-year-limit {
    font-size: 13px;
  }

  .device-modal-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px 14px;
  }

  .insurance-family-summary {
    gap: 16px;
    align-items: flex-start;
  }

  .insurance-family-summary > img {
    width: 68px;
    height: 68px;
  }

  .insurance-family-summary h3 {
    font-size: 17px;
  }

  .insurance-family-summary p {
    font-size: 12px;
  }

  .insurance-device-count strong {
    font-size: 14px;
  }

  .insurance-docs .document-list {
    padding: 20px 20px 20px 38px;
  }

  .terms-links .text-link {
    font-size: 13px;
  }

  .member-benefit-summary h2 {
    font-size: 23px;
  }

  .compact-benefits {
    gap: 10px;
  }

  .compact-benefits > a {
    padding: 18px 10px;
  }

  .compact-benefits strong {
    font-size: 13px;
  }

  .compact-benefits small {
    font-size: 13px;
  }

  .compact-benefits span {
    font-size: 13px;
  }

  .final-benefits {
    gap: 9px;
  }

  .final-benefits small {
    font-size: 13px;
  }

  .final-benefits .text-link {
    font-size: 13px;
  }

  .benefit-main > img {
    display: none;
  }

  .benefit-condition {
    font-size: 15px;
  }

  .benefit-number strong {
    font-size: 62px;
  }

  .benefit-number span {
    font-size: 21px;
  }

  .benefit-main h3 {
    font-size: 21px;
  }

  .story-intro {
    grid-template-columns: 1fr;
    gap: 15px;
    margin-bottom: 28px;
  }

  .story-intro > img {
    width: 190px;
    margin-inline: auto;
  }

  .event img {
    margin-bottom: 0;
    width: 28px;
    flex-basis: 28px;
  }

  .event strong {
    font-size: 15px;
    font-weight: 700;
  }

  .story-value small {
    font-size: 12px;
  }

  .point-timing {
    padding: 18px;
  }

  .point-timing > strong {
    font-size: 16px;
  }

  .point-timing p {
    font-size: 14px;
  }

  .campaign-layout {
    grid-template-columns: 1fr;
    gap: 27px;
  }

  .campaign-layout > figure {
    width: 75%;
    margin-inline: auto;
  }

  .campaign h2 {
    font-size: 27px;
  }

  .campaign .button {
    width: 100%;
  }

  .campaign-label {
    font-size: 12px;
  }

  .cashback {
    gap: 12px;
    margin-bottom: 23px;
  }

  .cashback strong {
    font-size: 68px;
  }

  .cashback span {
    font-size: 20px;
  }

  .insurance-layout {
    grid-template-columns: 1fr;
    gap: 25px;
  }

  .devices {
    gap: 7px;
  }

  .devices > div {
    padding-inline: 4px;
  }

  .devices span {
    font-size: 13px;
  }

  .devices img {
    height: 40px;
  }

  .insurance-limit {
    padding: 23px 16px;
  }

  .contract-grid {
    grid-template-columns: 1fr;
  }

  .contract-grid > div {
    padding: 17px 22px;
  }

  .contract-grid > div:nth-child(odd) {
    border-right: 0;
  }

  .contract-grid > div:nth-last-child(2) {
    border-bottom: 1px solid var(--line);
  }

  .schedule-panel {
    padding: 24px 18px;
  }

  .schedule-panel > h3 {
    font-size: 21px;
  }

  .schedule-panel > p {
    font-size: 14px;
  }

  .schedule-example {
    padding: 12px;
  }

  .schedule {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  .schedule > li {
    padding: 18px;
  }

  .schedule > li::before {
    right: auto;
    top: auto;
    left: 32px;
    bottom: -18px;
    width: 0;
    height: 18px;
    border-top: 0;
    border-left: 2px solid #92b9e4;
  }

  .schedule .date {
    font-size: 17px;
    margin-bottom: 7px;
  }

  .schedule li > p:last-child {
    margin-top: 6px;
  }

  .schedule li > p:last-child br {
    display: none;
  }

  .schedule li.start {
    padding: 17px;
  }

  .renewal-note {
    padding: 23px;
  }

  .renewal-note > p {
    font-size: 14px;
  }

  .faq-item summary {
    grid-template-columns: 20px 1fr 16px;
    gap: 10px;
    padding: 18px;
    font-size: 14px;
  }

  .q {
    font-size: 18px;
  }

  .faq-answer {
    margin-inline: 18px;
    padding-bottom: 20px;
  }

  .faq-answer p {
    font-size: 14px;
  }

  .apply-heading {
    align-items: start;
    position: relative;
    padding-bottom: 15px;
  }

  .apply-heading h2 {
    font-size: 27px;
  }

  .apply-heading p {
    font-size: 14px;
  }

  .apply-art {
    display: none;
  }

  .apply-panel {
    padding: 24px 16px;
    border-radius: 16px;
  }

  .apply-price {
    margin-bottom: 24px;
  }

  .apply-price .price-number {
    gap: 6px;
  }

  .apply-price .price-number strong {
    font-size: 52px;
  }

  .final-benefits > div {
    padding: 16px 10px;
  }

  .final-benefits strong {
    font-size: 13px;
  }

  .final-campaign {
    padding: 18px 16px;
    gap: 4px 8px;
  }

  .final-campaign > span:first-child {
    font-size: 12px;
  }

  .final-campaign strong {
    font-size: 20px;
  }

  .final-action > p:first-child {
    font-size: 13px;
  }

  .final-action > .button {
    min-width: 0;
    width: 100%;
    font-size: 13px;
    gap: 8px;
    padding-inline: 10px;
  }

  .final-action .note {
    font-size: 12px;
  }

  .smart-header {
    padding: 0 15px;
    gap: 10px;
  }

  .smart-header .wordmark {
    font-size: 18px;
  }

  .bottom-cta {
    gap: 10px;
    padding: 8px 12px calc(10px + env(safe-area-inset-bottom, 0px));
  }

  .bottom-cta > div {
    flex: 0 0 auto;
  }

  .bottom-cta > div > span {
    font-size: 13px;
  }

  .bottom-cta strong {
    font-size: 18px;
  }

  .bottom-cta > div small {
    font-size: 13px;
  }

  .bottom-cta .button {
    flex: 0 1 245px;
    font-size: 12px;
    gap: 6px;
    padding: 10px 9px;
    min-height: 44px;
  }

  .modal {
    width: calc(100% - 20px);
    max-height: 92dvh;
    border-radius: 12px;
  }

  .modal-header {
    padding: 14px 16px;
    gap: 12px;
  }

  .modal-header h2 {
    font-size: 17px;
  }

  .close-button {
    padding: 7px 9px;
    font-size: 13px;
    gap: 6px;
  }

  .modal-body {
    padding: 22px 18px;
  }

  .modal-body .lead {
    font-size: 14px;
  }

  .modal-body > h3 {
    font-size: 19px;
  }

  .detail-list > div,
  .definition-list > div {
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 16px 0;
  }

  .detail-list dd,
  .definition-list dd {
    font-size: 13px;
  }

  .modal-gift {
    padding-inline: 12px;
  }

  .modal-gift p {
    font-size: 13px;
  }

  .modal-gift h3 {
    font-size: 21px;
  }

  .modal-gift strong {
    font-size: 30px;
  }

  .receive-steps li {
    padding: 18px 14px;
    gap: 15px;
  }

  .receive-steps img {
    width: 32px;
    flex-basis: 32px;
  }

  .receive-steps h4 {
    font-size: 15px;
  }

  .receive-steps p {
    font-size: 13px;
  }

  .coverage-grid {
    gap: 10px;
  }

  .coverage-grid strong {
    font-size: 20px;
  }

  .coverage-grid > div {
    padding-inline: 8px;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    transition-duration: 0s !important;
    animation-duration: 0s !important;
  }
}

/* Revisions from the returned decision sheet. */

.desktop-rail .nav-campaign {
  margin: 0 0 18px;
}

.nav-campaign .nav-campaign-audience {
  font-size: 13px;
  padding-bottom: 7px;
  margin-bottom: 7px;
  border-bottom: 1px solid #edc9a0;
}

.renewal-cases {
  margin: 28px auto 0;
  max-width: 800px;
  gap: 20px;
}

.renewal-cases article {
  border: 1px solid #eacda9;
  background: #fffaf2;
  padding: 24px;
  border-radius: 14px;
  text-align: center;
}

.renewal-cases h3 {
  font-size: 18px;
  margin-bottom: 13px;
  color: var(--navy);
}

.renewal-cases p {
  font-size: 15px;
}

@media (max-width: 760px) {
  .comparison-head {
    display: none;
  }

  .comparison-row:not(.comparison-head) {
    grid-template-columns: 1fr;
  }

  .comparison-row > * {
    padding: 14px 16px;
    font-size: 14px;
  }

  .comparison-row > :first-child {
    font-weight: 700;
    padding-block: 10px;
  }

  .comparison-row > :nth-child(2),
  .comparison-row > :last-child {
    border-left: 0;
  }

  .comparison-row > :nth-child(2)::before {
    content: "ご自身で手配";
    display: block;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 4px;
  }

  .comparison-row > :last-child::before {
    content: "保証できすぎくん";
    display: block;
    font-size: 13px;
    color: var(--blue);
    margin-bottom: 4px;
  }

  .renewal-cases {
    gap: 14px;
  }

  .renewal-cases article {
    padding: 20px 15px;
  }

  .renewal-cases h3 {
    font-size: 17px;
  }

  .renewal-cases p {
    font-size: 14px;
  }
}



/* ===== SECTION 02 | 移行元: r3.css ===== */
/* R3のページ固有・共通ナビゲーション。styles.cssの基本部品の後に読み込みます。
   TOPとサービス開発の想いで共有するクラスの変更は、両ページで確認してください。 */

:root {
  --header-height: 72px;
}

.smart-header {
  position: sticky;
  padding: 10px clamp(20px, 3vw, 56px);
  min-height: var(--header-height);
  height: auto;
}

.smart-header .wordmark {
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  font-size: 22px;
  display: inline-flex;
}

.smart-header .brand-tagline {
  display: block;
  font-size: 13px;
  line-height: 1.4;
  color: #111;
  white-space: nowrap;
  letter-spacing: .035em;
  text-align: right;
}

.primary-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px clamp(24px, 3vw, 48px);
  margin-left: auto;
  min-width: 0;
}

.primary-nav a {
  color: var(--ink);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.primary-nav a:hover,
.primary-nav [aria-current] {
  color: var(--blue);
  text-decoration: underline;
  text-underline-offset: 7px;
}

.header-apply {
  min-height: 44px;
  padding: 10px 22px;
  font-size: 15px;
  gap: 18px;
  flex-shrink: 0;
}

html {
  scroll-padding-top: var(--nav-offset, 88px);
}

section,
[id="repairSupport"],
[id="exchangeSupport"] {
  scroll-margin-top: 16px;
}

.hero {
  padding-block: clamp(28px, 5vh, 56px) 42px;
}

.hero-grid {
  padding-top: 0;
}

.hero-photo {
  width: auto;
  max-height: min(510px, 56vh);
  object-fit: contain;
}

.hero-visual {
  align-self: center;
}

.hero-visual::before {
  top: 4%;
  width: 110%;
  height: 92%;
  aspect-ratio: auto;
}

.hero h1 {
  font-size: clamp(32px, 3.25vw, 42px);
  line-height: 1.48;
}

.hero-lead {
  font-size: 16px;
  line-height: 1.9;
}

.audience {
  margin-bottom: 20px;
}

.section {
  padding-block: 76px;
}

.section-heading {
  margin-bottom: 30px;
}

.section-heading .lead {
  margin-top: 18px;
}

.support-branches {
  margin-top: 40px;
}

.branch-intro {
  text-align: center;
  font-size: 19px;
  font-weight: 700;
  margin-bottom: 22px;
}

.support-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  align-items: stretch;
}

.support-option {
  border: 1px solid var(--line);
  border-top: 4px solid var(--blue);
  border-radius: 16px;
  padding: 30px;
  background: #f8fbff;
  display: flex;
  flex-direction: column;
}

.support-option h3 {
  font-size: 26px;
  margin-bottom: 22px;
  line-height: 1.6;
}

.support-option > p:not(.eyebrow):not(.note) {
  font-size: 16px;
}

.support-option .eyebrow {
  margin-top: 0;
}

.exchange-option {
  border-color: #eed7bd;
  border-top-color: var(--orange);
  background: #fffbf5;
}

.exchange-option .eyebrow {
  color: var(--orange);
}

.quote-benefit {
  border-radius: 10px;
  margin-block: 24px;
  padding: 22px;
  background: #fff0da;
}

.small-label {
  font-size: 13px;
  color: #945019;
}

.quote-benefit h4 {
  margin-top: 8px;
  font-size: 18px;
}

.quote-benefit p {
  font-size: 15px;
  margin-top: 14px;
}

.branch-footnote {
  margin-top: auto;
  padding-top: 22px;
  border-top: 1px solid var(--line);
}

.branch-footnote h4 {
  font-size: 16px;
}

.branch-footnote p {
  margin-top: 10px;
}

.branch-choice {
  margin-top: 20px;
  text-align: center;
  font-size: 15px;
}

.story-link-panel {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  margin-top: 36px;
  padding: 28px 32px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #f7fbff;
  color: var(--navy);
  text-decoration: none;
}

.story-link-panel .eyebrow {
  display: block;
  margin-bottom: 8px;
}

.story-link-panel strong {
  font-size: 23px;
}

.story-link-label {
  font-size: 15px;
  text-decoration: underline;
  text-underline-offset: 5px;
}

.insurance-teaser {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 24px 30px;
  border: 1px solid #e9c99f;
  border-radius: 14px;
  margin-top: 24px;
  background: var(--warm);
  color: var(--ink);
  text-decoration: none;
}

.insurance-teaser > img {
  width: 62px;
}

.insurance-teaser strong {
  display: block;
  font-size: 23px;
}

.insurance-teaser .eyebrow {
  color: #965020;
  display: block;
  margin-bottom: 4px;
}

.teaser-small {
  font-size: 14px;
  display: block;
  margin-top: 10px;
  text-decoration: underline;
  text-underline-offset: 4px;
}

.benefit-index {
  background: var(--navy);
  color: white;
  padding-block: 50px;
}

.benefit-index .eyebrow {
  color: #bddbff;
}

.benefit-index h2 {
  font-size: 30px;
}

.benefit-links {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.benefit-links article {
  display: flex;
  flex-direction: column;
  gap: 12px;
  border: 1px solid #6286af;
  border-radius: 10px;
  padding: 22px;
  color: #fff;
  text-decoration: none;
  background: #ffffff09;
}

.benefit-links span {
  font-size: 13px;
}

.benefit-links strong {
  font-size: 24px;
  line-height: 1.6;
}

.benefit-links article:first-child {
  border-top: 3px solid #ffc98b;
}

.rescue-chart + .reading {
  margin-top: 30px;
}

.rescue-chart figcaption {
  text-align: left;
}

.insurance-limit-note {
  margin: 14px 0 18px;
}

.insurance-family {
  margin-top: 28px;
  padding: 24px 28px;
  background: #fff;
  border-radius: 14px;
  border: 1px solid var(--line);
}

.insurance-family h3 {
  font-size: 21px;
  margin-bottom: 12px;
}

.insurance-family p {
  font-size: 16px;
}

.insurance-family .note {
  font-size: 13px;
}

.repair-prices {
  margin-top: 28px;
  padding: 30px;
  background: #fff;
  border-radius: 14px;
  border: 1px solid var(--line);
}

.repair-prices h3 {
  font-size: 22px;
}

.repair-prices table {
  border-collapse: collapse;
  width: 100%;
  margin-top: 20px;
  font-size: 15px;
}

.repair-prices th,
.repair-prices td {
  border-bottom: 1px solid var(--line);
  padding: 14px 16px;
  text-align: left;
}

.repair-prices thead {
  background: #edf5ff;
}

.repair-prices td {
  text-align: right;
  white-space: nowrap;
  font-weight: 700;
  font-size: 18px;
}

.rail-heading {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
  margin-top: 20px;
}

.rail-heading .rail-title {
  padding-bottom: 8px;
}

.rail-heading button {
  border: 0;
  background: none;
  color: var(--muted);
  font-size: 12px;
  padding: 8px;
  min-height: 40px;
}

.rail-open {
  position: fixed;
  right: 0;
  top: 42%;
  z-index: 35;
  background: white;
  color: var(--navy);
  border: 1px solid var(--line);
  border-radius: 8px 0 0 8px;
  box-shadow: 0 5px 20px #173b6610;
  padding: 12px;
  font-size: 13px;
}

.footer-nav {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 16px 28px;
  margin-bottom: 24px;
  font-size: 14px;
}

.footer-nav a {
  color: var(--navy);
}

/* サービス開発の想い：本文の幅・余白。TOPのカードとは別に管理します。 */

/* STORYページ固有のスタイルはstory.cssに集約。 */

/* TOP固有の部品。下部のレスポンシブ設定も同じクラス名で検索できます。 */

.brand-logo {
  display: inline-block;
  width: 210px;
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

.wordmark .brand-logo {
  width: 198px;
  display: block;
}

.hero-services > span {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.hero-services small {
  display: block;
  font-size: 13px;
  font-weight: 400;
}

.hero-services .hero-perk {
  background: var(--warm);
  color: #8c481d;
}

.hero-price {
  flex-wrap: wrap;
}

.hero-price small {
  display: inline;
  font-size: 13px;
}

.hero-price .payment {
  border-left: 1px solid #cad7e7;
  padding-left: 16px;
  margin: 0 0 0 8px;
  line-height: 1.5;
  color: var(--ink);
  align-self: center;
}

.hero-equipment {
  position: absolute;
  z-index: 2;
  border: 6px solid #fff;
  box-shadow: 0 5px 22px #19335a16;
  border-radius: 50%;
  overflow: hidden;
  width: 30%;
  aspect-ratio: 1;
}

.hero-equipment img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hero-equipment.faucet {
  top: 0;
  right: 8%;
}

.hero-equipment.toilet {
  top: 36%;
  right: -3%;
}

.hero-equipment.gas {
  bottom: 0;
  right: 8%;
}

.empathy {
  background: #fffbf5;
  padding-block: 48px;
}

.empathy-intro {
  text-align: center;
}

.empathy-intro h2 {
  font-size: clamp(24px, 2.4vw, 30px);
}

.empathy-intro .eyebrow {
  margin-bottom: 10px;
}

.worry-list {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
  list-style: none;
  padding: 0;
  margin: 24px 0;
}

.worry-list li {
  grid-column: span 2;
  padding: 15px 14px;
  border: 1px solid #eedcca;
  border-radius: 12px;
  background: #fff;
  text-align: center;
  font-size: 14px;
}

.worry-list li:nth-last-child(-n+2) {
  grid-column: span 3;
}

.worry-list strong {
  color: #8c481d;
  font-size: 17px;
}

.empathy-answer {
  text-align: center;
  font-size: 16px;
  margin-bottom: 26px;
}

.empathy-answer strong {
  color: var(--blue);
}

.coverage-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: 1px solid #ded7c9;
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
}

.coverage-pair article {
  text-align: center;
  padding: 22px 18px;
}

.coverage-pair article + article {
  border-left: 1px solid #ded7c9;
  background: #fcf6e9;
}

.coverage-pair h3 {
  font-size: 18px;
  margin: 9px 0 14px;
}

.coverage-pair .free-guarantee-logo,
.coverage-pair .brand-logo {
  display: block;
  width: 330px;
  max-width: 100%;
  height: 58px;
  object-fit: contain;
  margin: 9px auto 14px;
}

.coverage-pair h3 .free-guarantee-logo {
  margin: 0 auto;
  width: 250px;
}

.coverage-pair p {
  font-size: 14px;
}

.coverage-pair .small-label {
  color: #55708d;
}

.coverage-pair small {
  display: block;
  font-size: 13px;
  margin-top: 8px;
}

.coverage-company-logo {
  display: block;
  width: 240px;
  max-width: 100%;
  height: 48px;
  object-fit: contain;
  margin: 16px auto;
}

.coverage-pair .coverage-intro {
  font-size: 15px;
  line-height: 1.8;
}

.coverage-new-label {
  display: inline-block;
  margin-bottom: 12px;
  padding: 3px 12px;
  border: 1px solid #d4bc8c;
  border-radius: 4px;
  color: #765c2e;
  font-size: 12px;
  letter-spacing: .08em;
}

.overview-plus {
  display: flex;
  gap: 26px;
  align-items: center;
}

.overview-plus .point-label {
  background: #f4a24b;
  color: #fff;
  border-radius: 50%;
  width: 66px;
  height: 66px;
  display: grid;
  place-items: center;
  flex-shrink: 0;
  font-size: 17px;
  font-weight: 700;
}

.overview-plus p {
  margin: 0;
}

.brand-connection {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 18px;
}

.brand-connection .brand-logo {
  width: 195px;
}

.brand-connection > span {
  color: #945019;
  font-size: 23px;
}

.connection-note {
  text-align: right;
  margin: 8px 0 24px;
}

.overview-perk {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 24px;
  background: var(--warm);
  border: 1px solid #eedcca;
  border-radius: 10px;
  margin-top: 18px;
  color: var(--ink);
  text-decoration: none;
}

.overview-perk img {
  width: 38px;
}

.overview-perk small,
.overview-perk strong {
  display: block;
}

.overview-perk small {
  font-size: 12px;
  color: #945019;
}

.overview-perk strong {
  font-size: 18px;
}

.overview-perk > span:last-child {
  margin-left: auto;
}

.scope-item small {
  display: block;
  line-height: 1.6;
  margin-top: 8px;
  font-size: 13px;
}

.group-statement {
  padding: 18px 22px;
  border: 1px solid #96b9e6;
  border-radius: 10px;
  font-weight: 600;
  color: var(--navy);
  background: #fff;
}

.included-perk {
  background: var(--warm);
  border-radius: 8px;
  padding: 16px 16px 16px 35px;
  margin-top: 16px;
}

.included .included-perk::before {
  left: 11px;
}

.insurance-teaser .teaser-joy {
  width: 108px;
  margin-left: auto;
  flex-shrink: 0;
}

.extra-cost-list {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 28px;
  padding: 0;
}

.extra-cost-list li {
  position: relative;
  padding-left: 20px;
  font-size: 14px;
}

.extra-cost-list li::before {
  content: '';
  position: absolute;
  top: .7em;
  left: 2px;
  width: 6px;
  height: 6px;
  background: #b5652c;
  border-radius: 50%;
}

.benefit-index .note {
  color: #c8d7eb;
}

.benefit-links p {
  font-size: 13px;
  line-height: 1.8;
}

.equipment-gallery {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
  width: min(100%, 820px);
  margin: 26px auto 16px;
}

.equipment-gallery figure {
  position: relative;
  margin: 0;
  overflow: hidden;
  border-radius: 12px;
  background: #fff;
}

.equipment-gallery img {
  width: 100%;
  height: 205px;
  object-fit: cover;
}

.equipment-gallery figcaption {
  padding: 10px 14px;
  font-size: 15px;
  font-weight: 600;
  text-align: center;
}

.combine-note {
  font-size: 15px;
  color: #9a521b;
  font-weight: 600;
  margin-block: 22px;
}

.benefit-sparkle {
  display: inline-block;
  color: #db942a;
  font-size: 29px;
  margin-left: 10px;
  vertical-align: middle;
}

.thought-icon {
  display: inline-flex;
  vertical-align: middle;
  margin-left: 12px;
}

.reference-rates {
  margin-block: 24px;
  padding: 24px;
  border-radius: 12px;
  background: #f6f8fb;
  border: 1px solid var(--line);
}

.reference-rates h3 {
  font-size: 17px;
  margin-bottom: 15px;
}

.reference-rates dl {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-bottom: 18px;
}

.reference-rates dt {
  font-size: 13px;
}

.reference-rates dd {
  margin: 6px 0 0;
  font-size: 20px;
  font-weight: 600;
}

.reference-rates p {
  font-size: 12px;
  margin-top: 12px;
}

.reference-rates a {
  font-size: 13px;
}

.campaign-brands {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 22px;
  padding: 18px 20px;
  background: #fffaf1;
  border: 1px solid #efcc96;
  border-radius: 12px;
  margin-bottom: 30px;
}

.campaign-brands span {
  font-size: 24px;
  color: #b46c22;
}

.campaign .campaign-details {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 20px auto 0;
  font-size: 14px;
}

.campaign-label {
  background: #fff0d6;
  padding: 6px 12px;
  border-radius: 5px;
  display: inline-block;
}

.accident-scenes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
  max-width: 720px;
  margin: 0 auto 36px;
}

.accident-scenes figure {
  margin: 0;
}

.accident-scenes img {
  width: 100%;
  height: 170px;
  object-fit: cover;
  border-radius: 12px;
}

.accident-scenes figcaption {
  font-size: 12px;
  text-align: center;
  margin-top: 8px;
}

.insurance-attached {
  font-weight: 600;
}

.insurance-family .family-art {
  width: 108px;
  margin: 0 auto 18px;
  display: block;
}

.comparison-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  margin-top: 18px;
}

/* 比較の要点を先に示し、6項目と全体価値の順に読むモーダル。 */

.comparison-tabs {
  display: none;
}

.comparison-scroll {
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-top: 18px;
}

.comparison-table {
  width: 100%;
  min-width: 780px;
  border-collapse: collapse;
  table-layout: fixed;
  background: #fff;
}

.comparison-table caption {
  font-size: 13px;
  text-align: left;
  padding: 12px;
  color: #52677f;
}

.comparison-table th,
.comparison-table td {
  border: 0;
  padding: 13px 12px;
  vertical-align: top;
  text-align: left;
  font-size: 14px;
  line-height: 1.75;
  border-bottom: 1px solid #e3e9f0;
}

.comparison-table th:first-child {
  width: 16%;
}

.comparison-table thead {
  background: #f4f8fd;
}

.comparison-table small {
  display: block;
  font-size: 12px;
  line-height: 1.75;
  margin-top: 6px;
}

.comparison-table td:nth-child(2),
.comparison-table thead th:nth-child(2) {
  background: transparent;
  border-left: 3px solid var(--blue);
  border-right: 3px solid var(--blue);
}

.comparison-table thead th:nth-child(2) {
  border-top: 3px solid var(--blue);
}

.comparison-table tbody tr:last-child td:nth-child(2) {
  border-bottom: 3px solid var(--blue);
}

.service-table-logo {
  display: block;
  width: 180px;
  max-width: 100%;
  height: 28px;
  object-fit: contain;
  margin-bottom: 8px;
}

.comparison-scroll-hint {
  display: none;
}

.comparison-sources {
  margin-top: 14px;
}

.contract-period {
  display: inline-block;
  color: #5c6c7e;
  margin-top: 8px;
  font-size: 13px;
}

.point-eligibility {
  padding: 20px 24px;
  background: var(--pale);
  border-radius: 10px;
  margin-bottom: 28px;
}

.point-eligibility h3 {
  margin-top: 0;
}

.final-service-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 0 0 24px;
}

.final-service-summary span {
  padding: 12px 10px;
  text-align: center;
  font-size: 13px;
  font-weight: 600;
  color: var(--blue);
  background: #eef5ff;
  border-radius: 8px;
}

.final-campaign {
  box-shadow: 0 3px 0 #f3dfbf;
}

.apply-price .brand-logo {
  width: 230px;
}

/* レスポンシブ：広い画面から狭い画面へ。各条件のルールはここにまとめます。 */

@media (min-width: 1440px) {
  .desktop-rail {
    top: 90px;
    max-height: calc(100dvh - 180px);
    padding-top: 10px;
  }
}

@media (min-width: 761px) and (max-height: 820px) {
  .hero {
    padding-block: 22px 30px;
  }

  .hero h1 {
    font-size: 36px;
    line-height: 1.42;
  }

  .hero-photo {
    max-height: 410px;
  }

  .audience {
    margin-bottom: 15px;
  }

  .hero-lead {
    margin-top: 17px;
    line-height: 1.75;
  }

  .hero-services {
    margin-top: 16px;
  }

  .hero-price {
    margin-top: 16px;
  }

  .hero-price strong {
    font-size: 58px;
  }

  .hero-cta {
    margin-top: 16px;
  }
}

@media (max-width: 1050px) {
  .primary-nav {
    gap: 21px;
  }

  .primary-nav a {
    font-size: 13px;
  }

  .smart-header {
    gap: 16px;
    padding-inline: 20px;
  }

  .smart-header .wordmark {
    font-size: 20px;
  }

  .header-apply {
    padding-inline: 16px;
  }

  .support-option {
    padding: 24px;
  }

  .support-option h3 {
    font-size: 23px;
  }


  .wordmark .brand-logo {
    width: 176px;
  }

  .hero-services {
    gap: 6px;
  }

  .hero-services > span {
    padding-inline: 8px;
    font-size: 12px;
  }

  .hero-services small {
    font-size: 13px;
  }

  .insurance-teaser strong {
    font-size: 21px;
  }

  .timeline-table th,
  .timeline-table td {
    padding: 16px 12px;
  }
}

@media (max-width: 760px) {

  .hero-services {
    flex-wrap: wrap;
  }

  .hero-services .hero-perk {
    flex-basis: 100%;
    flex-direction: row;
    justify-content: flex-start;
    gap: 8px;
    align-items: center;
  }

  .hero-services .hero-perk small {
    font-size: 13px;
  }

  .insurance-teaser .teaser-joy {
    width: 85px;
  }
}

@media (max-width: 900px) {
  .primary-nav {
    display: none;
  }

  .header-apply {
    margin-left: auto;
  }
}

@media (max-width: 760px) {
  :root {
    --header-height: 64px;
  }

  .smart-header {
    padding-inline: 18px;
    gap: 12px;
  }

  .smart-header .wordmark {
    font-size: 19px;
  }

  .header-apply {
    padding: 9px 14px;
    font-size: 13px;
    min-height: 42px;
    gap: 8px;
  }

  .hero {
    padding-block: 24px 34px;
  }

  .hero-grid {
    gap: 22px;
  }

  .hero h1 {
    font-size: clamp(24px, 7.1vw, 32px);
  }

  .hero-lead {
    font-size: 16px;
    margin-top: 18px;
  }

  .hero-services {
    margin-top: 16px;
  }

  .hero-price {
    margin-top: 16px;
    gap: 6px;
  }

  .hero-cta {
    margin-top: 16px;
    font-size: 15px;
  }

  .hero-visual {
    width: 72%;
    max-width: 310px;
  }

  .hero-photo {
    max-height: 380px;
    width: 100%;
  }

  .section {
    padding-block: 52px;
  }

  .section-heading {
    margin-bottom: 27px;
  }

  .support-grid {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .support-option {
    padding: 24px 22px;
  }

  .support-option h3 {
    font-size: 24px;
  }

  .support-branches {
    margin-top: 32px;
  }

  .branch-choice {
    font-size: 14px;
    text-align: left;
  }

  .quote-benefit {
    padding: 20px 17px;
  }

  .story-link-panel {
    display: block;
    padding: 24px;
  }

  .story-link-panel strong {
    font-size: 21px;
  }

  .story-link-label {
    display: block;
    margin-top: 20px;
    font-size: 14px;
  }

  .insurance-teaser {
    align-items: start;
    flex-wrap: wrap;
    gap: 14px;
    position: relative;
    padding: 22px 20px;
  }

  .insurance-teaser > img {
    width: 38px;
    margin-top: 7px;
  }

  .insurance-teaser strong {
    font-size: 18px;
  }

  .insurance-teaser .eyebrow {
    font-size: 12px;
  }

  .benefit-links {
    grid-template-columns: 1fr;
    gap: 13px;
  }

  .benefit-links article {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 8px 12px;
    padding: 18px 20px;
  }

  .benefit-links article > span:first-child {
    grid-column: 1 / -1;
    font-size: 12px;
  }

  .benefit-links article > span:last-child {
    align-self: end;
    font-size: 12px;
  }

  .benefit-links strong {
    font-size: 23px;
  }

  .benefit-index h2 {
    font-size: 27px;
  }

  .insurance-family,
  .repair-prices {
    padding: 23px 20px;
  }

  .insurance-family h3,
  .repair-prices h3 {
    font-size: 21px;
  }

  .repair-prices th,
  .repair-prices td {
    padding: 12px 7px;
    font-size: 13px;
  }

  .repair-prices td {
    font-size: 16px;
  }

  .rail-open {
    display: none;
  }

  .footer-nav {
    gap: 14px 22px;
    font-size: 13px;
  }

  .wordmark .brand-logo {
    width: 164px;
  }

  .hero-price .payment {
    font-size: 12px;
    padding-left: 10px;
    margin-left: 2px;
  }

  .hero-price small {
    font-size: 13px;
  }

  .hero-equipment {
    width: 31%;
    border-width: 4px;
  }

  .empathy {
    padding-block: 38px;
  }

  .empathy-intro h2 {
    font-size: 24px;
  }

  .worry-list {
    grid-template-columns: 1fr;
    gap: 10px;
    margin-block: 22px;
  }

  .worry-list li,
  .worry-list li:nth-last-child(-n+2) {
    grid-column: auto;
  }

  .worry-list li {
    padding: 10px;
  }

  .worry-list br {
    display: none;
  }

  .worry-list strong {
    font-size: 15px;
  }

  .empathy-answer {
    font-size: 14px;
  }

  .coverage-pair {
    grid-template-columns: 1fr;
  }

  .coverage-pair article {
    padding: 18px 12px;
  }

  .coverage-pair article + article {
    border-left: 0;
    border-top: 1px solid #cddcef;
  }

  .coverage-pair h3 {
    font-size: 16px;
  }

  .coverage-pair p {
    font-size: 13px;
  }

  .coverage-pair p br {
    display: none;
  }

  .overview-plus {
    gap: 14px;
    align-items: start;
    padding: 22px 18px;
  }

  .overview-plus .point-label {
    width: 47px;
    height: 47px;
    font-size: 13px;
  }

  .overview-plus p {
    font-size: 14px;
  }

  .brand-connection {
    gap: 8px;
    flex-wrap: wrap;
  }

  .brand-connection .brand-logo {
    width: 130px;
  }

  .brand-connection > span {
    font-size: 18px;
  }

  .connection-note {
    text-align: left;
  }

  .overview-perk {
    padding: 16px;
    gap: 12px;
  }

  .overview-perk strong {
    font-size: 15px;
  }

  .overview-perk small {
    font-size: 13px;
  }

  .group-statement {
    padding: 16px;
    font-size: 14px;
  }

  .insurance-teaser > img:first-child {
    width: 42px;
  }

  .insurance-teaser > span {
    flex: 1;
    min-width: 200px;
    padding-right: 22px;
  }

  .insurance-teaser .teaser-joy {
    width: 65px;
    position: absolute;
    right: 10px;
    bottom: 9px;
  }

  .insurance-teaser .teaser-small {
    padding-right: 20px;
    font-size: 12px;
  }

  .extra-cost-list {
    grid-template-columns: 1fr;
  }

  .equipment-gallery {
    gap: 12px;
  }

  .equipment-gallery img {
    height: 125px;
  }

  .equipment-gallery figcaption {
    padding: 9px;
    font-size: 13px;
  }

  .combine-note {
    font-size: 13px;
  }

  .timeline-wrap {
    border: 0;
    border-radius: 0;
    overflow: visible;
  }

  .timeline-table,
  .timeline-table tbody,
  .timeline-table tr,
  .timeline-table td {
    display: block;
    width: 100%;
  }

  .timeline-table thead,
  .timeline-table colgroup {
    display: none;
  }

  .timeline-table tbody {
    border: 1px solid var(--line);
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 20px;
  }

  .timeline-table tbody + tbody {
    border-top-width: 1px;
  }

  .timeline-table .timeline-year {
    display: block;
    width: 100%;
    padding: 10px 18px;
    text-align: left;
    font-size: 20px;
  }

  .timeline-year span {
    display: inline;
    margin-left: 4px;
    font-size: 14px;
  }

  .timeline-table td {
    padding: 12px 18px;
  }

  .timeline-table .timeline-event {
    padding-top: 18px;
    font-size: 15px;
  }

  .timeline-table td[data-label="ご利用の流れ"]::before {
    content: attr(data-label);
    display: block;
    color: #62768c;
    font-size: 13px;
    margin-bottom: 5px;
  }

  .timeline-table td.timeline-value {
    padding: 14px 18px;
  }

  .timeline-table td.timeline-value::before {
    content: attr(data-label);
    display: block;
    color: #62768c;
    font-size: 13px;
    margin-bottom: 5px;
  }

  .reference-rates {
    padding: 20px;
  }

  .reference-rates dl {
    grid-template-columns: 1fr;
  }

  .reference-rates h3 {
    font-size: 16px;
  }

  .campaign-brands {
    gap: 10px;
    padding: 16px 12px;
  }

  .campaign-brands .brand-logo {
    width: 135px;
  }

  .campaign-brands span {
    font-size: 20px;
  }

  .accident-scenes {
    gap: 12px;
    margin-bottom: 28px;
  }

  .accident-scenes img {
    height: 120px;
  }

  .accident-scenes figcaption {
    text-align: left;
    font-size: 13px;
  }

  .insurance-family .family-art {
    width: 92px;
  }

  .comparison-tabs {
    display: flex;
    gap: 10px;
    margin-top: 24px;
  }

  .comparison-tabs button {
    flex: 1;
    border: 1px solid #bdd3ee;
    padding: 10px;
    border-radius: 8px;
    font-size: 12px;
    color: var(--blue);
  }

  .comparison-tabs [aria-pressed="true"] {
    background: var(--blue);
    color: #fff;
  }

  .comparison-scroll-hint {
    display: block;
    font-size: 13px;
    margin-top: 10px;
  }

  .comparison-table {
    min-width: 0;
  }

  .comparison-table th,
  .comparison-table td {
    padding: 10px 8px;
    font-size: 12px;
  }

  .comparison-table small {
    font-size: 13px;
  }

  .comparison-table th:first-child {
    width: 22%;
  }

  .comparison-scroll[data-compared="apple"] :is(th, td):nth-child(4),
  .comparison-scroll[data-compared="softbank"] :is(th, td):nth-child(3) {
    display: none;
  }

  .final-service-summary {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .final-service-summary span {
    padding: 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .button {
    transition: none;
  }
}

@media(max-width:760px) {
  .brand-tagline {
    font-size: 13px;
  }
}


/* REV14：TOPのナビは1段で表示し、収まらない幅では非表示。 */
.page-top .primary-nav {
  flex-wrap: nowrap;
}

@media (min-width: 761px) and (max-width: 900px) {
  .page-top .primary-nav {
    display: flex;
    gap: 16px;
  }

  .page-top .primary-nav a {
    font-size: 12px;
  }
}

/* TOP：会員特典の入口と、料金・開始日・最終申し込みの余白。 */
#mobile-benefit {
  position: relative;
}

#mobile-benefit::before {
  content: '';
  position: absolute;
  top: -1px;
  left: 50%;
  width: 112px;
  height: 30px;
  transform: translateX(-50%);
  background: #fff;
  clip-path: polygon(0 0, 100% 0, 50% 100%);
}

#mobile-benefit .section-heading > .eyebrow {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}

.benefit-announcement {
  display: inline-block;
  padding: 7px 18px;
  border-radius: 6px;
  background: #ffe3bb;
  color: #8d4815;
  font-size: 23px;
  line-height: 1.5;
}

.benefit-name {
  color: #8d4815;
  font-size: 13px;
}

.benefit-included {
  display: block;
  margin-top: 9px;
  color: #52677f;
  font-size: 13px;
}

#price {
  padding-bottom: 32px;
}

#contract {
  padding-top: 32px;
}

#faq > .container > .section-heading {
  text-align: center;
}

#apply {
  padding-block: 58px;
}

@media (max-width: 640px) {
  .scope-basic-title {
    gap: 9px;
  }

  .scope-basic-title::before,
  .scope-basic-title::after {
    height: 19px;
  }

  .scope-grid-note {
    font-size: 13px;
  }

  .flow-branch-intro {
    padding-inline: 15px;
  }

  .flow-results {
    --flow-gap: 12px;
  }

  .flow-results {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }

  .decision-concerns ul {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .decision-concerns li {
    font-size: 14px;
    padding: 12px 15px;
  }

  .company-logo {
    width: 150px;
    height: 40px;
  }

  .phone-continued-cover {
    padding: 18px 14px;
  }

  .phone-continued-cover > p:first-child {
    font-size: 16px;
  }

  .phone-continued-steps {
    font-size: 13px;
    gap: 12px;
  }

  .benefit-announcement {
    font-size: 20px;
    padding: 6px 15px;
  }

  #mobile-benefit .section-heading > .eyebrow {
    gap: 8px;
  }

  #price {
    padding-bottom: 24px;
  }

  #contract {
    padding-top: 24px;
  }

  #apply {
    padding-block: 40px;
  }

  #apply .apply-panel {
    padding-block: 20px;
  }

  #apply .apply-price {
    margin-bottom: 18px;
  }

  #apply .final-action {
    margin-top: 18px;
  }
}