  @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;500;600;700;900&family=Zen+Maru+Gothic:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;600;700&display=swap');

  :root {
    --orange: #E8743A;
    --orange-light: #FF9B5E;
    --orange-pale: #FFF4EC;
    --navy: #1a2744;
    --white: #FFFCF9;
    --cream: #FFF5EC;
    --page-bg: #FFF5EC; /* 本体背景（ヒーローカードと統一して段差を消す） */
    --text: #2C2C2C;
    --text-light: #888;
    --green: #4CAF6A;
    --blue: #4A9BD9;
    --pink: #E85D8A;
    --yellow: #F5C842;
    --shadow: 0 4px 20px rgba(0,0,0,0.08);
    --shadow-hover: 0 12px 40px rgba(0,0,0,0.12);
    --radius: 18px;
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }
  body {
    font-family: 'Noto Sans JP', sans-serif;
    background: var(--page-bg);
    background-image:
      radial-gradient(circle at 0% 0%, rgba(232,116,58,0.03) 0%, transparent 50%),
      radial-gradient(circle at 100% 100%, rgba(232,116,58,0.025) 0%, transparent 50%);
    background-attachment: fixed;
    color: var(--text); overflow-x: hidden;
  }
  .serif { font-family: 'Noto Serif JP', serif; }

  /* ===== ANIMATIONS ===== */
  @keyframes fadeInUp { from { opacity:0; transform:translateY(50px); } to { opacity:1; transform:translateY(0); } }
  @keyframes fadeInLeft { from { opacity:0; transform:translateX(-50px); } to { opacity:1; transform:translateX(0); } }
  @keyframes fadeInRight { from { opacity:0; transform:translateX(50px); } to { opacity:1; transform:translateX(0); } }
  @keyframes fadeInScale { from { opacity:0; transform:scale(0.9); } to { opacity:1; transform:scale(1); } }
  @keyframes heroTextReveal { from { opacity:0; transform:translateY(30px); filter:blur(8px); } to { opacity:1; transform:translateY(0); filter:blur(0); } }
  @keyframes float { 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-12px); } }
  @keyframes pulse { 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.05); } }
  @keyframes gradientShift { 0%{ background-position:0% 50%; } 50%{ background-position:100% 50%; } 100%{ background-position:0% 50%; } }
  @keyframes countUp { from { opacity:0; transform:translateY(20px); } to { opacity:1; transform:translateY(0); } }
  @keyframes borderGlow { 0%,100%{ border-color:rgba(210,105,30,0.3); } 50%{ border-color:rgba(210,105,30,0.8); } }
  @keyframes slideInStagger { from { opacity:0; transform:translateX(-30px) scale(0.95); } to { opacity:1; transform:translateX(0) scale(1); } }
  @keyframes shimmer { 0%{ background-position:-200% center; } 100%{ background-position:200% center; } }
  @keyframes mapPulse { 0%,100%{ r:4; opacity:1; } 50%{ r:7; opacity:0.6; } }

  .anim { opacity:1; transform:none; transition: opacity 1s cubic-bezier(0.22,1,0.36,1), transform 1s cubic-bezier(0.22,1,0.36,1), filter 1s ease; }
  .js-ready .anim { opacity:0; transform:translateY(50px); filter:blur(2px); }
  .js-ready .anim-left { opacity:0; transform:translateX(-50px); filter:blur(2px); }
  .js-ready .anim-right { opacity:0; transform:translateX(50px); filter:blur(2px); }
  .js-ready .anim-scale { opacity:0; transform:scale(0.88); filter:blur(2px); }
  .anim.visible, .anim-left.visible, .anim-right.visible, .anim-scale.visible { opacity:1; transform:none; filter:blur(0); }
  .s1{transition-delay:.1s;} .s2{transition-delay:.2s;} .s3{transition-delay:.3s;}
  .s4{transition-delay:.4s;} .s5{transition-delay:.5s;} .s6{transition-delay:.6s;}

  /* ===== HEADER ===== */
  .header {
    position:fixed; top:0; left:0; right:0; z-index:1000;
    background:rgba(255,255,255,0.95); backdrop-filter:blur(20px);
    border-bottom:1px solid rgba(0,0,0,0.06); transition:all 0.4s;
  }
  .header.scrolled { box-shadow:0 2px 30px rgba(0,0,0,0.1); }
  .h-inner { max-width:1200px; margin:0 auto; padding:0 32px; display:flex; align-items:center; justify-content:space-between; height:64px; }
  .logo { display:flex; align-items:center; text-decoration:none; }
  /* すべての custom-logo 画像に安全な上限を設定（.footerなど予期しない場所でも暴走しない） */
  .custom-logo { max-width:100% !important; height:auto !important; }
  .logo img, .header .custom-logo, .header img.custom-logo { height:40px !important; width:auto !important; max-height:40px !important; max-width:180px !important; object-fit:contain; transition:transform 0.4s cubic-bezier(0.34,1.56,0.64,1); }
  .header .custom-logo-link { display:inline-flex !important; align-items:center !important; line-height:0 !important; text-decoration:none; }
  .logo:hover img, .header .custom-logo-link:hover .custom-logo { transform:scale(1.08) rotate(-2deg); }

  /* ページ全体の横スクロール禁止（安全保険） */
  html, body { overflow-x:hidden; max-width:100%; }
  .nav { display:flex; align-items:center; gap:24px; }
  .nav a { text-decoration:none; color:var(--text); font-size:13px; font-weight:500; padding:4px 0; position:relative; transition:color 0.3s; }
  .nav a::after { content:''; position:absolute; bottom:-2px; left:0; width:0; height:2px; background:var(--orange); transition:width 0.4s cubic-bezier(0.22,1,0.36,1); }
  .nav a:hover { color:var(--orange); }
  .nav a:hover::after { width:100%; }
  .nav-search { display:flex; align-items:center; background:#f5f5f5; border-radius:20px; padding:7px 14px; gap:6px; transition:all 0.4s; border:2px solid transparent; }
  .nav-search:focus-within { background:white; border-color:var(--orange); box-shadow:0 0 20px rgba(210,105,30,0.15); }
  .nav-search input { border:none; background:none; font-size:13px; width:140px; outline:none; font-family:inherit; }

  /* ===== HAMBURGER MENU ===== */
  .hamburger { display:none; background:none; border:none; cursor:pointer; padding:8px; z-index:1001; }
  .hamburger span { display:block; width:22px; height:2px; background:var(--text); margin:5px 0; transition:all 0.3s; border-radius:2px; }
  .hamburger.open span:nth-child(1) { transform:rotate(45deg) translate(5px,5px); }
  .hamburger.open span:nth-child(2) { opacity:0; }
  .hamburger.open span:nth-child(3) { transform:rotate(-45deg) translate(5px,-5px); }
  .mobile-menu {
    display:none; position:fixed; top:64px; left:0; right:0; bottom:0;
    background:rgba(255,255,255,0.98); backdrop-filter:blur(20px);
    z-index:999; flex-direction:column; align-items:center; justify-content:center; gap:0;
    opacity:0; transition:opacity 0.3s;
  }
  .mobile-menu.open { display:flex; opacity:1; }
  .mobile-menu a {
    text-decoration:none; color:var(--text); font-size:18px; font-weight:600;
    font-family:'Zen Maru Gothic',sans-serif; padding:20px 40px; width:100%; text-align:center;
    border-bottom:1px solid rgba(0,0,0,0.06); transition:all 0.3s;
  }
  .mobile-menu a:hover, .mobile-menu a:active { color:var(--orange); background:var(--orange-pale); }
  .mobile-menu .nav-search-mobile {
    display:flex; align-items:center; background:#f5f5f5; border-radius:30px;
    padding:12px 20px; gap:8px; margin:24px 32px; width:calc(100% - 64px);
    border:2px solid transparent; transition:all 0.3s;
  }
  .mobile-menu .nav-search-mobile:focus-within { border-color:var(--orange); background:white; }
  .mobile-menu .nav-search-mobile input { border:none; background:none; font-size:15px; width:100%; outline:none; font-family:inherit; }

  /* ===== HERO - SPLIT LAYOUT ===== */
  .hero {
    margin:80px auto 40px; width:80%; max-width:1400px;
    min-height:82vh; position:relative; overflow:hidden;
    display:grid; grid-template-columns:1fr 1fr; background:var(--cream);
  }
  .hero-visual {
    position:relative; overflow:hidden;
    border-radius:20px;
    min-height:82vh; /* hero grid cellを満たす */
  }
  .hero-slide {
    position:absolute !important; inset:0;
    opacity:0; transition: opacity 1.2s ease-in-out;
  }
  .hero-slide.active { opacity:1; }
  .hero-slide img {
    width:100%; height:100%; object-fit:cover; display:block;
  }
  .hero-visual-overlay {
    position:absolute; inset:0;
    background:linear-gradient(135deg, rgba(232,116,58,0.15) 0%, transparent 60%);
    pointer-events:none;
  }
  .hero-visual-tag {
    position:absolute; bottom:32px; left:32px;
    background:white; padding:10px 20px; border-radius:14px;
    font-size:13px; font-weight:600; color:var(--text);
    box-shadow:0 8px 30px rgba(0,0,0,0.15);
    transition: opacity 0.6s ease;
  }
  .hero-visual-tag span { color:var(--orange); font-weight:700; }
  .hero-slide-dots {
    position:absolute; bottom:32px; right:32px; display:flex; gap:8px; z-index:3;
  }
  .hero-slide-dot {
    width:10px; height:10px; border-radius:50%; background:rgba(255,255,255,0.5);
    cursor:pointer; transition:all 0.3s; border:none; padding:0;
  }
  .hero-slide-dot.active { background:white; transform:scale(1.3); }
  .hero-slide-progress {
    position:absolute; bottom:0; left:0; height:3px; background:var(--orange);
    z-index:3; transition: width linear;
  }
  .hero-content {
    display:flex; flex-direction:column; justify-content:center;
    padding:60px 56px; position:relative; z-index:2;
  }
  .hero-badge {
    display:inline-flex; align-items:center; gap:8px; width:fit-content;
    background:var(--orange); color:white; padding:8px 20px; border-radius:30px;
    font-size:11px; font-weight:700; letter-spacing:3px;
    margin-bottom:32px; animation: heroTextReveal 1s cubic-bezier(0.22,1,0.36,1) 0.3s both;
  }
  .hero-title {
    font-family:'Zen Maru Gothic',sans-serif; font-size:clamp(32px,4vw,52px); font-weight:700;
    color:var(--text); line-height:1.4; margin-bottom:24px;
    animation: heroTextReveal 1s cubic-bezier(0.22,1,0.36,1) 0.5s both;
  }
  .hero-title span {
    color:var(--orange); position:relative;
    background:linear-gradient(transparent 60%, rgba(232,116,58,0.18) 60%);
  }
  .hero-subtitle {
    font-size:15px; color:var(--text-light); line-height:2;
    margin-bottom:40px; font-weight:400;
    animation: heroTextReveal 1s cubic-bezier(0.22,1,0.36,1) 0.7s both;
  }
  .hero-cta-row {
    display:flex; gap:14px; flex-wrap:wrap;
    animation: heroTextReveal 1s cubic-bezier(0.22,1,0.36,1) 0.9s both;
  }
  .hero-btn {
    padding:15px 36px; border-radius:50px; font-size:14px; font-weight:700;
    cursor:pointer; font-family:'Zen Maru Gothic',sans-serif; border:none;
    transition:all 0.4s cubic-bezier(0.34,1.56,0.64,1);
    text-decoration:none; display:inline-flex; align-items:center; gap:8px;
  }
  .hero-btn-primary {
    background: linear-gradient(135deg, var(--orange), var(--orange-light));
    color:white; box-shadow:0 8px 30px rgba(232,116,58,0.35);
  }
  .hero-btn-primary:hover { transform:translateY(-4px) scale(1.06); box-shadow:0 14px 40px rgba(232,116,58,0.45); }
  .hero-btn-secondary {
    background:white; color:var(--orange);
    border:2px solid var(--orange); box-shadow:0 4px 15px rgba(0,0,0,0.04);
  }
  .hero-btn-secondary:hover { background:var(--orange-pale); transform:translateY(-4px); }
  .hero-stats {
    display:flex; gap:32px; margin-top:48px;
    animation: heroTextReveal 1s cubic-bezier(0.22,1,0.36,1) 1.1s both;
  }
  .hero-stat { text-align:left; }
  .hero-stat-num {
    font-family:'Zen Maru Gothic',sans-serif; font-size:32px; font-weight:700;
    color:var(--orange); line-height:1;
  }
  .hero-stat-label { font-size:12px; color:var(--text-light); margin-top:6px; font-weight:500; }
  .hero-scroll-hint {
    position:absolute; bottom:32px; right:56px;
    color:var(--orange); font-size:11px; letter-spacing:2px; font-weight:600;
    animation: float 3s ease-in-out infinite;
  }
  .hero-scroll-hint::after { content:''; display:block; width:2px; height:40px; background:var(--orange); opacity:0.3; margin:8px auto 0; border-radius:1px; }

  /* ===== FEATURED ARTICLES MARQUEE ===== */
  .marquee-section { background:var(--orange); padding:16px 0; overflow:hidden; position:relative; }
  .marquee-track {
    display:flex; gap:28px; animation: marqueeScroll 30s linear infinite; width:max-content;
  }
  @keyframes marqueeScroll { 0%{transform:translateX(0);} 100%{transform:translateX(-50%);} }
  .marquee-item {
    display:flex; align-items:center; gap:14px; white-space:nowrap;
    padding:8px 18px; background:rgba(255,255,255,0.15); border-radius:50px;
    cursor:pointer; transition:all 0.3s;
  }
  .marquee-item:hover { background:rgba(255,255,255,0.3); transform:scale(1.03); }
  .marquee-img { width:40px; height:40px; border-radius:50%; object-fit:cover; border:2px solid white; }
  .marquee-text { color:white; }
  .marquee-tag { font-size:9px; color:rgba(255,255,255,0.8); font-weight:600; letter-spacing:1px; }
  .marquee-title { font-size:13px; font-weight:600; }

  /* ===== SECTION SHARED ===== */
  .section { max-width:1200px; margin:0 auto; padding:80px 32px; }
  .sec-label {
    font-size:11px; color:white; font-weight:700; letter-spacing:2px; text-transform:uppercase;
    margin-bottom:12px; display:inline-block; background:var(--orange); padding:5px 14px;
    border-radius:20px;
  }
  .sec-title { font-family:'Zen Maru Gothic',sans-serif; font-size:32px; font-weight:700; margin-bottom:10px; line-height:1.4; }
  .sec-desc { font-size:15px; color:var(--text-light); line-height:1.8; }
  .sec-header { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:48px; }
  .sec-more {
    color:white; text-decoration:none; font-size:13px; font-weight:700;
    display:flex; align-items:center; gap:6px; transition:all 0.4s;
    background:var(--orange); padding:10px 22px; border-radius:30px;
    box-shadow:0 4px 15px rgba(232,116,58,0.25);
  }
  .sec-more:hover { gap:12px; transform:translateY(-2px); box-shadow:0 8px 25px rgba(232,116,58,0.35); }

  /* ===== ISHIKAWA MAP SECTION ===== */
  .map-section {
    background: linear-gradient(180deg, var(--white) 0%, var(--cream) 100%);
    padding:80px 0; position:relative; overflow:hidden;
  }
  .map-inner { max-width:1200px; margin:0 auto; padding:0 32px; }
  .map-layout { display:grid; grid-template-columns:1fr 1fr; gap:60px; align-items:center; }
  .map-svg-wrap {
    position:relative; display:flex; justify-content:center;
  }
  .map-svg-wrap svg { width:100%; max-width:420px; height:auto; filter:drop-shadow(0 10px 40px rgba(0,0,0,0.1)); }
  .map-region {
    fill:var(--cream); stroke:var(--orange); stroke-width:1.5;
    cursor:pointer; transition:all 0.4s cubic-bezier(0.22,1,0.36,1);
  }
  .map-region:hover, .map-region.active {
    fill:var(--orange); stroke:var(--orange); filter:drop-shadow(0 4px 12px rgba(210,105,30,0.4));
  }
  .map-region:hover + text, .map-region.active + text { fill:white; }
  .map-label { font-size:11px; font-weight:600; fill:var(--text); pointer-events:none; text-anchor:middle; transition:fill 0.3s; }
  .map-dot { fill:var(--orange); animation: mapPulse 2s ease-in-out infinite; }
  .map-info { padding:20px 0; }
  .map-info-title {
    font-family:'Zen Maru Gothic',sans-serif; font-size:28px; font-weight:700;
    margin-bottom:16px; line-height:1.4;
  }
  .map-info-desc { font-size:14px; color:var(--text-light); line-height:1.9; margin-bottom:24px; }
  .map-area-cards { display:flex; flex-direction:column; gap:12px; }
  .map-area-card {
    display:flex; align-items:center; gap:16px; padding:16px 20px;
    background:white; border-radius:20px; border:2px solid transparent;
    cursor:pointer; transition:all 0.4s cubic-bezier(0.22,1,0.36,1);
    box-shadow:0 3px 12px rgba(0,0,0,0.05);
  }
  .map-area-card:hover, .map-area-card.active {
    border-color:var(--orange); transform:translateX(8px) scale(1.02);
    box-shadow:0 8px 30px rgba(232,116,58,0.15);
  }
  .map-area-card.active { background:var(--orange-pale); }
  .map-area-emoji { font-size:14px; font-weight:800; color:var(--orange); background:var(--orange-pale); width:46px; height:46px; border-radius:14px; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-family:'Zen Maru Gothic',sans-serif; }
  .map-area-name { font-weight:700; font-size:15px; margin-bottom:2px; }
  .map-area-count { font-size:12px; color:var(--text-light); }
  .map-area-arrow { margin-left:auto; color:var(--orange); font-size:18px; opacity:0; transition:all 0.3s; }
  .map-area-card:hover .map-area-arrow, .map-area-card.active .map-area-arrow { opacity:1; transform:translateX(4px); }

  /* Pickupセクション下の「すべての記事」ボタン */
  .pickup-more-wrap { text-align:center; margin-top:40px; }
  .pickup-more-btn {
    display:inline-flex; align-items:center; gap:14px;
    padding:16px 40px;
    background:white; color:var(--orange);
    border:2px solid var(--orange); border-radius:999px;
    text-decoration:none; font-weight:700; font-size:14px; letter-spacing:2px;
    transition:all 0.5s cubic-bezier(0.22,1,0.36,1);
  }
  .pickup-more-btn em { font-style:normal; transition:transform 0.3s; }
  .pickup-more-btn:hover {
    background:var(--orange); color:white;
    transform:translateY(-3px); box-shadow:0 10px 28px rgba(232,116,58,0.28);
  }
  .pickup-more-btn:hover em { transform:translateX(6px); }

  /* ===== PICK UP - 大きなカード ===== */
  .pickup-section { padding:80px 0; }
  .pickup-inner { max-width:1200px; margin:0 auto; padding:0 32px; }
  .pickup-grid { display:grid; grid-template-columns:1.3fr 0.7fr; gap:24px; margin-bottom:24px; }
  .pickup-card {
    position:relative; border-radius:24px; overflow:hidden; cursor:pointer;
    transition:all 0.5s cubic-bezier(0.22,1,0.36,1);
    box-shadow:0 8px 30px rgba(0,0,0,0.1);
  }
  .pickup-card:hover { transform:translateY(-6px) scale(1.01); box-shadow:0 16px 50px rgba(0,0,0,0.15); }
  .pickup-card img { width:100%; height:100%; object-fit:cover; min-height:400px; transition:transform 0.8s cubic-bezier(0.22,1,0.36,1); }
  .pickup-card:hover img { transform:scale(1.06); }
  .pickup-overlay {
    position:absolute; inset:0;
    background:linear-gradient(to top, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.15) 50%, transparent 70%);
    display:flex; flex-direction:column; justify-content:flex-end; padding:36px;
  }
  .pickup-tag {
    display:inline-flex; align-items:center; gap:6px;
    background:var(--orange); color:white; padding:7px 18px;
    border-radius:30px; font-size:11px; font-weight:700; letter-spacing:1px;
    width:fit-content; margin-bottom:14px;
    box-shadow:0 4px 15px rgba(232,116,58,0.4);
  }
  .pickup-title {
    font-family:'Zen Maru Gothic',sans-serif; font-size:26px; font-weight:700;
    color:white; line-height:1.5; margin-bottom:10px;
    text-shadow:0 2px 8px rgba(0,0,0,0.3);
  }
  .pickup-excerpt { font-size:13px; color:rgba(255,255,255,0.85); line-height:1.7; }
  .pickup-sub { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
  .pickup-sub-card {
    position:relative; border-radius:20px; overflow:hidden; cursor:pointer;
    transition:all 0.5s cubic-bezier(0.22,1,0.36,1); min-height:220px;
    box-shadow:0 6px 24px rgba(0,0,0,0.08);
  }
  .pickup-sub-card:hover { transform:translateY(-6px); box-shadow:0 14px 40px rgba(0,0,0,0.14); }
  .pickup-sub-card img { width:100%; height:100%; object-fit:cover; transition:transform 0.6s; }
  .pickup-sub-card:hover img { transform:scale(1.08); }
  .pickup-sub-overlay {
    position:absolute; inset:0;
    background:linear-gradient(to top, rgba(0,0,0,0.7) 0%, transparent 60%);
    display:flex; flex-direction:column; justify-content:flex-end; padding:20px;
  }
  .pickup-sub-tag {
    font-size:10px; color:white; font-weight:700; letter-spacing:1px; margin-bottom:6px;
    background:var(--orange); display:inline-block; padding:3px 10px; border-radius:12px; width:fit-content;
  }
  .pickup-sub-title { font-family:'Zen Maru Gothic',sans-serif; font-size:16px; font-weight:700; color:white; line-height:1.5; text-shadow:0 1px 6px rgba(0,0,0,0.3); }

  /* ===== SHOP GRID ===== */
  .loc-section { background:var(--cream); padding:56px 0; }
  .loc-inner { max-width:1200px; margin:0 auto; padding:0 32px; }
  .loc-row { display:flex; gap:12px; flex-wrap:wrap; margin-bottom:16px; align-items:center; }
  .loc-label { font-size:13px; font-weight:600; color:var(--text); min-width:90px; }
  .loc-chips { display:flex; gap:8px; flex-wrap:wrap; }
  .loc-chip {
    padding:9px 20px; border-radius:50px; border:2px solid rgba(0,0,0,0.08);
    background:white; font-size:13px; cursor:pointer; transition:all 0.4s cubic-bezier(0.34,1.56,0.64,1);
    font-family:'Zen Maru Gothic',sans-serif; color:var(--text); font-weight:500;
  }
  .loc-chip:hover { border-color:var(--orange); color:var(--orange); transform:translateY(-3px); box-shadow:0 4px 12px rgba(232,116,58,0.15); }
  .loc-chip.active { background:var(--orange); color:white; border-color:var(--orange); transform:scale(1.06); box-shadow:0 6px 20px rgba(232,116,58,0.3); }

  .shop-section { padding:56px 0; }
  .shop-inner { max-width:1200px; margin:0 auto; padding:0 32px; }
  .shop-toolbar { display:flex; align-items:center; margin-bottom:28px; padding-bottom:20px; border-bottom:1px solid rgba(0,0,0,0.06); }
  .shop-count { margin-left:auto; font-size:13px; color:var(--text-light); }
  .shop-count strong { color:var(--orange); font-size:18px; }
  .shop-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
  .shop-card {
    background:white; border-radius:20px; overflow:hidden;
    border:none; cursor:pointer;
    transition:all 0.5s cubic-bezier(0.22,1,0.36,1);
    box-shadow:0 4px 16px rgba(0,0,0,0.06);
  }
  .shop-card:hover { transform:translateY(-10px) scale(1.02); box-shadow:0 20px 50px rgba(0,0,0,0.12); }
  .shop-card-img { height:200px; position:relative; overflow:hidden; background-size:cover; background-position:center; }
  .shop-card-img::after { content:''; position:absolute; inset:0; background:linear-gradient(to top, rgba(0,0,0,0.15) 0%, transparent 40%); }
  .shop-badges { position:absolute; top:10px; left:10px; display:flex; gap:5px; z-index:2; }
  .badge { padding:4px 12px; border-radius:20px; font-size:10px; font-weight:700; backdrop-filter:blur(8px); }
  .badge-area { background:rgba(0,0,0,0.5); color:white; }
  .badge-popular { background:var(--orange); color:white; }
  .badge-new { background:var(--blue); color:white; }
  .shop-fav { position:absolute; top:10px; right:10px; z-index:2; width:36px; height:36px; background:rgba(255,255,255,0.9); border-radius:50%; border:none; cursor:pointer; display:flex; align-items:center; justify-content:center; color:var(--text-light); transition:all 0.4s cubic-bezier(0.34,1.56,0.64,1); }
  .shop-fav:hover { transform:scale(1.2); color:var(--orange); }
  .shop-fav.liked { background:var(--orange); color:white; }
  .shop-card-body { padding:18px; }
  .shop-cat { font-size:10px; color:var(--orange); font-weight:600; letter-spacing:1px; margin-bottom:4px; }
  .shop-name { font-family:'Noto Serif JP',serif; font-weight:700; font-size:17px; margin-bottom:6px; }
  .shop-desc { font-size:13px; color:var(--text-light); line-height:1.65; margin-bottom:12px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .shop-owner { display:flex; align-items:center; gap:10px; padding:10px 0; border-top:1px solid rgba(0,0,0,0.06); margin-bottom:8px; }
  .owner-av { width:32px; height:32px; border-radius:50%; object-fit:cover; }
  .owner-nm { font-size:12px; font-weight:600; }
  .owner-role { font-size:10px; color:var(--text-light); }
  .shop-footer { display:flex; align-items:center; justify-content:space-between; font-size:12px; }
  .shop-rating { display:flex; align-items:center; gap:3px; }
  .stars { color:#F0C040; font-size:11px; }
  .shop-meta { color:var(--text-light); }

  /* ===== INTERVIEW SECTION ===== */
  .editorial-section { background:var(--cream); padding:80px 0; }
  .editorial-inner { max-width:1200px; margin:0 auto; padding:0 32px; }
  .editorial-featured {
    display:grid; grid-template-columns:1fr 1fr; gap:0;
    background:white; border-radius:20px; overflow:hidden;
    box-shadow:var(--shadow); margin-bottom:40px; transition:all 0.5s;
  }
  .editorial-featured:hover { box-shadow:0 20px 60px rgba(0,0,0,0.12); transform:translateY(-4px); }
  .ef-img { min-height:420px; background-size:cover; background-position:center; position:relative; overflow:hidden; }
  .ef-img::after { content:''; position:absolute; inset:0; background:linear-gradient(135deg, rgba(210,105,30,0.1), transparent); }
  .ef-body { padding:48px 40px; display:flex; flex-direction:column; justify-content:center; }
  .ef-label { display:inline-flex; align-items:center; gap:6px; color:var(--orange); font-size:12px; font-weight:600; letter-spacing:2px; margin-bottom:12px; }
  .ef-title { font-family:'Noto Serif JP',serif; font-size:24px; font-weight:700; line-height:1.6; margin-bottom:16px; }
  .ef-excerpt { font-size:14px; color:var(--text-light); line-height:1.9; margin-bottom:24px; }
  .ef-quote { font-family:'Noto Serif JP',serif; font-size:15px; font-style:italic; color:var(--text); line-height:1.8; padding:16px 20px; border-left:3px solid var(--orange); background:var(--orange-pale); border-radius:0 8px 8px 0; margin-bottom:24px; }
  .ef-author { display:flex; align-items:center; gap:12px; margin-bottom:20px; }
  .ef-author img { width:44px; height:44px; border-radius:50%; object-fit:cover; }
  .ef-author-name { font-weight:600; font-size:14px; }
  .ef-author-shop { font-size:12px; color:var(--text-light); }
  .ef-readmore { display:inline-flex; align-items:center; gap:6px; color:var(--orange); font-size:13px; font-weight:600; text-decoration:none; transition:gap 0.4s; }
  .ef-readmore:hover { gap:12px; }

  .column-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
  .column-card { background:white; border-radius:var(--radius); overflow:hidden; transition:all 0.5s cubic-bezier(0.22,1,0.36,1); cursor:pointer; border:1px solid rgba(0,0,0,0.04); }
  .column-card:hover { transform:translateY(-8px); box-shadow:0 16px 50px rgba(0,0,0,0.12); }
  .column-img { height:180px; background-size:cover; background-position:center; position:relative; overflow:hidden; }
  .column-card:hover .column-img img { transform:scale(1.1); }
  .column-tag { position:absolute; top:12px; left:12px; background:white; color:var(--orange); padding:4px 12px; border-radius:16px; font-size:10px; font-weight:600; }
  .column-reading { position:absolute; bottom:12px; right:12px; background:rgba(0,0,0,0.5); color:white; padding:3px 10px; border-radius:10px; font-size:10px; backdrop-filter:blur(4px); }
  .column-body { padding:18px; }
  .column-title { font-family:'Noto Serif JP',serif; font-weight:600; font-size:15px; line-height:1.6; margin-bottom:8px; }
  .column-excerpt { font-size:12px; color:var(--text-light); line-height:1.7; margin-bottom:12px; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
  .column-author { display:flex; align-items:center; gap:8px; font-size:12px; }
  .column-author img { width:28px; height:28px; border-radius:50%; object-fit:cover; }
  .column-author-name { font-weight:600; }
  .column-author-shop { color:var(--text-light); }

  .flip-indicators { display:none; }

  /* ===== READING - 読み物（雑誌風レイアウト） ===== */
  .reading-section {
    padding:100px 0; background:var(--cream); position:relative;
  }
  .reading-section::before {
    content:''; position:absolute; inset:0;
    background-image:
      radial-gradient(circle at 10% 20%, rgba(232,116,58,0.04) 0%, transparent 50%),
      radial-gradient(circle at 90% 80%, rgba(232,116,58,0.05) 0%, transparent 50%);
    pointer-events:none;
  }
  .reading-inner { max-width:1200px; margin:0 auto; padding:0 32px; position:relative; z-index:1; }
  .reading-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:32px; }
  .reading-card {
    display:flex; flex-direction:column;
    background:white; border-radius:16px; overflow:hidden;
    text-decoration:none; color:inherit;
    transition:all 0.5s cubic-bezier(0.22,1,0.36,1);
    box-shadow:0 4px 20px rgba(0,0,0,0.04);
    border:1px solid rgba(0,0,0,0.03);
    position:relative;
  }
  .reading-card:hover {
    transform:translateY(-6px);
    box-shadow:0 16px 40px rgba(232,116,58,0.12);
    border-color:rgba(232,116,58,0.15);
  }
  .reading-img {
    width:100%; height:200px;
    background-size:cover; background-position:center;
    position:relative; overflow:hidden;
    background-color:var(--orange-pale);
    transition:transform 0.8s cubic-bezier(0.22,1,0.36,1);
  }
  .reading-card:hover .reading-img { transform:scale(1.03); }
  .reading-img::after {
    content:''; position:absolute; inset:0;
    background:linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.08) 100%);
  }
  .reading-img-blank {
    background:linear-gradient(135deg, var(--orange-pale) 0%, var(--cream) 100%);
    display:flex; align-items:center; justify-content:center;
  }
  .reading-img-blank::after {
    content:'石川'; font-family:'Shippori Mincho',serif; font-size:48px;
    color:var(--orange); opacity:0.25; letter-spacing:8px; background:none;
    position:static; inset:auto;
  }
  .reading-body {
    padding:24px 22px 20px; flex:1;
    display:flex; flex-direction:column;
  }
  .reading-cat {
    display:inline-flex; align-items:center; gap:8px;
    font-size:10px; color:var(--orange);
    font-weight:700; letter-spacing:2.5px; margin-bottom:12px;
    text-transform:uppercase;
  }
  .reading-cat::before {
    content:''; display:block;
    width:24px; height:1.5px; background:var(--orange);
  }
  .reading-title {
    font-family:'Shippori Mincho','Noto Serif JP',serif; font-weight:600;
    font-size:16px; line-height:1.7; color:var(--text);
    letter-spacing:0.02em;
    display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
    margin-bottom:auto; padding-bottom:16px;
  }
  .reading-meta {
    font-size:11px; color:var(--text-light);
    padding-top:14px; border-top:1px solid rgba(0,0,0,0.06);
    display:flex; align-items:center; justify-content:space-between;
    letter-spacing:1px;
  }
  .reading-meta::after {
    content:'READ →'; color:var(--orange); font-weight:600; font-size:10px;
    letter-spacing:1.5px;
    transition:transform 0.3s;
  }
  .reading-card:hover .reading-meta::after { transform:translateX(3px); }
  .reading-date { font-family:'Noto Serif JP',serif; }

  /* ===== NUMBERS BANNER ===== */
  .numbers-banner {
    background: linear-gradient(135deg, var(--orange) 0%, var(--orange-light) 50%, #f4a460 100%);
    padding:56px 0; position:relative; overflow:hidden;
    background-size:200% 200%; animation: gradientShift 6s ease infinite;
  }
  .numbers-banner::before {
    content:''; position:absolute; inset:0;
    background:url("data:image/svg+xml,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 5 L55 30 L30 55 L5 30 Z' fill='none' stroke='rgba(255,255,255,0.08)' stroke-width='1'/%3E%3C/svg%3E");
  }
  .numbers-inner { max-width:1200px; margin:0 auto; padding:0 32px; display:flex; justify-content:space-around; position:relative; z-index:2; flex-wrap:wrap; gap:24px; }
  .number-item { text-align:center; color:white; }
  .number-val { font-family:'Noto Serif JP',serif; font-size:48px; font-weight:900; line-height:1; }
  .number-label { font-size:13px; opacity:0.85; margin-top:8px; font-weight:500; }

  /* ===== SEASONAL ===== */
  .seasonal-section { background:var(--navy); padding:80px 0; position:relative; overflow:hidden; }
  .seasonal-section::before {
    content:''; position:absolute; top:-200px; right:-100px; width:500px; height:500px;
    background:radial-gradient(circle, rgba(210,105,30,0.12) 0%, transparent 70%); border-radius:50%;
  }
  .seasonal-inner { max-width:1200px; margin:0 auto; padding:0 32px; position:relative; z-index:2; }
  .seasonal-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
  .seasonal-card {
    background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.1);
    border-radius:var(--radius); overflow:hidden; cursor:pointer;
    transition:all 0.5s cubic-bezier(0.22,1,0.36,1); backdrop-filter:blur(8px);
  }
  .seasonal-card:hover { background:rgba(255,255,255,0.12); border-color:var(--orange); transform:translateY(-6px); box-shadow:0 12px 30px rgba(0,0,0,0.3); }
  .seasonal-card-img { height:140px; background-size:cover; background-position:center; position:relative; }
  .seasonal-month { position:absolute; top:8px; left:8px; background:var(--green); color:white; padding:3px 10px; border-radius:8px; font-size:10px; font-weight:600; }
  .seasonal-card-body { padding:14px; color:white; }
  .seasonal-card-name { font-weight:600; font-size:13px; margin-bottom:3px; }
  .seasonal-card-shop { font-size:11px; color:rgba(255,255,255,0.6); }

  /* ===== MODAL ===== */
  .modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.6); backdrop-filter:blur(8px); z-index:2000; display:none; align-items:center; justify-content:center; opacity:0; transition:opacity 0.4s; }
  .modal-overlay.show { display:flex; opacity:1; }
  .modal { background:white; border-radius:20px; max-width:680px; width:90%; max-height:85vh; overflow-y:auto; position:relative; transform:scale(0.9) translateY(30px); transition:transform 0.5s cubic-bezier(0.22,1,0.36,1); box-shadow:0 30px 80px rgba(0,0,0,0.4); }
  .modal-overlay.show .modal { transform:scale(1) translateY(0); }
  .modal-close { position:absolute; top:14px; right:14px; z-index:10; width:32px; height:32px; border-radius:50%; border:none; background:rgba(0,0,0,0.5); color:white; font-size:16px; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:all 0.3s; }
  .modal-close:hover { background:#C23B22; transform:rotate(90deg); }
  .modal-img { height:260px; background-size:cover; background-position:center; }
  .modal-body { padding:24px; }
  .modal-cat { font-size:11px; color:var(--orange); font-weight:600; letter-spacing:1px; margin-bottom:4px; }
  .modal-name { font-family:'Noto Serif JP',serif; font-size:22px; font-weight:700; margin-bottom:6px; }
  .modal-rating { display:flex; align-items:center; gap:6px; margin-bottom:14px; font-size:13px; }
  .modal-desc { font-size:14px; color:var(--text-light); line-height:1.8; margin-bottom:18px; }
  .modal-info { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:18px; }
  .modal-info-item { display:flex; align-items:center; gap:6px; font-size:12px; padding:10px 12px; background:#f9f9f7; border-radius:10px; }
  .modal-info-value { font-weight:600; margin-left:auto; }
  .modal-owner-box { display:flex; align-items:center; gap:12px; padding:14px; background:var(--orange-pale); border-radius:12px; margin-bottom:18px; }
  .modal-owner-box img { width:44px; height:44px; border-radius:50%; object-fit:cover; }
  .modal-owner-name { font-weight:600; font-size:13px; }
  .modal-owner-msg { font-size:12px; color:var(--text-light); margin-top:2px; font-style:italic; }
  .modal-actions { display:flex; gap:10px; }
  .modal-btn { flex:1; padding:12px; border-radius:12px; font-size:13px; font-weight:600; cursor:pointer; font-family:inherit; border:none; transition:all 0.4s cubic-bezier(0.34,1.56,0.64,1); text-align:center; }
  .modal-btn-primary { background:var(--orange); color:white; }
  .modal-btn-primary:hover { background:var(--orange-light); transform:translateY(-2px); }
  .modal-btn-secondary { background:#f0f0ee; color:var(--text); }

  /* ===== FOOTER ===== */
  .footer { background:var(--navy); color:white; padding:56px 0 24px; }
  .footer-inner { max-width:1200px; margin:0 auto; padding:0 32px; }
  .footer-top { display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:36px; margin-bottom:36px; }
  .footer-logo { margin-bottom:12px; }
  .footer-logo img { height:32px; filter:brightness(10); }
  .footer-desc { font-size:12px; color:rgba(255,255,255,0.5); line-height:1.8; }
  .footer-col h4 { font-size:12px; font-weight:600; margin-bottom:12px; color:rgba(255,255,255,0.7); letter-spacing:1px; }
  .footer-col a { display:block; color:rgba(255,255,255,0.45); text-decoration:none; font-size:12px; padding:3px 0; transition:all 0.3s; }
  .footer-col a:hover { color:var(--orange-light); transform:translateX(4px); }
  .footer-bottom { border-top:1px solid rgba(255,255,255,0.08); padding-top:18px; text-align:center; }
  .footer-copy { font-size:11px; color:rgba(255,255,255,0.35); }

  /* ===== SCROLL TOP ===== */
  .scroll-top {
    position:fixed; bottom:100px; right:24px; z-index:900;
    width:48px; height:48px; border-radius:50%;
    background: linear-gradient(135deg, var(--orange), var(--orange-light));
    color:white; border:none; font-size:18px; cursor:pointer;
    box-shadow:0 6px 20px rgba(210,105,30,0.4);
    opacity:0; transform:translateY(20px) scale(0.8); transition:all 0.4s cubic-bezier(0.34,1.56,0.64,1); pointer-events:none;
  }
  .scroll-top.show { opacity:1; transform:translateY(0) scale(1); pointer-events:auto; }
  .scroll-top:hover { transform:translateY(-4px) scale(1.1); box-shadow:0 10px 30px rgba(210,105,30,0.5); }

  /* ===== CHATBOT ===== */
  .chatbot-toggle {
    position:fixed; bottom:28px; right:28px; z-index:950;
    width:88px; height:88px; border-radius:50%; border:none; cursor:pointer;
    background:white; box-shadow:0 8px 30px rgba(232,116,58,0.22);
    display:flex; align-items:center; justify-content:center;
    transition:all 0.4s cubic-bezier(0.34,1.56,0.64,1); overflow:hidden; padding:0;
    border:3px solid white;
  }
  .chatbot-toggle img { width:78px; height:78px; object-fit:cover; border-radius:50%; }
  .chatbot-toggle:hover { transform:scale(1.08); box-shadow:0 14px 40px rgba(232,116,58,0.4); }

  /* ===== CHATBOT TIP (Speech bubble) ===== */
  @keyframes tipBob { 0%,100%{transform:translateY(0);} 50%{transform:translateY(-6px);} }
  @keyframes tipPop { from{opacity:0; transform:translateY(10px) scale(0.85);} to{opacity:1; transform:translateY(0) scale(1);} }
  .chatbot-tip {
    position:fixed; bottom:48px; right:128px; z-index:949;
    background:white; color:var(--text); padding:16px 42px 16px 22px;
    border:2px solid var(--orange); border-radius:20px;
    font-size:14px; font-weight:500; line-height:1.55; letter-spacing:0.02em;
    box-shadow:0 10px 30px rgba(232,116,58,0.2);
    cursor:pointer; white-space:nowrap;
    animation: tipPop 0.6s cubic-bezier(0.34,1.56,0.64,1) 1s backwards, tipBob 3s ease-in-out 2s infinite;
    transition:opacity 0.3s, transform 0.3s;
  }
  .chatbot-tip strong { color:var(--orange); font-size:15px; }
  .chatbot-tip::before {
    content:''; position:absolute; right:-12px; bottom:22px;
    width:0; height:0; border-top:10px solid transparent; border-bottom:10px solid transparent;
    border-left:12px solid var(--orange);
  }
  .chatbot-tip::after {
    content:''; position:absolute; right:-8px; bottom:24px;
    width:0; height:0; border-top:7px solid transparent; border-bottom:7px solid transparent;
    border-left:9px solid white;
  }
  .chatbot-tip:hover { transform:translateY(-3px) scale(1.03); box-shadow:0 16px 40px rgba(232,116,58,0.28); }
  .chatbot-tip.hide { opacity:0; pointer-events:none; transform:translateY(10px) scale(0.9); }
  .chatbot-tip-close {
    position:absolute; top:4px; right:6px; width:20px; height:20px; border:none; background:transparent;
    color:var(--text-light); font-size:16px; cursor:pointer; padding:0; line-height:1;
    display:flex; align-items:center; justify-content:center; border-radius:50%; transition:all 0.2s;
  }
  .chatbot-tip-close:hover { background:var(--orange-pale); color:var(--orange); }
  .chatbot-toggle .chatbot-badge {
    position:absolute; top:-2px; right:-2px; width:20px; height:20px; border-radius:50%;
    background:var(--orange); color:white; font-size:10px; font-weight:700;
    display:flex; align-items:center; justify-content:center;
    animation: pulse 2s ease-in-out infinite;
  }
  .chatbot-panel {
    position:fixed; bottom:128px; right:28px; z-index:960;
    width:420px; max-height:640px; background:white; border-radius:22px;
    box-shadow:0 24px 70px rgba(0,0,0,0.22); flex-direction:column;
    overflow:hidden;
    display:none;
  }
  .chatbot-panel.open { display:flex; }
  .chatbot-header {
    background:linear-gradient(135deg, var(--orange), var(--orange-light));
    color:white; padding:24px 24px 22px; display:flex; align-items:center; gap:16px;
    flex-shrink:0;
  }
  .chatbot-header img { width:52px; height:52px; border-radius:50%; border:3px solid white; object-fit:cover; background:white; flex-shrink:0; }
  .chatbot-header-info { flex:1; }
  .chatbot-header-name { font-weight:700; font-size:17px; font-family:'Zen Maru Gothic',sans-serif; letter-spacing:0.5px; }
  .chatbot-header-status { font-size:12.5px; opacity:0.9; margin-top:3px; }
  .chatbot-close { background:none; border:none; color:white; font-size:24px; cursor:pointer; padding:4px 8px; opacity:0.85; transition:opacity 0.3s; align-self:flex-start; }
  .chatbot-close:hover { opacity:1; }
  .chatbot-messages {
    flex:1; overflow-y:auto; padding:24px 18px 18px; display:flex; flex-direction:column; gap:14px;
    min-height:360px; max-height:440px; background:#faf8f5;
  }
  .chat-msg { max-width:85%; padding:12px 16px; border-radius:18px; font-size:14px; line-height:1.65; }
  .chat-msg.bot {
    align-self:flex-start; background:white; border:1px solid #eee;
    border-bottom-left-radius:4px;
  }
  .chat-msg.user {
    align-self:flex-end; background:var(--orange); color:white;
    border-bottom-right-radius:4px;
  }
  .chat-msg .chat-name { font-size:12px; font-weight:600; color:var(--orange); margin-bottom:5px; }
  .chat-suggestions { display:flex; flex-wrap:wrap; gap:7px; padding:0 18px 14px; background:#faf8f5; }
  .chat-suggestion {
    padding:7px 14px; border-radius:22px; border:1px solid var(--orange);
    background:white; color:var(--orange); font-size:12px; font-weight:600;
    cursor:pointer; transition:all 0.3s; font-family:inherit;
  }
  .chat-suggestion:hover { background:var(--orange); color:white; }
  .chatbot-input {
    display:flex; gap:10px; padding:14px 18px; border-top:1px solid #eee; background:white;
  }
  .chatbot-input input {
    flex:1; border:1px solid #e0e0e0; border-radius:22px; padding:11px 18px;
    font-size:14px; outline:none; font-family:inherit; transition:border-color 0.3s;
  }
  .chatbot-input input:focus { border-color:var(--orange); }
  .chatbot-input button {
    width:42px; height:42px; border-radius:50%; border:none; cursor:pointer;
    background:var(--orange); color:white; font-size:17px;
    display:flex; align-items:center; justify-content:center;
    transition:all 0.3s;
  }
  .chatbot-input button:hover { background:var(--orange-light); transform:scale(1.08); }
  .chat-shop-link {
    display:flex; align-items:center; gap:10px; margin-top:8px; padding:8px 12px;
    background:var(--orange-pale); border-radius:12px; cursor:pointer;
    border:1px solid rgba(232,116,58,0.2); transition:all 0.3s; text-decoration:none;
  }
  .chat-shop-link:hover { background:rgba(232,116,58,0.15); transform:translateX(4px); }
  .chat-shop-link img { width:40px; height:40px; border-radius:10px; object-fit:cover; }
  .chat-shop-link-info { flex:1; }
  .chat-shop-link-name { font-size:12px; font-weight:700; color:var(--text); }
  .chat-shop-link-meta { font-size:10px; color:var(--text-light); }
  .chat-shop-link-arrow { color:var(--orange); font-size:14px; font-weight:700; }

  /* ===== RESPONSIVE ===== */
  @media (max-width:1000px) {
    .hero { grid-template-columns:1fr; min-height:auto; width:92%; margin:72px auto 24px; border-radius:18px; }
    .hero-visual { height:50vh; min-height:320px; }
    .hero-content { padding:40px 28px; text-align:center; align-items:center; }
    .hero-cta-row { justify-content:center; }
    .hero-stats { justify-content:center; }
    .hero-scroll-hint { display:none; }
    .hero-visual-tag { left:16px; bottom:16px; font-size:12px; padding:8px 16px; }
    .hero-slide-dots { bottom:16px; right:16px; }
    .hero-slide-dot { width:8px; height:8px; }
    .chatbot-panel { width:calc(100vw - 32px); right:16px; bottom:90px; max-height:65vh; border-radius:18px; }
    .chatbot-header { padding:20px 18px 18px !important; gap:12px !important; }
    .chatbot-header img { width:40px !important; height:40px !important; }
    .chatbot-header-name { font-size:14px !important; }
    .chatbot-header-status { font-size:11px !important; }
    .chatbot-messages { padding:20px 14px 14px !important; min-height:220px !important; }
    .chatbot-toggle { width:56px; height:56px; right:16px; bottom:16px; }
    .chatbot-toggle img { width:44px; height:44px; }
    .chatbot-tip { bottom:30px; right:84px; padding:10px 30px 10px 14px; font-size:11px; white-space:normal; max-width:150px; border-width:1.5px; }
    .chatbot-tip strong { font-size:12px; }
    .chatbot-tip::before { right:-9px; bottom:14px; border-left-width:9px; border-top-width:7px; border-bottom-width:7px; }
    .chatbot-tip::after { right:-6px; bottom:16px; border-left-width:7px; border-top-width:5px; border-bottom-width:5px; }
    .chatbot-tip-close { width:16px; height:16px; font-size:13px; top:2px; right:4px; }
    .scroll-top { right:16px; bottom:80px; width:40px; height:40px; font-size:14px; }
    .map-layout { grid-template-columns:1fr; }
    .pickup-grid { grid-template-columns:1fr; }
    .editorial-featured { grid-template-columns:1fr; }
    .ef-img { min-height:280px; }
    .shop-grid { grid-template-columns:repeat(2,1fr); }
    .column-grid {
      display:flex; overflow-x:auto; scroll-snap-type:x mandatory;
      gap:20px; padding-bottom:12px; -webkit-overflow-scrolling:touch;
    }
    .column-grid::-webkit-scrollbar { height:4px; }
    .column-grid::-webkit-scrollbar-track { background:transparent; }
    .column-grid::-webkit-scrollbar-thumb { background:var(--orange-light); border-radius:4px; }
    .column-card { min-width:300px; flex-shrink:0; scroll-snap-align:start; }
    .flip-indicators { display:none; }
    .seasonal-grid {
      display:flex; overflow-x:auto; scroll-snap-type:x mandatory;
      gap:14px; padding-bottom:12px; -webkit-overflow-scrolling:touch;
      grid-template-columns:none;
    }
    .seasonal-grid::-webkit-scrollbar { height:4px; }
    .seasonal-grid::-webkit-scrollbar-track { background:transparent; }
    .seasonal-grid::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.3); border-radius:4px; }
    .seasonal-card { min-width:220px; flex-shrink:0; scroll-snap-align:start; }
    .footer-top { grid-template-columns:1fr 1fr; }
    .numbers-inner { justify-content:center; }
    .hero-stats { gap:24px; }
  }
  @media (max-width:640px) {
    .nav { display:none; }
    .hamburger { display:block; }
    .hero-visual { height:45vh; min-height:280px; }
    .hero-content { padding:32px 20px; }
    .hero-title { font-size:28px; }
    .hero-subtitle { font-size:14px; margin-bottom:28px; }
    .hero-btn { padding:13px 28px; font-size:13px; }
    .hero-stats { flex-wrap:wrap; gap:16px; }
    .hero-stat-num { font-size:26px; }
    /* -- Flip scroll shared -- */
    .shop-grid, .column-grid, .seasonal-grid, .pickup-grid, .pickup-sub {
      display:flex; overflow-x:auto; scroll-snap-type:x mandatory;
      -webkit-overflow-scrolling:touch; scroll-behavior:smooth;
      gap:0; margin-left:-20px; margin-right:-20px; padding:0 20px 16px;
    }
    .shop-grid::-webkit-scrollbar, .column-grid::-webkit-scrollbar,
    .seasonal-grid::-webkit-scrollbar, .pickup-grid::-webkit-scrollbar,
    .pickup-sub::-webkit-scrollbar { display:none; }
    .flip-indicators { display:flex; justify-content:center; gap:8px; margin-top:12px; }
    .flip-dot { width:8px; height:8px; border-radius:50%; background:#ddd; border:none; padding:0; cursor:pointer; transition:all 0.3s; }
    .flip-dot.active { background:var(--orange); transform:scale(1.3); }
    .flip-indicators-dark .flip-dot { background:rgba(255,255,255,0.3); }
    .flip-indicators-dark .flip-dot.active { background:white; }

    /* -- Shop cards -- */
    .shop-grid { grid-template-columns:none; }
    .shop-grid .shop-card { min-width:calc(100vw - 52px); flex-shrink:0; scroll-snap-align:center; margin-right:14px; }

    /* -- Column cards (モバイル：1列縦並び、横レイアウトカード) -- */
    .column-grid {
      display:flex !important; flex-direction:column !important; gap:10px !important;
      overflow:visible !important; margin:0 !important; padding:0 !important;
    }
    .column-card {
      min-width:0 !important; max-width:100% !important; width:100% !important;
      flex:0 0 auto !important; margin:0 !important;
      box-shadow:0 3px 12px rgba(0,0,0,0.07); border-radius:12px;
      display:flex !important; flex-direction:row !important;
      overflow:hidden; background:white;
    }
    .column-img {
      height:auto !important; min-height:0 !important;
      width:100px !important; min-width:100px !important; flex-shrink:0;
    }
    .column-tag { padding:2px 8px !important; font-size:9px !important; top:6px !important; left:6px !important; }
    .column-reading { display:none !important; }
    .column-body { padding:10px 12px !important; flex:1; min-width:0; }
    .column-title { font-size:12px !important; line-height:1.4; margin-bottom:3px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
    .column-excerpt { font-size:10px !important; line-height:1.45; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; margin-bottom:0; }
    .column-author { margin-top:4px; gap:5px; padding-top:4px; border-top:1px solid rgba(0,0,0,0.06); }
    .column-author img { width:18px !important; height:18px !important; }
    .column-author-name { font-size:9px !important; line-height:1.2; }
    .column-author-shop { font-size:9px !important; line-height:1.2; }
    #columnDots { display:none !important; }

    /* -- Editorial Featured (モバイル：横レイアウトでコンパクト) -- */
    .editorial-section { padding:40px 0; }
    .editorial-featured {
      grid-template-columns:110px 1fr !important;
      border-radius:14px !important;
      box-shadow:0 3px 12px rgba(0,0,0,0.07) !important;
      gap:0 !important;
      align-items:stretch;
    }
    .ef-img { min-height:0 !important; height:100% !important; min-width:110px; }
    .ef-body { padding:12px 14px !important; }
    .ef-label { font-size:9px !important; margin-bottom:4px; letter-spacing:1.2px; }
    .ef-title { font-size:13px !important; line-height:1.4 !important; margin-bottom:6px !important; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
    .ef-excerpt { font-size:11px !important; line-height:1.5; margin-bottom:8px !important; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
    .ef-quote { display:none !important; }
    .ef-author { display:none !important; }
    .ef-readmore { font-size:11px !important; }

    /* -- Seasonal cards -- */
    .seasonal-grid { grid-template-columns:none; }
    .seasonal-card { min-width:calc(100vw - 64px); flex-shrink:0; scroll-snap-align:center; margin-right:14px; }

    /* -- Pickup cards (モバイル：横スクロールのフリップ形式、コンパクト) -- */
    .pickup-section { padding:36px 0; }
    .pickup-grid {
      display:flex !important; flex-direction:row !important; gap:0 !important;
      grid-template-columns:none !important;
      overflow-x:auto !important; overflow-y:visible !important;
      scroll-snap-type:x mandatory !important; -webkit-overflow-scrolling:touch;
      scroll-behavior:smooth;
      margin:0 -20px !important; padding:0 20px 12px !important;
      align-items:stretch !important;
    }
    .pickup-grid::-webkit-scrollbar { display:none; }
    .pickup-grid > div[style*="flex-direction"] { display:contents !important; }
    .pickup-grid > .pickup-card,
    .pickup-grid > div[style*="flex-direction"] > .pickup-card {
      min-width:calc(100vw - 80px) !important; max-width:calc(100vw - 80px) !important; width:calc(100vw - 80px) !important;
      flex:0 0 auto !important; margin:0 10px 0 0 !important;
      scroll-snap-align:center;
      border-radius:14px;
      height:180px !important; min-height:180px !important; max-height:180px !important;
      box-shadow:0 4px 14px rgba(0,0,0,0.1);
      display:block !important;
      position:relative; overflow:hidden;
    }
    .pickup-card img {
      min-height:0 !important;
      height:100% !important; width:100% !important;
      position:absolute; inset:0;
      object-fit:cover;
    }
    .pickup-overlay {
      padding:14px 16px !important;
      background:linear-gradient(to top, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.35) 50%, transparent 100%) !important;
      justify-content:flex-end !important;
    }
    .pickup-tag { padding:3px 11px !important; font-size:9px !important; margin-bottom:6px !important; letter-spacing:1px; }
    .pickup-title { font-size:14px !important; line-height:1.4 !important; margin-bottom:2px !important; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; max-width:100% !important; }
    .pickup-excerpt { display:none !important; }
    /* pickup-sub（2行目）はモバイルでは非表示 → 1行だけの横スクロール */
    .pickup-sub, #pickupSubDots { display:none !important; }

    /* フリップドット：pickup-gridのみ表示 */
    #pickupDots { display:flex !important; justify-content:center; gap:6px; margin-top:10px; }
    #pickupDots .flip-dot {
      width:7px; height:7px; border-radius:50%; background:rgba(232,116,58,0.25); border:none; padding:0; cursor:pointer; transition:all 0.3s;
    }
    #pickupDots .flip-dot.active {
      background:var(--orange); transform:scale(1.3);
    }

    /* -- Reading section (モバイル：横長カード1列) -- */
    .reading-section { padding:48px 0; }
    .reading-inner { padding:0 20px; }
    .reading-grid { grid-template-columns:1fr !important; gap:12px !important; }
    .reading-card {
      flex-direction:row !important;
      padding:0 !important; gap:0 !important;
      border-radius:12px !important;
    }
    .reading-img {
      width:100px !important; min-width:100px !important; height:auto !important; min-height:100px;
      flex-shrink:0;
    }
    .reading-img::after { background:none !important; }
    .reading-img-blank::after { font-size:24px !important; letter-spacing:4px !important; }
    .reading-body { padding:12px 14px !important; justify-content:center; }
    .reading-cat {
      font-size:9px !important; margin-bottom:5px !important; letter-spacing:1.5px !important;
    }
    .reading-cat::before { width:14px !important; height:1px !important; }
    .reading-title {
      font-size:13px !important; line-height:1.55 !important;
      padding-bottom:8px !important;
      /* モバイルでは省略せずタイトル全文を表示 */
      display:block !important;
      -webkit-line-clamp:unset !important;
      -webkit-box-orient:unset !important;
      overflow:visible !important;
    }
    .reading-meta { font-size:9px !important; padding-top:8px !important; letter-spacing:0.8px; }
    .reading-meta::after { font-size:9px !important; }

    /* エリアお店プレビュー（モバイル） */
    .area-shops-preview { padding:20px; border-radius:14px; margin:20px 16px 0; }
    .area-shops-title { font-size:18px; }
    .area-shops-grid { grid-template-columns:1fr; gap:10px; margin-bottom:16px; }
    .area-shop-card { display:flex; flex-direction:row; }
    .area-shop-img { width:100px; min-width:100px; height:auto; min-height:100px; }
    .area-shop-body { padding:12px 14px; flex:1; min-width:0; }
    .area-shop-name { font-size:13px; }
    .area-shop-desc { font-size:11px; -webkit-line-clamp:2; }
    .area-shops-more-btn { padding:10px 20px; font-size:12px; }

    /* 本棚（モバイル） */
    .book-shelf { gap:18px; padding:10px 0 30px; }
    .book-shelf::before, .book-shelf::after { flex:0 0 20px; }
    .book-card { width:180px; }
    .book-cover-inner { padding:16px 14px; }
    .book-vol { top:12px; right:14px; font-size:10px; padding:3px 8px; }
    .book-type { font-size:9px; letter-spacing:2px; margin-bottom:6px; padding-bottom:6px; }
    .book-title { font-size:13px; -webkit-line-clamp:3; }
    .book-shop { font-size:10px; }

    /* 地図セクション：モバイルではエリア紹介カード群を非表示（SVG地図で代替） */
    .map-area-cards { display:none; }
    .map-info-title { font-size:22px; text-align:center; margin-bottom:12px; }
    .map-info-desc { text-align:center; font-size:13px; }
    .footer-top { grid-template-columns:1fr; }
    .section { padding:56px 20px; }
    .modal-info { grid-template-columns:1fr; }
  }

  /* ===== AREA SHOPS PREVIEW - エリア選択で表示される3件 ===== */
  .area-shops-preview {
    max-width:1100px; margin:40px auto 0; padding:32px; background:white;
    border-radius:18px; box-shadow:0 8px 30px rgba(0,0,0,0.06);
    border:1px solid rgba(232,116,58,0.12);
    opacity:0; transform:translateY(20px); pointer-events:none;
    transition:all 0.6s cubic-bezier(0.22,1,0.36,1);
  }
  .area-shops-preview.show { opacity:1; transform:translateY(0); pointer-events:auto; }
  .area-shops-head { margin-bottom:24px; text-align:center; }
  .area-shops-label {
    display:inline-block; font-size:11px; color:var(--orange);
    font-weight:700; letter-spacing:3px; margin-bottom:8px;
  }
  .area-shops-title {
    font-family:'Shippori Mincho',serif; font-size:24px; font-weight:700;
    color:var(--text); letter-spacing:0.04em;
  }
  .area-shops-grid {
    display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-bottom:24px;
  }
  .area-shop-card {
    display:block; border-radius:14px; overflow:hidden;
    text-decoration:none; color:inherit; background:var(--cream);
    transition:all 0.5s cubic-bezier(0.22,1,0.36,1);
    animation:slideInStagger 0.6s cubic-bezier(0.22,1,0.36,1) backwards;
    border:1px solid rgba(0,0,0,0.04);
  }
  .area-shop-card:hover { transform:translateY(-6px); box-shadow:0 14px 36px rgba(232,116,58,0.14); background:white; border-color:var(--orange-pale); }
  .area-shop-img { width:100%; height:150px; background-size:cover; background-position:center; }
  .area-shop-body { padding:16px 18px; }
  .area-shop-cat { font-size:10px; color:var(--orange); font-weight:700; letter-spacing:1.5px; margin-bottom:6px; text-transform:uppercase; }
  .area-shop-name { font-family:'Shippori Mincho',serif; font-size:15px; font-weight:600; line-height:1.5; margin-bottom:6px; color:var(--text); }
  .area-shop-desc { font-size:12px; line-height:1.6; color:var(--text-light); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .area-shops-empty { grid-column:1/-1; text-align:center; padding:40px; color:var(--text-light); font-size:14px; }
  .area-shops-more { text-align:center; margin-top:8px; }
  .area-shops-more-btn {
    display:inline-flex; align-items:center; gap:10px; padding:12px 28px;
    background:var(--orange); color:white; border-radius:999px;
    text-decoration:none; font-weight:600; font-size:13px;
    letter-spacing:1px; transition:all 0.4s cubic-bezier(0.22,1,0.36,1);
  }
  .area-shops-more-btn span { transition:transform 0.3s; }
  .area-shops-more-btn:hover { background:var(--orange-light); transform:translateY(-2px); box-shadow:0 8px 24px rgba(232,116,58,0.3); }
  .area-shops-more-btn:hover span { transform:translateX(4px); }

  /* ===== BOOK SHELF - 本棚風の横スクロール（読む、石川の名店） ===== */
  .book-shelf {
    display:flex; gap:28px; overflow-x:auto; padding:20px 0 50px;
    scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;
    scroll-behavior:smooth;
  }
  .book-shelf::-webkit-scrollbar { height:0; display:none; }
  .book-shelf::before, .book-shelf::after {
    content:''; flex:0 0 max(12px, calc((100% - 1200px)/2));
  }
  .book-card {
    flex:0 0 auto; width:250px; text-decoration:none; color:inherit;
    scroll-snap-align:center;
    perspective:1200px;
    transition:transform 0.5s cubic-bezier(0.22,1,0.36,1);
  }
  .book-card:hover { transform:translateY(-8px); }

  .book-cover {
    position:relative; width:100%; aspect-ratio:3/4;
    border-radius:3px 12px 12px 3px;
    overflow:hidden;
    box-shadow:
      0 2px 4px rgba(0,0,0,0.15),
      0 12px 30px rgba(0,0,0,0.18),
      inset 3px 0 0 rgba(0,0,0,0.4),
      inset 5px 0 3px rgba(255,255,255,0.2);
    transition:box-shadow 0.5s, transform 0.5s;
    transform-origin:left center;
    background:var(--navy);
  }
  .book-card:hover .book-cover {
    box-shadow:
      0 4px 8px rgba(0,0,0,0.15),
      0 28px 50px rgba(0,0,0,0.28),
      inset 3px 0 0 rgba(0,0,0,0.4),
      inset 5px 0 3px rgba(255,255,255,0.2);
    transform:rotateY(-4deg);
  }
  .book-img {
    position:absolute; inset:0;
    background-size:cover; background-position:center;
    filter:brightness(0.75) saturate(0.9);
    transition:all 0.6s;
  }
  .book-card:hover .book-img { filter:brightness(0.65) saturate(1); }
  .book-cover::after {
    content:''; position:absolute; inset:0;
    background:linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.15) 40%, rgba(0,0,0,0.85) 100%);
    pointer-events:none;
  }
  .book-cover-inner {
    position:absolute; inset:0; padding:24px 22px; z-index:2;
    display:flex; flex-direction:column; justify-content:flex-end;
    color:white;
  }
  .book-vol {
    position:absolute; top:20px; right:22px;
    font-family:'Shippori Mincho',serif; font-size:12px;
    color:var(--orange); letter-spacing:1.5px;
    background:rgba(255,255,255,0.95); padding:4px 10px; border-radius:3px;
    font-weight:600;
  }
  .book-type {
    font-size:10px; font-weight:700; letter-spacing:3px;
    color:var(--orange-light); margin-bottom:10px;
    padding-bottom:10px; border-bottom:1px solid rgba(255,255,255,0.3);
    text-transform:uppercase;
  }
  .book-title {
    font-family:'Shippori Mincho','Noto Serif JP',serif;
    font-size:17px; font-weight:700; line-height:1.55;
    letter-spacing:0.04em;
    display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
    margin-bottom:8px;
    text-shadow:0 2px 10px rgba(0,0,0,0.5);
  }
  .book-shop {
    font-size:11px; opacity:0.9; letter-spacing:1px;
    font-family:'Shippori Mincho',serif;
  }
  .book-spine-shadow {
    position:absolute; top:0; bottom:0; left:0; width:8px;
    background:linear-gradient(to right,
      rgba(0,0,0,0.5) 0%,
      rgba(0,0,0,0.2) 40%,
      transparent 100%);
    pointer-events:none;
  }

  /* ===== ARCHIVE - インタビュー/コラム/特集等の一覧ページ（雑誌風・大きめカード） ===== */
  .archive-hero {
    margin-top:64px; padding:80px 32px 56px;
    background:var(--cream); text-align:center; position:relative; overflow:hidden;
  }
  .archive-hero::before {
    content:''; position:absolute; inset:0;
    background-image:radial-gradient(circle at 20% 80%, rgba(232,116,58,0.06) 0%, transparent 60%);
    pointer-events:none;
  }
  .archive-hero-inner { max-width:800px; margin:0 auto; position:relative; z-index:2; }
  .archive-hero-label {
    font-size:11px; color:var(--orange); font-weight:700; letter-spacing:4px;
    margin-bottom:14px; text-transform:uppercase;
  }
  .archive-hero-title {
    font-family:'Shippori Mincho','Noto Serif JP',serif;
    font-size:44px; font-weight:700; line-height:1.45; letter-spacing:0.06em;
    color:var(--text); margin:0 0 18px;
  }
  .archive-hero-desc { color:var(--text-light); font-size:15px; line-height:1.9; margin:0 0 24px; max-width:620px; margin-left:auto; margin-right:auto; }
  .archive-hero-count {
    display:inline-block; padding:8px 22px; background:white;
    border-radius:999px; font-size:13px; color:var(--text);
    box-shadow:0 4px 16px rgba(0,0,0,0.05);
  }
  .archive-hero-count strong {
    color:var(--orange); font-size:17px;
    font-family:'Shippori Mincho',serif; margin-right:4px;
  }

  .archive-grid-section { max-width:1100px; margin:0 auto; padding:80px 32px 100px; }
  .archive-grid {
    display:grid; grid-template-columns:repeat(2,1fr); gap:40px 32px;
  }

  /* 大きめのアーカイブカード */
  .archive-card {
    display:flex; flex-direction:column;
    background:white; border-radius:18px; overflow:hidden;
    text-decoration:none; color:inherit;
    transition:all 0.55s cubic-bezier(0.22,1,0.36,1);
    box-shadow:0 6px 24px rgba(0,0,0,0.05);
    border:1px solid rgba(0,0,0,0.04);
  }
  .archive-card:hover {
    transform:translateY(-8px);
    box-shadow:0 22px 50px rgba(232,116,58,0.14);
    border-color:rgba(232,116,58,0.15);
  }
  .archive-card-img {
    width:100%; aspect-ratio:3/2;
    background-size:cover; background-position:center;
    background-color:var(--orange-pale);
    position:relative; overflow:hidden;
    transition:transform 0.8s cubic-bezier(0.22,1,0.36,1);
  }
  .archive-card:hover .archive-card-img { transform:scale(1.04); }
  .archive-card-img::after {
    content:''; position:absolute; inset:0;
    background:linear-gradient(180deg, transparent 65%, rgba(0,0,0,0.15) 100%);
  }
  .archive-card-tag {
    position:absolute; top:18px; left:18px; z-index:2;
    display:inline-block; padding:6px 16px;
    background:var(--orange); color:white;
    border-radius:999px; font-size:11px; font-weight:700; letter-spacing:2px;
    text-transform:uppercase;
    box-shadow:0 6px 18px rgba(232,116,58,0.3);
  }
  .archive-card-body { padding:28px 28px 24px; flex:1; display:flex; flex-direction:column; }
  .archive-card-shop {
    font-size:11px; color:var(--orange);
    font-weight:600; letter-spacing:2px; margin-bottom:10px; text-transform:uppercase;
  }
  .archive-card-title {
    font-family:'Shippori Mincho','Noto Serif JP',serif;
    font-weight:700; font-size:22px; line-height:1.6; letter-spacing:0.04em;
    margin:0 0 14px; color:var(--text);
    display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
  }
  .archive-card-excerpt {
    font-size:13px; line-height:1.85; color:var(--text-light);
    margin:0 0 auto; padding-bottom:18px;
    display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
  }
  .archive-card-meta {
    display:flex; align-items:center; justify-content:space-between;
    padding-top:16px; border-top:1px solid rgba(0,0,0,0.06);
    font-size:11px; letter-spacing:1.5px;
  }
  .archive-card-date { color:var(--text-light); font-family:'Noto Serif JP',serif; }
  .archive-card-read { color:var(--orange); font-weight:700; transition:transform 0.3s; }
  .archive-card:hover .archive-card-read { transform:translateX(4px); }

  /* ページネーション */
  .archive-pagination {
    display:flex; justify-content:center; gap:8px; margin-top:72px; flex-wrap:wrap;
  }
  .archive-pagination .page-numbers {
    display:inline-flex; align-items:center; justify-content:center;
    min-width:40px; height:40px; padding:0 14px;
    background:white; color:var(--text); text-decoration:none;
    border-radius:10px; font-family:'Shippori Mincho',serif; font-weight:600;
    border:1px solid rgba(0,0,0,0.06); transition:all 0.3s;
  }
  .archive-pagination .page-numbers:hover,
  .archive-pagination .page-numbers.current {
    background:var(--orange); color:white; border-color:var(--orange);
  }
  .archive-empty { text-align:center; padding:80px 20px; color:var(--text-light); }

  @media (max-width:800px) {
    .archive-hero { padding:56px 20px 40px; }
    .archive-hero-title { font-size:30px; }
    .archive-hero-desc { font-size:13px; }
    .archive-grid-section { padding:48px 20px 72px; }
    .archive-grid { grid-template-columns:1fr; gap:28px; }
    .archive-card-body { padding:22px 22px 20px; }
    .archive-card-title { font-size:18px; line-height:1.55; }
    .archive-card-excerpt { font-size:12px; -webkit-line-clamp:2; }
    .archive-pagination { margin-top:48px; }
    .archive-pagination .page-numbers { min-width:36px; height:36px; font-size:13px; }
  }

  /* ===== AREA ARCHIVE - エリア別お店一覧ページ ===== */
  .area-archive-hero {
    margin-top:64px; padding:80px 32px 60px;
    background:linear-gradient(135deg, var(--cream) 0%, rgba(232,116,58,0.08) 100%);
    text-align:center; position:relative; overflow:hidden;
  }
  .area-archive-hero::before {
    content:''; position:absolute; inset:0;
    background-image:radial-gradient(circle at 20% 80%, rgba(232,116,58,0.08) 0%, transparent 60%);
    pointer-events:none;
  }
  .area-archive-inner { max-width:800px; margin:0 auto; position:relative; z-index:2; }
  .area-archive-label {
    font-size:11px; color:var(--orange); font-weight:700; letter-spacing:4px;
    margin-bottom:12px; text-transform:uppercase;
  }
  .area-archive-title {
    font-family:'Shippori Mincho',serif; font-size:44px; font-weight:700;
    line-height:1.4; letter-spacing:0.05em; color:var(--text); margin:0 0 16px;
  }
  .area-archive-desc { color:var(--text-light); font-size:15px; line-height:1.8; margin:0 0 24px; }
  .area-archive-count {
    display:inline-block; padding:8px 22px; background:white;
    border-radius:999px; font-size:13px; color:var(--text);
    box-shadow:0 4px 16px rgba(0,0,0,0.06);
  }
  .area-archive-count strong { color:var(--orange); font-size:17px; font-family:'Shippori Mincho',serif; margin-right:4px; }

  .area-archive-section { padding:60px 32px 100px; background:white; }
  .area-archive-grid-inner { max-width:1200px; margin:0 auto; }
  .area-archive-grid {
    display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:24px;
  }
  .area-archive-empty { text-align:center; padding:80px 20px; color:var(--text-light); }
  .area-archive-back { margin-top:60px; text-align:center; }

  @media (max-width:640px) {
    .area-archive-hero { padding:48px 20px 40px; }
    .area-archive-title { font-size:28px; }
    .area-archive-desc { font-size:13px; }
    .area-archive-section { padding:40px 20px 60px; }
    .area-archive-grid { grid-template-columns:1fr; gap:16px; }
  }

  /* ===== 営業用プレビュー機能 ===== */
  .mande-password-wrap {
    min-height:calc(100vh - 64px); margin-top:64px;
    display:flex; align-items:center; justify-content:center;
    padding:60px 20px;
    background:linear-gradient(135deg, var(--cream) 0%, #FFE8D6 100%);
    position:relative; overflow:hidden;
  }
  .mande-password-wrap::before {
    content:''; position:absolute; inset:0;
    background-image:
      radial-gradient(circle at 20% 30%, rgba(232,116,58,0.1) 0%, transparent 50%),
      radial-gradient(circle at 80% 70%, rgba(232,116,58,0.08) 0%, transparent 50%);
    pointer-events:none;
  }
  .mande-password-card {
    background:white; border-radius:24px; padding:64px 48px;
    max-width:460px; width:100%; text-align:center; position:relative; z-index:2;
    box-shadow:0 20px 60px rgba(0,0,0,0.1);
    border:1px solid rgba(232,116,58,0.1);
  }
  .mande-password-icon { font-size:48px; margin-bottom:16px; }
  .mande-password-label {
    display:inline-block; font-size:11px; color:var(--orange);
    font-weight:700; letter-spacing:3px; padding:4px 14px;
    background:var(--orange-pale); border-radius:999px; margin-bottom:20px;
    text-transform:uppercase;
  }
  .mande-password-title {
    font-family:'Shippori Mincho',serif; font-size:28px; font-weight:700;
    margin:0 0 16px; line-height:1.5; color:var(--text); letter-spacing:0.05em;
  }
  .mande-password-desc { font-size:14px; line-height:1.9; color:var(--text-light); margin:0 0 32px; }
  .mande-password-form { display:flex; flex-direction:column; gap:12px; margin-bottom:24px; }
  .mande-password-form input[type="password"] {
    width:100%; padding:14px 18px; font-size:15px;
    border:2px solid var(--orange-pale); border-radius:12px;
    background:var(--cream); letter-spacing:0.2em;
    transition:all 0.3s; font-family:'Noto Serif JP',serif;
  }
  .mande-password-form input[type="password"]:focus {
    outline:none; border-color:var(--orange); background:white;
    box-shadow:0 0 0 4px rgba(232,116,58,0.1);
  }
  .mande-password-form button {
    padding:14px 32px; border:none; border-radius:12px;
    background:var(--orange); color:white;
    font-size:14px; font-weight:700; letter-spacing:1px;
    cursor:pointer; transition:all 0.3s;
  }
  .mande-password-form button:hover { background:var(--orange-light); transform:translateY(-2px); box-shadow:0 8px 24px rgba(232,116,58,0.3); }
  .mande-password-note { font-family:'Shippori Mincho',serif; font-size:12px; color:var(--text-light); letter-spacing:0.1em; margin:0; }

  /* プレビュー閲覧中のバナー */
  .mande-preview-banner {
    position:fixed; top:0; left:0; right:0; z-index:1100;
    background:linear-gradient(135deg, var(--orange), var(--orange-light));
    color:white; padding:10px 20px; text-align:center;
    box-shadow:0 2px 12px rgba(232,116,58,0.3);
    font-size:13px; letter-spacing:0.05em;
  }
  .mande-preview-banner-inner { display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap; }
  .mande-preview-banner-badge {
    background:rgba(255,255,255,0.25); padding:3px 12px; border-radius:999px;
    font-size:11px; font-weight:700; letter-spacing:2px;
  }
  .mande-preview-banner-text strong { font-weight:700; }

  /* バナー表示時は本文を下にオフセット（ヘッダーも） */
  body:has(.mande-preview-banner) #header { top:38px; }
  body:has(.mande-preview-banner) { padding-top:38px; }

  @media (max-width:640px) {
    .mande-password-card { padding:44px 28px; border-radius:18px; }
    .mande-password-title { font-size:22px; }
    .mande-password-desc { font-size:13px; }
    .mande-preview-banner { padding:8px 12px; font-size:11px; }
    .mande-preview-banner-badge { font-size:9px; padding:2px 8px; letter-spacing:1.5px; }
    body:has(.mande-preview-banner) #header { top:34px; }
    body:has(.mande-preview-banner) { padding-top:34px; }
  }

  /* ==================================================
   * POST SINGLE - 記事個別ページ
   * ================================================== */
  .post-single { background:transparent; }

  /* --- Hero: 80%幅（段差なし、body色と統一） --- */
  .post-hero {
    position:relative; margin:80px auto 0; padding:64px 40px 56px;
    width:80%; max-width:1200px;
    background:var(--cream); overflow:hidden; border-radius:24px;
  }
  .post-hero::before {
    content:''; position:absolute; inset:0;
    background-image: radial-gradient(circle at 15% 25%, rgba(232,116,58,0.05) 0%, transparent 50%),
                      radial-gradient(circle at 85% 75%, rgba(232,116,58,0.06) 0%, transparent 50%);
    pointer-events:none;
  }
  .post-hero-inner {
    max-width:780px; margin:0 auto; position:relative; z-index:2; text-align:center;
  }
  .post-hero-meta {
    display:inline-flex; align-items:center; gap:14px; margin-bottom:26px;
    font-size:11px; letter-spacing:2px; color:var(--text-light);
    text-transform:uppercase; flex-wrap:wrap; justify-content:center;
  }
  .post-hero-badge {
    background:var(--orange); color:white; padding:5px 16px; border-radius:999px;
    font-size:11px; font-weight:700; letter-spacing:1.5px;
  }
  .post-hero-date { font-family:'Noto Serif JP',serif; letter-spacing:1.5px; }
  .post-hero-read { position:relative; padding-left:16px; color:var(--text); }
  .post-hero-read::before {
    content:''; position:absolute; left:0; top:50%; transform:translateY(-50%);
    width:8px; height:1px; background:var(--text-light);
  }
  .post-hero-title {
    font-family:'Shippori Mincho','Noto Serif JP',serif;
    font-size:34px; font-weight:700; line-height:1.65; letter-spacing:0.04em;
    color:var(--text); margin:0;
  }
  .post-hero-image {
    max-width:none; width:100%; margin:40px 0 0; aspect-ratio:16/9;
    background-size:cover; background-position:center;
    border-radius:14px; box-shadow:0 16px 40px rgba(0,0,0,0.12);
    position:relative; z-index:2;
  }

  /* --- Layout --- */
  .post-layout { background:transparent; padding:80px 32px 100px; }
  .post-main { max-width:780px; margin:0 auto; }

  /* --- TOC --- */
  .post-toc {
    background:var(--cream); border-left:4px solid var(--orange);
    padding:28px 32px; border-radius:0 14px 14px 0;
    margin:0 0 20px;
  }
  /* 本文内に配置された場合、前後の余白を調整 */
  .post-content .post-toc {
    margin:36px 0 20px;
  }
  .post-toc-title { display:flex; align-items:baseline; gap:14px; margin-bottom:18px; padding-bottom:14px; border-bottom:1px solid rgba(232,116,58,0.2); }
  .post-toc-label {
    font-size:11px; color:var(--orange); font-weight:700;
    letter-spacing:3px; text-transform:uppercase;
  }
  .post-toc-jp {
    font-family:'Shippori Mincho',serif; font-size:20px; font-weight:600; color:var(--text);
  }
  .post-toc-list {
    list-style:none; margin:0; padding:0;
    counter-reset:toc-counter;
    background:transparent;
    border-radius:0;
  }
  .post-toc-item {
    position:relative; margin:0; padding:0;
    background:transparent !important;
    border:none !important;
  }
  .post-toc-item::before { content:none !important; } /* 本文OLスタイルの番号を確実に消す */

  /* H2：大見出し（番号バッジ付き、大きめ太字） */
  .post-toc-h2 {
    counter-increment:toc-counter;
    padding:10px 0 10px 46px;
    border-top:1px solid rgba(232,116,58,0.14);
  }
  .post-toc-h2:first-child { border-top:none; }
  .post-toc-h2::after {
    content:counter(toc-counter,decimal-leading-zero);
    position:absolute; left:0; top:10px;
    width:34px; height:22px;
    display:flex; align-items:center; justify-content:center;
    background:var(--orange); color:white;
    font-family:'Noto Serif JP',serif; font-size:11px; font-weight:700;
    letter-spacing:0.8px; border-radius:4px;
  }
  .post-toc-h2 > a {
    color:var(--text); text-decoration:none;
    font-family:'Shippori Mincho',serif;
    font-size:15px; font-weight:600; line-height:1.55;
    letter-spacing:0.02em;
    transition:color 0.3s, padding 0.3s;
    display:inline-block;
  }
  .post-toc-h2 > a:hover { color:var(--orange); padding-left:4px; }

  /* H3：子見出し（インデント + 小さめ + 点マーカー） */
  .post-toc-h3 {
    padding:4px 0 4px 62px;
  }
  .post-toc-h3::after {
    content:''; position:absolute; left:46px; top:14px;
    width:10px; height:2px; background:var(--orange-pale);
    border-radius:2px;
  }
  .post-toc-h3 > a {
    color:var(--text-light); text-decoration:none;
    font-size:13px; font-weight:400; line-height:1.6;
    letter-spacing:0.02em;
    transition:color 0.3s, padding 0.3s;
    display:inline-block;
  }
  .post-toc-h3 > a:hover { color:var(--orange); padding-left:4px; }

  /* --- 編集部ブロック（目次の直下に配置） --- */
  .post-editors {
    margin:0 0 56px;
    padding:24px 28px;
    background:linear-gradient(135deg, #FFFAF3 0%, #FFF4EC 100%);
    border:1px solid rgba(232,116,58,0.18);
    border-radius:14px;
    box-shadow:0 4px 18px rgba(232,116,58,0.06);
  }
  .post-content .post-editors { margin:0 0 56px; }
  .post-editors-head {
    display:flex; align-items:baseline; gap:12px;
    margin-bottom:16px; padding-bottom:12px;
    border-bottom:1px dashed rgba(232,116,58,0.25);
  }
  .post-editors-label {
    font-size:10px; color:var(--orange); font-weight:700;
    letter-spacing:3px; text-transform:uppercase;
  }
  .post-editors-jp {
    font-family:'Shippori Mincho',serif; font-size:15px; font-weight:600;
    color:var(--text);
  }
  .post-editors-card {
    display:grid; grid-template-columns:120px 1fr;
    gap:24px; align-items:center;
  }
  .post-editors-icon {
    width:120px; height:120px; border-radius:50%;
    background:linear-gradient(135deg, var(--orange) 0%, #E8743A 100%);
    color:white;
    display:flex; align-items:center; justify-content:center;
    font-family:'Shippori Mincho',serif; font-size:46px; font-weight:600;
    box-shadow:0 10px 24px rgba(232,116,58,0.3);
    letter-spacing:0;
  }
  .post-editors-logo {
    width:120px; height:120px; border-radius:50%;
    background:white;
    padding:10px;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 10px 24px rgba(232,116,58,0.18);
    border:1px solid rgba(232,116,58,0.18);
  }
  .post-editors-logo img {
    max-width:100%; max-height:100%; width:auto; height:auto;
    object-fit:contain; display:block;
  }
  .post-editors-body { min-width:0; }
  .post-editors-name {
    font-family:'Shippori Mincho',serif; font-size:16px; font-weight:600;
    color:var(--text); margin-bottom:6px; letter-spacing:0.03em;
  }
  .post-editors-desc {
    font-size:13px; line-height:1.85; color:var(--text-light);
    letter-spacing:0.02em;
  }

  /* --- Post Content Typography --- */
  .post-content {
    font-size:16px; line-height:2.1;
    color:var(--text); letter-spacing:0.04em;
    font-feature-settings:"palt";
  }
  .post-content > *:first-child { margin-top:0; }
  .post-content > *:last-child { margin-bottom:0; }

  /* パラグラフ */
  .post-content p {
    margin:0 0 32px; line-height:2.1;
    text-align:justify; text-justify:inter-character;
  }
  /* リード文（記事冒頭の印象的な段落） */
  .post-content p.lead {
    font-family:'Shippori Mincho',serif;
    font-size:18px; line-height:2.15; letter-spacing:0.05em;
    color:var(--text); font-weight:500;
    padding:18px 0 28px; margin-bottom:36px;
    border-bottom:1px solid rgba(232,116,58,0.15);
  }

  /* H1 - 本文中はH2/H3が主 */
  .post-content h1 {
    font-family:'Shippori Mincho',serif; font-size:32px; font-weight:700;
    margin:72px 0 28px; line-height:1.55;
  }

  /* H2 - メインセクション見出し */
  .post-content h2 {
    font-family:'Shippori Mincho','Noto Serif JP',serif;
    font-size:26px; font-weight:700; line-height:1.55; letter-spacing:0.03em;
    margin:80px 0 32px; padding:24px 0 20px;
    border-top:1px solid rgba(0,0,0,0.08);
    position:relative; color:var(--text);
  }
  .post-content h2::before {
    content:''; position:absolute; top:-1px; left:0;
    width:56px; height:2px; background:var(--orange);
  }

  /* H3 - サブ見出し */
  .post-content h3 {
    font-family:'Shippori Mincho','Noto Serif JP',serif;
    font-size:20px; font-weight:700; line-height:1.6; letter-spacing:0.02em;
    margin:56px 0 22px; padding-left:18px; position:relative;
    color:var(--text);
  }
  .post-content h3::before {
    content:''; position:absolute; left:0; top:0.4em;
    width:4px; height:1em;
    background:linear-gradient(to bottom, var(--orange), var(--orange-light));
    border-radius:2px;
  }

  /* H4 */
  .post-content h4 {
    font-family:'Shippori Mincho',serif; font-size:17px; font-weight:700;
    margin:44px 0 18px; color:var(--orange); letter-spacing:0.02em;
  }

  /* リスト（.post-toc-list と編集部ブロックは除外） */
  .post-content ul:not(.post-toc-list), .post-content ol:not(.post-toc-list) {
    margin:0 0 36px; padding:24px 28px 24px 28px;
    background:var(--cream); border-radius:14px;
    list-style:none;
  }
  .post-content ul:not(.post-toc-list) > li, .post-content ol:not(.post-toc-list) > li {
    margin:0; padding:10px 0 10px 32px;
    line-height:1.9; position:relative; list-style:none;
    border-bottom:1px dashed rgba(232,116,58,0.2);
  }
  .post-content ul:not(.post-toc-list) > li:last-child, .post-content ol:not(.post-toc-list) > li:last-child { border-bottom:none; }
  .post-content ul:not(.post-toc-list) > li::before {
    content:''; position:absolute; left:4px; top:0.95em;
    width:8px; height:8px; border-radius:50%;
    background:var(--orange);
    box-shadow:0 0 0 3px var(--orange-pale);
  }
  .post-content ol:not(.post-toc-list) { counter-reset:ol-counter; }
  .post-content ol:not(.post-toc-list) > li { counter-increment:ol-counter; padding-left:40px; }
  .post-content ol:not(.post-toc-list) > li::before {
    content:counter(ol-counter,decimal-leading-zero);
    position:absolute; left:0; top:0.65em;
    font-size:13px; font-weight:700;
    color:var(--orange); font-family:'Shippori Mincho',serif;
    letter-spacing:0.5px;
  }
  .post-content li li { margin-top:8px; padding-left:22px; border-bottom:none !important; }
  .post-content li ul, .post-content li ol { margin:10px 0 0; padding:0; background:transparent; }

  /* 強調 */
  .post-content strong, .post-content b {
    font-weight:700; color:var(--text);
    background:linear-gradient(transparent 65%, rgba(232,116,58,0.25) 65%);
    padding:0 2px;
  }
  .post-content em { font-style:italic; color:var(--orange); font-weight:500; }

  /* リンク */
  .post-content a:not(.post-related-card) {
    color:var(--orange); text-decoration:none; border-bottom:1.5px solid rgba(232,116,58,0.3);
    transition:all 0.3s; padding-bottom:1px;
  }
  .post-content a:not(.post-related-card):hover { border-color:var(--orange); background:var(--orange-pale); }

  /* 引用 */
  .post-content blockquote {
    margin:40px 0; padding:28px 32px;
    background:var(--cream); border-left:4px solid var(--orange);
    border-radius:0 14px 14px 0;
    font-family:'Shippori Mincho',serif; font-style:italic;
    font-size:17px; line-height:1.9; color:var(--text);
    position:relative;
  }
  .post-content blockquote::before {
    content:'"'; position:absolute; top:-8px; left:16px;
    font-size:60px; color:var(--orange); opacity:0.3;
    font-family:'Shippori Mincho',serif; line-height:1;
  }
  .post-content blockquote p:last-child { margin-bottom:0; }
  .post-content blockquote cite { display:block; margin-top:16px; font-size:13px; color:var(--text-light); font-style:normal; letter-spacing:0.05em; }

  /* 画像 */
  .post-content img,
  .post-content figure img {
    display:block; max-width:100%; height:auto;
    margin:40px auto; border-radius:14px;
    box-shadow:0 12px 36px rgba(0,0,0,0.08);
  }
  .post-content figure { margin:40px 0; text-align:center; }
  .post-content figcaption {
    margin-top:14px; font-size:13px; color:var(--text-light);
    font-family:'Shippori Mincho',serif; letter-spacing:0.05em;
    line-height:1.7;
  }
  .post-content .wp-block-image.alignwide { margin-left:-40px; margin-right:-40px; }
  .post-content .wp-block-image.alignfull {
    margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
    max-width:100vw;
  }
  .post-content .wp-block-image.alignfull img { border-radius:0; }

  /* コード */
  .post-content code {
    background:var(--cream); padding:2px 8px; border-radius:4px;
    font-family:'Courier New',monospace; font-size:0.9em;
    color:var(--orange);
  }
  .post-content pre {
    background:var(--navy); color:#fff; padding:24px 28px;
    border-radius:12px; overflow-x:auto; margin:28px 0;
    font-family:'Courier New',monospace; font-size:14px; line-height:1.7;
  }
  .post-content pre code { background:transparent; color:inherit; padding:0; }

  /* 表 */
  .post-content table {
    width:100%; border-collapse:separate; border-spacing:0;
    margin:32px 0; border-radius:12px; overflow:hidden;
    box-shadow:0 4px 16px rgba(0,0,0,0.06);
  }
  .post-content th {
    background:var(--orange); color:white; padding:14px 18px;
    font-weight:700; text-align:left; font-size:14px; letter-spacing:1px;
  }
  .post-content td { padding:14px 18px; background:white; border-bottom:1px solid rgba(0,0,0,0.06); font-size:15px; }
  .post-content tbody tr:last-child td { border-bottom:none; }
  .post-content tbody tr:nth-child(even) td { background:var(--cream); }

  /* 区切り線 */
  .post-content hr {
    border:none; height:1px; margin:56px auto; width:120px;
    background:linear-gradient(to right, transparent, var(--orange), transparent);
    position:relative;
  }
  .post-content hr::before, .post-content hr::after {
    content:''; position:absolute; top:-3px; width:7px; height:7px;
    border-radius:50%; background:var(--orange);
  }
  .post-content hr::before { left:50%; margin-left:-35px; }
  .post-content hr::after { left:50%; margin-left:28px; }

  /* WordPress ブロックエディタ対応 */
  .post-content .wp-block-separator { border:none !important; }
  .post-content .wp-block-quote { margin:40px 0; }
  .post-content .wp-block-pullquote {
    text-align:center; padding:40px 20px; margin:48px 0;
    border-top:2px solid var(--orange); border-bottom:2px solid var(--orange);
    font-family:'Shippori Mincho',serif; font-size:20px; font-style:italic;
    color:var(--text);
  }

  /* --- Shop Quick Info (店舗情報早見表) --- */
  .shop-quickinfo {
    background:linear-gradient(135deg, var(--cream) 0%, #FFF0E4 100%);
    border-radius:18px; padding:28px 32px; margin-bottom:56px;
    border:1px solid rgba(232,116,58,0.1);
  }
  .shop-quickinfo-head {
    display:flex; align-items:baseline; gap:14px; margin-bottom:20px;
    padding-bottom:16px; border-bottom:1px solid rgba(232,116,58,0.2);
  }
  .shop-quickinfo-label { font-size:11px; color:var(--orange); font-weight:700; letter-spacing:3px; text-transform:uppercase; }
  .shop-quickinfo-jp { font-family:'Shippori Mincho',serif; font-size:18px; font-weight:600; color:var(--text); letter-spacing:0.04em; }
  .shop-quickinfo-grid {
    display:grid; grid-template-columns:repeat(2,1fr); gap:16px 32px;
    margin:0;
  }
  .shop-quickinfo-grid > div {
    display:grid; grid-template-columns:90px 1fr; gap:12px;
    padding:6px 0; align-items:start;
  }
  .shop-quickinfo-grid dt {
    margin:0; font-size:11px; color:var(--text-light);
    letter-spacing:2px; font-weight:600; padding-top:2px;
  }
  .shop-quickinfo-grid dd {
    margin:0; font-size:14px; line-height:1.6; color:var(--text);
    font-family:'Shippori Mincho',serif;
  }
  .shop-quickinfo-grid dd a { color:var(--orange); text-decoration:none; border-bottom:1px solid rgba(232,116,58,0.3); }

  /* --- Shop Gallery --- */
  .shop-gallery-section { margin-top:72px; }
  .shop-related-head { margin-bottom:24px; text-align:center; }
  .shop-related-label {
    display:block; font-size:11px; color:var(--orange);
    font-weight:700; letter-spacing:3px; text-transform:uppercase; margin-bottom:8px;
  }
  .shop-related-title {
    font-family:'Shippori Mincho',serif; font-size:24px; font-weight:700;
    margin:0; color:var(--text); letter-spacing:0.05em;
  }
  /* --- Shop Gallery 自動フェードスライドショー --- */
  .shop-gallery {
    position:relative;
    width:100%; aspect-ratio:16/10;
    border-radius:16px; overflow:hidden;
    background:var(--cream);
    box-shadow:0 12px 36px rgba(0,0,0,0.12);
  }
  .shop-gallery-item {
    position:absolute; inset:0;
    background-size:cover; background-position:center;
    opacity:0;
    transition:opacity 1.4s ease-in-out;
    will-change:opacity;
  }
  .shop-gallery-item.is-active {
    opacity:1;
  }
  /* ドット（現在のスライド表示） */
  .shop-gallery-dots {
    position:absolute; left:0; right:0; bottom:18px;
    display:flex; justify-content:center; gap:8px;
    z-index:2;
  }
  .shop-gallery-dot {
    width:8px; height:8px; border-radius:50%;
    background:rgba(255,255,255,0.55);
    border:none; padding:0; cursor:pointer;
    transition:all 0.4s cubic-bezier(0.22,1,0.36,1);
    box-shadow:0 2px 6px rgba(0,0,0,0.25);
  }
  .shop-gallery-dot.is-active {
    background:white; width:24px; border-radius:999px;
  }
  .shop-gallery-dot:hover { background:rgba(255,255,255,0.85); }
  /* 下部のグラデーション（ドットが読みやすく） */
  .shop-gallery::after {
    content:''; position:absolute; left:0; right:0; bottom:0; height:80px;
    background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.35) 100%);
    pointer-events:none; z-index:1;
  }

  /* --- Shop Owner Card --- */
  .shop-owner-section { margin-top:72px; }
  .shop-owner-card {
    display:grid; grid-template-columns:140px 1fr; gap:28px;
    background:white; border-radius:18px; padding:32px;
    box-shadow:0 8px 30px rgba(0,0,0,0.06); border:1px solid rgba(232,116,58,0.1);
    align-items:flex-start;
  }
  .shop-owner-photo {
    width:140px; height:140px; border-radius:50%;
    background-size:cover; background-position:center;
    border:4px solid var(--orange-pale); flex-shrink:0;
    box-shadow:0 8px 24px rgba(0,0,0,0.1);
  }
  .shop-owner-photo-blank {
    background:linear-gradient(135deg, var(--orange-pale), var(--cream));
    display:flex; align-items:center; justify-content:center;
  }
  .shop-owner-photo-blank::after { content:'🧑'; font-size:60px; opacity:0.5; }
  .shop-owner-name {
    font-family:'Shippori Mincho',serif; font-size:20px; font-weight:700;
    color:var(--text); margin-bottom:12px;
    display:flex; align-items:baseline; gap:12px; flex-wrap:wrap;
  }
  .shop-owner-role { font-size:12px; color:var(--orange); font-weight:600; letter-spacing:1.5px; }
  .shop-owner-message {
    margin:0; padding:16px 20px;
    background:var(--cream); border-left:3px solid var(--orange);
    border-radius:0 10px 10px 0;
    font-family:'Shippori Mincho',serif; font-style:italic;
    font-size:15px; line-height:1.9; color:var(--text);
  }

  /* --- Shop SNS Links --- */
  .shop-sns-section { margin-top:72px; }
  .shop-sns-links { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; }
  .shop-sns-link {
    display:flex; align-items:center; justify-content:space-between;
    padding:16px 20px; background:white; border-radius:12px;
    border:1px solid rgba(0,0,0,0.06); text-decoration:none;
    transition:all 0.4s cubic-bezier(0.22,1,0.36,1);
  }
  .shop-sns-link span { font-family:'Shippori Mincho',serif; font-size:14px; font-weight:600; color:var(--text); letter-spacing:0.05em; }
  .shop-sns-link em { font-style:normal; color:var(--orange); font-weight:700; transition:transform 0.3s; }
  .shop-sns-link:hover { transform:translateY(-3px); box-shadow:0 10px 24px rgba(0,0,0,0.08); border-color:var(--orange); }
  .shop-sns-link:hover em { transform:translateX(4px); }
  .shop-sns-website:hover { border-color:var(--orange); }
  .shop-sns-instagram:hover { border-color:#E1306C; }
  .shop-sns-twitter:hover { border-color:#000; }
  .shop-sns-tabelog:hover { border-color:#ED6C00; }

  /* --- Shop Related Articles --- */
  .shop-related-articles-grid {
    display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:16px;
  }
  .shop-related-article-card {
    display:block; background:white; border-radius:14px; overflow:hidden;
    text-decoration:none; color:inherit; border:1px solid rgba(0,0,0,0.05);
    transition:all 0.5s cubic-bezier(0.22,1,0.36,1);
  }
  .shop-related-article-card:hover { transform:translateY(-5px); box-shadow:0 14px 34px rgba(232,116,58,0.12); border-color:var(--orange-pale); }
  .shop-related-article-img { aspect-ratio:16/9; background-size:cover; background-position:center; }
  .shop-related-article-body { padding:16px 18px; }
  .shop-related-article-tag {
    display:inline-block; font-size:10px; color:var(--orange);
    font-weight:700; letter-spacing:1.5px; margin-bottom:8px; text-transform:uppercase;
  }
  .shop-related-article-title {
    font-family:'Shippori Mincho',serif; font-size:14px; font-weight:600;
    line-height:1.5; color:var(--text); margin:0;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
  }

  /* --- Related Shops --- */
  .post-related-shops { margin-top:80px; padding:40px 36px; background:var(--cream); border-radius:20px; }
  .post-related-head { margin-bottom:24px; }
  .post-related-label {
    display:block; font-size:11px; color:var(--orange);
    font-weight:700; letter-spacing:2.5px; text-transform:uppercase;
    margin-bottom:8px;
  }
  .post-related-title {
    font-family:'Shippori Mincho',serif; font-size:24px; font-weight:700; margin:0;
    color:var(--text);
  }
  .post-related-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px; }
  .post-related-card {
    display:flex; gap:14px; align-items:center; padding:14px;
    background:white; border-radius:14px; text-decoration:none !important;
    color:inherit; border:1px solid transparent;
    transition:all 0.4s cubic-bezier(0.22,1,0.36,1);
  }
  .post-related-card:hover { transform:translateY(-3px); border-color:var(--orange-pale); box-shadow:0 8px 24px rgba(232,116,58,0.12); background:white !important; }
  .post-related-card img { width:72px; height:72px; border-radius:10px; object-fit:cover; flex-shrink:0; }
  .post-related-info { flex:1; min-width:0; }
  .post-related-cat { font-size:10px; color:var(--orange); font-weight:700; letter-spacing:1.5px; margin-bottom:4px; text-transform:uppercase; }
  .post-related-name { font-family:'Shippori Mincho',serif; font-weight:600; font-size:15px; line-height:1.4; color:var(--text); }
  .post-related-arrow { color:var(--orange); font-size:22px; font-weight:300; }

  /* --- Back Button --- */
  .post-back { margin-top:60px; text-align:center; }
  .post-back-btn {
    display:inline-flex; align-items:center; gap:8px;
    padding:14px 36px; border:1.5px solid var(--orange); color:var(--orange);
    border-radius:999px; text-decoration:none; font-weight:600; font-size:14px;
    letter-spacing:1px; transition:all 0.4s cubic-bezier(0.22,1,0.36,1);
    background:transparent;
  }
  .post-back-btn:hover { background:var(--orange); color:white; transform:translateY(-2px); box-shadow:0 8px 24px rgba(232,116,58,0.3); }

  /* --- Post Mobile --- */
  @media (max-width:640px) {
    .post-hero { margin:72px auto 0; width:92%; padding:36px 22px 32px; border-radius:18px; }
    .post-hero-meta { gap:10px; margin-bottom:16px; font-size:10px; }
    .post-hero-badge { padding:4px 12px; font-size:10px; }
    .post-hero-title { font-size:21px; line-height:1.65; letter-spacing:0.03em; }
    .post-hero-image { margin-top:26px; border-radius:10px; aspect-ratio:4/3; }

    /* ショップ固有セクション（モバイル） */
    .shop-quickinfo { padding:20px 22px; margin-bottom:40px; border-radius:14px; }
    .shop-quickinfo-head { margin-bottom:14px; padding-bottom:12px; }
    .shop-quickinfo-jp { font-size:15px; }
    .shop-quickinfo-grid { grid-template-columns:1fr; gap:8px 0; }
    .shop-quickinfo-grid > div { grid-template-columns:72px 1fr; padding:8px 0; border-bottom:1px dashed rgba(232,116,58,0.15); }
    .shop-quickinfo-grid > div:last-child { border-bottom:none; }
    .shop-quickinfo-grid dt { font-size:10px; letter-spacing:1.5px; }
    .shop-quickinfo-grid dd { font-size:13px; }

    .shop-gallery-section, .shop-owner-section, .shop-sns-section { margin-top:52px; }
    .shop-related-title { font-size:18px; }
    .shop-gallery { aspect-ratio:4/3; border-radius:12px; }
    .shop-gallery-item { border-radius:0; }
    .shop-gallery-dots { bottom:12px; gap:6px; }
    .shop-gallery-dot { width:6px; height:6px; }
    .shop-gallery-dot.is-active { width:18px; }

    .shop-owner-card { grid-template-columns:90px 1fr; gap:16px; padding:20px; border-radius:14px; }
    .shop-owner-photo { width:90px; height:90px; border-width:3px; }
    .shop-owner-photo-blank::after { font-size:40px; }
    .shop-owner-name { font-size:16px; gap:8px; margin-bottom:10px; }
    .shop-owner-role { font-size:11px; }
    .shop-owner-message { padding:12px 14px; font-size:13px; line-height:1.85; }

    .shop-sns-links { grid-template-columns:1fr 1fr; gap:8px; }
    .shop-sns-link { padding:12px 14px; }
    .shop-sns-link span { font-size:12px; }

    .shop-related-articles-grid { grid-template-columns:1fr; }
    .shop-related-article-body { padding:12px 14px; }
    .shop-related-article-title { font-size:13px; }

    .post-layout { padding:40px 20px 60px; }

    .post-toc { padding:20px 22px; margin:0 0 16px; }
    .post-content .post-toc { margin:28px 0 16px; }
    .post-toc-jp { font-size:17px; }

    .post-toc-h2 { padding:9px 0 9px 40px; }
    .post-toc-h2::after { width:30px; height:20px; font-size:10px; top:9px; }
    .post-toc-h2 > a { font-size:14px; line-height:1.5; }

    .post-toc-h3 { padding:3px 0 3px 54px; }
    .post-toc-h3::after { left:40px; top:13px; width:9px; }
    .post-toc-h3 > a { font-size:12.5px; line-height:1.55; }

    /* 編集部ブロック（モバイル） */
    .post-editors { padding:18px 20px; margin:0 0 40px; border-radius:12px; }
    .post-content .post-editors { margin:0 0 40px; }
    .post-editors-head { margin-bottom:12px; padding-bottom:10px; gap:10px; }
    .post-editors-label { font-size:9px; letter-spacing:2px; }
    .post-editors-jp { font-size:13px; }
    .post-editors-card { grid-template-columns:92px 1fr; gap:16px; }
    .post-editors-icon { width:92px; height:92px; font-size:36px; }
    .post-editors-logo { width:92px; height:92px; padding:8px; border-radius:50%; }
    .post-editors-name { font-size:14px; }
    .post-editors-desc { font-size:12px; line-height:1.75; }

    .post-content { font-size:15px; line-height:1.95; }
    .post-content p { margin-bottom:22px; }
    .post-content h2 { font-size:19px; margin:52px 0 22px; padding:18px 0 14px; }
    .post-content h3 { font-size:16px; margin:36px 0 16px; padding-left:14px; }
    .post-content h4 { font-size:15px; margin:28px 0 12px; }
    .post-content ul:not(.post-toc-list) > li, .post-content ol:not(.post-toc-list) > li { padding-left:24px; margin-bottom:8px; }
    .post-content ol:not(.post-toc-list) > li { padding-left:34px; }
    .post-content ol:not(.post-toc-list) > li::before { width:20px; height:20px; font-size:10px; }
    .post-content blockquote { padding:20px 22px; font-size:15px; margin:28px 0; }
    .post-content blockquote::before { font-size:44px; top:-4px; }
    .post-content img, .post-content figure img { margin:28px auto; border-radius:10px; }
    .post-content .wp-block-image.alignwide { margin-left:0; margin-right:0; }
    .post-content table { display:block; overflow-x:auto; }

    .post-related-shops { padding:28px 20px; margin-top:52px; border-radius:14px; }
    .post-related-title { font-size:18px; }
    .post-related-grid { grid-template-columns:1fr; }
    .post-related-card { padding:10px; gap:10px; }
    .post-related-card img { width:56px; height:56px; }
    .post-related-name { font-size:13px; }

    .post-back { margin-top:40px; }
    .post-back-btn { padding:12px 28px; font-size:13px; }
  }

  /* ===== MOBILE OVERRIDES (末尾に配置することで確実に適用) ===== */
  @media (max-width:640px) {
    /* エリアお店プレビュー：3カラム→1カラム横並びカード */
    .area-shops-preview {
      padding:22px 18px; border-radius:14px; margin:24px 14px 0;
    }
    .area-shops-head { margin-bottom:18px; }
    .area-shops-title { font-size:19px; line-height:1.5; }
    .area-shops-grid {
      display:flex !important; flex-direction:column !important;
      grid-template-columns:1fr !important;
      gap:12px !important; margin-bottom:18px !important;
    }
    .area-shop-card {
      display:flex !important; flex-direction:row !important;
      align-items:stretch;
      border-radius:12px;
      background:white;
    }
    .area-shop-img {
      width:110px !important; min-width:110px !important;
      height:auto !important; min-height:110px !important;
    }
    .area-shop-body {
      padding:12px 14px !important; flex:1; min-width:0;
      display:flex; flex-direction:column; justify-content:center;
    }
    .area-shop-cat {
      font-size:9.5px !important; letter-spacing:1px; margin-bottom:4px;
      white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    }
    .area-shop-name {
      font-size:14px !important; line-height:1.45; margin-bottom:4px;
      display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
    }
    .area-shop-desc {
      font-size:11px !important; line-height:1.5;
      -webkit-line-clamp:2 !important;
    }
    .area-shops-more-btn { padding:10px 22px; font-size:12px; }
  }

  /* ========================================================
     エリア特集ページ (page-areas.php)
     ======================================================== */
  .area-index-page { background:var(--page-bg); padding-bottom:80px; }
  .area-index-page .map-section { padding-top:140px; padding-bottom:72px; }

  .area-index-guide-head {
    text-align:center;
    padding:80px 32px 48px;
    border-top:1px dashed rgba(232,116,58,0.25);
    margin-top:40px;
  }
  .area-index-guide-head-inner { max-width:760px; margin:0 auto; }
  .area-index-hero-label {
    display:inline-block;
    font-size:11px; color:var(--orange); font-weight:700;
    letter-spacing:4px; text-transform:uppercase;
    padding:6px 18px; background:white; border-radius:999px;
    border:1px solid rgba(232,116,58,0.2);
  }
  .area-index-guide-title {
    font-family:'Shippori Mincho',serif; font-weight:700;
    font-size:36px; line-height:1.35; color:var(--text);
    margin:18px 0 18px; letter-spacing:0.04em;
  }
  .area-index-guide-desc {
    font-size:14.5px; line-height:2; color:var(--text-light);
    letter-spacing:0.04em;
  }
  .area-index-list { padding:20px 0 0; }
  .area-index-inner {
    max-width:1100px; margin:0 auto; padding:0 32px;
    display:flex; flex-direction:column; gap:72px;
  }
  .area-index-card {
    display:grid; grid-template-columns:1fr 1fr; gap:48px;
    align-items:center;
  }
  .area-index-card.reverse { direction:rtl; }
  .area-index-card.reverse > * { direction:ltr; }

  .area-index-card-img {
    position:relative;
    aspect-ratio:4/3;
    background-size:cover; background-position:center;
    border-radius:18px; overflow:hidden;
    box-shadow:0 16px 50px rgba(0,0,0,0.1);
  }
  .area-index-card-img::after {
    content:''; position:absolute; inset:0;
    background:linear-gradient(180deg, rgba(0,0,0,0) 40%, rgba(0,0,0,0.3) 100%);
  }
  .area-index-card-num {
    position:absolute; top:24px; left:24px; z-index:2;
    font-family:'Noto Serif JP',serif; font-size:56px; font-weight:300;
    color:white;
    letter-spacing:2px;
    text-shadow:0 4px 18px rgba(0,0,0,0.3);
  }

  .area-index-card-body { padding:8px 0; }
  .area-index-card-label {
    display:inline-block;
    font-size:11px; color:var(--orange); font-weight:700;
    letter-spacing:3px; text-transform:uppercase;
    margin-bottom:10px;
  }
  .area-index-card-name {
    font-family:'Shippori Mincho',serif; font-weight:600;
    font-size:30px; line-height:1.45; color:var(--text);
    margin:0 0 18px; letter-spacing:0.03em;
  }
  .area-index-card-desc {
    font-size:14.5px; line-height:2; color:var(--text-light);
    margin-bottom:22px; letter-spacing:0.04em;
  }
  .area-index-card-stats {
    display:flex; gap:12px; align-items:center;
    margin-bottom:24px; padding-bottom:20px;
    border-bottom:1px dashed rgba(232,116,58,0.25);
  }
  .area-index-card-count {
    font-size:13px; color:var(--text-light);
    letter-spacing:0.05em;
  }
  .area-index-card-count strong {
    font-family:'Shippori Mincho',serif;
    font-size:24px; color:var(--orange); font-weight:700;
    margin-right:4px;
  }
  .area-index-card-cities {
    display:flex; flex-direction:column; gap:10px;
  }
  .area-index-city-link {
    display:flex; align-items:center; gap:12px;
    padding:14px 20px;
    background:white; border:1px solid rgba(232,116,58,0.15);
    border-radius:12px;
    text-decoration:none; color:var(--text);
    transition:all 0.4s cubic-bezier(0.22,1,0.36,1);
  }
  .area-index-city-link:hover {
    background:var(--cream); border-color:var(--orange);
    transform:translateX(4px);
    box-shadow:0 6px 20px rgba(232,116,58,0.12);
  }
  .area-index-city-name {
    font-family:'Shippori Mincho',serif; font-weight:600;
    font-size:15px; flex:1;
  }
  .area-index-city-count {
    font-size:12px; color:var(--orange); font-weight:700;
    padding:3px 10px; background:var(--orange-pale); border-radius:999px;
    letter-spacing:0.8px;
  }
  .area-index-city-arrow {
    font-size:20px; color:var(--orange); font-weight:300;
    line-height:1;
    transition:transform 0.3s;
  }
  .area-index-city-link:hover .area-index-city-arrow { transform:translateX(3px); }

  .area-index-page .post-back { margin-top:64px; }

  /* モバイル */
  @media (max-width:640px) {
    .area-index-page .map-section { padding-top:96px; padding-bottom:40px; }
    .area-index-guide-head { padding:56px 22px 32px; margin-top:24px; }
    .area-index-guide-title { font-size:22px; margin:14px 0 12px; }
    .area-index-guide-desc { font-size:13px; line-height:1.85; }
    .area-index-guide-desc br { display:none; }
    .area-index-inner { padding:0 20px; gap:48px; }
    .area-index-card {
      grid-template-columns:1fr !important; gap:20px;
    }
    .area-index-card.reverse { direction:ltr; }
    .area-index-card-img { aspect-ratio:16/10; border-radius:14px; }
    .area-index-card-num { font-size:40px; top:16px; left:16px; }
    .area-index-card-label { font-size:10px; letter-spacing:2px; margin-bottom:8px; }
    .area-index-card-name { font-size:22px; margin-bottom:12px; }
    .area-index-card-desc { font-size:13px; line-height:1.85; margin-bottom:16px; }
    .area-index-card-stats { margin-bottom:18px; padding-bottom:16px; }
    .area-index-card-count strong { font-size:20px; }
    .area-index-city-link { padding:12px 16px; border-radius:10px; }
    .area-index-city-name { font-size:14px; }
    .area-index-city-count { font-size:11px; padding:2px 8px; }
  }

  /* PCのみ表示要素 */
  .pc-only { display:inline; }
  @media (max-width:640px) {
    .pc-only { display:none; }
  }

  /* ========================================================
     ページロード時のふわっとアニメーション
     ======================================================== */
  @keyframes mandePageFade {
    0%   { opacity:0; transform:translateY(12px); }
    100% { opacity:1; transform:translateY(0); }
  }
  @keyframes mandeSoftFade {
    0%   { opacity:0; }
    100% { opacity:1; }
  }

  /* ヘッダーは上からふわっと */
  .header {
    animation:mandeSoftFade 0.9s cubic-bezier(0.22,1,0.36,1) both;
  }

  /* 主要セクション：少しだけ下から出現 */
  .hero,
  .section,
  .post-hero,
  .post-layout,
  .archive-hero,
  .archive-section,
  .area-archive-hero,
  .area-archive-section,
  .area-index-page > section,
  .map-section,
  .numbers-banner,
  .reading-section,
  .book-shelf-section,
  .pickup-section {
    animation:mandePageFade 0.95s cubic-bezier(0.22,1,0.36,1) both;
  }

  /* セクションごとに少しずつディレイを入れて、連鎖的にふわっと */
  .hero { animation-delay:80ms; }
  .section:nth-of-type(1), .pickup-section { animation-delay:160ms; }
  .section:nth-of-type(2), .numbers-banner { animation-delay:240ms; }
  .section:nth-of-type(3), .reading-section { animation-delay:320ms; }
  .section:nth-of-type(4), .book-shelf-section { animation-delay:400ms; }
  .section:nth-of-type(5), .map-section { animation-delay:480ms; }

  /* 記事ページ：ヒーロー→目次→編集部→本文 の流れ */
  .post-hero { animation-delay:120ms; }
  .post-layout { animation-delay:280ms; }

  /* エリア特集ページ */
  .area-index-page > section:nth-of-type(1) { animation-delay:100ms; }
  .area-index-page > section:nth-of-type(2) { animation-delay:260ms; }
  .area-index-page > section:nth-of-type(3) { animation-delay:380ms; }

  /* アーカイブ */
  .archive-hero { animation-delay:80ms; }
  .archive-section { animation-delay:240ms; }

  /* ユーザーが「モーション減らす」を設定している場合は無効化 */
  @media (prefers-reduced-motion: reduce) {
    .header, .hero, .section, .post-hero, .post-layout,
    .archive-hero, .archive-section, .area-archive-hero,
    .area-archive-section, .area-index-page > section,
    .map-section, .numbers-banner, .reading-section,
    .book-shelf-section, .pickup-section {
      animation:none !important;
    }
  }

  /* ========================================================
     背景で歩く人アニメーション（試作）
     ======================================================== */
  .walking-people {
    position:fixed;
    bottom:0; left:0; right:0;
    height:90px;
    pointer-events:none;
    z-index:1;
    overflow:hidden;
  }
  .walking-person {
    position:absolute;
    bottom:0;
    width:26px;
    height:60px;
    color:var(--orange);
    opacity:0.14;
    will-change:transform;
    animation-name:wp-walk;
    animation-timing-function:linear;
    animation-iteration-count:infinite;
  }
  .walking-person svg {
    width:100%; height:100%; display:block;
    animation:wp-bob 0.55s ease-in-out infinite;
  }
  /* 4体の設定（速度・サイズ・遅延・位置違いで奥行き感） */
  .wp-1 {
    animation-duration:34s; animation-delay:0s;
    transform:scale(1);
    color:#D97B3F;
  }
  .wp-2 {
    animation-duration:46s; animation-delay:-18s;
    bottom:4px;
    transform:scale(0.78);
    opacity:0.11;
    color:#B8612D;
  }
  .wp-3 {
    animation-duration:52s; animation-delay:-32s;
    bottom:8px;
    transform:scale(0.66);
    opacity:0.09;
    color:#8C4A24;
  }
  .wp-4 {
    animation-duration:40s; animation-delay:-14s;
    transform:scale(0.92);
    opacity:0.13;
    color:#D97B3F;
  }
  /* 逆向きに歩く */
  .wp-reverse {
    animation-name:wp-walk-reverse;
  }
  .wp-reverse svg { transform:scaleX(-1); }

  /* 腕・脚の振り */
  .wp-arm-front, .wp-leg-front {
    transform-origin:top center;
    animation:wp-swing 0.55s ease-in-out infinite;
  }
  .wp-arm-back, .wp-leg-back {
    transform-origin:top center;
    animation:wp-swing-back 0.55s ease-in-out infinite;
  }

  @keyframes wp-walk {
    0%   { left:-50px; }
    100% { left:calc(100vw + 50px); }
  }
  @keyframes wp-walk-reverse {
    0%   { left:calc(100vw + 50px); }
    100% { left:-50px; }
  }
  @keyframes wp-bob {
    0%, 100% { transform:translateY(0); }
    50%      { transform:translateY(-1.5px); }
  }
  @keyframes wp-swing {
    0%, 100% { transform:rotate(-12deg); }
    50%      { transform:rotate(10deg); }
  }
  @keyframes wp-swing-back {
    0%, 100% { transform:rotate(10deg); }
    50%      { transform:rotate(-12deg); }
  }

  /* モバイルでは控えめに */
  @media (max-width:640px) {
    .walking-people { height:64px; }
    .walking-person { width:18px; height:42px; opacity:0.1; }
    .wp-3 { display:none; }
  }

  /* アクセシビリティ：モーション軽減設定を尊重 */
  @media (prefers-reduced-motion:reduce) {
    .walking-people { display:none; }
  }
