        /* ==========================================================
   RESET & BASE
   ========================================================== */
        *,
        *::before,
        *::after {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        html {
            -webkit-text-size-adjust: 100%;
        }

        body {
            background: #000;
            color: #fff;
            font-family: 'Noto Sans JP', -apple-system, sans-serif;
            font-weight: 400;
            overflow-x: clip;
            line-height: 1.9;
            -webkit-font-smoothing: antialiased;
        }

        html.has-first-visit-loader body {
            overflow: hidden;
            height: 100svh;
        }

        html:not(.has-first-visit-loader):not(.loader-complete) body {
            animation: sitePageFadeIn .35s ease-out both;
        }

        @keyframes sitePageFadeIn {
            from {
                opacity: 0;
            }

            to {
                opacity: 1;
            }
        }

        .service-page-main {
            min-height: 100svh;
        }

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

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

        ul,
        ol {
            list-style: none;
        }

        button {
            font: inherit;
            background: none;
            border: none;
            color: inherit;
            cursor: pointer;
        }

        svg {
            display: block;
        }

        .svg-symbol-defs {
            position: absolute;
        }

        ::selection {
            background: #fff;
            color: #000;
        }

        /* ==========================================================
   TOKENS
   ========================================================== */
        :root {
            --black: #000000;
            --white: #ffffff;
            --line-w: rgba(255, 255, 255, .22);
            --line-b: rgba(0, 0, 0, .16);
            --dim-w: rgba(255, 255, 255, .62);
            --dim-b: rgba(0, 0, 0, .6);
            --ease-out: cubic-bezier(.16, .84, .44, 1);
            --ease-in-out: cubic-bezier(.83, 0, .17, 1);
            --header-h: 84px;
            --notch: 22px;
            --wrap: 1360px;
        }

        .font-en {
            font-family: 'Oswald', sans-serif;
        }

        section,
        footer {
            scroll-margin-top: var(--header-h);
        }

        /* ==========================================================
   TYPE SCALE
   ========================================================== */
        .h-display {
            font-family: 'Oswald', sans-serif;
            font-weight: 700;
            text-transform: uppercase;
            line-height: .86;
            letter-spacing: -.01em;
        }

        .h-jp {
            font-family: 'Noto Sans JP', sans-serif;
            font-weight: 800;
            line-height: 1.35;
            letter-spacing: .01em;
        }

        .section-subtitle {
            margin-top: 1.4em;
            font-size: .9rem;
            font-weight: 700;
            letter-spacing: .08em;
        }

        .body-lead {
            font-size: clamp(1rem, 1.6vw, 1.2rem);
            line-height: 2.05;
            font-weight: 400;
        }

        .body-text {
            font-size: .98rem;
            line-height: 2;
            font-weight: 400;
        }

        .dim {
            opacity: .68;
        }

        /* ==========================================================
   LAYOUT UTILITIES
   ========================================================== */
        .wrap {
            max-width: var(--wrap);
            margin: 0 auto;
            padding: 0 clamp(24px, 5vw, 72px);
        }

        .grid-2 {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: clamp(28px, 5vw, 80px);
        }

        .section-pad {
            padding: clamp(96px, 13vw, 180px) 0;
        }

        .section-pad-top {
            padding-top: clamp(96px, 13vw, 180px);
        }

        .section-pad-bot {
            padding-bottom: clamp(96px, 13vw, 180px);
        }

        .on-dark {
            background: #000;
            color: #fff;
        }

        .on-light {
            background: #fff;
            color: #000;
        }

        .rel {
            position: relative;
        }

        .of-hidden {
            overflow: hidden;
        }

        /* notch / cut-corner card shape — the recurring "route" motif */
        .notched {
            clip-path: polygon(0 0,
                    calc(100% - var(--notch)) 0,
                    100% var(--notch),
                    100% 100%,
                    var(--notch) 100%,
                    0 calc(100% - var(--notch)));
        }

        .line-mask {
            overflow: hidden;
            display: block;
        }

        .line-mask>* {
            display: block;
            will-change: transform;
        }

        .text-reveal-word {
            display: inline-block;
        }

        .service-display[data-text-reveal-ready="true"] {
            flex-direction: column;
            align-items: flex-start;
            justify-content: flex-end;
        }

        .service-display[data-text-reveal-ready="true"]>br {
            display: none;
        }

        .opt-trim-end {
            margin-right: var(--opt-trim, -0.55em);
            display: inline-block;
        }

        .opt-trim-start {
            margin-left: var(--opt-trim, -0.4em);
            display: inline-block;
        }

        .hero-title,
        .hero-sub,
        .about-message .h-jp {
            font-feature-settings: "palt" 1;
        }

        /* buttons */
        .btn {
            display: inline-flex;
            align-items: center;
            gap: .9em;
            font-family: 'Oswald', sans-serif;
            font-weight: 600;
            font-size: .82rem;
            letter-spacing: .14em;
            text-transform: uppercase;
            padding: 1.1em 1.8em;
            border: 1px solid currentColor;
            position: relative;
            overflow: hidden;
            transition: color .45s var(--ease-out);
        }

        .btn::before {
            content: '';
            position: absolute;
            inset: 0;
            background: currentColor;
            transform: scaleX(0);
            transform-origin: left;
            transition: transform .45s var(--ease-out);
            z-index: 0;
        }

        .btn span {
            position: relative;
            z-index: 1;
            transition: color .45s var(--ease-out);
        }

        .btn:hover::before {
            transform: scaleX(1);
        }

        .on-dark .btn {
            color: #fff;
        }

        .on-dark .btn:hover span {
            color: #000;
        }

        .on-light .btn {
            color: #000;
        }

        .on-light .btn:hover span {
            color: #fff;
        }

        .btn-arrow {
            transition: transform .45s var(--ease-out);
        }

        .btn:hover .btn-arrow {
            transform: translateX(6px);
        }

        /* road glyph (signature mark) — presentation props set on the <svg> itself
   so they inherit correctly through the <use> shadow instance */
        .road-mark {
            fill: none;
            stroke: currentColor;
            stroke-width: 22;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        /* marquee ticker — big, bold, dynamic */
        .marquee {
            overflow: hidden;
            white-space: nowrap;
        }

        .on-light .marquee {
            border-color: var(--line-b);
        }

        .marquee__track {
            display: inline-flex;
            align-items: center;
            animation: marquee 20s linear infinite;
        }

        .marquee__track span {
            font-family: 'Oswald', sans-serif;
            font-weight: 700;
            font-size: clamp(2.2rem, 6.4vw, 4.8rem);
            line-height: 1;
            letter-spacing: -.01em;
            text-transform: uppercase;
            padding: .5em .6em;
            display: inline-flex;
            align-items: center;
            gap: .6em;
        }

        @keyframes marquee {
            from {
                transform: translateX(0);
            }

            to {
                transform: translateX(-50%);
            }
        }

        /* image reveal (scale-in mask) */
        .img-box {
            overflow: hidden;
            position: relative;
        }

        .img-box img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            filter: contrast(1.08);
            transform: scale(1.18);
        }

        /* ==========================================================
   LOADER
   ========================================================== */
        #loader {
            position: fixed;
            inset: 0;
            z-index: 9999;
            background: transparent;
            display: none;
            align-items: center;
            justify-content: center;
        }

        html.has-first-visit-loader #loader {
            display: flex;
        }

        .loader-panel {
            position: absolute;
            left: 0;
            height: 50%;
            width: 100%;
            background: #000;
            z-index: 2;
        }

        .loader-panel--top {
            top: 0;
        }

        .loader-panel--bottom {
            bottom: 0;
        }

        .loader-road {
            position: absolute;
            top: 50%;
            left: 0;
            width: 100%;
            height: 3px;
            background: #fff;
            transform: translateY(-50%) scaleX(0);
            transform-origin: center;
            z-index: 3;
        }

        .loader-copy {
            position: relative;
            z-index: 4;
            text-align: center;
            padding: 0 24px;
            width: 100%;
        }

        .loader-line {
            position: absolute;
            left: 0;
            right: 0;
            top: 50%;
            transform: translateY(-50%);
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: .5em;
        }

        .loader-line span {
            font-family: 'Noto Sans JP', sans-serif;
            font-weight: 800;
            font-size: clamp(1.5rem, 4.4vw, 2.75rem);
            color: #fff;
            opacity: 0;
            transform: translateY(36px);
        }

        .loader-line--2 .accent {
            font-size: clamp(1.9rem, 6vw, 3.6rem);
        }

        /* ==========================================================
   HEADER / NAV
   ========================================================== */
        .site-header {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            z-index: 900;
            height: var(--header-h);
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 clamp(20px, 4vw, 56px);
            pointer-events: none;
        }

        .logo {
            pointer-events: auto;
            display: flex;
            align-items: center;
            transition: opacity .3s ease, visibility .3s ease;
        }

        .logo-image-frame {
            position: relative;
            display: block;
            flex: 0 0 auto;
            width: clamp(130px, 14vw, 180px);
            height: 30px;
            overflow: hidden;
        }

        .logo-image {
            position: absolute;
            top: 50%;
            left: 0;
            width: 100%;
            height: auto;
            display: block;
            transform: translateY(-50%);
            transition: opacity .3s ease;
        }

        .logo-image--black {
            opacity: 0;
        }

        .site-header.is-on-light .logo-image--white {
            opacity: 0;
        }

        .site-header.is-on-light .logo-image--black {
            opacity: 1;
        }

        .logo .road-mark {
            width: 20px;
            height: 20px;
        }

        .logo small {
            display: block;
            font-family: 'Noto Sans JP', sans-serif;
            font-weight: 400;
            font-size: .6rem;
            letter-spacing: .14em;
            opacity: .75;
            margin-top: .15em;
        }

        .nav-toggle {
            pointer-events: auto;
            width: 52px;
            height: 52px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 6px;
        }

        .nav-toggle span {
            display: block;
            width: 26px;
            height: 2px;
            background: #fff;
            transition: transform .4s var(--ease-out), opacity .4s var(--ease-out), background-color .3s ease;
        }

        .nav-toggle.is-on-light span {
            background: #000;
        }

        .nav-open .nav-toggle span {
            background: #fff;
        }

        .nav-open .nav-toggle span:nth-child(1) {
            transform: translateY(8px) rotate(45deg);
        }

        .nav-open .nav-toggle span:nth-child(2) {
            opacity: 0;
        }

        .nav-open .nav-toggle span:nth-child(3) {
            transform: translateY(-8px) rotate(-45deg);
        }

        body.nav-open {
            overflow: hidden;
        }

        .nav-open .site-header .logo {
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
        }

        .overlay-nav {
            position: fixed;
            inset: 0;
            z-index: 800;
            background: #000;
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
            padding: max(var(--header-h), clamp(24px, 6svh, 80px)) clamp(24px, 6vw, 80px) clamp(24px, 6svh, 80px);
            overflow-y: auto;
            overscroll-behavior: contain;
            transform: translateX(100%);
            transition: transform .7s var(--ease-in-out);
        }

        .nav-open .overlay-nav {
            transform: translateX(0);
        }

        .overlay-nav ul {
            display: flex;
            flex-direction: column;
            flex: 0 0 auto;
            width: 100%;
            margin-block: auto;
            gap: clamp(12px, 2svh, 22px);
        }

        .overlay-nav li {
            overflow: hidden;
        }

        .overlay-nav a {
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            gap: .1em;
            font-family: 'Oswald', sans-serif;
            font-weight: 600;
            font-size: clamp(2rem, min(7vw, 8svh), 4.4rem);
            line-height: 1;
            text-transform: uppercase;
            color: #fff;
            transform: translateY(110%);
            transition: opacity .3s;
        }

        .nav-open .overlay-nav a {
            animation: navIn .7s var(--ease-out) forwards;
        }

        .overlay-nav li:nth-child(1) a {
            animation-delay: .08s;
        }

        .overlay-nav li:nth-child(2) a {
            animation-delay: .14s;
        }

        .overlay-nav li:nth-child(3) a {
            animation-delay: .20s;
        }

        .overlay-nav li:nth-child(4) a {
            animation-delay: .26s;
        }

        .overlay-nav li:nth-child(5) a {
            animation-delay: .32s;
        }

        .overlay-nav li:nth-child(6) a {
            animation-delay: .38s;
        }

        @keyframes navIn {
            to {
                transform: translateY(0);
            }
        }

        .overlay-nav a:hover {
            opacity: .55;
        }

        .overlay-nav .nav-label-en {
            font: inherit;
        }

        .overlay-nav .nav-label-jp {
            color: #fff;
            font-family: 'Noto Sans JP', sans-serif;
            font-size: .26em;
            font-weight: 800;
            line-height: 1.2;
            letter-spacing: .06em;
            text-transform: none;
        }

        /* ==========================================================
   HERO
   ========================================================== */
        .hero {
            position: relative;
            min-height: 100svh;
            display: flex;
            align-items: flex-end;
            overflow: hidden;
            clip-path: polygon(0 0, 100% 0, 100% 100%, 0 97.5%);
        }

        .hero-bg {
            position: absolute;
            inset: 0;
            z-index: 0;
        }

        .hero-bg-img {
            position: absolute;
            top: -8%;
            left: 0;
            width: 100%;
            height: 116%;
            object-fit: cover;
            filter: contrast(1.15) brightness(.85);
            opacity: 0;
            transition: opacity 1.5s ease;
            will-change: transform, opacity;
        }

        .hero-bg-img.is-active {
            opacity: 1;
        }

        .hero-bg::after {
            content: '';
            position: absolute;
            inset: 0;
            z-index: 1;
            background: linear-gradient(180deg, rgba(0, 0, 0, .55) 0%, rgba(0, 0, 0, .35) 32%, rgba(0, 0, 0, .55) 68%, rgba(0, 0, 0, .92) 100%);
        }

        .hero-news {
            position: absolute;
            top: calc(var(--header-h) + 20px);
            right: clamp(20px, 4vw, 56px);
            z-index: 3;
            width: 96px;
            height: 96px;
            border: 1px solid rgba(255, 255, 255, .55);
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            text-align: center;
        }

        .hero-news a {
            font-family: 'Oswald', sans-serif;
            font-size: clamp(.8rem, 1.1vw, .95rem);
            font-weight: 700;
            letter-spacing: .1em;
            line-height: 1.3;
        }

        .hero-content {
            position: relative;
            z-index: 2;
            width: 100%;
            padding: 0 clamp(20px, 4vw, 56px) clamp(60px, 8vw, 110px);
            text-align: center;
        }

        .hero-title {
            font-family: 'Noto Sans JP', sans-serif;
            font-weight: 900;
            font-size: clamp(3.8rem, 13.5vw, 10.5rem);
            line-height: .98;
            letter-spacing: .01em;
            margin-bottom: .5em;
        }

        .hero-sub {
            font-size: clamp(1.15rem, 2.3vw, 1.6rem);
            font-weight: 700;
            line-height: 1.75;
            max-width: 660px;
            margin: 0 auto 1.6em;
        }

        .hero-desc {
            max-width: 640px;
            font-size: .95rem;
            line-height: 2;
            color: #fff;
            padding-top: 1.4em;
            margin: 0 auto;
        }

        /* hero content is hidden behind the loader for ~2.5s, so a plain CSS
   entrance (no JS dependency at all) is the most reliable way to reveal it */
        @keyframes heroRise {
            from {
                opacity: 0;
                transform: translateY(38px);
            }

            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        .hero-title,
        .hero-rise,
        .hero-news {
            opacity: 0;
            animation: heroRise .9s var(--ease-out) forwards;
        }

        .hero-title {
            animation-delay: .1s;
        }

        .hero-rise-1 {
            animation-delay: .28s;
        }

        .hero-rise-2 {
            animation-delay: .4s;
        }

        .hero-rise-3 {
            animation-delay: .55s;
        }

        .hero-news {
            animation-delay: .7s;
        }

        /* ==========================================================
   TICKER DIVIDER
   ========================================================== */
        .ticker-divider {
            background: #000;
            color: #fff;
            position: relative;
            z-index: 2;
        }

        /* ==========================================================
   ABOUT
   ========================================================== */
        .about {
            position: relative;
            background: #000;
            padding-top: clamp(80px, 10vw, 140px);
            padding-bottom: clamp(110px, 14vw, 190px);
            overflow: hidden;
        }

        .about-bg {
            position: absolute;
            inset: 0;
            z-index: 0;
            overflow: hidden;
        }

        .about-bg img {
            position: absolute;
            top: -10%;
            left: 0;
            width: 100%;
            height: 120%;
            object-fit: cover;
            filter: contrast(1.1) brightness(.5);
        }

        .about-bg::after {
            content: '';
            position: absolute;
            inset: 0;
            background: rgba(0, 0, 0, .62);
        }

        .about-inner {
            position: relative;
            z-index: 2;
        }

        .about-message {
            max-width: 760px;
            margin: 0 auto clamp(48px, 6vw, 76px);
            text-align: center;
        }

        .about-message .h-jp {
            font-size: clamp(1.9rem, 4.6vw, 3.5rem);
        }

        .about-sp-break {
            display: none;
        }

        /* plain, uniform, left-aligned body copy — no weight/decoration variation */
        .about-body {
            display: flex;
            flex-direction: column;
            gap: 1.5em;
            max-width: 680px;
            text-align: center;
            margin: 0 auto clamp(60px, 8vw, 110px);
        }

        .about-body p {
            font-size: 1rem;
            font-weight: 400;
            line-height: 2;
            color: #fff;
        }

        .about-body .about-lead {
            font-weight: 700;
        }

        .about-lead-sp-break {
            display: none;
        }

        @media (max-width:640px) {
            .about-lead-sp-break {
                display: inline;
            }
        }

        .about-keyword {
            display: inline;
            padding: .08em .28em;
            background: #fff;
            color: #000;
            font-weight: 700;
            box-decoration-break: clone;
            -webkit-box-decoration-break: clone;
        }

        /* relationship diagram — companies and donors connect to municipalities */
        .relation-diagram {
            --relation-node-size: clamp(164px, 17vw, 220px);
            display: flex;
            align-items: center;
            width: 100%;
            margin-top: clamp(70px, 9vw, 120px);
            color: #fff;
        }

        .relation-node {
            flex: 0 0 var(--relation-node-size);
            width: var(--relation-node-size);
            aspect-ratio: 1;
            border: 1.4px solid #fff;
            border-radius: 50%;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            font-family: 'Noto Sans JP', sans-serif;
            line-height: 1.45;
            text-align: center;
        }

        .relation-node--municipality {
            background: #fff;
            color: #000;
        }

        .relation-node-description {
            display: block;
            font-size: clamp(.78rem, 1.1vw, .92rem);
            font-weight: 400;
        }

        .relation-node-name {
            display: block;
            margin-top: .24em;
            font-size: clamp(1.22rem, 2vw, 1.65rem);
            font-weight: 800;
        }

        .relation-connector {
            position: relative;
            flex: 1 1 120px;
            min-width: 100px;
            height: 82px;
        }

        .relation-caption {
            position: absolute;
            top: 0;
            left: 50%;
            transform: translateX(-50%);
            color: #fff;
            font-family: 'Noto Sans JP', sans-serif;
            font-size: clamp(.7rem, 1vw, .82rem);
            font-weight: 400;
            line-height: 1.5;
            text-align: center;
            white-space: nowrap;
        }

        .relation-arrow {
            position: absolute;
            left: 0;
            top: 50%;
            bottom: auto;
            width: 100%;
            height: 42px;
            transform: translateY(-50%);
            overflow: visible;
        }

        .relation-arrow-line,
        .relation-arrow-head {
            fill: none;
            stroke: #fff;
            stroke-width: 1.4;
            vector-effect: non-scaling-stroke;
        }

        /* ==========================================================
   SERVICE
   ========================================================== */
        .service-intro {
            background: #fff;
            color: #000;
            padding-top: clamp(110px, 14vw, 190px);
            padding-bottom: clamp(70px, 9vw, 120px);
        }

        .service-panel {
            display: grid;
            grid-template-columns: 1fr 1fr;
            border: 1px solid currentColor;
            color: #000;
            transition: background-color .4s var(--ease-out), color .4s var(--ease-out);
        }

        .service-panel:hover {
            background: #000;
            color: #fff;
        }

        .service-panel--disabled {
            cursor: default;
        }

        .service-panel--disabled:hover {
            background: #fff;
            color: #000;
        }

        .service-display {
            display: flex;
            align-items: flex-end;
            padding: clamp(28px, 4vw, 56px);
            font-size: clamp(3.2rem, 8.5vw, 7.2rem);
            margin: 0;
        }

        .service-photo {
            aspect-ratio: 4/3;
            border-left: 1px solid currentColor;
        }

        .service-copy {
            grid-column: 1 / -1;
            display: flex;
            align-items: flex-end;
            justify-content: space-between;
            gap: clamp(24px, 4vw, 60px);
            padding: clamp(28px, 4vw, 56px);
            border-top: 1px solid currentColor;
        }

        .service-copy p {
            max-width: 780px;
            font-size: clamp(1.1rem, 2vw, 1.5rem);
            font-weight: 700;
            line-height: 1.75;
            margin: 0;
        }

        .service-copy-text {
            max-width: 780px;
        }

        .service-copy .service-status {
            margin-top: .8em;
            font-size: .72rem;
            font-weight: 400;
            line-height: 1.7;
        }

        /* segment (For Municipalities / Companies / Donor) */
        .segments-horizontal {
            position: relative;
            background: #0a0a0a;
        }

        .segments-horizontal.is-horizontal {
            overflow: visible;
        }

        .segments-horizontal.is-horizontal .segments-viewport {
            position: relative;
            width: 100%;
            height: 100svh;
            overflow: hidden;
        }

        .segments-horizontal.is-horizontal .segments-track {
            display: flex;
            width: 100%;
            height: 100%;
            will-change: transform;
        }

        .segments-horizontal.is-horizontal .segment {
            flex: 0 0 100%;
            width: 100%;
            height: 100%;
        }

        .segments-horizontal.is-horizontal .segment-inner {
            height: 100%;
        }

        .segments-progress-ui {
            display: none;
            position: absolute;
            z-index: 4;
            left: 50%;
            bottom: clamp(14px, 2vw, 28px);
            width: 100%;
            transform: translateX(-50%);
            pointer-events: none;
        }

        .segments-horizontal.is-horizontal .segments-progress-ui {
            display: block;
        }

        .segments-progress-rail {
            position: relative;
            width: 100%;
            height: 11px;
        }

        .segments-progress-base,
        .segments-progress-fill {
            position: absolute;
            top: 50%;
            left: 0;
            width: 100%;
            height: 1px;
            transform: translateY(-50%);
            transform-origin: left center;
        }

        .segments-progress-base {
            background: rgba(255, 255, 255, .28);
        }

        .segments-progress-fill {
            background: #fff;
            transform: translateY(-50%) scaleX(0);
            will-change: transform;
        }

        .segments-progress-nodes {
            position: absolute;
            inset: 0;
            display: flex;
            align-items: center;
            justify-content: space-between;
        }

        .segments-progress-node {
            width: 11px;
            aspect-ratio: 1;
            border: 1px solid #fff;
            border-radius: 50%;
            background: #0a0a0a;
        }

        .segments-progress-node.is-active {
            background: #fff;
        }

        .segments-chevron {
            display: none;
            position: absolute;
            z-index: 4;
            top: 50%;
            right: clamp(16px, 2.5vw, 36px);
            width: 24px;
            height: 40px;
            transform: translateY(-50%);
            pointer-events: none;
            will-change: opacity;
        }

        .segments-horizontal.is-horizontal .segments-chevron {
            display: block;
        }

        .segments-chevron svg {
            display: block;
            width: 100%;
            height: 100%;
            animation: segments-chevron-nudge 2s ease-in-out infinite;
        }

        .segments-chevron path {
            fill: none;
            stroke: #fff;
            stroke-width: 1.4;
            stroke-linecap: square;
            stroke-linejoin: miter;
            vector-effect: non-scaling-stroke;
        }

        @keyframes segments-chevron-nudge {
            0%,
            100% {
                transform: translateX(0);
            }

            50% {
                transform: translateX(5px);
            }
        }

        @media (prefers-reduced-motion: reduce) {
            .segments-chevron svg {
                animation: none;
            }
        }

        .segment {
            background: #0a0a0a;
            color: #fff;
            border-top: 1px solid rgba(255, 255, 255, .14);
        }

        .segment-inner {
            padding-block: clamp(70px, 9vw, 120px);
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: clamp(30px, 5vw, 90px);
            align-items: center;
        }

        @media (min-width:901px) and (min-height:600px) and (max-height:767px) {
            /*
             * Known constraint: on an extremely wide and short viewport (around
             * 1920 x 620px) with the largest font setting, the text block itself
             * reaches about 739px and cannot fit through padding compression alone.
             * This edge case is accepted to keep the responsive logic simple.
             */
            .segments-horizontal.is-horizontal .segment-inner {
                padding-block: 28px;
            }
        }

        .segment-media {
            aspect-ratio: 5/4;
        }

        .segment-title {
            font-size: clamp(2.4rem, 6.5vw, 4.4rem);
            margin-bottom: .4em;
        }

        .segment-sub {
            font-size: clamp(1.05rem, 1.9vw, 1.3rem);
            font-weight: 700;
            margin-bottom: 1.6em;
        }

        .segment-description,
        .donor-line {
            font-size: clamp(1.1rem, 2vw, 1.4rem);
            font-weight: 700;
            line-height: 1.8;
            max-width: 520px;
        }

        .segment-btn {
            margin-top: 1.8em;
            color: #fff;
        }

        .segment-btn:hover span {
            color: #000;
        }

        @media (min-width:901px) {
            .segment-btn {
                min-width: 220px;
                justify-content: center;
            }
        }

        @media (max-width:900px) {
            .segments-progress-ui,
            .segments-chevron {
                display: none !important;
            }

            .segment-btn {
                width: 100%;
                justify-content: center;
            }
        }

        /* ==========================================================
   ADVISORY
   ========================================================== */
        .advisory {
            background: #e6e6e6;
            color: #000;
            padding: 0;
            position: relative;
            overflow: hidden;
        }

        .advisory>.wrap {
            display: grid;
            grid-template-columns: minmax(min-content, .9fr) minmax(0, 1.1fr);
            gap: clamp(42px, 6vw, 96px);
            align-items: stretch;
            min-height: clamp(680px, 62vw, 780px);
        }

        .advisory-top {
            display: flex;
            flex-direction: column;
            gap: clamp(32px, 4vw, 58px);
            padding: clamp(76px, 7vw, 110px) 0;
            margin-bottom: 0;
            min-width: 0;
            position: relative;
            z-index: 1;
        }

        .advisory-display {
            font-size: clamp(2rem, 10.5vw, 7.4rem);
        }

        .advisory-notes {
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            gap: 1.4em;
            padding-top: .4em;
        }

        .advisory-notes p {
            max-width: 520px;
            font-size: clamp(1.1rem, 2vw, 1.4rem);
            font-weight: 700;
            line-height: 1.8;
            color: rgba(0, 0, 0, .82);
        }

        .carousel {
            position: relative;
            z-index: 1;
            height: 100%;
            min-height: 0;
            overflow: hidden;
        }

        @media (min-width:901px) {
            .advisory .carousel {
                height: auto;
                align-self: stretch;
                contain: size;
            }
        }

        .carousel-track {
            --carousel-gap: clamp(18px, 2.6vw, 32px);
            display: flex;
            flex-direction: column;
            width: 100%;
            animation: advisor-marquee-vertical 55s linear infinite;
            will-change: transform;
        }

        .carousel-group {
            display: flex;
            flex-direction: column;
            flex-shrink: 0;
            gap: var(--carousel-gap);
            padding-bottom: var(--carousel-gap);
        }

        .advisor-card {
            flex: 0 0 auto;
            width: 100%;
        }

        .advisor-photo {
            aspect-ratio: 16/9;
        }

        .advisor-photo img {
            filter: none;
        }

        @keyframes advisor-marquee-vertical {
            from {
                transform: translateY(-50%);
            }

            to {
                transform: translateY(0);
            }
        }

        @keyframes advisor-marquee-horizontal {
            to {
                transform: translateX(-50%);
            }
        }

        /* ==========================================================
   NEWS
   ========================================================== */
        .news {
            background: #fff;
            color: #000;
            padding: clamp(100px, 13vw, 170px) 0;
        }

        .news-head {
            margin-bottom: clamp(50px, 7vw, 80px);
            padding-bottom: clamp(24px, 3vw, 36px);
        }

        .news-head .h-display {
            font-size: clamp(3rem, 9vw, 6rem);
        }

        .news-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: clamp(24px, 3vw, 44px);
        }

        .news-card {
            display: block;
        }

        .news-thumb {
            aspect-ratio: 16/10;
            margin-bottom: 1.3em;
        }

        .news-thumb img {
            filter: grayscale(1) contrast(1.08);
        }

        .news-meta {
            display: flex;
            gap: 1.2em;
            align-items: center;
            font-family: 'Oswald', sans-serif;
            font-size: .72rem;
            letter-spacing: .12em;
            text-transform: uppercase;
            color: rgba(0, 0, 0, .5);
            margin-bottom: .7em;
        }

        .news-title {
            font-size: 1.05rem;
            font-weight: 700;
            line-height: 1.7;
        }

        /* ==========================================================
   COMPANY
   ========================================================== */
        .company {
            position: relative;
            overflow: hidden;
            color: #fff;
        }

        .company-bg {
            position: absolute;
            inset: 0;
            z-index: 0;
            overflow: hidden;
        }

        .company-bg img {
            position: absolute;
            top: -10%;
            left: 0;
            width: 100%;
            height: 120%;
            object-fit: cover;
            filter: contrast(1.1) brightness(.55);
        }

        .company-bg::after {
            content: '';
            position: absolute;
            inset: 0;
            background: rgba(0, 0, 0, .6);
        }

        .company-inner {
            position: relative;
            z-index: 1;
            padding-block: clamp(110px, 14vw, 190px);
        }

        .company-head {
            margin-bottom: clamp(50px, 7vw, 80px);
        }

        .company-head .h-display {
            font-size: clamp(3rem, 9vw, 6.2rem);
            margin-bottom: .2em;
        }

        .company-table {
            max-width: 920px;
            border-top: 1px solid rgba(255, 255, 255, .25);
        }

        .company-row {
            display: grid;
            grid-template-columns: 200px 1fr;
            gap: 20px;
            padding: 1.6em 0;
            border-bottom: 1px solid rgba(255, 255, 255, .18);
        }

        .company-row dt {
            font-family: 'Oswald', sans-serif;
            font-size: .78rem;
            letter-spacing: .14em;
            text-transform: uppercase;
            color: rgba(255, 255, 255, .55);
        }

        .company-row dd {
            font-size: 1rem;
            line-height: 1.9;
        }

        /* ==========================================================
   CONTACT
   ========================================================== */
        .contact {
            background: #fff;
            color: #000;
            padding: clamp(110px, 14vw, 190px) 0;
        }

        .contact-head {
            max-width: 640px;
            margin-bottom: clamp(56px, 7vw, 90px);
        }

        .contact-head .h-display {
            font-size: clamp(3rem, 9vw, 6.2rem);
        }

        .contact-intro {
            margin-top: clamp(24px, 3vw, 36px);
            font-size: 1rem;
            line-height: 1.9;
        }

        .contact-grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: clamp(18px, 2.4vw, 26px);
        }

        .contact-card {
            --notch: 18px;
            border: 1px solid rgba(0, 0, 0, .85);
            padding: clamp(28px, 3.2vw, 44px);
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            min-height: 200px;
            transition: background .4s var(--ease-out), color .4s var(--ease-out);
            position: relative;
        }

        .contact-card:hover {
            background: #000;
            color: #fff;
        }

        .contact-card h3 {
            font-size: 1.25rem;
            font-weight: 800;
            margin: 0 0 .5em;
            line-height: 1.5;
        }

        .contact-card p {
            font-size: .86rem;
            opacity: .68;
            line-height: 1.7;
        }

        .contact-card .arrow,
        .service-panel .arrow {
            align-self: flex-end;
            margin-top: 1.4em;
            width: 38px;
            height: 38px;
            border-radius: 50%;
            border: 1px solid currentColor;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .contact-card .arrow svg,
        .service-panel .arrow svg {
            width: 14px;
            height: 14px;
            transition: transform .4s var(--ease-out);
        }

        .service-panel .arrow {
            flex: 0 0 auto;
            margin-top: 0;
        }

        .contact-card:hover .arrow svg,
        .service-panel:hover .arrow svg {
            transform: translate(3px, -3px);
        }

        .service-panel--disabled:hover .arrow svg {
            transform: none;
        }

        /* ==========================================================
   FOOTER
   ========================================================== */
        footer {
            background: #000;
            color: #fff;
            padding: clamp(70px, 9vw, 110px) 0 30px;
        }

        .footer-top {
            display: grid;
            grid-template-columns: 1fr auto;
            gap: clamp(30px, 5vw, 50px);
            align-items: start;
            padding-bottom: clamp(60px, 8vw, 90px);
            border-bottom: 1px solid rgba(255, 255, 255, .16);
        }

        .footer-brand .logo {
            position: static;
            mix-blend-mode: normal;
        }

        .footer-brand .logo-image-frame {
            width: 180px;
        }

        .footer-col ul {
            display: flex;
            flex-direction: column;
            gap: .75em;
        }

        .footer-col a {
            font-family: 'Oswald', sans-serif;
            font-weight: 700;
            font-size: .92rem;
            color: rgba(255, 255, 255, .85);
        }

        .footer-col a:hover {
            color: #fff;
            text-decoration: underline;
        }

        .footer-col .footer-privacy {
            display: block;
            width: max-content;
            margin-top: 1.8em;
            font-family: 'Noto Sans JP', -apple-system, sans-serif;
            font-size: .7rem;
            font-weight: 400;
            letter-spacing: .02em;
            color: #fff;
            white-space: nowrap;
        }

        .footer-col .footer-privacy:hover {
            color: #fff;
        }

        .footer-bottom {
            padding-top: 26px;
            display: flex;
            justify-content: center;
            flex-wrap: wrap;
            gap: 14px;
            text-align: center;
            font-family: 'Oswald', sans-serif;
            font-size: .72rem;
            letter-spacing: .08em;
            color: rgba(255, 255, 255, .45);
        }

        /* ==========================================================
   ALL LATIN / OSWALD TYPE → WEIGHT 700 (strong, unified impact)
   ========================================================== */
        .btn,
        .overlay-nav a,
        .overlay-nav a .idx,
        .hero-news a,
        .news-meta,
        .company-row dt,
        .footer-bottom {
            font-weight: 700;
        }

        /* ==========================================================
   REVEAL BASE STATES (JS/GSAP animates these to visible)
   ========================================================== */
        .reveal-fade {
            opacity: 0;
            transform: translateY(26px);
        }

        .reveal-stagger>* {
            opacity: 0;
            transform: translateY(26px);
        }

        @media (prefers-reduced-motion: reduce) {
            html:not(.has-first-visit-loader):not(.loader-complete) body {
                animation: none;
            }

            * {
                animation-duration: .001ms !important;
                animation-iteration-count: 1 !important;
                transition-duration: .001ms !important;
                scroll-behavior: auto !important;
            }
        }

        /* focus visibility */
        a:focus-visible,
        button:focus-visible {
            outline: 2px solid #fff;
            outline-offset: 3px;
        }

        .on-light a:focus-visible,
        .on-light button:focus-visible {
            outline-color: #000;
        }

        /* ==========================================================
   RESPONSIVE
   ========================================================== */
        @media (min-width:1001px) {
            footer {
                padding-top: clamp(56px, 7vw, 88px);
            }

            .footer-top {
                padding-bottom: clamp(44px, 6vw, 72px);
            }

            .footer-col ul {
                flex-direction: row;
                flex-wrap: wrap;
                justify-content: flex-end;
                gap: 1em clamp(22px, 2.5vw, 40px);
            }

            .footer-col .footer-privacy {
                margin-top: .6em;
                margin-left: auto;
            }
        }

        @media (max-width:1000px) {

            .grid-2,
            .service-panel {
                grid-template-columns: 1fr !important;
            }

            .service-photo {
                border-top: 1px solid currentColor;
                border-left: 0;
            }

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

            .news-grid {
                grid-template-columns: 1fr;
            }

            .contact-grid {
                grid-template-columns: 1fr;
            }

            .company-row {
                grid-template-columns: 140px 1fr;
            }
        }

        @media (max-width:900px) {
            .about-message {
                text-align: left;
            }

            .about-sp-break {
                display: inline;
            }

            .about-body {
                text-align: left;
            }

            .about-pc-break {
                display: none;
            }

            .relation-diagram {
                flex-direction: column;
            }

            .relation-node {
                flex: 0 0 auto;
                width: clamp(170px, 56vw, 220px);
            }

            .relation-connector {
                flex: 0 0 130px;
                width: 100%;
                min-width: 0;
                height: 130px;
            }

            .relation-caption {
                top: 50%;
                left: calc(50% + 26px);
                width: min(132px, 38vw);
                transform: translateY(-50%);
                text-align: left;
                white-space: normal;
            }

            .relation-arrow {
                top: 50%;
                left: 50%;
                bottom: auto;
                width: 116px;
                height: 34px;
                transform: translate(-50%, -50%) rotate(90deg);
            }

            .advisory>.wrap {
                display: block;
                height: auto;
            }

            .advisory-top {
                padding-bottom: 0;
                margin-bottom: clamp(52px, 9vw, 76px);
            }

            .carousel {
                height: auto;
                min-height: 0;
            }

            .carousel-track {
                flex-direction: row;
                width: max-content;
                animation-name: advisor-marquee-horizontal;
            }

            .carousel-group {
                flex-direction: row;
                padding-right: var(--carousel-gap);
                padding-bottom: 0;
            }

            .advisor-card {
                flex: 0 0 clamp(260px, 78vw, 520px);
                width: auto;
            }

            .segments-horizontal,
            .segments-horizontal.is-horizontal {
                height: auto;
                overflow: visible;
            }

            .segments-horizontal .segments-viewport {
                position: static;
                top: auto;
                width: auto;
                height: auto;
                overflow: visible;
            }

            .segments-horizontal .segments-track {
                display: block;
                position: static;
                top: auto;
                width: auto;
                height: auto;
                transform: none !important;
                will-change: auto;
            }

            .segments-horizontal .segment {
                width: auto;
                height: auto;
            }

            .segment-inner {
                grid-template-columns: 1fr !important;
                height: auto !important;
            }

        }

        @media (max-width:640px) {
            html {
                overflow-x: clip;
            }

            :root {
                --header-h: 70px;
            }

            .advisory-display,
            .news-head .h-display,
            .company-head .h-display {
                font-size: clamp(3.2rem, 17vw, 5rem);
            }

            .advisory .carousel {
                width: calc(100% + clamp(48px, 10vw, 144px));
                margin-inline: clamp(-72px, -5vw, -24px);
            }

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

            .service-photo {
                order: 1;
                border-top: 0;
            }

            .service-display {
                order: 2;
                font-size: clamp(2.9rem, calc(8.5vw + 1.2rem), 3.2rem);
                padding-bottom: 16px;
                border-top: 0;
            }

            .service-copy {
                order: 3;
                flex-direction: column;
                align-items: stretch;
                gap: 0;
                padding-top: 16px;
                border-top: 0;
            }

            .service-copy p {
                width: 100%;
                max-width: none;
            }

            .service-copy .arrow {
                align-self: flex-end;
                margin-top: 1.4em;
            }

            .hero {
                display: grid;
                grid-template-columns: 1fr;
                grid-template-rows: calc(var(--header-h) + 20px) auto minmax(min-content, 1fr);
                align-items: stretch;
            }

            .hero-title {
                font-size: clamp(2.2rem, 15vw, 4.5rem);
            }

            .hero-news {
                position: static;
                top: auto;
                right: auto;
                grid-column: 1;
                grid-row: 2;
                justify-self: end;
                width: 78px;
                height: 78px;
                margin: 0 20px 16px 0;
            }

            .hero-content {
                grid-column: 1;
                grid-row: 3;
                align-self: end;
            }

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

        /* ==========================================================
   SERVICE PAGE HEADER
   ========================================================== */
        .page-header-service {
            min-height: 60svh;
            background: #000;
            color: #fff;
        }

        .page-header-service__inner {
            min-height: 60svh;
            padding-top: calc(var(--header-h) + clamp(28px, 3vw, 44px));
            padding-bottom: clamp(36px, 4vw, 56px);
            display: grid;
            grid-template-columns: 1fr;
            column-gap: 0;
            row-gap: clamp(20px, 2.5vw, 32px);
            align-content: space-between;
        }

        .page-header-service__heading {
            grid-column: 1;
            grid-row: 1;
            justify-self: center;
            text-align: center;
        }

        .page-header-service__title {
            font-size: clamp(4.5rem, 8vw, 7rem);
        }

        .page-header-service__copy {
            grid-column: 1;
            grid-row: 2;
            justify-self: center;
            max-width: 64rem;
            text-align: center;
        }

        .page-header-service__lead {
            font-size: clamp(1.4rem, 2.4vw, 2rem);
            font-weight: 800;
            line-height: 1.45;
        }

        .page-header-service__body {
            max-width: 32rem;
            margin: 1.4em auto 0;
            font-size: 1rem;
            line-height: 1.85;
        }

        .page-header-service__media {
            grid-column: 1;
            grid-row: 3;
            width: 100%;
            aspect-ratio: 32 / 5;
            clip-path: inset(0 50%);
            animation: pageHeaderServiceMediaExpand 1.4s var(--ease-in-out) .2s forwards;
        }

        @keyframes pageHeaderServiceMediaExpand {
            to {
                clip-path: inset(0);
            }
        }

        @media (max-width:767px) {
            .page-header-service__inner {
                grid-template-columns: 1fr;
                column-gap: 0;
                row-gap: clamp(24px, 7vw, 36px);
                padding-top: calc(var(--header-h) + clamp(28px, 8vw, 40px));
                padding-bottom: clamp(36px, 10vw, 52px);
            }

            .page-header-service__heading {
                grid-column: 1;
                grid-row: 1;
                justify-self: stretch;
                text-align: left;
            }

            .page-header-service__title {
                font-size: clamp(3.5rem, 16vw, 5rem);
            }

            .page-header-service__copy {
                grid-column: 1;
                grid-row: 2;
                max-width: 100%;
                text-align: left;
            }

            .page-header-service__lead {
                font-size: clamp(1.35rem, 6vw, 1.75rem);
            }

            .page-header-service__body {
                max-width: 100%;
            }

            .page-header-service__media {
                grid-column: 1;
                grid-row: 3;
                width: 100%;
                aspect-ratio: 16 / 5;
            }
        }

        @media (prefers-reduced-motion: reduce) {
            .page-header-service__media {
                clip-path: inset(0);
                animation: none;
            }
        }

        /* ==========================================================
   SERVICE PAGE: THREE POSITIONS
   ========================================================== */
        .positions-section {
            padding-block: clamp(96px, 10vw, 144px);
            background: #fff;
            color: #000;
        }

        .positions-head {
            margin-bottom: clamp(56px, 7vw, 96px);
        }

        .positions-list {
            border-top: 1px solid #000;
        }

        .positions-item {
            display: grid;
            grid-template-columns: clamp(72px, 7vw, 104px) minmax(140px, .42fr) minmax(0, .9fr) minmax(0, 1.15fr);
            column-gap: clamp(24px, 3vw, 44px);
            align-items: start;
            padding-block: clamp(44px, 5vw, 72px);
            border-bottom: 1px solid #000;
            scroll-margin-top: calc(var(--header-h) + 24px);
        }

        .positions-number {
            font-family: 'Oswald', sans-serif;
            font-size: clamp(3.75rem, 6vw, 5.75rem);
            font-weight: 700;
            line-height: .9;
        }

        .positions-role {
            font-size: clamp(1.6rem, 2.2vw, 2.2rem);
            font-weight: 800;
            line-height: 1.3;
        }

        .positions-label {
            margin-bottom: .85em;
            font-size: .75rem;
            font-weight: 800;
            line-height: 1.4;
            letter-spacing: .08em;
        }

        .positions-challenge-text,
        .positions-benefits li {
            font-size: 1rem;
            line-height: 1.8;
        }

        .positions-benefits ul {
            display: grid;
            gap: .7em;
        }

        .positions-benefits li {
            position: relative;
            padding-left: 1.35em;
        }

        .positions-benefits li::before {
            content: "—";
            position: absolute;
            top: 0;
            left: 0;
        }

        @media (max-width:900px) {
            .positions-item {
                grid-template-columns: 80px minmax(0, 1fr);
                column-gap: 28px;
                row-gap: 28px;
            }

            .positions-number {
                grid-column: 1;
                grid-row: 1 / span 3;
            }

            .positions-role,
            .positions-challenge,
            .positions-benefits {
                grid-column: 2;
            }
        }

        @media (max-width:640px) {
            .positions-section {
                padding-block: clamp(72px, 22vw, 104px);
            }

            .positions-head {
                margin-bottom: clamp(44px, 14vw, 64px);
            }

            .positions-item {
                grid-template-columns: minmax(0, 1fr);
                row-gap: 24px;
                padding-block: clamp(40px, 12vw, 56px);
            }

            .positions-number,
            .positions-role,
            .positions-challenge,
            .positions-benefits {
                grid-column: 1;
                grid-row: auto;
            }

            .positions-number {
                font-size: clamp(3.5rem, 18vw, 4.75rem);
            }
        }

        /* ==========================================================
   SERVICE PAGE: PROJECT FLOW
   ========================================================== */
        .flow-section {
            padding-block: clamp(110px, 12vw, 176px);
            background: #000;
            color: #fff;
        }

        .flow-head {
            max-width: 64rem;
        }

        .flow-lead {
            max-width: 58rem;
            margin-top: 2em;
            font-size: 1.05rem;
            line-height: 1.9;
        }

        .flow-note {
            max-width: 58rem;
            margin-top: .75em;
            color: rgba(255, 255, 255, .62);
            font-size: .82rem;
            line-height: 1.7;
        }

        .flow-layout {
            --flow-rail-column: clamp(72px, 8vw, 120px);
            --flow-column-gap: clamp(28px, 4vw, 64px);
            --flow-step-padding: clamp(64px, 7vw, 104px);
            position: relative;
            margin-top: clamp(72px, 9vw, 128px);
        }

        .flow-rail {
            position: absolute;
            z-index: 1;
            top: 0;
            bottom: 0;
            left: calc(var(--flow-rail-column) / 2);
            width: 1px;
            transform: translateX(-50%);
            overflow: visible;
        }

        .flow-rail-base,
        .flow-rail-progress {
            position: absolute;
            inset: 0;
            display: block;
            width: 1px;
            transform-origin: top center;
        }

        .flow-rail-base {
            background: rgba(255, 255, 255, .28);
        }

        .flow-rail-progress {
            background: #fff;
            transform: scaleY(1);
        }

        .flow-list {
            border-top: 1px solid rgba(255, 255, 255, .24);
        }

        .flow-step {
            position: relative;
            display: grid;
            grid-template-columns: var(--flow-rail-column) minmax(0, 1fr);
            column-gap: var(--flow-column-gap);
            align-items: start;
            min-height: clamp(360px, 44svh, 520px);
            padding-block: var(--flow-step-padding);
            border-bottom: 1px solid rgba(255, 255, 255, .24);
        }

        .flow-node {
            position: relative;
            z-index: 2;
            grid-column: 1;
            justify-self: center;
            width: 15px;
            height: 15px;
            margin-top: .45rem;
            border: 1px solid #fff;
            border-radius: 50%;
            background: #fff;
        }

        .flow-step-content {
            grid-column: 2;
            max-width: 58rem;
            min-width: 0;
        }

        .flow-number {
            font-family: 'Oswald', sans-serif;
            font-size: 1rem;
            font-weight: 700;
            line-height: 1;
            letter-spacing: .08em;
        }

        .flow-title {
            max-width: 54rem;
            margin-top: .65em;
            font-size: clamp(1.65rem, 3vw, 2.8rem);
            font-weight: 800;
            line-height: 1.4;
        }

        .flow-actors {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: .5em 0;
            width: 100%;
            margin-top: 1.25em;
        }

        .flow-actor {
            display: inline-flex;
            align-items: center;
            flex: 0 0 auto;
            color: #fff;
            font-size: .82rem;
            font-weight: 700;
            line-height: 1.5;
            white-space: nowrap;
        }

        .flow-actor:nth-of-type(1) {
            width: 5.4em;
        }

        .flow-actor:nth-of-type(2) {
            width: 6.4em;
        }

        .flow-actor:not(:last-of-type)::after {
            content: '';
            display: inline-block;
            width: 1px;
            height: .9em;
            margin-inline: .85em;
            background: rgba(255, 255, 255, .42);
        }

        .flow-actor--off {
            color: rgba(255, 255, 255, .38);
            font-weight: 400;
        }

        .flow-actors-note {
            flex: 0 0 100%;
            margin-top: .35em;
            color: rgba(255, 255, 255, .58);
            font-size: .7rem;
            font-weight: 400;
            line-height: 1.5;
        }

        .flow-body {
            max-width: 54rem;
            margin-top: 1.75em;
            font-size: 1rem;
            line-height: 1.95;
        }

        @media (max-width:900px) {
            .flow-section {
                padding-block: clamp(88px, 16vw, 128px);
            }

            .flow-layout {
                --flow-rail-column: 38px;
                --flow-column-gap: 18px;
                --flow-step-padding: clamp(56px, 12vw, 84px);
                margin-top: clamp(64px, 13vw, 96px);
            }

            .flow-step {
                min-height: clamp(340px, 50svh, 500px);
            }

            .flow-title {
                font-size: clamp(1.5rem, 7vw, 2.2rem);
            }

            .flow-body {
                line-height: 1.9;
            }
        }

        @media (prefers-reduced-motion: reduce) {
            .flow-rail-progress {
                transform: scaleY(1) !important;
            }

            .flow-node {
                background: #fff !important;
                transform: none !important;
            }

            .flow-step {
                opacity: 1 !important;
                transform: none !important;
            }
        }

        /* ==========================================================
   SERVICE PAGE: ADVISORY BRIEF
   ========================================================== */
        .advisory-brief-section {
            background: #e6e6e6;
            padding-block: clamp(96px, 10vw, 152px);
        }

        .advisory-brief-grid {
            display: grid;
            grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr);
            gap: clamp(48px, 7vw, 104px);
            align-items: center;
        }

        .advisory-brief-media {
            aspect-ratio: 16 / 9;
            min-width: 0;
        }

        .advisory-brief-content {
            min-width: 0;
        }

        .advisory-brief-copy {
            max-width: 38rem;
            margin-top: 2em;
            font-size: 1rem;
            line-height: 1.9;
        }

        .advisory-brief-link {
            margin-top: 2.25em;
        }

        @media (max-width:900px) {
            .advisory-brief-section {
                padding-block: clamp(80px, 16vw, 120px);
            }

            .advisory-brief-grid {
                grid-template-columns: minmax(0, 1fr);
                gap: clamp(44px, 10vw, 72px);
            }

            .advisory-brief-copy {
                max-width: none;
            }
        }

        .positions-head .h-display,
        .flow-head .h-display,
        .advisory-brief-head .h-display {
            font-size: clamp(4.25rem, 7.4vw, 6.5rem);
        }

        @media (max-width:900px) {
            .positions-head .h-display,
            .flow-head .h-display,
            .advisory-brief-head .h-display {
                font-size: clamp(3.25rem, 14.5vw, 4.25rem);
            }
        }

        /* ==========================================================
   ADVISORY LIST PAGE
   ========================================================== */
        .advisor-list-page-header {
            min-height: 60svh;
            background: #000;
            color: #fff;
        }

        .advisor-list-page-header__inner {
            min-height: 60svh;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: clamp(40px, 6vw, 80px);
            padding-top: calc(var(--header-h) + clamp(36px, 5vw, 64px));
            padding-bottom: clamp(64px, 8vw, 112px);
            text-align: center;
        }

        .advisor-list-page-header__heading,
        .advisor-list-page-header__copy {
            min-width: 0;
        }

        .advisor-list-page-header__title {
            font-size: clamp(4.5rem, 8vw, 7rem);
        }

        .advisor-list-page-header__copy {
            max-width: 62rem;
        }

        .advisor-list-page-header__lead {
            font-size: clamp(1.35rem, 2.5vw, 2rem);
            font-weight: 800;
            line-height: 1.55;
        }

        .advisor-list-page-header__body {
            max-width: 46rem;
            margin: 1.5em auto 0;
            font-size: 1rem;
            line-height: 1.9;
        }

        .advisor-list-section {
            position: relative;
            background: #000;
            color: #fff;
            padding-bottom: clamp(104px, 12vw, 176px);
        }

        .advisor-list-tier {
            padding-block: clamp(80px, 9vw, 136px);
        }

        .advisor-list-featured-item {
            display: grid;
            grid-template-columns: minmax(0, 38%) minmax(0, 1fr);
            gap: clamp(48px, 8vw, 120px);
            align-items: center;
        }

        .advisor-list-featured-item + .advisor-list-featured-item {
            margin-top: clamp(88px, 11vw, 160px);
        }

        .advisor-list-featured-photo,
        .advisor-list-card-photo {
            width: 100%;
            aspect-ratio: 1;
        }

        .advisor-list-featured-photo img,
        .advisor-list-card-photo img {
            filter: none;
        }

        .advisor-list-featured-content {
            min-width: 0;
            max-width: 44rem;
        }

        .advisor-list-featured-item:nth-child(even) {
            grid-template-columns: minmax(0, 1fr) minmax(0, 38%);
        }

        .advisor-list-featured-item:nth-child(even) .advisor-list-featured-photo {
            grid-column: 2;
            grid-row: 1;
        }

        .advisor-list-featured-item:nth-child(even) .advisor-list-featured-content {
            grid-column: 1;
            grid-row: 1;
            justify-self: end;
        }

        .advisor-list-person-head {
            display: flex;
            flex-direction: column;
            align-items: flex-start;
        }

        .advisor-list-person-name {
            font-size: clamp(1.55rem, 3vw, 2.5rem);
            font-weight: 800;
            line-height: 1.35;
        }

        .advisor-list-person-role {
            margin-top: .6em;
            font-size: .88rem;
            color: #999;
            font-weight: 400;
            line-height: 1.6;
        }

        .advisor-list-person-bio {
            margin-top: 2em;
            font-size: 1rem;
            line-height: 2;
        }

        .advisor-list-card-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
            gap: clamp(56px, 7vw, 96px) clamp(20px, 2.5vw, 32px);
        }

        .advisor-list-card {
            min-width: 0;
        }

        .advisor-list-card .advisor-list-details {
            margin-top: 1.5em;
        }

        .advisor-list-card .advisor-list-person-name,
        .advisor-list-row .advisor-list-person-name {
            font-size: clamp(1.25rem, 2vw, 1.65rem);
        }

        .advisor-list-row-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
            column-gap: clamp(32px, 5vw, 72px);
            border-bottom: 1px solid #666;
        }

        .advisor-list-row {
            min-width: 0;
            border-top: 1px solid #666;
        }

        .advisor-list-details {
            margin-top: 0;
        }

        .advisor-list-details summary {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 20px;
            padding-block: 0;
            cursor: pointer;
            list-style: none;
            line-height: 1.5;
        }

        .advisor-list-details summary .advisor-list-person-head {
            min-width: 0;
        }

        .advisor-list-row .advisor-list-details summary {
            padding-block: clamp(32px, 4vw, 52px);
        }

        .advisor-list-details summary::-webkit-details-marker {
            display: none;
        }

        .advisor-list-details summary:focus-visible {
            outline: 2px solid #fff;
            outline-offset: 4px;
        }

        .advisor-list-details-icon {
            position: relative;
            flex: 0 0 auto;
            width: 18px;
            height: 18px;
            transition: transform .4s var(--ease-out);
        }

        .advisor-list-details-icon::before,
        .advisor-list-details-icon::after {
            content: '';
            position: absolute;
            top: 50%;
            left: 50%;
            width: 18px;
            height: 1px;
            background: #fff;
            transform: translate(-50%, -50%);
        }

        .advisor-list-details-icon::after {
            transform: translate(-50%, -50%) rotate(90deg);
        }

        .advisor-list-details[open]:not(.is-closing) .advisor-list-details-icon {
            transform: rotate(45deg);
        }

        .advisor-list-details-motion {
            display: grid !important;
            grid-template-rows: 0fr;
            visibility: hidden;
            transition: grid-template-rows .45s var(--ease-out), visibility 0s linear .45s;
        }

        .advisor-list-details[open]:not(.is-closing) > .advisor-list-details-motion {
            grid-template-rows: 1fr;
            visibility: visible;
            transition: grid-template-rows .45s var(--ease-out), visibility 0s linear 0s;
        }

        .advisor-list-details.is-closing > .advisor-list-details-motion {
            grid-template-rows: 0fr;
            visibility: visible;
        }

        .advisor-list-details-inner {
            min-height: 0;
            overflow: hidden;
        }

        .advisor-list-details-inner p {
            padding-bottom: 1.5em;
            font-size: .9rem;
            line-height: 1.9;
        }

        .advisor-list-row .advisor-list-details-inner p {
            padding-bottom: clamp(32px, 4vw, 52px);
        }

        @media (max-width:900px) {
            .advisor-list-page-header__inner {
                gap: clamp(36px, 10vw, 56px);
                padding-top: calc(var(--header-h) + clamp(40px, 10vw, 64px));
                padding-bottom: clamp(72px, 16vw, 112px);
            }

            .advisor-list-featured-item,
            .advisor-list-featured-item:nth-child(even) {
                grid-template-columns: minmax(0, 1fr);
                gap: clamp(36px, 9vw, 56px);
            }

            .advisor-list-featured-item:nth-child(even) .advisor-list-featured-photo,
            .advisor-list-featured-item:nth-child(even) .advisor-list-featured-content {
                grid-column: 1;
                grid-row: auto;
                justify-self: stretch;
            }

            .advisor-list-featured-photo {
                grid-column: 1;
                grid-row: 1;
            }

            .advisor-list-featured-content {
                grid-column: 1;
                grid-row: 2;
                max-width: none;
            }

            .advisor-list-row-grid {
                grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
            }
        }

        @media (max-width:767px) {
            .advisor-list-page-header__inner {
                align-items: stretch;
                gap: clamp(24px, 7vw, 36px);
                padding-top: calc(var(--header-h) + clamp(28px, 8vw, 40px));
                padding-bottom: clamp(36px, 10vw, 52px);
                text-align: left;
            }

            .advisor-list-page-header__heading,
            .advisor-list-page-header__copy {
                width: 100%;
                max-width: 100%;
                text-align: left;
            }

            .advisor-list-page-header__title {
                font-size: clamp(3.5rem, 16vw, 5rem);
            }

            .advisor-list-page-header__lead {
                font-size: clamp(1.35rem, 6vw, 1.75rem);
                line-height: 1.45;
            }

            .advisor-list-page-header__body {
                max-width: 100%;
                margin: 1.4em 0 0;
                line-height: 1.85;
            }
        }

        @media (prefers-reduced-motion: reduce) {
            .advisor-list-details-motion,
            .advisor-list-details-icon {
                transition: none !important;
            }
        }

        /* ==========================================================
   WORDPRESS: NEWS ARCHIVE / SINGLE / 404
   ========================================================== */
        .news-page-header {
            min-height: 46svh;
            background: #000;
            color: #fff;
        }

        .news-page-header__inner {
            min-height: 46svh;
            display: flex;
            flex-direction: column;
            justify-content: flex-end;
            align-items: flex-start;
            padding-top: calc(var(--header-h) + clamp(56px, 8vw, 104px));
            padding-bottom: clamp(64px, 8vw, 112px);
        }

        .news-page-header__title {
            font-size: clamp(4.5rem, 8vw, 7rem);
        }

        .news-archive {
            min-height: 42svh;
        }

        .news-more {
            display: flex;
            justify-content: flex-end;
            margin-top: clamp(44px, 6vw, 72px);
        }

        .news-more-link {
            font-family: 'Oswald', sans-serif;
            font-size: 1rem;
            font-weight: 700;
            line-height: 1;
            letter-spacing: .06em;
            text-decoration: underline;
            text-underline-offset: .35em;
            text-transform: uppercase;
            transition: opacity .3s var(--ease-out);
        }

        .news-more-link:hover {
            opacity: .55;
        }

        .news-empty {
            padding-block: clamp(48px, 7vw, 88px);
            border-top: 1px solid rgba(0, 0, 0, .18);
            border-bottom: 1px solid rgba(0, 0, 0, .18);
            font-size: 1rem;
            line-height: 1.9;
        }

        .news-pagination {
            margin-top: clamp(56px, 8vw, 96px);
            font-family: 'Oswald', sans-serif;
            font-size: .9rem;
            font-weight: 700;
            line-height: 1;
        }

        .news-pagination .nav-links {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            justify-content: center;
            gap: 12px;
        }

        .news-pagination .page-numbers {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 42px;
            min-height: 42px;
            padding: .7em;
            border: 1px solid #000;
        }

        .news-pagination .page-numbers.current,
        .news-pagination a.page-numbers:hover {
            background: #000;
            color: #fff;
        }

        .news-single-header {
            background: #000;
            color: #fff;
        }

        .news-single-header__inner {
            min-height: 58svh;
            display: flex;
            flex-direction: column;
            justify-content: flex-end;
            padding-top: calc(var(--header-h) + clamp(64px, 9vw, 120px));
            padding-bottom: clamp(72px, 9vw, 128px);
        }

        .news-single-kicker,
        .news-single-date {
            font-family: 'Oswald', sans-serif;
            font-weight: 700;
            letter-spacing: .1em;
        }

        .news-single-kicker {
            font-size: 1rem;
        }

        .news-single-date {
            margin-top: 2em;
            color: rgba(255, 255, 255, .66);
            font-size: .8rem;
        }

        .news-single-title {
            max-width: 58rem;
            margin-top: .8em;
            font-size: clamp(2rem, 4.6vw, 4.2rem);
            font-weight: 800;
            line-height: 1.4;
        }

        .news-single-body {
            background: #fff;
            color: #000;
            padding-block: clamp(88px, 11vw, 160px);
        }

        .news-single-body__inner {
            max-width: 1080px;
        }

        .news-single-eyecatch {
            aspect-ratio: 16 / 10;
        }

        .news-single-content {
            max-width: 48rem;
            margin: clamp(48px, 7vw, 80px) auto 0;
            font-size: 1rem;
            line-height: 2;
        }

        .news-single-content > * + * {
            margin-top: 1.6em;
        }

        .news-single-content h2,
        .news-single-content h3,
        .news-single-content h4 {
            font-weight: 800;
            line-height: 1.5;
        }

        .news-single-content h2 {
            font-size: clamp(1.6rem, 3vw, 2.3rem);
        }

        .news-single-content h3 {
            font-size: clamp(1.3rem, 2.2vw, 1.75rem);
        }

        .news-single-content h4 {
            font-size: 1.15rem;
        }

        .news-single-content ul,
        .news-single-content ol {
            padding-left: 1.6em;
        }

        .news-single-content ul {
            list-style: disc;
        }

        .news-single-content ol {
            list-style: decimal;
        }

        .news-single-content a {
            text-decoration: underline;
            text-underline-offset: .18em;
        }

        .news-single-content blockquote {
            padding-left: 1.4em;
            border-left: 2px solid #000;
        }

        .news-single-content figure,
        .news-single-content blockquote {
            margin-block: 2em;
        }

        .news-single-content figcaption {
            margin-top: .7em;
            font-size: .8rem;
            line-height: 1.7;
        }

        .news-single-content img {
            width: auto;
            height: auto;
        }

        .news-single-nav {
            display: grid;
            grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
            gap: clamp(20px, 4vw, 56px);
            align-items: start;
            margin-top: clamp(72px, 10vw, 120px);
            padding-top: clamp(32px, 5vw, 56px);
            border-top: 1px solid rgba(0, 0, 0, .2);
        }

        .news-single-nav a {
            font-weight: 700;
            line-height: 1.6;
        }

        .news-single-nav__side a {
            display: flex;
            flex-direction: column;
            gap: .7em;
            font-size: .86rem;
        }

        .news-single-nav__side span,
        .news-single-nav__list {
            font-family: 'Oswald', sans-serif;
            font-size: .8rem;
            letter-spacing: .08em;
        }

        .news-single-nav__side--next {
            text-align: right;
        }

        .news-single-nav__side--next a {
            align-items: flex-end;
        }

        .news-single-nav__list {
            padding-bottom: .35em;
            border-bottom: 1px solid #000;
            white-space: nowrap;
        }

        .error-page {
            min-height: 72svh;
            background: #000;
            color: #fff;
        }

        .error-page__inner {
            min-height: 72svh;
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            justify-content: center;
            padding-top: calc(var(--header-h) + clamp(56px, 7vw, 96px));
            padding-bottom: clamp(72px, 10vw, 136px);
        }

        .error-page__code {
            font-size: clamp(5rem, 14vw, 11rem);
        }

        .error-page__title {
            margin-top: 1.2em;
            font-size: clamp(1.7rem, 3.5vw, 2.8rem);
            font-weight: 800;
            line-height: 1.45;
        }

        .error-page__body {
            max-width: 42rem;
            margin-top: 1.4em;
            color: rgba(255, 255, 255, .72);
            font-size: 1rem;
            line-height: 1.9;
        }

        .error-page__link {
            margin-top: 2.4em;
        }

        .generic-page-header {
            background: #000;
            color: #fff;
        }

        .generic-page-header__inner {
            min-height: 46svh;
            display: flex;
            align-items: flex-end;
            padding-top: calc(var(--header-h) + clamp(56px, 8vw, 104px));
            padding-bottom: clamp(64px, 8vw, 112px);
        }

        .generic-page-title {
            max-width: 58rem;
            font-size: clamp(2.4rem, 5vw, 4.8rem);
            font-weight: 800;
            line-height: 1.35;
        }

        .generic-page-body {
            background: #fff;
            color: #000;
            padding-block: clamp(88px, 11vw, 160px);
        }

        .generic-page-content {
            max-width: 64rem;
            font-size: 1rem;
            line-height: 2;
        }

        .generic-page-content > * + * {
            margin-top: 1.6em;
        }

        .generic-page-content h2,
        .generic-page-content h3,
        .generic-page-content h4 {
            font-weight: 800;
            line-height: 1.5;
        }

        .generic-page-content h2 {
            font-size: clamp(1.6rem, 3vw, 2.3rem);
        }

        .generic-page-content h3 {
            font-size: clamp(1.3rem, 2.2vw, 1.75rem);
        }

        .generic-page-content h4 {
            font-size: 1.15rem;
        }

        .generic-page-content ul,
        .generic-page-content ol {
            padding-left: 1.6em;
        }

        .generic-page-content ul {
            list-style: disc;
        }

        .generic-page-content ol {
            list-style: decimal;
        }

        .generic-page-content a {
            text-decoration: underline;
            text-underline-offset: .18em;
        }

        .generic-page-content blockquote {
            padding-left: 1.4em;
            border-left: 2px solid #000;
        }

        .generic-page-content figure,
        .generic-page-content blockquote {
            margin-block: 2em;
        }

        .generic-page-content figcaption {
            margin-top: .7em;
            font-size: .8rem;
            line-height: 1.7;
        }

        @media (max-width:640px) {
            .news-page-header__inner {
                min-height: 42svh;
                padding-top: calc(var(--header-h) + 40px);
                padding-bottom: 56px;
            }

            .news-page-header__title {
                font-size: clamp(3.5rem, 16vw, 5rem);
            }

            .news-more {
                justify-content: stretch;
            }

            .news-single-header__inner {
                min-height: 52svh;
                padding-top: calc(var(--header-h) + 48px);
                padding-bottom: 64px;
            }

            .news-single-nav {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }

            .news-single-nav__list {
                grid-column: 1 / -1;
                grid-row: 1;
                justify-self: center;
            }

            .news-single-nav__side {
                grid-row: 2;
            }

            .error-page__inner {
                align-items: stretch;
            }

            .generic-page-header__inner {
                min-height: 42svh;
                padding-top: calc(var(--header-h) + 40px);
                padding-bottom: 56px;
            }
        }

        /* ==========================================================
   NEWS / EDITOR: scoped reading styles (including the top NEWS cards).
   Existing service, advisory, CONTACT and navigation styles stay shared.
   ========================================================== */
        .entry-wrap {
            max-width: 1120px;
            min-width: 0;
        }

        .entry-page-header,
        .entry-page-body,
        .news-single-header,
        .news-single-body {
            background: #fff;
            color: #000;
        }

        .entry-page-header__inner {
            display: grid;
            min-height: 40svh;
            align-content: center;
            padding-top: calc(var(--header-h) + clamp(48px, 6vw, 80px));
            padding-bottom: clamp(48px, 6vw, 80px);
        }

        .entry-page-header__heading {
            min-width: 0;
            text-align: center;
        }

        .entry-page-title {
            font-size: 5rem;
            overflow-wrap: anywhere;
        }

        .entry-page-main .entry-page-title {
            font-family: 'Noto Sans JP', -apple-system, sans-serif;
            font-size: 2.5rem;
            line-height: 1.5;
            letter-spacing: .02em;
            text-transform: none;
        }

        .news-archive,
        .entry-page-body {
            padding-top: 0;
            padding-bottom: clamp(72px, 9vw, 120px);
        }

        .news-archive .news-grid {
            grid-template-columns: repeat(3, minmax(0, 1fr));
            row-gap: 48px;
            padding-top: 32px;
        }

        .news .news-card,
        .news .news-meta,
        .news .news-title,
        .news .news-more-link,
        .news .btn,
        .news-pagination,
        .news-single-article,
        .news-single-kicker,
        .news-single-date,
        .news-back-link,
        .entry-content,
        .entry-content * {
            font-family: 'Noto Sans JP', -apple-system, sans-serif;
        }

        .news .news-card {
            min-width: 0;
            overflow-wrap: anywhere;
        }

        .news .news-meta,
        .news-single-date {
            font-size: .8125rem;
            font-weight: 400;
            line-height: 1.6;
            letter-spacing: .02em;
            color: var(--dim-b);
        }

        .news .news-title {
            letter-spacing: .02em;
        }

        .news-archive .news-title {
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 3;
            overflow: hidden;
        }

        .news .news-more-link,
        .news .btn,
        .news-back-link {
            font-weight: 400;
            line-height: 1.7;
            letter-spacing: .02em;
        }

        .news .news-thumb img,
        .news-single-eyecatch img {
            filter: none;
        }

        .news-pagination {
            font-size: .875rem;
            font-weight: 400;
            line-height: 1.6;
            letter-spacing: .02em;
        }

        .news-pagination .page-numbers.current {
            font-weight: 700;
        }

        .news-pagination .page-numbers.dots {
            border-color: transparent;
        }

        .news-pagination .screen-reader-text {
            position: absolute;
            max-width: 100%;
            overflow: hidden;
            clip-path: inset(50%);
        }

        .news-single-header__inner {
            min-height: 0;
            padding-top: calc(var(--header-h) + clamp(48px, 6vw, 80px));
            padding-bottom: clamp(32px, 4vw, 48px);
        }

        .news-single-kicker {
            font-size: .875rem;
            font-weight: 700;
            line-height: 1.6;
            letter-spacing: .02em;
        }

        .news-single-date {
            margin-top: 1.5em;
        }

        .news-single-title {
            max-width: none;
            margin-top: .6em;
            font-size: 2.5rem;
            font-weight: 700;
            line-height: 1.5;
            letter-spacing: .02em;
            overflow-wrap: anywhere;
        }

        .news-single-body {
            padding-top: 0;
            padding-bottom: clamp(72px, 9vw, 120px);
        }

        .news-single-body__inner {
            max-width: 1120px;
        }

        .news-single-eyecatch {
            aspect-ratio: 16 / 9;
        }

        .news-single-eyecatch img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .news-entry-content {
            margin-top: clamp(40px, 6vw, 64px);
        }

        .entry-page-body .entry-content {
            padding-top: 32px;
            border-top: 1px solid var(--line-b);
        }

        .entry-content {
            min-width: 0;
            font-size: 1rem;
            line-height: 1.9;
            letter-spacing: .02em;
            overflow-wrap: anywhere;
            display: flow-root;
        }

        .entry-content :where(h1, h2, h3, h4, h5, h6) {
            margin-top: 2em;
            margin-bottom: .8em;
            font-weight: 700;
            line-height: 1.5;
            scroll-margin-top: calc(var(--header-h) + 24px);
        }

        .entry-content :where(h1, h2) {
            padding-bottom: .5em;
            border-bottom: 1px solid var(--line-b);
            font-size: 1.75rem;
        }

        .entry-content h3 { font-size: 1.375rem; }
        .entry-content h4 { font-size: 1.125rem; }
        .entry-content :where(h5, h6) { font-size: 1rem; }

        .entry-content :where(p, ul, ol, dl) {
            margin-block: 1.4em;
        }

        .entry-content :where(ul, ol) {
            padding-left: 1.6em;
        }

        .entry-content ul { list-style: disc outside; }
        .entry-content ol { list-style: decimal outside; }
        .entry-content ul ul { list-style-type: circle; }
        .entry-content li { margin-block: .4em; }
        .entry-content li > :where(ul, ol) { margin-block: .4em; }
        .entry-content strong { font-weight: 700; }
        .entry-content em { font-style: italic; }

        .entry-content blockquote {
            margin-block: 2em;
            padding: .2em 0 .2em 1.4em;
            border-left: 1px solid #000;
        }

        .entry-content blockquote > :first-child { margin-top: 0; }
        .entry-content blockquote > :last-child { margin-bottom: 0; }

        .entry-content a {
            text-decoration: underline;
            text-underline-offset: .2em;
        }

        .entry-content a:hover { text-decoration-thickness: .12em; }

        .entry-content img {
            max-width: 100%;
            height: auto;
            margin-block: 1.5em;
        }

        .entry-content :where(figure, .wp-block-image) {
            max-width: 100%;
            margin: 2em 0;
        }

        .entry-content figure img { margin-block: 0; }

        .entry-content figcaption {
            margin-top: .7em;
            font-size: .8125rem;
            line-height: 1.7;
            color: var(--dim-b);
            text-align: left;
        }

        .entry-content :where(.alignwide, .alignfull) {
            width: 100%;
            max-width: 100%;
            margin-inline: 0;
        }

        .entry-content :where(.alignleft, .alignright, .aligncenter) {
            float: none;
            max-width: 100%;
        }

        .entry-content .aligncenter { margin-inline: auto; }
        .entry-content .alignright { margin-left: auto; }

        .entry-content :where(table, .wp-block-table) {
            max-width: 100%;
            overflow-x: auto;
        }

        .entry-content table {
            display: block;
            width: 100%;
            margin-block: 2em;
            border-collapse: collapse;
            font-size: .9375rem;
            line-height: 1.7;
        }

        .entry-content .wp-block-table table { margin: 0; }

        .entry-content :where(th, td) {
            padding: .8em 1em;
            border: 1px solid var(--line-b);
            text-align: left;
            vertical-align: top;
        }

        .entry-content th { font-weight: 700; }
        .entry-content pre { max-width: 100%; overflow-x: auto; padding: 24px; border: 1px solid var(--line-b); }
        .entry-content hr { margin-block: 32px; border: 0; border-top: 1px solid var(--line-b); }
        .entry-content > :first-child { margin-top: 0; }
        .entry-content > :last-child { margin-bottom: 0; }

        .news-adjacent {
            display: grid;
            grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
            align-items: center;
            gap: 32px;
            margin-top: clamp(48px, 7vw, 80px);
        }

        .news-adjacent-link {
            grid-column: 1;
            grid-row: 1;
            justify-self: start;
            min-width: 0;
            padding-block: 12px;
            overflow-wrap: anywhere;
        }

        .news-adjacent-link--next {
            grid-column: 3;
            justify-self: end;
            text-align: right;
        }

        .news-adjacent-label {
            display: block;
            font-size: .8125rem;
            line-height: 1.6;
            color: var(--dim-b);
        }

        .news-adjacent-link:hover .news-adjacent-label {
            text-decoration: underline;
            text-underline-offset: .2em;
        }

        .news-back { grid-column: 2; grid-row: 1; min-width: 0; text-align: center; }
        .news-back-link { max-width: 100%; justify-content: center; white-space: normal; }

        @media (max-width:1000px) {
            .news-archive .news-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        }

        @media (max-width:640px) {
            .entry-page-title { font-size: 3.5rem; }
            .entry-page-main .entry-page-title { font-size: 1.75rem; }
            .news-single-title { font-size: 1.75rem; }
            .news-archive .news-grid { grid-template-columns: minmax(0, 1fr); }
            .news-adjacent { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
            .news-adjacent-link--next { grid-column: 2; }
            .news-back { grid-column: 1 / -1; grid-row: 2; }
            .news-back:only-child { grid-row: 1; }
            .news-back-link { display: flex; width: 100%; }
        }

        /* Privacy Policy: plain text without divider lines. */
        .entry-privacy-page .entry-content {
            border-top: 0;
        }

        .entry-privacy-page .entry-content :where(h1, h2) {
            border-bottom: 0;
        }

        /* ==========================================================
   CONTACT PAGE / CONTACT FORM 7
   ========================================================== */
        .contact-page-main,
        .contact-page-header,
        .contact-form-section {
            background: #fff;
            color: #000;
        }

        .contact-page-header__inner {
            display: grid;
            min-height: 52svh;
            grid-template-columns: 1fr;
            align-content: center;
            row-gap: clamp(28px, 4vw, 48px);
            padding-top: calc(var(--header-h) + clamp(40px, 5vw, 72px));
            padding-bottom: clamp(48px, 6vw, 80px);
        }

        .contact-page-header__heading,
        .contact-page-header__copy {
            justify-self: center;
            max-width: 720px;
            text-align: center;
        }

        .contact-page-header__title {
            font-size: 5rem;
        }

        .contact-page-header__lead {
            font-family: 'Noto Sans JP', -apple-system, sans-serif;
            font-size: 1.125rem;
            font-weight: 700;
            line-height: 1.8;
            letter-spacing: .02em;
        }

        .contact-form-section {
            padding-bottom: clamp(88px, 11vw, 152px);
        }

        .contact-form-wrap {
            max-width: 864px;
        }

        .contact-form-content {
            max-width: 720px;
            margin-inline: auto;
            font-family: 'Noto Sans JP', -apple-system, sans-serif;
            font-size: 1rem;
            line-height: 1.8;
            letter-spacing: .02em;
        }

        .contact-form-content :where(.form-row, .form-consent, .form-submit) p {
            margin: 0;
        }

        .contact-form-content :where(.form-row, .form-consent, .form-submit) br {
            display: none;
        }

        .contact-form-content .form-row + .form-row,
        .contact-form-content .form-consent,
        .contact-form-content .form-submit {
            margin-top: 32px;
        }

        .contact-form-content .form-row label,
        .contact-form-content .form-label {
            font-weight: 700;
        }

        .contact-form-content .form-required {
            display: inline-block;
            margin-left: .7em;
            padding: .15em .55em;
            border: 1px solid #000;
            font-size: .6875rem;
            font-weight: 700;
            line-height: 1.5;
            letter-spacing: .06em;
            vertical-align: .12em;
        }

        .contact-form-content .wpcf7-form-control-wrap {
            display: block;
            margin-top: 12px;
        }

        .contact-form-content :where(input[type='text'], input[type='email'], input[type='tel'], input[type='url'], input[type='number'], select, textarea) {
            width: 100%;
            max-width: 100%;
            padding: .9em 1em;
            border: 1px solid #000;
            border-radius: 0;
            background: #fff;
            color: #000;
            font-family: 'Noto Sans JP', -apple-system, sans-serif;
            font-size: 1rem;
            line-height: 1.6;
            letter-spacing: .02em;
        }

        .contact-form-content :where(input, select, textarea):focus {
            outline: 2px solid #000;
            outline-offset: 3px;
        }

        .contact-form-content :where(input, textarea)::placeholder {
            color: rgba(0, 0, 0, .45);
            opacity: 1;
        }

        .contact-form-content select {
            appearance: none;
            padding-right: 3em;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23000' stroke-width='1.5'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 1em center;
            background-size: .75rem auto;
        }

        .contact-form-content textarea {
            min-height: 12rem;
            resize: vertical;
        }

        .contact-form-content .form-consent {
            padding-top: 24px;
            border-top: 1px solid var(--line-b);
        }

        .contact-form-content .form-consent .wpcf7-form-control-wrap {
            margin-top: 0;
        }

        .contact-form-content .form-consent .wpcf7-acceptance,
        .contact-form-content .form-consent .wpcf7-list-item {
            display: block;
        }

        .contact-form-content .form-consent .wpcf7-list-item {
            margin: 0;
        }

        .contact-form-content .form-consent label {
            display: grid;
            grid-template-columns: auto minmax(0, 1fr);
            gap: .8em;
            align-items: start;
            cursor: pointer;
        }

        .contact-form-content .form-consent input[type='checkbox'] {
            appearance: none;
            width: 1.375rem;
            height: 1.375rem;
            margin-top: .2em;
            border: 1px solid #000;
            border-radius: 0;
            background: #fff;
            flex: 0 0 auto;
        }

        .contact-form-content .form-consent input[type='checkbox']:checked {
            background: #000;
            box-shadow: inset 0 0 0 4px #fff;
        }

        .contact-form-content .form-consent input[type='checkbox']:focus {
            outline: 2px solid #000;
            outline-offset: 3px;
        }

        .contact-form-content .form-submit {
            text-align: center;
        }

        .contact-form-content .form-submit p {
            position: relative;
        }

        .contact-form-content input[type='submit'].wpcf7-submit {
            min-width: 14rem;
            padding: 1.1em 1.8em;
            border: 1px solid #000;
            border-radius: 0;
            background: #fff;
            color: #000;
            font-family: 'Noto Sans JP', -apple-system, sans-serif;
            font-size: 1rem;
            font-weight: 700;
            line-height: 1.6;
            letter-spacing: .04em;
            cursor: pointer;
            transition: background .35s var(--ease-out), color .35s var(--ease-out);
        }

        .contact-form-content input[type='submit'].wpcf7-submit:hover {
            background: #000;
            color: #fff;
        }

        .contact-form-content input[type='submit'].wpcf7-submit:disabled {
            cursor: wait;
            opacity: .55;
        }

        .contact-form-content .wpcf7-spinner {
            margin: 0 0 0 16px;
            vertical-align: middle;
        }

        .contact-form-content .wpcf7-not-valid {
            outline: 1px solid #000;
            outline-offset: 2px;
        }

        .contact-form-content .wpcf7-not-valid-tip {
            display: flex;
            gap: .6em;
            align-items: flex-start;
            margin-top: .7em;
            color: #000;
            font-size: .8125rem;
            font-weight: 700;
            line-height: 1.6;
        }

        .contact-form-content .wpcf7-not-valid-tip::before {
            content: '!';
            display: inline-flex;
            width: 1.25rem;
            height: 1.25rem;
            flex: 0 0 1.25rem;
            align-items: center;
            justify-content: center;
            border: 1px solid #000;
            font-size: .75rem;
            font-weight: 700;
            line-height: 1;
        }

        .contact-form-content .wpcf7 form .wpcf7-response-output {
            margin: 32px 0 0;
            padding: 1em 1.2em;
            border: 1px solid #000;
            color: #000;
            font-size: .875rem;
            font-weight: 700;
            line-height: 1.7;
        }

        .contact-form-content .wpcf7 form .wpcf7-response-output:empty {
            display: none;
        }

        .contact-form-content .wpcf7 form.invalid .wpcf7-response-output::before,
        .contact-form-content .wpcf7 form.failed .wpcf7-response-output::before,
        .contact-form-content .wpcf7 form.unaccepted .wpcf7-response-output::before {
            content: '!';
            display: inline-block;
            margin-right: .7em;
            font-weight: 700;
        }

        .contact-form-content .wpcf7 form.sent .wpcf7-response-output::before {
            content: '\2713';
            display: inline-block;
            margin-right: .7em;
            font-weight: 700;
        }

        @media (max-width:640px) {
            .contact-page-header__inner {
                min-height: 46svh;
            }

            .contact-page-header__title {
                font-size: 3.5rem;
            }

            .contact-page-header__lead {
                font-size: 1rem;
                text-align: left;
            }

            .contact-form-content input[type='submit'].wpcf7-submit {
                width: 100%;
                min-width: 0;
            }
        }

        /* ==========================================================
   THANK YOU PAGE
   ========================================================== */
        .thanks-page-main,
        .thanks-page-header,
        .thanks-content-section {
            background: #fff;
            color: #000;
        }

        .thanks-page-article {
            display: grid;
            min-height: 100svh;
            grid-template-rows: auto 1fr;
        }

        .thanks-page-header__title {
            font-size: clamp(3rem, 14vw, 5rem);
            white-space: nowrap;
        }

        .thanks-content-section {
            padding-bottom: clamp(88px, 11vw, 152px);
        }

        .thanks-content-wrap {
            max-width: 864px;
            text-align: center;
        }

        .thanks-message {
            max-width: 720px;
            margin-inline: auto;
            font-family: 'Noto Sans JP', -apple-system, sans-serif;
            line-height: 1.8;
            letter-spacing: .02em;
        }

        .thanks-message__lead {
            font-size: 1.375rem;
            font-weight: 700;
        }

        .thanks-message__text {
            margin-top: 1em;
            font-size: 1rem;
        }

        .thanks-home-link {
            margin-top: 40px;
        }
