
/* デザイン要件.md に準拠 */
:root{
  --rose:#D36985; --rose-deep:#C43357; --rose-dark:#AA3355; --rose-light:#EBB2C1; --rose-tint:#FBEFF2;
  --text:#333333; --sub:#666666; --label:#837373; --line:#E0E1E2; --line-strong:#BFB9B0; --bg:#F5F3EF; --surface:#FFFFFF; --pin-none:#A9A29A;
  --shadow-map:0 1px 2px rgba(0,0,0,.2);
  --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
  --ad-h:min(31.25vw, 120px); --ad-b:calc(var(--ad-h) + var(--safe-b));
  color-scheme:light;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0;touch-action:manipulation}
body{background:var(--bg);color:var(--text);font-family:"Hiragino Sans","ヒラギノ角ゴシック",-apple-system,BlinkMacSystemFont,"Noto Sans JP",Meiryo,sans-serif;font-size:14px;line-height:20px;letter-spacing:0;font-variant-numeric:tabular-nums;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
svg{display:block;flex:none}
:focus-visible{outline:2px solid var(--rose);outline-offset:1px}
@keyframes up{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
/* ボタン共通（下辺2px） */
.b2{background:var(--surface);border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:4px;color:var(--sub);font-weight:bold}
.b2:active{background:var(--bg)}
.b2[aria-pressed="true"]{background:var(--rose-deep);border-color:var(--rose-deep);border-bottom-color:var(--rose-dark);color:#fff}

/* ---------- ヘッダー ---------- */
.top{position:fixed;inset:0 0 auto 0;z-index:1700;background:var(--surface);border-bottom:1px solid var(--line);padding:calc(var(--safe-t) + 6px) 10px 8px;display:flex;flex-direction:column;gap:6px}
.hrow1{display:flex;align-items:baseline;gap:8px}
.brand{font-size:20px;line-height:24px;font-weight:bold;color:var(--rose-deep)}
.tagline{font-size:10px;line-height:14px;font-weight:bold;color:var(--label)}
.hmenu{margin-left:auto;font-size:10px;line-height:14px;color:var(--label);text-decoration:underline;align-self:center}
.legal{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:12px}
.legal button,.legal a{font-size:10px;line-height:16px;color:var(--label);text-decoration:underline}
.rules p{margin:8px 0}
.kv2{display:grid;grid-template-columns:7em 1fr;gap:8px 10px;margin:8px 0}.kv2 dt{color:var(--label);font-weight:bold}.kv2 dd{margin:0}
.menu .linkrow{width:100%;text-align:left;padding:0 2px}
.seo-doc,.seo-intro{padding:15px 10px;background:var(--surface)}
.seo-doc h1,.seo-intro h1{margin:0 0 6px;font-size:20px;line-height:28px}
.seo-doc p,.seo-intro p{margin:4px 0;font-size:12px;line-height:18px;color:var(--sub)}
.seo-list{margin:0;padding:10px 10px 10px 28px;background:var(--surface);font-size:12px;line-height:20px}
.seo-nav{padding:10px;font-size:12px;line-height:22px}
.seo-nav h2{margin:10px 0 4px;font-size:12px;color:var(--rose-deep)}
.seo-nav a{display:inline-block;margin-right:10px;color:var(--sub);text-decoration:underline}
.foot .seo-nav{padding:10px 0 0}
.inlink{color:var(--rose-deep);text-decoration:underline;font-size:inherit;line-height:inherit}
.hrow2{display:flex;gap:6px}
.search{flex:1;min-width:0;height:36px;display:flex;align-items:center;gap:6px;padding:0 10px;border:1px solid #BBBBBB;border-radius:10px;background:var(--surface);color:var(--label)}
.search input{flex:1;min-width:0;border:none;outline:none;background:none;font:inherit;font-size:16px;line-height:20px;color:var(--text);padding:0}
.search input::placeholder{color:#999999;font-size:14px}
.fbtn{position:relative;height:36px;padding:0 10px;display:flex;align-items:center;gap:4px;font-size:12px}
.fbtn svg{color:var(--rose)}
.fbtn .badge{position:absolute;top:-6px;right:-6px;min-width:16px;height:16px;border-radius:8px;background:var(--rose-deep);color:#fff;font-size:10px;line-height:16px;text-align:center;padding:0 4px}
.chips{display:flex;gap:5px;overflow-x:auto;scrollbar-width:none;margin:0 -10px;padding:0 10px}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;height:32px;padding:0 12px;font-size:12px;display:flex;align-items:center}

/* ---------- 地図 ---------- */
#map{position:fixed;left:0;right:0;bottom:0;top:var(--top-h,130px);z-index:1;background:#EAE7E1}
.leaflet-control-attribution{font-size:9px}
.leaflet-bottom{bottom:var(--ad-b)}
.leaflet-control-attribution{margin:0!important;background:rgba(255,255,255,.7)!important}
.leaflet-touch .leaflet-bar{border:1px solid var(--line-strong);box-shadow:var(--shadow-map);border-radius:4px;overflow:hidden}
.leaflet-touch .leaflet-bar a{color:var(--sub)}
.pin{width:28px;height:28px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--rose);border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.3);display:grid;place-items:center}
.pin span{transform:rotate(45deg);color:#fff;font-size:11px;font-weight:bold}
.pin.t1{background:var(--rose-light)}.pin.t0{background:var(--pin-none)}
.pin.on{transform:rotate(-45deg) scale(1.25);border-color:var(--rose-dark)}
.legend{position:fixed;left:10px;bottom:calc(var(--sheet-h,64px) + var(--ad-b) + 6px);z-index:900;background:var(--surface);border:1px solid var(--line);border-radius:4px;box-shadow:var(--shadow-map);padding:4px 8px;font-size:10px;line-height:14px;font-weight:bold;color:var(--label);display:flex;gap:8px;align-items:center}
.legend span{display:flex;align-items:center;gap:3px}
.legend i{width:8px;height:8px;border-radius:50%}

/* ---------- 現在地ボタン ---------- */
.locate{position:fixed;right:10px;bottom:calc(var(--sheet-h,64px) + var(--ad-b) + 8px);z-index:950;width:44px;height:44px;display:grid;place-items:center;box-shadow:var(--shadow-map)}
.locate svg{color:var(--rose)}
.locate.busy svg{opacity:.4}
.me{width:16px;height:16px;border-radius:50%;background:#4A90D9;border:3px solid #fff;box-shadow:0 0 0 6px rgba(74,144,217,.25)}

/* ---------- リスト表示ボタン ---------- */
.fab{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--ad-b) + 14px);z-index:1000;height:44px;padding:0 18px;box-shadow:var(--shadow-map);display:flex;align-items:center;gap:6px;font-size:14px;white-space:nowrap}
.fab svg{color:var(--rose)}

/* ---------- 横スクロールのカード ---------- */
.sheet{position:fixed;left:0;right:0;bottom:var(--ad-b);z-index:1000;padding-bottom:10px;animation:up .2s ease-out}
.shead{display:flex;align-items:center;justify-content:space-between;padding:0 10px 6px}
.cnt{background:var(--surface);border:1px solid var(--line);border-radius:4px;box-shadow:var(--shadow-map);height:32px;padding:0 10px;display:flex;align-items:center;font-size:12px;color:var(--sub)}
.cnt b{color:var(--rose-deep);font-size:14px;margin-right:2px}
.shead .r{display:flex;gap:5px}
.sbtn{height:32px;padding:0 10px;font-size:12px;display:flex;align-items:center;box-shadow:var(--shadow-map)}
.sbtn.x{width:32px;padding:0;justify-content:center}
.cards{display:flex;gap:6px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 10px 4px;scrollbar-width:none}
.cards::-webkit-scrollbar{display:none}
.card{flex:none;width:calc(100vw - 40px);max-width:360px;scroll-snap-align:center;background:var(--surface);border:1px solid var(--line);border-radius:4px;box-shadow:var(--shadow-map);padding:10px;text-align:left;display:flex;flex-direction:column;gap:5px}
.card.on{border:2px solid var(--rose);padding:9px}
.nm{display:flex;align-items:baseline;gap:6px;min-width:0}
.nm b{font-size:16px;line-height:22px;font-weight:bold}
.nm small{font-size:12px;line-height:18px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cl{font-size:12px;line-height:18px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tags{display:flex;gap:4px;flex-wrap:wrap}
.tag{font-size:10px;line-height:14px;font-weight:bold;padding:0 5px;border:1px solid var(--line-strong);border-radius:3px;background:var(--surface);color:var(--label);white-space:nowrap}
.tag.main{background:var(--rose-deep);border-color:var(--rose-deep);color:#fff}
.meta{display:flex;gap:12px;font-size:12px;line-height:18px;color:var(--label);flex-wrap:wrap}
.meta b{color:var(--text);font-weight:bold;margin-left:3px}
.meta b.pk{color:var(--rose-deep)}

/* ---------- 全画面一覧・ナビ ---------- */
.full{position:fixed;inset:0 0 var(--ad-b) 0;z-index:1800;background:var(--bg);display:flex;flex-direction:column;animation:up .2s ease-out}
.nav{flex:none;height:calc(var(--safe-t) + 44px);padding:var(--safe-t) 2px 0;display:flex;align-items:center;border-bottom:1px solid var(--line);background:var(--surface)}
.nav .t{flex:1;text-align:center;font-size:16px;line-height:22px;font-weight:bold;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px}
.nav .side{width:84px;display:flex}
.nav .side.r{justify-content:flex-end}
.navbtn{height:44px;min-width:44px;padding:0 8px;display:flex;align-items:center;gap:2px;font-size:14px;font-weight:bold;color:var(--rose-deep)}
.fbody{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.row{display:flex;flex-direction:column;gap:5px;padding:10px;border-bottom:1px solid var(--line);width:100%;text-align:left;background:var(--surface)}
.row:active{background:var(--bg)}

/* ---------- 絞り込みシート ---------- */
.fpanel{position:fixed;inset:0;z-index:2500;background:rgba(0,0,0,.4);display:flex;align-items:flex-end}
.fsheet{background:var(--surface);width:100%;max-height:85vh;border-radius:8px 8px 0 0;display:flex;flex-direction:column;animation:up .2s ease-out}
.fsheet .nav{height:44px;padding:0 2px;border-radius:8px 8px 0 0}
.fscroll{overflow-y:auto;padding:0 10px 5px}
.fgroup{padding:15px 0;border-bottom:1px solid var(--line)}
.fgroup:last-child{border-bottom:none}
.fgroup h3{margin:0 0 10px;font-size:12px;line-height:18px;font-weight:bold;color:var(--rose-deep);position:relative;padding-left:11px}
.fgroup h3::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;border-radius:5px;background:var(--rose)}
.fgroup h3 small{font-weight:normal;color:var(--label);font-size:10px;margin-left:6px}
.opts{display:flex;flex-wrap:wrap;gap:5px}
.opt{height:32px;padding:0 12px;font-size:12px;display:flex;align-items:center}
.opt[aria-pressed="true"]{background:var(--rose-tint);border-color:var(--rose);color:var(--rose-deep)}
.fgo{margin:5px 10px calc(var(--safe-b) + 10px);height:44px;border-radius:4px;background:var(--rose-deep);border-bottom:2px solid var(--rose-dark);color:#fff;font-size:14px;font-weight:bold}
.fgo:active{background:var(--rose-dark)}

/* ---------- 詳細 ---------- */
.detail{position:fixed;inset:0 0 var(--ad-b) 0;z-index:2000;background:var(--bg);display:flex;flex-direction:column}
.dscroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.hero{background:var(--surface);padding:15px 10px;border-bottom:1px solid var(--line)}
.kana{font-size:10px;line-height:14px;color:var(--label)}
.dname{margin:2px 0;font-size:20px;line-height:28px;font-weight:bold}
.role{font-size:12px;line-height:18px;color:var(--sub);margin-bottom:8px}
.sec{margin-top:10px;background:var(--surface)}
.hl{margin:0;border-top:1px solid var(--line-strong);border-bottom:2px solid var(--line-strong);padding:12px 10px 10px;font-size:16px;line-height:22px;font-weight:bold;color:var(--rose-deep);display:flex;align-items:center;gap:7px}
.hl::before{content:"";width:15px;height:15px;border-radius:4px;background:var(--rose);flex:none}
.body{padding:10px}
.linkrow{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;border-bottom:1px solid var(--line);font-size:14px;font-weight:bold;color:var(--text)}
.linkrow svg{color:var(--label)}
.addr{font-size:12px;line-height:18px;color:var(--sub);padding:8px 0}
.minimap{height:140px;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.btns{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}
.btn{height:44px;display:flex;align-items:center;justify-content:center;font-size:14px}
.btn.pri{background:var(--rose-deep);border-color:var(--rose-deep);border-bottom-color:var(--rose-dark);color:#fff}
.btn.pri:active{background:var(--rose-dark)}
.sub{font-size:10px;line-height:16px;color:var(--label);margin-top:8px}
.sub a{text-decoration:underline}
.spec{display:flex;gap:5px;flex-wrap:wrap}
.spec span{font-size:12px;line-height:18px;padding:3px 10px;border-radius:3px;background:var(--rose-tint);color:var(--rose-deep);font-weight:bold}
.none{font-size:12px;line-height:18px;color:var(--label)}
.total{font-size:20px;line-height:28px;font-weight:bold;margin-bottom:8px}
.total small{font-size:12px;font-weight:normal;margin-left:2px}
.bars{display:flex;flex-direction:column;gap:6px}
.bar5{display:grid;grid-template-columns:3.4em 1fr 2.6em;gap:8px;align-items:center;font-size:12px;line-height:18px}
.bar5 .tr{height:8px;border-radius:2px;background:var(--bg);overflow:hidden}
.bar5 .fl{display:block;height:100%;background:var(--rose)}
.bar5.dim .fl{background:var(--pin-none)}
.bar5 .n{text-align:right;font-weight:bold}
.qrow{display:flex;justify-content:space-between;align-items:center;min-height:40px;border-bottom:1px solid var(--line);font-size:14px;font-weight:bold}
.qrow:last-of-type{border-bottom:none}
.qrow span{font-size:10px;font-weight:normal;color:var(--label)}
.ad{background:var(--bg);border:1px solid var(--line);border-radius:4px;min-height:70px;padding:6px 8px;font-size:10px;line-height:16px;color:var(--label)}
.ad b{display:inline-block;font-weight:normal;border:1px solid var(--label);border-radius:2px;padding:0 3px;margin-right:6px}
.list-ad{padding:10px;border-bottom:1px solid var(--line);background:var(--surface)}
.foot{padding:15px 10px 20px;font-size:10px;line-height:16px;color:var(--label)}
.foot a{text-decoration:underline}
.fixbtn{margin-top:10px;height:32px;padding:0 10px;font-size:12px}
.toast{position:fixed;left:50%;bottom:calc(var(--ad-b) + 20px);transform:translateX(-50%);z-index:3000;background:rgba(0,0,0,.85);color:#fff;padding:8px 12px;border-radius:4px;font-size:12px;line-height:18px;width:max-content;max-width:calc(100vw - 20px)}

/* ---------- 口コミ ---------- */
.stars{display:inline-flex;gap:1px;color:var(--rose-deep);letter-spacing:0}
.stars i{font-style:normal;color:var(--line-strong)}
.rvsum{display:flex;gap:15px;align-items:center;padding-bottom:10px;border-bottom:1px solid var(--line)}
.rvavg{text-align:center;min-width:72px}
.rvavg b{display:block;font-size:28px;line-height:34px;font-weight:bold}
.rvavg small{font-size:10px;line-height:14px;color:var(--label)}
.rvdist{flex:1;display:flex;flex-direction:column;gap:3px}
.rvdist .bar5{grid-template-columns:1.6em 1fr 2em;font-size:10px;line-height:14px}
.rvdist .tr{height:6px}
.rvwrite{width:100%;height:44px;margin-top:10px;display:flex;align-items:center;justify-content:center;gap:6px;font-size:14px}
.rvwrite svg{color:var(--rose)}
.rv{padding:12px 0;transition:background .4s;border-bottom:1px solid var(--line)}
.rv:last-child{border-bottom:none}
.rvhead{display:flex;align-items:center;gap:8px;font-size:12px;line-height:18px}
.rvhead b{font-weight:bold}
.rvhead .dt{margin-left:auto;color:var(--label);font-size:10px}
.rvarea{font-size:10px;line-height:14px;color:var(--label);margin-top:2px}
.rvbody{font-size:14px;line-height:20px;margin-top:6px;white-space:pre-wrap;word-break:break-word}
.rvimgs{display:flex;gap:5px;margin-top:8px}
.rvimgs a{width:80px;height:80px;border-radius:4px;overflow:hidden;background:var(--bg);border:1px solid var(--line)}
.rvimgs img{width:100%;height:100%;object-fit:cover;display:block}
.rvacts{display:flex;align-items:center;gap:20px;margin-top:8px}
.rvact{display:flex;align-items:center;gap:6px;height:36px;font-size:12px;font-weight:bold;color:var(--sub)}
.rvact svg{color:var(--sub)}
.rvact[aria-pressed="true"],.rvact[aria-pressed="true"] svg{color:var(--rose-deep)}
.rvact[aria-pressed="true"] svg path{fill:var(--rose-tint)}
.rvrep{margin-left:auto;font-size:10px;line-height:14px;color:var(--label);text-decoration:underline}
.rvnote{font-size:10px;line-height:16px;color:var(--label);margin-top:10px}
.rvnote a,.rvnote button{text-decoration:underline;color:var(--sub);font-size:10px}
.cardstar{color:var(--rose-deep);font-weight:bold}
/* 投稿・通報・ルールのシート */
.form{padding:5px 10px 10px;display:flex;flex-direction:column;gap:15px}
.form label.t{display:block;font-size:12px;line-height:18px;font-weight:bold;margin-bottom:5px}
.form label.t em{font-style:normal;color:var(--rose-deep);font-size:10px;margin-left:4px}
.starpick{display:flex;gap:4px}
.starpick button{font-size:32px;line-height:36px;color:var(--line-strong)}
.starpick button.on{color:var(--rose-deep)}
.form input[type=text],.form textarea,.form select{width:100%;font:inherit;font-size:16px;line-height:22px;padding:8px 10px;border:1px solid #BBBBBB;border-radius:10px;background:var(--surface);color:var(--text)}
.form textarea{min-height:140px;resize:vertical}
.form .cnt2{font-size:10px;color:var(--label);text-align:right}
.thumbs{display:flex;gap:5px;flex-wrap:wrap}
.thumbs .th{position:relative;width:72px;height:72px;border-radius:4px;overflow:hidden;border:1px solid var(--line)}
.thumbs .th img{width:100%;height:100%;object-fit:cover}
.thumbs .th button{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:10px;background:rgba(0,0,0,.6);color:#fff;font-size:12px;line-height:20px}
.addimg{width:72px;height:72px;display:grid;place-items:center;font-size:10px;line-height:14px;text-align:center}
.chk{display:flex;gap:8px;align-items:flex-start;font-size:12px;line-height:18px}
.chk input{margin-top:2px;width:18px;height:18px;accent-color:var(--rose-deep);flex:none}
.chk a,.chk button{color:var(--rose-deep);text-decoration:underline;font-size:12px}
.radios{display:flex;flex-direction:column;gap:8px}
.radios label{display:flex;gap:8px;align-items:center;font-size:14px}
.radios input{width:18px;height:18px;accent-color:var(--rose-deep)}
.login{padding:15px 10px;display:flex;flex-direction:column;gap:10px;align-items:center;text-align:center;font-size:12px;line-height:18px;color:var(--sub)}
.who{font-size:10px;color:var(--label)}
.rules{padding:5px 10px 15px;font-size:12px;line-height:20px}
.rules h4{margin:12px 0 4px;font-size:12px;color:var(--rose-deep)}
.rules ul{margin:0;padding-left:1.2em}
.done{padding:30px 15px;text-align:center;font-size:14px;line-height:22px}
.done b{display:block;font-size:16px;margin-bottom:6px}

/* ---------- バナー広告（画面下部に固定） ---------- */
.banner{position:fixed;left:0;right:0;bottom:0;z-index:2100;height:var(--ad-b);padding-bottom:var(--safe-b);background:var(--surface);border-top:1px solid var(--line);display:flex}
/* 広告は常に横幅いっぱい。画像バナーは横:縦=3.2:1（例 1280×400）で作り、object-fit:cover で枠全体に表示 */
.bad{position:relative;flex:1;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;gap:4px;padding:10px 16px;background:var(--surface);text-decoration:none;color:var(--text);overflow:hidden}
.bad img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.bad .lbl{position:absolute;z-index:1;background:rgba(255,255,255,.85);top:6px;right:8px;font-size:9px;line-height:12px;color:var(--label);border:1px solid var(--label);border-radius:2px;padding:0 3px}
.bad .k{font-size:10px;line-height:14px;font-weight:bold;color:var(--rose-deep)}
.bad .h{font-size:15px;line-height:20px;font-weight:bold}
.bad .f{display:flex;justify-content:space-between;align-items:center;font-size:10px;line-height:14px;color:var(--label)}
.bad .f span:last-child{color:var(--rose-deep);font-weight:bold;font-size:12px}

/* ---------- PC ---------- */
@media (min-width:900px){
  /* 左400pxのサイドバー（ヘッダー・一覧・詳細・広告）＋右に地図 */
  :root{--side:400px;--ad-h:125px;--ad-b:125px}
  body::before{content:"";position:fixed;left:0;top:0;bottom:0;width:var(--side);background:var(--bg);border-right:1px solid var(--line);z-index:0}
  #map{left:var(--side);top:0}
  .top{right:auto;width:var(--side);border-right:1px solid var(--line)}
  .sheet{top:var(--top-h);right:auto;width:var(--side);display:flex;flex-direction:column;padding:8px 0 0;animation:none}
  .cards{flex:1;flex-direction:column;max-height:none;overflow-y:auto;scroll-snap-type:none;padding:0 10px 10px}
  .card{width:auto;max-width:none;box-shadow:none}
  #toFull,#closeSheet,#toList{display:none}
  .full,.detail{right:auto;width:var(--side);border-right:1px solid var(--line)}
  .banner{right:auto;width:var(--side);border-right:1px solid var(--line)}
  .legend{left:calc(var(--side) + 10px);bottom:10px}
  .locate{bottom:10px}
  .toast{left:calc(var(--side) + (100vw - var(--side)) / 2);bottom:20px}
  .fpanel{align-items:center;justify-content:center}.fsheet{width:420px;border-radius:8px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
