html { scroll-behavior: smooth; }
body { margin: 0; background: #fdfbf6; min-height: 100vh; display: flex; flex-direction: column; }
footer { margin-top: auto; }
a { color: #3c5a78; }
a:hover { color: #b8873c; }
input, textarea { font-family: 'Noto Sans JP', sans-serif; }
.card, .photo-card { background:#ffffff; border:1px solid #ece3d0; }
.photo-card { overflow: hidden; display:flex; flex-direction:column; }
.photo-card img { transition: transform 0.35s ease; display: block; }
.photo-card:hover img { transform: scale(1.06); }
a.photo-card { text-decoration:none; color:#3a332b; }

.site-header { background:#ffffff; color:#3a332b; padding:16px 32px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; font-family:'Noto Sans JP',sans-serif; box-shadow:0 2px 16px rgba(58,51,43,0.08); }
.brand { display:flex; flex-direction:column; gap:2px; text-decoration:none; }
.brand-title { font-family:'Zen Old Mincho',serif; font-size:24px; font-weight:700; letter-spacing:0.04em; color:#3c5a78; }
.brand-sub { font-size:11px; letter-spacing:0.12em; color:#a99f8c; }

.nav-link { display:inline-block; text-decoration:none; padding:9px 16px; border-radius:999px; color:#7a705e; background:transparent; font-weight:500; }
.nav-link--active { color:#ffffff; background:#3c5a78; font-weight:700; }

.footer-link { color:#7a705e; text-decoration:none; transition: color 0.15s ease; }
.footer-link:hover { font-weight: 700; text-decoration: underline; color: #3c5a78; }

.site-footer { position:relative; overflow:hidden; background:#f7f2e7; color:#7a705e; font-family:'Noto Sans JP',sans-serif; padding:48px 36px 28px; margin-top:72px; }
.footer-bg { position:absolute; top:0; left:0; width:100%; height:100%; object-fit:cover; object-position:bottom; mix-blend-mode:multiply; opacity:0.5; pointer-events:none; }
.footer-inner { position:relative; z-index:1; max-width:1040px; margin:0 auto; display:flex; flex-wrap:wrap; gap:36px; justify-content:space-between; border-bottom:1px solid #e6ddc8; padding-bottom:28px; }
.footer-brand { display:flex; flex-direction:column; gap:8px; min-width:240px; }
.footer-nav { display:flex; flex-wrap:wrap; gap:10px 22px; font-size:13px; max-width:420px; }
.footer-copy { position:relative; z-index:1; max-width:1040px; margin:20px auto 0; font-size:12px; color:#b3a888; text-align:center; }

.page-header { padding-bottom:20px; border-bottom:1px solid #e6ddc9; }
.page-title { font-family:'Zen Old Mincho',serif; font-size:30px; margin:0; color:#3c5a78; }
@keyframes navWiggle {
  0%, 100% { transform: rotate(0deg); }
  25% { transform: rotate(-3.5deg); }
  50% { transform: rotate(3deg); }
  75% { transform: rotate(-2deg); }
}
@media (hover: hover) {
  .nav-link:not(.nav-link--active):hover { animation: navWiggle 0.5s linear infinite; }
}
.rice-grain {
  position: absolute; width: 7px; height: 3px; border-radius: 50% / 40%;
  background: linear-gradient(135deg, #ffffff, #f3ead8);
  pointer-events: none; z-index: 2;
  animation: riceFall 0.9s ease-out forwards;
}
@keyframes riceFall {
  0% { opacity: 0.9; transform: translate(-50%,-50%) rotate(var(--rot)) scale(1); }
  100% { opacity: 0; transform: translate(-50%, calc(-50% + 26px)) rotate(calc(var(--rot) + 40deg)) scale(0.6); }
}
.cta-float {
  position: fixed; right: 40px; bottom: 40px; z-index: 1000;
  display: flex; align-items: center; gap: 8px;
  background: #c0392b; color: #ffffff; text-decoration: none;
  font-family: 'Noto Sans JP', sans-serif; font-weight: 700; font-size: 15px;
  padding: 14px 24px; border-radius: 999px;
  box-shadow: 0 6px 18px rgba(192,57,43,0.45);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.cta-float:hover { color: #ffffff; transform: scale(1.06); box-shadow: 0 8px 22px rgba(192,57,43,0.55); }
.cta-float::before {
  content: ''; position: absolute; inset: 0; border-radius: 999px;
  box-shadow: 0 0 0 0 rgba(192,57,43,0.55);
  animation: ctaPulse 2.2s ease-out infinite;
}
@keyframes ctaPulse {
  0% { box-shadow: 0 0 0 0 rgba(192,57,43,0.55); }
  80% { box-shadow: 0 0 0 16px rgba(192,57,43,0); }
  100% { box-shadow: 0 0 0 16px rgba(192,57,43,0); }
}
@keyframes heroFade {
  0% { opacity: 0; transform: scale(1); }
  3% { opacity: 1; transform: scale(1.01); }
  31% { opacity: 1; transform: scale(1.13); }
  36% { opacity: 0; transform: scale(1.15); }
  100% { opacity: 0; transform: scale(1.15); }
}
@keyframes scrollDot {
  0% { opacity: 1; transform: translate(-50%, 0); }
  70% { opacity: 0; transform: translate(-50%, 16px); }
  100% { opacity: 0; transform: translate(-50%, 16px); }
}
.nav-toggle { display:none; flex-direction:column; justify-content:center; gap:5px; width:34px; height:34px; background:none; border:none; cursor:pointer; padding:0; }
.nav-toggle span { display:block; width:100%; height:2px; background:#3c5a78; border-radius:2px; transition:transform 0.3s ease, opacity 0.3s ease; }
.nav-toggle.is-open span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
.nav-toggle.is-open span:nth-child(2) { opacity:0; }
.nav-toggle.is-open span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }
.nav-overlay { display:none; position:fixed; inset:0; background:rgba(37,32,25,0.35); z-index:10; opacity:0; transition:opacity 0.25s ease; }
@media (max-width: 760px) {
  .nav-toggle { display:flex; }
  .site-nav {
    position:fixed; top:0; right:0; height:100dvh; width:min(78vw,280px);
    background:#ffffff; flex-direction:column; align-items:stretch;
    padding:96px 24px 24px; gap:6px; box-shadow:-8px 0 28px rgba(58,51,43,0.14);
    transform:translateX(100%); transition:transform 0.32s ease; z-index:15;
    overflow-y:auto;
  }
  .site-nav.is-open { transform:translateX(0); }
  .nav-overlay.is-open { display:block; opacity:1; }
  #mv-hero { min-height:50vh !important; }
  #mv-hero .mv-content { height:50vh !important; }
  #taste-section { padding-left:0; padding-right:0; }
  #taste-section > div { padding-left:16px; padding-right:16px; }
  .omusubi-card { padding:24px 16px !important; }
  .products-grid { grid-template-columns:1fr !important; }
  .products-preview-grid { grid-template-columns:1fr !important; }
}
