@charset "UTF-8";
/* カテゴリ色をCSS変数として各ページ要素から参照できるようにする(JS側はvar(--c-wifi)等を使う) */
.lpDiagPage {
  --c-wifi: #009487;
  --d-wifi: #00776c;
  --c-router: #2195cb;
  --d-router: #1b6f9c;
  --c-visualize: #3e5bc7;
  --d-visualize: #3e5bc7;
  --c-security: #7041cf;
  --d-security: #7041cf;
  --head-h: 7.4rem;
  font-size: 1.7rem;
  accent-color: #009487;
}
.lpDiagPage :where(h1, h2, h3, p) {
  margin: 0;
}
.lpDiagPage h1, .lpDiagPage h2, .lpDiagPage h3 {
  word-break: auto-phrase;
}
.lpDiagPage button {
  font-family: inherit;
}
.lpDiagPage ::-moz-selection {
  background: #bfe8e3;
  color: #0e0e0e;
}
.lpDiagPage ::selection {
  background: #bfe8e3;
  color: #0e0e0e;
}
.lpDiagPage :focus-visible {
  outline: 0.3rem solid #009487;
  outline-offset: 0.3rem;
}
.lpDiagPage--narrow {
  max-width: 86rem;
  margin: 0 auto;
  padding: 0 var(--vw-gutter);
}
@media (max-width: 767px) {
  .lpDiagPage--narrow {
    padding: 0 1.6rem;
  }
}
@media (max-width: 767px) {
  .lpDiagPage {
    --head-h: 7rem;
    font-size: 1.6rem;
  }
}

#diag,
#result {
  scroll-margin-top: var(--head-h);
}

.lpDiagPage .lpHeader--inner {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start;
}

/* ===== ヒーロー ===== */
.lpDiagHero {
  position: relative;
  overflow: visible;
  padding: 8.8rem 0 9.6rem;
}
@media (max-width: 767px) {
  .lpDiagHero {
    padding: 5.6rem 0 6.4rem;
  }
}
.lpDiagHero > .lpPage--wrap {
  position: relative;
  z-index: 1;
}
.lpDiagHero--figure {
  position: absolute;
  bottom: -6rem;
  right: max(var(--vw-gutter), (100% - 118rem) / 2 + var(--vw-gutter));
  width: clamp(12rem, 24vw, 22rem);
  height: auto;
  pointer-events: none;
}
@media (max-width: 767px) {
  .lpDiagHero--figure {
    bottom: -3rem;
  }
}
.lpDiagHero--eyebrow {
  display: inline-block;
  font-size: 2.2rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  border-bottom: 0.2rem solid #0e0e0e;
  padding-bottom: 0.6rem;
}
@media (max-width: 767px) {
  .lpDiagHero--eyebrow {
    font-size: 1.8rem;
  }
}
.lpDiagHero--title {
  font-size: clamp(3rem, 5vw, 4.6rem);
  font-weight: 800;
  line-height: 1.4;
  color: #009487;
  margin-top: 2.4rem;
  text-wrap: balance;
}
@media (max-width: 767px) {
  .lpDiagHero--title {
    font-size: 2.7rem;
  }
}
.lpDiagHero--lead {
  margin-top: 3.2rem;
  max-width: 40em;
}
.lpDiagHero--meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  margin-top: 3.2rem;
  font-size: 1.6rem;
  color: #5a6573;
}
.lpDiagHero--meta div {
  padding: 0 2.4rem;
  border-left: 1px solid #dde5e4;
  line-height: 1.5;
}
.lpDiagHero--meta div:first-child {
  padding-left: 0;
  border-left: 0;
}
.lpDiagHero--meta b {
  color: #0e0e0e;
  font-size: 2rem;
  font-weight: 800;
  margin-right: 0.4rem;
}
@media (max-width: 767px) {
  .lpDiagHero--meta {
    gap: 0.4rem 2rem;
  }
  .lpDiagHero--meta div {
    padding: 0;
    border-left: 0;
  }
  .lpDiagHero--meta b {
    font-size: 1.8rem;
  }
}
.lpDiagHero--types {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 1rem;
  margin-top: 3.2rem;
}
.lpDiagHero--type {
  font-size: 1.5rem;
  font-weight: 700;
  padding: 0.5rem 1.6rem;
  border-radius: 999px;
  border: 0.16rem solid currentColor;
  line-height: 1.6;
}
.lpDiagHero--type.is-wifi {
  color: #00776c;
  background: #eaf5f4;
}
.lpDiagHero--type.is-router {
  color: #1b6f9c;
  background: #e7f0f5;
}
.lpDiagHero--type.is-visualize {
  color: #3e5bc7;
  background: #e2e8f6;
}
.lpDiagHero--type.is-security {
  color: #7041cf;
  background: #ece8f6;
}
.lpDiagHero--typeMore {
  font-size: 1.5rem;
  color: #5a6573;
}
.lpDiagHero--cta {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 0.8rem;
  margin-top: 4.8rem;
  background: #009487;
  color: #fff;
  font-weight: 700;
  font-size: 2rem;
  padding: 1.5rem 3.2rem;
  border-radius: 999px;
  -webkit-transition: -webkit-transform 0.15s ease, -webkit-box-shadow 0.15s ease;
  transition: -webkit-transform 0.15s ease, -webkit-box-shadow 0.15s ease;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  transition: transform 0.15s ease, box-shadow 0.15s ease, -webkit-transform 0.15s ease, -webkit-box-shadow 0.15s ease;
}
.lpDiagHero--cta:hover {
  -webkit-transform: translateY(-2px);
          transform: translateY(-2px);
  -webkit-box-shadow: 0 0.8rem 1.8rem rgba(0, 148, 135, 0.3);
          box-shadow: 0 0.8rem 1.8rem rgba(0, 148, 135, 0.3);
}
.lpDiagHero--cta svg {
  width: 1.8rem;
  height: 1.8rem;
}
@media (max-width: 767px) {
  .lpDiagHero--cta {
    font-size: 1.8rem;
    margin-top: 4rem;
  }
}

/* ===== 診断(設問) ===== */
.lpDiag {
  background: #f3f7f6;
  padding: 8rem 0 9.6rem;
}
@media (max-width: 767px) {
  .lpDiag {
    padding: 6.4rem 0 7.2rem;
  }
}
.lpDiag--heading {
  font-size: clamp(2.4rem, 3.4vw, 3.2rem);
  font-weight: 800;
  text-align: center;
  line-height: 1.5;
}
.lpDiag--note {
  text-align: center;
  color: #5a6573;
  font-size: 1.6rem;
  margin-top: 1.2rem;
}
.lpDiag--progress {
  position: sticky;
  top: var(--head-h);
  z-index: 50;
  background: #f3f7f6;
  padding: 1.6rem 0 1.4rem;
  margin-top: 3.2rem;
}
.lpDiag--progressRow {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 1.6rem;
}
.lpDiag--progressBar {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
  height: 0.6rem;
  background: #dbe5e3;
  border-radius: 999px;
  overflow: hidden;
}
.lpDiag--progressFill {
  height: 100%;
  background: #009487;
  border-radius: 999px;
  -webkit-transform: scaleX(0);
          transform: scaleX(0);
  -webkit-transform-origin: left;
          transform-origin: left;
  -webkit-transition: -webkit-transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
  transition: -webkit-transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), -webkit-transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.lpDiag--progressText {
  font-size: 1.4rem;
  color: #5a6573;
  white-space: nowrap;
}
.lpDiag--progressText .lpPage--num {
  font-size: 2rem;
  color: #0e0e0e;
}
.lpDiag--actions {
  text-align: center;
  margin-top: 4.8rem;
}
.lpDiag--button {
  background: #009487;
  color: #fff;
  border: 0;
  font-weight: 800;
  font-size: 2rem;
  padding: 1.6rem 4.8rem;
  border-radius: 999px;
  cursor: pointer;
  -webkit-transition: background-color 0.15s ease, -webkit-transform 0.15s ease, -webkit-box-shadow 0.15s ease;
  transition: background-color 0.15s ease, -webkit-transform 0.15s ease, -webkit-box-shadow 0.15s ease;
  transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
  transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease, -webkit-transform 0.15s ease, -webkit-box-shadow 0.15s ease;
}
.lpDiag--button:hover:not(:disabled) {
  -webkit-transform: translateY(-2px);
          transform: translateY(-2px);
  -webkit-box-shadow: 0 0.8rem 1.8rem rgba(0, 148, 135, 0.3);
          box-shadow: 0 0.8rem 1.8rem rgba(0, 148, 135, 0.3);
}
.lpDiag--button:disabled {
  background: #b4c0be;
  cursor: not-allowed;
}
.lpDiag--hint {
  font-size: 1.5rem;
  color: #5a6573;
  margin-top: 1.4rem;
}

.lpDiagGroup {
  background: #fff;
  border-radius: 1.6rem;
  padding: 3.6rem 4rem 1.2rem;
  margin-top: 2.4rem;
}
@media (max-width: 767px) {
  .lpDiagGroup {
    padding: 2.4rem 1.6rem 0.4rem;
  }
}
.lpDiagGroup--head {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: baseline;
      -ms-flex-align: baseline;
          align-items: baseline;
  gap: 1.2rem;
  color: var(--c);
  padding-bottom: 1.6rem;
  border-bottom: 0.2rem solid var(--c);
}
.lpDiagGroup--num {
  font-size: 4.4rem;
  line-height: 1;
}
@media (max-width: 767px) {
  .lpDiagGroup--num {
    font-size: 3.4rem;
  }
}
.lpDiagGroup--label {
  font-size: 2.2rem;
  font-weight: 700;
  color: var(--d);
}
@media (max-width: 767px) {
  .lpDiagGroup--label {
    font-size: 1.9rem;
  }
}

.lpDiagQ {
  padding: 2.8rem 0;
}
@media (max-width: 767px) {
  .lpDiagQ {
    padding: 2.2rem 0;
  }
}
.lpDiagQ + .lpDiagQ {
  border-top: 1px solid #dde5e4;
}
.lpDiagQ--text {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 1.2rem;
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.6;
}
@media (max-width: 767px) {
  .lpDiagQ--text {
    font-size: 1.65rem;
    gap: 0.8rem;
  }
}
.lpDiagQ--no {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  font-size: 1.8rem;
  color: #5a6573;
  min-width: 2.6rem;
  line-height: 1.6;
}
@media (max-width: 767px) {
  .lpDiagQ--no {
    font-size: 1.65rem;
    min-width: 2.2rem;
  }
}
.lpDiagQ--opts {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: minmax(0, 1fr) 1rem minmax(0, 1fr) 1rem minmax(0, 1fr);
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  margin-top: 1.6rem;
  padding-left: 3.8rem;
}
@media (max-width: 767px) {
  .lpDiagQ--opts {
    padding-left: 0;
    gap: 0.6rem;
  }
}
.lpDiagQ--opt {
  border: 0.15rem solid #cfd9d7;
  border-radius: 0.8rem;
  background: #fff;
  padding: 1.1rem 0.8rem;
  font-size: 1.6rem;
  font-weight: 700;
  color: #37414f;
  line-height: 1.4;
  cursor: pointer;
  -webkit-transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;
  transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}
.lpDiagQ--opt:hover {
  border-color: var(--c);
  color: var(--d);
}
.lpDiagQ--opt.is-selected {
  background: var(--d);
  border-color: var(--d);
  color: #fff;
}
@media (max-width: 767px) {
  .lpDiagQ--opt {
    font-size: 1.35rem;
    padding: 1rem 0.2rem;
  }
}

/* ===== 結果 ===== */
.lpDiagResult {
  display: none;
  padding: 8rem 0 0;
}
@media (max-width: 767px) {
  .lpDiagResult {
    padding-top: 6.4rem;
  }
}
.lpDiagResult.is-show {
  display: block;
  -webkit-animation: lpDiagResultIn 0.6s cubic-bezier(0.22, 1, 0.36, 1);
          animation: lpDiagResultIn 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.lpDiagResult--recoHeading {
  font-size: clamp(2.2rem, 3vw, 2.8rem);
  font-weight: 800;
  margin-top: 8rem;
  padding-bottom: 1.6rem;
  border-bottom: 0.2rem solid #0e0e0e;
}
.lpDiagResult--none {
  background: #f3f7f6;
  border-radius: 1.6rem;
  padding: 3.2rem;
  margin-top: 3.2rem;
  text-align: center;
}
.lpDiagResult--none b {
  font-size: 1.8rem;
}

@-webkit-keyframes lpDiagResultIn {
  from {
    opacity: 0;
    -webkit-transform: translateY(1.6rem);
            transform: translateY(1.6rem);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes lpDiagResultIn {
  from {
    opacity: 0;
    -webkit-transform: translateY(1.6rem);
            transform: translateY(1.6rem);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.lpDiagType {
  background: var(--type-bg);
  color: #fff;
  border-radius: 1.6rem;
  padding: 4.8rem 4.8rem 4.4rem;
}
@media (max-width: 767px) {
  .lpDiagType {
    padding: 3.2rem 2.4rem;
  }
}
.lpDiagType--name {
  font-size: clamp(2.6rem, 4.4vw, 3.8rem);
  font-weight: 800;
  line-height: 1.4;
  text-wrap: balance;
  word-break: auto-phrase;
}
.lpDiagType--sub {
  margin-top: 1.6rem;
  font-size: 1.7rem;
  line-height: 1.9;
  color: rgba(255, 255, 255, 0.95);
}
@media (max-width: 767px) {
  .lpDiagType--sub {
    font-size: 1.6rem;
  }
}

.lpDiagScores {
  margin-top: 4rem;
}

.lpDiagScore {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 12rem 1.6rem minmax(0, 1fr) 1.6rem 5.6rem;
  grid-template-columns: 12rem minmax(0, 1fr) 5.6rem;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 1.6rem;
  padding: 0.8rem 0;
}
@media (max-width: 767px) {
  .lpDiagScore {
    -ms-grid-columns: 9.6rem 1.2rem minmax(0, 1fr) 1.2rem 4.8rem;
    grid-template-columns: 9.6rem minmax(0, 1fr) 4.8rem;
    gap: 1.2rem;
  }
}
.lpDiagScore--label {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--d);
}
@media (max-width: 767px) {
  .lpDiagScore--label {
    font-size: 1.35rem;
  }
}
.lpDiagScore--track {
  height: 1rem;
  background: #e8eeed;
  border-radius: 999px;
  overflow: hidden;
}
.lpDiagScore--fill {
  height: 100%;
  background: var(--c);
  border-radius: 999px;
  -webkit-transform: scaleX(0);
          transform: scaleX(0);
  -webkit-transform-origin: left;
          transform-origin: left;
  -webkit-transition: -webkit-transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
  transition: -webkit-transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
  transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
  transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1), -webkit-transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}
.lpDiagScore--val {
  font-size: 2rem;
  text-align: right;
  line-height: 1;
}
.lpDiagScore--val small {
  font-size: 1.3rem;
  color: #5a6573;
}

.lpDiagMsg {
  position: relative;
  background: #f3f7f6;
  border-radius: 1.6rem;
  padding: 4.4rem 3.6rem 3.2rem;
  margin-top: 5.6rem;
}
@media (max-width: 767px) {
  .lpDiagMsg {
    padding: 4rem 2.2rem 2.4rem;
  }
}
.lpDiagMsg--label {
  position: absolute;
  top: -1.8rem;
  left: 0;
  background: var(--type-bg);
  color: #fff;
  font-weight: 700;
  font-size: 1.8rem;
  padding: 0.6rem 3.2rem;
  border-radius: 2rem;
  line-height: 1.6;
}
@media (max-width: 767px) {
  .lpDiagMsg--label {
    font-size: 1.6rem;
    padding: 0.5rem 2.4rem;
  }
}

.lpDiagReco {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 6rem 2rem minmax(0, 1fr);
  grid-template-columns: 6rem minmax(0, 1fr);
  gap: 0 2rem;
  padding: 3.2rem 0;
  border-bottom: 1px solid #dde5e4;
}
@media (max-width: 767px) {
  .lpDiagReco {
    -ms-grid-columns: 4.4rem 1.2rem minmax(0, 1fr);
    grid-template-columns: 4.4rem minmax(0, 1fr);
    gap: 0 1.2rem;
  }
}
.lpDiagReco--no {
  font-size: 4.4rem;
  line-height: 1;
  color: var(--c);
}
@media (max-width: 767px) {
  .lpDiagReco--no {
    font-size: 3.2rem;
  }
}
.lpDiagReco--top {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 0.8rem 1.6rem;
}
.lpDiagReco--title {
  font-size: 2rem;
  font-weight: 800;
  line-height: 1.5;
  word-break: auto-phrase;
}
@media (max-width: 767px) {
  .lpDiagReco--title {
    font-size: 1.8rem;
  }
}
.lpDiagReco--body {
  margin-top: 1rem;
  font-size: 1.6rem;
  color: #2b333d;
}
.lpDiagReco--prio {
  font-size: 1.3rem;
  font-weight: 700;
  padding: 0.2rem 1.2rem;
  border-radius: 999px;
  line-height: 1.7;
  white-space: nowrap;
}
.lpDiagReco--prio.is-high {
  background: #d81e1e;
  color: #fff;
}
.lpDiagReco--prio.is-mid {
  border: 0.15rem solid #0e0e0e;
}
.lpDiagReco--prio.is-low {
  border: 0.15rem solid #b9c3c1;
  color: #5a6573;
}

/* ===== 相談フォーム(歯科LPの無料タイプ診断セクションと同じ構成) ===== */
.lpDiagCta {
  background: #009487;
  color: #fff;
  padding: 8rem 0 7.2rem;
  margin-top: 9.6rem;
  text-align: center;
}
@media (max-width: 767px) {
  .lpDiagCta {
    padding: 6.4rem 0 5.6rem;
    margin-top: 7.2rem;
  }
}
.lpDiagCta--heading {
  font-size: clamp(2.2rem, 3.4vw, 3.2rem);
  font-weight: 800;
  line-height: 1.5;
}
.lpDiagCta--lead {
  margin-top: 2rem;
  color: rgba(255, 255, 255, 0.95);
}
.lpDiagCta--free {
  margin-top: 1.2rem;
  font-weight: 700;
  font-size: 1.6rem;
}
.lpDiagCta--panel {
  background: #fff;
  color: #0e0e0e;
  border-radius: 1.6rem;
  padding: 4.4rem 4.8rem 3.6rem;
  max-width: 64rem;
  margin: 4.8rem auto 0;
  text-align: left;
}
@media (max-width: 767px) {
  .lpDiagCta--panel {
    padding: 3.2rem 2.2rem 2.8rem;
  }
}
.lpDiagCta--label {
  display: block;
  font-size: 1.5rem;
  font-weight: 700;
  margin: 2rem 0 0.6rem;
}
.lpDiagCta--label:first-child {
  margin-top: 0;
}
.lpDiagCta--input {
  display: block;
  width: 100%;
  border: 0.15rem solid #cfd9d7;
  border-radius: 0.8rem;
  padding: 1.2rem 1.4rem;
  font-size: 1.6rem;
  font-family: inherit;
  line-height: 1.6;
  color: #0e0e0e;
  background: #fff;
  -webkit-transition: border-color 0.15s ease;
  transition: border-color 0.15s ease;
}
.lpDiagCta--input:focus {
  outline: none;
  border-color: #009487;
  -webkit-box-shadow: 0 0 0 0.3rem rgba(0, 148, 135, 0.18);
          box-shadow: 0 0 0 0.3rem rgba(0, 148, 135, 0.18);
}
.lpDiagCta--input::-webkit-input-placeholder {
  color: #7b8592;
}
.lpDiagCta--input::-moz-placeholder {
  color: #7b8592;
}
.lpDiagCta--input:-ms-input-placeholder {
  color: #7b8592;
}
.lpDiagCta--input::-ms-input-placeholder {
  color: #7b8592;
}
.lpDiagCta--input::placeholder {
  color: #7b8592;
}
.lpDiagCta--textarea {
  resize: vertical;
  min-height: 10rem;
}
.lpDiagCta--send {
  display: block;
  width: 100%;
  margin-top: 3.2rem;
  background: #009487;
  color: #fff;
  border: 0;
  font-weight: 800;
  font-size: 1.9rem;
  padding: 1.6rem;
  border-radius: 999px;
  cursor: pointer;
  -webkit-transition: -webkit-transform 0.15s ease, -webkit-box-shadow 0.15s ease;
  transition: -webkit-transform 0.15s ease, -webkit-box-shadow 0.15s ease;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  transition: transform 0.15s ease, box-shadow 0.15s ease, -webkit-transform 0.15s ease, -webkit-box-shadow 0.15s ease;
}
.lpDiagCta--send:hover {
  -webkit-transform: translateY(-2px);
          transform: translateY(-2px);
  -webkit-box-shadow: 0 0.8rem 1.8rem rgba(0, 148, 135, 0.3);
          box-shadow: 0 0.8rem 1.8rem rgba(0, 148, 135, 0.3);
}
.lpDiagCta--note {
  font-size: 1.3rem;
  color: #5a6573;
  margin-top: 1.4rem;
  line-height: 1.7;
  text-align: center;
}
.lpDiagCta--retake {
  margin-top: 3.2rem;
  background: none;
  border: 0;
  color: #fff;
  font-size: 1.5rem;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 0.4rem;
  cursor: pointer;
}