  :root { color-scheme: light; }
  html { scroll-behavior: smooth; }
  html, body { margin: 0; padding: 0; background: #e9edf2; }
  * { box-sizing: border-box; }
  .viewport { width: 100%; }
  .stage {
    width: 100%;
    font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif;
    background: #fff;
  }
  img { display: block; }

  /* ===== Header ===== */
  .header {
    height: 64px; padding: 12px clamp(16px, 2.8vw, 40px); background: #fff;
    display: flex; align-items: center; justify-content: space-between;
    position: sticky; top: 0; z-index: 2;
    box-shadow: 0 2px 7.5px rgba(0,0,0,.10);
  }
  .header-logo { position: relative; display: block; width: 160.5px; aspect-ratio: 160.505 / 44; }
  .header-logo img { position: absolute; }
  .header-logo .mark { inset: 15.93% 79.81% 26.76% 4.36%; width: 15.83%; height: 57.31%; }
  .header-logo .word { inset: 31.2% 4.36% 16.21% 22.38%; width: 73.26%; height: 52.59%; }
  .gnav { display: flex; align-items: center; gap: clamp(20px, 2.8vw, 40px); }
  .gnav a {
    font-size: 16px; font-weight: 600; letter-spacing: .8px;
    color: #333333; text-decoration: none;
    transition: color .35s ease;
  }
  .gnav a:hover, .gnav a:active { color: #0087ae; }
  .btn-cta-s {
    display: flex; align-items: center; justify-content: center;
    height: 36px; padding: 6px 24px; border-radius: 58px;
    background: #ff3c1a; border: none; cursor: pointer;
    color: #fff; font-size: 14px; font-weight: 500; letter-spacing: .7px;
    font-family: inherit;
  }

  /* ===== Key Visual ===== */
  .kv { position: relative; width: 100%; height: calc(760px * var(--cs, 1)); overflow: hidden; background: #0087ae; }
  .kv-sq { position: absolute; left: 0; top: 0; width: calc(126.73px * var(--cs, 1)); height: calc(126.73px * var(--cs, 1)); background: #5bcc66; opacity: .7; }
  .kv-cir { position: absolute; left: calc(506.9px * var(--cs, 1)); top: 0; width: calc(126.72px * var(--cs, 1)); height: calc(126.72px * var(--cs, 1)); border-radius: 50%; background: #3549cb; }
  .kv-mosaic-l, .kv-mosaic-r, .apply-mosaic-l, .apply-mosaic-r {
    position: absolute; top: 0; height: calc(760.36px * var(--cs, 1));
    background-image: url("../assets/kv-mosaic-l.svg");
    background-size: calc(1440px * var(--cs, 1)) calc(760.36px * var(--cs, 1)); background-repeat: no-repeat;
  }
  .kv-mosaic-l { left: 0; width: min(calc(658px * var(--cs, 1)), 45.7%); background-position: left top; }
  .kv-mosaic-r { right: 0; width: min(calc(782px * var(--cs, 1)), 54.3%); background-position: right top; }
  .kv-tint     { position: absolute; inset: 0; background: #0222f2; opacity: .33; }
  .kv-content  { position: absolute; top: 0; left: 50%; width: 1440px; height: 760px;
    transform: translateX(-50%) scale(var(--cs, 1)); transform-origin: top center; margin-left: 0; }
  .kv-content > * { will-change: auto; }

  .kv-catch {
    position: absolute; left: 50%; top: 56.2px; transform: translateX(-50%);
    width: 720px; padding: 16px 24px;
    background: rgba(255, 255, 255, .1);
    border: 1px solid #fff; border-radius: 8px;
  }
  .kv-catch p {
    margin: 0; color: #fff; text-align: center;
    font-family: "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif;
    font-size: 28px; font-weight: 600; letter-spacing: 1.4px; line-height: 40px;
  }

  .kv-logo2 { position: absolute; left: 50%; transform: translateX(-50%); top: 204.2px; width: 275px; height: 54.48px;
    filter: drop-shadow(0 1.9px 1.9px rgba(0,0,0,.25)); }
  .kv-logo2 img { width: 100%; height: 100%; object-fit: cover; }
  .kv-logo-white { position: absolute; left: 50%; transform: translateX(-50%); top: 264.4px; width: 275px; height: 52.18px;
    overflow: hidden; filter: drop-shadow(0 0 8.7px rgba(0,0,0,.25)); }
  .kv-logo-white img { position: absolute; width: 209.46%; height: 107.42%; left: -109.46%; top: -0.07%; }

  .kv-2026 { position: absolute; left: 50%; top: 387.4px; transform: translate(-50%, -50%);
    width: 270px; height: auto; }

  .kv-date {
    position: absolute; left: 50%; top: 484.6px; transform: translateX(-50%);
    display: flex; flex-direction: column; align-items: center; gap: 12px;
  }
  .kv-date-main { display: flex; flex-direction: column; align-items: center; gap: 16px; }
  .kv-date .ymd {
    display: flex; align-items: baseline; gap: 8px;
    color: #fff; white-space: nowrap;
    font-family: "Be Vietnam Pro", "Be Vietnam", "Helvetica Neue", Arial, sans-serif;
    font-weight: 800; line-height: 1;
  }
  .kv-date .y { font-size: 24px; }
  .kv-date .d { font-size: 40px; }
  .kv-date .d-last { font-size: inherit; margin-left: .07em; }
  .kv-date .w { font-size: 24px; }
  .kv-date .time { font-size: 24px; font-weight: 700; }
  .kv-capacity { margin: 0; display: flex; align-items: flex-end; gap: 16px; color: #fff; line-height: 1; }
  .kv-capacity .cap { display: flex; align-items: flex-end; gap: 4px; }
  .kv-capacity .cap-label { font-size: 16px; font-weight: 300; }
  .kv-capacity .cap-num { font-size: 16px; font-weight: 500; }
  .kv-capacity .cap-note { font-size: 14px; font-weight: 300; }
  .kv-place { display: flex; align-items: flex-end; color: #fff; }
  .kv-place .venue { display: flex; align-items: center; gap: 4px; }
  .kv-place .venue img { width: 18px; height: 18px; }
  .kv-place .venue span { font-size: 16px; font-weight: 500; line-height: 1; }
  .kv-place .venue small { font-size: 14px; font-weight: 300; }

  .btn-cta-l {
    position: absolute; left: 50%; top: 618.6px; transform: translateX(-50%);
    width: 480px; height: 60px; border-radius: 80px; border: none; cursor: pointer;
    background: #ff3c1a; display: flex; align-items: center; justify-content: center;
    color: #fff; font-size: 24px; font-weight: 500; letter-spacing: .5px;
    font-family: "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif;
    text-shadow: 2px 2px 12px rgba(0,0,0,.12);
  }
  .kv-deadline {
    position: absolute; left: 50%; transform: translateX(-50%); top: 690.6px;
    margin: 0; display: flex; gap: 24px; align-items: center;
    color: #fff; font-size: 14px; letter-spacing: .5px; font-weight: 300;
    font-family: "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif;
    text-shadow: 2px 2px 12px rgba(0,0,0,.12);
    white-space: nowrap;
  }
  .kv-deadline p { margin: 0; font-weight: 300; }
  .kv-deadline .dl-dates { line-height: 1.4; }
  .gnav a:focus-visible, .btn-cta-s:focus-visible, .btn-cta-l:focus-visible {
    outline: 2px solid #0087ae; outline-offset: 2px;
  }

  .menu-btn { display: none; }
  .kv-mosaic-sp-l, .kv-mosaic-sp-r, .apply-mosaic-sp-l, .apply-mosaic-sp-r { display: none; }

  /* ===== SP (~767px): Figma SP design (node 7655:1684, 393px canvas) ===== */
  @media (max-width: 767px) {
    .header { height: 64px; padding: 8px 16px; }
    .header-logo { width: 146px; }
    .gnav { display: none; }
    .menu-btn { display: block; width: 28px; height: 28px; }

    .kv { height: auto; }
    .kv-sq, .kv-cir, .kv-mosaic-l, .kv-mosaic-r, .apply-sq, .apply-cir, .apply-mosaic-l, .apply-mosaic-r { display: none; }
    .kv-mosaic-sp-l, .kv-mosaic-sp-r, .apply-mosaic-sp-l, .apply-mosaic-sp-r {
      display: block; position: absolute; top: 0;
      height: calc(627.794px * var(--sps, 1));
      background-image: url("../assets/kv-mosaic-sp-l.svg");
      background-size: calc(392.942px * var(--sps, 1)) calc(627.794px * var(--sps, 1));
      background-repeat: no-repeat;
    }
    .kv-mosaic-sp-l, .apply-mosaic-sp-l { left: 0; width: min(calc(235.5px * var(--sps, 1)), 59.94%); background-position: left top; }
    .kv-mosaic-sp-r, .apply-mosaic-sp-r { right: 0; width: min(calc(157.44px * var(--sps, 1)), 40.06%); background-position: right top; }

    .kv-content {
      position: relative; z-index: 1; left: auto; width: 100%; height: auto; transform: none;
      display: flex; flex-direction: column; align-items: center;
      padding: 48px 24px;
    }
    .kv-catch { position: static; transform: none; width: 100%; padding: 12px 16px; }
    .kv-catch p { font-size: clamp(15px, 4.4vw, 20px); line-height: 1.6; letter-spacing: .8px; }

    .kv-logo2 { position: static; transform: none; width: min(235.7px, 68vw); height: auto;
      aspect-ratio: 314.288 / 62.266; margin-top: 48px; }
    .kv-logo-white { position: static; transform: none; width: min(235.7px, 68vw); height: auto;
      aspect-ratio: 314.288 / 59.636; margin-top: 5px; }
    .kv-2026 { position: static; transform: none; width: min(231px, 66vw); height: auto; margin-top: 8px; }

    .kv-date { position: static; transform: none; margin-top: 48px; gap: 8px; }
    .kv-date-main { gap: 12px; }
    .kv-date .ymd { gap: 4px; flex-wrap: wrap; justify-content: center; }
    .kv-date .y { font-size: 20px; }
    .kv-date .d { font-size: 32px; }
    .kv-date .w { font-size: 18px; }
    .kv-date .time { font-size: 18px; }
    .kv-capacity { flex-wrap: wrap; justify-content: center; row-gap: 6px; }
    .kv-place .venue { align-items: flex-start; }
    .kv-place .venue span { font-size: 15px; line-height: 1.5; white-space: normal; text-align: center; }
    .kv-place .venue small { font-size: 12px; }

    .btn-cta-l { position: relative; left: auto; top: auto; transform: none; margin-top: 24px;
      width: 100%; height: 48px; font-size: 20px; letter-spacing: .5px; }
    .kv-deadline { position: static; transform: none; margin-top: 12px; font-size: 13px; gap: 12px; }
  }

  /* ===== SP hamburger menu ===== */
  .menu-toggle { display: none; border: none; background: none; padding: 0; cursor: pointer; }
  .menu-toggle img { width: 28px; height: 28px; }
  .icon-close { display: none; }
  body.menu-open .icon-menu { display: none; }
  body.menu-open .icon-close { display: block; }

  .menu-overlay, .sp-menu { display: none; }

  @media (max-width: 767px) {
    .menu-toggle { display: block; }

    .menu-overlay {
      display: block; position: fixed; left: 0; right: 0; top: 64px; bottom: 0;
      background: #000; opacity: 0; pointer-events: none;
      transition: opacity .3s ease; z-index: 5;
    }
    body.menu-open .menu-overlay { opacity: .5; pointer-events: auto; }

    .sp-menu {
      display: flex; flex-direction: column; gap: 56px;
      position: fixed; left: 0; right: 0; top: 64px; z-index: 6;
      background: #fff; padding: 40px 40px 64px;
      transform: translateY(calc(-100% - 64px));
      transition: transform .5s cubic-bezier(.22, 1.2, .36, 1), visibility 0s .5s;
      visibility: hidden;
    }
    body.menu-open .sp-menu {
      transform: translateY(0); visibility: visible;
      transition: transform .5s cubic-bezier(.22, 1.2, .36, 1), visibility 0s;
    }
    .sp-menu::before {
      content: ''; position: absolute; left: 0; right: 0; bottom: 100%;
      height: 80px; background: #fff;
    }

    .sp-menu-links { display: flex; flex-direction: column; gap: 32px; }
    .sp-menu-links a {
      display: flex; align-items: center; justify-content: center; height: 40px;
      color: #333333; text-decoration: none; text-align: center;
      font-size: 18px; font-weight: 600; letter-spacing: .9px;
    }
    .btn-cta-menu {
      display: flex; align-items: center; justify-content: center;
      width: 320px; max-width: 100%; align-self: center;
      height: 48px; border-radius: 58px; border: none; cursor: pointer;
      background: #ff3c1a; color: #fff; font-family: inherit;
      font-size: 16px; font-weight: 500; letter-spacing: .8px;
    }
    .header { position: sticky; top: 0; z-index: 7; }
  }
  @media (prefers-reduced-motion: reduce) {
    .sp-menu, .menu-overlay { transition: none; }
    html { scroll-behavior: auto; }
  }

  /* ===== content area: bg appears after KV, then stays fixed (sticky) ===== */
  .content-bg-wrap {
    /* zero-flow overlay spanning the whole content section */
    position: absolute; inset: 0;
    pointer-events: none; z-index: 0;
  }
  .content-bg-sticky {
    /* shapes start flush with the KV bottom, lock below the header,
       then get pushed up when the apply section reaches them */
    position: sticky; top: 64px;
    height: calc(670px * var(--cs, 1));
  }
  .content-bg-l, .content-bg-r {
    position: absolute; top: 0;
    height: calc(670px * var(--cs, 1));
    background-image: url("../assets/content-bg-l.svg");
    background-size: calc(1440px * var(--cs, 1)) calc(670px * var(--cs, 1));
    background-repeat: no-repeat;
  }
  .content-bg-l { left: 0; width: min(calc(223.2px * var(--cs, 1)), 50%); background-position: left center; }
  .content-bg-r { right: 0; width: min(calc(223.2px * var(--cs, 1)), 50%); background-position: right center; }
  @media (max-width: 767px) {
    .content-bg-l, .content-bg-r {
      height: calc(786px * var(--sps, 1));
      background-image: url("../assets/content-bg-l-2.svg");
      background-size: calc(393px * var(--sps, 1)) calc(786px * var(--sps, 1));
    }
    .content-bg-l { width: min(calc(78.5px * var(--sps, 1)), 25%); background-position: left top; }
    .content-bg-r { width: min(calc(78.5px * var(--sps, 1)), 25%); background-position: right top; }
    .content-bg-sticky { height: calc(786px * var(--sps, 1)); }
  }
  .header { z-index: 7; }
  .kv { z-index: 1; }
  .content { position: relative; z-index: 1; }
  .content-body {
    position: relative; z-index: 1;
    display: flex; flex-direction: column; align-items: center; gap: 64px;
    padding: 64px 16px 96px;
  }
  @media (min-width: 640px) {
    .content-body { padding-left: 40px; padding-right: 40px; }
  }
  @media (max-width: 1023px) {
    .content-body { gap: 48px; padding-top: 48px; }
    .speakers-grid .speaker { border: 1px solid #dcdcdc; }
  }
  /* stats stack only once the hamburger header appears */
  @media (max-width: 767px) {
    .gc-recap .stats { flex-direction: column; gap: 24px; }
    .gc-recap .stat { flex: 0 0 auto; width: 280px; }
    .gc-recap .stat-divider { width: 280px; height: 1px; }
    .gc-recap .stat-num .n { font-size: 56px; }
    .gc-recap .stat-label { font-size: 20px; }
  }
  .glass-card {
    width: min(1112px, 100%);
    border-radius: 16px;
    padding: 64px;
    background: rgba(255, 255, 255, .38);
    -webkit-backdrop-filter: blur(9px);
    backdrop-filter: blur(9px);
    box-shadow: 0 0 20px rgba(0, 0, 0, .15);
    display: flex; flex-direction: column; gap: 80px;
    color: #333333;
  }
  .glass-card p { margin: 0; word-break: break-all; }
  .gc-title { margin: 0; font-size: 32px; font-weight: 600; text-align: center; color: #333333; }

  .gc-theme { display: flex; flex-direction: column; gap: 40px; }
  .theme-body { font-size: 16px; font-weight: 400; line-height: 26.6px; color: #333333; width: 100%; }
  .why-cards { display: flex; gap: 24px; align-items: stretch; }
  .why-card {
    flex: 1 1 0; min-width: 0;
    border: 1px solid #0087ae; border-radius: 8px; padding: 24px 20px;
    display: flex; flex-direction: column; gap: 16px; align-items: center;
  }
  .why-card h3 {
    margin: 0; font-size: 20px; font-weight: 700; color: #0087ae; text-align: center;
    min-height: 60px; display: flex; align-items: center; justify-content: center;
  }
  .why-illust { width: 140px; height: 133px; object-fit: contain; }
  .why-card p { font-size: 16px; font-weight: 400; line-height: 24.7px; color: #333333; width: 100%; }

  .gc-recap { display: flex; flex-direction: column; gap: 56px; align-items: center; }
  .stats-wrap { display: flex; flex-direction: column; gap: 16px; width: 100%; align-items: center; }
  .stats { display: flex; gap: clamp(12px, 2.5vw, 24px); align-items: center; justify-content: center; width: 100%; }
  .stat { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 8px; align-items: center; }
  .stat-label { font-size: clamp(15px, 2.4vw, 20px); font-weight: 600; color: #333333; white-space: nowrap; }
  .stat-num { color: #0087ae; display: flex; gap: 2px; align-items: baseline; justify-content: center; }
  .stat-num .n { font-size: clamp(40px, 5.6vw, 64px); font-weight: 700; line-height: 1.3; }
  .stat-num .u { font-size: 24px; font-weight: 600; }
  .stat-divider { width: 1px; height: 130px; background: #d5d5d5; align-self: center; }
  .stats-note { width: 100%; text-align: right; font-size: 12px; font-weight: 300; color: #333333; }

  .photos-block { display: flex; flex-direction: column; gap: 40px; align-items: center; width: 100%; }
  .photos { display: flex; gap: 20px; width: 100%; }
  .photos figure { flex: 1 1 0; min-width: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
  .photos img { width: 100%; aspect-ratio: 900 / 600; object-fit: cover; border-radius: 4px; }
  .photos figcaption { font-size: 12px; font-weight: 400; color: #333333; }
  .btn-report {
    display: inline-flex; align-items: center; gap: 12px;
    padding: 12px 48px; border: 2px solid #0087ae; border-radius: 64px;
    background: #fff; color: #0087ae; text-decoration: none;
    font-size: 18px; font-weight: 600;
    position: relative; overflow: hidden;
    transition: color .4s ease;
  }
  .btn-report::before {
    content: ''; position: absolute; inset: 0; background: #0087ae;
    transform: scaleX(0); transform-origin: left center;
    transition: transform .4s ease;
  }
  .btn-report:hover::before, .btn-report:active::before { transform: scaleX(1); }
  .btn-report:hover, .btn-report:active { color: #fff; }
  .btn-report > span, .btn-report > svg { position: relative; }
  @media (min-width: 1024px) {
    .btn-report { width: 640px; justify-content: center; padding-left: 16px; padding-right: 16px; }
  }
  .br-sp { display: none; }
  @media (max-width: 1023px) {
    .br-pc { display: none; }
  }
  @media (max-width: 640px) {
    .content-body .gc-title { font-size: 20px; }
    .br-sp { display: inline; }
    .btn-report { width: 100%; justify-content: center; padding: 12px 16px; }
    .btn-report > span { text-align: center; line-height: 1.5; }
    .btn-report > svg { flex-shrink: 0; }
  }
  @media (prefers-reduced-motion: reduce) {
    .btn-report, .btn-report::before { transition: none; }
  }

  @media (max-width: 900px) {
    .glass-card { padding: 40px 24px 48px; gap: 64px; }
    .gc-title { font-size: 26px; }
    .photos { flex-wrap: wrap; }
    .photos figure { flex: 1 1 40%; }
    .why-cards { flex-direction: column; }
    .btn-report { font-size: 16px; padding: 12px 24px; gap: 8px; }
    .btn-report svg { width: 24px; height: 24px; }
  }

  /* ===== speakers section ===== */
  .gc-speakers { display: flex; flex-direction: column; gap: 32px; }
  .gc-heading { display: flex; flex-direction: column; gap: 4px; }
  .gc-note { text-align: right; font-size: 14px; font-weight: 400; color: #333333; letter-spacing: .6px; line-height: 1.7; }
  .speakers-grid {
    display: grid; grid-template-columns: repeat(4, 1fr);
    gap: 16px; width: 100%;
  }
  .speaker {
    background: #fff; border-radius: 8px; padding: 20px 16px;
    border: 1px solid transparent;
    display: flex; flex-direction: column; gap: 16px; align-items: center;
    transition: box-shadow .3s ease, transform .3s ease, border-color .3s ease;
  }
  .speaker[data-bio] { cursor: pointer; }
  .speaker[data-bio]:hover, .speaker[data-bio]:focus-visible { box-shadow: 0 0 5px rgba(0, 0, 0, .15); transform: translateY(-6px); border-color: #dcdcdc; }
  @media (prefers-reduced-motion: reduce) {
    .speaker { transition: none; }
    .speaker[data-bio]:hover { transform: none; }
  }
  .avatar { position: relative; width: var(--av, 180px); height: var(--av, 180px); flex-shrink: 0; }
  .avatar::before {
    content: ''; position: absolute; inset: 0;
    background: url("../assets/avatar.svg") center / contain no-repeat;
    transform: rotate(-90deg);
  }
  .avatar-photo, .avatar-soon {
    position: absolute; inset: calc(var(--av, 180px) * .031);
    border-radius: 50%; overflow: hidden;
  }
  .avatar-photo { background: linear-gradient(135.5deg, #ebebeb 28.81%, #d7d6d6 96.15%); }
  .avatar-photo::after { content: none; }
  /* portraits: transparent PNG over the Figma gray gradient circle */
  .avatar-photo--fukatsu { background: linear-gradient(135.5deg, #ebebeb 28.81%, #d7d6d6 96.15%); }
  .avatar-photo--fukatsu::after {
    content: ""; position: absolute;
    left: 1.683%; top: 6.006%; width: 97.239%; height: 111.462%;
    background-image: url("../assets/avatar-photo--fukatsu.png");
    background-size: 100% 100%; background-position: center; background-repeat: no-repeat;
  }
  .avatar-photo--miyatake { background: linear-gradient(135.5deg, #ebebeb 28.81%, #d7d6d6 96.15%); }
  .avatar-photo--miyatake::after {
    content: ""; position: absolute;
    left: -5.783%; top: -1.011%; width: 111.569%; height: 111.569%;
    background-image: url("../assets/avatar-photo--miyatake.png");
    background-size: 100% 100%; background-position: center; background-repeat: no-repeat;
  }
  .avatar-photo--ogawa { background: linear-gradient(135.5deg, #ebebeb 28.81%, #d7d6d6 96.15%); }
  .avatar-photo--ogawa::after {
    content: ""; position: absolute;
    left: -9.572%; top: -7.922%; width: 120.689%; height: 120.689%;
    background-image: url("../assets/avatar-photo--ogawa.png");
    background-size: 100% 100%; background-position: center; background-repeat: no-repeat;
  }
  .avatar-photo--miyake { background: linear-gradient(135.5deg, #ebebeb 28.81%, #d7d6d6 96.15%); }
  .avatar-photo--miyake::after {
    content: ""; position: absolute;
    left: -17.606%; top: 4.783%; width: 122.998%; height: 122.998%;
    background-image: url("../assets/avatar-photo--miyake.png");
    background-size: 110.13% 146.84%; background-position: 50.05% 50.0%; background-repeat: no-repeat;
  }
  .avatar-photo--watanabet { background: linear-gradient(135.5deg, #ebebeb 28.81%, #d7d6d6 96.15%); }
  .avatar-photo--watanabet::after {
    content: ""; position: absolute;
    left: -17.767%; top: -11.817%; width: 114.646%; height: 171.968%;
    background-image: url("../assets/avatar-photo--watanabet.png");
    background-size: 100% 100%; background-position: center; background-repeat: no-repeat;
  }
  .avatar-photo--tajima { background: linear-gradient(135.5deg, #ebebeb 28.81%, #d7d6d6 96.15%); }
  .avatar-photo--tajima::after {
    content: ""; position: absolute;
    left: 3.128%; top: 3.128%; width: 100.482%; height: 104.884%;
    background-image: url("../assets/avatar-photo--tajima.png");
    background-size: 177.97% 212.72%; background-position: 56.75% 16.4%; background-repeat: no-repeat;
  }
  .avatar-photo--watanabe { background: linear-gradient(135.5deg, #ebebeb 28.81%, #d7d6d6 96.15%); }
  .avatar-photo--watanabe::after {
    content: ""; position: absolute;
    left: 3.183%; top: 4.817%; width: 93.165%; height: 106.352%;
    background-image: url("../assets/avatar-photo--watanabe.png");
    background-size: 208.87% 134.86%; background-position: 50.0% 32.21%; background-repeat: no-repeat;
  }
  .avatar-soon {
    background: url("../assets/avatar-soon.svg") center / cover no-repeat;
    display: flex; align-items: center; justify-content: center;
  }
  .avatar-soon span { color: #fff; font-size: 14px; font-weight: 500; line-height: 16.9px; }
  .speaker-info { display: flex; flex-direction: column; gap: 8px; align-items: center; width: 100%; }
  .speaker-org:empty { min-height: calc(2em * 1.7); }
  .speaker-name { font-size: 20px; font-weight: 600; color: #333333; text-align: center; }
  .speaker-name .honorific { font-size: 14px; font-weight: 500; letter-spacing: .56px; margin-left: 8px; color: #333333; }
  .speaker-org { font-size: 14px; letter-spacing: .56px; font-weight: 400; color: #333333; line-height: 1.7; width: 100%; text-align: center; }
  .speaker-org span { letter-spacing: 0; line-height: 1.5; }
  .speaker-org .tbd { color: #b5b5b5; }

  @media (max-width: 1100px) {
    .speakers-grid { grid-template-columns: repeat(3, 1fr); gap: 12px; }
    .speaker { --av: clamp(120px, 22vw, 180px); }
  }
  @media (max-width: 640px) {
    .gc-recap .stat { width: 100%; }
    .gc-recap .stat-divider { width: 100%; height: 1px; }
    .gc-recap .stat-num .n { font-size: 48px; }
    .speakers-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
    .speaker { --av: 120px; padding: 16px 8px; gap: 12px; }
    .avatar-soon span { font-size: 11px; }
    .speaker-name { font-size: 16px; }
    .speaker-name .honorific { font-size: 13px; }
    .speaker-org { font-size: 13px; }
  }

  /* ===== section decorative typography ===== */
  .glass-card { position: relative; scroll-margin-top: 72px; }
  .section-typo {
    position: absolute; right: 24px; top: 0;
    transform: translateY(-50%);
    width: min(324px, 40vw); height: auto;
    pointer-events: none;
  }
  @media (max-width: 767px) {
    /* visually just under the SP h2 (26px) */
    .section-typo { width: 210px; right: 16px; }
  }

  /* ===== CTA hover: white sweeps in from the left ===== */
  .btn-cta-s, .btn-cta-l, .btn-cta-menu {
    overflow: hidden;
    border: 1px solid #ff3c1a;
    transition: color .4s ease;
  }
  .btn-cta-s, .btn-cta-menu { position: relative; }
  .btn-cta-s::before, .btn-cta-l::before, .btn-cta-menu::before {
    content: ''; position: absolute; inset: 0; background: #fff;
    transform: scaleX(0); transform-origin: left center;
    transition: transform .4s ease;
  }
  .btn-cta-s:hover::before, .btn-cta-l:hover::before, .btn-cta-menu:hover::before,
  .btn-cta-s:active::before, .btn-cta-l:active::before, .btn-cta-menu:active::before {
    transform: scaleX(1);
  }
  .btn-cta-s:hover, .btn-cta-l:hover, .btn-cta-menu:hover,
  .btn-cta-s:active, .btn-cta-l:active, .btn-cta-menu:active {
    color: #ff3c1a; text-shadow: none;
  }
  .btn-cta-s > span, .btn-cta-l > span, .btn-cta-menu > span { position: relative; }
  @media (prefers-reduced-motion: reduce) {
    .btn-cta-s, .btn-cta-l, .btn-cta-menu,
    .btn-cta-s::before, .btn-cta-l::before, .btn-cta-menu::before { transition: none; }
  }

  /* ===== speaker profile modal ===== */
  .sp-modal-overlay[hidden] { display: none; }
  .sp-modal-overlay {
    position: fixed; inset: 0; z-index: 100;
    background: rgba(84, 151, 209, .8);
    display: flex; align-items: center; justify-content: center;
    padding: 80px 16px 24px;
    opacity: 0; transition: opacity .25s ease;
  }
  .sp-modal-overlay.open { opacity: 1; }
  .sp-modal {
    position: relative;
    width: 800px; max-width: 100%; max-height: calc(100vh - 120px);
    overflow-y: auto;
    background: #fff; border-radius: 16px; padding: 40px;
    display: flex; flex-direction: column; gap: 28px;
  }
  .modal-wrap { position: relative; max-width: 100%; }
  .modal-close {
    position: absolute; top: -56px; right: 0;
    width: 48px; height: 48px; border: none; background: none; cursor: pointer; padding: 4px;
    opacity: 1; transition: opacity .2s ease;
  }
  .modal-close:hover { opacity: .7; }
  .modal-close svg { width: 100%; height: 100%; }
  .modal-user { display: flex; gap: 20px; align-items: center; }
  .modal-avatar { --av: 120px; flex-shrink: 0; }
  .modal-avatar-slot, .modal-avatar-slot.avatar-photo, .modal-avatar-slot.avatar-soon {
    position: absolute; inset: calc(var(--av, 120px) * .031); border-radius: 50%; overflow: hidden;
  }
  .modal-avatar .avatar-soon span { font-size: 11px; }
  .modal-user-info { display: flex; flex-direction: column; min-width: 0; }
  .modal-org { margin: 0; font-size: 18px; letter-spacing: .72px; line-height: 1.7; color: #333333; }
  .modal-role { margin: 0; font-size: 16px; letter-spacing: .64px; line-height: 1.7; color: #333333; }
  .modal-name { margin: 8px 0 0; font-size: 20px; font-weight: 600; color: #333333; }
  .modal-bio { margin: -16px 0 0; font-size: 16px; letter-spacing: .64px; line-height: 1.7; color: #333333; }
  .modal-session { display: flex; flex-direction: column; gap: 20px; }
  .modal-session-soon { margin: 0; font-size: 18px; font-weight: 400; color: #0087ae; text-align: center; }
  .modal-session-label {
    background: #0087ae; color: #fff; border-radius: 40px;
    padding: 2px 12px; text-align: center;
    font-size: 16px; font-weight: 400; letter-spacing: .64px; line-height: 1.7;
  }
  .modal-tt {
    background: #e9f2f5; border-radius: 16px; padding: 16px 24px;
    display: flex; gap: 40px; align-items: center;
  }
  .tt-time {
    color: #0087ae; font-size: 20px; white-space: nowrap;
    font-family: Impact, "Arial Black", sans-serif;
  }
  .tt-body { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; min-width: 0; }
  .tt-tag {
    background: #fff; color: #0087ae; border-radius: 30px; padding: 2px 24px;
    font-size: 12px; font-weight: 600;
  }
  .tt-title { margin: 0; font-size: 18px; font-weight: 700; color: #333333; }
  .tt-desc { margin: 0; font-size: 14px; letter-spacing: .56px; line-height: 1.7; color: #333333; word-break: break-all; }
  @media (max-width: 640px) {
    .sp-modal { padding: 24px 20px; gap: 20px; }
    .modal-user { gap: 14px; }
    .modal-avatar { --av: 88px; }
    .modal-org { font-size: 15px; }
    .modal-role { font-size: 13px; }
    .modal-name { font-size: 18px; margin-top: 4px; }
    .modal-bio { margin-top: -6px; font-size: 14px; }
    .modal-tt { flex-direction: column; gap: 12px; align-items: flex-start; padding: 16px; }
  }
  @media (prefers-reduced-motion: reduce) {
    .sp-modal-overlay { transition: none; }
  }

  /* ===== timetable section ===== */
  .gc-timetable { display: flex; flex-direction: column; gap: 40px; align-items: center; }
  .tt-soon { display: flex; flex-direction: column; gap: 24px; align-items: center; }
  .tt-soon-label { font-size: 20px; font-weight: 600; color: #0087ae; text-align: center; }
  .tt-soon-illust { width: 140px; height: 140px; object-fit: contain; }

  /* Time Table typo: cap height matches Speakers (descender of "p" excluded) */
  .section-typo--tt { width: min(401px, 50vw); }
  @media (max-width: 767px) {
    .section-typo--tt { width: 260px; }
  }

  /* ===== archive section ===== */
  .gc-archive { display: flex; flex-direction: column; gap: 64px; align-items: center; }
  .archive-head { display: flex; flex-direction: column; gap: 40px; width: 100%; }
  .archive-lead { font-size: 16px; line-height: 1.7; letter-spacing: 0.64px; color: #333333; }
  @media (min-width: 1024px) {
    .archive-lead { text-align: center; }
  }
  .archive-body { display: flex; flex-direction: column; gap: 40px; align-items: center; }
  .archive-checks { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 16px; align-self: flex-start; }
  .archive-checks li { display: flex; gap: 12px; align-items: center; font-size: 18px; font-weight: 600; letter-spacing: 0.72px; line-height: 1.7; color: #333333; }
  .archive-checks li img { width: 32px; height: 32px; flex-shrink: 0; }
  .btn-archive { font-family: inherit; cursor: pointer; }
  @media (max-width: 640px) {
    .gc-archive { gap: 40px; }
    .archive-head { gap: 24px; }
    .archive-checks li { font-size: 16px; letter-spacing: 0.64px; gap: 8px; align-items: flex-start; }
    .archive-checks li img { width: 24px; height: 24px; margin-top: 1px; }
    .archive-body { width: 100%; }
  }

  /* ===== about section (StoryHubとは？) ===== */
  .about-card { width: min(1112px, 100%); border-radius: 16px; box-shadow: 0 0 20px rgba(0, 0, 0, .15); color: #333333; position: relative; scroll-margin-top: 72px; }
  .about-card p { margin: 0; }
  .about-top { position: relative; background: rgba(255, 255, 255, .38); -webkit-backdrop-filter: blur(9px); backdrop-filter: blur(9px); border-radius: 16px 16px 0 0; padding: 40px 64px; }
  .about-text { display: flex; flex-direction: column; align-items: flex-start; position: relative; z-index: 1; }
  .about-body { display: flex; flex-direction: column; align-items: center; }
  .about-body .about-catch, .about-body .about-support { text-align: center; }
  .about-logo { display: flex; align-items: center; gap: 8px; margin-bottom: 28px; }
  .about-slogo { position: relative; display: block; width: 230px; aspect-ratio: 160.505 / 44; }
  .about-slogo img { position: absolute; }
  .about-slogo .mark { inset: 15.93% 79.81% 26.76% 4.36%; width: 15.83%; height: 57.31%; }
  .about-slogo .word { inset: 31.2% 4.36% 16.21% 22.38%; width: 73.26%; height: 52.59%; }
  .about-towa { font-size: 28px; font-weight: 700; letter-spacing: 1.12px; color: #333333; }
  .about-input-row { display: flex; align-items: flex-end; gap: 8px; flex-wrap: wrap; }
  .about-tag { background: #0087ae; color: #fff; border-radius: 4px; padding: 12px 24px; font-size: 24px; font-weight: 600; line-height: 1.13; }
  .about-just { font-size: 20px; font-weight: 600; color: #333333; line-height: 1.3; }
  .about-catch { font-size: 30px; font-weight: 600; color: #333333; line-height: 1.13; margin-top: 16px !important; display: flex; align-items: flex-end; flex-wrap: wrap; }
  .about-min { display: inline-flex; align-items: flex-end; color: #5bcc66; border-bottom: 4px dashed #5bcc66; margin: 0 4px; }
  .about-min b { font-family: 'Inter Digits', sans-serif; font-size: 64px; font-weight: 700; letter-spacing: -0.5px; line-height: 1; padding-right: 6px; }
  .about-min .min-unit { font-size: 28px; font-weight: 700; line-height: 1.4; }
  .about-pill-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 32px; }
  .about-pill { background: #fff; border: 1px solid #0087ae; border-radius: 48px; padding: 10px 18px; font-size: 18px; font-weight: 600; color: #0087ae; line-height: 1.13; }
  .about-made { font-size: 20px; font-weight: 600; color: #0087ae; margin-left: 2px; }
  .about-support { font-size: 20px; font-weight: 600; color: #0087ae; letter-spacing: 1px; margin-top: 12px !important; line-height: 1.4; }
  .about-primary { font-size: 28px; letter-spacing: 1.4px; text-decoration: underline dotted; text-decoration-thickness: 4px; text-underline-offset: 6px; text-decoration-skip-ink: none; }
  .about-visual { position: absolute; top: 40px; right: 48px; width: 452px; display: flex; flex-direction: column; align-items: flex-end; }
  .about-product { width: 100%; height: auto; display: block; }
  .about-badges { display: flex; gap: 7px; position: relative; z-index: 2; margin-bottom: -34px; margin-right: 4px; }
  .about-badge { width: 96px; height: 96px; border-radius: 50%; background: #5bcc66; color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; font-size: 22px; font-weight: 600; letter-spacing: 1.3px; line-height: 1.13; }
  .about-badge .bl { font-size: 14.5px; letter-spacing: 0; }
  .about-badge .bn { font-size: 14.5px; letter-spacing: 0; }
  .about-badge .bn b { font-size: 22px; font-weight: 600; }
  .about-bottom { background: rgba(0, 135, 174, .93); border-radius: 0 0 16px 16px; padding: 40px; display: flex; flex-direction: column; gap: 16px; align-items: center; }
  .about-results { color: #fff; font-size: 24px; font-weight: 400; letter-spacing: .72px; line-height: 1.7; text-align: center; }
  .about-results b { font-size: 36px; font-weight: 700; }
  .about-results b .bu { font-size: .667em; }
  .about-results .nw { white-space: nowrap; }
  .about-logos-block { width: 100%; display: flex; flex-direction: column; gap: 8px; }
  .about-logos { background: #fff; border-radius: 8px; padding: 24px 12px; display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: center; justify-content: center; }
  .about-logos img { height: var(--h); width: auto; }
  .about-note { color: #fff; font-size: 12px; font-weight: 500; letter-spacing: .36px; line-height: 1.7; text-align: right; }
  @media (max-width: 1023px) {
    .about-top { padding: 40px 24px; }
    .about-visual { position: static; width: min(452px, 100%); margin: 24px auto 0; }
    .about-text { align-items: center; }
    .about-logo { align-self: flex-start; }
    .about-input-row, .about-pill-row { justify-content: center; }
    .about-catch { justify-content: center; text-align: center; }
    .about-support { text-align: center; }
  }
  @media (max-width: 640px) {
    .about-top { padding: 32px 16px; }
    .about-logo { margin-bottom: 20px; }
    .about-slogo { width: 164px; }
    .about-towa { font-size: 20px; }
    .about-tag { font-size: 16px; padding: 8px 14px; }
    .about-just { font-size: 15px; }
    .about-catch { font-size: 20px; margin-top: 12px !important; display: block; line-height: 1.5; }
    .about-catch .about-min { vertical-align: bottom; }
    .about-min { border-bottom-width: 3px; }
    .about-min b { font-size: 36px; letter-spacing: -0.3px; padding-right: 4px; }
    .about-min .min-unit { font-size: 18px; }
    .about-pill-row { margin-top: 24px; }
    .about-pill { font-size: 14px; padding: 8px 12px; }
    .about-made { font-size: 15px; }
    .about-support { font-size: 14px; letter-spacing: .5px; }
    .about-primary { font-size: 19px; letter-spacing: .8px; text-decoration-thickness: 3px; text-underline-offset: 5px; }
    .about-badge { width: 88px; height: 88px; font-size: 18px; }
    .about-badge .bl, .about-badge .bn { font-size: 14px; }
    .about-badge .bn b { font-size: 18px; }
    .about-badges { margin-bottom: -30px; }
    .about-bottom { padding: 24px 16px; }
    .about-results { font-size: 16px; letter-spacing: .4px; }
    .about-results b { font-size: 24px; }
    .about-logos { padding: 16px; gap: 10px 16px; }
    .about-logos img { height: calc(var(--h) * .72); }
  }

  /* Inter Bold digits-only subset (for the "10" in the about section) */
  @font-face {
    font-family: 'Inter Digits';
    src: url("../assets/inter-digits.woff2") format("woff2");
    font-weight: 700;
    unicode-range: U+0030-0039;
    font-display: block;
  }

  /* ===== event overview section ===== */
  .section-typo--ov { width: min(351px, 44vw); }
  .gc-eventov { display: flex; flex-direction: column; gap: 64px; }
  .ov-table { margin: 0; display: flex; flex-direction: column; width: 100%; border-top: 1px solid #dcdcdc; }
  .ov-row { display: flex; gap: 48px; align-items: flex-start; padding: 16px 24px; border-bottom: 1px solid #dcdcdc; }
  .ov-row dt { width: 200px; flex-shrink: 0; font-size: 16px; font-weight: 600; letter-spacing: .64px; line-height: 1.7; color: #333333; }
  .ov-row dd { margin: 0; display: flex; flex-direction: column; gap: 8px; min-width: 0; font-size: 16px; font-weight: 400; letter-spacing: .64px; line-height: 1.7; color: #333333; }
  .ov-red { color: red; }
  .ov-map { width: 508px; max-width: 100%; height: 247px; border: 0; border-radius: 8px; display: block; }
  @media (max-width: 1023px) {
    .gc-eventov { gap: 40px; }
    .ov-row { gap: 24px; padding: 16px 8px; }
    .ov-row dt { width: 120px; }
  }
  @media (max-width: 767px) {
    .ov-row { flex-direction: column; align-items: stretch; gap: 4px; padding: 12px 4px; }
    .ov-row dt { width: auto; }
    .ov-map-wrap, .ov-map { width: 100%; height: auto; aspect-ratio: 508 / 247; }
  }
  @media (max-width: 640px) {
    .section-typo--ov { width: 227px; }
  }

  /* ===== faq section ===== */
  .gc-faq { display: flex; flex-direction: column; gap: 40px; }
  .faq-list { display: flex; flex-direction: column; gap: 12px; }
  .faq-item { background: #fff; border: 1px solid #dcdcdc; border-radius: 8px; }
  .faq-q {
    display: flex; align-items: center; gap: 12px; width: 100%;
    padding: 16px 24px; background: none; border: 0; cursor: pointer;
    font-family: inherit; text-align: left;
  }
  .faq-q-text { font-size: 18px !important; letter-spacing: .72px !important; }
  .faq-badge {
    width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0;
    background: #0087ae; color: #fff;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 18px; font-weight: 900; letter-spacing: .9px;
    font-family: Roboto, 'Helvetica Neue', Arial, sans-serif;
  }
  .faq-q-text { flex: 1; min-width: 0; font-size: 16px; font-weight: 400; letter-spacing: .64px; line-height: 1.7; color: #333333; }
  .faq-plus { flex-shrink: 0; color: #333333; }
  .faq-plus .fp-v { transform-origin: center; transition: transform .3s ease, opacity .3s ease; }
  .faq-q[aria-expanded="true"] .faq-plus .fp-v { transform: rotate(90deg); opacity: 0; }
  .faq-a { overflow: hidden; }
  .faq-a-row { display: flex; align-items: center; gap: 12px; padding: 0 24px 16px; }
  .faq-badge--a { background: #5bcc66; align-self: flex-start; }
  .faq-a p { flex: 1; min-width: 0; font-size: 16px; font-weight: 400; letter-spacing: .64px; line-height: 1.7; color: #333333; }
  @media (max-width: 640px) {
    .faq-q { padding: 12px 16px; gap: 10px; }
    .faq-badge { width: 32px; height: 32px; font-size: 15px; }
    .faq-plus { width: 20px; height: 20px; }
    .faq-q-text { font-size: 16px !important; letter-spacing: .64px !important; }
    .faq-a-row { padding: 0 16px 12px; gap: 10px; }
    .faq-a p { font-size: 14px; }
  }
  @media (prefers-reduced-motion: reduce) {
    .faq-plus .fp-v { transition: none; }
  }

  .ov-map-wrap { position: relative; width: 508px; max-width: 100%; }
  .ov-map-wrap .ov-map { width: 100%; }
  @media (max-width: 767px) {
    .ov-map-wrap { width: 100%; }
  }

  /* ===== apply form section (bg layers shared with KV) ===== */
  .apply { position: relative; width: 100%; overflow: hidden; background: #0087ae; scroll-margin-top: 64px; margin-top: -4px; z-index: 2; }
  .apply-sq { position: absolute; left: 0; top: 0; width: calc(126.73px * var(--cs, 1)); height: calc(126.73px * var(--cs, 1)); background: #5bcc66; opacity: .7; }
  .apply-cir { position: absolute; left: calc(506.9px * var(--cs, 1)); top: 0; width: calc(126.72px * var(--cs, 1)); height: calc(126.72px * var(--cs, 1)); border-radius: 50%; background: #3549cb; }
  .apply-mosaic-l, .apply-mosaic-r, .apply-mosaic-sp-l, .apply-mosaic-sp-r { top: 0; height: 100%; background-repeat: repeat-y; }
  .apply-mosaic-l { left: 0; width: min(calc(658px * var(--cs, 1)), 45.7%); background-position: left top; }
  .apply-mosaic-r { right: 0; width: min(calc(782px * var(--cs, 1)), 54.3%); background-position: right top; }
  .apply-tint { position: absolute; inset: 0; background: #0222f2; opacity: .33; }
  .apply-inner { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 32px; align-items: center; padding: 64px 16px; }
  .apply-head { display: flex; flex-direction: column; gap: 8px; text-align: center; }
  .apply-title { color: #fff; }
  .apply-deadline { margin: 0; color: #fff; font-size: 16px; font-weight: 300; line-height: 1.7; }
  .apply-card {
    width: min(788px, 100%); margin: 0;
    background: rgba(255, 255, 255, .6);
    -webkit-backdrop-filter: blur(9px); backdrop-filter: blur(9px);
    border-radius: 16px; box-shadow: 0 0 20px rgba(0, 0, 0, .15);
    padding: 40px 64px;
    display: flex; flex-direction: column; gap: 24px; align-items: center;
  }
  .fm-field { width: 100%; display: flex; flex-direction: column; gap: 8px; }
  .fm-field--type { gap: 16px; }
  .fm-note { margin: 0; font-size: 12px; font-weight: 400; line-height: 1.4; color: #333333; }
  .fm-label { margin: 0; display: flex; align-items: flex-start; gap: 4px; font-size: 14px; font-weight: 400; line-height: 1.5; color: #333333; }
  .req { background: #f00000; color: #fff; font-size: 10px; line-height: 1.6; border-radius: 40px; padding: 0 8px; flex-shrink: 0; margin-top: 2px; }
  .fm-radios { display: flex; flex-direction: column; gap: 8px; }
  .fm-radio { display: flex; align-items: center; gap: 6px; font-size: 16px; font-weight: 600; letter-spacing: .64px; line-height: 1.7; color: #333333; cursor: pointer; }
  .fm-radio input {
    appearance: none; -webkit-appearance: none; margin: 0;
    width: 20px; height: 20px; border-radius: 50%;
    background: #fff; border: 1px solid #0087ae; cursor: pointer; flex-shrink: 0;
  }
  .fm-radio input:checked { background: #0087ae; box-shadow: inset 0 0 0 3px #fff; }
  .fm-field input[type="text"], .fm-field textarea {
    width: 100%; border: 1px solid #dcdcdc; border-radius: 4px; background: #fff;
    padding: 12px 20px; font-family: inherit; font-size: 16px; color: #333333;
  }
  .fm-field input[type="text"] { height: 48px; }
  .fm-field textarea { height: 120px; resize: vertical; }
  .fm-field input::placeholder, .fm-field textarea::placeholder { color: #c8c8c8; }
  .fm-notes { width: 100%; }
  .fm-notes p { margin: 0; font-size: 14px; font-weight: 400; line-height: 22.8px; color: #333333; }
  .fm-submit {
    width: 320px; height: 52px; border: 1px solid #ff3c1a; border-radius: 80px; cursor: pointer;
    background: #ff3c1a; color: #fff;
    font-family: inherit; font-size: 20px; font-weight: 500; letter-spacing: .5px;
    position: relative; overflow: hidden; transition: color .4s ease;
  }
  .fm-submit::before {
    content: ''; position: absolute; inset: 0; background: #fff;
    transform: scaleX(0); transform-origin: left center; transition: transform .4s ease;
  }
  .fm-submit:hover::before, .fm-submit:active::before { transform: scaleX(1); }
  .fm-submit:hover, .fm-submit:active { color: #ff3c1a; }
  .fm-submit > span { position: relative; }
  @media (prefers-reduced-motion: reduce) {
    .fm-submit, .fm-submit::before { transition: none; }
  }
  /* ===== footer ===== */
  .site-footer {
    background: #fff; padding: 40px 64px;
    display: flex; justify-content: space-between; align-items: center; gap: 40px;
    position: relative; z-index: 1;
  }
  .ft-left { display: flex; flex-direction: column; gap: 12px; }
  .ft-logo { position: relative; display: block; width: 180px; aspect-ratio: 160.505 / 44; }
  .ft-logo img { position: absolute; }
  .ft-logo .mark { inset: 15.93% 79.81% 26.76% 4.36%; width: 15.83%; height: 57.31%; }
  .ft-logo .word { inset: 31.2% 4.36% 16.21% 22.38%; width: 73.26%; height: 52.59%; }
  .ft-addr { margin: 0; font-size: 14px; font-weight: 400; line-height: 1.4; color: #333333; }
  .ft-cols { display: flex; gap: 48px; align-items: flex-start; }
  .ft-head { margin: 0 0 16px; font-size: 14px; font-weight: 600; letter-spacing: .56px; line-height: 1.7; color: #333333; }
  .ft-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
  .ft-col li { font-size: 13px; font-weight: 400; letter-spacing: .52px; line-height: 1.7; color: #6b777c; }
  .ft-col a { color: inherit; text-decoration: none; transition: color .2s ease; }
  .ft-col a:hover, .ft-col a:focus-visible { color: #0087ae; }
  @media (max-width: 1023px) {
    .site-footer { flex-direction: column; align-items: flex-start; padding: 40px 24px; gap: 32px; }
  }
  @media (max-width: 640px) {
    .apply-inner { padding: 48px 16px; }
    .apply-title { font-size: 20px; }
    .apply-deadline { font-size: 14px; }
    .dl-sep { display: none; }
    .apply-card { padding: 24px 24px; }
    .fm-radio input { width: 24px; height: 24px; }
    .fm-radio input:checked { box-shadow: inset 0 0 0 4px #fff; }
    .fm-submit { width: min(320px, 100%); }
    .ft-cols { flex-wrap: wrap; gap: 24px 40px; }
    .site-footer { padding: 32px 32px; }
    .ft-addr, .ft-col li { font-size: 12px; }
    .ft-head { font-size: 14px; margin: 0 0 8px; }
  }

  /* ===== apply form: validation & submit states ===== */
  .fm-name-row { display: flex; gap: 12px; }
  .fm-name-row input { flex: 1 1 0; min-width: 0; }
  .fm-field.fm-invalid input, .fm-field.fm-invalid textarea { border-color: #f00000; }
  .fm-err { margin: 0; font-size: 13px; color: #f00000; line-height: 1.5; }
  .fm-global-err { margin: 0; width: 100%; text-align: center; font-size: 14px; color: #f00000; line-height: 1.7; }
  .fm-submit[disabled] { opacity: .6; cursor: default; }
  .fm-submit[disabled]::before { display: none; }
  .fm-done { display: flex; flex-direction: column; gap: 24px; width: 100%; }
  .fm-done h3 { margin: 0; font-size: 24px; font-weight: 600; color: #333333; text-align: center; line-height: 1.5; }
  .fm-done p { margin: 0; font-size: 15px; font-weight: 400; color: #333333; line-height: 1.9; }
  .fm-done-block { display: flex; flex-direction: column; gap: 4px; }
  .fm-done-head { font-weight: 600; }
  .fm-done-block p:not(.fm-done-head) { padding-left: 1em; }
  @media (max-width: 640px) {
    .fm-done h3 { font-size: 20px; }
    .fm-done p { font-size: 14px; }
  }

  .faq-link, .fm-policy { color: #0087ae; text-decoration: underline; text-underline-offset: 3px; }
  .faq-link:hover, .faq-link:focus-visible, .fm-policy:hover, .fm-policy:focus-visible { text-decoration: none; }
