<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>静けさ &#8211; Tranquilvæj</title>
	<atom:link href="https://tranquilguides.com/tag/stillness/feed/" rel="self" type="application/rss+xml" />
	<link>https://tranquilguides.com</link>
	<description>記憶と身体、時間と不在をめぐる、文字と体験</description>
	<lastBuildDate>Thu, 20 Aug 2026 10:29:47 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/01/cropped-IMG_3364.jpeg?fit=32%2C32&#038;ssl=1</url>
	<title>静けさ &#8211; Tranquilvæj</title>
	<link>https://tranquilguides.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">251661265</site>	<item>
		<title>過去の自分を糧にする。</title>
		<link>https://tranquilguides.com/reconstruction-redesign/</link>
					<comments>https://tranquilguides.com/reconstruction-redesign/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Thu, 23 Jul 2026 12:00:00 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[HSP]]></category>
		<category><![CDATA[エッセイ]]></category>
		<category><![CDATA[コーヒー]]></category>
		<category><![CDATA[メンタルケア]]></category>
		<category><![CDATA[休息]]></category>
		<category><![CDATA[休養]]></category>
		<category><![CDATA[余白]]></category>
		<category><![CDATA[再構築]]></category>
		<category><![CDATA[再設計]]></category>
		<category><![CDATA[喪失]]></category>
		<category><![CDATA[回復]]></category>
		<category><![CDATA[変化]]></category>
		<category><![CDATA[実践]]></category>
		<category><![CDATA[幸せ]]></category>
		<category><![CDATA[幸福]]></category>
		<category><![CDATA[暮らし]]></category>
		<category><![CDATA[生きづらさ]]></category>
		<category><![CDATA[生き方]]></category>
		<category><![CDATA[自己受容]]></category>
		<category><![CDATA[自己理解]]></category>
		<category><![CDATA[認知]]></category>
		<category><![CDATA[読みもの]]></category>
		<category><![CDATA[身体]]></category>
		<category><![CDATA[静けさ]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1692</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260722_054414.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>「以前の自分に戻る」ことを目標にするのではなく、過去の自分を糧として生かす。変化した身体や感覚と向き合いながら、再構築と再設計を通して、今の自分に合った生き方を考えます。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260722_054414.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>
<h2 class="wp-block-heading"><strong>変化した自分との再構築と再設計</strong></h2>



<p class="wp-block-paragraph">「以前の自分に戻りたい」</p>



<p class="wp-block-paragraph">そう思うのは、大きな怪我や病気だけではありません。</p>



<p class="wp-block-paragraph">年齢を重ねること、環境が変わること、人との関係が変わること。</p>



<p class="wp-block-paragraph">人生の転機に立った時、多くの人が一度はそう思います。</p>



<p class="wp-block-paragraph">私もまた、そうした経験の過程で何度もそう感じてきました。</p>



<p class="wp-block-paragraph">理由は違っても、変化は誰にでも訪れます。</p>



<p class="wp-block-paragraph">以前できていたことが、いつの間にかできなくなっていた。</p>



<p class="wp-block-paragraph">楽しめていたこと。</p>



<p class="wp-block-paragraph">迷わず進めていたこと。</p>



<p class="wp-block-paragraph">もう、同じようにはできないこと。</p>



<p class="wp-block-paragraph">失ったものが具体的だからこそ、人は過去を目標にします。</p>



<p class="wp-block-paragraph">過去には、「できていた」という記憶、「うまくいった」という経験、「ここなら安心だった」という記憶があります。</p>



<p class="wp-block-paragraph">しかしある時、<strong>完全に以前と同じには戻れない</strong>と気づくことがあります。</p>



<p class="wp-block-paragraph">これは悲観ではありません。</p>



<p class="wp-block-paragraph">人間が時間を生きているという、当たり前の事実です。</p>



<p class="wp-block-paragraph">私たちは生きるほど変化していきます。</p>



<p class="wp-block-paragraph">身体も、心も、価値観も変わる。</p>



<p class="wp-block-paragraph">だから昨日の自分と今日の自分でさえ、まったく同じではありません。</p>



<p class="wp-block-paragraph">今の自分は、以前の自分の地続きにあります。</p>



<p class="wp-block-paragraph">しかし同じ存在ではありません。</p>



<p class="wp-block-paragraph">では、変化した自分とこれからどう付き合っていけばいいのでしょうか。</p>



<p class="wp-block-paragraph">その問いについて、私は「再構築」と「再設計」という考え方が助けになるのではないかと考えています。</p>



<h2 class="wp-block-heading"><strong>「戻る」という考えが自然に生まれる理由</strong></h2>



<p class="wp-block-paragraph">人間は、未知より既知を好みます。</p>



<p class="wp-block-paragraph">心理学では、人は不確実性を避け、予測可能な状態を求める傾向があると言われています。</p>



<p class="wp-block-paragraph">以前の自分には「できていた」という証拠。</p>



<ul class="wp-block-list">
<li>この身体ならできた</li>



<li>この方法なら大丈夫だった</li>



<li>この生活なら安心だった</li>
</ul>



<p class="wp-block-paragraph">一方、新しい自分にはまだ実績がありません。</p>



<ul class="wp-block-list">
<li>この身体で何ができるのか</li>



<li>どの程度なら無理なく続けられるのか</li>



<li>どんな環境なら穏やかに過ごせるのか</li>
</ul>



<p class="wp-block-paragraph">その答えは、まだ自分自身にも分からないから、人は安心を求めて過去へ戻ろうとします。</p>



<p class="wp-block-paragraph">「戻りたい」と思うことや感覚は、弱さではありません。</p>



<p class="wp-block-paragraph">変化した環境の中で、安全だった場所を探そうとする自然な反応です。</p>



<p class="wp-block-paragraph">しかしそこには一つの問題があります。</p>



<p class="wp-block-paragraph">過去の自分を基準にすると、現在の自分は常に「足りない存在」として映ってしまいます。</p>



<p class="wp-block-paragraph">昨日まで当たり前だったことが、今日は難しく感じる。</p>



<p class="wp-block-paragraph">その比較を続ける限り、現在の自分を理解することは難しくなります。</p>



<h2 class="wp-block-heading"><strong>必要なのは「回復」だけではなく「再構築」と「再設計」</strong></h2>



<p class="wp-block-paragraph">ここで二つの考え方が重要になります。</p>



<h3 class="wp-block-heading"><strong>再構築（Reconstruction）</strong></h3>



<p class="wp-block-paragraph">再構築とは、<strong>失われたものと残っているものを整理し、新しい条件の中で組み直すこと</strong>です。</p>



<ul class="wp-block-list">
<li>何が変化したのか</li>



<li>何が残っているのか</li>



<li>何を大切にしたいのか</li>



<li>何を失ったと思っているのか</li>
</ul>



<p class="wp-block-paragraph">それらを一つひとつ確認しながら、今の自分を理解するための土台をつくっていきます。</p>



<p class="wp-block-paragraph">過去の自分を否定するのではなく、変化した今の自分をもう一度理解し直すことです。</p>



<h3 class="wp-block-heading"><strong>再設計（Redesign）</strong></h3>



<p class="wp-block-paragraph">再設計とは、以前と同じ設計図を使い続けるのではなく、<strong>現在の条件に合わせて、新しい設計図を書き直すこと</strong>です。</p>



<p class="wp-block-paragraph">以前うまくいっていた方法が、今も同じように合うとは限りません。</p>



<p class="wp-block-paragraph">失われたものを数えのではなく、これからの自分が無理なく生きられる仕組み整えていく営みでもあります。</p>



<p class="wp-block-paragraph">人間の場合、それは次のような問いになります。</p>



<ul class="wp-block-list">
<li>どう休むか</li>



<li>どう働くか</li>



<li>どう人と関わるか</li>



<li>どう刺激と付き合うか</li>



<li>どう創作するか</li>



<li>どんな環境を作るか</li>
</ul>



<h3 class="wp-block-heading"><strong>過去と未来との対話</strong></h3>



<p class="wp-block-paragraph">再構築は、過去との対話。</p>



<p class="wp-block-paragraph">再設計は、未来との対話。</p>



<p class="wp-block-paragraph">どちらか一方では足りません。</p>



<p class="wp-block-paragraph">過去の自分を捨てる必要はない。</p>



<p class="wp-block-paragraph">しかし、過去の設計図をそのまま使い続けることもできない。</p>



<p class="wp-block-paragraph">なぜなら、<strong>生きている条件が変化しているから</strong>です。</p>



<h2 class="wp-block-heading"><strong>慣れることと、適していることは違う</strong></h2>



<p class="wp-block-paragraph">人間には高い適応能力があります。</p>



<p class="wp-block-paragraph">環境が変われば、少しずつ慣れていく。</p>



<p class="wp-block-paragraph">これは人間の大きな強さです。</p>



<p class="wp-block-paragraph">しかし、ここには落とし穴があります。</p>



<p class="wp-block-paragraph">慣れることと、適していることは同じではありません。</p>



<ul class="wp-block-list">
<li>睡眠不足に慣れる</li>



<li>忙しい生活や無理をすることに慣れる</li>



<li>常に緊張している状態に慣れる</li>
</ul>



<p class="wp-block-paragraph">人間は本来、環境適応能力が高く、どんなに不快な環境にも適応できます。</p>



<p class="wp-block-paragraph">しかし適応できたからといって、それが自分に合っているとは限りません。</p>



<p class="wp-block-paragraph">だから必要なのは、ただ慣れることではなく<strong>自分に合う形へ調整すること</strong>です。</p>



<h2 class="wp-block-heading"><strong>新しい身体との付き合い方</strong></h2>



<p class="wp-block-paragraph">「以前よりできなくなった」</p>



<p class="wp-block-paragraph">「以前より性能が落ちた」</p>



<p class="wp-block-paragraph">「以前より疲れる」</p>



<p class="wp-block-paragraph">「以前のようには動けない」</p>



<p class="wp-block-paragraph">だから、自分自身が悪くなってしまったように感じることがあります。</p>



<p class="wp-block-paragraph">しかし、別の見方もできます。</p>



<p class="wp-block-paragraph"><strong>性能が落ちたのではなく、仕様が変わった</strong>という考え方です。</p>



<p class="wp-block-paragraph">例えば、身近なメガネで考えてみます。</p>



<p class="wp-block-paragraph">視力が変われば、以前と同じ度数のメガネでは見えにくくなります。</p>



<p class="wp-block-paragraph">だからといって、目が急に悪いものになったわけではありません。</p>



<p class="wp-block-paragraph">今の目に合ったレンズへ調整する必要があります。</p>



<p class="wp-block-paragraph">人間も同じです。</p>



<p class="wp-block-paragraph">身体や心が変化したなら、それに合わせて休み方や働き方、人との関わり方も変わっていきます。</p>



<p class="wp-block-paragraph">以前の方法が間違っていたわけではありません。</p>



<p class="wp-block-paragraph">ただ、<strong>今の自分には、今の自分に合った扱い方がある。</strong></p>



<p class="wp-block-paragraph">それを見つけていくことが、新しい身体との付き合い方なのだと思います。</p>



<h3 class="wp-block-heading"><strong>高感度な人に必要なのは、感度を下げることではない</strong></h3>



<p class="wp-block-paragraph">社会では、「気にしないようにする」「鈍感になる」という解決方法が提案されることがあります。</p>



<p class="wp-block-paragraph">しかし感覚が細やかな人の場合、それは必ずしも正解ではありません。</p>



<ul class="wp-block-list">
<li>細かな変化に気づけること</li>



<li>空気を感じ取れること</li>



<li>人の表情を見ること</li>



<li>場所の雰囲気を受け取ること</li>
</ul>



<p class="wp-block-paragraph">これは欠点ではなく、能力でもあります。</p>



<p class="wp-block-paragraph">問題は、感度そのものではありません。</p>



<p class="wp-block-paragraph">入力された情報との付き合い方です。</p>



<p class="wp-block-paragraph">必要なのは感度を消すことではなく、<strong>感度を扱う技術を身につけること</strong>です。</p>



<h2 class="wp-block-heading"><strong>ただの散歩が教えてくれたこと</strong></h2>



<p class="wp-block-paragraph">以前の私は、散歩が回復の時間でした。</p>



<p class="wp-block-paragraph">歩き、景色を見て、空気を感じ、考えを整理する。</p>



<p class="wp-block-paragraph">ところが、一眼カメラを持ってフォトウォークをするようになってから、少しずつ目的が変わっていきました。</p>



<p class="wp-block-paragraph">
散歩する。<br>
↓<br>
写真を探す。<br>
↓<br>
良い写真を撮らなければと思う。<br>
↓<br>
何かを持ち帰らなければと思う。
</p>



<p class="wp-block-paragraph">いつの間にか、<strong>回復するための散歩</strong>が<strong>成果を生み出すための活動</strong>になっていました。</p>



<p class="wp-block-paragraph">写真を撮ること自体は、私自身にとって大切な表現です。</p>



<p class="wp-block-paragraph">問題は写真や創作ではなく、少しずつ目的が変化したことでした。</p>



<p class="wp-block-paragraph">だからこれは、自然な流れだったのだと思います。</p>



<p class="wp-block-paragraph">しかし、<strong>新しい自分には新しい設計が必要でした。</strong></p>



<p class="wp-block-paragraph">例えば次のように。</p>



<h3 class="wp-block-heading"><strong>「感じる時間」と「作る時間」を分ける</strong></h3>



<ul class="wp-block-list">
<li>世界を見ること</li>



<li>世界から何かを受け取ること</li>



<li>それを作品にすること</li>
</ul>



<p class="wp-block-paragraph">この三つは似ていますが、役割が違います。</p>



<p class="wp-block-paragraph">以前は、感じることと作ることが自然につながっていました。</p>



<p class="wp-block-paragraph">しかし現在は、</p>



<ul class="wp-block-list">
<li>感じる時間</li>



<li>回復する時間</li>



<li>制作する時間</li>
</ul>



<p class="wp-block-paragraph">のそれぞれを意識して分けた方が、自分には合っていると気づきました。</p>



<p class="wp-block-paragraph">写真を撮らない散歩。</p>



<p class="wp-block-paragraph">何も持ち帰らないおでかけ。</p>



<p class="wp-block-paragraph">意味を作らない時間。</p>



<p class="wp-block-paragraph">それらは無駄ではありません。</p>



<p class="wp-block-paragraph">作品になる前の、大切な蓄積なのです。</p>



<h2 class="wp-block-heading"><strong>幸福には「受け取れる状態」がある</strong></h2>



<p class="wp-block-paragraph">幸福は、何か特別なものを手に入れた時にだけ生まれるものではありません。</p>



<p class="wp-block-paragraph">幸福には、それを受け取れる心身の状態があります。</p>



<p class="wp-block-paragraph">まず必要なのは、安全です。</p>



<p class="wp-block-paragraph">睡眠、身体の状態、安心できる場所、信頼できる関係、次に回復。</p>



<p class="wp-block-paragraph">疲れ切った状態では、好きなものすら感じにくくなります。</p>



<p class="wp-block-paragraph">そして、感覚が戻った時、<strong>小さな幸福を受け取れる</strong>ようになります。</p>



<p class="wp-block-paragraph">温かいコーヒーや好きな音楽、草木の揺れる音、散歩中の日の光、誰かとの会話。</p>



<p class="wp-block-paragraph">幸福とは、世界に新しいものが増えた時ではなく、今の自分がそれを<strong>受け取れる状態になった時に立ち現れるもの</strong>なのかもしれません。</p>



<h3 class="wp-block-heading"><strong>幸福が足りないのではなく、受け取る状態が失われていることがある</strong></h3>



<p class="wp-block-paragraph">最近、自分にとって象徴的な出来事がありました。</p>



<p class="wp-block-paragraph">自宅でインスタントコーヒーを淹れることすら、いつの間にか忘れていたことです。</p>



<p class="wp-block-paragraph">友人とカフェへ行くことはある。</p>



<p class="wp-block-paragraph">しかし、自分自身のためにゆっくりコーヒーを淹れる時間はなくなっていた。</p>



<p class="wp-block-paragraph">コーヒーは、ただの飲み物ではありませんでした。</p>



<p class="wp-block-paragraph">ほっと一息、立ち止まる時間。</p>



<p class="wp-block-paragraph">香りを感じるられるぐらいの余裕を作る時間。</p>



<p class="wp-block-paragraph">ノーマルな自分に戻るための小さな儀式。</p>



<p class="wp-block-paragraph">それを忘れていたということは、好きなものを失ったのではなく、<strong>自分を回復させる入口との接続が薄れていた</strong>ということなのかもしれません。</p>



<h2 class="wp-block-heading"><strong>刺激との距離を設計する</strong></h2>



<p class="wp-block-paragraph">幸福や回復に必要なのは、刺激をなくすことではありません。</p>



<p class="wp-block-paragraph">刺激との距離を適切に調整することです。</p>



<p class="wp-block-paragraph">近すぎると、情報過多になる。</p>



<p class="wp-block-paragraph">あるいは分析しすぎて、疲れてしまう。</p>



<p class="wp-block-paragraph">遠すぎると、無気力になる。</p>



<p class="wp-block-paragraph">孤立して、感覚が鈍る。</p>



<p class="wp-block-paragraph">必要なのは、自分に合う距離感を見つけること。</p>



<p class="wp-block-paragraph">世界を見て、感じて、必要なら近づき、必要なら離れる。</p>



<p class="wp-block-paragraph">その調整能力が、新しい自分のための技術になります。</p>



<h2 class="wp-block-heading"><strong>Tranquil Guidesが目指しているもの</strong></h2>



<p class="wp-block-paragraph">考えてみるとこの考え方は、当サイト <strong>Tranquil Guides</strong> の根底にある思想ともつながっています。</p>



<p class="wp-block-paragraph">私が目指しているのは、変化した今の自分を安心して<strong>ありのまま</strong>迎え入れられる場所です。</p>



<p class="wp-block-paragraph">静けさとは、世界から離れることではなく自分と世界との距離を整え直すこと。</p>



<p class="wp-block-paragraph">その考えを形にしたものが、深夜待合室やQuiet Letter、Visual Archive（実装予定）、そして各種診断 です。</p>



<p class="wp-block-paragraph">どれも「頑張るための場所」ではなく、「今の自分へ戻るための入口」として設計しています。</p>



<p class="wp-block-paragraph"><a href="https://tranquilguides.com/" data-type="page" data-id="38">TranquilGuides.com</a> が、誰かにとってそんな小さな居場所になればと願っています。</p>



<h2 class="wp-block-heading"><strong>昔の自分を捨てるのではない</strong></h2>



<p class="wp-block-paragraph">再構築や再設計とは、以前の自分を否定することではありません。</p>



<p class="wp-block-paragraph">写真が好きだったこと。</p>



<p class="wp-block-paragraph">世界を観察していたこと。</p>



<p class="wp-block-paragraph">誰かのために何かを作りたいと思ったこと。</p>



<p class="wp-block-paragraph">それらは失われていません。</p>



<p class="wp-block-paragraph">ただ、使い方が変わる。</p>



<p class="wp-block-paragraph"><strong>以前は、感じたら撮っていた。</strong><br>
今は、感じる時間を持ち、必要な時に撮る。</p>



<p class="wp-block-paragraph"><strong>以前は、疲れてから休んでいた。</strong><br>
今は、疲れる前に調整する。</p>



<p class="wp-block-paragraph"><strong>以前は、好きなことだから無限に続けていた。</strong><br>
今は、好きなことだからこそ余白を残す。</p>



<p class="wp-block-paragraph">これは制限ではありません。</p>



<p class="wp-block-paragraph">新しい身体の操作方法を学んでいるだけです。</p>



<h2 class="wp-block-heading"><strong>新しい自分の設計図を書く</strong></h2>



<p class="wp-block-paragraph">人生で大きな変化を経験した時、本当に必要な問いは「どうすれば元に戻れるか」ではないのかもしれません。</p>



<p class="wp-block-paragraph">この問いは、「この身体や感覚、経験を持った自分は、どう生きられるか」へ変わる。</p>



<p class="wp-block-paragraph">昔の自分を取り戻すのではなく、昔の自分を材料にして、今の自分に合った新しい形を作る。</p>



<p class="wp-block-paragraph">以前の自分を目標にするのではなく、以前の自分を「素材（material）<strong>」</strong>にする。</p>



<p class="wp-block-paragraph">それが再構築であり、再設計なのだと思います。</p>



<h2 class="wp-block-heading"><strong>新しい取扱説明書を作るための5つの問い</strong></h2>



<p class="wp-block-paragraph">最後に、自分自身へ問いかけてみる。</p>



<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li>疲れる前に現れるサインは何か</li>



<li>自分が回復する条件は何か</li>



<li>失うと自分らしさが薄れるものは何か</li>



<li>今の自分だから気づけること、できることは何か</li>



<li>変化した今も、自分の中に残っているものは何か</li>
</ul>



<h2 class="wp-block-heading"><strong>最後に</strong></h2>



<p class="wp-block-paragraph">人は変化した時、以前と同じ場所へ戻ろうとします。</p>



<p class="wp-block-paragraph">それは自然なことです。</p>



<p class="wp-block-paragraph">けれど人生は、「もう一度同じ場所へ戻る」だけでは終わりません。</p>



<p class="wp-block-paragraph">変化した自分を理解し、受け入れ、新しい形を設計する。</p>



<p class="wp-block-paragraph"><strong>以前の自分を目標にするのではなく、以前の自分を素材にする。</strong></p>



<p class="wp-block-paragraph">再構築し、再設計し、変化した自分からもう一度その先へ進む。</p>



<p class="wp-block-paragraph">その営みを、私は<strong>「Re: more</strong>」と呼んでみたい。</p>



<p class="wp-block-paragraph">戻るためではなく、変化した自分から、もう一度未来を設計していくための言葉として。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/reconstruction-redesign/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1692</post-id>	</item>
		<item>
		<title>Travel Guide: 知らない街を歩く</title>
		<link>https://tranquilguides.com/unknown-city-travel-guide/</link>
					<comments>https://tranquilguides.com/unknown-city-travel-guide/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Mon, 13 Jul 2026 02:02:14 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[Travel Guide]]></category>
		<category><![CDATA[ローカル]]></category>
		<category><![CDATA[一人旅]]></category>
		<category><![CDATA[写真]]></category>
		<category><![CDATA[散歩]]></category>
		<category><![CDATA[街歩き]]></category>
		<category><![CDATA[観察]]></category>
		<category><![CDATA[記録]]></category>
		<category><![CDATA[読みもの]]></category>
		<category><![CDATA[路地]]></category>
		<category><![CDATA[静けさ]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1502</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260713_152804.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>知らない街を効率よく回るのではなく、その場所の速さに歩幅を合わせる。予定を詰めすぎない街歩きの方法を、3つのルートで紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260713_152804.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>
<p class="wp-block-paragraph">旅先で予定を詰めすぎると、街が見えなくなることがあります。</p>



<p class="wp-block-paragraph">次の店、次の名所、次の電車。</p>



<p class="wp-block-paragraph">目的地をつなぐことに集中しているうちに、その間にあった路地や店先、人の動きは、ただの通過点になってしまいます。</p>



<p class="wp-block-paragraph">予定どおりに移動できたという満足感は残っても、その街で何を見たのか思い出せない。</p>



<p class="wp-block-paragraph">写真はたくさんあるのに、歩いていたときの空気や音が残っていない。</p>



<p class="wp-block-paragraph">そんな旅になることもあります。</p>



<p class="wp-block-paragraph">知らない街を歩く時は、必ずしも多くの場所を訪れる必要はありません。</p>



<p class="wp-block-paragraph">街の輪郭は、観光名所の数だけで決まるものではないからです。</p>



<p class="wp-block-paragraph">道の広さ、建物の高さ、商店が開き始める時間、川に向かって下っていく道。</p>



<p class="wp-block-paragraph">そうした小さな特徴をいくつか見つけるだけでも、その街がどのような場所なのか、少しずつ分かってきます。</p>



<p class="wp-block-paragraph">このTravel Guideでは、知らない街を効率よく回るのではなく、歩きながら少しずつ輪郭をつかむ方法を整理します。</p>



<h2 class="wp-block-heading"><strong>目的地は3つまで</strong></h2>



<p class="wp-block-paragraph">半日なら、目的地は3つ程度で十分です。</p>



<p class="wp-block-paragraph">選ぶ基準は、次のように分けると歩きやすくなります。</p>



<p class="wp-block-paragraph">街を知る場所。</p>



<p class="wp-block-paragraph">休む場所。</p>



<p class="wp-block-paragraph">その土地の時間を感じる場所。</p>



<p class="wp-block-paragraph">有名な観光地を3つ選ぶ必要はありません。</p>



<ul class="wp-block-list">
<li>公園</li>



<li>喫茶店</li>



<li>川沿い</li>
</ul>



<p class="wp-block-paragraph">でも成立します。</p>



<p class="wp-block-paragraph">たとえば、最初に古い商店街を歩き、途中で喫茶店に入り、夕方に川辺へ向かう。</p>



<p class="wp-block-paragraph">それだけでも、街の仕事、休息、時間の流れをそれぞれ見ることができます。</p>



<p class="wp-block-paragraph">大切なのは、目的地そのものよりも、目的地同士の間に歩く余白を残すことです。</p>



<p class="wp-block-paragraph">地図上では徒歩15分でも、実際には気になる店の前で立ち止まったり、道を一本外れたりするかもしれません。</p>



<p class="wp-block-paragraph">予定を立てるときは、正確な移動時間をもとに計画するのではなく、表示される所要時間の1.5倍ほどを見ておくと安心です。</p>



<p class="wp-block-paragraph">15分の道なら、20〜30分。</p>



<p class="wp-block-paragraph">30分の道なら、45分ほど。</p>



<p class="wp-block-paragraph">余った時間は無駄にはなりません。街を見るための時間になります。</p>



<h2 class="wp-block-heading"><strong>歩き方を選ぶ</strong></h2>



<p class="wp-block-paragraph">街歩きには、いくつかの形があります。</p>



<p class="wp-block-paragraph">出発前に、その日の歩き方やテーマを一つ決めておくと、予定を増やしすぎずに済みます。</p>



<h3 class="wp-block-heading"><strong>Line</strong>: 一本道で街を知る歩き方</h3>



<p class="wp-block-paragraph">駅から目的地まで、一本の道を歩きます。</p>



<p class="wp-block-paragraph">迷いにくく、初めての街でも始めやすい方法です。</p>



<p class="wp-block-paragraph">大通りをまっすぐ歩いても構いません。</p>



<p class="wp-block-paragraph">線路沿い、川沿い、旧街道のように、何か一つの軸を決めてもよいでしょう。</p>



<p class="wp-block-paragraph">Lineの良さは、街の変化を順番に見られることです。</p>



<p class="wp-block-paragraph">駅前の商業地から住宅街へ変わり、住宅街の先に畑が現れる。</p>



<p class="wp-block-paragraph">新しい建物が減り、古い家が増えていく。</p>



<p class="wp-block-paragraph">一点だけを見るのではなく、場所同士のつながりが見えてきます。</p>



<p class="wp-block-paragraph">途中で気になる横道があっても、すべてに入る必要はありません。</p>



<p class="wp-block-paragraph">一本だけ選んで寄り道し、また元の道へ戻ります。</p>



<h3 class="wp-block-heading"><strong>Loop</strong>: 戻ることで街が見えてくる</h3>



<p class="wp-block-paragraph">出発地点へ戻る、小さな周回をつくります。</p>



<p class="wp-block-paragraph">行きと帰りで道を変えると、同じ範囲でも街の表情が増えます。</p>



<p class="wp-block-paragraph">駅から公園へ向かい、帰りは商店街を通る。</p>



<p class="wp-block-paragraph">川の右岸を進み、橋を渡って左岸から戻る。</p>



<p class="wp-block-paragraph">Loopは、限られた時間でも使いやすい歩き方です。</p>



<p class="wp-block-paragraph">終点が出発地点なので、帰りの交通を考え続ける必要もありません。</p>



<p class="wp-block-paragraph">また、少し離れた場所から戻ってくることで、最初に見た駅前や広場の印象が変化することがあります。</p>



<p class="wp-block-paragraph">到着したときにはただ広く感じた駅前が、帰る頃には街の人が集まる場所として見えるかもしれません。</p>



<h3 class="wp-block-heading"><strong>Drift</strong>: 偶然を受け入れる歩き方</h3>



<p class="wp-block-paragraph">歩く時間だけを決め、気になった方向へ進みます。</p>



<p class="wp-block-paragraph">看板の色、木の多い道、遠くに見える塔、坂の向こう側。</p>



<p class="wp-block-paragraph">理由は小さなもので構いません。</p>



<p class="wp-block-paragraph">ただし、完全に無計画にする必要はありません。</p>



<ul class="wp-block-list">
<li>戻る時間</li>



<li>最寄りの駅</li>



<li>帰りの交通手段</li>



<li>日没の時刻</li>
</ul>



<p class="wp-block-paragraph">この4つだけは、あらかじめ確認しておきます。</p>



<p class="wp-block-paragraph">Driftは、偶然を受け入れる歩き方ですが、安全や帰路まで偶然に任せる方法ではありません。</p>



<p class="wp-block-paragraph">土地勘のない場所では、30分〜1時間歩いたら現在地を確認する、川や線路を越えたら一度地図を見るなど、自分なりの区切りを決めておくと安心です。</p>



<h2 class="wp-block-heading"><strong>地図は確認するために使う</strong></h2>



<p class="wp-block-paragraph">スマートフォンの地図を見ながら歩き続けると、実際の街よりも画面上の線を追うことになります。</p>



<p class="wp-block-paragraph">地図は、進む道を常に指示してもらうためではなく、現在地を確認するために使います。</p>



<p class="wp-block-paragraph">出発前に目的地のおおまかな方向を見ます。</p>



<p class="wp-block-paragraph">次に確認するのは、大きな交差点や川、線路など、街の境目に着いたときです。</p>



<p class="wp-block-paragraph">それ以外の時間は、画面を閉じて歩いてみます。</p>



<p class="wp-block-paragraph">少し道を間違えても、すぐに修正する必要はありません。</p>



<p class="wp-block-paragraph">危険がなく、時間にも余裕があるなら、一本先の道から戻るだけで、新しい場所を見ることができます。</p>



<p class="wp-block-paragraph">道に迷うことと、道を間違えることは同じではありません。</p>



<p class="wp-block-paragraph">戻る方法が分かっているなら、それは小さな寄り道です。</p>



<h2 class="wp-block-heading"><strong>街を見る手がかり</strong></h2>



<p class="wp-block-paragraph">街の特徴は、案内板に説明されているものだけではありません。</p>



<p class="wp-block-paragraph">歩いているときは、次のようなものが手がかりになります。</p>



<style>
.tg-observation-table {
  margin: 2.4rem 0;
  overflow: hidden;
  border: 1px solid rgba(75, 88, 82, 0.14);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 10px 30px rgba(44, 54, 49, 0.045);
}

.tg-observation-table table {
  width: 100%;
  margin: 0;
  border: 0 !important;
  border-collapse: collapse;
  border-spacing: 0;
  table-layout: fixed;
  background: transparent;
  font-size: 0.94rem;
}

.tg-observation-table thead {
  background: #f2f4f1;
}

.tg-observation-table th,
.tg-observation-table td {
  height: auto;
  border: 0 !important;
  box-shadow: none !important;
  text-align: left;
  vertical-align: top;
}

.tg-observation-table th {
  padding: 15px 20px;
  color: #3f4944;
  font-size: 0.78rem;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.08em;
}

.tg-observation-table th:first-child,
.tg-observation-table td:first-child {
  width: 42%;
}

.tg-observation-table td {
  position: relative;
  padding: 17px 20px;
  color: #4a514d;
  line-height: 1.75;
}

.tg-observation-table td:first-child {
  padding-left: 46px;
  color: #303733;
  font-weight: 500;
}

.tg-observation-table td:first-child::before {
  content: counter(tg-observation, decimal-leading-zero);
  position: absolute;
  top: 19px;
  left: 20px;
  color: #9ba59f;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 0.68rem;
  font-weight: 400;
  letter-spacing: 0.04em;
}

.tg-observation-table tbody {
  counter-reset: tg-observation;
}

.tg-observation-table tbody tr {
  counter-increment: tg-observation;
  border-top: 1px solid rgba(75, 88, 82, 0.1);
  transition: background-color 0.2s ease;
}

.tg-observation-table tbody tr:first-child {
  border-top: 0;
}

@media (hover: hover) {
  .tg-observation-table tbody tr:hover {
    background: #f8f9f7;
  }
}

@media (max-width: 600px) {
  .tg-observation-table {
    margin: 2rem 0;
    border-radius: 13px;
  }

  .tg-observation-table table,
  .tg-observation-table tbody,
  .tg-observation-table tr,
  .tg-observation-table th,
  .tg-observation-table td {
    display: block;
    width: 100%;
  }

  .tg-observation-table thead {
    display: none;
  }

  .tg-observation-table tbody tr {
    padding: 15px 17px 16px;
  }

  .tg-observation-table td {
    padding: 0;
  }

  .tg-observation-table td:first-child {
    width: 100%;
    padding: 0 0 5px 29px;
    font-size: 0.94rem;
  }

  .tg-observation-table td:first-child::before {
    top: 2px;
    left: 0;
  }

  .tg-observation-table td:last-child {
    padding-left: 29px;
    color: #69716d;
    font-size: 0.88rem;
    line-height: 1.7;
  }
}
</style>

<div class="tg-observation-table">
  <table>
    <thead>
      <tr>
        <th scope="col">見るもの</th>
        <th scope="col">その街から分かること</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>店が開き始める時間</td>
        <td>街の一日の始まり</td>
      </tr>
      <tr>
        <td>ベンチの向き</td>
        <td>人が立ち止まる場所</td>
      </tr>
      <tr>
        <td>古い看板</td>
        <td>以前そこにあった営み</td>
      </tr>
      <tr>
        <td>川や坂</td>
        <td>街の地形と成り立ち</td>
      </tr>
      <tr>
        <td>夕方の人の流れ</td>
        <td>暮らしの方向</td>
      </tr>
      <tr>
        <td>自転車の数</td>
        <td>移動距離や道の平坦さ</td>
      </tr>
      <tr>
        <td>軒先の植物</td>
        <td>家と道との距離感</td>
      </tr>
      <tr>
        <td>閉じた店の多さ</td>
        <td>商店街の現在の時間</td>
      </tr>
      <tr>
        <td>学校や公園</td>
        <td>子どもたちが過ごす場所</td>
      </tr>
      <tr>
        <td>洗濯物や室外機</td>
        <td>建物の裏側にある生活</td>
      </tr>
    </tbody>
  </table>
</div>



<p class="wp-block-paragraph">すべてを分析する必要はありません。</p>



<p class="wp-block-paragraph">一つか二つ、気になったものを覚えておくだけで十分です。</p>



<p class="wp-block-paragraph">たとえば、どの家にも小さな鉢植えが置かれていることに気づいたら、その街では家の内側と道の境界が少し柔らかいのかもしれません。</p>



<p class="wp-block-paragraph">川沿いのベンチがすべて水面ではなく住宅側を向いていたら、そこは景色を見る場所ではなく、人を待つ場所なのかもしれません。</p>



<p class="wp-block-paragraph">正しい答えを出すことが目的ではありません。</p>



<p class="wp-block-paragraph">街の中にある小さな配置から、その場所の暮らしを想像してみます。</p>



<h2 class="wp-block-heading"><strong>建物ではなく、建物の間を見る</strong></h2>



<p class="wp-block-paragraph">知らない街では、特徴的な建物に目が向きやすくなります。</p>



<p class="wp-block-paragraph">高層ビル、個性的な店、古い洋館、寺院。</p>



<p class="wp-block-paragraph">しかし、街の印象をつくっているのは建物そのものだけではありません。</p>



<p class="wp-block-paragraph">建物と建物の間の細い通路。</p>



<p class="wp-block-paragraph">家の脇に残された空き地。</p>



<p class="wp-block-paragraph">駐車場の奥に見える山。</p>



<p class="wp-block-paragraph">路地から差し込む西日。</p>



<p class="wp-block-paragraph">そうした<strong>「あいだ」</strong>にも、その街らしさがあります。</p>



<p class="wp-block-paragraph">建物の用途が変わっても、道幅や敷地の形は長く残ることがあります。</p>



<p class="wp-block-paragraph">新しい住宅が並んでいても、道だけが不自然に曲がっていれば、昔そこに水路や畑の境界があったのかもしれません。</p>



<p class="wp-block-paragraph">街を歩くときは、何が建っているかだけでなく、なぜここに隙間があるのか、なぜこの道だけ細いのかにも目を向けてみます。</p>



<h2 class="wp-block-heading"><strong>休憩を予定に含める</strong></h2>



<p class="wp-block-paragraph">休憩は、歩けなくなったときに取るものではありません。</p>



<p class="wp-block-paragraph">街の印象を整理するための時間として、最初から予定に入れます。</p>



<ul class="wp-block-list">
<li>喫茶店</li>



<li>公園</li>



<li>川辺や堤防</li>



<li>図書館</li>



<li>駅のベンチ</li>
</ul>



<p class="wp-block-paragraph">長く滞在する必要はありません。</p>



<p class="wp-block-paragraph">15分ほど座るだけでも、歩いているときには見えなかったものが見えてきます。</p>



<p class="wp-block-paragraph">人はどこから来て、どこへ向かうのか。</p>



<p class="wp-block-paragraph">どの席が先に埋まるのか。</p>



<p class="wp-block-paragraph">店内ではどのような声量で話しているのか。</p>



<p class="wp-block-paragraph">歩くことを止めると、街を静止した風景ではなく、時間の流れる場所として感じられるようになります。</p>



<p class="wp-block-paragraph">休憩中に撮った写真を見返してもよいでしょう。</p>



<p class="wp-block-paragraph">数行だけメモを残す方法もあります。</p>



<ul class="wp-block-list">
<li>坂が多い</li>



<li>犬を連れた人が多い</li>



<li>川の近くまで潮の匂いがする</li>
</ul>



<p class="wp-block-paragraph">文章のように整える必要はありません。</p>



<p class="wp-block-paragraph">断片を残しておくと、次に向かう方角が自然に決まることがあります。</p>



<h2 class="wp-block-heading"><strong>同じ道を通る</strong></h2>



<p class="wp-block-paragraph">効率だけを考えると、同じ道を二度通ることは無駄に見えます。</p>



<p class="wp-block-paragraph">しかし、街を知るためには同じ場所をもう一度通ることが役立ちます。</p>



<p class="wp-block-paragraph">午前中には閉まっていた店が、午後には開いている。</p>



<p class="wp-block-paragraph">人のいなかった広場に、学校帰りの子どもが集まっている。</p>



<p class="wp-block-paragraph">逆光で見えなかった建物の表情が、帰り道には見える。</p>



<p class="wp-block-paragraph">同じ場所でも、時間が変わると見え方も変わります。</p>



<p class="wp-block-paragraph">往復で同じ道を歩くなら、帰りは反対側の歩道を歩いてみます。</p>



<p class="wp-block-paragraph">視線の向きが変わるだけで、最初には気づかなかった看板や入口が見つかります。</p>



<p class="wp-block-paragraph">街は、一度通っただけで見終わるものではありません。</p>



<h2 class="wp-block-heading"><strong>撮らない時間をつくる</strong></h2>



<p class="wp-block-paragraph">写真を撮り続けていると、街を見ることが被写体探しに変わります。</p>



<p class="wp-block-paragraph">光がきれいな場所。</p>



<p class="wp-block-paragraph">特徴的な看板。</p>



<p class="wp-block-paragraph">SNSに載せやすい構図。</p>



<p class="wp-block-paragraph">何かを残そうとするほど、目の前の場所を、写真になるかどうかで判断してしまうことがあります。</p>



<p class="wp-block-paragraph">一区間だけカメラをしまい、音や匂い、足元の傾きを確認します。</p>



<p class="wp-block-paragraph">車の音が急に遠くなる道。</p>



<p class="wp-block-paragraph">飲食店の裏側から漂う匂い。</p>



<p class="wp-block-paragraph">坂を下るときに変わる歩幅。</p>



<p class="wp-block-paragraph">建物の隙間を抜ける風。</p>



<p class="wp-block-paragraph">写真には写らない空気や感覚も、街の一部です。</p>



<p class="wp-block-paragraph">10分でも構いません。</p>



<p class="wp-block-paragraph">カメラを持たずに歩いたあとで、それでも撮りたくなったものがあれば、改めて立ち止まります。</p>



<p class="wp-block-paragraph">そのとき撮るものは、最初に目についたものとは少し違うかもしれません。</p>



<h2 class="wp-block-heading"><strong>記録する量を決める</strong></h2>



<p class="wp-block-paragraph">旅先では、見たものをできるだけ多く残したくなります。</p>



<p class="wp-block-paragraph">しかし、写真やメモが多すぎると後から見返さなくなることもあります。</p>



<p class="wp-block-paragraph">そこで、記録する量を先に決めておきます。</p>



<p class="wp-block-paragraph">写真は30枚まで。</p>



<p class="wp-block-paragraph">レンズは1本まで。</p>



<p class="wp-block-paragraph">メモは5つまで。</p>



<p class="wp-block-paragraph">持ち帰るものは一つだけ。</p>



<p class="wp-block-paragraph">制限は、街を見る範囲を狭めるためではありません。</p>



<p class="wp-block-paragraph">何を残すかを選び、自分が何に最も惹かれたのかを発見するためのものです。</p>



<p class="wp-block-paragraph">同じ場所を何枚も撮る代わりに、一度その場を離れ、少し距離を置いてから戻ってみます。</p>



<p class="wp-block-paragraph">本当に残したいものなら、戻ったあとにも気になるはずです。</p>



<p class="wp-block-paragraph">その場では撮らず、帰宅してから記憶だけで書いてみるのもいいでしょう。</p>



<p class="wp-block-paragraph">写真に残っていないものほど、意外に強く覚えていることがあります。</p>



<h2 class="wp-block-heading"><strong>観光地の裏側へ少しだけ進む</strong></h2>



<p class="wp-block-paragraph">有名な場所を避ける必要はありません。</p>



<p class="wp-block-paragraph">観光地には、その場所が長く残されてきた理由があります。</p>



<p class="wp-block-paragraph">ただし、正面だけを見て終わらず、出口を出てから少しだけ周辺を歩いてみます。</p>



<p class="wp-block-paragraph">寺院の裏側にある住宅地。</p>



<p class="wp-block-paragraph">市場から一本外れた搬入口。</p>



<p class="wp-block-paragraph">美術館の隣にある公園。</p>



<p class="wp-block-paragraph">観光客の流れが途切れる場所まで進むと、その場所が日常とどのようにつながっているかが見えてきます。</p>



<p class="wp-block-paragraph">ただし、生活の場所へ入り込むときは、距離を保つ必要があります。</p>



<p class="wp-block-paragraph">私有地に入らない。</p>



<p class="wp-block-paragraph">住宅の窓へカメラを向けない。</p>



<p class="wp-block-paragraph">通行の邪魔になる場所で、長時間立ち止まらない。</p>



<p class="wp-block-paragraph">街を見ることと、他人の生活を無遠慮に覗くことは異なります。</p>



<p class="wp-block-paragraph">見つけたものを持ち帰る前に、その場所の静けさを壊していないかを確認します。</p>



<h2 class="wp-block-heading"><strong>天候に歩き方を合わせる</strong></h2>



<p class="wp-block-paragraph">街歩きは、晴れた日にだけ成立するものではありません。</p>



<p class="wp-block-paragraph">雨の日には、軒下やアーケード、人が雨宿りする場所が見えてきます。</p>



<p class="wp-block-paragraph">暑い日は、木陰や地下道、風が通る道が分かります。</p>



<p class="wp-block-paragraph">寒い日は、日向のベンチや暖房のある公共施設に人が集まります。</p>



<p class="wp-block-paragraph">天候は街の使われ方を変えます。</p>



<p class="wp-block-paragraph">無理に予定を守るのではなく、その日の条件に合わせて歩き方を変えます。</p>



<p class="wp-block-paragraph">雨が強ければLineを短くする。</p>



<p class="wp-block-paragraph">暑ければ休憩地点を増やす。</p>



<p class="wp-block-paragraph">夕方から晴れるなら、昼は喫茶店や図書館で過ごし、光が変わる時間に外へ出る。</p>



<p class="wp-block-paragraph">予定を変更することは、旅の失敗ではありません。</p>



<p class="wp-block-paragraph">その日の街に合わせて、観察方法を調整した結果です。</p>



<h2 class="wp-block-heading"><strong>帰る前に一度立ち止まる</strong></h2>



<p class="wp-block-paragraph">駅に着いたら、すぐに改札へ入らず、少しだけ街の方を振り返ります。</p>



<p class="wp-block-paragraph">最初に降りたときと、何が変わって見えるでしょうか。</p>



<p class="wp-block-paragraph">通った道の方向。</p>



<p class="wp-block-paragraph">休憩した店の位置。</p>



<p class="wp-block-paragraph">川や坂との距離。</p>



<p class="wp-block-paragraph">朝には知らなかった場所が、いくつか頭の中でつながっているはずです。</p>



<p class="wp-block-paragraph">すべての道を覚えていなくても構いません。</p>



<p class="wp-block-paragraph">「駅の向こうに古い商店街がある」</p>



<p class="wp-block-paragraph">「川は街の東側を流れている」</p>



<p class="wp-block-paragraph">「夕方になると人は坂の上へ帰っていく」</p>



<p class="wp-block-paragraph">その程度の輪郭が残れば、その街はもう地図上の名前だけではありません。</p>



<p class="wp-block-paragraph">帰りの電車では、写真を整理しすぎない方がよいこともあります。</p>



<p class="wp-block-paragraph">家に着くまでが旅です。</p>



<p class="wp-block-paragraph">帰りの電車で窓の外に目を向け、その日に見聞きしたものの余韻に浸る時間も、旅の一部です。</p>



<p class="wp-block-paragraph">あるいは、窓の外の景色をカメラに収めるのもいいでしょう。</p>



<p class="wp-block-paragraph">削除や加工はあとにして、その日いちばん覚えている場所を一つだけ書き留めるのもいいでしょう。</p>



<p class="wp-block-paragraph">目立つ場所でなくても構いません。</p>



<p class="wp-block-paragraph">路地の奥にあった椅子。</p>



<p class="wp-block-paragraph">閉店した店のガラス。</p>



<p class="wp-block-paragraph">川を渡るときに吹いた風。</p>



<p class="wp-block-paragraph">旅の記憶は、代表的な風景だけでできているわけではありません。</p>



<h2 class="wp-block-heading"><strong>すべてを見なくていい</strong></h2>



<p class="wp-block-paragraph">一度の旅で、その街を理解することはできません。</p>



<p class="wp-block-paragraph">歴史を調べ、名所を回り、人気の店を訪れても、そこで暮らす人の生活まですべて知ることはできません。</p>



<p class="wp-block-paragraph">だからこそ、見残すことを失敗だと考えなくてもよいのだと思います。</p>



<p class="wp-block-paragraph">一本の道。</p>



<p class="wp-block-paragraph">一軒の店。</p>



<p class="wp-block-paragraph">太陽の光。</p>



<p class="wp-block-paragraph">小さな範囲だけを持ち帰る方が、次に戻る理由が残ることもあります。</p>



<p class="wp-block-paragraph">今回は川の東側を歩いたから、次は西側へ行く。</p>



<p class="wp-block-paragraph">昼の商店街を見たから、次は店が閉まる頃に訪れる。</p>



<p class="wp-block-paragraph">雨で坂の上まで行けなかったから、季節を変えて戻ってみる。</p>



<p class="wp-block-paragraph">見られなかったものは、旅の不足ではなく、次の入口になります。</p>



<p class="wp-block-paragraph">街を知ることは、情報を集めることではありません。</p>



<p class="wp-block-paragraph">観光地を制覇することでも、地図を完全に埋めることでもありません。</p>



<p class="wp-block-paragraph">その場所の速さに、一度だけ自分の歩幅を合わせてみることです。</p>



<p class="wp-block-paragraph">急ぐ人が多ければ、その流れを少し離れた場所から見る。</p>



<p class="wp-block-paragraph">誰も歩いていない道では、足音を聞きながらゆっくり進む。</p>



<p class="wp-block-paragraph">店が開くのを待つ時間があれば、その前の通りを眺めてみる。</p>



<p class="wp-block-paragraph">街を歩いたあとに残るのは、訪れた場所の数だけではありません。</p>



<p class="wp-block-paragraph">そこで少し立ち止まった時間や、理由もなく曲がった道、撮らずに通り過ぎた風景も残ります。</p>



<p class="wp-block-paragraph">予定に空白をつくることは、何もしない時間を増やすことではありません。</p>



<p class="wp-block-paragraph">まだ名前のついていないものが入ってくる余地を残すことです。</p>



<p class="wp-block-paragraph">予定を一つ減らしてみてください。</p>



<p class="wp-block-paragraph">空いた時間が、その街に出会う時間になります。</p>



<p class="wp-block-paragraph">有名な場所を見るだけではなく、<br>その場所が日常へ戻っていく境界まで歩いてみる。</p>



<p class="wp-block-paragraph">そうすると、その街は観光地ではなく、誰かが暮らす場所として見えてきます。</p>



<p class="wp-block-paragraph">街にも呼吸があります。</p>



<p class="wp-block-paragraph">歩く速さを少し落とすと、その呼吸が聞こえてきます。</p>



<h2 class="wp-block-heading"><strong>今日のGuide</strong></h2>



<p class="wp-block-paragraph">次のうち、一つだけ試してみてください。</p>



<ul class="wp-block-list">
<li>匂いに意識を向けて、一区間歩く</li>



<li>聞こえてきた音を手がかりに、進む方向を決める</li>



<li>最初に行こうと思った道を一本だけ外れてみる</li>
</ul>



<p class="wp-block-paragraph">何かを発見しなければならないわけではありません。</p>



<p class="wp-block-paragraph">いつもとは違う感覚を一つ使って歩いた経験が、次の旅で街を見る手がかりになります。</p>



<p class="wp-block-paragraph">目に見えるものを追うだけでなく、音や匂い、風や足元の傾きにも意識を向けてみてください。</p>



<p class="wp-block-paragraph">街の印象は、写真に写るものだけでできているわけではありません。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/unknown-city-travel-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1502</post-id>	</item>
		<item>
		<title>知らないものにはまだ名前がないだけ</title>
		<link>https://tranquilguides.com/ghost/</link>
					<comments>https://tranquilguides.com/ghost/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Sat, 11 Jul 2026 12:32:55 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[不在]]></category>
		<category><![CDATA[余白]]></category>
		<category><![CDATA[夜]]></category>
		<category><![CDATA[存在]]></category>
		<category><![CDATA[幽霊]]></category>
		<category><![CDATA[怪談]]></category>
		<category><![CDATA[文学]]></category>
		<category><![CDATA[気配]]></category>
		<category><![CDATA[短編]]></category>
		<category><![CDATA[記憶]]></category>
		<category><![CDATA[認識]]></category>
		<category><![CDATA[読みもの]]></category>
		<category><![CDATA[静けさ]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1449</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260711_213040.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>引っ越した部屋のノートに、毎朝ひとつ増えていく見知らぬ文章。見えないものは存在しないのか、それともまだ名前がないだけなのか。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260711_213040.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>
<p class="wp-block-paragraph">私が引っ越してから不思議なことが続いた。</p>



<p class="wp-block-paragraph">最初は気のせいだと思った。</p>



<p class="wp-block-paragraph">部屋の机にはいつも、一冊のノートを置いていた。</p>



<p class="wp-block-paragraph">何も書いていない、まっさらなノート。</p>



<p class="wp-block-paragraph">ある朝そのノートを開くと、1ページだけ増えていた。</p>



<p class="wp-block-paragraph">誰か知らない人の文字。</p>



<p class="wp-block-paragraph">「昨日、玄関で靴を脱ぐ音がした」</p>



<p class="wp-block-paragraph">それだけが記されていた。</p>



<p class="wp-block-paragraph">日記でもない。、予定でもない。、誰かへの手紙でもない。</p>



<p class="wp-block-paragraph">ただ、そう書かれていた。</p>



<p class="wp-block-paragraph">翌朝も、1ページ増えた。</p>



<p class="wp-block-paragraph"><strong>「コップを置く音が少し大きかった」</strong></p>



<p class="wp-block-paragraph">その次の日は、</p>



<p class="wp-block-paragraph"><strong>「窓を2度閉めた」</strong></p>



<p class="wp-block-paragraph">どれも、自分では覚えていないような、小さな出来事ばかりだった。</p>



<p class="wp-block-paragraph">最初は誰かのいたずらだと思った。</p>



<p class="wp-block-paragraph">だから監視カメラを付けた。</p>



<p class="wp-block-paragraph">玄関も、机も、窓も映る位置に。</p>



<p class="wp-block-paragraph">翌朝、映像を見返す。</p>



<p class="wp-block-paragraph">でも夜の部屋には何も映っていなかった。</p>



<p class="wp-block-paragraph">誰も入っていない。</p>



<p class="wp-block-paragraph">ノートにも触れていない。</p>



<p class="wp-block-paragraph">午前3時17分。</p>



<p class="wp-block-paragraph">音だけが記録されていた。</p>



<p class="wp-block-paragraph">紙を1枚づつ、ゆっくりと捲る音。</p>



<p class="wp-block-paragraph">映像を止めて、何度も音だけを聞いた。</p>



<p class="wp-block-paragraph">不思議なことに、聞くたびにページを捲る枚数だけが変わった。</p>



<p class="wp-block-paragraph">それだけだった。</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">それから毎朝、ノートを開くことが日課になった。</p>



<p class="wp-block-paragraph">そしてある夜、駅を出ると突然雨が降った。</p>



<p class="wp-block-paragraph">私は急いで帰り、濡れた折り畳み傘を玄関に立て掛ける。</p>



<p class="wp-block-paragraph">部屋へ入り、無意識にノートを開く。</p>



<p class="wp-block-paragraph">そこには、</p>



<p class="wp-block-paragraph"><strong>「玄関には、濡れた傘が1本ある」</strong></p>



<p class="wp-block-paragraph">とだけ書かれていた。</p>



<p class="wp-block-paragraph">予言ではなかった。</p>



<p class="wp-block-paragraph">報告とも違った。</p>



<p class="wp-block-paragraph">ただ、この部屋には、私が見たものを、私より少し遅れて見ている誰かがいる。</p>



<p class="wp-block-paragraph">そんな考えが、一度だけ頭をよぎった。</p>



<p class="wp-block-paragraph">その考えは、すぐに忘れることにした。</p>



<p class="wp-block-paragraph">そんな気がした。</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">その日を境に、文章は少しだけ変わった。</p>



<p class="wp-block-paragraph"><strong>「今日はこちらを見ていた」</strong></p>



<p class="wp-block-paragraph">その日から、ページを捲る前に、部屋を見回す癖がついた。</p>



<p class="wp-block-paragraph">誰もいない。</p>



<p class="wp-block-paragraph">そう確認してから、ノートを開くようになった。</p>



<p class="wp-block-paragraph">そう思って振り返る。</p>



<p class="wp-block-paragraph">何もない。</p>



<p class="wp-block-paragraph">それでも、「何もない」という確信だけが少し揺らいだ。</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">ある朝。</p>



<p class="wp-block-paragraph">ノートは白紙だった。</p>



<p class="wp-block-paragraph">ページは増えている。</p>



<p class="wp-block-paragraph">けれど一文字も書かれていない。</p>



<p class="wp-block-paragraph">私は、その白紙のページを閉じた。</p>



<p class="wp-block-paragraph">それ以上、確かめようとは思わなかった。</p>



<p class="wp-block-paragraph">翌朝からページは増えなくなった。</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">それから何年も経って、引っ越しの日が来た。</p>



<p class="wp-block-paragraph">荷物を運び終え、最後に部屋を見回す。</p>



<p class="wp-block-paragraph">机の周りはどこもかしこも空だった。</p>



<p class="wp-block-paragraph">ノートもない。</p>



<p class="wp-block-paragraph">電気を消し、玄関の鍵を閉める。</p>



<p class="wp-block-paragraph">廊下を歩き始める。</p>



<p class="wp-block-paragraph">数歩進んだところで、後ろから音がした。</p>



<p class="wp-block-paragraph">紙をゆっくりと捲る音だった。</p>



<p class="wp-block-paragraph">立ち止まる。</p>



<p class="wp-block-paragraph">振り返ろうとして、足だけが止まった。</p>



<p class="wp-block-paragraph">そのまま、振り返らずに歩いた。</p>



<p class="wp-block-paragraph">理由は、今でも思い出せない。</p>



<p class="wp-block-paragraph">ただ、振り返ってはいけない気がした。</p>



<p class="wp-block-paragraph">そのまま階段を下りる。</p>



<p class="wp-block-paragraph">外へ出る。</p>



<p class="wp-block-paragraph">空は薄く曇っていた。</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">それ以来、あの部屋を思い出すことはほとんどない。</p>



<p class="wp-block-paragraph">それでも新しいノートを開くたび、最初のページだけは少し時間を置いてから捲る。</p>



<p class="wp-block-paragraph">その癖だけが、あの部屋から持ち帰ったものだった。</p>



<p class="wp-block-paragraph">もし、あの日の続きを書こうとしている誰かがいるなら、邪魔をしたくないからだ。</p>



<p class="wp-block-paragraph">あの部屋で何が起きていたのか、今でも分からない。</p>



<p class="wp-block-paragraph">ただ、知らないものにはまだ、名前がないだけなのかもしれない。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/ghost/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1449</post-id>	</item>
		<item>
		<title>Quiet Letter 4</title>
		<link>https://tranquilguides.com/2026-07-09/</link>
					<comments>https://tranquilguides.com/2026-07-09/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Thu, 09 Jul 2026 14:30:00 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[Quiet Letter]]></category>
		<category><![CDATA[エッセイ]]></category>
		<category><![CDATA[夏]]></category>
		<category><![CDATA[季節]]></category>
		<category><![CDATA[手紙]]></category>
		<category><![CDATA[文学]]></category>
		<category><![CDATA[日常]]></category>
		<category><![CDATA[暮らし]]></category>
		<category><![CDATA[湿度]]></category>
		<category><![CDATA[読みもの]]></category>
		<category><![CDATA[静けさ]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1284</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/20260816_071343__.jpeg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>最近、夏が始まったと思った瞬間はありましたか。湿度、風、水滴など、暮らしの中に現れる小さな季節の変化を綴った手紙です。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/20260816_071343__.jpeg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>
<p class="wp-block-paragraph">湿気をまとった日に送る手紙。</p>



<h2 class="wp-block-heading">最近、夏が始まったと思った瞬間はありましたか。</h2>



<p class="wp-block-paragraph">ある休みの日、一日中家にいて、気づけば外は夕方になっていました。</p>



<p class="wp-block-paragraph">その日、何度エアコンのリモコンに手を伸ばしたことか。</p>



<p class="wp-block-paragraph">暑いからつける。</p>



<p class="wp-block-paragraph">少し涼しくなってきたから消す。</p>



<p class="wp-block-paragraph">窓を開けてみる。</p>



<p class="wp-block-paragraph">風が通って、少し空気の気配を感じる。</p>



<p class="wp-block-paragraph">でも、その風は涼しさではなく湿度を部屋へ運んでくる。</p>



<p class="wp-block-paragraph">またリモコンに手を伸ばす。</p>



<p class="wp-block-paragraph">暑いからつける。</p>



<p class="wp-block-paragraph">少し涼しくなったから消す。</p>



<p class="wp-block-paragraph">また暑くなってつける。</p>



<p class="wp-block-paragraph">一日中、その繰り返しでした。</p>



<p class="wp-block-paragraph">季節の変わり目というのは、案外こんな暮らしなのかもしれません。</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">昔は、夏といえば強い日差しを思い浮かべていました。</p>



<p class="wp-block-paragraph">青い空や入道雲、蝉の鳴き声。</p>



<p class="wp-block-paragraph">そんな景色が夏の始まりだと思っていました。</p>



<p class="wp-block-paragraph">けれど最近は違います。</p>



<p class="wp-block-paragraph">窓を開けた瞬間の空気。</p>



<p class="wp-block-paragraph">肌にまとわりつく湿度。</p>



<p class="wp-block-paragraph">コップの外側についた水滴。</p>



<p class="wp-block-paragraph">なかなか乾かない洗濯物。</p>



<p class="wp-block-paragraph">床を裸足で歩いたときの、少しひんやりした気持ち良さ。</p>



<p class="wp-block-paragraph">目には見えないのに、部屋の中には少しずつ季節が入り込んできます。</p>



<p class="wp-block-paragraph">そういう小さな変化の積み重ねで、</p>



<p class="wp-block-paragraph">「ああ、夏が来たんだ」</p>



<p class="wp-block-paragraph">と思うようになりました。</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">あなたの部屋も、空気は変わりましたか。</p>



<p class="wp-block-paragraph">朝起きたからといって何かが急に変わるわけではありません。</p>



<p class="wp-block-paragraph">そう言葉にすると少し大げさに聞こえるけれど、部屋は昨日の続きのままです。</p>



<p class="wp-block-paragraph">机の上のものも、カーテンの揺れ方も、昨日とほとんど変わりません。</p>



<p class="wp-block-paragraph">それでも空気だけは少し違う。</p>



<p class="wp-block-paragraph">冷たい飲み物を選ぶ回数が増えたこと。</p>



<p class="wp-block-paragraph">夕方になっても壁の熱が残っていること。</p>



<p class="wp-block-paragraph">部屋の中に風の通り道を探すこと。</p>



<p class="wp-block-paragraph">そして、エアコンのリモコンに何度も手を伸ばしてしまうこと。</p>



<p class="wp-block-paragraph">そんな日が続いているうちに、気づけば七月になっていました。</p>



<p class="wp-block-paragraph">前半が終わったからといって、何かを急いでまとめなくてもいい。</p>



<p class="wp-block-paragraph">後半が始まったからといって、新しい自分にならなくてもいい。</p>



<p class="wp-block-paragraph">まずは季節が静かに動き始めたことに気づく。</p>



<p class="wp-block-paragraph">その変化を、少しだけ受け取ってみる。</p>



<p class="wp-block-paragraph">それだけで十分な日も、あるのかもしれません。</p>



<p class="wp-block-paragraph">今日もまた、リモコンを机の上に置きました。</p>



<p class="wp-block-paragraph">その小さな音が、この夏の始まりを知らせているように聞こえました。</p>



<p class="wp-block-paragraph">今年の後半も、少し涼しい風が見つかりますように。</p>



<p class="wp-block-paragraph">またね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/2026-07-09/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1284</post-id>	</item>
		<item>
		<title>夜の茶室 営業記録</title>
		<link>https://tranquilguides.com/night-room-logs/</link>
					<comments>https://tranquilguides.com/night-room-logs/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 03:30:00 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[夜]]></category>
		<category><![CDATA[定点観測]]></category>
		<category><![CDATA[居場所]]></category>
		<category><![CDATA[統計]]></category>
		<category><![CDATA[記録]]></category>
		<category><![CDATA[部屋]]></category>
		<category><![CDATA[静けさ]]></category>
		<category><![CDATA[静寂]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1236</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260702_001351.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>夜の茶室が閉じたあと、その夜に席についた人の数を記録しています。営業日数や累計、平均、中央値から、静かな夜の積み重なりを見渡せます。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260702_001351.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p><style>
    .night-room-logs{
      max-width:520px;
      margin:64px auto;
      font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
      font-size:.9rem;
      line-height:2;
      letter-spacing:.06em;
    }
    .night-room-stats{ margin-bottom:40px; opacity:.78; }
    .night-room-stats p,
    .night-room-log-lines p{ margin:0 0 .8em; }
    .night-room-stats a{
      color:inherit;
      text-decoration:none;
      border-bottom:1px solid currentColor;
    }
    .night-room-log-lines{ opacity:.68; }
    .night-room-log-lines p{ scroll-margin-top:80px; }
    </style><div class="night-room-logs"><div class="night-room-stats"><p>これまで迎えた人　8人</p><p>夜を開いた回数　12日</p><p>一晩あたりの平均　0.7人/日</p><p>一晩あたりの中央値　0人/日</p><p>もっとも賑わった夜　<a href="#night-room-log-20260701050027">2026.07.01 05:00:27</a></p></div><div class="night-room-log-lines"><p id="night-room-log-20260813201615">2026.08.13　20:16:15　0</p><p id="night-room-log-20260805201015">2026.08.05　20:10:15　0</p><p id="night-room-log-20260713195358">2026.07.13　19:53:58　0</p><p id="night-room-log-20260712195320">2026.07.12　19:53:20　0</p><p id="night-room-log-20260708195059">2026.07.08　19:50:59　0</p><p id="night-room-log-20260707050026">2026.07.07　05:00:26　0</p><p id="night-room-log-20260706050054">2026.07.06　05:00:54　0</p><p id="night-room-log-20260705050022">2026.07.05　05:00:22　0</p><p id="night-room-log-20260704050022">2026.07.04　05:00:22　0</p><p id="night-room-log-20260703050022">2026.07.03　05:00:22　0</p><p id="night-room-log-20260702050054">2026.07.02　05:00:54　0</p><p id="night-room-log-20260701050027">2026.07.01　05:00:27　8</p></div></div>



<p class="has-text-align-center wp-block-paragraph">夜の茶室が閉じたあと、席についた人の数を記録しています。</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260702_001350.jpg?fit=300%2C200&#038;ssl=1" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://tranquilguides.com/night-room/">夜の茶室</a>
						<span class="p-blogCard__excerpt">日没から夜明けまで開く、小さな夜の部屋。何かを話さなくても、ただ席につくだけで、その夜を誰かと静かに共有できます。</span>					</div>
				</div>
			</div>
		</div>


<style data-wp-block-html="css">
.cl-copyright{
  margin:80px auto 24px;
  text-align:center;
  font-size:13px;
  letter-spacing:.08em;
  opacity:.55;
}

.cl-copyright a{
  color:inherit;
  text-decoration:none;
  transition:opacity .2s ease;
}

.cl-copyright a:hover{
  opacity:1;
}
</style>

<div class="cl-copyright">
  <a href="https://tranquilguides.com/">
Tranquilvæj
  </a>
</div>



<style data-wp-block-html="css">

/* 夜の茶室：表示領域全体をモノクロ */
html,
body,
#body_wrap,
#content,
.l-content,
.l-mainContent,
.l-mainContent__inner,
#main_content,
.post_content {
  filter: grayscale(1) !important;
}
</style>
]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/night-room-logs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1236</post-id>	</item>
		<item>
		<title>夜の茶室</title>
		<link>https://tranquilguides.com/night-room/</link>
					<comments>https://tranquilguides.com/night-room/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Wed, 01 Jul 2026 08:46:54 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[コーヒー]]></category>
		<category><![CDATA[ティータイム]]></category>
		<category><![CDATA[夜]]></category>
		<category><![CDATA[夜更かし]]></category>
		<category><![CDATA[居場所]]></category>
		<category><![CDATA[時間]]></category>
		<category><![CDATA[暖炉]]></category>
		<category><![CDATA[習慣]]></category>
		<category><![CDATA[部屋]]></category>
		<category><![CDATA[静けさ]]></category>
		<category><![CDATA[静寂]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1229</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260702_001350.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>日没から夜明けまで開く、小さな夜の部屋。何かを話さなくても、ただ席につくだけで、その夜を誰かと静かに共有できます。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/IMG_20260702_001350.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>	  
<div id="NightRoom" class="night-room">


<div id="NightClosed" class="night-closed">
	
  <p class="small">
    太陽のいない「あいだ」にのみ開きます。
  </p>

  <div class="night-wait">
    <p class="night-wait-label">本日の日没</p>
    <p class="night-wait-time">18:35</p>

    <p id="NightCountdownLabel" class="night-wait-label">開室まで</p>
<p
  id="NightCountdown"
  class="night-countdown"
  data-sunset-ts="1787564159">
  09:17:44</p>
  </div>
</div>
	
	
</div>

  <script>
console.log('NightRoom version: 2026-07-09-01');
	
    document.addEventListener('DOMContentLoaded', function () {
		
      const ajaxUrl = 'https://tranquilguides.com/wp-admin/admin-ajax.php';

      const openEl = document.getElementById('NightOpen');
      const closedEl = document.getElementById('NightClosed');
      const cupShelfEl = document.getElementById('CupShelf');
const btn = document.getElementById('TakeSeatBtn');
const btnText = document.getElementById('TakeSeatText');
const msg = document.getElementById('SeatMessage');

function isNightTime() {
  return false;
}

function todayKey() {
  const parts = new Intl.DateTimeFormat('ja-JP', {
    timeZone: 'Asia/Tokyo',
    year: 'numeric',
    month: '2-digit',
    day: '2-digit'
  }).formatToParts(new Date());

  const y = parts.find(p => p.type === 'year').value;
  const m = parts.find(p => p.type === 'month').value;
  const d = parts.find(p => p.type === 'day').value;

  return `${y}-${m}-${d}`;
}

function seededNumber(str) {
  let hash = 0;

  for (let i = 0; i < str.length; i++) {
    hash = (hash * 31 + str.charCodeAt(i)) >>> 0;
  }

  return hash / 4294967295;
}

function seededRange(str, min, max) {
  return min + seededNumber(str) * (max - min);
}
		
      function hasTakenSeatToday() {
        return localStorage.getItem('night_room_seat_' + todayKey()) === '1';
      }

      function markTakenSeatToday() {
        localStorage.setItem('night_room_seat_' + todayKey(), '1');
      }

      function loadCupCount() {
        fetch(ajaxUrl + '?action=night_room_get_cup_count')
          .then(res => res.json())
          .then(data => {
            renderCups(data.count || 0);
          });
      }
		
let currentCupCount = 0;

function syncCupCount() {
  fetch(ajaxUrl + '?action=night_room_get_cup_count' + '&ts=' + Date.now())
    .then(res => res.json())
    .then(data => {
      const newCount = data.count || 0;

      if (newCount > currentCupCount) {
        for (let i = currentCupCount + 1; i <= newCount; i++) {
          addCup(i);
        }
      }

      currentCupCount = newCount;
    });
}

function takeSeat() {
  if (hasTakenSeatToday()) {
    btn.disabled = true;
    btn.classList.add('is-leaving');
    btnText.textContent = '素敵な夜を';
    btn.classList.add('is-seated');
    msg.textContent = '';
    return;
  }

btn.disabled = true;

setTimeout(() => {
  btn.classList.add('is-leaving');
}, 700);

fetch(ajaxUrl, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: 'action=night_room_take_seat'
  })
    .then(res => res.json())
    .then(data => {
      markTakenSeatToday();
      msg.textContent = '';

      // 1. 「席につく」を消す
      btnText.classList.add('is-fading-out');

      setTimeout(() => {
        // 2. 何も書いていないボタン
        btnText.textContent = '';
        btnText.classList.remove('is-fading-out');

        setTimeout(() => {
          // 3. 「お席を整えています」を表示
          btnText.classList.add('is-fading-out');

          setTimeout(() => {
            btnText.textContent = 'お席を整えています...';
            btnText.classList.remove('is-fading-out');
            btn.classList.add('is-preparing');

            setTimeout(() => {
              // 4. 「お席を整えています」を消す
              btnText.classList.add('is-fading-out');

              setTimeout(() => {
                // 5. 空白のまま、カップを出す
                btnText.textContent = '';
                btn.classList.remove('is-preparing');
                btnText.classList.remove('is-fading-out');

                addCup(data.count);
				currentCupCount = data.count || currentCupCount;

                setTimeout(() => {
                  // 6. 最終文言を表示
                  btnText.classList.add('is-fading-out');

                  setTimeout(() => {
                    btnText.textContent = '素敵な夜を';
                    btnText.classList.remove('is-fading-out');
                    btn.classList.add('is-seated');
                  }, 1200);

                }, 2200);

              }, 1200);

            }, 2200);

          }, 1200);

        }, 800);

      }, 1200);
    });
}

function renderCups(count) {
  cupShelfEl.innerHTML = '';

  if (!count || count < 1) {
    const empty = document.createElement('div');
    empty.className = 'cup-empty';
    empty.textContent = 'お席は、まだ空いています。';
    cupShelfEl.appendChild(empty);
    return;
  }

  for (let i = 0; i < count; i++) {
    const cup = createCupElement(i, false);
    cupShelfEl.appendChild(cup);
  }
	
currentCupCount = count || 0;
	
}

function addCup(count) {
  const empty = cupShelfEl.querySelector('.cup-empty');

  if (empty) {
    empty.classList.add('is-fading-out');

    setTimeout(() => {
      empty.remove();
      showNewCup(count);
    }, 1000);

    return;
  }

  showNewCup(count);
}

function showNewCup(count) {
  const cup = createCupElement(count - 1, true);

  cupShelfEl.appendChild(cup);

  requestAnimationFrame(() => {
    cup.classList.add('is-visible');
  });
}

function createCupElement(index, animate) {
  const cup = document.createElement('span');

  cup.innerHTML = `
    <svg class="cup-icon" viewBox="0 0 64 48" aria-hidden="true">
      <ellipse cx="32" cy="12" rx="18" ry="6"></ellipse>
      <path d="M14 12 C16 34, 22 40, 32 40 C42 40, 48 34, 50 12"></path>
      <ellipse cx="32" cy="40" rx="9" ry="3"></ellipse>
    </svg>
  `;

const basePositions = [
  [-28, -6, -3],
  [-10,  4,  2],
  [ 18, -3, -1],
  [ 34,  7,  3],
  [ -2, -10,  1],
  [ 12,  12, -4],
  [-35,  9,  2],
  [ 30, -11, -2],
  [ -18, 15,  4],
  [ 0,   18, -1],
  [ 40,  15,  2],
  [-42, -14, -2],
];

const base = basePositions[index % basePositions.length];
const seed = todayKey() + '-' + index;

const changeType = seededNumber(seed + '-change');

let x = base[0];
let y = base[1];
let r = base[2];

if (changeType < 0.3) {
  // 30%：ほぼ同じ
  x += seededRange(seed + '-x-small', -3, 3);
  y += seededRange(seed + '-y-small', -3, 3);
  r += seededRange(seed + '-r-small', -1, 1);
} else if (changeType < 0.7) {
  // 40%：少し変わる
  x += seededRange(seed + '-x-mid', -12, 12);
  y += seededRange(seed + '-y-mid', -10, 10);
  r += seededRange(seed + '-r-mid', -3, 3);
} else {
  // 30%：大きめに変わる
  x += seededRange(seed + '-x-large', -28, 28);
  y += seededRange(seed + '-y-large', -18, 18);
  r += seededRange(seed + '-r-large', -6, 6);
}

cup.style.transform = `translate(${x}px, ${y}px) rotate(${r}deg)`;
	
  cup.setAttribute('aria-hidden', 'true');

  if (animate) {
    cup.classList.add('cup-new');
  }

  return cup;
}
	
function startNightCountdown() {
	
  const countdownEl = document.getElementById('NightCountdown');
  const labelEl = document.getElementById('NightCountdownLabel');
  const roomEl = document.getElementById('NightRoom');

  if (!countdownEl || !labelEl) return;

  const sunset = Number(countdownEl.dataset.sunsetTs) * 1000;
	
  let reloadStarted = false;

  function pad(num) {
    return String(num).padStart(2, '0');
  }

  function updateCountdown() {
    const now = Date.now();
    const diff = sunset - now;

if (diff <= 0) {
  countdownEl.textContent = '00:00:00';

  if (!reloadStarted) {
    reloadStarted = true;
    window.location.href = window.location.pathname + '?nr=' + Date.now();
  }

  return;
}
	  
	/**
    if (!hasTakenSeatToday()) {
      btn.disabled = false;
      btn.addEventListener('click', takeSeat);
    } else {
      btn.disabled = true;
      btnText.textContent = '素敵な夜を';
      btn.classList.add('is-leaving');
      btn.classList.add('is-seated');
      msg.textContent = '';
    }
  }

  return;
}
	 */
	  
    const totalSeconds = Math.floor(diff / 1000);
    const hours = Math.floor(totalSeconds / 3600);
    const minutes = Math.floor((totalSeconds % 3600) / 60);
    const seconds = totalSeconds % 60;

    countdownEl.textContent =
      pad(hours) + ':' + pad(minutes) + ':' + pad(seconds);

    if (totalSeconds <= 10) {
      labelEl.textContent = 'こんばんは';
    } else if (totalSeconds <= 60) {
      labelEl.textContent = 'まもなく開室します';
    } else {
      labelEl.textContent = '開室まで';
    }
  }

  updateCountdown();
  setInterval(updateCountdown, 1000);
}
	
function startMorningMessage() {
  const greeting = document.getElementById('Greeting');

  if (!greeting) return;
  if (!openEl) return;

  const sunrise = new Date(openEl.dataset.sunrise).getTime();
  
  const morningUntil = new Date(openEl.dataset.morningUntil).getTime();

  function updateMorningMessage() {
    const now = Date.now();

if (now >= sunrise) {
    greeting.classList.add('is-morning');
    greeting.textContent = 'おはようございます';

    if (!btn.classList.contains('is-hidden')) {
        btn.classList.add('is-hidden');
        cupShelfEl.classList.add('is-hidden');
        msg.textContent = '';

        setTimeout(() => {
            btn.hidden = true;
            cupShelfEl.hidden = true;
        }, 800);
    }

if (now >= morningUntil) {
    window.location.href =
        window.location.pathname + '?nr=' + Date.now();
    return;
}

    return;
}

    if (now >= sunrise - 3600 * 1000) {
      greeting.textContent = 'まもなく夜が明けます';
    } else {
      greeting.textContent = 'こんばんは';
    }
  }

  updateMorningMessage();
  setInterval(updateMorningMessage, 1000);
}

function startMorningGrace() {
  if (!openEl) return;

  const morningUntil = new Date(openEl.dataset.morningUntil).getTime();

  function updateMorningGrace() {

if (Date.now() >= morningUntil) {
  window.location.href = window.location.pathname + '?nr=' + Date.now();
  return;
}
  }

  updateMorningGrace();
  setInterval(updateMorningGrace, 1000);
}
		
if (isNightTime()) {
  if (openEl) {
    openEl.hidden = false;
  }

  if (closedEl) {
    closedEl.hidden = true;
  }
	
loadCupCount();
setInterval(syncCupCount, 20000);
startMorningMessage();

  if (hasTakenSeatToday()) {
    btn.disabled = true;
    btnText.textContent = '素敵な夜を';
    btn.classList.add('is-leaving');
    btn.classList.add('is-seated');
    msg.textContent = '';
  }

  btn.addEventListener('click', takeSeat);

} else if (false) {
  if (openEl) {
    openEl.hidden = false;
  }

  if (closedEl) {
    closedEl.hidden = true;
  }

const morningGreeting = document.getElementById('Greeting');
morningGreeting.classList.add('is-morning');
morningGreeting.textContent = 'おはようございます';

btn.classList.add('is-hidden');
cupShelfEl.classList.add('is-hidden');
msg.textContent = '';

setTimeout(() => {
  btn.hidden = true;
  cupShelfEl.hidden = true;
}, 800);

startMorningGrace();

} else {
  if (openEl) {
    openEl.hidden = true;
  }

  if (closedEl) {
    closedEl.hidden = false;
    startNightCountdown();
  }
}
    });
  </script>
			  
			  
  



<style data-wp-block-html="css">
.night-room {
      min-height: 70vh;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      text-align: center;
      padding: 48px 20px;
      background: #f7f6f3;
      color: #111;
      filter: grayscale(1);
      font-family: inherit;
      transition: opacity 1.2s ease, filter 1.2s ease;
    }

    .night-room h1 {
      font-size: 1.8rem;
      font-weight: 400;
      letter-spacing: 0.08em;
      margin-bottom: 32px;
    }

    .small {
      font-size: 0.8rem;
      opacity: 0.55;
      margin-bottom: 40px;
    }

    .status {
      font-size: 1rem;
      margin-bottom: 32px;
    }

#TakeSeatBtn {
  appearance: none !important;
  -webkit-appearance: none !important;

  position: relative;
  min-width: 260px !important;
  height: 44px !important;
  padding: 0 24px !important;

  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;

  border: none !important;
  background: transparent !important;
  background-color: transparent !important;
  box-shadow: none !important;

  color: inherit !important;
  border-radius: 999px !important;
  font-size: 0.95rem !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  text-decoration: none !important;

  cursor: pointer;
}

#TakeSeatBtn::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 1px solid currentColor;
  border-radius: 999px;
  opacity: 1;
  transition: opacity 3.8s ease;
  pointer-events: none;
}

#TakeSeatBtn.is-leaving::before,
#TakeSeatBtn.is-seated::before {
  opacity: 0;
}

#TakeSeatBtn:disabled {
  cursor: default;
}

.btn-text {
  position: relative;
  z-index: 1;
  opacity: 1;
  transition: opacity 1.2s ease;
}

.btn-text.is-fading-out {
  opacity: 0;
}

#TakeSeatBtn.is-preparing .btn-text {
  opacity: 0.55;
}

#TakeSeatBtn.is-seated .btn-text {
  opacity: 0.62;
}
			  
.message {
      margin-top: 24px;
      font-size: 0.85rem;
      opacity: 0.65;
    }
	
.greeting {
  margin-bottom: 36px;
  font-size: 0.85rem;
  opacity: 0;
  pointer-events: none;
  animation: Greeting 8s ease-in-out forwards;
}

@keyframes Greeting {

  /* 最初は見えない */
  0% {
    opacity: 0;
  }

  /* ゆっくり現れる・5秒地点 */
  62.5% {
    opacity: 0.6;
  }

  /* 少し滞在・7秒地点 */
  87.5% {
    opacity: 0.6;
  }

  /* ゆっくり消える */
  100% {
    opacity: 0;
  }

}
			  
.cup-shelf {
  min-height: 72px;
  margin: 28px 0 34px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.cup-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
  max-width: 260px;
  font-size: 1.45rem;
  line-height: 1.8;
  opacity: 0.72;
}

.cup-empty {
  font-size: 0.8rem;
  opacity: 0.45;
  transition: opacity 1s ease;
}

.cup-row span {
  display: inline-flex;
  width: 28px;
  height: 22px;
  align-items: center;
  justify-content: center;
}

.cup-icon {
  width: 28px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: 0.72;
}
			  	  
.cup-new {
  opacity: 0;
  transition: opacity 2s ease;
}

.cup-new.is-visible {
  opacity: 1;
}	
			  
.cup-empty.is-fading-out {
  opacity: 0;
}

.night-wait {
  text-align: center;
  margin-top: 2.5rem;
  letter-spacing: 0.08em;
}

.night-wait-label {
  font-size: 0.75rem;
  opacity: 0.55;
  margin: 1.5rem 0 0.4rem;
}

.night-wait-time,
.night-countdown {
  font-size: clamp(1.8rem, 6vw, 3.8rem);
  line-height: 1;
  margin: 0;
  font-weight: 300;
}

.night-room.is-opening {
  opacity: 0;
  filter: blur(6px);
}

.cup-shelf,
#TakeSeatBtn {
    transition: opacity .8s ease;
}

.cup-shelf.is-hidden,
#TakeSeatBtn.is-hidden{
    opacity:0;
    pointer-events:none;
}

.greeting.is-morning {
  animation: none !important;
  opacity: 0.62 !important;
}

</style>



<style data-wp-block-html="css">
.cl-copyright{
  margin:80px auto 24px;
  text-align:center;
  font-size:13px;
  letter-spacing:.08em;
  opacity:.55;
}

.cl-copyright a{
  color:inherit;
  text-decoration:none;
  transition:opacity .2s ease;
}

.cl-copyright a:hover{
  opacity:1;
}
</style>

<div class="cl-copyright">
  <a href="https://tranquilguides.com/">
Tranquilvæj
  </a>
</div>



<style data-wp-block-html="css">
/* 診断ページ専用：外側UI削除 */
#header,
.l-header,
.l-fixHeader,
#fix_header,
#sp_menu,
.p-spMenu,
.p-spMenu__inner,
.p-spMenu__body,
.p-spMenu__overlay,
#breadcrumb,
.c-postTitle,
.p-articleMetas,
.p-postTax,
.p-articleFoot,
.l-articleBottom,
.l-contentBottom,
.w-beforeFooter,
.l-footerWidgets,
.l-footer {
  display: none !important;
}

/* 余白リセット */
:root {
  --swl-headerH: 0px !important;
  --swl-fix_headerH: 0px !important;
  --swl-offset_y: 0px !important;
}

html,
body,
#body_wrap,
#content,
.l-content,
.l-mainContent,
.l-mainContent__inner,
#main_content {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

/* 夜の茶室：表示領域全体をモノクロ */
html,
body,
#body_wrap,
#content,
.l-content,
.l-mainContent,
.l-mainContent__inner,
#main_content,
.post_content {
  filter: grayscale(1) !important;
}

.p-fixBtnWrap {
  border-radius: 999px !important;
  overflow: hidden !important;
  border: 0 !important;

  background:
    radial-gradient(
      circle at 50% 50%,
      rgba(255,255,255,.00) 0%,
      rgba(255,255,255,.02) 58%,
      rgba(255,255,255,.12) 100%
    ) !important;

  backdrop-filter: blur(.3px) saturate(135%) contrast(108%) brightness(106%);
  -webkit-backdrop-filter: blur(.3px) saturate(135%) contrast(108%) brightness(106%);

  box-shadow:
    inset 2px 2px 2px rgba(255,255,255,.55),
    inset 0 0 14px rgba(255,255,255,.28),
    0 3px 8px rgba(0,0,0,.03) !important;
}

.p-fixBtnWrap::before {
  content: "";
  position: absolute;
  inset: 1px;
  border-radius: 999px;
  pointer-events: none;
  background:
    linear-gradient(
      145deg,
      rgba(255,255,255,.75) 0%,
      rgba(255,255,255,.28) 18%,
      rgba(255,255,255,0) 42%
    );
  mix-blend-mode: screen;
  opacity: .65;
}

.p-fixBtnWrap:hover {
  background: #2f4f4f !important;
  box-shadow: none !important;
}

.c-fixBtn__icon {
  color: #2f2f2f !important;
  text-shadow: none !important;
  -webkit-text-stroke: 0 !important;
}

.p-fixBtnWrap:hover .c-fixBtn__icon {
  color: #fff !important;
}

.p-fixBtnWrap a,
.p-fixBtnWrap button,
.p-fixBtnWrap [class*="fixBtn"],
.p-fixBtnWrap [class*="icon"] {
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}

.p-fixBtnWrap [class*="fixBtn"],
.p-fixBtnWrap [class*="icon"],
.p-fixBtnWrap a,
.p-fixBtnWrap button {
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}

.p-fixBtnWrap {
  width: 52px !important;
  height: 52px !important;
  position: fixed !important;
  display: block !important;

  transition:
    width .22s ease,
    background-color .18s ease,
    box-shadow .18s ease !important;
}

.p-fixBtnWrap .c-fixBtn__icon {
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  z-index: 2;
}

.p-fixBtnWrap::after {
  content: "Page top";
  position: absolute;
  top: 50%;
  left: 54px;
  transform: translateY(-55%);

  z-index: 2;
  opacity: 0;
  max-width: 0;
  overflow: hidden;
  white-space: nowrap;

  height: 24px;
  line-height: 24px;

  font-size: 14px;
  letter-spacing: .03em;
  color: #fff;

  transition:
    opacity .15s ease,
    max-width .22s ease;
}

.p-fixBtnWrap:hover {
  width: 132px !important;
}

.p-fixBtnWrap:hover .c-fixBtn__icon {
  left: 28px !important;
}

.p-fixBtnWrap:hover::after {
  opacity: 1;
  max-width: 80px;
}

#breadcrumb {
  display: none !important;
}
</style>

<script data-wp-block-html="js">
document.addEventListener("DOMContentLoaded", () => {
  [
    "#header",
    ".l-header",
    ".l-fixHeader",
    "#fix_header",
    "#sp_menu",
    ".p-spMenu",
    "#breadcrumb",
    ".c-postTitle",
    ".p-articleMetas",
    ".p-postTax",
    ".p-articleFoot",
    ".l-articleBottom",
    ".l-contentBottom",
    ".w-beforeFooter",
    ".l-footerWidgets",
    ".l-footer"
  ].forEach(selector => {
    document.querySelectorAll(selector).forEach(el => el.remove());
  });
});
</script>
]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/night-room/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1229</post-id>	</item>
		<item>
		<title>一時避難所｜いまをやり過ごすための小さな公共施設</title>
		<link>https://tranquilguides.com/temporary-shelter/</link>
					<comments>https://tranquilguides.com/temporary-shelter/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Thu, 25 Jun 2026 22:26:24 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[HSP]]></category>
		<category><![CDATA[セルフケア]]></category>
		<category><![CDATA[メンタルケア]]></category>
		<category><![CDATA[一時避難所]]></category>
		<category><![CDATA[休息]]></category>
		<category><![CDATA[低気圧]]></category>
		<category><![CDATA[回復]]></category>
		<category><![CDATA[安心]]></category>
		<category><![CDATA[居場所]]></category>
		<category><![CDATA[深夜]]></category>
		<category><![CDATA[道具]]></category>
		<category><![CDATA[雨]]></category>
		<category><![CDATA[静けさ]]></category>
		<category><![CDATA[頭痛]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1174</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/06/IMG_20260626_072229.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>何もしたくない日や、少しだけ休みたい日に。暖炉や給水所、セーフルームなどを歩きながら、いまをやり過ごすための小さな避難所です。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/06/IMG_20260626_072229.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>
<style data-wp-block-html="css">
.shelter-wrap {
  --shelter-text: #3f3a34;
  --shelter-muted: #8d8171;
  --shelter-border: rgba(80,70,55,.14);
  --shelter-surface: rgba(255,255,255,.58);
  --shelter-surface-hover: rgba(255,255,255,.82);
  --shelter-radius: 32px;
  --shelter-shadow: 0 18px 50px rgba(70,55,35,.08);
width: 100%;
max-width: 100%;
margin: 24px auto;
padding: 0 10px;
color: var(--shelter-text);
font-family: "Hiragino Mincho ProN", "Yu Mincho", serif;
}
/* 共通カード */
.shelter-home,
.shelter-room {
position: relative;
width: 100%;
box-sizing: border-box;
min-height: 520px;
padding: 56px 28px 86px;
border-radius: var(--shelter-radius);
background:
radial-gradient(circle at top, rgba(255,255,255,.86),
rgba(244,239,230,.76)),
linear-gradient(180deg, #f7f2e8, #ebe3d6);
border: 1px solid rgba(80,70,55,.12);
box-shadow: var(--shelter-shadow);
text-align: center;
box-sizing: border-box;
}
.shelter-kicker {
margin: 0 0 22px;
font-size: 12px;
letter-spacing: .12em;
color: var(--shelter-muted);
}
.shelter-home h1{
margin: 0 0 28px;
font-size: clamp(28px, 6vw, 42px);
font-weight: 400;
letter-spacing: .08em;
}
.shelter-lead,
.shelter-room p {
margin: 0 auto 34px;
max-width: 420px;
font-size: 16px;
line-height: 2.1;
}
.shelter-note,
.water-msg,
.lost-msg,
.small-msg {
font-size: 13px;
color: var(--shelter-muted);
}
.small-msg {
margin-top: -16px;
line-height: 1.9;
}
/* ボタン */
.shelter-buttons {
display: grid;
gap: 14px;
max-width: 320px;
margin: 0 auto 28px;
}
.shelter-buttons button,
.shelter-room button {
appearance: none;
border: 1px solid rgba(80,70,55,.16);
border-radius: 999px;
background: var(--shelter-surface);
color: #4a4238;
padding: 14px 22px;
font-size: 15px;
font-family: inherit;
cursor: pointer;
}
.shelter-buttons button:hover,
.shelter-room button:hover {
background: var(--shelter-surface-hover);
}
.backBtn {
position: absolute;
left: 28px;
bottom: 28px;
padding: 10px 18px !important;
background: rgba(255,255,255,.38) !important;
color: #8d8171 !important;
font-size: 13px !important;
}
/* ==========================
Fireplace
========================== */
.tg-fireplace {
margin: 28px auto;
text-align: center;
}
.tg-fire {
position: relative;
width: 92px;
height: 110px;
margin: 0 auto 22px;
}
.tg-fire span {
position: absolute;
left: 50%;
bottom: 0;
border-radius: 50% 50% 45% 45%;
transform-origin: bottom center;
animation: tgFireFlicker 2.8s ease-in-out infinite;
}
/* 外側の炎 */
.tg-fire span:nth-child(1) {
width: 48px;
height: 84px;
margin-left: -24px;
background: radial-gradient(
ellipse at 50% 75%,
rgba(255, 225, 160, .95) 0%,
rgba(242, 143, 55, .92) 48%,
rgba(126, 49, 20, .78) 100%
);
}
/* 中央の炎 */
.tg-fire span:nth-child(2) {
width: 36px;
height: 66px;
margin-left: -18px;
background: radial-gradient(
ellipse at 50% 80%,
rgba(255, 240, 200, .96) 0%,
rgba(255, 186, 80, .82) 65%,
rgba(255, 120, 40, .28) 100%
);
animation-delay: .5s;
}
/* 芯 */
.tg-fire span:nth-child(3) {
width: 20px;
height: 42px;
margin-left: -10px;
background: rgba(255,250,235,.95);
filter: blur(.5px);
animation-delay: 1.1s;
}
.tg-fire.is-strong span:nth-child(1) {
animation-duration: 1.8s;
transform: scale(1.08, 1.14);
}
.tg-fire.is-strong span:nth-child(2) {
animation-duration: 1.5s;
opacity: .86;
}
.tg-fire.is-strong span:nth-child(3) {
animation-duration: 1.3s;
opacity: 1;
}
.tg-spark {
position: absolute;
left: 50%;
bottom: 36px;
width: 4px;
height: 4px;
border-radius: 50%;
background: rgba(255, 205, 120, .9);
pointer-events: none;
opacity: 0;
animation: tgSparkFloat 2.8s ease-out forwards;
}
.tg-ash {
position: absolute;
left: 50%;
bottom: 42px;
width: 3px;
height: 3px;
border-radius: 50%;
background: rgba(90, 78, 68, .45);
pointer-events: none;
opacity: 0;
animation: tgAshFall 3.8s ease-in forwards;
}
@keyframes tgAshFall {
0% {
transform: translate(-50%, 0) scale(.8);
opacity: 0;
}
20% {
opacity: .45;
}
100% {
transform: translate(calc(-50% + var(--ash-x)), 48px) scale(.45);
opacity: 0;
}
}
@keyframes tgSparkFloat {
0% {
transform: translate(-50%, 0) scale(.7);
opacity: 0;
}
18% {
opacity: .9;
}
100% {
transform: translate(calc(-50% + var(--spark-x)), -72px) scale(.2);
opacity: 0;
}
}
@keyframes tgFireFlicker {
0%{
transform:translateY(0) scale(.96,1) rotate(-2deg);
opacity:.72;
}
20%{
transform:translateY(-2px) scale(1.02,1.08) rotate(2deg);
opacity:.95;
}
45%{
transform:translateY(1px) scale(.94,.94) rotate(-1deg);
opacity:.78;
}
70%{
transform:translateY(-1px) scale(1.04,1.12) rotate(3deg);
opacity:1;
}
100%{
transform:translateY(0) scale(.96,1) rotate(-2deg);
opacity:.72;
}
}
#roomFire.is-warm-glow {
background-color: rgba(255, 190, 120, .055);
}
.tg-fireplace{
display:flex;
flex-direction:column;
align-items:center;
gap:14px;
margin:28px auto;
}
#roomFire .tg-sound-btn{
display:flex;
align-items:center;
justify-content:center;
width:40px;
height:40px;
padding:0;
border:1px solid rgba(80,62,48,.18);
border-radius:50%;
background:rgba(255,255,255,.25);
color:#6b5b4e;
transition:.3s;
}
#roomFire .tg-sound-btn:hover{
background:rgba(255,255,255,.55);
}
#roomFire .tg-sound-btn svg{
width:18px;
height:18px;
}
#roomFire .tg-sound-btn.is-on{
background:rgba(255,220,170,.18);
color:#8b5b28;
}
.tg-ember {
position: absolute;
left: 50%;
bottom: 2px;
width: 58px;
height: 14px;
transform: translateX(-50%);
border-radius: 999px;
background: radial-gradient(
ellipse at center,
rgba(210, 62, 22, .62) 0%,
rgba(150, 44, 22, .34) 48%,
rgba(90, 36, 22, 0) 78%
);
filter: blur(3px);
opacity: .62;
animation: tgEmberGlow 5.8s ease-in-out infinite;
}
@keyframes tgEmberGlow {
0%, 100% {
opacity: .38;
transform: translateX(-50%) scale(.92, .86);
}
45% {
opacity: .86;
transform: translateX(-50%) scale(1.08, 1);
}
72% {
opacity: .52;
transform: translateX(-50%) scale(.98, .92);
}
}
/* タイトル */
#roomFire .room-title{
margin-bottom:16px;
font-size:.92rem;
letter-spacing:.16em;
color:#7a6d63;
opacity:.65;
}
/* 暖炉メッセージ */
.tg-fire-text{
min-height:2.6em;
max-width:28em;
margin:0 auto;
line-height:1.9;
color:#4b4037;
opacity:0;
transition:opacity 1.8s ease;
}
.tg-fire-text.is-visible{
opacity:1;
}
/* ごゆっくり */
#roomFire .small-msg {
font-size: 11px;
color: rgba(141, 129, 113, .75);
letter-spacing: .08em;
margin-top: -10px;
}
/* セーフルーム：呼吸 */
.safe-icon {
position: relative;
width: 90px;
height: 90px;
margin: 0 auto 28px;
}
.safe-icon::before {
content: "";
position: absolute;
left: 50%;
top: 50%;
width: 70px;
height: 70px;
transform: translate(-50%, -50%);
border-radius: 50%;
background: radial-gradient(
circle,
rgba(255,255,255,.72) 0%,
rgba(245,243,236,.42) 45%,
rgba(245,243,236,0) 80%
);
filter: blur(16px);
animation: safeAura 5.5s ease-in-out infinite;
}
.safe-icon::after {
content: "";
position: absolute;
left: 50%;
top: 50%;
width: 18px;
height: 18px;
transform: translate(-50%, -50%);
border-radius: 50%;
border: 1.5px solid rgba(165,160,150,.55);
animation: safePulse 5.5s ease-in-out infinite;
}
@keyframes safeAura {
0%, 100% {
transform: translate(-50%, -50%) scale(.92);
opacity: .20;
}
50% {
transform: translate(-50%, -50%) scale(1.16);
opacity: .65;
}
}
@keyframes safePulse {
0% {
width: 18px;
height: 18px;
opacity: .65;
}
65% {
width: 54px;
height: 54px;
opacity: .12;
}
100% {
width: 18px;
height: 18px;
opacity: .65;
}
}
.safe-fade-msg {
opacity: 0;
transform: translateY(8px);
transition: opacity 2.6s ease, transform 2.6s ease;
font-size: 14px !important;
color: var(--shelter-muted);
}
.safe-fade-msg.is-visible {
opacity: 1;
transform: translateY(0);
}
/* 給水所 */
.water-drop {
position: relative;
width: 72px;
height: 92px;
margin: 0 auto 24px;
}
.water-drop span {
position: absolute;
left: 50%;
bottom: 8px;
width: 34px;
height: 48px;
border-radius: 58%;
background: rgba(92, 170, 220, .42);
transform: translateX(-50%) rotate(45deg);
transform-origin: center;
animation: waterDropFloat 3.2s ease-in-out infinite;
box-shadow: 0 0 28px rgba(120, 190, 230, .16);
}
.water-drop span:nth-child(2) {
width: 44px;
height: 60px;
background: rgba(132, 198, 232, .28);
animation-delay: .45s;
}
.water-drop span:nth-child(3) {
width: 24px;
height: 34px;
background: rgba(210, 238, 250, .58);
animation-delay: .9s;
}
@keyframes waterDropFloat {
0%, 100% {
transform: translateX(-50%) translateY(0) rotate(45deg) scale(1);
opacity: .68;
}
50% {
transform: translateX(-50%) translateY(-8px) rotate(45deg) scale(1.08);
opacity: .95;
}
}
.water-msg {
min-height: 2.2em;
margin-bottom: 22px !important;
opacity: 0;
visibility: hidden;
transform: translateY(4px);
transition: opacity 1.2s ease, transform 1.2s ease, visibility 1.2s
ease;
}
.water-msg.is-visible {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
/* 深夜待合室：月明かり */
.night-icon {
position: relative;
display: inline-flex;
justify-content: center;
align-items: center;
width: 90px;
height: 90px;
margin: 0 auto 24px;
font-size: 0;
}
.night-icon::before {
content: "";
position: absolute;
width: 120px;
height: 120px;
border-radius: 50%;
background: radial-gradient(
circle,
rgba(255,240,190,.65) 0%,
rgba(255,240,190,.28) 38%,
rgba(255,240,190,.10) 58%,
rgba(255,240,190,0) 80%
);
filter: blur(20px);
animation: moonGlow 7s ease-in-out infinite;
}
.night-icon::after {
content: "";
position: relative;
z-index: 2;
font-size: 46px;
animation: moonBreath 5.5s ease-in-out infinite;
}
@keyframes moonGlow {
0%, 100% {
transform: scale(.9);
opacity: .25;
}
50% {
transform: scale(1.18);
opacity: .72;
}
}
@keyframes moonBreath {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-2px);
}
}
.night-room {
animation: moonRoomGlow 7s ease-in-out infinite;
}
@keyframes moonRoomGlow {
0%, 100% {
box-shadow:
0 18px 50px rgba(70,55,35,.08),
0 0 30px rgba(255,240,190,.03);
}
50% {
box-shadow:
0 18px 50px rgba(70,55,35,.08),
0 0 80px rgba(255,240,190,.12);
}
}
/* 落とし物センター */
.lost-icon {
position: relative;
width: 90px;
height: 90px;
margin: 0 auto 24px;
}
.lost-post {
position: absolute;
left: 50%;
bottom: 14px;
width: 42px;
height: 46px;
border-radius: 10px 10px 8px 8px;
background: rgba(190, 78, 68, .72);
transform: translateX(-50%);
box-shadow: 0 10px 26px rgba(120,70,55,.10);
}
.lost-privacy-note{
max-width:360px;
margin:-6px auto 22px;
font-size:10px!important;
line-height:2;
letter-spacing:.03em;
color:rgba(80,70,55,.50);
}
.lost-post::before {
content: "";
position: absolute;
left: 9px;
top: 10px;
width: 24px;
height: 12px;
border-radius: 3px;
background: rgba(255,245,225,.72);
}
.lost-post::after {
content: "";
position: absolute;
left: 15px;
bottom: -18px;
width: 12px;
height: 20px;
border-radius: 4px;
background: rgba(150,95,80,.38);
}
.lost-letter {
position: absolute;
left: 50%;
top: 8px;
width: 30px;
height: 20px;
border-radius: 4px;
background: rgba(255,248,232,.86);
border: 1px solid rgba(120,90,70,.18);
transform: translateX(-50%);
animation: letterFloat 4.8s ease-in-out infinite;
}
.lost-letter::before {
content: "";
position: absolute;
left: 5px;
top: 5px;
width: 18px;
height: 9px;
border-left: 1px solid rgba(120,90,70,.24);
border-bottom: 1px solid rgba(120,90,70,.24);
transform: rotate(-45deg);
}
@keyframes letterFloat {
0%, 100% {
transform: translateX(-50%) translateY(0) rotate(-2deg);
opacity: .78;
}
50% {
transform: translateX(-50%) translateY(8px) rotate(2deg);
opacity: 1;
}
}
.lost-input {
display: block;
width: min(360px, 100%);
margin: -10px auto 22px;
padding: 16px 18px;
border-radius: 20px;
border: 1px solid rgba(80,70,55,.14);
background: rgba(255,255,255,.48);
color: #4a4238;
font-family: inherit;
font-size: 14px;
line-height: 1.8;
box-sizing: border-box;
resize: vertical;
overflow: auto;
min-height: 250px;
max-height: 70vh;
}
.lost-input::placeholder {
color: rgba(80,70,55,.38);
}
.lost-input:focus {
outline: none;
background: rgba(255,255,255,.72);
border-color: rgba(80,70,55,.24);
}
.lost-receipt {
min-height: 5.4em;
margin-top: 20px;
opacity: 0;
transform: translateY(6px);
transition: opacity 1.4s ease, transform 1.4s ease;
}
.lost-receipt.is-visible {
opacity: 1;
transform: translateY(0);
}
.lost-receipt.is-fading {
opacity: 0;
transform: translateY(-4px);
}
.lost-item {
margin-bottom: 6px !important;
font-size: 15px !important;
color: #5b5045;
}
.lost-msg {
font-size: 12px !important;
line-height: 1.8;
color: var(--shelter-muted);
margin-bottom: 5px !important;
}
.lost-hp {
display: none !important;
}
/* 東屋 */
.azumaya-icon {
position: relative;
display: inline-flex;
justify-content: center;
align-items: center;
width: 90px;
height: 90px;
margin: 0 auto 24px;
font-size: 0;
}
.azumaya-icon::before {
content: "";
position: relative;
z-index: 2;
font-size: 42px;
animation: leafFloat 6.5s ease-in-out infinite;
}
.azumaya-icon::after {
content: "";
position: absolute;
width: 90px;
height: 90px;
border-radius: 50%;
background: radial-gradient(
circle,
rgba(175,205,150,.28) 0%,
rgba(175,205,150,.10) 45%,
rgba(175,205,150,0) 80%
);
filter: blur(16px);
animation: leafGlow 6.5s ease-in-out infinite;
}
@keyframes leafFloat {
0%, 100% {
transform: translateX(0) translateY(0) rotate(-6deg);
}
25% {
transform: translateX(3px) translateY(-2px) rotate(-2deg);
}
50% {
transform: translateX(7px) translateY(-5px) rotate(5deg);
}
75% {
transform: translateX(2px) translateY(-1px) rotate(1deg);
}
}
@keyframes leafGlow {
0%, 100% {
transform: scale(.92);
opacity: .18;
}
50% {
transform: scale(1.15);
opacity: .45;
}
}
.azumaya-fade-msg {
opacity: 0;
transform: translateY(8px);
transition: opacity 2.8s ease, transform 2.8s ease;
font-size: 16px !important;
color: #5b5045;
}
.azumaya-fade-msg.is-visible {
opacity: 1;
transform: translateY(0);
}
/* iPhone */
@media (max-width: 600px) {
.shelter-wrap {
max-width:100%;
margin: 16px auto;
padding:0 6px;
}
.shelter-home,
.shelter-room {
min-height: 500px;
padding: 40px 16px 72px;
border-radius: 20px;
}
.backBtn {
left: 20px;
bottom: 20px;
}
}


.shelter-wrap [hidden] {
  display: none !important;
}

.shelter-wrap *,
.shelter-wrap *::before,
.shelter-wrap *::after {
  box-sizing: border-box;
}

.shelter-wrap button {
  transition:
    background-color .22s ease,
    border-color .22s ease,
    color .22s ease,
    opacity .22s ease,
    transform .22s ease;
}

.shelter-wrap button:active {
  transform: translateY(1px);
}

.shelter-wrap button:focus-visible,
.shelter-wrap textarea:focus-visible {
  outline: 2px solid rgba(106,125,137,.55);
  outline-offset: 3px;
}

.shelter-wrap button:disabled {
  cursor: wait;
  opacity: .55;
}

.shelter-room[aria-hidden="true"],
.shelter-home[aria-hidden="true"] {
  display: none !important;
}

.shelter-status {
  min-height: 1.8em;
}

@media (prefers-reduced-motion: reduce) {
  .shelter-wrap *,
  .shelter-wrap *::before,
  .shelter-wrap *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .001ms !important;
  }
}

@media (max-width: 600px) {
  .lost-input {
    min-height: 210px;
  }
}

</style>

<script data-wp-block-html="js">
(() => {
  "use strict";

  const ROOT_ID = "shelterHome";

  function initShelter() {
    const home = document.getElementById(ROOT_ID);
    const wrap = home?.closest(".shelter-wrap");

    if (!home || !wrap || wrap.dataset.initialized === "true") {
      return;
    }

    wrap.dataset.initialized = "true";

    const rooms = {
      fire: document.getElementById("roomFire"),
      safe: document.getElementById("roomSafe"),
      water: document.getElementById("roomWater"),
      night: document.getElementById("roomNight"),
      lost: document.getElementById("roomLost"),
      azumaya: document.getElementById("roomAzumaya")
    };

    if (Object.values(rooms).some((room) => !room)) {
      console.warn("[一時避難所] 必要な部屋要素が見つかりません。");
      return;
    }

    const state = {
      currentRoom: "home",
      safeTimer: null,
      azumayaTimer: null,
      fireTimers: new Set(),
      fireRunning: false,
      fireEnteredAt: 0,
      lastFireLine: "",
      waterCount: 0,
      lastWaterMessage: "",
      lostTimer: null
    };

    const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;

    const scrollTop = () => {
      window.scrollTo({
        top: 0,
        behavior: prefersReducedMotion ? "auto" : "smooth"
      });
    };

    const setTimer = (callback, delay, group = "general") => {
      const id = window.setTimeout(() => {
        if (group === "fire") {
          state.fireTimers.delete(id);
        }
        callback();
      }, delay);

      if (group === "fire") {
        state.fireTimers.add(id);
      }

      return id;
    };

    const clearTimer = (id) => {
      if (id) {
        window.clearTimeout(id);
      }
    };

    const clearFireTimers = () => {
      state.fireTimers.forEach((id) => window.clearTimeout(id));
      state.fireTimers.clear();
      state.fireRunning = false;
    };

    const setVisible = (element, visible) => {
      element.hidden = !visible;
      element.setAttribute("aria-hidden", visible ? "false" : "true");
    };

    const hideAllRooms = () => {
      Object.values(rooms).forEach((room) => setVisible(room, false));
    };

    const stopFireAudio = () => {
      fireAudio.pause();
      fireAudio.currentTime = 0;
      updateSoundButton(false);
    };

    const leaveCurrentRoom = () => {
      clearTimer(state.safeTimer);
      clearTimer(state.azumayaTimer);
      state.safeTimer = null;
      state.azumayaTimer = null;

      document.getElementById("safeFadeMsg")?.classList.remove("is-visible");
      document.getElementById("azumayaFadeMsg")?.classList.remove("is-visible");

      if (state.currentRoom === "fire") {
        clearFireTimers();
        stopFireAudio();
      }
    };

    const openRoom = (roomName) => {
      if (!rooms[roomName]) return;

      leaveCurrentRoom();
      setVisible(home, false);
      hideAllRooms();
      setVisible(rooms[roomName], true);
      state.currentRoom = roomName;
      scrollTop();

      if (roomName === "fire") {
        startFireExperience();
      }

      if (roomName === "safe") {
        const message = document.getElementById("safeFadeMsg");
        message?.classList.remove("is-visible");
        state.safeTimer = setTimer(() => message?.classList.add("is-visible"), 2600);
      }

      if (roomName === "azumaya") {
        const message = document.getElementById("azumayaFadeMsg");
        message?.classList.remove("is-visible");
        state.azumayaTimer = setTimer(() => message?.classList.add("is-visible"), 2200);
      }
    };

    const returnHome = () => {
      leaveCurrentRoom();
      hideAllRooms();
      setVisible(home, true);
      state.currentRoom = "home";
      scrollTop();
    };

    wrap.querySelectorAll("[data-room]").forEach((button) => {
      button.addEventListener("click", () => openRoom(button.dataset.room));
    });

    wrap.querySelectorAll(".backBtn").forEach((button) => {
      button.addEventListener("click", returnHome);
    });

    /* -----------------------------------------
     * 暖炉
     * -------------------------------------- */

    const fire = wrap.querySelector(".tg-fire");
    const fireText = document.getElementById("tgFireText");
    const roomFire = rooms.fire;
    const fireSoundBtn = document.getElementById("fireSoundBtn");

    const earlyLines = [
      "パチッ",
      "小さく火の粉が舞いました。",
      "薪が静かに鳴りました。",
      "灰が少し落ちました。",
      "炎が少し高くなりました。",
      "オレンジ色が少し濃くなりました。",
      "炎の形が変わりました。",
      "木の香りがする気がしました。",
      "火がゆっくり揺れています。",
      "暖かい空気が少し流れました。"
    ];

    const middleLines = [
      "炎はまだ静かに燃えています。",
      "部屋は変わらず静かです。",
      "火は急ぎません。",
      "灰が少し積もりました。",
      "また、小さく音がしました。",
      "炎は同じようで、少し違います。",
      "赤い熾火が見えました。",
      "光が壁に揺れています。",
      "部屋の空気が少し柔らかく感じられます。"
    ];

    const lateLines = [
      "火はまだここにあります。",
      "少しだけ時間が過ぎました。",
      "外のことは分かりません。",
      "炎は変わらず燃えています。",
      "ここでは時計はあまり役に立ちません。"
    ];

    const iconOff = `
      <svg aria-hidden="true" width="18" height="18" fill="none" stroke="currentColor"
        stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"
        viewBox="0 0 24 24">
        <polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon>
        <line x1="23" y1="9" x2="17" y2="15"></line>
        <line x1="17" y1="9" x2="23" y2="15"></line>
      </svg>`;

    const iconOn = `
      <svg aria-hidden="true" width="18" height="18" fill="none" stroke="currentColor"
        stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"
        viewBox="0 0 24 24">
        <polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon>
        <path d="M15.5 8.5a5 5 0 0 1 0 7"></path>
        <path d="M18.5 5.5a9 9 0 0 1 0 13"></path>
      </svg>`;

    const fireAudio = new Audio(
      "https://tranquilguides.com/wp-content/uploads/2026/06/freesound_community-aachen_burning-fireplace-crackling-fire-soundswav-14561.mp3"
    );

    fireAudio.loop = true;
    fireAudio.preload = "none";
    fireAudio.volume = 0.15;

    const updateSoundButton = (isOn) => {
      if (!fireSoundBtn) return;

      fireSoundBtn.innerHTML = isOn ? iconOn : iconOff;
      fireSoundBtn.classList.toggle("is-on", isOn);
      fireSoundBtn.setAttribute("aria-pressed", isOn ? "true" : "false");
      fireSoundBtn.setAttribute("aria-label", isOn ? "暖炉の音を消す" : "暖炉の音をつける");
    };

    updateSoundButton(false);

    fireSoundBtn?.addEventListener("click", async () => {
      if (fireAudio.paused) {
        try {
          await fireAudio.play();
          updateSoundButton(true);
        } catch (error) {
          console.warn("[一時避難所] 暖炉音を再生できませんでした。", error);
          updateSoundButton(false);
        }
      } else {
        stopFireAudio();
      }
    });

    const randomDelay = (min, max) =>
      Math.floor(Math.random() * (max - min + 1)) + min;

    const pickDifferent = (items, previous) => {
      if (items.length < 2) return items[0] || "";

      let next = items[Math.floor(Math.random() * items.length)];

      while (next === previous) {
        next = items[Math.floor(Math.random() * items.length)];
      }

      return next;
    };

    const getFirePhase = () => {
      const stayed = Date.now() - state.fireEnteredAt;

      if (stayed < 80000) {
        return { lines: earlyLines, min: 12000, max: 28000, silentRate: 0 };
      }

      if (stayed < 120000) {
        return {
          lines: [...earlyLines, ...middleLines],
          min: 18000,
          max: 40000,
          silentRate: 0
        };
      }

      if (stayed < 240000) {
        return { lines: middleLines, min: 25000, max: 55000, silentRate: 0.1 };
      }

      if (stayed < 300000) {
        return {
          lines: [...middleLines, ...lateLines],
          min: 35000,
          max: 70000,
          silentRate: 0.1
        };
      }

      return { lines: lateLines, min: 45000, max: 90000, silentRate: 0.1 };
    };

    const scheduleFireLine = () => {
      if (!state.fireRunning || !fireText) return;

      const phase = getFirePhase();
      const delay = randomDelay(phase.min, phase.max);

      setTimer(() => {
        if (!state.fireRunning) return;

        fireText.classList.remove("is-visible");

        setTimer(() => {
          if (!state.fireRunning) return;

          if (Math.random() < phase.silentRate) {
            fireText.textContent = "";
          } else {
            state.lastFireLine = pickDifferent(phase.lines, state.lastFireLine);
            fireText.textContent = state.lastFireLine;
          }

          fireText.classList.add("is-visible");
          scheduleFireLine();
        }, 1200, "fire");
      }, delay, "fire");
    };

    const scheduleFireFlare = () => {
      if (!state.fireRunning || !fire) return;

      setTimer(() => {
        if (!state.fireRunning) return;

        fire.classList.add("is-strong");
        setTimer(() => fire.classList.remove("is-strong"), 4200, "fire");
        scheduleFireFlare();
      }, randomDelay(30000, 100000), "fire");
    };

    const scheduleParticle = (className, cssProperty, range, lifetime, min, max) => {
      if (!state.fireRunning || !fire) return;

      setTimer(() => {
        if (!state.fireRunning) return;

        const particle = document.createElement("span");
        particle.className = className;
        particle.style.setProperty(
          cssProperty,
          `${randomDelay(-range, range)}px`
        );

        fire.appendChild(particle);
        setTimer(() => particle.remove(), lifetime, "fire");
        scheduleParticle(className, cssProperty, range, lifetime, min, max);
      }, randomDelay(min, max), "fire");
    };

    const scheduleWarmGlow = () => {
      if (!state.fireRunning || !roomFire) return;

      setTimer(() => {
        if (!state.fireRunning) return;

        roomFire.classList.add("is-warm-glow");
        setTimer(() => roomFire.classList.remove("is-warm-glow"), 5200, "fire");
        scheduleWarmGlow();
      }, randomDelay(40000, 140000), "fire");
    };

    function startFireExperience() {
      clearFireTimers();
      state.fireRunning = true;
      state.fireEnteredAt = Date.now();
      state.lastFireLine = "";

      if (fireText) {
        fireText.textContent = "火がついています。";
        fireText.classList.add("is-visible");
      }

      setTimer(scheduleFireLine, 15000, "fire");
      scheduleFireFlare();
      scheduleParticle("tg-spark", "--spark-x", 25, 3000, 15000, 120000);
      scheduleParticle("tg-ash", "--ash-x", 22, 4200, 25000, 165000);
      scheduleWarmGlow();
    }

    /* -----------------------------------------
     * セーフルーム・給水所・夜・東屋
     * -------------------------------------- */

    const waterMessages = [
      "水が通っただけで、少し戻ってきています。",
      "それだけで十分です。",
      "もう一口いけたら、それも十分です。",
      "身体が、少し思い出したかもしれません。",
      "今日はここまででも大丈夫です。",
      "えらくなくていいです。飲めた、で終わりです。"
    ];

    const waterBtn = document.getElementById("waterBtn");
    const waterMsg = document.getElementById("waterMsg");

    waterBtn?.addEventListener("click", () => {
      const message =
        state.waterCount === 0
          ? waterMessages[0]
          : pickDifferent(waterMessages, state.lastWaterMessage);

      state.lastWaterMessage = message;
      state.waterCount += 1;
      waterMsg.textContent = message;
      waterMsg.classList.add("is-visible");
    });

    const nightMessages = [
      "朝にならなくても、ここは開いています。",
      "眠れないままでも、今はここにいて大丈夫です。",
      "考えごとは、少し遠くに置いておきましょう。",
      "夜が長い日は、短い言葉だけで十分です。",
      "目を閉じなくても、休んでいる時間はあります。"
    ];

    let lastNightMessage = "";
    document.getElementById("nightBtn")?.addEventListener("click", () => {
      lastNightMessage = pickDifferent(nightMessages, lastNightMessage);
      document.getElementById("nightMsg").textContent = lastNightMessage;
    });

    const azumayaMessages = [
      "今日は雲がゆっくりです。",
      "鳥が一羽、通りました。",
      "少しだけ、雨の匂いがします。",
      "木陰があります。",
      "今日は誰もいません。",
      "何も変えなくても、風は通ります。"
    ];

    let lastAzumayaMessage = "";
    document.getElementById("azumayaBtn")?.addEventListener("click", () => {
      lastAzumayaMessage = pickDifferent(azumayaMessages, lastAzumayaMessage);
      document.getElementById("azumayaMsg").textContent = lastAzumayaMessage;
    });

    /* -----------------------------------------
     * 落とし物センター
     * -------------------------------------- */

    const detectOS = () => {
      const ua = navigator.userAgent;
      const platform = navigator.platform;

      if (/iPhone/.test(ua)) return "iPhone";
      if (/iPad/.test(ua) || (platform === "MacIntel" && navigator.maxTouchPoints > 1)) return "iPad";
      if (/Android/.test(ua)) return "Android";
      if (/Win/.test(platform)) return "Windows";
      if (/Mac/.test(platform)) return "macOS";
      if (/Linux/.test(platform)) return "Linux";

      return platform || "不明";
    };

    const detectBrowser = () => {
      const ua = navigator.userAgent;
      const patterns = [
        ["Microsoft Edge", /Edg\/([\d.]+)/],
        ["Chrome", /CriOS\/([\d.]+)/],
        ["Chrome", /Chrome\/([\d.]+)/],
        ["Firefox", /Firefox\/([\d.]+)/],
        ["Safari", /Version\/([\d.]+).*Safari/]
      ];

      for (const [name, pattern] of patterns) {
        const match = ua.match(pattern);
        if (match) return `${name} ${match[1]}`;
      }

      return "不明";
    };

    const detectReferrer = () => {
      if (!document.referrer) return "直接アクセス";

      try {
        const host = new URL(document.referrer).hostname;

        if (host.includes("google")) return "Google";
        if (host.includes("threads")) return "Threads";
        if (host.includes("x.com") || host.includes("twitter")) return "X";
        if (host.includes("facebook")) return "Facebook";
        if (host.includes("instagram")) return "Instagram";

        return host;
      } catch {
        return document.referrer;
      }
    };

    const setHiddenValue = (id, value) => {
      const element = document.getElementById(id);
      if (element) element.value = value || "不明";
    };

    setHiddenValue("lostUserAgent", detectBrowser());
    setHiddenValue("lostLanguage", navigator.language);
    setHiddenValue("lostScreen", `${window.screen.width}×${window.screen.height}`);
    setHiddenValue("lostPlatform", detectOS());
    setHiddenValue("lostReferrer", detectReferrer());

    const lostBtn = document.getElementById("lostBtn");
    const lostInput = document.getElementById("lostInput");
    const lostReceipt = document.getElementById("lostReceipt");
    const lostItem = document.getElementById("lostItem");
    const lostMsg = document.getElementById("lostMsg");

    const showLostReceipt = (item, message) => {
      clearTimer(state.lostTimer);
      lostReceipt.classList.remove("is-visible", "is-fading");
      lostItem.textContent = item ? `「${item}」` : "";
      lostMsg.textContent = message;

      requestAnimationFrame(() => {
        lostReceipt.classList.add("is-visible");
      });

      state.lostTimer = setTimer(() => {
        lostReceipt.classList.add("is-fading");
      }, 5200);
    };

    lostBtn?.addEventListener("click", async () => {
      const value = lostInput.value.trim();
      const hp = document.getElementById("lostHp")?.value || "";

      if (!value) {
        showLostReceipt("", "預けたいものを、ひとつだけ書いてください。");
        lostInput.focus();
        return;
      }

      lostBtn.disabled = true;
      lostBtn.setAttribute("aria-busy", "true");

      try {
        const response = await fetch(
          window.ajaxurl || "/wp-admin/admin-ajax.php",
          {
            method: "POST",
            credentials: "same-origin",
            headers: {
              "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
            },
            body: new URLSearchParams({
              action: "tg_submit_lost_item",
              lost_item: value,
              lost_hp: hp,
              lost_user_agent: document.getElementById("lostUserAgent")?.value || "不明",
              lost_language: document.getElementById("lostLanguage")?.value || "不明",
              lost_screen: document.getElementById("lostScreen")?.value || "不明",
              lost_platform: document.getElementById("lostPlatform")?.value || "不明",
              lost_referrer: document.getElementById("lostReferrer")?.value || ""
            })
          }
        );

        if (!response.ok) {
          throw new Error(`HTTP ${response.status}`);
        }

        const data = await response.json();
        const message =
          data?.data?.message ||
          (data?.success
            ? "お預かりしました。"
            : "お預かりできませんでした。");

        if (data?.success) {
          lostInput.value = "";
        }

        showLostReceipt(value, message);
      } catch (error) {
        console.warn("[一時避難所] 落とし物の送信に失敗しました。", error);
        showLostReceipt(
          "",
          "ただいま混み合っております。少し時間をおいてから、もう一度いらしてください。"
        );
      } finally {
        lostBtn.disabled = false;
        lostBtn.removeAttribute("aria-busy");
      }
    });

    document.addEventListener("visibilitychange", () => {
      if (document.hidden) {
        if (state.currentRoom === "fire") {
          clearFireTimers();
          stopFireAudio();
        }
      } else if (state.currentRoom === "fire" && !state.fireRunning) {
        startFireExperience();
      }
    });

    window.addEventListener("pagehide", () => {
      clearFireTimers();
      stopFireAudio();
      clearTimer(state.safeTimer);
      clearTimer(state.azumayaTimer);
      clearTimer(state.lostTimer);
    }, { once: true });
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", initShelter, { once: true });
  } else {
    initShelter();
  }
})();
</script>

<div class="shelter-wrap">
<section class="shelter-home" id="shelterHome" aria-hidden="false">
<p class="shelter-kicker">Tranquilvæj Public Space</p>
<h1>一時避難所</h1>
<p class="shelter-lead">
頭が痛い日。<br>
何もしたくない日。<br>
少しだけ、ここで休んでいきませんか。
</p>
<div class="shelter-buttons">
<button type="button" data-room="fire">暖炉</button>
<button type="button" data-room="safe">セーフルーム</button>
<button type="button" data-room="water">給水所</button>
<button type="button" data-room="night">深夜待合室</button>
<button type="button" data-room="lost">落とし物センター</button>
<button type="button" data-room="azumaya">
<ruby>東屋<rt>あずまや</rt></ruby></button>
</div>
<p class="shelter-note">途中で閉じても大丈夫ですよ。</p>
</section>
<section class="shelter-room" id="roomFire" hidden aria-hidden="true">
<div class="tg-fireplace">
<div class="tg-fire" aria-hidden="true">
<span></span>
<span></span>
<span></span>
<i class="tg-ember" aria-hidden="true"></i>
</div>
<p class="room-title">暖炉</p>
<p class="tg-fire-text is-visible" id="tgFireText">
火がついています。
</p>
<button type="button" class="tg-sound-btn" id="fireSoundBtn"
aria-label="暖炉の音をつける">
</button>
<p class="small-msg">
ごゆっくり
</p>
</div>
<button type="button" class="backBtn">
ロビーへ
</button>
</section>
<section class="shelter-room" id="roomSafe" hidden aria-hidden="true">
<div class="safe-icon"></div>
<p class="room-title">セーフルーム</p>
<p>ここでは何もしなくて大丈夫です。</p>
<p class="safe-fade-msg" id="safeFadeMsg">
気が向いたら、深呼吸をしてみましょう。
</p>
<button type="button" class="backBtn">ロビーへ</button>
</section>
<section class="shelter-room" id="roomWater" hidden aria-hidden="true">
<div class="water-drop" aria-hidden="true">
<span></span><span></span><span></span>
</div>
<p class="room-title">給水所</p>
<p>水をひとくち、飲めそうですか。</p>
<p id="waterMsg" class="water-msg">それだけで十分です。</p>
<button type="button" id="waterBtn">飲めた</button>
<button type="button" class="backBtn">ロビーへ</button>
</section>
<section class="shelter-room night-room" id="roomNight" hidden aria-hidden="true">
<div class="night-icon"></div>
<p class="room-title">深夜待合室</p>
<p>眠れない夜は、ここにいてもいいですよ。</p>
<p class="small-msg"
id="nightMsg">朝にならなくても、ここは開いています。</p>
<button type="button" id="nightBtn">もう一言</button>
<button type="button" class="backBtn">ロビーへ</button>
</section>
<section class="shelter-room" id="roomLost" hidden aria-hidden="true">
<div class="lost-icon" aria-hidden="true">
<span class="lost-post"></span>
<span class="lost-letter"></span>
</div>
<p class="room-title">落とし物センター</p>
<p>今日、どこかに置いていきたいものはありますか。</p>
<textarea id="lostInput" class="lost-input" rows="8"
placeholder="落とし物：
（例：やる気、誰かとお話しする元気 など）
覚えていることを、ひとつだけ教えてください。
もし差し支えなければ
年代・性別：
落とし主様：
"></textarea>
<input type="hidden" id="lostUserAgent">
<input type="hidden" id="lostLanguage">
<input type="hidden" id="lostScreen">
<input type="hidden" id="lostPlatform">
<input type="hidden" id="lostReferrer">
<p class="lost-privacy-note">
ここに預けたものは匿名で管理人に届きます。また、名前のない落とし物として紹介する場合がございます。あらかじめご了承ください。
</p>
<input type="text" id="lostHp" class="lost-hp" autocomplete="off"
tabindex="-1">
<button type="button" id="lostBtn">預ける</button>
<div id="lostReceipt" class="lost-receipt shelter-status" role="status" aria-live="polite" aria-atomic="true">
<p id="lostItem" class="lost-item"></p>
<p id="lostMsg" class="lost-msg"></p>
</div>
<button type="button" class="backBtn">ロビーへ</button>
</section>
<section class="shelter-room" id="roomAzumaya" hidden aria-hidden="true">
<div class="azumaya-icon"></div>
<p class="room-title">
<ruby>東屋<rt>あずまや</rt></ruby>
</p>
<p class="azumaya-fade-msg" id="azumayaFadeMsg">
風が通っています。
</p>
<p class="small-msg" id="azumayaMsg">
少しだけ、ここで景色を眺めていきましょう。
</p>
<button type="button" id="azumayaBtn">もう少し眺める</button>
<button type="button" class="backBtn">ロビーへ</button>
</section>
</div>

<style data-wp-block-html="css">
.p-fixBtnWrap {
border-radius: 999px !important;
overflow: hidden !important;
border: 0 !important;
background:
radial-gradient(
circle at 50% 50%,
rgba(255,255,255,.00) 0%,
rgba(255,255,255,.02) 58%,
rgba(255,255,255,.12) 100%
) !important;
backdrop-filter: blur(.3px) saturate(135%) contrast(108%)
brightness(106%);
-webkit-backdrop-filter: blur(.3px) saturate(135%) contrast(108%)
brightness(106%);
box-shadow:
inset 2px 2px 2px rgba(255,255,255,.55),
inset 0 0 14px rgba(255,255,255,.28),
0 3px 8px rgba(0,0,0,.03) !important;
}
.p-fixBtnWrap::before {
content: "";
position: absolute;
inset: 1px;
border-radius: 999px;
pointer-events: none;
background:
linear-gradient(
145deg,
rgba(255,255,255,.75) 0%,
rgba(255,255,255,.28) 18%,
rgba(255,255,255,0) 42%
);
mix-blend-mode: screen;
opacity: .65;
}
.p-fixBtnWrap:hover {
background: #2f4f4f !important;
box-shadow: none !important;
}
.c-fixBtn__icon {
color: #2f2f2f !important;
text-shadow: none !important;
-webkit-text-stroke: 0 !important;
}
.p-fixBtnWrap:hover .c-fixBtn__icon {
color: #fff !important;
}
.p-fixBtnWrap a,
.p-fixBtnWrap button,
.p-fixBtnWrap [class*="fixBtn"],
.p-fixBtnWrap [class*="icon"] {
border: 0 !important;
outline: 0 !important;
box-shadow: none !important;
background: transparent !important;
}
.p-fixBtnWrap {
width: 52px !important;
height: 52px !important;
position: fixed !important;
display: block !important;
transition:
width .22s ease,
background-color .18s ease,
box-shadow .18s ease !important;
}
.p-fixBtnWrap .c-fixBtn__icon {
position: absolute !important;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
z-index: 2;
}
.p-fixBtnWrap::after {
content: "Page top";
position: absolute;
top: 50%;
left: 54px;
transform: translateY(-55%);
z-index: 2;
opacity: 0;
max-width: 0;
overflow: hidden;
white-space: nowrap;
height: 24px;
line-height: 24px;
font-size: 14px;
letter-spacing: .03em;
color: #fff;
transition:
opacity .15s ease,
max-width .22s ease;
}
.p-fixBtnWrap:hover {
width: 132px !important;
}
.p-fixBtnWrap:hover .c-fixBtn__icon {
left: 28px !important;
}
.p-fixBtnWrap:hover::after {
opacity: 1;
max-width: 80px;
}
</style>
]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/temporary-shelter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://tranquilguides.com/wp-content/uploads/2026/06/freesound_community-aachen_burning-fireplace-crackling-fire-soundswav-14561.mp3" length="14280960" type="audio/mpeg" />

		<post-id xmlns="com-wordpress:feed-additions:1">1174</post-id>	</item>
		<item>
		<title>深夜待合室</title>
		<link>https://tranquilguides.com/midnight-waiting-room/</link>
					<comments>https://tranquilguides.com/midnight-waiting-room/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Tue, 23 Jun 2026 11:01:48 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[回復]]></category>
		<category><![CDATA[生きづらさ]]></category>
		<category><![CDATA[静けさ]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1045</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/2c6ed2f9-6b1b-4b64-b2cd-bc73e39fddb8.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>ここには答えは置いてありません。眠れない夜に、窓際の席と少しの静けさだけを用意して、いつでも来られるように開けています。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/2c6ed2f9-6b1b-4b64-b2cd-bc73e39fddb8.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>

<style data-wp-block-html="css">
.quiet-room {
  --qr-ink: #d8dfdc;
  --qr-muted: rgba(216, 223, 220, .56);
  --qr-line: rgba(216, 223, 220, .16);
  --qr-bg: #11171b;
  --qr-bg-deep: #0b1013;
  --qr-glow: rgba(124, 156, 160, .16);

  position: relative;
  width: 100%;
  min-height: min(760px, 100svh);
  overflow: hidden;
  display: grid;
  place-items: center;
  padding:
    max(28px, env(safe-area-inset-top))
    max(20px, env(safe-area-inset-right))
    max(28px, env(safe-area-inset-bottom))
    max(20px, env(safe-area-inset-left));
  background:
    radial-gradient(circle at 50% 34%, var(--qr-glow), transparent 28%),
    linear-gradient(180deg, #172026 0%, var(--qr-bg) 56%, var(--qr-bg-deep) 100%);
  color: var(--qr-ink);
  isolation: isolate;
}

.quiet-room,
.quiet-room *,
.quiet-room *::before,
.quiet-room *::after {
  box-sizing: border-box;
}

.quiet-room-inner {
  position: relative;
  z-index: 2;
  width: min(680px, 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

/* テキストがなくても「深夜の待合室」だと分かる固有ビジュアル */
.quiet-room-visual {
  position: relative;
  width: min(520px, 100%);
  height: 250px;
  margin-bottom: 42px;
}

.quiet-room-window {
  position: absolute;
  left: 50%;
  top: 0;
  width: min(310px, 72%);
  height: 180px;
  transform: translateX(-50%);
  border: 1px solid rgba(216, 223, 220, .18);
  background:
    radial-gradient(circle at 70% 26%, rgba(221, 233, 230, .12), transparent 18%),
    linear-gradient(180deg, #1a2730 0%, #10181e 100%);
  box-shadow:
    inset 0 0 28px rgba(0,0,0,.32),
    0 18px 46px rgba(0,0,0,.24);
}

.quiet-room-window::before,
.quiet-room-window::after {
  content: "";
  position: absolute;
  background: rgba(216, 223, 220, .14);
}

.quiet-room-window::before {
  left: 50%;
  top: 0;
  bottom: 0;
  width: 1px;
}

.quiet-room-window::after {
  left: 0;
  right: 0;
  top: 56%;
  height: 1px;
}

.quiet-room-stars {
  position: absolute;
  inset: 0;
  opacity: .45;
  background:
    radial-gradient(circle at 18% 22%, rgba(255,255,255,.9) 0 1px, transparent 1.5px),
    radial-gradient(circle at 74% 18%, rgba(255,255,255,.7) 0 1px, transparent 1.5px),
    radial-gradient(circle at 61% 39%, rgba(255,255,255,.56) 0 1px, transparent 1.5px),
    radial-gradient(circle at 34% 68%, rgba(255,255,255,.5) 0 1px, transparent 1.5px),
    radial-gradient(circle at 84% 74%, rgba(255,255,255,.62) 0 1px, transparent 1.5px);
}

.quiet-room-bench {
  position: absolute;
  left: 50%;
  bottom: 12px;
  width: min(390px, 88%);
  height: 58px;
  transform: translateX(-50%);
}

.quiet-room-bench::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 18px;
  border: 1px solid rgba(216, 223, 220, .18);
  border-radius: 4px;
  background: rgba(216, 223, 220, .055);
  box-shadow: 0 10px 28px rgba(0,0,0,.22);
}

.quiet-room-bench::after {
  content: "";
  position: absolute;
  left: 10%;
  right: 10%;
  top: 18px;
  height: 38px;
  border-left: 1px solid rgba(216, 223, 220, .14);
  border-right: 1px solid rgba(216, 223, 220, .14);
}

.quiet-room-clock {
  position: absolute;
  right: 6%;
  top: 18px;
  width: 58px;
  height: 58px;
  border: 1px solid rgba(216, 223, 220, .18);
  border-radius: 50%;
  background: rgba(255,255,255,.02);
}

.quiet-room-clock::before,
.quiet-room-clock::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  transform-origin: left center;
  background: rgba(216, 223, 220, .48);
}

.quiet-room-clock::before {
  width: 15px;
  height: 1px;
  transform: rotate(205deg);
}

.quiet-room-clock::after {
  width: 10px;
  height: 1px;
  transform: rotate(290deg);
}

.quiet-room-sign {
  position: absolute;
  left: 6%;
  top: 18px;
  padding: 6px 8px 5px;
  border: 1px solid rgba(216, 223, 220, .16);
  border-radius: 3px;
  color: rgba(216, 223, 220, .44);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 8px;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.quiet-room-small {
  margin: 0 0 44px;
  color: var(--qr-muted);
  font-size: 12px;
  letter-spacing: .22em;
}

.quiet-room-message {
  min-height: 4em;
  margin: 0 0 52px;
  font-size: clamp(19px, 4vw, 30px);
  line-height: 1.95;
  letter-spacing: .06em;
  opacity: .94;
}

.quiet-room-line {
  width: 72px;
  height: 1px;
  margin: 0 auto 44px;
  background: var(--qr-line);
}

.quiet-room-note {
  margin: 0;
  color: var(--qr-muted);
  font-size: 13px;
  line-height: 2;
}

.quiet-room-status {
  margin-top: 18px;
  color: rgba(216, 223, 220, .36);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 9px;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.quiet-room::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  opacity: .22;
  background:
    repeating-linear-gradient(
      0deg,
      transparent 0 3px,
      rgba(255,255,255,.012) 3px 4px
    );
  pointer-events: none;
}

.quiet-room::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -120px;
  width: min(760px, 90vw);
  height: 300px;
  transform: translateX(-50%);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(112, 145, 148, .09), transparent 68%);
  filter: blur(12px);
  pointer-events: none;
}

@media (max-width: 640px) {
  .quiet-room {
    min-height: 100svh;
    padding-top: max(22px, env(safe-area-inset-top));
    padding-bottom: max(22px, env(safe-area-inset-bottom));
  }

  .quiet-room-visual {
    height: 215px;
    margin-bottom: 32px;
  }

  .quiet-room-window {
    height: 156px;
  }

  .quiet-room-clock {
    right: 2%;
    width: 48px;
    height: 48px;
  }

  .quiet-room-sign {
    left: 2%;
    font-size: 7px;
  }

  .quiet-room-small {
    margin-bottom: 34px;
  }

  .quiet-room-message {
    margin-bottom: 42px;
  }

  .quiet-room-line {
    margin-bottom: 36px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .quiet-room *,
  .quiet-room *::before,
  .quiet-room *::after {
    animation: none !important;
    transition: none !important;
  }
}
</style>

<div class="quiet-room" id="quietRoom">
  <div class="quiet-room-inner">
    <div class="quiet-room-visual" aria-hidden="true">
      <div class="quiet-room-window">
        <div class="quiet-room-stars"></div>
      </div>
      <div class="quiet-room-clock"></div>
      <div class="quiet-room-sign">MIDNIGHT WAITING ROOM</div>
      <div class="quiet-room-bench"></div>
    </div>

    <p class="quiet-room-small">深夜待合室</p>

    <p
      class="quiet-room-message"
      id="quiet-room-message"
      aria-live="polite"
    ></p>

    <div class="quiet-room-line" aria-hidden="true"></div>

    <p class="quiet-room-note">
      また来たくなったら、いつでも来ていいですよ。
    </p>

    <p class="quiet-room-status">
      OPEN ALL NIGHT · NO RESPONSE REQUIRED
    </p>
  </div>
</div>

<script data-wp-block-html="js">
(() => {
  "use strict";

  function initQuietRoom() {
    const root = document.getElementById("quietRoom");

    if (!root || root.dataset.initialized === "true") {
      return;
    }

    root.dataset.initialized = "true";

    const message = root.querySelector("#quiet-room-message");

    if (!message) {
      console.warn("[深夜待合室] メッセージ表示要素がありません。");
      return;
    }

    const messages = [
      "少し座っていきますか。",
      "ここにいてもいい。",
      "何も話さなくて大丈夫です。",
      "途中で閉じても大丈夫です。",
      "今日はここまで来られた。",
      "水を飲めたなら十分です。",
      "窓の外を見るだけでもいい。",
      "何も感じなくても構いません。",
      "理由は置いていってください。",
      "眠れなくても横になれたなら十分です。",
      "大きな変化がなくてもいい。",
      "待つだけの日があっていい。",
      "あなたのペースでいい。",
      "返事をしなくても大丈夫です。",
      "今日は静かです。",
      "窓際が空いています。",
      "灯りは残しておきます。",
      "誰も急かしません。",
      "ドアは開いたままです。",
      "時計は見なくて大丈夫です。",
      "ここには答えは置いてありません。",
      "お湯はまだ温かいです。",
      "少し風が入っています。",
      "何も決めなくていいです。"
    ];

    let previous = sessionStorage.getItem("quiet-room-last-message");
    let selected = "";

    if (messages.length === 1) {
      selected = messages[0];
    } else {
      do {
        selected = messages[Math.floor(Math.random() * messages.length)];
      } while (selected === previous);
    }

    message.textContent = selected;

    try {
      sessionStorage.setItem("quiet-room-last-message", selected);
    } catch {
      /* sessionStorageが使えない環境では保存しない */
    }
  }

  if (document.readyState === "loading") {
    document.addEventListener(
      "DOMContentLoaded",
      initQuietRoom,
      { once: true }
    );
  } else {
    initQuietRoom();
  }
})();
</script>


]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/midnight-waiting-room/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1045</post-id>	</item>
		<item>
		<title>静寂採集</title>
		<link>https://tranquilguides.com/quiet-capture/</link>
					<comments>https://tranquilguides.com/quiet-capture/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Tue, 23 Jun 2026 07:02:11 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[時間]]></category>
		<category><![CDATA[観察]]></category>
		<category><![CDATA[記録]]></category>
		<category><![CDATA[身体感覚]]></category>
		<category><![CDATA[道具]]></category>
		<category><![CDATA[静けさ]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1040</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/b70ec953-fdc3-4a38-a934-5a369e7f1316.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>いま聞こえる音、見えている光、身体の感覚、時間の流れ。約1分の観察で、この瞬間にあった静寂をひとつの記録として採集します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/b70ec953-fdc3-4a38-a934-5a369e7f1316.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>

<style data-wp-block-html="css">
.tq-quiet-capture {
  --tq-qc-ink: #26302f;
  --tq-qc-muted: rgba(38, 48, 47, .58);
  --tq-qc-line: rgba(38, 48, 47, .12);
  --tq-qc-surface: rgba(255, 255, 255, .62);
  --tq-qc-radius: 32px;

  width: 100%;
  max-width: 720px;
  margin: 0 auto;
  padding: clamp(28px, 6vw, 64px) clamp(18px, 5vw, 44px);
  border: 1px solid rgba(0, 0, 0, .08);
  border-radius: var(--tq-qc-radius);
  background:
    radial-gradient(circle at 20% 10%, rgba(255, 255, 255, .78), transparent 34%),
    linear-gradient(135deg, rgba(255, 255, 255, .74), rgba(245, 245, 240, .5));
  box-shadow: 0 24px 80px rgba(0, 0, 0, .09);
  color: var(--tq-qc-ink);
  font-family:
    "Hiragino Mincho ProN",
    "Yu Mincho",
    "YuMincho",
    serif;
  text-align: center;
  overflow: hidden;
}

.tq-quiet-capture,
.tq-quiet-capture *,
.tq-quiet-capture *::before,
.tq-quiet-capture *::after {
  box-sizing: border-box;
}

.tq-quiet-capture [hidden] {
  display: none !important;
}

/* ページ固有の識別装置 */
.tq-qc-instrument {
  position: relative;
  width: min(600px, 100%);
  min-height: 190px;
  margin: 0 auto 32px;
  overflow: hidden;
  border: 1px solid var(--tq-qc-line);
  border-radius: 28px;
  background:
    linear-gradient(rgba(38, 48, 47, .034) 1px, transparent 1px),
    linear-gradient(90deg, rgba(38, 48, 47, .034) 1px, transparent 1px),
    radial-gradient(circle at center, rgba(255, 255, 255, .92), rgba(243, 242, 237, .7));
  background-size: 26px 26px, 26px 26px, auto;
  box-shadow: 0 20px 60px rgba(35, 44, 43, .07);
}

.tq-qc-instrument::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 118px;
  height: 118px;
  transform: translate(-50%, -50%);
  border: 1px solid rgba(38, 48, 47, .18);
  border-radius: 50%;
  box-shadow:
    0 0 0 20px rgba(38, 48, 47, .028),
    0 0 0 42px rgba(38, 48, 47, .015);
}

.tq-qc-instrument::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 134px;
  height: 1px;
  transform: translate(-50%, -50%);
  background: rgba(38, 48, 47, .17);
}

.tq-qc-crosshair {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 1px;
  height: 134px;
  transform: translate(-50%, -50%);
  background: rgba(38, 48, 47, .17);
}

.tq-qc-crosshair::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 15px;
  height: 15px;
  transform: translate(-50%, -50%);
  border: 1px solid rgba(38, 48, 47, .42);
  border-radius: 50%;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 0 0 6px rgba(255, 255, 255, .64);
}

.tq-qc-wave {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 88px;
  height: 34px;
  transform: translate(-50%, -50%);
  opacity: .42;
  background: repeating-linear-gradient(
    90deg,
    transparent 0 8px,
    rgba(38, 48, 47, .55) 8px 10px,
    transparent 10px 15px
  );
  clip-path: polygon(
    0 44%, 8% 44%, 8% 58%, 18% 58%, 18% 28%, 28% 28%,
    28% 72%, 38% 72%, 38% 38%, 48% 38%, 48% 62%, 58% 62%,
    58% 20%, 68% 20%, 68% 80%, 78% 80%, 78% 36%, 88% 36%,
    88% 64%, 100% 64%, 100% 44%
  );
}

.tq-qc-instrument-badge {
  position: absolute;
  top: 14px;
  left: 16px;
  padding: 5px 8px 4px;
  border: 1px solid rgba(83, 109, 112, .22);
  border-radius: 3px;
  transform: rotate(-2deg);
  background: rgba(255, 255, 255, .34);
  color: rgba(83, 109, 112, .55);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 8px;
  letter-spacing: .16em;
}

.tq-qc-instrument-label {
  position: absolute;
  left: 18px;
  right: 18px;
  bottom: 14px;
  display: flex;
  justify-content: space-between;
  gap: 14px;
  color: rgba(38, 48, 47, .42);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 9px;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.tq-qc-stage {
  opacity: 0;
  transform: translateY(8px);
  animation: tqQcFade .42s ease forwards;
}

@keyframes tqQcFade {
  to {
    opacity: 1;
    transform: none;
  }
}

.tq-qc-kicker,
.tq-qc-count {
  margin: 0 0 16px;
  color: var(--tq-qc-muted);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.tq-qc-title,
.tq-qc-question,
.tq-qc-result-title {
  display: block;
  margin: 0 0 24px;
  padding: 0;
  border: 0;
  background: none;
  box-shadow: none;
  color: inherit;
  font-family: inherit;
  font-weight: 500;
  letter-spacing: .08em;
  line-height: 1.5;
  text-align: center;
}

.tq-qc-title {
  font-size: clamp(28px, 6vw, 46px);
}

.tq-qc-question,
.tq-qc-result-title {
  font-size: clamp(22px, 4.8vw, 34px);
}

.tq-qc-lead {
  max-width: 540px;
  margin: 0 auto 34px;
  color: rgba(38, 48, 47, .72);
  line-height: 2;
}

.tq-qc-options {
  display: grid;
  gap: 12px;
  max-width: 560px;
  margin: 30px auto 24px;
}

.tq-qc-options button,
#tq-qc-start-btn,
#tq-qc-restart,
#tq-qc-save,
.tq-qc-back {
  appearance: none;
  font-family: inherit;
  cursor: pointer;
}

.tq-qc-options button,
#tq-qc-start-btn,
#tq-qc-restart,
#tq-qc-save {
  width: 100%;
  max-width: 420px;
  margin: 0 auto;
  padding: 15px 20px;
  border-radius: 999px;
  font-size: 15px;
  letter-spacing: .06em;
  transition:
    transform .2s ease,
    background-color .2s ease,
    box-shadow .2s ease,
    border-color .2s ease;
}

.tq-qc-options button,
#tq-qc-start-btn,
#tq-qc-restart {
  border: 1px solid rgba(38, 48, 47, .18);
  background: rgba(255, 255, 255, .62);
  color: var(--tq-qc-ink);
}

#tq-qc-save {
  border: 1px solid rgba(38, 48, 47, .18);
  background: rgba(38, 48, 47, .9);
  color: #fff;
}

.tq-qc-options button:hover,
#tq-qc-start-btn:hover,
#tq-qc-restart:hover,
#tq-qc-save:hover {
  transform: translateY(-1px);
  box-shadow: 0 12px 30px rgba(0, 0, 0, .1);
}

.tq-qc-options button:hover,
#tq-qc-start-btn:hover,
#tq-qc-restart:hover {
  background: rgba(255, 255, 255, .9);
  border-color: rgba(38, 48, 47, .3);
}

.tq-qc-options button:focus-visible,
#tq-qc-start-btn:focus-visible,
#tq-qc-restart:focus-visible,
#tq-qc-save:focus-visible,
.tq-qc-back:focus-visible {
  outline: 2px solid rgba(83, 109, 112, .58);
  outline-offset: 4px;
}

#tq-qc-save:disabled {
  cursor: wait;
  opacity: .58;
}

.tq-qc-nav {
  max-width: 560px;
  margin: 0 auto 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

.tq-qc-nav .tq-qc-count {
  margin: 0;
}

.tq-qc-back {
  width: auto;
  margin: 0;
  padding: 4px 0;
  border: 0;
  background: transparent;
  color: rgba(38, 48, 47, .56);
  font-size: 13px;
  letter-spacing: .08em;
}

.tq-qc-result-card {
  max-width: 620px;
  margin: 0 auto;
  padding: clamp(24px, 5vw, 42px);
  border: 1px solid var(--tq-qc-line);
  border-radius: 26px;
  background:
    radial-gradient(circle at 15% 10%, rgba(255, 255, 255, .82), transparent 36%),
    linear-gradient(180deg, rgba(255, 255, 255, .82), rgba(247, 246, 241, .66));
  box-shadow: 0 22px 64px rgba(35, 44, 43, .08);
}

.tq-qc-result-text {
  max-width: 540px;
  margin: 28px auto 0;
  color: rgba(38, 48, 47, .78);
  text-align: left;
  line-height: 2.08;
}

.tq-qc-result-text p {
  margin: 0 0 1.35em;
  white-space: pre-line;
}

.tq-qc-actions {
  display: grid;
  gap: 12px;
  max-width: 560px;
  margin: 18px auto 0;
}

.tq-qc-status {
  min-height: 1.5em;
  margin: 12px 0 0;
  color: var(--tq-qc-muted);
  font-size: 12px;
  line-height: 1.6;
}

@media (max-width: 640px) {
  .tq-quiet-capture {
    padding: 14px 12px 30px;
    border-radius: 24px;
  }

  .tq-qc-instrument {
    min-height: 174px;
    margin-bottom: 26px;
    border-radius: 22px;
  }

  .tq-qc-instrument-label {
    font-size: 7px;
  }

  .tq-qc-result-card {
    padding: 24px 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .tq-quiet-capture *,
  .tq-quiet-capture *::before,
  .tq-quiet-capture *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}
</style>

<div class="tq-quiet-capture" id="tqQuietCapture">
  <div class="tq-qc-instrument" aria-hidden="true">
    <span class="tq-qc-instrument-badge">QUIET SCAN</span>
    <span class="tq-qc-crosshair"></span>
    <span class="tq-qc-wave"></span>

    <div class="tq-qc-instrument-label">
      <span>AMBIENT TRACE / PRESENT</span>
      <span>SOUND · LIGHT · BODY · TIME</span>
    </div>
  </div>

  <section id="tq-qc-start" class="tq-qc-stage">
    <p class="tq-qc-kicker">Quiet Capture</p>

    <div class="tq-qc-title" role="heading" aria-level="1">
      静寂採集
    </div>

    <p class="tq-qc-lead">
      いま、あなたの周囲にあるものを少しだけ採集します。<br>
      1分ほどで終わります。
    </p>

    <button type="button" id="tq-qc-start-btn">はじめる</button>
  </section>

  <section id="tq-qc-quiz" class="tq-qc-stage" hidden>
    <div
      id="tq-qc-question"
      class="tq-qc-question"
      role="heading"
      aria-level="2"
    ></div>

    <div id="tq-qc-options" class="tq-qc-options"></div>

    <div class="tq-qc-nav">
      <button type="button" id="tq-qc-back" class="tq-qc-back">
        もどる
      </button>

      <p id="tq-qc-count" class="tq-qc-count"></p>
    </div>
  </section>

  <section
    id="tq-qc-result"
    class="tq-qc-stage"
    aria-live="polite"
    aria-atomic="true"
    hidden
  >
    <p class="tq-qc-kicker">Collected Silence</p>

    <div class="tq-qc-result-card">
      <div class="tq-qc-result-title" role="heading" aria-level="2">
        あなたは今ここにいました。
      </div>

      <div id="tq-qc-result-text" class="tq-qc-result-text"></div>
    </div>

    <div class="tq-qc-actions">
      <button type="button" id="tq-qc-save">画像を保存</button>
      <button type="button" id="tq-qc-restart">再採集</button>
    </div>

    <p id="tq-qc-status" class="tq-qc-status" role="status" aria-live="polite"></p>

    <canvas
      id="tq-qc-canvas"
      width="1080"
      height="1920"
      hidden
      aria-hidden="true"
    ></canvas>
  </section>
</div>

<script data-wp-block-html="js">
(() => {
  "use strict";

  function initQuietCapture() {
    const root = document.getElementById("tqQuietCapture");

    if (!root || root.dataset.initialized === "true") {
      return;
    }

    root.dataset.initialized = "true";

    const questions = [
      {
        q: "いま、周囲でいちばん近い音は何ですか？",
        key: "sound",
        options: ["空調の音", "車や街の音", "人の声", "鳥や虫の声", "ほとんど無音"]
      },
      {
        q: "いまの光は、どんな状態ですか？",
        key: "light",
        options: ["明るい", "やわらかい", "暗い", "画面の光だけ", "よくわからない"]
      },
      {
        q: "あなたの身体は、いまどうありますか？",
        key: "body",
        options: ["座っている", "立っている", "横になっている", "歩いている", "少し固まっている"]
      },
      {
        q: "いま、時間はどんな速さに感じますか？",
        key: "time",
        options: ["早い", "普通", "遅い", "止まっているよう", "遠くにある"]
      },
      {
        q: "この瞬間に、名前をつけるなら？",
        key: "name",
        options: ["休息", "通過", "待機", "回復", "不在"]
      }
    ];

    const state = {
      index: 0,
      answers: {},
      resultDate: ""
    };

    const get = (id) => root.querySelector("#" + id);

    const start = get("tq-qc-start");
    const quiz = get("tq-qc-quiz");
    const result = get("tq-qc-result");
    const startButton = get("tq-qc-start-btn");
    const backButton = get("tq-qc-back");
    const restartButton = get("tq-qc-restart");
    const saveButton = get("tq-qc-save");
    const canvas = get("tq-qc-canvas");
    const count = get("tq-qc-count");
    const question = get("tq-qc-question");
    const options = get("tq-qc-options");
    const resultText = get("tq-qc-result-text");
    const status = get("tq-qc-status");

    if (
      !start ||
      !quiz ||
      !result ||
      !startButton ||
      !backButton ||
      !restartButton ||
      !saveButton ||
      !canvas ||
      !count ||
      !question ||
      !options ||
      !resultText
    ) {
      console.warn("[静寂採集] 必要な要素が見つかりません。");
      return;
    }

    function setStatus(message) {
      if (status) {
        status.textContent = message || "";
      }
    }

    function setView(view) {
      start.hidden = view !== "start";
      quiz.hidden = view !== "quiz";
      result.hidden = view !== "result";
      setStatus("");
    }

    function resetState() {
      state.index = 0;
      state.answers = {};
      state.resultDate = "";
      resultText.replaceChildren();
    }

    function formatDate() {
      const now = new Date();

      return [
        now.getFullYear(),
        String(now.getMonth() + 1).padStart(2, "0"),
        String(now.getDate()).padStart(2, "0")
      ].join(".") + " " + [
        String(now.getHours()).padStart(2, "0"),
        String(now.getMinutes()).padStart(2, "0")
      ].join(":");
    }

    function renderQuestion() {
      const current = questions[state.index];

      if (!current) {
        renderResult();
        return;
      }

      count.textContent = `${state.index + 1} / ${questions.length}`;
      question.textContent = current.q;
      options.replaceChildren();

      current.options.forEach((option) => {
        const button = document.createElement("button");
        button.type = "button";
        button.textContent = option;

        button.addEventListener("click", () => {
          state.answers[current.key] = option;
          state.index += 1;

          if (state.index >= questions.length) {
            renderResult();
          } else {
            renderQuestion();
          }
        });

        options.appendChild(button);
      });
    }

    function appendResultParagraph(text) {
      const paragraph = document.createElement("p");
      paragraph.textContent = text;
      resultText.appendChild(paragraph);
    }

    function renderResult() {
      state.resultDate = formatDate();
      resultText.replaceChildren();

      appendResultParagraph(state.resultDate);

      appendResultParagraph(
        `${state.answers.sound}があり、\n` +
        `光は${state.answers.light}。\n` +
        `身体は${state.answers.body}。`
      );

      appendResultParagraph(
        `時間は${state.answers.time}ように感じられ、\n` +
        `この瞬間には「${state.answers.name}」という名前がつきました。`
      );

      appendResultParagraph(
        "これは診断ではありません。\n" +
        "ただ、あなたが今ここにいたという小さな記録です。"
      );

      setView("result");
    }

    function wrapText(context, text, x, y, maxWidth, lineHeight) {
      String(text || "").split("\n").forEach((paragraph) => {
        if (!paragraph.trim()) {
          y += lineHeight;
          return;
        }

        let line = "";

        Array.from(paragraph).forEach((character) => {
          const testLine = line + character;

          if (
            context.measureText(testLine).width > maxWidth &&
            line
          ) {
            context.fillText(line, x, y);
            line = character;
            y += lineHeight;
          } else {
            line = testLine;
          }
        });

        context.fillText(line, x, y);
        y += lineHeight;
      });

      return y;
    }

    function loadImage(url) {
      return new Promise((resolve, reject) => {
        const image = new Image();
        image.crossOrigin = "anonymous";
        image.onload = () => resolve(image);
        image.onerror = reject;
        image.src = url;
      });
    }

    function drawCover(context, image, width, height) {
      const scale = Math.max(width / image.width, height / image.height);
      const drawWidth = image.width * scale;
      const drawHeight = image.height * scale;
      const x = (width - drawWidth) / 2;
      const y = (height - drawHeight) / 2;

      context.drawImage(image, x, y, drawWidth, drawHeight);
    }

    async function createResultImage() {
      const context = canvas.getContext("2d");
      const width = canvas.width;
      const height = canvas.height;

      context.clearRect(0, 0, width, height);

      try {
        const background = await loadImage(
          "https://tranquilguides.com/wp-content/uploads/2026/06/20260623_155541.jpg"
        );

        context.save();
        context.filter = "blur(72px) saturate(.72)";
        drawCover(context, background, width, height);
        context.restore();
      } catch {
        const gradient = context.createLinearGradient(0, 0, 0, height);
        gradient.addColorStop(0, "#ebe9e1");
        gradient.addColorStop(1, "#cfd7d3");
        context.fillStyle = gradient;
        context.fillRect(0, 0, width, height);
      }

      context.fillStyle = "rgba(247, 245, 239, .66)";
      context.fillRect(0, 0, width, height);

      context.fillStyle = "#26302f";
      context.textAlign = "left";

      context.font = '24px "Yu Mincho", "YuMincho", serif';
      context.fillText("Tranquilvæj", 90, 140);

      context.font = '27px "Yu Mincho", "YuMincho", serif';
      context.fillText("Quiet Capture", 90, 226);

      context.font = '64px "Yu Mincho", "YuMincho", serif';
      context.fillText("静寂採集", 90, 330);

      context.font = '30px "Yu Mincho", "YuMincho", serif';
      context.fillStyle = "rgba(38, 48, 47, .56)";
      context.fillText(state.resultDate, 90, 470);

      context.fillStyle = "#26302f";
      context.font = '35px "Yu Mincho", "YuMincho", serif';
      context.fillText("あなたは今ここにいました。", 90, 552);

      context.font = '34px "Yu Mincho", "YuMincho", serif';
      let y = 690;

      y = wrapText(
        context,
        `${state.answers.sound}があり、`,
        90,
        y,
        900,
        56
      );

      y = wrapText(
        context,
        `光は${state.answers.light}。`,
        90,
        y,
        900,
        56
      );

      y = wrapText(
        context,
        `身体は${state.answers.body}。`,
        90,
        y,
        900,
        56
      );

      y += 40;

      y = wrapText(
        context,
        `時間は${state.answers.time}ように感じられ、`,
        90,
        y,
        900,
        56
      );

      y = wrapText(
        context,
        `この瞬間には「${state.answers.name}」という名前がつきました。`,
        90,
        y,
        900,
        56
      );

      y += 70;

      context.font = '28px "Yu Mincho", "YuMincho", serif';
      context.fillStyle = "rgba(38, 48, 47, .68)";

      wrapText(
        context,
        "これは診断ではありません。ただ、あなたが今ここにいたという小さな記録です。",
        90,
        y,
        900,
        48
      );

      context.font = '24px "Yu Mincho", "YuMincho", serif';
      context.fillStyle = "rgba(38, 48, 47, .5)";
      context.fillText("TranquilGuides.com", 90, height - 120);

      return new Promise((resolve, reject) => {
        canvas.toBlob(
          (blob) => {
            if (blob) {
              resolve(blob);
            } else {
              reject(new Error("画像を生成できませんでした。"));
            }
          },
          "image/png"
        );
      });
    }

    async function saveResultImage() {
      saveButton.disabled = true;
      setStatus("画像を生成しています。");

      try {
        const blob = await createResultImage();

        const filename =
          `quiet-capture-${state.resultDate.replace(/[^0-9]/g, "").slice(0, 12)}.png`;

        const file = new File(
          [blob],
          filename,
          { type: "image/png" }
        );

        if (
          navigator.share &&
          navigator.canShare?.({ files: [file] })
        ) {
          try {
            await navigator.share({
              files: [file],
              title: "静寂採集",
              text: "静寂採集の記録画像"
            });

            setStatus("");
            return;
          } catch (error) {
            if (error?.name === "AbortError") {
              setStatus("");
              return;
            }
          }
        }

        const url = URL.createObjectURL(blob);
        const link = document.createElement("a");
        link.href = url;
        link.download = filename;
        document.body.appendChild(link);
        link.click();
        link.remove();

        window.setTimeout(() => {
          URL.revokeObjectURL(url);
        }, 1000);

        setStatus("画像を保存しました。");
      } catch (error) {
        console.warn("[静寂採集] 画像生成に失敗しました。", error);
        setStatus("画像を生成できませんでした。");
      } finally {
        saveButton.disabled = false;
      }
    }

    startButton.addEventListener("click", () => {
      resetState();
      setView("quiz");
      renderQuestion();
    });

    backButton.addEventListener("click", () => {
      if (state.index === 0) {
        resetState();
        setView("start");
        return;
      }

      state.index -= 1;
      renderQuestion();
    });

    restartButton.addEventListener("click", () => {
      resetState();
      setView("start");
    });

    saveButton.addEventListener("click", saveResultImage);

    setView("start");
  }

  if (document.readyState === "loading") {
    document.addEventListener(
      "DOMContentLoaded",
      initQuietCapture,
      { once: true }
    );
  } else {
    initQuietCapture();
  }
})();
</script>


]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/quiet-capture/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1040</post-id>	</item>
		<item>
		<title>心の季節診断</title>
		<link>https://tranquilguides.com/season-within/</link>
					<comments>https://tranquilguides.com/season-within/#respond</comments>
		
		<dc:creator><![CDATA[案内人のアシカ]]></dc:creator>
		<pubDate>Mon, 22 Jun 2026 13:04:15 +0000</pubDate>
				<category><![CDATA[生存ログ]]></category>
		<category><![CDATA[セルフチェック]]></category>
		<category><![CDATA[季節]]></category>
		<category><![CDATA[心]]></category>
		<category><![CDATA[診断]]></category>
		<category><![CDATA[道具]]></category>
		<category><![CDATA[静けさ]]></category>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1015</guid>

					<description><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/11704d94-4e2b-4b36-adc9-afde8af5a894.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>心にも、春・夏・秋・冬のような季節がある。いくつかの問いを通して、いまの自分がどの季節にいるのかを静かに見つめます。]]></description>
										<content:encoded><![CDATA[<p><img src="https://i0.wp.com/tranquilguides.com/wp-content/uploads/2026/07/11704d94-4e2b-4b36-adc9-afde8af5a894.jpg?fit=1024%2C683&ssl=1" class="webfeedsFeaturedVisual" /></p>
<style data-wp-block-html="css">
.l-header,.l-footer,#wpadminbar{display:none!important;}
.tq-season{
max-width:920px;
margin:0 auto;
padding:54px 20px;
}
.stage{animation:stageIn .6s ease
forwards;opacity:0;transform:translateY(8px);}
@keyframes stageIn{to{opacity:1;transform:none;}}
.tqs-page-title,.tqs-result-title{margin:0;letter-spacing:.02em;}
.lead{margin:14px 0 24px;color:#6b7280;line-height:1.85;}
.header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;}
.progress{font-weight:800;letter-spacing:.05em;opacity:.95;color:#111827;}
.sub{color:#6b7280;font-size:.92rem;line-height:1.6;}
.question{font-size:1.18rem;font-weight:800;line-height:1.45;margin-top:6px;}
.options{
margin-top:16px;
display:grid;
gap:12px;
}
.options input[type="radio"]{
position:absolute;
opacity:0;
pointer-events:none;
}
.options label{
border:1px solid rgba(17,24,39,.14);
background:
radial-gradient(160px 90px at 10% 20%, rgba(17,24,39,.05),
rgba(17,24,39,0) 70%),
linear-gradient(180deg, rgba(255,255,255,1), rgba(248,250,252,1));
border-radius:16px;
padding:13px 14px;
cursor:pointer;
box-shadow: 0 16px 46px rgba(15,23,42,.08);
transition: transform .15s ease, border-color .15s ease, background .3s
ease;
}
.options label:hover{
transform: translateY(-1px);
border-color: rgba(17,24,39,.24);
}
.options label.is-selected{
border-color: rgba(17,24,39,.38);
background:
radial-gradient(230px 140px at 10% 20%, rgba(17,24,39,.06),
rgba(17,24,39,0) 70%),
linear-gradient(180deg, rgba(255,255,255,1), rgba(243,244,246,1));
transform: translateY(-1px);
}
.stage-actions{margin-top:18px;display:flex;justify-content:flex-start;gap:12px;}
.primary,.ghost{
border-radius:14px;
padding:11px 16px;
border:1px solid transparent;
cursor:pointer;
font-weight:800;
letter-spacing:.03em;
}
.primary{
background: linear-gradient(180deg, rgba(17,24,39,.98),
rgba(17,24,39,.82));
color:#fff;
border-color: rgba(17,24,39,.24);
}
.primary:hover{background: linear-gradient(180deg, rgba(17,24,39,.98),
rgba(17,24,39,.74));}
.ghost{
background: rgba(17,24,39,.02);
color: #111827;
border-color: rgba(17,24,39,.14);
}
.ghost:hover{background: rgba(17,24,39,.04);}
.result-card{
margin-top:16px;
display:flex;
gap:16px;
align-items:stretch;
background: linear-gradient(180deg, rgba(255,255,255,1),
rgba(248,250,252,1));
border:1px solid rgba(17,24,39,.14);
border-radius:18px;
padding:16px;
}
.visual{
width:42%;
min-height:240px;
border-radius:14px;
background: linear-gradient(180deg,#e5e7eb,#f3f4f6);
box-shadow: inset 0 0 0 1px rgba(17,24,39,.12);
position:relative;
overflow:hidden;
}
.visual::after{
content:"";
position:absolute;
inset:-40% -20% auto -20%;
height:70%;
background: radial-gradient(circle at 50% 50%, rgba(255,255,255,.36),
rgba(255,255,255,0) 60%);
transform: rotate(-12deg);
}
.text{flex:1;display:flex;flex-direction:column;gap:8px;justify-content:center;}
.season{font-size:1.4rem;font-weight:900;letter-spacing:.06em;margin:0;color:#111827;}
.phase{margin:0;color:#4b5563;font-weight:800;}
.desc{margin:0;color:#374151;line-height:1.8;white-space:pre-wrap;}
.actions{
margin-top:18px;
display:grid;
grid-template-columns: repeat(2,minmax(0,1fr));
gap:12px;
}
@media (max-width: 720px){
.header{flex-direction:column;align-items:flex-start;}
.result-card{flex-direction:column;}
.visual{width:100%;}
.actions{grid-template-columns: 1fr;}
}
#tq-start{
text-align:center;
}
#tq-start .primary{
display:inline-flex;
margin:0 auto;
}
.quiz-footer{
margin-top:18px;
display:flex;
align-items:center;
justify-content:space-between;
gap:12px;
}
.quiz-footer .stage-actions{
margin-top:0;
}
.quiz-footer .progress{
text-align:right;
}
#tq-quiz > .sub{
margin-top:12px;
}
/* 質問文 */
.question{
text-align:center;
}
/* 選択肢全体 */
.options{
max-width:680px;
margin:16px auto 0;
}
/* 選択肢の文字 */
.options label{
text-align:center;
}

.tq-season{
  --tqs-ink:#27302f;
  --tqs-muted:rgba(39,48,47,.58);
  --tqs-line:rgba(39,48,47,.12);
  width:100%;
  max-width:920px;
  margin:0 auto;
  padding:24px 20px 48px;
  color:var(--tqs-ink);
  font-family:"Hiragino Mincho ProN","Yu Mincho","YuMincho",serif;
}
.tq-season,.tq-season *,.tq-season *::before,.tq-season *::after{box-sizing:border-box}
.tq-season [hidden]{display:none!important}
.tqs-page-title,.tqs-result-title,.question{display:block;padding:0;border:0;background:none;box-shadow:none;text-align:center}
.tqs-page-title{font-size:clamp(28px,5vw,42px);font-weight:500;line-height:1.55;letter-spacing:.08em}
.tqs-result-title{margin-bottom:18px;font-size:clamp(22px,4vw,30px);font-weight:500;line-height:1.6;letter-spacing:.07em}
.summary{margin:4px 0 6px;color:rgba(39,48,47,.76);line-height:1.85}
.tqs-instrument{position:relative;width:min(620px,100%);min-height:220px;margin:0 auto 34px;overflow:hidden;border:1px solid var(--tqs-line);border-radius:32px;background:linear-gradient(rgba(39,48,47,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(39,48,47,.035) 1px,transparent 1px),radial-gradient(circle at center,rgba(255,255,255,.92),rgba(244,242,237,.72));background-size:28px 28px,28px 28px,auto;box-shadow:0 24px 70px rgba(35,44,43,.09)}
.tqs-orbit{position:absolute;left:50%;top:50%;width:132px;height:132px;transform:translate(-50%,-50%);border:1px solid rgba(39,48,47,.18);border-radius:50%;box-shadow:0 0 0 24px rgba(39,48,47,.035),0 0 0 50px rgba(39,48,47,.018)}
.tqs-orbit::before,.tqs-orbit::after{content:"";position:absolute;background:rgba(39,48,47,.16)}
.tqs-orbit::before{left:50%;top:-22px;bottom:-22px;width:1px}.tqs-orbit::after{top:50%;left:-22px;right:-22px;height:1px}
.tqs-dot{position:absolute;width:16px;height:16px;border:1px solid rgba(39,48,47,.2);border-radius:50%;box-shadow:0 5px 18px rgba(39,48,47,.08)}
.tqs-dot--spring{left:50%;top:18px;transform:translateX(-50%);background:#dfeee1}.tqs-dot--summer{right:18px;top:50%;transform:translateY(-50%);background:#d3e7ff}.tqs-dot--autumn{left:50%;bottom:18px;transform:translateX(-50%);background:#e0b78a}.tqs-dot--winter{left:18px;top:50%;transform:translateY(-50%);background:#cfddee}
.tqs-center{position:absolute;left:50%;top:50%;width:18px;height:18px;transform:translate(-50%,-50%);border:1px solid rgba(39,48,47,.38);border-radius:50%;background:rgba(255,255,255,.9);box-shadow:0 0 0 6px rgba(255,255,255,.64)}
.tqs-instrument-badge{position:absolute;top:14px;left:16px;padding:5px 8px 4px;border:1px solid rgba(83,109,112,.22);border-radius:3px;transform:rotate(-2deg);background:rgba(255,255,255,.34);color:rgba(83,109,112,.55);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:8px;letter-spacing:.16em}
.tqs-instrument-label{position:absolute;left:18px;right:18px;bottom:14px;display:flex;justify-content:space-between;gap:14px;color:rgba(39,48,47,.42);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;letter-spacing:.15em;text-transform:uppercase}
.primary:focus-visible,.ghost:focus-visible,.options label:focus-within{outline:2px solid rgba(83,109,112,.58);outline-offset:4px}
@media(max-width:720px){.tq-season{padding:12px 12px 32px}.tqs-instrument{min-height:180px;margin-bottom:26px;border-radius:24px}.tqs-instrument-label{font-size:7px}.result-card{flex-direction:column}.visual{width:100%}.actions{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.tq-season *,.tq-season *::before,.tq-season *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
</style>

<script data-wp-block-html="js">
(function(){
const cycle = ['spring','summer','autumn','winter'];
const storyImages = {
spring:
'https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260622_215004.png',
summer:
'https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260622_215012.png',
autumn:
'https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260622_215018.png',
winter:
'https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260622_215026.png'
};
const seasons = {
spring:{
label:'春',
phase:'芽吹き期（若葉）',
summary:'形になる前の衝動が、土の下で静かに動く。',
desc:`芽が動き始めています。まだ外に見せられる形がない時期に焦ると、芽そのものを踏みます。
・思考より感覚が先に立つ
・やることは多いのに、最初の一手に迷う
・他人の完成品が目に入り、比較で気持ちが削れる
・試作を1つ（15〜30分）作る。完成でなく“証拠”を残す
・観た/読んだ/感じたをメモし、入力を断線させない
・睡眠を削らない（春の芽は睡眠で強くなる）
・SNSで完成品を眺めて落ち込む
・初回の試作を完璧にしようとする
・「自分はダメだ」と確定させる言葉
試作が3つ溜まったら、外へ広げる準備（夏）に移る。`,
c1:'#f6f8f9', c2:'#dfeee1'
},
summer:{
label:'夏',
phase:'拡張期（水面）',
summary:'外へ向かう勢いが強い。広げるほど、輪郭が薄くもなる。',
desc:`動く、会う、見せる。勢いは武器ですが、勢いに任せると燃料切れが来ます。
・予定が増え、外側の刺激が濃くなる
・「やれる気がする」が「やり過ぎ」になりやすい
・停止が悪に見えて、休む判断が遅れる
・予定の間に“何もしない枠”を入れる（5〜10分でも効く）
・見せた/話した内容を記録し、何が刺さったかを残す
・水分と食事を軽視しない（身体が先に折れる）
・ついでに予定を増やす
・疲れの放置（無視は加速の翌日を潰す）
・機嫌で決める重大事項
「この勢いを残したい」と思ったら、整えて意味に変える（秋）。`,
c1:'#f7faff', c2:'#d3e7ff'
},
autumn:{
label:'秋',
phase:'収穫期（落葉）',
summary:'回収と整理。手に入れるより、要らないものを降ろす。',
desc:`経験から意味を取り出す季節です。続けるのが偉いのではなく、残すべきものを選べるのが強さになります。
・頭の中に「未整理の棚」が増えがち
・量はあるのに成果が見えづらい
・手放す判断が先送りされる
・棚卸し（10分）で“残す/捨てる”を決める
・成果は小さくていいから形にする（1枚、1行、1案）
・定期的に振り返りを書く（意味は振り返りで固まる）
・形だけの作業を続ける
・心の消耗を“根性”で押し通す
・何でもかんでも後で整理する
「手が軽くなった」と感じたら、静かな点検と再起動（冬）へ。`,
c1:'#f9f2e6', c2:'#e0b78a'
},
winter:{
label:'冬',
phase:'休眠期（雪景色）',
summary:'静けさは空白ではない。次の準備が内側で進む。',
desc:`動けないのではなく、動かないのを選ぶ時期です。静けさは空白ではなく、仕込みの時間です。
・外側の刺激に反応しづらい
・自己批判が増えやすい（“何もしていない”錯覚）
・身体が先に疲れている
・休むことを予定にする
・低刺激の入力（散歩、少しの文章、静かな音）
・信頼できる人と短く話す（言語化で固まる）
・過剰な自己批判
・無理な予定追加
・焦りを埋めるために買う/食べる/見続ける
「少し動けそう」を感じたら、芽吹きの準備（春）へ。`,
c1:'#f6f8fb', c2:'#cfddee'
}
};
const hybrids = {
'spring-summer':{
label:'春と夏の境界',
phase:'端境期（伸びる準備）',
summary:'芽が伸び始める。勢いは必要だが、根を乾かしてはいけない。',
desc:`「動きたい」気配が出てきました。ここで“勢いだけ”になると、根が乾いて折れます。
・増やす前に、増やす基準を作る
・最初の一歩を大きくしない
・小さなルーティンを固定する（朝/夜に1つ）
・土台になる習慣を数える（睡眠、食事、入力）
・見栄のための拡張
・睡眠の削り`,
c1: seasons.spring.c1, c2: seasons.summer.c2
},
'summer-autumn':{
label:'夏と秋の境界',
phase:'端境期（整える勢い）',
summary:'勢いを失ったのではなく、輪郭ができてきた。今は回収の準備。',
desc:`進む力はあります。ただ、散らかったまま進むと、疲れるだけで終わります。
・自分の成果を“残せる形”に落とす
・終わりを作らないと次へ進めない
・記録を残す（何が刺さったかを言語化）
・次に繋げるための型を作る（テンプレ）
・未消化の積み上げ
・先延ばしでスッキリを買う`,
c1: seasons.summer.c1, c2: seasons.autumn.c2
},
'autumn-winter':{
label:'秋と冬の境界',
phase:'端境期（静かに片付ける）',
summary:'整理が終わり、静けさの器を作っている。止まって見えるのは自然。',
desc:`降ろすものを降ろし、静かな器を作っています。
・空白を怖がらない
・大きな成果より、壊れない生活
・休息の設計（週に1回、何もしない日を作る）
・身体の回復を優先する
・空白の恐怖から予定で埋める`,
c1: seasons.autumn.c1, c2: seasons.winter.c2
},
'spring-winter':{
label:'冬と春の境界',
phase:'端境期（再起動前）',
summary:'静けさの底で芽が動き始めている。まだ形が見えなくて当然。',
desc:`止まっていた時間は無駄ではなく、再起動の仕込みです。
・急発進しない
・正しい過去との比較にする（周回ではなく今の体調）
・小さな行動を“やり切る経験”にする
・気圧の低い予定から再開
・急発進
・過去の自分との雑な比較`,
c1: seasons.winter.c1, c2: seasons.spring.c2
}
};
const questions = [
{q:'最近よく見上げるものは？',options:[
{label:'若葉や木の芽',value:'spring'},
{label:'空の広さ',value:'summer'},
{label:'木の色の変化',value:'autumn'},
{label:'雲の重さ',value:'winter'}
]},
{q:'休日にしたくなることは？',options:[
{label:'新しいことを始める準備',value:'spring'},
{label:'外へ出て動く',value:'summer'},
{label:'整理してまとめる',value:'autumn'},
{label:'ひとりで静かに過ごす',value:'winter'}
]},
{q:'失ったものを思い出す頻度は？',options:[
{label:'今はあまり考えない',value:'spring'},
{label:'思い出すより今を優先',value:'summer'},
{label:'ときどき立ち止まる',value:'autumn'},
{label:'よく思い出す',value:'winter'}
]},
{q:'新しい予定を入れたい？',options:[
{label:'少しずつ入れたい',value:'spring'},
{label:'積極的に入れたい',value:'summer'},
{label:'必要な分だけにしたい',value:'autumn'},
{label:'今は入れたくない',value:'winter'}
]},
{q:'一人の時間は足りている？',options:[
{label:'やや足りていない',value:'spring'},
{label:'足りている',value:'summer'},
{label:'足りているが考える時間が欲しい',value:'autumn'},
{label:'足りていない（静けさが必要）',value:'winter'}
]}
];
let answers = new Array(questions.length).fill(null);
let idx = 0;
let lastResult = null;
let initialized = false;
function bgGradient(a, b){
if (!b) return
`linear-gradient(180deg,${seasons[a].c1},${seasons[a].c2})`;
const left = seasons[a];
const right = seasons[b];
return `linear-gradient(90deg,${left.c1},${left.c2} 50%,${right.c1}
50%,${right.c2})`;
}
function areAdjacent(a, b){
const ia = cycle.indexOf(a);
const ib = cycle.indexOf(b);
const diff = Math.abs(ia - ib);
return diff === 1 || diff === cycle.length - 1;
}
function buildRecordText(){
if (!lastResult) return '';
const t = new Date().toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo'
});
const url = window.location.href;
let txt = `[心の季節診断] ${t}\n`;
txt += `結果: ${lastResult.label} / ${lastResult.phase}\n`;
txt += `要約: ${lastResult.summary}\n`;
txt += `URL: ${url}\n\n`;
txt += '回答: ';
txt += answers.map((v, i) => {
const q = questions[i];
const o = q.options.find(x => x.value === v);
return `\n${i+1}. ${q.q} -> ${o?.label || ''}`;
}).join('');
txt += '\n\n---\n現時点の自分のために残したいこと: \n';
txt += '（この空欄は無理に埋めないでください）';
return txt;
}
async function writeClipboard(txt){
if (navigator.clipboard && navigator.clipboard.writeText){
await navigator.clipboard.writeText(txt);
return true;
}
const ta = document.createElement('textarea');
ta.value = txt;
ta.style.position = 'fixed';
ta.style.left = '-9999px';
ta.style.top = '0';
document.body.appendChild(ta);
ta.focus();
ta.select();
const ok = document.execCommand('copy');
ta.remove();
return ok;
}
async function copyRecord(copyBtn){
const txt = buildRecordText();
const ok = await writeClipboard(txt);
if (!copyBtn) return;
copyBtn.textContent = ok ? 'コピーしました' : 'コピーできませんでした';
setTimeout(() => { copyBtn.textContent = '結果と記録をコピー'; }, 1600);
return ok;
}
async function shareRecord(copyBtn){
const txt = buildRecordText();
const url = window.location.href;
if (navigator.share){
try {
await navigator.share({ title: '心の季節診断', text: txt, url });
return;
} catch (e){ /* canceled */ }
}
await copyRecord(copyBtn);
alert('共有に対応していないため、結果をコピーしました。');
}
function wrapTextJP(ctx, text, x, y, maxWidth, lineHeight){
const paras = (text || '').split('\n');
for (const para of paras){
if (!para.trim()) {
y += lineHeight;
continue;
}
let line = '';
for (const ch of Array.from(para)){
const testLine = line + ch;
if (ctx.measureText(testLine).width > maxWidth && line){
ctx.fillText(line, x, y);
line = ch;
y += lineHeight;
} else {
line = testLine;
}
}
ctx.fillText(line, x, y);
y += lineHeight;
}
return y;
}
async function drawStory(lastResult, storyCanvas){
if (!lastResult || !storyCanvas) return null;
const ctx = storyCanvas.getContext('2d');
const w = storyCanvas.width;
const h = storyCanvas.height;
const seasonKey = Object.keys(seasons).find(
key => seasons[key].label === lastResult.label
);
if (seasonKey && storyImages[seasonKey]) {
const img = new Image();
await new Promise(resolve => {
img.onload = resolve;
img.src = storyImages[seasonKey];
});
ctx.drawImage(img, 0, 0, w, h);
}
ctx.fillStyle = '#1f2937';
ctx.font = 'bold 68px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\"';
ctx.fillText('心の季節診断', 60, 210);
ctx.font = 'bold 140px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\"';
ctx.fillText(lastResult.label, 60, 400);
ctx.font = 'bold 44px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\"';
ctx.fillText(lastResult.phase, 60, 480);
ctx.fillStyle = '#1f2937';
ctx.font = '36px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\"';
wrapTextJP(ctx, lastResult.summary, 60, 560, w-120, 52);
return storyCanvas.toDataURL('image/png');
}
async function shareStory(lastResult, storyCanvas){
const dataUrl = await drawStory(lastResult, storyCanvas);
if (!dataUrl) return;
const res = await fetch(dataUrl);
const blob = await res.blob();
const file = new File(
[blob],
'kokoro-season-' + new Date().toISOString().slice(0,16).replace(/[-:T]/g,'') + '.png',
{ type: 'image/png' }
);
if (navigator.canShare && navigator.canShare({ files: [file] })) {
try {
await navigator.share({
files: [file],
title: '心の季節診断',
text: '心の季節診断の結果画像'
});
return;
} catch (e) {
// キャンセル時は何もしない
return;
}
}
const a = document.createElement('a');
a.href = dataUrl;
a.download = 'kokoro-season-' + new Date().toISOString().slice(0,16).replace(/[-:T]/g,'') + '.png';
document.body.appendChild(a);
a.click();
a.remove();
alert('画像を保存できる形式で開きました。iPhoneでは長押し、または共有から保存してください。');
}
function init(){
const start = document.getElementById('tq-start');
const startBtn = document.getElementById('tq-start-btn');
const quiz = document.getElementById('tq-quiz');
const progress = document.getElementById('tq-progress');
const qEl = document.getElementById('tq-question');
const optEl = document.getElementById('tq-options');
const prevBtn = document.getElementById('tq-prev');
const result = document.getElementById('tq-season-result');
const visual = document.getElementById('tq-season-visual');
const nameEl = document.getElementById('tq-season-name');
const phaseEl = document.getElementById('tq-season-phase');
const descEl = document.getElementById('tq-season-desc');
const copyBtn = document.getElementById('tq-copy');
const shareBtn = document.getElementById('tq-share');
const storyBtn = document.getElementById('tq-story');
const retryBtn = document.getElementById('tq-retry');
const storyCanvas = document.getElementById('tq-story-canvas');
if (!start || !startBtn || !quiz || initialized) return;
initialized = true;
function showResult(counts){
const entries = Object.entries(counts).sort((a,b)=>{
if (b[1] !== a[1]) return b[1] - a[1];
return cycle.indexOf(a[0]) - cycle.indexOf(b[0]);
});
const topCount = entries[0][1];
const topKeys = entries.filter(([k,v])=>v === topCount).map(([k])=>k);
let res;
if (topKeys.length === 1){
const k = topKeys[0];
res = { ...seasons[k] };
visual.style.backgroundImage = `url(${storyImages[k]})`;
visual.style.backgroundSize = 'cover';
visual.style.backgroundPosition = 'center';
} else if (topKeys.length === 2 && areAdjacent(topKeys[0], topKeys[1]))
{
const ordered =
[...topKeys].sort((a,b)=>cycle.indexOf(a)-cycle.indexOf(b));
const key = `${ordered[0]}-${ordered[1]}`;
const h = hybrids[key];
res = { ...h };
visual.style.backgroundImage = `url(${storyImages[ordered[0]]})`;
visual.style.backgroundSize = 'cover';
visual.style.backgroundPosition = 'center';
if (!res.c1) res.c1 = (seasons[ordered[0]]||{}).c1;
if (!res.c2) res.c2 = (seasons[ordered[1]]||{}).c2;
} else {
res = {
label:'循環の交差点',
phase:'混ざり合う季節',
summary:'季節が分かれているのは、揺れている証拠。結論より観察を優先。',
desc:`「これだ」と言い切れないのは、鋭さが足りないからではありません。
回っている要素が多いだけです。そして多くの場合、あなたは止められないのではなく、同時進行で混ざっている。
・選択がまだ決めつけになっていない
・複数の自分を持てる（柔軟性）
・記録を残す
・休む
・外圧の低い人間関係の中にいる
・一発逆転の行動
・焦りの自己合理化
・誰かの尺度をそのまま採用する`,
c1:'#f1f3f5', c2:'#dce3ea'
};
visual.style.backgroundImage = `url(${storyImages.winter})`;
visual.style.backgroundSize = 'cover';
visual.style.backgroundPosition = 'center';
}
lastResult = res;
nameEl.textContent = res.label;
phaseEl.textContent = res.phase;
descEl.textContent = res.desc;
quiz.hidden = true;
result.hidden = false;
result.scrollIntoView({ behavior:'smooth' });
}
function render(i){
const qu = questions[i];
progress.textContent = `${i+1} / ${questions.length}`;
qEl.textContent = qu.q;
optEl.innerHTML = '';
qu.options.forEach(o => {
const label = document.createElement('label');
const input = document.createElement('input');
input.type = 'radio';
input.name = 'tq-q';
input.value = o.value;
if (answers[i] === o.value) { input.checked = true; label.classList.add('is-selected'); }
input.addEventListener('change', () => {
answers[i] = o.value;
if (idx < questions.length - 1){
idx++;
render(idx);
} else {
const counts = {spring:0,summer:0,autumn:0,winter:0};
answers.forEach(v => counts[v]++);
showResult(counts);
}
});
label.appendChild(input);
label.append(o.label);
optEl.appendChild(label);
});
prevBtn.hidden = false;
}
startBtn.addEventListener('click', () => {
answers = new Array(questions.length).fill(null);
idx = 0;
lastResult = null;
start.hidden = true;
quiz.hidden = false;
render(idx);
quiz.scrollIntoView({behavior:'smooth'});
});
prevBtn.addEventListener('click', () => {
if (idx === 0){
quiz.hidden = true;
start.hidden = false;
start.scrollIntoView({
behavior:'smooth'
});
return;
}
idx--;
render(idx);
});
if (copyBtn) copyBtn.addEventListener('click', () =>
copyRecord(copyBtn));
if (shareBtn) shareBtn.addEventListener('click', () =>
shareRecord(copyBtn));
if (storyBtn) storyBtn.addEventListener('click', () =>
shareStory(lastResult, storyCanvas));
if (retryBtn) retryBtn.addEventListener('click', () => {
answers = new Array(questions.length).fill(null);
idx = 0;
lastResult = null;
nameEl.textContent = '';
phaseEl.textContent = '';
descEl.textContent = '';
visual.style.backgroundImage = '';
result.hidden = true;
start.hidden = false;
quiz.hidden = true;
start.scrollIntoView({behavior:'smooth'});
});
}
function run(){
  function waitForRoot(attempts){
    if (document.getElementById('tq-start')) {
      init();
      return;
    }
    if (attempts <= 0) {
      console.warn('[心の季節診断] 初期化対象が見つかりません。');
      return;
    }
    requestAnimationFrame(() => waitForRoot(attempts - 1));
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', () => waitForRoot(120), { once:true });
  } else {
    waitForRoot(120);
  }
}
run();
})();
</script>


<style data-wp-block-html="css">
.l-header,.l-footer,#wpadminbar{display:none!important;}
.tq-season{
max-width:920px;
margin:0 auto;
padding:54px 20px;
}
.stage{animation:stageIn .6s ease
forwards;opacity:0;transform:translateY(8px);}
@keyframes stageIn{to{opacity:1;transform:none;}}
.tqs-page-title,.tqs-result-title{margin:0;letter-spacing:.02em;}
.lead{margin:14px 0 24px;color:#6b7280;line-height:1.85;}
.header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;}
.progress{font-weight:800;letter-spacing:.05em;opacity:.95;color:#111827;}
.sub{color:#6b7280;font-size:.92rem;line-height:1.6;}
.question{font-size:1.18rem;font-weight:800;line-height:1.45;margin-top:6px;}
.options{
margin-top:16px;
display:grid;
gap:12px;
}
.options input[type="radio"]{
position:absolute;
opacity:0;
pointer-events:none;
}
.options label{
border:1px solid rgba(17,24,39,.14);
background:
radial-gradient(160px 90px at 10% 20%, rgba(17,24,39,.05),
rgba(17,24,39,0) 70%),
linear-gradient(180deg, rgba(255,255,255,1), rgba(248,250,252,1));
border-radius:16px;
padding:13px 14px;
cursor:pointer;
box-shadow: 0 16px 46px rgba(15,23,42,.08);
transition: transform .15s ease, border-color .15s ease, background .3s
ease;
}
.options label:hover{
transform: translateY(-1px);
border-color: rgba(17,24,39,.24);
}
.options label.is-selected{
border-color: rgba(17,24,39,.38);
background:
radial-gradient(230px 140px at 10% 20%, rgba(17,24,39,.06),
rgba(17,24,39,0) 70%),
linear-gradient(180deg, rgba(255,255,255,1), rgba(243,244,246,1));
transform: translateY(-1px);
}
.stage-actions{margin-top:18px;display:flex;justify-content:flex-start;gap:12px;}
.primary,.ghost{
border-radius:14px;
padding:11px 16px;
border:1px solid transparent;
cursor:pointer;
font-weight:800;
letter-spacing:.03em;
}
.primary{
background: linear-gradient(180deg, rgba(17,24,39,.98),
rgba(17,24,39,.82));
color:#fff;
border-color: rgba(17,24,39,.24);
}
.primary:hover{background: linear-gradient(180deg, rgba(17,24,39,.98),
rgba(17,24,39,.74));}
.ghost{
background: rgba(17,24,39,.02);
color: #111827;
border-color: rgba(17,24,39,.14);
}
.ghost:hover{background: rgba(17,24,39,.04);}
.result-card{
margin-top:16px;
display:flex;
gap:16px;
align-items:stretch;
background: linear-gradient(180deg, rgba(255,255,255,1),
rgba(248,250,252,1));
border:1px solid rgba(17,24,39,.14);
border-radius:18px;
padding:16px;
}
.visual{
width:42%;
min-height:240px;
border-radius:14px;
background: linear-gradient(180deg,#e5e7eb,#f3f4f6);
box-shadow: inset 0 0 0 1px rgba(17,24,39,.12);
position:relative;
overflow:hidden;
}
.visual::after{
content:"";
position:absolute;
inset:-40% -20% auto -20%;
height:70%;
background: radial-gradient(circle at 50% 50%, rgba(255,255,255,.36),
rgba(255,255,255,0) 60%);
transform: rotate(-12deg);
}
.text{flex:1;display:flex;flex-direction:column;gap:8px;justify-content:center;}
.season{font-size:1.4rem;font-weight:900;letter-spacing:.06em;margin:0;color:#111827;}
.phase{margin:0;color:#4b5563;font-weight:800;}
.desc{margin:0;color:#374151;line-height:1.8;white-space:pre-wrap;}
.actions{
margin-top:18px;
display:grid;
grid-template-columns: repeat(2,minmax(0,1fr));
gap:12px;
}
@media (max-width: 720px){
.header{flex-direction:column;align-items:flex-start;}
.result-card{flex-direction:column;}
.visual{width:100%;}
.actions{grid-template-columns: 1fr;}
}
#tq-start{
text-align:center;
}
#tq-start .primary{
display:inline-flex;
margin:0 auto;
}
.quiz-footer{
margin-top:18px;
display:flex;
align-items:center;
justify-content:space-between;
gap:12px;
}
.quiz-footer .stage-actions{
margin-top:0;
}
.quiz-footer .progress{
text-align:right;
}
#tq-quiz > .sub{
margin-top:12px;
}
/* 質問文 */
.question{
text-align:center;
}
/* 選択肢全体 */
.options{
max-width:680px;
margin:16px auto 0;
}
/* 選択肢の文字 */
.options label{
text-align:center;
}

.tq-season{
  --tqs-ink:#27302f;
  --tqs-muted:rgba(39,48,47,.58);
  --tqs-line:rgba(39,48,47,.12);
  width:100%;
  max-width:920px;
  margin:0 auto;
  padding:24px 20px 48px;
  color:var(--tqs-ink);
  font-family:"Hiragino Mincho ProN","Yu Mincho","YuMincho",serif;
}
.tq-season,.tq-season *,.tq-season *::before,.tq-season *::after{box-sizing:border-box}
.tq-season [hidden]{display:none!important}
.tqs-page-title,.tqs-result-title,.question{display:block;padding:0;border:0;background:none;box-shadow:none;text-align:center}
.tqs-page-title{font-size:clamp(28px,5vw,42px);font-weight:500;line-height:1.55;letter-spacing:.08em}
.tqs-result-title{margin-bottom:18px;font-size:clamp(22px,4vw,30px);font-weight:500;line-height:1.6;letter-spacing:.07em}
.summary{margin:4px 0 6px;color:rgba(39,48,47,.76);line-height:1.85}
.tqs-instrument{position:relative;width:min(620px,100%);min-height:220px;margin:0 auto 34px;overflow:hidden;border:1px solid var(--tqs-line);border-radius:32px;background:linear-gradient(rgba(39,48,47,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(39,48,47,.035) 1px,transparent 1px),radial-gradient(circle at center,rgba(255,255,255,.92),rgba(244,242,237,.72));background-size:28px 28px,28px 28px,auto;box-shadow:0 24px 70px rgba(35,44,43,.09)}
.tqs-orbit{position:absolute;left:50%;top:50%;width:132px;height:132px;transform:translate(-50%,-50%);border:1px solid rgba(39,48,47,.18);border-radius:50%;box-shadow:0 0 0 24px rgba(39,48,47,.035),0 0 0 50px rgba(39,48,47,.018)}
.tqs-orbit::before,.tqs-orbit::after{content:"";position:absolute;background:rgba(39,48,47,.16)}
.tqs-orbit::before{left:50%;top:-22px;bottom:-22px;width:1px}.tqs-orbit::after{top:50%;left:-22px;right:-22px;height:1px}
.tqs-dot{position:absolute;width:16px;height:16px;border:1px solid rgba(39,48,47,.2);border-radius:50%;box-shadow:0 5px 18px rgba(39,48,47,.08)}
.tqs-dot--spring{left:50%;top:18px;transform:translateX(-50%);background:#dfeee1}.tqs-dot--summer{right:18px;top:50%;transform:translateY(-50%);background:#d3e7ff}.tqs-dot--autumn{left:50%;bottom:18px;transform:translateX(-50%);background:#e0b78a}.tqs-dot--winter{left:18px;top:50%;transform:translateY(-50%);background:#cfddee}
.tqs-center{position:absolute;left:50%;top:50%;width:18px;height:18px;transform:translate(-50%,-50%);border:1px solid rgba(39,48,47,.38);border-radius:50%;background:rgba(255,255,255,.9);box-shadow:0 0 0 6px rgba(255,255,255,.64)}
.tqs-instrument-badge{position:absolute;top:14px;left:16px;padding:5px 8px 4px;border:1px solid rgba(83,109,112,.22);border-radius:3px;transform:rotate(-2deg);background:rgba(255,255,255,.34);color:rgba(83,109,112,.55);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:8px;letter-spacing:.16em}
.tqs-instrument-label{position:absolute;left:18px;right:18px;bottom:14px;display:flex;justify-content:space-between;gap:14px;color:rgba(39,48,47,.42);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;letter-spacing:.15em;text-transform:uppercase}
.primary:focus-visible,.ghost:focus-visible,.options label:focus-within{outline:2px solid rgba(83,109,112,.58);outline-offset:4px}
@media(max-width:720px){.tq-season{padding:12px 12px 32px}.tqs-instrument{min-height:180px;margin-bottom:26px;border-radius:24px}.tqs-instrument-label{font-size:7px}.result-card{flex-direction:column}.visual{width:100%}.actions{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.tq-season *,.tq-season *::before,.tq-season *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

</style>
<script data-wp-block-html="js">
(function(){
const cycle = ['spring','summer','autumn','winter'];
const storyImages = {
spring:
'https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260622_215004.png',
summer:
'https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260622_215012.png',
autumn:
'https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260622_215018.png',
winter:
'https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260622_215026.png'
};
const seasons = {
spring:{
label:'春',
phase:'芽吹き期（若葉）',
summary:'形になる前の衝動が、土の下で静かに動く。',
desc:`芽が動き始めています。まだ外に見せられる形がない時期に焦ると、芽そのものを踏みます。
・思考より感覚が先に立つ
・やることは多いのに、最初の一手に迷う
・他人の完成品が目に入り、比較で気持ちが削れる
・試作を1つ（15〜30分）作る。完成でなく“証拠”を残す
・観た/読んだ/感じたをメモし、入力を断線させない
・睡眠を削らない（春の芽は睡眠で強くなる）
・SNSで完成品を眺めて落ち込む
・初回の試作を完璧にしようとする
・「自分はダメだ」と確定させる言葉
試作が3つ溜まったら、外へ広げる準備（夏）に移る。`,
c1:'#f6f8f9', c2:'#dfeee1'
},
summer:{
label:'夏',
phase:'拡張期（水面）',
summary:'外へ向かう勢いが強い。広げるほど、輪郭が薄くもなる。',
desc:`動く、会う、見せる。勢いは武器ですが、勢いに任せると燃料切れが来ます。
・予定が増え、外側の刺激が濃くなる
・「やれる気がする」が「やり過ぎ」になりやすい
・停止が悪に見えて、休む判断が遅れる
・予定の間に“何もしない枠”を入れる（5〜10分でも効く）
・見せた/話した内容を記録し、何が刺さったかを残す
・水分と食事を軽視しない（身体が先に折れる）
・ついでに予定を増やす
・疲れの放置（無視は加速の翌日を潰す）
・機嫌で決める重大事項
「この勢いを残したい」と思ったら、整えて意味に変える（秋）。`,
c1:'#f7faff', c2:'#d3e7ff'
},
autumn:{
label:'秋',
phase:'収穫期（落葉）',
summary:'回収と整理。手に入れるより、要らないものを降ろす。',
desc:`経験から意味を取り出す季節です。続けるのが偉いのではなく、残すべきものを選べるのが強さになります。
・頭の中に「未整理の棚」が増えがち
・量はあるのに成果が見えづらい
・手放す判断が先送りされる
・棚卸し（10分）で“残す/捨てる”を決める
・成果は小さくていいから形にする（1枚、1行、1案）
・定期的に振り返りを書く（意味は振り返りで固まる）
・形だけの作業を続ける
・心の消耗を“根性”で押し通す
・何でもかんでも後で整理する
「手が軽くなった」と感じたら、静かな点検と再起動（冬）へ。`,
c1:'#f9f2e6', c2:'#e0b78a'
},
winter:{
label:'冬',
phase:'休眠期（雪景色）',
summary:'静けさは空白ではない。次の準備が内側で進む。',
desc:`動けないのではなく、動かないのを選ぶ時期です。静けさは空白ではなく、仕込みの時間です。
・外側の刺激に反応しづらい
・自己批判が増えやすい（“何もしていない”錯覚）
・身体が先に疲れている
・休むことを予定にする
・低刺激の入力（散歩、少しの文章、静かな音）
・信頼できる人と短く話す（言語化で固まる）
・過剰な自己批判
・無理な予定追加
・焦りを埋めるために買う/食べる/見続ける
「少し動けそう」を感じたら、芽吹きの準備（春）へ。`,
c1:'#f6f8fb', c2:'#cfddee'
}
};
const hybrids = {
'spring-summer':{
label:'春と夏の境界',
phase:'端境期（伸びる準備）',
summary:'芽が伸び始める。勢いは必要だが、根を乾かしてはいけない。',
desc:`「動きたい」気配が出てきました。ここで“勢いだけ”になると、根が乾いて折れます。
・増やす前に、増やす基準を作る
・最初の一歩を大きくしない
・小さなルーティンを固定する（朝/夜に1つ）
・土台になる習慣を数える（睡眠、食事、入力）
・見栄のための拡張
・睡眠の削り`,
c1: seasons.spring.c1, c2: seasons.summer.c2
},
'summer-autumn':{
label:'夏と秋の境界',
phase:'端境期（整える勢い）',
summary:'勢いを失ったのではなく、輪郭ができてきた。今は回収の準備。',
desc:`進む力はあります。ただ、散らかったまま進むと、疲れるだけで終わります。
・自分の成果を“残せる形”に落とす
・終わりを作らないと次へ進めない
・記録を残す（何が刺さったかを言語化）
・次に繋げるための型を作る（テンプレ）
・未消化の積み上げ
・先延ばしでスッキリを買う`,
c1: seasons.summer.c1, c2: seasons.autumn.c2
},
'autumn-winter':{
label:'秋と冬の境界',
phase:'端境期（静かに片付ける）',
summary:'整理が終わり、静けさの器を作っている。止まって見えるのは自然。',
desc:`降ろすものを降ろし、静かな器を作っています。
・空白を怖がらない
・大きな成果より、壊れない生活
・休息の設計（週に1回、何もしない日を作る）
・身体の回復を優先する
・空白の恐怖から予定で埋める`,
c1: seasons.autumn.c1, c2: seasons.winter.c2
},
'spring-winter':{
label:'冬と春の境界',
phase:'端境期（再起動前）',
summary:'静けさの底で芽が動き始めている。まだ形が見えなくて当然。',
desc:`止まっていた時間は無駄ではなく、再起動の仕込みです。
・急発進しない
・正しい過去との比較にする（周回ではなく今の体調）
・小さな行動を“やり切る経験”にする
・気圧の低い予定から再開
・急発進
・過去の自分との雑な比較`,
c1: seasons.winter.c1, c2: seasons.spring.c2
}
};
const questions = [
{q:'最近よく見上げるものは？',options:[
{label:'若葉や木の芽',value:'spring'},
{label:'空の広さ',value:'summer'},
{label:'木の色の変化',value:'autumn'},
{label:'雲の重さ',value:'winter'}
]},
{q:'休日にしたくなることは？',options:[
{label:'新しいことを始める準備',value:'spring'},
{label:'外へ出て動く',value:'summer'},
{label:'整理してまとめる',value:'autumn'},
{label:'ひとりで静かに過ごす',value:'winter'}
]},
{q:'失ったものを思い出す頻度は？',options:[
{label:'今はあまり考えない',value:'spring'},
{label:'思い出すより今を優先',value:'summer'},
{label:'ときどき立ち止まる',value:'autumn'},
{label:'よく思い出す',value:'winter'}
]},
{q:'新しい予定を入れたい？',options:[
{label:'少しずつ入れたい',value:'spring'},
{label:'積極的に入れたい',value:'summer'},
{label:'必要な分だけにしたい',value:'autumn'},
{label:'今は入れたくない',value:'winter'}
]},
{q:'一人の時間は足りている？',options:[
{label:'やや足りていない',value:'spring'},
{label:'足りている',value:'summer'},
{label:'足りているが考える時間が欲しい',value:'autumn'},
{label:'足りていない（静けさが必要）',value:'winter'}
]}
];
let answers = new Array(questions.length).fill(null);
let idx = 0;
let lastResult = null;
let initialized = false;
function bgGradient(a, b){
if (!b) return
`linear-gradient(180deg,${seasons[a].c1},${seasons[a].c2})`;
const left = seasons[a];
const right = seasons[b];
return `linear-gradient(90deg,${left.c1},${left.c2} 50%,${right.c1}
50%,${right.c2})`;
}
function areAdjacent(a, b){
const ia = cycle.indexOf(a);
const ib = cycle.indexOf(b);
const diff = Math.abs(ia - ib);
return diff === 1 || diff === cycle.length - 1;
}
function buildRecordText(){
if (!lastResult) return '';
const t = new Date().toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo'
});
const url = window.location.href;
let txt = `[心の季節診断] ${t}\n`;
txt += `結果: ${lastResult.label} / ${lastResult.phase}\n`;
txt += `要約: ${lastResult.summary}\n`;
txt += `URL: ${url}\n\n`;
txt += '回答: ';
txt += answers.map((v, i) => {
const q = questions[i];
const o = q.options.find(x => x.value === v);
return `\n${i+1}. ${q.q} -> ${o?.label || ''}`;
}).join('');
txt += '\n\n---\n現時点の自分のために残したいこと: \n';
txt += '（この空欄は無理に埋めないでください）';
return txt;
}
async function writeClipboard(txt){
if (navigator.clipboard && navigator.clipboard.writeText){
await navigator.clipboard.writeText(txt);
return true;
}
const ta = document.createElement('textarea');
ta.value = txt;
ta.style.position = 'fixed';
ta.style.left = '-9999px';
ta.style.top = '0';
document.body.appendChild(ta);
ta.focus();
ta.select();
const ok = document.execCommand('copy');
ta.remove();
return ok;
}
async function copyRecord(copyBtn){
const txt = buildRecordText();
const ok = await writeClipboard(txt);
if (!copyBtn) return;
copyBtn.textContent = ok ? 'コピーしました' : 'コピーできませんでした';
setTimeout(() => { copyBtn.textContent = '結果と記録をコピー'; }, 1600);
return ok;
}
async function shareRecord(copyBtn){
const txt = buildRecordText();
const url = window.location.href;
if (navigator.share){
try {
await navigator.share({ title: '心の季節診断', text: txt, url });
return;
} catch (e){ /* canceled */ }
}
await copyRecord(copyBtn);
alert('共有に対応していないため、結果をコピーしました。');
}
function wrapTextJP(ctx, text, x, y, maxWidth, lineHeight){
const paras = (text || '').split('\n');
for (const para of paras){
if (!para.trim()) {
y += lineHeight;
continue;
}
let line = '';
for (const ch of Array.from(para)){
const testLine = line + ch;
if (ctx.measureText(testLine).width > maxWidth && line){
ctx.fillText(line, x, y);
line = ch;
y += lineHeight;
} else {
line = testLine;
}
}
ctx.fillText(line, x, y);
y += lineHeight;
}
return y;
}
async function drawStory(lastResult, storyCanvas){
if (!lastResult || !storyCanvas) return null;
const ctx = storyCanvas.getContext('2d');
const w = storyCanvas.width;
const h = storyCanvas.height;
const seasonKey = Object.keys(seasons).find(
key => seasons[key].label === lastResult.label
);
if (seasonKey && storyImages[seasonKey]) {
const img = new Image();
await new Promise(resolve => {
img.onload = resolve;
img.src = storyImages[seasonKey];
});
ctx.drawImage(img, 0, 0, w, h);
}
ctx.fillStyle = '#1f2937';
ctx.font = 'bold 68px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\"';
ctx.fillText('心の季節診断', 60, 210);
ctx.font = 'bold 140px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\"';
ctx.fillText(lastResult.label, 60, 400);
ctx.font = 'bold 44px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\"';
ctx.fillText(lastResult.phase, 60, 480);
ctx.fillStyle = '#1f2937';
ctx.font = '36px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\"';
wrapTextJP(ctx, lastResult.summary, 60, 560, w-120, 52);
return storyCanvas.toDataURL('image/png');
}
async function shareStory(lastResult, storyCanvas){
const dataUrl = await drawStory(lastResult, storyCanvas);
if (!dataUrl) return;
const res = await fetch(dataUrl);
const blob = await res.blob();
const file = new File(
[blob],
'kokoro-season-' + new Date().toISOString().slice(0,16).replace(/[-:T]/g,'') + '.png',
{ type: 'image/png' }
);
if (navigator.canShare && navigator.canShare({ files: [file] })) {
try {
await navigator.share({
files: [file],
title: '心の季節診断',
text: '心の季節診断の結果画像'
});
return;
} catch (e) {
// キャンセル時は何もしない
return;
}
}
const a = document.createElement('a');
a.href = dataUrl;
a.download = 'kokoro-season-' + new Date().toISOString().slice(0,16).replace(/[-:T]/g,'') + '.png';
document.body.appendChild(a);
a.click();
a.remove();
alert('画像を保存できる形式で開きました。iPhoneでは長押し、または共有から保存してください。');
}
function init(){
const start = document.getElementById('tq-start');
const startBtn = document.getElementById('tq-start-btn');
const quiz = document.getElementById('tq-quiz');
const progress = document.getElementById('tq-progress');
const qEl = document.getElementById('tq-question');
const optEl = document.getElementById('tq-options');
const prevBtn = document.getElementById('tq-prev');
const result = document.getElementById('tq-season-result');
const visual = document.getElementById('tq-season-visual');
const nameEl = document.getElementById('tq-season-name');
const phaseEl = document.getElementById('tq-season-phase');
const descEl = document.getElementById('tq-season-desc');
const copyBtn = document.getElementById('tq-copy');
const shareBtn = document.getElementById('tq-share');
const storyBtn = document.getElementById('tq-story');
const retryBtn = document.getElementById('tq-retry');
const storyCanvas = document.getElementById('tq-story-canvas');
if (!start || !startBtn || !quiz || initialized) return;
initialized = true;
function showResult(counts){
const entries = Object.entries(counts).sort((a,b)=>{
if (b[1] !== a[1]) return b[1] - a[1];
return cycle.indexOf(a[0]) - cycle.indexOf(b[0]);
});
const topCount = entries[0][1];
const topKeys = entries.filter(([k,v])=>v === topCount).map(([k])=>k);
let res;
if (topKeys.length === 1){
const k = topKeys[0];
res = { ...seasons[k] };
visual.style.backgroundImage = `url(${storyImages[k]})`;
visual.style.backgroundSize = 'cover';
visual.style.backgroundPosition = 'center';
} else if (topKeys.length === 2 && areAdjacent(topKeys[0], topKeys[1]))
{
const ordered =
[...topKeys].sort((a,b)=>cycle.indexOf(a)-cycle.indexOf(b));
const key = `${ordered[0]}-${ordered[1]}`;
const h = hybrids[key];
res = { ...h };
visual.style.backgroundImage = `url(${storyImages[ordered[0]]})`;
visual.style.backgroundSize = 'cover';
visual.style.backgroundPosition = 'center';
if (!res.c1) res.c1 = (seasons[ordered[0]]||{}).c1;
if (!res.c2) res.c2 = (seasons[ordered[1]]||{}).c2;
} else {
res = {
label:'循環の交差点',
phase:'混ざり合う季節',
summary:'季節が分かれているのは、揺れている証拠。結論より観察を優先。',
desc:`「これだ」と言い切れないのは、鋭さが足りないからではありません。
回っている要素が多いだけです。そして多くの場合、あなたは止められないのではなく、同時進行で混ざっている。
・選択がまだ決めつけになっていない
・複数の自分を持てる（柔軟性）
・記録を残す
・休む
・外圧の低い人間関係の中にいる
・一発逆転の行動
・焦りの自己合理化
・誰かの尺度をそのまま採用する`,
c1:'#f1f3f5', c2:'#dce3ea'
};
visual.style.backgroundImage = `url(${storyImages.winter})`;
visual.style.backgroundSize = 'cover';
visual.style.backgroundPosition = 'center';
}
lastResult = res;
nameEl.textContent = res.label;
phaseEl.textContent = res.phase;
descEl.textContent = res.desc;
quiz.hidden = true;
result.hidden = false;
result.scrollIntoView({ behavior:'smooth' });
}
function render(i){
const qu = questions[i];
progress.textContent = `${i+1} / ${questions.length}`;
qEl.textContent = qu.q;
optEl.innerHTML = '';
qu.options.forEach(o => {
const label = document.createElement('label');
const input = document.createElement('input');
input.type = 'radio';
input.name = 'tq-q';
input.value = o.value;
if (answers[i] === o.value) { input.checked = true; label.classList.add('is-selected'); }
input.addEventListener('change', () => {
answers[i] = o.value;
if (idx < questions.length - 1){
idx++;
render(idx);
} else {
const counts = {spring:0,summer:0,autumn:0,winter:0};
answers.forEach(v => counts[v]++);
showResult(counts);
}
});
label.appendChild(input);
label.append(o.label);
optEl.appendChild(label);
});
prevBtn.hidden = false;
}
startBtn.addEventListener('click', () => {
answers = new Array(questions.length).fill(null);
idx = 0;
lastResult = null;
start.hidden = true;
quiz.hidden = false;
render(idx);
quiz.scrollIntoView({behavior:'smooth'});
});
prevBtn.addEventListener('click', () => {
if (idx === 0){
quiz.hidden = true;
start.hidden = false;
start.scrollIntoView({
behavior:'smooth'
});
return;
}
idx--;
render(idx);
});
if (copyBtn) copyBtn.addEventListener('click', () =>
copyRecord(copyBtn));
if (shareBtn) shareBtn.addEventListener('click', () =>
shareRecord(copyBtn));
if (storyBtn) storyBtn.addEventListener('click', () =>
shareStory(lastResult, storyCanvas));
if (retryBtn) retryBtn.addEventListener('click', () => {
answers = new Array(questions.length).fill(null);
idx = 0;
lastResult = null;
nameEl.textContent = '';
phaseEl.textContent = '';
descEl.textContent = '';
visual.style.backgroundImage = '';
result.hidden = true;
start.hidden = false;
quiz.hidden = true;
start.scrollIntoView({behavior:'smooth'});
});
}
function run(){
  function waitForRoot(attempts){
    if (document.getElementById('tq-start')) {
      init();
      return;
    }
    if (attempts <= 0) {
      console.warn('[心の季節診断] 初期化対象が見つかりません。');
      return;
    }
    requestAnimationFrame(() => waitForRoot(attempts - 1));
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', () => waitForRoot(120), { once:true });
  } else {
    waitForRoot(120);
  }
}
run();
})();
</script>
<div class="tq-season" id="tqSeasonRoot">
  <div class="tqs-instrument" aria-hidden="true">
    <span class="tqs-instrument-badge">SEASON SCAN</span>
    <span class="tqs-orbit">
      <span class="tqs-dot tqs-dot--spring"></span>
      <span class="tqs-dot tqs-dot--summer"></span>
      <span class="tqs-dot tqs-dot--autumn"></span>
      <span class="tqs-dot tqs-dot--winter"></span>
      <span class="tqs-center"></span>
    </span>
    <div class="tqs-instrument-label">
      <span>INNER CLIMATE / PRESENT</span>
      <span>SPRING · SUMMER · AUTUMN · WINTER</span>
    </div>
  </div>

<div id="tq-start" class="stage">
<div class="tqs-page-title" role="heading" aria-level="1">心の季節診断</div>
<p class="lead">
いまの「心」を季節として描き出します。<br>これは診断というより、観察のための装置です。
</p>
<button type="button" id="tq-start-btn"
class="primary">診断をはじめる</button>
</div>
<div id="tq-quiz" class="stage" hidden>
<div id="tq-question" class="question" role="heading" aria-level="2"></div>
<div id="tq-options" class="options"></div>
<div class="quiz-footer">
<div class="stage-actions">
<button type="button" id="tq-prev" class="ghost">もどる</button>
</div>
<div id="tq-progress" class="progress"></div>
</div>
<div class="sub">回答すると自動で進みます。迷ったら近いほうで。</div>
</div>
<section id="tq-season-result" class="stage" aria-live="polite" hidden>
<div class="tqs-result-title" role="heading" aria-level="2">あなたの心の季節</div>
<div class="result-card">
<div class="visual" id="tq-season-visual" aria-hidden="true"></div>
<div class="text">
<p class="season" id="tq-season-name"></p>
<p class="phase" id="tq-season-phase"></p>
<p class="desc" id="tq-season-desc"></p>
</div>
</div>
<div class="actions" id="tq-result-actions">
<button type="button" class="primary"
id="tq-copy">結果コピー</button>
<button type="button" class="primary"
id="tq-share">結果をシェア</button>
<button type="button" class="primary"
id="tq-story">画像を保存</button>
<button type="button" class="ghost"
id="tq-retry">再診断</button>
</div>
</section>
<canvas id="tq-story-canvas" width="1080" height="1920" hidden
aria-hidden="true"></canvas>
</div>


<style data-wp-block-html="css">
.p-fixBtnWrap {
border-radius: 999px !important;
overflow: hidden !important;
border: 0 !important;
background:
radial-gradient(
circle at 50% 50%,
rgba(255,255,255,.00) 0%,
rgba(255,255,255,.02) 58%,
rgba(255,255,255,.12) 100%
) !important;
backdrop-filter: blur(.3px) saturate(135%) contrast(108%)
brightness(106%);
-webkit-backdrop-filter: blur(.3px) saturate(135%) contrast(108%)
brightness(106%);
box-shadow:
inset 2px 2px 2px rgba(255,255,255,.55),
inset 0 0 14px rgba(255,255,255,.28),
0 3px 8px rgba(0,0,0,.03) !important;
}
.p-fixBtnWrap::before {
content: "";
position: absolute;
inset: 1px;
border-radius: 999px;
pointer-events: none;
background:
linear-gradient(
145deg,
rgba(255,255,255,.75) 0%,
rgba(255,255,255,.28) 18%,
rgba(255,255,255,0) 42%
);
mix-blend-mode: screen;
opacity: .65;
}
.p-fixBtnWrap:hover {
background: #2f4f4f !important;
box-shadow: none !important;
}
.c-fixBtn__icon {
color: #2f2f2f !important;
text-shadow: none !important;
-webkit-text-stroke: 0 !important;
}
.p-fixBtnWrap:hover .c-fixBtn__icon {
color: #fff !important;
}
.p-fixBtnWrap a,
.p-fixBtnWrap button,
.p-fixBtnWrap [class*="fixBtn"],
.p-fixBtnWrap [class*="icon"] {
border: 0 !important;
outline: 0 !important;
box-shadow: none !important;
background: transparent !important;
}
.p-fixBtnWrap {
width: 52px !important;
height: 52px !important;
position: fixed !important;
display: block !important;
transition:
width .22s ease,
background-color .18s ease,
box-shadow .18s ease !important;
}
.p-fixBtnWrap .c-fixBtn__icon {
position: absolute !important;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
z-index: 2;
}
.p-fixBtnWrap::after {
content: "Page top";
position: absolute;
top: 50%;
left: 54px;
transform: translateY(-55%);
z-index: 2;
opacity: 0;
max-width: 0;
overflow: hidden;
white-space: nowrap;
height: 24px;
line-height: 24px;
font-size: 14px;
letter-spacing: .03em;
color: #fff;
transition:
opacity .15s ease,
max-width .22s ease;
}
.p-fixBtnWrap:hover {
width: 132px !important;
}
.p-fixBtnWrap:hover .c-fixBtn__icon {
left: 28px !important;
}
.p-fixBtnWrap:hover::after {
opacity: 1;
max-width: 80px;
}

</style>


]]></content:encoded>
					
					<wfw:commentRss>https://tranquilguides.com/season-within/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1015</post-id>	</item>
	</channel>
</rss>
