:root{--accent:#1F63F0;--ink:#14193A;--sub:#5A6075;--ground:#F4F6FB;--card:#FFFFFF;--soft:#E8EFFE;--line:#E2E7EF;--star:#B7791F}
*{box-sizing:border-box}
body{margin:0;background:var(--ground);color:var(--ink);font-family:'Zen Maru Gothic',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
.page{max-width:560px;margin:0 auto;padding:20px 16px 40px;display:flex;flex-direction:column;gap:16px}
.top{display:flex;align-items:center;justify-content:space-between}
.logo{font-family:'Outfit',sans-serif;font-weight:800;font-size:22px;color:var(--accent);letter-spacing:-.3px;margin:0}
.days{font-size:12px;color:var(--sub)}
.loading,.notice{text-align:center;color:var(--sub);padding:48px 0}
.notice h1{font-size:20px;color:var(--ink);margin:0 0 8px}
.sender{display:flex;align-items:center;gap:10px}
.sender-name{font-size:14px;font-weight:700}
.sender-date{font-size:12px;color:var(--sub)}
h1.title{margin:0;font-size:30px;line-height:1.3}
.message{margin:0;background:var(--card);border-radius:6px 22px 22px 22px;padding:14px 16px;font-size:15px;line-height:1.7;box-shadow:0 2px 10px rgba(20,25,58,.06);white-space:pre-wrap}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.chips li{height:30px;padding:0 12px;border-radius:15px;background:var(--card);display:flex;align-items:center;font-size:13px}
.chips li.count{background:var(--soft);color:var(--accent);font-weight:700}
.map{position:relative;height:360px;border-radius:24px;overflow:hidden;background:var(--line);box-shadow:0 4px 16px rgba(20,25,58,.08);transition:height .25s ease}
.map.large{height:70vh}
.map-canvas{position:absolute;inset:0}
.map-toggle{position:absolute;right:12px;top:12px;z-index:2;height:36px;padding:0 14px;border-radius:18px;border:none;background:#fff;color:var(--ink);font:inherit;font-size:13px;font-weight:700;box-shadow:0 2px 8px rgba(20,25,58,.15);cursor:pointer}
.map-pin{position:relative;width:40px;height:40px;border-radius:20px;background:#fff;border:3px solid var(--pin,var(--accent));display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px rgba(20,25,58,.25);cursor:pointer;transition:transform .15s ease}
.map-pin svg{width:20px;height:20px;stroke:var(--pin,var(--accent))}
.map-pin.selected{background:#FFE45E;border-color:var(--ink);transform:scale(1.3);z-index:1}
.map-pin.selected svg{stroke:var(--ink)}
.map-pin-label{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%) scale(.77);transform-origin:bottom center;white-space:nowrap;font-size:12px;font-weight:700;color:var(--ink);background:#fff;padding:3px 10px;border-radius:9px;box-shadow:0 1px 4px rgba(20,25,58,.15)}
.map-pin.selected .map-pin-label{display:block}
.map-selected:empty{display:none}
.spot.selected{border:2px solid var(--accent);box-shadow:0 6px 18px rgba(31,99,240,.15)}
.spot-icon svg{stroke:var(--pin,var(--accent))}
.spot.selected .spot-icon{background:#FFF6C7}
.spot.selected .spot-icon svg{stroke:var(--ink)}
.spots{display:flex;flex-direction:column;gap:12px;margin:0;padding:0;list-style:none}
.spot{background:var(--card);border-radius:22px;padding:16px;display:flex;flex-direction:column;gap:12px;box-shadow:0 2px 10px rgba(20,25,58,.05)}
.spot-head{display:flex;gap:12px;align-items:flex-start}
.spot-icon{flex-shrink:0;width:48px;height:48px;border-radius:16px;background:color-mix(in srgb,var(--pin,var(--accent)) 14%,#fff);display:flex;align-items:center;justify-content:center}
.spot-body{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
.spot-name{margin:0;font-size:18px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.stars{font-size:14px;color:var(--star)}
.spot-sub{font-size:13px;color:var(--sub)}
.spot-memo{margin:4px 0 0;font-size:15px;line-height:1.6;white-space:pre-wrap}
.spot-source{font-size:12px;color:var(--sub)}
.spot-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn{min-height:44px;padding:0 16px;border-radius:22px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;text-decoration:none;font-weight:700}
.btn-primary{flex:1;min-width:180px;background:var(--accent);color:#fff}
.btn-outline{border:2px solid var(--line);color:var(--ink);font-weight:500;background:var(--card)}
.cta{margin-top:8px;background:var(--accent);border-radius:26px;padding:22px 20px;color:#fff;display:flex;flex-direction:column;gap:12px}
.cta-logo{font-family:'Outfit',sans-serif;font-weight:800;font-size:26px;margin:0}
.cta-text{margin:0;font-size:16px;line-height:1.6;font-weight:700}
.cta-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn-white{background:#fff;color:var(--accent)}
.btn-ghost{border:2px solid rgba(255,255,255,.6);color:#fff;font-weight:500}
.foot{text-align:center;font-size:12px;color:var(--sub)}
/* 通報（共有ページの下） */
.report{background:var(--card);border-radius:18px;padding:12px 16px;font-size:13px;color:var(--sub)}
.report summary{cursor:pointer;text-align:center;list-style:none}
.report summary::-webkit-details-marker{display:none}
.report[open] summary{color:var(--ink);font-weight:700;margin-bottom:8px}
.report-form,.contact-form{display:flex;flex-direction:column;gap:12px}
.report-note{margin:0;line-height:1.6}
.report fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.report legend{font-weight:700;color:var(--ink);margin-bottom:4px}
.report label{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:14px;min-height:32px}
.report textarea,.contact-form textarea,.contact-form input{font:inherit;font-size:15px;color:var(--ink);border:2px solid var(--line);border-radius:14px;padding:10px 12px;background:var(--ground);width:100%}
.report .btn-primary,.contact-form .btn-primary{border:0;cursor:pointer;font:inherit;font-weight:700}
.report .btn-primary:disabled,.contact-form .btn-primary:disabled{opacity:.5}
.report-status,.report-done{margin:0;text-align:center}
.report-done{color:var(--ink);font-weight:700;padding:8px 0}
/* 利用規約・プライバシーポリシー・お問い合わせ */
.legal{line-height:1.8;font-size:15px}
.legal h1{font-size:26px;margin:8px 0 0;line-height:1.4}
.legal h2{font-size:18px;margin:20px 0 4px}
.legal p,.legal ul,.legal ol{margin:0 0 8px}
.legal ul,.legal ol{padding-left:1.4em}
.legal .meta{color:var(--sub);font-size:13px}
.legal .box{background:var(--card);border-radius:20px;padding:16px 18px;box-shadow:0 2px 10px rgba(20,25,58,.05)}
.contact-form label{font-size:13px;color:var(--sub);display:flex;flex-direction:column;gap:6px}
.legal-links{display:flex;justify-content:center;gap:16px;font-size:13px;flex-wrap:wrap}
