/* ==========================================================
   Nyle Content Studio LP (/service/content-studio/)
   template: page-service-content-studio.php
   All rules are scoped under `.ncs-lp` so they cannot leak
   into the shared header/footer markup on the same page.
   Exceptions (documented):
     - `html { scroll-behavior }` stays global (this sheet is
       only enqueued on the LP template).
     - `body.is-ncs-cta-active` stays unscoped: the sticky-CTA JS
       adds the class to <body>.
   ========================================================== */
/* <picture> is only a wrapper for the WebP sources; keep the
   inner <img> as the layout box so the original flex/grid
   geometry is unchanged. */
.ncs-lp picture { display: contents; }
/* `display: contents` also promotes the <source> siblings into the
   parent's flex/grid formatting context, where they become zero-size
   items that still consume a `gap` (e.g. .p-security__stat / .p-sticky-cta__panel).
   Keep them out of layout. */
.ncs-lp picture > source { display: none; }

/* ==========================================================
   Nyle Content Studio LP — Design Tokens & Base (approved by user)
   Do NOT deviate from these tokens. Section CSS must consume
   the CSS variables below instead of hard-coding values.
   ========================================================== */
.ncs-lp {
  /* Typography */
  --font-base: 'Noto Sans JP', sans-serif;

  /* Text colors — 3-tier system (light bg / dark bg pairs) */
  --text-heading: #14181F;
  --text-body: #4B5159;
  --text-caption: #6A7079;
  --text-heading-inv: #FFFFFF;
  --text-body-inv: #9AA6B6;
  --text-caption-inv: rgba(154, 166, 182, 0.8);

  /* Accent colors (roles are fixed — do not swap) */
  --accent-teal: #1E93A8;   /* section eyebrow labels, plan highlights */
  --accent-lime: #8FE01C;   /* highlight labels/tags/stats on dark bg */
  --accent-green: #35B36A;  /* success/check text (also #2F9E44 → this) */
  --accent-alert: #FF294D;  /* pain-point emphasis */
  --accent-navy: #0B3A5E;   /* comparison-table plan text */

  /* Backgrounds */
  --bg-dark: #0A0E15;       /* all dark sections (#121A29 → this) */
  --bg-dark-sub: #1A2230;   /* dark card header bands */
  --bg-light: #F5F7FA;      /* all light-gray surfaces (#EBEBEB/#ECECEC → this) */
  --bg-white: #FFFFFF;

  /* Borders */
  --border-card: #E5E9EF;   /* ALL card borders (#6D8BB9 → this) */

  /* Brand gradient — exactly 2 canonical angles */
  --grad-stops: #8FE01C 6.17%, #35B36A 35.98%, #1E93A8 62.27%, #1E6FD8 93.83%;
  --grad-heading: linear-gradient(116deg, var(--grad-stops)); /* gradient text & CTA buttons */
  --grad-accent: linear-gradient(156deg, var(--grad-stops));  /* small underline accents */

  /* Type scale (PC → SP via clamp) */
  --fs-h1: clamp(30px, 3.5vw, 46px);
  --fs-h2: clamp(26px, 3.2vw, 42px);   /* 44px CTA heading → this token too */
  --fs-h3: clamp(18px, 1.6vw, 20px);
  --fs-body: 16px;
  --fs-caption: 14px;
  --fs-eyebrow: 12px;
  --fs-tag: 11px;
  --fs-button: 15px;

  /* Line heights — canonical set */
  --lh-heading: 1.35;
  --lh-body: 1.75;
  --lh-caption: 1.6;

  /* Layout */
  --container-max: 1140px;
  --container-pad: 24px;
  --sec-pad-l: 120px;  /* large sections  (Figma 120.96) */
  --sec-pad-m: 80px;   /* medium sections (Figma 80.96/80.64) */
  --sec-pad-s: 60px;   /* small sections  (Figma 60.96) */

  /* Radius */
  --radius-card: 16px;
  --radius-row: 12px;
  --radius-pill: 999px;
}

/* ---- Reset / base ---- */
.ncs-lp, .ncs-lp *, .ncs-lp *::before, .ncs-lp *::after { box-sizing: border-box; margin: 0; padding: 0; }
/* The universal reset above is scoped to .ncs-lp, so <body> keeps the UA
   default 8px margin (this template renders its own <head> and does not
   load a site-wide reset). Without this the full-bleed sections stop 8px
   short of the viewport edges and the SP layout reflows. */
html, body { margin: 0; }
html { scroll-behavior: smooth; }
.ncs-lp {
  font-family: var(--font-base);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
  background: var(--bg-white);
  -webkit-font-smoothing: antialiased;
}
.ncs-lp img, .ncs-lp svg { max-width: 100%; height: auto; display: block; }
.ncs-lp a { color: inherit; text-decoration: none; }
.ncs-lp ul, .ncs-lp ol { list-style: none; }
.ncs-lp h1, .ncs-lp h2, .ncs-lp h3, .ncs-lp h4 { color: var(--text-heading); line-height: var(--lh-heading); }

/* ---- Shared components ---- */
.ncs-lp .container { max-width: var(--container-max); margin-inline: auto; padding-inline: var(--container-pad); }

/* Section heading pattern: eyebrow + H2 + gradient underline */
.ncs-lp .sec-eyebrow {
  display: inline-block;
  font-size: var(--fs-eyebrow); font-weight: 700;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--accent-teal); line-height: 1.75;
}
.ncs-lp .sec-eyebrow::after {
  content: ""; display: block; width: 40px; height: 3px;
  margin: 6px auto 0; background: var(--grad-accent); border-radius: 2px;
}
.ncs-lp .sec-title { font-size: var(--fs-h2); font-weight: 400; margin-top: 16px; }
.ncs-lp .sec-title .grad, .ncs-lp .grad-text {
  background: var(--grad-heading);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}

/* Buttons — label is ALWAYS #FFFFFF (unified) */
.ncs-lp .btn {
  display: inline-flex; align-items: center; justify-content: center;
  font-size: var(--fs-button); font-weight: 700; line-height: 1.4;
  color: #FFFFFF; border-radius: var(--radius-pill);
  padding: 16px 32px; cursor: pointer; border: 0;
}
/* Hover interaction 案A: lift + shadow (unified across all pill/CTA buttons) */
.ncs-lp .btn--grad {
  background: var(--grad-heading);
  transition: transform .25s ease, box-shadow .25s ease, filter .25s ease;
}
.ncs-lp .btn.btn--grad:hover {
  transform: translateY(-3px);
  filter: brightness(1.07);
  box-shadow: 0 10px 20px rgba(30, 111, 216, .35);
}
.ncs-lp .btn--outline {
  background: transparent; border: 2px solid #FFFFFF;
  transition: transform .25s ease, background .25s ease;
}
.ncs-lp .btn.btn--outline:hover {
  transform: translateY(-3px);
  background: rgba(255, 255, 255, .14);
}

/* Dark-section text helpers */
.ncs-lp .on-dark { color: var(--text-body-inv); }
.ncs-lp .on-dark h1, .ncs-lp .on-dark h2, .ncs-lp .on-dark h3, .ncs-lp .on-dark h4 { color: var(--text-heading-inv); }
.ncs-lp .on-dark .caption { color: var(--text-caption-inv); }
.ncs-lp .caption { font-size: var(--fs-caption); line-height: var(--lh-caption); color: var(--text-caption); }

/* Chip / pill */
.ncs-lp .chip {
  display: inline-flex; align-items: center;
  background: #EEF2F7; border: 1px solid var(--border-card);
  border-radius: var(--radius-pill); padding: 4px 14px;
  font-size: var(--fs-body); color: var(--text-body);
}

/* Breakpoint-scoped line breaks: <br class="sp-br"> shows only on SP,
   <br class="pc-br"> shows only on PC */
.ncs-lp .sp-br { display: none; }
@media (max-width: 768px) {
  .ncs-lp .sp-br { display: inline; }
  .ncs-lp .pc-br { display: none; }
}

/* Section padding helpers */
.ncs-lp .sec-pad-l { padding-block: var(--sec-pad-l); }
.ncs-lp .sec-pad-m { padding-block: var(--sec-pad-m); }
.ncs-lp .sec-pad-s { padding-block: var(--sec-pad-s); }

@media (max-width: 768px) {
  .ncs-lp {
    --sec-pad-l: 72px;
    --sec-pad-m: 56px;
    --sec-pad-s: 44px;
  }
}

/* ---- Gradient heading intro animation (案C: 色が右から左へ一度流れる) ----
   Added by JS (IntersectionObserver) the first time a .grad / .grad-text element
   enters the viewport. The 300%-wide band is built so that BOTH ends of the
   animation window reproduce the canonical --grad-heading stops exactly
   (canonical % ÷ 3, mirrored through the middle), so the settled look is
   pixel-identical to the static gradient. */
.ncs-lp .grad-flow {
  background-image: linear-gradient(116deg,
    #8FE01C 2.06%, #35B36A 11.99%, #1E93A8 20.76%, #1E6FD8 31.28%,
    #1E93A8 45%, #35B36A 55%,
    #8FE01C 68.72%, #35B36A 78.66%, #1E93A8 87.42%, #1E6FD8 97.94%);
  background-size: 300% 100%;
  background-position: 100% 0;
  animation: gradFlow 1.6s ease-in-out 1 both;
}
@keyframes gradFlow {
  to { background-position: 0% 0; }
}
@media (prefers-reduced-motion: reduce) {
  .ncs-lp .grad-flow {
    background-image: var(--grad-heading);
    background-size: auto;
    background-position: 0 0;
    animation: none;
  }
}

/* Respect reduced-motion preference: kill hover lift/shadow/filter transitions site-wide */
@media (prefers-reduced-motion: reduce) {
  .ncs-lp .btn, .ncs-lp [class*="-btn"],
  .ncs-lp .p-hero__hs .hs-button,
  .ncs-lp .p-related-services__card, .ncs-lp .p-related-services__card a::after,
  .ncs-lp .p-seo-info__book,
  .ncs-lp .p-faq__summary {
    transition: none !important;
    transform: none !important;
  }
}

/* ===== section 01 ===== */
  .ncs-lp .p-lp-header {
    position: sticky;
    top: 0;
    z-index: 1000;
    background: var(--bg-dark);
  }
  .ncs-lp .p-lp-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    height: 100px;
  }
  .ncs-lp .p-lp-header__logo { display: flex; align-items: center; flex: 0 0 auto; }
  .ncs-lp .p-lp-header__logo img { width: 220px; height: auto; }

  .ncs-lp .p-lp-header__actions { display: flex; align-items: center; gap: 14px; }
  /* Figma header buttons: h50, 15px bold, px 27–28 */
  .ncs-lp .p-lp-header .btn { padding: 12px 26px; min-height: 50px; white-space: nowrap; }
  .ncs-lp .p-lp-header .btn--grad { box-shadow: 0 4px 2px rgba(0, 0, 0, 0.25); }

  @media (max-width: 768px) {
    /* SP header bar is 50px tall, logo 110x36, buttons 32px / 12–13px, 1px outline */
    .ncs-lp .p-lp-header__inner { height: 50px; gap: 8px; }
    .ncs-lp .p-lp-header__logo img { width: 110px; }
    .ncs-lp .p-lp-header__actions { gap: 8px; }
    .ncs-lp .p-lp-header .btn { font-size: 12px; padding: 6px 14px; min-height: 32px; }
    .ncs-lp .p-lp-header .btn--outline { border-width: 1px; }
  }
  @media (max-width: 360px) {
    .ncs-lp .p-lp-header .btn { padding: 6px 10px; font-size: 11px; }
  }

/* ===== section 02 ===== */
  .ncs-lp .p-hero {
    position: relative;
    overflow: hidden;
    background: var(--bg-dark);
    padding-block: 30px 60px;
  }

  /* --- full hero background illustration (blur rays + floating icons baked in) --- */
  .ncs-lp .p-hero__bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: top center;
    pointer-events: none;
    z-index: 0;
  }

  /* --- layout --- */
  .ncs-lp .p-hero__inner {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: 1.123fr 1fr; /* Figma 561.6 : 500 */
    gap: 30px;
    align-items: center;
  }

  .ncs-lp .p-hero__copy { max-width: 562px; }

  .ncs-lp .p-hero__h1 {
    font-size: var(--fs-h1);
    font-weight: 900;
    line-height: var(--lh-heading);
    letter-spacing: 0.005em;
    color: var(--text-heading-inv);
  }
  .ncs-lp .p-hero__h1 .p-hero__line { display: block; }

  .ncs-lp .p-hero__lead {
    /* Figma 18px white lead — no token covers 18px body copy */
    margin-top: 24px;
    font-size: 18px;
    line-height: var(--lh-body);
    color: var(--text-heading-inv); /* #FFFFFF token */
  }

  .ncs-lp .p-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    justify-content: center;
    margin-top: 34px;
  }
  .ncs-lp .p-hero__actions .btn { padding: 12px 26px; min-height: 50px; white-space: nowrap; }
  .ncs-lp .p-hero__actions .btn--grad { box-shadow: 0 4px 2px rgba(0, 0, 0, 0.25); }

  /* --- white trial-signup card --- */
  .ncs-lp .p-hero__card {
    background: var(--bg-white);
    border-radius: var(--radius-card);
    padding: 0 24px 24px;
    scroll-margin-top: 120px;
    /* reset the .on-dark inherited text colour inside the white card */
    color: var(--text-body);
  }
  .ncs-lp .p-hero__card-title {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 55px;
    padding: 12px 16px;
    background: var(--grad-heading);
    color: var(--text-heading-inv);
    /* Figma measures 24px here — between --fs-h3 (20) and --fs-h2, so kept literal */
    font-size: 24px;
    font-weight: 700;
    line-height: var(--lh-heading);
    text-align: center;
  }

  /* --- HubSpot embed (portal 23330589) ---------------------------------------
     The form DOM is injected by hbspt.forms.create, so every rule below hangs
     off .p-hero__hs and targets HubSpot's own class names. All selectors are two
     levels deep on purpose: HubSpot appends its stylesheet AFTER ours, so we
     need the extra specificity rather than !important everywhere.
     Metrics come from the PC design capture (labels 15px bold, ~36px inputs,
     ~63px field pitch, gradient pill submit ≈142x45 centred). --------------- */
  .ncs-lp .p-hero__hs { margin-top: 24px; }
  .ncs-lp .p-hero__hs .hs-form-field { margin-bottom: 4px; }
  .ncs-lp .p-hero__hs label {
    display: block;
    font-size: var(--fs-button); /* 15px */
    font-weight: 700;
    line-height: 1.5;
    color: var(--text-heading);
    margin-bottom: 0;
  }
  .ncs-lp .p-hero__hs .hs-form-required { color: var(--text-heading); }
  /* helper text sits on ONE line under メールアドレス in the design → 11px */
  .ncs-lp .p-hero__hs .hs-field-desc,
  .ncs-lp .p-hero__hs .hs-richtext {
    font-size: var(--fs-tag);
    font-weight: 400;
    line-height: var(--lh-caption);
    color: var(--text-caption);
    margin: 0 0 2px;
  }
  /* 氏 / 名 sit in HubSpot's two-column fieldset */
  .ncs-lp .p-hero__hs fieldset { max-width: none !important; }
  .ncs-lp .p-hero__hs fieldset.form-columns-2 { display: flex; gap: 16px; }
  .ncs-lp .p-hero__hs fieldset.form-columns-2 .hs-form-field { width: 50%; float: none; }
  .ncs-lp .p-hero__hs .hs-form-field > .input { margin: 0 !important; }
  .ncs-lp .p-hero__hs input[type="text"],
  .ncs-lp .p-hero__hs input[type="email"],
  .ncs-lp .p-hero__hs input[type="tel"],
  .ncs-lp .p-hero__hs input[type="number"],
  .ncs-lp .p-hero__hs select,
  .ncs-lp .p-hero__hs textarea {
    width: 100% !important;
    max-width: 100%;
    box-sizing: border-box;
    font-family: var(--font-base);
    font-size: var(--fs-body);
    line-height: 1.5;
    color: var(--text-heading);
    background: var(--bg-white);
    border: 1px solid var(--border-card);
    border-radius: 4px;
    padding: 5px 10px;
  }
  .ncs-lp .p-hero__hs select { height: 36px; }
  /* Figma design shows this as a single-line field — cap the HubSpot textarea to input height */
  .ncs-lp .p-hero__hs textarea { height: 36px; min-height: 36px; resize: vertical; overflow-y: auto; }
  .ncs-lp .p-hero__hs input:focus, .ncs-lp .p-hero__hs select:focus, .ncs-lp .p-hero__hs textarea:focus {
    outline: 2px solid var(--accent-teal);
    outline-offset: 1px;
  }
  .ncs-lp .p-hero__hs input[type="checkbox"], .ncs-lp .p-hero__hs input[type="radio"] {
    width: auto !important;
    margin: 0 !important; /* kill HubSpot's default right margin — gap is set on the label */
  }
  /* HubSpot ships `margin-left: 20px` on this span — the 8px flex gap replaces it */
  .ncs-lp .p-hero__hs .hs-form-booleancheckbox-display > span { margin-left: 0 !important; }
  .ncs-lp .p-hero__hs .hs-form-booleancheckbox-display p { display: inline; margin: 0; }
  .ncs-lp .p-hero__hs .inputs-list { margin: 0; padding: 0; }
  .ncs-lp .p-hero__hs .legal-consent-container { margin-top: 12px; }
  .ncs-lp .p-hero__hs .legal-consent-container .hs-richtext,
  .ncs-lp .p-hero__hs .hs_error_rollup {
    font-size: var(--fs-button);
    line-height: 1.5;
    color: var(--text-body);
  }
  /* consent checkbox row is centred under the legal sentence */
  .ncs-lp .p-hero__hs .hs-form-booleancheckbox { margin-top: 10px; }
  .ncs-lp .p-hero__hs .hs-form-booleancheckbox label,
  .ncs-lp .p-hero__hs .inputs-list label {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin: 0;
    font-weight: 400;
    font-size: var(--fs-button);
    line-height: 1.5;
    color: var(--text-body);
  }
  .ncs-lp .p-hero__hs a { color: var(--accent-teal); text-decoration: underline; }
  .ncs-lp .p-hero__hs .hs-error-msg,
  .ncs-lp .p-hero__hs .hs-error-msgs label {
    display: block;
    justify-content: flex-start;
    color: var(--accent-alert);
    font-weight: 400;
    font-size: var(--fs-eyebrow);
  }
  .ncs-lp .p-hero__hs .actions { margin: 16px 0 0; padding: 0; text-align: center; }
  .ncs-lp .p-hero__hs .hs-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto !important;
    font-family: var(--font-base);
    font-size: var(--fs-button);
    font-weight: 700;
    line-height: 1.4;
    color: #FFFFFF;
    background: var(--grad-heading);
    border: 0;
    border-radius: var(--radius-pill);
    padding: 12px 26px;
    cursor: pointer;
    box-shadow: 0 4px 2px rgba(0, 0, 0, 0.25);
    transition: transform .25s ease, box-shadow .25s ease, filter .25s ease;
  }
  .ncs-lp .p-hero__hs .hs-button:hover {
    transform: translateY(-3px);
    filter: brightness(1.07);
    box-shadow: 0 10px 20px rgba(30, 111, 216, .35);
  }
  .ncs-lp .p-hero__hs .submitted-message { font-size: var(--fs-body); color: var(--text-body); }

  @media (max-width: 768px) {
    .ncs-lp .p-hero { padding-block: 0 24px; }
    .ncs-lp .p-hero__inner { grid-template-columns: 1fr; gap: 40px; align-items: start; }
    .ncs-lp .p-hero__copy { padding-top: 40px; max-width: none; }
    .ncs-lp .p-hero__h1 { font-weight: 700; }
    .ncs-lp .p-hero__card { scroll-margin-top: 66px; }
    /* 24px would wrap the band copy onto two lines at 390px */
    .ncs-lp .p-hero__card-title { font-size: var(--fs-h3); }

  }

/* ===== section 03 ===== */
.ncs-lp .p-problem {
  background: var(--bg-light);
}
.ncs-lp .p-problem__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.ncs-lp .p-problem__head {
  text-align: center;
  max-width: 780px;
  margin-inline: auto;
}
.ncs-lp .p-problem__head .sec-title {
  text-align: center;
}
.ncs-lp .p-problem__lead {
  margin-top: 20px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
  text-align: center;
}
.ncs-lp .p-problem__cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
  width: 100%;
  margin-top: 44px;
}
.ncs-lp .p-problem__card {
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.ncs-lp .p-problem__card-head {
  background: var(--bg-dark-sub);
  padding: 16px 22px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.ncs-lp .p-problem__tag {
  font-size: var(--fs-tag);
  font-weight: 700;
  letter-spacing: 0.05em;
  color: var(--accent-lime);
  line-height: var(--lh-caption);
}
.ncs-lp .p-problem__card-head h3 {
  margin-top: 4px;
  font-size: var(--fs-h3);
  font-weight: 700;
  color: var(--text-heading-inv);
}
.ncs-lp .p-problem__card-body {
  padding: 22px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
}
.ncs-lp .p-problem__closing {
  margin-top: 40px;
  font-size: clamp(20px, 2.2vw, 26px);
  font-weight: 400;
  line-height: var(--lh-heading);
  color: var(--text-heading);
  text-align: center;
}

@media (max-width: 768px) {
  .ncs-lp .p-problem__cards {
    grid-template-columns: 1fr;
    gap: 20px;
    margin-top: 30px;
  }
  /* SP (Figma sp/03): the section lead is left-aligned body copy that wraps
     naturally — the PC hard breaks must not apply. */
  .ncs-lp .p-problem__lead {
    margin-top: 20px;
    margin-bottom: 10px;
    text-align: left;
  }
  .ncs-lp .p-problem__lead br { display: none; }
}

/* ===== section 04 ===== */
.ncs-lp .p-solution {
  position: relative;
  background: var(--bg-dark);
  overflow: hidden;
}
.ncs-lp .p-solution__glow {
  position: absolute;
  border-radius: 50%;
  filter: blur(74px);
  opacity: 0.55;
  pointer-events: none;
}
.ncs-lp .p-solution__glow--tl {
  width: 654px;
  height: 654px;
  left: -120px;
  top: -180px;
  background: radial-gradient(circle at 35% 35%, rgba(143, 224, 28, 0.55), rgba(30, 147, 168, 0.3) 45%, rgba(10, 14, 21, 0) 70%);
}
.ncs-lp .p-solution__glow--br {
  width: 694px;
  height: 694px;
  right: -220px;
  top: 160px;
  background: radial-gradient(circle at 55% 45%, rgba(30, 111, 216, 0.5), rgba(139, 80, 220, 0.3) 45%, rgba(10, 14, 21, 0) 70%);
}
/* keep 「〜の知見で、」 from orphaning 「で、」 on its own line — wrap only between segments */
.ncs-lp .p-solution__nb { white-space: nowrap; }
.ncs-lp .p-solution__inner {
  position: relative;
  z-index: 1;
}
.ncs-lp .p-solution__head {
  text-align: center;
  max-width: 900px;
  margin-inline: auto;
}
.ncs-lp .p-solution__eyebrow {
  color: var(--accent-lime);
}
.ncs-lp .p-solution__head .sec-title {
  text-align: center;
  color: var(--text-heading-inv);
}
.ncs-lp .p-solution__equation {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
  margin-top: 44px;
  width: 100%;
}
.ncs-lp .p-solution__card {
  flex: 1 1 0;
  max-width: 330px;
  min-height: 188px;
  padding: 25px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.15);
  border: 1px solid rgba(255, 255, 255, 0.12);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.ncs-lp .p-solution__card--result {
  background: var(--grad-heading);
  border: none;
}
.ncs-lp .p-solution__card-label {
  font-size: var(--fs-body);
  letter-spacing: 0.07em;
  color: var(--accent-lime);
}
.ncs-lp .p-solution__card--result .p-solution__card-label {
  color: #ffffff;
}
.ncs-lp .p-solution__card-title {
  margin-top: 10px;
  font-size: var(--fs-h3);
  font-weight: 400;
  color: var(--text-heading-inv);
}
.ncs-lp .p-solution__card--result .p-solution__card-title {
  font-weight: 700;
}
.ncs-lp .p-solution__card-body {
  margin-top: 8px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body-inv);
}
.ncs-lp .p-solution__card--result .p-solution__card-body {
  color: #ffffff;
}
.ncs-lp .p-solution__op {
  flex: 0 0 auto;
  font-size: 30px;
  color: var(--text-body-inv);
  line-height: 1;
}

@media (max-width: 768px) {
  .ncs-lp .p-solution__equation {
    flex-direction: column;
    margin-top: 30px;
    gap: 20px;
  }
  .ncs-lp .p-solution__card {
    max-width: 350px;
    width: 100%;
  }
  .ncs-lp .p-solution__op--eq {
    transform: rotate(90deg);
  }
  /* SP (Figma sp/04): only the AI/KNOWLEDGE/RESULT label + card title stay centered —
     the multi-line body copy underneath is left-aligned. */
  .ncs-lp .p-solution__card-body {
    text-align: left;
  }
}

/* ===== section 05 ===== */
.ncs-lp .p-benefits {
  background: var(--bg-white);
}
.ncs-lp .p-benefits__head {
  text-align: center;
  max-width: 780px;
  margin-inline: auto;
}
.ncs-lp .p-benefits__head .sec-title {
  text-align: center;
}
.ncs-lp .p-benefits__cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 22px;
  margin-top: 50px;
}
.ncs-lp .p-benefits__card {
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  box-shadow: 0 1px 1px rgba(16, 24, 40, 0.05), 0 12px 16px rgba(16, 24, 40, 0.18);
  padding: 29px;
  min-height: 389px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  text-align: left;
}
/* Card order per design (DOM order): (1) title, (2) illustration, (3) body copy */
.ncs-lp .p-benefits__card h3 {
  margin-top: 18px;
  font-size: var(--fs-body);
  font-weight: 700;
  color: var(--text-heading);
  line-height: 1.69;
  text-align: center;
}
.ncs-lp .p-benefits__illust {
  width: 100%;
  padding-block: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ncs-lp .p-benefits__illust img {
  width: 193px;
  max-width: 100%;
  height: auto;
}
.ncs-lp .p-benefits__card p {
  margin-top: 10px;
  font-size: var(--fs-body);
  line-height: 1.53;
  color: var(--text-body);
}

@media (max-width: 768px) {
  .ncs-lp .p-benefits__cards {
    grid-template-columns: 1fr;
    gap: 20px;
    margin-top: 30px;
  }
  .ncs-lp .p-benefits__card {
    min-height: 0;
  }
}

/* ===== section 06 ===== */
.ncs-lp .p-studio__head {
  text-align: center;
  max-width: 780px;
  margin-inline: auto;
}
.ncs-lp .p-studio__head .sec-eyebrow::after {
  margin-inline: auto;
}
.ncs-lp .p-studio__head .sec-title {
  text-align: center;
}
.ncs-lp .p-studio__lead {
  margin-top: 20px;
  max-width: 752px;
  margin-inline: auto;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
  text-align: center;
}
.ncs-lp .p-studio__card-wrap {
  margin-top: 40px;
}
.ncs-lp .p-studio__card {
  background: var(--bg-dark);
  border-radius: var(--radius-card);
  padding: 40px 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
}
.ncs-lp .p-studio__stat {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 6px;
}
.ncs-lp .p-studio__stat-num {
  font-weight: 900;
  font-size: clamp(56px, 8vw, 80px);
  line-height: 1;
}
.ncs-lp .p-studio__stat-label {
  font-weight: 700;
  font-size: clamp(30px, 5vw, 48px);
  line-height: 1;
  color: var(--accent-lime);
}
.ncs-lp .p-studio__sub {
  font-size: var(--fs-h3);
  font-weight: 700;
  line-height: var(--lh-heading);
  color: var(--text-heading-inv);
  text-align: center;
}
.ncs-lp .p-studio__caption {
  font-size: var(--fs-caption);
  line-height: var(--lh-caption);
  color: var(--text-caption-inv);
  text-align: center;
  max-width: 600px;
}
.ncs-lp .p-studio__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px 14px;
  width: 100%;
}
.ncs-lp .p-studio__mode {
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: 14px;
  padding: 16px 18px 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  text-align: center;
}
.ncs-lp .p-studio__mode img {
  height: 50px;
  width: auto;
}
.ncs-lp .p-studio__mode h3 {
  font-size: var(--fs-h3);
  font-weight: 700;
  line-height: var(--lh-heading);
  color: var(--text-heading);
}
.ncs-lp .p-studio__mode p {
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
}
.ncs-lp .p-studio__mode--soon {
  background: rgba(255, 255, 255, 0.3);
  justify-content: center;
  min-height: 160px;
}
.ncs-lp .p-studio__mode--soon p {
  font-size: var(--fs-h3);
  font-weight: 700;
  line-height: var(--lh-heading);
  color: var(--text-heading-inv);
  text-align: center;
}

@media (max-width: 768px) {
  .ncs-lp .p-studio__grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
  }
  /* SP (Figma sp/06): the dark 11-mode block is a full-bleed 390px band —
     it breaks out of the container gutters and drops its rounded corners.
     Negative container-padding margins (not 100vw) so no horizontal overflow. */
  .ncs-lp .p-studio__card {
    margin-inline: calc(var(--container-pad) * -1);
    border-radius: 0;
    padding: 30px 20px;
  }
  /* SP: section lead is left-aligned body copy, wrapping naturally (PC breaks off) */
  .ncs-lp .p-studio__lead {
    margin-top: 16px;
    text-align: left;
  }
  .ncs-lp .p-studio__lead br { display: none; }
}

/* ===== section 07 ===== */
.ncs-lp .p-use-cases__head {
  text-align: center;
  max-width: 820px;
  margin-inline: auto;
}
.ncs-lp .p-use-cases__head .sec-eyebrow::after {
  margin-inline: auto;
}
.ncs-lp .p-use-cases__head .sec-title {
  text-align: center;
}
.ncs-lp .p-use-cases__lead {
  margin-top: 20px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
  text-align: center;
}
.ncs-lp .p-use-cases__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  width: 100%;
  margin-top: 44px;
}
.ncs-lp .p-use-cases__card {
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  box-shadow: 0px 1px 2px 0px rgba(16, 24, 40, 0.05), 0px 12px 32px -12px rgba(16, 24, 40, 0.18);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.ncs-lp .p-use-cases__card-head {
  background: var(--bg-dark);
  padding: 18px 22px;
  text-align: center;
}
.ncs-lp .p-use-cases__scene {
  font-size: 16px;
  letter-spacing: 0.66px;
  line-height: 1.2;
}
.ncs-lp .p-use-cases__card-head h3 {
  font-size: var(--fs-h3);
  font-weight: 700;
  line-height: 1.49;
  color: var(--text-heading-inv);
  /* Figma: single line (SCENE 04's long title overhangs the 22px padding).
     text-align では、はみ出す行は左起点になり中央に見えないため
     flex で中央寄せする（はみ出しが左右均等になる） */
  white-space: nowrap;
  display: flex;
  justify-content: center;
}
.ncs-lp .p-use-cases__card-body {
  padding: 22px;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.ncs-lp .p-use-cases__pain-label {
  font-size: 13px;
  line-height: var(--lh-body);
  color: var(--text-body);
  text-align: center;
}
.ncs-lp .p-use-cases__pain {
  margin-top: 4px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
  text-align: center;
}
.ncs-lp .p-use-cases__pain .alert {
  color: var(--accent-alert);
  font-weight: 500;
}
.ncs-lp .p-use-cases__solution {
  margin-top: 14px;
  padding-top: 15px;
  border-top: 1px dashed var(--border-card);
}
.ncs-lp .p-use-cases__solution p {
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-heading);
  /* Figma reserves a fixed 4-line solution box so the おすすめモード block
     starts at the same y across every card in a row. */
  min-height: calc(4 * var(--lh-body) * 1em);
}
.ncs-lp .p-use-cases__modes {
  padding-top: 14px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  text-align: center;
}
.ncs-lp .p-use-cases__modes-label {
  font-size: var(--fs-body);
  letter-spacing: 0.63px;
  color: var(--text-caption);
}
.ncs-lp .p-use-cases__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
}
.ncs-lp .p-use-cases__chips .chip img {
  height: 19px;
  width: auto;
  margin-right: 5px;
}

@media (max-width: 768px) {
  .ncs-lp .p-use-cases__grid {
    grid-template-columns: 1fr;
    gap: 20px;
    margin-top: 30px;
  }
  /* single column: cards size to content, no reserved 4-line box,
     and long SCENE titles may wrap inside the narrower card */
  .ncs-lp .p-use-cases__solution p { min-height: 0; }
  .ncs-lp .p-use-cases__card-head h3 { white-space: normal; }
  /* SP: section lead is left-aligned body copy (heading stays centered) */
  .ncs-lp .p-use-cases__lead { text-align: left; }
}

/* ===== section 08 ===== */
.ncs-lp .p-how-it-works__head {
  text-align: center;
  max-width: 780px;
  margin-inline: auto;
}
.ncs-lp .p-how-it-works__head .sec-eyebrow::after {
  margin-inline: auto;
}
.ncs-lp .p-how-it-works__head .sec-title {
  text-align: center;
}
.ncs-lp .p-how-it-works__cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
  width: 100%;
  margin-top: 44px;
}
.ncs-lp .p-how-it-works__card {
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  box-shadow: 0px 1px 1px rgba(16, 24, 40, 0.05), 0px 12px 16px rgba(16, 24, 40, 0.18);
  padding: 29px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.ncs-lp .p-how-it-works__card h3 {
  font-size: var(--fs-h3);
  font-weight: 700;
  line-height: var(--lh-heading);
  color: var(--text-heading);
  flex-grow:1;
}
.ncs-lp .p-how-it-works__card img {
  margin-top: 18px;
  width: 101px;
  height: 101px;
}
.ncs-lp .p-how-it-works__card p {
  margin-top: 10px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
}
.ncs-lp .p-how-it-works__rules-head {
  text-align: center;
  max-width: 780px;
  margin-inline: auto;
  margin-top: 48px;
}
.ncs-lp .p-how-it-works__rules-head .sec-eyebrow::after {
  margin-inline: auto;
}
.ncs-lp .p-how-it-works__rules-head .sec-title {
  text-align: center;
}
.ncs-lp .p-how-it-works__layers {
  margin-top: 44px;
  width: 100%;
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  overflow: hidden;
  box-shadow: 0px 1px 2px 0px rgba(16, 24, 40, 0.05), 0px 12px 32px -12px rgba(16, 24, 40, 0.18);
}
.ncs-lp .p-how-it-works__layer {
  display: flex;
}
.ncs-lp .p-how-it-works__layer + .p-how-it-works__layer {
  border-top: 1px solid var(--border-card);
}
.ncs-lp .p-how-it-works__layer-label {
  flex: 0 0 220px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  padding: 22px;
}
.ncs-lp .p-how-it-works__layer--overlay .p-how-it-works__layer-label {
  background: var(--grad-heading);
}
.ncs-lp .p-how-it-works__layer--base .p-how-it-works__layer-label {
  background: var(--bg-dark-sub);
}
.ncs-lp .p-how-it-works__layer-eyebrow {
  font-size: var(--fs-tag);
  font-weight: 700;
  letter-spacing: 0.08em;
  color: #ffffff;
}
.ncs-lp .p-how-it-works__layer--base .p-how-it-works__layer-eyebrow {
  color: var(--accent-lime);
}
.ncs-lp .p-how-it-works__layer-name {
  font-size: var(--fs-body);
  line-height: var(--lh-heading);
  color: #ffffff;
}
.ncs-lp .p-how-it-works__layer-tags {
  flex: 1 1 auto;
  background: var(--bg-white);
  display: flex;
  flex-wrap: wrap;
  align-content: center;
  gap: 8px;
  padding: 22px;
}

@media (max-width: 768px) {
  .ncs-lp .p-how-it-works__cards {
    grid-template-columns: 1fr;
    gap: 20px;
    margin-top: 30px;
  }
  /* SP (Figma sp/08): the 2-Layer diagram becomes two side-by-side columns —
     LEFT = 土台/ナイルの品質基盤 (dark header), RIGHT = 上に重ねる/貴社独自ルール (gradient header),
     each with its chips stacked vertically beneath. Same DOM as PC, reordered via grid `order`. */
  .ncs-lp .p-how-it-works__layers {
    display: grid;
    grid-template-columns: 1fr 1fr;
    margin-top: 30px;
  }
  .ncs-lp .p-how-it-works__layer {
    flex-direction: column;
  }
  .ncs-lp .p-how-it-works__layer + .p-how-it-works__layer {
    border-top: 0;
  }
  .ncs-lp .p-how-it-works__layer--base { order: 1; }
  .ncs-lp .p-how-it-works__layer--overlay {
    order: 2;
    border-left: 1px solid var(--border-card);
  }
  .ncs-lp .p-how-it-works__layer-label {
    flex: none;
    width: 100%;
    gap: 2px;
    justify-content: flex-start;
    padding: 14px 12px;
  }
  .ncs-lp .p-how-it-works__layer-tags {
    width: 100%;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    align-content: stretch;
    gap: 8px;
    padding: 14px 12px;
  }
  .ncs-lp .p-how-it-works__layer-tags .chip {
    width: 100%;
    padding: 5px 11px;
    line-height: var(--lh-heading);
  }
}

/* ===== section 09 ===== */
  .ncs-lp .p-features { background: var(--bg-white); }

  /* ---- section header ---- */
  .ncs-lp .p-features__head { text-align: center; }
  .ncs-lp .p-features__head .sec-eyebrow::after { margin-inline: auto; }
  .ncs-lp .p-features__head .sec-title span { display: block; }
  .ncs-lp .p-features__lead {
    max-width: 752px; margin: 20px auto 0;
    color: var(--text-body); line-height: var(--lh-body);
  }

  /* ---- sub-block 1: dark 7-step AI workflow card ---- */
  .ncs-lp .p-features__flow {
    margin-top: 40px; padding: 44px;
    background: var(--bg-dark); border-radius: var(--radius-card);
  }
  .ncs-lp .p-features__flow__top {
    display: flex; align-items: flex-end; justify-content: space-between; gap: 20px;
  }
  .ncs-lp .p-features__flow__title {
    font-size: clamp(20px, 1.9vw, 24px);
    color: var(--text-heading-inv); line-height: var(--lh-body);
  }
  .ncs-lp .p-features__flow__badge {
    flex: 0 0 auto;
    padding: 9px 15px; border-radius: var(--radius-pill);
    border: 1px solid rgba(143, 224, 28, .3);
    border-color: color-mix(in srgb, var(--accent-lime) 30%, transparent);
    color: var(--accent-lime); font-size: var(--fs-caption); line-height: var(--lh-caption);
  }
  .ncs-lp .p-features__brsp { display: none; }

  .ncs-lp .p-features__steps {
    position: relative;
    margin-top: 30px;
    display: grid; grid-template-columns: repeat(7, 1fr);
  }
  /* gradient rail linking all 7 step markers (from 1st marker centre to 7th marker centre) */
  .ncs-lp .p-features__steps::before {
    content: ""; position: absolute; z-index: 0;
    top: 20px; left: calc(100% / 14); right: calc(100% / 14);
    height: 3px; border-radius: 3px; opacity: .9;
    background: var(--grad-heading);
  }
  .ncs-lp .p-features__step {
    position: relative; z-index: 1;
    display: flex; flex-direction: column; align-items: center;
    padding-inline: 6px; text-align: center;
  }
  .ncs-lp .p-features__step__num {
    flex: 0 0 auto;
    width: 44px; height: 44px; border-radius: 50%;
    display: grid; place-items: center;
    background: var(--bg-dark-sub);
    border: 2px solid rgba(143, 224, 28, .6);
    border-color: color-mix(in srgb, var(--accent-lime) 60%, transparent);
    color: var(--text-heading-inv); font-weight: 700; font-size: var(--fs-body); line-height: 1;
  }
  .ncs-lp .p-features__step__body { display: flex; flex-direction: column; align-items: center; }
  .ncs-lp .p-features__step__label,
  .ncs-lp .p-features__step__desc { display: block; }
  .ncs-lp .p-features__step__label {
    margin-top: 14px;
    color: var(--text-heading-inv); font-size: var(--fs-body); line-height: var(--lh-caption);
  }
  .ncs-lp .p-features__step__desc {
    margin-top: 4px;
    color: var(--text-body-inv); font-size: var(--fs-caption); line-height: var(--lh-caption);
  }
  .ncs-lp .p-features__flow__note {
    margin-top: 21px; padding-top: 21px;
    border-top: 1px solid rgba(255, 255, 255, .1);
    text-align: center;
    color: var(--text-body-inv); font-size: var(--fs-caption); line-height: var(--lh-body);
  }
  .ncs-lp .p-features__flow__note strong { color: var(--text-heading-inv); font-weight: 700; }

  /* ---- sub-blocks 2-4: eyebrow + heading + lead + product screenshot ---- */
  .ncs-lp .p-features__sub { margin-top: 40px; text-align: center; }
  .ncs-lp .p-features__sub .sec-eyebrow::after { margin-inline: auto; }
  .ncs-lp .p-features__sub__title {
    margin-top: 16px;
    font-size: clamp(22px, 2.2vw, 28px); font-weight: 400;
    letter-spacing: .01em; line-height: var(--lh-heading);
  }
  .ncs-lp .p-features__sub__lead {
    max-width: 880px; margin: 20px auto 0;
    color: var(--text-body); line-height: var(--lh-body);
  }
  .ncs-lp .p-features__shot { margin-top: 26px; }
  .ncs-lp .p-features__shot img { width: 100%; height: auto; }

  @media (max-width: 768px) {
    /* SP (Figma sp/09): the dark workflow panel is a full-bleed 390px band —
       breaks out of the container gutters, no rounded corners, 20px inner padding.
       Negative container-padding margins (not 100vw) so no horizontal overflow. */
    .ncs-lp .p-features__flow {
      margin-top: 32px;
      margin-inline: calc(var(--container-pad) * -1);
      padding: 28px 20px;
      border-radius: 0;
    }
    /* SP: section lead + the 3 sub-block leads are left-aligned body copy
       (eyebrows and headings stay centered) */
    .ncs-lp .p-features__lead,
    .ncs-lp .p-features__sub__lead { text-align: left; }
    .ncs-lp .p-features__flow__top { flex-direction: column; align-items: center; gap: 16px; text-align: center; }
    .ncs-lp .p-features__flow__badge { white-space: normal; text-align: center; }
    .ncs-lp .p-features__brsp { display: inline; }

    .ncs-lp .p-features__steps { grid-template-columns: 1fr; gap: 18px; margin-top: 26px; }
    .ncs-lp .p-features__steps::before {
      top: 22px; bottom: 22px; left: 20.5px; right: auto;
      width: 3px; height: auto;
    }
    .ncs-lp .p-features__step {
      flex-direction: row; align-items: flex-start; gap: 14px;
      padding-inline: 0; text-align: left;
    }
    .ncs-lp .p-features__step__body { align-items: flex-start; }
    .ncs-lp .p-features__step__label { margin-top: 0; }
    .ncs-lp .p-features__sub { margin-top: 32px; }
    .ncs-lp .p-features__shot { margin-top: 20px; }
  }

/* ===== section 10 ===== */
  .ncs-lp .p-vs-chat-ai { background: var(--bg-light); }

  /* ---- header ---- */
  .ncs-lp .p-vs-chat-ai__head { text-align: center; }
  .ncs-lp .p-vs-chat-ai__head .sec-eyebrow::after { margin-inline: auto; }
  .ncs-lp .p-vs-chat-ai__lead {
    max-width: 752px; margin: 20px auto 0;
    color: var(--text-body); line-height: var(--lh-body);
  }

  /* ---- table ---- */
  .ncs-lp .p-vs-chat-ai__tablewrap {
    margin-top: 36px;
    background: var(--bg-white);
    border: 1px solid var(--border-card);
    border-radius: var(--radius-card);
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 12px 32px -12px rgba(16, 24, 40, .18);
  }
  .ncs-lp .p-vs-chat-ai__scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .ncs-lp .p-vs-chat-ai__table {
    width: 100%; min-width: 620px;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: var(--fs-body);
  }
  .ncs-lp .p-vs-chat-ai__table col.p-vs-chat-ai__col-label { width: 25.2%; }
  .ncs-lp .p-vs-chat-ai__table col.p-vs-chat-ai__col-nyle  { width: 43.8%; }
  .ncs-lp .p-vs-chat-ai__table col.p-vs-chat-ai__col-other { width: 31%; }
  .ncs-lp .p-vs-chat-ai__table th,
  .ncs-lp .p-vs-chat-ai__table td {
    padding: 16px 20px;
    border-bottom: 1px solid var(--border-card);
    vertical-align: middle;
    line-height: var(--lh-caption);
  }
  .ncs-lp .p-vs-chat-ai__table thead th {
    background: var(--bg-dark);
    color: var(--text-heading-inv);
    font-weight: 400;
    text-align: center;
  }
  .ncs-lp .p-vs-chat-ai__plansub {
    display: block; margin-top: 4px;
    color: var(--accent-lime);
    font-size: var(--fs-caption); line-height: var(--lh-caption);
  }
  /* label column — shaded for every row (Figma shades the 観点 column, not alternate rows) */
  .ncs-lp .p-vs-chat-ai__table tbody th {
    background: var(--bg-light);
    color: var(--text-heading);
    font-weight: 400; text-align: left;
    white-space: nowrap;
  }
  .ncs-lp .p-vs-chat-ai__table tbody td { background: var(--bg-white); }
  .ncs-lp .p-vs-chat-ai__table tbody tr:last-child > * { border-bottom: 0; }
  .ncs-lp .p-vs-chat-ai__yes { color: var(--accent-navy); }
  .ncs-lp .p-vs-chat-ai__check { color: var(--accent-green); margin-right: .3em; }
  .ncs-lp .p-vs-chat-ai__no { color: var(--text-caption); }

  /* ---- closing statement ---- */
  .ncs-lp .p-vs-chat-ai__closing {
    margin-top: 28px; text-align: center;
    font-size: clamp(18px, 1.9vw, 22px);
    line-height: var(--lh-heading);
    color: var(--text-heading);
  }

  @media (max-width: 768px) {
    /* SP (Figma sp/11): the 3-column table fits 390px — no horizontal scroll.
       Columns 観点 92px / Nyle 128px / 汎用AI 128px of a 350px table → % equivalents.
       Text wraps vertically and the green ✓ sits ABOVE the label in the Nyle column. */
    /* SP: section lead is left-aligned body copy (heading stays centered) */
    .ncs-lp .p-vs-chat-ai__lead { text-align: left; }
    .ncs-lp .p-vs-chat-ai__tablewrap { margin-top: 28px; }
    .ncs-lp .p-vs-chat-ai__scroll { overflow-x: visible; }
    .ncs-lp .p-vs-chat-ai__table { min-width: 0; font-size: var(--fs-caption); }
    .ncs-lp .p-vs-chat-ai__table col.p-vs-chat-ai__col-label { width: 26.3%; }
    .ncs-lp .p-vs-chat-ai__table col.p-vs-chat-ai__col-nyle  { width: 36.85%; }
    .ncs-lp .p-vs-chat-ai__table col.p-vs-chat-ai__col-other { width: 36.85%; }
    .ncs-lp .p-vs-chat-ai__table th,
    .ncs-lp .p-vs-chat-ai__table td {
      padding: 12px 8px;
      vertical-align: top;
      line-height: var(--lh-caption);
      overflow-wrap: anywhere;
    }
    .ncs-lp .p-vs-chat-ai__table thead th { padding-inline: 6px; vertical-align: middle; }
    .ncs-lp .p-vs-chat-ai__plansub { font-size: var(--fs-tag); }
    .ncs-lp .p-vs-chat-ai__table tbody th { white-space: normal; }
    .ncs-lp .p-vs-chat-ai__yes { display: block; text-align: center; }
    .ncs-lp .p-vs-chat-ai__check {
      display: block;
      margin-right: 0;
      margin-bottom: 2px;
      font-size: var(--fs-body);
      line-height: 1.2;
    }
    .ncs-lp .p-vs-chat-ai__closing { margin-top: 24px; }
  }

/* ===== section 11 ===== */
  .ncs-lp .p-security { background: var(--bg-dark); }

  /* ---- header (eyebrow is lime on dark bg, per Figma) ---- */
  .ncs-lp .p-security__head { text-align: center; }
  .ncs-lp .p-security__head .sec-eyebrow { color: var(--accent-lime); }
  .ncs-lp .p-security__head .sec-eyebrow::after { margin-inline: auto; }

  /* ---- 3 trust-badge stat cards ---- */
  .ncs-lp .p-security__stats {
    margin-top: 36px;
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
  }
  .ncs-lp .p-security__stat {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 22px;
    padding: 17px 19px; text-align: center;
    background: rgba(255, 255, 255, .04);
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: var(--radius-row);
  }
  .ncs-lp .p-security__stat__check {
    display: block;
    width: 42px;
    height: 48px;
  }
  .ncs-lp .p-security__stat__label {
    font-weight: 700; color: var(--text-heading-inv);
    font-size: clamp(18px, 1.8vw, 24px); line-height: var(--lh-heading);
  }

  /* ---- 4 detail list cards (2x2) ---- */
  .ncs-lp .p-security__cards {
    margin-top: 30px;
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px 18px;
  }
  .ncs-lp .p-security__card {
    padding: 23px;
    background: rgba(255, 255, 255, .04);
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: var(--radius-card);
  }
  .ncs-lp .p-security__card__title {
    font-size: var(--fs-h3); font-weight: 700;
    color: var(--text-heading-inv); line-height: var(--lh-heading);
  }
  .ncs-lp .p-security__list { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }
  .ncs-lp .p-security__list li {
    position: relative; padding-left: 20px;
    color: var(--text-body-inv);
    font-size: var(--fs-body); line-height: var(--lh-body);
  }
  .ncs-lp .p-security__list li::before {
    content: ""; position: absolute; left: 3px; top: .62em;
    width: 6px; height: 6px; border-radius: 3px;
    background: var(--grad-accent);
  }
  .ncs-lp .p-security__brpc { display: inline; }

  @media (max-width: 768px) {
    .ncs-lp .p-security__stats { grid-template-columns: 1fr; gap: 12px; margin-top: 28px; }
    .ncs-lp .p-security__stat { flex-direction: row; gap: 22px; text-align: left; }
    .ncs-lp .p-security__cards { grid-template-columns: 1fr; gap: 11px; margin-top: 24px; }
    .ncs-lp .p-security__card { padding: 20px; }
    .ncs-lp .p-security__brpc { display: none; }
  }

/* ===== section 12 ===== */
/* ---------- Section 12: Results ---------- */
.ncs-lp .p-results { background: var(--bg-white); }

.ncs-lp .p-results__head { text-align: center; }
.ncs-lp .p-results__lead {
  margin: 20px auto 0;
  max-width: 752px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
}

/* Case-study stat cards */
.ncs-lp .p-results__cards {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 22px;
  margin-top: 44px;
}
.ncs-lp .p-results__card {
  display: flex;
  flex-direction: column;
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  padding: 27px;
  min-height: 305px;
  box-shadow: 0 1px 1px rgba(16, 24, 40, .05), 0 12px 16px rgba(16, 24, 40, .18);
  /* company / metric / stat are centered; only the body copy is left-aligned */
  text-align: center;
}
/* Figma sets these two lines to no-wrap (they may overhang the 27px padding,
   as in the design capture's 4th card) */
.ncs-lp .p-results__company {
  margin-top: 12px;
  font-size: var(--fs-body);
  font-weight: 700;
  line-height: 1.64;
  color: var(--text-heading);
  white-space: nowrap;
}
.ncs-lp .p-results__project {
  font-size: var(--fs-body);
  font-weight: 700;
  line-height: 1.26;
  color: var(--text-heading);
  white-space: nowrap;
}
.ncs-lp .p-results__metric-label {
  margin-top: 6px;
  margin-bottom: 10px;
  font-size: var(--fs-body);
  line-height: 1.26;
  color: var(--text-caption);
}
/* Compound stat: small prefix + big number + small suffix, brand-gradient filled.
   Figma re-declares the gradient at 4 slightly different angles (108–115deg) per card —
   normalized to the single canonical var(--grad-heading) per approved normalization #3. */
.ncs-lp .p-results__stat {
  display: block;
  font-weight: 400;
  line-height: 42px;
  letter-spacing: .01em;
}
.ncs-lp .p-results__stat-affix { font-size: 24px; }
.ncs-lp .p-results__stat-num { font-size: 52px; }

.ncs-lp .p-results__desc {
  margin-top: 12px;
  font-size: var(--fs-body);
  line-height: 1.42;
  color: var(--text-body);
  text-align: left;
}

/* Dark mid-page CTA banner */
.ncs-lp .p-results__banner {
  margin-top: 36px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  background: var(--bg-dark);
  border-radius: var(--radius-card);
  padding: 40px;
}
.ncs-lp .p-results__banner-stat {
  font-size: var(--fs-body);
  line-height: 1.26;
  letter-spacing: .043em;
  color: var(--accent-lime);
}
.ncs-lp .p-results__banner-copy {
  margin-top: 10px;
  font-size: 24px;
  line-height: 1.5;
  color: var(--text-heading-inv);
}
.ncs-lp .p-results__cta-btn {
  gap: 9px;
  padding: 16px 27px;
  white-space: nowrap;
  box-shadow: 0 10px 12px rgba(30, 111, 216, .5);
}
.ncs-lp .p-results__cta-btn img { width: 18px; height: 18px; flex: 0 0 auto; }

/* Tablet: card width shrinks below the nowrap company/project line widths —
   allow wrapping to prevent page-level horizontal overflow (769–1100px). */
@media (max-width: 1100px) {
  .ncs-lp .p-results__company, .ncs-lp .p-results__project { white-space: normal; }
}

@media (max-width: 768px) {
  /* SP: section lead is left-aligned body copy (heading stays centered) */
  .ncs-lp .p-results__lead { text-align: left; }
  .ncs-lp .p-results__cards { grid-template-columns: 1fr; gap: 22px; margin-top: 32px; }
  .ncs-lp .p-results__card { min-height: 0; }
  .ncs-lp .p-results__stat-affix { font-size: 20px; }
  .ncs-lp .p-results__stat-num { font-size: 44px; }
  .ncs-lp .p-results__banner {
    flex-direction: column;
    align-items: stretch;
    text-align: center;
    gap: 24px;
    padding: 32px 20px;
  }
  .ncs-lp .p-results__banner-copy { font-size: 20px; }
  .ncs-lp .p-results__cta-btn { width: 100%; }
}

/* ===== section 13 ===== */
/* ---------- Section 13: Pricing ---------- */
.ncs-lp .p-pricing { background: var(--bg-light); }

.ncs-lp .p-pricing__head { text-align: center; }
.ncs-lp .p-pricing__lead {
  margin: 20px auto 0;
  max-width: 752px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
}

/* ---- B. pricing-rule info cards ---- */
.ncs-lp .p-pricing__rules {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-top: 36px;
}
.ncs-lp .p-pricing__rule {
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  padding: 20px 22px 18px;
}
.ncs-lp .p-pricing__rule-title {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: var(--fs-body);
  font-weight: 700;
  line-height: 1.5;
  color: var(--text-heading);
}
/* Figma bullet = small ROUND brand-gradient dot (≈7px) before the bold title */
.ncs-lp .p-pricing__rule-title::before {
  content: "";
  flex: 0 0 auto;
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--grad-accent);
}
.ncs-lp .p-pricing__rule-body {
  margin-top: 11px;
  font-size: var(--fs-body);
  line-height: 1.45;
  color: var(--text-body);
}

/* ---- C. plan cards ---- */
.ncs-lp .p-pricing__plans {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-top: 28px;
}
.ncs-lp .p-pricing__plan {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  padding: 19px 23px 27px;
}
.ncs-lp .p-pricing__plan--featured {
  border-color: var(--accent-teal);
  box-shadow: 0 16px 20px rgba(30, 147, 168, .5);
}
.ncs-lp .p-pricing__plan-badge {
  position: absolute;
  top: -15px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--grad-heading);
  border-radius: var(--radius-pill);
  padding: 4px 12px;
  font-size: var(--fs-body);
  font-weight: 700;
  line-height: 1.4;
  color: #FFFFFF;
  white-space: nowrap;
}
.ncs-lp .p-pricing__plan-name {
  font-size: 30px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: .026em;
  text-align: center;
  color: var(--accent-teal);
}
.ncs-lp .p-pricing__plan-price {
  margin-top: 4px;
  text-align: center;
  color: var(--text-heading);
  line-height: 1.1;
}
.ncs-lp .p-pricing__plan-price b { font-size: 54px; font-weight: 700; }
.ncs-lp .p-pricing__plan-price span {
  font-size: var(--fs-body);
  font-weight: 700;
  color: var(--text-caption);
}
/* Figma: the description block is a fixed 3-line box so the divider + specs + CTA
   line up across all four cards regardless of description length. */
.ncs-lp .p-pricing__plan-desc {
  margin-top: 12px;
  min-height: calc(1.4em * 3);
  font-size: var(--fs-body);
  line-height: 1.4;
  color: var(--text-body);
}
.ncs-lp .p-pricing__plan-specs {
  margin-top: 0;
  padding-top: 14px;
  border-top: 1px solid var(--border-card);
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: var(--fs-body);
  line-height: 1.4;
  color: var(--text-body);
}
.ncs-lp .p-pricing__plan-specs b { color: var(--text-heading); font-weight: 700; }
.ncs-lp .p-pricing__plan-cta {
  margin-top: auto;
  padding-top: 18px;
}
.ncs-lp .p-pricing__plan-cta .p-pricing__btn-outline,
.ncs-lp .p-pricing__plan-cta .p-pricing__btn-filled {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 48px;
  padding: 12px 19px;
  border-radius: var(--radius-pill);
  font-size: var(--fs-body);
  line-height: 1.4;
}
.ncs-lp .p-pricing__btn-outline {
  border: 1px solid var(--border-card);
  color: var(--text-heading);
  background: transparent;
  transition: transform .25s ease, box-shadow .25s ease;
}
.ncs-lp .p-pricing__btn-outline:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 16px rgba(20, 24, 31, .15);
}
.ncs-lp .p-pricing__btn-filled {
  border: 1px solid transparent;
  background: var(--grad-heading);
  color: #FFFFFF;
  font-weight: 700;
  box-shadow: 0 10px 12px rgba(30, 111, 216, .5);
  transition: transform .25s ease, box-shadow .25s ease, filter .25s ease;
}
.ncs-lp .p-pricing__btn-filled:hover {
  transform: translateY(-3px);
  filter: brightness(1.07);
  box-shadow: 0 10px 20px rgba(30, 111, 216, .35);
}
.ncs-lp .p-pricing__disclaimer {
  margin-top: 30px;
  text-align: left;
  font-size: 13px;
  line-height: 1.85;
  color: var(--text-body);
}

/* ---- D. bridge note ---- */
.ncs-lp .p-pricing__note {
  margin-top: 24px;
  text-align: center;
  font-size: var(--fs-body);
  line-height: 1.5;
  color: var(--text-body);
}

/* ---- E. comparison table ---- */
.ncs-lp .p-pricing__tablezone { position: relative; margin-top: 16px; }
.ncs-lp .p-pricing__badge-img { display: none; }
.ncs-lp .p-pricing__tablewrap {
  margin-top: 0;
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  overflow-x: auto;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 12px 32px -12px rgba(16, 24, 40, .18);
}
.ncs-lp .p-pricing__table {
  width: 100%;
  min-width: 780px;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: var(--fs-body);
}
.ncs-lp .p-pricing__table th, .ncs-lp .p-pricing__table td {
  border-bottom: 1px solid var(--border-card);
  padding: 14px 16px;
  vertical-align: middle;
  line-height: var(--lh-caption);
}
.ncs-lp .p-pricing__table tr:last-child > * { border-bottom: 0; }
.ncs-lp .p-pricing__table col.p-pricing__col-label { width: 32.1%; }
.ncs-lp .p-pricing__table col.p-pricing__col-trial { width: 17.1%; }
.ncs-lp .p-pricing__table col.p-pricing__col-plan  { width: 17.6%; }
.ncs-lp .p-pricing__table col.p-pricing__col-ent   { width: 15.6%; }

.ncs-lp .p-pricing__table thead th {
  background: var(--bg-dark);
  color: var(--text-heading-inv);
  font-weight: 400;
  text-align: center;
  letter-spacing: .018em;
}
.ncs-lp .p-pricing__table thead th.p-pricing__th-label { text-align: left; }
.ncs-lp .p-pricing__table thead th.p-pricing__th-featured { position: relative; background: var(--accent-teal); padding-top: 36px; }
.ncs-lp .p-pricing__th-price { display: block; color: var(--accent-lime); }
.ncs-lp .p-pricing__th-price b { font-weight: 700; }
.ncs-lp .p-pricing__th-badge {
  position: absolute;
  top: 8px; left: 50%;
  transform: translateX(-50%);
  background: var(--grad-heading);
  border-radius: var(--radius-pill);
  padding: 0 10px;
  font-size: var(--fs-tag);
  font-weight: 700;
  line-height: 21px;
  color: #FFFFFF;
}
.ncs-lp .p-pricing__table th.p-pricing__rowhead {
  background: var(--bg-light);
  text-align: left;
  font-weight: 700;
  color: var(--text-heading);
  vertical-align: top;
}
.ncs-lp .p-pricing__rowhead-sub {
  display: block;
  font-weight: 400;
  color: var(--text-body);
}
.ncs-lp .p-pricing__table td { text-align: center; color: var(--text-heading); }
.ncs-lp .p-pricing__td-empty { color: var(--text-body-inv); }
.ncs-lp .p-pricing__td-featured { background: var(--bg-light); }
.ncs-lp .p-pricing__td-features { background: var(--bg-white); text-align: left; padding: 24px 20px; }
/* 全プラン共通の機能 row: PC keeps label-cell + 4-column-spanning chip cell; SP swaps in a
   full-width band + shortened chip labels (see the SP media query and the markup comment). */
.ncs-lp .p-pricing__row-features--sp { display: none; }
.ncs-lp .p-pricing__table .p-pricing__row-features--pc > * { border-bottom: 0; }
.ncs-lp .p-pricing__features {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.ncs-lp .p-pricing__features li {
  background: #EEF2F7;
  border: 1px solid var(--border-card);
  border-radius: var(--radius-pill);
  padding: 7px 13px;
  font-size: var(--fs-body);
  line-height: 1.35;
  color: var(--text-body);
}
.ncs-lp .p-pricing__footnotes {
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: var(--fs-eyebrow);
  line-height: var(--lh-caption);
  color: var(--text-body);
}

/* ---- F. dark cost-comparison card ---- */
.ncs-lp .p-pricing__cost {
  margin-top: 28px;
  background: var(--bg-dark);
  border-radius: var(--radius-card);
  padding: 44px 40px;
  overflow: hidden;
}
.ncs-lp .p-pricing__cost-title {
  font-size: 23px;
  font-weight: 400;
  text-align: center;
  color: var(--text-heading-inv);
}
/* Cost-comparison stage (Figma pc/13): a LAYERED composition, not a 3-column row.
   The 天秤 illustration sits centred at its natural 514x234; the 従来 card floats
   left-of-centre over the lowered pan area and the Nyle card sits upper-right above
   the raised pan. Both cards are anchored to the stage centre so the composition
   holds while the container is wider than the stage. */
.ncs-lp .p-pricing__diagram {
  position: relative;
  height: 404px;
  margin-top: 24px;
}
.ncs-lp .p-pricing__scale {
  position: absolute;
  top: 171px;
  left: 50%;
  transform: translateX(-50%);
  width: 514px;
  max-width: none;
  height: auto;
  z-index: 0;
}
.ncs-lp .p-pricing__costcard {
  position: absolute;
  z-index: 1;
  width: 294px;
  border-radius: var(--radius-card);
  text-align: center;
}
.ncs-lp .p-pricing__costcard--before {
  top: 113px;
  left: calc(50% - 327px);
  padding: 18px 19px 16px;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
}
.ncs-lp .p-pricing__costcard--after {
  top: 0;
  left: calc(50% + 33px);
  padding: 15px 17px;
  background: linear-gradient(168deg, rgba(143, 224, 28, .14) 8.49%, rgba(30, 111, 216, .14) 91.51%);
  border: 1px solid rgba(143, 224, 28, .45);
}
.ncs-lp .p-pricing__costcard-label {
  font-size: var(--fs-body);
  line-height: var(--lh-caption);
  letter-spacing: .034em;
  color: var(--text-body-inv);
}
.ncs-lp .p-pricing__costcard--after .p-pricing__costcard-label { color: var(--accent-lime); }
.ncs-lp .p-pricing__costitems {
  margin-top: 9px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 10px;
}
.ncs-lp .p-pricing__costitems li {
  background: rgba(255, 255, 255, .09);
  border-radius: var(--radius-pill);
  padding: 4px 11px;
  font-size: var(--fs-body);
  line-height: 1.4;
  color: #EEF2F7;
}
.ncs-lp .p-pricing__costcard-sub {
  font-size: var(--fs-body);
  line-height: var(--lh-caption);
  color: var(--text-body-inv);
}
.ncs-lp .p-pricing__costcard-label + .p-pricing__costcard-sub { margin-top: 4px; }
.ncs-lp .p-pricing__costcard-price + .p-pricing__costcard-sub { margin-top: 8px; }
.ncs-lp .p-pricing__costcard-price { margin-top: 15px; line-height: 1.2; }
.ncs-lp .p-pricing__costcard-price b { font-size: 30px; font-weight: 400; color: var(--text-heading-inv); }
.ncs-lp .p-pricing__costcard-price span { font-size: var(--fs-body); color: var(--accent-lime); }
.ncs-lp .p-pricing__cost-note {
  margin: 29px auto 0;
  max-width: 522px;
  text-align: center;
  font-size: 12.5px;
  line-height: var(--lh-caption);
  color: var(--text-body-inv);
}
.ncs-lp .p-pricing__cost-note strong { display: block; font-weight: 400; color: var(--text-heading-inv); }

/* ---- G. Professional Options ---- */
.ncs-lp .p-pricing__options-head { margin-top: 56px; text-align: center; }
.ncs-lp .p-pricing .p-pricing__options-title {
  font-size: 28px;
  font-weight: 400;
  margin-top: 16px;
}
.ncs-lp .p-pricing__options-lead {
  margin: 20px auto 0;
  max-width: 752px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
}
.ncs-lp .p-pricing__options {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 24px;
}
.ncs-lp .p-pricing__option {
  display: flex;
  flex-direction: column;
  gap: 13px;
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  padding: 19px 22px;
}
.ncs-lp .p-pricing__option-name {
  font-size: var(--fs-h3);
  font-weight: 400;
  text-align: center;
}
.ncs-lp .p-pricing__option-price {
  font-size: 30px;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
  color: var(--accent-teal);
}
.ncs-lp .p-pricing__option-desc {
  font-size: var(--fs-body);
  line-height: var(--lh-heading);
  line-break: strict; /* keep 拗促音 off line starts, as in the Figma text layout */
  color: var(--text-body);
}
.ncs-lp .p-pricing__options-footnote {
  margin-top: 20px;
  font-size: var(--fs-eyebrow);
  line-height: var(--lh-caption);
  color: var(--text-body);
}

@media (max-width: 880px) {
  .ncs-lp .p-pricing__cost { padding: 36px 20px; }
}

@media (max-width: 768px) {
  /* SP: section lead is left-aligned body copy, wrapping naturally (PC break off) */
  .ncs-lp .p-pricing__lead { text-align: left; }
  .ncs-lp .p-pricing__lead br { display: none; }
  .ncs-lp .p-pricing__rules { grid-template-columns: 1fr; margin-top: 28px; }
  .ncs-lp .p-pricing__plans { grid-template-columns: 1fr; gap: 28px; margin-top: 32px; }
  /* single column: no need to reserve 3 description lines per card */
  .ncs-lp .p-pricing__plan-desc { min-height: 0; }
  .ncs-lp .p-pricing__plan-cta { padding-top: 16px; }
  .ncs-lp .p-pricing__disclaimer { margin-top: 24px; }

  /* ---- E. comparison table on SP (Figma sp/14) ----
     Compact 5-column table that fits 390px (no horizontal scroll): narrow 観点/プラン label
     column + 4 plan columns. The 全プラン共通の機能 row spans the full table width and uses
     the shortened SP chip labels (see .pc-only/.sp-only lists in the markup). */
  .ncs-lp .p-pricing__tablezone { margin-top: 14px; }
  .ncs-lp .p-pricing__tablewrap { overflow: hidden; margin-top: 0; }
  /* 人気 badge: text version wraps at SP cell width — swap in the exported PNG,
     overlaid half-outside the table top edge per the SP design (Team col center = 70%). */
  .ncs-lp .p-pricing__th-badge { display: none; }
  .ncs-lp .p-pricing__badge-img {
    display: block;
    position: absolute;
    top: -10px;
    left: 70%;
    transform: translateX(-50%);
    z-index: 2;
  }
  .ncs-lp .p-pricing__table { min-width: 0; font-size: var(--fs-eyebrow); }
  .ncs-lp .p-pricing__table col.p-pricing__col-label { width: 20%; }
  .ncs-lp .p-pricing__table col.p-pricing__col-trial,
  .ncs-lp .p-pricing__table col.p-pricing__col-plan,
  .ncs-lp .p-pricing__table col.p-pricing__col-ent { width: 20%; }
  .ncs-lp .p-pricing__table th, .ncs-lp .p-pricing__table td {
    padding: 10px 4px;
    overflow-wrap: anywhere;
  }
  .ncs-lp .p-pricing__table thead th {
    padding: 24px 3px 10px;
    font-size: var(--fs-tag);
    letter-spacing: 0;
    line-height: var(--lh-caption);
  }
  .ncs-lp .p-pricing__th-price { font-size: var(--fs-tag); }
  .ncs-lp .p-pricing__th-badge { top: 5px; padding: 0 8px; line-height: 16px; }
  .ncs-lp .p-pricing__table thead th.p-pricing__th-featured { padding-top: 24px; }
  .ncs-lp .p-pricing__row-features--pc { display: none; }
  .ncs-lp .p-pricing__row-features--sp { display: table-row; }
  .ncs-lp .p-pricing__table td.p-pricing__td-features { padding: 14px 12px; }
  .ncs-lp .p-pricing__row-features--sp > th.p-pricing__rowhead { padding: 12px; }
  .ncs-lp .p-pricing__features { gap: 6px; }
  .ncs-lp .p-pricing__features li {
    padding: 5px 10px;
    font-size: var(--fs-eyebrow);
  }
  .ncs-lp .p-pricing__footnotes { font-size: var(--fs-tag); }

  .ncs-lp .p-pricing__cost { padding: 32px 20px; }
  .ncs-lp .p-pricing__cost-title { font-size: 20px; text-align: center; }

  /* SP: the Figma SP design (#Frame25) is a single exported composition — scale with
     mini 従来/Nyle cards on the pans — replacing the two separate cards entirely. */
  .ncs-lp .p-pricing__diagram {
    position: static;
    height: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-top: 20px;
  }
  .ncs-lp .p-pricing__scale {
    position: static;
    top: auto; left: auto;
    transform: none;
    width: 100%;
    max-width: 352px;
  }
  .ncs-lp .p-pricing__costcard { display: none; }

  .ncs-lp .p-pricing__options-head { margin-top: 44px; }
  .ncs-lp .p-pricing__options { grid-template-columns: 1fr; }
  .ncs-lp .p-pricing__options-lead, .ncs-lp .p-pricing__option-desc { text-align: left; }
}

/* ===== section 14 ===== */
/* ---------- Section 14: Flow ---------- */
.ncs-lp .p-flow { background: var(--bg-light); }

.ncs-lp .p-flow__head { text-align: center; }
.ncs-lp .p-flow__lead {
  margin: 20px auto 0;
  max-width: 847px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
}

.ncs-lp .p-flow__steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  margin-top: 44px;
}
.ncs-lp .p-flow__step {
  display: flex;
  flex-direction: column;
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  padding: 25px 23px;
  box-shadow: 0 1px 1px rgba(16, 24, 40, .05), 0 12px 16px rgba(16, 24, 40, .18);
}
.ncs-lp .p-flow__step-num {
  text-align: center;
  font-size: var(--fs-caption);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .05em;
  color: var(--accent-teal);
}
.ncs-lp .p-flow__step-title {
  margin-top: 10px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: var(--fs-h3);
  font-weight: 700;
}
/* Outline "任意" pill — Figma uses an unfilled bordered variant of the chip pattern */
.ncs-lp .p-flow__pill {
  display: inline-flex;
  align-items: center;
  background: transparent;
  border: 1px solid var(--border-card);
  border-radius: var(--radius-pill);
  padding: 3px 9px;
  font-size: 10.5px;
  font-weight: 700;
  line-height: 1.75;
  color: var(--text-caption);
}
.ncs-lp .p-flow__step-body {
  margin-top: 10px;
  font-size: var(--fs-body);
  line-height: var(--lh-caption);
  color: var(--text-body);
}

@media (max-width: 768px) {
  /* SP (Figma sp/15): section lead is left-aligned body copy (heading stays centered) */
  .ncs-lp .p-flow__lead { text-align: left; }
  .ncs-lp .p-flow__steps { grid-template-columns: 1fr; gap: 20px; margin-top: 32px; }
}

/* ===== section 15 ===== */
/* ---------- Section 15: FAQ ---------- */
.ncs-lp .p-faq__head { text-align: center; }

.ncs-lp .p-faq__list {
  max-width: 820px;
  margin: 40px auto 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.ncs-lp .p-faq__item {
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-row);
  overflow: hidden;
}

.ncs-lp .p-faq__summary {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 20px 22px;
  cursor: pointer;
  list-style: none;
  transition: background .2s ease;
}
.ncs-lp .p-faq__summary:hover {
  background: var(--bg-light);
}
.ncs-lp .p-faq__summary::-webkit-details-marker { display: none; }
.ncs-lp .p-faq__summary::marker { content: ""; }
.ncs-lp .p-faq__summary:focus-visible {
  outline: 2px solid var(--accent-teal);
  outline-offset: -2px;
}

.ncs-lp .p-faq__q {
  flex: 0 0 auto;
  font-size: var(--fs-caption);
  font-weight: 700;
  line-height: var(--lh-caption);
  color: var(--accent-teal);
}
.ncs-lp .p-faq__qtext {
  flex: 1 1 auto;
  font-size: var(--fs-body);
  font-weight: 700;
  line-height: var(--lh-caption);
  color: var(--text-heading);
}
.ncs-lp .p-faq__icon {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  transition: transform .3s ease;
}
.ncs-lp .p-faq__item[open] .p-faq__icon { transform: rotate(180deg); }

/* Answer panel — height is animated by the script below; the CSS fallback simply reveals it. */
.ncs-lp .p-faq__answer { overflow: hidden; }
.ncs-lp .p-faq__answer p {
  padding: 0 22px 20px 50px;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-body);
}

@media (prefers-reduced-motion: reduce) {
  .ncs-lp .p-faq__icon { transition: none; }
}

@media (max-width: 768px) {
  .ncs-lp .p-faq__list { margin-top: 28px; }
  .ncs-lp .p-faq__summary { padding: 18px 18px; gap: 12px; }
  .ncs-lp .p-faq__answer p { padding: 0 18px 18px 42px; }
}

/* ===== section 16 ===== */
  .ncs-lp .p-final-cta { background: var(--bg-dark); }
  .ncs-lp .p-final-cta__inner { text-align: center; }

  .ncs-lp .p-final-cta__title {
    font-size: var(--fs-h2);
    font-weight: 400;
    line-height: var(--lh-heading);
    color: var(--text-heading-inv);
  }
  .ncs-lp .p-final-cta__title .p-final-cta__line { display: block; }

  .ncs-lp .p-final-cta__lead {
    margin-top: 18px;
    font-size: var(--fs-body);
    line-height: var(--lh-body);
    color: var(--text-body-inv);
  }

  .ncs-lp .p-final-cta__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    justify-content: center;
    margin-top: 30px;
  }
  .ncs-lp .p-final-cta__actions .btn { padding: 12px 26px; min-height: 50px; white-space: nowrap; }
  .ncs-lp .p-final-cta__actions .btn--grad { min-width: 176px; box-shadow: 0 4px 2px rgba(0, 0, 0, 0.25); }

  .ncs-lp .p-final-cta__tel {
    margin-top: 18px;
    font-size: var(--fs-body);
    line-height: var(--lh-body);
    color: var(--text-body-inv);
  }
  .ncs-lp .p-final-cta__tel-num { color: var(--accent-lime); font-weight: 700; }

  @media (max-width: 768px) {
    /* SP: buttons stack, phone label breaks onto its own line */
    .ncs-lp .p-final-cta__actions { flex-direction: column; align-items: center; }
    .ncs-lp .p-final-cta__actions .btn--grad { width: 176px; min-width: 0; }
    .ncs-lp .p-final-cta__tel-label { display: block; }
  }

/* ===== section 17 ===== */
  /* ---- band ---- */
  .ncs-lp .p-related-services {
    background: #F2F5F6;
    padding: 80px 20px;
  }
  .ncs-lp .p-related-services__inner {
    max-width: 980px;
    margin-inline: auto;
  }
  .ncs-lp .p-related-services__ttl {
    color: #014173;
    font-size: 48px;
    font-weight: 700;
    line-height: 1.2;
    text-align: center;
    letter-spacing: normal;
  }
  .ncs-lp .p-related-services__ttl small { font-size: 30px; }

  /* ---- 3 x 2 white cards ---- */
  .ncs-lp .p-related-services__list {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 18px;
    margin-top: 40px;
  }
  .ncs-lp .p-related-services__card {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: calc((100% - 36px) / 3);
    border-radius: 10px;
    background: #FFF;
    padding: 25px;
    transition: box-shadow .25s ease;
  }
  .ncs-lp .p-related-services__card:hover {
    box-shadow: 0 8px 20px rgba(20, 24, 31, .08);
  }
  .ncs-lp .p-related-services__card a {
    display: block;
    position: relative;
    color: #014173;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.6;
    text-decoration: none;
    padding-right: 40px;
  }
  .ncs-lp .p-related-services__card a.p-related-services__main {
    font-size: 18px;
    font-weight: 700;
  }
  .ncs-lp .p-related-services__card a::after {
    content: "→";
    position: absolute;
    top: 0;
    right: 0;
    transition: transform .25s ease;
  }
  .ncs-lp .p-related-services__card a:hover::after {
    transform: translateX(4px);
  }

  @media (max-width: 768px) {
    .ncs-lp .p-related-services { padding: 40px 20px; }
    .ncs-lp .p-related-services__ttl { font-size: 28px; }
    .ncs-lp .p-related-services__ttl small { font-size: 20px; }
    .ncs-lp .p-related-services__card { width: 100%; padding: 20px; }
  }

/* ===== section 18 ===== */
  .ncs-lp .p-seo-info {
    background: #FFF;
    padding: 0 20px;
  }
  .ncs-lp .p-seo-info__inner {
    max-width: 950px;
    margin-inline: auto;
    padding: 100px 0;
  }
  .ncs-lp .p-seo-info__ttl {
    color: #004173;
    font-size: 40px;
    font-weight: 700;
    /* live site uses line-height:normal — pinned so the rendered box matches (53px) */
    line-height: 1.325;
    letter-spacing: normal;
    text-align: center;
  }
  .ncs-lp .p-seo-info__sub {
    color: #014173;
    font-size: 30px;
    font-weight: 700;
    line-height: 1.4;
    letter-spacing: .06em;
    text-align: center;
    margin: 50px 0 30px;
  }

  /* ---- 書籍カード ---- */
  .ncs-lp .p-seo-info__books {
    display: flex;
    flex-wrap: wrap;
    gap: 45px;
    margin-top: 25px;
  }
  .ncs-lp .p-seo-info__book {
    width: calc((100% - 90px) / 3);
    background: #fff;
    box-shadow: 0 0 15px 0 rgba(212, 212, 212, .4);
    transition: box-shadow .25s ease;
  }
  .ncs-lp .p-seo-info__book:hover {
    box-shadow: 0 8px 20px rgba(20, 24, 31, .08);
  }
  .ncs-lp .p-seo-info__book > a {
    display: block;
    height: 100%;
  }
  .ncs-lp .p-seo-info__book-inner {
    padding: 30px 20px;
    letter-spacing: .08em;
  }
  .ncs-lp .p-seo-info__book-thumb {
    height: 200px;
    display: block;
  }
  .ncs-lp .p-seo-info__book-thumb img {
    display: block;
    height: 200px;
    width: auto;
    max-width: 100%;
    margin: 0 auto;
  }
  .ncs-lp .p-seo-info__book-cat {
    font-size: 14px;
    line-height: 1;
    color: #3ea2d7;
    padding-top: 25px;
  }
  .ncs-lp .p-seo-info__book-ttl {
    font-size: 18px;
    font-weight: 700;
    color: #333;
    line-height: 1.5;
    border-bottom: 1px solid #ccc;
    padding: 3px 0 20px;
  }
  .ncs-lp .p-seo-info__book-meta {
    color: #333;
    font-size: 14px;
    line-height: 1.6;
    padding-top: 15px;
  }

  /* ---- イベント ---- */
  .ncs-lp .p-seo-info__events {
    display: flex;
    flex-wrap: wrap;
    gap: 30px;
    margin-top: 40px;
  }
  .ncs-lp .p-seo-info__event { width: calc((100% - 90px) / 4); }
  .ncs-lp .p-seo-info__event-img img {
    width: 100%;
    height: auto;
    display: block;
  }
  .ncs-lp .p-seo-info__event-ttl {
    color: #333;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.6;
    margin-top: 10px;
  }

  @media (max-width: 768px) {
    .ncs-lp .p-seo-info__inner { padding: 50px 0; }
    .ncs-lp .p-seo-info__ttl { font-size: 26px; }
    .ncs-lp .p-seo-info__sub { font-size: 16px; margin: 40px 0 20px; }
    .ncs-lp .p-seo-info__books { display: block; margin: 40px 0 30px; }
    .ncs-lp .p-seo-info__book { width: 100%; }
    .ncs-lp .p-seo-info__book + .p-seo-info__book { margin-top: 20px; }
    .ncs-lp .p-seo-info__book-ttl { font-size: 16px; padding-bottom: 15px; }
    .ncs-lp .p-seo-info__event { width: 100%; }
  }

/* ===== section 22 ===== */
/* ---------- Section 22: sticky CTA ---------- */
/* ---- PC: right-side floating card ---- */
.ncs-lp .p-sticky-cta__pc {
  position: fixed;
  right: 16px;
  bottom: 24px;
  z-index: 90;
  width: 260px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity .3s ease, transform .3s ease, visibility .3s;
}
.ncs-lp .p-sticky-cta__pc.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.ncs-lp .p-sticky-cta__card {
  position: relative;
  background: var(--bg-white);
  border: 1px solid var(--border-card);
  border-radius: var(--radius-card);
  box-shadow: 0 20px 25px rgba(8, 20, 45, 0.5);
  padding: 27px 10px 13px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.ncs-lp .p-sticky-cta__close {
  position: absolute;
  top: -13px;
  right: -8px;
  width: 26px;
  height: 26px;
  border: 0;
  border-radius: 50%;
  background: var(--bg-light);
  color: var(--text-caption);
  font-size: 14px;
  line-height: 26px;
  text-align: center;
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(8, 20, 45, 0.18);
}
.ncs-lp .p-sticky-cta__panel {
  background: linear-gradient(178deg, #D9D9D9 1.76%, #FBFBFB 43.15%);
  border: 1px solid #DADADA;
  border-radius: 10px;
  padding: 14px 12px 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  text-align: center;
}
.ncs-lp .p-sticky-cta__panel img { height: auto; }
.ncs-lp .p-sticky-cta__panel-text {
  font-size: var(--fs-body);
  font-weight: 700;
  line-height: 1.32;
  color: var(--text-heading);
}
.ncs-lp .p-sticky-cta__panel-text--medium { font-weight: 500; line-height: 1.1; }
.ncs-lp .p-sticky-cta__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  padding: 0 27px;
  border-radius: var(--radius-pill);
  font-size: var(--fs-button);
  font-weight: 700;
  line-height: 1.4;
}
.ncs-lp .p-sticky-cta__btn--grad {
  min-width: 176px;
  background: var(--grad-heading);
  color: #FFFFFF;
  transition: transform .25s ease, box-shadow .25s ease, filter .25s ease;
}
.ncs-lp .p-sticky-cta__btn--grad:hover {
  transform: translateY(-3px);
  filter: brightness(1.07);
  box-shadow: 0 10px 20px rgba(30, 111, 216, .35);
}
.ncs-lp .p-sticky-cta__btn--outline {
  border: 2px solid #1A1A1A;
  color: #1A1A1A;
  background: var(--bg-white);
  transition: transform .25s ease, box-shadow .25s ease;
}
.ncs-lp .p-sticky-cta__btn--outline:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 16px rgba(20, 24, 31, .15);
}

/* ---- SP: fixed bottom bar ---- */
.ncs-lp .p-sticky-cta__sp {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 90;
  height: 60px;
  background: linear-gradient(180deg, #D9D9D9 7.4%, #FBFBFB 32.48%);
  border-top: 1px solid #DADADA;
  display: none;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 5px 14px;
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s ease, visibility .3s;
}
.ncs-lp .p-sticky-cta__sp.is-visible { opacity: 1; visibility: visible; }
.ncs-lp .p-sticky-cta__sp .p-sticky-cta__btn { flex: 1 1 0; max-width: 188px; padding: 0 10px; height: 50px; }
.ncs-lp .p-sticky-cta__sp-btntext { font-weight: 700; text-align: center; line-height: 1.15; }
.ncs-lp .p-sticky-cta__sp-btntext small { display: block; font-size: 12px; font-weight: 700; }
.ncs-lp .p-sticky-cta__sp-btntext span { display: block; font-size: var(--fs-button); }

@media (max-width: 768px) {
  .ncs-lp .p-sticky-cta__pc { display: none; }
  .ncs-lp .p-sticky-cta__sp { display: flex; }
  /* keep the fixed bar from covering the last content */
  body.is-ncs-cta-active { padding-bottom: 60px; }
}

/* ===== global responsive helpers ===== */
.ncs-lp .pc-only { display: block; }
.ncs-lp .sp-only { display: none; }
@media (max-width: 768px) {
  .ncs-lp .pc-only { display: none; }
  .ncs-lp .sp-only { display: block; }
}

/* ==========================================================
   Shared footer support — global defaults
   他ページでは seo-soudanshitu.css が wp_head() 経由でサイト全体に
   提供しているデフォルト打ち消し（リスト・リンク・基本フォント）の再現。
   footer.css はこれらのグローバル定義がある前提で書かれているため、
   これが無いと共通フッターに UA デフォルト（下線・リストマーカー等）が出る。
   .ncs-lp 配下は自前のリセットが同等以上の詳細度で上書きするため影響なし。
   （同型LPの先例: generativeai.css も同様のページ全体リセットを持つ）
   ========================================================== */
body {
  font-family: "Noto Sans JP", Verdana, "Hiragino Kaku Gothic Pro", "Meiryo", sans-serif;
  color: #333;
}
ol, ul, li {
  margin: 0;
  padding: 0;
  list-style: none;
}
a {
  color: #2c54b0;
  text-decoration: none;
}
p {
  line-height: 1.8;
  margin-bottom: 0;
}

/* ==========================================================
   Shared footer support — NYLE X PARTNERS banner (.foot_nxp)
   Copied from css/seo-soudanshitu02.css (L12328-12389).
   That sheet is enqueued site-wide via wp_head(), which this
   standalone LP template does not call; footer.css does not
   contain these rules. Keep in sync with the original.
   ========================================================== */
.foot_nxp {
  background-image: url(/img/common/bg_foot_nxp.jpg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.foot_nxp_inner {
  padding: 40px 20px;
}
.foot_nxp_logo {
  max-width: 260px;
  margin-inline: auto;
  margin-bottom: 20px;
}
.foot_nxp_text {
  font-size: 36px;
  font-weight: 700;
  text-align: center;
  color: #fff;
  line-height: 1.4;
  margin-bottom: 30px;
}
.foot_nxp_btn {
  max-width: 360px;
  margin-inline: auto;
  text-align: center;
}
.foot_nxp_btn a {
  display: block;
  padding: 20px;
  border-radius: 50px;
  background: var(--Grd_green, linear-gradient(270deg, #D4FF98 0%, #93FF00 100%));
  color: #1A1A1A;
  font-family: "Noto Sans JP", sans-serif;
  text-align: center;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.1;
  transition: 0.3s;
}
.foot_nxp_btn a:hover {
  opacity: 0.7;
}

.foot_nxp_sp_bg {
  display: none;
}
@media only screen and (max-width: 768px) {
  .foot_nxp_sp_bg {
    display: block;
    max-height: 180px;
    width: 100%;
    object-fit: cover;
    object-position: top;
  }
  .foot_nxp {
    background-image: none;
    background-color: #1A1A1A;
  }
}
