/* ============================================================
   NOUVATION – 耕作放棄地マッチングプラットフォーム
   Premium Design System
   ============================================================ */

*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }

:root {
  --brand-50:#f0fdf4; --brand-100:#dcfce7; --brand-200:#bbf7d0; --brand-300:#86efac;
  --brand-400:#4ade80; --brand-500:#22c55e; --brand-600:#16a34a; --brand-700:#15803d;
  --brand-800:#166534; --brand-900:#14532d; --brand-950:#052e16;
  --red-50:#fef2f2; --red-100:#fee2e2; --red-200:#fecaca; --red-500:#ef4444;
  --red-600:#dc2626; --red-700:#b91c1c;
  --amber-50:#fffbeb; --amber-100:#fef3c7; --amber-200:#fde68a; --amber-500:#f59e0b;
  --amber-600:#d97706; --amber-700:#b45309;
  --sky-50:#f0f9ff; --sky-100:#e0f2fe; --sky-200:#bae6fd; --sky-500:#0ea5e9;
  --sky-600:#0284c7; --sky-700:#0369a1;
  --gray-0:#fff; --gray-50:#f9fafb; --gray-100:#f3f4f6; --gray-200:#e5e7eb;
  --gray-300:#d1d5db; --gray-400:#9ca3af; --gray-500:#6b7280; --gray-600:#4b5563;
  --gray-700:#374151; --gray-800:#1f2937; --gray-900:#111827; --gray-950:#030712;
  --shadow-xs:0 1px 2px rgba(0,0,0,.04);
  --shadow-sm:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.04);
  --shadow-md:0 4px 6px -1px rgba(0,0,0,.08),0 2px 4px -2px rgba(0,0,0,.04);
  --shadow-lg:0 10px 15px -3px rgba(0,0,0,.08),0 4px 6px -4px rgba(0,0,0,.04);
  --shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.04);
  --shadow-2xl:0 25px 50px -12px rgba(0,0,0,.25);
  --r-sm:6px; --r-md:8px; --r-lg:12px; --r-xl:16px; --r-2xl:24px; --r-full:9999px;
  --ease:cubic-bezier(.4,0,.2,1); --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --header-h:56px; --sidebar-w:380px;
}

html { -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; overflow-x:hidden; width:100%; -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body {
  font-family:'Noto Sans JP','Inter',-apple-system,sans-serif;
  color:var(--gray-800); background:var(--gray-100);
  height:100vh; height:100dvh; display:flex; flex-direction:column; overflow:hidden;
  overflow-x:hidden; width:100%; max-width:100vw; overscroll-behavior:none;
  padding-top:env(safe-area-inset-top); padding-bottom:env(safe-area-inset-bottom);
  padding-left:env(safe-area-inset-left); padding-right:env(safe-area-inset-right);
}

/* ===== LANDING OVERLAY ===== */
.landing-overlay {
  position:fixed; inset:0; z-index:4000;
  background:linear-gradient(to top,#0a1a10 0%,#1a4a2a 15%,#2d6b3f 35%,#3a8a50 60%,#5aad6a 100%);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center;
  padding:calc(40px + env(safe-area-inset-top)) calc(24px + env(safe-area-inset-right)) calc(40px + env(safe-area-inset-bottom)) calc(24px + env(safe-area-inset-left));
  transition:opacity .6s var(--ease-out),transform .6s var(--ease-out);
  overflow-y:auto;
}
.landing-overlay.dismiss { opacity:0; transform:scale(1.05); pointer-events:none; }
.landing-particles { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
@keyframes particleFloat { 0%{transform:translateY(0) scale(1);opacity:0} 10%{opacity:.6} 90%{opacity:.6} 100%{transform:translateY(-100vh) scale(.5);opacity:0} }
.particle { position:absolute; background:rgba(134,239,172,.4); border-radius:50%; animation:particleFloat linear infinite; }
.landing-content { position:relative; z-index:1; }
.landing-logo { margin-bottom:24px; }
.landing-logo-img {
  width:90px; height:90px; object-fit:contain;
  filter:brightness(0) invert(1);
  opacity:.9;
  drop-shadow:0 2px 8px rgba(0,0,0,.3);
}
.landing-title {
  font-family:'Inter',sans-serif; font-size:52px; font-weight:900;
  letter-spacing:8px; color:#fff; text-transform:uppercase; margin-bottom:8px;
  display:inline-flex; align-items:center; gap:12px;
}
.landing-title-logo {
  width:1em; height:1em; object-fit:contain;
  filter:brightness(0) invert(1);
  opacity:.95;
  vertical-align:middle;
}
.landing-subtitle { font-size:16px; color:var(--brand-300); letter-spacing:3px; margin-bottom:32px; font-weight:500; }
.landing-desc { font-size:15px; color:rgba(255,255,255,.7); line-height:1.8; max-width:520px; margin:0 auto 40px; }
.landing-stats-row { display:flex; align-items:center; justify-content:center; margin-bottom:48px; flex-wrap:wrap; gap:8px 0; }
.landing-stat { display:flex; flex-direction:column; align-items:center; padding:0 18px; }
.landing-stat-divider { width:1px; height:40px; background:rgba(255,255,255,.15); }
.landing-stat-value { font-family:'Inter',sans-serif; font-size:32px; font-weight:800; color:#fff; margin-bottom:4px; }
.landing-stat-label { font-size:11px; color:rgba(255,255,255,.5); letter-spacing:1px; }
.landing-cta {
  display:inline-flex; align-items:center; gap:10px; background:#fff; color:var(--brand-800);
  font-size:16px; font-weight:700; padding:16px 40px; border-radius:var(--r-full);
  border:none; cursor:pointer; box-shadow:0 4px 24px rgba(0,0,0,.2);
  transition:transform .25s var(--ease-out),box-shadow .4s var(--ease-out),background .3s var(--ease),color .3s var(--ease); font-family:inherit;
}
.landing-cta:hover {
  transform:scale(1.05);
  box-shadow:0 0 20px rgba(34,197,94,.5),0 0 60px rgba(34,197,94,.3),0 8px 32px rgba(0,0,0,.2);
}
.landing-skip { margin-top:20px; font-size:12px; color:rgba(255,255,255,.3); }

/* Sponsors Section */
.landing-sponsors {
  margin-top:48px; padding-top:32px;
  border-top:1px solid rgba(255,255,255,.1);
}
.sponsors-label {
  font-size:11px; font-weight:600; letter-spacing:2px; text-transform:uppercase;
  color:rgba(255,255,255,.3); margin-bottom:20px;
}
.sponsors-row {
  display:flex; align-items:center; justify-content:center; gap:12px;
  flex-wrap:wrap; max-width:680px; margin:0 auto;
}
.sponsor-item {
  display:flex; flex-direction:column; align-items:center; gap:6px;
  padding:10px 14px; border-radius:var(--r-lg);
  background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.08);
  transition:all .3s var(--ease); cursor:default; min-width:100px; width:110px;
}
.sponsor-item:hover {
  background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.15);
  transform:translateY(-2px);
}
.sponsor-logo-placeholder {
  width:48px; height:48px; border-radius:var(--r-md);
  background:rgba(255,255,255,.08); display:flex; align-items:center; justify-content:center;
  color:rgba(255,255,255,.5);
}
.sponsor-name {
  font-size:11px; font-weight:600; color:rgba(255,255,255,.45);
  letter-spacing:.5px;
}
.sponsor-divider {
  width:1px; height:32px; background:rgba(255,255,255,.1);
}

/* Landing Footer Links */
.landing-footer-links {
  margin-top:24px; padding-top:16px;
  border-top:1px solid rgba(255,255,255,.08);
}
.landing-legal-link {
  font-size:11px; color:rgba(255,255,255,.3); text-decoration:none;
  transition:color .2s;
}
.landing-legal-link:hover { color:rgba(255,255,255,.5); }

/* ===== HEADER ===== */
.header {
  height:var(--header-h); flex-shrink:0;
  background:linear-gradient(135deg,#0a1a10 0%,#1a4a2a 10%,#2d6b3f 35%,#3a8a50 60%,#5aad6a 100%);
  color:#fff; z-index:1000;
  box-shadow:0 2px 16px rgba(0,0,0,.25),inset 0 -1px 0 rgba(74,222,128,.15);
  position:relative;
  border-bottom:1px solid rgba(74,222,128,.2);
}
.header-inner {
  height:100%; max-width:100%; padding:0 20px;
  display:flex; align-items:center; justify-content:space-between;
}
.header-left { flex-shrink:0; }
.header-center { flex:1; display:flex; justify-content:center; min-width:0; }
.header-right { flex-shrink:0; display:flex; align-items:center; gap:8px; max-width:60%; }
.logo { display:flex; align-items:center; gap:0; cursor:pointer; }
.logo-text { display:flex; flex-direction:column; justify-content:center; padding-top:2px; }
.logo-text h1 {
  font-family:'Inter',sans-serif; font-size:18px; font-weight:800;
  letter-spacing:3px; line-height:1;
  display:inline-flex; align-items:center; gap:6px;
}
.header-logo-img {
  width:1.1em; height:1.1em; object-fit:contain;
  filter:brightness(0) invert(1);
  opacity:.95;
  vertical-align:middle;
  flex-shrink:0;
}
.logo-sub { font-size:10px; opacity:.65; letter-spacing:.5px; font-weight:400; margin-top:3px; padding-left:26px; }

.page-tabs { display:flex; gap:2px; background:rgba(255,255,255,.08); padding:4px; border-radius:var(--r-lg); }
.page-tab {
  display:flex; align-items:center; gap:6px; padding:7px 20px; background:none; border:none;
  border-radius:var(--r-md); color:rgba(255,255,255,.45); font-size:13px; font-weight:500;
  cursor:pointer; font-family:inherit; transition:all .25s var(--ease); white-space:nowrap;
}
.page-tab:hover { color:rgba(255,255,255,.8); background:rgba(255,255,255,.06); }
.page-tab.active { color:#fff; background:rgba(255,255,255,.30); box-shadow:0 1px 6px rgba(0,0,0,.2); font-weight:700; }
.page-tab svg { opacity:.7; } .page-tab.active svg { opacity:1; }

.header-icon-btn {
  position:relative; width:36px; height:36px; display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.1); border:none; border-radius:var(--r-md); cursor:pointer;
  color:rgba(255,255,255,.7); transition:all .2s var(--ease);
}
.header-icon-btn:hover { background:rgba(255,255,255,.2); color:#fff; }
.fav-count-badge {
  position:absolute; top:-4px; right:-4px; min-width:16px; height:16px; padding:0 4px;
  background:#ef4444; color:#fff; font-size:9px; font-weight:700; border-radius:var(--r-full);
  display:flex; align-items:center; justify-content:center;
}

.btn-register {
  display:flex; align-items:center; gap:8px; background:#fff; color:var(--brand-800);
  border:none; padding:9px 20px; border-radius:var(--r-md); font-size:13px; font-weight:700;
  cursor:pointer; font-family:inherit; transition:all .3s var(--ease);
  box-shadow:0 0 8px rgba(255,255,255,.3),var(--shadow-sm);
  animation:registerPulse 2.5s ease-in-out 3;
}
.btn-register:hover {
  background:var(--brand-50); transform:translateY(-2px) scale(1.03);
  box-shadow:0 0 16px rgba(255,255,255,.5),0 0 40px rgba(134,239,172,.4),0 4px 20px rgba(0,0,0,.15);
  animation:none;
}
@keyframes registerPulse {
  0%,100% { box-shadow:0 0 8px rgba(255,255,255,.2),var(--shadow-sm); }
  50% { box-shadow:0 0 18px rgba(255,255,255,.45),0 0 40px rgba(134,239,172,.25),var(--shadow-sm); }
}

/* ===== DASHBOARD & FAV PANELS ===== */
.dashboard-panel, .fav-panel {
  position:fixed; top:var(--header-h); right:0; width:360px; bottom:0; z-index:900;
  background:rgba(255,255,255,.96); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
  border-left:1px solid var(--gray-200); box-shadow:-4px 0 24px rgba(0,0,0,.08);
  transform:translateX(100%); transition:transform .35s var(--ease-out); overflow-y:auto;
}
.dashboard-panel.open, .fav-panel.open { transform:translateX(0); }
.dashboard-header {
  padding:16px 20px; display:flex; justify-content:space-between; align-items:center;
  border-bottom:1px solid var(--gray-100); position:sticky; top:0; background:rgba(255,255,255,.96);
  backdrop-filter:blur(20px); z-index:1;
}
.dashboard-header h3 { font-size:15px; font-weight:700; color:var(--gray-800); }
.dashboard-body, .fav-body { padding:16px 20px; }

/* Dashboard stats */
.dash-stats { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:20px; }
.dash-stat-card {
  padding:14px; background:var(--gray-50); border-radius:var(--r-lg); text-align:center;
  border:1px solid var(--gray-100);
}
.dash-stat-num { font-size:22px; font-weight:800; color:var(--gray-900); }
.dash-stat-label { font-size:11px; color:var(--gray-500); margin-top:2px; }
.dash-section { margin-bottom:20px; }
.dash-section h4 { font-size:13px; font-weight:700; color:var(--gray-700); margin-bottom:10px; }
.dash-big-num { font-size:28px; font-weight:800; color:var(--brand-600); }
.dash-bar-row { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.dash-bar-label { font-size:11px; font-weight:600; color:var(--gray-600); width:72px; flex-shrink:0; }
.dash-bar-track { flex:1; height:8px; background:var(--gray-100); border-radius:var(--r-full); overflow:hidden; }
.dash-bar-fill { height:100%; background:linear-gradient(90deg,var(--brand-400),var(--brand-600)); border-radius:var(--r-full); transition:width .6s var(--ease-out); }
.dash-bar-count { font-size:11px; font-weight:700; color:var(--gray-700); width:20px; text-align:right; }

/* Fav items */
.fav-item {
  display:flex; align-items:center; gap:10px; padding:10px 16px;
  border-bottom:1px solid var(--gray-100); cursor:pointer; transition:background .15s;
}
.fav-item:hover { background:var(--gray-50); }

/* ===== MAIN LAYOUT ===== */
.main { display:flex; flex:1; overflow:hidden; position:relative; }

/* ===== SIDEBAR ===== */
.sidebar {
  width:var(--sidebar-w); background:var(--gray-0); border-right:1px solid var(--gray-200);
  display:flex; flex-direction:column; z-index:500; transition:transform .3s var(--ease);
}
.sidebar-header { padding:14px 14px 10px; border-bottom:1px solid var(--gray-100); }
.sidebar-title-row { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.sidebar-title-row h2 { font-size:15px; font-weight:700; color:var(--gray-800); }
.count-badge {
  display:inline-flex; align-items:center; justify-content:center; min-width:24px; height:22px;
  padding:0 7px; background:var(--brand-100); color:var(--brand-700); font-size:12px;
  font-weight:700; border-radius:var(--r-full);
}

/* Search Box */
.search-box { position:relative; margin-bottom:10px; }
.search-icon { position:absolute; left:12px; top:50%; transform:translateY(-50%); color:var(--gray-400); pointer-events:none; }
.search-box input {
  width:100%; padding:9px 36px 9px 38px; font-size:13px; border:1.5px solid var(--gray-200);
  border-radius:var(--r-lg); background:var(--gray-50); color:var(--gray-800);
  outline:none; font-family:inherit; transition:border-color .15s,box-shadow .15s;
}
.search-box input::placeholder { color:var(--gray-400); }
.search-box input:focus { border-color:var(--brand-400); box-shadow:0 0 0 3px rgba(34,197,94,.12); background:#fff; }
.search-clear {
  position:absolute; right:10px; top:50%; transform:translateY(-50%); width:20px; height:20px;
  display:flex; align-items:center; justify-content:center; color:var(--gray-400);
  background:var(--gray-200); border:none; border-radius:var(--r-full); cursor:pointer;
}
.search-clear:hover { background:var(--gray-300); color:var(--gray-600); }

/* Filters */
.filter-row { display:flex; gap:6px; margin-bottom:8px; }
.filter-btn {
  padding:6px 14px; border-radius:var(--r-full); border:1.5px solid var(--gray-200);
  background:var(--gray-0); font-size:12px; font-weight:600; cursor:pointer;
  font-family:inherit; color:var(--gray-500); transition:all .2s var(--ease);
}
.filter-btn:hover { border-color:var(--brand-400); color:var(--brand-600); }
.filter-btn.active { border-color:var(--brand-500); background:var(--brand-50); color:var(--brand-700); }

/* Prefecture Filter (2-step) */
.pref-filter { margin-bottom:8px; }
.pref-filter-row { display:flex; gap:6px; }
.pref-filter-row select {
  flex:1; min-width:0; padding:8px 26px 8px 10px; font-size:12px; font-weight:600;
  border:1.5px solid var(--gray-200); border-radius:var(--r-lg);
  background:var(--gray-50); color:var(--gray-600);
  outline:none; font-family:inherit; cursor:pointer;
  transition:all .2s var(--ease);
  appearance:none; -webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 8px center;
}
.pref-filter-row select:focus { border-color:var(--brand-400); box-shadow:0 0 0 3px rgba(34,197,94,.12); background-color:#fff; }
.pref-filter-row select.active {
  border-color:var(--brand-500); background-color:var(--brand-50); color:var(--brand-700);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='%2315803d' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
}
.pref-filter-row select:disabled { opacity:.35; cursor:not-allowed; }
.pref-filter-row select.enabled { opacity:1; cursor:pointer; }
.pref-reset-btn {
  display:none; align-items:center; gap:5px; margin-top:5px;
  font-size:11px; font-weight:600; color:var(--brand-600);
  background:var(--brand-50); border:1px solid var(--brand-200);
  padding:4px 10px; border-radius:var(--r-full); cursor:pointer;
  font-family:inherit; transition:all .15s; width:fit-content;
}
.pref-reset-btn:hover { background:var(--brand-100); }

/* Advanced Filters */
.advanced-filters { margin-bottom:8px; }
.advanced-toggle {
  display:flex; align-items:center; gap:6px; width:100%; padding:6px 0; background:none;
  border:none; cursor:pointer; font-family:inherit; font-size:12px; font-weight:600;
  color:var(--gray-500); transition:color .15s;
}
.advanced-toggle:hover { color:var(--brand-600); }
.advanced-toggle .chevron { transition:transform .2s var(--ease); margin-left:auto; }
.advanced-body { padding-top:8px; }
.range-filter { margin-bottom:10px; }
.range-filter label { font-size:11px; font-weight:600; color:var(--gray-500); margin-bottom:4px; display:block; }
.range-inputs { display:flex; align-items:center; gap:6px; }
.range-inputs input {
  flex:1; padding:6px 10px; font-size:12px; border:1.5px solid var(--gray-200);
  border-radius:var(--r-md); background:var(--gray-50); color:var(--gray-800);
  outline:none; font-family:inherit; min-width:0;
}
.range-inputs input:focus { border-color:var(--brand-400); }
.range-inputs span { font-size:12px; color:var(--gray-400); }
.filter-reset-btn {
  display:flex; align-items:center; gap:4px; padding:5px 10px; font-size:11px; font-weight:600;
  color:var(--gray-500); background:var(--gray-50); border:1px solid var(--gray-200);
  border-radius:var(--r-md); cursor:pointer; font-family:inherit; transition:all .15s;
}
.filter-reset-btn:hover { color:var(--red-600); border-color:var(--red-200); background:var(--red-50); }

/* Sort */
.sort-row { display:flex; align-items:center; gap:6px; }
.sort-label { font-size:11px; color:var(--gray-400); white-space:nowrap; font-weight:500; }
.sort-select {
  font-size:11px; font-weight:600; color:var(--gray-600); background:var(--gray-50);
  border:1px solid var(--gray-200); border-radius:var(--r-sm); padding:4px 8px;
  outline:none; cursor:pointer; font-family:inherit;
}
.sort-select:focus { border-color:var(--brand-400); }

/* Land List */
.land-list { flex:1; overflow-y:auto; padding:10px 12px; }
.land-list::-webkit-scrollbar { width:5px; }
.land-list::-webkit-scrollbar-track { background:transparent; }
.land-list::-webkit-scrollbar-thumb { background:var(--gray-200); border-radius:3px; }

/* Stats Bar */
.stats-bar {
  padding:10px 20px; background:var(--gray-50); border-top:1px solid var(--gray-100);
  display:flex; align-items:center; gap:16px; flex-shrink:0;
}
.stat-item { display:flex; align-items:center; gap:5px; }
.stat-value { font-size:15px; font-weight:700; color:var(--gray-800); }
.stat-label { font-size:11px; color:var(--gray-500); }
.stat-divider { width:1px; height:18px; background:var(--gray-200); }
.stat-dot { width:8px; height:8px; border-radius:50%; }
.dot-seller { background:var(--brand-500); }
.dot-buyer { background:var(--red-500); }

/* Empty State */
.empty-state { text-align:center; padding:60px 20px; color:var(--gray-400); }
.empty-state-icon { margin-bottom:16px; opacity:.4; }
.empty-state p { font-size:14px; font-weight:500; color:var(--gray-500); margin-bottom:4px; }
.empty-state-sub { font-size:12px; color:var(--gray-400); }

/* Sidebar Toggle */
.sidebar-toggle {
  display:none; position:absolute; left:12px; top:12px; z-index:700;
  width:40px; height:40px; align-items:center; justify-content:center;
  background:var(--gray-0); border:1px solid var(--gray-200); border-radius:var(--r-md);
  padding:8px; cursor:pointer; box-shadow:var(--shadow-md); color:var(--gray-600);
}

/* ===== LAND CARDS ===== */
@keyframes cardSlideIn { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:translateY(0)} }

.land-card {
  background:var(--gray-0); border:1.5px solid var(--gray-100); border-radius:var(--r-lg);
  padding:14px 14px 14px 18px; margin-bottom:8px; cursor:pointer;
  transition:all .2s var(--ease); position:relative; animation:cardSlideIn .3s ease both;
}
.land-card::before {
  content:''; position:absolute; left:0; top:12px; bottom:12px; width:4px;
  border-radius:0 4px 4px 0; transition:opacity .2s; opacity:0;
}
.land-card.card-seller::before { background:var(--brand-500); opacity:1; }
.land-card.card-buyer::before { background:var(--red-500); opacity:1; }
.land-card:hover { border-color:var(--brand-200); box-shadow:var(--shadow-md); transform:translateY(-1px); }

.land-card.has-thumb { display:flex; gap:12px; padding:10px 12px 10px 16px; }
.card-thumb {
  width:76px; min-height:76px; flex-shrink:0; border-radius:var(--r-md);
  background-size:cover; background-position:center; background-color:var(--gray-100);
  position:relative; overflow:hidden;
}
.card-thumb-count {
  position:absolute; bottom:4px; right:4px; background:rgba(0,0,0,.65); color:#fff;
  font-size:10px; font-weight:700; padding:2px 6px; border-radius:var(--r-sm);
}
.land-card-body { flex:1; min-width:0; }
.land-card-header { display:flex; justify-content:space-between; align-items:flex-start; gap:6px; margin-bottom:4px; }
.land-card-header-right { display:flex; align-items:center; gap:4px; flex-shrink:0; }
.land-card-title { font-size:13px; font-weight:700; color:var(--gray-800); line-height:1.3; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.land-card-badge { font-size:10px; font-weight:700; padding:2px 8px; border-radius:var(--r-full); white-space:nowrap; flex-shrink:0; }
.badge-seller { background:var(--brand-100); color:var(--brand-700); }
.badge-buyer { background:var(--red-100); color:var(--red-700); }

/* Category Badge */
.category-badge {
  display:inline-flex; align-items:center; gap:3px;
  font-size:10px; font-weight:700; padding:2px 8px; border-radius:var(--r-full);
  white-space:nowrap; flex-shrink:0; letter-spacing:.02em;
}
.category-badge-icon { font-size:11px; line-height:1; }
.badge-abandoned { background:var(--amber-100); color:var(--amber-700); }
.badge-idle { background:var(--sky-100); color:var(--sky-700); }
.badge-normal { background:#dcfce7; color:#15803d; }

/* Status Row（カテゴリ＋NEW/HOTバッジ） */
.land-card-status-row { display:flex; align-items:center; gap:5px; margin-bottom:4px; flex-wrap:wrap; }
.land-card-status-row:empty { display:none; }
.status-badge {
  display:inline-flex; align-items:center; gap:2px;
  font-size:10px; font-weight:800; padding:2px 8px; border-radius:var(--r-full);
  white-space:nowrap; letter-spacing:.03em;
}
.badge-new { background:linear-gradient(135deg,var(--brand-100),var(--brand-200)); color:var(--brand-700); }
.badge-hot { background:linear-gradient(135deg,var(--amber-100),var(--amber-200)); color:var(--amber-700); }

/* Category Selector (Registration Form) */
.category-selector {
  display:flex; gap:8px;
  overflow-x:auto; scroll-snap-type:x mandatory;
  scrollbar-width:none; padding-bottom:2px;
}
.category-selector::-webkit-scrollbar { display:none; }
.category-option {
  min-width:calc(50% - 4px); flex-shrink:0;
  display:flex; align-items:center; gap:10px; padding:12px 14px;
  border:2px solid var(--gray-200); border-radius:var(--r-lg); cursor:pointer;
  transition:all .2s var(--ease); position:relative;
  scroll-snap-align:start;
}
.category-option:hover { border-color:var(--gray-300); background:var(--gray-50); }
.category-option.selected { border-color:var(--amber-500); background:var(--amber-50); }
.category-option.selected[data-category="idle"] { border-color:var(--sky-500); background:var(--sky-50); }
.category-option.selected[data-category="normal"] { border-color:var(--brand-500); background:var(--brand-50); }
.category-option-check {
  width:20px; height:20px; border-radius:50%; border:2px solid var(--gray-300);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
  transition:all .2s; color:transparent;
}
.category-option.selected .category-option-check { border-color:var(--amber-500); background:var(--amber-500); color:#fff; }
.category-option.selected[data-category="idle"] .category-option-check { border-color:var(--sky-500); background:var(--sky-500); }
.category-option.selected[data-category="normal"] .category-option-check { border-color:var(--brand-500); background:var(--brand-500); }
.category-option-icon { font-size:20px; flex-shrink:0; }
.category-option-text { display:flex; flex-direction:column; }
.category-option-label { font-size:13px; font-weight:700; color:var(--gray-800); }
.category-option-desc { font-size:10px; color:var(--gray-500); margin-top:1px; }

.land-card-address { font-size:11px; color:var(--gray-400); margin-bottom:4px; display:flex; align-items:center; gap:4px; }
.land-card-tags { display:flex; gap:4px; margin-bottom:4px; flex-wrap:wrap; }
.land-card-tag {
  font-size:10px; font-weight:600; padding:1px 6px; border-radius:var(--r-full);
  background:var(--brand-50); color:var(--brand-600); border:1px solid var(--brand-100);
}
.land-card-meta { display:flex; gap:10px; font-size:11px; color:var(--gray-500); }
.land-card-meta strong { color:var(--gray-700); font-weight:600; }
.land-card-footer { display:flex; align-items:center; justify-content:space-between; margin-top:8px; }
.land-card-time { font-size:11px; color:var(--gray-400); }
.land-card-detail-btn {
  font-size:11px; font-weight:600; color:var(--gray-500); padding:4px 10px;
  border:1.5px solid var(--gray-200); border-radius:var(--r-sm); background:none;
  cursor:pointer; font-family:inherit; transition:all .15s;
}
.land-card-detail-btn:hover { color:var(--brand-600); border-color:var(--brand-300); background:var(--brand-50); }
.land-card-fav-btn {
  width:26px; height:26px; display:flex; align-items:center; justify-content:center;
  background:none; border:1.5px solid var(--gray-200); border-radius:var(--r-sm);
  cursor:pointer; color:var(--gray-400); transition:all .15s;
}
.land-card-fav-btn:hover { color:#ef4444; border-color:#fecaca; }
.land-card-fav-btn.active { color:#ef4444; border-color:#ef4444; background:var(--red-50); }

/* AI Score Badge */
.land-card-score {
  font-size:10px; font-weight:800; padding:2px 6px; border-radius:var(--r-sm);
  display:inline-flex; align-items:center;
}
.score-s { background:linear-gradient(135deg,#fde68a,#f5c842 30%,#d4a017 60%,#b8860b 80%,#f5c842); color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.25); box-shadow:0 0 6px rgba(212,160,23,.4); }
.score-a { background:linear-gradient(135deg,#6ee7b7,#10b981 30%,#059669 55%,#047857 75%,#34d399); color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.2); box-shadow:0 0 6px rgba(16,185,129,.35); }
.score-b { background:linear-gradient(135deg,#93c5fd,#3b82f6 30%,#2563eb 55%,#1d4ed8 75%,#60a5fa); color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.2); box-shadow:0 0 6px rgba(37,99,235,.35); }
.score-c { background:linear-gradient(135deg,#fbbf24,#f59e0b); color:#fff; }
.score-d { background:var(--gray-200); color:var(--gray-500); }

/* ===== MAP ===== */
.map-container { flex:1; position:relative; min-width:0; }
#map { width:100%; height:100%; }
/* タイル読み込みアニメーションを高速化 */
.leaflet-fade-anim .leaflet-tile { transition:opacity .15s !important; }
.leaflet-tile { will-change:opacity; }
.map-controls { position:absolute; top:12px; left:12px; z-index:500; display:flex; flex-direction:column; gap:6px; }
.map-ctrl-btn {
  display:inline-flex; align-items:center; gap:6px; padding:8px 14px; font-size:12px; font-weight:600;
  color:var(--gray-700); background:#fff; border:1px solid var(--gray-200); border-radius:var(--r-md);
  box-shadow:var(--shadow-sm); cursor:pointer; font-family:inherit; transition:box-shadow .15s,background .15s;
  white-space:nowrap;
}
.map-ctrl-btn:hover { box-shadow:var(--shadow-md); background:var(--gray-50); }
.map-ctrl-btn.active { background:var(--brand-50); border-color:var(--brand-300); color:var(--brand-700); }
.map-info {
  position:absolute; bottom:20px; left:50%; transform:translateX(-50%);
  background:rgba(255,255,255,.95); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  padding:8px 18px; border-radius:var(--r-full); box-shadow:var(--shadow-lg);
  font-size:12px; color:var(--gray-600); font-weight:500; z-index:500; pointer-events:none;
}

/* AI Badge */
.ai-badge {
  position:absolute; top:12px; right:60px; z-index:500; display:flex; align-items:center; gap:6px;
  background:rgba(255,255,255,.95); backdrop-filter:blur(8px); padding:8px 14px;
  border-radius:var(--r-full); box-shadow:var(--shadow-lg); font-size:12px; font-weight:600;
  color:var(--brand-700);
}
.ai-badge svg { color:var(--brand-500); }
@keyframes aiBadgePulse { 0%,100%{opacity:.3;transform:scale(1)} 50%{opacity:.8;transform:scale(1.2)} }
.ai-badge-pulse {
  width:8px; height:8px; border-radius:50%; background:var(--brand-400);
  animation:aiBadgePulse 3s ease 5;
}

/* ===== MODAL ===== */
.modal-overlay {
  display:none; position:fixed; inset:0; background:rgba(0,0,0,.45);
  z-index:3000; justify-content:center; align-items:center; padding:24px;
  backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px);
  animation:fadeIn .2s var(--ease);
}
.modal-overlay.active { display:flex; }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
@keyframes slideUp { from{opacity:0;transform:translateY(20px) scale(.97)} to{opacity:1;transform:translateY(0) scale(1)} }

.modal {
  background:var(--gray-0); border-radius:var(--r-xl); width:500px; max-width:100%;
  max-height:85vh; overflow-y:auto; box-shadow:var(--shadow-2xl);
  animation:slideUp .3s var(--ease-out);
}
.modal::-webkit-scrollbar { width:5px; }
.modal::-webkit-scrollbar-thumb { background:var(--gray-300); border-radius:3px; }
.modal-header {
  padding:20px 24px 16px; display:flex; justify-content:space-between; align-items:flex-start; gap:16px;
  border-bottom:1px solid var(--gray-100); position:sticky; top:0; background:#fff; z-index:1;
  border-radius:var(--r-xl) var(--r-xl) 0 0;
}
.modal-header h2 { font-size:17px; font-weight:800; color:var(--gray-900); }
.modal-subtitle { font-size:13px; color:var(--gray-500); margin-top:2px; }
.modal-close {
  flex-shrink:0; width:32px; height:32px; display:flex; align-items:center; justify-content:center;
  background:var(--gray-50); border:none; border-radius:var(--r-full); cursor:pointer;
  color:var(--gray-400); transition:all .15s;
}
.modal-close:hover { background:var(--gray-100); color:var(--gray-700); }
.modal-body { padding:20px 24px 24px; }

/* Form */
.form-group { margin-bottom:18px; }
.form-group label {
  display:flex; align-items:baseline; gap:6px; font-size:12px; font-weight:700;
  color:var(--gray-600); margin-bottom:6px; letter-spacing:.3px;
}
.required { color:var(--red-500); font-weight:700; }
.label-hint { font-size:11px; font-weight:400; color:var(--gray-400); margin-left:auto; }
.form-group input, .form-group select, .form-group textarea {
  width:100%; padding:10px 14px; border:1.5px solid var(--gray-200); border-radius:var(--r-md);
  font-size:14px; font-family:inherit; color:var(--gray-800); outline:none;
  background:var(--gray-50); transition:all .2s var(--ease);
}
.form-group input::placeholder, .form-group textarea::placeholder { color:var(--gray-400); }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
  border-color:var(--brand-400); box-shadow:0 0 0 3px rgba(34,197,94,.12); background:#fff;
}
.form-group textarea { resize:vertical; min-height:80px; }
.form-row { display:flex; gap:12px; }
.form-row .form-group { flex:1; }
.input-with-icon { position:relative; }
.input-icon { position:absolute; left:12px; top:50%; transform:translateY(-50%); color:var(--gray-400); pointer-events:none; }
.input-with-icon input { padding-left:36px; }

/* Form Progress */
.form-progress { display:flex; align-items:center; justify-content:center; gap:0; margin-bottom:24px; }
.form-step {
  display:flex; align-items:center; gap:6px; font-size:12px; font-weight:600;
  color:var(--gray-400); white-space:nowrap; padding:0 12px;
}
.form-step span {
  display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px;
  font-size:11px; font-weight:700; color:var(--gray-400); background:var(--gray-100);
  border:1.5px solid var(--gray-300); border-radius:var(--r-full); flex-shrink:0;
}
.form-step.active { color:var(--brand-700); }
.form-step.active span { color:#fff; background:var(--brand-500); border-color:var(--brand-500); }
.form-step.completed { color:var(--brand-600); }
.form-step.completed span {
  color:#fff; background:var(--brand-400); border-color:var(--brand-400);
  font-size:0; /* 数字を隠す */
}
.form-step.completed span::after {
  content:'✓'; font-size:11px;
}
.form-step + .form-step::before {
  content:''; display:block; width:24px; height:1.5px; background:var(--gray-300);
  margin-right:12px; flex-shrink:0;
}
.form-step.active + .form-step::before,
.form-step.completed + .form-step::before { background:var(--brand-400); }

/* Type Selector */
.type-selector { display:flex; gap:8px; }
.type-option {
  flex:1; display:flex; align-items:center; gap:12px; padding:14px;
  border:2px solid var(--gray-200); border-radius:var(--r-lg); cursor:pointer;
  transition:all .2s var(--ease); position:relative; overflow:hidden;
}
.type-option:hover { border-color:var(--gray-300); }
.type-option.selected { border-color:var(--brand-500); background:var(--brand-50); }
.type-option.selected[data-type="buyer"] { border-color:var(--red-500); background:var(--red-50); }
.type-option-check {
  width:24px; height:24px; border-radius:50%; border:2px solid var(--gray-300);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
  transition:all .2s; color:transparent;
}
.type-option.selected .type-option-check { border-color:var(--brand-500); background:var(--brand-500); color:#fff; }
.type-option.selected[data-type="buyer"] .type-option-check { border-color:var(--red-500); background:var(--red-500); }
.type-option-icon { font-size:22px; flex-shrink:0; }
.type-option-text { display:flex; flex-direction:column; }
.type-option-label { font-size:14px; font-weight:700; color:var(--gray-800); }
.type-option-desc { font-size:11px; color:var(--gray-500); margin-top:1px; }

/* Tag Selector */
.tag-selector { display:flex; flex-wrap:wrap; gap:6px; }
.tag-btn {
  padding:5px 10px; font-size:12px; font-weight:500; color:var(--gray-600);
  background:var(--gray-50); border:1.5px solid var(--gray-200); border-radius:var(--r-full);
  cursor:pointer; font-family:inherit; transition:all .2s var(--ease);
}
.tag-btn:hover { border-color:var(--brand-300); color:var(--brand-600); }
.tag-btn.active { border-color:var(--brand-500); background:var(--brand-50); color:var(--brand-700); font-weight:600; }

/* Geocode */
.geocode-status { font-size:12px; margin-top:6px; min-height:18px; display:flex; align-items:center; gap:6px; }
.geocode-status.success { color:var(--brand-600); font-weight:600; }
.geocode-status.error { color:var(--red-500); font-weight:600; }
.geocode-status.loading { color:var(--gray-400); }
@keyframes spin { to{transform:rotate(360deg)} }
.geocode-spinner {
  display:inline-block; width:12px; height:12px; border:2px solid var(--gray-300);
  border-top-color:var(--brand-500); border-radius:var(--r-full); animation:spin .6s linear infinite; flex-shrink:0;
}

/* Submit Button */
.btn-submit {
  width:100%; padding:12px; border:none; border-radius:var(--r-lg);
  background:linear-gradient(135deg,var(--brand-500),var(--brand-600)); color:#fff;
  font-size:14px; font-weight:700; cursor:pointer; font-family:inherit;
  transition:all .2s var(--ease); margin-top:6px; display:flex; align-items:center;
  justify-content:center; gap:8px; box-shadow:0 2px 8px rgba(22,163,74,.3);
}
.btn-submit:hover { background:linear-gradient(135deg,var(--brand-600),var(--brand-700)); transform:translateY(-1px); box-shadow:0 4px 14px rgba(22,163,74,.35); }
.btn-submit:disabled { opacity:.5; cursor:not-allowed; transform:none; box-shadow:none; }
.btn-contact-send:disabled { opacity:.4; cursor:not-allowed; transform:none !important; box-shadow:none !important; }
.contact-privacy-link {
  margin-top:10px; text-align:left; font-size:11px; color:var(--gray-400); line-height:1.5;
}
.contact-privacy-link a { color:var(--gray-500); text-decoration:underline; }
.contact-privacy-link a:hover { color:var(--brand-600); }
.btn-delete {
  width:100%; padding:10px; border:1.5px solid var(--red-200); border-radius:var(--r-lg);
  background:#fff; color:var(--red-600); font-size:13px; font-weight:600; cursor:pointer;
  font-family:inherit; transition:all .2s var(--ease); display:flex; align-items:center;
  justify-content:center; gap:7px;
}
.btn-delete:hover { background:var(--red-50); border-color:var(--red-400); }

/* ===== PHOTO UPLOAD ===== */
.photo-upload-area {
  border:2px dashed var(--gray-300); border-radius:var(--r-lg); padding:28px 20px;
  text-align:center; cursor:pointer; transition:all .25s var(--ease); background:var(--gray-50);
}
.photo-upload-area:hover { border-color:var(--brand-400); background:var(--brand-50); }
.photo-upload-area.drag-over { border-color:var(--brand-500); background:var(--brand-50); border-style:solid; }
.photo-upload-placeholder { display:flex; flex-direction:column; align-items:center; gap:8px; color:var(--gray-400); }
.photo-upload-placeholder svg { opacity:.5; }
.photo-upload-placeholder span:first-of-type { font-size:13px; font-weight:600; color:var(--gray-600); }
.photo-upload-hint { font-size:11px; color:var(--gray-400); font-weight:400; }
.photo-preview-row { display:flex; gap:8px; margin-top:12px; flex-wrap:wrap; }
@keyframes photoFadeIn { from{opacity:0;transform:scale(.85)} to{opacity:1;transform:scale(1)} }
.photo-preview-item {
  position:relative; width:80px; height:80px; border-radius:var(--r-md);
  overflow:hidden; border:2px solid var(--gray-200); flex-shrink:0; animation:photoFadeIn .3s var(--ease-out);
}
.photo-preview-item img { width:100%; height:100%; object-fit:cover; display:block; }
.photo-remove {
  position:absolute; top:4px; right:4px; width:22px; height:22px; border-radius:50%;
  background:rgba(0,0,0,.6); color:#fff; border:none; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  opacity:0; transition:opacity .2s var(--ease); backdrop-filter:blur(4px);
}
.photo-preview-item:hover .photo-remove { opacity:1; }

/* ===== POPUP GALLERY ===== */
.popup-gallery { margin-bottom:0; }
.popup-gallery-main { position:relative; width:100%; height:160px; overflow:hidden; cursor:pointer; }
.popup-gallery-main img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .3s var(--ease); }
.popup-gallery-main:hover img { transform:scale(1.05); }
.popup-gallery-count {
  position:absolute; bottom:8px; right:8px; background:rgba(0,0,0,.6); color:#fff;
  font-size:11px; font-weight:700; padding:3px 8px; border-radius:var(--r-sm);
  backdrop-filter:blur(4px); display:inline-flex; align-items:center; gap:4px; cursor:pointer;
}
.popup-gallery-thumbs { display:flex; gap:4px; margin-top:4px; padding:0 12px; }
.popup-gallery-thumbs img { flex:1; height:36px; object-fit:cover; cursor:pointer; border-radius:2px; opacity:.6; transition:opacity .2s; display:block; }
.popup-gallery-thumbs img:hover { opacity:1; }

/* ===== LEAFLET POPUP ===== */
.nouvation-popup .leaflet-popup-content-wrapper { padding:0 !important; border-radius:var(--r-lg) !important; overflow:hidden; box-shadow:var(--shadow-lg) !important; border:none !important; }
.nouvation-popup a.leaflet-popup-close-button { z-index:10; background:rgba(0,0,0,.5); color:#fff !important; border-radius:50%; width:28px; height:28px; line-height:28px; text-align:center; font-size:18px; top:8px !important; right:8px !important; padding:0 !important; backdrop-filter:blur(4px); }
.nouvation-popup .leaflet-popup-content { margin:0 !important; min-width:260px; font-family:'Noto Sans JP',sans-serif !important; font-size:13px !important; line-height:1.5 !important; }
.nouvation-popup .leaflet-popup-tip { box-shadow:none !important; }
.popup-badge { display:inline-block; font-size:10px; font-weight:700; padding:2px 8px; border-radius:var(--r-full); }
.popup-title { font-size:14px; font-weight:700; color:var(--gray-900); margin-bottom:4px; padding:0 14px; }
.popup-address { font-size:12px; color:var(--gray-500); margin-bottom:8px; display:flex; align-items:center; gap:3px; padding:0 14px; }
.popup-meta { font-size:13px; color:var(--gray-600); line-height:1.6; padding:0 14px; }
.popup-meta strong { color:var(--gray-800); font-weight:600; }
.popup-meta-row { margin-bottom:2px; display:flex; align-items:center; gap:4px; }
.popup-meta small { font-size:11px; color:var(--gray-400); }
.popup-desc { font-size:12px; color:var(--gray-500); margin-top:6px; font-style:italic; line-height:1.5; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.popup-actions { display:flex; gap:8px; margin-top:12px; padding:12px 14px; border-top:1px solid var(--gray-100); }
.btn-popup-detail {
  display:flex; align-items:center; justify-content:center; gap:5px; flex:1;
  padding:8px 12px; font-size:12px; font-weight:600; color:var(--gray-600);
  background:#fff; border:1.5px solid var(--gray-200); border-radius:var(--r-md);
  cursor:pointer; font-family:'Noto Sans JP',sans-serif; transition:all .15s;
}
.btn-popup-detail:hover { color:var(--brand-600); border-color:var(--brand-300); background:var(--brand-50); }
.btn-contact-popup {
  display:flex; align-items:center; justify-content:center; gap:5px; flex:1;
  padding:8px 12px; font-size:12px; font-weight:600; color:#fff;
  background:linear-gradient(135deg,var(--brand-500),var(--brand-600)); border:none;
  border-radius:var(--r-md); cursor:pointer; font-family:'Noto Sans JP',sans-serif;
  transition:transform .15s,box-shadow .15s; box-shadow:var(--shadow-xs);
}
.btn-contact-popup:hover { transform:translateY(-1px); box-shadow:var(--shadow-sm); }

/* ===== DETAIL MODAL ===== */
.detail-modal { width:600px; }
.detail-header-actions { display:flex; align-items:center; gap:8px; }
.detail-fav-btn {
  width:36px; height:36px; display:flex; align-items:center; justify-content:center;
  background:var(--gray-50); border:none; border-radius:var(--r-full); cursor:pointer;
  color:var(--gray-400); transition:all .2s;
}
.detail-fav-btn:hover { color:#ef4444; background:var(--red-50); }
.detail-fav-btn.active { color:#ef4444; background:var(--red-50); }
.detail-fav-btn.active svg { fill:#ef4444; }
.detail-gallery { margin-bottom:20px; }
.detail-gallery-main {
  position:relative; width:100%; height:240px; border-radius:var(--r-lg); overflow:hidden; cursor:pointer;
}
.detail-gallery-main img { width:100%; height:100%; object-fit:cover; transition:transform .4s var(--ease-out); }
.detail-gallery-main:hover img { transform:scale(1.03); }
.detail-gallery-count {
  position:absolute; bottom:10px; right:10px; background:rgba(0,0,0,.6); color:#fff;
  font-size:12px; font-weight:700; padding:4px 10px; border-radius:var(--r-sm); backdrop-filter:blur(4px);
}
.detail-gallery-thumbs { display:flex; gap:6px; margin-top:8px; }
.detail-gallery-thumbs img {
  width:64px; height:48px; border-radius:var(--r-md); object-fit:cover; cursor:pointer;
  opacity:.7; border:2px solid transparent; transition:opacity .15s,border-color .15s;
}
.detail-gallery-thumbs img:hover { opacity:1; }
.detail-gallery-thumbs img.active { opacity:1; border-color:var(--brand-500); }
.detail-info { padding:0; }
.detail-tags { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:16px; }
.detail-tag {
  font-size:12px; font-weight:600; padding:4px 12px; border-radius:var(--r-full);
  background:var(--brand-50); color:var(--brand-700); border:1px solid var(--brand-200);
}
.detail-score { display:flex; align-items:center; gap:8px; }
.detail-score-bar { width:80px; height:6px; background:var(--gray-100); border-radius:var(--r-full); overflow:hidden; }
.detail-score-fill { height:100%; border-radius:var(--r-full); transition:width .6s var(--ease-out); }
.detail-score-fill.score-s { background:linear-gradient(90deg,#fde68a,#f5c842 30%,#d4a017 60%,#b8860b 80%,#f5c842); }
.detail-score-fill.score-a { background:linear-gradient(90deg,#6ee7b7,#10b981 30%,#059669 55%,#047857 75%,#34d399); }
.detail-score-fill.score-b { background:linear-gradient(90deg,#93c5fd,#3b82f6 30%,#2563eb 55%,#1d4ed8 75%,#60a5fa); }
.detail-score-fill.score-c { background:linear-gradient(90deg,#fbbf24,#f59e0b); }
.detail-score-fill.score-d { background:var(--gray-200); }
.detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:20px; }
.detail-grid-item { padding:14px; background:var(--gray-50); border-radius:var(--r-lg); display:flex; flex-direction:column; gap:2px; }
.detail-grid-label { font-size:11px; font-weight:600; color:var(--gray-500); text-transform:uppercase; letter-spacing:.5px; }
.detail-grid-value { font-size:18px; font-weight:800; color:var(--gray-900); }
.detail-grid-sub { font-size:12px; color:var(--gray-400); }
.detail-desc { margin-bottom:20px; }
.detail-desc h4 { font-size:13px; font-weight:700; color:var(--gray-700); margin-bottom:8px; }
.detail-desc p { font-size:14px; line-height:1.8; color:var(--gray-600); }

/* ===== COMPARE MODAL ===== */
.compare-modal { width:800px; max-width:100%; }
.compare-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:16px; }
.compare-card { padding:16px; background:var(--gray-50); border-radius:var(--r-lg); border:1px solid var(--gray-200); }
.compare-card-title { font-size:14px; font-weight:700; color:var(--gray-800); margin-bottom:12px; }
.compare-row { display:flex; justify-content:space-between; align-items:center; padding:6px 0; border-bottom:1px solid var(--gray-100); }
.compare-label { font-size:11px; font-weight:600; color:var(--gray-500); }
.compare-value { font-size:13px; font-weight:700; color:var(--gray-800); }

/* ===== CONTACT MODAL + DISCLAIMER ===== */
.contact-modal { width:480px; max-width:100%; }
.disclaimer-group { margin-bottom:20px; margin-top:4px; }
.disclaimer-notice {
  font-size:11px; line-height:1.7; color:var(--gray-500);
  background:var(--gray-50); border:1px solid var(--gray-200);
  border-radius:var(--r-md); padding:10px 12px; margin-bottom:10px;
}
.disclaimer-label {
  display:flex !important; align-items:flex-start !important; gap:12px !important;
  cursor:pointer; font-size:12px !important; font-weight:400 !important;
  color:var(--gray-600) !important; line-height:1.6 !important; margin-bottom:0 !important;
}
.disclaimer-label input[type="checkbox"] { display:none; }
.disclaimer-checkbox {
  flex-shrink:0; width:22px; height:22px; border:2px solid var(--gray-300); border-radius:var(--r-sm);
  display:flex; align-items:center; justify-content:center; color:transparent;
  transition:all .2s var(--ease); margin-top:1px;
}
.disclaimer-label input[type="checkbox"]:checked + .disclaimer-checkbox { background:var(--brand-600); border-color:var(--brand-600); color:#fff; }
.disclaimer-text { flex:1; }
.disclaimer-text strong { color:var(--gray-800); }

/* ===== LIGHTBOX ===== */
.lightbox {
  display:none; position:fixed; inset:0; background:rgba(0,0,0,.92);
  z-index:5000; justify-content:center; align-items:center;
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
}
.lightbox.active { display:flex; animation:lightboxFadeIn .25s var(--ease-out); }
@keyframes lightboxFadeIn { from{opacity:0} to{opacity:1} }
.lightbox-img {
  max-width:calc(100% - 48px); max-height:85vh; object-fit:contain; border-radius:var(--r-lg);
  box-shadow:0 8px 40px rgba(0,0,0,.5); animation:lightboxZoomIn .3s var(--ease-out);
  user-select:none; -webkit-user-drag:none;
}
@keyframes lightboxZoomIn { from{opacity:0;transform:scale(.9)} to{opacity:1;transform:scale(1)} }
.lightbox-close {
  position:absolute; top:20px; right:24px; width:44px; height:44px; border-radius:50%;
  background:rgba(255,255,255,.1); border:none; color:#fff; font-size:28px;
  cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:all .2s var(--ease); z-index:10; backdrop-filter:blur(8px);
}
.lightbox-close:hover { background:rgba(255,255,255,.2); transform:scale(1.1); }
.lightbox-nav {
  position:absolute; top:50%; transform:translateY(-50%); width:48px; height:48px;
  border-radius:50%; background:rgba(255,255,255,.08); border:none; color:#fff;
  cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:all .2s var(--ease); z-index:10; backdrop-filter:blur(8px);
}
.lightbox-nav:hover { background:rgba(255,255,255,.18); transform:translateY(-50%) scale(1.1); }
.lightbox-prev { left:24px; }
.lightbox-next { right:24px; }
.lightbox-counter {
  position:absolute; bottom:24px; left:50%; transform:translateX(-50%);
  color:rgba(255,255,255,.7); font-size:14px; font-weight:600;
  background:rgba(0,0,0,.4); padding:6px 18px; border-radius:var(--r-full); backdrop-filter:blur(8px);
}

/* ===== TOAST ===== */
.toast {
  position:fixed; bottom:24px; right:24px; background:var(--gray-900); color:#fff;
  padding:14px 24px; border-radius:var(--r-lg); font-size:14px; font-weight:500;
  display:flex; align-items:center; gap:10px; box-shadow:var(--shadow-xl); z-index:6000;
  transform:translateY(100px); opacity:0; transition:all .4s var(--ease-spring); pointer-events:none;
}
.toast.show { transform:translateY(0); opacity:1; }
.toast svg { color:var(--brand-400); flex-shrink:0; }

/* ===== CUSTOM MARKER ===== */
.custom-marker { background:none !important; border:none !important; box-shadow:none !important; }

/* ===== KEYBOARD SHORTCUT HELP ===== */
.shortcut-help {
  position:fixed; bottom:20px; left:20px; z-index:800;
}
.shortcut-help-toggle {
  width:36px; height:36px; border-radius:50%; border:none;
  background:rgba(255,255,255,.9); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  box-shadow:var(--shadow-lg); cursor:pointer; color:var(--gray-500);
  display:flex; align-items:center; justify-content:center; transition:all .2s var(--ease);
}
.shortcut-help-toggle:hover { background:#fff; color:var(--brand-600); transform:scale(1.1); }
.shortcut-help-panel {
  position:absolute; bottom:44px; left:0; width:200px; padding:12px 14px;
  background:rgba(255,255,255,.96); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
  border-radius:var(--r-lg); box-shadow:var(--shadow-xl); border:1px solid var(--gray-200);
  opacity:0; transform:translateY(8px); pointer-events:none;
  transition:all .2s var(--ease-out);
}
.shortcut-help.open .shortcut-help-panel { opacity:1; transform:translateY(0); pointer-events:auto; }
.shortcut-help-title { font-size:11px; font-weight:700; color:var(--gray-500); text-transform:uppercase; letter-spacing:1px; margin-bottom:8px; }
.shortcut-row { display:flex; align-items:center; gap:8px; padding:3px 0; }
.shortcut-row kbd {
  display:inline-flex; align-items:center; justify-content:center; min-width:24px; height:20px;
  padding:0 6px; background:var(--gray-100); border:1px solid var(--gray-200);
  border-radius:4px; font-size:10px; font-weight:700; color:var(--gray-600);
  font-family:inherit; box-shadow:0 1px 0 var(--gray-300);
}
.shortcut-row span { font-size:11px; color:var(--gray-500); }

/* ===== HEATMAP CIRCLE ===== */
.heatmap-circle { border-radius:50%; opacity:.2; position:absolute; pointer-events:none; }

/* ===== SKELETON LOADING ===== */
@keyframes shimmer {
  0% { background-position:-200% 0; }
  100% { background-position:200% 0; }
}
.skeleton {
  background:linear-gradient(90deg,var(--gray-100) 25%,var(--gray-200) 50%,var(--gray-100) 75%);
  background-size:200% 100%;
  animation:shimmer 1.5s ease infinite;
  border-radius:var(--r-md);
}

/* ===== NOTIFICATION DOT ===== */
@keyframes notifPulse {
  0%,100% { transform:scale(1); opacity:1; }
  50% { transform:scale(1.3); opacity:.7; }
}
.notification-dot {
  width:8px; height:8px; border-radius:50%; background:#ef4444;
  animation:notifPulse 2s ease infinite; position:absolute; top:2px; right:2px;
}

/* ===== SCROLL INDICATOR ===== */
.scroll-indicator {
  position:absolute; bottom:0; left:0; right:0; height:3px;
  background:linear-gradient(90deg,var(--brand-400),var(--brand-600));
  transform-origin:left; transform:scaleX(0); transition:transform .15s;
  border-radius:0 0 0 0; z-index:10;
}

/* ===== MAP MARKER HOVER ===== */
.custom-marker:hover { z-index:1000 !important; }
.custom-marker:hover > div > div { transform:rotate(-45deg) scale(1.15) !important; }

/* ===== TOOLTIP ===== */
.nouvation-tooltip {
  position:absolute; padding:6px 12px; background:var(--gray-900); color:#fff;
  font-size:11px; font-weight:600; border-radius:var(--r-sm); white-space:nowrap;
  pointer-events:none; z-index:9999; box-shadow:var(--shadow-lg);
  transform:translateX(-50%) translateY(-8px); opacity:0; transition:opacity .15s;
}
.nouvation-tooltip.show { opacity:1; }

/* ===== CARD RIBBON ===== */
.card-ribbon {
  position:absolute; top:10px; right:0; padding:3px 10px 3px 8px;
  font-size:10px; font-weight:700; color:#fff; z-index:2;
  border-radius:4px 0 0 4px;
}
.card-ribbon.ribbon-new { background:linear-gradient(135deg,var(--brand-400),var(--brand-600)); }
.card-ribbon.ribbon-hot { background:linear-gradient(135deg,#fbbf24,#f59e0b); }

/* ===== PROGRESS RING ===== */
.score-ring {
  width:36px; height:36px; position:relative; flex-shrink:0;
}
.score-ring svg { transform:rotate(-90deg); }
.score-ring-bg { fill:none; stroke:var(--gray-100); stroke-width:3; }
.score-ring-fill { fill:none; stroke-width:3; stroke-linecap:round; transition:stroke-dashoffset .8s var(--ease-out); }
.score-ring-text {
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-size:10px; font-weight:800; color:var(--gray-700);
}

/* ===== MICRO INTERACTIONS ===== */
.land-card { will-change:transform; overflow:hidden; }
.land-card:active { transform:scale(.98) !important; }
.btn-register:active { transform:scale(.95); }
.btn-submit:active { transform:translateY(1px) !important; }
.header-icon-btn:active { transform:scale(.9); }

/* ===== BACKDROP FOR PANELS ===== */
.panel-backdrop {
  position:fixed; inset:0; background:rgba(0,0,0,.2); z-index:850;
  backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px);
  opacity:0; pointer-events:none; transition:opacity .3s var(--ease);
}
.panel-backdrop.show { opacity:1; pointer-events:auto; }

/* ===== SIDEBAR SCROLL SHADOW ===== */
.land-list::before, .land-list::after {
  content:''; position:sticky; display:block; height:1px; z-index:5;
  pointer-events:none;
}
.land-list::before { top:0; box-shadow:0 4px 8px -4px rgba(0,0,0,.08); }

/* ===== ENHANCED MAP INFO ===== */
.map-info-enhanced {
  position:absolute; bottom:20px; left:50%; transform:translateX(-50%);
  background:rgba(255,255,255,.96); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  padding:6px 16px; border-radius:var(--r-full); box-shadow:var(--shadow-lg);
  font-size:11px; color:var(--gray-600); font-weight:500; z-index:500; pointer-events:none;
  display:flex; align-items:center; gap:8px;
}
.map-info-dot { width:6px; height:6px; border-radius:50%; background:var(--brand-400); }

/* ===== FOX MASCOT ===== */
.fox-mascot {
  position:fixed; bottom:24px; right:24px; z-index:2000;
  display:flex; flex-direction:column; align-items:flex-end; gap:8px;
}
@keyframes foxBounce {
  0%,100% { transform:translateY(0); }
  50% { transform:translateY(-6px); }
}
@keyframes foxAppear {
  from { opacity:0; transform:scale(.5) translateY(20px); }
  to   { opacity:1; transform:scale(1) translateY(0); }
}
.fox-avatar {
  position:relative; width:64px; height:64px; cursor:pointer;
  animation:foxAppear .5s var(--ease-spring) both;
  filter:drop-shadow(0 4px 12px rgba(0,0,0,.2));
  transition:transform .2s var(--ease-spring);
}
.fox-avatar:hover { transform:scale(1.1); }
.fox-avatar:active { transform:scale(.95); }
.fox-avatar-inner {
  width:64px; height:64px; border-radius:50%;
  background:linear-gradient(135deg,#fff8f0,#fff);
  border:3px solid #fed7aa;
  box-shadow:0 4px 16px rgba(249,115,22,.2);
  overflow:hidden; position:relative;
}
.fox-img {
  position:absolute;
  width:170%; height:auto;
  top:50%; left:50%;
  transform:translate(-50%, -38%);
  pointer-events:none; user-select:none; -webkit-user-drag:none;
}
/* 呼吸するようなアニメーション（アイドル時） */
.fox-avatar.idle .fox-avatar-inner {
  animation:foxBounce 2.5s ease-in-out infinite;
}

/* pingアニメーション（注目を引く）- 初回のみ */
@keyframes foxPing {
  0%   { transform:scale(1); opacity:.8; }
  100% { transform:scale(2.2); opacity:0; }
}
.fox-ping {
  position:absolute; inset:0; border-radius:50%;
  background:rgba(249,115,22,.3);
  animation:foxPing 2s ease-out 3;
}

/* 吹き出し */
@keyframes bubbleSlideIn {
  from { opacity:0; transform:translateY(8px) scale(.95); }
  to   { opacity:1; transform:translateY(0) scale(1); }
}
.fox-bubble {
  position:relative; max-width:220px;
  background:#fff; border-radius:16px 16px 4px 16px;
  padding:10px 14px; box-shadow:0 4px 20px rgba(0,0,0,.12);
  border:1.5px solid #fed7aa;
  pointer-events:none;
  opacity:1; transform:translateY(0) scale(1);
  transition:opacity .15s ease, transform .15s ease;
}
.fox-bubble.hide {
  opacity:0; transform:translateY(4px) scale(.96);
  pointer-events:none;
}
.fox-bubble-text {
  font-size:12px; font-weight:600; color:var(--gray-700);
  line-height:1.6; white-space:pre-wrap;
}
.fox-bubble-arrow {
  position:absolute; bottom:-8px; right:20px;
  width:0; height:0;
  border-left:8px solid transparent;
  border-right:0px solid transparent;
  border-top:8px solid #fed7aa;
}
.fox-bubble-arrow::after {
  content:''; position:absolute; top:-9px; left:-7px;
  width:0; height:0;
  border-left:7px solid transparent;
  border-right:0px solid transparent;
  border-top:7px solid #fff;
}

/* ===== RESPONSIVE ===== */
@media (max-width:860px) {
  :root { --sidebar-w:320px; }
  .header-inner { padding:0 12px; }
  .logo-text h1 { font-size:15px; }
  .logo-sub { display:none; }
  .btn-register span { display:none; }
  .btn-register { padding:9px 12px; }
  .page-tab { padding:7px 14px; font-size:12px; }
  .sidebar { position:absolute; left:0; top:0; bottom:0; transform:translateX(-100%); box-shadow:var(--shadow-xl); z-index:600; }
  .sidebar.open { transform:translateX(0); }
  .sidebar-toggle { display:flex; }
  .map-controls { left:60px; }
  .detail-modal { width:100%; }
  .compare-modal { width:100%; }
  .dashboard-panel, .fav-panel { width:100%; }
  .ai-badge { right:12px; top:auto; bottom:60px; font-size:11px; padding:6px 10px; }
  .landing-title { font-size:36px; letter-spacing:4px; gap:8px; }
  .landing-stats-row { flex-wrap:wrap; gap:16px; justify-content:center; }
  .landing-stat-divider { display:none; }
  .landing-stat { padding:0 16px; }
  .sponsors-row { gap:10px; max-width:500px; }
  .sponsor-divider { display:none; }
  .sponsor-item { min-width:80px; width:90px; padding:8px 10px; }
  .fox-mascot { bottom:16px; right:16px; }
  .fox-bubble { max-width:200px; font-size:11px; }
  /* シェアボタン */
  .share-buttons { gap:6px; }
  .share-btn { padding:6px 10px; font-size:11px; }
  .share-farmatch-dropdown { right:12px; width:260px; }
  /* 都道府県フィルター */
  .pref-filter select { font-size:13px; }
}

@media (max-width:480px) {
  :root { --sidebar-w:100%; --header-h:52px; }
  /* ヘッダー */
  .header-inner { padding:0 6px; gap:2px; }
  .header-logo-img { width:16px; height:16px; }
  .logo-text h1 { font-size:12px; letter-spacing:1px; }
  .page-tabs { gap:0; background:rgba(255,255,255,.06); padding:2px; }
  .page-tab { padding:6px 8px; font-size:11px; gap:2px; }
  .page-tab svg { display:none; }
  .header-right { gap:2px; flex-shrink:1; overflow:hidden; }
  .header-icon-btn { width:32px; height:32px; position:relative; }
  .header-icon-btn::after { content:''; position:absolute; inset:-6px; } /* タップ領域を透明に拡張 */
  .header-icon-btn svg { width:15px; height:15px; }
  .btn-register { padding:7px 10px; }
  .btn-register svg { width:14px; height:14px; }
  /* フィルター・検索・ソート */
  .filter-btn { padding:10px 14px; font-size:13px; min-height:44px; }
  .search-box input { font-size:16px; padding:12px 36px 12px 38px; } /* iOS zoom防止 */
  .pref-filter-row select { font-size:16px; }
  .sort-select { font-size:16px; padding:8px 12px; }
  .range-inputs input { font-size:16px; }
  /* カードボタン */
  .land-card-detail-btn { padding:10px 16px; min-height:44px; display:inline-flex; align-items:center; }
  .land-card-fav-btn { width:44px; height:44px; }
  .land-card-title { white-space:normal; -webkit-line-clamp:2; display:-webkit-box; -webkit-box-orient:vertical; overflow:hidden; }
  /* モーダル */
  .modal { border-radius:var(--r-lg) var(--r-lg) 0 0; max-height:92vh; width:100%; }
  .modal-overlay { padding:0; align-items:flex-end; }
  /* ドラッグハンドル（ボトムシート上部のバー） */
  .modal::before {
    content:''; display:block; width:36px; height:4px; border-radius:2px;
    background:var(--gray-300); margin:8px auto 0; flex-shrink:0;
  }
  .modal-header { padding:12px 16px 12px; }
  .modal-close { width:44px; height:44px; }
  .modal-body { padding:16px 16px calc(32px + env(safe-area-inset-bottom)); }
  /* フォーム */
  .form-row { flex-direction:column; gap:0; }
  .form-group input, .form-group select, .form-group textarea { font-size:16px; } /* iOS zoom防止 */
  .form-progress { gap:0; }
  .form-step { padding:4px 10px; font-size:11px; min-height:44px; display:flex; align-items:center; }
  /* カード */
  .photo-preview-item { width:64px; height:64px; }
  .photo-preview-item .photo-remove { opacity:1; }
  .card-thumb { width:100px; min-height:100px; border-radius:var(--r-lg); }
  .land-card-title { font-size:12px; }
  /* ギャラリー */
  /* スマホではLeafletポップアップを非表示（独自モーダルを使用） */
  .nouvation-popup { display:none !important; }
  .btn-popup-detail, .btn-contact-popup { padding:12px 12px; font-size:13px; }
  .popup-gallery-main { height:110px; }
  .popup-gallery-thumbs img { height:36px; }
  .detail-gallery-main { height:220px; }
  .detail-gallery-thumbs img { width:56px; height:44px; }
  /* グリッド */
  .detail-grid { grid-template-columns:1fr 1fr; }
  .compare-grid { grid-template-columns:1fr; }
  /* ライトボックス */
  .lightbox-img { max-width:calc(100% - 16px); max-height:75vh; border-radius:var(--r-md); }
  .lightbox-nav { width:48px; height:48px; }
  .lightbox-prev { left:8px; } .lightbox-next { right:8px; }
  .lightbox-close { top:12px; right:12px; width:44px; height:44px; }
  /* ランディング - iPhone対応 */
  .landing-overlay { justify-content:flex-start; padding-top:calc(16px + env(safe-area-inset-top)); }
  .landing-logo { margin-bottom:12px; }
  .landing-logo svg { width:48px; height:48px; }
  .landing-title { font-size:24px; letter-spacing:2px; gap:6px; margin-bottom:4px; }
  .landing-title-logo { width:0.9em; height:0.9em; }
  .landing-subtitle { font-size:11px; letter-spacing:2px; margin-bottom:16px; }
  .landing-logo-img { width:48px; height:48px; }
  .landing-desc { font-size:12px; margin-bottom:16px; line-height:1.6; }
  .landing-stats-row { margin-bottom:20px; gap:8px; }
  .landing-stat { padding:0 12px; }
  .landing-stat-value { font-size:20px; }
  .landing-stat-label { font-size:10px; }
  .landing-cta { padding:14px 32px; font-size:14px; }
  .landing-skip { margin-top:12px; font-size:11px; }
  .landing-sponsors { margin-top:16px; padding-top:12px; }
  .sponsors-row { gap:5px; max-width:100%; }
  .sponsor-item { min-width:52px; width:58px; padding:5px; }
  .sponsor-logo-placeholder { width:24px; height:24px; }
  .sponsor-logo-placeholder svg { width:12px; height:12px; }
  .sponsor-name { font-size:7px; }
  /* ショートカットヘルプ - スマホでは非表示 */
  .shortcut-help { display:none; }
  /* マップコントロール */
  .map-controls { top:8px; left:8px; gap:4px; }
  .map-ctrl-btn { font-size:11px; gap:4px; }
  .map-ctrl-btn span { display:none; } /* スマホはアイコンのみ */
  .map-ctrl-btn { padding:10px; min-width:44px; min-height:44px; display:inline-flex; align-items:center; justify-content:center; }
  /* サイドバー */
  .sidebar-toggle { bottom:80px; width:48px; height:48px; }
  /* トースト - セーフエリア対応 */
  .toast { bottom:calc(24px + env(safe-area-inset-bottom)); left:16px; right:16px; }
  /* シェアボタン */
  .share-buttons { gap:5px; }
  .share-btn { padding:8px 12px; font-size:11px; }
  .share-label { display:none; }
  .share-farmatch-dropdown { right:8px; left:8px; width:auto; }
  .share-prompt-card { padding:24px 16px; }
  .share-prompt-card h3 { font-size:16px; }
  /* スタッツバー */
  .stats-bar { padding:8px 12px; }
  /* 狐マスコット - 右下端に配置 */
  .fox-mascot { bottom:calc(8px + env(safe-area-inset-bottom)); right:8px; }
  .fox-bubble { max-width:180px; font-size:10px; line-height:1.5; }
  .fox-avatar-inner { width:44px; height:44px; }
  .fox-avatar { width:44px; height:44px; }
}

/* ===== LANDSCAPE MODE (iPhone横向き) ===== */
@media (max-width:860px) and (orientation:landscape) {
  :root { --header-h:40px; }
  .header-inner { padding:0 8px; }
  .logo-text h1 { font-size:12px; }
  .page-tab { padding:4px 10px; font-size:11px; }
  .landing-overlay { padding-top:calc(8px + env(safe-area-inset-top)); flex-direction:row; flex-wrap:wrap; justify-content:center; align-items:center; }
  .landing-content { max-width:60%; }
  .landing-title { font-size:20px; }
  .landing-subtitle { font-size:10px; margin-bottom:8px; }
  .landing-desc { font-size:11px; margin-bottom:8px; }
  .landing-stats-row { margin-bottom:12px; }
  .landing-cta { padding:10px 24px; font-size:13px; }
  .landing-sponsors { margin-top:8px; padding-top:8px; }
  .modal { max-height:96vh; }
  .modal-body { padding:12px 16px calc(16px + env(safe-area-inset-bottom)); }
  .sidebar-toggle { bottom:auto; top:8px; }
  .fox-mascot { bottom:8px; right:calc(8px + env(safe-area-inset-right)); }
  .fox-bubble { max-width:140px; font-size:9px; }
  .fox-avatar, .fox-avatar-inner { width:36px; height:36px; }
}

/* ===== iPhone SE / 小型画面 (375px以下) ===== */
@media (max-width:375px) {
  /* ヘッダー */
  .header-inner { padding:0 4px; gap:1px; }
  .logo-text h1 { font-size:11px; letter-spacing:0.5px; }
  .header-logo-img { width:14px; height:14px; }
  .page-tab { padding:6px 7px; font-size:10px; }
  .header-right { gap:1px; }
  .header-icon-btn { width:28px; height:28px; }
  .header-icon-btn svg { width:14px; height:14px; }
  .btn-register { padding:6px 8px; }
  /* ランディング */
  .landing-title { font-size:20px; letter-spacing:1px; }
  .landing-subtitle { font-size:10px; letter-spacing:1px; }
  .landing-desc { font-size:11px; }
  .landing-stat { padding:0 8px; }
  .landing-stat-value { font-size:18px; }
  .landing-cta { padding:12px 24px; font-size:13px; }
  .sponsors-row { gap:3px; }
  .sponsor-item { min-width:48px; width:52px; padding:4px; }
  .sponsor-logo-placeholder { width:20px; height:20px; }
  .sponsor-logo-placeholder svg { width:10px; height:10px; }
  .sponsor-name { font-size:6px; }
  /* カード */
  .card-thumb { width:88px; min-height:88px; }
  .land-card-title { font-size:11px; }
  .land-card-address { font-size:10px; }
  .land-card-meta { font-size:10px; gap:6px; }
  /* フィルター */
  .filter-btn { padding:8px 10px; font-size:12px; }
  /* モーダル */
  .modal-header h2 { font-size:15px; }
  .detail-grid { grid-template-columns:1fr; }
  .detail-grid-value { font-size:16px; }
  /* 狐マスコット */
  .fox-avatar, .fox-avatar-inner { width:38px; height:38px; }
  .fox-bubble { max-width:140px; font-size:9px; padding:8px 10px; }
}

/* ===== DEMO BADGE ===== */
.demo-badge {
  display:inline-flex; align-items:center; gap:3px;
  font-size:9px; font-weight:800; letter-spacing:.5px;
  padding:2px 7px; border-radius:var(--r-full);
  background:var(--gray-200); color:var(--gray-500);
  text-transform:uppercase; white-space:nowrap; flex-shrink:0;
}
.demo-badge-detail {
  display:inline-flex; align-items:center; gap:4px;
  font-size:11px; font-weight:700; letter-spacing:.5px;
  padding:4px 12px; border-radius:var(--r-full);
  background:var(--gray-100); color:var(--gray-500);
  border:1px solid var(--gray-200);
}
.demo-notice {
  background:var(--amber-50); border:1px solid var(--amber-200); border-radius:var(--r-md);
  padding:10px 14px; margin-bottom:16px; font-size:12px; color:var(--amber-700);
  display:flex; align-items:center; gap:8px; line-height:1.5;
}
[data-theme="dark"] .demo-badge { background:var(--gray-200); color:var(--gray-500); }
[data-theme="dark"] .demo-badge-detail { background:var(--gray-100); color:var(--gray-500); border-color:var(--gray-200); }
[data-theme="dark"] .demo-notice { background:rgba(245,158,11,.1); border-color:rgba(245,158,11,.2); color:#fbbf24; }

/* ===== CLUSTER ICONS ===== */
.cluster-icon {
  display:flex; align-items:center; justify-content:center;
  border-radius:50%; font-weight:800; font-family:'Inter',sans-serif;
  color:#fff; border:3px solid #fff;
  box-shadow:0 2px 10px rgba(0,0,0,.25);
  transition:transform .2s var(--ease);
}
.cluster-icon:hover { transform:scale(1.1); }
.cluster-icon span { line-height:1; }
.cluster-sm {
  width:36px; height:36px; font-size:13px;
  background:linear-gradient(135deg,var(--brand-500),var(--brand-700));
}
.cluster-md {
  width:44px; height:44px; font-size:14px;
  background:linear-gradient(135deg,#f59e0b,#d97706);
}
.cluster-lg {
  width:52px; height:52px; font-size:16px;
  background:linear-gradient(135deg,#ef4444,#b91c1c);
}

/* ===== SNS SHARE BUTTONS ===== */
.share-buttons {
  display:flex; align-items:center; gap:8px; margin-top:16px; flex-wrap:wrap;
}
.share-label {
  font-size:12px; font-weight:600; color:var(--gray-500); flex-shrink:0;
}
.share-btn {
  display:inline-flex; align-items:center; gap:6px;
  padding:7px 14px; border-radius:var(--r-full); border:none;
  font-size:12px; font-weight:700; cursor:pointer; font-family:inherit;
  transition:all .2s var(--ease); flex-shrink:0;
}
.share-twitter {
  background:#000; color:#fff;
}
.share-twitter:hover { background:#333; transform:translateY(-1px); }
.share-line {
  background:#06C755; color:#fff;
}
.share-line:hover { background:#05a848; transform:translateY(-1px); }
.share-copy {
  background:var(--gray-100); color:var(--gray-700); border:1px solid var(--gray-200);
}
.share-copy:hover { background:var(--gray-200); transform:translateY(-1px); }

/* ===== SHARE FARMATCH DROPDOWN ===== */
.share-farmatch-dropdown {
  position:fixed; top:var(--header-h); right:100px; z-index:1500;
  background:#fff; border-radius:var(--r-lg);
  box-shadow:var(--shadow-xl); border:1px solid var(--gray-200);
  width:280px; max-width:calc(100% - 24px);
  opacity:0; transform:translateY(-8px) scale(.96);
  pointer-events:none;
  transition:all .25s cubic-bezier(.34,1.56,.64,1);
}
.share-farmatch-dropdown.open {
  opacity:1; transform:translateY(0) scale(1);
  pointer-events:auto;
}
.share-farmatch-header { padding:14px 16px 0; }
.share-farmatch-title { font-size:14px; font-weight:700; color:var(--gray-800); }
.share-farmatch-body { padding:12px 16px 16px; }
.share-farmatch-desc { font-size:12px; color:var(--gray-500); margin-bottom:12px; }
.share-farmatch-buttons { display:flex; flex-direction:column; gap:8px; }
.share-farmatch-btn {
  display:flex; align-items:center; gap:10px;
  padding:10px 14px; border-radius:var(--r-md); border:none;
  font-size:13px; font-weight:600; cursor:pointer; font-family:inherit;
  transition:all .2s ease; width:100%; text-align:left;
}
.share-farmatch-line { background:#06C755; color:#fff; }
.share-farmatch-line:hover { background:#05a848; transform:translateY(-1px); }
.share-farmatch-twitter { background:#000; color:#fff; }
.share-farmatch-twitter:hover { background:#333; transform:translateY(-1px); }
.share-farmatch-facebook { background:#1877F2; color:#fff; }
.share-farmatch-facebook:hover { background:#1565C0; transform:translateY(-1px); }
.share-farmatch-copy { background:var(--gray-100); color:var(--gray-700); border:1px solid var(--gray-200); }
.share-farmatch-copy:hover { background:var(--gray-200); transform:translateY(-1px); }

/* ===== SHARE PROMPT (VIRAL LOOP) ===== */
.share-prompt-overlay {
  position:fixed; inset:0; z-index:5000;
  background:rgba(0,0,0,.4); backdrop-filter:blur(4px);
  display:flex; align-items:center; justify-content:center;
  opacity:0; transition:opacity .3s ease;
}
.share-prompt-overlay.active { opacity:1; }
.share-prompt-card {
  background:#fff; border-radius:var(--r-xl); padding:32px;
  max-width:360px; width:calc(100% - 32px); text-align:center;
  box-shadow:0 25px 50px rgba(0,0,0,.25);
  transform:scale(.9); transition:transform .3s cubic-bezier(.34,1.56,.64,1);
}
.share-prompt-overlay.active .share-prompt-card { transform:scale(1); }
.share-prompt-icon { font-size:48px; margin-bottom:12px; }
.share-prompt-card h3 { font-size:18px; font-weight:700; color:var(--gray-800); margin-bottom:8px; }
.share-prompt-card p { font-size:13px; color:var(--gray-500); margin-bottom:20px; }
.share-prompt-buttons { display:flex; flex-direction:column; gap:8px; margin-bottom:16px; }
.share-prompt-skip {
  background:none; border:none; color:var(--gray-400); font-size:12px;
  cursor:pointer; font-family:inherit; text-decoration:underline;
  transition:color .2s ease;
}
.share-prompt-skip:hover { color:var(--gray-600); }

/* ===== PERFORMANCE OPTIMIZATION ===== */
/* GPU acceleration: only animated elements that need it */
.sidebar, .dashboard-panel, .fav-panel {
  will-change:transform;
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
}
/* Smooth scrolling */
.land-list, .modal-body, .detail-body {
  overscroll-behavior:contain;
}
/* Reduce paint area */
.land-card { contain:layout style; }
#map { contain:strict; }
.stats-bar { contain:layout; }
/* Smooth transitions */
.sidebar { transition:transform .25s var(--ease-out); }
.modal-overlay, .detail-overlay, .contact-overlay, .compare-overlay {
  transition:opacity .2s var(--ease);
}
/* Faster card animations on mobile */
@media (max-width:480px) {
  @keyframes cardSlideIn { from{opacity:0;transform:translateY(4px)} to{opacity:1;transform:translateY(0)} }
  .land-card { animation-duration:.15s; }
}
/* Reduce backdrop-filter on mobile for GPU savings */
@media (max-width:480px) {
  .map-info, .ai-badge, .shortcut-help-panel, .modal-overlay, .mobile-popup-overlay {
    backdrop-filter:none; -webkit-backdrop-filter:none;
  }
  .dashboard-panel, .fav-panel {
    backdrop-filter:none; -webkit-backdrop-filter:none;
    background:rgba(255,255,255,.98);
  }
}

/* ============================================================
   MOBILE POPUP MODAL
   ============================================================ */
.mobile-popup-overlay {
  display:none; position:fixed; inset:0; z-index:2000;
  background:rgba(0,0,0,.5); backdrop-filter:blur(2px);
  align-items:center; justify-content:center; padding:24px;
}
.mobile-popup-overlay.active { display:flex; }
.mobile-popup-card {
  position:relative; background:#fff; border-radius:var(--r-lg);
  box-shadow:var(--shadow-lg); overflow:hidden;
  max-height:75vh; overflow-y:auto; width:100%;
}
.mobile-popup-close {
  position:absolute; top:8px; right:8px; z-index:10;
  width:36px; height:36px; border-radius:50%;
  background:rgba(0,0,0,.5); backdrop-filter:blur(4px);
  color:#fff; border:none; font-size:20px; line-height:36px;
  text-align:center; cursor:pointer;
}
.mobile-popup-card .popup-gallery-main { height:160px; }
.mobile-popup-card .popup-gallery-thumbs img { height:40px; }

/* ============================================================
   DARK MODE
   ============================================================ */
[data-theme="dark"] {
  /* グレースケール反転 */
  --gray-0:#111827;   --gray-50:#1a2235;  --gray-100:#1f2937;
  --gray-200:#374151; --gray-300:#4b5563; --gray-400:#6b7280;
  --gray-500:#9ca3af; --gray-600:#d1d5db; --gray-700:#e5e7eb;
  --gray-800:#f3f4f6; --gray-900:#f9fafb; --gray-950:#fff;
  /* ブランドカラー（ダーク向けに少し明るく） */
  --brand-50:#0a2618;  --brand-100:#0f3d24; --brand-200:#14532d;
  --brand-700:#4ade80; --brand-800:#86efac;
  /* レッド */
  --red-50:#2a1215;  --red-100:#3a1a1e; --red-200:#4a2228;
  /* シャドウ（ダークでは強めに） */
  --shadow-xs:0 1px 2px rgba(0,0,0,.2);
  --shadow-sm:0 1px 3px rgba(0,0,0,.3),0 1px 2px rgba(0,0,0,.2);
  --shadow-md:0 4px 6px -1px rgba(0,0,0,.3),0 2px 4px -2px rgba(0,0,0,.2);
  --shadow-lg:0 10px 15px -3px rgba(0,0,0,.3),0 4px 6px -4px rgba(0,0,0,.2);
  --shadow-xl:0 20px 25px -5px rgba(0,0,0,.4),0 8px 10px -6px rgba(0,0,0,.2);
  --shadow-2xl:0 25px 50px -12px rgba(0,0,0,.5);
}
/* body背景 + safe-area背景色 */
[data-theme="dark"] body { background:#0d1117; }
[data-theme="dark"] { background-color:#0d1117; } /* safe-areaの背景色もダークに */
/* マップコントロール */
[data-theme="dark"] .map-ctrl-btn { background:rgba(17,24,39,.9); color:var(--gray-600); border-color:var(--gray-200); }
[data-theme="dark"] .map-ctrl-btn:hover { background:rgba(31,41,55,.95); }
[data-theme="dark"] .map-ctrl-btn.active { background:var(--brand-600); color:#fff; border-color:var(--brand-500); }
/* マップ情報 & AIバッジ */
[data-theme="dark"] .map-info { background:rgba(17,24,39,.92); }
[data-theme="dark"] .ai-badge { background:rgba(17,24,39,.92); color:var(--brand-400); }
/* サイドバー・パネル */
[data-theme="dark"] .dashboard-panel,
[data-theme="dark"] .fav-panel { background:rgba(17,24,39,.96); }
[data-theme="dark"] .dash-header,
[data-theme="dark"] .fav-header { background:rgba(17,24,39,.96); }
/* フォーム input focus */
[data-theme="dark"] .form-group input:focus,
[data-theme="dark"] .form-group select:focus,
[data-theme="dark"] .form-group textarea:focus,
[data-theme="dark"] .search-box input:focus,
[data-theme="dark"] .pref-filter-row select:focus { background:var(--gray-100); }
/* モーダルヘッダー sticky背景 */
[data-theme="dark"] .modal-header { background:var(--gray-0); }
/* ポップアップ */
[data-theme="dark"] .nouvation-popup .leaflet-popup-content-wrapper { background:#1e293b !important; }
[data-theme="dark"] .nouvation-popup .leaflet-popup-tip { background:#1e293b !important; }
[data-theme="dark"] .mobile-popup-card { background:#1e293b; }
[data-theme="dark"] .popup-title { color:#f1f5f9; }
[data-theme="dark"] .popup-desc { color:#94a3b8; }
[data-theme="dark"] .popup-address { color:#94a3b8; }
/* 登録ボタン */
[data-theme="dark"] .btn-register { background:var(--brand-500); color:#fff; box-shadow:0 0 8px rgba(74,222,128,.3),var(--shadow-sm); }
[data-theme="dark"] .btn-register:hover { background:var(--brand-400); }
/* ランディングCTA */
[data-theme="dark"] .landing-cta { background:#fff; color:var(--brand-950); }
/* 狐マスコット */
[data-theme="dark"] .fox-avatar-inner { background:linear-gradient(135deg,#2a2016,#1f1a12); border-color:#a0764a; }
[data-theme="dark"] .fox-bubble { background:#1f2937; border-color:#a0764a; }
[data-theme="dark"] .fox-bubble-arrow { border-top-color:#a0764a; }
[data-theme="dark"] .fox-bubble-arrow::after { border-top-color:#1f2937; }
/* シェアドロップダウン */
[data-theme="dark"] .share-farmatch-dropdown { background:var(--gray-0); }
/* シェアプロンプト */
[data-theme="dark"] .share-prompt-card { background:var(--gray-0); }
[data-theme="dark"] .share-prompt-card h3 { color:var(--gray-800); }
/* ショートカットヘルプ */
[data-theme="dark"] .shortcut-help-toggle { background:rgba(17,24,39,.9); color:var(--gray-600); }
[data-theme="dark"] .shortcut-help-toggle:hover { background:var(--gray-100); color:var(--brand-400); }
[data-theme="dark"] .shortcut-help-panel { background:rgba(17,24,39,.96); }
/* 削除ボタン */
[data-theme="dark"] .btn-delete { background:var(--gray-100); color:var(--red-500); }
/* detail modal gallery背景 */
[data-theme="dark"] .detail-gallery-main { background:var(--gray-100); }
/* type-option */
[data-theme="dark"] .type-option { border-color:var(--gray-200); }
[data-theme="dark"] .type-option:hover { border-color:var(--gray-300); }
/* category-option */
[data-theme="dark"] .category-option { border-color:var(--gray-200); }
[data-theme="dark"] .category-option:hover { border-color:var(--gray-300); }
/* カテゴリバッジ（ダークモード） */
[data-theme="dark"] .badge-abandoned { background:rgba(245,158,11,.2); color:#fbbf24; }
[data-theme="dark"] .badge-idle { background:rgba(14,165,233,.2); color:#38bdf8; }
[data-theme="dark"] .badge-normal { background:rgba(34,197,94,.2); color:#4ade80; }
/* NEW/HOTバッジ（ダークモード） */
[data-theme="dark"] .badge-new { background:rgba(34,197,94,.15); color:#4ade80; }
[data-theme="dark"] .badge-hot { background:rgba(245,158,11,.15); color:#fbbf24; }

/* ---------- ダークモード包括修正 ---------- */

/* 売り手/買い手バッジ */
[data-theme="dark"] .badge-seller { background:rgba(34,197,94,.2); color:#4ade80; font-weight:800; }
[data-theme="dark"] .badge-buyer { background:rgba(239,68,68,.2); color:#f87171; font-weight:800; }

/* カウントバッジ */
[data-theme="dark"] .count-badge { background:rgba(34,197,94,.15); color:#4ade80; }

/* カードタグ */
[data-theme="dark"] .land-card-tag { background:rgba(34,197,94,.1); color:#4ade80; border-color:rgba(34,197,94,.2); }

/* 詳細タグ */
[data-theme="dark"] .detail-tag { background:rgba(34,197,94,.1); color:#4ade80; border-color:rgba(34,197,94,.2); }

/* ポップアップバッジ */
[data-theme="dark"] .popup-badge { color:inherit; font-weight:800; }
[data-theme="dark"] .popup-badge.badge-seller { background:rgba(34,197,94,.25); color:#4ade80; }
[data-theme="dark"] .popup-badge.badge-buyer { background:rgba(239,68,68,.25); color:#f87171; }

/* ポップアップボタン */
[data-theme="dark"] .btn-popup-detail { background:#334155; color:#e2e8f0; border-color:#475569; }
[data-theme="dark"] .btn-popup-detail:hover { background:rgba(34,197,94,.15); color:#4ade80; border-color:rgba(34,197,94,.3); }

/* ポップアップ内のメタ情報 */
[data-theme="dark"] .popup-meta { color:#cbd5e1; }
[data-theme="dark"] .popup-meta strong { color:#f1f5f9; }
[data-theme="dark"] .popup-actions { border-top-color:#334155; }

/* モーダルヘッダー（#fff をハードコードしない） */
[data-theme="dark"] .modal-header { background:var(--gray-0); border-bottom-color:var(--gray-200); }

/* フォーム input focus背景 */
[data-theme="dark"] .form-group input:focus,
[data-theme="dark"] .form-group select:focus,
[data-theme="dark"] .form-group textarea:focus { background:var(--gray-100); }
[data-theme="dark"] .search-box input:focus { background:var(--gray-100); }

/* フォームプログレスステップ */
[data-theme="dark"] .form-step { color:var(--gray-500); }
[data-theme="dark"] .form-step span { color:var(--gray-500); background:var(--gray-200); border-color:var(--gray-300); }
[data-theme="dark"] .form-step.active { color:#4ade80; }
[data-theme="dark"] .form-step.active span { color:#fff; background:var(--brand-500); border-color:var(--brand-500); }
[data-theme="dark"] .form-step.completed { color:#4ade80; }
[data-theme="dark"] .form-step + .form-step::before { background:var(--gray-300); }

/* タイプ選択（売りたい/買いたい） */
[data-theme="dark"] .type-option.selected { border-color:#4ade80; background:rgba(34,197,94,.15); }
[data-theme="dark"] .type-option.selected[data-type="buyer"] { border-color:#f87171; background:rgba(239,68,68,.15); }
[data-theme="dark"] .type-option-label { color:#f9fafb; }
[data-theme="dark"] .type-option.selected .type-option-label { color:#4ade80; font-weight:800; }
[data-theme="dark"] .type-option.selected[data-type="buyer"] .type-option-label { color:#f87171; font-weight:800; }
[data-theme="dark"] .type-option-desc { color:var(--gray-500); }

/* カテゴリ選択（耕作放棄地/遊休農地） */
[data-theme="dark"] .category-option.selected { border-color:#fbbf24; background:rgba(245,158,11,.1); }
[data-theme="dark"] .category-option.selected[data-category="idle"] { border-color:#38bdf8; background:rgba(14,165,233,.1); }
[data-theme="dark"] .category-option.selected[data-category="normal"] { border-color:#4ade80; background:rgba(34,197,94,.1); }
[data-theme="dark"] .category-option-label { color:var(--gray-800); }
[data-theme="dark"] .category-option-desc { color:var(--gray-500); }

/* タグボタン */
[data-theme="dark"] .tag-btn { background:var(--gray-100); border-color:var(--gray-200); color:var(--gray-600); }
[data-theme="dark"] .tag-btn:hover { border-color:rgba(74,222,128,.4); color:#4ade80; }
[data-theme="dark"] .tag-btn.active { border-color:#4ade80; background:rgba(34,197,94,.1); color:#4ade80; }

/* 削除ボタン */
[data-theme="dark"] .btn-delete { background:var(--gray-100); color:#f87171; border-color:rgba(239,68,68,.3); }
[data-theme="dark"] .btn-delete:hover { background:rgba(239,68,68,.1); border-color:#f87171; }

/* 免責事項 */
[data-theme="dark"] .disclaimer-notice { background:var(--gray-100); border-color:var(--gray-200); color:var(--gray-500); }
[data-theme="dark"] .disclaimer-label { color:var(--gray-600) !important; }
[data-theme="dark"] .disclaimer-text strong { color:var(--gray-800) !important; }

/* ショートカットキーボード */
[data-theme="dark"] .shortcut-row kbd { background:var(--gray-200); border-color:var(--gray-300); color:var(--gray-700); box-shadow:0 1px 0 var(--gray-300); }
[data-theme="dark"] .shortcut-row span { color:var(--gray-600); }
[data-theme="dark"] .shortcut-help-title { color:var(--gray-600); }

/* 比較モーダル */
[data-theme="dark"] .compare-card { background:var(--gray-100); border-color:var(--gray-200); }
[data-theme="dark"] .compare-card-title { color:var(--gray-800); }
[data-theme="dark"] .compare-row { border-bottom-color:var(--gray-200); }
[data-theme="dark"] .compare-label { color:var(--gray-500); }
[data-theme="dark"] .compare-value { color:var(--gray-800); }

/* 詳細グリッド */
[data-theme="dark"] .detail-grid-item { background:var(--gray-100); }
[data-theme="dark"] .detail-grid-label { color:var(--gray-500); }
[data-theme="dark"] .detail-grid-value { color:var(--gray-900); }
[data-theme="dark"] .detail-desc h4 { color:var(--gray-700); }
[data-theme="dark"] .detail-desc p { color:var(--gray-600); }

/* スコアリング */
[data-theme="dark"] .score-ring-text { color:var(--gray-700); }
[data-theme="dark"] .score-ring-bg { stroke:var(--gray-200); }
[data-theme="dark"] .score-s { background:linear-gradient(135deg,#fde68a,#f5c842 30%,#d4a017 60%,#b8860b 80%,#f5c842); color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.4); box-shadow:0 0 8px rgba(212,160,23,.5); }
[data-theme="dark"] .score-a { background:linear-gradient(135deg,#6ee7b7,#10b981 30%,#059669 55%,#047857 75%,#34d399); color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.3); box-shadow:0 0 8px rgba(16,185,129,.45); }
[data-theme="dark"] .score-b { background:linear-gradient(135deg,#93c5fd,#3b82f6 30%,#2563eb 55%,#1d4ed8 75%,#60a5fa); color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.3); box-shadow:0 0 8px rgba(37,99,235,.45); }
[data-theme="dark"] .score-c { background:linear-gradient(135deg,#fbbf24,#f59e0b); color:#fff; }
[data-theme="dark"] .score-d { background:var(--gray-200); color:var(--gray-500); }

/* 地図情報バー */
[data-theme="dark"] .map-info-enhanced { background:rgba(17,24,39,.92); color:var(--gray-600); }

/* フィルターボタン */
[data-theme="dark"] .filter-btn { background:var(--gray-0); border-color:var(--gray-200); color:var(--gray-500); }
[data-theme="dark"] .filter-btn:hover { border-color:rgba(74,222,128,.4); color:#4ade80; }
[data-theme="dark"] .filter-btn.active { border-color:#4ade80; background:rgba(34,197,94,.1); color:#4ade80; }

/* ソート */
[data-theme="dark"] .sort-select { background:var(--gray-100); border-color:var(--gray-200); color:var(--gray-600); }

/* 都道府県フィルター */
[data-theme="dark"] .pref-filter-row select { background:var(--gray-100); border-color:var(--gray-200); color:var(--gray-600); }
[data-theme="dark"] .pref-filter-row select.active { border-color:#4ade80; background:rgba(34,197,94,.1); color:#4ade80; }
[data-theme="dark"] .pref-reset-btn { background:rgba(34,197,94,.1); color:#4ade80; border-color:rgba(34,197,94,.2); }

/* 詳細フィルター */
[data-theme="dark"] .advanced-toggle { color:var(--gray-500); }
[data-theme="dark"] .advanced-toggle:hover { color:#4ade80; }
[data-theme="dark"] .range-inputs input { background:var(--gray-100); border-color:var(--gray-200); color:var(--gray-800); }
[data-theme="dark"] .filter-reset-btn { background:var(--gray-100); border-color:var(--gray-200); color:var(--gray-500); }
[data-theme="dark"] .filter-reset-btn:hover { color:#f87171; border-color:rgba(239,68,68,.3); background:rgba(239,68,68,.1); }

/* ダッシュボード */
[data-theme="dark"] .dashboard-header { background:rgba(17,24,39,.96); border-bottom-color:var(--gray-200); }
[data-theme="dark"] .dashboard-header h3 { color:var(--gray-800); }
[data-theme="dark"] .dash-stat-card { background:var(--gray-100); border-color:var(--gray-200); }
[data-theme="dark"] .dash-stat-num { color:var(--gray-900); }
[data-theme="dark"] .dash-big-num { color:#4ade80; }
[data-theme="dark"] .dash-bar-label { color:var(--gray-600); }
[data-theme="dark"] .dash-bar-track { background:var(--gray-200); }
[data-theme="dark"] .dash-bar-count { color:var(--gray-700); }

/* お気に入り */
[data-theme="dark"] .fav-item { border-bottom-color:var(--gray-200); }
[data-theme="dark"] .fav-item:hover { background:var(--gray-100); }

/* トースト */
[data-theme="dark"] .toast { background:#f9fafb; color:#111827; }
[data-theme="dark"] .toast svg { color:#16a34a; }

/* 写真アップロード */
[data-theme="dark"] .photo-upload-area { background:var(--gray-100); border-color:var(--gray-300); }
[data-theme="dark"] .photo-upload-area:hover { border-color:#4ade80; background:rgba(34,197,94,.05); }
[data-theme="dark"] .photo-upload-placeholder span:first-of-type { color:var(--gray-600); }

/* ジオコード状態 */
[data-theme="dark"] .geocode-status.success { color:#4ade80; }

/* リボン */
[data-theme="dark"] .card-ribbon.ribbon-new { background:linear-gradient(135deg,#22c55e,#16a34a); }

/* サイドバー統計バー */
[data-theme="dark"] .stats-bar { background:var(--gray-50); border-top-color:var(--gray-200); }

/* プライバシーリンク */
[data-theme="dark"] .contact-privacy-link a { color:var(--gray-500); }
[data-theme="dark"] .contact-privacy-link a:hover { color:#4ade80; }

/* カード詳細ボタン */
[data-theme="dark"] .land-card-detail-btn { color:var(--gray-600); border-color:var(--gray-200); }
[data-theme="dark"] .land-card-detail-btn:hover { color:#4ade80; border-color:rgba(34,197,94,.3); background:rgba(34,197,94,.1); }

/* カードお気に入りボタン */
[data-theme="dark"] .land-card-fav-btn { border-color:var(--gray-200); color:var(--gray-400); }

/* 空状態 */
[data-theme="dark"] .empty-state p { color:var(--gray-600); }
[data-theme="dark"] .empty-state-sub { color:var(--gray-500); }

/* スクロールバー */
[data-theme="dark"] ::-webkit-scrollbar-track { background:var(--gray-0); }
[data-theme="dark"] ::-webkit-scrollbar-thumb { background:var(--gray-300); }
[data-theme="dark"] ::-webkit-scrollbar-thumb:hover { background:var(--gray-400); }
/* テーマトグルボタン */
.theme-toggle-btn { transition:all .3s var(--ease); }
.theme-toggle-btn .theme-icon-sun { display:none; }
.theme-toggle-btn .theme-icon-moon { display:block; }
[data-theme="dark"] .theme-toggle-btn .theme-icon-sun { display:block; }
[data-theme="dark"] .theme-toggle-btn .theme-icon-moon { display:none; }
/* テーマ切替アニメーション */
body { transition:background .3s var(--ease),color .3s var(--ease); }
.land-card,.sidebar,.modal,.dashboard-panel,.fav-panel,.fox-bubble,.map-ctrl-btn,.map-info,.ai-badge { transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease); }

/* ============================================================
   MOBILE HOVER FIX - タッチデバイスでhoverスティッキー問題を解消
   ============================================================ */
@media (hover: none) {
  .land-card:hover { border-color:var(--gray-100); box-shadow:none; transform:none; }
  .btn-register:hover { background:#fff; transform:none; box-shadow:0 0 8px rgba(255,255,255,.3),var(--shadow-sm); animation:registerPulse 2.5s ease-in-out 3; }
  .landing-cta:hover { transform:none; box-shadow:0 4px 24px rgba(0,0,0,.2); }
  .header-icon-btn:hover { background:rgba(255,255,255,.1); color:rgba(255,255,255,.7); }
  .land-card-detail-btn:hover { color:var(--gray-500); border-color:var(--gray-200); background:none; }
  .land-card-fav-btn:hover { color:var(--gray-400); border-color:var(--gray-200); }
  .filter-btn:hover { border-color:var(--gray-200); color:var(--gray-500); }
  .map-ctrl-btn:hover { box-shadow:var(--shadow-sm); background:#fff; }
  .share-btn:hover { transform:none; }
  .share-twitter:hover { background:#000; transform:none; }
  .share-line:hover { background:#06C755; transform:none; }
  .share-copy:hover { background:var(--gray-100); transform:none; }
  .share-farmatch-line:hover,
  .share-farmatch-twitter:hover,
  .share-farmatch-facebook:hover,
  .share-farmatch-copy:hover { transform:none; }
  .sponsor-item:hover { background:rgba(255,255,255,.06); border-color:rgba(255,255,255,.08); transform:none; }
  .page-tab:hover { color:rgba(255,255,255,.55); background:none; }
  .modal-close:hover { background:var(--gray-50); color:var(--gray-400); }
  .fox-avatar:hover { transform:none; }
  .shortcut-help-toggle:hover { background:rgba(255,255,255,.9); color:var(--gray-500); transform:none; }
  .btn-submit:hover { transform:none; }
  .btn-delete:hover { background:#fff; border-color:var(--red-200); }
  .tag-btn:hover { border-color:var(--gray-200); color:var(--gray-600); }
  .type-option:hover { border-color:var(--gray-200); }
  .category-option:hover { border-color:var(--gray-200); background:transparent; }
  .photo-upload-area:hover { border-color:var(--gray-300); background:var(--gray-50); }
  .fav-item:hover { background:transparent; }
  .popup-gallery-main:hover img { transform:none; }
  .detail-gallery-main:hover img { transform:none; }
  .btn-popup-detail:hover { color:var(--gray-600); border-color:var(--gray-200); background:#fff; }
  .lightbox-close:hover { background:rgba(255,255,255,.1); transform:none; }
  .lightbox-nav:hover { background:rgba(255,255,255,.08); transform:translateY(-50%); }
  .cluster-icon:hover { transform:none; }
  .advanced-toggle:hover { color:var(--gray-500); }
  .search-clear:hover { background:var(--gray-200); color:var(--gray-400); }
  .pref-reset-btn:hover { background:var(--brand-50); }
  .filter-reset-btn:hover { color:var(--gray-500); border-color:var(--gray-200); background:var(--gray-50); }
  /* ダークモードのhoverスティッキーも解消 */
  [data-theme="dark"] .map-ctrl-btn:hover { background:rgba(17,24,39,.9); }
  [data-theme="dark"] .btn-register:hover { background:var(--brand-500); transform:none; }
  [data-theme="dark"] .filter-btn:hover { border-color:var(--gray-200); color:var(--gray-500); }
  [data-theme="dark"] .land-card-detail-btn:hover { color:var(--gray-600); border-color:var(--gray-200); background:transparent; }
  [data-theme="dark"] .btn-popup-detail:hover { background:var(--gray-100); color:var(--gray-700); border-color:var(--gray-200); }
  [data-theme="dark"] .tag-btn:hover { border-color:var(--gray-200); color:var(--gray-600); }
  [data-theme="dark"] .type-option:hover { border-color:var(--gray-200); }
  [data-theme="dark"] .category-option:hover { border-color:var(--gray-200); }
  [data-theme="dark"] .advanced-toggle:hover { color:var(--gray-500); }
  [data-theme="dark"] .filter-reset-btn:hover { color:var(--gray-500); border-color:var(--gray-200); background:var(--gray-100); }
  [data-theme="dark"] .photo-upload-area:hover { border-color:var(--gray-300); background:var(--gray-100); }
  [data-theme="dark"] .btn-delete:hover { background:var(--gray-100); border-color:rgba(239,68,68,.3); }
  [data-theme="dark"] .fav-item:hover { background:transparent; }
  [data-theme="dark"] .shortcut-help-toggle:hover { background:var(--gray-100); color:var(--gray-600); transform:none; }
  [data-theme="dark"] .contact-privacy-link a:hover { color:var(--gray-500); }
}
