@charset "utf-8";




/*リセットCSS（sanitize.css）の読み込み
---------------------------------------------------------------------------*/
@import url("https://unpkg.com/sanitize.css"); /* reset */
@import url("https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.10.0/css/lightbox.css");
@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css");
@import url('https://fonts.googleapis.com/css2?family=Big+Shoulders+Display&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@400;700&family=Playfair+Display:wght@400;700&display=swap');
@import url("animation.css");

/* Root & base
   -------------------------------------------------------------------------- */
html, body {
  margin: 0;
  padding: 0;
  height: 100vh;
  font-size: 14px;
  -webkit-text-size-adjust: none;
}

body {
  font-family: 'Playfair Display', 'Noto Serif JP', sans-serif;
  background: #fff url(../images/bg.jpg) repeat center center / 200px;
  color: #ccc;
  line-height: 2;
}

/* Element base */
figure, dd, nav { margin: 0; padding: 0; }
table { border-collapse: collapse; }
img { border: 0; max-width: 100%; height: auto; vertical-align: middle; }
video { max-width: 100%; }
iframe { width: 100%; }
ul, ol { margin-bottom: 30px; }

/* Links */
a { color: #ccc; transition: .3s; text-decoration: none; }
a:hover { opacity: .8; }

/* Background main image layer */
#mainimg {
  text-indent: -9999px;
  position: fixed;
  inset: 0 0 0 0;
  z-index: -1;
  background: url(../images/bg_main.jpg) no-repeat center center / cover;
}

/* Header / Logo (mobile default)
   -------------------------------------------------------------------------- */
header { height: 100%; }

header #logo img {
  position: absolute;
  left: 10px;
  top: 10px;
  width: 120px;
  box-shadow: 0 0 30px rgba(0,0,0,.3);
  background: #fff; 
}

@media (min-width: 900px) {
  header #logo img {
    position: fixed;
    left: 5%;
    top: -5px;
    width: 280px;
    background: #fff; 
  }
}

/* Navigation (mobile drawer default)
   -------------------------------------------------------------------------- */
/* Hamburger button */
.hamburger {
  position: fixed;
  top: 12px; right: 12px;
  z-index: 100;
  width: 44px; height: 44px;
  display: flex; flex-direction: column; justify-content: center;
  gap: 6px;
  background: #fff; border: 0; border-radius: 8px;
  box-shadow: 0 4px 20px rgba(0,0,0,.15);
}
.hamburger span {
  display: block; width: 70%; height: 2px; margin: 0 auto;
  background: #333; transition: .2s;
}

/* Overlay */
.menu-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.4);
  z-index: 98;
  display: none;
}

/* Drawer body */
#menubar {
  list-style: none;
  margin: 0;
  padding: 80px 20px 20px;
  position: fixed; top: 0; right: 0;
  width: min(80%, 340px);
  height: 100%;
  background: #fff;
  box-shadow: -16px 0 40px rgba(0,0,0,.2);
  overflow-y: auto;
  display: none;
  z-index: 99;
  /* unified type for mobile */
  font-family: 'Noto Sans JP','Helvetica Neue',Arial,sans-serif;
  font-weight: 500;
  letter-spacing: .03em;
  text-align: left;
}
#menubar.is-open { display: block; }

#menubar li {
  display: block;
  position: static;
  width: auto;
  margin: 0 0 12px;
  line-height: normal;
  border: 0;
  box-shadow: none;
  background: transparent;
  transform: none;
  filter: none;
  animation: none;
  font-size: 1.1rem;
}

#menubar li a {
  display: block;
  color: #222;
  padding: 14px 10px;
  border-bottom: 1px solid #eee;
  transition: background-color .2s;
}
#menubar li a:hover { background: #f8f8f8; }

/* Contents (mobile default)
   -------------------------------------------------------------------------- */
.contents {
  overflow: hidden;
  padding: 0 4% 50px;
}

/* Typography blocks
   -------------------------------------------------------------------------- */
main h2 {
  font-size: 2em;
  margin-bottom: 20px;
  text-align: center;
  letter-spacing: .2em;
}
main h2::before {
  content: "＊";
  display: block;
  text-shadow: 20px 10px 0 rgba(255,255,255,.5);
}
main h2 span { display: block; font-size: .7em; }
main h3 {
  margin-bottom: 20px;
  letter-spacing: .1em;
  background: rgba(255,255,255,.3);
  text-align: center;
  border-radius: 30px;
  padding: 0 20px;
}
main p { padding: 0 30px 30px; }

/* Section backgrounds */
.bg1 { background: url(../images/bg1.jpg) repeat center top / 200px; }
.bg2 { background: url(../images/bg2.jpg) repeat center top / 200px; }
.bg3 { background: url(../images/bg3.jpg) repeat center top / 200px; }
.bg4 { background: url(../images/bg4.jpg) repeat center top / 200px; }

/* About section hero blend */
#about {
  min-height: 70vh;
  background:
    linear-gradient(to left,
      rgba(255,255,255,0) 0%,
      rgba(255,255,255,0) 25%,
      rgba(255,255,255,0.6) 45%,
      #fff 60%),
    url('/images/about_bg.png') right center / cover no-repeat;
  background-size: 80%;
  background-repeat: no-repeat;
  background-position: right center;
  background-color: #fff;
  color: #333;
}

/* Gallery list */
.list-container {
  display: flex; flex-wrap: wrap; justify-content: space-between;
}
.list-container .list {
  display: flex; flex-direction: column; justify-content: space-between;
  margin-bottom: 30px;
  border-radius: 10px;
  overflow: hidden;
  width: 22%;
}

/* News block (#new) */
#new { padding: 0 20px; }
#new dt span { display: none; } /* hidden on small screens */

/* Footer */
footer {
  font-size: .6em;
  text-align: center;
  padding: 20px;
  color: #fff;
  background: #282928;
}
footer small { font-size: 100%; }
footer a { color: #fff; text-decoration: none; }
footer .pr { display: block; }

/* Tables (.ta1) */
.ta1 { border-top: 1px solid rgba(255,255,255,.5); width: 100%; margin: 0 auto 30px; }
.ta1 tr { border-bottom: 1px solid rgba(255,255,255,.5); }
.ta1 th, .ta1 td { padding: 10px 5px; word-break: break-all; }
.ta1 th { width: 30%; text-align: left; }
.ta1 caption {
  font-weight: bold;
  padding: 10px 5px;
  background: rgba(255,255,255,.2);
  margin-bottom: 15px;
  border-radius: 5px;
}

/* PageTop */
.pagetop-show { display: block; }
.pagetop a {
  display: block; text-align: center;
  position: fixed; z-index: 99; right: 20px; bottom: 20px;
  color: #fff; font-size: 1.5em;
  background: rgba(0,0,0,.2);
  width: 60px; line-height: 60px; border-radius: 50%;
}

/* Contact */
.contact-form {
  max-width: 600px; margin: 0 auto;
  background: rgba(255,255,255,.85);
  padding: 30px; border-radius: 10px;
  box-shadow: 0 0 20px rgba(0,0,0,.1);
}
.contact-form label { display: block; margin-bottom: 8px; font-weight: bold; color: #333; }
.contact-form input[type="text"],
.contact-form textarea {
  width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 5px;
  font-size: 1em; box-sizing: border-box; margin-bottom: 20px; background: #fff;
}
.contact-form textarea { resize: vertical; }
.contact-form button {
  display: block; width: 150px; margin: 0 auto;
  background: #333; color: #fff; border: 0; padding: 10px 0;
  border-radius: 5px; font-size: 1em; cursor: pointer; transition: .3s;
}
.contact-form button:hover { background: #555; }
#contact section p { text-align: center; margin: 0 auto 1em; }
.form-notice { margin-top: 10px; font-size: .9em; color: #666; opacity: .9; transition: opacity .2s; }

/* Modal */
.modal { position: fixed; inset: 0; display: none; align-items: center; justify-content: center; z-index: 1000; }
.modal.is-active { display: flex; }
.modal-overlay { position: absolute; inset: 0; background: rgba(0,0,0,.4); }
.modal-content {
  position: relative; max-width: 640px; width: calc(100% - 40px);
  background: rgba(255,255,255,.95); border-radius: 12px;
  box-shadow: 0 20px 50px rgba(0,0,0,.3);
  padding: 28px; color: #333; animation: modalIn .2s ease-out;
}
.modal-close { position: absolute; top: 8px; right: 10px; background: transparent; border: 0;
  font-size: 24px; line-height: 1; cursor: pointer; color: #333; }
.modal-body { font-size: 1rem; line-height: 1.8; }
@keyframes modalIn { from { transform: translateY(8px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

/* Utilities */
.clearfix::after { content: ""; display: block; clear: both; }
.color-theme, .color-theme a { color: #74791b !important; }
.color-check, .color-check a { color: #f00 !important; }
.c { text-align: center !important; }
.ws, .wl { width: 95%; display: block; }
.mb30 { margin-bottom: 30px !important; }
.look { display: inline-block; padding: 0 10px; background: #666; color: #fff; border-radius: 3px; margin: 5px 0; }
.look .color-check { color: #ffcc00 !important; }
.small { font-size: .6em; }

/* --------------------------------------------------------------------------
   Small ≥370px : News layout becomes two-column-ish
   -------------------------------------------------------------------------- */
@media (min-width: 370px) {
  #new { margin: 0; display: flex; flex-wrap: wrap; }
  #new dt, #new dd { padding: 5px 0; }
  #new dt { width: 8em; }
  #new dd { width: calc(100% - 8em); }
}

/* --------------------------------------------------------------------------
   ≤900px + landscape : adjust content padding (legacy behavior)
   -------------------------------------------------------------------------- */
@media (max-width: 900px) and (orientation: landscape) {
  .contents { padding-left: 130px; }
}

/* --------------------------------------------------------------------------
   Desktop ≥900px : switch to original fixed menu layout
   -------------------------------------------------------------------------- */
@media (min-width: 900px) {
  html, body { font-size: 16px; }

  /* Logo */
  header #logo img {
    width: 280px;
    left: 5%;
    top: -5px;
  }

  /* Hide hamburger on desktop */
  .hamburger { display: none; }
  .menu-overlay { display: none !important; }
  #menubar { display: block; width: auto; height: auto; position: static; background: transparent; box-shadow: none; padding: 0; }
  #menubar li { display: inline-block; text-align: center; font-size: 2em; position: fixed; box-shadow: 0 0 30px rgba(0,0,0,.3); font-family: 'Big Shoulders Display', cursive; transition: .5s; animation: opa1 1.5s both; }
  #menubar li a { color: #000; }

  /* Hover effects */
  #menubar li:hover { transform: scale(1.05); filter: brightness(1.1); }

  /* Positioning of 4 menu items (kept from original) */
  #menubar li:nth-of-type(1) { left: 20%; top: 27%; background: #fff; width: 150px; line-height: 150px; animation-delay: .2s; }
  #menubar li:nth-of-type(2) { left: 4%;  top: 45%; background: #fff; width: 190px; line-height: 190px; animation-delay: .4s; }
  #menubar li:nth-of-type(3) { left: 18%; top: 65%; background: #fff; width: 130px; line-height: 130px; animation-delay: .6s; }
  #menubar li:nth-of-type(4) { left: 7%;  top: 80%; background: #fff; width: 130px; line-height: 130px; animation-delay: .8s; }

  /* Contents padding to make room for fixed menu */
  .contents { padding: 0 4% 50px 35%; }

  /* News labels visible */
  #new dt { width: 14em; display: flex; justify-content: space-between; }
  #new dt span {
    display: inline-block; width: 6em; background: #999; color: #fff; font-size: .9em;
    text-align: center; border-radius: 3px; margin-right: 1.2em; align-self: flex-start;
    line-height: 1.8; position: relative; top: .4em;
  }
  #new dt span.icon-bg1 { background: #74791b; }

  #new dd { width: calc(100% - 14em); }

  /* Tables: larger paddings */
  .ta1 caption { padding: 5px 15px; }
  .ta1 th, .ta1 td { padding: 20px 15px; }
  .ta1 th { width: 20%; }

  /* Utility widths */
  .ws { width: 48%; display: inline; }
}

/* 画面ロック（モーダル開時） */
body.no-scroll { overflow: hidden; }

/* モーダルの見た目（サイトの白カード基調） */
.modal { position: fixed; inset: 0; display: none; align-items: center; justify-content: center; z-index: 1000; }
.modal.is-active { display: flex; }
.modal-overlay { position: absolute; inset: 0; background: rgba(0,0,0,.4); }

.modal-content{
  position: relative;
  max-width: 720px;
  width: calc(100% - 40px);
  background: rgba(255,255,255,.96);
  color: #333;
  border-radius: 14px;
  box-shadow: 0 20px 50px rgba(0,0,0,.28);
  padding: 28px 28px 24px;
  outline: none;
  /* サイトのアクセント色（例：#74791b）を左線で */
  border-left: 6px solid #74791b;
  font-family: 'Playfair Display','Noto Serif JP',serif;
  line-height: 1.9;
}
.modal-content h2{
  margin: 0 0 .4em;
  font-size: clamp(22px, 2.2vw, 28px);
  letter-spacing: .02em;
}
.modal-content p{ margin: 0 0 1em; }
.modal-content s{ color: #888; text-decoration-thickness: .12em; text-decoration-color: #bbb; }

.modal-close{
  position: absolute; top: 10px; right: 12px;
  width: 40px; height: 40px; border-radius: 10px;
  border: 0; background: transparent; color: #333; font-size: 28px; line-height: 1; cursor: pointer;
}
.modal-close:focus { outline: 2px solid #74791b; outline-offset: 2px; }

/* === Pager (bottom-right, number only) === */
.pager-badge{
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: 200;
  padding: .5rem .9rem;
  border-radius: 999px;
  background: rgba(255,255,255,.85);
  color: #333;
  font-size: .9rem;
  line-height: 1;
  box-shadow: 0 6px 16px rgba(0,0,0,.18);
  backdrop-filter: blur(6px);
  font-variant-numeric: tabular-nums;
}

.btn-back {
  font-family: 'Noto Sans JP', 'Helvetica Neue', Arial, sans-serif;
}