    :root{
      --bg:#ffffff;
      --sub-bg:#faf8f4;
      --line:#e7dfd2;
      --gold:#a58a5a;
      --gold-soft:#c8b28c;
      --ink:#1e1a17;
      --muted:#6e655d;
    }

    body{
      font-family:"Kaisei Tokumin",serif;
      background:var(--bg);
      color:var(--ink);
      line-height:1.95;
      letter-spacing:.03em;
    }

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

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

    .navbar-brand,
    .hero-title,
    .section-title,
    .voice-title,
    .greeting-box h3,
    .course-card h3,
    .cta-copy,
    .access-name{
      font-family:"Yuji Syuku",serif;
    }

    .navbar{
      background:rgba(255,255,255,.94);
      backdrop-filter:blur(10px);
      border-bottom:1px solid rgba(165,138,90,.15);
    }

    .navbar-brand{
      display:flex;
      align-items:center;
      gap:.65rem;
      font-size:1.45rem;
      letter-spacing:.08em;
    }

    .brand-logo{
      width:42px;
      height:42px;
      object-fit:contain;
    }

    .nav-link{
      letter-spacing:.10em;
      color:var(--ink);
      position:relative;
    }

    .nav-link::after{
      content:"";
      position:absolute;
      left:.7rem;
      right:.7rem;
      bottom:.35rem;
      height:1px;
      background:var(--gold);
      transform:scaleX(0);
      transform-origin:center;
      transition:.3s ease;
    }

    .nav-link:hover::after,
    .nav-link.active::after{
      transform:scaleX(1);
    }

    .hero{
      min-height:94vh;
      display:flex;
      align-items:center;
      background:
        linear-gradient(90deg, rgba(255,255,255,.93) 0%, rgba(255,255,255,.82) 42%, rgba(255,255,255,.46) 100%),
        url('https://hanayagi-yatsuki.com/img/smp-top3.jpg') center center / cover no-repeat;
      position:relative;
      overflow:hidden;
    }

    .hero::before{
      content:"";
      position:absolute;
      inset:0;
      background:
        radial-gradient(circle at 18% 24%, rgba(165,138,90,.08), transparent 22%),
        radial-gradient(circle at 80% 70%, rgba(165,138,90,.05), transparent 24%);
      pointer-events:none;
    }

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

    .hero-kicker{
      color:var(--gold);
      letter-spacing:.22em;
      font-size:.85rem;
      margin-bottom:1rem;
    }

    .hero-title{
      font-size:clamp(2.8rem,6vw,5.2rem);
      letter-spacing:.06em;
      line-height:1.15;
      margin-bottom:.75rem;
    }

    .hero-sub{
      color:var(--muted);
      letter-spacing:.18em;
      margin-bottom:1.5rem;
    }

    .hero-card{
      max-width:700px;
      background:rgba(255,255,255,.84);
      border:1px solid rgba(165,138,90,.18);
      padding:1.7rem 1.7rem;
      box-shadow:0 18px 40px rgba(35,24,15,.05);
    }

    .cta-copy{
      font-size:clamp(1.45rem,2.8vw,2.25rem);
      line-height:1.7;
      color:var(--ink);
      margin-bottom:1rem;
    }

    .btn-japan{
      background:#111;
      color:#fff;
      border:1px solid #111;
      border-radius:0;
      padding:.9rem 1.4rem;
      letter-spacing:.12em;
    }

    .btn-japan:hover{
      background:var(--gold);
      border-color:var(--gold);
      color:#fff;
    }

    .btn-outline-japan{
      background:transparent;
      border:1px solid var(--gold-soft);
      color:var(--ink);
      border-radius:0;
      padding:.9rem 1.4rem;
      letter-spacing:.12em;
    }

    .btn-outline-japan:hover{
      background:var(--sub-bg);
      border-color:var(--gold);
      color:var(--gold);
    }

    section{
      padding:96px 0;
    }

    .section-soft{
      background:var(--sub-bg);
    }

    .section-head{
      margin-bottom:3rem;
    }

    .section-kicker{
      color:var(--gold);
      letter-spacing:.20em;
      font-size:.82rem;
      margin-bottom:.8rem;
    }

    .section-title{
      font-size:clamp(1.9rem,3vw,3rem);
      letter-spacing:.05em;
      margin-bottom:.7rem;
    }

    .section-line{
      width:70px;
      height:1px;
      background:var(--gold);
    }

    .lead-copy{
      color:var(--muted);
      max-width:920px;
    }

    .photo-tone{
      width:100%;
      height:100%;
      object-fit:cover;
      filter:
        saturate(.78)
        contrast(1.02)
        brightness(1.04)
        sepia(.10);
      border:1px solid rgba(165,138,90,.18);
    }

    .photo-wrap{
      position:relative;
      overflow:hidden;
      background:#f7f3ec;
      height:100%;
    }

    .photo-wrap::after{
      content:"";
      position:absolute;
      inset:0;
      background:
        linear-gradient(to bottom, rgba(255,255,255,.06), rgba(245,241,234,.12));
      pointer-events:none;
    }

    .intro-points{
      background:#fff;
      border:1px solid rgba(165,138,90,.18);
      box-shadow:0 18px 35px rgba(34,24,16,.04);
      padding:2rem;
      height:100%;
    }

    .intro-points ul,
    .voice-list,
    .detail-list{
      list-style:none;
      padding:0;
      margin:0;
    }

    .intro-points li,
    .voice-list li,
    .detail-list li{
      padding:.9rem 0;
      border-bottom:1px solid var(--line);
      color:var(--muted);
    }

    .intro-points li:last-child,
    .voice-list li:last-child,
    .detail-list li:last-child{
      border-bottom:none;
    }

    .intro-points strong,
    .voice-list strong{
      color:var(--ink);
      font-weight:700;
    }

    .news-list{
      border-top:1px solid var(--line);
    }

    .news-item{
      display:flex;
      gap:1rem;
      flex-wrap:wrap;
      padding:1rem 0;
      border-bottom:1px solid var(--line);
    }

    .news-date{
      color:var(--gold);
      min-width:120px;
    }

    .card-wafu{
      background:#fff;
      border:1px solid rgba(165,138,90,.18);
      box-shadow:0 18px 35px rgba(34,24,16,.04);
    }

    .schedule-card{
      padding:2rem;
    }

    .calendar-legend{
      display:flex;
      flex-wrap:wrap;
      gap:1rem;
      margin-bottom:1rem;
      color:var(--muted);
      font-size:.92rem;
    }

    .dot{
      width:11px;
      height:11px;
      border-radius:50%;
      display:inline-block;
      margin-right:.4rem;
      vertical-align:middle;
    }

    .dot-open{ background:#b79b6d; }
    .dot-few{ background:#d3bf9a; }
    .dot-full{ background:#807567; }
    .dot-close{ background:#d9d2c7; }

    .schedule-table{
      width:100%;
      border-collapse:collapse;
      margin-top:1rem;
    }

    .schedule-table th,
    .schedule-table td{
      border:1px solid #eee7db;
      text-align:center;
      padding:.85rem .4rem;
      font-size:.95rem;
    }

    .schedule-table th{
      background:#fcfbf8;
      font-weight:600;
    }

    .status-open{ background:rgba(183,155,109,.16); }
    .status-few{ background:rgba(211,191,154,.23); }
    .status-full{ background:rgba(127,116,103,.15); color:#52483d; }
    .status-close{ background:rgba(217,210,199,.35); color:#8b8277; }

    .course-card{
      height:100%;
    }

    .course-card img{
      width:100%;
      height:220px;
      object-fit:cover;
    }

    .course-card .content{
      padding:1.5rem;
    }

    .course-card h3{
      font-size:1.45rem;
      margin-bottom:.8rem;
      letter-spacing:.04em;
    }

    .course-num{
      color:var(--gold);
      font-size:.9rem;
      letter-spacing:.18em;
      margin-bottom:.5rem;
    }

    .course-card p{
      color:var(--muted);
      margin-bottom:.9rem;
    }

    .course-note{
      font-size:.92rem;
      color:var(--muted);
      padding-top:.7rem;
      border-top:1px solid var(--line);
    }

    .merit-box{
      background:#fff;
      border:1px solid rgba(165,138,90,.18);
      padding:1.5rem;
      height:100%;
    }

    .merit-box h4{
      font-size:1.08rem;
      margin-bottom:.75rem;
      color:var(--ink);
    }

    .merit-box p{
      margin-bottom:0;
      color:var(--muted);
    }

    .voice-panel{
      background:linear-gradient(180deg,#fff,#fcfaf6);
      border:1px solid rgba(165,138,90,.18);
      padding:2rem;
      height:100%;
      box-shadow:0 18px 35px rgba(34,24,16,.04);
    }

    .voice-title{
      font-size:1.7rem;
      margin-bottom:1rem;
    }

    .greeting-box{
      background:#fff;
      border:1px solid rgba(165,138,90,.18);
      box-shadow:0 18px 35px rgba(34,24,16,.04);
      padding:2.5rem;
      height:100%;
    }

    .greeting-box h3{
      font-size:1.7rem;
      margin-bottom:1.4rem;
    }

    .greeting-box p{
      color:var(--muted);
    }

    .instagram-box{
      padding:2rem;
      text-align:center;
    }

    .instagram-box p{
      color:var(--muted);
      margin-bottom:1.2rem;
    }

    .access-card{
      background:#fff;
      border:1px solid rgba(165,138,90,.18);
      box-shadow:0 18px 35px rgba(34,24,16,.04);
      padding:2rem;
      height:100%;
    }

    .access-name{
      font-size:1.7rem;
      margin-bottom:1rem;
    }

    .map-frame{
      width:100%;
      height:420px;
      border:0;
      filter:grayscale(.15) sepia(.05);
    }

    .contact-panel{
      padding:2rem;
    }

    .footer{
      background:#11100e;
      color:rgba(255,255,255,.82);
      text-align:center;
      padding:34px 0;
      letter-spacing:.08em;
      font-size:.93rem;
    }

    @media (max-width: 991.98px){
      .hero{
        min-height:auto;
        padding:120px 0 88px;
        background:
          linear-gradient(180deg, rgba(255,255,255,.94) 0%, rgba(255,255,255,.82) 48%, rgba(255,255,255,.46) 100%),
          url('https://hanayagi-yatsuki.com/img/smp-top3.jpg') center center / cover no-repeat;
      }
    }

    @media (max-width: 575.98px){
      section{
        padding:72px 0;
      }

      .hero-card,
      .intro-points,
      .voice-panel,
      .greeting-box,
      .access-card,
      .schedule-card,
      .instagram-box,
      .contact-panel{
        padding:1.4rem;
      }

      .hero-title{
        font-size:2.4rem;
      }

      .brand-logo{
        width:34px;
        height:34px;
      }
    }
.gallery-item{
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: #f7f3ec;
  border: 1px solid rgba(165,138,90,.18);
  cursor: pointer;
}

.gallery-item img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .45s ease, filter .45s ease;
}

.gallery-item:hover img{
  transform: scale(1.06);
}

.lightbox-modal .modal-content{
  background: transparent;
  border: none;
}

.lightbox-modal .modal-body{
  padding: 0;
  text-align: center;
}

.lightbox-img{
  max-width: 92vw;
  max-height: 86vh;
  width: auto;
  height: auto;
  margin: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,.35);
}

.lightbox-close{
  position: fixed;
  top: 22px;
  right: 28px;
  z-index: 1060;
  background: rgba(255,255,255,.9);
  border: none;
  width: 44px;
  height: 44px;
  font-size: 1.6rem;
  line-height: 1;
}
.news-detail-card{
  background:#fff;
  border:1px solid rgba(165,138,90,.18);
  box-shadow:0 18px 35px rgba(34,24,16,.04);
  padding:2rem;
  height:100%;
  position:relative;
}

.news-detail-card::before{
  content:"";
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:3px;
  background:linear-gradient(90deg, var(--gold), transparent);
}

.news-detail-date{
  color:var(--gold);
  font-size:.9rem;
  letter-spacing:.12em;
  margin-bottom:.8rem;
}

.news-detail-card h3{
  font-family:"Yuji Syuku",serif;
  font-size:1.55rem;
  letter-spacing:.04em;
  margin-bottom:1rem;
}

.news-detail-card p{
  color:var(--muted);
  margin-bottom:1rem;
}

.news-detail-card p:last-child{
  margin-bottom:0;
}

.training-place-wrap{
  margin-top:5rem;
}

.place-card{
  background:#fff;
  border:1px solid rgba(165,138,90,.18);
  box-shadow:0 20px 40px rgba(34,24,16,.04);
  overflow:hidden;
  transition:.35s ease;
}

.place-card:hover{
  transform:translateY(-4px);
}

.place-image{
  overflow:hidden;
  height:320px;
}

.place-image img{
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .5s ease;
}

.place-card:hover img{
  transform:scale(1.04);
}

.place-body{
  padding:2rem;
}

.place-label{
  color:var(--gold);
  letter-spacing:.18em;
  font-size:.78rem;
  margin-bottom:.8rem;
}

.place-body h3{
  font-family:"Yuji Syuku",serif;
  font-size:2rem;
  margin-bottom:1rem;
  letter-spacing:.04em;
}

.place-body p{
  color:var(--muted);
  margin-bottom:1.3rem;
}

.place-info{
  list-style:none;
  padding:0;
  margin:0;
}

.place-info li{
  position:relative;
  padding-left:1.3rem;
  margin-bottom:.55rem;
  color:var(--muted);
}

.place-info li::before{
  content:"●";
  position:absolute;
  left:0;
  top:0;
  color:var(--gold);
  font-size:.7rem;
}

@media (max-width: 767px){

  .place-image{
    height:240px;
  }

  .place-body{
    padding:1.5rem;
  }

  .place-body h3{
    font-size:1.6rem;
  }

}