  :root {
    --green:#08793f;
    --green-deep:#045f34;
    --green-light:#8fd15f;
    --ink:#24312b;
    --support-card-background:#ffffff;
    --support-card-soft:#f7faf7;
    --support-card-line:#dce7de;
    --support-muted:#66756b;
    --support-mark-background:#eaf4ea;
    --support-highlight-background:#edf6e9;
    --support-card-shadow:0 18px 44px rgba(1, 45, 26, .18);
    --support-icon-shadow:0 7px 16px rgba(14, 62, 37, .14);
    --footer-background:#063d2b;
    --footer-background-deep:#032f22;
    --footer-text:rgba(255, 255, 255, .76);
    --footer-text-strong:rgba(255, 255, 255, .96);
    --footer-rule:rgba(255, 255, 255, .17);
    --footer-glow:rgba(143, 209, 95, .12);
    --footer-panel:rgba(255, 255, 255, .045);
    --footer-accent:#c4e9a9;
    --footer-accent-wash:rgba(143, 209, 95, .12);
  }
  * { box-sizing:border-box; }
  html,
  body { overflow-x:clip; }
  html { scroll-behavior:smooth; }

  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior:auto; }
  }

  body {
    margin:0;
    font-family:"Yu Gothic","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;
    color:var(--ink);
    background:#fff;
  }

  .hero {
    position:relative;
    min-height:100vh;
    min-height:100svh;
    overflow:hidden;
    background:#fff;
  }

  /* 佐賀の遠景 */
  .bg-landscape {
    position:absolute;
    inset:82px 0 0 0;
    background-image:url("../images/saga-landscape.webp");
    background-size:cover;
    background-position:58% bottom;
    z-index:1;
    transform:scale(1.03);
    filter:brightness(1.24) contrast(1.00) saturate(1.06);
  }
  /* 左の文字を読みやすくする白〜透明グラデーション */
  .bg-landscape::before {
    content:"";
    position:absolute;
    inset:0;
    background:
      linear-gradient(90deg,
        rgba(255,255,255,1.00) 0%,
        rgba(255,255,255,.995) 18%,
        rgba(255,255,255,.93) 30%,
        rgba(255,255,255,.62) 44%,
        rgba(255,255,255,.20) 62%,
        rgba(255,255,255,.02) 100%),
      linear-gradient(180deg,
        rgba(150,205,245,.12) 0%,
        rgba(170,214,247,.07) 16%,
        rgba(255,255,255,.05) 40%,
        rgba(255,255,255,.03) 100%);
  }
  /* 画面下にうっすら緑の気配 */
  .bg-landscape::after {
    content:"";
    position:absolute;
    inset:0;
    background:
      radial-gradient(circle at 78% 66%, rgba(167,224,132,.10), transparent 26%),
      linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(27,138,66,.04) 100%);
  }

  .hero::before,
  .hero::after {
    content:"";
    position:absolute;
    left:-12vw;
    width:132vw;
    height:10vw;
    border-radius:50% / 100%;
    transform:rotate(-8deg);
    pointer-events:none;
    z-index:4;
  }
  .hero::before {
    bottom:0vh;
    background:linear-gradient(90deg,rgba(78,184,92,.04),rgba(104,198,75,.16),rgba(255,255,255,0));
  }
  .hero::after {
    bottom:-5vh;
    background:linear-gradient(90deg,rgba(42,151,78,.08),rgba(119,204,77,.20),rgba(255,255,255,0));
  }
  .hero::after {
    height:8vw;
  }


  .site-header {
    position:relative;
    z-index:30;
    height:82px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:0 5vw;
    background:rgba(255,255,255,.92);
    backdrop-filter:blur(10px);
    border-bottom:1px solid rgba(0,0,0,.05);
  }
  .brand {
    font-weight:800;
    font-size:30px;
    color:var(--green);
  }
  .site-nav {
    display:flex;
    gap:28px;
    align-items:center;
    font-size:14px;
    font-weight:700;
  }
  .site-nav a {
    color:#26352d;
    text-decoration:none;
  }
  .site-nav .join {
    padding:14px 24px;
    border-radius:14px;
    background:var(--green);
    color:white;
    white-space:nowrap;
  }
  .join-label-mobile { display:none; }
  .menu-toggle {
    display:none;
    align-items:center;
    justify-content:center;
    gap:5px;
    width:46px;
    height:46px;
    padding:10px;
    border:1px solid rgba(8,121,63,.18);
    border-radius:14px;
    background:rgba(255,255,255,.9);
    color:var(--green-deep);
    cursor:pointer;
  }
  .menu-toggle span {
    display:block;
    width:20px;
    height:2px;
    border-radius:2px;
    background:currentColor;
    transition:transform .2s ease, opacity .2s ease;
  }
  .menu-toggle:focus-visible,
  .site-nav a:focus-visible {
    outline:3px solid var(--green-light);
    outline-offset:3px;
  }
  .menu-toggle.is-open span:first-child {
    transform:translateY(7px) rotate(45deg);
  }
  .menu-toggle.is-open span:nth-child(2) {
    opacity:0;
  }
  .menu-toggle.is-open span:last-child {
    transform:translateY(-7px) rotate(-45deg);
  }

  .hero-inner {
    position:relative;
    z-index:10;
    min-height:calc(100vh - 82px);
    min-height:calc(100svh - 82px);
    display:grid;
    grid-template-columns:minmax(440px,44%) 1fr;
    align-items:center;
    max-width:1320px;
    margin:0 auto;
    padding:30px 3.5vw 0;
  }

  .copy {
    position:relative;
    z-index:12;
    padding-bottom:7vh;
  }
  .eyebrow {
    font-weight:700;
    color:var(--green);
    font-size:20px;
    margin-bottom:14px;
    text-shadow:0 1px 0 rgba(255,255,255,.35);
  }
  h1 {
    margin:0;
    color:var(--green-deep);
    font-size:clamp(68px,8vw,126px);
    line-height:1.02;
    letter-spacing:-.06em;
    font-weight:900;
    text-shadow:0 1px 0 rgba(255,255,255,.5);
  }
  .sub {
    margin:28px 0 18px;
    font-size:clamp(24px,2vw,36px);
    line-height:1.5;
    color:var(--green);
    font-weight:800;
    text-shadow:0 1px 0 rgba(255,255,255,.4);
  }
  .name {
    margin:12px 0 26px;
    font-size:clamp(40px,4vw,64px);
    font-weight:900;
    color:var(--green-deep);
    text-shadow:0 1px 0 rgba(255,255,255,.4);
  }
  .buttons {
    display:flex;
    gap:14px;
    flex-wrap:wrap;
  }
  .hero-scroll-cue {
    position:absolute;
    z-index:18;
    left:50%;
    bottom:24px;
    display:flex;
    width:max-content;
    flex-direction:column;
    align-items:center;
    gap:7px;
    transform:translateX(-50%);
    color:rgba(4,95,52,.72);
    font-size:9px;
    font-weight:800;
    letter-spacing:.17em;
    line-height:1;
    text-decoration:none;
    transition:color .2s ease, opacity .2s ease;
  }
  .hero-scroll-cue-line {
    position:relative;
    display:block;
    width:1px;
    height:24px;
    background:linear-gradient(180deg, rgba(4,95,52,.28), currentColor);
    animation:hero-scroll-cue-drift 2.1s ease-in-out infinite;
  }
  .hero-scroll-cue-line::after {
    content:"";
    position:absolute;
    bottom:0;
    left:-3px;
    width:7px;
    height:7px;
    border-right:1px solid currentColor;
    border-bottom:1px solid currentColor;
    transform:rotate(45deg);
  }
  .hero-scroll-cue:hover { color:var(--green); }
  .hero-scroll-cue:focus-visible {
    outline:2px solid var(--green-light);
    outline-offset:5px;
  }
  @keyframes hero-scroll-cue-drift {
    0%, 100% { opacity:.68; transform:translateY(0); }
    50% { opacity:1; transform:translateY(3px); }
  }
  .btn {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:180px;
    height:58px;
    padding:0 24px;
    border-radius:12px;
    font-weight:800;
    text-decoration:none;
    position:relative;
    z-index:40;
  }
  .btn.primary { background:var(--green); color:#fff; }
  .btn.secondary {
    border:2px solid var(--green);
    color:var(--green);
    background:rgba(255,255,255,.92);
  }

  .portrait-wrap {
    position:relative;
    align-self:end;
    height:calc(100vh - 112px);
    min-height:620px;
    z-index:9;
  }
  .portrait {
    position:absolute;
    right:4.5vw;
    bottom:0;
    height:96%;
    max-width:58vw;
    object-fit:contain;
    object-position:bottom center;
    filter:drop-shadow(0 18px 35px rgba(0,0,0,.10));
    z-index:13;
  }

  .wind {
    position:absolute;
    z-index:7;
    left:0;
    right:0;
    bottom:1%;
    height:160px;
    pointer-events:none;
    opacity:.9;
  }
  .wind span {
    position:absolute;
    left:-10%;
    width:120%;
    height:42px;
    border-radius:50%;
    border-top:3px solid rgba(89,184,87,.28);
    transform:rotate(-4deg);
  }
  .wind span:nth-child(2) { top:40px; border-color:rgba(126,207,76,.21); transform:rotate(-6deg); }
  .wind span:nth-child(3) { top:76px; border-color:rgba(63,154,79,.16); transform:rotate(-8deg); }

  #leaf-layer {
    position:absolute;
    inset:82px 0 0;
    overflow:hidden;
    pointer-events:none;
    z-index:8;
  }

  .leaf {
    position:absolute;
    width:var(--size);
    height:calc(var(--size) * .58);
    opacity:0;
    transform-origin:center;
    animation:leaf-flow var(--dur) linear forwards;
  }

  /* 軌道とは別に、葉そのものだけをゆっくり揺らして浮遊感を出す */
  .leaf::before {
    content:"";
    position:absolute;
    inset:0;
    border-radius:100% 0 100% 0;
    background:linear-gradient(135deg,rgba(160,224,108,.96),rgba(24,132,64,.82));
    transform-origin:55% 48%;
    animation:leaf-float var(--floatDur) ease-in-out infinite alternate;
  }

  .leaf::after {
    content:"";
    position:absolute;
    width:70%;
    height:1px;
    background:rgba(255,255,255,.45);
    left:15%;
    top:50%;
    transform:rotate(-22deg);
    pointer-events:none;
  }

  @keyframes leaf-float {
    0%   { transform:rotate(calc(var(--floatRot) * -0.6)) scaleX(.98) scaleY(1.01); }
    50%  { transform:rotate(0deg) scaleX(1.01) scaleY(.99); }
    100% { transform:rotate(var(--floatRot)) scaleX(.99) scaleY(1.01); }
  }

  /* 葉は左下から右上へ進み、各区間で上昇を続ける */
  @keyframes leaf-flow {
    0% {
      opacity:0;
      transform:translate3d(-8vw,var(--y0),0) rotate(var(--r0)) scale(.78);
    }
    10% {
      opacity:var(--op);
    }
    28% {
      transform:translate3d(34vw,var(--y1),0) rotate(var(--r1)) scale(.98);
    }
    52% {
      opacity:var(--op);
      transform:translate3d(68vw,var(--y2),0) rotate(calc(var(--r1) + 10deg)) scale(.93);
    }
    100% {
      opacity:0;
      transform:translate3d(118vw,var(--y3),0) rotate(var(--r2)) scale(.86);
    }
  }


  .hero .copy {
    animation:copy-fade .9s ease-out .25s both;
  }
  @keyframes copy-fade {
    from { opacity:0; }
    to   { opacity:1; }
  }
  @keyframes portrait-settle {
    from { transform:translate3d(18px,5px,0); }
    to   { transform:translate3d(0,0,0); }
  }

  .hint {
    position:absolute;
    right:3vw;
    bottom:2vh;
    z-index:40;
    font-size:12px;
    color:rgba(0,0,0,.45);
    background:rgba(255,255,255,.72);
    padding:8px 12px;
    border-radius:999px;
  }

  
  .wind-copy {
    position:relative;
  }

  .wind-copy .line {
    display:block;
  }

  .wind-copy .char {
    display:inline-block;
    will-change: transform, opacity, filter;
  }

  /* ページ表示後、一度だけ風が文字をなでる */
  .wind-copy.is-animated .char {
    animation:copy-wind-pass .95s ease-out both;
    animation-delay: calc(var(--char-index) * 0.055s + .2s);
  }

  @keyframes copy-wind-pass {
    0% {
      opacity: 0;
      transform: translate3d(-4px, 2px, 0) rotate(-1.2deg);
      filter: blur(4px);
    }
    28% {
      opacity: 1;
      transform: translate3d(0px, 0px, 0) rotate(0deg);
      filter: blur(0);
    }
    58% {
      opacity: 1;
      transform: translate3d(1px, -1px, 0) rotate(0.6deg);
      filter: blur(0);
    }
    100% {
      opacity: 1;
      transform: translate3d(0px, 0px, 0) rotate(0deg);
      filter: blur(0);
    }
  }

  /* 2段構成：再起動を主役に、護る・繋ぐを下段へ */
  .commitment-title {
    display: flex;
    align-items: center;
    justify-content: center;
    padding-bottom: 0;
  }

  .commitment-orbit {
    top: 50%;
    left: 3%;
    right: 3%;
    height: 155%;
  }

  .commitment-words {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
  }

  .commitment-subwords {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: clamp(30px, 3.6vw, 54px);
  }

  .commitment-word-main {
    color: var(--green);
    font-size: clamp(52px, 5vw, 72px);
  }

  .commitment-word-sub {
    color: #203029;
    font-size: clamp(40px, 4vw, 58px);
  }

  .commitment-motion-ready .commitment-word {
    opacity: 0;
    transform: translateY(10px);
    animation: none;
  }

  .commitment-motion-ready .commitment-section.is-visible .commitment-word {
    opacity: 1;
    transform: translateY(0);
    animation: commitment-word-in .9s cubic-bezier(.2, .75, .2, 1) both;
  }

  .commitment-motion-ready .commitment-section.is-visible .commitment-word-main { animation-delay: .08s; }
  .commitment-motion-ready .commitment-section.is-visible .commitment-subwords .commitment-word:nth-child(1) { animation-delay: .22s; }
  .commitment-motion-ready .commitment-section.is-visible .commitment-subwords .commitment-word:nth-child(2) { animation-delay: .36s; }

  @media (prefers-reduced-motion: reduce) {
    .wind-copy.is-animated .char {
      animation: none !important;
      opacity: 1 !important;
      transform: none !important;
      filter: none !important;
    }
  }


  @media (max-width:900px) {
    .site-header {
      height:72px;
      padding-inline:18px;
    }
    .brand {
      font-size:26px;
    }
    .menu-toggle {
      display:flex;
      flex-direction:column;
      flex:0 0 auto;
    }
    .site-nav {
      position:absolute;
      top:calc(100% + 8px);
      right:14px;
      display:none;
      width:min(320px, calc(100vw - 28px));
      flex-direction:column;
      align-items:stretch;
      gap:4px;
      padding:8px;
      border:1px solid rgba(8,121,63,.14);
      border-radius:4px 22px 4px 4px;
      background:rgba(255,255,255,.97);
      box-shadow:0 18px 42px rgba(28,72,45,.18);
      backdrop-filter:blur(14px);
    }
    .site-nav.is-open {
      display:flex;
    }
    .site-nav a:not(.join) {
      display:block;
      padding:13px 14px;
      border-radius:9px;
      white-space:nowrap;
    }
    .site-nav a:not(.join):hover {
      background:rgba(8,121,63,.07);
    }
    .site-nav .join {
      display:inline-flex;
      align-items:center;
      justify-content:center;
      margin-top:4px;
      padding:13px 14px;
    }
    .join-label-desktop { display:none; }
    .join-label-mobile { display:inline; }
    .hero-inner {
      grid-template-columns:1fr;
      min-height:calc(100vh - 72px);
      min-height:calc(100svh - 72px);
      padding:30px 18px 0;
    }
    .bg-landscape {
      inset:72px 0 0;
      background-size:auto 100%;
      background-position:54% center;
      background-repeat:no-repeat;
      filter:brightness(1.26) contrast(.92) saturate(.98);
    }
    .bg-landscape::before {
      background:
        linear-gradient(180deg,
          rgba(255,255,255,1) 0%,
          rgba(255,255,255,.97) 16%,
          rgba(255,255,255,.82) 34%,
          rgba(255,255,255,.50) 56%,
          rgba(255,255,255,.16) 82%,
          rgba(255,255,255,.04) 100%);
    }
    .portrait-wrap {
      height:clamp(360px, 50svh, 520px);
      min-height:360px;
    }
    .portrait {
      left:50%;
      right:auto;
      transform:translateX(-50%);
      max-width:92vw;
      height:100%;
    }
    h1 { font-size:clamp(58px,18vw,92px); }
    .copy { padding-bottom:0; }
    .hero-scroll-cue { display:none; }
    .wind {
      bottom:31%;
      height:104px;
      opacity:.82;
    }
    .wind span {
      border-top-width:2px;
    }
    .gust-band {
      left:-65vw;
      width:210vw;
      height:28vw;
      min-height:150px;
      bottom:18vh;
      transform:rotate(-13deg);
    }
    .buttons {
      gap:10px;
      width:min(100%, 440px);
      flex-wrap:nowrap;
    }
    .btn {
      min-width:0;
      flex:1 1 0;
      height:54px;
      padding-inline:clamp(8px, 3vw, 18px);
      font-size:clamp(13px, 3.5vw, 16px);
      white-space:nowrap;
    }
    #leaf-layer { inset:72px 0 0; }
  }

  @media (prefers-reduced-motion: reduce) {
    .menu-toggle span { transition:none; }
    .hero-scroll-cue-line { animation:none; }
  }

  @media (prefers-reduced-motion: reduce) {
    .leaf { animation:none !important; display:none; }
    .hero .copy { animation:none !important; }
  }

  /* ===== Section 2: 今こそ新しい風で、佐賀を新時代へ ===== */
  .intro-section {
    position: relative;
    background: #fff;
    overflow: hidden;
    padding: clamp(88px, 10vw, 150px) 24px clamp(96px, 11vw, 160px);
  }

  .intro-section::before {
    content: "";
    position: absolute;
    width: 520px;
    height: 520px;
    right: -180px;
    top: -240px;
    border-radius: 50%;
    background: radial-gradient(circle,
      rgba(143,209,95,.16) 0%,
      rgba(143,209,95,.07) 42%,
      rgba(143,209,95,0) 72%);
    pointer-events: none;
  }

  .intro-section::after {
    content: "";
    position: absolute;
    right: 6%;
    top: 26%;
    width: min(460px, 36vw);
    height: min(460px, 36vw);
    border-radius: 50%;
    background: radial-gradient(circle,
      rgba(125, 196, 86, .10) 0%,
      rgba(125, 196, 86, .05) 38%,
      rgba(255,255,255,0) 72%);
    pointer-events: none;
  }

  .intro-inner {
    position: relative;
    z-index: 1;
    width: min(1120px, 100%);
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: clamp(54px, 6vw, 88px);
  }

  .intro-heading {
    width: min(760px, 100%);
    align-self: flex-start;
  }

  .intro-title {
    margin: 0;
    font-size: clamp(38px, 4.2vw, 68px);
    line-height: 1.26;
    letter-spacing: -.03em;
    font-weight: 800;
    color: var(--ink);
    min-width: 0;
    overflow-wrap: anywhere;
    text-wrap: balance;
  }

  .intro-title-line {
    display:block;
    white-space:nowrap;
  }

  .intro-title .accent {
    color: var(--green);
  }

  .intro-copy-wrap {
    position: relative;
    padding: 0;
    width: min(920px, 82%);
    max-width: 920px;
    margin-top: 0;
    align-self: flex-end;
  }

  .intro-copy {
    margin: 0;
    font-size: clamp(16px, 1.2vw, 18px);
    line-height: 2.08;
    letter-spacing: .03em;
    font-weight: 500;
    color: #37443d;
  }

  .intro-copy-break {
    display: block;
  }

  .intro-copy-emphasis {
    display: block;
    color: var(--green);
    font-weight: 800;
    text-wrap: balance;
  }



  @media (max-width: 900px) {
    .intro-section {
      padding: 74px 22px 92px;
    }

    .intro-section::before {
      width: 360px;
      height: 360px;
      right: -150px;
      top: -150px;
    }

    .intro-section::after {
      right: -70px;
      top: 12%;
      width: 220px;
      height: 220px;
    }

    .intro-inner {
      display:flex;
      flex-direction:column;
      gap: 42px;
    }

    .intro-title {
      font-size: clamp(26px, 8.2vw, 46px);
      line-height: 1.3;
    }

    .intro-title-line {
      white-space:normal;
    }

    .intro-copy-wrap {
      padding: 0;
      width: 100%;
      max-width: none;
      margin-top: 0;
      align-self: stretch;
    }

    .intro-copy {
      font-size: 16px;
      line-height: 1.95;
    }
  }


  /* 上コピーだけ、スクロール時に静かに出現 */
  .intro-heading {
    opacity: 0;
    transform: translateY(22px);
    transition:
      opacity 1.15s ease,
      transform 1.3s cubic-bezier(.22, .8, .26, 1);
  }

  .intro-heading.is-visible {
    opacity: 1;
    transform: translateY(0);
  }

  .intro-heading .intro-title-line {
    opacity: 0;
    transform: translateY(16px);
    transition:
      opacity 1.0s ease,
      transform 1.1s cubic-bezier(.22, .8, .26, 1);
  }

  .intro-heading.is-visible .intro-title-line:nth-child(1) {
    opacity: 1;
    transform: translateY(0);
    transition-delay: .16s;
  }

  .intro-heading.is-visible .intro-title-line:nth-child(2) {
    opacity: 1;
    transform: translateY(0);
    transition-delay: .34s;
  }

  @media (prefers-reduced-motion: reduce) {
    .intro-heading,
    .intro-heading .intro-title-line {
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
    }
  }


  /* ===== Section 3: 吉田ゆかり、5つの強みで再起動 ===== */
  .strengths-section {
    position: relative;
    overflow: hidden;
    padding: clamp(96px, 10vw, 150px) 24px clamp(110px, 11vw, 170px);
    background: #f3f7f0;
  }

  .strengths-inner {
    width: min(1180px, 100%);
    margin: 0 auto;
  }

  .strengths-heading {
    margin-bottom: clamp(46px, 5vw, 72px);
  }

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

  .strength-photo-card {
    min-height: 390px;
    position: relative;
    overflow: hidden;
  }

  .strengths-title {
    margin: 0;
    font-size: clamp(40px, 4.8vw, 70px);
    line-height: 1.22;
    letter-spacing: -.035em;
    font-weight: 800;
    color: var(--ink);
    min-width: 0;
    overflow-wrap: anywhere;
    text-wrap: balance;
  }

  .strengths-title-line {
    display: block;
    white-space: nowrap;
  }

  .strengths-title .accent {
    color: var(--green);
  }

  .strength-photo-card {
    display: flex;
    flex-direction: column;
    background: #fff;
    isolation: isolate;
  }

  /* 実写真が入るまでの仮表示 */
  .strength-photo {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: contain;
    object-position: center;
    transform: none;
  }

  .strength-photo-placeholder {
    position: relative;
    inset: auto;
    width: 100%;
    aspect-ratio: 4 / 3;
    flex: 0 0 auto;
    background:
      linear-gradient(145deg, rgba(255,255,255,.10), rgba(32,91,58,.18)),
      radial-gradient(circle at 68% 28%, rgba(255,255,255,.52), transparent 18%),
      linear-gradient(135deg, #b9ceb2 0%, #8fb28d 48%, #6b956f 100%);
    transform: scale(1.01);
  }

  .strength-photo-card:nth-child(3) .strength-photo-placeholder {
    background:
      linear-gradient(145deg, rgba(255,255,255,.10), rgba(32,91,58,.18)),
      linear-gradient(135deg, #c8d6c4 0%, #94ae91 46%, #6d8e73 100%);
  }

  .strength-photo-card:nth-child(4) .strength-photo-placeholder {
    background:
      linear-gradient(145deg, rgba(255,255,255,.08), rgba(20,65,40,.20)),
      linear-gradient(135deg, #b6c7b5 0%, #809d83 50%, #58755f 100%);
  }

  .strength-photo-card:nth-child(5) .strength-photo-placeholder {
    background:
      linear-gradient(145deg, rgba(255,255,255,.08), rgba(20,65,40,.23)),
      linear-gradient(135deg, #c1d0be 0%, #8ba18a 45%, #526f59 100%);
  }

  .strength-photo-card:nth-child(6) .strength-photo-placeholder {
    background:
      linear-gradient(145deg, rgba(255,255,255,.08), rgba(20,65,40,.19)),
      linear-gradient(135deg, #cad8c6 0%, #9bb49a 48%, #69846d 100%);
  }

  .strength-photo-card::after {
    content: "写真予定";
    position: absolute;
    z-index: 2;
    right: 18px;
    top: 16px;
    padding: 5px 9px;
    border: 1px solid rgba(255,255,255,.58);
    border-radius: 999px;
    font-size: 11px;
    letter-spacing: .08em;
    color: rgba(255,255,255,.92);
    background: rgba(24,58,37,.18);
    backdrop-filter: blur(3px);
  }

  .strength-photo-card.has-photo::after {
    display: none;
  }

  .strength-card-copy {
    position: relative;
    z-index: 3;
    padding: 24px 24px 28px;
    color: var(--ink);
    background: #fff;
    flex: 1 1 auto;
  }

  .strength-card-copy {
    border-top: 1px solid rgba(32,91,58,.10);
  }

  .strength-number {
    display: block;
    margin-bottom: 10px;
    font-size: 17px;
    line-height: 1;
    font-weight: 700;
    letter-spacing: .08em;
    color: rgba(32,91,58,.42);
  }

  .strength-name {
    margin: 0 0 10px;
    font-size: clamp(21px, 2vw, 28px);
    line-height: 1.42;
    letter-spacing: -.02em;
    font-weight: 800;
    color: var(--ink);
  }

  /* 5つの再起動：見出しは共通色 */
  .strength-photo-card .strength-name { color: var(--ink); }
  .strength-name .strength-key { color: var(--green); }

  .strength-desc {
    margin: 0;
    font-size: 14px;
    line-height: 1.72;
    letter-spacing: .02em;
    font-weight: 500;
    color: #435047;
    text-align: center;
  }

  .strength-desc-break {
    display: block;
  }

  .strength-photo-card {
    opacity: 0;
    transform: translateY(24px);
    transition:
      opacity .9s ease,
      transform 1.05s cubic-bezier(.22,.8,.26,1);
  }

  .strength-photo-card.is-visible {
    opacity: 1;
    transform: translateY(0);
  }


  @media (max-width: 900px) {
    .strengths-section {
      padding: 82px 18px 100px;
    }

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

    .strengths-heading {
      margin-bottom: 42px;
    }

    .strength-photo-card {
      min-height: 340px;
    }

    .strengths-title {
      font-size: clamp(28px, 8.5vw, 48px);
    }

    .strengths-title-line {
      white-space: normal;
    }
  }

  @media (max-width: 620px) {
    .strengths-grid {
      grid-template-columns: 1fr;
    }


    .strengths-heading-block {
      min-height: 300px;
    }

    .strength-photo-card {
      min-height: 390px;
    }

    .strength-card-copy {
      padding: 24px 22px 26px;
    }

    .strength-name {
      font-size: 24px;
    }

    .strength-desc {
      font-size: 15px;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .strength-photo-card {
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
    }
  }


  .strengths-heading {
    opacity: 0;
    transform: translateY(24px);
    transition:
      opacity 1.1s ease,
      transform 1.25s cubic-bezier(.22,.8,.26,1);
  }

  .strengths-heading.is-visible {
    opacity: 1;
    transform: translateY(0);
  }

  .strengths-heading .strengths-title-line {
    opacity: 0;
    transform: translateY(14px);
    transition:
      opacity .95s ease,
      transform 1.05s cubic-bezier(.22,.8,.26,1);
  }

  .strengths-heading.is-visible .strengths-title-line:nth-child(1) {
    opacity: 1;
    transform: translateY(0);
    transition-delay: .10s;
  }

  .strengths-heading.is-visible .strengths-title-line:nth-child(2) {
    opacity: 1;
    transform: translateY(0);
    transition-delay: .26s;
  }

  @media (prefers-reduced-motion: reduce) {
    .strengths-heading,
    .strengths-heading .strengths-title-line {
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
    }
  }


  /* Section motif: 風・再起動・芽吹きを抽象化した流れ */
  .strengths-section {
    background:
      linear-gradient(180deg, #fbfcfa 0%, #f5f9f2 38%, #edf5e9 100%);
  }

  .strengths-section::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
      radial-gradient(ellipse at 8% 84%,
        rgba(139,203,100,.13) 0%,
        rgba(139,203,100,.07) 18%,
        rgba(139,203,100,0) 42%),
      radial-gradient(ellipse at 48% 58%,
        rgba(63,138,83,.08) 0%,
        rgba(63,138,83,.035) 22%,
        rgba(63,138,83,0) 48%),
      radial-gradient(ellipse at 88% 18%,
        rgba(139,203,100,.11) 0%,
        rgba(139,203,100,.045) 18%,
        rgba(139,203,100,0) 42%);
    opacity: .95;
  }

  .strengths-section::after {
    content: "";
    position: absolute;
    left: -12%;
    bottom: 8%;
    width: 124%;
    height: 360px;
    pointer-events: none;
    border-radius: 50%;
    border-top: 1px solid rgba(63,138,83,.10);
    border-bottom: 1px solid rgba(139,203,100,.07);
    transform: rotate(-6deg);
    box-shadow:
      0 -44px 90px rgba(139,203,100,.045),
      0 38px 100px rgba(63,138,83,.035);
  }

  .strengths-inner {
    position: relative;
    z-index: 1;
  }

  .strengths-inner::before,
  .strengths-inner::after {
    content: "";
    position: absolute;
    z-index: -1;
    pointer-events: none;
    left: 50%;
    width: 120%;
    border-radius: 50%;
    transform-origin: center;
  }

  .strengths-inner::before {
    top: 34%;
    height: 120px;
    background: linear-gradient(
      90deg,
      rgba(255,255,255,0) 0%,
      rgba(139,203,100,.075) 28%,
      rgba(63,138,83,.05) 58%,
      rgba(255,255,255,0) 100%
    );
    transform: translateX(-50%) rotate(-7deg);
    filter: blur(1px);
  }

  .strengths-inner::after {
    top: 59%;
    height: 82px;
    background: linear-gradient(
      90deg,
      rgba(255,255,255,0) 0%,
      rgba(63,138,83,.045) 24%,
      rgba(139,203,100,.065) 64%,
      rgba(255,255,255,0) 100%
    );
    transform: translateX(-50%) rotate(-5deg);
    filter: blur(1px);
  }

  .strengths-heading {
    position: relative;
  }

  /* カードの見出し・説明文は中央寄せ */
  .strength-name {
    text-align: center;
  }

  .strength-desc {
    text-align: center;
  }

  /* ホバー時：写真だけ穏やかにズーム＆少し明るく */
  .strength-photo-placeholder {
    transition:
      transform .8s cubic-bezier(.22,.8,.26,1),
      filter .8s ease;
    will-change: transform, filter;
  }

  .strength-photo-card:hover .strength-photo-placeholder {
    transform: scale(1.045);
    filter: brightness(1.05) saturate(1.03);
  }

  /* カード下部に伸びるアクセントライン */
  .strength-card-copy {
    position: relative;
  }

  .strength-card-copy::after {
    content: "";
    position: absolute;
    left: 24px;
    right: 24px;
    bottom: 14px;
    height: 2px;
    background: linear-gradient(90deg, var(--green-light), var(--green));
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .55s ease;
    opacity: .8;
  }

  .strength-photo-card:hover .strength-card-copy::after {
    transform: scaleX(1);
  }

  @media (max-width: 900px) {
    .strengths-section::after {
      height: 220px;
      bottom: 5%;
      transform: rotate(-8deg);
    }

    .strengths-inner::before {
      top: 39%;
      height: 88px;
      transform: translateX(-50%) rotate(-9deg);
    }

    .strengths-inner::after {
      top: 68%;
      height: 62px;
      transform: translateX(-50%) rotate(-7deg);
    }
  }

  @media (hover: none) {
    .strength-photo-card:hover .strength-photo-placeholder {
      transform: none;
      filter: none;
    }

    .strength-photo-card:hover .strength-card-copy::after {
      transform: scaleX(0);
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .strength-photo-placeholder,
    .strength-card-copy::after {
      transition: none !important;
    }
  }


  /* ===== Latest FV refinements ===== */

  /* メッセージ：手書き調 */
  .hero .sub {
    font-family: 'Zen Kurenaido', 'Noto Sans JP', sans-serif;
    font-weight: 400;
    letter-spacing: .035em;
    font-size: clamp(25px, 2.15vw, 38px);
    line-height: 1.65;
    color: #18824d;
  }

  /* 候補者名：メインコピーより一段抑え、黒系で明確に識別 */
  .hero .name {
    display: inline-block;
    margin: 12px 0 46px;
    padding: 0;
    font-family: 'Noto Sans JP', 'Hiragino Sans', 'Yu Gothic', sans-serif;
    font-size: clamp(40px, 4vw, 64px);
    line-height: 1.05;
    font-weight: 800;
    letter-spacing: -.035em;
    color: #202823;
    background: none;
    border-radius: 0;
    box-shadow: none;
  }

  .hero .name::after {
    content: none;
  }

  /* FV CTA */
  .hero .buttons {
    gap: 16px;
    align-items: center;
  }

  .hero .btn {
    overflow: hidden;
    transition:
      transform .28s ease,
      box-shadow .28s ease,
      border-color .28s ease,
      background-color .28s ease,
      color .28s ease;
    box-shadow: 0 8px 20px rgba(22, 81, 49, .06);
  }

  .hero .btn::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(
      120deg,
      rgba(255,255,255,0) 15%,
      rgba(255,255,255,.22) 50%,
      rgba(255,255,255,0) 85%
    );
    transform: translateX(-130%);
    transition: transform .65s ease;
    pointer-events: none;
  }

  .hero .btn.primary {
    box-shadow: 0 10px 24px rgba(24, 130, 77, .18);
  }

  .hero .btn.secondary {
    background: rgba(255,255,255,.96);
  }

  .hero .btn:hover {
    transform: translateY(-2px);
  }

  .hero .btn:hover::before {
    transform: translateX(130%);
  }

  .hero .btn.primary:hover {
    box-shadow: 0 14px 30px rgba(24, 130, 77, .24);
  }

  .hero .btn.secondary:hover {
    background: rgba(24, 130, 77, .06);
    box-shadow: 0 12px 26px rgba(22, 81, 49, .12);
  }

  .hero .btn:active {
    transform: translateY(0);
  }

  .hero .btn:focus-visible {
    outline: none;
    box-shadow:
      0 0 0 4px rgba(139, 203, 100, .28),
      0 12px 28px rgba(22, 81, 49, .16);
  }

  /* ヘッダー CTA も同じ演出 */
  .hero nav .join {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 154px;
    height: 44px;
    padding: 0 22px;
    border-radius: 14px;
    background: var(--green);
    color: #fff;
    position: relative;
    overflow: hidden;
    box-shadow: 0 10px 24px rgba(24, 130, 77, .18);
    transition:
      transform .28s ease,
      box-shadow .28s ease,
      background-color .28s ease,
      color .28s ease;
  }

  .hero nav .join::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(
      120deg,
      rgba(255,255,255,0) 15%,
      rgba(255,255,255,.22) 50%,
      rgba(255,255,255,0) 85%
    );
    transform: translateX(-130%);
    transition: transform .65s ease;
    pointer-events: none;
  }

  .hero nav .join:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 30px rgba(24, 130, 77, .24);
  }

  .hero nav .join:hover::before {
    transform: translateX(130%);
  }

  .hero nav .join:active {
    transform: translateY(0);
  }

  .hero nav .join:focus-visible {
    outline: none;
    box-shadow:
      0 0 0 4px rgba(139, 203, 100, .28),
      0 12px 28px rgba(22, 81, 49, .16);
  }

  @media (max-width: 900px) {
    .hero .sub {
      font-size: clamp(20px, 5.8vw, 30px);
      line-height: 1.66;
      margin-top: 24px;
    }

    .hero .name {
      font-size: clamp(38px, 10vw, 54px);
      margin: 12px 0 34px;
      padding: 0;
    }

    .hero .buttons {
      gap: 12px;
    }

    .hero nav .join {
      box-shadow: 0 8px 20px rgba(24, 130, 77, .16);
    }
  }

  @media (hover: none) {
    .hero .btn:hover,
    .hero nav .join:hover {
      transform: none;
    }

    .hero .btn:hover::before,
    .hero nav .join:hover::before {
      transform: translateX(-130%);
    }

    .hero .btn.primary:hover,
    .hero nav .join:hover {
      box-shadow: 0 10px 24px rgba(24, 130, 77, .18);
    }

    .hero .btn.secondary:hover {
      background: rgba(255,255,255,.96);
      box-shadow: 0 8px 20px rgba(22, 81, 49, .06);
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .hero .btn,
    .hero .btn::before,
    .hero nav .join,
    .hero nav .join::before {
      transition: none !important;
    }
  }

  /* ===== Section 4: プロフィール ===== */
  .profile-section {
    position: relative;
    overflow: hidden;
    padding: 132px 24px 144px;
    background:
      radial-gradient(circle at 8% 16%, rgba(143, 209, 95, .12), transparent 24%),
      linear-gradient(180deg, #fff 0%, #f8fbf8 100%);
  }

  .profile-section::before {
    content: "";
    position: absolute;
    top: 150px;
    right: -11vw;
    width: min(58vw, 820px);
    height: min(38vw, 540px);
    border: 1px solid rgba(8, 121, 63, .12);
    border-left-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-13deg);
    pointer-events: none;
  }

  .profile-section::after {
    content: "";
    position: absolute;
    left: -15vw;
    bottom: -240px;
    width: min(64vw, 900px);
    height: 430px;
    border-radius: 50%;
    background: rgba(143, 209, 95, .07);
    transform: rotate(8deg);
    pointer-events: none;
  }

  .profile-inner {
    position: relative;
    z-index: 1;
    width: min(1180px, 100%);
    margin: 0 auto;
  }

  .profile-heading {
    display: grid;
    grid-template-columns: minmax(180px, .42fr) minmax(0, 1fr);
    align-items: start;
    gap: 48px;
    margin-bottom: 76px;
  }

  .profile-kicker {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    margin: 10px 0 0;
    color: var(--green);
    font-size: 14px;
    font-weight: 800;
    letter-spacing: .16em;
  }

  .profile-kicker::before {
    content: "";
    width: 48px;
    height: 1px;
    background: var(--green);
  }

  .profile-title {
    margin: 0;
    color: #203029;
    font-size: clamp(38px, 4.5vw, 68px);
    line-height: 1.36;
    font-weight: 800;
    letter-spacing: -.045em;
    min-width: 0;
    overflow-wrap: anywhere;
    text-wrap: balance;
  }

  .profile-title-line {
    display: block;
    opacity: 0;
    transform: translateY(16px);
    transition:
      opacity 1s ease,
      transform 1.1s cubic-bezier(.22, .8, .26, 1);
  }

  .profile-title-line:last-child {
    color: var(--green);
  }

  .profile-section.is-visible .profile-title-line {
    opacity: 1;
    transform: translateY(0);
  }

  .profile-section.is-visible .profile-title-line:nth-child(1) { transition-delay: .12s; }
  .profile-section.is-visible .profile-title-line:nth-child(2) { transition-delay: .28s; }
  .profile-section.is-visible .profile-title-line:nth-child(3) { transition-delay: .44s; }

  .profile-layout {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(420px, 1.1fr);
    gap: clamp(60px, 7vw, 104px);
    align-items: start;
  }

  .profile-origin {
    margin-top: clamp(82px, 9vw, 116px);
    padding-top: clamp(34px, 4.5vw, 54px);
    border-top: 1px solid rgba(8, 121, 63, .16);
  }

  .profile-origin-heading {
    display: grid;
    grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
    align-items: baseline;
    gap: 28px;
    margin-bottom: clamp(26px, 3.4vw, 40px);
  }

  .profile-origin-title {
    margin: 0;
    color: #203029;
    font-size: clamp(25px, 2.8vw, 36px);
    font-weight: 850;
    letter-spacing: -.035em;
    line-height: 1.45;
  }

  .profile-origin-copy {
    margin: 0;
    color: #405149;
    font-size: clamp(15px, 1.4vw, 18px);
    font-weight: 600;
    line-height: 1.9;
  }

  .profile-origin-gallery {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(18px, 3vw, 36px);
    padding: 4px 12px 10px;
  }

  .profile-origin-snapshot {
    min-width: 0;
    margin: 0;
    padding: 10px 10px 8px;
    background: #fff;
    box-shadow: 0 12px 30px rgba(30, 66, 45, .14);
  }

  .profile-origin-snapshot:nth-child(1) { transform: rotate(-.8deg); }
  .profile-origin-snapshot:nth-child(2) { transform: rotate(.55deg) translateY(5px); }
  .profile-origin-snapshot:nth-child(3) { transform: rotate(-.45deg); }

  .profile-origin-placeholder {
    display: block;
    aspect-ratio: 4 / 3;
    border: 1px solid rgba(8, 121, 63, .1);
    background:
      linear-gradient(145deg, rgba(255,255,255,.7), transparent 58%),
      linear-gradient(135deg, #edf3ee, #dce8de);
  }

  .profile-origin-photo {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    border: 1px solid rgba(8, 121, 63, .1);
    object-fit: contain;
    object-position: center;
    transform: none;
  }

  .profile-origin-snapshot figcaption {
    margin-top: 8px;
    color: #738178;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    text-align: center;
  }

  .profile-visual {
    position: relative;
    margin: 0;
  }

  .profile-photo-wrap {
    position: relative;
    overflow: hidden;
    aspect-ratio: 4 / 3;
    border-radius: 2px 72px 2px 2px;
    background: #eaf1ec;
    box-shadow: 0 24px 64px rgba(30, 66, 45, .12);
  }

  .profile-photo-wrap::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 60%, rgba(9, 45, 27, .12));
    pointer-events: none;
  }

  .profile-photo {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
  }

  .profile-caption {
    position: relative;
    width: 100%;
    margin: 26px 0 0;
    padding: 2px 0 2px 24px;
    background: transparent;
    border-left: 3px solid var(--green);
  }

  .profile-caption-label {
    display: block;
    margin-bottom: 10px;
    color: var(--green);
    font-size: 14px;
    font-weight: 800;
    letter-spacing: .12em;
  }

  .profile-caption-copy {
    margin: 0;
    color: #26362f;
    font-size: clamp(17px, 1.45vw, 21px);
    line-height: 1.9;
    font-weight: 700;
  }

  .profile-timeline {
    position: relative;
    margin: 4px 0 0;
    padding: 0;
    list-style: none;
  }

  .profile-timeline::before {
    content: "";
    position: absolute;
    top: 11px;
    bottom: 18px;
    left: 9px;
    width: 2px;
    background: linear-gradient(180deg, rgba(8,121,63,.18), rgba(8,121,63,.55));
  }

  .profile-event {
    position: relative;
    padding: 0 0 36px 48px;
  }

  .profile-event::before {
    content: "";
    position: absolute;
    top: 9px;
    left: 10px;
    width: 11px;
    height: 11px;
    border: 3px solid #f8fbf8;
    border-radius: 50%;
    background: var(--green);
    box-shadow: 0 0 0 1px rgba(8,121,63,.28);
    transform: translateX(-50%);
  }

  .profile-event:last-child {
    padding-bottom: 0;
  }

  .profile-event:last-child::before {
    width: 15px;
    height: 15px;
    top: 6px;
    left: 10px;
    background: var(--green-light);
    box-shadow: 0 0 0 7px rgba(143,209,95,.13);
  }

  .profile-year {
    display: block;
    margin-bottom: 8px;
    color: var(--green);
    font-size: 15px;
    line-height: 1.3;
    font-weight: 900;
    letter-spacing: .09em;
  }

  .profile-event-copy {
    margin: 0;
    color: #27352f;
    font-size: clamp(17px, 1.45vw, 20px);
    line-height: 1.85;
    font-weight: 600;
  }

  .profile-event-copy + .profile-event-copy {
    margin-top: 6px;
  }

  .profile-event.is-current .profile-event-copy {
    color: #143d29;
    font-weight: 800;
  }

  .profile-heading,
  .profile-visual,
  .profile-event {
    opacity: 0;
    transform: translateY(26px);
    transition:
      opacity .78s ease,
      transform .78s cubic-bezier(.2,.7,.2,1);
  }

  .profile-section.is-visible .profile-heading,
  .profile-section.is-visible .profile-visual,
  .profile-section.is-visible .profile-event {
    opacity: 1;
    transform: translateY(0);
  }

  .profile-section.is-visible .profile-visual { transition-delay: .10s; }
  .profile-section.is-visible .profile-event:nth-child(1) { transition-delay: .16s; }
  .profile-section.is-visible .profile-event:nth-child(2) { transition-delay: .22s; }
  .profile-section.is-visible .profile-event:nth-child(3) { transition-delay: .28s; }
  .profile-section.is-visible .profile-event:nth-child(4) { transition-delay: .34s; }
  .profile-section.is-visible .profile-event:nth-child(5) { transition-delay: .40s; }
  .profile-section.is-visible .profile-event:nth-child(6) { transition-delay: .46s; }

  @media (max-width: 900px) {
    .profile-section {
      padding: 92px 22px 104px;
    }

    .profile-heading {
      grid-template-columns: 1fr;
      gap: 20px;
      margin-bottom: 50px;
    }

    .profile-kicker {
      margin-top: 0;
    }

    .profile-layout {
      grid-template-columns: 1fr;
      gap: 62px;
    }

    .profile-photo-wrap {
      max-height: 650px;
      border-radius: 2px 54px 2px 2px;
    }

    .profile-caption {
      width: 100%;
      margin: 22px 0 0;
      padding: 2px 0 2px 20px;
    }

    .profile-event {
      padding-left: 42px;
      padding-bottom: 30px;
    }

    .profile-origin-heading {
      grid-template-columns: minmax(0, 1fr);
      gap: 8px;
    }
  }

  @media (max-width: 560px) {
    .profile-title {
      font-size: clamp(27px, 8.8vw, 46px);
      line-height: 1.42;
    }

    .profile-photo-wrap {
      aspect-ratio: 4 / 3;
    }

    .profile-caption-copy {
      font-size: 16px;
      line-height: 1.82;
    }

    .profile-event-copy {
      font-size: 16px;
      line-height: 1.8;
    }

    .profile-origin {
      margin-top: 68px;
      padding-top: 30px;
    }

    .profile-origin-title {
      font-size: clamp(23px, 7vw, 30px);
    }

    .profile-origin-gallery {
      grid-template-columns: minmax(0, 1fr);
      gap: 10px;
      padding: 4px 10px 8px;
    }

    .profile-origin-snapshot {
      padding: 6px 6px 7px;
    }

    .profile-origin-snapshot figcaption {
      margin-top: 6px;
      font-size: 10px;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .profile-heading,
    .profile-title-line,
    .profile-visual,
    .profile-event,
    .profile-photo {
      opacity: 1;
      transform: none;
      transition: none !important;
    }

  }

  /* ===== Section 5: 政策 ===== */
  .policy-section {
    position: relative;
    overflow: hidden;
    padding: 144px 24px 152px;
    background: #fff;
  }

  .policy-section::before {
    content: "";
    position: absolute;
    top: 440px;
    left: -18vw;
    width: 74vw;
    height: 300px;
    border: 1px solid rgba(8, 121, 63, .09);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(7deg);
    pointer-events: none;
  }

  .policy-inner {
    position: relative;
    z-index: 1;
    width: min(1180px, 100%);
    margin: 0 auto;
  }

  .policy-lead {
    display: grid;
    grid-template-columns: minmax(360px, .82fr) minmax(0, 1.18fr);
    min-height: 440px;
    overflow: hidden;
    border-radius: 2px 78px 2px 2px;
    background: #edf6ef;
    box-shadow: 0 28px 76px rgba(28, 72, 45, .12);
  }

  .policy-lead-copy {
    container-type: inline-size;
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 66px clamp(42px, 5vw, 72px);
    background:
      radial-gradient(circle at 4% 8%, rgba(143,209,95,.22), transparent 32%),
      linear-gradient(105deg, #f7fbf8 0%, #edf6ef 100%);
  }

  .policy-lead-copy::after {
    content: "";
    position: absolute;
    right: -72px;
    bottom: 82px;
    width: 58%;
    height: 2px;
    background: linear-gradient(90deg, var(--green), rgba(143,209,95,.12));
    transform-origin: left center;
    transform: scaleX(0);
    transition: transform 1.05s .48s cubic-bezier(.2,.75,.2,1);
  }

  .policy-section.is-visible .policy-lead-copy::after {
    transform: scaleX(1);
  }

  .policy-kicker {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    margin: 0 0 28px;
    color: var(--green);
    font-size: 14px;
    font-weight: 800;
    letter-spacing: .18em;
  }

  .policy-kicker::before {
    content: "";
    width: 46px;
    height: 1px;
    background: var(--green);
  }

  .policy-title {
    margin: 0;
    color: #203029;
    font-size: clamp(20px, 15cqw, 64px);
    line-height: 1.08;
    font-weight: 900;
    letter-spacing: -.065em;
    min-width: 0;
    white-space: nowrap;
  }

  .policy-title-line {
    display: block;
    opacity: 0;
    transform: translateX(-18px);
    transition:
      opacity .88s ease,
      transform 1s cubic-bezier(.2,.75,.2,1);
  }

  .policy-title-accent {
    color: var(--green);
  }

  .policy-section.is-visible .policy-title-line {
    opacity: 1;
    transform: translateX(0);
  }

  .policy-section.is-visible .policy-title-line:nth-child(1) { transition-delay: .10s; }
  .policy-section.is-visible .policy-title-line:nth-child(2) { transition-delay: .28s; }

  .policy-lead-media {
    position: relative;
    min-width: 0;
    background: #dce9df;
  }

  .policy-lead-media::before {
    content: "";
    position: absolute;
    z-index: 1;
    inset: 0;
    background:
      linear-gradient(90deg, rgba(237,246,239,.88) 0%, rgba(237,246,239,.12) 28%, transparent 55%),
      linear-gradient(180deg, transparent 62%, rgba(14,54,32,.12));
    pointer-events: none;
  }

  .policy-lead-photo {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 440px;
    background-image: url("https://yukari-yoshida-site.pages.dev/assets/images/hero-backdrop-1440.jpg?v=20260709-4");
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
  }

  .policy-list {
    margin-top: 92px;
    border-bottom: 1px solid rgba(28, 59, 42, .16);
  }

  .policy-unit {
    position: relative;
    display: grid;
    grid-template-columns: 180px minmax(220px, 300px) minmax(0, 1fr);
    gap: 34px;
    align-items: start;
    padding: 35px 8px 38px;
    opacity: 0;
    transform: translateX(-16px);
    transition:
      opacity .72s ease,
      transform .82s cubic-bezier(.2,.75,.2,1),
      background-color .25s ease;
  }

  .policy-unit::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 1px;
    background: linear-gradient(90deg, var(--green), rgba(28,59,42,.14) 54%, rgba(28,59,42,.08));
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .92s cubic-bezier(.2,.75,.2,1);
  }

  .policy-section.is-visible .policy-unit {
    opacity: 1;
    transform: translateX(0);
  }

  .policy-section.is-visible .policy-unit::before {
    transform: scaleX(1);
  }

  .policy-section.is-visible .policy-unit:nth-child(1) { transition-delay: .12s; }
  .policy-section.is-visible .policy-unit:nth-child(2) { transition-delay: .20s; }
  .policy-section.is-visible .policy-unit:nth-child(3) { transition-delay: .28s; }
  .policy-section.is-visible .policy-unit:nth-child(4) { transition-delay: .36s; }
  .policy-section.is-visible .policy-unit:nth-child(5) { transition-delay: .44s; }

  .policy-section.is-visible .policy-unit:nth-child(1)::before { transition-delay: .14s; }
  .policy-section.is-visible .policy-unit:nth-child(2)::before { transition-delay: .22s; }
  .policy-section.is-visible .policy-unit:nth-child(3)::before { transition-delay: .30s; }
  .policy-section.is-visible .policy-unit:nth-child(4)::before { transition-delay: .38s; }
  .policy-section.is-visible .policy-unit:nth-child(5)::before { transition-delay: .46s; }

  .policy-category {
    margin: 5px 0 0;
    color: var(--green);
    font-size: 14px;
    line-height: 1.6;
    font-weight: 800;
    letter-spacing: .09em;
  }

  .policy-name {
    margin: 0;
    color: #203029;
    font-size: clamp(23px, 2vw, 30px);
    line-height: 1.45;
    font-weight: 800;
    letter-spacing: -.025em;
  }

  .policy-description {
    margin: 3px 0 0;
    color: #455149;
    font-size: clamp(16px, 1.32vw, 18px);
    line-height: 1.9;
    font-weight: 500;
  }

  .policy-unit:not(.is-upcoming):hover {
    background: rgba(143,209,95,.055);
  }

  .policy-unit.is-upcoming {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    margin: 12px 0;
    padding: 30px 32px;
    border-radius: 2px 28px 2px 2px;
    background: #f1f7f2;
  }

  .policy-unit.is-upcoming::before {
    content: none;
  }

  .policy-unit.is-upcoming .policy-name {
    font-size: clamp(20px, 1.75vw, 25px);
  }

  .policy-unit.is-upcoming .policy-description {
    margin: 0;
    padding: 9px 18px;
    border: 1px solid rgba(8,121,63,.22);
    border-radius: 999px;
    color: var(--green);
    font-size: 14px;
    font-weight: 800;
    line-height: 1.4;
    white-space: nowrap;
  }

  .policy-decision {
    position: relative;
    display: grid;
    grid-template-columns: minmax(220px, .42fr) minmax(0, 1fr);
    gap: clamp(44px, 6vw, 84px);
    align-items: start;
    overflow: hidden;
    margin-top: 96px;
    padding: clamp(48px, 6vw, 72px);
    border-radius: 2px 66px 2px 2px;
    background: var(--green-deep);
    color: #fff;
    opacity: 0;
    transform: translateY(24px);
    transition:
      opacity .9s ease,
      transform 1s cubic-bezier(.2,.75,.2,1);
  }

  .policy-decision::after {
    content: "";
    position: absolute;
    right: -130px;
    bottom: -180px;
    width: 430px;
    height: 330px;
    border: 1px solid rgba(255,255,255,.15);
    border-radius: 50%;
    transform: rotate(-10deg);
    pointer-events: none;
  }

  .policy-section.is-visible .policy-decision {
    opacity: 1;
    transform: translateY(0);
    transition-delay: .42s;
  }

  .policy-decision-title {
    position: relative;
    z-index: 1;
    margin: 0;
    font-size: clamp(18px, 1.55vw, 22px);
    line-height: 1.6;
    font-weight: 800;
    letter-spacing: -.035em;
    white-space: nowrap;
  }

  .policy-decision-copy {
    position: relative;
    z-index: 1;
    margin: 0;
    color: rgba(255,255,255,.9);
    font-size: clamp(16px, 1.35vw, 19px);
    line-height: 2.08;
    font-weight: 500;
  }

  .policy-decision-stance {
    color: #ffe36e;
    font-weight: 900;
    text-shadow: 0 0 18px rgba(255, 221, 72, .14);
  }

  @media (max-width: 900px) {
    .policy-section {
      padding: 96px 22px 110px;
    }

    .policy-lead {
      grid-template-columns: 1fr;
      min-height: 0;
      border-radius: 2px 52px 2px 2px;
    }

    .policy-lead-copy {
      min-height: 320px;
      padding: 52px 32px 62px;
    }

    .policy-lead-copy::after {
      right: 0;
      bottom: 40px;
      width: 76%;
    }

    .policy-lead-media,
    .policy-lead-photo {
      min-height: 0;
      aspect-ratio: 16 / 10;
    }

    .policy-lead-media::before {
      background: linear-gradient(180deg, rgba(237,246,239,.5), transparent 28%, rgba(14,54,32,.12));
    }

    .policy-list {
      margin-top: 66px;
    }

    .policy-unit {
      grid-template-columns: 1fr;
      gap: 9px;
      padding: 28px 4px 31px;
    }

    .policy-category {
      margin-top: 0;
    }

    .policy-unit.is-upcoming {
      grid-template-columns: 1fr;
      gap: 18px;
      padding: 26px 24px;
    }

    .policy-unit.is-upcoming .policy-description {
      justify-self: start;
    }

    .policy-decision {
      grid-template-columns: 1fr;
      gap: 24px;
      margin-top: 70px;
      padding: 42px 30px 46px;
      border-radius: 2px 44px 2px 2px;
    }

    .policy-decision-title {
      white-space: normal;
    }
  }

  @media (hover: none) {
    .policy-unit:not(.is-upcoming):hover {
      background: transparent;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .policy-lead-copy::after,
    .policy-title-line,
    .policy-unit,
    .policy-unit::before,
    .policy-decision {
      opacity: 1;
      transform: none;
      transition: none !important;
    }

  }

  /* ===== Section 6: 再起動・繋ぐ・護る ===== */
  .commitment-section {
    position: relative;
    overflow: hidden;
    padding: 148px 24px 156px;
    background:
      radial-gradient(circle at 92% 10%, rgba(143, 209, 95, .2), transparent 27%),
      linear-gradient(180deg, #f5faf6 0%, #fff 64%);
  }

  .commitment-section::before,
  .commitment-section::after {
    content: none !important;
    display: none !important;
    border: 0 !important;
  }

  .commitment-section::before {
    top: 122px;
    right: -13vw;
    width: 66vw;
    height: 290px;
    border: 1px solid rgba(8, 121, 63, .11);
    border-left-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-8deg);
  }

  .commitment-section::after {
    left: -8vw;
    bottom: 86px;
    width: 46vw;
    height: 150px;
    border-top: 1px solid rgba(143, 209, 95, .22);
    border-radius: 50%;
    transform: rotate(5deg);
  }

  .commitment-inner {
    position: relative;
    z-index: 1;
    width: min(1180px, 100%);
    margin: 0 auto;
  }

  .commitment-heading {
    position: relative;
    align-self: center;
    justify-self: center;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0 !important;
    box-shadow: none !important;
    text-decoration: none !important;
  }

  .commitment-heading::after {
    display: none;
  }

  .commitment-title {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: clamp(18px, 2.6vw, 38px);
    margin: 0;
    width: 100%;
    padding-bottom: clamp(76px, 7vw, 104px);
    aspect-ratio: auto;
    color: #203029;
    line-height: 1.04;
    font-weight: 900;
    letter-spacing: -.065em;
    border: 0 !important;
    box-shadow: none !important;
    text-decoration: none !important;
  }

  /* 3語の背後に置く楕円線 */
  .commitment-title::after {
    display: none;
  }

  .commitment-title::before {
    display: none;
  }

  .commitment-orbit {
    position: absolute;
    z-index: 0;
    top: calc(100% - 38px);
    left: 12%;
    right: 12%;
    height: 76px;
    border: 2px solid rgba(8, 121, 63, .42);
    border-radius: 50%;
    transform: translateY(-50%) rotate(-18deg);
    pointer-events: none;
  }

  .commitment-orbit-light {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 0 8px 3px rgba(255, 255, 255, .9), 0 0 20px 6px rgba(255, 255, 255, .55);
    offset-path: ellipse(50% 50% at 50% 50%);
    offset-rotate: 0deg;
    animation: commitment-orbit-run 2.8s linear infinite;
  }

  @keyframes commitment-orbit-run {
    to { offset-distance: 100%; }
  }

  .commitment-word {
    position: relative;
    z-index: 1;
    display: inline-block;
    width: auto;
    padding: 0;
    background: none;
    white-space: nowrap;
    opacity: 1;
    font-size: clamp(38px, 3.8vw, 54px);
    transition: opacity .82s ease, transform .82s ease;
  }

  .commitment-word:nth-of-type(2) {
    color: #203029;
  }

  .commitment-word:nth-of-type(3) {
    color: var(--green);
  }

  .commitment-word:nth-of-type(4) {
    color: var(--green);
  }

  .commitment-motion-ready .commitment-title::before {
    display: none;
  }

  @keyframes commitment-word-in {
    from {
      opacity: 0;
      transform: translateY(10px);
    }
    to {
      opacity: 1;
      transform: translateY(0);
    }
  }

  /* セクションが画面内に入った時だけ再生 */
  .commitment-motion-ready .commitment-word {
    opacity: 0;
    transform: translateY(10px);
    animation: none;
  }

  .commitment-motion-ready .commitment-section.is-visible .commitment-word {
    opacity: 1;
    transform: translateY(0);
    animation: commitment-word-in .9s cubic-bezier(.2, .75, .2, 1) both;
  }

  .commitment-motion-ready .commitment-section.is-visible .commitment-word:nth-of-type(2) { animation-delay: .08s; }
  .commitment-motion-ready .commitment-section.is-visible .commitment-word:nth-of-type(3) { animation-delay: .22s; }
  .commitment-motion-ready .commitment-section.is-visible .commitment-word:nth-of-type(4) { animation-delay: .36s; }

  .commitment-section.is-visible .commitment-word:nth-of-type(2) { transition-delay: .08s; }
  .commitment-section.is-visible .commitment-word:nth-of-type(3) { transition-delay: .22s; }
  .commitment-section.is-visible .commitment-word:nth-of-type(4) { transition-delay: .36s; }

  .commitment-content {
    display: block;
  }

  .commitment-media {
    position: relative;
    overflow: hidden;
    aspect-ratio: 16 / 9;
    width: 100%;
    margin: 0 0 clamp(62px, 7vw, 90px);
    border-radius: 2px 72px 2px 2px;
    background: #dce9df;
    box-shadow: 0 26px 70px rgba(28, 72, 45, .16);
    opacity: 1;
    transform: translateY(0);
    transition:
      opacity .9s .24s ease,
      transform 1s .24s cubic-bezier(.2, .75, .2, 1);
  }

  .commitment-section.is-visible .commitment-media {
    opacity: 1;
    transform: translateY(0);
  }

  .commitment-lower {
    display: grid;
    grid-template-columns: minmax(0, 1.18fr) minmax(390px, .82fr);
    gap: clamp(52px, 6.5vw, 88px);
    align-items: center;
  }

  .commitment-video-link {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    cursor: pointer;
  }

  .commitment-video-frame {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
  }


  .commitment-video-link::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 54%, rgba(9, 40, 23, .22));
    transition: background .3s ease;
  }

  .commitment-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .7s cubic-bezier(.2, .75, .2, 1);
  }

  .commitment-play {
    position: absolute;
    z-index: 2;
    top: 50%;
    left: 50%;
    display: grid;
    place-items: center;
    width: 82px;
    height: 82px;
    border: 1px solid rgba(255, 255, 255, .78);
    border-radius: 50%;
    background: rgba(255, 255, 255, .92);
    color: var(--green);
    box-shadow: 0 12px 35px rgba(7, 45, 24, .22);
    transform: translate(-50%, -50%);
    transition:
      background-color .3s ease,
      color .3s ease,
      transform .3s ease;
  }

  .commitment-play svg {
    width: 27px;
    height: 31px;
    margin-left: 4px;
  }

  .commitment-video-link:hover .commitment-image,
  .commitment-video-link:focus-visible .commitment-image {
    transform: scale(1.025);
  }

  .commitment-video-link:hover .commitment-play,
  .commitment-video-link:focus-visible .commitment-play {
    background: var(--green);
    color: #fff;
    transform: translate(-50%, -50%) scale(1.06);
  }

  .commitment-video-link:focus-visible {
    outline: 3px solid #ffe36e;
    outline-offset: 5px;
  }

  .commitment-statement {
    position: relative;
    padding: 14px 0 14px clamp(28px, 3.2vw, 46px);
    opacity: 1;
    transform: translateY(0);
    transition:
      opacity .86s .4s ease,
      transform .96s .4s cubic-bezier(.2, .75, .2, 1);
  }

  .commitment-statement::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 3px;
    background: linear-gradient(180deg, var(--green), rgba(143, 209, 95, .18));
  }

  .commitment-section.is-visible .commitment-statement {
    opacity: 1;
    transform: translateY(0);
  }

  .commitment-motion-ready .commitment-media {
    opacity: 0;
    transform: translateY(24px);
  }

  .commitment-motion-ready .commitment-statement {
    opacity: 0;
    transform: translateY(22px);
  }

  .commitment-motion-ready .commitment-section.is-visible .commitment-media,
  .commitment-motion-ready .commitment-section.is-visible .commitment-statement {
    opacity: 1;
    transform: translate(0);
  }

  .commitment-copy {
    margin: 0;
    color: #34423a;
    font-size: clamp(17px, 1.5vw, 20px);
    line-height: 2.12;
    font-weight: 500;
    letter-spacing: .015em;
  }

  .commitment-emphasis {
    color: var(--green);
    font-weight: 900;
  }

  .commitment-signature {
    margin: 34px 0 0;
    color: #203029;
    font-size: clamp(20px, 1.8vw, 25px);
    line-height: 1.5;
    font-weight: 800;
    letter-spacing: .08em;
    text-align: right;
  }

  @media (max-width: 900px) {
    .commitment-section {
      padding: 100px 22px 112px;
    }

    .commitment-heading {
      width: 100%;
      padding: 0;
      order: 1;
    }

    .commitment-title {
      width: 100%;
      gap: 18px;
      flex-wrap: wrap;
    }

    .commitment-content {
      display: block;
    }

    .commitment-lower {
      grid-template-columns: 1fr;
      gap: 48px;
    }

    .commitment-media {
      margin-bottom: 56px;
      border-radius: 2px 46px 2px 2px;
    }

    .commitment-statement {
      padding-left: 28px;
      order: 2;
    }
  }

  @media (max-width: 560px) {
    .commitment-title {
      width: 100%;
      gap: 10px;
      flex-wrap: nowrap;
    }

    .commitment-title::before {
      display: none;
    }

    .commitment-word:nth-of-type(2) {
      font-size: 30px;
    }

    .commitment-word:nth-of-type(3),
    .commitment-word:nth-of-type(4) {
      font-size: 30px;
    }

    .commitment-media {
      aspect-ratio: 16 / 9;
      border-radius: 2px 38px 2px 2px;
    }

    .commitment-play {
      width: 68px;
      height: 68px;
    }

    .commitment-play svg {
      width: 23px;
      height: 27px;
    }

    .commitment-copy {
      font-size: 16px;
      line-height: 2;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .commitment-title::before,
    .commitment-word,
    .commitment-media,
    .commitment-statement,
    .commitment-image,
    .commitment-play,
    .commitment-orbit-light {
      opacity: 1;
      transform: none;
      animation: none !important;
      transition: none !important;
    }

    .commitment-play {
      transform: translate(-50%, -50%);
    }

  }

  /* 後援会 入会申込フォーム */
  .support-section {
    position: relative;
    overflow: hidden;
    padding: clamp(96px, 10vw, 150px) 24px clamp(108px, 11vw, 164px);
    background:
      radial-gradient(circle at 88% 8%, rgba(143, 209, 95, .20), transparent 30%),
      linear-gradient(135deg, var(--green-deep), var(--green) 58%, #0b7040);
  }

  .support-section::before {
    content: "";
    position: absolute;
    top: 92px;
    right: -10vw;
    width: min(58vw, 820px);
    height: min(38vw, 440px);
    border: 1px solid rgba(255, 255, 255, .13);
    border-left-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-13deg);
    pointer-events: none;
  }

  .support-inner {
    position: relative;
    z-index: 1;
    width: min(820px, 100%);
    margin: 0 auto;
  }

  .support-heading {
    margin-bottom: clamp(28px, 4vw, 42px);
    text-align: center;
  }

  .support-kicker {
    margin: 0 0 16px;
    color: #c9e9b5;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: .1em;
  }

  .support-kicker::after {
    content: "";
    display: block;
    width: 48px;
    height: 2px;
    margin: 14px auto 0;
    background: linear-gradient(90deg, var(--green-light), var(--green));
  }

  .support-title {
    margin: 0;
    color: #fff;
    font-size: clamp(32px, 4.6vw, 54px);
    font-weight: 900;
    line-height: 1.35;
    letter-spacing: -.025em;
    min-width: 0;
    overflow-wrap: anywhere;
    text-wrap: balance;
  }

  .support-title-break {
    display: none;
  }

  .support-form {
    display: grid;
    gap: 18px;
    margin: 0;
    padding: clamp(28px, 4vw, 44px);
    border: 1px solid rgba(8, 121, 63, .12);
    border-radius: 2px 68px 2px 2px;
    background: #fff;
    color: var(--ink);
    box-shadow: 0 22px 64px rgba(28, 72, 45, .10);
  }

  .support-form-title {
    margin: 0;
    color: var(--green-deep);
    font-size: 21px;
    font-weight: 900;
  }

  .support-form-note {
    margin: -10px 0 0;
    color: #65746a;
    font-size: 13px;
    line-height: 1.7;
  }

  .support-field {
    display: grid;
    gap: 7px;
  }

  .support-field label {
    color: #34423a;
    font-size: 14px;
    font-weight: 800;
  }

  .support-field input,
  .support-field select {
    width: 100%;
    min-width: 0;
    min-height: 50px;
    padding: 12px 14px;
    border: 1px solid #cbd8ce;
    border-radius: 8px;
    background: #fbfdfb;
    color: var(--ink);
    font: inherit;
    font-size: 16px;
  }

  .support-field input:focus-visible,
  .support-field select:focus-visible,
  .support-inline-button:focus-visible,
  .support-submit:focus-visible {
    outline: 3px solid #8fd15f;
    outline-offset: 2px;
  }

  .support-field input[aria-invalid="true"] {
    border-color: #b42318;
  }

  .support-field-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    align-items: stretch;
  }

  .support-inline-button {
    min-height: 50px;
    padding: 0 16px;
    border: 1.5px solid var(--green);
    border-radius: 10px;
    background: #fff;
    color: var(--green);
    font: inherit;
    font-weight: 800;
    white-space: nowrap;
    cursor: pointer;
  }

  .support-inline-button:hover {
    background: rgba(24, 130, 77, .06);
  }

  .support-submit:hover {
    background: var(--green-deep);
  }

  .support-field-hint,
  .support-field-status {
    margin: 0;
    font-size: 13px;
    line-height: 1.7;
  }

  .support-field-hint {
    color: #65746a;
  }

  .support-field-status {
    color: #b42318;
  }

  .support-field-status:empty,
  .support-form-status:empty {
    display: none;
  }

  .support-submit {
    min-height: 56px;
    margin-top: 4px;
    padding: 14px 20px;
    border: 0;
    border-radius: 12px;
    background: var(--green);
    color: #fff;
    font: inherit;
    font-size: 16px;
    font-weight: 900;
    cursor: pointer;
    box-shadow: 0 10px 22px rgba(8, 121, 63, .16);
    transition: background-color .2s ease, transform .2s ease, box-shadow .2s ease;
  }

  .support-submit:active {
    transform: translateY(1px);
  }

  .support-form-status {
    min-height: 1.4em;
    margin: 0;
    color: var(--green-deep);
    font-size: 14px;
    font-weight: 800;
    line-height: 1.7;
  }

  .support-extras {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin-top: clamp(22px, 3vw, 32px);
  }

  .support-extra-card {
    position: relative;
    min-width: 0;
    min-height: 218px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: 18px;
    overflow: hidden;
    padding: clamp(20px, 2.6vw, 28px);
    border: 1px solid var(--support-card-line);
    border-radius: 2px 34px 2px 2px;
    background: linear-gradient(150deg, var(--support-card-background), var(--support-card-soft));
    color: var(--ink);
    box-shadow: var(--support-card-shadow);
    text-align: left;
  }

  .support-extra-heading {
    display: flex;
    align-items: center;
    gap: 14px;
    min-width: 0;
  }

  .support-extra-heading > div {
    min-width: 0;
  }

  .support-extra-mark {
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border-radius: 15px 15px 15px 4px;
    background: var(--support-mark-background);
    color: var(--green);
  }

  .support-sns-mark svg {
    width: 24px;
    height: 24px;
  }

  .support-extra-title {
    margin: 0;
    color: var(--green-deep);
    font-size: 18px;
    font-weight: 900;
    letter-spacing: .015em;
  }

  .support-extra-note {
    margin: 5px 0 0;
    color: var(--support-muted);
    font-size: 12px;
    line-height: 1.7;
  }

  .support-social-list {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    align-items: start;
    gap: 8px;
    width: 100%;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .support-social-list li {
    display: flex;
    min-width: 0;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    text-align: center;
  }

  .support-social-icon {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    overflow: hidden;
    border-radius: 12px;
    background: transparent;
    box-shadow: var(--support-icon-shadow);
  }

  .support-social-icon img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: inherit;
  }

  .support-social-name {
    color: var(--ink);
    font-size: 11px;
    font-weight: 800;
    line-height: 1.2;
    white-space: nowrap;
  }

  .support-donation-content {
    display: grid;
    justify-items: center;
    gap: 8px;
    width: 100%;
    text-align: center;
  }

  .support-donation-mark {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background: var(--support-highlight-background);
    color: var(--green);
  }

  .support-donation-mark img {
    display: block;
    width: 29px;
    height: 29px;
    object-fit: contain;
  }

  .support-donation-content .support-extra-note {
    max-width: 30em;
    margin-top: 0;
  }

  .site-footer {
    position: relative;
    overflow: hidden;
    padding: 38px clamp(20px, 4vw, 56px) 20px;
    border-top: 1px solid var(--footer-rule);
    background:
      radial-gradient(ellipse at 88% 0%, var(--footer-glow), transparent 34%),
      linear-gradient(180deg, var(--green-deep), var(--footer-background) 42%, var(--footer-background-deep));
    color: var(--footer-text);
  }

  .site-footer::before {
    content: "";
    position: absolute;
    top: -405px;
    left: 72%;
    width: min(960px, 128vw);
    height: 480px;
    border: 1px solid var(--footer-rule);
    border-radius: 50%;
    opacity: .42;
    transform: translateX(-50%) rotate(-9deg);
    pointer-events: none;
  }

  .site-footer-inner {
    position: relative;
    z-index: 1;
    width: min(1040px, 100%);
    margin: 0 auto;
  }

  .site-footer-main {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 22px;
    align-items: start;
    padding-bottom: 22px;
  }

  .site-footer-brand {
    min-width: 0;
    display: grid;
    gap: 5px;
  }

  .site-footer-name {
    margin: 3px 0 0;
    color: var(--footer-text-strong);
    font-size: clamp(32px, 3.7vw, 42px);
    font-weight: 900;
    letter-spacing: .08em;
    line-height: 1.2;
    overflow-wrap: anywhere;
  }

  .site-footer-message {
    margin: 0;
    color: var(--footer-accent);
    font-size: 17px;
    font-weight: 800;
    letter-spacing: .14em;
    line-height: 1.5;
  }

  .site-footer-contact {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    gap: 4px 18px;
    min-width: 0;
    padding: 14px 0 0;
    border: 0;
    border-top: 1px solid var(--footer-rule);
    border-radius: 0;
    background: transparent;
    font-size: 12px;
    font-style: normal;
    line-height: 1.7;
  }

  .site-footer-contact-label {
    grid-column: 1;
    margin: 0 0 1px;
    color: var(--footer-accent);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .1em;
  }

  .site-footer-org {
    grid-column: 2;
    margin: 0;
    color: var(--footer-text-strong);
    font-weight: 800;
  }

  .site-footer-address {
    grid-column: 1 / -1;
    margin: 0;
    color: var(--footer-text);
  }

  .site-footer-phone {
    grid-column: 1;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0 8px;
    margin: 1px 0 0;
    color: var(--footer-text);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .02em;
  }

  .site-footer-phone span {
    color: var(--footer-text-strong);
    font-size: 13px;
    letter-spacing: .02em;
    white-space: nowrap;
  }

  .site-footer-mail {
    grid-column: 2;
    margin: 1px 0 0;
    color: var(--footer-text);
  }

  .site-footer-bottom {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px 24px;
    align-items: center;
    padding-top: 13px;
    border-top: 1px solid var(--footer-rule);
  }

  .site-footer-socials {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px 15px;
    margin: 0;
    padding: 0;
    color: var(--footer-text);
    font-size: 11px;
    line-height: 1.6;
    list-style: none;
  }

  .site-footer-socials li {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
  }

  .site-footer-social-icon {
    display: inline-grid;
    place-items: center;
    width: 15px;
    height: 15px;
    color: var(--footer-accent);
    opacity: .82;
  }

  .site-footer-social-icon img {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 3px;
    object-fit: contain;
  }

  .site-footer-legal {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 5px 12px;
    color: var(--footer-text);
    font-size: 11px;
    line-height: 1.6;
  }

  .site-footer-legal span {
    white-space: nowrap;
  }

  .site-footer-legal a {
    color: inherit;
    text-underline-offset: .25em;
    padding-block: 8px;
  }

  .site-footer-legal a:hover {
    color: var(--footer-text-strong);
  }

  .site-footer-legal a:focus-visible {
    outline: 2px solid var(--footer-accent);
    outline-offset: 4px;
  }

  .site-footer-badge {
    padding: 0;
    color: var(--footer-accent);
    font-weight: 800;
    white-space: nowrap;
  }

  @media (max-width: 640px) {
    .site-footer-bottom {
      grid-template-columns: minmax(0, 1fr);
      gap: 8px;
    }

    .site-footer-legal {
      justify-content: flex-start;
    }
  }

  @media (max-width: 640px) {
    .support-extras {
      grid-template-columns: minmax(0, 1fr);
    }
  }

  @media (max-width: 560px) {
    .support-section {
      padding: 82px 18px 100px;
    }

    .support-section::before {
      top: 74px;
      right: -42vw;
      width: 92vw;
      height: 72vw;
    }

    .support-title {
      font-size: clamp(26px, 8.4vw, 38px);
    }

    .support-title-break {
      display: block;
    }

    .support-form {
      gap: 16px;
      padding: 24px 18px;
      border-radius: 2px 42px 2px 2px;
    }

    .support-field-row {
      grid-template-columns: minmax(0, 1fr) auto;
      gap: 6px;
    }

    .support-inline-button {
      padding: 0 11px;
      font-size: 14px;
    }

    .support-extras {
      grid-template-columns: minmax(0, 1fr);
    }

    .support-extra-card {
      min-height: 0;
      padding: 20px 18px;
      border-radius: 2px 28px 2px 2px;
    }

    .support-social-icon {
      width: 42px;
      height: 42px;
      border-radius: 13px 13px 13px 4px;
    }

    .support-social-name {
      font-size: 10px;
    }

    .site-footer {
      padding: 30px 20px 16px;
    }

    .site-footer-contact {
      grid-template-columns: max-content minmax(0, 1fr);
      gap: 4px;
    }

    .site-footer-name {
      font-size: clamp(30px, 8vw, 38px);
    }

    .site-footer-legal {
      gap: 5px 12px;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .support-submit { transition: none; }
  }

  /* v35 final layout override: add breathing room around the two-line copy */
  .commitment-title {
    display: flex;
    align-items: center;
    justify-content: center;
    padding-bottom: 0;
  }

  .commitment-orbit {
    top: 50%;
    left: 3%;
    right: 3%;
    height: 185%;
  }

  .commitment-word-main {
    color: var(--green);
    font-size: clamp(46px, 4.6vw, 66px);
  }

  .commitment-words {
    gap: clamp(14px, 1.5vw, 24px);
  }

  .commitment-word-sub {
    color: #203029;
    font-size: clamp(36px, 3.7vw, 52px);
  }

  /* Header styling is intentionally scoped so it cannot constrain in-page section headings. */
  .commitment-heading {
    height: auto;
    min-height: 0;
    padding: 0;
    background: transparent;
    backdrop-filter: none;
  }

  .commitment-title {
    min-height: clamp(150px, 14vw, 190px);
    padding: 0;
    align-items: center;
    overflow-wrap: anywhere;
    text-wrap: balance;
  }

  .commitment-orbit {
    top: 50%;
    left: 5%;
    right: 5%;
    height: 100%;
  }

  .commitment-words {
    gap: 8px;
  }

  @media (max-width: 900px) {
    .commitment-title {
      min-height: clamp(140px, 22vw, 176px);
      flex-wrap: nowrap;
      gap: 0;
    }

    .commitment-orbit {
      left: 8%;
      right: 8%;
      height: 86%;
    }

    .commitment-lower {
      gap: 36px;
    }

    .commitment-media {
      margin-bottom: 40px;
    }
  }

  @media (max-width: 560px) {
    .commitment-title {
      min-height: 126px;
    }

    .commitment-title .commitment-word-main {
      font-size: clamp(31px, 9.5vw, 42px);
    }

    .commitment-title .commitment-subwords .commitment-word-sub {
      font-size: clamp(26px, 8vw, 34px);
    }

    .commitment-words {
      gap: 4px;
    }

    .commitment-subwords {
      gap: clamp(22px, 7vw, 34px);
    }

    .commitment-orbit {
      height: 90%;
    }

    .commitment-media {
      margin-bottom: 34px;
    }

    .commitment-lower {
      gap: 32px;
    }
  }
