@charset "UTF-8";

/* =========================================================
   Garden SPA - 白緑 / 森林イメージ メンズエステ
   ========================================================= */

:root {
    --gs-forest-900: #1c2a20;
    --gs-forest-800: #25382b;
    --gs-forest-700: #2f4a3a;
    --gs-forest-600: #3a5a40;
    --gs-green-500: #5b7f5b;
    --gs-green-400: #6f9a6f;
    --gs-sage: #a3b18a;
    --gs-sage-soft: #c9d3b6;
    --gs-cream: #f6f4ec;
    --gs-ivory: #faf9f4;
    --gs-white: #ffffff;
    --gs-gold: #c9b27d;
    --gs-gold-soft: #ddca9d;
    --gs-ink: #2f3b33;
    --gs-ink-soft: #5d6a5f;

    --gs-serif-en: "Cormorant Garamond", "Times New Roman", serif;
    --gs-serif-jp: "Shippori Mincho", "Yu Mincho", "Hiragino Mincho ProN", serif;
    --gs-sans-jp: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
}

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: 72px;
}

body.gs-body {
    margin: 0;
    font-family: var(--gs-sans-jp);
    color: var(--gs-ink);
    background-color: var(--gs-ivory);
    line-height: 1.9;
    -webkit-font-smoothing: antialiased;
    letter-spacing: 0.02em;
}

img {
    max-width: 100%;
    height: auto;
}

a {
    color: inherit;
    text-decoration: none;
    transition: color 0.25s ease, opacity 0.25s ease;
}

/* =========================================================
   Loading
   ========================================================= */
.gs-loader {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    background:
        radial-gradient(circle at 50% 35%, rgba(111, 154, 111, 0.18), transparent 60%),
        linear-gradient(160deg, var(--gs-forest-900) 0%, var(--gs-forest-700) 100%);
    transition: opacity 0.7s ease, visibility 0.7s ease;
}

.gs-loader.is-loaded {
    opacity: 0;
    visibility: hidden;
}

.gs-loader__inner {
    text-align: center;
    padding: 0 24px;
}

.gs-loader__logo {
    font-family: var(--gs-serif-en);
    font-size: clamp(2rem, 7vw, 3.4rem);
    font-weight: 600;
    letter-spacing: 0.18em;
    color: var(--gs-cream);
    margin: 0 0 26px;
    opacity: 0;
    transform: translateY(12px);
    animation: gsLoaderFadeUp 1s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
}

.gs-loader__bar {
    position: relative;
    width: min(240px, 60vw);
    height: 2px;
    margin: 0 auto;
    background: rgba(246, 244, 236, 0.14);
    overflow: hidden;
}

.gs-loader__bar span {
    position: absolute;
    top: 0;
    left: -40%;
    height: 100%;
    width: 40%;
    background: linear-gradient(to right, transparent 0%, var(--gs-gold) 50%, var(--gs-gold-soft) 100%);
    animation: gsLoaderSlide 1.25s ease-in-out infinite;
}

.gs-loader__text {
    margin: 18px 0 0;
    font-family: var(--gs-serif-en);
    font-size: 0.72rem;
    font-weight: 500;
    letter-spacing: 0.5em;
    text-indent: 0.5em;
    color: rgba(246, 244, 236, 0.6);
    animation: gsLoaderBlink 1.6s ease-in-out infinite;
}

@keyframes gsLoaderSlide {
    0% { left: -40%; }
    100% { left: 100%; }
}

@keyframes gsLoaderFadeUp {
    to { opacity: 1; transform: translateY(0); }
}

@keyframes gsLoaderBlink {
    0%, 100% { opacity: 0.35; }
    50% { opacity: 0.9; }
}

@media (prefers-reduced-motion: reduce) {
    .gs-loader__logo,
    .gs-loader__bar span,
    .gs-loader__text {
        animation: none;
    }
    .gs-loader__logo {
        opacity: 1;
        transform: none;
    }
}

/* =========================================================
   Navbar
   ========================================================= */
.gs-navbar {
    padding: 1.1rem 0;
    background: transparent;
    transition: background-color 0.4s ease, padding 0.4s ease, box-shadow 0.4s ease;
}

.gs-navbar.is-scrolled {
    background-color: rgba(28, 42, 32, 0.92);
    backdrop-filter: blur(8px);
    padding: 0.55rem 0;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.18);
}

.gs-navbar__inner {
    --bs-gutter-x: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    max-width: none;
    padding-left: clamp(0.75rem, 2vw, 1.75rem);
    padding-right: clamp(0.75rem, 2vw, 1.75rem);
}

.gs-brand {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    padding: 0;
    margin: 0;
    flex-shrink: 0;
}

.gs-brand__logo {
    display: block;
    width: clamp(10.5rem, 38vw, 21.875rem);
    height: auto;
    aspect-ratio: 350 / 100;
    object-fit: contain;
    object-position: left center;
}

.gs-navbar.is-scrolled .gs-brand__logo {
    width: clamp(9rem, 34vw, 18.75rem);
}

.gs-nav {
    gap: 0.25rem;
}

.gs-nav__link {
    color: var(--gs-cream);
    font-family: var(--gs-serif-en);
    font-size: 0.95rem;
    letter-spacing: 0.16em;
    padding: 0.4rem 0.95rem;
    position: relative;
    opacity: 0.92;
}

.gs-nav__link::after {
    content: "";
    position: absolute;
    left: 0.95rem;
    right: 0.95rem;
    bottom: 0.15rem;
    height: 1px;
    background: var(--gs-gold);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.3s ease;
}

.gs-nav__link:hover,
.gs-nav__link[aria-current="page"] {
    color: var(--gs-white);
    opacity: 1;
}

.gs-nav__link:hover::after,
.gs-nav__link[aria-current="page"]::after {
    transform: scaleX(1);
}

.gs-nav__link--cta {
    margin-left: 0.6rem;
    border: 2px solid var(--gs-gold);
    border-radius: 999px;
    padding: 0.48rem 1.15rem;
    font-family: var(--gs-sans-jp);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--gs-forest-900);
    background: linear-gradient(180deg, #e8d9a8 0%, var(--gs-gold) 45%, #b9a066 100%);
    white-space: nowrap;
    opacity: 1;
    box-shadow:
        0 2px 10px rgba(0, 0, 0, 0.28),
        inset 0 1px 0 rgba(255, 255, 255, 0.35);
}

.gs-nav__link--cta::after {
    display: none;
}

.gs-nav__link--cta:hover,
.gs-nav__link--cta:focus-visible {
    background: var(--gs-cream);
    border-color: var(--gs-cream);
    color: var(--gs-forest-800);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.32);
}

/* Toggler */
.gs-toggler {
    border: none;
    padding: 0.4rem;
    width: 42px;
    height: 38px;
    position: relative;
    background: transparent;
}

.gs-toggler:focus {
    box-shadow: none;
}

.gs-toggler__bar {
    display: block;
    width: 26px;
    height: 2px;
    margin: 5px auto;
    background: var(--gs-cream);
    transition: transform 0.3s ease, opacity 0.3s ease;
}

/* =========================================================
   Hero
   ========================================================= */
.gs-hero {
    position: relative;
    min-height: 100vh;
    display: flex;
    align-items: center;
    overflow: hidden;
    color: var(--gs-cream);
}

.gs-hero__bg {
    position: absolute;
    inset: 0;
    background: var(--gs-hero-bg, url("../images/common/top01.png")) center center / cover no-repeat;
    transform: scale(1.04);
    animation: gsHeroZoom 16s ease-out forwards;
}

@keyframes gsHeroZoom {
    from { transform: scale(1.12); }
    to   { transform: scale(1.0); }
}

.gs-hero__scrim {
    position: absolute;
    inset: 0;
    background:
        linear-gradient(90deg, rgba(20, 30, 22, 0.78) 0%, rgba(20, 30, 22, 0.45) 42%, rgba(20, 30, 22, 0.08) 70%),
        linear-gradient(0deg, rgba(20, 30, 22, 0.6) 0%, rgba(20, 30, 22, 0) 35%);
}

.gs-hero__inner {
    position: relative;
    z-index: 2;
    padding-top: 6rem;
    padding-bottom: 5rem;
}

.gs-hero__content {
    max-width: 620px;
}

.gs-hero__ornament {
    display: block;
    width: 150px;
    height: auto;
    margin: 0 0 0.7rem;
}

.gs-hero__eyebrow {
    font-family: var(--gs-serif-jp);
    letter-spacing: 0.5em;
    font-size: 0.95rem;
    color: var(--gs-gold-soft);
    margin: 0 0 0.6rem;
    text-indent: 0.5em;
}

.gs-hero__divider {
    display: block;
    width: 100%;
    height: auto;
}

.gs-hero__title {
    font-family: var(--gs-serif-en);
    font-weight: 600;
    font-size: clamp(3.2rem, 9vw, 5.8rem);
    line-height: 1.05;
    margin: 0 0 1rem;
    color: var(--gs-cream);
    text-shadow: 0 4px 30px rgba(0, 0, 0, 0.4);
    letter-spacing: 0.04em;
}

.gs-hero__tagline-wrap {
    width: max-content;
    max-width: 100%;
    margin: 0 0 1.6rem;
}

.gs-hero__tagline {
    font-family: var(--gs-serif-jp);
    font-size: clamp(1.15rem, 2.6vw, 1.7rem);
    font-weight: 500;
    letter-spacing: 0.14em;
    margin: 0 0 0.5rem;
}

.gs-hero__lead {
    font-size: 0.95rem;
    line-height: 2.1;
    color: rgba(246, 244, 236, 0.9);
    margin: 0 0 2.4rem;
}

.gs-hero__features {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    gap: clamp(1.2rem, 4vw, 2.8rem);
    flex-wrap: wrap;
}

.gs-hero__feature {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    max-width: 150px;
}

.gs-hero__feature-ico {
    display: block;
    width: 50px;
    height: 50px;
    margin-bottom: 0.4rem;
    object-fit: contain;
}

.gs-hero__feature-name {
    font-family: var(--gs-serif-jp);
    font-size: 1.02rem;
    font-weight: 600;
    letter-spacing: 0.12em;
}

.gs-hero__feature-desc {
    font-size: 0.78rem;
    line-height: 1.7;
    color: rgba(246, 244, 236, 0.78);
}

.gs-hero__feature-line {
    display: inline-block;
    white-space: nowrap;
}

.gs-hero__scroll {
    position: absolute;
    left: 50%;
    bottom: 1.4rem;
    transform: translateX(-50%);
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.6rem;
    color: var(--gs-cream);
}

.gs-hero__scroll-text {
    font-family: var(--gs-serif-en);
    font-size: 0.72rem;
    letter-spacing: 0.32em;
}

.gs-hero__scroll-line {
    width: 1px;
    height: 56px;
    background: linear-gradient(var(--gs-gold-soft), transparent);
    position: relative;
    overflow: hidden;
}

.gs-hero__scroll-line::after {
    content: "";
    position: absolute;
    top: -50%;
    left: 0;
    width: 100%;
    height: 50%;
    background: var(--gs-gold);
    animation: gsScroll 1.8s ease-in-out infinite;
}

@keyframes gsScroll {
    0%   { transform: translateY(0); opacity: 0; }
    30%  { opacity: 1; }
    100% { transform: translateY(220%); opacity: 0; }
}

/* =========================================================
   Section commons
   ========================================================= */
.gs-section {
    padding: clamp(4.5rem, 9vw, 7.5rem) 0;
}

.gs-section__head {
    margin-bottom: 3rem;
}

.gs-en {
    font-family: var(--gs-serif-en);
    font-size: 1.7rem;
    letter-spacing: 0.22em;
    color: var(--gs-green-500);
    margin: 0 0 0.6rem;
    font-weight: 500;
}

.gs-en--light {
    color: var(--gs-gold-soft);
}

.gs-rule {
    width: 54px;
    height: 1px;
    background: var(--gs-sage);
    position: relative;
    margin-bottom: 1.4rem;
}

.gs-rule::before {
    content: "\2766";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: var(--gs-ivory);
    padding: 0 0.5rem;
    color: var(--gs-sage);
    font-size: 0.75rem;
}

.gs-rule--light {
    background: rgba(221, 202, 157, 0.6);
}

.gs-rule--light::before {
    background: transparent;
    color: var(--gs-gold-soft);
}

.gs-section__title {
    font-family: var(--gs-serif-jp);
    font-weight: 600;
    font-size: clamp(1.7rem, 4vw, 2.5rem);
    letter-spacing: 0.1em;
    color: var(--gs-forest-700);
    margin: 0;
    line-height: 1.5;
}

.gs-section__title--light {
    color: var(--gs-cream);
}

.gs-section__lead {
    margin: 1rem 0 0;
    color: var(--gs-ink-soft);
    font-size: 0.96rem;
}

.gs-section__lead--light {
    color: rgba(246, 244, 236, 0.85);
}

/* =========================================================
   Concept
   ========================================================= */
.gs-concept {
    background:
        radial-gradient(circle at 12% 8%, rgba(163, 177, 138, 0.18), transparent 45%),
        radial-gradient(circle at 88% 92%, rgba(163, 177, 138, 0.16), transparent 45%),
        var(--gs-ivory);
}

.gs-concept__lead {
    font-family: var(--gs-serif-jp);
    font-size: 1.18rem;
    color: var(--gs-forest-600);
    letter-spacing: 0.08em;
    line-height: 2;
    margin-bottom: 1.4rem;
    text-align: center;
}

@media (max-width: 575.98px) {
    .gs-concept__lead,
    .gs-reservation__lead {
        text-align: left;
    }
}

.gs-concept__text {
    color: var(--gs-ink-soft);
    font-size: 0.95rem;
}

.gs-info-sns {
    margin-top: 3.5rem;
}

.gs-panel-head {
    margin-bottom: 2rem;
}

.gs-panel-head__en {
    font-family: var(--gs-serif-en);
    font-size: clamp(2rem, 5vw, 2.75rem);
    font-weight: 500;
    letter-spacing: 0.14em;
    color: var(--gs-green-500);
    margin: 0 0 0.35rem;
    line-height: 1.1;
}

.gs-panel-head__jp {
    font-family: var(--gs-serif-jp);
    font-size: 0.92rem;
    font-weight: 500;
    letter-spacing: 0.32em;
    text-indent: 0.32em;
    color: var(--gs-forest-600);
    margin: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.85rem;
}

.gs-panel-head__jp::before,
.gs-panel-head__jp::after {
    content: "";
    width: 2.2rem;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gs-gold));
}

.gs-panel-head__jp::after {
    background: linear-gradient(90deg, var(--gs-gold), transparent);
}

.gs-info-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.gs-info-list__item + .gs-info-list__item {
    border-top: 1px solid rgba(163, 177, 138, 0.35);
}

.gs-info-card {
    display: flex;
    align-items: flex-start;
    gap: 1.1rem;
    padding: 1.35rem 0.25rem;
    transition: opacity 0.3s ease;
}

.gs-info-card:hover {
    opacity: 0.82;
}

.gs-info-card__thumb {
    flex: 0 0 clamp(7.5rem, 32vw, 9.5rem);
    width: clamp(7.5rem, 32vw, 9.5rem);
    height: auto;
    overflow: hidden;
    border-radius: 4px;
    background: var(--gs-sage-soft);
    box-shadow: 0 6px 18px rgba(47, 74, 58, 0.1);
}

.gs-info-card__thumb img {
    width: 100%;
    height: auto;
    object-fit: contain;
    display: block;
}

.gs-info-card__body {
    flex: 1;
    min-width: 0;
}

.gs-info-card__meta {
    font-family: var(--gs-sans-jp);
    font-size: 0.75rem;
    color: var(--gs-green-500);
    letter-spacing: 0.06em;
    margin: 0 0 0.25rem;
}

.gs-info-card__title {
    font-family: var(--gs-serif-jp);
    font-size: clamp(0.95rem, 2.4vw, 1.08rem);
    font-weight: 600;
    color: var(--gs-forest-700);
    letter-spacing: 0.06em;
    line-height: 1.55;
    margin: 0 0 0.35rem;
}

.gs-info-card__date {
    display: block;
    font-family: var(--gs-sans-jp);
    font-size: 0.78rem;
    font-variant-numeric: tabular-nums;
    color: var(--gs-ink-soft);
    letter-spacing: 0.05em;
    margin: 0 0 0.55rem;
}

.gs-info-card__excerpt {
    font-family: var(--gs-sans-jp);
    font-size: 0.82rem;
    line-height: 1.85;
    color: var(--gs-ink-soft);
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.gs-info-more-wrap {
    margin: 1.6rem 0 0;
}

.gs-info-more {
    display: inline-block;
    min-width: min(100%, 20rem);
    padding: 0.85rem 2rem;
    border: 1px solid var(--gs-gold);
    font-family: var(--gs-serif-jp);
    font-size: 0.9rem;
    letter-spacing: 0.12em;
    color: var(--gs-forest-700);
    transition: background-color 0.3s ease, color 0.3s ease;
}

.gs-info-more span {
    margin-left: 0.35em;
    font-family: var(--gs-serif-en);
}

.gs-info-more:hover {
    background: var(--gs-gold);
    color: var(--gs-forest-900);
}

.gs-sns-embed {
    background: var(--gs-white);
    border: 1px solid rgba(163, 177, 138, 0.28);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 10px 28px rgba(47, 74, 58, 0.08);
}

.gs-sns-embed__frame {
    display: block;
    width: 100%;
    min-height: 520px;
    border: 0;
    background: var(--gs-white);
}

.gs-sns-embed__link {
    margin: 0;
    padding: 0.75rem 1rem;
    text-align: center;
    font-size: 0.8rem;
    border-top: 1px solid rgba(163, 177, 138, 0.22);
    background: var(--gs-ivory);
}

.gs-sns-embed__link a {
    font-family: var(--gs-serif-en);
    letter-spacing: 0.08em;
    color: var(--gs-green-500);
}

.gs-sns-embed__link a:hover {
    color: var(--gs-forest-700);
}

.gs-recruit-banner-wrap {
    margin-top: clamp(2rem, 4vw, 3rem);
}

.gs-recruit-banner {
    display: block;
    position: relative;
    max-width: 100%;
    margin: 0 auto;
    overflow: hidden;
    border-radius: 10px;
    box-shadow: 0 14px 36px rgba(47, 74, 58, 0.14);
    transition: transform 0.35s ease, box-shadow 0.35s ease;
}

.gs-recruit-banner__img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1774 / 887;
    object-fit: cover;
    vertical-align: middle;
}

.gs-recruit-banner__shine {
    position: absolute;
    inset: -20% -60%;
    background: linear-gradient(
        115deg,
        transparent 38%,
        rgba(255, 255, 255, 0.15) 44%,
        rgba(255, 248, 220, 0.75) 50%,
        rgba(255, 255, 255, 0.35) 56%,
        transparent 62%
    );
    transform: translateX(-130%) skewX(-12deg);
    pointer-events: none;
    opacity: 0;
}

.gs-recruit-banner:hover {
    transform: translateY(-3px);
    box-shadow: 0 18px 44px rgba(47, 74, 58, 0.2);
}

.gs-recruit-banner:hover .gs-recruit-banner__shine {
    opacity: 1;
    animation: gs-recruit-banner-shine 0.9s ease-in-out;
}

.gs-recruit-banner:hover .gs-recruit-banner__img {
    filter: brightness(1.04) saturate(1.05);
}

@keyframes gs-recruit-banner-shine {
    0% {
        transform: translateX(-130%) skewX(-12deg);
    }

    100% {
        transform: translateX(130%) skewX(-12deg);
    }
}

@media (prefers-reduced-motion: reduce) {
    .gs-recruit-banner:hover .gs-recruit-banner__shine {
        animation: none;
        opacity: 0.35;
        transform: translateX(0) skewX(-12deg);
    }

    .gs-recruit-banner:hover {
        transform: none;
    }
}

@media (max-width: 991.98px) {
    .gs-info-sns .col-lg-6 + .col-lg-6 {
        margin-top: 0.5rem;
    }

    .gs-sns-embed__frame {
        min-height: 480px;
    }
}

@media (max-width: 575.98px) {
    .gs-info-card {
        flex-direction: column;
        align-items: center;
        text-align: center;
        padding: 1.2rem 0;
    }

    .gs-info-card__thumb {
        flex: 0 0 auto;
        width: 100%;
    }
}

/* =========================================================
   System
   ========================================================= */
.gs-system {
    position: relative;
    background:
        linear-gradient(rgba(28, 42, 32, 0.92), rgba(37, 56, 43, 0.94)),
        url("../images/common/subtop.jpg") center center / cover fixed no-repeat;
}

.gs-price {
    background: rgba(246, 244, 236, 0.07);
    border: 1px solid rgba(221, 202, 157, 0.35);
    border-radius: 14px;
    padding: clamp(1.8rem, 4vw, 2.6rem) clamp(1.4rem, 4vw, 2.4rem);
    color: var(--gs-cream);
    backdrop-filter: blur(2px);
}

.gs-price__title {
    font-family: var(--gs-serif-jp);
    font-size: clamp(1.2rem, 3vw, 1.45rem);
    font-weight: 600;
    letter-spacing: 0.14em;
    text-align: center;
    color: var(--gs-gold-soft);
    margin: 0 0 0.75rem;
}

.gs-price__lead {
    font-family: var(--gs-serif-jp);
    font-size: clamp(0.92rem, 2.4vw, 1.02rem);
    letter-spacing: 0.08em;
    text-align: center;
    color: rgba(246, 244, 236, 0.92);
    margin: 0 0 1.6rem;
    line-height: 1.8;
}

.gs-price__list,
.gs-price__option-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.gs-price__item {
    position: relative;
    padding: 0.55rem 0 0.55rem 1.35rem;
    font-family: var(--gs-sans-jp);
    font-size: clamp(0.9rem, 2.2vw, 1rem);
    letter-spacing: 0.06em;
    line-height: 1.6;
    border-bottom: 1px solid rgba(221, 202, 157, 0.18);
}

.gs-price__list .gs-price__item::before {
    content: "▪";
    position: absolute;
    left: 0;
    top: 0.55rem;
    color: var(--gs-gold-soft);
    font-size: 0.85em;
}

.gs-price__option-list .gs-price__item::before {
    content: "・";
    position: absolute;
    left: 0;
    top: 0.55rem;
    color: rgba(246, 244, 236, 0.85);
}

.gs-price__row {
    display: flex;
    align-items: baseline;
    gap: 0.2rem;
    width: 100%;
}

.gs-price__row:not(:has(.gs-price__label)) {
    justify-content: flex-end;
}

.gs-price__label {
    flex: 0 1 auto;
    min-width: 0;
}

.gs-price__leader {
    flex: 1 1 auto;
    min-width: 1.25rem;
    margin: 0 0.2rem;
    border-bottom: 1px dotted rgba(221, 202, 157, 0.55);
    transform: translateY(-0.12em);
}

.gs-price__amount {
    flex: 0 0 auto;
    margin-left: auto;
    text-align: right;
    white-space: nowrap;
}

.gs-price__desc {
    margin: 0.4rem 0 0;
    padding: 0;
    font-size: 0.88em;
    line-height: 1.65;
    letter-spacing: 0.05em;
    color: rgba(246, 244, 236, 0.82);
}

.gs-price__options {
    margin-top: 1.5rem;
    padding-top: 1.35rem;
    border-top: 1px solid rgba(221, 202, 157, 0.28);
}

.gs-price__options-title {
    font-family: var(--gs-serif-jp);
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    color: var(--gs-gold-soft);
    margin: 0 0 0.5rem;
    padding-left: 1.35rem;
    position: relative;
}

.gs-price__options-title::before {
    content: "▪";
    position: absolute;
    left: 0;
    top: 0;
    color: var(--gs-gold-soft);
}

.gs-plan {
    position: relative;
    height: 100%;
    background: rgba(246, 244, 236, 0.06);
    border: 1px solid rgba(221, 202, 157, 0.35);
    border-radius: 14px;
    padding: 2.6rem 1.6rem;
    text-align: center;
    color: var(--gs-cream);
    backdrop-filter: blur(2px);
    transition: transform 0.35s ease, border-color 0.35s ease, background-color 0.35s ease;
}

.gs-plan:hover {
    transform: translateY(-6px);
    border-color: var(--gs-gold);
    background: rgba(246, 244, 236, 0.1);
}

.gs-plan--featured {
    border-color: var(--gs-gold);
    background: rgba(201, 178, 125, 0.12);
}

.gs-plan__badge {
    position: absolute;
    top: -0.9rem;
    left: 50%;
    transform: translateX(-50%);
    background: var(--gs-gold);
    color: var(--gs-forest-900);
    font-family: var(--gs-serif-jp);
    font-weight: 700;
    font-size: 0.78rem;
    letter-spacing: 0.18em;
    padding: 0.25rem 1.2rem;
    border-radius: 999px;
}

.gs-plan__name {
    font-family: var(--gs-serif-en);
    font-size: 1.3rem;
    letter-spacing: 0.22em;
    color: var(--gs-gold-soft);
    margin: 0 0 0.8rem;
}

.gs-plan__time {
    font-family: var(--gs-serif-en);
    font-size: 2.6rem;
    line-height: 1;
    margin: 0 0 0.6rem;
}

.gs-plan__time span {
    font-size: 1rem;
    letter-spacing: 0.1em;
    margin-left: 0.2rem;
    color: rgba(246, 244, 236, 0.7);
}

.gs-plan__price {
    font-family: var(--gs-serif-en);
    font-size: 1.9rem;
    color: var(--gs-cream);
    margin: 0 0 1rem;
    letter-spacing: 0.04em;
}

.gs-plan__yen {
    font-size: 1.1rem;
    margin-right: 0.15rem;
    color: var(--gs-gold-soft);
}

.gs-plan__desc {
    font-size: 0.85rem;
    color: rgba(246, 244, 236, 0.78);
    margin: 0;
    line-height: 1.8;
}

.gs-system__note {
    margin: 2.4rem 0 0;
    font-size: 0.82rem;
    color: rgba(246, 244, 236, 0.66);
}

/* =========================================================
   Therapist
   ========================================================= */
.gs-therapist {
    background: var(--gs-cream);
}

.gs-therapist__list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.gs-schedule-more-wrap {
    margin: 2.75rem 0 0;
}

.gs-schedule-more {
    display: inline-block;
    min-width: min(100%, 22rem);
    padding: 1.05rem 2.6rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.92rem;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-indent: 0.2em;
    color: var(--gs-gold-soft);
    background: linear-gradient(165deg, #2e2e2e 0%, #141414 48%, #0a0a0a 100%);
    border: 1px solid rgba(201, 178, 125, 0.5);
    box-shadow:
        0 10px 28px rgba(0, 0, 0, 0.22),
        inset 0 1px 0 rgba(255, 255, 255, 0.1),
        inset 0 -1px 0 rgba(0, 0, 0, 0.35);
    transition: color 0.35s ease, border-color 0.35s ease, transform 0.35s ease, box-shadow 0.35s ease;
}

.gs-schedule-more span {
    margin-left: 0.4em;
    font-family: var(--gs-serif-en);
    letter-spacing: 0.08em;
}

.gs-schedule-more:hover {
    color: var(--gs-cream);
    border-color: var(--gs-gold);
    transform: translateY(-3px);
    box-shadow:
        0 14px 36px rgba(0, 0, 0, 0.28),
        0 0 0 1px rgba(201, 178, 125, 0.15),
        inset 0 1px 0 rgba(255, 255, 255, 0.14);
}

/* =========================================================
   Subpage
   ========================================================= */
.gs-subpage main {
    padding-top: 0;
}

.gs-subhero {
    position: relative;
    width: 100%;
    overflow: hidden;
    line-height: 0;
    background: var(--gs-forest-800);
}

.gs-subhero::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 7rem;
    background: linear-gradient(180deg, rgba(20, 30, 22, 0.55) 0%, rgba(20, 30, 22, 0) 100%);
    pointer-events: none;
    z-index: 1;
}

.gs-subhero__img {
    display: block;
    width: 100%;
    height: clamp(24rem, 58vw, 44rem);
    object-fit: cover;
    object-position: center;
}

@media (max-width: 991.98px) {
    .gs-subhero__img {
        height: clamp(16rem, 39vw, 29rem);
    }

    .gs-subhero::after {
        height: 4.5rem;
    }
}

.gs-page-head {
    padding: 2rem 0 0.5rem;
    background: var(--gs-ivory);
}

.gs-breadcrumb {
    font-family: var(--gs-sans-jp);
    font-size: 0.78rem;
    color: var(--gs-ink-soft);
    margin-bottom: 1.5rem;
    letter-spacing: 0.06em;
}

.gs-breadcrumb a {
    color: var(--gs-green-500);
}

.gs-breadcrumb a:hover {
    color: var(--gs-forest-700);
}

.gs-breadcrumb span[aria-hidden="true"] {
    margin: 0 0.45em;
    opacity: 0.55;
}

.gs-news-page {
    padding-top: 2rem;
    background: var(--gs-ivory);
    overflow: visible;
}

@media (min-width: 992px) {
    .gs-news-page__row {
        align-items: stretch;
    }

    .gs-news-page__row > aside {
        align-self: stretch;
    }
}

.gs-info-list--page .gs-info-card {
    padding: 1.35rem 0.25rem;
}

.gs-news-back {
    margin: 2.5rem 0 0;
}

.gs-news-detail__thumb {
    border-radius: 10px;
    margin-bottom: 1.5rem;
    background: var(--gs-sage-soft);
    line-height: 0;
}

.gs-news-detail__thumb img {
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    border-radius: 10px;
}

.gs-news-detail__date {
    display: block;
    font-family: var(--gs-sans-jp);
    font-size: 0.82rem;
    font-variant-numeric: tabular-nums;
    color: var(--gs-green-500);
    letter-spacing: 0.06em;
    margin-bottom: 1.25rem;
}

.gs-news-detail__body p {
    font-size: 0.96rem;
    line-height: 2;
    letter-spacing: 0.04em;
    color: var(--gs-ink);
    margin: 0 0 1.25rem;
}

.gs-news-detail__body p:last-child {
    margin-bottom: 0;
}

.gs-news-detail__body--richtext {
    font-size: 0.96rem;
    line-height: 2;
    letter-spacing: 0.04em;
    color: var(--gs-ink);
}

.gs-news-detail__body--richtext img {
    max-width: 100%;
    height: auto;
}

.gs-news-detail__body--richtext ul,
.gs-news-detail__body--richtext ol {
    padding-left: 1.25rem;
    margin-bottom: 1.25rem;
}

.gs-news-detail__missing {
    font-size: 0.94rem;
    line-height: 1.9;
    color: var(--gs-ink);
    margin: 0;
}

.gs-news-sidebar {
    position: -webkit-sticky;
    position: sticky;
    top: 5.5rem;
    z-index: 2;
    background: var(--gs-white);
    border: 1px solid rgba(163, 177, 138, 0.35);
    border-radius: 14px;
    padding: 1.5rem 1.25rem;
    box-shadow: 0 10px 28px rgba(47, 74, 58, 0.08);
}

.gs-news-sidebar__title {
    font-family: var(--gs-serif-jp);
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    color: var(--gs-forest-700);
    margin: 0 0 1.1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid rgba(163, 177, 138, 0.35);
}

.gs-news-sidebar__list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.gs-news-sidebar__item + .gs-news-sidebar__item {
    margin-top: 0.85rem;
    padding-top: 0.85rem;
    border-top: 1px solid rgba(163, 177, 138, 0.22);
}

.gs-news-sidebar__link {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    transition: opacity 0.25s ease;
}

.gs-news-sidebar__link:hover {
    opacity: 0.78;
}

.gs-news-sidebar__thumb {
    flex: 0 0 4.5rem;
    width: 4.5rem;
    height: 4.5rem;
    overflow: hidden;
    border-radius: 6px;
    background: var(--gs-sage-soft);
}

.gs-news-sidebar__thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.gs-news-sidebar__body {
    flex: 1;
    min-width: 0;
}

.gs-news-sidebar__date {
    display: block;
    font-family: var(--gs-sans-jp);
    font-size: 0.75rem;
    font-variant-numeric: tabular-nums;
    color: var(--gs-green-500);
    letter-spacing: 0.05em;
    margin-bottom: 0.35rem;
}

.gs-news-sidebar__text {
    display: block;
    font-family: var(--gs-serif-jp);
    font-size: 0.88rem;
    font-weight: 500;
    line-height: 1.6;
    letter-spacing: 0.05em;
    color: var(--gs-forest-700);
}

@media (max-width: 991.98px) {
    .gs-news-sidebar {
        position: static;
        margin-bottom: 0.5rem;
    }
}

/* =========================================================
   Roster slider (在籍セラピスト)
   ========================================================= */
.gs-roster {
    background: var(--gs-ivory);
    padding-bottom: clamp(4rem, 8vw, 6rem);
}

.gs-roster .gs-section__head {
    margin-bottom: 2rem;
}

.gs-tslider {
    width: 100%;
    margin-bottom: 2.5rem;
}

.gs-tslider__viewport {
    overflow-x: auto;
    overflow-y: hidden;
    scroll-behavior: auto;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x;
    cursor: grab;
    user-select: none;
    scrollbar-width: none;
}

.gs-tslider__viewport::-webkit-scrollbar {
    display: none;
}

.gs-tslider__viewport.is-dragging {
    cursor: grabbing;
    touch-action: none;
    scroll-behavior: auto;
}

.gs-tslider__track {
    list-style: none;
    display: flex;
    gap: 0.5rem;
    margin: 0;
    padding: 0 0.5rem;
    width: max-content;
}

.gs-tslider__slide {
    flex: 0 0 auto;
    width: calc((100vw - 3rem) / 5);
}

.gs-rcard .gs-tbadges {
    z-index: 5;
}

.gs-rcard {
    display: block;
    position: relative;
    aspect-ratio: 3 / 4;
    overflow: hidden;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
    background: var(--gs-sage-soft);
    box-shadow: 0 8px 24px rgba(47, 74, 58, 0.12);
}

.gs-rcard__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
    transition: transform 0.5s ease;
    pointer-events: none;
    -webkit-user-drag: none;
    user-select: none;
}

.gs-rcard:hover .gs-rcard__img {
    transform: scale(1.03);
}

.gs-rcard__cap {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 0.75rem 0.5rem 0.65rem;
    text-align: center;
    color: var(--gs-cream);
    background: linear-gradient(transparent, rgba(47, 74, 58, 0.55) 28%, rgba(28, 42, 32, 0.9) 100%);
}

.gs-rcard__name {
    font-family: var(--gs-serif-jp);
    font-size: clamp(0.82rem, 2.2vw, 0.98rem);
    font-weight: 600;
    letter-spacing: 0.08em;
    margin: 0 0 0.1rem;
    line-height: 1.4;
}

.gs-rcard__height {
    font-family: var(--gs-sans-jp);
    font-size: clamp(0.72rem, 1.8vw, 0.82rem);
    letter-spacing: 0.1em;
    margin: 0;
    color: rgba(246, 244, 236, 0.9);
}

.gs-roster-more-wrap {
    margin: 0;
}

@media (max-width: 991.98px) {
    .gs-tslider__slide {
        width: calc((100vw - 0.75rem) / 2.15);
    }
}

@media (max-width: 575.98px) {
    .gs-tslider__slide {
        width: calc((100vw - 0.75rem) / 1.35);
    }
}

.gs-tcard {
    height: 100%;
    background: var(--gs-white);
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 8px 22px rgba(47, 74, 58, 0.1);
    transition: transform 0.35s ease, box-shadow 0.35s ease;
}

.gs-tcard:hover {
    transform: translateY(-4px);
    box-shadow: 0 14px 32px rgba(47, 74, 58, 0.14);
}

.gs-tcard__photo {
    position: relative;
    aspect-ratio: 3 / 4;
    background: var(--gs-sage-soft);
    overflow: hidden;
}

.gs-tcard__photo-link {
    display: block;
    position: absolute;
    inset: 0;
    z-index: 1;
    color: inherit;
    text-decoration: none;
}

.gs-tcard__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
}

.gs-tcard__status {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    margin: 0;
    padding: 0.5rem 0.6rem;
    font-family: var(--gs-sans-jp);
    font-size: 0.82rem;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-align: center;
    color: var(--gs-cream);
    background: rgba(47, 74, 58, 0.82);
}

.gs-tcard__status.is-open {
    background: rgba(58, 90, 64, 0.92);
}

.gs-tcard__body {
    padding: 0.85rem 0.75rem 1rem;
    text-align: center;
}

.gs-tcard__name {
    font-family: var(--gs-serif-jp);
    font-size: clamp(0.95rem, 2.5vw, 1.12rem);
    font-weight: 600;
    color: var(--gs-ink);
    letter-spacing: 0.06em;
    margin: 0 0 0.15rem;
    line-height: 1.4;
}

.gs-tcard__name-link {
    color: inherit;
    text-decoration: none;
}

.gs-tcard__name-link:hover {
    color: var(--gs-forest-700);
}

.gs-tcard__age {
    font-family: var(--gs-sans-jp);
    font-size: 0.92em;
    font-weight: 500;
    color: var(--gs-ink-soft);
}

.gs-tcard__height {
    font-family: var(--gs-sans-jp);
    font-size: 0.88rem;
    color: var(--gs-ink-soft);
    letter-spacing: 0.08em;
    margin: 0 0 0.65rem;
}

.gs-tcard__schedule {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    margin: 0 0 0.7rem;
    padding: 0.6rem 0.75rem;
    background: #eef0e8;
    border-radius: 8px;
}

.gs-tcard__schedule-ico {
    flex: 0 0 1rem;
    width: 1rem;
    height: 1rem;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9' fill='none' stroke='%233a5a40' stroke-width='1.8'/%3E%3Cpath fill='%233a5a40' d='M12 7v5l3.2 2'/%3E%3C/svg%3E") center / contain no-repeat;
}

.gs-tcard__schedule-time {
    font-family: var(--gs-sans-jp);
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--gs-forest-600);
    letter-spacing: 0.04em;
}

.gs-tcard__tags {
    list-style: none;
    display: flex;
    gap: 0.4rem;
    padding: 0;
    margin: 0;
}

.gs-tcard__tags li {
    flex: 1 1 0;
    min-width: 0;
    padding: 0.42rem 0.35rem;
    font-family: var(--gs-sans-jp);
    font-size: clamp(0.62rem, 2vw, 0.72rem);
    font-weight: 600;
    letter-spacing: 0.04em;
    line-height: 1.35;
    color: var(--gs-forest-700);
    background: linear-gradient(180deg, var(--gs-ivory), var(--gs-sage-soft));
    border: 1px solid rgba(163, 177, 138, 0.75);
    border-radius: 4px;
}

.gs-tcard__sns {
    position: absolute;
    left: 0.4rem;
    bottom: 2.35rem;
    z-index: 3;
    display: block;
    width: 2.35rem;
    height: 2.35rem;
    border-radius: 50%;
    overflow: hidden;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.gs-tcard__sns:hover {
    transform: scale(1.06);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.28);
}

.gs-tcard__sns-ico {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.gs-tcard__detail-wrap {
    margin: 0.65rem 0 0;
}

.gs-tcard__detail {
    display: inline-block;
    width: 100%;
    padding: 0.5rem 0.75rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.78rem;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-align: center;
    color: var(--gs-cream);
    background: linear-gradient(180deg, var(--gs-forest-600), var(--gs-forest-700));
    border: 2px solid var(--gs-gold);
    border-radius: 6px;
    text-decoration: none;
    transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.gs-tcard__detail span {
    margin-left: 0.25em;
    font-family: var(--gs-serif-en);
}

.gs-tcard__detail:hover {
    color: var(--gs-gold-soft);
    background: linear-gradient(180deg, var(--gs-forest-700), var(--gs-forest-800));
    border-color: var(--gs-gold-soft);
}

@media (max-width: 575.98px) {
    .gs-therapist .gs-therapist__list {
        --bs-gutter-y: 0.65rem;
        --bs-gutter-x: 0.45rem;
    }

    .gs-tcard__body {
        padding: 0.55rem 0.5rem 0.65rem;
    }

    .gs-tcard__name {
        margin-bottom: 0.05rem;
        font-size: 0.88rem;
    }

    .gs-tcard__height {
        margin-bottom: 0.4rem;
        font-size: 0.78rem;
    }

    .gs-tcard__schedule {
        margin-bottom: 0.45rem;
        padding: 0.4rem 0.5rem;
        gap: 0.35rem;
    }

    .gs-tcard__schedule-time {
        font-size: 0.8rem;
        white-space: nowrap;
    }

    .gs-tcard__tags {
        flex-direction: column;
        align-items: stretch;
        gap: 0.3rem;
    }

    .gs-tcard__tags li {
        flex: none;
        width: 100%;
        padding: 0.32rem 0.45rem;
        font-size: 0.68rem;
    }

    .gs-tcard__detail-wrap {
        margin-top: 0.45rem;
    }

    .gs-tcard__detail {
        padding: 0.42rem 0.5rem;
        font-size: 0.72rem;
    }
}

/* =========================================================
   Therapist list (subpage)
   ========================================================= */
.gs-therapist-page {
    padding-top: 2rem;
    background: var(--gs-ivory);
}

.gs-therapist-block + .gs-therapist-block {
    margin-top: clamp(3.5rem, 7vw, 5rem);
    padding-top: clamp(3rem, 6vw, 4.5rem);
    border-top: 1px solid rgba(163, 177, 138, 0.35);
}

.gs-therapist-block__head {
    margin-bottom: 2rem;
}

.gs-therapist-block__title {
    font-family: var(--gs-serif-jp);
    font-size: clamp(1.15rem, 3vw, 1.35rem);
    font-weight: 600;
    letter-spacing: 0.14em;
    color: var(--gs-forest-700);
    margin: 0;
}

.gs-therapist-grid {
    list-style: none;
    padding: 0;
    margin: 0;
}

.gs-lcard {
    height: 100%;
}

.gs-lcard__link {
    display: block;
    color: inherit;
}

.gs-lcard__photo {
    position: relative;
    aspect-ratio: 3 / 4;
    overflow: hidden;
    background: var(--gs-sage-soft);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(47, 74, 58, 0.12);
}

.gs-lcard__link:hover .gs-lcard__img {
    transform: scale(1.03);
}

.gs-lcard__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
    transition: transform 0.5s ease;
}

.gs-lcard__cap {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 0.75rem 0.5rem 0.65rem;
    text-align: center;
    color: var(--gs-cream);
    background: linear-gradient(transparent, rgba(47, 74, 58, 0.55) 28%, rgba(28, 42, 32, 0.9) 100%);
}

.gs-lcard__name {
    font-family: var(--gs-serif-jp);
    font-size: clamp(0.82rem, 2.2vw, 0.98rem);
    font-weight: 600;
    letter-spacing: 0.08em;
    margin: 0 0 0.1rem;
    line-height: 1.4;
}

.gs-lcard__age {
    font-family: var(--gs-sans-jp);
    font-size: 0.92em;
    font-weight: 500;
}

.gs-lcard__height {
    font-family: var(--gs-sans-jp);
    font-size: clamp(0.72rem, 1.8vw, 0.82rem);
    letter-spacing: 0.1em;
    margin: 0;
    color: rgba(246, 244, 236, 0.9);
}

.gs-lcard__foot {
    padding: 0.6rem 0.1rem 0;
}

.gs-lcard__shift {
    margin: 0 0 0.65rem;
    padding: 0;
    text-align: center;
    font-size: 0.78rem;
    line-height: 1.65;
    letter-spacing: 0.04em;
}

.gs-lcard__shift-label {
    font-family: var(--gs-serif-jp);
    font-weight: 500;
    font-size: 0.74rem;
    letter-spacing: 0.12em;
    color: var(--gs-ink-soft);
}

.gs-lcard__shift-sep {
    margin: 0 0.3em;
    font-family: var(--gs-serif-en);
    font-size: 0.85em;
    font-weight: 300;
    color: var(--gs-gold);
}

.gs-lcard__shift-value {
    font-family: var(--gs-serif-jp);
    font-weight: 600;
    font-size: 0.84rem;
    letter-spacing: 0.05em;
    color: var(--gs-forest-700);
    font-variant-numeric: tabular-nums;
}

.gs-lcard__tags {
    list-style: none;
    display: flex;
    gap: 0.35rem;
    padding: 0;
    margin: 0;
}

.gs-lcard__tags li {
    flex: 1 1 0;
    min-width: 0;
    padding: 0.38rem 0.3rem;
    font-family: var(--gs-sans-jp);
    font-size: clamp(0.6rem, 1.8vw, 0.7rem);
    font-weight: 600;
    letter-spacing: 0.04em;
    line-height: 1.35;
    text-align: center;
    color: var(--gs-forest-700);
    background: linear-gradient(180deg, var(--gs-ivory), var(--gs-sage-soft));
    border: 1px solid rgba(163, 177, 138, 0.75);
    border-radius: 4px;
}

.gs-lcard__detail {
    display: block;
    width: 100%;
    margin-top: 0.65rem;
    padding: 0.72rem 0.5rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.8rem;
    font-weight: 500;
    letter-spacing: 0.16em;
    text-indent: 0.16em;
    text-align: center;
    color: var(--gs-cream);
    background: linear-gradient(180deg, var(--gs-forest-600), var(--gs-forest-700));
    border: 2px solid var(--gs-gold);
    border-radius: 6px;
    box-shadow:
        0 6px 18px rgba(47, 74, 58, 0.22),
        inset 0 1px 0 rgba(255, 255, 255, 0.1);
    transition: color 0.3s ease, border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
}

.gs-lcard__detail span[aria-hidden="true"] {
    margin-left: 0.35em;
    font-family: var(--gs-serif-en);
    letter-spacing: 0.06em;
}

.gs-lcard__detail:hover {
    color: var(--gs-gold-soft);
    background: linear-gradient(180deg, var(--gs-forest-700), var(--gs-forest-800));
    border-color: var(--gs-gold-soft);
    transform: translateY(-2px);
    box-shadow:
        0 10px 24px rgba(47, 74, 58, 0.28),
        inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

/* Therapist detail profile */
.gs-therapist-detail-page {
    padding-bottom: clamp(3rem, 6vw, 5rem);
}

.gs-tprofile {
    margin-bottom: clamp(3rem, 6vw, 4.5rem);
}

.gs-tprofile-gallery__main {
    position: relative;
    overflow: hidden;
    border-radius: 12px;
    background: var(--gs-sage-soft);
    box-shadow: 0 12px 32px rgba(47, 74, 58, 0.14);
}

.gs-tprofile-gallery__img {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    object-position: center top;
}

.gs-tprofile-gallery__thumbs {
    list-style: none;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.45rem;
    margin: 0.65rem 0 0;
    padding: 0;
}

.gs-tprofile-gallery__btn {
    display: block;
    width: 100%;
    padding: 0;
    border: 2px solid transparent;
    border-radius: 6px;
    overflow: hidden;
    background: var(--gs-sage-soft);
    cursor: pointer;
    transition: border-color 0.25s ease, opacity 0.25s ease;
}

.gs-tprofile-gallery__btn img {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    object-position: center top;
}

.gs-tprofile-gallery__btn:hover {
    opacity: 0.88;
}

.gs-tprofile-gallery__btn.is-active {
    border-color: var(--gs-gold);
}

.gs-tprofile-head {
    margin-bottom: 0.75rem;
}

.gs-tprofile-head__name {
    font-family: var(--gs-serif-jp);
    font-size: clamp(1.5rem, 4vw, 2rem);
    font-weight: 600;
    letter-spacing: 0.1em;
    color: var(--gs-forest-700);
    margin: 0;
    line-height: 1.4;
}

.gs-tprofile-sns {
    position: absolute;
    left: 0.55rem;
    bottom: 0.55rem;
    z-index: 3;
    display: block;
    width: 2.85rem;
    height: 2.85rem;
    border-radius: 50%;
    overflow: hidden;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.gs-tprofile-sns:hover {
    transform: scale(1.06);
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.28);
}

.gs-tprofile-sns__ico {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.gs-tprofile-meta {
    font-family: var(--gs-serif-en);
    font-size: 0.95rem;
    letter-spacing: 0.14em;
    color: var(--gs-ink-soft);
    margin: 0 0 0.65rem;
}

.gs-tprofile-catch {
    font-family: var(--gs-serif-jp);
    font-size: 0.92rem;
    line-height: 1.85;
    letter-spacing: 0.05em;
    color: var(--gs-ink);
    margin: 0 0 1.1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid rgba(163, 177, 138, 0.35);
}

.gs-tprofile-tags {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin: 0 0 1.25rem;
    padding: 0;
}

.gs-tprofile-tags li {
    padding: 0.45rem 0.85rem;
    font-family: var(--gs-sans-jp);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    color: var(--gs-cream);
    background: linear-gradient(180deg, var(--gs-forest-600), var(--gs-forest-700));
    border-radius: 4px;
}

.gs-tprofile-qa {
    margin: 0 0 1.5rem;
}

.gs-tprofile-qa__row + .gs-tprofile-qa__row {
    margin-top: 0.85rem;
}

.gs-tprofile-qa dt {
    margin: 0 0 0.35rem;
    padding: 0.45rem 0.75rem;
    font-family: var(--gs-sans-jp);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    color: var(--gs-forest-700);
    background: #e8ebe3;
    border-radius: 4px;
}

.gs-tprofile-qa dd {
    margin: 0;
    padding: 0 0.25rem;
    font-size: 0.88rem;
    line-height: 1.75;
    letter-spacing: 0.04em;
    color: var(--gs-ink);
}

.gs-tprofile-box {
    margin-bottom: 1.25rem;
    border: 1px solid rgba(163, 177, 138, 0.4);
    border-radius: 8px;
    overflow: hidden;
    background: var(--gs-white);
}

.gs-tprofile-box__title {
    margin: 0;
    padding: 0.65rem 1rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.88rem;
    font-weight: 600;
    letter-spacing: 0.1em;
}

.gs-tprofile-box--message .gs-tprofile-box__title {
    color: var(--gs-forest-700);
    background: rgba(201, 178, 125, 0.22);
}

.gs-tprofile-box--manager .gs-tprofile-box__title {
    color: var(--gs-forest-700);
    background: rgba(163, 177, 138, 0.28);
}

.gs-tprofile-box__body {
    padding: 1rem 1.1rem 1.15rem;
}

.gs-tprofile-box__body p {
    margin: 0;
    font-size: 0.9rem;
    line-height: 1.9;
    letter-spacing: 0.04em;
    color: var(--gs-ink);
}

.gs-tprofile-schedule {
    margin-bottom: clamp(3rem, 6vw, 4.5rem);
    padding: clamp(2rem, 5vw, 3rem) clamp(1.25rem, 4vw, 2.5rem);
    background: var(--gs-white);
    border: 1px solid rgba(163, 177, 138, 0.35);
    border-radius: 12px;
    box-shadow: 0 10px 28px rgba(47, 74, 58, 0.06);
}

.gs-tprofile-schedule__head {
    margin-bottom: 1.75rem;
}

.gs-tprofile-schedule__en {
    font-family: var(--gs-serif-en);
    font-size: clamp(1.4rem, 3.5vw, 1.85rem);
    letter-spacing: 0.18em;
    color: var(--gs-forest-700);
    margin: 0 0 0.5rem;
}

.gs-tprofile-schedule__en::first-letter {
    color: #c97a9a;
}

.gs-tprofile-schedule__rule {
    position: relative;
    max-width: 14rem;
    margin: 0 auto;
    padding: 0.35rem 0;
    text-align: center;
}

.gs-tprofile-schedule__rule::before,
.gs-tprofile-schedule__rule::after {
    content: "";
    position: absolute;
    top: 50%;
    width: 2.5rem;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gs-gold));
}

.gs-tprofile-schedule__rule::before {
    left: 0;
}

.gs-tprofile-schedule__rule::after {
    right: 0;
    background: linear-gradient(90deg, var(--gs-gold), transparent);
}

.gs-tprofile-schedule__rule span {
    display: inline-block;
    padding: 0 0.75rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.88rem;
    letter-spacing: 0.2em;
    color: var(--gs-forest-600);
    background: var(--gs-white);
}

.gs-tprofile-schedule__list {
    list-style: none;
    max-width: 28rem;
    margin: 0 auto;
    padding: 0;
}

.gs-tprofile-schedule__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 0.25rem;
    border-bottom: 1px solid rgba(163, 177, 138, 0.3);
    font-family: var(--gs-serif-jp);
    font-size: 0.95rem;
    letter-spacing: 0.06em;
}

.gs-tprofile-schedule__item:last-child {
    border-bottom: none;
}

.gs-tprofile-schedule__date--sat {
    color: #3d6ea8;
}

.gs-tprofile-schedule__date--sun {
    color: #b84a5a;
}

.gs-tprofile-schedule__time {
    font-variant-numeric: tabular-nums;
    color: var(--gs-ink);
}

.gs-tprofile-diary__head {
    margin-bottom: 2rem;
}

.gs-tprofile-diary__list {
    list-style: none;
    padding: 0;
    margin: 0 0 2rem;
}

.gs-diary-card {
    height: 100%;
    background: var(--gs-white);
    border: 1px solid rgba(163, 177, 138, 0.35);
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 8px 22px rgba(47, 74, 58, 0.08);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.gs-diary-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 28px rgba(47, 74, 58, 0.12);
}

.gs-diary-card__thumb {
    display: block;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--gs-sage-soft);
}

.gs-diary-card__thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.gs-diary-card__body {
    padding: 1rem 1rem 1.15rem;
}

.gs-diary-card__title {
    font-family: var(--gs-serif-jp);
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.5;
    letter-spacing: 0.05em;
    margin: 0 0 0.4rem;
}

.gs-diary-card__title a {
    color: var(--gs-forest-700);
}

.gs-diary-card__title a:hover {
    color: var(--gs-green-500);
}

.gs-diary-card__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

.gs-diary-card__date {
    font-family: var(--gs-sans-jp);
    font-size: 0.74rem;
    font-variant-numeric: tabular-nums;
    color: var(--gs-green-500);
    letter-spacing: 0.06em;
    margin: 0;
}

.gs-diary-like {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin: 0;
    padding: 0.15rem 0.1rem;
    border: none;
    background: transparent;
    cursor: pointer;
    line-height: 1;
    flex-shrink: 0;
}

.gs-diary-like__heart {
    font-size: 1.15rem;
    color: var(--gs-sage);
    transition: color 0.3s ease, transform 0.25s ease;
}

.gs-diary-like__count {
    min-width: 1.2em;
    font-family: var(--gs-sans-jp);
    font-size: 0.78rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--gs-ink-soft);
    transition: color 0.3s ease;
}

.gs-diary-like:hover .gs-diary-like__heart {
    color: #d96b8f;
    transform: scale(1.08);
}

.gs-diary-like.is-liked .gs-diary-like__heart {
    color: #d96b8f;
    transform: scale(1.12);
}

.gs-diary-like.is-liked .gs-diary-like__count {
    color: #d96b8f;
}

.gs-diary-like.is-locked,
.gs-diary-like:disabled {
    cursor: default;
    pointer-events: none;
}

.gs-diary-like:not(:disabled):active .gs-diary-like__heart {
    transform: scale(0.92);
}

.gs-diary-heart-float {
    position: fixed;
    z-index: 9999;
    pointer-events: none;
    font-size: 0.95rem;
    line-height: 1;
    color: #d96b8f;
    opacity: 0;
    animation: gs-diary-heart-float 0.95s ease-out forwards;
}

@keyframes gs-diary-heart-float {
    0% {
        opacity: 0;
        transform: translate(0, 0) rotate(var(--rot, 0deg)) scale(0.5);
    }

    15% {
        opacity: 1;
    }

    100% {
        opacity: 0;
        transform: translate(var(--tx, 0), -3.2rem) rotate(var(--rot, 0deg)) scale(1.05);
    }
}

@media (prefers-reduced-motion: reduce) {
    .gs-diary-heart-float {
        animation: none;
        display: none;
    }

    .gs-diary-like__heart {
        transition: color 0.2s ease;
    }
}

.gs-diary-card__text {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.7;
    letter-spacing: 0.03em;
    color: var(--gs-ink-soft);
}

.gs-tprofile-diary__more {
    margin: 0;
}

/* Diary list page */
.gs-diary-page {
    padding-top: 2rem;
    background: var(--gs-ivory);
}

/* Diary detail */
.gs-diary-detail__therapist {
    margin: 0 0 1rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.95rem;
    letter-spacing: 0.06em;
}

.gs-diary-detail__therapist a {
    color: var(--gs-sage-deep);
    text-decoration: none;
}

.gs-diary-detail__therapist a:hover {
    text-decoration: underline;
}

.gs-diary-detail__thumb {
    margin-bottom: 1.25rem;
    overflow: hidden;
    border-radius: 12px;
    background: var(--gs-sage-soft);
}

.gs-diary-detail__thumb img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    object-position: center;
}

.gs-diary-detail__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.gs-diary-detail__date {
    font-size: 0.85rem;
    letter-spacing: 0.08em;
    color: var(--gs-ink-soft);
}

.gs-diary-detail__body p {
    margin: 0 0 1.1rem;
    font-size: 0.92rem;
    line-height: 1.9;
    letter-spacing: 0.04em;
    color: var(--gs-ink);
}

.gs-diary-detail__body p:last-child {
    margin-bottom: 0;
}

.gs-diary-detail__body--richtext {
    font-size: 0.92rem;
    line-height: 1.9;
    letter-spacing: 0.04em;
    color: var(--gs-ink);
}

.gs-diary-detail__body--richtext img {
    max-width: 100%;
    height: auto;
}

.gs-diary-detail__missing {
    text-align: center;
    color: var(--gs-ink-soft);
    padding: 2rem 0;
}

.gs-diary-detail__back {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.85rem;
    margin: 2.5rem 0 0;
}

.gs-diary-detail__back .gs-info-more {
    display: block;
    width: min(100%, 20rem);
    margin: 0;
    text-align: center;
    box-sizing: border-box;
}

@media (min-width: 576px) {
    .gs-diary-detail__back {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        gap: 1rem;
    }

    .gs-diary-detail__back .gs-info-more {
        width: auto;
        min-width: min(100%, 20rem);
    }
}

.gs-diary-therapist-heads {
    margin-bottom: 2rem;
}

.gs-diary-therapist-head {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding: 1.25rem 1.35rem;
    background: var(--gs-white);
    border: 1px solid rgba(163, 177, 138, 0.35);
    border-radius: 12px;
    box-shadow: 0 10px 28px rgba(47, 74, 58, 0.08);
}

.gs-diary-therapist-head__photo {
    flex: 0 0 7.5rem;
    width: 7.5rem;
    overflow: hidden;
    border-radius: 10px;
    background: var(--gs-sage-soft);
    box-shadow: 0 6px 18px rgba(47, 74, 58, 0.12);
}

.gs-diary-therapist-head__photo img {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    object-position: center top;
}

.gs-diary-therapist-head__body {
    flex: 1;
    min-width: 0;
}

.gs-diary-therapist-head__name {
    font-family: var(--gs-serif-jp);
    font-size: clamp(1.2rem, 3.5vw, 1.55rem);
    font-weight: 600;
    letter-spacing: 0.1em;
    margin: 0 0 0.35rem;
    line-height: 1.4;
}

.gs-diary-therapist-head__name a {
    color: var(--gs-forest-700);
}

.gs-diary-therapist-head__name a:hover {
    color: var(--gs-green-500);
}

.gs-diary-therapist-head__meta {
    font-family: var(--gs-serif-en);
    font-size: 0.88rem;
    letter-spacing: 0.12em;
    color: var(--gs-ink-soft);
    margin: 0 0 0.75rem;
}

.gs-diary-therapist-head__link {
    display: inline-block;
    min-width: 12rem;
    padding: 0.75rem 1.75rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.8rem;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-indent: 0.2em;
    text-align: center;
    color: var(--gs-gold-soft);
    background: linear-gradient(165deg, #2e2e2e 0%, #141414 48%, #0a0a0a 100%);
    border: 1px solid rgba(201, 178, 125, 0.55);
    border-radius: 6px;
    box-shadow:
        0 8px 22px rgba(0, 0, 0, 0.2),
        inset 0 1px 0 rgba(255, 255, 255, 0.1),
        inset 0 -1px 0 rgba(0, 0, 0, 0.35);
    transition: color 0.35s ease, border-color 0.35s ease, transform 0.35s ease, box-shadow 0.35s ease;
}

.gs-diary-therapist-head__link span {
    margin-left: 0.4em;
    font-family: var(--gs-serif-en);
    letter-spacing: 0.08em;
    text-indent: 0;
}

.gs-diary-therapist-head__link:hover {
    color: var(--gs-cream);
    border-color: var(--gs-gold);
    transform: translateY(-2px);
    box-shadow:
        0 12px 28px rgba(0, 0, 0, 0.26),
        0 0 0 1px rgba(201, 178, 125, 0.12),
        inset 0 1px 0 rgba(255, 255, 255, 0.14);
}

@media (max-width: 575.98px) {
    .gs-diary-therapist-head {
        flex-direction: column;
        text-align: center;
        gap: 1rem;
    }

    .gs-diary-therapist-head__photo {
        flex: 0 0 auto;
        width: 8.5rem;
    }

    .gs-diary-therapist-head__link {
        min-width: min(100%, 14rem);
    }
}

.gs-diary-filter {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: center;
    margin-bottom: 2.25rem;
    padding-bottom: 1.75rem;
    border-bottom: 1px solid rgba(163, 177, 138, 0.35);
}

.gs-diary-filter__btn {
    display: inline-block;
    padding: 0.5rem 1rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.82rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    color: var(--gs-forest-700);
    background: var(--gs-white);
    border: 1px solid rgba(163, 177, 138, 0.45);
    border-radius: 999px;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    transition: color 0.25s ease, background 0.25s ease, border-color 0.25s ease;
}

.gs-diary-filter__btn:hover {
    border-color: var(--gs-gold);
    color: var(--gs-forest-800);
}

.gs-diary-filter__btn.is-active {
    color: var(--gs-cream);
    background: linear-gradient(180deg, var(--gs-forest-600), var(--gs-forest-700));
    border-color: var(--gs-forest-700);
}

.gs-diary-page__list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.gs-diary-item.is-hidden,
.gs-diary-item.is-page-hidden {
    display: none;
}

.gs-diary-pagination {
    margin-top: 2.5rem;
    text-align: center;
}

.gs-diary-pagination__list {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    list-style: none;
    padding: 0;
    margin: 0 0 0.75rem;
}

.gs-diary-pagination__btn {
    min-width: 2.25rem;
    height: 2.25rem;
    padding: 0 0.5rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.85rem;
    font-weight: 500;
    letter-spacing: 0.05em;
    color: var(--gs-ink);
    background: var(--gs-cream);
    border: 1px solid var(--gs-line);
    border-radius: 2px;
    cursor: pointer;
    transition: color 0.2s, background 0.2s, border-color 0.2s;
}

.gs-diary-pagination__btn:hover:not(:disabled) {
    color: var(--gs-cream);
    background: var(--gs-forest-600);
    border-color: var(--gs-forest-600);
}

.gs-diary-pagination__btn.is-active {
    color: var(--gs-cream);
    background: var(--gs-forest-700);
    border-color: var(--gs-forest-700);
    cursor: default;
}

.gs-diary-pagination__btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.gs-diary-pagination__info {
    margin: 0;
    font-size: 0.82rem;
    color: var(--gs-ink-soft);
    letter-spacing: 0.06em;
}

.gs-diary-page__list:not(.gs-diary-page__list--show-therapist) .gs-diary-card__therapist {
    display: none;
}

.gs-diary-page__empty {
    font-size: 0.92rem;
    color: var(--gs-ink-soft);
    margin: 2rem 0;
}

.gs-diary-card__therapist {
    margin: 0;
    padding: 0.55rem 0.85rem 0;
    font-family: var(--gs-serif-jp);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.1em;
}

.gs-diary-card__therapist a {
    color: var(--gs-green-500);
}

.gs-diary-card__therapist a:hover {
    color: var(--gs-forest-700);
}

/* ----- Schedule page ----- */
.gs-schedule-page {
    padding-top: 2rem;
    background: var(--gs-ivory);
}

.gs-schedule-dates {
    margin-bottom: 2rem;
}

.gs-schedule-dates__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem 0.65rem;
    list-style: none;
    padding: 0;
    margin: 0;
}

.gs-schedule-dates__btn {
    min-width: 5.5rem;
    padding: 0.65rem 0.85rem;
    font-family: var(--gs-sans-jp);
    font-size: 0.88rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.04em;
    color: var(--gs-ink);
    background: var(--gs-cream);
    border: 1px solid var(--gs-line);
    border-radius: 999px;
    cursor: pointer;
    transition: color 0.2s, background 0.2s, border-color 0.2s, box-shadow 0.2s;
}

.gs-schedule-dates__btn:hover {
    border-color: var(--gs-forest-500);
    color: var(--gs-forest-700);
}

.gs-schedule-dates__btn.is-active {
    color: var(--gs-cream);
    background: linear-gradient(180deg, var(--gs-forest-600), var(--gs-forest-700));
    border-color: var(--gs-forest-700);
    box-shadow: 0 6px 18px rgba(47, 74, 58, 0.22);
}

.gs-schedule-dates__btn.is-empty {
    color: rgba(42, 51, 40, 0.42);
    background: #eceae6;
    border-color: rgba(58, 90, 64, 0.12);
}

.gs-schedule-dates__btn.is-empty:hover {
    color: rgba(42, 51, 40, 0.55);
    border-color: rgba(58, 90, 64, 0.2);
}

.gs-schedule-dates__btn.is-empty.is-active {
    color: var(--gs-cream);
    background: linear-gradient(180deg, rgba(74, 96, 82, 0.72), rgba(58, 78, 66, 0.82));
    border-color: rgba(47, 74, 58, 0.45);
    box-shadow: none;
}

.gs-schedule-empty {
    font-size: 0.92rem;
    color: var(--gs-ink-soft);
    letter-spacing: 0.06em;
    margin: 2.5rem 0;
}

/* ----- Job / Recruit ----- */
.gs-job-page {
    padding-top: 2rem;
    background: var(--gs-ivory);
}

.gs-job-page__lead {
    font-family: var(--gs-serif-jp);
    font-size: 1.05rem;
    line-height: 2;
    letter-spacing: 0.08em;
    color: var(--gs-ink);
    margin: 0 0 1.25rem;
}

.gs-job-page__intro {
    font-size: 0.94rem;
    line-height: 2;
    letter-spacing: 0.04em;
    color: var(--gs-ink-soft);
    text-align: center;
    margin: 0 0 1rem;
}

/* ----- Guide / Terms ----- */
.gs-guide-page {
    padding-top: 2rem;
    background: var(--gs-ivory);
}

.gs-guide-block {
    background: #fff;
    border: 1px solid rgba(201, 178, 125, 0.28);
    border-radius: 12px;
    padding: 2.25rem 2rem;
    box-shadow: 0 14px 36px rgba(47, 74, 58, 0.08);
}

.gs-guide-block + .gs-guide-block {
    margin-top: 2.5rem;
}

.gs-guide-block__head {
    text-align: center;
    margin-bottom: 1.75rem;
}

.gs-guide-block__en {
    font-family: var(--gs-serif-en);
    font-size: 0.8rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--gs-gold);
    margin: 0 0 0.35rem;
}

.gs-guide-block__title {
    position: relative;
    display: inline-block;
    font-family: var(--gs-serif-jp);
    font-size: 1.4rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    color: var(--gs-forest-700);
    margin: 0;
    padding-bottom: 0.65rem;
}

.gs-guide-block__title::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 0;
    transform: translateX(-50%);
    width: 48px;
    height: 2px;
    background: linear-gradient(to right, transparent, var(--gs-gold), transparent);
}

.gs-guide-block__lead {
    font-size: 0.96rem;
    line-height: 2;
    letter-spacing: 0.04em;
    color: var(--gs-ink);
    text-align: center;
    margin: 0 0 1.75rem;
}

.gs-guide-block__caption {
    font-family: var(--gs-serif-jp);
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    color: var(--gs-forest-700);
    margin: 0 0 1rem;
}

.gs-guide-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.gs-guide-list li {
    position: relative;
    padding: 0.85rem 0.5rem 0.85rem 1.85rem;
    font-size: 0.94rem;
    line-height: 1.9;
    letter-spacing: 0.03em;
    color: var(--gs-ink);
    border-bottom: 1px dashed rgba(93, 106, 95, 0.25);
}

.gs-guide-list li:last-child {
    border-bottom: none;
}

.gs-guide-list--ban li::before {
    content: "✕";
    position: absolute;
    left: 0;
    top: 0.85rem;
    font-size: 0.85rem;
    line-height: 1.9;
    color: #b65b54;
    font-weight: 700;
}

.gs-guide-list--check li::before {
    content: "";
    position: absolute;
    left: 0.2rem;
    top: 1.35rem;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--gs-gold);
}

.gs-guide-notes {
    list-style: none;
    padding: 1.5rem 1.35rem;
    margin: 1.75rem 0 0;
    background: var(--gs-cream);
    border-radius: 10px;
}

.gs-guide-notes li {
    position: relative;
    padding-left: 1.4rem;
    font-size: 0.86rem;
    line-height: 1.85;
    letter-spacing: 0.03em;
    color: var(--gs-ink-soft);
}

.gs-guide-notes li + li {
    margin-top: 0.85rem;
}

.gs-guide-notes li::before {
    content: "※";
    position: absolute;
    left: 0;
    top: 0;
    color: var(--gs-green-500);
}

@media (max-width: 575.98px) {
    .gs-guide-block {
        padding: 1.75rem 1.25rem;
    }

    .gs-guide-block__title {
        font-size: 1.2rem;
    }
}

.gs-job-banner {
    max-width: 100%;
    margin: 0 auto 0.5rem;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 14px 36px rgba(47, 74, 58, 0.12);
}

.gs-job-banner__img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1774 / 887;
    object-fit: cover;
}

.gs-job-block {
    margin-top: 3.5rem;
}

.gs-job-banner + .gs-job-block {
    margin-top: 2.5rem;
}

.gs-job-block__head {
    margin-bottom: 2rem;
}

.gs-job-block__title {
    font-family: var(--gs-serif-jp);
    font-size: 1.35rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    color: var(--gs-forest-700);
    margin: 0.75rem 0 0;
}

.gs-job-appeals {
    list-style: none;
    padding: 0;
    margin: 0;
}

.gs-job-appeal {
    height: 100%;
    padding: 1.5rem 1.35rem;
    background: var(--gs-cream);
    border: 1px solid var(--gs-line);
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(28, 52, 38, 0.06);
}

.gs-job-appeal__en {
    font-family: var(--gs-serif-en);
    font-size: 1.5rem;
    font-weight: 500;
    color: var(--gs-gold);
    letter-spacing: 0.08em;
    margin: 0 0 0.5rem;
    line-height: 1;
}

.gs-job-appeal__title {
    font-family: var(--gs-serif-jp);
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    color: var(--gs-forest-700);
    margin: 0 0 0.65rem;
}

.gs-job-appeal__text {
    font-size: 0.88rem;
    line-height: 1.85;
    letter-spacing: 0.04em;
    color: var(--gs-ink-soft);
    margin: 0;
}

.gs-job-spec {
    max-width: 52rem;
    margin: 0 auto;
    background: var(--gs-cream);
    border: 1px solid var(--gs-line);
    border-radius: 6px;
    overflow: hidden;
}

.gs-job-spec__row {
    display: grid;
    grid-template-columns: minmax(7rem, 9.5rem) 1fr;
    gap: 0;
    border-bottom: 1px solid var(--gs-line);
}

.gs-job-spec__row:last-child {
    border-bottom: none;
}

.gs-job-spec__row dt {
    margin: 0;
    padding: 1.1rem 1rem;
    font-family: var(--gs-serif-jp);
    font-size: 0.88rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    color: var(--gs-cream);
    background: linear-gradient(180deg, var(--gs-forest-600), var(--gs-forest-700));
}

.gs-job-spec__row dd {
    margin: 0;
    padding: 1.1rem 1.15rem;
    font-size: 0.9rem;
    line-height: 1.9;
    letter-spacing: 0.04em;
    color: var(--gs-ink);
}

.gs-job-spec__row dd br:last-child {
    display: none;
}

.gs-job-notes {
    max-width: 52rem;
    margin: 2rem auto 0;
    padding: 1.15rem 1.25rem;
    background: var(--gs-sage-soft);
    border-radius: 4px;
}

.gs-job-notes__title {
    font-family: var(--gs-serif-jp);
    font-size: 0.82rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    color: var(--gs-forest-700);
    margin: 0 0 0.5rem;
}

.gs-job-notes ul {
    margin: 0;
    padding-left: 1.15rem;
    font-size: 0.82rem;
    line-height: 1.85;
    color: var(--gs-ink-soft);
}

.gs-job-faq {
    max-width: 52rem;
    margin: 0 auto;
}

.gs-job-faq__item {
    padding: 1.35rem 0;
    border-bottom: 1px solid var(--gs-line);
}

.gs-job-faq__item:first-child {
    padding-top: 0;
}

.gs-job-faq__item:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.gs-job-faq__q,
.gs-job-faq__a {
    margin: 0;
    font-size: 0.92rem;
    line-height: 1.95;
    letter-spacing: 0.04em;
}

.gs-job-faq__q {
    font-family: var(--gs-serif-jp);
    font-weight: 600;
    color: var(--gs-forest-700);
    margin-bottom: 0.65rem;
}

.gs-job-faq__a {
    color: var(--gs-ink-soft);
    padding-left: 0;
}

.gs-job-faq__mark {
    font-family: var(--gs-serif-en);
    font-weight: 600;
    color: var(--gs-gold);
    margin-right: 0.35em;
}

.gs-job-apply {
    margin-top: 3.5rem;
    padding: 2.5rem 1.5rem;
    background: linear-gradient(165deg, var(--gs-forest-700) 0%, var(--gs-forest-800) 100%);
    border-radius: 8px;
}

.gs-job-apply__title {
    font-family: var(--gs-serif-jp);
    font-size: 1.25rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    color: var(--gs-cream);
    margin: 0 0 1rem;
}

.gs-job-apply__lead {
    font-size: 0.9rem;
    line-height: 1.9;
    letter-spacing: 0.06em;
    color: rgba(248, 246, 240, 0.88);
    margin: 0 0 1.75rem;
}

.gs-job-apply__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.85rem;
    justify-content: center;
}

@media (max-width: 575.98px) {
    .gs-job-spec__row {
        grid-template-columns: 1fr;
    }

    .gs-job-spec__row dt {
        padding-bottom: 0.65rem;
    }

    .gs-job-apply__actions {
        flex-direction: column;
        align-items: stretch;
    }

    .gs-job-apply__actions .gs-btn {
        width: 100%;
    }
}

.gs-tbadges {
    position: absolute;
    top: 0.45rem;
    left: 0.45rem;
    z-index: 4;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    pointer-events: none;
}

.gs-tbadge {
    display: inline-flex;
    align-items: center;
    gap: 0.28rem;
    padding: 0.2rem 0.45rem 0.2rem 0.35rem;
    font-family: var(--gs-sans-jp);
    font-size: 0.62rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    line-height: 1;
    border-radius: 5px;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.98) 0%, rgba(245, 245, 245, 0.92) 45%, rgba(255, 255, 255, 0.98) 100%);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
    animation: gs-tbadge-glow 2.8s ease-in-out infinite;
}

.gs-tbadge--pick {
    color: #d96b8f;
    border: 2px solid #e8a4bc;
}

.gs-tbadge--new {
    color: #3d8f52;
    border: 2px solid #6db87f;
    animation-delay: 0.35s;
}

.gs-tbadge__ico {
    flex: 0 0 0.85rem;
    width: 0.85rem;
    height: 0.85rem;
    background-position: center;
    background-repeat: no-repeat;
    background-size: contain;
}

.gs-tbadge__ico--pick {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23d96b8f' d='M8 1.2 9.8 5.6l4.6.4-3.5 3 1 4.5L8 11.8 4.1 13.5l1-4.5-3.5-3 4.6-.4z'/%3E%3C/svg%3E");
}

.gs-tbadge__ico--new {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%233d8f52' d='M8 2c-2.8 3.2-4 5.2-4 7.2a4 4 0 1 0 8 0c0-2-1.2-4-4-7.2z'/%3E%3C/svg%3E");
}

.gs-tbadge__text {
    padding-right: 0.1rem;
}

@keyframes gs-tbadge-glow {
    0%,
    100% {
        opacity: 1;
        filter: brightness(1);
    }

    50% {
        opacity: 0.38;
        filter: brightness(0.92);
    }
}

@media (prefers-reduced-motion: reduce) {
    .gs-tbadge {
        animation: none;
    }
}

/* =========================================================
   Access
   ========================================================= */
.gs-access {
    background: var(--gs-ivory);
}

.gs-access__map iframe,
.gs-access__map-frame {
    display: block;
    width: 100%;
    max-width: 100%;
    height: 360px;
    border: 0;
}

.gs-access__map {
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 10px 26px rgba(47, 74, 58, 0.1);
    line-height: 0;
}

.gs-access__list {
    margin: 0;
}

.gs-access__row {
    display: flex;
    gap: 1.2rem;
    padding: 1.1rem 0.2rem;
    border-bottom: 1px solid rgba(163, 177, 138, 0.35);
}

.gs-access__row dt {
    flex: 0 0 90px;
    font-family: var(--gs-serif-jp);
    font-weight: 600;
    color: var(--gs-forest-600);
    letter-spacing: 0.1em;
}

.gs-access__row dd {
    margin: 0;
    color: var(--gs-ink);
    font-size: 0.94rem;
}

/* =========================================================
   Reservation
   ========================================================= */
.gs-reservation {
    position: relative;
    padding: 0;
    background: url("../images/common/contactback.jpg") center center / cover no-repeat;
    border-top: 2px solid var(--gs-gold);
    border-bottom: 2px solid var(--gs-gold);
}

.gs-reservation__overlay {
    background: linear-gradient(rgba(28, 42, 32, 0.86), rgba(28, 42, 32, 0.9));
    padding: clamp(4.5rem, 9vw, 7.5rem) 0;
}

.gs-reservation__lead {
    color: rgba(246, 244, 236, 0.9);
    margin: 1.4rem 0 2.4rem;
    font-size: 0.98rem;
}

.gs-reservation__actions {
    display: flex;
    gap: 1rem;
    justify-content: center;
    flex-wrap: wrap;
}

.gs-reservation__hours {
    margin: 1.8rem 0 0;
    color: rgba(246, 244, 236, 0.7);
    font-size: 0.84rem;
    letter-spacing: 0.1em;
}

/* Buttons */
.gs-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 220px;
    padding: 0.95rem 2rem;
    font-family: var(--gs-serif-jp);
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    border-radius: 999px;
    transition: transform 0.25s ease, background-color 0.25s ease, color 0.25s ease, box-shadow 0.25s ease;
}

.gs-btn--primary {
    background: linear-gradient(135deg, var(--gs-gold), var(--gs-gold-soft));
    color: var(--gs-forest-900);
    box-shadow: 0 10px 26px rgba(201, 178, 125, 0.3);
}

.gs-btn--primary:hover {
    transform: translateY(-3px);
    color: var(--gs-forest-900);
    box-shadow: 0 16px 32px rgba(201, 178, 125, 0.42);
}

.gs-btn--ghost {
    border: 1px solid var(--gs-gold-soft);
    color: var(--gs-cream);
}

.gs-btn--ghost:hover {
    background: var(--gs-cream);
    color: var(--gs-forest-700);
    transform: translateY(-3px);
}

.gs-btn--line:hover {
    border-color: #4caf50;
    box-shadow: 0 12px 28px rgba(76, 175, 80, 0.22);
}

/* =========================================================
   Footer
   ========================================================= */
.gs-footer {
    position: relative;
    background:
        linear-gradient(rgba(20, 30, 22, 0.95), rgba(20, 30, 22, 0.97)),
        url("../images/common/footerback.jpg") center center / cover no-repeat;
    color: var(--gs-cream);
}

.gs-footer__overlay {
    padding: 4.5rem 0 3rem;
}

.gs-footer__eyebrow {
    font-family: var(--gs-serif-jp);
    letter-spacing: 0.4em;
    font-size: 0.78rem;
    color: var(--gs-gold-soft);
    margin: 0 0 0.4rem;
}

.gs-footer__logo-wrap {
    margin: 0 0 1.25rem;
}

.gs-footer__logo {
    display: block;
    width: auto;
    max-height: clamp(8.5rem, 38vw, 11.5rem);
    margin-inline: auto;
}

@media (min-width: 992px) {
    .gs-footer__logo {
        max-height: 7rem;
        margin-inline: 0;
    }
}

.gs-footer__brand {
    font-family: var(--gs-serif-en);
    font-size: 1.9rem;
    letter-spacing: 0.1em;
    color: var(--gs-cream);
    margin: 0 0 1rem;
}

.gs-footer__lead {
    font-size: 0.86rem;
    color: rgba(246, 244, 236, 0.78);
    line-height: 1.9;
    margin: 0;
}

.gs-footer__title {
    font-family: var(--gs-serif-en);
    font-size: 1.1rem;
    letter-spacing: 0.22em;
    color: var(--gs-gold-soft);
    margin: 0 0 1.2rem;
}

.gs-footer__links {
    list-style: none;
    padding: 0;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.55rem 1.25rem;
    max-width: 20rem;
    text-align: center;
}

.gs-footer__links a {
    font-family: var(--gs-serif-en);
    letter-spacing: 0.14em;
    font-size: 0.9rem;
    color: rgba(246, 244, 236, 0.85);
}

@media (min-width: 992px) {
    .gs-footer__menu-col .gs-footer__links {
        grid-template-columns: repeat(2, auto);
        gap: 0.55rem 2.5rem;
        max-width: none;
        margin-inline: 0;
        justify-content: start;
        text-align: left;
    }
}

.gs-footer__links a:hover {
    color: var(--gs-gold-soft);
}

.gs-footer__info {
    font-size: 0.88rem;
    color: rgba(246, 244, 236, 0.82);
}

.gs-footer__info p {
    margin: 0 0 0.7rem;
}

.gs-footer__tel {
    font-family: var(--gs-sans-jp);
    font-size: 1.05rem;
    font-weight: 500;
    font-variant-numeric: lining-nums tabular-nums;
    letter-spacing: 0.06em;
    color: var(--gs-cream);
}

.gs-footer__info a:hover {
    color: var(--gs-gold-soft);
}

.gs-footer__sns-title {
    margin: 1.25rem 0 0.75rem;
    font-size: 0.78rem;
    letter-spacing: 0.14em;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.72);
}

.gs-footer__sns {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1.15rem 1.5rem;
    margin: 0.5rem 0 0;
    padding: 0;
}

.gs-footer__sns-link {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    color: rgba(246, 244, 236, 0.88);
    text-decoration: none;
    transition: color 0.2s ease, transform 0.2s ease;
}

.gs-footer__sns-link:hover {
    color: var(--gs-gold-soft);
    transform: translateY(-2px);
}

.gs-footer__sns-ico {
    display: block;
    width: 2rem;
    height: 2rem;
    object-fit: contain;
}

.gs-footer__sns-label {
    font-family: var(--gs-sans-jp);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 1.3;
}

@media (min-width: 992px) {
    .gs-footer .col-lg-4.text-lg-start .gs-footer__sns {
        justify-content: flex-start;
    }
}

.gs-footer__sublinks {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem 1.5rem;
    padding: 0;
    margin: 2.5rem 0 0;
}

.gs-footer__sublinks a {
    font-family: var(--gs-sans-jp);
    font-size: 0.78rem;
    letter-spacing: 0.1em;
    color: rgba(246, 244, 236, 0.72);
    transition: color 0.2s ease;
}

.gs-footer__sublinks a:hover {
    color: var(--gs-gold-soft);
}

.gs-footer__copy {
    margin: 1.25rem 0 0;
    text-align: center;
    font-size: 0.78rem;
    letter-spacing: 0.12em;
    color: rgba(246, 244, 236, 0.55);
}

/* SP fixed footer */
.gs-footer-sp {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1030;
    background: rgba(28, 42, 32, 0.96);
    backdrop-filter: blur(6px);
    border-top: 2px solid var(--gs-gold);
    border-bottom: 2px solid var(--gs-gold);
    box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.25);
}

.gs-footer-sp__list {
    list-style: none;
    display: flex;
    margin: 0;
    padding: 0;
}

.gs-footer-sp__list > li {
    flex: 1;
}

.gs-footer-sp__list a {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    min-height: 3.75rem;
    padding: 0.5rem 0.35rem;
    color: var(--gs-cream);
    text-decoration: none;
}

.gs-footer-sp__label {
    font-family: var(--gs-sans-jp);
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    line-height: 1.3;
    text-align: center;
}

.gs-footer-sp__ico {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    flex-shrink: 0;
}

.gs-footer-sp__ico img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.gs-footer-sp__list > li + li {
    border-left: 1px solid rgba(246, 244, 236, 0.16);
}

.gs-footer-sp__list a:active {
    background: rgba(246, 244, 236, 0.08);
}

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width: 991.98px) {
    .gs-navbar {
        background-color: rgba(28, 42, 32, 0.92);
        backdrop-filter: blur(8px);
        padding: 0.6rem 0;
    }

    .gs-navbar .navbar-collapse {
        margin-top: 0.8rem;
        background: rgba(28, 42, 32, 0.98);
        border-radius: 12px;
        padding: 0.6rem 1rem 1rem;
    }

    .gs-nav {
        gap: 0.1rem;
        align-items: stretch !important;
    }

    .gs-nav__link {
        padding: 0.7rem 0.6rem;
        display: block;
    }

    .gs-nav__link--cta {
        margin: 0.75rem 0 0;
        padding: 0.75rem 1rem;
        text-align: center;
        display: block;
    }

    body.gs-body {
        padding-bottom: calc(3.75rem + 8px);
    }

    /* fixed background can be janky on mobile */
    .gs-system {
        background-attachment: scroll;
    }
}

@media (max-width: 991.98px) {
    .gs-hero__bg {
        background-position: 58% center;
    }
}

@media (max-width: 575.98px) {
    .gs-hero__features {
        flex-wrap: nowrap;
        justify-content: space-between;
        gap: 0.45rem;
    }

    .gs-hero__feature {
        flex: 1 1 0;
        min-width: 0;
        max-width: none;
        align-items: center;
        text-align: center;
    }

    .gs-hero__feature-ico {
        width: 2.25rem;
        height: 2.25rem;
        margin-bottom: 0.25rem;
    }

    .gs-hero__feature-name {
        font-size: 0.72rem;
        letter-spacing: 0.06em;
    }

    .gs-hero__feature-desc {
        font-size: 0.62rem;
        line-height: 1.55;
        letter-spacing: 0;
    }

    .gs-btn {
        width: 100%;
    }
}
