/* ===== ノミドコ 固有スタイル（夜の二次会らしい紫〜ピンクのトーン） ===== */
:root{
  --brand-g1:#7b4bff; --brand-g2:#ff4f9a; --brand-g3:#ffb14b;
  --accent:#7b4bff; --accent-soft:#efe9ff;
}
@media (prefers-color-scheme: dark){
  :root{ --accent:#a98bff; --accent-soft:#241c3a; }
}
html,body{ height:100%; }
body{ display:flex; flex-direction:column; height:100vh; overflow:hidden; }
header.app-head{ padding:8px 14px; border-bottom:1px solid var(--rule); background:var(--panel); z-index:600; flex:none; }
.controls{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-top:8px; }
.seg{ display:inline-flex; border:1px solid var(--rule); border-radius:999px; overflow:hidden; }
.seg button{ font:inherit; font-size:12.5px; padding:5px 12px; border:none; background:transparent; color:var(--ink-mid); cursor:pointer; }
.seg button[aria-pressed="true"]{ background:var(--accent); color:#fff; font-weight:700; }
.cta{ font:inherit; font-size:14px; font-weight:800; padding:9px 18px; border:none; border-radius:999px; color:#fff;
  background:linear-gradient(92deg,var(--brand-g1),var(--brand-g2)); cursor:pointer;
  box-shadow:0 4px 16px rgba(123,75,255,.32); transition:transform .12s, box-shadow .12s; }
.cta:hover{ transform:translateY(-1px); box-shadow:0 8px 22px rgba(255,79,154,.34); }
.cta:disabled{ opacity:.6; cursor:default; transform:none; }
.lim{ font:inherit; font-size:12.5px; padding:5px 11px; border-radius:999px; border:1.5px solid var(--rule);
  background:transparent; color:var(--ink-mid); cursor:pointer; font-weight:600; }
.lim[aria-pressed="true"]{ border-color:var(--accent); color:var(--accent); background:var(--accent-soft); }
.sortsel,.search{ font:inherit; font-size:12.5px; padding:6px 11px; border-radius:999px;
  border:1.5px solid var(--rule); background:var(--panel); color:var(--ink); }
.search{ min-width:170px; }
.count{ font-size:11.5px; color:var(--ink-soft); margin-left:auto; font-variant-numeric:tabular-nums; }
#filterPanel{ margin-top:8px; }
.frow{ display:flex; align-items:flex-start; gap:8px; padding:4px 0; border-top:1px dashed var(--rule-soft); }
.frow:first-child{ border-top:none; }
.flabel{ font-size:11px; color:var(--ink-soft); min-width:48px; padding-top:8px; flex:none; }
.frow .controls{ margin-top:0; flex:1; min-width:0; }

.app{ flex:1; display:flex; min-height:0; }
aside{ width:400px; flex:none; background:var(--panel); border-right:1px solid var(--rule); overflow-y:auto; overscroll-behavior:contain; }
#map{ flex:1; min-width:0; background:var(--ground); }
.empty{ padding:26px 18px; color:var(--ink-soft); font-size:13px; line-height:1.8; }

/* 店カード */
.shop{ background:var(--panel); border:1px solid var(--rule-soft); border-left:5px solid var(--accent);
  border-radius:12px; margin:8px 10px; padding:12px 13px; position:relative; cursor:pointer;
  box-shadow:0 1px 5px rgba(30,20,10,.05); transition:transform .13s, box-shadow .13s; }
.shop:hover{ transform:translateY(-2px); box-shadow:0 6px 18px rgba(30,20,10,.10); }
.shop[aria-current="true"]{ background:var(--accent-soft); border-left-width:7px; }
.shop .nm{ font-size:14.5px; font-weight:800; line-height:1.45; }
.shop .meta{ font-size:11.5px; color:var(--ink-soft); display:flex; flex-wrap:wrap; gap:7px; align-items:center; margin-top:3px; }
.shop .dist{ font-size:11px; font-weight:800; color:var(--accent); }
.shop .tags{ display:flex; flex-wrap:wrap; gap:5px; margin-top:6px; }
.tag{ font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:999px; background:var(--calm-bg); color:var(--calm); }
.tag.on{ background:#efe9ff; color:#6a3ae0; }
.tag.open{ background:#e3f5ea; color:#1f8b57; }
.tag.closed{ background:var(--urgent-bg); color:var(--urgent); }
.tag.budget{ background:#fff2df; color:#a2660f; }
.shop .links{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:8px; }
.shop .links a{ font-size:11.5px; font-weight:700; color:var(--accent); text-decoration:none; }
.shop .links a:hover{ text-decoration:underline; }
.shop .hours{ font-size:11px; color:var(--ink-soft); margin-top:5px; line-height:1.6; }
.shop .share-ic{ font:inherit; font-size:13px; line-height:1; border:none; background:var(--accent-soft);
  color:var(--accent); width:26px; height:26px; border-radius:999px; cursor:pointer; margin-left:auto;
  display:inline-flex; align-items:center; justify-content:center; flex:none; }
.shop .share-ic:hover{ background:var(--accent); color:#fff; }

/* 現在地（Googleマップ風） */
.me-icon{ position:relative; }
.me-icon .me-dot{ position:absolute; left:50%; top:50%; width:14px; height:14px; margin:-7px 0 0 -7px;
  background:#4285F4; border:2.5px solid #fff; border-radius:50%; box-shadow:0 1px 4px rgba(0,0,0,.35); }
.me-icon .me-pulse{ position:absolute; left:50%; top:50%; width:14px; height:14px; margin:-7px 0 0 -7px;
  background:rgba(66,133,244,.45); border-radius:50%; animation:mePulse 2s ease-out infinite; }
@keyframes mePulse{ 0%{ transform:scale(1); opacity:.7 } 70%{ transform:scale(3.2); opacity:0 } 100%{ opacity:0 } }

.leaflet-popup-content{ font-family:inherit; margin:12px 14px; }
.pop h3{ margin:0 0 6px; font-size:14px; }
.pop .meta{ font-size:12px; color:#666; margin:0 0 6px; }
.pop a{ color:#7b4bff; text-decoration:none; font-size:12.5px; margin-right:12px; font-weight:700; }

#mapFab{ display:none; position:fixed; right:14px; bottom:18px; z-index:900; border:none; border-radius:999px;
  padding:12px 18px; font:inherit; font-weight:800; font-size:13.5px; color:#fff;
  background:linear-gradient(92deg,var(--brand-g1),var(--brand-g2)); box-shadow:0 6px 20px rgba(123,75,255,.35); cursor:pointer; }

@media (max-width:820px){
  #mapFab{ display:none; }
  body.view-list #mapFab{ display:block; }
  aside{ width:auto; border-right:none; flex:1; }
  #map{ width:100%; flex:1; }
  body.view-list #map{ display:none; }
  body.view-map aside{ display:none; }
  #filterPanel{ max-height:46vh; overflow:auto; }
}
