/*
Theme Name: AIDirector
Theme URI: https://ab-official.co.jp/
Author: GENOS
Description: AIDirector promotion landing page theme.
Version: 1.0.4
Text Domain: aidirector
*/

:root {
      --np-gray-900: #111111;
      --np-gray-800: #222222;
      --np-gray-700: #333333;
      --np-gray-600: #474747;
      --np-gray-500: #616161;
      --np-gray-400: #808080;
      --np-gray-300: #a3a3a3;
      --np-gray-200: #c7c7c7;
      --np-gray-100: #e6e6e6;
      --np-gray-50: #f5f5f5;
      --np-blue-600: #146af5;
      --aid-blue: #2196f3;
      --aid-blue-dark: #1976d2;
      --aid-cyan: #00a5ad;
      --font-base: "Noto Sans JP", "Inter", "Helvetica Neue", Arial, sans-serif;
      --font-display: "Noto Sans", "Noto Sans JP", "Inter", sans-serif;
      --font-en: "Jost", "Inter", sans-serif;
      --font-ts-fallback: "こぶりなゴシック W3 JIS2004", "ゴシックMB101 M JIS2004", "Noto Sans JP", sans-serif;
      --container: 1120px;
      --side: clamp(20px, 5vw, 64px);
      --section-y: clamp(72px, 11vw, 144px);
      --radius: 8px;
      --shadow: 0 24px 70px rgba(17, 17, 17, 0.09);
    }

    * {
      box-sizing: border-box;
    }

    html {
      scroll-behavior: smooth;
    }

    body {
      margin: 0;
      background: #ffffff;
      color: var(--np-gray-900);
      font-family: var(--font-base);
      font-size: 16px;
      line-height: 1.8;
      letter-spacing: 0;
      font-feature-settings: "palt";
      -webkit-font-smoothing: antialiased;
      text-rendering: optimizeLegibility;
    }

    a {
      color: inherit;
      text-decoration: none;
    }

    img {
      display: block;
      max-width: 100%;
    }

    button,
    input,
    textarea {
      font: inherit;
      font-feature-settings: "palt";
    }

    .site-header {
      position: sticky;
      top: 0;
      z-index: 50;
      background: rgba(255, 255, 255, 0.94);
      border-bottom: 1px solid var(--np-gray-100);
      backdrop-filter: blur(18px);
    }

    .header-inner {
      width: min(var(--container), calc(100% - var(--side) * 2));
      min-height: 72px;
      margin: 0 auto;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 28px;
    }

    .brand {
      display: flex;
      align-items: center;
      gap: 12px;
      min-width: 0;
      font-family: var(--font-display);
      font-weight: 900;
      line-height: 1;
    }

    .brand-logo {
      width: 192px;
      height: auto;
    }

    .header-nav {
      display: flex;
      align-items: center;
      gap: 22px;
      color: var(--np-gray-600);
      font-size: 13px;
      font-weight: 700;
      white-space: nowrap;
    }

    .header-nav a {
      transition: color 180ms ease;
    }

    .header-nav a:hover {
      color: var(--np-blue-600);
    }

    .header-actions {
      display: flex;
      align-items: center;
      gap: 10px;
    }

    .btn {
      min-height: 44px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      padding: 0 18px;
      border: 1px solid var(--np-gray-900);
      border-radius: var(--radius);
      background: var(--np-gray-900);
      color: #ffffff;
      font-size: 14px;
      font-weight: 800;
      line-height: 1.2;
      transition: transform 180ms ease, background 180ms ease, color 180ms ease, border-color 180ms ease;
    }

    .btn:hover {
      transform: translateY(-1px);
      background: var(--np-blue-600);
      border-color: var(--np-blue-600);
    }

    .btn-secondary {
      background: #ffffff;
      color: var(--np-gray-900);
    }

    .btn-secondary:hover {
      color: #ffffff;
    }

    .hero {
      min-height: auto;
      display: grid;
      align-items: center;
      padding: clamp(76px, 10vw, 132px) 0 clamp(62px, 8vw, 104px);
      overflow: hidden;
      background: #ffffff;
    }

    .hero-inner {
      width: min(var(--container), calc(100% - var(--side) * 2));
      margin: 0 auto;
      display: grid;
      grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
      align-items: center;
      gap: clamp(32px, 5vw, 64px);
    }

    .hero-kv {
      position: relative;
      width: 100%;
      aspect-ratio: 4 / 5;
      border-radius: var(--radius);
      overflow: hidden;
    }

    .hero-kv img {
      width: 100%;
      height: 100%;
      object-fit: contain;
      object-position: center;
    }

    .hero-kv-sp {
      display: none;
    }

    .eyebrow {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      margin: 0 0 22px;
      color: var(--np-blue-600);
      font-family: var(--font-en);
      font-size: 12px;
      font-weight: 800;
      line-height: 1;
      text-transform: uppercase;
      letter-spacing: 0;
    }

    .eyebrow::before {
      content: "";
      width: 36px;
      height: 2px;
      background: currentColor;
    }

    .hero h1 {
      max-width: 100%;
      margin: 0;
      font-family: var(--font-display);
      font-size: clamp(48px, 7.2vw, 92px);
      font-weight: 900;
      line-height: 1.08;
      letter-spacing: 0;
    }

    .hero h1 span {
      color: var(--np-blue-600);
    }

    .hero-lead {
      max-width: 860px;
      margin: 28px 0 0;
      color: var(--np-gray-600);
      font-size: clamp(16px, 1.5vw, 19px);
      font-weight: 500;
      line-height: 2;
    }

    .hero-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
      margin-top: 34px;
    }

    .hero-tags {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-top: 28px;
    }

    .hero-tags span {
      padding: 8px 11px;
      border: 1px solid var(--np-gray-100);
      border-radius: 999px;
      background: #ffffff;
      color: var(--np-gray-700);
      font-size: 12px;
      font-weight: 800;
    }

    .hero-preview {
      padding: clamp(48px, 7vw, 84px) 0;
      background: var(--np-gray-50);
      border-top: 1px solid var(--np-gray-100);
    }

    .hero-preview-inner {
      width: min(var(--container), calc(100% - var(--side) * 2));
      margin: 0 auto;
    }

    .hero-preview .hero-visual {
      width: 100%;
      margin: 0 auto;
    }

    .hero-visual {
      position: relative;
      display: grid;
      grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
      align-items: stretch;
      gap: 28px;
      min-height: 460px;
      padding: 28px;
      background: #ffffff;
      color: var(--np-gray-900);
      border-radius: var(--radius);
      box-shadow: var(--shadow);
      overflow: hidden;
    }

    .visual-content {
      display: grid;
      align-content: center;
      gap: 28px;
    }

    .visual-illust {
      display: flex;
      width: 100%;
      min-height: 320px;
      aspect-ratio: 3 / 4;
      border-radius: var(--radius);
      overflow: hidden;
    }

    .visual-illust img {
      width: 100%;
      flex: 1;
      object-fit: cover;
    }

    .visual-top {
      position: relative;
      z-index: 1;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 18px;
    }

    .visual-title {
      display: grid;
      gap: 8px;
    }

    .visual-title small {
      color: var(--np-gray-400);
      font-family: var(--font-en);
      font-size: 12px;
      font-weight: 800;
    }

    .visual-title strong {
      font-family: var(--font-display);
      font-size: 24px;
      font-weight: 900;
      line-height: 1.4;
      color: var(--np-gray-900);
    }

    .visual-pill {
      padding: 8px 12px;
      border: 1px solid var(--np-gray-100);
      border-radius: 999px;
      color: var(--np-gray-700);
      font-size: 12px;
      font-weight: 800;
      white-space: nowrap;
    }

    .lesson-stack {
      position: relative;
      z-index: 1;
      display: grid;
      gap: 12px;
    }

    .lesson-card {
      display: grid;
      grid-template-columns: 46px 1fr;
      gap: 14px;
      align-items: start;
      padding: 18px;
      border: 1px solid var(--np-gray-100);
      border-radius: var(--radius);
      background: #ffffff;
      box-shadow: var(--shadow);
    }

    .lesson-number {
      display: grid;
      place-items: center;
      width: 46px;
      height: 46px;
      border-radius: 8px;
      background: var(--np-blue-600);
      color: #ffffff;
      font-family: var(--font-en);
      font-size: 13px;
      font-weight: 900;
      line-height: 1;
    }

    .lesson-card h3 {
      margin: 0 0 6px;
      font-size: 17px;
      font-weight: 900;
      line-height: 1.5;
      color: var(--np-gray-900);
    }

    .lesson-card p {
      margin: 0;
      color: var(--np-gray-500);
      font-size: 13px;
      line-height: 1.8;
    }

    .section {
      padding: var(--section-y) 0;
      border-top: 1px solid var(--np-gray-100);
    }

    .section-gray {
      background: var(--np-gray-50);
    }

    .section-dark {
      background: var(--np-gray-900);
      color: #ffffff;
    }

    .section-inner {
      width: min(var(--container), calc(100% - var(--side) * 2));
      margin: 0 auto;
    }

    .section-head {
      display: grid;
      grid-template-columns: 180px minmax(0, 1fr);
      gap: clamp(24px, 6vw, 72px);
      align-items: start;
      margin-bottom: clamp(34px, 6vw, 72px);
    }

    .section-label {
      display: grid;
      gap: 8px;
      color: var(--np-blue-600);
      font-family: var(--font-en);
      font-size: 12px;
      font-weight: 900;
      line-height: 1;
      text-transform: uppercase;
    }

    .section-label::after {
      content: "";
      width: 44px;
      height: 2px;
      background: currentColor;
    }

    .section-title {
      margin: 0;
      font-family: var(--font-display);
      font-size: clamp(32px, 5vw, 54px);
      font-weight: 900;
      line-height: 1.34;
      letter-spacing: 0;
    }

    .section-lead {
      max-width: 760px;
      margin: 22px 0 0;
      color: var(--np-gray-600);
      font-size: 17px;
      line-height: 2;
    }

    .section-dark .section-lead,
    .section-dark .text-muted {
      color: var(--np-gray-200);
    }

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

    .problem-item,
    .reason-item,
    .curriculum-item,
    .faq-item {
      border: 1px solid var(--np-gray-100);
      border-radius: var(--radius);
      background: #ffffff;
    }

    .problem-item,
    .reason-item,
    .curriculum-item {
      padding: 26px;
    }

    .problem-item {
      display: grid;
      gap: 18px;
      min-height: 160px;
    }

    .problem-item::before {
      content: "";
      width: 26px;
      height: 2px;
      background: var(--np-blue-600);
    }

    .problem-item h3 {
      margin: 0;
      font-size: 20px;
      font-weight: 900;
      line-height: 1.5;
    }

    .problem-body {
      display: grid;
      grid-template-columns: 120px minmax(0, 1fr);
      gap: 18px;
      align-items: center;
    }

    .problem-illust {
      width: min(120px, 100%);
      height: 108px;
      object-fit: contain;
      justify-self: center;
    }

    .problem-item p,
    .reason-item p,
    .curriculum-item p {
      margin: 0;
      color: var(--np-gray-600);
      font-size: 15px;
      line-height: 1.9;
    }

    .two-column {
      display: grid;
      grid-template-columns: minmax(0, 0.86fr) minmax(0, 1.14fr);
      gap: clamp(32px, 6vw, 80px);
      align-items: center;
    }

    .message-block {
      display: grid;
      gap: 22px;
    }

    .message-block p {
      margin: 0;
      color: var(--np-gray-600);
      font-size: 17px;
      line-height: 2.05;
    }

    .feature-list {
      display: grid;
      gap: 14px;
    }

    .feature-row {
      display: grid;
      grid-template-columns: 64px 1fr;
      gap: 18px;
      align-items: start;
      padding: 22px 0;
      border-bottom: 1px solid var(--np-gray-100);
    }

    .feature-row:first-child {
      border-top: 1px solid var(--np-gray-100);
    }

    .feature-row span {
      color: var(--np-blue-600);
      font-family: var(--font-en);
      font-size: 14px;
      font-weight: 900;
      line-height: 1.2;
    }

    .feature-row h3 {
      margin: 0 0 8px;
      font-size: 22px;
      font-weight: 900;
      line-height: 1.55;
    }

    .feature-row p {
      margin: 0;
      color: var(--np-gray-600);
      line-height: 1.9;
    }

    .reason-item {
      min-height: 236px;
    }

    .reason-head {
      grid-template-columns: 180px minmax(0, 0.95fr) minmax(220px, 0.65fr);
      align-items: center;
    }

    .reason-illust {
      width: 100%;
      max-height: 240px;
      object-fit: contain;
    }

    .curriculum-head {
      grid-template-columns: 180px minmax(0, 1fr) minmax(180px, 260px);
      align-items: start;
    }

    .curriculum-illust {
      width: 100%;
      max-height: 210px;
      object-fit: contain;
    }

    .reason-item small,
    .curriculum-item small {
      display: block;
      margin-bottom: 18px;
      color: var(--np-blue-600);
      font-family: var(--font-en);
      font-size: 12px;
      font-weight: 900;
      line-height: 1;
    }

    .reason-item h3,
    .curriculum-item h3 {
      margin: 0 0 12px;
      font-size: 20px;
      font-weight: 900;
      line-height: 1.55;
    }

    .target-strip {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 1px;
      overflow: hidden;
      border: 1px solid var(--np-gray-100);
      border-radius: var(--radius);
      background: var(--np-gray-100);
    }

    .target-strip li {
      min-height: 92px;
      display: flex;
      align-items: center;
      padding: 22px 26px;
      background: #ffffff;
      color: var(--np-gray-700);
      font-weight: 800;
      line-height: 1.7;
      list-style: none;
    }

    .curriculum-item {
      min-height: 250px;
    }

    .roadmap {
      display: grid;
      gap: 0;
      border-top: 1px solid rgba(255, 255, 255, 0.16);
    }

    .roadmap-step {
      display: grid;
      grid-template-columns: 170px minmax(0, 1fr);
      gap: clamp(24px, 5vw, 72px);
      padding: 34px 0;
      border-bottom: 1px solid rgba(255, 255, 255, 0.16);
    }

    .roadmap-step small {
      color: #7fb0ff;
      font-family: var(--font-en);
      font-size: 13px;
      font-weight: 900;
    }

    .roadmap-step h3 {
      margin: 0 0 10px;
      font-size: 24px;
      font-weight: 900;
      line-height: 1.5;
    }

    .roadmap-step p {
      max-width: 740px;
      margin: 0;
      color: var(--np-gray-200);
      line-height: 2;
    }

    .support-area {
      display: grid;
      grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
      gap: clamp(28px, 5vw, 70px);
      align-items: start;
    }

    .support-intro {
      display: grid;
      gap: clamp(24px, 4vw, 42px);
    }

    .support-illust {
      width: min(100%, 360px);
      height: auto;
      justify-self: center;
      object-fit: contain;
    }

    .support-panel {
      padding: 30px;
      border: 1px solid var(--np-gray-100);
      border-radius: var(--radius);
      background: #ffffff;
      box-shadow: var(--shadow);
    }

    .support-panel h3 {
      margin: 0 0 16px;
      font-size: 24px;
      font-weight: 900;
      line-height: 1.5;
    }

    .support-panel p {
      margin: 0;
      color: var(--np-gray-600);
      line-height: 2;
    }

    .support-list {
      display: grid;
      gap: 14px;
    }

    .support-list li {
      display: grid;
      grid-template-columns: 38px 1fr;
      gap: 14px;
      align-items: start;
      padding: 18px 0;
      border-bottom: 1px solid var(--np-gray-100);
      list-style: none;
    }

    .support-list span {
      display: grid;
      place-items: center;
      width: 38px;
      height: 38px;
      border-radius: 8px;
      background: var(--np-blue-600);
      color: #ffffff;
      font-family: var(--font-en);
      font-size: 12px;
      font-weight: 900;
    }

    .support-list h4 {
      margin: 0 0 6px;
      font-size: 18px;
      font-weight: 900;
      line-height: 1.5;
    }

    .support-list p {
      margin: 0;
      color: var(--np-gray-600);
      font-size: 14px;
      line-height: 1.8;
    }

    .outcome-list {
      display: grid;
      grid-template-columns: repeat(5, minmax(0, 1fr));
      gap: 1px;
      margin: 0;
      padding: 0;
      overflow: hidden;
      border: 1px solid rgba(255, 255, 255, 0.16);
      border-radius: var(--radius);
      background: rgba(255, 255, 255, 0.16);
    }

    .outcome-list li {
      min-height: 210px;
      display: grid;
      align-content: space-between;
      gap: 20px;
      padding: 24px;
      background: var(--np-gray-900);
      list-style: none;
    }

    .outcome-list span {
      color: #7fb0ff;
      font-family: var(--font-en);
      font-size: 12px;
      font-weight: 900;
    }

    .outcome-list p {
      margin: 0;
      font-weight: 800;
      line-height: 1.8;
    }

    .outcome-head {
      grid-template-columns: 180px minmax(0, 0.95fr) minmax(220px, 0.65fr);
      align-items: center;
    }

    .outcome-illust {
      width: 100%;
      max-height: 260px;
      object-fit: contain;
    }

    .cta-band {
      padding: clamp(48px, 7vw, 86px);
      border-radius: var(--radius);
      background: var(--np-blue-600);
      color: #ffffff;
    }

    .cta-band-inner {
      display: grid;
      grid-template-columns: minmax(0, 1.25fr) minmax(260px, 0.75fr);
      gap: clamp(28px, 5vw, 62px);
      align-items: center;
    }

    .cta-band h2 {
      max-width: 820px;
      margin: 0;
      font-family: var(--font-display);
      font-size: clamp(32px, 5vw, 56px);
      font-weight: 900;
      line-height: 1.32;
    }

    .cta-band p {
      max-width: 720px;
      margin: 22px 0 0;
      color: rgba(255, 255, 255, 0.86);
      font-size: 17px;
      line-height: 2;
    }

    .cta-band .hero-actions {
      margin-top: 30px;
    }

    .cta-band .btn {
      border-color: #ffffff;
      background: #ffffff;
      color: var(--np-blue-600);
    }

    .cta-band .btn-secondary {
      background: transparent;
      color: #ffffff;
    }

    .cta-illust {
      width: 100%;
      max-height: 320px;
      object-fit: contain;
    }

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

    .faq-item {
      padding: 0;
      overflow: hidden;
    }

    .faq-item summary {
      cursor: pointer;
      padding: 22px 26px;
      font-size: 17px;
      font-weight: 900;
      line-height: 1.7;
      list-style: none;
    }

    .faq-item summary::-webkit-details-marker {
      display: none;
    }

    .faq-item summary::before {
      content: "Q";
      display: inline-grid;
      place-items: center;
      width: 28px;
      height: 28px;
      margin-right: 12px;
      border-radius: 8px;
      background: var(--np-gray-900);
      color: #ffffff;
      font-family: var(--font-en);
      font-size: 12px;
      font-weight: 900;
      vertical-align: middle;
    }

    .faq-item p {
      margin: 0;
      padding: 0 26px 24px 66px;
      color: var(--np-gray-600);
      line-height: 2;
    }

    .contact-head {
      display: flex;
      align-items: baseline;
      gap: 20px;
      margin-bottom: clamp(34px, 5vw, 54px);
    }

    .contact-head h2 {
      margin: 0;
      font-family: var(--font-en);
      font-size: clamp(42px, 6vw, 64px);
      font-weight: 800;
      line-height: 1;
    }

    .contact-head span {
      font-size: 17px;
      font-weight: 900;
    }

    .contact-form {
      display: grid;
      gap: 14px;
    }

    .contact-row {
      display: grid;
      grid-template-columns: 248px minmax(0, 1fr);
      gap: 14px 20px;
      align-items: start;
    }

    .contact-label-wrap {
      display: inline-flex;
      min-height: 42px;
      align-items: center;
      gap: 8px;
      justify-self: start;
    }

    .contact-label {
      font-weight: 700;
      line-height: 1.6;
    }

    .contact-badge {
      display: inline-flex;
      min-width: 29px;
      min-height: 19px;
      align-items: center;
      justify-content: center;
      background: var(--np-gray-800);
      color: #ffffff;
      font-size: 10px;
      font-weight: 800;
    }

    .contact-badge-optional {
      background: #ffffff;
      color: var(--np-gray-800);
      border: 1px solid var(--np-gray-800);
    }

    .contact-control {
      width: 100%;
      min-height: 42px;
      padding: 9px 14px;
      border: 1px solid var(--np-gray-300);
      border-radius: 0;
      background: #ffffff;
      color: var(--np-gray-900);
      font-size: 15px;
      line-height: 1.5;
    }

    .contact-control:focus {
      border-color: var(--np-blue-600);
      outline: 2px solid rgba(20, 106, 245, 0.16);
      outline-offset: 0;
    }

    .contact-textarea {
      min-height: 128px;
      resize: vertical;
    }

    .contact-options {
      display: flex;
      flex-wrap: wrap;
      gap: 24px;
      align-items: center;
      min-height: 42px;
    }

    .contact-options label,
    .contact-privacy {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      font-weight: 700;
    }

    .contact-options input,
    .contact-privacy input {
      width: 16px;
      height: 16px;
      accent-color: var(--np-blue-600);
    }

    .contact-submit {
      justify-self: center;
      min-width: 200px;
      min-height: 56px;
      margin-top: 30px;
      border-color: var(--np-gray-800);
      background: var(--np-gray-800);
      color: #ffffff;
    }

    .contact-confirm-section {
      padding-top: clamp(120px, 14vw, 180px);
      background: #ffffff;
    }

    .contact-confirm-lead {
      margin: -22px 0 28px;
      color: var(--np-gray-600);
      font-weight: 700;
      line-height: 1.8;
    }

    .contact-confirm-list {
      display: grid;
      margin: 0;
      border-top: 1px solid var(--np-gray-200);
    }

    .contact-confirm-row {
      display: grid;
      grid-template-columns: 248px minmax(0, 1fr);
      gap: 18px 24px;
      padding: 20px 0;
      border-bottom: 1px solid var(--np-gray-200);
    }

    .contact-confirm-row dt {
      margin: 0;
      color: var(--np-gray-900);
      font-weight: 800;
      line-height: 1.7;
    }

    .contact-confirm-row dd {
      margin: 0;
      color: var(--np-gray-700);
      line-height: 1.8;
      overflow-wrap: anywhere;
    }

    .contact-confirm-preline {
      white-space: pre-line;
    }

    .contact-confirm-actions {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      gap: 14px;
      margin-top: 36px;
    }

    .contact-confirm-actions form {
      margin: 0;
    }

    .contact-confirm-actions .contact-submit,
    .contact-confirm-actions .contact-back {
      margin-top: 0;
    }

    .site-footer {
      padding: 0;
      background: #050505;
      color: #ffffff;
    }

    .site-footer::before {
      content: "";
      display: block;
      height: 50px;
      background: linear-gradient(180deg, #ffffff 0%, #dff4ff 38%, #2196f3 100%);
    }

    .footer-main {
      width: min(var(--container), calc(100% - var(--side) * 2));
      margin: 0 auto;
      display: grid;
      grid-template-columns: minmax(220px, 1fr) minmax(0, 560px);
      gap: clamp(40px, 8vw, 120px);
      align-items: start;
      padding-top: clamp(56px, 8vw, 84px);
      padding-bottom: clamp(54px, 8vw, 86px);
    }

    .footer-brand {
      display: inline-flex;
      width: max-content;
      align-items: center;
    }

    .footer-logo {
      width: 220px;
      height: auto;
    }

    .footer-nav {
      display: grid;
      grid-template-columns: repeat(3, minmax(120px, 1fr));
      gap: 28px 44px;
    }

    .footer-nav a {
      display: grid;
      gap: 4px;
      color: #ffffff;
      line-height: 1.1;
      transition: opacity 180ms ease;
    }

    .footer-nav a:hover {
      opacity: 0.7;
    }

    .footer-nav strong {
      font-family: var(--font-en);
      font-size: 22px;
      font-weight: 800;
    }

    .footer-nav span {
      color: var(--np-gray-300);
      font-size: 12px;
      font-weight: 700;
      line-height: 1.3;
    }

    .footer-bottom {
      border-top: 1px solid rgba(255, 255, 255, 0.14);
    }

    .footer-bottom-inner {
      width: min(var(--container), calc(100% - var(--side) * 2));
      min-height: 74px;
      margin: 0 auto;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 24px;
      color: var(--np-gray-300);
      font-size: 12px;
    }

    .footer-bottom a {
      color: #ffffff;
      font-weight: 700;
    }

    .note {
      margin-top: 22px;
      color: var(--np-gray-500);
      font-size: 12px;
      line-height: 1.8;
    }

    @media (max-width: 1024px) {
      .header-nav {
        display: none;
      }

      .hero {
        background: #ffffff;
      }

      .two-column,
      .support-area {
        grid-template-columns: 1fr;
      }

      .hero-inner {
        grid-template-columns: 1fr;
      }

      .hero-kv {
        order: -1;
        max-width: 420px;
        margin: 0 auto;
      }

      .hero-visual {
        grid-template-columns: 1fr;
        min-height: auto;
      }

      .visual-illust {
        min-height: 220px;
        aspect-ratio: 16 / 9;
        order: -1;
      }

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

      .problem-grid,
      .reason-grid,
      .curriculum-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .outcome-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .footer-main {
        grid-template-columns: 1fr;
      }

      .outcome-head {
        grid-template-columns: 1fr;
      }

      .reason-head {
        grid-template-columns: 1fr;
      }

      .reason-illust {
        max-width: 340px;
        margin: 0 auto;
        order: -1;
      }

      .curriculum-head {
        grid-template-columns: 1fr;
      }

      .curriculum-illust {
        width: 100%;
        max-width: 340px;
        margin: 0 auto;
        order: -1;
      }

      .outcome-illust {
        max-width: 360px;
        margin: 0 auto;
        order: -1;
      }

      .support-illust {
        max-width: 320px;
        margin: 0 auto;
      }

      .cta-band-inner {
        grid-template-columns: 1fr;
      }

      .cta-illust {
        max-width: 360px;
        margin: 0 auto;
        order: -1;
      }

      .contact-row {
        grid-template-columns: 210px minmax(0, 1fr);
      }

      .contact-confirm-row {
        grid-template-columns: 210px minmax(0, 1fr);
      }
    }

    @media (max-width: 700px) {
      .header-inner {
        min-height: 64px;
      }

      .header-actions .btn-secondary {
        display: none;
      }

      .brand-logo {
        width: 154px;
      }

      .btn {
        min-height: 42px;
        padding: 0 14px;
        font-size: 13px;
      }

      .hero {
        padding-top: 44px;
      }

      .hero-kv {
        order: 0;
      }

      .hero-kv-desktop {
        display: none;
      }

      .hero-kv-sp {
        display: block;
        max-width: 320px;
        margin: 24px auto 0;
      }

      .hero h1 {
        font-size: 42px;
      }

      .hero-lead,
      .section-lead,
      .message-block p,
      .cta-band p {
        font-size: 15px;
      }

      .visual-top,
      .hero-actions,
      .footer-bottom-inner {
        align-items: flex-start;
        flex-direction: column;
      }

      .hero .hero-actions {
        width: 100%;
        gap: 8px;
        justify-content: center;
        align-items: center;
        flex-direction: row;
        flex-wrap: nowrap;
        margin-top: 24px;
      }

      .hero .hero-actions .btn {
        white-space: nowrap;
      }

      .footer-logo {
        width: 190px;
      }

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

      .footer-bottom-inner {
        min-height: auto;
        padding: 24px 0;
      }

      .contact-head {
        display: grid;
        gap: 8px;
      }

      .contact-row {
        grid-template-columns: 1fr;
        gap: 8px;
      }

      .contact-confirm-row {
        grid-template-columns: 1fr;
        gap: 6px;
      }

      .contact-label-wrap {
        min-height: auto;
      }

      .lesson-card,
      .feature-row,
      .support-list li,
      .roadmap-step {
        grid-template-columns: 1fr;
      }

      .problem-grid,
      .reason-grid,
      .curriculum-grid,
      .target-strip,
      .outcome-list {
        grid-template-columns: 1fr;
      }

      .problem-item,
      .reason-item,
      .curriculum-item {
        min-height: auto;
        padding: 22px;
      }

      .problem-body {
        grid-template-columns: 100px minmax(0, 1fr);
        gap: 14px;
      }

      .problem-illust {
        width: min(100px, 100%);
        height: 92px;
      }

      .target-strip li {
        min-height: auto;
      }

      .outcome-list li {
        min-height: 150px;
      }

      .cta-band {
        padding: 34px 24px;
      }

      .faq-item summary {
        padding: 20px;
        font-size: 15px;
      }

      .faq-item p {
        padding: 0 20px 22px 20px;
      }
    }
