diff --git a/styles.css b/styles.css index ec0b32c..4a86b75 100644 --- a/styles.css +++ b/styles.css @@ -1,53 +1,211 @@ +/* Reset / base */ +* { box-sizing: border-box; } +html,body { height: 100%; } +body { + margin: 0; + font-family: "Hiragino Sans","Helvetica Neue",Arial,sans-serif; + background: linear-gradient(135deg,#a8edea,#fed6e3); /* 空色 → 桜色 */ + color: #222; + -webkit-font-smoothing: antialiased; + -webkit-tap-highlight-color: transparent; +} + +/* Header */ +.site-header { + padding: 12px 16px; + text-align: center; + background: linear-gradient(90deg,#6a85b6,#bac8e0); + color: #fff; + box-shadow: 0 2px 6px rgba(0,0,0,0.12); +} +.site-header h1 { margin: 0; font-size: 1.2rem; } +.site-header .sub { margin: 4px 0 0; font-size: 0.85rem; opacity: 0.95; } + +/* Tabs */ +.tabs { + display: flex; + gap: 8px; + padding: 10px; + justify-content: center; +} +.tab-button { + flex: 1; + max-width: 200px; + padding: 10px 14px; + border: none; + border-radius: 10px; + background: rgba(255,255,255,0.9); + font-size: 1rem; + cursor: pointer; + box-shadow: 0 2px 6px rgba(0,0,0,0.08); +} +.tab-button.active { + background: linear-gradient(90deg,#ff9a9e,#fad0c4); + color: #fff; + font-weight: 700; +} + +/* Main / Map */ +.main { padding: 12px; display: flex; justify-content: center; } +.map-wrapper { width: 100%; max-width: 640px; } .map-container { position: relative; - display: inline-block; + width: 100%; + border-radius: 14px; + overflow: hidden; + border: 3px solid rgba(255,255,255,0.9); + box-shadow: 0 8px 24px rgba(0,0,0,0.18); + background: #fff; } - .map-container img { - max-width: 100%; + width: 100%; height: auto; display: block; + user-select: none; + -webkit-user-drag: none; } +/* Pin */ .pin { position: absolute; - width: 32px; - height: 32px; - transform: translate(-50%, -100%); + width: 44px; + height: 44px; + transform: translate(-50%,-100%); + touch-action: manipulation; + z-index: 6; + transition: transform .14s ease; +} +.pin:active, +.pin:focus { transform: translate(-50%,-100%) scale(0.98); } +.pin img { width: 100%; height: 100%; display:block; pointer-events: none; } + +/* Tooltip (カード風) */ +.tooltip { + position: absolute; + z-index: 8; + transform: translate(-50%,-120%); + display: none; + min-width: 200px; + max-width: 86vw; + border-radius: 12px; + box-shadow: 0 10px 28px rgba(0,0,0,0.20); + background: #fff; + overflow: hidden; + animation: tooltipFade .22s ease; +} +@keyframes tooltipFade { + from { opacity: 0; transform: translate(-50%,-125%) scale(.98); } + to { opacity: 1; transform: translate(-50%,-120%) scale(1); } +} +.tooltip-card { display: block; } + +/* Header inside tooltip */ +.tooltip-header { + background: linear-gradient(90deg,#ff9a9e,#fad0c4); + color: #fff; + padding: 10px 12px; + font-weight: 700; + font-size: 1rem; + text-align: left; +} + +/* Body */ +.tooltip-body { + padding: 10px 12px; + text-align: left; + font-size: 0.95rem; + color: #333; +} +.tooltip-body img { + width: 100%; + border-radius: 8px; + display: block; + margin: 6px 0; +} +.tooltip-body p { margin: 6px 0 0; line-height: 1.4; } + +/* Close button in tooltip */ +.tooltip .close-btn { + position: absolute; + right: 8px; + top: 8px; + background: rgba(255,255,255,0.85); + border: none; + width: 34px; + height: 34px; + border-radius: 50%; + font-size: 16px; + line-height: 1; + cursor: pointer; + z-index: 12; + box-shadow: 0 2px 6px rgba(0,0,0,0.12); +} + +/* 一覧ボタン(固定) */ +.list-toggle { + position: fixed; + right: 12px; + bottom: 12px; + z-index: 30; + background: linear-gradient(90deg,#6a85b6,#bac8e0); + color: #fff; + border: none; + padding: 12px 14px; + border-radius: 999px; + box-shadow: 0 8px 20px rgba(0,0,0,0.22); + font-weight: 700; cursor: pointer; } -.pin img { - width: 100%; - height: 100%; - user-select: none; - pointer-events: none; +/* 一覧パネル(ボトムシート) */ +.list-panel { + position: fixed; + left: 0; + right: 0; + bottom: 0; + z-index: 40; + background: #fff; + border-top-left-radius: 14px; + border-top-right-radius: 14px; + box-shadow: 0 -8px 30px rgba(0,0,0,0.22); + transform: translateY(110%); + transition: transform .28s cubic-bezier(.2,.9,.2,1); + max-height: 70vh; + display: flex; + flex-direction: column; +} +.list-panel.open { transform: translateY(0); } +.list-panel-header { + display:flex; + align-items:center; + justify-content: space-between; + padding: 12px; + border-bottom: 1px solid #eee; +} +.list-content { + overflow: auto; + padding: 8px 12px 24px; +} +.shop-item { + display:flex; + gap: 10px; + padding: 10px; + border-radius: 10px; + align-items: center; + cursor: pointer; + transition: background .12s ease; +} +.shop-item:hover { background: rgba(220,235,255,0.6); } +.shop-thumb { width: 64px; height: 64px; border-radius: 8px; object-fit: cover; flex: 0 0 64px; } +.shop-meta { text-align: left; flex: 1; } +.shop-title { font-weight: 700; margin: 0; font-size: 0.98rem; } +.shop-desc { margin: 6px 0 0; font-size: 0.9rem; color:#555; } + +/* small screen tweaks */ +@media (min-width: 520px) { + .pin { width: 48px; height: 48px; } + .tooltip { min-width: 220px; } } -/* 吹き出し */ -.tooltip { - position: absolute; - background: white; - border: 1px solid #666; - border-radius: 6px; - padding: 8px 12px; - font-size: 14px; - max-width: 200px; - transform: translate(-50%, -120%); - display: none; - z-index: 10; - box-shadow: 0 2px 6px rgba(0,0,0,0.2); -} - -.tooltip img { - width: 100%; - border-radius: 4px; - margin-top: 5px; -} - -.tooltip a { - display: block; - margin-top: 6px; - color: blue; - text-decoration: underline; -} +/* Utility */ +.hidden { display: none !important; }