/* ═══════════════════════════════════════════════════════════════
   YUZUYA RYOKAN — youxi--1--99 index stylesheet
   A night-blue onsen inn: indigo noren over the entry, a round
   window steaming above the bath, kaiseki trays, shoji doors,
   guest haiku on a hanging scroll. Classes s99-*.
   ═══════════════════════════════════════════════════════════════ */

:root {
  --bg: #141B2B;
  --panel: #1B2438;
  --panel-2: #232E47;
  --accent: #5A7AE8;
  --accent2: #3B6AC4;
  --text: #F5EBDD;
  --soft: #9DA8BE;
  --line: rgba(90, 122, 232,.28);
  --wood: #8A6248;
  --wood-deep: #5C3F2E;
  --paper: #F5EBDD;
  --ink: #2A2438;
  --sakura: #E8A8B8;
  --summer: #7FB069;
  --autumn: #D98E4A;
  --fh: 'Palatino Linotype', Palatino, Georgia, serif;
  --fb: 'Segoe UI', sans-serif;
  --fm: 'Courier New', monospace;
  --sec-gap: 30px;
}

* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html { scroll-behavior: smooth; }

body {
  background:
    radial-gradient(ellipse at 50% -8%, rgba(90, 122, 232,.14), transparent 58%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.022) 0 1px, transparent 1px 38px),
    var(--bg);
  color: var(--text);
  font-family: var(--fb);
  font-size: 15px;
  line-height: 1.55;
  min-height: 100vh;
  overflow-x: hidden;
}

[v-cloak] { display: none; }
a { color: inherit; text-decoration: none; display: block; }
img { display: block; max-width: 100%; }
button { font-family: inherit; border: none; background: none; cursor: pointer; color: inherit; }
::selection { background: var(--accent); color: #fff; }

.wrap { max-width: 620px; margin: 0 auto; padding: 0 18px; }
.sec { margin-top: var(--sec-gap); min-width: 0; }

/* ══════════════════════════════════════════════════════════════
   SECTION PANEL — tatami room edge
   ══════════════════════════════════════════════════════════════ */
.sec {
  position: relative;
  background: linear-gradient(180deg, rgba(35,46,71,.62), rgba(27,36,56,.5) 58%, rgba(20,27,43,.4));
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 16px 16px 18px;
  box-shadow: 0 12px 26px -16px rgba(0,0,0,.75), inset 0 1px 0 rgba(245,235,221,.05);
}
.sec::after {
  content: '';
  position: absolute; left: -6px; right: -6px; bottom: -7px; height: 9px;
  background: linear-gradient(180deg, #A8826A, #6E4E38 55%, #4A3222);
  border-radius: 3px;
  box-shadow: 0 5px 9px -4px rgba(0,0,0,.85), inset 0 1px 0 rgba(245,235,221,.14);
}
.sec:nth-of-type(even) {
  background:
    radial-gradient(120% 70% at 50% 0%, rgba(90,122,232,.08), transparent 70%),
    linear-gradient(180deg, rgba(35,46,71,.55), rgba(20,27,43,.4));
}

/* ══════════════════════════════════════════════════════════════
   CALLOUT — brushed label + hanko dot
   ══════════════════════════════════════════════════════════════ */
.callout { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; min-height: 24px; }
.callout b {
  flex: none;
  font-family: var(--fh);
  font-variant: small-caps;
  font-size: 12.5px; font-weight: 700;
  letter-spacing: .1em;
  color: var(--ink);
  background: var(--paper);
  padding: 3px 13px;
  border-radius: 2px;
  box-shadow: 0 3px 7px -2px rgba(0,0,0,.6), inset 0 0 0 1px rgba(90,60,40,.35);
}
.callout span {
  flex: 1; min-width: 0;
  font-family: var(--fm);
  font-style: italic;
  font-size: 10.5px;
  color: var(--soft);
  letter-spacing: .06em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.callout::after { content: ''; flex: 1; border-top: 1.5px dashed rgba(138, 98, 72,.5); }
.co-hanko {
  flex: none;
  width: 13px; height: 13px;
  background: #B03A48;
  border-radius: 3px;
  transform: rotate(-4deg);
  opacity: .85;
  box-shadow: inset 0 0 0 2px rgba(245,235,221,.5);
}

/* ══════════════════════════════════════════════════════════════
   s99 HEADER — indigo noren curtain
   ══════════════════════════════════════════════════════════════ */
.hdr {
  position: relative; z-index: 50;
  background: linear-gradient(180deg, #1E2A44, #141B2B);
  border-bottom: 2px solid var(--wood);
}
.hdr-in { display: flex; align-items: center; gap: 10px; padding: 12px 0 8px; }
.hdr-name {
  flex: 1; min-width: 0;
  font-family: var(--fh);
  font-size: 18.5px; font-weight: 700;
  letter-spacing: .06em;
  color: var(--paper);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  display: flex; align-items: center; gap: 9px;
}
.s99-seal {
  flex: none;
  width: 15px; height: 15px;
  background: var(--accent2);
  clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
  border-radius: 2px;
  box-shadow: inset 0 0 0 2px rgba(245,235,221,.45);
}
.hdr-search {
  flex: none;
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  color: var(--accent);
  border: 1.5px solid var(--line);
  border-radius: 4px;
  background: rgba(0,0,0,.25);
}
/* the noren: six fabric strips with notched hems */
.s99-curtain { display: flex; gap: 5px; padding: 0 0 10px; background: rgba(0,0,0,.22); }
.s99-curtain i {
  flex: 1; height: 34px;
  background:
    repeating-linear-gradient(90deg, rgba(245,235,221,.07) 0 3px, transparent 3px 11px),
    linear-gradient(180deg, #44529B, #2E3A6E 80%, #242F57);
  clip-path: polygon(0 0, 100% 0, 100% 78%, 50% 100%, 0 78%);
  box-shadow: inset 0 1px 0 rgba(245,235,221,.12);
}
.s99-curtain i:nth-child(2) { filter: brightness(1.1); }
.s99-curtain i:nth-child(4) { filter: brightness(1.05); }
.s99-curtain i:nth-child(6) { filter: brightness(1.15); }

/* ══════════════════════════════════════════════════════════════
   NAV + SEARCH — corridor label rails
   ══════════════════════════════════════════════════════════════ */
.nav-chips { display: flex; gap: 8px; overflow-x: auto; padding: 14px 2px 4px; scrollbar-width: none; }
.nav-chips::-webkit-scrollbar { display: none; }
.nchip {
  flex: none;
  font-family: var(--fh);
  font-size: 12.5px; font-weight: 700;
  color: var(--text);
  background: linear-gradient(180deg, rgba(90,122,232,.1), rgba(90,122,232,0) 45%), var(--panel);
  border: 1px solid var(--line);
  border-bottom: 3px solid rgba(138, 98, 72,.55);
  border-radius: 3px;
  padding: 7px 14px;
  transition: transform .16s ease;
}
.nchip.on {
  background: linear-gradient(180deg, #7C97F0, var(--accent2));
  color: #F5EBDD;
  border-color: var(--accent);
}
.nchip:active { transform: translateY(1px); }

.srch-bar { display: flex; gap: 8px; margin-top: 12px; }
.srch-input {
  flex: 1; min-width: 0;
  background: var(--paper);
  border: 1.5px solid var(--wood);
  border-radius: 3px;
  padding: 10px 13px;
  font-family: var(--fm);
  font-size: 13px;
  color: var(--ink);
  outline: none;
  box-shadow: 0 3px 8px -3px rgba(0,0,0,.55);
}
.srch-input::placeholder { color: rgba(42,36,56,.5); }
.srch-input:focus { border-color: var(--accent); }
.srch-go {
  flex: none;
  font-family: var(--fh);
  font-size: 12.5px; font-weight: 800; letter-spacing: .06em;
  color: #F5EBDD;
  background: linear-gradient(180deg, #7C97F0, var(--accent2));
  border: 1px solid rgba(0,0,0,.3);
  border-radius: 3px;
  padding: 0 16px;
  box-shadow: 0 3px 0 #24346B, 0 7px 14px -4px rgba(0,0,0,.5), inset 0 1px 0 rgba(245,235,221,.3);
  transition: transform .16s ease;
}
.srch-go:active { transform: translateY(2px); box-shadow: 0 1px 0 #24346B; }

/* ══════════════════════════════════════════════════════════════
   LOADING
   ══════════════════════════════════════════════════════════════ */
.loading-full { position: fixed; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center; background: var(--bg); }
.loading-bar { width: 120px; height: 4px; border-radius: 2px; background: var(--panel-2); overflow: hidden; margin: 0 auto 12px; }
.loading-bar::after { content: ''; display: block; width: 40%; height: 100%; background: var(--accent); border-radius: 2px; animation: ldslide 1s infinite; }
@keyframes ldslide { 0% { transform: translateX(-100%);} 100% { transform: translateX(350%);} }
.loading-txt { font-family: var(--fm); font-size: 11px; letter-spacing: .18em; color: var(--soft); }

/* ══════════════════════════════════════════════════════════════
   s99 HERO — round bath window with steam
   ══════════════════════════════════════════════════════════════ */
.round-window {
  display: flex; flex-wrap: wrap; align-items: center;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  border: 1.5px solid var(--line);
  border-radius: 10px;
  padding: 16px;
  box-shadow: 0 14px 28px -12px rgba(0,0,0,.8), inset 0 1px 0 rgba(245,235,221,.08);
}
.rw-win {
  flex: none;
  width: 128px; height: 128px;
  border-radius: 50%;
  overflow: hidden;
  position: relative;
  border: 6px solid var(--wood);
  box-shadow: 0 0 0 2px rgba(245,235,221,.25), 0 8px 18px rgba(0,0,0,.55), inset 0 0 14px rgba(0,0,0,.45);
  background: #0D1322;
}
.rw-win img { width: 100%; height: 100%; object-fit: cover; }
.rw-steam {
  position: absolute;
  width: 22px; height: 34px;
  border-radius: 50%;
  background: linear-gradient(180deg, rgba(245,235,221,.0), rgba(245,235,221,.45));
  filter: blur(4px);
  animation: s99steam 3.4s ease-in-out infinite;
  opacity: 0;
}
.rw-steam.s1 { left: 26%; bottom: 4px; animation-delay: 0s; }
.rw-steam.s2 { left: 58%; bottom: 4px; animation-delay: 1.7s; }
@keyframes s99steam {
  0% { transform: translateY(0) scale(.8); opacity: 0; }
  30% { opacity: .8; }
  100% { transform: translateY(-44px) scale(1.5); opacity: 0; }
}
.rw-body { flex: 1; min-width: 0; padding-left: 16px; }
.rw-k {
  display: block;
  font-family: var(--fm);
  font-size: 9.5px; letter-spacing: .18em; text-transform: uppercase;
  color: var(--accent);
}
.rw-nm {
  display: block;
  font-family: var(--fh);
  font-size: 21px; font-weight: 700;
  color: var(--paper);
  margin-top: 5px; line-height: 1.2;
  overflow-wrap: break-word;
}
.rw-ds {
  display: block;
  font-size: 12.5px;
  color: var(--soft);
  margin-top: 7px;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}
.rw-meta { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.rw-meta em {
  font-style: normal;
  font-family: var(--fm);
  font-size: 9.5px; letter-spacing: .1em; text-transform: uppercase;
  color: #F5EBDD;
  background: var(--accent2);
  border-radius: 3px;
  padding: 2px 9px;
}
.rw-stars { color: #E8C58E; font-size: 12.5px; letter-spacing: 2px; }
.rw-stars i { font-style: normal; }
.rw-stars i.off { opacity: .22; }
.rw-lattice {
  flex: 1 1 100%;
  display: flex; gap: 4px;
  margin-top: 12px;
  padding-top: 8px;
  border-top: 1.5px dashed rgba(138, 98, 72,.45);
}
.rw-lattice i {
  flex: 1; height: 5px;
  background: linear-gradient(90deg, var(--wood) 0 3px, transparent 3px);
  border-radius: 2px;
  opacity: .8;
}

/* tk-div: wooden ema plaques */
.tk-div { display: flex; gap: 16px; justify-content: center; padding: 4px 0 14px; }
.tk-div i {
  width: 46px; height: 30px;
  background: linear-gradient(180deg, #A8826A, #6E4E38);
  border-radius: 3px;
  position: relative;
  box-shadow: 0 4px 7px rgba(0,0,0,.45);
  transform: rotate(-2deg);
}
.tk-div i:nth-child(2n) { transform: rotate(2.4deg); background: linear-gradient(180deg, #94756A, #5C3F2E); }
.tk-div i:nth-child(3) { transform: rotate(-1deg); }
.tk-div i::before {
  content: '';
  position: absolute; top: -5px; left: 50%;
  width: 5px; height: 5px; margin-left: -2.5px;
  border-radius: 50%;
  background: var(--bg);
  box-shadow: inset 0 1px 2px rgba(0,0,0,.7);
}
.tk-div i::after {
  content: '';
  position: absolute; left: 6px; right: 6px; top: 9px;
  height: 1.4px;
  background: rgba(245,235,221,.4);
  box-shadow: 0 4.5px 0 rgba(245,235,221,.25);
}

/* ══════════════════════════════════════════════════════════════
   1) s99 KAISEKI — lacquer trays
   ══════════════════════════════════════════════════════════════ */
.s99-kaiseki { display: flex; flex-direction: column; gap: 10px; }
.s99-dish {
  display: flex; align-items: center; gap: 12px;
  background: linear-gradient(180deg, #2A2438, #1E1A2E);
  border: 1.5px solid #4A3F5E;
  border-radius: 4px;
  padding: 9px 12px 9px 9px;
  box-shadow: inset 0 1px 0 rgba(245,235,221,.08), 0 4px 9px -3px rgba(0,0,0,.5);
  position: relative;
}
.s99-dish::after {
  content: '';
  position: absolute; left: 8px; right: 8px; bottom: 2px;
  height: 3px;
  background: linear-gradient(90deg, transparent, rgba(245,235,221,.35) 12%, rgba(245,235,221,.35) 88%, transparent);
  border-radius: 2px;
}
.s99-dish-plate {
  flex: none;
  width: 54px; height: 54px;
  border-radius: 50%;
  background: radial-gradient(circle at 38% 32%, #3A3050, #221C34);
  border: 2.5px solid #B03A48;
  display: flex; align-items: center; justify-content: center;
  box-shadow: inset 0 0 0 2px rgba(245,235,221,.15);
  position: relative;
}
.s99-dish-plate img { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; }
.s99-dish-hashi {
  position: absolute; right: -7px; top: -4px;
  width: 3px; height: 26px;
  border-radius: 2px;
  background: linear-gradient(180deg, #C9B08A, #8A6A4A);
  box-shadow: 3px 0 0 -0.5px rgba(201,176,138,.8);
  transform: rotate(9deg);
}
.s99-dish-b { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.s99-dish-nm { font-weight: 700; font-size: 14px; color: var(--paper); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.s99-dish-ds { font-size: 11.5px; color: var(--soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.s99-dish-no {
  flex: none;
  font-family: var(--fm);
  font-size: 9px; font-weight: 700; letter-spacing: .14em;
  color: #E8C58E;
  border: 1px solid rgba(232,197,142,.5);
  border-radius: 3px;
  padding: 2px 7px;
}

/* ══════════════════════════════════════════════════════════════
   2) s99 ENGAWA — veranda planks with garden lanterns
   ══════════════════════════════════════════════════════════════ */
.s99-engawa {
  display: flex; gap: 11px;
  overflow-x: auto;
  padding: 4px 2px 16px;
  scrollbar-width: none;
  position: relative;
}
.s99-engawa::-webkit-scrollbar { display: none; }
.s99-engawa::after {
  content: '';
  position: absolute; left: 0; right: 0; bottom: 8px;
  height: 5px;
  background: repeating-linear-gradient(90deg, #A8826A 0 46px, #8A6248 46px 50px);
  border-radius: 2px;
  box-shadow: 0 3px 6px -2px rgba(0,0,0,.6);
}
.s99-plank { flex: none; width: 86px; text-align: center; }
.s99-lantern {
  display: block;
  width: 14px; height: 18px;
  margin: 0 auto 6px;
  border-radius: 7px 7px 3px 3px;
  background: linear-gradient(180deg, #F5EBDD, #E8C58E);
  box-shadow: 0 0 12px rgba(232,197,142,.35), 0 2px 3px rgba(0,0,0,.4);
  border: 1px solid rgba(138,98,72,.5);
}
.s99-plank:nth-child(3n) .s99-lantern { background: linear-gradient(180deg, #E8A8B8, #D98E4A); box-shadow: 0 0 12px rgba(232,168,184,.35); }
.s99-plank-wood {
  display: block;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  border: 1.5px solid var(--line);
  border-radius: 3px;
  padding: 7px 6px 8px;
  box-shadow: 0 4px 9px rgba(0,0,0,.45);
}
.s99-plank-wood img { width: 70px; height: 70px; border-radius: 3px; margin: 0 auto; border: 1px solid rgba(245,235,221,.2); }
.s99-plank-nm {
  display: block;
  font-size: 11.5px; font-weight: 700;
  color: var(--paper);
  margin-top: 6px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ══════════════════════════════════════════════════════════════
   3) s99 SHOJI — lattice doors
   ══════════════════════════════════════════════════════════════ */
.s99-shoji { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 10px; }
.s99-door {
  position: relative;
  background: linear-gradient(180deg, #F2E7D4, #E4D6BC);
  border: 4px solid var(--wood);
  border-radius: 2px;
  overflow: hidden;
  box-shadow: 0 6px 12px -4px rgba(0,0,0,.55), inset 0 0 0 1px rgba(138,98,72,.35);
}
.s99-door-frame { position: absolute; inset: 0; z-index: 2; pointer-events: none; }
.s99-door-frame i { position: absolute; background: var(--wood); opacity: .85; }
.s99-door-frame i:nth-child(1) { left: 0; right: 0; top: 32%; height: 3.5px; }
.s99-door-frame i:nth-child(2) { left: 0; right: 0; top: 66%; height: 3.5px; }
.s99-door-frame i:nth-child(3) { left: 32%; top: 0; bottom: 0; width: 3.5px; }
.s99-door img { width: 100%; aspect-ratio: 1; object-fit: cover; opacity: .94; }
.s99-door-grip {
  position: absolute; right: 6px; top: 40%;
  width: 5px; height: 26px;
  border-radius: 3px;
  background: linear-gradient(180deg, #C9B08A, #6E4E38);
  box-shadow: 0 2px 4px rgba(0,0,0,.4);
  z-index: 3;
}
.s99-door-nm {
  display: block;
  font-size: 11.5px; font-weight: 700;
  color: var(--ink);
  background: rgba(245,235,221,.85);
  padding: 5px 6px;
  border-top: 2.5px solid var(--wood);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ══════════════════════════════════════════════════════════════
   4) s99 HAIKU — the hanging scroll
   ══════════════════════════════════════════════════════════════ */
.s99-haiku { display: block; text-align: center; }
.s99-scroll-rod {
  display: block;
  height: 9px;
  margin: 0 -10px;
  background: linear-gradient(180deg, #C9B08A, #6E4E38);
  border-radius: 2px;
  box-shadow: 0 2px 5px rgba(0,0,0,.5), inset 0 1px 0 rgba(245,235,221,.3);
  position: relative;
}
.s99-scroll-rod::before, .s99-scroll-rod::after {
  content: '';
  position: absolute; top: 50%;
  width: 8px; height: 8px;
  margin-top: -4px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #E8D7BE, #5C3F2E);
}
.s99-scroll-rod::before { left: -3px; }
.s99-scroll-rod::after { right: -3px; }
.s99-scroll-rod.bottom { margin: 0 -10px; }
.s99-scroll-paper {
  display: block;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(232,197,142,.16), transparent 60%),
    linear-gradient(180deg, #F5EBDD, #EDE0C8);
  padding: 18px 18px 14px;
  box-shadow: inset 0 0 0 1px rgba(138,98,72,.35), inset 0 0 18px rgba(232,197,142,.2);
}
.s99-haiku-txt {
  display: block;
  font-family: var(--fh);
  font-style: italic;
  font-size: 15px; line-height: 1.6;
  color: #3A2E24;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}
.s99-haiku-by {
  display: flex; align-items: center; gap: 10px;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1.5px dashed rgba(138,98,72,.4);
}
.s99-haiku-by img { width: 36px; height: 36px; border-radius: 50%; border: 2px solid var(--wood); object-fit: cover; }
.s99-haiku-by b { font-family: var(--fh); font-size: 14px; color: #2A2438; }
.s99-hanko {
  font-style: normal;
  margin-left: auto;
  width: 26px; height: 26px;
  background: #B03A48;
  border-radius: 4px;
  transform: rotate(-5deg);
  display: flex; align-items: center; justify-content: center;
  font-size: 7px; font-weight: 800; letter-spacing: .05em;
  color: rgba(245,235,221,.85);
  text-transform: uppercase;
  text-align: center;
  box-shadow: inset 0 0 0 2px rgba(245,235,221,.5);
  line-height: 1.1;
}

/* ══════════════════════════════════════════════════════════════
   5) s99 CHECK-IN — time tablets on a cord
   ══════════════════════════════════════════════════════════════ */
.s99-checkin { position: relative; display: flex; flex-direction: column; gap: 11px; padding: 10px 0 4px; }
.s99-cord {
  position: absolute; left: -4px; right: -4px; top: 2px;
  height: 3px;
  background: linear-gradient(90deg, transparent, #C9B08A 3%, #C9B08A 97%, transparent);
  border-radius: 2px;
  box-shadow: 0 2px 3px rgba(0,0,0,.4);
}
.s99-tag-time {
  position: relative;
  display: flex; align-items: center; gap: 11px;
  background: linear-gradient(180deg, #A8826A, #8A6248);
  border: 1px solid #5C3F2E;
  border-radius: 4px;
  padding: 8px 12px 8px 10px;
  box-shadow: 0 4px 9px -3px rgba(0,0,0,.55), inset 0 1px 0 rgba(245,235,221,.2);
}
.s99-tag-time::before {
  content: '';
  position: absolute; left: 12px; top: -12px;
  width: 2px; height: 14px;
  background: #C9B08A;
}
.s99-tag-hour {
  flex: none;
  font-family: var(--fm);
  font-size: 10px; font-weight: 800; letter-spacing: .1em;
  color: #F5EBDD;
  background: rgba(42,36,56,.35);
  border-radius: 3px;
  padding: 3px 7px;
}
.s99-tag-time img { width: 44px; height: 44px; border-radius: 3px; flex: none; border: 2px solid rgba(245,235,221,.5); object-fit: cover; background: #F5EBDD; }
.s99-tag-b { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.s99-tag-nm { font-weight: 700; font-size: 13.5px; color: #F8F2E6; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.s99-tag-ds { font-size: 11px; color: rgba(245,235,221,.65); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ══════════════════════════════════════════════════════════════
   6) s99 SEASONS — tanzaku strips
   ══════════════════════════════════════════════════════════════ */
.s99-seasons { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px 8px; padding: 6px 3px 4px; overflow: hidden; }
.s99-tanzaku {
  position: relative;
  display: block;
  padding: 12px 5px 14px;
  clip-path: polygon(0 0, 100% 0, 100% 86%, 50% 100%, 0 86%);
  box-shadow: 0 5px 10px -3px rgba(0,0,0,.5);
  transition: transform .18s ease;
}
.s99-tanzaku.s99-sea-0 { background: linear-gradient(180deg, #F2D9DE, #E8A8B8); }
.s99-tanzaku.s99-sea-1 { background: linear-gradient(180deg, #D8E8CE, #AFCF9C); }
.s99-tanzaku.s99-sea-2 { background: linear-gradient(180deg, #F2DEC0, #D98E4A); }
.s99-tz-hole {
  position: absolute; top: 4px; left: 50%;
  width: 6px; height: 6px;
  margin-left: -3px;
  border-radius: 50%;
  background: var(--bg);
  box-shadow: inset 0 1px 2px rgba(0,0,0,.6);
}
.s99-tz-art { display: block; padding: 0 6px; }
.s99-tz-art img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 3px; border: 2px solid rgba(255,255,255,.65); }
.s99-tz-nm {
  display: block;
  font-family: var(--fh);
  font-size: 10.5px; font-weight: 700;
  color: #3A2E24;
  padding: 5px 4px 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.s99-tz-season {
  display: block;
  font-family: var(--fm);
  font-size: 7.5px; font-weight: 800; letter-spacing: .22em;
  color: rgba(58,46,36,.6);
  text-align: center;
  margin-top: 3px;
}

/* ══════════════════════════════════════════════════════════════
   7) s99 DESK NOTE — the okami's evening note
   ══════════════════════════════════════════════════════════════ */
.s99-desknote {
  display: flex; align-items: center; gap: 13px;
  background: linear-gradient(180deg, #F5EBDD, #EDE0C8);
  border: 1.5px solid var(--wood);
  border-radius: 4px;
  padding: 14px 14px 14px 12px;
  position: relative;
  box-shadow: 0 10px 22px -8px rgba(0,0,0,.7), inset 0 0 0 4px rgba(138,98,72,.15);
}
.s99-dn-ink {
  position: absolute; right: 14px; top: 10px;
  width: 30px; height: 30px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(42,36,56,.16) 30%, transparent 70%);
  filter: blur(2px);
}
.s99-dn-k {
  position: absolute; left: 12px; top: -9px;
  font-family: var(--fm);
  font-size: 8.5px; font-weight: 800; letter-spacing: .2em;
  color: #F5EBDD;
  background: #B03A48;
  border-radius: 3px;
  padding: 2px 9px;
  box-shadow: 0 3px 6px rgba(0,0,0,.4);
}
.s99-dn-img {
  flex: none;
  width: 82px; height: 82px;
  object-fit: cover;
  border-radius: 3px;
  border: 3px solid #FDF8EE;
  box-shadow: 2px 3px 8px rgba(42,36,56,.35);
  background: #EDE0C8;
}
.s99-dn-b { flex: 1; min-width: 0; }
.s99-dn-nm {
  display: block;
  font-family: var(--fh);
  font-size: 17px; font-weight: 700;
  color: #2A2438;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.s99-dn-ds {
  display: block;
  font-size: 12px;
  color: #5C5046;
  margin-top: 5px;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}
.s99-dn-go {
  display: block;
  margin-top: 9px;
  font-family: var(--fm);
  font-size: 10px; font-weight: 800; letter-spacing: .16em;
  color: #B03A48;
}

/* ══════════════════════════════════════════════════════════════
   8) s99 ROOM TYPES — door plates
   ══════════════════════════════════════════════════════════════ */
.s99-rooms { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
.s99-roomplate {
  display: flex; align-items: center; gap: 11px;
  background: linear-gradient(180deg, #A8826A, #7A5640);
  border: 1px solid #5C3F2E;
  border-radius: 4px;
  padding: 11px 12px;
  position: relative;
  box-shadow: 0 5px 12px -4px rgba(0,0,0,.6), inset 0 1px 0 rgba(245,235,221,.18);
  transition: transform .15s ease;
}
.s99-rp-no {
  flex: none;
  font-family: var(--fm);
  font-size: 11px; font-weight: 800;
  color: #F5EBDD;
  background: rgba(42,36,56,.4);
  border-radius: 3px;
  padding: 5px 8px;
  letter-spacing: .05em;
}
.s99-rp-b { min-width: 0; }
.s99-rp-b b { display: block; font-family: var(--fh); font-size: 13.5px; font-weight: 700; color: #F8F2E6; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.s99-rp-b i { font-style: normal; font-family: var(--fm); font-size: 10px; color: rgba(245,235,221,.6); }
.s99-rp-nail {
  position: absolute; top: 50%; right: 9px;
  width: 5px; height: 5px;
  margin-top: -2.5px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #E8D7BE, #4A3222);
  box-shadow: 0 1px 2px rgba(0,0,0,.5);
}
.s99-roomplate:active { transform: translateY(1px); }

/* ══════════════════════════════════════════════════════════════
   9) s99 LEDGER — guest book archive
   ══════════════════════════════════════════════════════════════ */
.s99-ledger {
  background: rgba(13,19,34,.5);
  border: 1px solid rgba(138,98,72,.5);
  border-radius: 6px;
  padding: 0 10px 12px;
}
.s99-ledger-top {
  display: flex; justify-content: space-between; align-items: center;
  margin: 0 -10px 14px;
  padding: 8px 14px 9px;
  background: linear-gradient(180deg, #C9B08A, #8A6248);
  border-bottom: 2px solid #5C3F2E;
  border-radius: 6px 6px 0 0;
  font-family: var(--fm);
  font-size: 9.5px; font-weight: 700; letter-spacing: .24em;
  color: #F5EBDD;
  box-shadow: inset 0 1px 0 rgba(245,235,221,.3);
}
.s99-ledger-top span { color: rgba(245,235,221,.75); letter-spacing: .1em; }
.arc-list { display: flex; flex-direction: column; gap: 9px; }
.arc.s99-entry {
  display: flex; align-items: center; gap: 11px;
  background: linear-gradient(180deg, #F5EBDD, #EDE0C8);
  border-radius: 3px;
  padding: 9px 12px 9px 10px;
  box-shadow: inset 0 0 0 1px rgba(138,98,72,.3), 0 3px 8px -3px rgba(0,0,0,.5);
}
.s99-entry-no {
  font-family: var(--fm);
  font-size: 10.5px; font-weight: 800;
  color: #B03A48;
  width: 30px; flex: none;
}
.arc.s99-entry img { width: 44px; height: 44px; border-radius: 3px; flex: none; border: 1.5px solid rgba(138,98,72,.4); background: #EDE0C8; }
.s99-entry-nm {
  flex: 1; min-width: 0;
  font-family: var(--fh);
  font-size: 14px; font-weight: 700;
  color: #2A2438;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.s99-entry-tag {
  flex: none;
  font-style: normal;
  font-size: 9px; letter-spacing: .08em; text-transform: uppercase;
  color: #3B6AC4;
  border: 1px solid rgba(59,106,196,.5);
  border-radius: 2px;
  padding: 2px 6px;
}

/* ══════════════════════════════════════════════════════════════
   FILTER + EMPTY
   ══════════════════════════════════════════════════════════════ */
.filter-hd { display: flex; align-items: center; gap: 10px; margin-top: 20px; }
.filter-back {
  flex: none;
  font-family: var(--fh);
  font-size: 12.5px; font-weight: 700;
  color: #F5EBDD;
  background: linear-gradient(180deg, #7C97F0, var(--accent2));
  border: 1px solid rgba(0,0,0,.3);
  border-radius: 3px;
  padding: 7px 12px;
  box-shadow: 0 3px 0 #24346B;
}
.filter-back:active { transform: translateY(2px); box-shadow: 0 1px 0 #24346B; }
.filter-title {
  flex: 1; min-width: 0;
  font-family: var(--fh);
  font-style: italic;
  font-size: 17px; font-weight: 700;
  color: var(--paper);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.filter-cnt {
  flex: none;
  font-family: var(--fm);
  font-size: 11px;
  color: #F5EBDD;
  background: var(--accent2);
  border-radius: 3px;
  padding: 3px 8px;
}
.empty-space { text-align: center; padding: 42px 0 26px; }
.s99-empty-teapot { font-size: 30px; opacity: .8; }
.empty-space span { display: block; margin-top: 12px; font-family: var(--fm); font-size: 11px; letter-spacing: .14em; color: var(--soft); }
.more-wrap { text-align: center; margin-top: 15px; }
.more-btn {
  font-family: var(--fh);
  font-size: 12.5px; font-weight: 700;
  color: #F5EBDD;
  background: linear-gradient(180deg, #7C97F0, var(--accent2));
  border: 1px solid rgba(0,0,0,.3);
  border-radius: 3px;
  padding: 10px 22px;
  box-shadow: 0 3px 0 #24346B, 0 7px 14px -4px rgba(0,0,0,.5), inset 0 1px 0 rgba(245,235,221,.3);
}
.more-btn:active { transform: translateY(2px); box-shadow: 0 1px 0 #24346B; }

/* ══════════════════════════════════════════════════════════════
   s99 FOOTER — engawa wood edge
   ══════════════════════════════════════════════════════════════ */
.foot {
  margin-top: 44px;
  padding: 20px 0 30px;
  text-align: center;
  border-top: 1.5px solid var(--line);
  background: linear-gradient(180deg, transparent, rgba(0,0,0,.22));
}
.s99-engawa-band {
  height: 10px;
  margin: 0 0 20px;
  background: repeating-linear-gradient(90deg, #A8826A 0 44px, #7A5640 44px 48px);
  border-top: 1px solid rgba(245,235,221,.2);
  border-bottom: 1px solid rgba(0,0,0,.5);
}
.foot-name {
  font-family: var(--fh);
  font-size: 16px; font-weight: 700; letter-spacing: .08em;
  color: var(--accent);
}
.foot-links { display: flex; justify-content: center; gap: 22px; margin-top: 12px; }
.foot-links a { display: inline; font-size: 12.5px; color: var(--soft); text-decoration: underline; }
.foot-fine { margin-top: 12px; font-family: var(--fm); font-size: 10px; letter-spacing: .14em; color: var(--soft); opacity: .75; }

/* totop */
.totop-btn {
  position: fixed;
  right: 16px; bottom: 24px;
  z-index: 60;
  width: 42px; height: 42px;
  display: flex; align-items: center; justify-content: center;
  font-size: 17px; font-weight: 700;
  color: #F5EBDD;
  background: linear-gradient(180deg, #7C97F0, var(--accent2));
  border: 1px solid rgba(0,0,0,.35);
  border-radius: 4px;
  box-shadow: 0 3px 0 #24346B, 0 8px 16px -4px rgba(0,0,0,.5), inset 0 1px 0 rgba(245,235,221,.3);
}
.totop-btn:active { transform: translateY(2px); box-shadow: 0 1px 0 #24346B; }

/* ══════════════════════════════════════════════════════════════
   narrow screens
   ══════════════════════════════════════════════════════════════ */
@media (max-width: 660px) {
  .sec::after { left: 0; right: 0; }
  .s99-curtain i:nth-child(n+5) { display: none; }
  .rw-win { width: 104px; height: 104px; }
  .s99-seasons { grid-template-columns: repeat(3, minmax(0,1fr)); gap: 10px 6px; }
  .s99-dn-img { width: 68px; height: 68px; }
}
