/* ============================================
   Chiiiigofarm - hand-drawn, warm stylesheet
   matches the playful ChiiiiGo farm logo
   ============================================ */
:root{
  /* Warm, strawberry-farm palette (logo-matched) */
  --bg: oklch(0.985 0.012 70);
  --bg-alt: oklch(0.96 0.025 52);
  --bg-warm: oklch(0.95 0.045 26);
  --bg-cool: oklch(0.96 0.028 145);

  --ink: oklch(0.3 0.04 40);
  --ink-soft: oklch(0.5 0.032 38);
  --line: oklch(0.88 0.03 45);

  --accent: oklch(0.6 0.24 25);          /* strawberry red */
  --accent-ink: oklch(0.45 0.2 25);       /* deep strawberry */
  --accent-soft: oklch(0.9 0.08 22);      /* blush */

  --leaf: oklch(0.6 0.14 146);            /* fresh leaf */
  --leaf-soft: oklch(0.92 0.055 140);
  --sun: oklch(0.78 0.18 65);             /* orange sparkle */
  --sun-soft: oklch(0.94 0.08 75);

  --font: "Zen Maru Gothic", "M PLUS Rounded 1c", system-ui, sans-serif;
  --font-hand: "Klee One", "Zen Maru Gothic", cursive;

  --r-sm: 12px;
  --r-md: 18px;
  --r-lg: 28px;
  --r-xl: 48px;
  --r-pill: 999px;

  --shadow-sm: 0 2px 10px oklch(0.7 0.05 40 / 0.12);
  --shadow-md: 0 14px 36px oklch(0.65 0.06 30 / 0.14);
  --shadow-lg: 0 24px 60px oklch(0.5 0.08 30 / 0.2);
  --shadow-accent: 0 12px 28px color-mix(in oklab, var(--accent) 38%, transparent);

  --maxw: 1120px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family: var(--font);
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  line-height: 1.85;
  font-weight: 400;
  letter-spacing: .01em;
}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}

.handwritten{
  font-family: var(--font-hand);
  font-weight: 400;
  letter-spacing: .02em;
}

/* ---- Nav ---- */
.nav{
  position: sticky; top:0; z-index: 50;
  background: color-mix(in oklab, var(--bg) 92%, transparent);
  backdrop-filter: blur(12px) saturate(1.1);
  border-bottom: 1px solid color-mix(in oklab, var(--line) 50%, transparent);
}
.nav-inner{
  max-width: var(--maxw); margin: 0 auto;
  display:flex; align-items:center; justify-content:space-between;
  padding: 14px 28px;
  gap: 20px;
}
.brand{
  display:flex; align-items:center; gap:14px;
  font-family: var(--font); font-weight:700;
}
.brand-logo{
  height: 62px;
  width: auto;
  max-width: 280px;
  display: block;
  transition: transform .35s cubic-bezier(.34,1.56,.64,1);
}
.brand:hover .brand-logo{ transform: rotate(-2deg) scale(1.03) }
.brand-logo-fallback{
  display: none;
  width: 54px; height: 54px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-family: var(--font-hand); font-size: 22px; font-weight: 600;
  align-items: center; justify-content: center;
  box-shadow: var(--shadow-sm);
}
.brand-logo:not([src]), .brand-logo[src=""]{
  display: none;
}
.brand-logo:not([src]) + .brand-logo-fallback,
.brand-logo[src=""] + .brand-logo-fallback{
  display: inline-flex;
}
.brand-tagline{
  font-family: var(--font-hand); font-size: 11px;
  color: var(--ink-soft); letter-spacing: .08em;
  line-height: 1.3;
}
.brand-tagline b{ color: var(--accent); font-weight: 600; display: block }
.nav ul{
  list-style:none; display:flex; gap:20px; margin:0; padding:0;
  font-size:12.5px; letter-spacing:.04em; font-weight:500;
}
.nav ul a{ color: var(--ink-soft); transition: color .2s; position: relative; white-space: nowrap }
.nav ul a:hover, .nav ul a.active{ color: var(--accent) }
.nav ul a.active::after{
  content:"";
  position:absolute; left:50%; bottom:-8px;
  width:6px; height:6px; border-radius:50%;
  background: var(--accent);
  transform: translateX(-50%);
}
.nav-cta{
  font-size:12px; padding:10px 20px; border-radius: var(--r-pill);
  background: var(--ink); color: var(--bg);
  letter-spacing:.14em; font-weight:600;
  transition: all .25s;
  white-space: nowrap;
}
.nav-cta:hover{
  background: var(--accent);
  box-shadow: 0 8px 20px color-mix(in oklab, var(--accent) 35%, transparent);
  transform: translateY(-1px);
}

/* ---- Hamburger toggle ---- */
.nav-toggle{
  display: none;
  width: 44px; height: 44px;
  padding: 0; margin: 0;
  border: 0; background: transparent;
  cursor: pointer;
  flex-direction: column;
  align-items: center; justify-content: center;
  gap: 6px;
  border-radius: var(--r-pill);
  transition: background .2s;
}
.nav-toggle:hover{ background: color-mix(in oklab, var(--accent-soft) 30%, transparent) }
.nav-toggle span{
  display: block;
  width: 24px; height: 2px;
  background: var(--ink);
  border-radius: 2px;
  transition: transform .28s cubic-bezier(.6,-0.2,.4,1.4), opacity .2s;
  transform-origin: center;
}
.nav.is-open .nav-toggle span:nth-child(1){ transform: translateY(8px) rotate(45deg) }
.nav.is-open .nav-toggle span:nth-child(2){ opacity: 0; transform: scaleX(0) }
.nav.is-open .nav-toggle span:nth-child(3){ transform: translateY(-8px) rotate(-45deg) }

.nav-backdrop{
  position: fixed; inset: 0;
  background: oklch(0.2 0.04 40 / 0.5);
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
  z-index: 48;
}
.nav.is-open .nav-backdrop{
  opacity: 1;
  pointer-events: auto;
}
body.nav-open{ overflow: hidden }

@media (max-width: 960px){
  .nav-inner{ padding: 12px 18px; gap: 12px }
  .brand-logo{ height: 46px }
  .brand{ flex: 1; min-width: 0 }
  .nav-toggle{ display: flex; order: 3; position: relative; z-index: 52 }
  .nav.is-open .nav-toggle{
    position: fixed;
    top: 12px; right: 14px;
    background: var(--bg);
    box-shadow: var(--shadow-sm);
    z-index: 52;
  }
  .nav-cta{ order: 2 }
  .nav.is-open .nav-cta{ visibility: hidden }

  .nav ul{
    position: fixed;
    top: 0; right: 0;
    width: min(320px, 85vw);
    height: 100dvh;
    background: var(--bg);
    flex-direction: column;
    gap: 0;
    padding: 88px 28px 32px;
    box-shadow: -16px 0 48px oklch(0.2 0.05 30 / 0.22);
    transform: translateX(100%);
    transition: transform .32s cubic-bezier(.4,0,.2,1);
    z-index: 49;
    font-size: 16px;
    letter-spacing: .04em;
    overflow-y: auto;
  }
  .nav ul::before{
    content: "MENU";
    font-family: var(--font-hand);
    font-size: 12px; letter-spacing: .3em;
    color: var(--accent);
    font-weight: 600;
    padding-bottom: 8px;
    border-bottom: 1px dashed var(--line);
    margin-bottom: 18px;
  }
  .nav ul li{ width: 100% }
  .nav ul a{
    display: block;
    padding: 16px 6px;
    font-weight: 500;
    border-bottom: 1px dashed color-mix(in oklab, var(--line) 70%, transparent);
  }
  .nav ul a.active::after{
    left: 0; bottom: 50%;
    transform: translateY(50%);
    width: 8px; height: 8px;
  }
  .nav ul a.active{ padding-left: 20px }
  .nav.is-open ul{ transform: translateX(0) }
}

/* ---- Buttons ---- */
.btn{
  display:inline-flex; align-items:center; gap:10px;
  padding: 14px 26px; border-radius: var(--r-pill);
  font-size: 13px; letter-spacing:.1em; font-weight:600;
  border: 1.5px solid transparent;
  transition: all .25s cubic-bezier(.4,0,.2,1);
  cursor: pointer; font-family: inherit;
}
.btn-primary{
  background: var(--accent); color:#fff;
  box-shadow: 0 8px 20px color-mix(in oklab, var(--accent) 32%, transparent);
}
.btn-primary:hover{
  background: var(--accent-ink);
  transform: translateY(-2px);
  box-shadow: 0 14px 30px color-mix(in oklab, var(--accent) 45%, transparent);
}
.btn-ghost{ border-color: var(--ink); color: var(--ink); background: transparent }
.btn-ghost:hover{
  background: var(--ink); color: var(--bg);
  transform: translateY(-2px);
  box-shadow: 0 10px 22px color-mix(in oklab, var(--ink) 22%, transparent);
}
.btn svg{ width:14px; height:14px }

/* ---- Section shell ---- */
section{ scroll-margin-top: 80px }
.sec{
  max-width: var(--maxw); margin: 0 auto;
  padding: 96px 28px;
}
.sec-head{ text-align:center; margin-bottom: 56px }
.sec-kicker{
  font-size: 11px; letter-spacing:.4em; color: var(--accent);
  text-transform: uppercase; font-weight:600;
}
.sec-title{
  font-family: var(--font); font-weight:700;
  font-size: clamp(26px, 3vw, 36px);
  margin: 14px 0 0; letter-spacing:.06em;
  display:inline-block; position:relative;
}
.sec-title::after{
  content:"";
  display:block; margin: 10px auto 0;
  width: 72%; height: 10px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 10' preserveAspectRatio='none'%3E%3Cpath d='M0 5 Q7.5 0 15 5 T30 5 T45 5 T60 5' stroke='%23d83b3b' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-size: 60px 10px;
  background-repeat: repeat-x;
  opacity: .8;
}
.sec-lead{ color: var(--ink-soft); font-size: 14px; margin-top: 20px; }
@media (max-width: 820px){ .sec{ padding: 64px 20px } }

/* ---- Page hero (smaller hero for sub-pages) ---- */
.page-hero{
  max-width: var(--maxw); margin: 0 auto;
  padding: 72px 28px 24px; text-align:center;
  position: relative;
}
.page-hero .sec-kicker{ display:block; margin-bottom: 12px }
.page-hero h1{
  font-family: var(--font); font-weight:700;
  font-size: clamp(28px, 3.2vw, 40px);
  letter-spacing:.08em; margin: 0;
  display:inline-block; position:relative;
}
.page-hero h1::after{
  content:"";
  display:block; margin: 10px auto 0;
  width: 60%; height: 10px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 10' preserveAspectRatio='none'%3E%3Cpath d='M0 5 Q7.5 0 15 5 T30 5 T45 5 T60 5' stroke='%23d83b3b' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-size: 60px 10px;
  background-repeat: repeat-x;
  opacity: .8;
}
.page-hero p{ color: var(--ink-soft); font-size:14.5px; margin-top:22px }

/* ---- Index hero ---- */
.hero{
  max-width: var(--maxw); margin: 0 auto;
  padding: 60px 28px 56px;
  display:grid; grid-template-columns: 1fr 1fr; gap: 56px;
  align-items:center;
  position: relative;
}
.hero-kicker{
  font-size:12px; letter-spacing:.3em; color:var(--accent-ink);
  text-transform: uppercase; font-weight:600;
  margin-bottom: 24px;
  display:flex; align-items:center; gap:12px;
}
.hero-kicker::before{
  content:""; width:36px; height:3px; border-radius:999px;
  background: linear-gradient(90deg, var(--accent), var(--sun));
}
.hero h1{
  font-family: var(--font);
  font-weight: 700;
  font-size: clamp(30px, 4.2vw, 52px);
  line-height: 1.4;
  letter-spacing: .03em;
  margin: 0 0 22px;
}
.hero h1 em{
  font-style:normal; color: var(--accent);
  position:relative; display:inline-block;
}
.hero h1 em::after{
  content:"";
  position:absolute; left:0; right:0; bottom:-4px;
  height: 8px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 8' preserveAspectRatio='none'%3E%3Cpath d='M0 4 Q15 8 30 4 T60 4' stroke='%23f5a241' stroke-width='2.4' fill='none' stroke-linecap='round' opacity='0.8'/%3E%3C/svg%3E");
  background-size: 60px 8px;
  background-repeat: repeat-x;
}
.hero p.lead{
  font-size:15.5px; color: var(--ink-soft);
  max-width: 460px; margin: 0 0 32px;
  line-height: 2;
}
.hero-badges{
  display:flex; gap: 10px; flex-wrap: wrap;
  margin-bottom: 24px;
}
.hero-badge{
  font-family: var(--font-hand); font-size: 12px;
  padding: 6px 14px; border-radius: var(--r-pill);
  background: var(--bg);
  border: 1.5px dashed color-mix(in oklab, var(--accent) 40%, transparent);
  color: var(--accent-ink);
  font-weight: 600;
  display: inline-flex; align-items: center; gap: 6px;
}
.hero-badge::before{
  content: "🍓"; font-size: 13px;
}
.hero-badge:nth-child(2)::before{ content: "🌸" }
.hero-badge:nth-child(3)::before{ content: "✨" }
.hero-ctas{ display:flex; gap:14px; flex-wrap:wrap }
.hero-art{
  aspect-ratio: 4/5;
  border-radius: var(--r-lg);
  position: relative; overflow: hidden;
  background: var(--bg-alt);
  box-shadow: var(--shadow-lg);
}
.hero-art img{
  width:100%; height:100%; object-fit:cover;
  transition: transform .6s cubic-bezier(.4,0,.2,1);
}
.hero-art:hover img{ transform: scale(1.04) }
.hero-art .tag{
  position:absolute; top:20px; left:20px;
  background: var(--bg); padding:10px 18px;
  font-size:11px; letter-spacing:.18em; font-weight:600;
  font-family: var(--font); color: var(--accent-ink);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-md);
  transform: rotate(-3deg);
  display:inline-flex; align-items:center; gap:6px;
  z-index: 2;
}
.hero-art .tag::before{
  content:""; width:8px; height:8px; border-radius:50%;
  background: var(--accent);
  animation: pulse 2s ease-in-out infinite;
}
.hero-art .signature{
  position: absolute; bottom: 20px; right: 20px;
  font-family: var(--font-hand); font-size: 14px;
  padding: 8px 14px; background: color-mix(in oklab, #fff 85%, transparent);
  border-radius: var(--r-pill); color: var(--accent-ink);
  font-weight: 600;
  transform: rotate(2deg);
  box-shadow: var(--shadow-sm);
  z-index: 2;
}
@keyframes pulse{
  0%,100%{ opacity:1; transform: scale(1); }
  50%{ opacity:.5; transform: scale(1.4); }
}
@media (max-width: 820px){
  .hero{ grid-template-columns: 1fr; padding: 40px 20px 24px; gap: 32px }
}

/* ---- News list ---- */
.news-wrap{
  background: var(--bg-alt);
  border-radius: var(--r-xl) var(--r-xl) 0 0;
  margin-top: 24px;
  position: relative;
}
.news-list{ max-width: 760px; margin: 0 auto; list-style: none; padding: 0; }
.news-item{
  display:grid; grid-template-columns: 110px 96px 1fr;
  gap: 20px; align-items: baseline;
  padding: 24px 8px;
  border-bottom: 1px dashed color-mix(in oklab, var(--line) 80%, transparent);
  transition: background .2s;
}
.news-item:last-child{ border-bottom: none }
.news-item:hover{
  background: color-mix(in oklab, var(--accent-soft) 30%, transparent);
  border-radius: var(--r-md);
}
.news-item a.news-title{ color: var(--ink); transition: color .15s; font-weight: 500 }
.news-item a.news-title:hover{ color: var(--accent) }
.news-date{ font-family: var(--font); font-size:14px; color: var(--ink-soft); letter-spacing:.05em; font-weight:500 }
.news-tag{
  font-size:11px; letter-spacing:.08em;
  padding: 5px 14px; border-radius: var(--r-pill);
  border: 1.5px solid var(--line);
  color: var(--ink-soft); background: var(--bg);
  justify-self: start; font-weight:600;
  transform: rotate(-2deg);
  transition: transform .2s cubic-bezier(.34,1.56,.64,1);
  box-shadow: var(--shadow-sm);
}
.news-item:hover .news-tag{ transform: rotate(0deg) scale(1.06) }
.news-tag.sel{
  color:#fff; background: var(--accent); border-color: var(--accent);
  transform: rotate(2deg);
}
.news-item:hover .news-tag.sel{ transform: rotate(0deg) scale(1.06) }
.news-tag.harvest{
  color:#fff; background: var(--leaf); border-color: var(--leaf);
  transform: rotate(-2deg);
}
.news-item:hover .news-tag.harvest{ transform: rotate(0deg) scale(1.06) }
.news-title{ font-size:15.5px; font-weight:500 }
@media (max-width: 680px){
  .news-item{ grid-template-columns: 80px 1fr; padding: 20px 4px; }
  .news-tag{ grid-column: 2 }
}
.center-cta{ text-align:center; margin-top: 48px }

/* ---- Pillars ---- */
.pillars{
  display:grid; grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.pillar{
  background: var(--bg);
  border-radius: var(--r-lg);
  padding: 44px 32px;
  position: relative;
  box-shadow: var(--shadow-sm);
  transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s;
}
.pillar:hover{ transform: translateY(-4px); box-shadow: var(--shadow-md); }
.pillar:nth-child(1){ background: linear-gradient(160deg, var(--bg), color-mix(in oklab, var(--accent-soft) 40%, var(--bg))); }
.pillar:nth-child(2){ background: linear-gradient(160deg, var(--bg), color-mix(in oklab, var(--leaf-soft) 60%, var(--bg))); }
.pillar:nth-child(3){ background: linear-gradient(160deg, var(--bg), color-mix(in oklab, var(--sun-soft) 60%, var(--bg))); }
.pillar-num{
  font-family: var(--font-hand); font-size:14px; color: var(--accent);
  letter-spacing:.14em; font-weight:600;
  display:inline-block;
  padding: 4px 14px;
  border-radius: var(--r-pill);
  background: color-mix(in oklab, var(--accent) 15%, var(--bg));
}
.pillar:nth-child(2) .pillar-num{
  color: var(--leaf);
  background: color-mix(in oklab, var(--leaf) 15%, var(--bg));
}
.pillar:nth-child(3) .pillar-num{
  color: oklch(0.55 0.15 65);
  background: color-mix(in oklab, var(--sun) 30%, var(--bg));
}
.pillar h3{ font-family: var(--font); font-weight:700; font-size: 20px; margin: 18px 0 12px; letter-spacing:.04em; }
.pillar p{ font-size:14px; color: var(--ink-soft); margin:0; line-height:1.95 }
@media (max-width: 820px){ .pillars{ grid-template-columns: 1fr } }

/* ---- Producer profile (about page) ---- */
.producer-wrap{
  background: var(--bg-alt);
  border-radius: var(--r-xl) var(--r-xl) 0 0;
  margin-top: 8px;
}
.producer{
  display:grid; grid-template-columns: 0.9fr 1.1fr;
  gap: 56px; align-items:center;
}
.producer-photo{
  aspect-ratio: 4/5;
  border-radius: var(--r-lg);
  background: linear-gradient(135deg, oklch(0.9 0.04 140), oklch(0.92 0.03 30));
  overflow: hidden;
  position: relative;
  box-shadow: var(--shadow-lg);
}
.producer-photo img{
  width:100%; height:100%; object-fit:cover;
}
.producer-photo::after{
  content:"";
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 70%, color-mix(in oklab, var(--accent) 18%, transparent));
  pointer-events: none;
}
.producer-tag{
  position: absolute; top: 20px; left: 20px;
  background: var(--bg); padding: 8px 16px;
  font-family: var(--font-hand); font-size: 13px;
  color: var(--accent-ink); font-weight: 600;
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-sm);
  transform: rotate(-3deg);
  z-index: 2;
}
.producer-body h2{
  font-family: var(--font); font-weight:700;
  font-size: clamp(26px, 3vw, 36px);
  letter-spacing:.05em; line-height:1.5;
  margin: 0 0 20px;
}
.producer-body h2 em{ font-style: normal; color: var(--accent) }
.producer-body p{ color: var(--ink-soft); font-size:15px; line-height: 2.1; margin: 0 0 1.3em }
.producer-quote{
  font-family: var(--font-hand); font-size: 17px;
  color: var(--ink); line-height: 1.85;
  margin: 24px 0 28px;
  padding: 20px 24px;
  background: var(--bg);
  border-radius: var(--r-md);
  border-left: 3px solid var(--accent);
  box-shadow: var(--shadow-sm);
  position: relative;
}
.producer-quote::before{
  content: "“";
  position: absolute; top: -4px; left: 12px;
  font-family: serif; font-size: 40px; color: var(--accent);
  opacity: 0.4; line-height: 1;
}
.producer-sign{
  display:inline-flex; align-items:center; gap:12px;
  margin-top: 8px;
  padding: 10px 20px;
  background: var(--bg);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-sm);
  font-family: var(--font-hand); font-size:14px;
  color: var(--ink); font-weight:500;
}
.producer-sign::before{ content:"🍓"; font-size:18px }
@media (max-width: 820px){
  .producer{ grid-template-columns: 1fr; gap: 32px }
}

/* ---- About (legacy, kept for fallback) ---- */
.about-wrap{ background: var(--bg-alt); border-radius: var(--r-xl) var(--r-xl) 0 0; margin-top: 8px; }
.about{ display:grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items:center; }
.about-img{
  aspect-ratio: 4/5;
  border-radius: var(--r-lg);
  background: var(--bg);
  overflow: hidden;
  box-shadow: var(--shadow-md);
}
.about-img img{ width:100%; height:100%; object-fit:cover }
.about h2{ font-family: var(--font); font-weight:700; font-size: clamp(24px, 2.6vw, 32px); letter-spacing:.06em; line-height:1.6; margin-top: 0; }
.about p{ color: var(--ink-soft); font-size:14.5px; line-height: 2.1; }
.about .sign{
  margin-top: 32px;
  font-family: var(--font-hand); font-size:15px;
  color: var(--ink); font-weight:500;
  display:inline-flex; align-items:center; gap:10px;
  padding: 8px 18px;
  background: var(--bg);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-sm);
}
.about .sign::before{ content:"🍓"; font-size:16px }
@media (max-width: 820px){ .about{ grid-template-columns: 1fr; gap: 32px } }

/* ---- Facility ---- */
.facility-hero{
  max-width: var(--maxw); margin: 0 auto;
  padding: 24px 28px 16px;
}
.facility-main{
  border-radius: var(--r-lg);
  overflow: hidden;
  aspect-ratio: 16/9;
  background: var(--bg-alt);
  box-shadow: var(--shadow-lg);
  position: relative;
}
.facility-main img{ width:100%; height:100%; object-fit:cover }
.facility-caption{
  position: absolute;
  bottom: 24px; left: 24px;
  font-family: var(--font-hand);
  background: color-mix(in oklab, #fff 90%, transparent);
  color: var(--ink);
  padding: 10px 18px;
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-sm);
  font-size: 14px; font-weight: 500;
  transform: rotate(-2deg);
}
.facility-caption::before{
  content: "📍 "; font-size: 14px;
}
.fac-grid{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  margin-top: 48px;
}
.fac-card{
  background: var(--bg);
  border-radius: var(--r-lg);
  padding: 32px 28px;
  box-shadow: var(--shadow-sm);
  transition: transform .3s cubic-bezier(.34,1.56,.64,1);
  position: relative;
  overflow: hidden;
}
.fac-card:hover{ transform: translateY(-4px); box-shadow: var(--shadow-md); }
.fac-card::before{
  content: "";
  position: absolute; top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--accent), var(--sun));
}
.fac-icon{
  font-size: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  width: 56px; height: 56px;
  border-radius: 50%;
  background: color-mix(in oklab, var(--accent-soft) 60%, var(--bg));
  margin-bottom: 14px;
}
.fac-card:nth-child(2) .fac-icon{ background: color-mix(in oklab, var(--leaf-soft) 70%, var(--bg)) }
.fac-card:nth-child(3) .fac-icon{ background: color-mix(in oklab, var(--sun-soft) 70%, var(--bg)) }
.fac-card:nth-child(4) .fac-icon{ background: color-mix(in oklab, var(--accent-soft) 50%, var(--bg)) }
.fac-card h3{ font-family: var(--font); font-weight: 700; font-size: 18px; margin: 0 0 10px; letter-spacing: .04em }
.fac-card p{ font-size: 14px; color: var(--ink-soft); margin: 0; line-height: 1.95 }
.fac-card .fac-meta{
  font-family: var(--font-hand); font-size: 12.5px;
  color: var(--accent-ink); margin-top: 14px;
  padding: 6px 12px; display: inline-block;
  background: color-mix(in oklab, var(--accent-soft) 30%, var(--bg));
  border-radius: var(--r-pill);
}
@media (max-width: 820px){
  .fac-grid{ grid-template-columns: 1fr; gap: 16px; }
  .facility-main{ aspect-ratio: 4/3 }
}

/* ---- Reserve ---- */
.reserve-box{
  border-radius: var(--r-lg);
  background: var(--bg);
  padding: 48px;
  display:grid; grid-template-columns: 1.1fr 1fr; gap: 48px;
  align-items:center;
  box-shadow: var(--shadow-md);
  border: 1px solid color-mix(in oklab, var(--line) 50%, transparent);
}
.reserve-box h3{ font-family: var(--font); font-weight:700; font-size: 24px; margin: 0 0 16px; letter-spacing:.04em; }
.reserve-box p{ font-size:14.5px; color:var(--ink-soft); margin: 0 0 20px; line-height: 2 }
.reserve-meta{
  display:flex; flex-direction:column; gap:12px;
  font-size:13.5px; color:var(--ink); margin-top:24px;
  padding: 20px;
  background: var(--bg-alt);
  border-radius: var(--r-md);
}
.reserve-meta div{ display:flex; gap:14px; align-items:baseline }
.reserve-meta b{
  min-width:78px; font-weight:700;
  color:var(--accent-ink);
  letter-spacing:.1em; font-size:11px;
  text-transform: uppercase;
}
.reserve-embed{
  aspect-ratio: 1/1;
  background:
    radial-gradient(circle at 30% 30%, oklch(0.97 0.02 30), transparent 60%),
    linear-gradient(135deg, oklch(0.95 0.02 60), oklch(0.97 0.01 60));
  display:grid; place-items:center;
  font-family: ui-monospace, Menlo, monospace; font-size: 11px;
  color: var(--ink-soft); text-align:center; padding: 20px;
  border-radius: var(--r-lg);
  border: 1.5px dashed color-mix(in oklab, var(--line) 80%, transparent);
}
.reserve-embed div{ max-width: 220px; line-height: 1.8 }
.reserve-embed b{ display:block; font-size: 13px; color: var(--ink); font-family: var(--font); margin-bottom: 10px; letter-spacing:.06em; font-weight:700}
.reserve-embed-live{
  aspect-ratio: auto;
  background: var(--bg);
  padding: 0;
  border: 1px solid color-mix(in oklab, var(--line) 60%, transparent);
  overflow: hidden;
  min-height: 440px;
  display: block;
}
.reserve-embed-live iframe{
  width: 100%;
  min-height: 440px;
  height: 440px;
  border: 0;
  display: block;
}
@media (max-width: 820px){ .reserve-box{ grid-template-columns: 1fr; padding: 28px; gap: 28px } }

/* ---- Access ---- */
.access{ display:grid; grid-template-columns: 1fr 1.2fr; gap: 56px; align-items:stretch; }
.access-info dl{
  display:grid; grid-template-columns: 100px 1fr;
  gap: 22px 24px; margin: 0; font-size: 14.5px;
  padding: 28px;
  background: var(--bg);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
}
.access-info dt{ font-size: 11px; letter-spacing:.22em; color: var(--accent-ink); padding-top: 4px; font-weight:700; text-transform: uppercase }
.access-info dd{ margin: 0; color: var(--ink); line-height: 1.9 }
.map-box{
  background: linear-gradient(160deg, oklch(0.93 0.02 195), oklch(0.88 0.025 200));
  position: relative;
  border-radius: var(--r-lg);
  min-height: 360px;
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.map-box::before{
  content:""; position:absolute; inset: 18% 10% 28% 14%;
  border-radius: var(--r-md);
  border: 1.5px solid oklch(0.8 0.02 200);
  background:
    linear-gradient(90deg, transparent 48%, oklch(0.85 0.02 200) 48%, oklch(0.85 0.02 200) 52%, transparent 52%),
    linear-gradient(0deg, transparent 48%, oklch(0.85 0.02 200) 48%, oklch(0.85 0.02 200) 52%, transparent 52%);
}
.map-pin{
  position:absolute; top:50%; left:50%; transform: translate(-50%,-50%);
  width: 28px; height: 28px; border-radius:50%;
  background: var(--accent);
  box-shadow: 0 0 0 10px color-mix(in oklab, var(--accent) 25%, transparent),
              0 4px 12px color-mix(in oklab, var(--accent) 40%, transparent);
}
.map-pin::after{
  content:""; position:absolute; inset:-10px;
  border-radius:50%;
  background: color-mix(in oklab, var(--accent) 20%, transparent);
  animation: ping 2.4s ease-out infinite;
}
@keyframes ping{
  0%{ transform: scale(1); opacity:.8 }
  100%{ transform: scale(2.4); opacity:0 }
}
.map-box::after{
  content:"Google Map 埋め込み予定地";
  position:absolute; bottom: 16px; left:18px;
  font-family: ui-monospace,Menlo,monospace; font-size:10px;
  color: oklch(0.4 0.03 200); letter-spacing:.12em;
  background: color-mix(in oklab, #fff 80%, transparent);
  padding: 4px 10px; border-radius: var(--r-pill);
}
.map-box-live{
  background: var(--bg);
  min-height: 420px;
  padding: 0;
}
.map-box-live::before, .map-box-live::after, .map-box-live .map-pin{ display: none }
.map-box-live iframe{
  width: 100%;
  height: 100%;
  min-height: 420px;
  border: 0;
  display: block;
}
.map-link{
  position: absolute;
  bottom: 14px; right: 14px;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px;
  font-size: 12px; font-weight: 600; letter-spacing: .04em;
  color: var(--ink);
  background: color-mix(in oklab, #fff 92%, transparent);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-sm);
  transition: all .2s;
  z-index: 2;
}
.map-link:hover{
  color: var(--accent);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}
.map-link svg{ width: 12px; height: 12px }
@media (max-width: 820px){
  .access{ grid-template-columns: 1fr; gap: 24px }
  .access-info dl{ grid-template-columns: 80px 1fr }
}

/* ---- Contact ---- */
.contact{
  max-width: 640px; margin: 0 auto;
  background: var(--bg);
  padding: 44px;
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-md);
}
.form-row{ display:grid; gap: 10px; margin-bottom: 24px; }
.form-row label{ font-size: 11px; letter-spacing:.22em; color: var(--accent-ink); font-weight: 700; text-transform: uppercase; }
.form-row label span{ color: var(--accent); margin-left:6px }
.form-row input, .form-row textarea{
  font: inherit;
  padding: 14px 16px;
  border: 1.5px solid var(--line);
  background: var(--bg-alt);
  color: var(--ink);
  border-radius: var(--r-md);
  transition: all .2s;
}
.form-row input:focus, .form-row textarea:focus{
  outline: none;
  border-color: var(--accent);
  background: var(--bg);
  box-shadow: 0 0 0 4px color-mix(in oklab, var(--accent) 15%, transparent);
}
.form-row textarea{ min-height: 160px; resize: vertical }
.form-sub{ display:flex; justify-content: space-between; align-items:center; margin-top: 12px; gap: 12px; flex-wrap: wrap; }
.form-sub small{ font-size:12px; color:var(--ink-soft) }
.form-msg{
  margin-top: 20px; padding: 16px 20px; font-size: 13px;
  border-radius: var(--r-md);
  background: color-mix(in oklab, var(--leaf) 15%, var(--bg));
  border-left: 3px solid var(--leaf);
  color: var(--ink);
  display: none;
  font-weight: 500;
}
.form-msg.show{ display:block }
@media (max-width: 680px){
  .contact{ padding: 28px 20px }
}

/* ---- Article (news detail) ---- */
.article{
  max-width: 720px; margin: 0 auto;
  padding: 48px 28px 96px;
}
.article > header{
  padding-bottom: 28px; margin-bottom: 36px;
  border-bottom: 1px dashed color-mix(in oklab, var(--line) 80%, transparent);
}
.article h1{ font-family: var(--font); font-weight:700; font-size: clamp(24px, 2.6vw, 32px); letter-spacing:.04em; margin: 14px 0 0; line-height: 1.55 }
.article .meta{ display:flex; gap: 14px; align-items:center; font-size: 12px; color: var(--ink-soft); letter-spacing:.08em; font-weight:500 }
.article .body{ font-size:15.5px; line-height: 2.1 }
.article .body p{ margin: 0 0 1.5em }
.article .body h2{ font-family: var(--font); font-weight:700; font-size: 19px; margin: 2em 0 .6em; letter-spacing:.04em; display:inline-block; position:relative }
.article .body h2::after{
  content:""; display:block; width:100%; height:8px; margin-top:6px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 8' preserveAspectRatio='none'%3E%3Cpath d='M0 4 Q15 8 30 4 T60 4' stroke='%23d83b3b' stroke-width='2' fill='none' stroke-linecap='round' opacity='0.6'/%3E%3C/svg%3E");
  background-size: 60px 8px; background-repeat: repeat-x;
}
.article .back{
  display:inline-flex; align-items:center; gap:8px;
  margin-top: 56px; font-size:12px; letter-spacing:.18em;
  color: var(--ink-soft); font-weight:500;
  padding: 10px 18px;
  border-radius: var(--r-pill);
  background: var(--bg-alt);
  transition: all .2s;
}
.article .back:hover{
  color: var(--accent);
  transform: translateX(-3px);
  background: color-mix(in oklab, var(--accent-soft) 40%, var(--bg-alt));
}

/* ---- Footer ---- */
footer{
  background: var(--ink);
  color: var(--bg);
  padding: 72px 28px 32px;
  margin-top: 72px;
  border-radius: var(--r-xl) var(--r-xl) 0 0;
  position: relative;
  overflow: hidden;
}
footer::before{
  content:"";
  position:absolute; inset:0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cg opacity='0.06' fill='%23fff'%3E%3Ccircle cx='20' cy='30' r='1.5'/%3E%3Ccircle cx='80' cy='70' r='1.2'/%3E%3Ccircle cx='130' cy='45' r='1.5'/%3E%3Ccircle cx='50' cy='120' r='1.2'/%3E%3Ccircle cx='110' cy='140' r='1.5'/%3E%3C/g%3E%3C/svg%3E");
  background-size: 160px 160px;
  pointer-events: none;
}
.foot{
  max-width: var(--maxw); margin: 0 auto;
  display:grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 40px;
  position: relative;
}
.foot .brand-logo{ filter: brightness(0) invert(1); }
.foot-sub{ font-size: 13px; color: color-mix(in oklab, var(--bg) 72%, transparent); margin-top: 18px; line-height: 2; }
.foot-tagline{
  font-family: var(--font-hand);
  font-size: 12px;
  color: color-mix(in oklab, var(--bg) 55%, transparent);
  margin-top: 14px;
  letter-spacing: .06em;
}
.foot h4{ font-size: 11px; letter-spacing: .24em; font-weight: 700; color: color-mix(in oklab, var(--bg) 65%, transparent); margin: 0 0 18px; text-transform: uppercase; }
.foot ul{ list-style:none; padding:0; margin:0; font-size: 13.5px }
.foot ul li{ margin-bottom: 12px }
.foot ul a{ color: color-mix(in oklab, var(--bg) 85%, transparent); transition: color .2s }
.foot ul a:hover{ color: var(--accent) }
.foot-bottom{
  max-width: var(--maxw); margin: 56px auto 0;
  padding-top: 22px; border-top: 1px solid color-mix(in oklab, var(--bg) 14%, transparent);
  display:flex; justify-content:space-between; font-size: 11px;
  color: color-mix(in oklab, var(--bg) 50%, transparent);
  letter-spacing:.12em; position: relative;
}
@media (max-width: 820px){
  .foot{ grid-template-columns: 1fr; gap: 32px }
  .foot-bottom{ flex-direction:column; gap:10px; text-align:center }
}

/* ---- Variant: news card ---- */
body[data-news="card"] .news-list{
  display:grid; grid-template-columns: repeat(3, 1fr); gap: 20px;
  max-width: var(--maxw);
}
body[data-news="card"] .news-item{
  display:block;
  border-radius: var(--r-lg);
  padding: 24px;
  background: var(--bg);
  box-shadow: var(--shadow-sm);
  border: none;
}
body[data-news="card"] .news-date{ display:block; margin-bottom: 10px }
body[data-news="card"] .news-tag{ display:inline-block; margin-bottom: 14px }
@media (max-width: 820px){
  body[data-news="card"] .news-list{ grid-template-columns: 1fr }
}

/* ---- Tweaks panel ---- */
.tweaks{
  position: fixed; right: 16px; bottom: 16px; z-index: 100;
  background: var(--bg); border: 1px solid var(--line);
  padding: 18px; border-radius: var(--r-lg); width: 240px;
  box-shadow: var(--shadow-md);
  font-size: 12px; display: none;
}
.tweaks.show{ display:block }
.tweaks h5{ margin: 0 0 14px; font-size: 11px; letter-spacing:.24em; color: var(--ink-soft); font-weight:700; text-transform: uppercase; }
.tweaks .tw-row{ margin-bottom: 12px }
.tweaks .tw-row label{ display:block; font-size: 10px; letter-spacing:.2em; color: var(--ink-soft); margin-bottom: 8px; font-weight:600; text-transform: uppercase; }
.tw-opts{ display:flex; gap: 8px; flex-wrap: wrap }
.tw-opts button{
  flex:1; min-width: 0; padding: 8px 10px; font-size: 11px;
  border: 1.5px solid var(--line); background: var(--bg); color: var(--ink);
  cursor: pointer; border-radius: var(--r-pill); font-family: inherit; font-weight:500;
  transition: all .2s;
}
.tw-opts button:hover{ border-color: var(--accent) }
.tw-opts button.active{ background: var(--ink); color: var(--bg); border-color: var(--ink); }
.tw-swatch{ width:26px; height:26px; border-radius:50%; padding:0; border: 2px solid var(--line); flex: 0 0 auto; transition: transform .2s; }
.tw-swatch:hover{ transform: scale(1.1) }
.tw-swatch.active{ border-color: var(--ink); transform: scale(1.1) }
