html, body {
    overflow-x: hidden;
    width: 100%; 
    position: relative;
}

/* ====================================
   Color & Font Settings
   ==================================== */
:root {
    --bg-base:  #F5F2EB;
    --bg-white: #ffffff;
    --text-main: #333333;
    --text-sub:  #F5F2EB;
    --font-ja: "Noto Sans JP", "Helvetica Neue", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
    --font-en: "Jost", sans-serif;
}

body {
    background-color: var(--bg-base);
    color: var(--text-main);
    font-family: var(--font-ja);
    margin: 0; /* Reset body margin */
}

/* Base Settings */
h3 {
    font-family: var(--font-ja);
    font-weight: 700;
    font-size: 24px; /* Font size for SP */
    line-height: 1.4;
    letter-spacing: 0.04em;
    margin: 0;
}

p {
    color: var(--text-main);
    font-family: var(--font-ja);
    font-weight: 700;
    font-size: 16px;
    line-height: 1.8;
    letter-spacing: 0.05em;
    text-align: justify;
    margin: 0; /* Reset */
}

img {
    max-width: 100%;
    height: auto;
    vertical-align: bottom;
}

.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

/* ====================================
   Layout Common
   ==================================== */
.section-outer {
    width: 100%;
    margin: 0 auto;
}

.section-inner {
    max-width: 1200px;
    width: 100%;
    padding: 0 20px; /* Padding for SP */
    margin: 0 auto;
    box-sizing: border-box; /* Include padding in width calculation */
}

/* ====================================
   Flex Layout (Mobile First)
   ==================================== */
.flex-wrap {
    display: flex;
    flex-direction: column; /* Layout for SP (vertical stacking) */
    gap: 30px;
}

.section-img {
    width: 100%;
    max-width: 500px; /* Max width for image on SP */
    margin: 0 auto;
}

.section-header-wrap {
    width: 100%;
}

/* PC Size (768px and above) */
@media screen and (min-width: 768px) {
    .flex-wrap {
        flex-direction: row;       /* Horizontal alignment */
        justify-content: space-between;
        align-items: center;
        gap: 60px;
    }

    .section-header-wrap {
        width: 500px; /* Header width calculation */
    }

    .section-img {
        width: 40%;
        margin: 0;
    }
    
    /* Reverse left and right layout */
    .reverse-layout {
        flex-direction: row-reverse; /* Reverse left and right */
    }
    /* Adjustment for left-aligned image */
}

/* ------------------------------------
   Common section title (all pages)
   ------------------------------------ */
.common-section-title {
    font-size: 80px; /* Adjust font size according to design */
    font-weight: 900; /* Bold */
    font-family: 'Montserrat', 'Arial', sans-serif; /* Preferred English font */
    color: #F5F2EB; /* Off-white/beige color from the second character onwards in the image */
    letter-spacing: 0.05em;
}
.common-section-title .en{
    display: block;
    font-family: "Jost", sans-serif;
    font-weight: 700;
    line-height: 0.9;
    color: #F5F2EB;
    
    /* SP Size */
    font-size: 40px;
    margin-bottom: 20px;
}

.common-section-title .wh{
    color:#fff;
}

.common-section-title .ja {
    display: block;
    font-family: "Noto Sans JP", sans-serif;
    font-weight: 700;
    color: #333;
    font-size: 20px;
    margin-top: -10px;
    letter-spacing: 0.05em;
}

/* PC */
@media screen and (min-width: 768px) {

    .common-section-title .en{
        /* PC Size */
        font-size: 60px;
    }
}

/* ------------------------------------
   Common card grid (all pages)
   ------------------------------------ */
.common-card-grid {
    display: grid;
    grid-template-columns: 1fr; /* SP: 1 column */
    gap: 30px;
    margin-top: 50px;
}

/* Common card design (Purple to Red gradient border) */
.common-card {
    background: #fff;
    border-radius: 20px;
    overflow: hidden;
    /* Gradient border */
    border: 4px solid transparent; 
    background-image: linear-gradient(#fff, #fff), linear-gradient(-90deg, #8E24AA 0%, #E53935 100%);
    background-origin: border-box;
    background-clip: content-box, border-box;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}

/* Image area */
.common-card .card-img-wrap {
    position: relative;
}
.common-card .card-img-wrap img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 17px 17px 0 0; /* Fit perfectly inside the border */
}

/* Card inner text */
.common-card .card-body { padding: 20px; }
.common-card .card-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
    flex-wrap: wrap;
}
.common-card .card-title {
    font-size: 16px;
    font-weight: 700;
    margin: 0;
    font-family: "Noto Sans JP", sans-serif;
    border-bottom: #333 solid 1px;
    line-height: 2em;
}
.common-card .card-tag {
    font-size: 11px;
    border: 1px solid #333;
    border-radius: 20px;
    padding: 2px 10px;
    color: #333;
    background: #fff;
    line-height: 2em;
}
.common-card .card-desc {
    font-size: 13px;
    line-height: 1.6;
    text-align: justify;
    margin: 0;
}

/* --- PC Size (768px and above) --- */
@media screen and (min-width: 768px) {
    
    .common-card-grid {
        grid-template-columns: repeat(2, 1fr); /* PC: 2 columns */
        gap: 100px;
    }
}

/* Gradient for initial letter */
.common-section-title .first-letter {
    /* 1. Apply gradient to background (Purple to Magenta) */
    background: linear-gradient(135deg, #6A0DAD 0%, #D53D3B 100%);
    
    /* 2. Magic to clip background to text shape */
    -webkit-background-clip: text;
    background-clip: text;
    
    /* 3. Make original text color transparent to show clipped background */
    -webkit-text-fill-color: transparent;
    color: transparent;
    
    /* * Insurance to prevent display breaking when text is selected in browser, etc. */
    display: inline-block; 
}


/* ====================================
   card slider
   ==================================== */
.slider-card-wrap {
    position: relative;
    width: 100%;
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}

.card-slider-track {
    display: flex;
    overflow-x: auto; 
    scroll-behavior: smooth;
    width: 100%;
    border-radius: inherit;
    scroll-snap-type: x mandatory; 
    -ms-overflow-style: none; /* IE, Edge */
    scrollbar-width: none; /* Firefox */
}

.card-slider-track::-webkit-scrollbar {
    display: none;
}

.card-slide-item {
    flex: 0 0 100%; 
    width: 100%;
    scroll-snap-align: start; 
}

.slider-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 40px; 
    height: 40px;
    background-color: transparent; 
    border: none;
    border-radius: 0; 
    padding: 0;
    cursor: pointer;
    z-index: 10;
    font-size: 0; 
    color: transparent; 
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain; 
    
    transition: transform 0.2s ease, opacity 0.2s ease;
}

.prev-arrow { 
    left: 10px; 
    background-image: url('../img/arrow_left.png'); 
}

.next-arrow { 
    right: 10px; 
    background-image: url('../img/arrow_right.png'); 
}

.slider-arrow:hover {
    opacity: 0.8; 
}

.prev-arrow:hover {
    transform: translateY(-50%) translateX(-2px); 
}
.next-arrow:hover {
    transform: translateY(-50%) translateX(2px); 
}

/* ====================================
   Main Visual (Text Only)
   ==================================== */
.mv-section {
    position: relative;
    width: 100%;
    /* Ensure height */
    min-height: 600px; 
    padding-top: 200px; /* Header margin */
    z-index:1000;
}
.mv-txt-area {
    /* Adjust position */
    margin-top:200px;
    z-index:1001;
}

.title-img{
    width:600px;
    position:relative;
    z-index:1000;
}

.mv-copy {
    font-family: "Noto Sans JP", sans-serif;
    font-size: 32px;
    font-weight: 700;
    line-height: 1.5;
    margin-bottom: 10px;
}

.mv-copy-bg{
    display:inline;
    padding:0;
    margin:0;
    background:#fff;
}

.color-purple { color: #8E24AA; }
.color-pink { color: #E53935; } /* Orange-ish red */

.mv-sub {
    font-family: "Jost", sans-serif;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.05em;
}


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    /* Navigation layout for PC */
    .gnav-inner {
        padding-top: 100px;
    }
    .gnav-flex {
        flex-direction: row;
        justify-content: space-between;
        align-items: center; /* Vertically centered */
        padding: 0 50px;
    }
    .gnav-links { width: 40%; }
    .gnav-info { width: 40%; }
    
    .gnav-sns { justify-content: center; }
    .gnav-logo { text-align: center; }

    .nav-item .en { font-size: 40px; }
    .nav-item .ja { font-size: 14px; }
    
    .gnav-address hr { border-color: rgba(255,255,255); margin: 10px 0; }

    /* Main visual font size for PC */
    .mv-copy { font-size: 56px; }
    .mv-sub { font-size: 18px; }
}

/* ====================================
   General decoration
   ==================================== */
.deco-wrap{
    position:relative;
}

.common-side-pulse {
    display: block; /* Magic to make it a block-level element */
    position: absolute; /* Absolute positioning */
    z-index: 10000; /* Above content, Figma standard */
    pointer-events: none; /* Breakwater to prevent image from interfering with clicks */
    
    /* ▼ Adjust image size for SP ▼ */
    width: 24px; /* SP size from Figma */
    height: 138px; /* Maintain aspect ratio */
}

.deco-pulse-0{
    top:0;
    left:0;
}

.deco-pulse-1 {
    top: -81px;
    left: 10px;
}

.deco-pulse-2 {
    top: -50px;
    left: 10px;
}

.common-side-blob {
    display: block; /* Magic to make it a block-level element */
    position: absolute; /* Absolute positioning */
    z-index: 1; /* Above content, Figma standard */
    pointer-events: none; /* Breakwater to prevent image from interfering with clicks */
    
    /* ▼ Adjust image size for SP ▼ */
    width: 140px; /* SP size from Figma */
    height: 140px; /* Maintain aspect ratio */
}

.deco-blob-0{
    top:0;
    left:0;
    z-index:0;
}

.deco-blob-1 {
    top: 8px;
    right: -50px;
    z-index:0;
}

.deco-blob-2 {
    bottom: -20px;
    left: -50px;
    z-index:0;
    
}

.deco-blob-3 {
    top: 8px;
    right: -50px;
    z-index:0;
}

.deco-blob-4 {
    bottom: -20px;
    left: -50px;
    z-index:0;
}

.kblob-0{
    width:0px;
    height:0px;
    top:0;
    left:0;
    z-index:0;
}

.kblob-1{
    width: 50px;
    height:55px;
    top:27px;
    left:13px;
    z-index:0;
}

.kblob-2{
    width:110px;
    height:114px;
    top:27px;
    right:-50px;
    z-index:0;
}

.kblob-3{
    width:25px;
    height:25px;
    top:27px;
    right:80px;
    z-index:0;
}

.kblob-4{
    width:51px;
    height:50px;
    top:30px;
    right:10px;
    z-index:0;
}

.kblob-5{
    width:119px;
    height:106px;
    bottom:0px;
    left:-30px;
    z-index:0;
}

.kblob-6{
    width:82px;
    height:91px;
    top:10px;
    right:-20px;
    z-index:0;
}

.kblob-7{
    width: 103px;
    height: 93px;
    bottom:0;
    left:-17px;
    z-index:0;
}

.kblob-8{
    width: 25px;
    height: 25px;
    bottom: 26px;
    left:94px;
    z-index:0;
}




/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    /* Make image slightly larger and line longer for PC */
    .common-side-pulse {
        width: 53px; /* PC size (assuming the image itself is made long) */
        height:459px;
    }
    
    /* Adjustment for PC placement */
    .deco-pulse-1 {
        top: -300px;
        left: 130px; /* Slightly inward for PC */
    }
    .deco-pulse-2 {
        top: -312px;
        left: 130px;
    }

    .common-side-blob {
        
        
        /* ▼ Adjust image size for SP ▼ */
        width: 300px; /* SP size from Figma */
        height: 300px; /* Maintain aspect ratio */
    }

    .deco-blob-0{
        top:0;
        left:0;
    }

    .deco-blob-1 {
        top: 55px;
        right: 100px;
    }

    .deco-blob-2 {
        bottom: -50px;
        left: 130px;
        z-index:0;
    }

    .deco-blob-3 {
        top: 8px;
        right: -50px;
    }

    .deco-blob-4 {
        bottom: -50px;
        left: 130px;
        z-index:0;
    }

    .kblob-1{
        width: 93px;
        height:102px;
        top:380px;
        left:155px;
        z-index:0;
    }

    .kblob-2{
        width:200px;
        height:210px;
        top:482px;
        right:50px;
        z-index:0;
    }

    .kblob-3{
        width:45px;
        height:45px;
        top:222px;
        right:275px;
        z-index:0;
    }

    .kblob-4{
        width:82px;
        height:79px;
        top:192px;
        right:130px;
        z-index:0;
    }

    .kblob-5{
        width:219px;
        height:196px;
        bottom:10px;
        left:200px;
        z-index:0;
    }

    .kblob-6{
        width:190px;
        height:210px;
        top:110px;
        right:130px;
        z-index:0;
    }

    .kblob-7{
        width: 180px;
        height: 163px;
        bottom:0;
        left:44px;
        z-index:0;
    }

    .kblob-8{
        width: 45px;
        height: 45px;
        bottom: 70px;
        left:244px;
        z-index:0;
    }
}



/* ====================================
   [1] Common fluid blob background
   ==================================== */
.blob-wrap {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    overflow: hidden;
    background: var(--bg-base);
    pointer-events: none;
}

.blob {
    position: absolute;
    border-radius: 50%;
    opacity: 1;
}

.blob-1 {
    width: 450px; height: 450px;
    background: linear-gradient(135deg, #7C21BE 0%, #E44F4D 100%); 
    top: 60%; 
    left: 35%;
    margin-left: -500px; 
    animation: blob-float 45s infinite alternate ease-in-out;
}
.blob-2 {
    width: 400px; height: 550px;
    background: linear-gradient(135deg, #FA98BA 0%, #F0B40D 100%); 
    bottom: 20%; 
    left: 30%;
    margin-left: 100px; 
    animation: blob-float 45s infinite alternate-reverse ease-in-out;
}
.blob-3 {
    width: 300px; height: 300px;
    background: linear-gradient(135deg, #7C21BE 0%, #E44F4D 100%); 
    top: 40%; 
    left: 80%;
    margin-left: -200px;
    animation: blob-float 45s infinite alternate ease-in-out;
}

/* --- Animation --- */
@keyframes blob-float {
    0% {
        transform: translate(0, 0) scale(1) rotate(0deg);
        border-radius: 40% 60% 70% 30% / 40% 40% 60% 60%;
    }
    33% {
        transform: translate(80px, 40px) scale(1.1) rotate(10deg);
        border-radius: 70% 30% 50% 50% / 30% 30% 70% 70%;
    }
    66% {
        transform: translate(-40px, 100px) scale(0.9) rotate(-15deg);
        border-radius: 30% 70% 30% 70% / 60% 40% 60% 40%;
    }
    100% {
        transform: translate(0, 0) scale(1) rotate(0deg);
        border-radius: 40% 60% 70% 30% / 40% 40% 60% 60%;
    }
}

@media screen and (max-width: 767px) {
    .blob-1 {
        width: 250px; height: 250px; 
        top: 0%; left: -20px;
    }
    .blob-2 {
        width: 300px; height: 300px; 
        bottom: 5%; right: -30px;
    }
    .blob-3 {
        width: 200px; height: 200px; 
        top: 25%; left: 20%;
    }

    .blob-wrap {
        /*filter: blur(25px) contrast(30);*/
    }
}


/* =========================================================
   [MV] Infinite vertical gallery component
   - No CSS animation
   - Continuous update by JS(rAF)
   - Low speed, low load, fade processing
   Scope: Only inside #mv
   ========================================================= */

/* ---------- ROOT ---------- */
#mv.gallery-section{
  --mv-bg: var(--bg-base);
  --angle: 20deg;

  /* Section */
  --section-h: 888px;
  --pad-y: 100px;

  /* Column */
  --col-w: 420px;
  --col-gap: 40px;

  /* Thumbnail */
  --thumb-h: 320px;
  --thumb-gap: 20px;

  /* Border and shadow */
  --frame-radius: 60px;
  --frame-pad: 4px;
  --shadow: 0 8px 16px rgba(0,0,0,0.18);

  /* Speed (larger is slower) */
  --speed: 180s;

  /* Gallery position adjustment for PC */
  --g-x: -4%;
  --g-y: -60%;

  /* Fade strength (0 to disable) */
  --fade-strength: 0.25;
  position: relative;
  width: 100%;
  height: var(--section-h);
  padding: var(--pad-y) 0;
  overflow: hidden;
  background: var(--mv-bg);
  z-index:1000;
  
}

/* Prevent dimension shift */
#mv,
#mv *{
  box-sizing: border-box;
}

/* ---------- TEXT LAYER ---------- */
#mv .section-inner,
#mv .mv-inner,
#mv .mv-txt-area{
  position: relative;
  z-index: 3;
}

/* ---------- FADE OVERLAY (Visual trick) ---------- */
#mv.gallery-section::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;

  /* Top and bottom edge fade processing */
  background:
    linear-gradient(
      to bottom,
      rgba(255,255,255,var(--fade-strength)) 0%,
      rgba(255,255,255,0) 18%,
      rgba(255,255,255,0) 82%,
      rgba(255,255,255,var(--fade-strength)) 100%
    );

  /* Background color blend setting */
  mix-blend-mode: normal;
}

/* ---------- GALLERY WRAPPER ---------- */
#mv .gallery-wrapper{
  position: absolute;
  z-index: 1;
  left: 50%;
  top: 50%;
  display: flex;
  flex-direction: row;
  gap: var(--col-gap);
  width: 120vw;
  height: 140vh;
  transform-origin: center;
  transform: translate3d(var(--g-x), var(--g-y), 0) rotate(var(--angle));
  pointer-events: none;
  backface-visibility: hidden;
  will-change: transform;
}

/* ---------- TRACK (Controlled by JS) ---------- */
#mv .gallery-track{
  width: var(--col-w);
  display: flex;
  flex-direction: column;
  gap: 0; /* Fixed at 0 */
  flex: none;
  /* JS control */
  transform: translate3d(0, var(--track-y, 0px), 0);
  will-change: transform;
  backface-visibility: hidden;
}

/* ---------- SLIDE (2 duplicates) ---------- */
#mv .gallery-slide{
  display: flex;
  flex-direction: column;
  gap: var(--thumb-gap);
  padding-bottom: var(--thumb-gap); /* Seam interval */
  flex: none;
}

/* ---------- THUMB ---------- */
#mv .gallery-slide img{
  display: block;
  width: 100%;
  height: var(--thumb-h);
  object-fit: cover;
  flex: none;
  border-radius: var(--frame-radius);
  padding: var(--frame-pad);
  background: linear-gradient(135deg, #8e24aa 0%, #e53935 100%);
  box-shadow: var(--shadow);
  margin: 0 !important;
}

/* ---------- Completely stop old CSS animation ---------- */
#mv .slide-v-up,
#mv .slide-v-down,
#mv .track-v-up,
#mv .track-v-down{
  animation: none !important;
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  #mv.gallery-section::after{ display:none; }
  #mv .gallery-track{ transform:none; }
}

/* ---------- MOBILE ---------- */
@media screen and (max-width: 767px){
  #mv.gallery-section{
    --section-h: 760px;
    --col-w: 160px;
    --col-gap: 15px;
    --thumb-h: 110px;
    --thumb-gap: 15px;

    /* Lightweight setting for SP */
    --frame-radius: 20px;
    --frame-pad: 2px;
    --shadow: 0 4px 10px rgba(0,0,0,0.10);

    /* Make it even slower for SP to reduce prominence */
    --speed: 220s;

    /* Increase this for right alignment on SP (-42% -> -32% -> -22%) */
    --g-x-sp: -16%;
    --g-y-sp: -55%;

    /* Slightly stronger fade is also natural */
    --fade-strength: 0.40;
  }

  #mv .gallery-wrapper{
    width: 180vw;
    height: 150vh;
    transform: translate3d(var(--g-x-sp), var(--g-y-sp), 0) rotate(var(--angle));
  }
}


/* ====================================
   About Section
   ==================================== */
.top-obwh-1 {
    width: 100%;
    padding-top: 10%; /* Maintain ratio */
    background-image: url("../img/ob-wh@2x.png"); /* White band image */
    background-size: 100% auto;
    background-position: center top;
    background-repeat: no-repeat;
}

.mid-obwh-1 {
    background: var(--bg-white);
    padding-top: 60px; /* Item spacing */
    padding-bottom: 60px; /* Item spacing */
}

.bottom-obwh-1 {
    width: 100%;
    padding-bottom: 10%;
    background-image: url("../img/ob-wh@2x.png");
    background-size: 100% auto;
    background-position: center bottom;
    background-repeat: no-repeat;
    /* transform: rotate(180deg); Uncomment if reversal is needed */
}
.top-obwh2 {
    width: 100%;
    padding-top: 28px;
    margin-top:-30px;
    background: inherit;
    background-image: url("../img/top-ob-wh2@2x.png"); /* White band image */
    background-size: 100% auto;
    background-position: center top;
    background-repeat: no-repeat;
}

.mid-obwh2 {
    padding:60px 0;
    background: #f9f9f9;
}

.bottom-obwh2 {
    width: 100%;
    padding-bottom: 10%;
    background-image: url("../img/bottom-ob-wh2@2x.png");
    background-size: 100% auto;
    background-position: center top;
    background-repeat: no-repeat;
}
.about-section{

    margin-top:-100px;
    position:relative;
    z-index:1000;
}
.about-section .section-header-img {
    max-width: 330px;
    margin-bottom: 30px;
}



@media screen and (min-width: 768px) {
    .about-section .section-header-img {
        max-width: 500px;
    }

    .top-obwh2 {
        padding-top: 100px;
    }

    .mid-obwh2 {
        padding-top:100px;
        padding-bottom:100px;
    }

    .bottom-obwh2 {
    }
}




/* ====================================
   Service Section
   ==================================== */



/* ====================================
   Service section image decoration (common to all screens)
   ==================================== */
/* Container setting for image (gradient border + rounded corners) */
.section-img-wrap {
    display: block;
    width: 100%; 
    max-width: fit-content; 
    margin: 0 auto; 
    border-radius: 30px; /* Border radius size */
    padding: 3px; /* Border width */
    background: linear-gradient(135deg, #8E24AA 0%, #E91E63 100%);
    box-shadow: 0 4px 10px rgba(0,0,0,0.1); 
}

/* Image setting */
.section-img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: calc(30px - 5px); /* Adjust inner border radius */
}

/* ====================================
   Target PC (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    .section-img-wrap {
        width: 45%; /* Narrow width to align horizontally on PC */
        margin: 0;
    }
}

/* ====================================
   Target Smartphone (SP) (767px and below)
   ==================================== */
@media screen and (max-width: 767px) {
    
    /* Parent element (.section-inner) setting */
    .section-inner.flex-wrap {
        display: flex; /* Specify just in case */
        flex-direction: column; /* Change to vertical alignment (column) */
    }

    /* ▼ Magic to swap display order of child elements ▼ */
    
    /* [Correction point] Move the "box (wrap)" surrounding the image up, not the image itself! */
    .section-img-wrap {
        order: 1; /* Display first */
        margin-bottom: 20px; /* Add margin between image and text below */
        max-width: 100%; /* Full width on SP */
    }

    /* Display text block below */
    .section-header-wrap {
        order: 2; /* Display second */
    }
}



/* Background setting (insert image path as appropriate) */
.top-nobg {
    width: 100%;
    padding-top: 10%;
    /* background-image: url("../img/bg-wave-top.png"); */
    background-size: cover;
}

.mid-nobg {
    padding: 20px 0;
    /* background-image: url("../img/bg-wave-mid.png"); */
}

.bottom-nobg {
    width: 100%;
    padding-bottom: 10%;
    /* background-image: url("../img/bg-wave-bottom.png"); */
    background-size: cover;
}

/* Title area */
.section-title-wrap {
    text-align: center; /* Center title */
    margin-bottom: 60px;
}



/* Each item */
.section-item-header {
    margin-bottom: 20px;
    font-size: 24px;
}

#service .section-header{
    max-width:260px;
    margin-top:60px;
    margin-bottom:40px;
}

@media screen and (min-width: 768px) {
    .section-item-header {
        font-size: 32px; /* Larger for PC */
        text-align: center;
    }

    .service-section .section-header-img {
        max-width: 420px;
        margin: 0 auto;
    }

}

.section-item-txt {
    margin-bottom: 30px;
}

.section-link-btn {
    display: block;
    width: 180px;
    margin: 0 auto; /* Center on SP */
    margin-bottom:40px;
    transition: opacity 0.3s;
}
@media screen and (min-width: 768px) {
    .section-link-btn {
        width:280px;
        margin: 0; /* Left alignment on PC */
    }
    /* Right align button when on the right side (reverse)? */

    .service-section .section-header-img {
        max-width: 420px;
    }
}
.section-link-btn:hover {
    opacity: 0.7;
}


/* ====================================
   Works Section (Refined)
   ==================================== */
/* Base settings */
#works .section-inner{
    max-width:1400px;
}

.works-section {
    padding: 60px 0;
}
.color-purple {
    color: #8E24AA; /* Purple color for design */
}
.works-header {
    margin-bottom: 40px;
}
.works-header .section-title{
    max-width:240px;
}

.section-lead {
    font-size: 14px;
    line-height: 1.8;
    margin-top: 20px;
}
#works .section-link-btn {
    display: block;
    width: 280px;
    margin: 0 auto; /* Center on SP */
    transition: opacity 0.3s;
}
/* ----------------------------------
   Grid Layout (Mobile first)
   ---------------------------------- */
.works-grid {
    display: grid;
    grid-template-columns: 1fr; /* SP: 1 column */
    gap: 40px; /* Vertical spacing between items */
    margin-bottom: 50px;
}

/* ----------------------------------
   Card Item Styling
   ---------------------------------- */
/* Image */
.works-img img {
    width: 100%;
    height: auto;
    border-radius: 12px; /* Border radius setting */
    vertical-align: bottom;
    /* Add hover effect for image here if needed */
}

/* Text container */
.works-body {
    margin-top: 15px; /* Margin from image */
    padding: 0 5px; /* Slight horizontal margin */
}

/* Horizontal alignment of title and tag */
.works-meta {
    display: flex;
    justify-content: space-between; /* Align to left and right ends */
    align-items: center; /* Vertically centered */
    margin-bottom: 10px;
}

/* Title */
.works-title {
    font-size: 18px;
    font-weight: 700;
    margin: 0;
}

/* Tag */
.works-tag {
    font-size: 12px;
    border: 1px solid #333; /* Thin border */
    padding: 4px 10px;      /* Inner padding */
    white-space: nowrap;    /* Prevent line break */
    line-height: 1;
}

/* Description */
.works-desc {
    font-size: 14px;
    line-height: 1.7;
    text-align: justify; /* Justify */
    margin: 0;
}

/* Button area */
.works-btn-area {
    /* Adjust margin if necessary */
}


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    .works-section {
        padding: 80px 0;
    }

    .works-header{
        max-width:1160px;
        margin:0 auto;
        padding:60px 0;
    }
    .works-header img{
        max-width:390px;
    }


    .section-lead {
        font-size: 16px;
        text-align:center;
    }

    /* ▼ Change grid to 3 columns */
    .works-grid {
        /* Repeat 1fr 3 times = divide into 3 equal parts */
        grid-template-columns: repeat(4, 1fr);
        gap: 40px 30px; /* 40px vertical, 30px horizontal gap */
    }
    
    /* Fine-tune font size for PC (if necessary) */
    .works-title {
        font-size: 20px;
    }
    .works-desc {
        font-size: 15px;
    }
    .section-link-btn{
        width:220px;
        margin:0 auto;
    }
}


/* ====================================
   Infinite scroll (marquee)
   ==================================== */
.works-marquee-wrapper {
    display: flex;
    overflow: hidden; /* Hide parts extending outside the screen */
    width: 100vw; /* Expand to full screen width */
    /* ↓ Magic to make full width ignoring parent element (.section-inner etc) width limit */
    margin-left: calc(50% - 50vw); 
    margin-top: 50px;
    margin-bottom: 50px;
}

/* Scrolling column (track) */
.works-marquee-track {
    display: flex;
    gap: 20px; /* Gap between images */
    padding-right: 20px; /* * Super important: Add margin equal to gap at the end to make a perfect seam */
    /* Animation: Move infinitely at constant speed (linear) over 30 seconds */
    animation: marquee-left 30s linear infinite; 
}

/* Design of image inside */
.works-marquee-track img {
    width: 260px; /* Image width for SP */
    height: 180px; /* Image height for SP */
    object-fit: cover; /* Trim extending parts to fill nicely */
    border-radius: 12px; /* Border radius for image */
    flex-shrink: 0; /* Breakwater to prevent image squashing */
}

/* Keyframe to slide left */
@keyframes marquee-left {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-100%); } /* Return to 0% after moving 1 track length (100%) */
}

/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    .works-marquee-track {
        gap: 30px; /* Wider gap for PC */
        padding-right: 30px; 
    }
    .works-marquee-track img {
        width: 360px; /* Image width for PC */
        height: 240px; /* Image height for PC */
    }
}

/* ====================================
   Company Section
   ==================================== */
.company-section {
    padding: 60px 0;
}

/* Flex container (Mobile first) */
.company-flex {
    display: flex;
    flex-direction: column; /* SP: vertical stacking */
    gap: 40px; /* Margin between text and image */
    align-items: center; /* Center alignment */
}

/* Text area */
.company-txt {
    width: 100%;
    /* Center or left align text on SP */
    /* Looks left-aligned in design image, but center is OK if entire SP is centered */
    /* Base on left alignment according to design image here */
    text-align: left; 
}

/* Uncomment below if you want center alignment only on SP */
/*
@media screen and (max-width: 767px) {
    .company-txt { text-align: center; }
}
*/

.company-header {
    margin-bottom: 30px;
}

.company-header .section-title{
    max-width:260px;
}

/* Description */
.company-desc {
    font-size: 15px;
    line-height: 1.8;
    margin-bottom: 40px;
    font-weight: 700; 
}

.company-btn-wrap{
    width:270px;
    margin:0 auto
}

/* Illustration area */
.company-img {
    width: 100%;
    max-width: 500px;
    margin: 0 auto;
}
.company-img img {
    width: 100%;
    height: auto;
}


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    
    .company-section {
        padding: 100px 0; /* Larger margin for PC */
    }

    .company-flex {
        flex-direction: row; /* Horizontal alignment */
        justify-content: space-between; /* Align to left and right */
        align-items: center; /* Vertically centered */
        gap: 60px;
    }

    /* Adjust width ratio */
    .company-txt {
        width: 45%; /* Width of text area */
    }
    .company-img {
        width: 45%; /* Width of illustration area */
        margin: 0; /* Remove auto as it's placed on the right for PC */
    }

    .company-header .section-title{
        max-width:500px;
    }
}

/* ====================================
   Contact Box Section
   ==================================== */
.contact-box-section {
    padding-bottom: 60px; /* Margin from footer */
}

.contact-box {
    position: relative;
    width: 100%;
    border-radius: 20px; /* Border radius */
    overflow: hidden; /* Cut background extending from border radius */
    
    /* ▼ Background image setting */
    /* Change image path */
    background-image: url('../img/company-bnr-photo.png'); 
    background-size: cover;
    background-position: center;
    
    /* Content placement (SP: vertical stacking) */
    display: flex;
    flex-direction: column;
    gap: 30px;
    align-items: center;
    text-align: center;
    
    padding: 60px 20px; /* Inner padding */
    color: #fff; /* Text color is white */
}

/* ▼ Magic to overlay gradient on background (::before) */
.contact-box::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    /* Gradient from Purple (#8E24AA) to Red (#E53935) (approx. 85% opacity) */
    background: linear-gradient(90deg, rgba(142,36,170,0.85), rgba(229,57,53,0.85));
    z-index: 1; /* Overlay on image */
}

/* Inner content (display above background) */
.contact-box-txt,
.contact-box-btn {
    position: relative;
    z-index: 2;
}

/* Text */
.contact-box-txt p {
    font-size: 15px;
    letter-spacing: 0px;
    line-height: 1.8;
    font-weight: 700;
    margin: 0;
    color:#fff;
}

.btn-gradient-reverse {
    display:block;
    max-width:300px;
}
.btn-gradient-reverse:hover {
    opacity: 0.9;
}


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    
    .contact-box-section {
        padding: 100px 0;
        background:inherit;
    }

    .contact-box {
        flex-direction: row; /* Horizontal alignment */
        justify-content: center; /* Center alignment (space-between also possible depending on L/R balance) */
        gap: 80px; /* Margin between text and button */
        padding: 180px 60px;
        text-align: left; /* Left alignment on PC */
        background:url(../img/company-bnr-photo.png);
        background-size: cover;
        background-position: center;
    }
    
    .contact-box-txt p {
        font-size: 16px;
        font-weight: 500;
        line-height: 1.6;
    }
}


/* ====================================
   Kids & Family Page - Main Visual
   ==================================== */
.kids-mv-section {
    position: relative;
    width: 100%;
    /* Leave upper margin as the header is fixed */
    padding-top: 120px; 
    padding-bottom: 80px; /* Prevent overlap between bottom waves and content */
    background-color: #fff; /* Background color is white */
    text-align: center;
    overflow: hidden; /* Prevent overflow */
}

.kids-mv-content {
    width: 100%;
    max-width: 1000px; /* Limit so the image doesn't get too large */
    margin: 0 auto;
}

.kids-mv-title img {
    width: 100%;
    height: auto;
    vertical-align: bottom;
    /* Add light drop shadow if needed */
    /* filter: drop-shadow(0 5px 15px rgba(0,0,0,0.1)); */
}

.down-arrow{
    vertical-align: middle;
    margin:0 8px;
}

/* ====================================
   Responsive Adjustments
   ==================================== */
@media screen and (max-width: 767px) {
    .kids-mv-section {
        padding-top: 100px; /* Adjust to SP header height */
        padding-bottom: 50px;
    }
    
    .kids-mv-content {
        max-width: 100%;
        padding: 0 10px; /* Slight horizontal margin */
    }
}

/* ====================================
   Kids Intro Section (What is...)
   ==================================== */
.kids-intro-section {
    padding: 0;
    position: relative;
    margin-top:-100px;
    text-align: center;
}

/* Title area */
.kids-title-area {
    position: relative;
    margin-bottom: 40px;
    text-align:center;
}

.kids-section-title .en {
    font-family: "Jost", sans-serif;
    font-size: 40px;
    font-weight: 700;
    margin-bottom: 30px;
    letter-spacing: 0.05em;
}
.color-gold {
    color: #F2C94C; /* Yellow from design (Gold) */
}

.color-iv {
    color: #F5F2EB; /* Yellow from design (Gold) */
}/*#F5F2EB-*/

.color-wh {
    color: #FFF; /* Yellow from design (Gold) */
}

.kids-section-title .ja {
    display: block;
    margin-top:40px;
    font-family: "Noto Sans JP", sans-serif;
    font-size: 28px;
    font-weight: 700;
    color: #333;
}

/* Main text */
.kids-intro-text {
    max-width:460px;
    padding:20px;
    margin: 0 auto;
    font-family: "Noto Sans JP", sans-serif;
    font-size: 15px;
    line-height: 2.0; /* Wider for readability */
    color: #333;
    font-weight: 600;
}

/* ------------------------------------
   Decorations
   ------------------------------------ */
/* Left triangle (Drawn with CSS) */
.deco-triangle {
    position: absolute;
    top: 50%;
    left: -20px;
    transform: translateY(-50%) rotate(-15deg);
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 10px 18px 10px; /* Triangle size adjustment */
    border-color: transparent transparent #F2C94C transparent; /* Yellow triangle */
}

/* Right squiggly shape (CSS approximation) */
.deco-blob {
    position: absolute;
    top: 50%;
    right: 30px;
    transform: translateY(-50%);
    width: 25px;
    height: 25px;
    background-color: #DAF7A6; /* Yellowish green color */
    border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%; /* Distorted circle */
}


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    .kids-section-title .en {
        font-size: 60px; /* Larger on PC */
    }
    .kids-section-title .ja {
        font-size: 30px;
    }
    
    /* Decoration position adjustment */
    .deco-triangle {
        left: -60px;
        border-width: 0 15px 26px 15px; /* Larger */
    }
    .deco-blob {
        right: -60px;
        width: 40px;
        height: 40px;
    }

    .kids-intro-text {
        font-size: 16px;
    }
    
    .pc-only {
        display: block;
    }
}
@media screen and (max-width: 767px) {
    .pc-only { display: none; }
}

/* ====================================
   Kids Calendar Section
   ==================================== */
.kids-calendar-section {
    padding: 80px 0;
    background-color: #F5F2EB; /* Light beige (Ivory) */
    position: relative;
}

/* Title color (Green) */
.color-green {
    color: #A3D16E; /* Pastel green matching the design */
}

/* ------------------------------------
   Decorations (Around the calendar)
   ------------------------------------ */
.deco-circle-yellow {
    display: block;
    width: 15px;
    height: 15px;
    background-color: #F2C94C;
    border-radius: 50%;
    position: absolute;
    top: 50%;
    right: 20%; /* Placed at an appropriate position */
}

.deco-tri-pink {
    display: block;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 8px 14px 8px;
    border-color: transparent transparent #FF8FA3 transparent; /* Pink */
    position: absolute;
    top: 60%;
    right: 15%;
    transform: rotate(15deg);
}


/* ------------------------------------
   Calendar Wrapper (Responsive)
   ------------------------------------ */
.calendar-container {
    border-radius: 20px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05); /* Slight shadow */
    max-width: 900px;
    margin: 40px auto 0; /* Centered */
}

/* Magic to make iframe responsive */
.calendar-iframe-wrap {
    position: relative;
    width: 100%;
    /* Height follows iframe's height attribute, or fix aspect ratio.
       Google Calendar appearance changes depending on portrait/landscape,
       so it's safer to simply use 'width: 100%' and 'scrollable' here. */
    overflow: hidden;
}

.calendar-iframe-wrap iframe {
    width: 100% !important; /* Forcibly match parent element */
    max-width: 100%;
    height: 600px; /* Easy-to-read height on SP */
    border-radius: 10px;
}

/* ====================================
   Responsive (SP)
   ==================================== */
@media screen and (max-width: 767px) {
    .calendar-container {
    }
    .calendar-iframe-wrap iframe {
        height: 500px; /* A bit lower is fine for SP */
    }
    
    /* Decoration position adjustment */
    .deco-circle-yellow { right: 10%; top: 40%; }
    .deco-tri-pink { right: 5%; top: 50%; }
}

/* ====================================
   Tab switching
   ==================================== */
.css-tabs-wrapper {
    max-width: 900px;
    margin: 40px auto 0;
    position:relative;
    z-index:10;
}

.css-tabs-wrapper input[type="radio"] {
    display: none;
}

.tab-labels {
    display: flex;
    justify-content: flex-start; 
    gap: 0;
}

.tab-btn {
    display: block;
    width: 50%; 
    text-align: center;
    padding: 15px 10px;
    background-color: #E0E0E0; 
    color: #333;
    font-size: 15px;
    font-weight: 700;
    font-family: "Noto Sans JP", sans-serif;
    border-radius: 10px 10px 0 0; 
    cursor: pointer;
    transition: background-color 0.3s;
}

.tab-content-box {
    background-color: #ffffff; 
    padding: 20px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}

.tab-panel {
    display: none;
    animation: fadeIn 0.4s ease; 
}

/* ------------------------------------
   Behavior on click
   ------------------------------------ */
#tab_kanto:checked ~ .tab-content-box #panel_kanto {
    display: block; 
}
#tab_kanto:checked ~ .tab-labels label[for="tab_kanto"] {
    background-color: #ffffff; 
}

/* If Tohoku radio button is checked... */
#tab_tohoku:checked ~ .tab-content-box #panel_tohoku {
    display: block; 
}
#tab_tohoku:checked ~ .tab-labels label[for="tab_tohoku"] {
    background-color: #ffffff; 

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(5px); }
    to { opacity: 1; transform: translateY(0); }
}
}
/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    .tab-btn {
        width: 180px; /* Fix tab width on PC for a cleaner look */
        font-size: 18px;
        padding: 20px 10px;
    }
    .tab-content-box {
        padding: 40px;
    }
}


/* ====================================
   Kids Contents Section
   ==================================== */
.kids-contents-section {
    padding: 80px 0;
}

/* Title color (Light blue) */
.color-cyan {
    color: #4DD0E1; /* Light blue matching the design */
}
.mt-20 {
    margin-top: 20px;
}

/* Decoration: Star */
.deco-star {
    position: absolute;
    top: -30px;
    right: 20px;
    width: 50px;
    height: 50px;
    background: linear-gradient(135deg, #FF9A9E 0%, #FECFEF 100%);
    clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
    transform: rotate(15deg);
}

/* ------------------------------------
   Grid Layout
   ------------------------------------ */
.contents-grid {
    display: grid;
    grid-template-columns: 1fr; /* SP: 1 column */
    gap: 30px;
    margin-top: 50px;
    padding:0;
}

/* ------------------------------------
   Card Design (Gradient Border)
   ------------------------------------ */
.content-card {
    position: relative;
    background: #fff;
    border-radius: 20px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}

.content-card-2 {
    position: relative;
    background: #fff;
    border-radius: 20px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}

.card-img img {
    width: 100%;
    height: auto;
    display: block;
    margin: 0;
    padding: 0;
    border-radius: 16px 16px 0 0; 
    transform: scale(1.015);
    transform-origin: top center;
}

.content-card::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 20px;
    padding: 4px;
    background: linear-gradient(-90deg, #F48FB1, #FBC02D);
    -webkit-mask: 
        linear-gradient(#fff 0 0) content-box, 
        linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none; 
    z-index: 10; 
}

.content-card-2::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 20px;
    padding: 4px;
    background: linear-gradient(-90deg, #8E24AA, #E53935);
    -webkit-mask: 
        linear-gradient(#fff 0 0) content-box, 
        linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none; 
    z-index: 10; 
}

.card-body {
    padding: 20px;
}

.card-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
    flex-wrap: wrap;
}

.card-title {
    font-size: 18px;
    font-weight: 700;
    margin: 0;
    font-family: "Noto Sans JP", sans-serif;
}

.card-tag {
    font-size: 11px;
    border: 1px solid #999;
    border-radius: 20px; /* Round tag */
    padding: 3px 10px;
    color: #666;
    background: #fff;
    white-space: nowrap;
}

.card-desc {
    font-size: 14px;
    line-height: 1.6;
    color: #333;
    margin: 0;
    text-align: justify;
}


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    /* 2 columns for grid */
    .contents-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 150px;
    }

    /* Decoration position adjustment */
    .deco-star {
        right: 15%;
        width: 80px;
        height: 80px;
        top: -40px;
    }

    /* ▼ Magic to lower only the right column (even) of the Contents section ▼ */
    .contents-grid .content-card:nth-child(even) {
        transform: translateY(80px); /* Adjust the lower amount here (can be 50px depending on design) */
    }

    /* ▼ Add margin below parent element to prevent cut-off due to shifting ▼ */
    .contents-grid {
        padding-bottom: 40px; 
    }
}

/* ====================================
   Kids SNS Section
   ==================================== */
.kids-sns-section {
    position: relative;
    padding-bottom: 30px;
    margin-top: -1px; /* Fill gap */
}

/* Top curve decoration (if created pseudo-ly with CSS) */
.sns-curve-top {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 50px; /* Curve height */
    background-color: #fff; /* Same white as upper section */
    border-radius: 0 0 50% 50%; /* Round the bottom */
    /* * If using an image, specify with background-image */
}

/* Content position adjustment (avoid overlapping curve) */
.kids-sns-section .section-inner {
    padding-top: 80px; /* Curve + margin */
    position: relative;
    z-index: 2;
}

/* Title SNS */
.sns-title {
    font-family: "Jost", sans-serif;
    font-size: 50px;
    font-weight: 700;
    margin-bottom: 40px;
    line-height: 1;
    letter-spacing: 0.05em;
    text-align: center;;
}
.char-s-pink { color: #FF8FA3; } /* Pink */
.char-n-white { color: #fff; }    /* White */
.char-s-white { color: #fff; }    /* White */

.sns-link-fb-icon{
    display:block;
    width:100px;
    margin:0 auto;
}

.sns-link-fb-icon > a{
    display:block;
    width:100%;
    height:auto;
}


/* ------------------------------------
   Flex Layout
   ------------------------------------ */
.sns-flex {
    display: flex;
    flex-direction: column; /* SP: Vertical stacking */
    align-items: center;
    gap: 40px;
    text-align: center;
}

.sns-flex-2 {
    display: flex;
    flex-direction: column; /* SP: Vertical stacking */
    align-items: center;
    gap: 40px;
    text-align: left;
    padding-bottom:60px;
}

/* Text area */
.sns-head {
    font-size: 20px;
    font-weight: 700;
    margin-bottom: 20px;
    color: #333;
    font-family: "Noto Sans JP", sans-serif;
}

.sns-head-2 {
    font-size: 20px;
    font-weight: 700;
    margin-bottom: 20px;
    color: #333;
    font-family: "Noto Sans JP", sans-serif;
}

.sns-head-2 .common-section-title{
    margin-bottom:20px;
}

.sns-desc {
    font-size: 14px;
    line-height: 1.8;
    color: #333;
    font-weight: 500;
    text-align: center;
}

/* Icon area */
.sns-follow-msg {
    font-size: 14px;
    font-weight: 700;
    margin-bottom: 15px;
    font-family: "Noto Sans JP", sans-serif;
    letter-spacing: 0.1em;
}

.sns-link img {
    width: 100px; /* Icon size */
    height: auto;
    transition: transform 0.3s;
    /* Slightly float with drop shadow */
    filter: drop-shadow(0 4px 10px rgba(225, 48, 108, 0.3));
}
.sns-link:hover img {
    transform: scale(1.1);
}

/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    
    .sns-curve-top {
        height: 80px; /* Wider and gentler curve on PC */
        border-radius: 0 0 100% 100% / 0 0 100% 100%; /* Adjust to look like a horizontal ellipse */
    }

    .kids-sns-section .section-inner {
        padding-top: 120px;
    }

    /* Horizontal layout */
    .sns-flex {
        flex-direction: row;
        justify-content: center;
        align-items: center;
        gap: 80px; /* Horizontal gap */
    }

    /* Horizontal layout */
    .sns-flex-2 {
        flex-direction: row;
        justify-content: center;
        align-items: center;
        gap: 80px; /* Horizontal gap */
    }

    .sns-text-area {
    }

    .sns-head {
        font-size: 24px;
    }
    
    .sns-icon-area {
        text-align: center; /* Center around icons */
    }
    
    /* Remove line breaks only on SP */
    .sp-only { display: none; }
}


/* ====================================
   General Events Page (Rebuild)
   ==================================== */

/* --- KV Section --- */
.general-mv-section {
    position: relative;
    padding-top: 150px;
    padding-bottom: 80px;
    background-color: #E8E6E8; /* Gray/beige with a slight purple tint similar to the image */
    /* Or perhaps #F5F2EB (beige)? Looks grayish in the image */
    overflow: hidden;
}

/* Background fluid shape (Purple gradient) */
.general-blob-bg {
    position: absolute;
    display: block;
    bottom: -120px; /* Let it protrude at the bottom */
    left: -120px;
    width: 300px; /* Size on PC */
    height: auto;
    z-index: 0;
}


/* Background fluid shape (Purple gradient) */
.general-blob-bg-2 {
    position: absolute;
    display: block;
    top: -120px; /* Let it protrude at the bottom */
    right: -120px;
    width: 300px; /* Size on PC */
    height: auto;
    z-index: 0;
}

@media screen and (min-width: 768px) {
    .general-blob-bg-2 {
        width: 600px; /* Size on PC */
        height: 400px;
    }
}


.general-mv-flex {
    position: relative;
    z-index: 1; /* Above background */
    display: flex;
    flex-direction: column; /* SP: Vertical stacking */
    gap: 40px;
}

/* Common settings for giant titles */
.general-main-title .en {
    display: block;
    font-family: "Jost", sans-serif;
    font-weight: 700;
    line-height: 0.9;
    
    /* SP size */
    font-size: 60px;
    letter-spacing: -0.02em;
    margin-bottom: 20px;
}
.general-main-title .ja {
    display: block;
    font-family: "Noto Sans JP", sans-serif;
    font-weight: 700;
    color: #333;
    font-size: 20px;
    margin-top: -10px; /* Overlap with English */
    letter-spacing: 0.05em;
}

/* Initial letter color */
.color-purple-g { color: #8E24AA; } /* G of General */
.color-purple-c { color: #8E24AA; } /* C of Category */

.general-desc {
    font-size: 14px;
    line-height: 1.8;
    margin-top: 20px;
    margin-bottom: 20px;
    font-weight: 500;
}

/* Electrocardiogram-like line */
.general-heartbeat-line {
    width: 150px;
    height: 30px;
    margin: 0 auto; /* Centered on SP */
    background-image: url("data:image/svg+xml,%3Csvg width='150' height='30' viewBox='0 0 150 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 15 L50 15 L60 5 L70 25 L80 15 L150 15' fill='none' stroke='url(%23grad1)' stroke-width='2'/%3E%3Cdefs%3E%3ClinearGradient id='grad1' x1='0%25' y1='0%25' x2='100%25' y2='0%25'%3E%3Cstop offset='0%25' stop-color='%238E24AA'/%3E%3Cstop offset='100%25' stop-color='%23D81B60'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
}

/* Image area */
.general-mv-img picture img {
    width: 100%;
    height: auto;
    /* CSS shadow is unnecessary if the collage image itself has a shadow */
}


/* --- Category Section --- */
.general-category-section {
    margin-top:-5%;
    position: relative;
    /* Add svg or clip-path here to make the border with the upper section wavy */
}

/* Beige decoration on the right (amoeba-like shape) */
.category-bg-shape {
    position: absolute;
    top: 50px;
    right: -50px;
    width: 300px;
    height: 300px;
    background-color: #F5F2EB; /* Light beige */
    border-radius: 40% 60% 60% 40% / 60% 30% 70% 40%;
    z-index: 0;
}
.general-category-section .section-inner {
    position: relative;
    z-index: 1;
}

.mt-30 { margin-top: 30px; }

/* Category grid */
.category-grid {
    display: grid;
    grid-template-columns: 1fr; /* SP: 1 column */
    gap: 30px;
    margin-top: 50px;
}

/* Card design (Purple to red gradient border) */
.general-card {
    background: #fff;
    border-radius: 20px;
    overflow: hidden;
    /* Gradient border */
    border: 3px solid transparent; /* Thick border */
    background-image: linear-gradient(#fff, #fff), linear-gradient(135deg, #8E24AA 0%, #E53935 100%);
    background-origin: border-box;
    background-clip: content-box, border-box;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}

.card-img-wrap {
    position: relative;
}
.card-img-wrap img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 17px 17px 0 0; /* Align inside the border */
}

/* Arrow decoration on image (< >) */
.arrow-deco-left, .arrow-deco-right {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 10px;
    height: 10px;
    border-top: 2px solid #fff;
    border-left: 2px solid #fff;
    filter: drop-shadow(0 0 2px rgba(0,0,0,0.5));
}
.arrow-deco-left {
    left: 15px;
    transform: translateY(-50%) rotate(-45deg); /* < */
}
.arrow-deco-right {
    right: 15px;
    transform: translateY(-50%) rotate(135deg); /* > */
}

/* Inside card */
.card-body { padding: 25px; }
.card-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
    flex-wrap: wrap;
}
.card-title {
    font-size: 16px;
    font-weight: 700;
    margin: 0;
    font-family: "Noto Sans JP", sans-serif;
    border-bottom:#333 solid 1px;
    line-height:2em;
}
.card-tag {
    font-size: 11px;
    border: 1px solid #999;
    border-radius: 20px;
    padding: 2px 10px;
    color: #666;
    background: #fff;
    line-height:2em;
}
.card-desc {
    min-height:8em;
    font-size: 16px;
    line-height: 1.8;
    font-weight: 200;;
    text-align: justify;
}


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    
    /* KV Layout */
    .general-mv-flex {
        flex-direction: row; /* Horizontal alignment */
        align-items: center;
        justify-content: space-between;
    }
    .general-mv-text { width: 45%; }
    .general-mv-img { width: 50%; }
    .general-heartbeat-line {
        margin: 0; /* Left alignment */
    }

    /* Category Grid */
    .category-grid {
        grid-template-columns: repeat(2, 1fr); /* PC: 2 columns */
        gap: 40px;
    }

    /* Blob adjustment */
    .general-blob-bg {
        width: 600px;
        height: 400px;
        left: -150px;
        bottom: -100px;
    }

    .general-blob-bg-2 {
        width: 600px;
        height: 400px;
        right: -150px;
        top: -100px;
    }

}

/* ====================================
   Works Page Styles (Rebuild)
   ==================================== */

/* --- 1. Work (KV) Section --- */
.works-mv-section {
    position: relative;
    padding-top: 150px;
    padding-bottom: 100px;
    background-color: #FDFCF5; /* Base beige */
    background-image: url(../img/sp-works-fv-bg@2x.jpg);
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center; /* Base on the part you want to show (center, etc.) */
     
    overflow: hidden;
    text-align: center;
}

.works-mv-section >img{
    width:90%;
    max-width:640px;
    margin:0 auto;
}

/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    .works-mv-section{
        padding-bottom: 150px;
        background-image: url(../img/works-fv-bg.png);
    }
}

/* Background collage image */
.works-bg-collage {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    opacity: 0.3; /* Show faintly (so text is readable) */
}
.works-bg-collage img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.works-mv-content {
    position: relative;
    z-index: 1; /* In front of background */
    background: rgba(253, 252, 245, 0.6); /* Apply a thin white film to make text easier to read */
    padding: 20px;
    border-radius: 20px;
    display: inline-block; /* Match content width */
    /* If blurring background */
    backdrop-filter: blur(2px);
}

.color-purple-w { color: #D81B60; } /* W of Work (purplish red) */
.color-purple-p { color: #8E24AA; } /* P of Past (purple) */
.color-purple-e { color: #8E24AA; } /* E of Event */

/* Electrocardiogram line */
.works-heartbeat-line {
    width: 120px;
    height: 30px;
    margin: 10px auto 20px;
    /* SVG waveform */
    background-image: url("data:image/svg+xml,%3Csvg width='120' height='30' viewBox='0 0 120 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 15 L40 15 L50 5 L60 25 L70 15 L120 15' fill='none' stroke='%238E24AA' stroke-width='2'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
}

.works-lead {
    font-size: 14px;
    line-height: 1.8;
    font-weight: 700;
}


/* --- 2. Past Events Section --- */
.works-past-section {
    position: relative;
    margin-top:-5%;
}

/* Top right decoration Blob */
.works-blob-bg-right {
    position: absolute;
    top: 50px;
    right: -50px;
    width: 300px;
    height: 300px;
    background-color: #F5F2EB; /* Darker beige */
    border-radius: 40% 60% 50% 50%;
    z-index: 0;
}
.works-past-section .section-inner { 
    position: relative;
    z-index: 1;
    
}

.works-past-section .mid-obwh-1{
    background:#fff;
}

.past-grid {
    display: grid;
    grid-template-columns: 1fr; /* SP: 1 column */
    gap: 30px;
    margin-top: 50px;
}

/* Card design (Purple gradient border) */
.past-card {
    background: #fff;
    border-radius: 20px;
    overflow: hidden;
    /* Gradient border */
    border: 2px solid transparent;
    background-image: linear-gradient(#fff, #fff), linear-gradient(135deg, #8E24AA 0%, #E91E63 100%);
    background-origin: border-box;
    background-clip: content-box, border-box;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}

.past-img-wrap {
    position: relative;
    width: 100%;
}
.past-img-wrap img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 18px 18px 0 0;
}

/* Arrow decoration (Round button style) */
.arrow-circle-left, .arrow-circle-right {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 24px;
    height: 24px;
    /* Arrow image (SVG etc.) */
    background-color: rgba(255,255,255,0.4); /* Translucent white */
    border-radius: 50%;
    /* Draw arrow mark inside */
}
.arrow-circle-left { left: 10px; }
.arrow-circle-left::after {
    content: "";
    display: block;
    width: 6px; height: 6px;
    border-top: 2px solid #fff; border-left: 2px solid #fff;
    transform: rotate(-45deg);
    margin: 8px auto 0;
}
.arrow-circle-right { right: 10px; }
.arrow-circle-right::after {
    content: "";
    display: block;
    width: 6px; height: 6px;
    border-top: 2px solid #fff; border-right: 2px solid #fff;
    transform: rotate(45deg);
    margin: 8px auto 0;
}


/* --- 3. Event Reports Section --- */
.works-reports-section {
    position: relative;
    padding: 80px 0 100px;
    background-color: #FDFCF5;
}

/* Left edge vertical line + Electrocardiogram */
.reports-side-line {
    position: absolute;
    top: 0;
    left: 20px; /* Distance from left edge of screen */
    width: 2px;
    height: 200px; /* Appropriate length */
    background: linear-gradient(180deg, #8E24AA 0%, #D81B60 100%);
}
/* Jagged part in the middle of the line (added with ::before) */
.reports-side-line::before {
    content: "";
    position: absolute;
    top: 50px;
    left: -10px; /* Center alignment */
    width: 22px;
    height: 30px;
    /* Jagged image */
    background-image: url("data:image/svg+xml,%3Csvg width='22' height='30' viewBox='0 0 22 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 15 L5 15 L8 5 L14 25 L17 15 L21 15' fill='none' stroke='%238E24AA' stroke-width='2'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-color: #FDFCF5; /* Background color to hide the line */
}

.reports-flex {
    padding-left: 40px; /* Leave space for the line */
    display: flex;
    flex-direction: column;
    gap: 30px;
    align-items: center; /* Centered on SP */
    text-align: center; /* Centered on SP */
}

.reports-text {
    text-align: left; /* Left alignment might be easier to read for the text itself? Image is left aligned */
}

.reports-desc {
    margin-top: 20px;
    font-size: 15px;
    line-height: 1.8;
    font-weight: 700;
}

.reports-msg {
    font-size: 14px;
    font-weight: 700;
    margin-bottom: 15px;
}
.fb-icon-link img {
    width: 100px;
    transition: transform 0.3s;
}
.fb-icon-link:hover img { transform: scale(1.1); }


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    
    

    /* Past Events Grid */
    .past-grid {
        grid-template-columns: repeat(2, 1fr); /* PC: 2 columns */
        gap: 40px;
    }

    /* Event Reports */
    .reports-flex {
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
        text-align: left;
        padding-left: 100px; /* Distance to line on PC */
    }
    .reports-side-line {
        left: 50px; /* Line position on PC */
        height: 300px;
    }
    
    .reports-link {
        text-align: center;
    }
}

/* ====================================
   Company Page Styles (Rebuild)
   ==================================== */

/* --- 1. Company KV Section --- */
.company-mv-section {
    position: relative;
    padding-top: 200px;
    padding-bottom: 100px;
    background-color: #FDFCF5; /* Base beige */
    overflow: hidden;
    text-align: center;
}

.company-mv-section > img{
    width:90%;
    max-width:640px;
    margin:0 auto;
}

/* Center Blob decoration (Yellow and Purple) */
.company-mv-blob-wrap {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 600px;
    height: 400px;
    z-index: 0;
    opacity: 0.9;
}
.blob-yellow {
    position: absolute;
    top: 0;
    left: 0;
    width: 350px;
    height: 300px;
    background: linear-gradient(135deg, #FFEB3B, #FF9800); /* Yellow to Orange */
    border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
    mix-blend-mode: multiply; /* Clean up overlap */
}
.blob-purple {
    position: absolute;
    bottom: 0;
    right: 0;
    width: 350px;
    height: 300px;
    background: linear-gradient(135deg, #9C27B0, #D81B60); /* Purple to Pink */
    border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
    mix-blend-mode: multiply;
}

.company-mv-content {
    position: relative;
    z-index: 1; /* In front of decoration */
}

/* Common for giant titles */
.company-main-title .en {
    display: block;
    font-family: "Jost", sans-serif;
    font-weight: 700;
    line-height: 0.9;
    color: #fff;
    text-shadow: 0 0 20px rgba(0,0,0,0.1);
    
    /* SP size */
    font-size: 60px;
    margin-bottom: 5px;
}
/* If making only C of Company purple (looks like white text in the image, but if adding color, it's here) */
/* .company-main-title .en::first-letter { color: #8E24AA; } */

.company-main-title .ja {
    display: block;
    font-family: "Noto Sans JP", sans-serif;
    font-weight: 700;
    color: #333;
    font-size: 20px;
    margin-top: -10px;
    letter-spacing: 0.05em;
}

.color-purple-w { color: #8E24AA; } /* W of Who */
.color-purple-o { color: #D81B60; } /* O of Outline (purplish red in the image) */

/* Electrocardiogram line */
.company-heartbeat-line {
    width: 120px;
    height: 30px;
    margin: 10px auto 0;
    background-image: url("data:image/svg+xml,%3Csvg width='120' height='30' viewBox='0 0 120 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 15 L40 15 L50 5 L60 25 L70 15 L120 15' fill='none' stroke='%238E24AA' stroke-width='2'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
}


/* --- 2. Who we are Section --- */
.company-intro-section {
    margin-top:-5%;
    padding-bottom: 80px;
    position: relative;
}

/* Layout adjustment */
.company-block {
    margin-top: 20px;
    gap: 40px;
    position: relative;
}

/* Around text */
.company-sub-head {
    font-size: 30px;
    font-weight: 700;
    margin-bottom: 40px;
    font-family: "Noto Sans JP", sans-serif;
    letter-spacing: 0.05em;
}

.company-mini-head {
    font-size: 22px;
    font-weight: 700;
    margin-bottom: 15px;
    margin-top: 10px;
}
.company-body-text {
    font-size: 14px;
    line-height: 2.0;
    text-align: justify;
    margin-bottom:40px;
}

/* Around illustration (family) */
.img-family {
    position: relative;
    z-index: 1;
    max-width: 100%;
    height: auto;
}
/* Background Blob decoration */
.company-bg-blob {
    position: absolute;
    top: -20px;
    right: -20px;
    width: 300px;
    height: 300px;
    background-color: #FDFCF5; /* Light beige */
    border-radius: 40% 60% 70% 30% / 50% 60% 40% 50%;
    z-index: 0;
}

/* Photo gradient frame */
.company-photo-frame {
    padding: 3px;
    border-radius: 20px;
    background: linear-gradient(135deg, #8E24AA, #E91E63);
}
.company-photo-frame img {
    border-radius: 17px;
    display: block;
    width: 100%;
}

/* ====================================
   Reverse top and bottom only when displayed on smartphone
   ==================================== */
@media screen and (max-width: 767px) {
    .company-block {
        flex-direction: column-reverse;
    }
}

/* --- 3. Outline Section --- */
.company-outline-section {
    padding: 80px 0;
    position: relative;
}

/* Left edge vertical line + Electrocardiogram */
.outline-side-line {
    position: absolute;
    top: 0;
    left: 20px;
    width: 2px;
    height: 150px;
    background: linear-gradient(180deg, #8E24AA 0%, #D81B60 100%);
}
.outline-side-line::before {
    content: "";
    position: absolute;
    top: 30px;
    left: -10px;
    width: 22px;
    height: 30px;
    background-image: url("data:image/svg+xml,%3Csvg width='22' height='30' viewBox='0 0 22 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 15 L5 15 L8 5 L14 25 L17 15 L21 15' fill='none' stroke='%238E24AA' stroke-width='2'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-color: #E8E6E8; /* Background color to hide line */
}

/* Company outline table */
.outline-table-wrap {
    margin-top: 50px;
    border-top: 1px solid #ccc;
    width: 100%;
    max-width: 800px;
    margin-left: auto; /* If right-aligning */
    margin-right: auto;
}
.outline-row {
    display: flex;
    flex-wrap: wrap;
    border-bottom: 1px solid #ccc;
    padding: 20px 0;
}
.outline-row dt {
    width: 100%;
    font-weight: 700;
    margin-bottom: 5px;
    padding-left: 10px;
}
.outline-row dd {
    width: 100%;
    margin: 0;
    padding-left: 10px;
    font-size: 15px;
    font-weight:800;
    line-height: 1.8;
}

/* Location layout */
.loc-block { display: flex; flex-direction: column; gap: 5px; }
.loc-name { font-weight: 700; min-width: 150px; }
.mt-sp-20 { margin-top: 20px; }


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    
    /* KV Title */
    .company-main-title .en {
        font-size: 110px; /* PC size */
        margin-bottom: 0;
    }
    .company-main-title .ja {
        font-size: 32px;
        margin-top: -20px;
    }

    /* Who we are Layout */
    .company-text-col { width: 50%; }
    .company-img-col { width: 40%; }
    
    .img-family { margin-top: -50px; } /* Shift slightly upwards */

    /* Outline Layout */
    .outline-table-wrap {
        padding-left: 50px; /* Shift slightly to the right */
    }
    .outline-row {
        align-items: flex-start;
        padding: 25px 0;
    }
    .outline-row dt {
        width: 25%;
        margin-bottom: 0;
    }
    .outline-row dd {
        width: 75%;
    }
    .loc-block { flex-direction: row; }
    .mt-sp-20 { margin-top: 30px; }

    /* Side line position */
    .outline-side-line { left: 50px; height: 250px; }
}

/* ====================================
   Contact Page Styles
   ==================================== */

/* --- 1. Contact KV Section --- */
.contact-mv-section {
    position: relative;
    padding-top: 200px;
    padding-bottom: 120px;
    overflow: hidden;
    text-align: center;
}

.contact-mv-section >img{
    width:90%;
    max-width:640px;
    margin:0 auto;
}


/* KV decoration (almost the same as Company but with fine color adjustments) */
.contact-mv-blob-wrap {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 600px;
    height: 400px;
    z-index: 0;
    opacity: 0.9;
}
.blob-yellow-c {
    position: absolute;
    top: 0;
    left: 50px; /* Position adjustment */
    width: 350px;
    height: 300px;
    background: linear-gradient(135deg, #FFEB3B, #FF9800);
    border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
    mix-blend-mode: multiply;
}
.blob-purple-c {
    position: absolute;
    bottom: 0;
    right: 50px; /* Position adjustment */
    width: 350px;
    height: 300px;
    background: linear-gradient(135deg, #9C27B0, #D81B60);
    border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
    mix-blend-mode: multiply;
}

.contact-mv-content {
    position: relative;
    z-index: 1;
}

.contact-main-title .en {
    display: block;
    font-family: "Jost", sans-serif;
    font-weight: 700;
    line-height: 0.9;
    color: #fff;
    text-shadow: 0 0 20px rgba(0,0,0,0.1);
    font-size: 60px; /* SP size */
    margin-bottom: 5px;
}
.contact-main-title .ja {
    display: block;
    font-family: "Noto Sans JP", sans-serif;
    font-weight: 700;
    color: #333;
    font-size: 20px;
    margin-top: -10px;
    letter-spacing: 0.05em;
}

.contact-heartbeat-line {
    width: 120px;
    height: 30px;
    margin: 10px auto 0;
    background-image: url("data:image/svg+xml,%3Csvg width='120' height='30' viewBox='0 0 120 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 15 L40 15 L50 5 L60 25 L70 15 L120 15' fill='none' stroke='%238E24AA' stroke-width='2'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
}


/* --- 2. Contact Form Section --- */
.contact-form-section {
    padding: 0 0 100px;
}

/* White form container */
.form-container {
    background: #fff;
    padding: 40px 20px;
    border-radius: 0 0 20px 20px;
    margin-top: -50px;
    border-radius: 10px;
    max-width: 800px;
    margin-left: auto;
    margin-right: auto;
}

.form-header {
    text-align: center;
    margin-bottom: 40px;
}
.form-title {
    font-size: 20px;
    font-weight: 700;
    margin-bottom: 10px;
    font-family: "Noto Sans JP", sans-serif;
}
.form-desc {
    font-size: 13px;
    color: #666;
}

/* Form parts */
.form-item {
    margin-bottom: 30px;
}

.form-label {
    display: block;
    font-weight: 700;
    margin-bottom: 10px;
    font-size: 14px;
}

/* Required badge */
.badge-required {
    display: inline-block;
    background-color: #E53935; /* Red */
    color: #fff;
    font-size: 11px;
    padding: 2px 6px;
    border-radius: 4px;
    margin-left: 8px;
    vertical-align: middle;
}

/* Radio buttons */
.form-radio-group {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
}
.radio-label {
    display: flex;
    align-items: center;
    cursor: pointer;
}
.radio-label input[type="radio"] {
    margin-right: 8px;
    accent-color: #00BCD4; /* Light blue */
    width: 18px;
    height: 18px;
}
.radio-text {
    font-size: 14px;
}

/* Text input */
.form-input, .form-textarea {
    width: 100%;
    padding: 12px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 16px;
    appearance: none; /* iOS reset */
    background: #fff;
}
.form-input:focus, .form-textarea:focus {
    border-color: #8E24AA;
    outline: none;
}

/* 2-column layout (Name etc.) */
.form-row-2col {
    display: flex;
    gap: 20px;
}
.col-item {
    width: 50%;
}
.sub-label {
    display: block;
    font-size: 12px;
    margin-bottom: 5px;
    color: #333;
}

/* Text area */
.form-textarea {
    resize: vertical;
    min-height: 150px;
}

.form-note {
    font-size: 12px;
    color: #999;
    text-align: right;
    margin-top: 5px;
}

.form-notice {
    font-size: 13px;
    line-height: 1.6;
    margin-bottom: 30px;
}

.form-recaptcha {
    margin-bottom: 30px;
}
.form-recaptcha img {
    max-width: 100%;
    height: auto;
    border: 1px solid #ddd;
}

/* Submit button */
.form-btn-area {
    text-align: center;
}
.btn-submit {
    display: inline-block;
    background-color: #CFD8DC; /* Gray (when not entered) */
    color: #fff;
    font-size: 16px;
    font-weight: 700;
    padding: 15px 60px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.3s;
}
.btn-submit:hover {
    background-color: #B0BEC5;
}
/* Color when input is complete (assuming class assignment by JS, if expressing only with CSS for now, use below) */
/* .btn-submit.is-active { background-color: #8E24AA; } */


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    
    /* KV Title */
    .contact-main-title .en {
        font-size: 110px;
        margin-bottom: 0;
    }
    .contact-main-title .ja {
        font-size: 32px;
        margin-top: -20px;
    }

    /* Form Layout */
    .form-container {
        margin-top:-100px;
        padding: 60px 80px;
    }
    .form-title {
        font-size: 24px;
    }
    
    .form-label {
        font-size: 15px;
    }
}

/* Adjustments for SP only */
@media screen and (max-width: 767px) {
    .wrap-sp {
        flex-direction: column;
        gap: 15px;
    }
    /* Keep 2 columns on SP, or 1 column
    .form-row-2col {
        gap: 10px;
    }*/
}
.contact-heartbeat-line {
    width: 120px;
    height: 30px;
    margin: 10px auto 0;
    background-image: url("data:image/svg+xml,%3Csvg width='120' height='30' viewBox='0 0 120 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 15 L40 15 L50 5 L60 25 L70 15 L120 15' fill='none' stroke='%238E24AA' stroke-width='2'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
}


/* --- 2. Contact Form Section --- */
.contact-form-section {
    padding: 0 0 100px;
}

/* White form container */
.form-container {
    background: #fff;
    padding: 40px 20px;
    border-radius: 0 0 20px 20px;
    margin-top: -50px;
    border-radius: 10px;
    max-width: 800px;
    margin-left: auto;
    margin-right: auto;
}

.form-header {
    text-align: center;
    margin-bottom: 40px;
}
.form-title {
    font-size: 20px;
    font-weight: 700;
    margin-bottom: 10px;
    font-family: "Noto Sans JP", sans-serif;
}
.form-desc {
    font-size: 13px;
    color: #666;
}

/* Form parts */
.form-item {
    margin-bottom: 30px;
}

.form-label {
    display: block;
    font-weight: 700;
    margin-bottom: 10px;
    font-size: 14px;
}

/* Required badge */
.badge-required {
    display: inline-block;
    background-color: #E53935; /* Red */
    color: #fff;
    font-size: 11px;
    padding: 2px 6px;
    border-radius: 4px;
    margin-left: 8px;
    vertical-align: middle;
}

/* Radio buttons */
.form-radio-group {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
}
.radio-label {
    display: flex;
    align-items: center;
    cursor: pointer;
}
.radio-label input[type="radio"] {
    margin-right: 8px;
    accent-color: #00BCD4; /* Light blue */
    width: 18px;
    height: 18px;
}
.radio-text {
    font-size: 14px;
}

/* Text input */
.form-input, .form-textarea {
    width: 100%;
    padding: 12px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 16px;
    appearance: none; /* iOS reset */
    background: #fff;
}
.form-input:focus, .form-textarea:focus {
    border-color: #8E24AA;
    outline: none;
}

/* 2-column layout (Name etc.) */
.form-row-2col {
    display: flex;
    gap: 20px;
}
.col-item {
    width: 50%;
}
.sub-label {
    display: block;
    font-size: 12px;
    margin-bottom: 5px;
    color: #333;
}

/* Text area */
.form-textarea {
    resize: vertical;
    min-height: 150px;
}

.form-note {
    font-size: 12px;
    color: #999;
    text-align: right;
    margin-top: 5px;
}

.form-notice {
    font-size: 13px;
    line-height: 1.6;
    margin-bottom: 30px;
}

.form-recaptcha {
    margin-bottom: 30px;
}
.form-recaptcha img {
    max-width: 100%;
    height: auto;
    border: 1px solid #ddd;
}

/* Submit button */
.form-btn-area {
    text-align: center;
}
.btn-submit {
    display: inline-block;
    background-color: #CFD8DC; /* Gray (when not entered) */
    color: #fff;
    font-size: 16px;
    font-weight: 700;
    padding: 15px 60px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.3s;
}
.btn-submit:hover {
    background-color: #B0BEC5;
}
/* Color when input is complete (assuming class assignment by JS, if expressing only with CSS for now, use below) */
/* .btn-submit.is-active { background-color: #8E24AA; } */


/* ====================================
   PC Size (768px and above)
   ==================================== */
@media screen and (min-width: 768px) {
    
    /* KV Title */
    .contact-main-title .en {
        font-size: 110px;
        margin-bottom: 0;
    }
    .contact-main-title .ja {
        font-size: 32px;
        margin-top: -20px;
    }

    /* Form Layout */
    .form-container {
        margin-top:-100px;
        padding: 60px 80px;
    }
    .form-title {
        font-size: 24px;
    }
    
    .form-label {
        font-size: 15px;
    }
}

/* Adjustments for SP only */
@media screen and (max-width: 767px) {
    .wrap-sp {
        flex-direction: column;
        gap: 15px;
    }
    /* Keep 2 columns on SP, or 1 column
    .form-row-2col {
        gap: 10px;
    }*/
}

/* ====================================
   プライバシーポリシー用スタイル
   Privacy Policy Styles
   ==================================== */
.privacy-wrap {
    max-width: 800px;
    margin: 0 auto;
    padding: 40px 20px;
    background-color: #ffffff; /* 必要に応じて背景色を調整 */
    background-color: #ffffff; /* Adjust background color as needed */
    border-radius: 20px;
}

.privacy-title {
    font-size: 24px;
    text-align: center;
    margin-bottom: 30px;
    letter-spacing: 0.1em;
}

.privacy-heading {
    font-size: 18px;
    color: #8E24AA; /* サイトのメインカラー（紫）に合わせたにゃん */
    color: #8E24AA; /* Matched to the site's main color (purple) */
    margin-top: 40px;
    margin-bottom: 15px;
    padding-bottom: 5px;
    border-bottom: 1px solid #e0e0e0; /* 下線で区切りをわかりやすく */
    border-bottom: 1px solid #e0e0e0; /* Underline to make the separation clear */
}

.privacy-txt,
.privacy-address {
    font-size: 15px;
    line-height: 1.8;
    margin-bottom: 15px;
}

/* リスト（箇条書き）のスタイル */
/* List (bullet points) styles */
.privacy-list {
    font-size: 15px;
    line-height: 1.8;
    margin-bottom: 15px;
    padding-left: 1.5em; /* インデントを揃える */
    padding-left: 1.5em; /* Align indentation */
}

.privacy-list li {
    margin-bottom: 8px;
}

/* 番号付きリスト（1. 2. 3...） */
/* Numbered list (1. 2. 3...) */
ol.privacy-list,
.privacy-list ol {
    list-style-type: decimal;
}

/* 中の箇条書き（・） */
/* Nested bullet points (・) */
.privacy-list ul {
    list-style-type: disc;
    margin-top: 8px;
    padding-left: 1.5em;
}

/* スマホ表示の微調整 */
/* Fine adjustments for smartphone display */
@media screen and (max-width: 767px) {
    .privacy-wrap {
        padding: 20px 10px;
    }
    .privacy-title {
        font-size: 20px;
    }
    .privacy-heading {
        font-size: 16px;
    }
    .privacy-txt,
    .privacy-address,
    .privacy-list {
        font-size: 14px;
    }
}