<?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/%e3%82%bb%e3%83%ab%e3%83%95%e3%82%b1%e3%82%a2/feed/" rel="self" type="application/rss+xml" />
	<link>https://tranquilguides.com</link>
	<description>心地よい暮らしの始め方</description>
	<lastBuildDate>Fri, 26 Jun 2026 03:18:49 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://tranquilguides.com/wp-content/uploads/2026/01/cropped-IMG_3364-32x32.jpeg</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/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>
		<guid isPermaLink="false">https://tranquilguides.com/?p=1174</guid>

					<description><![CDATA[<p><img src="https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260626_072229-1024x683.jpg" class="webfeedsFeaturedVisual" /></p>頭痛や低気圧、眠れない夜、気力のない日にふらっと立ち寄れる施設。暖炉や給水所、セーフルームや深夜待合室、東屋など]]></description>
										<content:encoded><![CDATA[<p><img src="https://tranquilguides.com/wp-content/uploads/2026/06/IMG_20260626_072229-1024x683.jpg" class="webfeedsFeaturedVisual" /></p>
<style data-wp-block-html="css">
.shelter-wrap {
  width: 100%;
  max-width: 100%;
  margin: 24px auto;
  padding: 0 10px;
  color: #3f3a34;
  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: 32px;
  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: 0 18px 50px rgba(70,55,35,.08);
  text-align: center;
  box-sizing: border-box;
}

.shelter-kicker {
  margin: 0 0 22px;
  font-size: 12px;
  letter-spacing: .12em;
  color: #8d8171;
}

.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: #8d8171;
}

.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: rgba(255,255,255,.58);
  color: #4a4238;
  padding: 14px 22px;
  font-size: 15px;
  font-family: inherit;
  cursor: pointer;
}

.shelter-buttons button:hover,
.shelter-room button:hover {
  background: rgba(255,255,255,.82);
}

.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: #8d8171;
}

.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: "<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f319.png" alt="🌙" class="wp-smiley" style="height: 1em; max-height: 1em;" />";
  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;
  resize: none;
  box-sizing: border-box;
}

.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: #8d8171;
  margin-bottom: 5 !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: "<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f343.png" alt="🍃" class="wp-smiley" style="height: 1em; max-height: 1em;" />";
  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;
  }
}
</style>

<script data-wp-block-html="js">
document.addEventListener("DOMContentLoaded", function () {
  const home = document.getElementById("shelterHome");

  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")
  };

const fireText = document.getElementById("tgFireText");
const fire = document.querySelector(".tg-fire");

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

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

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

let lastLine = "";
let fireEnteredAt = Date.now();

function pickLine(lines) {
  let line = lines[Math.floor(Math.random() * lines.length)];

  if (line === lastLine && lines.length > 1) {
    return pickLine(lines);
  }

  lastLine = line;
  return line;
}

function getFirePhase() {
  const stayed = Date.now() - fireEnteredAt;

  if (stayed < 15000) {
    return {
      lines: [],
      minDelay: 15000,
      maxDelay: 15000,
      silentRate: 0
    };
  }

  if (stayed < 80000) {
    return {
      lines: earlyLines,
      minDelay: 12000,
      maxDelay: 28000,
      silentRate: 0
    };
  }

  if (stayed < 120000) {
    return {
      lines: earlyLines.concat(middleLines),
      minDelay: 18000,
      maxDelay: 40000,
      silentRate: 0
    };
  }

  if (stayed < 240000) {
    return {
      lines: middleLines,
      minDelay: 25000,
      maxDelay: 55000,
      silentRate: 0.10
    };
  }

  if (stayed < 300000) {
    return {
      lines: middleLines.concat(lateLines),
      minDelay: 35000,
      maxDelay: 70000,
      silentRate: 0.10
    };
  }

  return {
    lines: lateLines,
    minDelay: 45000,
    maxDelay: 90000,
    silentRate: 0.10
  };
}

function randomDelay(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}

function showFireplaceLine() {
  const phase = getFirePhase();

  fireText.classList.remove("is-visible");

  setTimeout(function () {
    const silent = Math.random() < phase.silentRate;

    if (silent) {
      fireText.textContent = "";
      fireText.classList.add("is-visible");

      setTimeout(showFireplaceLine, 10000);
      return;
    }

    if (phase.lines.length > 0) {
      fireText.textContent = pickLine(phase.lines);
    }

    fireText.classList.add("is-visible");

    setTimeout(function () {
      showFireplaceLine();
    }, randomDelay(phase.minDelay, phase.maxDelay));
  }, 1200);
}

fireText.textContent = "火がついています。";
fireText.classList.add("is-visible");

setTimeout(showFireplaceLine, 15000);

function flareFire() {
  if (!fire) return;

  fire.classList.add("is-strong");

  setTimeout(function () {
    fire.classList.remove("is-strong");
  }, 4200);

  const nextFlareDelay = Math.floor(Math.random() * 70000) + 30000;
  setTimeout(flareFire, nextFlareDelay);
}

const firstFlareDelay = Math.floor(Math.random() * 25000) + 12000;
setTimeout(flareFire, firstFlareDelay);

function createSpark() {
  if (!fire) return;

  const spark = document.createElement("span");
  spark.className = "tg-spark";

  const x = Math.floor(Math.random() * 50) - 25;
  spark.style.setProperty("--spark-x", x + "px");

  fire.appendChild(spark);

  setTimeout(function () {
    spark.remove();
  }, 3000);

  const nextSparkDelay = Math.floor(Math.random() * 90000) + 30000;
  setTimeout(createSpark, nextSparkDelay);
}

const firstSparkDelay = Math.floor(Math.random() * 30000) + 15000;
setTimeout(createSpark, firstSparkDelay);

function createAsh() {
  if (!fire) return;

  const ash = document.createElement("span");
  ash.className = "tg-ash";

  const x = Math.floor(Math.random() * 44) - 22;
  ash.style.setProperty("--ash-x", x + "px");

  fire.appendChild(ash);

  setTimeout(function () {
    ash.remove();
  }, 4200);

  const nextAshDelay = Math.floor(Math.random() * 120000) + 45000;
  setTimeout(createAsh, nextAshDelay);
}

const firstAshDelay = Math.floor(Math.random() * 45000) + 25000;
setTimeout(createAsh, firstAshDelay);

function warmGlow() {
  const roomFire = document.getElementById("roomFire");
  if (!roomFire) return;

  roomFire.classList.add("is-warm-glow");

  setTimeout(function () {
    roomFire.classList.remove("is-warm-glow");
  }, 5200);

  const nextGlowDelay = Math.floor(Math.random() * 100000) + 40000;
  setTimeout(warmGlow, nextGlowDelay);
}

const firstGlowDelay = Math.floor(Math.random() * 35000) + 18000;
setTimeout(warmGlow, firstGlowDelay);

const iconOff = `
<svg xmlns="http://www.w3.org/2000/svg" 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 xmlns="http://www.w3.org/2000/svg" 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.volume = 0.15;

const fireSoundBtn = document.getElementById("fireSoundBtn");

if (fireSoundBtn) {
  fireSoundBtn.innerHTML = iconOff;
  fireSoundBtn.setAttribute("aria-label", "暖炉の音をつける");

  fireSoundBtn.addEventListener("click", function () {
    if (fireAudio.paused) {
      fireAudio.play();

      fireSoundBtn.innerHTML = iconOn;
      fireSoundBtn.classList.add("is-on");
      fireSoundBtn.setAttribute("aria-label", "暖炉の音を消す");
    } else {
      fireAudio.pause();
      fireAudio.currentTime = 0;

      fireSoundBtn.innerHTML = iconOff;
      fireSoundBtn.classList.remove("is-on");
      fireSoundBtn.setAttribute("aria-label", "暖炉の音をつける");
    }
  });
}

window.stopFireAudio = function () {
  fireAudio.pause();
  fireAudio.currentTime = 0;

  if (fireSoundBtn) {
    fireSoundBtn.innerHTML = iconOff;
    fireSoundBtn.classList.remove("is-on");
    fireSoundBtn.setAttribute("aria-label", "暖炉の音をつける");
  }
};
}






  if (!home || !rooms.fire || !rooms.safe || !rooms.water || !rooms.night || !rooms.lost || !rooms.azumaya) {
    return;
  }

  const safeFadeMsg = document.getElementById("safeFadeMsg");
  let safeTimer = null;

  const azumayaFadeMsg = document.getElementById("azumayaFadeMsg");
  let azumayaTimer = null;

  document.querySelectorAll("[data-room]").forEach(function (button) {
    button.addEventListener("click", function () {
      const roomName = button.getAttribute("data-room");

      home.hidden = true;

      Object.keys(rooms).forEach(function (key) {
        rooms[key].hidden = true;
      });

      rooms[roomName].hidden = false;
      window.scrollTo({ top: 0, behavior: "smooth" });

      if (roomName === "safe" && safeFadeMsg) {
        safeFadeMsg.classList.remove("is-visible");

        if (safeTimer) {
          clearTimeout(safeTimer);
        }

        safeTimer = setTimeout(function () {
          safeFadeMsg.classList.add("is-visible");
        }, 2600);
      }

      if (roomName === "azumaya" && azumayaFadeMsg) {
        azumayaFadeMsg.classList.remove("is-visible");

        if (azumayaTimer) {
          clearTimeout(azumayaTimer);
        }

        azumayaTimer = setTimeout(function () {
          azumayaFadeMsg.classList.add("is-visible");
        }, 2200);
      }
    });
  });

  document.querySelectorAll(".backBtn").forEach(function (button) {
    button.addEventListener("click", function () {

if (typeof window.stopFireAudio === "function") {
  window.stopFireAudio();
}

      Object.keys(rooms).forEach(function (key) {
        rooms[key].hidden = true;
      });

      if (safeTimer) {
        clearTimeout(safeTimer);
      }

      if (azumayaTimer) {
        clearTimeout(azumayaTimer);
      }

      if (safeFadeMsg) {
        safeFadeMsg.classList.remove("is-visible");
      }

      if (azumayaFadeMsg) {
        azumayaFadeMsg.classList.remove("is-visible");
      }

      home.hidden = false;
      window.scrollTo({ top: 0, behavior: "smooth" });
    });
  });

  const waterBtn = document.getElementById("waterBtn");
  const waterMsg = document.getElementById("waterMsg");

  const waterMessages = [
    "水が通っただけで、少し戻ってきています。",
    "それだけで十分です。",
    "もう一口いけたら、それも十分です。",
    "身体が、少し思い出したかもしれません。",
    "今日はここまででも大丈夫です。",
    "えらくなくていいです。飲めた、で終わりです。"
  ];

  let waterCount = 0;

  if (waterBtn && waterMsg) {
    waterBtn.addEventListener("click", function () {
      if (waterCount === 0) {
        waterMsg.textContent = waterMessages[0];
        waterMsg.classList.add("is-visible");
      } else {
        const randomIndex = Math.floor(Math.random() * waterMessages.length);
        waterMsg.textContent = waterMessages[randomIndex];
      }

      waterCount += 1;
    });
  }

  const nightBtn = document.getElementById("nightBtn");
  const nightMsg = document.getElementById("nightMsg");

  const nightMessages = [
    "朝にならなくても、ここは開いています。",
    "眠れないままでも、今はここにいて大丈夫です。",
    "考えごとは、少し遠くに置いておきましょう。",
    "夜が長い日は、短い言葉だけで十分です。",
    "目を閉じなくても、休んでいる時間はあります。"
  ];

  if (nightBtn && nightMsg) {
    nightBtn.addEventListener("click", function () {
      const randomIndex = Math.floor(Math.random() * nightMessages.length);
      nightMsg.textContent = nightMessages[randomIndex];
    });
  }

  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");

  let lostTimer = null;

  if (lostBtn && lostInput && lostReceipt && lostItem && lostMsg) {
    lostBtn.addEventListener("click", function () {
      const value = lostInput.value.trim();
      const hpField = document.getElementById("lostHp");
      const hp = hpField ? hpField.value : "";

      if (lostTimer) {
        clearTimeout(lostTimer);
      }

      lostReceipt.classList.remove("is-visible");
      lostReceipt.classList.remove("is-fading");

      fetch("/wp-admin/admin-ajax.php", {
        method: "POST",
        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
        })
      })
        .then(function (response) {
          return response.json();
        })
        .then(function (data) {
          if (value === "") {
            lostItem.textContent = "";
          } else {
            lostItem.textContent = "「" + value + "」";
          }

          if (data.success) {
            lostMsg.textContent = data.data.message;
          } else {
            lostMsg.textContent = data.data.message || "お預りできませんでした。";
          }

          lostInput.value = "";

          setTimeout(function () {
            lostReceipt.classList.add("is-visible");
          }, 30);

          lostTimer = setTimeout(function () {
            lostReceipt.classList.add("is-fading");
          }, 5200);
        })
        .catch(function () {
          lostItem.textContent = "";
          lostMsg.textContent = "ただいま混み合っております。少し時間をおいてから、もう一度いらしてください。";

          setTimeout(function () {
            lostReceipt.classList.add("is-visible");
          }, 30);
        });
    });
  }

  const azumayaBtn = document.getElementById("azumayaBtn");
  const azumayaMsg = document.getElementById("azumayaMsg");

  const azumayaMessages = [
    "今日は雲がゆっくりです。",
    "鳥が一羽、通りました。",
    "少しだけ、雨の匂いがします。",
    "木陰があります。",
    "今日は誰もいません。",
    "何も変えなくても、風は通ります。"
  ];

  if (azumayaBtn && azumayaMsg) {
    azumayaBtn.addEventListener("click", function () {
      const randomIndex = Math.floor(Math.random() * azumayaMessages.length);
      azumayaMsg.textContent = azumayaMessages[randomIndex];
    });
  }
});
</script>

<div class="shelter-wrap">
  <section class="shelter-home" id="shelterHome">
    <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"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 暖炉</button>
      <button type="button" data-room="safe"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6cf.png" alt="🛏" class="wp-smiley" style="height: 1em; max-height: 1em;" /> セーフルーム</button>
      <button type="button" data-room="water"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a7.png" alt="💧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 給水所</button>
      <button type="button" data-room="night"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f319.png" alt="🌙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 深夜待合室</button>
      <button type="button" data-room="lost"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ee.png" alt="📮" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 落とし物センター</button>
      <button type="button" data-room="azumaya"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f343.png" alt="🍃" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <ruby>東屋<rt>あずまや</rt></ruby></button>

    </div>

    <p class="shelter-note">途中で閉じても大丈夫ですよ。</p>
  </section>

<section class="shelter-room" id="roomFire" hidden>

  <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="">
    <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="">
    <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="">
    <div class="night-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f319.png" alt="🌙" class="wp-smiley" style="height: 1em; max-height: 1em;" /></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="">
  <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="3" placeholder="例えば、やる気、体力、集中力、誰かとお話しする元気など"></textarea>

<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" aria-live="polite">
    <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="">
  <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">
.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/">
Return to 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;
}
</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>



<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 [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>
]]></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>
	</channel>
</rss>
