/*
Theme Name: 灯しび
Theme URI: https://example.com/
Author: 灯しび
Description: 閉店したお店へ思い出とエールを届ける、やさしい専用テーマ。
Version: 2.4.1
Requires at least: 6.4
Requires PHP: 7.4
Text Domain: tomoshibi
*/

:root {
  --ink: #173c32;
  --muted: #6f766d;
  --cream: #fbf8ef;
  --paper: #fffdf8;
  --sage: #789176;
  --sage-pale: #e7ece1;
  --gold: #e0b45d;
  --rose: #bc6b62;
  --line: #d9d3c3;
  --shadow: 0 18px 48px rgba(41, 56, 44, .1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background:
    radial-gradient(circle at 1px 1px, rgba(39, 74, 59, .09) 1px, transparent 1.2px) 0 0 / 20px 20px,
    var(--cream);
  font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  line-height: 1.8;
}
a { color: inherit; }
img { max-width: 100%; height: auto; }
.site-shell { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
.site-header {
  position: sticky; top: 0; z-index: 30;
  background: rgba(251, 248, 239, .92); backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(23, 60, 50, .1);
}
.header-inner { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; }
.brand-mark { width: 54px; height: 64px; flex: 0 0 54px; position: relative; display: block; overflow: visible; background: transparent; box-shadow: none; }
.firepit { display: flex; align-items: center; justify-content: center; }
.firepit .fire { position: relative; width: 40px; height: 40px; }
.firepit .flame { position: absolute; bottom: 0; left: 0; width: 100%; height: 100%; opacity: .9; border-bottom-right-radius: 70%; border-bottom-left-radius: 70%; border-top-left-radius: 70%; transform: rotate(-45deg) skew(-10deg, -10deg); background: #ff2200 linear-gradient(to top right, rgba(255, 34, 0, .9), rgba(255, 106, 0, .7)); z-index: 1; animation: burn-left 300ms infinite forwards; }
.firepit .flame:nth-of-type(2n) { animation-name: burn-right; animation-duration: 400ms; }
.firepit .flame:nth-of-type(2) { width: 80%; height: 80%; left: 10%; background: #ff6a00 linear-gradient(to top right, rgba(255, 106, 0, .82), rgba(255, 200, 0, .86)); z-index: 2; }
.firepit .flame:nth-of-type(3) { width: 50%; height: 50%; left: 25%; background: linear-gradient(to top right, #ffc800, #fff7cf); z-index: 3; }
.firepit .flame:nth-of-type(4) { width: 30%; height: 30%; left: 35%; background: linear-gradient(to top right, #fff, #fff5c2); opacity: 1; z-index: 4; }
.firepit .spark { position: absolute; bottom: 46%; left: 15%; width: 3px; height: 3px; background: rgba(255, 106, 0, .55); animation: fly-up-burnout-1 3.8s linear infinite .4s; }
.firepit .spark:nth-of-type(2n) { animation-name: fly-up-burnout-2; animation-duration: 4.4s; animation-delay: 1s; }
.firepit .spark:nth-of-type(3n) { animation-delay: 1.9s; animation-duration: 4s; left: 55%; }
.firepit .spark:nth-of-type(4n) { animation-delay: 2.6s; animation-duration: 3.7s; left: 88%; }
.firepit .spark:nth-of-type(5n) { animation-delay: 1.4s; left: 22%; }
.firepit .spark:nth-of-type(6n) { animation-delay: 3.2s; left: 61%; }
.firepit .spark:nth-of-type(7n) { animation-delay: .8s; animation-duration: 3s; left: 64%; }
.firepit .spark:nth-of-type(8n) { animation-delay: 3.5s; left: 19%; }
.firepit .spark:nth-of-type(9n) { animation-delay: 2.8s; left: 22%; }
.firepit .spark:nth-of-type(10n) { animation-delay: 3.2s; left: 61%; }
.firepit .spark:nth-of-type(11n) { animation-delay: 2.5s; left: 81%; }
.firepit .spark:nth-of-type(12n) { animation-delay: 2s; left: 85%; }
@keyframes burn-left { 0%, 100% { transform: rotate(-45deg) skew(-10deg, -10deg) scale(1); } 30%, 60% { transform: rotate(-44deg) skew(-12deg, -12deg) scale(1.01); } }
@keyframes burn-right { 0%, 100% { transform: rotate(-45deg) skew(-10deg, -10deg) scale(1); } 30%, 60% { transform: rotate(-46deg) skew(-6deg, -6deg) scale(1.01); } }
@keyframes fly-up-burnout-1 { 0% { transform: translate(0, 0); opacity: 1; } 33% { transform: translate(5px, -24px); } 66% { transform: translate(0, -45px); opacity: .6; } 100% { transform: translate(3px, -64px); opacity: 0; } }
@keyframes fly-up-burnout-2 { 0% { transform: translate(0, 0); opacity: 1; } 50% { transform: translate(-5px, -27px); } 80% { transform: translate(-2px, -46px); opacity: .6; } 100% { transform: translate(-3px, -62px); opacity: 0; } }
.brand-name { font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: 25px; font-weight: 700; letter-spacing: .14em; }
.brand-copy { color: var(--muted); font-size: 11px; display: block; letter-spacing: .04em; }
.brand-title-row { display:flex; align-items:baseline; gap:9px; }
.brand-edition { color:var(--sage); font-size:12px; font-weight:800; letter-spacing:.02em; white-space:nowrap; }
.site-nav { display: flex; align-items: center; gap: 28px; font-size: 14px; }
.site-nav a { text-decoration: none; }
.nav-message { padding: 9px 17px; color: #fff !important; background: var(--ink); border-radius: 999px; }
.hero { position: relative; overflow: hidden; padding: 96px 0 88px; }
.hero::before { content: ""; position: absolute; width: 560px; height: 560px; border-radius: 50%; background: rgba(243, 222, 154, .46); top: -220px; right: -100px; }
.hero-inner { position: relative; display: grid; grid-template-columns: 1.05fr .95fr; gap: 70px; align-items: center; }
.eyebrow { margin: 0 0 12px; color: var(--rose); font: 700 12px/1.2 Georgia, serif; letter-spacing: .2em; }
.hero h1, .single-hero h1 { margin: 0; font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-weight: 600; line-height: 1.45; letter-spacing: .08em; }
.hero h1 { font-size: clamp(40px, 5vw, 68px); }
.hero-lead { max-width: 600px; margin: 30px 0; color: #56635a; font-size: 16px; }
.hero-actions { display: flex; gap: 14px; flex-wrap: wrap; }
.button, button {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 48px; padding: 0 22px; border: 1px solid var(--ink); border-radius: 999px;
  background: var(--ink); color: #fff; font: inherit; font-weight: 700; text-decoration: none; cursor: pointer;
}
.button.secondary { background: transparent; color: var(--ink); }
.shop-illustration { min-height: 420px; position: relative; }
.sun { position: absolute; width: 330px; height: 330px; border-radius: 50%; background: #f5e8b8; top: 20px; right: 20px; }
.shop-drawing { position: absolute; inset: 110px 30px 0 10px; border: 4px solid var(--ink); background: #f5ecd0; box-shadow: 18px 20px rgba(112, 140, 113, .18); }
.shop-awning { height: 76px; border-bottom: 4px solid var(--ink); background: repeating-linear-gradient(90deg, #809679 0 20%, #f5ecd0 20% 40%); }
.shop-sign { padding: 26px; text-align: center; font-family: "Yu Mincho", serif; font-size: 26px; letter-spacing: .2em; }
.shop-window { position: absolute; left: 35px; bottom: 30px; width: 52%; height: 105px; border: 7px solid var(--ink); background: #bfd2cd; }
.shop-door { position: absolute; right: 35px; bottom: 0; width: 24%; height: 158px; border: 7px solid var(--ink); background: #819488; }
.memory-card { position: absolute; z-index: 3; top: 5px; right: -5px; width: 290px; padding: 30px; background: var(--paper); border: 1px solid #d5cbb6; transform: rotate(2.5deg); box-shadow: var(--shadow); }
.memory-card::before { content: ""; position: absolute; width: 80px; height: 28px; background: rgba(209, 191, 139, .6); left: 100px; top: -15px; }
.memory-card strong { font: 600 23px/1.8 "Yu Mincho", serif; }
.memory-card span { color: var(--rose); float: right; font-size: 28px; }
.section { padding: 88px 0; }
.section.soft { background: rgba(231, 236, 225, .74); border-block: 1px solid rgba(23, 60, 50, .08); }
.section-heading { max-width: 700px; margin-bottom: 38px; }
.section-heading h2 { margin: 0; font: 600 clamp(30px, 4vw, 46px)/1.5 "Yu Mincho", serif; letter-spacing: .06em; }
.section-heading p:last-child { color: var(--muted); }
.filters { display: grid; grid-template-columns: 1.4fr 1fr 1fr auto; gap: 12px; padding: 18px; margin-bottom: 34px; background: var(--paper); border: 1px solid var(--line); border-radius: 18px; box-shadow: var(--shadow); }
input, select, textarea { width: 100%; border: 1px solid var(--line); border-radius: 10px; background: #fff; color: var(--ink); padding: 13px 14px; font: inherit; }
textarea { resize: vertical; }
.shop-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.shop-card { position: relative; overflow: hidden; background: var(--paper); border: 1px solid var(--line); border-radius: 18px; box-shadow: 0 8px 28px rgba(41, 56, 44, .06); transition: transform .2s, box-shadow .2s; }
.shop-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); }
.shop-card > a { display: block; padding: 28px; text-decoration: none; }
.shop-card .number { color: var(--rose); font: 700 12px Georgia, serif; letter-spacing: .14em; }
.shop-card h3 { margin: 15px 0 8px; font: 600 24px/1.5 "Yu Mincho", serif; }
.shop-card p { color: var(--muted); }
.shop-card .meta { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 20px; }
.pill { padding: 4px 10px; background: var(--sage-pale); border-radius: 999px; font-size: 12px; }
.empty-state { padding: 48px; text-align: center; background: var(--paper); border: 1px dashed var(--line); border-radius: 18px; }
.single-hero { padding: 72px 0 54px; background: rgba(231, 236, 225, .62); border-bottom: 1px solid var(--line); }
.detail-breadcrumb { display: flex; align-items: center; gap: 10px; padding-block: 22px; color: var(--muted); font-size: 13px; overflow-x: auto; white-space: nowrap; }
.detail-breadcrumb a { text-decoration: none; }
.detail-breadcrumb strong { color: var(--ink); }
.single-hero h1 { font-size: clamp(38px, 6vw, 64px); }
.shop-facts { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 22px; }
.single-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 55px; align-items: start; }
.story { font-family: "Yu Mincho", serif; font-size: 18px; }
.story h2, .messages h2, .tomoshibi-message-form h2 { font: 600 34px/1.5 "Yu Mincho", serif; }
.shop-side { position: sticky; top: 105px; padding: 28px; background: var(--paper); border: 1px solid var(--line); border-radius: 18px; }
.shop-side dl { margin: 0; }
.shop-side dt { margin-top: 18px; color: var(--muted); font-size: 12px; }
.shop-side dd { margin: 3px 0 0; }
.source-disclaimer { margin-top:22px; padding:13px 14px; color:var(--muted); background:#f5f2e7; border-left:3px solid var(--gold); font-size:11px; line-height:1.8; }
.messages { padding-top: 70px; }
.message-list { display: grid; gap: 15px; }
.message-item { padding: 25px 28px; background: var(--paper); border: 1px solid var(--line); border-radius: 14px; }
.message-item p { margin: 0 0 14px; white-space: pre-wrap; }
.message-item footer { display: flex; justify-content: space-between; color: var(--muted); font-size: 12px; }
.tomoshibi-message-form { margin-top: 70px; padding: 40px; background: var(--sage-pale); border-radius: 22px; }
.tomoshibi-message-form form { display: grid; gap: 18px; }
.tomoshibi-message-form label { font-weight: 700; }
.tomoshibi-message-form label input, .tomoshibi-message-form label textarea { margin-top: 7px; font-weight: 400; }
.tomoshibi-message-form small { color: var(--muted); }
.hp-field { position: absolute !important; left: -9999px !important; }
.form-notice { padding: 12px 16px; border-radius: 8px; background: #fff; }
.form-notice.success { border-left: 4px solid #4b8a68; }
.form-notice.error { border-left: 4px solid #bd4a42; }
.page-content { max-width: 850px; }
.tomoshibi-public-form { padding: 42px; background: var(--paper); border: 1px solid var(--line); border-radius: 22px; box-shadow: var(--shadow); }
.tomoshibi-public-form > h1 { display: none; }
.tomoshibi-public-form > p:not(.eyebrow):not(.form-notice) { margin-bottom: 32px; color: var(--muted); }
.tomoshibi-public-form form { display: grid; gap: 21px; }
.tomoshibi-public-form label { display: block; font-weight: 700; }
.tomoshibi-public-form label > span { margin-left: 4px; color: var(--rose); }
.tomoshibi-public-form input, .tomoshibi-public-form select, .tomoshibi-public-form textarea { margin-top: 7px; font-weight: 400; }
.tomoshibi-public-form .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.tomoshibi-public-form .consent { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; font-weight: 400; }
.tomoshibi-public-form .consent input { width: auto; margin-top: 7px; }
.site-footer { margin-top: 70px; padding: 55px 0 30px; background: var(--ink); color: #eaf0eb; }
.footer-inner { display: flex; justify-content: space-between; gap: 30px; }
.footer-note { max-width: 520px; color: #c4d0c8; font-size: 13px; }
.footer-prefectures { width:100%; margin-top:38px; padding-top:32px; border-top:1px solid rgba(255,255,255,.15); }
.footer-prefectures h2 { margin:0 0 24px; color:#eaf0eb; font:600 17px/1.5 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.08em; }
.footer-region-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:25px 38px; }
.footer-region-grid details summary { display:none; }
.footer-region-grid details:not([open]) .footer-prefecture-links { display:flex; }
.footer-prefecture-links { display:flex; flex-wrap:wrap; gap:7px 14px; align-content:flex-start; }
.footer-prefecture-links a { color:#c4d0c8; font-size:11px; line-height:1.7; text-decoration:none; }
.footer-prefecture-links a:hover { color:#fff; text-decoration:underline; text-underline-offset:3px; }
.footer-legal { display:flex; justify-content:center; flex-wrap:wrap; gap:10px 24px; margin-top:30px; font-size:11px; }
.footer-legal a { color:#c4d0c8; text-decoration:none; }
.footer-legal a:hover { color:#fff; text-decoration:underline; text-underline-offset:3px; }
.copyright { margin-top: 36px; padding-top: 20px; border-top: 1px solid rgba(255,255,255,.15); color: #aebdb3; font-size: 12px; }
.page-content > h2 { margin:36px 0 12px; font:600 25px/1.6 "Yu Mincho","Hiragino Mincho ProN",serif; }
.page-content > h2:first-child { margin-top:0; }
.page-content > p,.page-content > ul { color:var(--muted); font-size:14px; }
.page-content > ul { padding-left:1.4em; }
.pagination { margin-top: 34px; }
.pagination .page-numbers { display: inline-flex; min-width: 40px; height: 40px; justify-content: center; align-items: center; margin-right: 5px; border: 1px solid var(--line); border-radius: 50%; text-decoration: none; }
.pagination .current { color: #fff; background: var(--ink); }

@media (max-width: 900px) {
  .hero-inner, .single-layout { grid-template-columns: 1fr; }
  .hero { padding-top: 65px; }
  .shop-illustration { min-height: 390px; max-width: 610px; }
  .shop-side { position: static; }
  .filters { grid-template-columns: 1fr 1fr; }
  .shop-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-region-grid { grid-template-columns:repeat(2,1fr); }
}
@media (max-width: 620px) {
  .site-shell { width: min(100% - 26px, 1180px); }
  .brand-copy, .site-nav a:not(.nav-message) { display: none; }
  .brand-mark { width: 46px; height: 56px; flex-basis: 46px; }
  .firepit .fire { width: 36px; height: 36px; }
  .site-nav { gap: 0; }
  .hero { padding: 54px 0; }
  .hero h1 { font-size: 39px; }
  .shop-illustration { min-height: 320px; }
  .memory-card { width: 235px; padding: 20px; }
  .memory-card strong { font-size: 18px; }
  .shop-drawing { inset: 90px 5px 0; }
  .filters, .shop-grid { grid-template-columns: 1fr; }
  .section { padding: 60px 0; }
  .tomoshibi-message-form { padding: 25px 18px; }
  .tomoshibi-public-form { padding: 27px 18px; }
  .tomoshibi-public-form .form-grid { grid-template-columns: 1fr; }
  .footer-inner { flex-direction: column; }
  .footer-prefectures { margin-top:28px; padding-top:26px; }
  .footer-prefectures h2 { margin-bottom:14px; font-size:15px; }
  .footer-region-grid { display:block; border-top:1px solid rgba(255,255,255,.15); }
  .footer-region-grid details { border-bottom:1px solid rgba(255,255,255,.15); }
  .footer-region-grid details summary { display:flex; align-items:center; justify-content:space-between; padding:12px 2px; color:#eaf0eb; font-size:13px; font-weight:700; cursor:pointer; list-style:none; }
  .footer-region-grid details summary::-webkit-details-marker { display:none; }
  .footer-region-grid details[open] summary span { transform:rotate(45deg); }
  .footer-region-grid details:not([open]) .footer-prefecture-links { display:none; }
  .footer-prefecture-links { padding:0 2px 14px; gap:8px 16px; }
  .footer-prefecture-links a { font-size:12px; }
}

@media (prefers-reduced-motion: reduce) {
  .firepit .flame, .firepit .spark { animation: none !important; }
}

/* Local design parity — the WordPress front end follows the local preview. */
:root {
  --ink:#24342a; --deep:#163f31; --green:#2f654f; --leaf:#728a63;
  --cream:#f8f4e9; --paper:#fffdf7; --line:#d8d7c8; --rose:#b86f62; --gold:#c39952;
}
body { color:var(--ink); background:var(--paper); font-family:"Yu Gothic","Hiragino Kaku Gothic ProN",system-ui,sans-serif; letter-spacing:.04em; }
button,input,textarea,select { font:inherit; } button,a { -webkit-tap-highlight-color:transparent; } a { color:inherit; text-decoration:none; }
[hidden] { display:none !important; } body.modal-is-open { overflow:hidden; }
.skip-link { position:fixed; z-index:200; left:15px; top:-80px; padding:12px 18px; background:#fff; color:var(--deep); border:2px solid var(--deep); }
.skip-link:focus { top:15px; }
.site-header { height:86px; padding:0 clamp(24px,5vw,88px); display:flex; align-items:center; justify-content:space-between; position:relative; top:auto; z-index:20; background:rgba(255,253,247,.93); border-bottom:1px solid rgba(36,52,42,.1); }
.brand { display:inline-flex; align-items:center; gap:12px; text-decoration:none; }
.brand-mark { width:54px; height:64px; flex:0 0 54px; position:relative; display:block; overflow:visible; background:transparent; box-shadow:none; }
.brand-mark.firepit { display:flex; align-items:center; justify-content:center; position:relative; inset:auto; margin:0; }
.brand-mark.firepit .fire { display:block; }
.brand-name { display:block; font:600 25px/1.1 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.14em; }
.brand-copy { display:block; color:#778077; font-size:9px; margin-top:5px; letter-spacing:.18em; }
.brand-title-row { display:flex; align-items:baseline; gap:9px; }
.brand-edition { color:var(--green); font-size:11px; font-weight:800; letter-spacing:.02em; white-space:nowrap; }
.site-nav { display:flex; gap:clamp(20px,3vw,44px); font-size:13px; font-weight:600; }
.site-nav a { position:relative; padding:10px 0; }
.site-nav a::after { content:""; position:absolute; left:0; bottom:3px; width:0; height:1px; background:var(--green); transition:width .2s ease; }
.site-nav a:hover::after { width:100%; }
.header-cta,.primary-btn,.light-btn { border:0; display:inline-flex; align-items:center; justify-content:center; gap:16px; padding:15px 24px; background:var(--deep); color:#fff; font-size:13px; font-weight:700; letter-spacing:.08em; border-radius:3px; box-shadow:4px 4px 0 rgba(195,153,82,.28); transition:transform .2s ease,box-shadow .2s ease; }
.header-cta:hover,.primary-btn:hover,.light-btn:hover { transform:translate(-2px,-2px); box-shadow:7px 7px 0 rgba(195,153,82,.25); }
.header-cta span { font-size:16px; }
.hero { min-height:670px; padding:86px clamp(24px,8vw,130px) 100px; display:grid; grid-template-columns:1.05fr .95fr; align-items:center; gap:6vw; position:relative; overflow:hidden; background-color:var(--cream); background-image:radial-gradient(rgba(47,101,79,.08) .7px,transparent .7px); background-size:8px 8px; }
.hero::after { content:""; position:absolute; left:0; right:0; bottom:-1px; height:38px; background:var(--paper); clip-path:polygon(0 80%,8% 42%,17% 75%,28% 38%,41% 72%,55% 35%,67% 70%,79% 41%,89% 68%,100% 30%,100% 100%,0 100%); }
.hero-copy { position:relative; z-index:3; }
.eyebrow,.section-heading span,.memories-intro>span,.about-section>div>span,.modal-eyebrow { color:var(--green); font-size:11px; font-weight:800; letter-spacing:.18em; }
.eyebrow { display:flex; gap:10px; align-items:center; margin-bottom:24px; }.eyebrow span { color:var(--gold); font-size:18px; }
.hero h1 { margin:0; font:600 clamp(43px,5vw,72px)/1.28 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.05em; }
.hero h1 em { color:var(--green); font-style:normal; position:relative; }.hero h1 em::after { content:""; position:absolute; height:8px; left:0; right:0; bottom:3px; background:rgba(195,153,82,.22); z-index:-1; transform:rotate(-1deg); }
.hero-copy>p { color:#5c665e; font-family:"Yu Mincho",serif; line-height:2.1; margin:28px 0 32px; font-size:15px; }
.hero-actions { display:flex; align-items:center; gap:28px; }.text-btn { border:0; background:none; border-bottom:1px solid #819086; padding:8px 3px; color:#54675b; font-size:12px; }
.hero-stats { margin-top:50px; display:flex; align-items:center; gap:24px; }.hero-stats div { display:flex; flex-direction:column; }.hero-stats strong { font:600 24px Georgia,serif; color:var(--deep); }.hero-stats span { font-size:9px; color:#7e877f; margin-top:4px; }.hero-stats i { width:1px; height:35px; background:#c8c9bd; }
.hero-glow { position:absolute; border-radius:50%; filter:blur(1px); opacity:.6; }.glow-one { width:420px; height:420px; right:5%; top:10%; background:#ebe0bc; }.glow-two { width:290px; height:290px; right:21%; bottom:2%; background:#dfe8d8; }
.hero-art { height:480px; position:relative; z-index:2; max-width:560px; width:100%; }.sun { position:absolute; width:280px; height:280px; border-radius:50%; background:#f4e9c6; right:40px; top:30px; }
.shop-scene { position:absolute; width:355px; height:270px; left:10px; bottom:30px; background:#f1e7ce; border:2px solid var(--deep); border-radius:3px 3px 0 0; box-shadow:12px 14px 0 rgba(47,101,79,.12); }
.shop-scene::before { content:""; position:absolute; width:240px; height:32px; left:55px; top:-34px; border:2px solid var(--deep); background:#dfe5d2; clip-path:polygon(12% 100%,20% 0,80% 0,88% 100%); }
.awning { height:53px; display:grid; grid-template-columns:repeat(5,1fr); border-bottom:2px solid var(--deep); overflow:hidden; }.awning span { background:#f3ead3; border-right:1px solid var(--deep); border-radius:0 0 20px 20px; }.awning span:nth-child(even) { background:#77906f; }
.shop-name { text-align:center; font-family:"Yu Mincho",serif; padding:13px; font-size:18px; letter-spacing:.25em; }
.window { position:absolute; left:24px; bottom:22px; width:190px; height:123px; border:4px solid var(--deep); background:#bed3cd; box-shadow:inset 0 -18px #9ab8ae; }.window::before { content:""; position:absolute; width:2px; top:0; bottom:0; left:50%; background:var(--deep); }.window::after { content:""; position:absolute; height:2px; left:0; right:0; top:47%; background:var(--deep); }
.plant { position:absolute; left:18px; bottom:10px; width:30px; height:28px; background:#9c704c; clip-path:polygon(10% 30%,90% 30%,78% 100%,22% 100%); }.plant::before { content:"✦"; color:var(--green); font-size:43px; position:absolute; bottom:10px; left:-6px; }
.door { position:absolute; right:25px; bottom:0; width:83px; height:147px; border:4px solid var(--deep); background:#789084; }.door::before { content:""; position:absolute; left:10px; right:10px; top:12px; height:67px; border:2px solid var(--deep); background:#d8e0d5; }.door span { width:7px; height:7px; border-radius:50%; background:#e5c177; position:absolute; left:12px; top:92px; }
.letter { position:absolute; width:220px; min-height:148px; right:2px; top:45px; padding:27px 28px; background:#fffefa; border:1px solid #d3cbb7; box-shadow:8px 11px 24px rgba(60,54,37,.16); transform:rotate(4deg); font-family:"Yu Mincho",serif; animation:letter-float 5s ease-in-out infinite; }.letter::before { content:""; position:absolute; width:45px; height:19px; background:rgba(205,183,123,.45); top:-8px; left:76px; transform:rotate(-3deg); }.letter .heart { position:absolute; right:19px; top:16px; color:#b66d63; font-size:20px; }.letter p { margin:9px 0 16px; line-height:1.75; font-weight:600; }.letter small { color:#8c8879; border-top:1px solid #ddd7c9; padding-top:7px; display:block; font-size:10px; }
.leaf { position:absolute; width:23px; height:51px; background:#67805d; border-radius:100% 0 100% 0; }.leaf-a { right:25px; bottom:80px; transform:rotate(22deg); }.leaf-b { right:57px; bottom:51px; transform:rotate(-55deg) scale(.8); }.leaf-c { left:5px; top:90px; transform:rotate(-35deg) scale(.65); }
.kindness-note { max-width:820px; margin:34px auto 18px; padding:15px 22px; display:flex; align-items:center; justify-content:center; gap:12px; color:#647067; background:#fbf8ef; border:1px solid #e7dfca; font:11px/1.7 "Yu Mincho",serif; }.kindness-note span { color:var(--gold); font-size:16px; }.kindness-note p { margin:0; }.kindness-note b { color:var(--deep); font-weight:600; }
.search-panel { width:min(1050px,calc(100% - 48px)); margin:0 auto; position:relative; z-index:5; display:grid; grid-template-columns:2fr .8fr .9fr .85fr auto; gap:0; padding:16px; background:#fff; box-shadow:0 12px 38px rgba(43,60,48,.12); border:1px solid #e3e0d4; }
.search-input { display:flex; align-items:center; padding:0 17px; border-right:1px solid #dddcd3; }.search-input span { font-size:25px; color:#829083; transform:rotate(-12deg); }.search-input input { width:100%; border:0; outline:0; padding:16px; font-size:13px; color:var(--ink); }
.search-panel select,.search-panel>input { min-width:0; border:0; border-right:1px solid #dddcd3; outline:0; padding:0 19px; color:#48534b; background:#fff; font-size:12px; }.search-btn { border:0; background:var(--green); color:#fff; padding:17px 28px; font-weight:700; font-size:13px; }
.shops-section { padding:115px clamp(24px,8vw,130px) 125px; background:var(--paper); }.section-heading { display:flex; justify-content:space-between; align-items:end; margin-bottom:46px; }.section-heading h2,.memories-intro h2,.about-section h2 { margin:10px 0 14px; font:600 clamp(31px,3vw,45px)/1.5 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.09em; }.section-heading p { margin:0; color:#758078; font-size:13px; }.result-count { font-size:11px; color:#7f887f; padding-bottom:8px; }
.shop-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:27px; }.shop-card { display:block; border:1px solid #dddcd2; background:#fff; transition:transform .25s ease,box-shadow .25s ease; }.shop-card:hover { transform:translateY(-5px); box-shadow:0 13px 30px rgba(33,57,42,.1); }
.card-visual { height:180px; position:relative; overflow:hidden; display:grid; place-items:center; }.card-visual::after { content:""; position:absolute; inset:0; background-image:radial-gradient(rgba(38,61,46,.13) .7px,transparent .8px); background-size:8px 8px; }.card-category { position:absolute; left:18px; top:16px; z-index:2; font:11px "Yu Mincho",serif; letter-spacing:.16em; }.closed-label { position:absolute; right:13px; top:13px; z-index:2; padding:5px 9px; background:rgba(255,255,255,.86); border:1px solid rgba(47,74,57,.3); font-size:9px; }
.mini-store { width:155px; height:95px; border:2px solid #405a49; background:#f8f1df; position:relative; z-index:1; margin-top:27px; box-shadow:6px 7px 0 rgba(48,78,58,.12); }.mini-store::before { content:""; position:absolute; height:29px; left:-2px; right:-2px; top:-18px; background:repeating-linear-gradient(90deg,#64806c 0 22px,#f4ead2 22px 44px); border:2px solid #405a49; border-radius:0 0 9px 9px; }.mini-store i { position:absolute; left:16px; bottom:0; width:53px; height:53px; border:2px solid #405a49; background:#b5ceca; }.mini-store b { display:block; text-align:right; margin:26px 12px 0 73px; font:10px "Yu Mincho",serif; }
.card-body { padding:24px 23px 20px; }.card-meta { display:flex; gap:12px; color:#708075; font-size:10px; }.card-meta span+span::before { content:"・"; margin-right:10px; }.card-body h3 { margin:11px 0 9px; font:600 23px/1.5 "Yu Mincho",serif; letter-spacing:.09em; }.card-body>p { margin:0 0 19px; color:#717a73; font-size:11px; }.card-body blockquote { margin:0; padding:14px 15px; min-height:69px; background:#faf8f1; border-left:2px solid #bd9a5c; font:11px/1.8 "Yu Mincho",serif; color:#59645c; }.card-footer { border-top:1px solid #e5e4dc; margin-top:20px; padding-top:17px; display:flex; justify-content:space-between; align-items:center; gap:9px; }.card-footer span { font-size:9px; color:#7d847f; }.card-footer span b { color:#ae6d65; font-size:15px; }.card-detail { color:var(--green)!important; font-weight:700; font-size:10px!important; }
.more-btn { display:flex; width:max-content; gap:18px; align-items:center; margin:45px auto 0; padding:13px 22px; border:1px solid #aab1aa; background:#fff; color:#506056; font-size:11px; }.more-btn span { font-size:16px; }
.memories-section { padding:115px clamp(24px,8vw,130px); display:grid; grid-template-columns:.75fr 1.25fr; gap:8vw; background:#eaf0e7; position:relative; overflow:hidden; }.memories-section::before { content:"”"; position:absolute; font:340px Georgia,serif; color:rgba(47,101,79,.05); left:2%; top:-95px; transform:rotate(180deg); }.memories-intro { align-self:center; position:relative; z-index:1; }.memories-intro p { color:#637067; font:13px/2.1 "Yu Mincho",serif; margin:0 0 28px; }.message-stack { display:flex; flex-direction:column; gap:18px; position:relative; }.message-card { background:#fffefa; padding:26px 30px 20px; border:1px solid #d8d8ca; box-shadow:6px 7px 0 rgba(63,91,71,.08); position:relative; }.quote-mark { position:absolute; font:50px/1 Georgia,serif; color:#cfb97d; top:18px; left:19px; }.message-card p { margin:8px 10px 18px 37px; font:12px/2 "Yu Mincho",serif; color:#4f5b52; }.message-card footer { border-top:1px solid #e3e1d7; padding-top:13px; display:flex; justify-content:space-between; color:#878b84; font-size:9px; }.message-card footer b { color:#4e6557; }
.about-section { padding:110px clamp(24px,8vw,130px); display:grid; grid-template-columns:130px 1fr 1fr; gap:5vw; align-items:center; background:#fffcf5; }.about-mark { width:100px; height:100px; border-radius:50%; display:grid; place-items:center; background:var(--deep); color:#fff5dc; font:38px "Yu Mincho",serif; box-shadow:9px 10px 0 #e8ddc2; }.about-section p { color:#68736b; line-height:2.1; font-family:"Yu Mincho",serif; font-size:13px; margin:0; }.values { display:flex; flex-direction:column; border-left:1px solid #d9d8cf; }.values div { padding:17px 0 17px 31px; display:grid; grid-template-columns:80px 1fr; border-bottom:1px solid #e5e3db; }.values b { color:var(--green); font-family:"Yu Mincho",serif; }.values span { color:#758078; font-size:11px; line-height:1.7; }
.closing-cta { padding:85px 24px; text-align:center; color:#fff; background:var(--deep); position:relative; overflow:hidden; background-image:radial-gradient(rgba(255,255,255,.09) .8px,transparent .8px); background-size:9px 9px; }.closing-cta::before,.closing-cta::after { content:""; position:absolute; width:300px; height:300px; border:1px solid rgba(255,255,255,.12); border-radius:50%; }.closing-cta::before { left:-100px; top:-130px; }.closing-cta::after { right:-90px; bottom:-170px; }.closing-spark { color:#d7bd78; font-size:24px; }.closing-cta p { font:12px "Yu Mincho",serif; color:#dce5df; margin:15px 0; }.closing-cta h2 { font:500 clamp(29px,3vw,43px) "Yu Mincho",serif; letter-spacing:.12em; margin:10px 0 27px; }.light-btn { background:#f7f0dd; color:var(--deep); }
.site-footer { margin-top:0; padding:52px clamp(24px,7vw,110px) 29px; background:#f4efe3; color:var(--ink); display:grid; grid-template-columns:auto 1fr auto; gap:45px; align-items:center; }.site-footer>p { color:#747c75; font-size:11px; }.site-footer>.footer-main-links { display:flex; gap:25px; font-size:10px; }.site-footer>small { grid-column:1/-1; border-top:1px solid #d9d4c7; padding-top:22px; text-align:center; color:#92948e; font-size:8px; }
.footer-prefectures { grid-column:1/-1; width:100%; margin-top:0; padding:34px 0 5px; border-top:1px solid #d9d4c7; text-align:left; }.footer-prefectures h2 { margin:0 0 24px; color:var(--ink); font:600 16px/1.5 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.08em; }.footer-region-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:25px 38px; }.footer-region-grid details summary { display:none; }.footer-region-grid details:not([open]) .footer-prefecture-links { display:flex; }.footer-prefecture-links { display:flex; flex-wrap:wrap; gap:7px 13px; }.footer-prefecture-links a,.footer-legal a { color:#667169; text-decoration:none; }.footer-prefecture-links a { font-size:9px; line-height:1.7; }.footer-legal { grid-column:1/-1; display:flex; justify-content:center; flex-wrap:wrap; gap:10px 24px; margin-top:0; padding-top:4px; font-size:9px; }.footer-prefecture-links a:hover,.footer-legal a:hover { color:var(--green); text-decoration:underline; text-underline-offset:3px; }
.footer-genres { grid-column:1/-1; width:100%; padding:30px 0 5px; border-top:1px solid #d9d4c7; text-align:left; }
.footer-genres h2 { margin:0 0 20px; color:var(--ink); font:600 16px/1.5 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.08em; }
.footer-genre-links { display:flex; flex-wrap:wrap; gap:10px 12px; }
.footer-genre-links a { min-width:118px; padding:11px 14px; display:flex; align-items:center; justify-content:space-between; gap:18px; color:#526057; background:rgba(255,255,255,.38); border:1px solid #d7d4c8; font-size:11px; text-decoration:none; }
.footer-genre-links a:hover { color:var(--green); background:#fffdf7; border-color:#91a497; }
.footer-genre-links a span { color:#718078; }
.modal-backdrop { position:fixed; inset:0; z-index:100; background:rgba(17,40,30,.68); backdrop-filter:blur(5px); display:grid; place-items:center; padding:20px; }.message-modal { position:relative; width:min(610px,100%); max-height:92vh; overflow:auto; background:#fffdf7; padding:45px 50px; border:1px solid #d5cebb; box-shadow:10px 12px 0 rgba(255,255,255,.13); }.message-modal::before { content:""; position:absolute; inset:8px; border:1px solid #ece6d6; pointer-events:none; }.modal-close { position:absolute; z-index:2; right:18px; top:14px; border:0; background:none; color:#6d776f; font-size:28px; }.message-modal h2 { margin:8px 0; font:600 31px/1.5 "Yu Mincho",serif; }.message-modal>p { margin:0 0 27px; color:#788078; font-size:11px; }.message-modal form { position:relative; z-index:1; display:grid; gap:18px; }.message-modal label { display:grid; gap:7px; color:#4e5b52; font-size:11px; font-weight:700; }.message-modal input,.message-modal select,.message-modal textarea { width:100%; border:1px solid #d1d1c6; background:#fff; padding:13px 14px; color:var(--ink); outline:none; border-radius:0; }.message-modal textarea { resize:vertical; line-height:1.8; }.message-modal input:focus,.message-modal select:focus,.message-modal textarea:focus { border-color:#66816d; box-shadow:0 0 0 3px rgba(77,115,88,.09); }.modal-location-fields { display:grid; grid-template-columns:1fr 1fr; gap:12px; }.modal-location-fields label>span { display:flex; align-items:center; gap:7px; }.modal-location-fields label>span b,.field-step { width:20px; height:20px; display:inline-flex; align-items:center; justify-content:center; flex:0 0 20px; border-radius:50%; background:#e6eddf; color:#315c49; font-size:9px; }.missing-shop-note { margin-top:-7px; padding:12px 14px; display:grid; grid-template-columns:26px 1fr auto; gap:10px; align-items:center; background:#f3f5ed; border-left:3px solid #87a087; color:#6d786f; }.missing-shop-note>span { width:24px; height:24px; display:grid; place-items:center; border-radius:50%; background:#fffdf7; color:#47705b; font-size:15px; }.missing-shop-note p { margin:0; font-size:9px; line-height:1.65; }.missing-shop-note p b { color:#4d5d53; font-size:10px; }.missing-shop-note a { display:inline-flex; align-items:center; gap:8px; padding:8px 10px; border-bottom:1px solid #78907f; color:#315e49; font-size:9px; font-weight:800; white-space:nowrap; }.form-note { margin:0; font-size:9px; color:#92968f; line-height:1.6; }.message-modal .consent { display:flex; align-items:flex-start; gap:9px; font-size:9px; font-weight:400; line-height:1.7; }.message-modal .consent input { width:auto; flex:0 0 auto; margin-top:4px; }.message-modal .consent a { color:var(--green); text-decoration:underline; }.submit-btn { width:100%; }.mobile-dock { display:none; }
@keyframes letter-float { 0%,100%{transform:rotate(4deg) translateY(0)} 50%{transform:rotate(3deg) translateY(-7px)} }

@media (max-width:980px) {
  .site-nav { display:none; }.hero { grid-template-columns:1fr; padding-top:65px; }.hero-art { margin:0 auto; }.shop-grid { grid-template-columns:repeat(2,1fr); }.memories-section { grid-template-columns:1fr; }.about-section { grid-template-columns:100px 1fr; }.about-section .values { grid-column:1/-1; }.site-footer { grid-template-columns:1fr; gap:20px; text-align:center; }.footer-brand { justify-content:center; }.site-footer>.footer-main-links { justify-content:center; flex-wrap:wrap; }.footer-prefectures { text-align:left; }.footer-region-grid { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:680px) {
  body { padding-bottom:66px; }.site-header { height:72px; padding:0 18px; }.header-cta { padding:12px 13px; font-size:0; box-shadow:none; }.header-cta span { font-size:18px; }.brand-mark { width:46px; height:56px; flex-basis:46px; }.firepit .fire { width:36px; height:36px; }.brand-name { font-size:21px; }.brand-copy { font-size:8px; }.hero { padding:55px 22px 80px; min-height:auto; }.hero h1 { font-size:38px; line-height:1.42; }.hero-copy>p br { display:none; }.hero-actions { align-items:stretch; flex-direction:column; gap:11px; }.primary-btn { width:100%; }.hero-stats { gap:15px; justify-content:space-between; }.hero-stats strong { font-size:19px; }.hero-art { height:370px; transform:scale(.85); transform-origin:top left; width:118%; margin-bottom:-70px; }.search-panel { grid-template-columns:1fr 1fr; margin-top:0; }.search-input { grid-column:1/-1; border-right:0; border-bottom:1px solid #dddcd3; }.search-panel select,.search-panel>input { padding:14px 10px; }.search-btn { grid-column:1/-1; }.shops-section,.memories-section,.about-section { padding:80px 22px; }.section-heading { align-items:start; flex-direction:column; gap:14px; }.shop-grid { grid-template-columns:1fr; }.message-card { padding:23px 19px 17px; }.message-card p { margin-left:29px; }.message-card footer { flex-direction:column; gap:7px; }.about-section { grid-template-columns:1fr; }.about-mark { width:70px; height:70px; font-size:26px; }.values { border-left:0; }.values div { padding-left:0; grid-template-columns:70px 1fr; }.message-modal { padding:42px 25px 28px; }.modal-location-fields { grid-template-columns:1fr; }.missing-shop-note { grid-template-columns:26px 1fr; }.missing-shop-note a { grid-column:1/-1; justify-content:center; min-height:42px; border:1px solid #aab8ac; background:#fffdf7; font-size:10px; }.kindness-note { width:calc(100% - 44px); margin-top:28px; align-items:flex-start; }.mobile-dock { position:fixed; z-index:60; left:0; right:0; bottom:0; height:66px; display:grid; grid-template-columns:1fr 1fr 1.25fr; background:rgba(255,253,247,.96); border-top:1px solid #d9d7cc; box-shadow:0 -7px 22px rgba(35,53,41,.08); backdrop-filter:blur(12px); }.mobile-dock a,.mobile-dock button { border:0; background:none; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; color:#68736b; font-size:9px; font-weight:700; }.mobile-dock span { font-size:18px; line-height:1; }.mobile-dock button { background:var(--deep); color:#fff; }.footer-prefectures { padding-top:26px; }.footer-prefectures h2 { margin-bottom:14px; font-size:14px; }.footer-region-grid { display:block; border-top:1px solid #d9d4c7; }.footer-region-grid details { border-bottom:1px solid #d9d4c7; }.footer-region-grid details summary { display:flex; align-items:center; justify-content:space-between; padding:12px 2px; color:#4f5d54; font-size:11px; font-weight:700; cursor:pointer; list-style:none; }.footer-region-grid details summary::-webkit-details-marker { display:none; }.footer-region-grid details[open] summary span { transform:rotate(45deg); }.footer-region-grid details:not([open]) .footer-prefecture-links { display:none; }.footer-prefecture-links { padding:0 2px 14px; gap:8px 16px; }.footer-prefecture-links a { font-size:10px; }.footer-legal { gap:8px 15px; font-size:9px; }
}

/* Local preview parity: shop detail pages */
.detail-page { min-height:100vh; background:var(--paper); }
.detail-breadcrumb { max-width:1180px; margin:0 auto; padding:25px 28px 19px; display:flex; align-items:center; gap:10px; color:#879087; font-size:10px; overflow-x:auto; white-space:nowrap; }
.detail-breadcrumb a:hover { color:var(--green); }
.detail-breadcrumb b { color:#526057; font-weight:600; }
.detail-hero { max-width:1180px; margin:0 auto; min-height:520px; display:grid; grid-template-columns:1.05fr .95fr; background:linear-gradient(125deg,var(--shop-color),#f8f2e4 78%); border:1px solid #dbd8ca; position:relative; overflow:hidden; }
.detail-hero::after { content:""; position:absolute; inset:0; pointer-events:none; background-image:radial-gradient(rgba(34,62,45,.09) .7px,transparent .8px); background-size:8px 8px; }
.detail-visual { min-height:520px; position:relative; z-index:1; overflow:hidden; }
.detail-sun { width:310px; height:310px; position:absolute; left:50%; top:45%; transform:translate(-50%,-50%); border-radius:50%; background:rgba(255,249,229,.63); }
.detail-store { width:340px; height:235px; position:absolute; left:50%; bottom:66px; transform:translateX(-50%); border:3px solid var(--deep); background:#f8edcf; box-shadow:13px 15px 0 rgba(36,65,46,.12); }
.detail-awning { height:57px; display:grid; grid-template-columns:repeat(5,1fr); border-bottom:3px solid var(--deep); }
.detail-awning i { background:#66836e; border-right:1px solid var(--deep); border-radius:0 0 17px 17px; }
.detail-awning i:nth-child(even) { background:#f1e6ca; }
.detail-store>b { display:block; text-align:center; padding:15px; font-family:"Yu Mincho",serif; letter-spacing:.16em; }
.detail-window { position:absolute; left:24px; bottom:20px; width:180px; height:95px; border:3px solid var(--deep); background:#b8ceca; box-shadow:inset 0 -18px #93b2aa; }
.detail-window::before { content:""; position:absolute; width:2px; top:0; bottom:0; left:50%; background:var(--deep); }
.detail-door { position:absolute; right:24px; bottom:0; width:82px; height:117px; border:3px solid var(--deep); background:#789084; }
.detail-door::before { content:""; position:absolute; inset:12px 10px 45px; border:2px solid var(--deep); background:#d8e0d5; }
.detail-seal { position:absolute; right:36px; top:34px; width:68px; height:68px; display:grid; place-items:center; border:1px solid var(--rose); border-radius:50%; color:var(--rose); font-family:"Yu Mincho",serif; font-size:11px; line-height:1.4; text-align:center; transform:rotate(7deg); }
.detail-intro { position:relative; z-index:2; align-self:center; padding:66px 62px 58px; background:rgba(255,253,247,.82); backdrop-filter:blur(5px); margin-right:34px; border:1px solid rgba(51,77,59,.12); }
.detail-kicker { color:var(--green); font-size:10px; font-weight:800; letter-spacing:.2em; }
.detail-tags { display:flex; flex-wrap:wrap; gap:8px; margin:21px 0 13px; }
.detail-tags a,.detail-tags span { padding:6px 9px; border:1px solid #b8c2b8; background:rgba(255,255,255,.55); color:#647369; font-size:9px; }
.detail-tags a { text-decoration:underline; text-underline-offset:3px; transition:background .2s,border-color .2s; }
.detail-tags a:hover { background:#fff; border-color:#60796a; }
.detail-tags span:last-child { color:#9a625c; border-color:#d1aaa4; }
.detail-photo { position:absolute; inset:0; z-index:1; margin:0; background:#e9ede5; }
.detail-photo::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(23,60,50,.03),rgba(23,60,50,.14)); pointer-events:none; }
.detail-photo img { width:100%; height:100%; display:block; object-fit:cover; object-position:center; }
.detail-visual:has(.detail-photo) .detail-seal { z-index:2; background:rgba(255,253,247,.9); }
.detail-intro h1 { margin:0 0 14px; font:600 clamp(38px,4.5vw,60px)/1.4 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.1em; }
.detail-note { color:#58675d; font:14px/1.9 "Yu Mincho",serif; }
.detail-summary { margin:29px 0 0; border-top:1px solid #d4d5ca; }
.detail-summary div { display:grid; grid-template-columns:120px 1fr; border-bottom:1px solid #ddddd3; padding:12px 0; }
.detail-summary dt { color:#899087; font-size:10px; }
.detail-summary dd { margin:0; color:#3f4d43; font-size:11px; font-weight:700; }
.source-disclaimer { margin:18px 0 0!important; padding:12px 14px; color:#737d75!important; background:#f6f3e9; border-left:2px solid #b69a62; font-size:9px!important; line-height:1.8!important; }
.detail-content { max-width:980px; margin:0 auto 110px; padding:0 28px; display:block; }
.detail-main h2 { margin:10px 0 25px; font:600 36px/1.5 "Yu Mincho",serif; letter-spacing:.1em; }
.detail-story { color:#5d695f; font:14px/2.3 "Yu Mincho",serif; }
.detail-story>:first-child { margin-top:0; }.detail-story>:last-child { margin-bottom:0; }
.source-links { margin-top:40px; padding:25px 28px; background:#f5f4ec; border-left:3px solid #91a187; }
.source-links h3 { margin:0 0 7px; font:600 16px/1.6 "Yu Mincho",serif; }.source-links>p { margin:0 0 14px; color:#7b847d; font-size:10px; }
.source-links ul { list-style:none; margin:0; padding:0; display:grid; gap:9px; }.source-links a { display:flex; align-items:center; justify-content:space-between; gap:12px; color:var(--green); font-size:11px; font-weight:700; text-decoration:underline; text-underline-offset:4px; overflow-wrap:anywhere; }.source-links a span { flex:0 0 auto; }
.featured-memory { width:min(100%,820px); margin:0 auto; padding:42px 44px 32px; background:#fffdf7; border:1px solid #d9d6c8; box-shadow:8px 10px 0 #edf0e8; position:relative; transform:none; }
.featured-memory .quote-mark { top:24px; left:24px; }.featured-memory p { margin:13px 0 26px 28px; color:#4f5d53; font:15px/2.1 "Yu Mincho",serif; }.featured-memory small { display:block; padding-top:14px; border-top:1px solid #e2dfd4; color:#8a9089; font-size:9px; }
.shop-messages { padding:105px max(28px,calc((100vw - 980px)/2)) 115px; background:#edf2e9; position:relative; overflow:hidden; }
.shop-messages::before { content:"“"; position:absolute; right:4%; top:-110px; color:rgba(47,101,79,.055); font:390px/1 Georgia,serif; }
.messages-heading { position:relative; display:flex; align-items:end; justify-content:space-between; gap:40px; margin-bottom:50px; }.messages-heading h2 { margin:10px 0 12px; font:600 clamp(31px,4vw,44px)/1.5 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.08em; }.messages-heading p { margin:0; color:#6e796f; font-size:11px; }
.messages-count { min-width:108px; text-align:center; padding:16px 12px 13px; background:rgba(255,253,247,.8); border:1px solid #d4d9cf; }.messages-count strong { display:block; color:var(--deep); font:500 28px Georgia,serif; }.messages-count span { color:#7f887f; font-size:8px; }
.shop-messages .message-list { width:min(100%,900px); margin-inline:auto; position:relative; display:flex; flex-direction:column; gap:16px; }.detail-message { display:grid; grid-template-columns:1fr; transition:transform .2s ease; }.detail-message:hover { transform:translateX(4px); }.message-number { display:none; }
.message-letter { position:relative; padding:28px 34px 20px 58px; background:#fffefa; border:1px solid #d8d8cb; box-shadow:5px 6px 0 rgba(58,86,65,.06); }.message-letter .quote-mark { top:22px; left:25px; }.message-letter>p { margin:0 0 22px; color:#4e5b52; font:13px/2.05 "Yu Mincho",serif; }.message-letter footer { display:flex; align-items:center; justify-content:space-between; padding-top:13px; border-top:1px solid #e4e2d8; color:#8a9089; font-size:9px; }.message-letter footer b { color:#647269; font-weight:600; }.message-letter time { font-family:Georgia,serif; letter-spacing:.06em; }.published-note { margin:28px 0 0; text-align:center; color:#8c958d; font-size:8px; }
.detail-message-cta { padding:75px max(28px,calc((100vw - 980px)/2)); display:flex; align-items:center; justify-content:space-between; gap:40px; color:#fff; background:var(--deep); background-image:radial-gradient(rgba(255,255,255,.08) .7px,transparent .8px); background-size:9px 9px; }.detail-message-cta>div>span { color:#d5bc78; font-size:9px; letter-spacing:.2em; }.detail-message-cta h2 { margin:9px 0 12px; font:500 32px/1.5 "Yu Mincho",serif; }.detail-message-cta p { margin:0; color:#d2ddd6; font-size:11px; }.detail-message-cta .light-btn { flex:0 0 auto; }
.related-shops { padding:100px clamp(24px,8vw,130px) 115px; }.related-shops .section-heading>a { color:var(--green); font-size:11px; border-bottom:1px solid #8ca092; padding-bottom:5px; }.related-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }.related-grid>a { min-height:190px; padding:28px; background:linear-gradient(150deg,var(--shop-color),#fffdf7); border:1px solid #d9d8cc; transition:transform .2s ease,box-shadow .2s ease; }.related-grid>a:hover { transform:translateY(-4px); box-shadow:0 12px 25px rgba(33,57,42,.09); }.related-grid span { color:#707d74; font-size:9px; }.related-grid h3 { margin:12px 0 9px; font:600 22px/1.5 "Yu Mincho",serif; }.related-grid p { min-height:36px; color:#758078; font-size:10px; line-height:1.7; }.related-grid b { color:var(--green); font-size:10px; }
@media (max-width:980px) { .detail-hero { margin-left:22px; margin-right:22px; grid-template-columns:1fr; }.detail-visual { min-height:410px; }.detail-intro { margin:0 28px 28px; padding:45px; }.detail-content { gap:45px; }.related-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:680px) { .detail-breadcrumb { padding-left:18px; }.detail-hero { margin:0 14px; }.detail-visual { min-height:315px; transform:scale(.86); transform-origin:top center; margin-bottom:-43px; }.detail-store { width:310px; }.detail-intro { margin:0 14px 14px; padding:35px 25px; }.detail-intro h1 { font-size:36px; }.detail-summary div { grid-template-columns:100px 1fr; }.detail-content { grid-template-columns:1fr; gap:45px; margin-bottom:75px; padding:0 22px; }.detail-main h2 { font-size:30px; }.featured-memory { margin-top:0; }.shop-messages { padding:75px 22px 85px; }.messages-heading { align-items:flex-start; flex-direction:column; gap:24px; margin-bottom:35px; }.detail-message { grid-template-columns:1fr; }.message-number { display:none; }.message-letter { padding:27px 22px 19px 48px; }.message-letter .quote-mark { left:18px; }.message-letter footer { align-items:flex-start; flex-direction:column; gap:7px; }.detail-message-cta { padding:60px 24px; flex-direction:column; align-items:flex-start; }.detail-message-cta .light-btn { width:100%; }.related-shops { padding:75px 22px 90px; }.related-grid { grid-template-columns:1fr; } }

/* Local preview parity: location and information pages */
.location-page { padding-bottom:0; }.location-hero { max-width:1180px; margin:0 auto; padding:75px 70px 70px; background-image:radial-gradient(rgba(34,62,45,.08) .7px,transparent .8px),linear-gradient(125deg,#eef2e9,#f9f3df); background-size:9px 9px,auto; border:1px solid #dcdbcf; }.location-hero h1 { margin:10px 0 15px; font:600 clamp(36px,5vw,59px)/1.5 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.08em; }.location-hero p { max-width:730px; margin:0; color:#68736b; font:13px/2 "Yu Mincho",serif; }.city-links { max-width:1040px; margin:45px auto 0; padding:0 28px; display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }.city-links>a { min-height:52px; padding:13px 15px; display:flex; align-items:center; justify-content:space-between; background:#fffefa; border:1px solid #d8d9cf; color:#526359; font-size:11px; transition:background .2s,transform .2s; }.city-links>a:hover { background:#edf2e9; transform:translateY(-2px); }.city-links>a span { color:#718176; }.location-shops { padding-top:72px; }.archive-search-wrap { max-width:1180px; margin:42px auto 0; }.archive-search { width:calc(100% - 56px); margin:0 auto; grid-template-columns:2fr 1fr 1fr auto; }.info-document { width:min(860px,calc(100% - 40px)); margin:58px auto 95px; padding:54px 62px; background:#fffefa; border:1px solid #d8d7cb; box-shadow:9px 11px 0 rgba(48,76,57,.07); }.info-document>header { padding-bottom:31px; border-bottom:1px solid #dedbcf; }.info-document>header>span { color:var(--green); font-size:10px; font-weight:800; letter-spacing:.18em; }.info-document h1 { margin:8px 0 13px; font:600 clamp(35px,5vw,52px)/1.45 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.08em; }.info-body { display:grid; gap:34px; padding-top:37px; }.info-body h2 { margin:0 0 12px; color:#344c3d; font:600 20px/1.6 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.06em; }.info-body p,.info-body li { color:#5e6a62; font-size:12px; line-height:2; }.info-body a { color:var(--green); text-decoration:underline; text-underline-offset:3px; }
@media (max-width:980px) { .city-links { grid-template-columns:repeat(3,1fr); } }
@media (max-width:680px) { .location-hero { margin:0 12px; padding:48px 25px; }.city-links { grid-template-columns:1fr 1fr; padding:0 18px; }.location-shops { padding:65px 18px 80px; }.archive-search { width:calc(100% - 28px); grid-template-columns:1fr 1fr; }.archive-search .search-input { grid-column:1/-1; }.archive-search .search-btn { grid-column:1/-1; }.info-document { width:calc(100% - 28px); margin:35px auto 65px; padding:35px 22px; }.info-body { gap:29px; padding-top:30px; }.info-body h2 { font-size:18px; } }
/* Mobile readability: keep body copy, labels and controls legible without zooming. */
@media (max-width:680px) {
  body { padding-bottom:72px; font-size:16px; line-height:1.8; }
  .brand-copy { font-size:13px; letter-spacing:.1em; }
  .brand-edition { font-size:14px; }
  .eyebrow,.section-heading span,.memories-intro>span,.about-section>div>span,.modal-eyebrow,.detail-kicker { font-size:14px; line-height:1.6; }
  .hero-copy>p,.section-heading p,.memories-intro p,.about-section p,.location-hero p { font-size:15px; line-height:2; }
  .kindness-note { font-size:14px; line-height:1.8; }
  .search-input input,.search-panel select,.search-panel>input,.message-modal input,.message-modal select,.message-modal textarea,.request-form input,.request-form select,.request-form textarea,.tomoshibi-public-form input,.tomoshibi-public-form select,.tomoshibi-public-form textarea { font-size:16px; }
  .search-btn,.primary-btn,.light-btn,.more-btn,.text-btn { min-height:48px; font-size:14px; }
  .hero-stats span,.result-count { font-size:14px; }
  .card-category,.closed-label,.card-meta { font-size:14px; }
  .card-body>p,.card-body blockquote { font-size:14px; line-height:1.9; }
  .card-footer span,.card-detail { font-size:14px!important; }
  .message-card p,.message-letter>p,.featured-memory p { font-size:15px; line-height:2; }
  .message-card footer,.message-letter footer,.featured-memory small { font-size:14px; }
  .values span { font-size:14px; }
  .message-modal>p,.message-modal label { font-size:14px; }
  .modal-location-fields label>span b,.field-step { width:25px; height:25px; flex-basis:25px; font-size:12px; }
  .missing-shop-note p,.missing-shop-note p b,.missing-shop-note a,.form-note,.message-modal .consent { font-size:14px; }
  .mobile-dock { height:72px; }
  .mobile-dock a,.mobile-dock button { font-size:12px; }
  .detail-breadcrumb { font-size:14px; }
  .detail-tags a,.detail-tags span { font-size:14px; }
  .detail-note,.detail-story,.detail-main>p { font-size:15px; line-height:2; }
  .detail-summary dt,.detail-summary dd { font-size:14px; }
  .source-disclaimer { font-size:14px!important; }
  .source-links>p,.source-links a { font-size:14px; }
  .messages-heading p,.detail-message-cta p { font-size:14px; line-height:1.9; }
  .messages-count span,.published-note,.detail-message-cta>div>span { font-size:13px; }
  .related-shops .section-heading>a,.related-grid span,.related-grid b { font-size:14px; }
  .related-grid p { font-size:14px; line-height:1.8; }
  .city-links>a { min-height:50px; font-size:14px; }
  .info-document>header>span { font-size:14px; }
  .info-body p,.info-body li { font-size:15px; line-height:2; }
  .request-form label,.tomoshibi-public-form label { font-size:14px; }
  .request-form>p,.tomoshibi-public-form small { font-size:14px; }
  .site-footer>p { font-size:14px; }
  .site-footer>.footer-main-links,.footer-region-grid details summary,.footer-prefecture-links a,.footer-legal { font-size:14px; }
  .site-footer>small { font-size:12px; }
}
/* Accessibility baseline: WCAG 2.2-oriented readable type, contrast, focus and targets. */
html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body { font-size:16px; line-height:1.8; }
p,li,dd,a { overflow-wrap:anywhere; }
.brand-copy,.brand small { color:#59675d; font-size:14px; }
.brand-edition { font-size:14px; }
.site-nav,.site-header nav { font-size:16px; }
.site-nav a,.site-header nav a,.footer-main-links a,.site-footer>div>a,.footer-prefecture-links a,.footer-legal a { min-height:44px; display:inline-flex; align-items:center; }
.header-cta,.primary-btn,.light-btn,.more-btn,.text-btn,.search-btn { min-height:48px; font-size:15px; }
.eyebrow,.section-heading span,.memories-intro>span,.about-section>div>span,.modal-eyebrow,.detail-kicker { font-size:14px; line-height:1.6; }
.hero-copy>p,.section-heading p,.memories-intro p,.about-section p,.location-hero p { color:#4f5e54; font-size:16px; line-height:2; }
.hero-stats span,.result-count { color:#59675d; font-size:14px; }
.kindness-note { color:#4f5e54; font-size:15px; }
.search-input input,.search-panel select,.search-panel>input,.message-modal input,.message-modal select,.message-modal textarea,.request-form input,.request-form select,.request-form textarea,.tomoshibi-public-form input,.tomoshibi-public-form select,.tomoshibi-public-form textarea { min-height:48px; font-size:16px; }
::placeholder { color:#59675d; opacity:1; }
.card-category,.closed-label,.card-meta { color:#526057; font-size:14px; }
.mini-store b,.letter small { font-size:14px; }
.letter small { color:#59675d; }
.card-body>p,.card-body blockquote { color:#4f5e54; font-size:15px; line-height:1.9; }
.card-footer span,.card-detail { color:#526057; font-size:14px!important; }
.memories-intro p,.message-card p,.message-letter>p,.featured-memory p { font-size:16px; line-height:2; }
.message-card footer,.message-letter footer,.featured-memory small { color:#526057; font-size:14px; }
.about-section p,.values span { color:#4f5e54; font-size:15px; }
.closing-cta p,.detail-message-cta p { font-size:15px; line-height:1.9; }
.site-footer>p { color:#4f5e54; font-size:15px; }
.site-footer>.footer-main-links,.site-footer>div { font-size:15px; }
.footer-prefectures h2 { font-size:20px; }
.footer-region-grid details summary,.footer-prefecture-links a,.footer-legal { color:#526057; font-size:14px; }
.footer-prefecture-links a,.footer-legal a { padding:7px 4px; }
.footer-prefecture-links a,.footer-legal a { color:#46564c; }
.site-footer>small { color:#526057; font-size:14px; }
.message-modal>p,.message-modal label,.request-form label,.tomoshibi-public-form label { color:#46564c; font-size:15px; }
.message-modal .consent { display:flex; align-items:flex-start; gap:12px; }
.message-modal .consent input[type="checkbox"] { width:22px; height:22px; min-height:22px; flex:0 0 22px; margin:3px 0 0; padding:0; accent-color:var(--deep); }
.message-modal .consent span { line-height:1.7; }
.modal-location-fields label>span b,.field-step { width:26px; height:26px; flex-basis:26px; font-size:13px; }
.missing-shop-note p,.missing-shop-note p b,.missing-shop-note a,.form-note,.message-modal .consent,.request-form>p,.tomoshibi-public-form small { color:#526057; font-size:14px; }
.detail-breadcrumb { color:#59675d; font-size:14px; }
.detail-tags a,.detail-tags span { color:#526057; font-size:14px; }
.detail-note,.detail-story,.detail-main>p { color:#46564c; font-size:16px; line-height:2; }
.detail-summary dt,.detail-summary dd { color:#526057; font-size:14px; }
.detail-summary dd.detail-address { white-space:normal; overflow-wrap:anywhere; word-break:normal; }
.detail-intro-about { margin-top:24px; padding-top:22px; border-top:1px solid #d4d5ca; }
.detail-intro-about h2,.detail-intro-source h2 { margin:0 0 10px; color:#263c30; font:600 20px/1.6 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.06em; }
.detail-intro-about p,.detail-intro-source p { margin:0; color:#46564c; font-size:15px; line-height:2; }
.detail-intro-source { margin-top:18px; padding:18px 20px; background:#f5f4ec; border-left:3px solid #91a187; }
.detail-intro-source p { margin-bottom:10px; font-size:14px; }
.detail-intro-source a { min-height:44px; display:flex; align-items:center; justify-content:space-between; gap:12px; color:#365f4b; font-size:14px; font-weight:700; text-decoration:underline; text-underline-offset:4px; overflow-wrap:anywhere; }
.source-disclaimer { color:#526057!important; font-size:14px!important; }
.source-links>p,.source-links a { color:#365f4b; font-size:14px; }
.messages-heading p { color:#526057; font-size:15px; line-height:1.9; }
.messages-count span,.published-note,.message-number { color:#526057; font-size:14px; }
.detail-message-cta>div>span { color:#f0d88f; font-size:14px; }
.related-shops .section-heading>a,.related-grid span,.related-grid b { font-size:14px; }
.related-grid span { color:#526057; }
.related-grid p { color:#526057; font-size:15px; line-height:1.8; }
.city-links>a { min-height:52px; font-size:15px; }
.info-document>header>span { font-size:14px; }
.info-body p,.info-body li { color:#46564c; font-size:16px; line-height:2; }
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible { outline:3px solid #9b6b20; outline-offset:4px; border-radius:2px; }
.footer-genres h2 { font-size:20px; }
.footer-genre-links a { min-height:44px; font-size:14px; }
button:focus-visible,.header-cta:focus-visible,.primary-btn:focus-visible,.light-btn:focus-visible,.search-btn:focus-visible { outline-color:#f3c968; }
@media (max-width:680px) {
  .site-header { min-height:78px; }
  .mobile-dock { height:76px; }
  .mobile-dock a,.mobile-dock button { min-height:48px; font-size:13px; }
  .featured-memory { padding:34px 25px 26px; }
  .footer-genres { padding-top:24px; }
  .footer-genres h2 { margin-bottom:14px; font-size:18px; }
  .footer-genre-links { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  .footer-genre-links a { min-width:0; min-height:48px; padding:10px 12px; font-size:14px; }
}
