/* Expo House 共通スタイル（全ページ共通） */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
  --ink: #1c1c1a; --ink-soft: #4a4a46; --ink-muted: #6b6b65;
  --paper: #ffffff; --paper-off: #f7f5f0;
  --green: #3b6b4a; --green-dark: #2d5239; --green-light: #e8f0eb;
  --border: #e0ddd6; --footer-bg: #1a1a18;
  --serif: 'DM Serif Display', Georgia, serif;
  --sans: 'DM Sans', system-ui, sans-serif;
  --bub-peach:#f7c5a8; --bub-pink:#f4b8c8; --bub-yellow:#f5e0a0;
  --bub-sky:#a8d8ea; --bub-mint:#b8e4c8; --bub-lavender:#d4c4e8;
  --r-card:16px; --r-btn:24px; --r-img:12px; --r-bubble:20px; --r-tag:99px;
}
html { scroll-behavior: smooth; }
body { font-family: var(--sans); background: var(--paper); color: var(--ink); font-size: 16px; line-height: 1.7; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; height: auto; }

/* STICKY */
.sticky-bar { position:fixed; top:0; left:0; right:0; height:54px; background:rgba(255,255,255,0.97); backdrop-filter:blur(8px); border-bottom:1px solid var(--border); display:flex; align-items:center; padding:0 2rem; z-index:300; transform:translateY(-100%); transition:transform 0.25s ease; justify-content:space-between; }
.sticky-bar.visible { transform:translateY(0); }
.sticky-bar img { height:28px; width:auto; }
.sticky-bar-links { display:flex; gap:1.25rem; font-size:0.82rem; color:var(--ink-soft); }
.sticky-bar-links a:hover { color:var(--green); }

/* HEADER */
header { background:var(--paper); border-bottom:1px solid var(--border); position:relative; z-index:200; }
.header-inner { display:flex; align-items:center; padding:0 2rem; height:68px; gap:1.5rem; }
.header-logo { flex-shrink: 0; min-width: 140px; }
.header-logo img { height:36px; width:auto; max-width: 160px; }
.header-nav { flex:1; display:flex; align-items:stretch; justify-content:center; position:relative; height:100%; min-width: 0; }
.header-nav::before { content:''; position:absolute; inset:0; background:radial-gradient(circle 14px at 5% 60%,var(--bub-peach) 100%,transparent 0),radial-gradient(circle 9px at 9% 25%,var(--bub-yellow) 100%,transparent 0),radial-gradient(circle 11px at 95% 55%,var(--bub-sky) 100%,transparent 0),radial-gradient(circle 7px at 91% 20%,var(--bub-mint) 100%,transparent 0),radial-gradient(circle 10px at 50% 85%,var(--bub-lavender) 100%,transparent 0),radial-gradient(circle 6px at 55% 15%,var(--bub-pink) 100%,transparent 0); opacity:0.4; pointer-events:none; }
.nav-items { display:flex; list-style:none; position:relative; z-index:1; }
.nav-items li a { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:0 1rem; height:68px; font-size:0.85rem; font-weight:500; color:var(--ink); border-bottom:3px solid transparent; transition:color 0.15s; line-height:1.2; white-space:nowrap; }
.nav-items li a .nav-jp { font-size:0.62rem; color:var(--ink-muted); font-weight:400; margin-top:2px; }
.nav-items li a:hover,.nav-items li a.active { color:var(--green); border-bottom-color:var(--green); }
.header-right { flex-shrink:0; display:flex; align-items:center; gap:0.75rem; }
.lang-wrap { position:relative; }
.lang-btn { display:flex; align-items:center; gap:0.3rem; padding:0.4rem 0.7rem; border:1.5px solid var(--border); border-radius:var(--r-btn); font-size:0.8rem; color:var(--ink-soft); background:var(--paper); cursor:pointer; transition:border-color 0.15s; }
.lang-btn:hover { border-color:var(--green); color:var(--green); }
.lang-dropdown { position:absolute; top:calc(100% + 6px); right:0; background:var(--paper); border:1.5px solid var(--border); border-radius:var(--r-card); padding:0.4rem 0; min-width:152px; box-shadow:0 8px 24px rgba(0,0,0,0.08); opacity:0; pointer-events:none; transform:translateY(-6px); transition:opacity 0.18s,transform 0.18s; z-index:100; }
.lang-wrap:focus-within .lang-dropdown { opacity:1; pointer-events:auto; transform:translateY(0); }
.lang-dropdown a { display:flex; align-items:center; gap:0.5rem; padding:0.5rem 1rem; font-size:0.85rem; color:var(--ink-soft); transition:background 0.12s,color 0.12s; }
.lang-dropdown a:hover { background:var(--green-light); color:var(--green); }
.lang-dropdown a.active { color:var(--green); font-weight:500; }
.enquire-btn { display:inline-flex; align-items:center; gap:0.35rem; background:var(--green); color:#fff; padding:0.5rem 1.1rem; border-radius:var(--r-btn); font-size:0.85rem; font-weight:500; transition:background 0.15s; white-space:nowrap; }
.enquire-btn:hover { background:var(--green-dark); }

/* ===== スマホ固定ボトムバー ===== */
.mobile-bottom-bar {
  display: none;
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 400;
  padding: 0.75rem 1.25rem;
  padding-bottom: calc(0.75rem + env(safe-area-inset-bottom, 0px));
  background: rgba(255,255,255,0.97);
  backdrop-filter: blur(8px);
  border-top: 1px solid var(--border);
  box-shadow: 0 -4px 20px rgba(0,0,0,0.08);
}
.mobile-bottom-bar a {
  display: flex; align-items: center; justify-content: center; gap: 0.5rem;
  width: 100%;
  background: #b8590a; color: #fff;
  padding: 0.85rem;
  border-radius: var(--r-btn);
  font-size: 1rem; font-weight: 500;
  transition: background 0.15s;
}
.mobile-bottom-bar a:hover { background: var(--green-dark); }
.mobile-bottom-bar a i { font-size: 1.1rem; }

@media (max-width: 640px) {
  .mobile-bottom-bar { display: block; }
  .cta-banner { display: none; }
  /* ボトムバーの高さ分だけページ下部に余白 */
  footer { padding-bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px)); }
}
.hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 36px; height: 36px;
  background: none; border: none;
  cursor: pointer; padding: 4px;
  flex-shrink: 0;
}
.hamburger span {
  display: block; width: 22px; height: 2px;
  background: var(--ink); border-radius: 2px;
  transition: transform 0.2s, opacity 0.2s;
}
.hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2) { opacity: 0; }
.hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* モバイルドロワー */
.mobile-drawer {
  display: none;
  position: fixed;
  top: 68px; right: 0;
  width: 240px;
  background: var(--paper);
  border-left: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  border-radius: 0 0 0 var(--r-card);
  box-shadow: -4px 4px 20px rgba(0,0,0,0.08);
  z-index: 250;
  padding: 0.75rem 0;
  transform: translateX(100%);
  transition: transform 0.22s ease;
}
.mobile-drawer.open { transform: translateX(0); }
.mobile-drawer a {
  display: flex; align-items: center;
  padding: 0.7rem 1.25rem;
  font-size: 0.9rem; color: var(--ink);
  border-bottom: 1px solid var(--border);
  gap: 0.5rem;
}
.mobile-drawer a:last-child { border-bottom: none; }
.mobile-drawer a:hover { background: var(--green-light); color: var(--green); }
.mobile-drawer .drawer-lang {
  display: flex; flex-wrap: wrap; gap: 0.4rem;
  padding: 0.75rem 1.25rem;
  border-top: 1px solid var(--border);
}
.mobile-drawer .drawer-lang a {
  padding: 0.3rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: var(--r-tag);
  font-size: 0.78rem; color: var(--ink-soft);
  border-bottom: 1px solid var(--border);
}
.mobile-drawer .drawer-lang a.active { color: var(--green); border-color: var(--green); }

@media (max-width:640px) {
  .hamburger { display: flex; }
  .mobile-drawer { display: block; }
  .hero-grid { grid-template-columns:1fr; grid-template-rows:520px 160px 160px; }
  .hero-cell-main { grid-column:1; grid-row:1; }
  .hero-cell-2 { grid-column:1; grid-row:2; }
  .hero-cell-3 { display:none; }
  .hero-cell-4 { grid-column:1; grid-row:3; }
  .hero-cell-5 { display:none; }
  .hero-overlay { padding:1.5rem 1.25rem 3.5rem; }
}

/* HERO */
.hero-grid { display:grid; grid-template-columns:2fr 1.2fr 1fr; grid-template-rows:280px 240px; gap:8px; padding:8px; background:var(--border); }
.hero-cell { position:relative; overflow:hidden; background:var(--paper-off); border-radius:var(--r-img); }
.hero-cell img { width:100%; height:100%; object-fit:cover; display:block; }
.hero-cell-main { grid-row:1/3; grid-column:1; }
.slideshow { position:relative; width:100%; height:100%; }
.slide { position:absolute; inset:0; opacity:0; transition:opacity 0.8s ease; }
.slide.active { opacity:1; }
.slide img { width:100%; height:100%; object-fit:cover; display:block; }
.slide-dots { position:absolute; bottom:1rem; left:50%; transform:translateX(-50%); display:flex; gap:8px; z-index:10; align-items:center; }
.slide-dot { width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,0.45); cursor:pointer; transition:background 0.2s,transform 0.2s; border:none; padding:0; }
.slide-dot.active { background:#fff; transform:scale(1.2); }
.slide-dot { position:relative; }
.slide-dot::before { content:''; position:absolute; inset:-9px -5px; }
.slide-dot:hover { background:rgba(255,255,255,0.8); }
.slide-dot:focus-visible { outline:2px solid #fff; outline-offset:3px; }

.hero-overlay { position:absolute; inset:0; background:linear-gradient(to top,rgba(0,0,0,0.62) 0%,rgba(0,0,0,0.08) 55%,transparent 100%); display:flex; flex-direction:column; justify-content:flex-end; padding:2rem 2rem 4rem; pointer-events:none; }
.hero-overlay h1 { font-family:var(--serif); font-size:clamp(1.3rem,4vw,2.8rem); color:#fff; line-height:1.1; margin-bottom:0.5rem; padding-top:1.5rem; }
.hero-overlay p { font-size:clamp(0.78rem,2.5vw,0.9rem); color:rgba(255,255,255,0.88); margin-bottom:1rem; max-width:34ch; line-height:1.55; }
.btn-hero { pointer-events:auto; display:inline-flex; align-items:center; gap:0.4rem; background:rgba(255,255,255,0.15); border:1.5px solid rgba(255,255,255,0.7); color:#fff; padding:0.6rem 1.4rem; font-size:0.875rem; font-weight:500; border-radius:var(--r-btn); backdrop-filter:blur(4px); transition:background 0.2s; width:fit-content; }
.btn-hero:hover { background:rgba(255,255,255,0.28); }
.hero-cell-2 { grid-column:2; grid-row:1; }
.hero-cell-3 { grid-column:3; grid-row:1; background:var(--green); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:1.5rem; text-align:center; }
.hero-cell-3 i { font-size:2rem; color:rgba(255,255,255,0.65); margin-bottom:0.5rem; }
.hero-cell-3 h2 { font-family:var(--serif); font-size:1.3rem; color:#fff; margin-bottom:0.4rem; }
.hero-cell-3 p { font-size:0.78rem; color:rgba(255,255,255,0.8); line-height:1.6; }
.hero-cell-4 { grid-column:2; grid-row:2; background:#7a6448; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:1.5rem; text-align:center; gap:0.5rem; position:relative; overflow:hidden; }
.hero-cell-4 i { font-size:1.3rem; color:rgba(255,255,255,0.6); margin-bottom:0.2rem; }
.hero-cell-4 h3 { font-family:var(--serif); font-size:1.05rem; color:#fff; margin-bottom:0.2rem; }
.hero-cell-4 p { font-size:0.75rem; color:rgba(255,255,255,0.8); line-height:1.5; }
.hero-cell-5 { grid-column:3; grid-row:2; }

/* CTA */
.cta-banner { padding:1.25rem 2rem; display:flex; justify-content:center; }
.cta-banner a { display:inline-flex; align-items:center; justify-content:center; gap:0.6rem; width:100%; max-width:860px; background:#b8590a; color:#fff; padding:1rem 2rem; font-size:1rem; font-weight:500; border-radius:var(--r-btn); transition:background 0.15s; }
.cta-banner a:hover { background:#a34f08; }

/* BUBBLE NAV */
.bubble-nav { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; padding:0 2rem 2rem; }
.bubble-card { border:2px solid var(--border); border-radius:var(--r-bubble); overflow:hidden; display:flex; align-items:center; justify-content:center; min-height:110px; position:relative; transition:border-color 0.2s,transform 0.15s; background:var(--paper); }
.bubble-card:hover { border-color:var(--green); transform:translateY(-2px); }
.bubble-card-bg { position:absolute; inset:0; pointer-events:none; }
.bubble-card:nth-child(1) .bubble-card-bg { background:radial-gradient(circle 36px at 15% 50%,var(--bub-peach) 100%,transparent 0),radial-gradient(circle 22px at 30% 20%,var(--bub-yellow) 100%,transparent 0),radial-gradient(circle 16px at 8% 85%,var(--bub-pink) 100%,transparent 0),radial-gradient(circle 28px at 85% 70%,var(--bub-peach) 100%,transparent 0),radial-gradient(circle 14px at 75% 15%,var(--bub-yellow) 100%,transparent 0); }
.bubble-card:nth-child(2) .bubble-card-bg { background:radial-gradient(circle 30px at 10% 40%,var(--bub-mint) 100%,transparent 0),radial-gradient(circle 20px at 25% 80%,var(--bub-sky) 100%,transparent 0),radial-gradient(circle 38px at 85% 55%,var(--bub-mint) 100%,transparent 0),radial-gradient(circle 16px at 80% 15%,var(--bub-lavender) 100%,transparent 0); }
.bubble-card:nth-child(3) .bubble-card-bg { background:radial-gradient(circle 34px at 12% 60%,var(--bub-lavender) 100%,transparent 0),radial-gradient(circle 18px at 20% 15%,var(--bub-pink) 100%,transparent 0),radial-gradient(circle 26px at 88% 45%,var(--bub-sky) 100%,transparent 0),radial-gradient(circle 20px at 78% 80%,var(--bub-lavender) 100%,transparent 0); }
.bubble-card-text { position:relative; z-index:1; text-align:center; }
.bubble-card-text h3 { font-family:var(--serif); font-size:1.5rem; color:var(--green); line-height:1; }
.bubble-card-text span { font-size:0.78rem; color:var(--ink-muted); }

/* PHILOSOPHY */
.philosophy { display:grid; grid-template-columns:1fr 1fr; min-height:400px; }
.philosophy-text { background:#1c3829; color:#fff; padding:4rem 3rem; display:flex; flex-direction:column; justify-content:center; }
.philosophy-text .label { font-size:0.7rem; letter-spacing:0.1em; color:rgba(255,255,255,0.62); margin-bottom:1.25rem; text-transform:uppercase; }
.philosophy-text h2 { font-family:var(--serif); font-size:2rem; color:#fff; line-height:1.2; margin-bottom:1.5rem; }
.philosophy-text h2 em { font-style:italic; color:#a8d0b0; }
.philosophy-text p { font-size:0.9rem; color:rgba(255,255,255,0.7); line-height:1.8; max-width:42ch; }
.philosophy-image { position:relative; overflow:hidden; background:var(--paper-off); min-height:320px; }
.philosophy-image::after { content:""; position:absolute; inset:0; background:linear-gradient(to top, rgba(0,0,0,0.45) 0%, transparent 60%); pointer-events:none; }
.philosophy-image-caption { position:absolute; bottom:1.5rem; left:1.5rem; right:1.5rem; z-index:2; color:#fff; font-size:0.85rem; letter-spacing:0.08em; text-transform:uppercase; opacity:0.9; }
.philosophy-image img { width:100%; height:100%; object-fit:cover; position:absolute; inset:0; }

/* HOUSES */
.houses-section { padding:3.5rem 2rem; }
.section-header { display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:2rem; flex-wrap:wrap; gap:1rem; }
.section-label { font-size:0.7rem; letter-spacing:0.1em; color:var(--ink-muted); margin-bottom:0.35rem; text-transform:uppercase; }
.section-h2 { font-family:var(--serif); font-size:2rem; font-weight:400; line-height:1.2; }
.see-all { font-size:0.82rem; color:var(--green); font-weight:500; border:1.5px solid var(--green); padding:0.45rem 1rem; border-radius:var(--r-btn); display:inline-flex; align-items:center; gap:0.3rem; transition:background 0.15s,color 0.15s; }
.see-all:hover { background:var(--green); color:#fff; }
.houses-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1.25rem; }
.house-card { border:1.5px solid var(--border); border-radius:var(--r-card); overflow:hidden; transition:border-color 0.2s,box-shadow 0.2s; background:var(--paper); }
.house-card:hover { border-color:var(--green); box-shadow:0 6px 20px rgba(59,107,74,0.1); }
.house-card-img { aspect-ratio:4/3; overflow:hidden; position:relative; background:var(--paper-off); }
.house-card-img img { width:100%; height:100%; object-fit:cover; transition:transform 0.4s ease; }
.house-card:hover .house-card-img img { transform:scale(1.04); }
.house-card-body { padding:1rem 1.2rem 1.3rem; }
.house-tag { display:inline-flex; align-items:center; gap:0.3rem; font-size:0.68rem; padding:0.2rem 0.65rem; border-radius:var(--r-tag); margin-bottom:0.5rem; font-weight:500; }
.tag-mixed { background:#e8f0eb; color:var(--green); }
.tag-women { background:#fce8f0; color:#a03060; }
.house-name { font-family:var(--serif); font-size:1.2rem; font-weight:400; margin-bottom:0.3rem; }
.house-desc { font-size:0.82rem; color:var(--ink-soft); line-height:1.6; margin-bottom:0.85rem; }
.house-link { font-size:0.8rem; color:var(--green); font-weight:500; display:inline-flex; align-items:center; gap:0.25rem; }

/* DUAL BANNER */
.dual-banner { display:grid; grid-template-columns:1fr 1fr; height:300px; }
.dual-cell { position:relative; overflow:hidden; background:#2a2a2a; }
.dual-cell img { width:100%; height:100%; object-fit:cover; opacity:0.6; position:absolute; inset:0; }
.dual-cell-overlay { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:2rem; }
.dual-cell-overlay i { font-size:1.8rem; color:rgba(255,255,255,0.6); margin-bottom:0.6rem; }
.dual-cell-overlay h3 { font-family:var(--serif); font-size:1.4rem; color:#fff; margin-bottom:0.3rem; }
.dual-cell-overlay p { font-size:0.82rem; color:rgba(255,255,255,0.75); margin-bottom:1.25rem; }
.dual-cell-overlay a { display:inline-flex; align-items:center; gap:0.4rem; border:1.5px solid rgba(255,255,255,0.7); color:#fff; padding:0.5rem 1.2rem; font-size:0.82rem; font-weight:500; border-radius:var(--r-btn); background:rgba(255,255,255,0.1); backdrop-filter:blur(3px); transition:background 0.15s; }
.dual-cell-overlay a:hover { background:rgba(255,255,255,0.22); }

/* ===== 水玉シルエット（フッター上） ===== */
.footer-cityscape {
  background: #ffffff;
  overflow: hidden;
  line-height: 0;
  margin-bottom: 0;
}
.footer-dots-inner {
  display: flex;
  width: max-content;
  animation: dotsScroll 45s linear infinite;
}
.footer-dots-inner:hover { animation-play-state: paused; }
.footer-dots-unit { flex-shrink: 0; }
.footer-dots-unit svg {
  display: block;
  height: 160px;
  width: auto;
}

/* ケンバーンズ効果 */
.ken-burns img {
  /* animation removed */
}


@keyframes dotsScroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(calc(-1 * var(--unit-w, 50%))); }
}

/* FOOTER */
footer { background:var(--footer-bg); color:rgba(255,255,255,0.5); padding:2.5rem 2rem 0; }
.footer-top { display:grid; grid-template-columns:1.8fr 1fr 1fr; gap:3rem; padding-bottom:2.5rem; border-bottom:1px solid rgba(255,255,255,0.08); }
.footer-logo-img { height:32px; width:auto; filter:brightness(0) invert(1) opacity(0.8); margin-bottom:1rem; }
.footer-tagline { font-size:0.82rem; color:rgba(255,255,255,0.62); line-height:1.7; margin-bottom:1.25rem; max-width:34ch; }
.footer-location { display:flex; align-items:flex-start; gap:0.5rem; font-size:0.78rem; color:rgba(255,255,255,0.58); line-height:1.6; }
.footer-location i { font-size:0.9rem; margin-top:3px; flex-shrink:0; }
.footer-social { display:flex; gap:0.6rem; margin-top:1.25rem; flex-wrap:wrap; }
.footer-social a { display:inline-flex; align-items:center; gap:0.4rem; padding:0.4rem 0.8rem; border:1px solid rgba(255,255,255,0.15); border-radius:var(--r-btn); color:rgba(255,255,255,0.5); font-size:0.8rem; transition:border-color 0.15s,color 0.15s; white-space:nowrap; }
.footer-social a:hover { border-color:rgba(255,255,255,0.45); color:rgba(255,255,255,0.9); }
.footer-social a i { font-size:1rem; }
.footer-col h4, .footer-col .footer-h { font-family:'DM Sans',sans-serif; font-weight:500; line-height:1.4; font-size:0.7rem; letter-spacing:0.1em; text-transform:uppercase; color:rgba(255,255,255,0.6); margin:0 0 1rem; }
.footer-col ul { list-style:none; }
.footer-col ul li { margin-bottom:0.55rem; }
.footer-col ul li a { font-size:0.85rem; color:rgba(255,255,255,0.48); display:inline-flex; align-items:center; gap:0.3rem; transition:color 0.15s; }
.footer-col ul li a:hover { color:rgba(255,255,255,0.9); }
.footer-lang-grid { display:grid; grid-template-columns:1fr 1fr; gap:0.4rem 1rem; list-style:none; }
.footer-lang-grid li a { font-size:0.82rem; color:rgba(255,255,255,0.45); display:flex; align-items:center; gap:0.4rem; padding:0.3rem 0; transition:color 0.15s; }
.footer-lang-grid li a:hover { color:rgba(255,255,255,0.9); }
.footer-lang-grid li a.active { color:rgba(255,255,255,0.8); }
.footer-bottom { padding:1.25rem 0; display:flex; justify-content:space-between; flex-wrap:wrap; gap:0.5rem; font-size:0.72rem; color:rgba(255,255,255,0.55); }
.footer-bottom .footer-legal { color:rgba(255,255,255,0.62); text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(255,255,255,0.2); }
.footer-bottom .footer-legal:hover { color:rgba(255,255,255,0.9); }

/* RESPONSIVE */
@media (max-width:1080px) {
  .nav-items li a { padding:0 0.7rem; font-size:0.8rem; }
  .nav-items li a .nav-jp { display: none; }
  .header-inner { padding:0 1.25rem; gap: 1rem; }
}
@media (max-width:960px) {
  .header-inner { padding:0 1rem; }
  .hero-overlay h1 { font-size:clamp(1.3rem,3.2vw,2.2rem); }
  .hero-overlay p { font-size:clamp(0.78rem,1.8vw,0.9rem); }
  .hero-overlay { padding:1.5rem 1.5rem 3.5rem; }
  .nav-items li a { padding:0 0.9rem; font-size:0.82rem; }
  .hero-grid { grid-template-columns:1fr 1fr; grid-template-rows:340px 140px 140px; }
  .hero-cell-main { grid-column:1/3; grid-row:1; }
  .hero-cell-2 { grid-column:1; grid-row:2; }
  .hero-cell-3 { grid-column:2; grid-row:2; }
  .hero-cell-4 { grid-column:1; grid-row:3; }
  .hero-cell-5 { grid-column:2; grid-row:3; }
  .bubble-nav { padding:0 1rem 1.5rem; }
  .philosophy { grid-template-columns:1fr; }
  .philosophy-image { min-height:260px; position:relative; }
  .houses-grid { grid-template-columns:1fr 1fr; }
  .dual-banner { grid-template-columns:1fr; height:auto; }
  .dual-cell { height:220px; }
  .footer-top { grid-template-columns:1fr 1fr; gap:2rem; }
}
@media (max-width:640px) {
  .header-nav { display: none; }
  .header-inner { justify-content: space-between; padding: 0 1.25rem; }
  .header-right { gap: 0; }
  .lang-wrap { display: none; }
  .enquire-btn { display: none; }
  .hamburger { display: flex; margin-left: auto; }
  .mobile-drawer { display: block; top: 68px; }
  .hero-grid { grid-template-columns:1fr; grid-template-rows:280px 180px 160px 160px 160px; }
  .hero-cell-main { grid-column:1; grid-row:1; }
  .hero-cell-2 { grid-column:1; grid-row:2; }
  .hero-cell-3 { grid-column:1; grid-row:3; }
  .hero-cell-4 { grid-column:1; grid-row:4; }
  .hero-cell-5 { grid-column:1; grid-row:5; }
  .bubble-nav { grid-template-columns:1fr; }
  .houses-grid { grid-template-columns:1fr; }
  .footer-top { grid-template-columns:1fr; gap:1.5rem; }
  .houses-section,.philosophy-text { padding:2.5rem 1.25rem; }
  .cta-banner { padding:1rem; }
}
@media (prefers-reduced-motion:reduce) { * { transition:none !important; animation:none !important; } }

/* Seasonal events cell decoration */
.hero-cell-4 .event-icon { display:block; line-height:0; margin-bottom:0.2rem; }
.hero-cell-4 .event-icon svg { display:block; margin:0 auto; width:auto; opacity:0.85; }
.hero-cell-3 .kyoto-icon { display:block; line-height:0; margin-bottom:0.7rem; }
.hero-cell-3 .kyoto-icon svg { display:block; width:auto; opacity:0.85; }
.hero-cell-4 h3 { font-family:var(--serif); font-size:clamp(0.95rem,1.5vw,1.2rem); font-weight:700; color:#fff; margin:0; letter-spacing:0.02em; }
.hero-cell-4 p { font-size:clamp(0.72rem,1.2vw,0.82rem); color:rgba(255,255,255,0.85); margin:0; line-height:1.6; }
.event-divider { width:28px; height:1.5px; background:rgba(255,255,255,0.4); border-radius:2px; margin:0.1rem auto; }

/* ===== Kyoto / Seasonal セル：余白の整理 ===== */
.hero-cell-3, .hero-cell-4 { gap:0; padding:1.75rem 1.5rem; }
.hero-cell-3 .kyoto-icon, .hero-cell-4 .event-icon { margin:0 0 1rem; }
.hero-cell-3 h2, .hero-cell-4 h3 { margin:0 0 0.5rem; line-height:1.2; }
.hero-cell-3 p, .hero-cell-4 p { margin:0; }
.hero-cell-4 .event-divider { margin:0 auto 0.6rem; }

/* タブレット・スマホ：アイコン左＋テキスト右の横並び */
@media (max-width:960px) {
  .hero-grid { grid-template-rows:340px minmax(150px,auto) minmax(150px,auto); }
  .hero-cell-2 img, .hero-cell-5 img { position:absolute; inset:0; }
  .hero-cell-3, .hero-cell-4 {
    display:grid; grid-template-columns:64px 1fr; grid-template-rows:auto auto;
    column-gap:1.25rem; row-gap:0.4rem; align-content:center; justify-items:start;
    text-align:left; padding:1.5rem 1.75rem;
  }
  .hero-cell-3 .kyoto-icon, .hero-cell-4 .event-icon {
    grid-row:1 / 3; grid-column:1; align-self:center; justify-self:center; margin:0;
  }
  .hero-cell-3 .kyoto-icon svg { height:58px; }
  .hero-cell-4 .event-icon svg { height:auto; width:60px; }
  .hero-cell-3 h2, .hero-cell-4 h3 { grid-column:2; margin:0; align-self:end; }
  .hero-cell-3 p, .hero-cell-4 p { grid-column:2; align-self:start; }
  .hero-cell-3 h2 br { display:none; }
  .hero-cell-3 h2, .hero-cell-4 h3 { font-size:1.2rem; }
  .hero-cell-3 p, .hero-cell-4 p { font-size:0.8rem; line-height:1.6; color:rgba(255,255,255,0.85); }
  .hero-cell-4 .event-divider { display:none; }
}
@media (max-width:640px) {
  .hero-grid { grid-template-rows:280px 180px minmax(140px,auto) minmax(140px,auto); }
  .hero-cell-3, .hero-cell-4 { padding:1.5rem 1.5rem; column-gap:1.1rem; }
}

/* ===== Philosophy 透かし（水玉モチーフ） ===== */
.philosophy-text { position:relative; overflow:hidden; }
.philosophy-text > *:not(.philo-watermark) { position:relative; z-index:1; }
.philo-watermark { position:absolute; inset:0; pointer-events:none; z-index:0; }
.philo-watermark svg { position:absolute; fill:#a8d0b0; height:auto; }
.wm-torii { width:120px; top:12%; right:9%; opacity:0.08; }
.wm-house { width:170px; bottom:9%; right:6%; opacity:0.11; }
@media (max-width:960px) {
  .wm-torii { width:90px; top:1.5rem; right:1.25rem; opacity:0.07; }
  .wm-house { width:120px; bottom:1.25rem; right:1rem; opacity:0.08; }
}

/* ===== デュアルバナー：白背景にゆったり配置 ===== */
.dual-banner { background:#fff; padding:3.5rem 2rem; gap:1.5rem; height:auto; }
.dual-cell { height:300px; border-radius:var(--r-card); }
@media (max-width:960px) {
  .dual-banner { padding:2.5rem 1.25rem; gap:1rem; }
  .dual-cell { height:240px; }
}

/* ===== スタッフ募集バナーを目立たせる ===== */
.dual-cell-staff img { opacity:0.85; }
.dual-cell-staff::before { content:''; position:absolute; inset:0; z-index:1; background:radial-gradient(ellipse at center, rgba(20,20,18,0.62) 0%, rgba(20,20,18,0.35) 60%, rgba(20,20,18,0.15) 100%); }
.dual-cell-staff .dual-cell-overlay { z-index:2; }
.hiring-badge { display:inline-flex; align-items:center; gap:0.35rem; background:#b8590a; color:#fff; font-size:0.72rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase; padding:0.35rem 0.9rem; border-radius:99px; margin-bottom:0.9rem; }
.dual-cell-staff .dual-cell-overlay .hiring-badge i { font-size:0.9rem; color:#fff; margin:0; }
.dual-cell-staff .dual-cell-overlay h3 { font-size:clamp(1.6rem,2.6vw,2.1rem); margin-bottom:0.45rem; text-shadow:0 2px 12px rgba(0,0,0,0.35); }
.dual-cell-staff .dual-cell-overlay p { font-size:0.92rem; color:rgba(255,255,255,0.92); }
.dual-cell-staff .dual-cell-overlay a { background:#b8590a; border-color:#b8590a; font-weight:600; padding:0.6rem 1.4rem; backdrop-filter:none; }
.dual-cell-staff .dual-cell-overlay a:hover { background:#a95208; border-color:#a95208; }

/* ===== スタッフ募集バナー：エディトリアル調 ===== */
.dual-cell-staff::before { background:linear-gradient(90deg, rgba(18,18,16,0.78) 0%, rgba(18,18,16,0.55) 45%, rgba(18,18,16,0.12) 100%); }
.dual-cell-staff .dual-cell-overlay { align-items:flex-start; text-align:left; padding:2rem 2.5rem; }
.hiring-label { display:inline-flex; align-items:center; gap:0.6rem; font-size:0.68rem; font-weight:500; letter-spacing:0.22em; text-transform:uppercase; color:rgba(255,255,255,0.85); margin-bottom:1rem; padding-bottom:0.55rem; border-bottom:1px solid rgba(255,255,255,0.3); }
.pulse { position:relative; width:7px; height:7px; border-radius:50%; background:#f2a65a; flex:none; }
.pulse::after { content:''; position:absolute; inset:0; border-radius:50%; background:#f2a65a; animation:hiringPulse 2s ease-out infinite; }
@keyframes hiringPulse { 0% { transform:scale(1); opacity:0.7; } 100% { transform:scale(3); opacity:0; } }
.dual-cell-staff .dual-cell-overlay h3 { font-size:clamp(1.7rem,2.8vw,2.3rem); line-height:1.1; letter-spacing:-0.01em; margin-bottom:0.6rem; text-shadow:none; }
.dual-cell-staff .dual-cell-overlay h3 em { font-style:italic; color:#f2c08f; }
.dual-cell-staff .dual-cell-overlay p { font-size:0.85rem; color:rgba(255,255,255,0.78); margin-bottom:1.4rem; max-width:30ch; line-height:1.6; }
.dual-cell-staff .dual-cell-overlay a.apply-link { background:#fff; color:#1a1a18; border:none; font-weight:500; padding:0.6rem 1.1rem 0.6rem 1.4rem; gap:0.55rem; }
.dual-cell-staff .dual-cell-overlay a.apply-link i { font-size:0.95rem; color:#1a1a18; margin:0; transition:transform 0.2s ease; }
.dual-cell-staff .dual-cell-overlay a.apply-link:hover { background:#f7f5f0; }
.dual-cell-staff .dual-cell-overlay a.apply-link:hover i { transform:translateX(3px); }
@media (max-width:640px) { .dual-cell-staff .dual-cell-overlay { padding:1.5rem 1.5rem; } }

/* ===== Philosophy スライドショー ===== */
.philosophy-image .slideshow { position:absolute; inset:0; }
.philosophy-image .slide img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.philosophy-image .slide-dots { z-index:3; bottom:1.25rem; }

/* ===== ハウス詳細ページ ===== */
.page-wrap { max-width:1160px; margin:0 auto; padding:2rem 2rem 4rem; }
.breadcrumb { font-size:0.78rem; color:var(--ink-muted); margin-bottom:1.5rem; display:flex; flex-wrap:wrap; gap:0.4rem; align-items:center; }
.breadcrumb a:hover { color:var(--green); }
.breadcrumb i { font-size:0.75rem; }
.house-head { margin-bottom:1.75rem; }
.house-head h1 { font-family:var(--serif); font-weight:400; font-size:clamp(2.2rem,4.5vw,3.2rem); line-height:1.05; margin:0.6rem 0 0.5rem; }
.house-head .lead { color:var(--ink-soft); font-size:1.02rem; max-width:44ch; }
.house-tag { display:inline-block; font-size:0.72rem; padding:0.25rem 0.8rem; border-radius:var(--r-tag); font-weight:500; }
.house-tag.mixed { background:var(--green-light); color:var(--green-dark); }
.house-tag.women { background:#fbe4ec; color:#a13a63; }
.house-layout { display:grid; grid-template-columns:minmax(0,1fr) 340px; grid-template-areas:"gallery facts" "content facts"; column-gap:2.5rem; align-items:start; }
.house-gallery { grid-area:gallery; }
.house-content { grid-area:content; }
.facts-card { grid-area:facts; }
.gallery-main { position:relative; aspect-ratio:4/3; border-radius:var(--r-img); overflow:hidden; background:var(--paper-off); }
.gallery-main img { width:100%; height:100%; object-fit:cover; transition:opacity 0.3s ease; }
.gallery-thumbs { display:flex; gap:0.6rem; margin-top:0.75rem; flex-wrap:wrap; }
.gallery-thumb { width:92px; aspect-ratio:4/3; border-radius:8px; overflow:hidden; border:2px solid transparent; padding:0; cursor:pointer; background:none; opacity:0.6; transition:opacity 0.2s,border-color 0.2s; }
.gallery-thumb img { width:100%; height:100%; object-fit:cover; }
.gallery-thumb:hover { opacity:0.9; }
.gallery-thumb.active { border-color:var(--green); opacity:1; }
.house-section { margin-top:3rem; }
.house-section h2 { font-family:var(--serif); font-weight:400; font-size:1.6rem; margin-bottom:1rem; }
.house-section > p { color:var(--ink-soft); max-width:62ch; }
.included-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.included-card { background:var(--paper-off); border-radius:var(--r-card); padding:1.25rem 1.35rem; }
.included-card h3 { font-size:0.92rem; font-weight:500; display:flex; align-items:center; gap:0.5rem; margin-bottom:0.4rem; }
.included-card h3 i { font-size:1.15rem; color:var(--green); }
.included-card p { font-size:0.86rem; color:var(--ink-soft); line-height:1.6; }
.included-note { margin-top:1rem; font-size:0.88rem; color:var(--green-dark); background:var(--green-light); border-radius:var(--r-card); padding:0.9rem 1.2rem; display:flex; gap:0.6rem; align-items:flex-start; }
.included-note i { font-size:1.1rem; margin-top:0.15rem; }
.access-list { list-style:none; display:grid; gap:0.75rem; margin-bottom:1.25rem; }
.access-list li { display:grid; grid-template-columns:28px 1fr; gap:0.6rem; font-size:0.92rem; color:var(--ink-soft); }
.access-list li i { font-size:1.2rem; color:var(--green); margin-top:0.1rem; }
.access-list strong { color:var(--ink); font-weight:500; }
.map-embed { border-radius:var(--r-img); overflow:hidden; aspect-ratio:16/9; background:var(--paper-off); }
.map-embed iframe { width:100%; height:100%; border:0; display:block; }
.facts-card { position:sticky; top:78px; background:#fff; border:1px solid var(--border); border-radius:var(--r-card); padding:1.75rem; box-shadow:0 8px 30px rgba(26,26,24,0.06); }
.facts-price { font-family:var(--serif); font-size:2rem; line-height:1.1; }
.facts-price small { font-family:var(--sans); font-size:0.85rem; color:var(--ink-muted); margin-left:0.25rem; }
.facts-incl { display:inline-flex; align-items:center; gap:0.35rem; margin:0.6rem 0 1.25rem; font-size:0.78rem; color:var(--green-dark); background:var(--green-light); padding:0.3rem 0.8rem; border-radius:var(--r-tag); }
.facts-list { display:grid; gap:0; margin-bottom:1.5rem; }
.facts-list div { display:flex; justify-content:space-between; gap:1rem; padding:0.7rem 0; border-top:1px solid var(--border); font-size:0.88rem; }
.facts-list dt { color:var(--ink-muted); }
.facts-list dd { text-align:right; font-weight:500; }
.facts-list dd small { display:block; font-weight:400; color:var(--ink-muted); font-size:0.76rem; }
.facts-cta { display:flex; justify-content:center; align-items:center; gap:0.5rem; width:100%; background:#b8590a; color:#fff; border-radius:99px; padding:0.85rem 1rem; font-weight:500; font-size:0.95rem; transition:background 0.2s; }
.facts-cta:hover { background:#a95208; }
.facts-sub { text-align:center; font-size:0.76rem; color:var(--ink-muted); margin-top:0.7rem; }
.other-houses { margin-top:4rem; padding-top:3rem; border-top:1px solid var(--border); }
.other-houses h2 { font-family:var(--serif); font-weight:400; font-size:1.6rem; margin-bottom:1.25rem; }
.other-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1rem; }
.other-card { display:block; border-radius:var(--r-card); overflow:hidden; border:1px solid var(--border); background:#fff; transition:transform 0.2s,box-shadow 0.2s; }
.other-card:hover { transform:translateY(-3px); box-shadow:0 8px 24px rgba(26,26,24,0.08); }
.other-card img { width:100%; aspect-ratio:4/3; object-fit:cover; }
.other-card div { padding:0.75rem 0.9rem 0.9rem; }
.other-card strong { font-family:var(--serif); font-weight:400; font-size:1.1rem; display:block; margin:0.35rem 0 0; }
@media (max-width:960px) {
  .house-layout { grid-template-columns:1fr; grid-template-areas:"gallery" "facts" "content"; }
  .facts-card { position:static; margin-top:1.5rem; }
  .other-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:640px) {
  .page-wrap { padding:1.25rem 1.25rem 5rem; }
  .included-grid { grid-template-columns:1fr; }
  .other-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .gallery-thumb { width:72px; }
}

/* ===== エリアマップ ===== */
.area-block { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.6fr); gap:2.5rem; align-items:center; margin-top:3.5rem; padding:2rem; background:var(--paper-off); border-radius:var(--r-card); }
.area-text .label { font-size:0.7rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:0.6rem; }
.area-text h3 { font-family:var(--serif); font-weight:400; font-size:1.7rem; line-height:1.2; margin-bottom:0.8rem; }
.area-text p { color:var(--ink-soft); font-size:0.92rem; }
.area-map img, .area-map-figure img { width:100%; height:auto; border-radius:var(--r-img); }
.area-map-figure { margin:0 0 1.25rem; }
.area-map-figure figcaption { font-size:0.8rem; color:var(--ink-muted); margin-top:0.5rem; }
@media (max-width:960px) { .area-block { grid-template-columns:1fr; gap:1.5rem; padding:1.5rem; } }

.uni-note { display:flex; gap:0.75rem; align-items:flex-start; background:var(--paper-off); border-radius:var(--r-card); padding:1rem 1.25rem; margin-bottom:1.25rem; font-size:0.88rem; color:var(--ink-soft); line-height:1.65; }
.uni-note i { font-size:1.3rem; color:var(--green); margin-top:0.1rem; }
.uni-note strong { color:var(--ink); font-weight:500; }

/* ===== ハウス一覧ページ ===== */
.page-intro { margin-bottom:2rem; }
.page-intro .label { font-size:0.7rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:0.6rem; }
.page-intro h1 { font-family:var(--serif); font-weight:400; font-size:clamp(2rem,4vw,2.9rem); line-height:1.1; margin-bottom:0.8rem; max-width:20ch; }
.page-intro .lead { color:var(--ink-soft); max-width:60ch; }
.house-filter { display:flex; gap:0.5rem; flex-wrap:wrap; margin-bottom:1.5rem; }
.house-filter button { font:inherit; font-size:0.85rem; border:1px solid var(--border); background:#fff; color:var(--ink-soft); border-radius:99px; padding:0.45rem 1rem; cursor:pointer; transition:all 0.2s; }
.house-filter button span { font-size:0.72rem; color:var(--ink-muted); margin-left:0.2rem; }
.house-filter button:hover { border-color:var(--green); color:var(--green); }
.house-filter button.active { background:var(--green); border-color:var(--green); color:#fff; }
.house-filter button.active span { color:rgba(255,255,255,0.75); }
.house-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5rem; }
.house-card-lg { display:grid; grid-template-columns:44% 1fr; border:1px solid var(--border); border-radius:var(--r-card); overflow:hidden; background:#fff; transition:transform 0.2s, box-shadow 0.2s; }
.house-card-lg:hover { transform:translateY(-3px); box-shadow:0 10px 30px rgba(26,26,24,0.08); }
.house-card-lg.hidden { display:none; }
.hc-img { position:relative; min-height:220px; }
.hc-img img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.hc-body { padding:1.25rem 1.35rem; display:flex; flex-direction:column; }
.hc-body h2 { font-family:var(--serif); font-weight:400; font-size:1.5rem; margin:0.5rem 0 0.35rem; }
.hc-body > p { font-size:0.85rem; color:var(--ink-soft); line-height:1.6; margin-bottom:0.9rem; }
.hc-facts { display:grid; gap:0; margin-bottom:0.9rem; }
.hc-facts div { display:flex; justify-content:space-between; gap:0.75rem; font-size:0.8rem; padding:0.4rem 0; border-top:1px solid var(--border); }
.hc-facts dt { color:var(--ink-muted); }
.hc-facts dd { font-weight:500; text-align:right; }
.hc-link { margin-top:auto; font-size:0.85rem; color:var(--green); display:inline-flex; align-items:center; gap:0.3rem; }
.index-section { margin-top:3.5rem; }
.index-section > h2 { font-family:var(--serif); font-weight:400; font-size:1.6rem; margin-bottom:1rem; }
.included-grid.four { grid-template-columns:repeat(4,minmax(0,1fr)); }
.index-cta { margin-top:3.5rem; text-align:center; background:var(--green-light); border-radius:var(--r-card); padding:2.5rem 1.5rem; }
.index-cta h2 { font-family:var(--serif); font-weight:400; font-size:1.7rem; margin-bottom:0.5rem; }
.index-cta p { color:var(--ink-soft); max-width:52ch; margin:0 auto 1.25rem; font-size:0.95rem; }
@media (max-width:1080px) { .house-list { grid-template-columns:1fr; } .included-grid.four { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:640px) { .house-card-lg { grid-template-columns:1fr; } .hc-img { min-height:0; aspect-ratio:4/3; } .included-grid.four { grid-template-columns:1fr; } }

/* ===== お問い合わせページ ===== */
.contact-layout { display:grid; grid-template-columns:minmax(0,0.85fr) minmax(0,1.15fr); gap:3rem; align-items:start; }
.contact-intro { position:sticky; top:78px; }
.contact-intro .label { font-size:0.7rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:0.6rem; }
.contact-intro h1 { font-family:var(--serif); font-weight:400; font-size:clamp(2rem,4vw,2.8rem); line-height:1.1; margin-bottom:0.8rem; }
.contact-intro .lead { color:var(--ink-soft); margin-bottom:2rem; }
.contact-steps { list-style:none; display:grid; gap:1.1rem; margin-bottom:2rem; }
.contact-steps li { display:grid; grid-template-columns:34px 1fr; gap:0.8rem; }
.contact-steps li > span { width:34px; height:34px; border-radius:50%; background:var(--green-light); color:var(--green-dark); display:flex; align-items:center; justify-content:center; font-family:var(--serif); font-size:1.05rem; }
.contact-steps strong { font-weight:500; font-size:0.95rem; }
.contact-steps p { font-size:0.85rem; color:var(--ink-soft); }
.contact-side-note { display:flex; gap:0.6rem; background:var(--paper-off); border-radius:var(--r-card); padding:1rem 1.2rem; font-size:0.85rem; color:var(--ink-soft); }
.contact-side-note i { font-size:1.2rem; color:var(--green); }
.contact-side-note a { color:var(--green); text-decoration:underline; }
.contact-form { background:#fff; border:1px solid var(--border); border-radius:var(--r-card); padding:2rem; box-shadow:0 8px 30px rgba(26,26,24,0.05); }
.contact-form fieldset { border:none; padding:0; margin:0 0 1.75rem; }
.contact-form legend { font-family:var(--serif); font-size:1.3rem; margin-bottom:1rem; padding:0; }
.f-row { margin-bottom:1.1rem; }
.f-row.two { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.f-field { display:flex; flex-direction:column; gap:0.4rem; }
.f-label { font-size:0.82rem; font-weight:500; color:var(--ink); }
.f-label em { color:#b8590a; font-style:normal; }
.f-sub { font-weight:400; color:var(--ink-muted); font-size:0.76rem; margin-left:0.3rem; }
.f-help { font-size:0.75rem; color:var(--ink-muted); display:flex; gap:0.3rem; align-items:center; }
.contact-form input[type=text], .contact-form input[type=email], .contact-form input[type=tel], .contact-form select, .contact-form textarea {
  font:inherit; font-size:0.92rem; width:100%; padding:0.7rem 0.85rem; border:1px solid var(--border); border-radius:10px; background:var(--paper); color:var(--ink); transition:border-color 0.2s, box-shadow 0.2s; }
.contact-form select { appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--ink-muted) 50%),linear-gradient(135deg,var(--ink-muted) 50%,transparent 50%); background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%; background-size:5px 5px; background-repeat:no-repeat; padding-right:2.2rem; }
.contact-form textarea { resize:vertical; min-height:130px; }
.contact-form input:focus, .contact-form select:focus, .contact-form textarea:focus { outline:none; border-color:var(--green); box-shadow:0 0 0 3px var(--green-light); }
.contact-form .invalid { border-color:#b8590a !important; }
.chips { display:flex; flex-wrap:wrap; gap:0.5rem; }
.chips.invalid-group .chip span { border-color:#b8590a; }
.chip { position:relative; cursor:pointer; }
.chip input { position:absolute; opacity:0; pointer-events:none; }
.chip span { display:inline-flex; flex-direction:column; align-items:flex-start; border:1px solid var(--border); border-radius:10px; padding:0.5rem 0.95rem; font-size:0.88rem; transition:all 0.15s; background:var(--paper); }
.chip small { font-size:0.68rem; color:var(--ink-muted); }
.chip:hover span { border-color:var(--green); }
.chip input:checked + span { background:var(--green-light); border-color:var(--green); color:var(--green-dark); }
.chip input:focus-visible + span { box-shadow:0 0 0 3px var(--green-light); }
.house-chips .chip span { min-width:92px; }
.f-error { color:#a95208; background:#fbeee3; border-radius:10px; padding:0.7rem 1rem; font-size:0.85rem; margin-bottom:1rem; }
.f-submit { font:inherit; width:100%; border:none; background:#b8590a; color:#fff; border-radius:99px; padding:0.95rem 1rem; font-size:1rem; font-weight:500; cursor:pointer; display:flex; justify-content:center; align-items:center; gap:0.5rem; transition:background 0.2s; }
.f-submit:hover { background:#a95208; }
.f-privacy { font-size:0.75rem; color:var(--ink-muted); text-align:center; margin-top:0.8rem; display:flex; gap:0.35rem; justify-content:center; align-items:center; }
@media (max-width:960px) { .contact-layout { grid-template-columns:1fr; gap:2rem; } .contact-intro { position:static; } }
@media (max-width:640px) { .contact-form { padding:1.4rem; } .f-row.two { grid-template-columns:1fr; } }
.f-help[hidden], .f-error[hidden] { display:none; }

/* ===== FAQページ ===== */
.faq-wrap { max-width:880px; }
.faq-nav { display:flex; flex-wrap:wrap; gap:0.5rem; margin-bottom:2.5rem; }
.faq-nav a { font-size:0.85rem; border:1px solid var(--border); border-radius:99px; padding:0.45rem 1rem; color:var(--ink-soft); display:inline-flex; align-items:center; gap:0.35rem; transition:all 0.2s; }
.faq-nav a:hover { border-color:var(--green); color:var(--green); }
.faq-group { margin-bottom:2.75rem; scroll-margin-top:80px; }
.faq-group h2 { font-family:var(--serif); font-weight:400; font-size:1.5rem; margin-bottom:0.9rem; display:flex; align-items:center; gap:0.5rem; }
.faq-group h2 i { font-size:1.3rem; color:var(--green); }
.faq-item { border-bottom:1px solid var(--border); }
.faq-item:first-of-type { border-top:1px solid var(--border); }
.faq-item summary { list-style:none; cursor:pointer; padding:1.1rem 2.5rem 1.1rem 0; position:relative; font-weight:500; font-size:0.98rem; line-height:1.5; }
.faq-item summary::-webkit-details-marker { display:none; }
.faq-item summary i { position:absolute; right:0.25rem; top:1.2rem; font-size:1.1rem; color:var(--green); transition:transform 0.25s ease; }
.faq-item[open] summary i { transform:rotate(45deg); }
.faq-item summary:hover { color:var(--green-dark); }
.faq-a { padding:0 2.5rem 1.25rem 0; color:var(--ink-soft); font-size:0.93rem; line-height:1.75; }
.faq-a a { color:var(--green); text-decoration:underline; white-space:nowrap; }

/* ===== Who lives here ===== */
.stay-section { padding:3.5rem 2rem 0.5rem; }
.stay-section .label { font-size:0.7rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:0.5rem; }
.stay-section h2 { font-family:var(--serif); font-weight:400; font-size:clamp(1.7rem,3vw,2.2rem); line-height:1.15; margin-bottom:0.6rem; }
.stay-lead { color:var(--ink-soft); max-width:58ch; }
.stay-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1.25rem; margin-top:1.75rem; }
.stay-card { position:relative; overflow:hidden; background:var(--paper-off); border-radius:var(--r-card); padding:1.5rem 1.35rem 1.4rem; }
.stay-card::before { content:''; position:absolute; width:120px; height:120px; border-radius:50%; background:var(--bub); opacity:0.55; top:-40px; right:-36px; }
.stay-ico { position:relative; width:44px; height:44px; border-radius:50%; background:#fff; display:flex; align-items:center; justify-content:center; margin-bottom:1rem; box-shadow:0 2px 8px rgba(26,26,24,0.06); }
.stay-ico i { font-size:1.3rem; color:var(--green); }
.stay-card h3 { position:relative; font-family:var(--serif); font-weight:400; font-size:1.2rem; line-height:1.25; margin-bottom:0.5rem; }
.stay-card p { position:relative; font-size:0.86rem; color:var(--ink-soft); line-height:1.65; }
.stay-foot { margin-top:1.25rem; font-size:0.88rem; color:var(--ink-soft); display:flex; align-items:center; gap:0.5rem; }
.stay-foot i { color:var(--green); font-size:1.1rem; }
@media (max-width:1080px) { .stay-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:640px) { .stay-section { padding:2.5rem 1.25rem 0; } .stay-grid { grid-template-columns:1fr; } }

/* ===== イベントページ ===== */
.ev-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); grid-auto-flow:dense; gap:1.25rem; }
.ev-card { background:#fff; border:1px solid var(--border); border-radius:var(--r-card); overflow:hidden; display:flex; flex-direction:column; }
.ev-img { position:relative; aspect-ratio:4/3; overflow:hidden; }
.ev-img img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform 0.5s ease; }
.ev-card:hover .ev-img img { transform:scale(1.04); }
.ev-body { padding:1.15rem 1.3rem 1.35rem; }
.ev-season { display:inline-block; font-size:0.7rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--green-dark); background:var(--green-light); border-radius:99px; padding:0.2rem 0.7rem; }
.ev-body h2 { font-family:var(--serif); font-weight:400; font-size:1.35rem; margin:0.6rem 0 0.4rem; }
.ev-body p { font-size:0.88rem; color:var(--ink-soft); line-height:1.65; }
.ev-card.feature { grid-column:span 2; grid-row:span 2; }
.ev-card.feature .ev-img { aspect-ratio:auto; flex:1; min-height:320px; }
.ev-card.feature h2 { font-size:1.8rem; }
.ev-card.tall .ev-img { aspect-ratio:4/5; }
.ev-card.ev-text { background:var(--paper-off); border:none; position:relative; justify-content:flex-end; min-height:220px; }
.ev-card.ev-text::before { content:''; position:absolute; width:180px; height:180px; border-radius:50%; background:var(--bub-mint); opacity:0.6; top:-60px; right:-50px; }
.ev-card.ev-text::after { content:''; position:absolute; width:70px; height:70px; border-radius:50%; background:var(--bub-yellow); opacity:0.7; top:70px; right:110px; }
.ev-card.ev-text .ev-body { position:relative; z-index:1; }
.ev-sub { color:var(--ink-soft); max-width:62ch; margin:-0.4rem 0 1.25rem; }
.ev-gallery { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:0.75rem; }
.ev-gallery figure { margin:0; aspect-ratio:1; border-radius:var(--r-img); overflow:hidden; }
.ev-gallery img { width:100%; height:100%; object-fit:cover; }
.cta-row { display:flex; gap:0.75rem; justify-content:center; flex-wrap:wrap; }
.cta-row .facts-cta { width:auto; display:inline-flex; padding:0.85rem 1.6rem; }
.facts-cta.ghost { background:#fff; color:var(--ink); border:1px solid var(--border); }
.facts-cta.ghost:hover { background:var(--paper-off); }
@media (max-width:960px) { .ev-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .ev-gallery { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:640px) { .ev-grid { grid-template-columns:1fr; } .ev-card.feature { grid-column:auto; grid-row:auto; } .ev-card.feature .ev-img { aspect-ratio:4/3; min-height:0; } .ev-card.tall .ev-img { aspect-ratio:4/3; } }
.ev-card.ev-text { grid-column:1 / -1; min-height:0; padding:0.6rem 0; } .ev-card.ev-text .ev-body { max-width:620px; }
.ev-card.wide { grid-column:span 2; }
.ev-card.wide .ev-img { aspect-ratio:16/8; }
@media (max-width:640px) { .ev-card.wide { grid-column:auto; } .ev-card.wide .ev-img { aspect-ratio:4/3; } }

/* ===== Aboutページ ===== */
.about-page .label { font-size:0.7rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:0.6rem; }
.about-hero { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:3rem; align-items:center; max-width:1160px; margin:0 auto; padding:2rem 2rem 1rem; }
.about-hero h1 { font-family:var(--serif); font-weight:400; font-size:clamp(2.2rem,4.5vw,3.4rem); line-height:1.08; margin-bottom:1rem; }
.about-hero h1 .jp { display:block; font-family:var(--sans); font-size:0.42em; letter-spacing:0.08em; color:var(--green); margin-bottom:0.6rem; }
.about-hero .lead { color:var(--ink-soft); font-size:1.02rem; max-width:48ch; }
.about-hero-img { margin:0; border-radius:var(--r-card); overflow:hidden; aspect-ratio:1; }
.about-hero-img img { width:100%; height:100%; object-fit:cover; }
.about-stats { max-width:1160px; margin:2.5rem auto 0; padding:0 2rem; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; }
.about-stats div { border-top:2px solid var(--green); padding-top:0.9rem; }
.about-stats strong { display:block; font-family:var(--serif); font-weight:400; font-size:2.4rem; line-height:1; color:var(--green-dark); margin-bottom:0.35rem; }
.about-stats span { font-size:0.82rem; color:var(--ink-soft); }
.about-body { padding-top:1rem; }
.about-split { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,0.9fr); gap:3rem; align-items:center; margin-top:4.5rem; }
.about-split.reverse { grid-template-columns:minmax(0,0.9fr) minmax(0,1.1fr); }
.about-split h2, .about-values h2 { font-family:var(--serif); font-weight:400; font-size:clamp(1.7rem,3vw,2.2rem); line-height:1.15; margin-bottom:1rem; }
.about-split p { color:var(--ink-soft); margin-bottom:1rem; }
.about-split p a { color:var(--green); text-decoration:underline; }
.about-quote { margin:0; position:relative; background:var(--green-dark); color:#fff; border-radius:var(--r-card); padding:2.5rem 2.25rem; overflow:hidden; }
.about-quote::before { content:''; position:absolute; width:160px; height:160px; border-radius:50%; background:var(--bub-mint); opacity:0.18; top:-50px; right:-40px; }
.about-quote::after { content:'“'; position:absolute; top:0.2rem; left:1.3rem; font-family:var(--serif); font-size:5rem; color:rgba(255,255,255,0.25); line-height:1; }
.about-quote p { position:relative; font-family:var(--serif); font-size:1.45rem; line-height:1.4; }
.about-values { margin-top:4.5rem; }
.values-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.25rem; margin-top:1.5rem; }
.value-card { position:relative; overflow:hidden; background:var(--paper-off); border-radius:var(--r-card); padding:1.6rem 1.5rem; }
.value-card::before { content:''; position:absolute; width:130px; height:130px; border-radius:50%; background:var(--bub); opacity:0.55; top:-45px; right:-40px; }
.value-card h3 { position:relative; font-family:var(--serif); font-weight:400; font-size:1.3rem; margin-bottom:0.5rem; }
.value-card p { position:relative; font-size:0.9rem; color:var(--ink-soft); line-height:1.65; }
.about-map, .about-team-img { margin:0; }
.about-team-img { border-radius:var(--r-card); overflow:hidden; aspect-ratio:4/3; }
.about-team-img img { width:100%; height:100%; object-fit:cover; }
.about-map img { border-radius:var(--r-img); }
.text-link { color:var(--green); font-weight:500; display:inline-flex; align-items:center; gap:0.35rem; }
@media (max-width:960px) {
  .about-hero, .about-split, .about-split.reverse { grid-template-columns:1fr; gap:2rem; }
  .about-split.reverse figure { order:2; }
  .about-stats { grid-template-columns:repeat(2,minmax(0,1fr)); row-gap:1.5rem; }
  .values-grid { grid-template-columns:1fr; }
}
@media (max-width:640px) { .about-hero { padding:1.25rem 1.25rem 0; } .about-stats { padding:0 1.25rem; } .about-hero-img { aspect-ratio:4/3; } }
.about-split .about-quote p { color:#fff; margin:0; }
.team-visual { position:relative; background:var(--paper-off); border-radius:var(--r-card); padding:2.5rem 2rem 1.75rem; display:flex; flex-direction:column; align-items:center; gap:1.5rem; overflow:hidden; }
.team-visual::before { content:''; position:absolute; width:200px; height:200px; border-radius:50%; background:var(--bub-yellow); opacity:0.35; bottom:-80px; left:-60px; }
.team-house { position:relative; width:min(260px,70%); height:auto; }
.team-points { position:relative; display:flex; flex-wrap:wrap; gap:0.5rem; justify-content:center; }
.team-points span { background:#fff; border-radius:99px; padding:0.4rem 0.9rem; font-size:0.8rem; color:var(--ink-soft); display:inline-flex; align-items:center; gap:0.35rem; box-shadow:0 2px 8px rgba(26,26,24,0.05); }
.team-points i { color:var(--green); }
.hiring-status { display:flex; gap:0.8rem; align-items:flex-start; background:#fbeee3; border-radius:var(--r-card); padding:1rem 1.2rem; margin-bottom:2rem; }
.hiring-status .pulse { margin-top:0.45rem; background:#b8590a; }
.hiring-status .pulse::after { background:#b8590a; }
.hiring-status strong { font-weight:500; font-size:0.95rem; color:#a95208; }
.hiring-status p { font-size:0.85rem; color:var(--ink-soft); margin-top:0.2rem; }
.dob { display:grid; grid-template-columns:1fr 1fr 1fr; gap:0.5rem; }
.contact-form input[type=month], .contact-form .dob input { font:inherit; font-size:0.92rem; width:100%; padding:0.7rem 0.85rem; border:1px solid var(--border); border-radius:10px; background:var(--paper); color:var(--ink); }
.f-file { font:inherit; font-size:0.85rem; padding:0.6rem; border:1px dashed var(--border); border-radius:10px; background:var(--paper-off); }
.f-file.invalid { border-color:#b8590a; }
.footer-logo-link, .sticky-bar-logo { display:inline-block; line-height:0; }
.about-album { margin:2.5rem 0 0; }
.about-album img { border-radius:var(--r-card); }
.about-album figcaption { font-size:0.8rem; color:var(--ink-muted); margin-top:0.6rem; text-align:center; }
.ev-gallery { grid-template-columns:repeat(4,minmax(0,1fr)); }
@media (max-width:960px) { .ev-gallery { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* ===== スタッフ募集ページ ===== */
.job-hero { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,0.8fr); gap:2.5rem; align-items:start; }
.job-hero .label { font-size:0.7rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:0.8rem; display:flex; align-items:center; gap:0.6rem; }
.job-hero h1 { font-family:var(--serif); font-weight:400; font-size:clamp(2.2rem,4.5vw,3.3rem); line-height:1.05; margin-bottom:1rem; }
.job-hero .lead { color:var(--ink-soft); margin-bottom:1.5rem; max-width:52ch; }
.job-facts { background:#fff; border:1px solid var(--border); border-radius:var(--r-card); padding:1.75rem; box-shadow:0 8px 30px rgba(26,26,24,0.06); }
.job-facts .facts-price { margin-bottom:1rem; }
.job-facts .facts-list { margin-bottom:0; }
.how-steps { list-style:none; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.25rem; }
.how-steps li { background:var(--paper-off); border-radius:var(--r-card); padding:1.5rem 1.4rem; position:relative; overflow:hidden; }
.how-steps li > span { display:flex; width:40px; height:40px; border-radius:50%; background:var(--green); color:#fff; align-items:center; justify-content:center; font-family:var(--serif); font-size:1.15rem; margin-bottom:0.9rem; }
.how-steps h3 { font-family:var(--serif); font-weight:400; font-size:1.25rem; margin-bottom:0.4rem; }
.how-steps p { font-size:0.88rem; color:var(--ink-soft); line-height:1.65; }
.job-two { display:grid; grid-template-columns:1fr 1fr; gap:2.5rem; }
.job-two h2 { font-family:var(--serif); font-weight:400; font-size:1.6rem; margin-bottom:1rem; }
.check-list { list-style:none; display:grid; gap:0.8rem; }
.check-list li { display:grid; grid-template-columns:24px 1fr; gap:0.6rem; font-size:0.92rem; color:var(--ink-soft); line-height:1.6; }
.check-list i { color:var(--green); font-size:1.15rem; margin-top:0.1rem; }
.job-photo { margin:3rem 0 0; border-radius:var(--r-card); overflow:hidden; aspect-ratio:21/8; }
.job-photo img { width:100%; height:100%; object-fit:cover; object-position:center 20%; }
.faq-mini { max-width:760px; }
#apply { scroll-margin-top:80px; }
#apply .contact-form { max-width:760px; }
.dob { display:grid; grid-template-columns:1fr 1fr 1fr; gap:0.5rem; }
.file-drop { position:relative; display:flex; align-items:center; border:1px dashed var(--border); border-radius:10px; background:var(--paper); padding:0.9rem 1rem; cursor:pointer; transition:border-color 0.2s; }
.file-drop:hover { border-color:var(--green); }
.file-drop input { position:absolute; inset:0; opacity:0; cursor:pointer; }
.file-name { font-size:0.88rem; color:var(--ink-soft); display:flex; align-items:center; gap:0.4rem; }
.file-drop.invalid { border-color:#b8590a; }
@media (max-width:960px) { .job-hero, .job-two { grid-template-columns:1fr; } .how-steps { grid-template-columns:1fr; } .job-photo { aspect-ratio:16/9; } }
.rent-calc { margin-top:1.25rem; border:1px solid var(--border); border-radius:var(--r-card); padding:1.5rem 1.6rem; background:#fff; }
.rent-calc-head { display:grid; grid-template-columns:40px 1fr; gap:0.9rem; align-items:start; margin-bottom:1.1rem; }
.rent-calc-head > i { width:40px; height:40px; border-radius:50%; background:var(--green-light); color:var(--green-dark); display:flex; align-items:center; justify-content:center; font-size:1.2rem; }
.rent-calc-head h3 { font-family:var(--serif); font-weight:400; font-size:1.25rem; margin-bottom:0.25rem; }
.rent-calc-head p { font-size:0.9rem; color:var(--ink-soft); }
.rent-calc-rows { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0.75rem; }
.rent-calc-rows div { background:var(--paper-off); border-radius:12px; padding:0.9rem 1rem; display:flex; flex-direction:column; gap:0.2rem; }
.rent-calc-rows span { font-size:0.8rem; color:var(--ink-muted); }
.rent-calc-rows strong { font-weight:500; font-size:1.02rem; color:var(--green-dark); }
.rent-calc-note { font-size:0.75rem; color:var(--ink-muted); margin-top:0.8rem; }
@media (max-width:640px) { .rent-calc-rows { grid-template-columns:1fr; } }
.apply-flow { list-style:none; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; counter-reset:af; }
.apply-flow li { position:relative; background:var(--paper-off); border-radius:var(--r-card); padding:1.25rem 1.3rem; display:flex; flex-direction:column; gap:0.25rem; }
.apply-flow li i { font-size:1.5rem; color:var(--green); margin-bottom:0.4rem; }
.apply-flow strong { font-weight:500; }
.apply-flow span { font-size:0.85rem; color:var(--ink-soft); }
.apply-flow li:not(:last-child)::after { content:''; position:absolute; right:-0.75rem; top:50%; width:0.5rem; height:0.5rem; border-top:2px solid var(--green); border-right:2px solid var(--green); transform:translateY(-50%) rotate(45deg); }
@media (max-width:640px) { .apply-flow { grid-template-columns:1fr; } .apply-flow li:not(:last-child)::after { display:none; } }
.thanks-wrap { max-width:760px; }
.thanks-card { text-align:center; background:#fff; border:1px solid var(--border); border-radius:var(--r-card); padding:3rem 2rem; margin:2rem 0; box-shadow:0 8px 30px rgba(26,26,24,0.05); }
.thanks-ico { width:64px; height:64px; border-radius:50%; background:var(--green-light); color:var(--green); display:flex; align-items:center; justify-content:center; font-size:2rem; margin:0 auto 1.25rem; }
.thanks-card h1 { font-family:var(--serif); font-weight:400; font-size:clamp(1.8rem,4vw,2.4rem); margin-bottom:0.8rem; }
.thanks-card .lead { color:var(--ink-soft); max-width:52ch; margin:0 auto 0.8rem; }
.thanks-ja { color:var(--ink-muted); font-size:0.88rem; max-width:52ch; margin:0 auto 1.75rem; }
.rent-calc-rows .calc-side { background:var(--green-light); } .rent-calc-rows .calc-side small { font-size:0.78rem; color:var(--ink-soft); line-height:1.5; }
.job-mosaic { display:grid; grid-template-columns:2fr 1fr 1fr; grid-template-rows:repeat(2,minmax(0,1fr)); gap:0.75rem; margin-top:3rem; aspect-ratio:21/9; }
.job-mosaic figure { margin:0; border-radius:var(--r-img); overflow:hidden; position:relative; }
.job-mosaic img { width:100%; height:100%; object-fit:cover; transition:transform 0.5s ease; }
.job-mosaic figure:hover img { transform:scale(1.04); }
.job-mosaic .jm-main { grid-row:1 / 3; }
.job-mosaic figure:nth-child(2) { grid-row:1 / 3; }
.job-mosaic figcaption { position:absolute; left:0.9rem; bottom:0.8rem; background:rgba(255,255,255,0.92); color:var(--ink); font-size:0.75rem; padding:0.25rem 0.7rem; border-radius:99px; }
@media (max-width:960px) { .job-mosaic { grid-template-columns:1fr 1fr; grid-template-rows:auto; aspect-ratio:auto; } .job-mosaic .jm-main { grid-column:1 / 3; grid-row:auto; aspect-ratio:4/3; } .job-mosaic figure:nth-child(2) { grid-row:auto; } .job-mosaic figure:not(.jm-main) { aspect-ratio:3/4; } }
.job-tiles { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:0.5rem; max-width:500px; margin-top:2.5rem; }
.job-tiles img { width:100%; height:auto; aspect-ratio:1; object-fit:cover; border-radius:10px; }
@media (max-width:640px) { .job-tiles { gap:0.35rem; margin-top:2rem; } .job-tiles img { border-radius:8px; } }

/* ===== 日本語ページのフォント ===== */
html:lang(ja) body { font-family:'DM Sans','Hiragino Sans','Hiragino Kaku Gothic ProN','Noto Sans JP','Yu Gothic','YuGothic',Meiryo,sans-serif; line-height:1.85; }
html:lang(ja) h1, html:lang(ja) h2, html:lang(ja) h3, html:lang(ja) .facts-price, html:lang(ja) legend, html:lang(ja) blockquote p { font-family:'DM Serif Display','Hiragino Mincho ProN','Yu Mincho','YuMincho','Noto Serif JP',serif; }
html:lang(ja) .hero-overlay h1 { font-family:'DM Serif Display',serif; }
html:lang(ja) p { word-break:normal; overflow-wrap:anywhere; line-break:strict; }
.apply-cta { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-top:2rem; background:var(--green-light); border-radius:var(--r-card); padding:1.1rem 1.4rem; }
.apply-cta p { font-size:0.95rem; color:var(--ink-soft); }
.apply-cta strong { color:var(--green-dark); font-weight:500; margin-right:0.3rem; }
.apply-cta .facts-cta { width:auto; display:inline-flex; padding:0.7rem 1.5rem; }
.area-map img, .area-map-figure img, .about-map img { background:#fff; }
.apply-cta { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-top:2rem; background:var(--green-light); border-radius:var(--r-card); padding:1.1rem 1.4rem; }
.apply-cta p { font-size:0.95rem; color:var(--ink-soft); }
.apply-cta strong { color:var(--green-dark); font-weight:500; margin-right:0.3rem; }
.apply-cta .facts-cta { width:auto; display:inline-flex; padding:0.7rem 1.5rem; }
.area-map img, .area-map-figure img, .about-map img { background:#fff; }

/* ===== ヒーロー文字の読みやすさ ===== */
.hero-overlay { background:linear-gradient(to top,rgba(0,0,0,0.72) 0%,rgba(0,0,0,0.35) 45%,rgba(0,0,0,0.08) 75%,transparent 100%), radial-gradient(ellipse 70% 60% at 20% 75%,rgba(0,0,0,0.35) 0%,transparent 70%); }
.hero-overlay h1, .hero-overlay p { text-shadow:0 1px 12px rgba(0,0,0,0.45); }

/* ===== トップへ戻るボタン ===== */
.to-top { position:fixed; right:1.25rem; bottom:1.25rem; width:44px; height:44px; border-radius:50%; border:1px solid var(--border); background:rgba(255,255,255,0.95); color:var(--green-dark); display:flex; align-items:center; justify-content:center; font-size:1.2rem; cursor:pointer; box-shadow:0 4px 16px rgba(26,26,24,0.12); opacity:0; pointer-events:none; transform:translateY(8px); transition:opacity 0.25s, transform 0.25s, bottom 0.25s; z-index:400; }
.to-top.show { opacity:1; pointer-events:auto; transform:translateY(0); }
.to-top:hover { background:var(--green); color:#fff; border-color:var(--green); }
@media (max-width:960px) { .to-top { bottom:88px; right:1rem; width:40px; height:40px; } }

/* ===== 言語切替：クリックでも開閉・少し残る ===== */
.lang-wrap.open .lang-dropdown { opacity:1; pointer-events:auto; transform:translateY(0); }
.lang-dropdown::before { content:''; position:absolute; left:0; right:0; top:-10px; height:10px; }
.houses-sub { color:var(--ink-soft); font-size:0.92rem; margin-top:0.35rem; }
.hero-eyebrow { display:block; font-family:var(--sans); font-size:clamp(0.7rem,1.4vw,0.8rem); font-weight:500; letter-spacing:0.14em; text-transform:uppercase; color:rgba(255,255,255,0.85); margin-bottom:0.7rem; }
html:lang(ja) .hero-eyebrow { letter-spacing:0.1em; font-family:'Hiragino Sans','Noto Sans JP','Yu Gothic',sans-serif; }

/* ===== 仕上げ：読みやすさ・操作性 ===== */
h1, h2, h3 { text-wrap:balance; }
p, li, dd { text-wrap:pretty; }
::selection { background:var(--green-light); color:var(--green-dark); }
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline:2px solid var(--green); outline-offset:3px; border-radius:6px; }
html { scroll-behavior:smooth; }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }

/* PRIVACY POLICY */
.policy-wrap { max-width:820px; }
.policy-date { font-size:0.82rem; color:var(--ink-muted); margin-top:0.4rem; }
.policy-body section { padding:1.6rem 0; border-top:1px solid var(--border); }
.policy-body h2 { font-family:var(--serif); font-weight:400; font-size:1.45rem; line-height:1.3; margin-bottom:0.7rem; }
.policy-body h3 { font-size:0.98rem; font-weight:600; margin:1rem 0 0.35rem; }
.policy-body p, .policy-body li { color:var(--ink-soft); max-width:68ch; }
.policy-body p + p { margin-top:0.6rem; }
.policy-body ul { padding-left:1.25rem; margin-top:0.4rem; }
.policy-body li { margin-bottom:0.35rem; }
.policy-body a { color:var(--green); text-decoration:underline; text-underline-offset:3px; }
.policy-body a:hover { color:var(--green-dark); }
.policy-contact { display:grid; grid-template-columns:max-content 1fr; gap:0.7rem 1.5rem; margin-top:0.9rem; padding:1.25rem 1.4rem; background:var(--paper-off); border-radius:var(--r-img); }
.policy-contact dt { font-size:0.85rem; font-weight:600; color:var(--ink); }
.policy-contact dd { color:var(--ink-soft); }
.policy-contact dd span[lang] { display:block; font-size:0.88rem; color:var(--ink-muted); }
@media (max-width:560px) { .policy-contact { grid-template-columns:1fr; gap:0.2rem; } .policy-contact dd { margin-bottom:0.7rem; } }
.f-privacy a { text-decoration:underline; text-underline-offset:3px; }

/* ===== スマホTOP：ヒーローの文字を上下バランスよく（内容に合わせて高さが伸びる） ===== */
@media (max-width:640px) {
  .hero-grid { grid-template-rows:auto 180px minmax(140px,auto) minmax(140px,auto); }
  .hero-cell-main .slideshow { position:absolute; inset:0; }
  .hero-cell-main .hero-overlay { position:relative; inset:auto; min-height:min(120vw,480px); justify-content:center; padding:2.75rem 1.5rem 3rem; background:linear-gradient(to top,rgba(0,0,0,0.6) 0%,rgba(0,0,0,0.38) 55%,rgba(0,0,0,0.28) 100%); }
  .hero-overlay h1 { padding-top:0; margin-bottom:1.1rem; font-size:clamp(1.8rem,8vw,2.3rem); line-height:1.12; }
  .hero-overlay h1 .hero-eyebrow { margin-bottom:0.95rem; font-size:0.72rem; line-height:1.5; }
  .hero-overlay p { font-size:0.95rem; line-height:1.7; margin-bottom:1.75rem; max-width:32ch; }
}

/* ===== 中文（繁體字）ページのフォント：見出しも黒体系（明朝体はWindowsで崩れやすいため） ===== */
html:lang(zh) body { font-family:'DM Sans','PingFang TC','Noto Sans TC','Microsoft JhengHei','Heiti TC',sans-serif; line-height:1.85; }
html:lang(zh) h1, html:lang(zh) h2, html:lang(zh) h3, html:lang(zh) .facts-price, html:lang(zh) legend, html:lang(zh) blockquote p { font-family:'DM Serif Display','PingFang TC','Noto Sans TC','Microsoft JhengHei',sans-serif; }
html:lang(zh) .hero-overlay h1 { font-family:'DM Serif Display',serif; }
html:lang(zh) p { word-break:normal; overflow-wrap:anywhere; line-break:strict; }
html:lang(zh) .hero-eyebrow { letter-spacing:0.1em; font-family:'PingFang TC','Noto Sans TC','Microsoft JhengHei',sans-serif; }
html:lang(zh) .philosophy h2 { font-family:'DM Serif Display','Hiragino Mincho ProN','Yu Mincho','Noto Serif JP',serif; }

/* ===== 中文「關於我們」：おかえり／歡迎回來、ただいま／我回來了 を1組ずつ表示 ===== */
.about-hero h1 .jp-pair { display:block; }
.about-hero h1 .jp-pair + .jp-pair { margin-top:0.45em; }
.about-hero h1 .jp-pair .jp { margin-bottom:0.2rem; font-family:'Hiragino Sans','Noto Sans JP','Yu Gothic',sans-serif; }

/* ===== 中文TOPのみ（[data-zh-dual] .top-cta-wrap など、中国語TOPだけにある属性・クラスに限定） ===== */
.house-rent { font-size:0.85rem; font-weight:600; color:var(--green); margin:-0.4rem 0 0.8rem; }
.stay-grid.stay-grid-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.houses-section-area { padding-top:0; }
[data-zh-dual] .dual-cell { height:auto; min-height:320px; }
[data-zh-dual] .dual-cell-overlay { position:relative; inset:auto; min-height:320px; z-index:2; }
[data-zh-dual] .dual-cell-staff .dual-cell-overlay h3 { font-size:clamp(1.3rem,2vw,1.65rem); line-height:1.35; }
[data-zh-dual] .dual-cell-staff .dual-cell-overlay p { max-width:40ch; margin-bottom:0.8rem; }
[data-zh-dual] .dual-cell-staff .dual-cell-overlay p.dual-note { font-size:0.78rem; color:rgba(255,255,255,0.7); margin-bottom:1.2rem; }
[data-zh-dual] .dual-cell:not(.dual-cell-staff) .dual-cell-overlay p { max-width:36ch; line-height:1.65; }
.top-cta-wrap { padding-top:0; }
[data-zh-philo] .text-link { color:#f2c08f; }
[data-zh-philo] .text-link:hover { color:#fff; }
@media (max-width:960px) {
  .stay-grid.stay-grid-3 { grid-template-columns:1fr; }
}
@media (max-width:640px) {
  [data-zh-dual] .dual-cell, [data-zh-dual] .dual-cell-overlay { min-height:260px; }
}

/* ===== 한국어ページのフォント：単語の途中で改行しない（keep-all） ===== */
html:lang(ko) body { font-family:'DM Sans','Apple SD Gothic Neo','Noto Sans KR','Malgun Gothic',sans-serif; line-height:1.8; }
html:lang(ko) h1, html:lang(ko) h2, html:lang(ko) h3, html:lang(ko) .facts-price, html:lang(ko) legend, html:lang(ko) blockquote p { font-family:'DM Serif Display','Apple SD Gothic Neo','Noto Sans KR','Malgun Gothic',sans-serif; }
html:lang(ko) p, html:lang(ko) li, html:lang(ko) h1, html:lang(ko) h2, html:lang(ko) h3, html:lang(ko) dd, html:lang(ko) summary { word-break:keep-all; overflow-wrap:anywhere; }
html:lang(ko) .hero-eyebrow { letter-spacing:0.08em; font-family:'Apple SD Gothic Neo','Noto Sans KR','Malgun Gothic',sans-serif; }
html:lang(ko) .philosophy h2 { font-family:'Apple SD Gothic Neo','Noto Sans KR','Malgun Gothic',sans-serif; }

/* ===== TOPヒーローの要点（4言語共通）：半透明の黒パネルに4項目。ボタンと見分けがつくよう枠なし ===== */
.hero-overlay .hero-facts { list-style:none; display:flex; flex-wrap:wrap; gap:0.15rem 1rem; margin:-0.35rem 0 1.15rem; padding:0.5rem 0.85rem; max-width:30rem; width:fit-content; background:rgba(0,0,0,0.42); border-radius:8px; -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); }
.hero-overlay .hero-facts li { position:relative; padding-left:0.75rem; font-size:0.8rem; line-height:1.6; color:rgba(255,255,255,0.94); white-space:nowrap; text-shadow:none; }
.hero-overlay .hero-facts li::before { content:''; position:absolute; left:0; top:50%; width:4px; height:4px; margin-top:-2px; border-radius:50%; background:#f2c08f; }
@media (max-width:640px){ .hero-overlay .hero-facts li { font-size:0.76rem; } }
