/* */

/* Local type: Shippori Mincho is taken from the visitor's installed copy only
   (no remote request, so no 404 offline); the Mincho stacks below fall back to
   Noto Serif CJK / Source Han Serif before generic serif. SansaQuietUI is the
   bundled Latin face used for small numerals (it carries no kanji). */
@font-face {
  font-family: "Shippori Mincho";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local("Shippori Mincho"), local("ShipporiMincho-Regular"), local("Shippori Mincho Regular");
}
@font-face {
  font-family: "Shippori Mincho";
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: local("Shippori Mincho Medium"), local("ShipporiMincho-Medium"), local("Shippori Mincho SemiBold"), local("ShipporiMincho-SemiBold");
}
@font-face {
  font-family: "SansaQuietUI";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local("Sansa Quiet UI"), url("/fonts/SansaQuietUI-Core.woff2?v=20261111-v32") format("woff2");
  unicode-range: U+0020-007E, U+00A0-00FF, U+2010-2027, U+2030-203A, U+2116, U+2212;
}

:root {
  --jk-washi: #F5EFE2;
  --jk-washi-aged: #EDE5D5;
  --jk-washi-deep: #D8CEB8;
  --jk-lacquer: #14120F;
  --jk-lacquer-elevated: #1C1814;
  --jk-lacquer-soft: #29231C;
  --jk-shuin: #9E2A20;
  --jk-shuin-dark: #7E211A;
  --jk-matcha: #4A5D46;
  --jk-kindei: #C6AC7A;
  --jk-kindei-bright: #D8B978;
  --jk-konshi: #141E2B;
  --jk-hinoki: #DFC9A1;
  --jk-hinoki-border: #B89A68;
  --jk-ink: #1C1814;
  --jk-ink-muted: #635647;
  --jk-ivory: #F5EFE2;
  --jk-ivory-muted: #B8AA96;
  --jk-rule-light: #D8CEB8;
  --jk-rule-dark: #3A3128;
  --jk-font-num: "SansaQuietUI", "Hiragino Sans", "BIZ UDPGothic", "Yu Gothic", system-ui, sans-serif;
  --jk-font-serif: "Shippori Mincho", "Zen Old Mincho", "Hiragino Mincho ProN", "Yu Mincho", "YuMincho", "Noto Serif JP", "Noto Serif CJK JP", "Source Han Serif JP", "BIZ UDPMincho", serif;
  --jk-font-display: "Zen Old Mincho", "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", "Noto Serif CJK JP", "Source Han Serif JP", serif;
  --jk-font-sans: "Shippori Mincho", "Hiragino Mincho ProN", "BIZ UDPMincho", "Yu Mincho", "Noto Serif JP", "Noto Serif CJK JP", "Source Han Serif JP", serif;
}

:root,
#jk-rituals-root {
  font-variant-numeric: tabular-nums;
}

#jk-rituals-root,
#jk-rituals-root * {
  box-sizing: border-box;
  -webkit-font-smoothing: antialiased;
}

/* */
.jk-dock {
  position: fixed;
  top: 16px;
  right: 16px;
  z-index: 9400;
  width: 332px;
  background: var(--jk-lacquer);
  color: var(--jk-ivory);
  border: 1px solid var(--jk-kindei);
  outline: 1px solid rgba(181, 148, 91, 0.35);
  outline-offset: -4px;
  font-family: var(--jk-font-sans);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.45);
  transition: opacity 0.16s ease;
}

.jk-dock.is-collapsed {
  width: auto;
}

.jk-dock.is-collapsed .jk-dock-body {
  display: none;
}

.jk-dock-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 12px;
  background: var(--jk-lacquer-elevated);
  border-bottom: 1px solid var(--jk-rule-dark);
}

.jk-dock.is-collapsed .jk-dock-top {
  border-bottom: none;
}

.jk-dock-brand {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
}

.jk-dock-crest {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  background: var(--jk-shuin);
  color: var(--jk-washi);
  font-family: var(--jk-font-serif);
  font-size: 12px;
  font-weight: 700;
  border: 1px solid var(--jk-kindei);
  flex-shrink: 0;
}

.jk-dock-title {
  font-family: var(--jk-font-serif);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--jk-ivory);
  white-space: nowrap;
}

.jk-dock-controls {
  display: flex;
  align-items: center;
  gap: 4px;
}

.jk-lang-switch {
  display: inline-flex;
  border: 1px solid var(--jk-rule-dark);
  background: var(--jk-lacquer);
}

.jk-lang-btn {
  white-space: nowrap;
  appearance: none;
  background: transparent;
  border: none;
  color: var(--jk-ivory-muted);
  font-family: var(--jk-font-serif);
  font-size: 11px;
  padding: 3px 6px;
  cursor: pointer;
}

.jk-lang-btn.is-active {
  background: var(--jk-kindei);
  color: var(--jk-lacquer);
  font-weight: 700;
}

.jk-dock-collapse-btn {
  appearance: none;
  background: transparent;
  border: 1px solid var(--jk-rule-dark);
  color: var(--jk-kindei);
  font-family: var(--jk-font-serif);
  font-size: 11px;
  padding: 3px 7px;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
}

.jk-dock-collapse-btn:hover {
  border-color: var(--jk-kindei);
  background: var(--jk-lacquer-soft);
}

/* Quickbar: Four Seasons & Acoustic Instruments */
.jk-quickbar {
  padding: 8px 12px;
  background: #181715;
  border-bottom: 1px solid var(--jk-rule-dark);
}

.jk-quickbar-label {
  font-size: 10.5px;
  letter-spacing: 0.08em;
  color: var(--jk-ivory-muted);
  margin-bottom: 5px;
  display: flex;
  justify-content: space-between;
}

.jk-season-row,
.jk-sound-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 4px;
  margin-bottom: 6px;
}

.jk-sound-row {
  grid-template-columns: repeat(3, 1fr);
  margin-bottom: 0;
}

.jk-season-btn,
.jk-sound-btn {
  appearance: none;
  background: var(--jk-lacquer);
  border: 1px solid var(--jk-rule-dark);
  color: var(--jk-ivory);
  font-family: var(--jk-font-serif);
  font-size: 11px;
  padding: 4px 2px;
  text-align: center;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.jk-season-btn:hover,
.jk-sound-btn:hover {
  border-color: var(--jk-kindei);
  background: var(--jk-lacquer-soft);
}

.jk-season-btn.is-active {
  background: var(--jk-matcha);
  border-color: var(--jk-kindei);
  color: var(--jk-washi);
  font-weight: 600;
}

.jk-sound-btn.is-playing {
  background: var(--jk-shuin);
  border-color: var(--jk-kindei-bright);
  color: var(--jk-washi);
}

/* Five Dojo Plaques */
.jk-dojo-list {
  display: flex;
  flex-direction: column;
}

.jk-dojo-plaque {
  appearance: none;
  width: 100%;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--jk-rule-dark);
  border-left: 3px solid transparent;
  padding: 9px 12px;
  display: flex;
  align-items: center;
  gap: 10px;
  text-align: left;
  color: var(--jk-ivory);
  cursor: pointer;
  transition: background 0.15s ease, border-left-color 0.15s ease;
}

.jk-dojo-plaque:hover {
  background: var(--jk-lacquer-soft);
  border-left-color: var(--jk-shuin);
}

.jk-plaque-index {
  width: 24px;
  height: 24px;
  border: 1px solid var(--jk-kindei);
  color: var(--jk-kindei);
  font-family: var(--jk-font-serif);
  font-size: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.jk-plaque-main {
  flex: 1;
  min-width: 0;
}

.jk-plaque-title {
  display: block;
  font-family: var(--jk-font-serif);
  font-size: 13px;
  font-weight: 600;
  color: var(--jk-ivory);
  letter-spacing: 0.04em;
}

.jk-plaque-desc {
  display: block;
  font-size: 11px;
  color: var(--jk-ivory-muted);
  margin-top: 2px;
  white-space: normal;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.jk-plaque-arrow {
  font-family: var(--jk-font-serif);
  font-size: 11px;
  color: var(--jk-kindei);
  border: 1px solid rgba(181, 148, 91, 0.4);
  padding: 2px 5px;
}

/* Merit Strip */
.jk-merit-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  background: #10100F;
  padding: 6px 8px;
  gap: 4px;
  font-variant-numeric: tabular-nums;
}

.jk-merit-item {
  text-align: center;
  border-right: 1px solid var(--jk-rule-dark);
}

.jk-merit-item:last-child {
  border-right: none;
}

.jk-merit-item span {
  display: block;
  font-size: 10.5px;
  color: var(--jk-ivory-muted);
}

.jk-merit-item strong {
  font-family: var(--jk-font-serif);
  font-size: 12px;
  color: var(--jk-kindei-bright);
}

/* */
.jk-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 9800;
  background: rgba(14, 14, 13, 0.88);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.jk-modal-backdrop.is-open {
  display: flex;
}

.jk-modal-window {
  width: min(1180px, 96vw);
  height: min(860px, 92vh);
  background: var(--jk-washi);
  color: var(--jk-ink);
  border: 2px solid var(--jk-kindei);
  outline: 1px solid rgba(181, 148, 91, 0.45);
  outline-offset: -6px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.jk-modal-window.jk-theme-lacquer {
  background: var(--jk-lacquer);
  color: var(--jk-ivory);
}

.jk-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 18px;
  background: var(--jk-lacquer);
  color: var(--jk-ivory);
  border-bottom: 1px solid var(--jk-kindei);
  flex-wrap: wrap;
}

.jk-modal-title-block {
  display: flex;
  flex-direction: column;
}

.jk-modal-kicker {
  font-size: 11px;
  letter-spacing: 0.12em;
  color: var(--jk-kindei);
  font-family: var(--jk-font-serif);
}

.jk-modal-title {
  margin: 2px 0 0;
  font-family: var(--jk-font-serif);
  font-size: 19px;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--jk-washi);
}

.jk-modal-nav {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.jk-modal-tab {
  appearance: none;
  background: var(--jk-lacquer-elevated);
  border: 1px solid var(--jk-rule-dark);
  color: var(--jk-ivory-muted);
  font-family: var(--jk-font-serif);
  font-size: 12px;
  padding: 6px 10px;
  cursor: pointer;
}

.jk-modal-tab:hover {
  color: var(--jk-ivory);
  border-color: var(--jk-kindei);
}

.jk-modal-tab.is-active {
  background: var(--jk-shuin);
  border-color: var(--jk-kindei);
  color: var(--jk-washi);
  font-weight: 600;
}

.jk-modal-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.jk-modal-close {
  appearance: none;
  background: transparent;
  border: 1px solid var(--jk-shuin);
  color: var(--jk-washi);
  font-family: var(--jk-font-serif);
  font-size: 12px;
  padding: 6px 12px;
  cursor: pointer;
}

.jk-modal-close:hover {
  background: var(--jk-shuin);
}

/* Modal Body & Grid */
.jk-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: 18px;
}

.jk-studio-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 330px;
  gap: 18px;
  align-items: start;
}

.jk-stage-panel {
  background: var(--jk-washi-aged);
  border: 1px solid var(--jk-rule-light);
  padding: 12px;
}

.jk-theme-lacquer .jk-stage-panel {
  background: var(--jk-lacquer-elevated);
  border-color: var(--jk-rule-dark);
}

.jk-canvas-wrap {
  position: relative;
  width: 100%;
  border: 1px solid var(--jk-kindei);
  background: #141413;
  overflow: hidden;
  touch-action: none;
  user-select: none;
}

.jk-side-panel {
  background: var(--jk-washi-aged);
  border: 1px solid var(--jk-rule-light);
  display: flex;
  flex-direction: column;
}

.jk-theme-lacquer .jk-side-panel {
  background: var(--jk-lacquer-elevated);
  border-color: var(--jk-rule-dark);
}

.jk-panel-section {
  padding: 12px 14px;
  border-bottom: 1px solid var(--jk-rule-light);
}

.jk-theme-lacquer .jk-panel-section {
  border-bottom-color: var(--jk-rule-dark);
}

.jk-panel-section:last-child {
  border-bottom: none;
}

.jk-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 8px;
  font-family: var(--jk-font-serif);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.04em;
  border-left: 3px solid var(--jk-shuin);
  padding-left: 8px;
}

.jk-section-head small {
  font-family: var(--jk-font-sans);
  font-size: 11px;
  font-weight: 400;
  color: var(--jk-ink-muted);
}

.jk-theme-lacquer .jk-section-head small {
  color: var(--jk-ivory-muted);
}

/* Tactile Controls & Buttons */
.jk-seg-group {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 5px;
}

.jk-seg-btn,
.jk-btn {
  appearance: none;
  background: var(--jk-washi);
  border: 1px solid #BDB4A0;
  color: var(--jk-ink);
  font-family: var(--jk-font-serif);
  font-size: 12px;
  padding: 7px 10px;
  text-align: left;
  cursor: pointer;
  line-height: 1.35;
}

.jk-theme-lacquer .jk-seg-btn,
.jk-theme-lacquer .jk-btn {
  background: var(--jk-lacquer);
  border-color: var(--jk-rule-dark);
  color: var(--jk-ivory);
}

.jk-seg-btn:hover,
.jk-btn:hover {
  border-color: var(--jk-kindei);
}

.jk-seg-btn.is-active {
  background: var(--jk-lacquer);
  color: var(--jk-washi);
  border-color: var(--jk-kindei);
  font-weight: 600;
}

.jk-theme-lacquer .jk-seg-btn.is-active {
  background: var(--jk-kindei);
  color: var(--jk-lacquer);
}

.jk-btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.jk-btn {
  text-align: center;
  flex: 1;
}

.jk-btn-shuin {
  background: var(--jk-shuin) !important;
  border-color: var(--jk-shuin-dark) !important;
  color: var(--jk-washi) !important;
  font-weight: 600;
}

.jk-btn-shuin:hover {
  background: var(--jk-shuin-dark) !important;
}

.jk-btn-lacquer {
  background: var(--jk-lacquer) !important;
  border-color: var(--jk-kindei) !important;
  color: var(--jk-washi) !important;
}

/* Ledger Table */
.jk-ledger-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}

.jk-ledger-table th,
.jk-ledger-table td {
  border: 1px solid var(--jk-rule-light);
  padding: 5px 8px;
  text-align: left;
}

.jk-theme-lacquer .jk-ledger-table th,
.jk-theme-lacquer .jk-ledger-table td {
  border-color: var(--jk-rule-dark);
}

.jk-ledger-table th {
  background: rgba(181, 148, 91, 0.12);
  font-family: var(--jk-font-serif);
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   3. Studio-Specific Craft Styles
   -------------------------------------------------------------------------- */

/* Studio 1: Karesansui */
.jk-karesansui-canvas {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 10;
  display: block;
  cursor: crosshair;
}

/* Studio 2: Shakyō Heart Sutra */
.jk-shakyo-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 156px;
  gap: 12px;
}

.jk-shakyo-canvas {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  display: block;
  cursor: crosshair;
}

.jk-suzuri-box {
  background: #191816;
  color: var(--jk-ivory);
  border: 1px solid var(--jk-kindei);
  padding: 8px;
  text-align: center;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.jk-suzuri-canvas {
  width: 136px;
  height: 190px;
  display: block;
  margin: 4px auto;
  cursor: grab;
  touch-action: none;
}

.jk-ink-meter {
  height: 6px;
  background: #2C2A26;
  border: 1px solid #4A463E;
  margin-top: 4px;
}

.jk-ink-meter-fill {
  height: 100%;
  background: var(--jk-kindei);
  transition: opacity 0.15s ease;
}

.jk-sutra-scroll-strip {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 5px;
  padding: 8px 0;
  margin-top: 8px;
  border-top: 1px solid var(--jk-rule-light);
}

.jk-verse-item {
  appearance: none;
  background: var(--jk-washi);
  border: 1px solid var(--jk-rule-light);
  padding: 5px 6px;
  font-family: var(--jk-font-serif);
  font-size: 11.5px;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
}

.jk-verse-item.is-active {
  background: var(--jk-lacquer);
  color: var(--jk-washi);
  border-color: var(--jk-kindei);
}

.jk-verse-item.is-done {
  border-bottom: 2px solid var(--jk-shuin);
}

.jk-sutra-exegetics {
  margin-top: 10px;
  padding: 10px 12px;
  background: var(--jk-washi);
  border: 1px solid var(--jk-rule-light);
  border-left: 3px solid var(--jk-kindei);
}

.jk-exe-kanbun {
  font-family: var(--jk-font-serif);
  font-size: 15px;
  font-weight: 700;
  color: var(--jk-ink);
}

.jk-exe-reading {
  font-size: 12px;
  color: var(--jk-shuin);
  margin-top: 3px;
}

.jk-exe-commentary {
  font-size: 12px;
  color: var(--jk-ink-muted);
  margin-top: 4px;
  line-height: 1.65;
}

/* Studio 3: Goshuin-chō */
.jk-goshuin-canvas {
  width: 100%;
  height: auto;
  aspect-ratio: 15 / 11;
  display: block;
  cursor: pointer;
}

.jk-seal-palette {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}

.jk-seal-card {
  appearance: none;
  background: var(--jk-washi);
  border: 1px solid #C6BDA8;
  padding: 8px 4px;
  text-align: center;
  cursor: pointer;
}

.jk-seal-card.is-selected {
  border: 2px solid var(--jk-shuin);
  background: #FBF6F4;
}

.jk-seal-preview {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: 2px solid var(--jk-shuin);
  color: var(--jk-shuin);
  font-family: var(--jk-font-serif);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: 4px;
}

/* Studio 4: Zazen & Kyōsaku */
.jk-zazen-stage {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 12px;
  background: #121210;
}

.jk-zazen-canvas {
  width: min(460px, 100%);
  aspect-ratio: 1 / 1;
  display: block;
}

.jk-breath-hud {
  text-align: center;
  margin-top: 8px;
}

.jk-breath-phase {
  font-family: var(--jk-font-serif);
  font-size: 20px;
  color: var(--jk-kindei-bright);
  letter-spacing: 0.1em;
}

.jk-breath-count {
  font-size: 13px;
  color: var(--jk-ivory-muted);
  margin-top: 2px;
}

.jk-katsu-banner {
  margin-top: 10px;
  padding: 12px;
  border: 1px solid var(--jk-shuin);
  background: #1A1413;
  color: var(--jk-washi);
}

.jk-katsu-kanji {
  font-family: var(--jk-font-serif);
  font-size: 18px;
  font-weight: 700;
  color: var(--jk-kindei-bright);
}

.jk-katsu-reading {
  font-size: 11px;
  color: #E07A72;
  margin-top: 2px;
}

.jk-katsu-meaning {
  font-size: 12px;
  color: var(--jk-ivory);
  margin-top: 6px;
  line-height: 1.6;
}

/* Studio 5: Omikuji & Ema Rack */
.jk-omikuji-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}

.jk-omikuji-canvas {
  width: 100%;
  max-width: 300px;
  height: 200px;
  display: block;
  margin: 0 auto 10px;
  cursor: pointer;
}

.jk-omikuji-slip {
  background: var(--jk-washi);
  border: 2px solid var(--jk-shuin);
  outline: 1px solid var(--jk-shuin);
  outline-offset: -5px;
  padding: 16px;
}

.jk-slip-header {
  display: flex;
  justify-content: space-between;
  border-bottom: 1px solid var(--jk-shuin);
  padding-bottom: 6px;
  font-family: var(--jk-font-serif);
  color: var(--jk-shuin);
  font-weight: 700;
}

.jk-slip-verse {
  font-family: var(--jk-font-serif);
  font-size: 18px;
  font-weight: 700;
  margin: 12px 0 6px;
  color: var(--jk-ink);
  line-height: 1.5;
}

.jk-slip-reading {
  font-size: 12px;
  color: var(--jk-ink-muted);
  margin-bottom: 8px;
}

.jk-slip-meaning {
  font-size: 13px;
  line-height: 1.7;
  color: var(--jk-ink);
  border-top: 1px solid var(--jk-rule-light);
  padding-top: 8px;
}

.jk-slip-guide {
  margin-top: 8px;
  padding: 6px 8px;
  background: var(--jk-washi-aged);
  border-left: 3px solid var(--jk-matcha);
  font-size: 12px;
}

/* Hinoki Ema Plaque Rack */
.jk-ema-form-shape {
  background: var(--jk-hinoki);
  border: 2px solid var(--jk-hinoki-border);
  padding: 14px;
  margin-bottom: 12px;
}

.jk-input,
.jk-textarea {
  width: 100%;
  background: var(--jk-washi);
  border: 1px solid var(--jk-hinoki-border);
  padding: 7px 9px;
  font-family: var(--jk-font-serif);
  font-size: 13px;
  color: var(--jk-ink);
  margin-bottom: 8px;
}

.jk-textarea {
  min-height: 64px;
  resize: vertical;
}

.jk-ema-rack {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(155px, 1fr));
  gap: 10px;
  max-height: 420px;
  overflow-y: auto;
  padding: 10px;
  background: #231F1B;
  border: 1px solid var(--jk-kindei);
}

.jk-ema-card {
  position: relative;
  background: var(--jk-hinoki);
  color: var(--jk-ink);
  border: 1px solid #9E7B46;
  padding: 14px 10px 10px;
  clip-path: polygon(50% 0%, 100% 18%, 100% 100%, 0% 100%, 0% 18%);
  cursor: pointer;
  transition: transform 0.2s ease;
}

.jk-ema-card:hover {
  transform: rotate(-1.5deg) translateY(-2px);
}

.jk-ema-cord {
  width: 8px;
  height: 8px;
  background: var(--jk-shuin);
  margin: 0 auto 6px;
}

.jk-ema-wish {
  font-family: var(--jk-font-serif);
  font-size: 12px;
  line-height: 1.55;
  min-height: 48px;
}

.jk-ema-meta {
  margin-top: 6px;
  padding-top: 4px;
  border-top: 1px solid rgba(20, 20, 19, 0.18);
  font-size: 10.5px;
  display: flex;
  justify-content: space-between;
  color: #4A3B24;
}

/* Responsive */
@media (max-width: 920px) {
  .jk-studio-grid,
  .jk-omikuji-layout,
  .jk-shakyo-workspace {
    grid-template-columns: 1fr;
  }
  .jk-dock {
    top: 10px;
    right: 10px;
    width: 264px;
  }
}

@media (max-width: 600px) {
  .jk-modal-backdrop {
    padding: 0;
  }
  .jk-modal-window {
    width: 100vw;
    height: 100vh;
  }
}

/* === JAKKOJI HONDO EXPERIENCE & MICRO-SATORI (10/10 PERFECTION) === */
#jk-hondo-experience {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 6;
  overflow: hidden;
  user-select: none;
}

.jk-hondo-atmosphere {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.jk-god-ray {
  position: absolute;
  top: -12%;
  width: 38vw;
  height: 78vh;
  pointer-events: none;
  background: linear-gradient(
    168deg,
    rgba(218, 186, 124, 0.11) 0%,
    rgba(181, 148, 91, 0.045) 48%,
    rgba(20, 20, 19, 0) 100%
  );
  transform-origin: top center;
  animation: jkGodRayBreathe 14s ease-in-out infinite alternate;
}

.jk-god-ray-a {
  left: 18%;
  transform: rotate(14deg);
}

.jk-god-ray-b {
  right: 20%;
  width: 30vw;
  transform: rotate(-12deg);
  animation-delay: -7s;
}

.jk-candle-glow {
  position: absolute;
  left: 50%;
  top: 46%;
  width: 54vw;
  height: 44vh;
  transform: translate(-50%, -50%);
  pointer-events: none;
  background: transparent;
}

.jk-paper-vignette {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: transparent;
  box-shadow: inset 0 0 0 1px rgba(181, 148, 91, 0.16);
}

@keyframes jkGodRayBreathe {
  0% { opacity: 0.55; }
  100% { opacity: 0.95; }
}

@keyframes jkCandleFlicker {
  0% { opacity: 0.72; transform: translate(-50%, -50%) scale(0.98); }
  50% { opacity: 0.96; transform: translate(-50%, -50%) scale(1.02); }
  100% { opacity: 0.82; transform: translate(-50%, -50%) scale(1.0); }
}

.jk-hondo-feedback {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.jk-kindei-ripple {
  position: absolute;
  width: 24px;
  height: 24px;
  border-radius: 2px;
  border: 1px solid rgba(212, 178, 117, 0.72);
  transform: translate(-50%, -50%) scale(0.25);
  opacity: 0.9;
  pointer-events: none;
  animation: jkRippleExpand 1.2s ease-out forwards;
}

@keyframes jkRippleExpand {
  0% {
    transform: translate(-50%, -50%) scale(0.25);
    opacity: 0.92;
  }
  100% {
    transform: translate(-50%, -50%) scale(5.6);
    opacity: 0;
  }
}

.jk-hondo-whisper {
  position: fixed;
  left: 50%;
  bottom: 92px;
  transform: translateX(-50%) translateY(6px);
  padding: 5px 16px;
  background: rgba(20, 20, 19, 0.88);
  border: 1px solid rgba(181, 148, 91, 0.48);
  color: #EAE4D7;
  font-family: "Shippori Mincho", "Yu Mincho", "Noto Serif JP", serif;
  font-size: 12.5px;
  letter-spacing: 0.16em;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.38s ease, transform 0.38s ease;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45);
}

.jk-hondo-whisper.is-rising {
  opacity: 0.94;
  transform: translateX(-50%) translateY(0);
}

.jk-hondo-breath-bar {
  position: fixed;
  left: 50%;
  bottom: 12px;
  transform: translateX(-50%);
  width: 148px;
  height: 2px;
  background: rgba(181, 148, 91, 0.16);
  overflow: hidden;
  pointer-events: none;
}

.jk-hondo-breath-bar > span {
  display: block;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(212, 178, 117, 0.72), transparent);
  transform-origin: center;
  animation: jkSusokukanBreath 14s ease-in-out infinite;
}

@keyframes jkSusokukanBreath {
  0%, 100% { transform: scaleX(0.18); opacity: 0.35; }
  35% { transform: scaleX(1.0); opacity: 0.92; }
  50% { transform: scaleX(0.96); opacity: 0.85; }
}

.jk-satori-overlay {
  position: fixed;
  left: 50%;
  top: 15%;
  transform: translateX(-50%) translateY(-8px);
  z-index: 12;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.45s ease, transform 0.45s cubic-bezier(0.16, 1, 0.3, 1);
}

.jk-satori-overlay.is-visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

.jk-satori-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  min-width: 240px;
  padding: 16px 26px 14px;
  background: #141413;
  border: 1px solid #B5945B;
  outline: 1px solid rgba(181, 148, 91, 0.28);
  outline-offset: -5px;
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.68);
  color: #F7F5EE;
  font-family: "Shippori Mincho", "Yu Mincho", "Noto Serif JP", serif;
  text-align: center;
}

.jk-satori-card.is-peak {
  border-color: #D4B275;
  box-shadow: 0 20px 52px rgba(181, 148, 91, 0.28), 0 18px 42px rgba(0, 0, 0, 0.75);
}

.jk-satori-seal {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: #B8332A;
  border: 1px solid #D9534A;
  color: #F7F5EE;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.05em;
}

.jk-satori-verse {
  font-size: 21px;
  font-weight: 700;
  color: #F7F5EE;
  letter-spacing: 0.22em;
  margin-top: 2px;
}

.jk-satori-sub {
  font-size: 12px;
  color: #C7BFB0;
  letter-spacing: 0.14em;
}

.jk-satori-goshuin-btn {
  margin-top: 6px;
  padding: 5px 14px;
  background: #231F1B;
  border: 1px solid #B5945B;
  color: #E2C68D;
  font-family: inherit;
  font-size: 11px;
  letter-spacing: 0.14em;
  cursor: pointer;
  pointer-events: auto;
  transition: background 0.2s ease, color 0.2s ease;
}

.jk-satori-goshuin-btn:hover {
  background: #B8332A;
  border-color: #D9534A;
  color: #F7F5EE;
}

.jk-dock-merit-mini {
  display: none;
  font-size: 10.5px;
  color: #C7BFB0;
  letter-spacing: 0.08em;
  padding-left: 8px;
  border-left: 1px solid rgba(181, 148, 91, 0.35);
  margin-left: 6px;
}

.jk-dock.is-collapsed .jk-dock-merit-mini {
  display: inline-block;
}

/* === CLAUDE OPUS 5.5 ROUND 4 GOD-TIER CRAFTSMANSHIP & UI UNIFICATION === */
/* 1. Visitor Nameplate: Crisp Kuro-urushi wooden fuda plaque floating cleanly above head */
.visitor-label {
  background: rgba(16, 12, 9, 0.92) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  border: 1px solid rgba(198, 156, 82, 0.58) !important;
  border-top: 1px solid rgba(226, 188, 118, 0.82) !important;
  color: #f2e8d5 !important;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.14em !important;
  padding: 3px 11px 3px 8px !important;
  border-radius: 2px !important;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.65) !important;
  transition: opacity 0.25s ease !important;
  z-index: 25 !important;
}
.visitor-label.is-self {
  opacity: 0.92 !important;
}
.visitor-label-me {
  background: #a4281c !important;
  color: #f7efe0 !important;
  border-radius: 1px !important;
  padding: 1px 4px !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  margin-right: 6px !important;
  border: 1px solid rgba(232, 192, 122, 0.55) !important;
}

/* 2. Auto-fade top control hint and hide completely during rituals */
.game-hint, .controls-hint, .hint, [class*="hint"]:not(.kaiun-goshuin-hint) {
  color: rgba(234, 222, 198, 0.72) !important;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif !important;
  letter-spacing: 0.14em !important;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.85) !important;
  animation: jkHintAutoFade 4.5s ease forwards !important;
}
@keyframes jkHintAutoFade {
  0%, 55% { opacity: 0.65; }
  100% { opacity: 0; visibility: hidden; pointer-events: none; }
}

/* 3. Remove Ghost Capsule behind Top-Right Merit Plaque & Unify ALL UI into 2px Washi/Kuro-urushi Craft */
.sansa-game .game-header > .game-tools,
.sansa-game .game-header > .game-tools[data-liquid-nav] {
  display: none !important;
}

.sansa-game .game-room-tools,
.sansa-game .game-modes,
.sansa-game .game-modes[data-liquid-nav],
.chant-invite,
.chant-banner,
.devotional-action,
.incense-note,
.incense-cancel,
.beads-header {
  border-radius: 2px !important;
  background: rgba(18, 14, 11, 0.88) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  border: 1px solid rgba(181, 148, 91, 0.46) !important;
  border-top: 1px solid rgba(222, 186, 120, 0.78) !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.65), inset 0 0 0 1px rgba(181, 148, 91, 0.14) !important;
  color: #efe5d2 !important;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif !important;
}

.liquid-nav-lens,
.sansa-game .game-modes > button,
.sansa-game .game-modes .liquid-nav-source > button,
.sansa-game .game-room-tools :is(.exit-tool, .people-tool),
.sansa-game #game-room {
  border-radius: 2px !important;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif !important;
}

.liquid-nav-lens {
  background: rgba(181, 148, 91, 0.16) !important;
  border: 1px solid rgba(212, 178, 117, 0.45) !important;
  box-shadow: none !important;
}

.chant-banner,
.chant-invite {
  margin-top: 6px !important;
  padding: 6px 14px !important;
  min-height: 36px !important;
  font-size: 12px !important;
  letter-spacing: 0.08em !important;
}

.stage canvas {
  display: block !important;
  width: 100vw !important;
  height: 100vh !important;
}
html, body {
  background: #140e0a !important;
  margin: 0 !important;
  overflow: hidden !important;
}

/* 4. Side-Window Autumn Sunlight Shafts (Warm low-angle directional atmosphere, zero ceiling triangles) */
.jk-god-ray {
  top: 16% !important;
  width: 46vw !important;
  height: 52vh !important;
  background: linear-gradient(
    118deg,
    rgba(255, 176, 92, 0.11) 0%,
    rgba(224, 132, 58, 0.055) 45%,
    rgba(20, 14, 10, 0) 82%
  ) !important;
  filter: blur(14px) !important;
}
.jk-god-ray-a {
  left: -4% !important;
  transform: rotate(12deg) !important;
}
.jk-god-ray-b {
  right: -4% !important;
  transform: rotate(-12deg) scaleX(-1) !important;
  opacity: 0.65 !important;
}

/* 5. Fullscreen Micro-Satori Ritual Backdrop with Radial Mask Preserving the Principal Amida Buddha */
.jk-satori-overlay {
  position: fixed !important;
  inset: 0 !important;
  left: 0 !important;
  top: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding-top: 18vh !important;
  transform: none !important;
  z-index: 9100 !important;
  pointer-events: none !important;
  opacity: 0 !important;
  transition: opacity 0.42s ease !important;
}
.jk-satori-overlay[hidden] {
  display: none !important;
}
.jk-satori-overlay::before {
  content: "";
  position: fixed;
  inset: 0;
  background: rgba(10, 7, 5, 0.56);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  pointer-events: none;
}
.jk-satori-overlay.is-visible {
  opacity: 1 !important;
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
.jk-satori-card {
  position: relative !important;
  z-index: 2 !important;
  background-color: #161310 !important;
  border: 1px solid #C4A05A !important;
  border-radius: 0 !important;
  padding: 20px 34px 18px !important;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5) !important;
}

/* Keep top header and bottom ritual bar crisp above the Satori backdrop, while Dojo modals sit at 9600 */
.sansa-game .game-header,
.sansa-game .game-bottom {
  z-index: 9300 !important;
}
.jk-modal-backdrop {
  z-index: 9600 !important;
  background: rgba(10, 8, 6, 0.82) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* === 6. OPEN-WORLD SANCTUARY COMPASS & KYOTO CHARYO CONTEXT ACTIONS === */
#jakkoji-openworld-nav {
  position: fixed;
  top: 62px;
  left: 18px;
  z-index: 32;
  width: 268px;
  background: rgba(16, 13, 10, 0.92);
  border: 1px solid rgba(196, 160, 90, 0.48);
  border-top: 1px solid rgba(226, 188, 118, 0.82);
  border-radius: 2px;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.48);
  color: #f2e8d5;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif;
  user-select: none;
  transition: opacity 0.2s ease;
}

#jakkoji-openworld-nav.is-collapsed {
  width: 224px;
}

#jakkoji-openworld-nav.is-collapsed .jk-openworld-body {
  display: none;
}

.jk-openworld-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 9px 11px;
  border-bottom: 1px solid rgba(196, 160, 90, 0.24);
  background: rgba(24, 19, 15, 0.94);
}

#jakkoji-openworld-nav.is-collapsed .jk-openworld-heading {
  border-bottom: none;
}

.jk-openworld-heading-copy {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
}

.jk-openworld-kamon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  flex-shrink: 0;
  background: #9e291f;
  border: 1px solid rgba(226, 188, 118, 0.68);
  border-radius: 2px;
  color: #f7efe0;
  font-size: 12px;
  font-weight: 700;
}

.jk-openworld-heading-copy strong {
  display: block;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: #f5ebd6;
  white-space: nowrap;
}

.jk-openworld-state {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 2px;
  font-size: 10.5px;
  color: #cbbba0;
}

.jk-openworld-state i {
  font-style: normal;
  color: #e4c585;
  font-weight: 600;
}

.jk-openworld-state em {
  font-style: normal;
  opacity: 0.85;
  font-family: var(--jk-font-serif);
  font-size: 10.5px;
}

.jk-openworld-collapse {
  width: 22px;
  height: 22px;
  border-radius: 2px;
  border: 1px solid rgba(196, 160, 90, 0.42);
  background: rgba(28, 22, 17, 0.9);
  color: #e4c585;
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  flex-shrink: 0;
}

.jk-openworld-collapse:hover {
  border-color: #e4c585;
  background: rgba(158, 41, 31, 0.78);
  color: #fff;
}

.jk-openworld-body {
  padding: 8px 9px 9px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.jk-openworld-zones {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.jk-openworld-zone {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 6px 8px;
  text-align: left;
  background: rgba(26, 21, 16, 0.86);
  border: 1px solid rgba(196, 160, 90, 0.25);
  border-radius: 2px;
  color: #efe5d2;
  font-family: inherit;
  cursor: pointer;
  transition: none !important;
  outline: none !important;
}

.jk-openworld-zone:hover {
  background: rgba(46, 36, 26, 0.94);
  border-color: rgba(226, 188, 118, 0.68);
}

.jk-openworld-zone.is-current {
  background: rgba(158, 41, 31, 0.24);
  border-color: #dfbe7d;
  box-shadow: inset 2px 0 0 #d9534a;
}

.jk-openworld-zone-index {
  font-family: var(--jk-font-serif);
  font-size: 10.5px;
  color: #d4b275;
  opacity: 0.88;
  min-width: 18px;
}

.jk-openworld-zone-copy {
  display: flex;
  flex-direction: column;
  min-width: 0;
  flex: 1;
}

.jk-openworld-zone-copy strong {
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: #f6eedc;
}

.jk-openworld-zone-copy small {
  font-size: 10.5px;
  color: #bfb097;
  letter-spacing: 0.04em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.jk-openworld-zone-arrow {
  color: #d4b275;
  font-size: 13px;
  opacity: 0.75;
}

.jk-openworld-walk {
  width: 100%;
  padding: 5px 10px;
  background: rgba(31, 25, 19, 0.92);
  border: 1px solid rgba(196, 160, 90, 0.45);
  border-radius: 2px;
  color: #e4c585;
  font-family: inherit;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.14em;
  cursor: pointer;
  transition: background 0.18s ease, color 0.18s ease;
}

.jk-openworld-walk:hover,
.jk-openworld-walk.is-active {
  background: #9e291f;
  border-color: #e4c585;
  color: #f7efe0;
}

.jk-openworld-hint {
  margin: 0;
  font-size: 10.5px;
  text-align: center;
  color: rgba(218, 203, 178, 0.76);
  letter-spacing: 0.06em;
}

/* Fix outdoor Charyo & bench contextual action buttons overlapping #zen-presence-strip */
.cafe25-context-actions {
  bottom: calc(136px + env(safe-area-inset-bottom)) !important;
  z-index: 35 !important;
  gap: 10px !important;
}

.cafe25-context-actions button {
  border-radius: 2px !important;
  background: rgba(18, 14, 11, 0.94) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  border: 1px solid rgba(212, 175, 55, 0.58) !important;
  border-top: 1px solid rgba(235, 201, 132, 0.85) !important;
  color: #f4ebd9 !important;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif !important;
  letter-spacing: 0.12em !important;
  padding: 8px 18px !important;
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.72), inset 0 0 0 1px rgba(196, 160, 90, 0.18) !important;
}

.cafe25-context-actions button:hover {
  background: rgba(158, 41, 31, 0.92) !important;
  border-color: #f0d290 !important;
  color: #ffffff !important;
}

.jk-dock-title-compact {
  display: none;
}

.jk-karesansui-canvas,
.jk-shakyo-canvas,
.jk-suzuri-canvas,
.jk-goshuin-canvas,
.jk-omikuji-canvas {
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
}

@media (max-width: 920px) {
  #jakkoji-openworld-nav {
    top: 56px;
    left: 10px;
    width: 228px;
  }
}

/* === 7. MOBILE & TOUCH PERFECTION (iPhone SE 375px / Pro 390px / Pro Max 430px) === */
@media (max-width: 768px) {
  /* Row 1 Left: Native Room & Sangha Counter */
  .sansa-game .game-room-tools {
    transform: scale(0.88) !important;
    transform-origin: top left !important;
  }

  /* Row 1 Right: Collapsed Merit & Dojo Dock (Zero overlap with left header) */
  .jk-dock.is-collapsed {
    top: calc(10px + env(safe-area-inset-top)) !important;
    right: 10px !important;
    width: auto !important;
    max-width: none !important;
    z-index: 9400 !important;
  }

  .jk-dock.is-collapsed .jk-dock-top {
    padding: 5px 8px !important;
    gap: 8px !important;
    min-height: 36px !important;
  }

  .jk-dock.is-collapsed .jk-lang-switch {
    display: none !important;
  }

  .jk-dock.is-collapsed .jk-dock-brand {
    gap: 5px !important;
  }

  .jk-dock.is-collapsed .jk-dock-crest {
    width: 19px !important;
    height: 19px !important;
    font-size: 10.5px !important;
  }

  .jk-dock.is-collapsed .jk-dock-title-full {
    display: none !important;
  }

  .jk-dock.is-collapsed .jk-dock-title-compact {
    display: inline !important;
    font-size: 12px !important;
    letter-spacing: 0.04em !important;
  }

  .jk-dock.is-collapsed .jk-dock-merit-mini {
    display: none !important;
  }

  .jk-dock.is-collapsed .jk-lang-btn {
    font-size: 10.5px !important;
    padding: 2px 4px !important;
  }

  .jk-dock.is-collapsed .jk-dock-collapse-btn {
    font-size: 10.5px !important;
    padding: 2px 5px !important;
  }

  /* Expanded Dock on Mobile: Clean Full-Width Kyoto Lacquer Sheet */
  .jk-dock:not(.is-collapsed) {
    top: calc(10px + env(safe-area-inset-top)) !important;
    right: 10px !important;
    left: 10px !important;
    width: calc(100vw - 20px) !important;
    max-height: calc(100dvh - 108px) !important;
    overflow-y: auto !important;
    z-index: 9520 !important;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.65) !important;
  }

  /* Row 2 Left: Open-World 5-Zone Compass (Compact Plaque when Collapsed, Modal Sheet when Expanded) */
  #jakkoji-openworld-nav {
    top: calc(54px + env(safe-area-inset-top)) !important;
    left: 10px !important;
    width: min(308px, calc(100vw - 20px)) !important;
    z-index: 9480 !important;
  }

  #jakkoji-openworld-nav:not(.is-collapsed) {
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.65) !important;
  }

  #jakkoji-openworld-nav.is-collapsed {
    width: 192px !important;
    z-index: 32 !important;
  }

  #jakkoji-openworld-nav.is-collapsed .jk-openworld-heading {
    padding: 5px 8px !important;
    min-height: 36px !important;
  }

  #jakkoji-openworld-nav.is-collapsed .jk-openworld-kamon {
    width: 20px !important;
    height: 20px !important;
    font-size: 10.5px !important;
  }

  #jakkoji-openworld-nav.is-collapsed .jk-openworld-heading-copy strong {
    font-size: 11px !important;
    letter-spacing: 0.05em !important;
  }

  #jakkoji-openworld-nav.is-collapsed .jk-openworld-state {
    margin-top: 1px !important;
    font-size: 10.5px !important;
  }

  #jakkoji-openworld-nav.is-collapsed .jk-openworld-state em {
    display: none !important;
  }

  /* Row 2 Right: Sutra Chant Invite Pill (Aligned cleanly beside collapsed compass) */
  .chant-banner,
  .chant-invite {
    margin-top: 2px !important;
    padding: 5px 10px !important;
    min-height: 34px !important;
    font-size: 11px !important;
    letter-spacing: 0.04em !important;
  }

  /* Bottom Context Actions & Whisper on Mobile */
  .cafe25-context-actions {
    bottom: calc(134px + env(safe-area-inset-bottom)) !important;
    gap: 8px !important;
  }

  .cafe25-context-actions button {
    padding: 7px 14px !important;
    font-size: 12px !important;
    min-height: 40px !important;
  }

  .jk-hondo-whisper {
    bottom: calc(88px + env(safe-area-inset-bottom)) !important;
    font-size: 11.5px !important;
    padding: 4px 12px !important;
  }

  /* Five Dojo Fullscreen Modal Optimization for Mobile */
  .jk-modal-backdrop {
    padding: 0 !important;
  }

  .jk-modal-window {
    width: 100vw !important;
    height: 100dvh !important;
    border-width: 1px !important;
    outline-offset: -4px !important;
  }

  .jk-modal-header {
    padding: 8px 10px !important;
    gap: 6px !important;
  }

  .jk-modal-title-block {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    order: 1 !important;
  }

  .jk-modal-kicker {
    font-size: 10.5px !important;
    letter-spacing: 0.06em !important;
  }

  .jk-modal-title {
    font-size: 15px !important;
    margin-top: 1px !important;
  }

  .jk-modal-actions {
    order: 2 !important;
  }

  .jk-modal-close {
    padding: 4px 9px !important;
    font-size: 11px !important;
  }

  .jk-modal-nav {
    order: 3 !important;
    width: 100% !important;
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 3px !important;
  }

  .jk-modal-tab {
    padding: 5px 2px !important;
    font-size: 11px !important;
    text-align: center !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  .jk-modal-body {
    padding: 10px !important;
  }

  .jk-studio-grid,
  .jk-omikuji-layout {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }

  .jk-stage-panel {
    padding: 8px !important;
  }

  .jk-panel-section {
    padding: 9px 10px !important;
  }

  /* Shakyo Sutra Studio: Compact Horizontal Inkstone on Mobile so Sutra + Inkstone + Verses fit on screen */
  .jk-shakyo-workspace {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }

  .jk-suzuri-box {
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    padding: 6px 10px !important;
  }

  .jk-suzuri-canvas {
    width: 64px !important;
    height: 88px !important;
    margin: 0 !important;
    flex-shrink: 0 !important;
  }

  .jk-ink-meter {
    flex: 1 1 auto !important;
    min-width: 90px !important;
  }
}

/* === Open-world minimal interface ===
   Keep the scene in focus: one five-stop strip, one quiet ritual dock, and
   no duplicate game chrome. These final rules intentionally supersede the
   older lacquer-panel presentation above. */
.sansa-game .game-room-tools,
#chant-invite,
.chant-invite,
#jk-hondo-whisper,
.jk-hondo-whisper,
#jakkoji-BottomHud,
[id="jakkoji-BottomHud"],
.label.self,
[class~="label"][class~="self"],
.visitor-label.is-self,
.visitor-label-me {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}


/* */

:root {
  --jk-hud-lacquer: #181817;
  --jk-hud-lacquer-elevated: #22221f;
  --jk-hud-edge: rgba(196, 166, 112, 0.34);
  --jk-hud-edge-strong: rgba(212, 182, 126, 0.56);
  --jk-hud-inner-rule: rgba(196, 166, 112, 0.12);
  --jk-hud-ink: #F4EFE6;
  --jk-hud-ink-muted: #C2B69F;
  --jk-hud-gold: #D4B475;
  --jk-hud-shuin: #9E2A22;
  --jk-hud-shadow: inset 0 1px 0 rgba(244, 239, 230, 0.07), 0 2px 4px rgba(0, 0, 0, 0.38);
}

.jk-god-ray,
.jk-candle-glow,
.sansa-game .game-hint,
.game-hint {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
}

.stage canvas {
  filter: none !important;
}

/* */
#jakkoji-openworld-nav.jk-temple-plaque {
  position: fixed !important;
  top: calc(14px + env(safe-area-inset-top)) !important;
  left: 50% !important;
  right: auto !important;
  bottom: auto !important;
  transform: translateX(-50%) !important;
  z-index: 9420 !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 5px !important;
  width: max-content !important;
  max-width: calc(100vw - 24px) !important;
  height: auto !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  pointer-events: none !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-frame {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 2px !important;
  padding: 7px 26px 8px !important;
  border-radius: 2px !important;
  background: var(--jk-hud-lacquer) !important;
  border: 1px solid var(--jk-hud-edge) !important;
  outline: 1px solid var(--jk-hud-inner-rule) !important;
  outline-offset: -4px !important;
  box-shadow: var(--jk-hud-shadow) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-top {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-family: var(--jk-font-serif) !important;
  font-size: 10.5px !important;
  letter-spacing: 0.16em !important;
  color: var(--jk-hud-ink-muted) !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-seal {
  display: inline-block !important;
  padding: 1px 5px !important;
  border-radius: 1px !important;
  background: var(--jk-hud-shuin) !important;
  border: 1px solid rgba(232, 192, 152, 0.32) !important;
  color: #F8F2E6 !important;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  line-height: 1.25 !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-main {
  font-family: var(--jk-font-serif) !important;
  font-size: 15.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.14em !important;
  color: var(--jk-hud-ink) !important;
  line-height: 1.32 !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-sub {
  font-family: var(--jk-font-serif) !important;
  font-size: 11px !important;
  letter-spacing: 0.08em !important;
  color: var(--jk-hud-ink-muted) !important;
  line-height: 1.32 !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-walk-hint {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 2px 10px !important;
  border-radius: 1px !important;
  background: rgba(15, 13, 11, 0.72) !important;
  border: 0 !important;
  border-top: 1px solid rgba(196, 166, 112, 0.24) !important;
  border-bottom: 1px solid rgba(196, 166, 112, 0.24) !important;
  color: #DFD3BC !important;
  font-family: var(--jk-font-serif) !important;
  font-size: 10.5px !important;
  letter-spacing: 0.08em !important;
  opacity: 0.88 !important;
  transition: opacity 0.45s ease !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-walk-hint.is-subtle {
  opacity: 0.48 !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-walk-touch {
  display: none !important;
}

/* */
.sansa-game .game-bottom {
  position: fixed !important;
  left: 50% !important;
  bottom: calc(18px + env(safe-area-inset-bottom)) !important;
  transform: translateX(-50%) !important;
  width: min(468px, calc(100vw - 24px)) !important;
  max-width: calc(100vw - 24px) !important;
  gap: 0 !important;
  padding: 5px 8px 6px !important;
  box-sizing: border-box !important;
  border-radius: 2px !important;
  border: 1px solid var(--jk-hud-edge) !important;
  outline: 1px solid var(--jk-hud-inner-rule) !important;
  outline-offset: -4px !important;
  background: var(--jk-hud-lacquer) !important;
  box-shadow: var(--jk-hud-shadow) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  color: var(--jk-hud-ink) !important;
}

.sansa-game .game-bottom .game-modes {
  order: 0 !important;
  width: 100% !important;
  height: 52px !important;
  min-height: 52px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

.sansa-game .game-bottom .liquid-nav-source {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  gap: 2px !important;
  width: 100% !important;
  height: 52px !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.sansa-game .game-bottom .liquid-nav-lens,
.sansa-game .game-bottom .game-modes kbd {
  display: none !important;
}

.sansa-game .game-bottom .game-modes button {
  position: relative !important;
  min-width: 0 !important;
  width: 100% !important;
  height: 52px !important;
  padding: 4px 6px !important;
  border: 1px solid transparent !important;
  border-radius: 1px !important;
  background: transparent !important;
  color: var(--jk-hud-ink) !important;
  font-family: var(--jk-font-serif) !important;
  font-size: 12px !important;
  letter-spacing: 0.06em !important;
  transition: background 0.16s ease, color 0.16s ease, border-color 0.16s ease !important;
}

.sansa-game .game-bottom .game-modes button svg {
  width: 19px !important;
  height: 19px !important;
}

.sansa-game .game-bottom .game-modes button:hover,
.sansa-game .game-bottom .game-modes button.is-active,
.sansa-game .game-bottom .game-modes button[aria-pressed="true"] {
  background: rgba(196, 166, 112, 0.11) !important;
  border-top-color: rgba(212, 180, 117, 0.48) !important;
  border-bottom-color: rgba(212, 180, 117, 0.48) !important;
  color: #FBF6EC !important;
}

.sansa-game .game-bottom .game-bow25 {
  position: static !important;
  display: flex !important;
  order: 1 !important;
  align-items: center !important;
  gap: 10px !important;
  width: 100% !important;
  height: 18px !important;
  margin: 4px 0 0 !important;
  padding: 2px 8px 0 !important;
  box-sizing: border-box !important;
  background: transparent !important;
  border: 0 !important;
  border-top: 1px solid rgba(196, 166, 112, 0.16) !important;
  box-shadow: none !important;
  color: var(--jk-hud-ink-muted) !important;
}

.sansa-game .game-bottom .game-bow25-count {
  position: static !important;
  font-family: var(--jk-font-serif) !important;
  font-size: 10.5px !important;
  font-variant-numeric: tabular-nums !important;
  line-height: 18px !important;
  white-space: nowrap !important;
}

.sansa-game .game-bottom .game-bow25-count::after {
  content: " 拝";
}

html[lang="en"] .sansa-game .game-bottom .game-bow25-count::after {
  content: " Bows";
}

.sansa-game .game-bottom .game-bow25-track {
  flex: 1 !important;
  height: 2px !important;
  border-radius: 0 !important;
  background: rgba(196, 166, 112, 0.18) !important;
}

.sansa-game .game-bottom .game-bow25-fill {
  background: var(--jk-hud-gold) !important;
  opacity: 1 !important;
}

/* */
.jk-dock,
.jk-dock.is-collapsed {
  position: fixed !important;
  top: auto !important;
  right: 18px !important;
  bottom: calc(18px + env(safe-area-inset-bottom)) !important;
  left: auto !important;
  z-index: 9410 !important;
  display: flex !important;
  flex-direction: column-reverse !important;
  align-items: flex-end !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: calc(100vw - 36px) !important;
  border: 0 !important;
  outline: 0 !important;
  border-radius: 2px !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--jk-hud-ink) !important;
}

.jk-dock .jk-dock-top {
  display: flex !important;
  align-items: center !important;
  gap: 4px !important;
  min-height: 44px !important;
  padding: 4px 6px !important;
  box-sizing: border-box !important;
  border: 1px solid var(--jk-hud-edge) !important;
  outline: 1px solid var(--jk-hud-inner-rule) !important;
  outline-offset: -3px !important;
  border-radius: 2px !important;
  background: var(--jk-hud-lacquer) !important;
  box-shadow: var(--jk-hud-shadow) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

.jk-dock .jk-dock-brand {
  display: flex !important;
  align-items: center !important;
  min-height: 34px !important;
  padding: 0 10px !important;
  border: 0 !important;
  border-radius: 1px !important;
  background: transparent !important;
  color: var(--jk-hud-ink) !important;
  font-family: var(--jk-font-serif) !important;
  cursor: pointer !important;
}

.jk-dock-crest,
.jk-dock-merit-mini,
.jk-dock.is-collapsed .jk-lang-switch,
.jk-dock-title-full {
  display: none !important;
}

.jk-dock:not(.is-collapsed) .jk-lang-switch {
  display: inline-flex !important;
  border: 1px solid rgba(196, 166, 112, 0.28) !important;
  border-radius: 1px !important;
  overflow: hidden !important;
}

.jk-dock-title-compact {
  display: inline !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  letter-spacing: 0.08em !important;
  color: var(--jk-hud-ink) !important;
  white-space: nowrap !important;
}

.jk-dock .jk-dock-sound,
.jk-dock .jk-dock-collapse-btn {
  width: auto !important;
  min-width: 34px !important;
  height: 34px !important;
  padding: 0 8px !important;
  border: 1px solid rgba(196, 166, 112, 0.22) !important;
  border-radius: 1px !important;
  background: rgba(25, 22, 19, 0.65) !important;
  color: var(--jk-hud-gold) !important;
  font-family: var(--jk-font-serif) !important;
  font-size: 11.5px !important;
  line-height: 32px !important;
  text-align: center !important;
  cursor: pointer !important;
}

.jk-dock .jk-dock-sound:hover,
.jk-dock .jk-dock-collapse-btn:hover,
.jk-dock .jk-dock-sound.is-playing {
  background: rgba(196, 166, 112, 0.15) !important;
  border-color: var(--jk-hud-edge-strong) !important;
  color: #FBF6EC !important;
}

.jk-dock-body {
  width: min(332px, calc(100vw - 24px)) !important;
  max-height: calc(100vh - 150px) !important;
  overflow-y: auto !important;
  margin-bottom: 8px !important;
  background: var(--jk-hud-lacquer-elevated) !important;
  border: 1px solid var(--jk-hud-edge) !important;
  outline: 1px solid var(--jk-hud-inner-rule) !important;
  outline-offset: -4px !important;
  border-radius: 2px !important;
  box-shadow: var(--jk-hud-shadow) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* */
.jk-proximity-discovery {
  position: fixed !important;
  left: 50% !important;
  bottom: calc(106px + env(safe-area-inset-bottom)) !important;
  transform: translateX(-50%) translateY(6px) !important;
  z-index: 9350 !important;
  opacity: 0 !important;
  pointer-events: none !important;
  transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

.jk-proximity-discovery.is-visible {
  opacity: 1 !important;
  transform: translateX(-50%) translateY(0) !important;
  pointer-events: auto !important;
}

.jk-proximity-discovery .jk-prox-btn {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 7px 14px !important;
  border-radius: 2px !important;
  background: var(--jk-hud-lacquer-elevated) !important;
  border: 1px solid var(--jk-hud-edge-strong) !important;
  outline: 1px solid var(--jk-hud-inner-rule) !important;
  outline-offset: -3px !important;
  box-shadow: var(--jk-hud-shadow) !important;
  color: var(--jk-hud-ink) !important;
  font-family: var(--jk-font-serif) !important;
  font-size: 12px !important;
  letter-spacing: 0.06em !important;
  cursor: pointer !important;
}

.jk-proximity-discovery .jk-prox-btn:hover {
  background: rgba(32, 27, 22, 0.96) !important;
  border-color: var(--jk-hud-gold) !important;
}

.jk-proximity-discovery .jk-prox-badge {
  padding: 2px 7px !important;
  border-radius: 1px !important;
  background: var(--jk-hud-shuin) !important;
  border: 1px solid rgba(232, 192, 152, 0.32) !important;
  color: #FAF3E8 !important;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
}

.jk-proximity-discovery .jk-prox-cta {
  padding-left: 8px !important;
  border-left: 1px solid rgba(196, 166, 112, 0.28) !important;
  color: var(--jk-hud-gold) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  white-space: nowrap !important;
}

.jk-proximity-discovery .jk-prox-kbd {
  display: inline-block !important;
  margin-left: 4px !important;
  padding: 0 4px !important;
  border: 1px solid rgba(212, 180, 117, 0.38) !important;
  border-radius: 1px !important;
  font-family: var(--jk-font-serif) !important;
  font-size: 10.5px !important;
  line-height: 1.3 !important;
}

.sansa-game .game-bottom button:focus-visible,
.jk-dock .jk-dock-top button:focus-visible,
.jk-dock .jk-dock-brand:focus-visible,
.jk-proximity-discovery .jk-prox-btn:focus-visible {
  outline: 1px solid var(--jk-hud-gold) !important;
  outline-offset: 2px !important;
}

@media (max-width: 768px), (pointer: coarse) {
  #jakkoji-openworld-nav.jk-temple-plaque .jk-walk-desktop,
  .jk-proximity-discovery .jk-prox-kbd {
    display: none !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-walk-touch {
    display: inline !important;
  }
}

@media (max-width: 768px) {
  #jakkoji-openworld-nav.jk-temple-plaque {
    top: calc(8px + env(safe-area-inset-top)) !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-frame {
    padding: 5px 14px 6px !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-main {
    font-size: 13.5px !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-sub {
    font-size: 10.5px !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-walk-hint {
    font-size: 10.5px !important;
    padding: 2px 8px !important;
  }
  .sansa-game .game-bottom {
    bottom: calc(10px + env(safe-area-inset-bottom)) !important;
    width: calc(100vw - 16px) !important;
    padding: 4px 6px 5px !important;
  }
  .jk-dock,
  .jk-dock.is-collapsed {
    bottom: calc(96px + env(safe-area-inset-bottom)) !important;
    right: 10px !important;
  }
  .jk-proximity-discovery {
    bottom: calc(144px + env(safe-area-inset-bottom)) !important;
    max-width: calc(100vw - 20px) !important;
  }
  .jk-proximity-discovery .jk-prox-btn {
    max-width: calc(100vw - 20px) !important;
    padding: 6px 10px !important;
    gap: 7px !important;
    font-size: 11px !important;
  }
  .jk-proximity-discovery .jk-prox-label {
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }
}

#jakkoji-openworld-nav .jk-plaque-frame {
  box-sizing: border-box;
  max-width: 100%;
  text-align: center;
  overflow-wrap: anywhere;
}

.jk-modal-window {
  border-width: 1px;
  border-radius: 2px;
  box-shadow: inset 0 0 0 4px var(--jk-washi-aged);
}

.jk-modal-window.jk-theme-lacquer {
  box-shadow: inset 0 0 0 4px var(--jk-lacquer-elevated);
}

.jk-modal-kicker {
  color: var(--jk-hud-ink-muted);
}

.jk-modal-title {
  text-wrap: balance;
  overflow-wrap: anywhere;
  line-height: 1.5;
}

.jk-modal-body {
  min-height: 0;
  overscroll-behavior: contain;
}

.jk-modal-tab,
.jk-modal-close {
  min-height: 44px;
}

.jk-modal-header button:focus-visible,
.jk-dock-body button:focus-visible {
  outline: 2px solid var(--jk-hud-ink);
  outline-offset: 2px;
}

@media (max-width: 768px), (pointer: coarse) {
  .jk-dock .jk-dock-sound,
  .jk-dock .jk-dock-collapse-btn,
  .jk-dock .jk-dock-brand {
    min-width: 44px !important;
    min-height: 44px !important;
  }

  .jk-dock-body {
    max-height: calc(100dvh - 232px - env(safe-area-inset-top) - env(safe-area-inset-bottom)) !important;
  }

  .jk-proximity-discovery {
    bottom: calc(158px + env(safe-area-inset-bottom)) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  #jakkoji-openworld-nav *,
  .sansa-game .game-bottom *,
  .jk-dock,
  .jk-dock *,
  .jk-proximity-discovery,
  .jk-proximity-discovery *,
  .jk-modal-backdrop * {
    animation: none !important;
    transition: none !important;
  }
}

/* Editorial wayfinding, dharma tags, and Ema studio controls. */
.jk-season-auto-badge {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 2px 7px;
  border: 1px solid rgba(198, 172, 122, 0.34);
  color: var(--jk-kindei-bright);
  font: 500 10.5px/1.5 var(--jk-font-serif);
  letter-spacing: 0.12em;
  white-space: nowrap;
}

.jk-quickbar-label {
  font-family: var(--jk-font-serif);
  letter-spacing: 0.16em;
  line-height: 1.6;
}

.jk-quickbar-note {
  color: var(--jk-ivory-muted);
  font-family: var(--jk-font-serif);
  font-size: 10.5px;
  letter-spacing: 0.14em;
}

.jk-waypoint-bar {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  width: min(520px, calc(100vw - 28px));
  padding: 3px 0;
  background: rgba(18, 16, 13, 0.90);
  border-top: 1px solid rgba(198, 172, 122, 0.36);
  border-bottom: 1px solid rgba(198, 172, 122, 0.28);
  border-radius: 0;
  pointer-events: auto;
}

.jk-waypoint-btn {
  appearance: none;
  min-width: 0;
  padding: 5px 14px;
  border: 0;
  border-right: 1px solid rgba(198, 172, 122, 0.18);
  border-radius: 0;
  background: transparent;
  color: var(--jk-ivory-muted);
  font: 500 10.5px/1.4 var(--jk-font-serif);
  letter-spacing: 0.18em;
  cursor: pointer;
  pointer-events: auto;
  transition: color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
}

.jk-waypoint-btn:last-child {
  border-right: 0;
}

.jk-waypoint-btn:hover,
.jk-waypoint-btn:focus-visible,
.jk-waypoint-btn.is-active {
  color: #FAF5EB;
  background: rgba(198, 172, 122, 0.08);
  box-shadow: inset 0 -2px 0 #A62B21;
}

.jk-dharma-badge {
  position: relative;
  appearance: none;
  display: inline-flex;
  align-items: center;
  max-width: min(300px, calc(100vw - 30px));
  padding: 5px 10px 5px 11px;
  border: 1px solid rgba(198, 172, 122, 0.28);
  border-left: 2px solid #A62B21;
  border-radius: 0;
  background: rgba(20, 17, 14, 0.88);
  color: #FAF5EB;
  font: 500 11px/1.4 var(--jk-font-serif);
  letter-spacing: 0.14em;
  cursor: pointer;
  pointer-events: auto;
}

.jk-dharma-badge::after {
  content: "改";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 15px;
  height: 15px;
  margin-left: 8px;
  border: 1px solid rgba(184, 51, 42, 0.75);
  color: #D94E41;
  font: 500 10.5px/1 var(--jk-font-serif);
  letter-spacing: 0;
}

html[lang="en"] .jk-dharma-badge::after {
  content: "↻";
}

.jk-dharma-badge:hover,
.jk-dharma-badge:focus-visible {
  border-color: rgba(198, 172, 122, 0.58);
  box-shadow: inset 0 -2px 0 #A62B21;
}

.jk-quick-ema-btn {
  position: fixed;
  left: 16px;
  bottom: calc(18px + env(safe-area-inset-bottom));
  z-index: 9415;
  min-height: 38px;
  padding: 7px 12px;
  border: 1px solid var(--jk-hud-edge-strong);
  border-radius: 0;
  outline: 1px solid rgba(198, 172, 122, 0.14);
  outline-offset: -4px;
  background: var(--jk-hud-lacquer);
  color: var(--jk-hud-ink);
  box-shadow: var(--jk-hud-shadow);
  font: 500 12px/1.5 var(--jk-font-serif);
  letter-spacing: 0.14em;
  cursor: pointer;
}

.jk-quick-ema-btn::before {
  content: "奉納";
  display: inline-block;
  padding: 1px 4px;
  margin-right: 7px;
  border: 1px solid #A62B21;
  color: #D94E41;
  font: 500 10.5px/1.2 var(--jk-font-serif);
  letter-spacing: 0.08em;
}

html[lang="en"] .jk-quick-ema-btn::before {
  content: "EMA";
}

.jk-quick-ema-btn:hover,
.jk-quick-ema-btn:focus-visible {
  background: #201A16;
  box-shadow: inset 0 -2px 0 #A62B21, var(--jk-hud-shadow);
}

.jk-merit-bubble {
  position: fixed;
  z-index: 9425;
  pointer-events: none;
  padding: 4px 8px;
  border: 1px solid rgba(198, 172, 122, 0.48);
  border-radius: 0;
  background: rgba(24, 21, 17, 0.92);
  color: var(--jk-hud-gold);
  font: 500 11px var(--jk-font-serif);
  letter-spacing: 0.12em;
  animation: jk-merit-float 1.2s ease-out forwards;
}
@keyframes jk-merit-float { from { opacity:0; transform:translate(-50%,5px); } 18% { opacity:1; } to { opacity:0; transform:translate(-50%,-42px); } }
.jk-omikuji-upgraded .jk-ema-studio-panel { min-width:0; }
.jk-ema-drawing-wrap { display:grid; gap:8px; }
#jk-ema-draw-cv { display:block; width:100%; max-width:520px; height:auto; aspect-ratio:13/9; border:1px solid var(--jk-hinoki-border); cursor:crosshair; touch-action:none; }
.jk-ema-tools { display:flex; flex-wrap:wrap; align-items:center; gap:5px; }
.jk-ema-tool-group,.jk-ema-stamps { display:inline-flex; gap:3px; align-items:center; }
.jk-ema-color { width:24px; height:24px; padding:0; border:1px solid rgba(20,20,19,.35); border-radius:2px; background:var(--swatch); cursor:pointer; }
.jk-ema-color.is-active,.jk-ema-size.is-active,.jk-ema-stamp-btn.is-selected { outline:2px solid var(--jk-shuin); outline-offset:1px; }
.jk-ema-size,.jk-ema-stamp-btn { min-width:27px; min-height:26px; padding:2px 6px; border:1px solid var(--jk-hinoki-border); background:var(--jk-washi); color:var(--jk-ink); cursor:pointer; }
.jk-ema-pray { display:block; width:100%; margin-top:7px; padding:4px 6px; border:1px solid rgba(94,68,31,.42); background:rgba(255,255,255,.2); color:#4a3b24; font:11px var(--jk-font-serif); cursor:pointer; }
.jk-ema-actions { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 6px; }
.jk-ema-actions .jk-ema-pray { flex: 1; width: auto; margin-top: 0; }
.jk-ema-report { background: transparent; border: 0; color: var(--jk-ink-muted); font-size: 10.5px; opacity: 0.65; cursor: pointer; padding: 2px 4px; }
.jk-ema-report:hover { opacity: 1; color: var(--jk-shuin); }
#jk-ema-undo, #jk-ema-clear { white-space: nowrap; flex-shrink: 0; }
@media (max-width:600px) { .jk-waypoint-bar { width:calc(100vw - 24px); } .jk-quick-ema-btn { left:10px; bottom:calc(86px + env(safe-area-inset-bottom)); } #jk-ema-draw-cv { max-width:100%; } }
.jk-ema-card-drawing { display:block; width:100%; max-height:104px; object-fit:cover; margin:0 0 6px; border:1px solid rgba(94,68,31,.4); }

/* Final editorial pass: sumi lacquer, torinoko washi, and ruled temple paper. */
.jk-dock {
  background: #14120F !important;
  border: 1px solid rgba(198, 172, 122, 0.30) !important;
  border-radius: 0 !important;
  box-shadow: inset 0 0 0 1px rgba(198, 172, 122, 0.12) !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-frame {
  background: #14120F !important;
  border: 1px solid rgba(198, 172, 122, 0.30) !important;
  border-radius: 0 !important;
  box-shadow: inset 0 0 0 1px rgba(198, 172, 122, 0.12) !important;
}

.jk-dock,
.jk-dock .jk-dock-top,
.jk-dock-body {
  font-family: var(--jk-font-serif) !important;
  font-variant-numeric: tabular-nums !important;
}

.jk-dock .jk-dock-top {
  background: #14120F !important;
  border: 1px solid rgba(198, 172, 122, 0.30) !important;
  box-shadow: inset 0 0 0 1px rgba(198, 172, 122, 0.12) !important;
  border-radius: 0 !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

.jk-dock-body {
  background: #14120F !important;
  border: 1px solid rgba(198, 172, 122, 0.30) !important;
  box-shadow: inset 0 0 0 1px rgba(198, 172, 122, 0.12) !important;
  border-radius: 0 !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

.jk-dock .jk-dock-title,
.jk-dock .jk-dock-title-compact,
.jk-dock .jk-quickbar-label,
.jk-dock .jk-plaque-title,
.jk-dock .jk-plaque-desc,
.jk-dock .jk-plaque-arrow,
.jk-dock .jk-season-btn,
.jk-dock .jk-sound-btn {
  font-family: var(--jk-font-serif) !important;
}

.jk-dojo-plaque {
  border: 0 !important;
  border-bottom: 1px solid rgba(198, 172, 122, 0.15) !important;
  border-left: 3px solid transparent !important;
  border-radius: 0 !important;
  background: transparent !important;
  font-family: var(--jk-font-serif) !important;
  letter-spacing: 0.14em !important;
}

.jk-dojo-plaque:hover,
.jk-dojo-plaque:focus-visible {
  border-bottom-color: rgba(198, 172, 122, 0.34) !important;
  border-left-color: #A62B21 !important;
  background: rgba(198, 172, 122, 0.08) !important;
}

.jk-plaque-index {
  border: 0 !important;
  border-right: 1px solid rgba(198, 172, 122, 0.24) !important;
  background: transparent !important;
  color: #C8A668 !important;
  font-family: var(--jk-font-display) !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  line-height: 1.35 !important;
  width: 24px !important;
  min-height: 24px !important;
  border-radius: 0 !important;
}

.jk-plaque-title {
  font-weight: 600 !important;
  letter-spacing: 0.16em !important;
  line-height: 1.5 !important;
}

.jk-plaque-desc {
  color: #B8AA96 !important;
  letter-spacing: 0.10em !important;
  line-height: 1.65 !important;
}

.jk-plaque-arrow {
  border: 0 !important;
  padding: 2px 0 2px 8px !important;
  color: #C8A668 !important;
  letter-spacing: 0.14em !important;
}

.jk-modal-window {
  background: #F5EFE2 !important;
  color: #1C1814 !important;
  border: 1px solid #D8CEB8 !important;
  border-radius: 0 !important;
  outline: 1px solid rgba(216, 206, 184, 0.78) !important;
  outline-offset: -5px !important;
  box-shadow: inset 0 0 0 4px rgba(216, 206, 184, 0.28) !important;
}

.jk-modal-window.jk-theme-lacquer {
  background: #F5EFE2 !important;
  color: #1C1814 !important;
  box-shadow: inset 0 0 0 4px rgba(216, 206, 184, 0.28) !important;
}

.jk-modal-header {
  background: #14120F !important;
  color: #F5EFE2 !important;
  border-top: 1px solid rgba(198, 172, 122, 0.36) !important;
  border-bottom: 1px solid rgba(198, 172, 122, 0.28) !important;
  font-family: var(--jk-font-serif) !important;
}

.jk-modal-kicker,
.jk-modal-title,
.jk-modal-tab,
.jk-modal-close {
  font-family: var(--jk-font-serif) !important;
}

.jk-modal-kicker {
  letter-spacing: 0.18em !important;
}

.jk-modal-title {
  font-family: var(--jk-font-display) !important;
  font-weight: 600 !important;
  letter-spacing: 0.18em !important;
  line-height: 1.65 !important;
}

.jk-modal-tab,
.jk-modal-close {
  border-radius: 0 !important;
  border-color: rgba(198, 172, 122, 0.30) !important;
  letter-spacing: 0.14em !important;
}

.jk-modal-tab {
  background: #1C1814 !important;
  color: #B8AA96 !important;
}

.jk-modal-tab.is-active,
.jk-modal-tab:hover,
.jk-modal-tab:focus-visible {
  background: #282018 !important;
  border-color: #D4B475 !important;
  color: #F5EFE2 !important;
}

.jk-modal-close {
  border-color: rgba(212, 180, 117, 0.45) !important;
  color: #F5EFE2 !important;
}

.jk-modal-body {
  background: #F5EFE2 !important;
  color: #1C1814 !important;
  font-family: var(--jk-font-sans) !important;
  letter-spacing: 0.08em;
}

.jk-stage-panel,
.jk-side-panel,
.jk-theme-lacquer .jk-stage-panel,
.jk-theme-lacquer .jk-side-panel {
  background: #F5EFE2 !important;
  color: #1C1814 !important;
  border: 1px solid #D8CEB8 !important;
  border-radius: 0 !important;
  box-shadow: inset 0 0 0 1px rgba(216, 206, 184, 0.22) !important;
}

.jk-panel-section,
.jk-theme-lacquer .jk-panel-section {
  border-bottom-color: #D8CEB8 !important;
}

.jk-section-head {
  font-family: var(--jk-font-display) !important;
  font-weight: 600 !important;
  letter-spacing: 0.18em !important;
  line-height: 1.65 !important;
  color: #1C1814 !important;
}

.jk-section-head small {
  font-family: var(--jk-font-serif) !important;
  color: #635647 !important;
  letter-spacing: 0.12em !important;
}

.jk-theme-lacquer .jk-section-head small {
  color: #635647 !important;
}

.jk-seg-btn,
.jk-btn,
.jk-theme-lacquer .jk-seg-btn,
.jk-theme-lacquer .jk-btn {
  background: #F5EFE2 !important;
  border: 1px solid #D8CEB8 !important;
  border-radius: 0 !important;
  color: #1C1814 !important;
  font-family: var(--jk-font-serif) !important;
  letter-spacing: 0.12em !important;
}

.jk-seg-btn:hover,
.jk-btn:hover,
.jk-seg-btn:focus-visible,
.jk-btn:focus-visible {
  border-color: #9E2A20 !important;
  box-shadow: inset 0 -2px 0 #9E2A20 !important;
}

.jk-btn-shuin,
.jk-theme-lacquer .jk-btn-shuin {
  background: #241C14 !important;
  border-color: #C8A668 !important;
  color: #F5EFE2 !important;
}

.jk-ledger-table,
.jk-ledger-table th,
.jk-ledger-table td {
  font-family: var(--jk-font-serif) !important;
  border-color: #D8CEB8 !important;
  letter-spacing: 0.08em;
}

@media (max-width: 600px) {
  .jk-waypoint-btn {
    padding-inline: 7px;
    font-size: 10.5px;
    letter-spacing: 0.12em;
  }

  .jk-dharma-badge {
    max-width: calc(100vw - 24px);
    font-size: 10.5px;
    letter-spacing: 0.10em;
  }
}

@media (max-width: 768px) {
  .jk-dock-body {
    width: min(332px, calc(100vw - 36px)) !important;
  }
}

@media (max-width: 340px) {
  .jk-quick-ema-btn {
    bottom: calc(136px + env(safe-area-inset-bottom));
  }
}

body:has(.jk-dock:not(.is-collapsed)) .jk-quick-ema-btn {
  visibility: hidden !important;
  pointer-events: none !important;
}


/* === JAKKOJI DESKTOP & EDITORIAL OVERRIDES (jpfree5) === */
.sansa-game {
  isolation: auto !important;
}
#jakkoji-seasonal-atmosphere-canvas,
.jk-hondo-atmosphere,
.jk-god-ray,
.jk-candle-glow,
.jk-paper-vignette {
  display: none !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
.sansa-game .game-bottom {
  opacity: 1 !important;
  transform: translateX(-50%) !important;
  pointer-events: auto !important;
  z-index: 9405 !important;
  bottom: calc(14px + env(safe-area-inset-bottom)) !important;
  width: min(460px, calc(100vw - 24px)) !important;
  max-width: calc(100vw - 24px) !important;
  padding: 7px 14px 6px !important;
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, rgba(20, 16, 12, 0.88) 0%, rgba(11, 9, 7, 0.94) 100%) !important;
  border: 0 !important;
  outline: none !important;
  border-radius: 2px !important;
  box-shadow:
    inset 0 1px 0 rgba(224, 196, 138, 0.28),
    inset 0 -1px 0 rgba(224, 196, 138, 0.10),
    0 12px 28px rgba(0, 0, 0, 0.52) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
.sansa-game .game-bottom .game-modes,
.sansa-game .game-bottom .liquid-nav-source {
  height: 54px !important;
  min-height: 54px !important;
  overflow: visible !important;
}
.sansa-game .game-bottom .game-modes button {
  height: 54px !important;
  min-height: 54px !important;
  padding: 6px 4px 4px !important;
  gap: 5px !important;
  overflow: visible !important;
}
.sansa-game .game-bottom .game-modes button svg {
  width: 20px !important;
  height: 20px !important;
  flex-shrink: 0 !important;
  overflow: visible !important;
}
.sansa-game .game-bottom::before,
.sansa-game .game-bottom::after,
[data-liquid-nav]::before,
[data-liquid-nav]::after {
  display: none !important;
  content: none !important;
}
.sansa-game .action-btn {
  background: transparent !important;
  border-radius: 0 !important;
  color: #EAE3D2 !important;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif !important;
}
.sansa-game .action-btn:hover {
  background: rgba(198, 172, 122, 0.1) !important;
}
.sansa-game .incense-note {
  opacity: 1 !important;
  z-index: 9406 !important;
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, rgba(24, 19, 14, 0.92) 0%, rgba(12, 10, 8, 0.96) 100%) !important;
  color: #F4EFE6 !important;
  border: 0 !important;
  outline: none !important;
  border-radius: 2px !important;
  box-shadow:
    inset 0 1px 0 rgba(224, 196, 138, 0.28),
    inset 0 -1px 0 rgba(224, 196, 138, 0.14),
    0 10px 24px rgba(0, 0, 0, 0.56) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif !important;
}

/* Hide raw unstyled glassmorphic cafe25 buttons from game bundle */
.cafe25-map-actions {
  display: none !important;
}

/* */

/* 8.1 Top Sanctuary Header: Boxless Floating Calligraphy & Single Hairline Wayfinding */
#jakkoji-openworld-nav.jk-temple-plaque {
  top: calc(10px + env(safe-area-inset-top)) !important;
  gap: 2px !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

#jakkoji-openworld-nav.jk-temple-plaque::before,
#jakkoji-openworld-nav.jk-temple-plaque::after {
  display: none !important;
  content: none !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-frame {
  position: relative !important;
  padding: 2px 18px 5px !important;
  background: transparent !important;
  border: 0 !important;
  outline: none !important;
  box-shadow: none !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-frame::after {
  display: none !important;
  content: none !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-top {
  gap: 0 !important;
  margin-bottom: 1px !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-seal {
  background: transparent !important;
  border: 0 !important;
  color: #E2C382 !important;
  padding: 0 !important;
  border-radius: 0 !important;
  font-size: 10.5px !important;
  font-weight: 500 !important;
  letter-spacing: 0.22em !important;
  clip-path: none !important;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.96), 0 0 18px rgba(0, 0, 0, 0.85) !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-seal::after {
  content: "・";
  margin: 0 5px;
  color: rgba(226, 195, 130, 0.65);
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-mountain {
  color: #E2C382 !important;
  font-size: 10.5px !important;
  letter-spacing: 0.22em !important;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.96), 0 0 18px rgba(0, 0, 0, 0.85) !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-main {
  font-size: 19.5px !important;
  font-weight: 500 !important;
  letter-spacing: 0.22em !important;
  color: #FFF9EE !important;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.96), 0 0 24px rgba(0, 0, 0, 0.88), 0 1px 3px rgba(0, 0, 0, 0.98) !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-sub {
  font-size: 11px !important;
  letter-spacing: 0.15em !important;
  color: rgba(244, 232, 208, 0.94) !important;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.96), 0 0 18px rgba(0, 0, 0, 0.85) !important;
}

/* Unified Single-Line Feather-Edged Wayfinding & Identity Bar */
#jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-bar {
  position: relative;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-wrap: nowrap !important;
  /* deslop-ignore 06 */
  background: linear-gradient(90deg, transparent 0%, rgba(14, 11, 8, 0.72) 12%, rgba(14, 11, 8, 0.82) 50%, rgba(14, 11, 8, 0.72) 88%, transparent 100%) !important;
  border: 0 !important;
  box-shadow:
    inset 0 1px 0 rgba(212, 180, 117, 0.22),
    inset 0 -1px 0 rgba(212, 180, 117, 0.22) !important;
  padding: 2px 22px !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-btn {
  position: relative;
  border: 0 !important;
  background: transparent !important;
  color: rgba(238, 228, 210, 0.78) !important;
  padding: 4px 12px !important;
  font-size: 11px !important;
  letter-spacing: 0.16em !important;
  box-shadow: none !important;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.85) !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-btn::after {
  content: "・";
  position: absolute;
  right: -3px;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(206, 174, 114, 0.36);
  font-size: 10.5px;
  pointer-events: none;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-btn:hover {
  color: #FAF3E6 !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-btn.is-active {
  color: #FFFDF8 !important;
  font-weight: 600 !important;
  box-shadow: inset 0 -1.5px 0 #B8382A !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-walk-hint {
  display: none !important;
}

.jk-dharma-row {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  margin-left: 6px;
  padding-left: 8px;
  background: transparent;
  border: 0;
  box-shadow: none;
  pointer-events: auto;
}

.jk-dharma-row::before {
  content: "";
  position: absolute;
  left: 0;
  top: 28%;
  height: 44%;
  width: 1px;
  background: rgba(212, 180, 117, 0.32);
}

.jk-dharma-row .jk-dharma-badge {
  border: 0 !important;
  background: transparent !important;
  padding: 4px 10px !important;
  color: #E8DAC0 !important;
  font-size: 11px !important;
  letter-spacing: 0.12em !important;
  box-shadow: none !important;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.85) !important;
}

.jk-dharma-row .jk-dharma-badge:hover {
  color: #FFF8EB !important;
}

.jk-dharma-row .jk-dharma-badge::after {
  display: none !important;
  content: none !important;
}

.jk-top-kudoku-btn {
  position: relative;
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px 4px 12px;
  background: transparent;
  border: 0;
  color: #DFC690;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  font-size: 11px;
  letter-spacing: 0.12em;
  cursor: pointer;
  border-radius: 0;
  box-shadow: none;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.85);
}

.jk-top-kudoku-btn::before {
  content: "・";
  position: absolute;
  left: 1px;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(206, 174, 114, 0.36);
  font-size: 10.5px;
}

.jk-top-kudoku-btn:hover {
  color: #FFF6E5;
}

.jk-top-kudoku-seal {
  display: none;
}

/* 8.2 Floating Sumi-Ink & Kinpaku Heart Sutra Whisper (#jk-nembutsu-bar — Zero Overlap with .game-bottom) */
#jk-nembutsu-bar {
  position: fixed;
  left: 50%;
  /* 114px sits cleanly above .game-bottom (14px + 91px = 105px) with 9px of open air */
  bottom: calc(114px + env(safe-area-inset-bottom));
  transform: translateX(-50%);
  z-index: 9408;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: min(460px, calc(100vw - 24px));
  max-width: calc(100vw - 24px);
  padding: 5px 14px;
  /* Feather-edged translucent Sumi ink wash — zero beige box, zero red pill */
  /* deslop-ignore 06 */
  background: linear-gradient(90deg, transparent 0%, rgba(14, 11, 9, 0.82) 10%, rgba(14, 11, 9, 0.90) 50%, rgba(14, 11, 9, 0.82) 90%, transparent 100%);
  border: 0;
  border-radius: 0;
  box-shadow:
    inset 0 1px 0 rgba(212, 180, 117, 0.20),
    inset 0 -1px 0 rgba(212, 180, 117, 0.20);
  color: #EAE0CE;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  white-space: nowrap;
  pointer-events: auto;
}

body:has(.jk-modal-backdrop.is-open) #jk-nembutsu-bar,
body:has(#kaiun-goshuincho-modal:not([hidden])) #jk-nembutsu-bar,
body:has(.jk-viral-backdrop.is-open) #jk-nembutsu-bar,
body:has(.jk-dock:not(.is-collapsed)) #jk-nembutsu-bar {
  opacity: 0;
  pointer-events: none;
}

.jk-nembutsu-seal {
  display: inline-block;
  padding: 0 4px 0 0;
  background: transparent;
  border: 0;
  color: #C8A86E;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.16em;
  line-height: 1.25;
  flex-shrink: 0;
  clip-path: none;
}

.jk-nembutsu-sutra {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  flex: 1;
  font-size: 13.5px;
  letter-spacing: 0.08em;
  padding: 0 4px;
}

.jk-sutra-ch {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 22px;
  color: rgba(242, 232, 212, 0.72);
  border: 0;
  transition: color 0.15s ease, box-shadow 0.15s ease;
}

.jk-sutra-ch.is-done {
  color: #DFC284;
}

.jk-sutra-ch.is-current {
  color: #FFFDF8;
  font-weight: 600;
  background: transparent;
  border: 0;
  text-shadow: 0 0 10px rgba(235, 195, 115, 0.65);
  box-shadow: inset 0 -1.5px 0 #C83E2B;
}

.jk-nembutsu-meta {
  display: none;
}

.jk-nembutsu-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  border: 0;
  flex-shrink: 0;
}

.jk-nembutsu-btn {
  appearance: none;
  background: rgba(212, 180, 117, 0.09);
  border: 0;
  color: #EADBC2;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  font-size: 10.5px;
  letter-spacing: 0.12em;
  padding: 3px 9px;
  cursor: pointer;
  border-radius: 1px;
  white-space: nowrap;
  box-shadow: inset 0 0 0 1px rgba(212, 180, 117, 0.24);
}

.jk-nembutsu-btn:hover,
.jk-nembutsu-btn.is-active {
  background: rgba(212, 180, 117, 0.22);
  color: #FFF8EB;
  box-shadow: inset 0 0 0 1px rgba(224, 192, 128, 0.55);
}

/* 8.2b Floating Ink Proximity & Bench-Sitting Bars (#jk-proximity-discovery & #jk-bench-sit-bar) */
.jk-proximity-discovery,
.jk-bench-sit-bar {
  position: fixed !important;
  left: 50% !important;
  /* 154px sits cleanly above #jk-nembutsu-bar (114px + 32px = 146px) with 8px of open air */
  bottom: calc(154px + env(safe-area-inset-bottom)) !important;
  transform: translateX(-50%) translateY(4px) !important;
  z-index: 9412 !important;
  opacity: 0 !important;
  pointer-events: none !important;
  transition: opacity 0.22s ease, transform 0.22s ease !important;
}

.jk-proximity-discovery.is-visible,
.jk-bench-sit-bar.is-visible {
  opacity: 1 !important;
  transform: translateX(-50%) translateY(0) !important;
  pointer-events: auto !important;
}

/* visibility: hidden also removes the hidden bars' buttons from the Tab order */
body:has(:is(.jk-modal-backdrop.is-open, .jk-viral-backdrop.is-open, .jk-ema-lightbox.is-open, #jk-ema-gallery-backdrop.is-open, .jk-omikuji-lightbox.is-open, #jk-omikuji-lightbox.is-open, .jk-wardrobe-backdrop.is-open, #jk-wardrobe-backdrop.is-open, #jk-kaiun-scroll-drawer.is-open, #kaiun-share-sheet-modal:not([hidden]), #kaiun-geo-guide:not([hidden]), #kaiun-goshuincho-modal:not([hidden]), #kaiun-goshuincho-modal.is-open, dialog[open], .jk-dock:not(.is-collapsed)))
  :is(#jk-bench-sit-bar, .jk-bench-sit-bar, #jk-proximity-discovery, .jk-proximity-discovery) {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* Same Tab-order guard for the HUD chrome behind true modals (the expanded dock is not a modal) */
body:has(:is(.jk-modal-backdrop.is-open, .jk-viral-backdrop.is-open, .jk-ema-lightbox.is-open, #jk-ema-gallery-backdrop.is-open, .jk-omikuji-lightbox.is-open, #jk-omikuji-lightbox.is-open, .jk-wardrobe-backdrop.is-open, #jk-wardrobe-backdrop.is-open, #jk-kaiun-scroll-drawer.is-open, #kaiun-share-sheet-modal:not([hidden]), #kaiun-geo-guide:not([hidden]), #kaiun-goshuincho-modal:not([hidden]), #kaiun-goshuincho-modal.is-open, dialog[open]))
  :is(#kaiun-merit-hud, #jk-floating-bench-btn, #jk-bottom-left-actions) {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

.jk-proximity-discovery .jk-prox-btn,
.jk-proximity-discovery .jk-prox-ema-actions,
.jk-bench-sit-bar .jk-bench-nearby-view,
.jk-bench-sit-bar .jk-bench-seated-view {
  appearance: none;
  display: inline-flex;
  align-items: center !important;
  gap: 10px !important;
  padding: 6px 26px !important;
  border: 0 !important;
  outline: none !important;
  border-radius: 0 !important;
  /* Ghost of Tsushima / Hoshinoya feather-edged Sumi ink ribbon */
  /* deslop-ignore 06 */
  background: linear-gradient(90deg, transparent 0%, rgba(12, 10, 8, 0.84) 12%, rgba(12, 10, 8, 0.92) 50%, rgba(12, 10, 8, 0.84) 88%, transparent 100%) !important;
  box-shadow:
    inset 0 1px 0 rgba(212, 180, 117, 0.26),
    inset 0 -1px 0 rgba(212, 180, 117, 0.26) !important;
  color: #FAF3E6 !important;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif !important;
  font-size: 12px !important;
  letter-spacing: 0.1em !important;
  cursor: pointer !important;
  white-space: nowrap !important;
}

#jk-bench-sit-bar [hidden],
#jk-bench-sit-bar:not(.is-seated) .jk-bench-seated-view,
.jk-bench-sit-bar:not(.is-seated) .jk-bench-seated-view {
  display: none !important;
}

#jk-bench-sit-bar.is-seated .jk-bench-nearby-view,
.jk-bench-sit-bar.is-seated .jk-bench-nearby-view {
  display: none !important;
}

body:has(#jk-bench-sit-bar.is-visible) .cafe25-coffee-dock,
body:has(#jk-proximity-discovery.is-visible) .cafe25-coffee-dock {
  opacity: 0 !important;
  pointer-events: none !important;
}

.jk-bench-enso {
  color: #D4B475;
  font-size: 12px;
  opacity: 0.9;
}

.jk-proximity-discovery .jk-prox-badge,
.jk-bench-badge,
.jk-bench-seat-title {
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  color: #DFC288 !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em !important;
}

.jk-proximity-discovery .jk-prox-badge::after,
.jk-bench-badge::after {
  content: "・";
  margin-left: 6px;
  color: rgba(212, 180, 117, 0.45);
}

.jk-proximity-discovery .jk-prox-label,
.jk-bench-label {
  color: #F6EFE2 !important;
  font-size: 12px !important;
  letter-spacing: 0.08em !important;
}

.jk-proximity-discovery .jk-prox-cta,
.jk-bench-cta {
  padding-left: 10px !important;
  border-left: 1px solid rgba(212, 180, 117, 0.26) !important;
  color: #DFC288 !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.12em !important;
}

.jk-proximity-discovery .jk-prox-kbd {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  margin-left: 5px !important;
  padding: 1px 6px !important;
  border: 0 !important;
  background: rgba(212, 180, 117, 0.16) !important;
  color: #FAF3E6 !important;
  border-radius: 2px !important;
  font-size: 10.5px !important;
}

.jk-bench-micro-btn {
  appearance: none;
  padding: 4px 11px;
  background: rgba(212, 180, 117, 0.10);
  border: 0;
  box-shadow: inset 0 0 0 1px rgba(212, 180, 117, 0.28);
  color: #F4EAD8;
  font-family: inherit;
  font-size: 11px;
  letter-spacing: 0.1em;
  cursor: pointer;
}

.jk-bench-micro-btn.is-primary {
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, rgba(42, 33, 24, 0.92) 0%, rgba(22, 17, 12, 0.96) 100%);
  color: #FFF9EE;
  box-shadow: inset 0 0 0 1px rgba(212, 180, 117, 0.52);
}

.jk-bench-micro-btn:hover {
  background: rgba(212, 180, 117, 0.22);
  color: #FFFFFF;
}

.jk-merit-bubble {
  display: none !important;
}

.jk-floating-sutra-char {
  position: fixed;
  z-index: 9402;
  pointer-events: none;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  font-size: 26px;
  font-weight: 600;
  color: #1C1610;
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #F4EBDA 0%, #E5D4B7 100%);
  border: 0;
  padding: 7px 8px;
  box-shadow:
    inset 0 0 0 2px #F4EBDA,
    inset 0 0 0 3px rgba(142, 36, 27, 0.35),
    0 8px 18px rgba(14, 10, 6, 0.28);
  writing-mode: vertical-rl;
  letter-spacing: 0.14em;
  clip-path: polygon(3px 0, calc(100% - 3px) 0, 100% 3px, 100% calc(100% - 3px), calc(100% - 3px) 100%, 3px 100%, 0 calc(100% - 3px), 0 3px);
  animation: jkFloatSutraChar 1.5s ease-out forwards;
}

.jk-floating-sutra-char small {
  display: block;
  font-size: 10.5px;
  font-weight: 600;
  color: #8E241B;
  letter-spacing: 0.06em;
  margin-right: 3px;
}

@keyframes jkFloatSutraChar {
  0% {
    opacity: 0;
    transform: translate(-50%, 8px);
  }
  18% {
    opacity: 0.96;
    transform: translate(-50%, -4px);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, -56px);
  }
}

/* 8.3 Bottom-Left & Bottom-Right Sumi Lacquer Strips (#jk-bottom-left-actions & .jk-dock — Zero Tricolor Stripes & Zero Collision) */
.jk-bottom-left-actions {
  position: fixed;
  left: 16px;
  bottom: calc(14px + env(safe-area-inset-bottom));
  z-index: 9415;
  display: inline-flex;
  flex-direction: row;
  align-items: stretch;
  gap: 0;
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, rgba(20, 16, 12, 0.88) 0%, rgba(11, 9, 7, 0.94) 100%);
  border: 0;
  box-shadow:
    inset 0 1px 0 rgba(224, 196, 138, 0.26),
    inset 0 -1px 0 rgba(224, 196, 138, 0.10),
    0 10px 24px rgba(0, 0, 0, 0.48);
  padding: 0 4px;
  pointer-events: auto;
  border-radius: 2px;
}

/* On viewports <= 1320px, lift #jk-bottom-left-actions to top-left so it NEVER collides with centered .game-bottom */
@media (max-width: 1320px) and (min-width: 901px) {
  .jk-bottom-left-actions {
    bottom: auto;
    top: calc(14px + env(safe-area-inset-top));
    left: 16px;
  }
}

.jk-bottom-left-row {
  display: inline-flex;
  align-items: stretch;
  gap: 0;
}

body:has(.jk-dock:not(.is-collapsed)) .jk-bottom-left-actions {
  visibility: hidden !important;
  pointer-events: none !important;
}

.jk-bottom-left-actions .jk-quick-ema-btn,
.jk-action-plaque-btn {
  position: relative !important;
  inset: auto !important;
  left: auto !important;
  right: auto !important;
  top: auto !important;
  bottom: auto !important;
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin: 0 !important;
  min-height: 36px !important;
  padding: 6px 9px !important;
  background: transparent !important;
  border: 0 !important;
  outline: none !important;
  box-shadow: none !important;
  color: #EAE0CE !important;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  font-size: 11px !important;
  font-weight: 500;
  letter-spacing: 0.09em !important;
  cursor: pointer;
  border-radius: 0;
  white-space: nowrap;
}

.jk-bottom-left-actions .jk-quick-ema-btn::before {
  display: none !important;
  content: none !important;
}

.jk-bottom-left-actions .jk-quick-ema-btn::after,
.jk-bottom-left-row .jk-action-plaque-btn:not(:last-child)::after {
  content: "・";
  position: absolute;
  right: -3px;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(206, 174, 114, 0.36);
  font-size: 10.5px;
  pointer-events: none;
}

.jk-action-plaque-btn:hover,
.jk-bottom-left-actions .jk-quick-ema-btn:hover {
  color: #FFF9ED !important;
  box-shadow: inset 0 -1.5px 0 #B8382A !important;
}

.jk-action-plaque-seal {
  display: none;
}

.jk-action-plaque-count {
  color: #D4B272;
  font-size: 10.5px;
  font-weight: 600;
}

/* Match bottom-right .jk-dock to the exact same clean Sumi lacquer aesthetic (zero tricolor stripe) */
.jk-dock {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

.jk-dock .jk-dock-top {
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, rgba(20, 16, 12, 0.88) 0%, rgba(11, 9, 7, 0.94) 100%) !important;
  border: 0 !important;
  box-shadow:
    inset 0 1px 0 rgba(224, 196, 138, 0.26),
    inset 0 -1px 0 rgba(224, 196, 138, 0.10),
    0 10px 24px rgba(0, 0, 0, 0.48) !important;
}

/* 8.4 Echizen Washi Multi-Layer Paper Surfaces (#jk-wardrobe-backdrop & #jk-ema-gallery-backdrop) */
.jk-viral-backdrop {
  position: fixed;
  inset: 0;
  z-index: 9650;
  background: rgba(10, 8, 6, 0.54);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
}

.jk-viral-backdrop.is-open {
  display: flex;
}

.jk-viral-backdrop.is-side-drawer {
  justify-content: flex-end;
  background: rgba(10, 8, 6, 0.18);
}

.jk-viral-panel {
  position: relative;
  color: #1C1712;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  max-height: calc(100dvh - 36px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 0;
  background-color: #EFE6D5;
  /* Multi-layer Echizen Torinoko Washi: Su-no-me laid fiber lines + warm paper depth */
  /* deslop-ignore 06 */
  background-image:
    repeating-linear-gradient(0deg, rgba(94, 72, 46, 0.024) 0px, rgba(94, 72, 46, 0.024) 1px, transparent 1px, transparent 4px),
    repeating-linear-gradient(90deg, rgba(94, 72, 46, 0.016) 0px, rgba(94, 72, 46, 0.016) 1px, transparent 1px, transparent 22px),
    linear-gradient(178deg, #F5EDE0 0%, #E7D8BE 100%);
  /* */
  box-shadow:
    inset 0 0 0 5px #F4ECE0,
    inset 0 0 0 6px rgba(138, 110, 74, 0.3),
    0 18px 42px rgba(8, 6, 4, 0.45);
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 12px), calc(100% - 12px) 100%, 0 100%);
}

.jk-wardrobe-panel {
  width: min(510px, calc(100vw - 24px));
}

.jk-ema-gallery-panel {
  width: min(1020px, calc(100vw - 24px));
}

.jk-viral-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 15px 22px 12px;
  margin-inline: 12px;
  border: 0;
  background: transparent;
  /* Clean bottom sumi rule without overlapping title characters */
  border-bottom: 1.5px solid rgba(142, 36, 27, 0.36);
  box-shadow: inset 0 -1px 0 0 rgba(42, 33, 24, 0.12);
}

.jk-viral-title-wrap {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.jk-viral-title {
  margin: 0;
  font-size: 17.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: #1A1510;
}

/* Clean Editorial Close Button */
.jk-viral-close {
  appearance: none;
  background: rgba(38, 30, 22, 0.08);
  border: 1px solid rgba(110, 86, 58, 0.34);
  color: #2A2017;
  font-family: inherit;
  font-size: 11px;
  letter-spacing: 0.16em;
  padding: 5px 13px;
  cursor: pointer;
  border-radius: 1px;
}

.jk-viral-close:hover {
  background: rgba(142, 36, 27, 0.12);
  border-color: rgba(142, 36, 27, 0.48);
  color: #7A1E15;
}

.jk-viral-body {
  padding: 14px 22px 22px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 11px;
}

/* 8.5 Wardrobe Ledger Summary & Editorial Craft Buttons */
.jk-kudoku-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  padding: 2px 4px 10px;
  background: transparent;
  border: 0;
  box-shadow: inset 0 -1px 0 rgba(42, 33, 24, 0.14);
}

.jk-kudoku-total {
  display: flex;
  align-items: baseline;
  gap: 10px;
}

.jk-kudoku-total span {
  font-size: 11.5px;
  letter-spacing: 0.12em;
  color: #5C5040;
}

.jk-kudoku-total strong {
  font-size: 22px;
  font-weight: 600;
  color: #1A1510;
  letter-spacing: 0.06em;
}

#jk-wardrobe-quick-chant {
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #271E16 0%, #17120D 100%);
  color: #FAF3E6;
  border: 1px solid rgba(212, 180, 117, 0.45);
  padding: 5px 13px;
  font-size: 11px;
  letter-spacing: 0.12em;
  border-radius: 1px;
  box-shadow: inset 0 1px 0 rgba(255, 232, 205, 0.18);
}

#jk-wardrobe-quick-chant:hover {
  filter: brightness(1.08);
}

.jk-daily-quests {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 14px;
  padding: 4px 4px 9px;
  border: 0;
  box-shadow: inset 0 -1px 0 rgba(42, 33, 24, 0.11);
}

.jk-quest-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  background: transparent;
  border: 0;
  font-size: 11px;
  color: #5C5040;
  letter-spacing: 0.06em;
}

.jk-quest-item.is-done {
  color: #1A1510;
}

.jk-quest-reward {
  color: #8E241B;
  font-weight: 600;
}

/* */
.jk-skin-grid {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.jk-skin-card {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  padding: 10px 6px;
  background-color: transparent;
  border: 0;
  /* Ledger line starts after the 48px kimono swatch, never a boxy full-bleed table border */
  /* deslop-ignore 06 */
  background-image: linear-gradient(
    90deg,
    transparent 62px,
    rgba(48, 36, 24, 0.14) 62px,
    rgba(48, 36, 24, 0.14) calc(100% - 6px),
    transparent calc(100% - 6px)
  );
  background-size: 100% 1px;
  background-position: bottom;
  background-repeat: no-repeat;
}

.jk-skin-card.is-equipped {
  background-color: rgba(142, 36, 27, 0.04);
}

.jk-skin-card-top {
  display: contents;
}

.jk-skin-avatar {
  width: 48px;
  height: 48px;
  flex-shrink: 0;
  border: 0;
  border-radius: 2px;
  background: #EDE3D0;
  display: block;
  box-shadow:
    inset 0 1px 3px rgba(0, 0, 0, 0.22),
    0 2px 5px rgba(28, 20, 12, 0.12);
}

.jk-skin-info {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.jk-skin-title-line {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}

.jk-skin-rank {
  font-size: 10.5px;
  color: #786956;
  letter-spacing: 0.1em;
}

.jk-skin-name {
  font-size: 13.5px;
  font-weight: 600;
  color: #1A1510;
  letter-spacing: 0.08em;
}

.jk-skin-desc {
  font-size: 11px;
  color: #5A4E3E;
  line-height: 1.4;
}

.jk-skin-actions {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  padding: 0;
  border: 0;
  flex-shrink: 0;
}

.jk-skin-btn {
  appearance: none;
  padding: 5px 11px;
  background: rgba(48, 36, 24, 0.045);
  border: 1px solid rgba(96, 74, 48, 0.26);
  color: #2E251C;
  font-family: inherit;
  font-size: 11px;
  letter-spacing: 0.08em;
  cursor: pointer;
  white-space: nowrap;
  border-radius: 1px;
}

.jk-skin-btn:hover {
  background: rgba(48, 36, 24, 0.10);
  border-color: rgba(142, 36, 27, 0.45);
  color: #14100C;
}

.jk-skin-btn.is-primary {
  background: rgba(36, 28, 20, 0.08);
  border: 1px solid rgba(110, 86, 58, 0.38);
  color: #261D15;
  font-weight: 600;
  padding: 5px 12px;
}

.jk-skin-btn.is-primary:hover {
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #271E16 0%, #17120D 100%);
  border-color: rgba(212, 180, 117, 0.55);
  color: #FAF3E6;
}

.jk-skin-btn.is-equipped-btn {
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #241C15 0%, #14100C 100%);
  border: 1px solid rgba(198, 164, 90, 0.45);
  color: #EADBC2;
  padding: 5px 11px;
}

/* 8.6 Community Ema Gallery (#jk-ema-gallery-backdrop) — Five-Edge Hinoki Pentagon Plaques & Kumihimo */
.jk-ema-gallery-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  padding-bottom: 8px;
  border: 0;
  box-shadow: inset 0 -1px 0 rgba(42, 33, 24, 0.16);
}

.jk-ema-filter-group {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.jk-ema-filter-btn {
  appearance: none;
  padding: 5px 2px;
  background: transparent;
  border: 0;
  color: #685B4B;
  font-family: inherit;
  font-size: 12px;
  letter-spacing: 0.1em;
  cursor: pointer;
  box-shadow: inset 0 -1.5px 0 transparent;
}

.jk-ema-filter-btn.is-active,
.jk-ema-filter-btn:hover {
  color: #1A1510;
  font-weight: 600;
  box-shadow: inset 0 -1.5px 0 #8E241B;
}

.jk-ema-write-cta {
  appearance: none;
  padding: 6px 15px;
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #271E16 0%, #17120D 100%);
  border: 1px solid rgba(212, 180, 117, 0.45);
  color: #FAF3E6;
  font-family: inherit;
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: 0.12em;
  cursor: pointer;
  border-radius: 1px;
  box-shadow: inset 0 1px 0 rgba(255, 232, 205, 0.18);
}

.jk-ema-write-cta:hover {
  filter: brightness(1.08);
}

.jk-ema-gallery-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(215px, 1fr));
  gap: 16px;
  padding-top: 6px;
}

/* Five-Edge Unbroken Hinoki Pentagon Plaque:
   Outer element = Dark Hinoki bevel wood rim;
   ::before = Inset 2px (4px top roof eaves) pale Hinoki Masame wood face;
   ::after = Circular drilled hole + crimson Kumihimo cord */
.jk-ema-plaque-card {
  --ema-poly: polygon(50% 0%, 100% 10%, 100% 100%, 0% 100%, 0% 10%);
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: 28px 15px 13px;
  border: 0;
  /* Outer dark Hinoki wood bevel (guarantees unbroken border along all 5 pentagon edges!) */
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #9E7C50 0%, #87663C 14%, #B5966B 100%);
  clip-path: var(--ema-poly);
  color: #1E1711;
  cursor: pointer;
  z-index: 1;
}

.jk-ema-plaque-card::before {
  content: "";
  position: absolute;
  inset: 4px 2px 2px 2px;
  clip-path: var(--ema-poly);
  /* Inner Hinoki Masame woodgrain face */
  /* deslop-ignore 06 */
  background:
    repeating-linear-gradient(90deg, rgba(142, 104, 62, 0.032) 0px, rgba(142, 104, 62, 0.032) 1px, transparent 1px, transparent 5px),
    repeating-linear-gradient(90deg, rgba(142, 104, 62, 0.02) 0px, rgba(142, 104, 62, 0.02) 2px, transparent 2px, transparent 13px),
    linear-gradient(178deg, #F3E8D4 0%, #E6D5B8 100%);
  z-index: -1;
}

/* Circular drilled hole + crimson Kumihimo cord */
.jk-ema-plaque-card::after {
  content: "";
  position: absolute;
  top: 10px;
  left: 50%;
  transform: translateX(-50%);
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #2C2117;
  box-shadow:
    inset 0 1.5px 2px rgba(0, 0, 0, 0.7),
    0 0 0 1.5px #B08E62,
    0 -5px 0 -2px #982B20,
    0 -9px 0 -2px #781E15;
  pointer-events: none;
}

.jk-ema-plaque-card:hover {
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #8E241B 0%, #781E15 18%, #A47E52 100%);
  filter:
    drop-shadow(0 7px 14px rgba(24, 16, 8, 0.22))
    drop-shadow(0 2px 3px rgba(24, 16, 8, 0.16));
}

.jk-ema-plaque-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 10.5px;
  color: #685032;
  border: 0;
  padding: 0 4px 5px;
  box-shadow: inset 0 -1px 0 rgba(104, 80, 50, 0.18);
}

/* Cinnabar Hanko Seal */
.jk-ema-plaque-stamp {
  display: inline-block;
  padding: 1px 6px;
  background: rgba(142, 36, 27, 0.12);
  border: 1px solid rgba(142, 36, 27, 0.42);
  color: #7E1E16;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  border-radius: 1px;
}

.jk-ema-plaque-art {
  width: 100%;
  height: 112px;
  object-fit: cover;
  background: #F5EDE0;
  border: 0;
  box-shadow: inset 0 0 0 1px rgba(120, 88, 48, 0.18);
}

.jk-ema-plaque-wish {
  font-size: 13px;
  font-weight: 500;
  line-height: 1.55;
  color: #1B140E;
  letter-spacing: 0.05em;
  min-height: 40px;
}

.jk-ema-plaque-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  margin-top: auto;
  padding-top: 6px;
  border: 0;
  box-shadow: inset 0 1px 0 rgba(104, 80, 50, 0.18);
  font-size: 10.5px;
  color: #5A452C;
}

/* */
.jk-ema-plaque-pray-btn {
  appearance: none;
  padding: 3px 9px;
  background: rgba(142, 36, 27, 0.06);
  border: 1px solid rgba(142, 36, 27, 0.32);
  color: #822017;
  font-family: inherit;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  cursor: pointer;
  white-space: nowrap;
  border-radius: 1px;
}

.jk-ema-plaque-pray-btn:hover,
.jk-ema-plaque-pray-btn.is-prayed {
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #271E16 0%, #17120D 100%);
  border-color: rgba(212, 180, 117, 0.52);
  color: #FAF3E6;
}

/* 8.7 Large Pentagon Hinoki Ema Lightbox (#jk-ema-lightbox) & Ceremonial Omikuji Scroll Lightbox (#jk-omikuji-lightbox) */
.jk-ema-lightbox {
  position: fixed;
  inset: 0;
  z-index: 2147483646 !important;
  background: rgba(10, 8, 6, 0.76);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
}

.jk-ema-lightbox.is-open {
  display: flex;
}

.jk-ema-lightbox-card {
  --ema-lb-poly: polygon(50% 0%, 100% 9%, 100% 100%, 0% 100%, 0% 9%);
  position: relative;
  width: min(500px, calc(100vw - 32px));
  border: 0;
  /* Outer dark Hinoki wood bevel */
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #9E7C50 0%, #826138 14%, #B5966B 100%);
  clip-path: var(--ema-lb-poly);
  padding: 42px 26px 20px;
  color: #1D150E;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  filter:
    drop-shadow(0 14px 28px rgba(0, 0, 0, 0.5))
    drop-shadow(0 2px 4px rgba(0, 0, 0, 0.25));
  display: flex;
  flex-direction: column;
  gap: 11px;
  z-index: 1;
}

.jk-ema-lightbox-card::before {
  content: "";
  position: absolute;
  inset: 5px 3px 3px 3px;
  clip-path: var(--ema-lb-poly);
  /* deslop-ignore 06 */
  background:
    repeating-linear-gradient(90deg, rgba(142, 104, 62, 0.035) 0px, rgba(142, 104, 62, 0.035) 1px, transparent 1px, transparent 5px),
    repeating-linear-gradient(90deg, rgba(142, 104, 62, 0.022) 0px, rgba(142, 104, 62, 0.022) 2px, transparent 2px, transparent 13px),
    linear-gradient(178deg, #F4E9D6 0%, #E6D5B8 100%);
  z-index: -1;
}

.jk-ema-lightbox-card::after {
  content: "";
  position: absolute;
  top: 13px;
  left: 50%;
  transform: translateX(-50%);
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #2C2117;
  box-shadow:
    inset 0 2px 3px rgba(0, 0, 0, 0.72),
    0 0 0 2px #B08E62,
    0 -6px 0 -2.5px #982B20,
    0 -11px 0 -2.5px #781E15;
  pointer-events: none;
}

.jk-ema-lightbox-art {
  width: 100%;
  max-height: 215px;
  object-fit: contain;
  background: #F6EFE2;
  border: 0;
  box-shadow: inset 0 0 0 1px rgba(120, 88, 48, 0.22);
}

.jk-ema-lightbox-wish {
  font-size: 16.5px;
  font-weight: 500;
  line-height: 1.7;
  letter-spacing: 0.06em;
  color: #18110B;
  padding: 4px 2px;
}

.jk-ema-lightbox-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 12px;
  color: #594024;
  border: 0;
  box-shadow: inset 0 1px 0 rgba(104, 80, 50, 0.22);
  padding-top: 8px;
}

.jk-ema-lightbox-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.jk-ema-lightbox-pray {
  appearance: none;
  flex: 1;
  padding: 8px 14px;
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #271E16 0%, #17120D 100%);
  border: 1px solid rgba(212, 180, 117, 0.45);
  color: #FAF3E6;
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: 0.12em;
  cursor: pointer;
  border-radius: 1px;
  box-shadow: inset 0 1px 0 rgba(255, 232, 205, 0.18);
}

.jk-ema-lightbox-pray:hover {
  filter: brightness(1.08);
}

.jk-ema-lightbox-close {
  appearance: none;
  padding: 8px 13px;
  background: rgba(48, 36, 24, 0.06);
  border: 1px solid rgba(110, 86, 58, 0.32);
  color: #1D150E;
  font-family: inherit;
  font-size: 12px;
  letter-spacing: 0.1em;
  cursor: pointer;
  border-radius: 1px;
  white-space: nowrap;
}

.jk-ema-lightbox-close:hover {
  background: rgba(48, 36, 24, 0.12);
}

.jk-ema-lightbox-subactions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding-top: 7px;
  box-shadow: inset 0 1px 0 rgba(104, 80, 50, 0.16);
}

.jk-ema-lightbox-link {
  appearance: none;
  background: transparent;
  border: 0;
  color: #6B3124;
  font-family: inherit;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  cursor: pointer;
  padding: 3px 4px;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.jk-ema-lightbox-link:hover {
  color: #98281D;
}

.jk-ema-card,
.jk-omikuji-slip {
  cursor: pointer;
}

.jk-ema-card:hover {
  filter: brightness(1.02);
}

/* 8.8 Ceremonial Washi Omikuji Scroll Lightbox (#jk-omikuji-lightbox) */
.jk-omikuji-lightbox-card {
  width: min(540px, calc(100vw - 24px));
  max-height: calc(100dvh - 32px);
  overflow-y: auto;
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #1E1813 0%, #130F0B 100%);
  padding: 20px 24px;
  box-shadow:
    inset 0 0 0 1px rgba(212, 180, 117, 0.36),
    inset 0 0 0 3px #16110D,
    inset 0 0 0 4px rgba(142, 36, 27, 0.42),
    0 20px 44px rgba(0, 0, 0, 0.68);
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.jk-omikuji-lb-top {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  padding-bottom: 12px;
  box-shadow: inset 0 -1px 0 rgba(212, 180, 117, 0.22);
}

#jk-lb-omikuji-cv {
  width: 84px;
  height: 96px;
  display: block;
  margin: 0 auto;
  cursor: pointer;
  background: rgba(255, 248, 232, 0.04);
  box-shadow: inset 0 0 0 1px rgba(212, 180, 117, 0.24);
}

.jk-omikuji-lb-top-info {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.jk-omikuji-lb-kicker {
  font-size: 11px;
  color: #D4B475;
  letter-spacing: 0.14em;
}

.jk-omikuji-lb-title {
  margin: 0 0 6px;
  font-size: 17px;
  font-weight: 600;
  color: #FAF3E6;
  letter-spacing: 0.12em;
}

.jk-omikuji-lb-draw-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.jk-omikuji-draw-btn {
  appearance: none;
  padding: 6px 12px;
  background: rgba(255, 248, 232, 0.07);
  border: 1px solid rgba(212, 180, 117, 0.34);
  color: #EAE0CE;
  font-family: inherit;
  font-size: 12px;
  letter-spacing: 0.1em;
  cursor: pointer;
  border-radius: 1px;
}

.jk-omikuji-draw-btn.is-primary {
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #2C231A 0%, #1B150F 100%);
  border-color: rgba(212, 180, 117, 0.55);
  color: #FAF3E6;
}

.jk-omikuji-draw-btn:hover {
  filter: brightness(1.08);
}

.jk-omikuji-washi-scroll {
  position: relative;
  padding: 16px 20px 14px;
  background-color: #FAF4E8;
  /* deslop-ignore 06 */
  background-image:
    repeating-linear-gradient(0deg, rgba(110, 84, 52, 0.025) 0px, rgba(110, 84, 52, 0.025) 1px, transparent 1px, transparent 5px),
    linear-gradient(180deg, #FBF6EC 0%, #EFE2CA 100%);
  box-shadow:
    inset 0 0 0 1px rgba(142, 36, 27, 0.34),
    inset 0 0 0 4px #FAF4E8,
    inset 0 0 0 5px rgba(138, 108, 70, 0.28),
    0 6px 18px rgba(20, 14, 8, 0.24);
  color: #1A140E;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.jk-omikuji-washi-scroll.is-water {
  /* deslop-ignore 06 */
  background-image:
    radial-gradient(circle at 50% 18%, rgba(88, 138, 152, 0.14), transparent 68%),
    linear-gradient(180deg, #F4F7F6 0%, #E3ECEA 100%);
  box-shadow:
    inset 0 0 0 1px rgba(56, 104, 118, 0.42),
    inset 0 0 0 4px #F4F7F6,
    inset 0 0 0 5px rgba(76, 118, 130, 0.30),
    0 6px 18px rgba(14, 24, 28, 0.24);
  color: #122126;
}

.jk-omikuji-scroll-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 6px;
  box-shadow: inset 0 -1px 0 rgba(142, 36, 27, 0.22);
}

.jk-omikuji-scroll-num {
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.12em;
  color: #5C4328;
}

.jk-omikuji-washi-scroll.is-water .jk-omikuji-scroll-num {
  color: #244752;
}

.jk-omikuji-scroll-seal {
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: #7E1E16;
}

.jk-omikuji-scroll-rank {
  display: inline-block;
  padding: 2px 10px;
  background: rgba(142, 36, 27, 0.10);
  border: 1px solid rgba(142, 36, 27, 0.48);
  color: #7E1E16;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
}

.jk-omikuji-scroll-verse {
  font-size: 20px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-align: center;
  color: #16110C;
  padding: 6px 0 2px;
}

.jk-omikuji-washi-scroll.is-water .jk-omikuji-scroll-verse {
  color: #10242B;
}

.jk-omikuji-scroll-reading,
.jk-omikuji-scroll-cite {
  font-size: 11.5px;
  text-align: center;
  color: #4A3824 !important;
  letter-spacing: 0.08em;
  padding-bottom: 6px;
  box-shadow: inset 0 -1px 0 rgba(104, 80, 50, 0.16);
}

.jk-omikuji-washi-scroll.is-water .jk-omikuji-scroll-reading {
  color: #22444E !important;
}

.jk-omikuji-scroll-section {
  display: grid;
  grid-template-columns: 78px minmax(0, 1fr);
  align-items: baseline;
  gap: 8px;
}

.jk-omikuji-scroll-section strong {
  font-size: 11.5px;
  font-weight: 700;
  color: #7E1E16 !important;
  letter-spacing: 0.06em;
}

.jk-omikuji-washi-scroll.is-water .jk-omikuji-scroll-section strong {
  color: #1E4E5D !important;
}

.jk-omikuji-scroll-section span,
.jk-omikuji-scroll-section p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.65;
  color: #1F1811 !important;
  letter-spacing: 0.04em;
}

.jk-omikuji-washi-scroll.is-water .jk-omikuji-scroll-section span {
  color: #12252B !important;
}

.jk-omikuji-scroll-auspice {
  margin-top: 2px;
  padding-top: 7px;
  box-shadow: inset 0 1px 0 rgba(104, 80, 50, 0.18);
  font-size: 11.5px;
  font-weight: 500;
  color: #4A3620 !important;
  text-align: center;
  letter-spacing: 0.08em;
}

.jk-omikuji-washi-scroll.is-water .jk-omikuji-scroll-auspice {
  color: #1E3E48 !important;
}

#jk-omikuji-lightbox .jk-ema-lightbox-close {
  background: rgba(255, 248, 232, 0.08);
  border-color: rgba(212, 180, 117, 0.36);
  color: #EAE0CE;
}

#jk-omikuji-lightbox .jk-ema-lightbox-close:hover {
  background: rgba(255, 248, 232, 0.15);
}

/* 8.9 Ema Shodō Typing, Art Templates, Photo Filter & Companion Picker */
.jk-ema-studio-controls {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  background: rgba(26, 20, 14, 0.04);
  box-shadow: inset 0 0 0 1px rgba(110, 82, 48, 0.22);
  margin-bottom: 8px;
}

.jk-ema-studio-row {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.jk-ema-studio-label {
  font-size: 11px;
  font-weight: 600;
  color: #5C4428;
  letter-spacing: 0.1em;
}

.jk-ema-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.jk-ema-chip {
  appearance: none;
  padding: 4px 9px;
  background: #FAF4E6;
  border: 1px solid rgba(116, 86, 52, 0.34);
  color: #2B2015;
  font-family: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: 0.06em;
  cursor: pointer;
  border-radius: 1px;
  white-space: nowrap;
}

.jk-ema-chip:hover {
  background: #F2E6CE;
}

.jk-ema-chip.is-active {
  /* deslop-ignore 06 */
  background: linear-gradient(178deg, #271E16 0%, #17120D 100%);
  border-color: rgba(212, 180, 117, 0.65);
  color: #FAF3E6;
}

.jk-ema-chip-upload {
  border-color: rgba(140, 37, 28, 0.55);
  color: #7E1E16;
  font-weight: 600;
}

.jk-companion-picker {
  padding: 10px 12px;
  background: rgba(26, 20, 14, 0.04);
  box-shadow: inset 0 0 0 1px rgba(110, 82, 48, 0.22);
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.jk-companion-picker-head {
  font-size: 11.5px;
  font-weight: 600;
  color: #4E3A22;
  letter-spacing: 0.1em;
}

@media (max-width: 900px) {
  .sansa-game .game-bottom {
    bottom: calc(10px + env(safe-area-inset-bottom)) !important;
  }
  .jk-dock,
  .jk-dock.is-collapsed {
    bottom: calc(108px + env(safe-area-inset-bottom)) !important;
  }
  #jk-bottom-left-actions {
    bottom: calc(148px + env(safe-area-inset-bottom)) !important;
    left: 10px !important;
    max-width: calc(100vw - 20px) !important;
  }
}

@media (max-width: 860px) {
  #jakkoji-openworld-nav .jk-waypoint-bar {
    flex-wrap: wrap;
    justify-content: center;
    padding: 4px 12px;
    row-gap: 2px;
  }
  #jakkoji-openworld-nav .jk-dharma-row::before {
    display: none;
  }
}

@media (max-width: 768px) {
  #jk-nembutsu-bar {
    bottom: calc(106px + env(safe-area-inset-bottom));
    width: calc(100vw - 16px);
    padding: 4px 10px;
    gap: 8px;
  }
  #jk-proximity-discovery,
  #jk-bench-sit-bar {
    bottom: calc(188px + env(safe-area-inset-bottom)) !important;
    padding: 6px 12px;
    max-width: calc(100vw - 16px);
  }
  .jk-bench-prompt-sub {
    display: none;
  }
  .jk-nembutsu-sutra {
    font-size: 12px;
  }
  .jk-sutra-ch {
    width: 17px;
    height: 19px;
  }
  .jk-skin-card {
    grid-template-columns: 42px minmax(0, 1fr);
  }
  .jk-skin-actions {
    grid-column: 1 / -1;
    justify-content: flex-end;
  }
  .jk-omikuji-lb-top {
    grid-template-columns: 104px minmax(0, 1fr);
  }
}

@media (max-width: 640px) {
  #jk-bottom-left-actions {
    left: 8px !important;
    padding: 0 2px !important;
    max-width: calc(100vw - 16px) !important;
  }
  #jk-bottom-left-actions .jk-quick-ema-btn,
  #jk-bottom-left-actions .jk-action-plaque-btn {
    padding: 4px 5px !important;
    font-size: 10.5px !important;
    letter-spacing: 0.02em !important;
    min-height: 30px !important;
  }
}

@media (max-width: 480px) {
  #jk-nembutsu-bar .jk-sutra-ch:nth-child(n+8) {
    display: none;
  }
}

/* ==========================================================================
   9. MINIMALIST 10/10 UX, GOSHUIN SHOP ROUTING & ZERO-RED-SEAL KURO-URUSHI
   ========================================================================== */

/* */
.jk-dojo-plaque[data-dojo="goshuin"],
.jk-modal-tab[data-target="goshuin"] {
  display: none !important;
}

/* 9.2 Eliminate red-background seal boxes & simplify control buttons */
.jk-dock-crest,
.jk-dock-merit-mini,
.jk-action-plaque-seal,
.jk-top-kudoku-seal,
#jk-quick-omikuji-btn {
  display: none !important;
}

.jk-sound-btn.is-playing {
  background: #282018 !important;
  border-color: #D4B475 !important;
  color: #FAF3E6 !important;
}

.jk-dojo-plaque:hover,
.jk-dojo-plaque:focus-visible {
  border-left-color: #D4B475 !important;
  background: rgba(212, 180, 117, 0.08) !important;
}

.jk-section-head {
  border-left-color: #C6AC7A !important;
}

.jk-seg-btn:hover,
.jk-btn:hover,
.jk-seg-btn:focus-visible,
.jk-btn:focus-visible {
  border-color: #B89A68 !important;
  box-shadow: inset 0 -2px 0 #B89A68 !important;
}

.jk-action-plaque-btn:hover,
.jk-bottom-left-actions .jk-quick-ema-btn:hover,
#jakkoji-openworld-nav .jk-waypoint-btn:hover,
#jakkoji-openworld-nav .jk-waypoint-btn.is-active {
  box-shadow: inset 0 -1.5px 0 #D4B475 !important;
}

/* 9.3 Auto-hide Heart Sutra bar (#jk-nembutsu-bar) while walking so HUD stays ultra-clean */
#jk-nembutsu-bar:not(.is-ritual-active) {
  opacity: 0 !important;
  pointer-events: none !important;
  transform: translate(-50%, 6px) !important;
}

body:has(#jk-proximity-discovery.is-visible) #jk-nembutsu-bar,
body:has(#jk-bench-sit-bar.is-visible) #jk-nembutsu-bar {
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Sit & Landmark prompts rest cleanly right above .game-bottom with zero multi-bar stacking */
.jk-proximity-discovery,
.jk-bench-sit-bar {
  bottom: calc(114px + env(safe-area-inset-bottom)) !important;
}

/* Prevent top wayfinding buttons from wrapping characters vertically or clipping on narrow screens */
#jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-bar {
  display: inline-flex !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  align-items: center !important;
  width: auto !important;
  max-width: calc(100vw - 16px) !important;
  padding: 3px 14px !important;
  gap: 2px 2px !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-btn,
#jakkoji-openworld-nav.jk-temple-plaque .jk-dharma-badge,
#jakkoji-openworld-nav.jk-temple-plaque .jk-top-kudoku-btn {
  white-space: nowrap !important;
  flex-shrink: 0 !important;
}

#jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-btn:last-of-type::after {
  display: none !important;
  content: none !important;
}

/* On viewports <= 1320px, #jk-top-kudoku-btn in the top bar handles Wardrobe access, so #jk-bottom-left-actions stays compact at bottom-left without ever colliding with #jakkoji-openworld-nav or .game-bottom */
@media (max-width: 1320px) {
  #jk-bottom-left-actions #jk-wardrobe-btn {
    display: none !important;
  }
  #jk-bottom-left-actions .jk-bottom-left-row .jk-action-plaque-btn::after {
    display: none !important;
    content: none !important;
  }
}

@media (max-width: 1320px) and (min-width: 901px) {
  .jk-bottom-left-actions,
  #jk-bottom-left-actions {
    top: auto !important;
    bottom: calc(14px + env(safe-area-inset-bottom)) !important;
    left: 16px !important;
  }
}

@media (max-width: 900px), (pointer: coarse) {
  .jk-proximity-discovery .jk-prox-kbd,
  .jk-bench-sit-bar .jk-bench-kbd {
    display: none !important;
  }
}

@media (max-width: 900px) {
  #jakkoji-openworld-nav.jk-temple-plaque {
    padding: 4px 10px 5px !important;
    gap: 2px !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-kicker {
    font-size: 10.5px !important;
    line-height: 1.1 !important;
    margin: 0 !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-title {
    font-size: 14.5px !important;
    line-height: 1.15 !important;
    margin: 0 !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-bar {
    padding: 2px 4px !important;
    gap: 2px 0 !important;
    margin-top: 1px !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 28px !important;
    padding: 2px 6px !important;
    font-size: 10.5px !important;
    line-height: 1.2 !important;
    letter-spacing: 0.04em !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque #jk-pilgrimage-stamp-bar {
    margin-top: 1px !important;
    padding: 1px 8px !important;
    font-size: 10.5px !important;
  }
  #jk-proximity-discovery {
    top: auto !important;
    bottom: calc(146px + env(safe-area-inset-bottom)) !important;
    z-index: 9430 !important;
    transform: translateX(-50%) !important;
  }
}

.jk-ledger-table th:first-child,
.jk-ledger-table td:first-child {
  white-space: nowrap !important;
  width: 72px !important;
}

/* Tranquil single-bar contemplation UX when seated on a bench (zero stacked bottom bars) */
body.is-bench-seated .game-bottom,
body.is-bench-seated #kaiun-return-hall-btn {
  opacity: 0 !important;
  pointer-events: none !important;
  transform: translateY(8px) !important;
  transition: opacity 0.28s ease, transform 0.28s ease !important;
}

body.is-bench-seated #jk-bench-sit-bar.is-seated {
  bottom: calc(22px + env(safe-area-inset-bottom)) !important;
}

@media (min-width: 901px) {
  /* */
  #kaiun-return-hall-btn {
    display: none !important;
  }
}

@media (max-width: 900px) {
  body.is-bench-seated #jk-bottom-left-actions,
  body.is-bench-seated .jk-dock.is-collapsed {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  body.is-bench-seated #jk-bench-sit-bar.is-seated {
    bottom: calc(16px + env(safe-area-inset-bottom)) !important;
  }
  #jk-bench-sit-bar.is-seated .jk-bench-seated-view {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: center !important;
    padding: 6px 10px !important;
    gap: 4px 6px !important;
    max-width: calc(100vw - 16px) !important;
    box-sizing: border-box !important;
  }
  #jk-bench-sit-bar .jk-bench-seat-title {
    flex: 0 0 100% !important;
    text-align: center !important;
    font-size: 11px !important;
    line-height: 1.2 !important;
  }
  #jk-bench-sit-bar #jk-bench-tea-btn,
  #jk-bench-sit-bar #jk-bench-photo-btn,
  #jk-bench-sit-bar #jk-bench-stand-btn {
    font-size: 10.5px !important;
    padding: 4px 8px !important;
    white-space: nowrap !important;
  }
}

@media (max-width: 900px) {
  /* Align #jk-bottom-left-actions (left) and .jk-dock.is-collapsed (right) on one single 34px row above .game-bottom with zero overlap */
  #jk-bottom-left-actions {
    top: auto !important;
    bottom: calc(106px + env(safe-area-inset-bottom)) !important;
    left: 10px !important;
    height: 34px !important;
    min-height: 34px !important;
    padding: 0 4px !important;
    max-width: calc(54vw - 12px) !important;
  }
  #jk-bottom-left-actions .jk-quick-ema-btn,
  #jk-bottom-left-actions .jk-action-plaque-btn {
    min-height: 32px !important;
    height: 32px !important;
    padding: 2px 6px !important;
    font-size: 10.5px !important;
    letter-spacing: 0.04em !important;
  }
  .jk-dock.is-collapsed {
    bottom: calc(106px + env(safe-area-inset-bottom)) !important;
    right: 10px !important;
  }
  .jk-dock.is-collapsed .jk-dock-top {
    min-height: 34px !important;
    height: 34px !important;
    padding: 2px 5px !important;
    gap: 3px !important;
  }
  .jk-dock.is-collapsed .jk-dock-brand,
  .jk-dock.is-collapsed .jk-dock-sound,
  .jk-dock.is-collapsed .jk-dock-collapse-btn {
    min-height: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    line-height: 26px !important;
    padding: 0 6px !important;
    font-size: 10.5px !important;
  }
  #jk-nembutsu-bar,
  #jk-bench-sit-bar {
    bottom: calc(148px + env(safe-area-inset-bottom)) !important;
    max-width: calc(100vw - 16px) !important;
  }
  #jk-proximity-discovery {
    max-width: calc(100vw - 16px) !important;
  }
  #jk-proximity-discovery .jk-prox-label,
  #jk-bench-sit-bar .jk-bench-label,
  #jk-proximity-discovery .jk-prox-badge::after,
  #jk-bench-sit-bar .jk-bench-badge::after {
    display: none !important;
    content: none !important;
  }
  #jk-proximity-discovery .jk-prox-btn,
  #jk-bench-sit-bar .jk-bench-nearby-view {
    padding: 5px 16px !important;
    gap: 8px !important;
    max-width: calc(100vw - 20px) !important;
  }
}

@media (max-width: 360px) {
  #jk-bottom-left-actions {
    left: 6px !important;
    padding: 0 2px !important;
  }
  #jk-bottom-left-actions .jk-quick-ema-btn,
  #jk-bottom-left-actions .jk-action-plaque-btn {
    padding: 2px 3px !important;
    font-size: 10.5px !important;
    letter-spacing: 0 !important;
  }
  .jk-dock.is-collapsed {
    right: 6px !important;
  }
  .jk-dock.is-collapsed .jk-dock-top {
    padding: 2px 3px !important;
    gap: 2px !important;
  }
  .jk-dock.is-collapsed .jk-dock-brand,
  .jk-dock.is-collapsed .jk-dock-sound,
  .jk-dock.is-collapsed .jk-dock-collapse-btn {
    padding: 0 4px !important;
    font-size: 10.5px !important;
    letter-spacing: 0 !important;
  }
}








/* V24: Inline Viral Postcard & Share Button + Ultra-Sleek Mobile Header Plaque */
.kaiun-share-inline-btn {
  display: inline-flex !important;
  align-items: center !important;
  gap: 3px !important;
  padding: 1px 7px !important;
  border-radius: 2px !important;
  border: 1px solid rgba(212, 180, 117, 0.52) !important;
  background: rgba(168, 54, 42, 0.32) !important;
  color: #f6ead0 !important;
  font-family: var(--jk-font-serif) !important;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  line-height: 1.35 !important;
  white-space: nowrap !important;
  cursor: pointer !important;
  transition: background 0.2s ease, border-color 0.2s ease !important;
}
.kaiun-share-inline-btn:hover {
  background: rgba(196, 68, 52, 0.55) !important;
  border-color: rgba(236, 204, 140, 0.85) !important;
}

@media (max-width: 900px) {
  #jakkoji-openworld-nav.jk-temple-plaque {
    top: calc(44px + env(safe-area-inset-top)) !important;
    padding: 2px 6px 3px !important;
    gap: 1px !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-frame {
    flex-direction: row !important;
    justify-content: center !important;
    align-items: baseline !important;
    gap: 6px !important;
    padding: 2px 10px 3px !important;
    outline-offset: -2px !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-seal,
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-sub,
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-walk-hint {
    display: none !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-top {
    font-size: 10.5px !important;
    letter-spacing: 0.06em !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-top::after {
    content: "｜";
    margin-left: 4px;
    opacity: 0.45;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-main {
    font-size: 12px !important;
    line-height: 1.15 !important;
    letter-spacing: 0.08em !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-bar {
    padding: 1px 4px 2px !important;
    gap: 1px 1px !important;
    margin-top: 1px !important;
  }
  /* Legible (>=11px) chips with >=28px targets (WCAG 2.5.8); the row wraps instead of shrinking text at 390px */
  #jakkoji-openworld-nav.jk-temple-plaque .jk-dharma-row {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: center !important;
    max-width: calc(100vw - 16px) !important;
    margin-top: 1px !important;
    padding-top: 1px !important;
    gap: 3px 5px !important;
    white-space: normal !important;
    overflow: visible !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque #jk-dharma-badge,
  #jakkoji-openworld-nav.jk-temple-plaque #jk-top-kudoku-btn,
  #jakkoji-openworld-nav.jk-temple-plaque #kaiun-mangan-bar,
  #jakkoji-openworld-nav.jk-temple-plaque #kaiun-share-postcard-btn {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    min-height: 28px !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    font-size: 11px !important;
    line-height: 1.25 !important;
    padding: 4px 8px !important;
    letter-spacing: 0 !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }
}

/* Coarse pointers: invisible ::before extends each 28px nav chip to a 44px hit area without changing layout */
@media (max-width: 900px) and (pointer: coarse) {
  #jakkoji-openworld-nav.jk-temple-plaque #jk-dharma-badge,
  #jakkoji-openworld-nav.jk-temple-plaque #jk-top-kudoku-btn,
  #jakkoji-openworld-nav.jk-temple-plaque #kaiun-mangan-bar,
  #jakkoji-openworld-nav.jk-temple-plaque #kaiun-share-postcard-btn {
    min-width: 44px !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque #jk-dharma-badge::before,
  #jakkoji-openworld-nav.jk-temple-plaque #kaiun-mangan-bar::before,
  #jakkoji-openworld-nav.jk-temple-plaque #kaiun-share-postcard-btn::before {
    content: "" !important;
    position: absolute !important;
    top: -8px !important;
    bottom: -8px !important;
    left: 0 !important;
    right: 0 !important;
  }
  /* #jk-top-kudoku-btn::before already draws the "・" separator; stretch that same box rather than replacing it */
  #jakkoji-openworld-nav.jk-temple-plaque #jk-top-kudoku-btn::before {
    top: -8px !important;
    bottom: -8px !important;
    left: 0 !important;
    right: 0 !important;
    transform: none !important;
    display: flex !important;
    align-items: center !important;
  }
}

/* V25: Mangan 5/5 Share Highlight Pulse + 2-Tier Mobile Walk Bottom + 1+3 Mobile Seated Row */
.kaiun-share-inline-btn.is-mangan-complete,
#jk-bench-photo-btn.is-mangan-complete {
  border-color: #d4af6a !important;
  background: #b63228 !important;
  color: #f5efe4 !important;
  box-shadow: inset 0 0 0 1px rgba(212, 175, 106, 0.32) !important;
}

@media (max-width: 900px) {
  /* Eliminate 3-tier bottom sandwich when proximity prompt is active on mobile */
  body:has(#jk-proximity-discovery.is-visible) #jk-bottom-left-actions,
  body:has(#jk-proximity-discovery.is-visible) .jk-dock.is-collapsed {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  #jk-proximity-discovery {
    bottom: calc(106px + env(safe-area-inset-bottom)) !important;
  }
  /* Reflow mobile seated bench actions into a single compact 1+3 row */
  #jk-bench-sit-bar .jk-bench-seated-view {
    padding: 5px 8px !important;
    gap: 4px 4px !important;
  }
  #jk-bench-sit-bar #jk-bench-tea-btn,
  #jk-bench-sit-bar #jk-bench-photo-btn,
  #jk-bench-sit-bar #jk-bench-stand-btn {
    font-size: 10.5px !important;
    padding: 4px 6px !important;
    letter-spacing: 0.01em !important;
  }
}

/* ==========================================================================
   V31 Silky-Smooth UX & Mobile Ergonomics Hardening (Opus 5.5 High QC)
   ========================================================================== */

/* 1. Dynamic viewport height on 3D stage canvas (#57) */
.stage canvas {
  height: 100dvh !important;
}

/* 2. Allow natural page scroll on click-only studio canvases (#38) */
#jk-goshuin-cv,
#jk-omikuji-cv {
  touch-action: manipulation !important;
}

/* 3. Smooth opacity/visibility transitions for HUD banners without display-toggle snap (#18, #54) */
#jk-proximity-discovery,
#jk-bench-sit-bar,
#jk-nembutsu-bar {
  display: flex !important;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.22s cubic-bezier(0.2, 0.8, 0.2, 1), transform 0.22s cubic-bezier(0.2, 0.8, 0.2, 1), visibility 0s linear 0.22s;
}
#jk-proximity-discovery.is-visible,
#jk-bench-sit-bar.is-visible,
#jk-nembutsu-bar.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity 0.22s cubic-bezier(0.2, 0.8, 0.2, 1), transform 0.22s cubic-bezier(0.2, 0.8, 0.2, 1), visibility 0s linear 0s;
}

/* 4. Safe-area insets & overflow protection on full-screen modals & lightboxes (#39, #40) */
.jk-modal-backdrop {
  padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left)) !important;
}
.jk-modal-close,
.jk-viral-close,
#kaiun-share-close {
  min-width: 44px !important;
  min-height: 44px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.jk-lightbox-card,
.jk-ema-lightbox-card,
.jk-viral-card,
.jk-viral-panel {
  max-height: calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom)) !important;
  overflow-y: auto !important;
}

/* 5. Prevent accidental report-button mis-tap next to Gassho button on Ema cards (#36) */
.jk-ema-report,
.jk-ema-report-btn {
  margin-left: 10px !important;
  min-height: 36px !important;
  padding: 4px 10px !important;
}

/* 6. Coarse pointer (iOS/Android) 16px input font-size to prevent Safari auto-zoom freeze (#37) & invisible 44px hit-area expansion (#36, #60) */
@media (pointer: coarse) {
  input,
  textarea,
  select,
  .jk-ema-input,
  .jk-ema-textarea,
  #jk-ema-text,
  #jk-ema-author {
    font-size: 16px !important;
  }
  .jk-waypoint-btn,
  .jk-nembutsu-btn,
  #jk-bench-sit-btn,
  #jk-bench-tea-btn,
  #jk-bench-photo-btn,
  #jk-bench-stand-btn,
  .jk-bench-micro-btn,
  .jk-ema-report,
  .jk-prox-btn {
    position: relative;
    min-height: 44px !important;
    min-width: 44px !important;
  }
  .jk-waypoint-btn::before,
  .jk-nembutsu-btn::before,
  #jk-bench-sit-btn::before,
  #jk-bench-tea-btn::before,
  #jk-bench-photo-btn::before,
  #jk-bench-stand-btn::before,
  .jk-bench-micro-btn::before,
  .jk-prox-btn::before {
    content: "";
    position: absolute;
    inset: -8px -4px;
  }
  /* Hide desktop-only QR image on mobile support dialog so Stripe button is immediately above the fold (#60) */
  #support-dialog img[alt*="QR"],
  #support-dialog .support-qr {
    display: none !important;
  }
}

/* 7. Comprehensive prefers-reduced-motion coverage (#51) */
@media (prefers-reduced-motion: reduce) {
  .jk-merit-float,
  .jk-Bell-ripple,
  .jk-breath-bar,
  .jk-satori-overlay,
  .jk-lightbox-backdrop,
  #jk-proximity-discovery,
  #jk-bench-sit-bar,
  #jk-nembutsu-bar {
    animation: none !important;
    transition: none !important;
  }
}

/* */

/* 1. Top nav plaque: opaque lacquer board instead of blurred glass (padding left to the injected rule) */
html body #jakkoji-openworld-nav.jk-temple-plaque {
  background: rgba(18, 14, 10, 0.96) !important;
  border: 1px solid rgba(212, 175, 106, 0.56) !important;
  border-radius: 4px !important;
  outline: 1px solid rgba(212, 175, 106, 0.14) !important;
  outline-offset: -4px !important;
  box-shadow: inset 0 1px 0 rgba(245, 239, 228, 0.06), 0 8px 22px rgba(0, 0, 0, 0.5) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  font-variant-numeric: tabular-nums;
}

/* Nav chips: one legible size at every width (the <=900px block above adds the 28px height and 44px coarse hit area) */
html body #kaiun-share-postcard-btn,
html body #kaiun-mangan-bar {
  font-size: 11px !important;
  font-variant-numeric: tabular-nums !important;
}

.kaiun-mangan-inline,
.kaiun-mangan-bar {
  border-radius: 2px !important;
  font-variant-numeric: tabular-nums !important;
}

/* 2. Top-right merit HUD */
#kaiun-merit-hud {
  background: rgba(18, 14, 10, 0.96) !important;
  border: 1px solid rgba(212, 175, 106, 0.56) !important;
  border-radius: 4px !important;
  outline: 1px solid rgba(212, 175, 106, 0.14) !important;
  outline-offset: -4px !important;
  box-shadow: inset 0 1px 0 rgba(245, 239, 228, 0.06), 0 10px 24px rgba(0, 0, 0, 0.55) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  color: #f5efe4 !important;
  font-variant-numeric: tabular-nums !important;
}

/* Merit gain: the frame brightens to a second gold rule rather than glowing */
#kaiun-merit-hud.is-pulsing {
  border-color: rgba(236, 204, 140, 0.95) !important;
  outline-color: rgba(236, 204, 140, 0.4) !important;
  box-shadow: inset 0 1px 0 rgba(245, 239, 228, 0.08), 0 10px 24px rgba(0, 0, 0, 0.6) !important;
}

/* Streak badge appearing must never wrap the row and change the HUD height */
#kaiun-merit-hud .kaiun-merit-top-row {
  flex-wrap: nowrap !important;
  white-space: nowrap !important;
}

#kaiun-merit-hud :is(.kaiun-merit-numbers, .kaiun-merit-streak-pill, .kaiun-merit-rank-badge, .kaiun-merit-label, .kaiun-merit-chant-line) {
  font-variant-numeric: tabular-nums !important;
}

/* Rank: a small cinnabar seal */
#kaiun-merit-hud .kaiun-merit-rank-badge {
  border-radius: 2px !important;
  background: #8e241b !important;
  border: 1px solid rgba(212, 175, 106, 0.56) !important;
  color: #f5efe4 !important;
}

#kaiun-merit-hud .kaiun-merit-streak-pill {
  border-radius: 2px !important;
  background: rgba(212, 175, 106, 0.14) !important;
  border: 1px solid rgba(212, 175, 106, 0.62) !important;
  box-shadow: none !important;
  color: #f2d9a4 !important;
}

/* Progress: an inlaid groove with a gold-leaf fill */
#kaiun-merit-hud .kaiun-merit-bar-track {
  border-radius: 1px !important;
  background: rgba(245, 239, 228, 0.06) !important;
  border-color: rgba(212, 175, 106, 0.42) !important;
}

#kaiun-merit-hud .kaiun-merit-bar-fill {
  border-radius: 0 !important;
  box-shadow: inset 0 1px 0 rgba(255, 246, 214, 0.42) !important;
}

#kaiun-merit-hud .kaiun-merit-btn {
  border-radius: 3px !important;
  border-color: rgba(212, 175, 106, 0.42) !important;
  background: rgba(245, 239, 228, 0.05) !important;
  color: #f5efe4 !important;
}

#kaiun-merit-hud .kaiun-merit-btn:hover,
#kaiun-merit-hud .kaiun-merit-btn[data-tool-selected="true"] {
  background: rgba(212, 175, 106, 0.16) !important;
  border-color: rgba(212, 175, 106, 0.78) !important;
}

#kaiun-merit-hud .kaiun-merit-btn.is-active {
  background: rgba(142, 36, 27, 0.62) !important;
  border-color: rgba(236, 204, 140, 0.9) !important;
  box-shadow: inset 0 0 0 1px rgba(236, 204, 140, 0.24) !important;
  color: #fffaf0 !important;
}

/* 3. Floating world-space bench button: a lacquered fuda, not a pill */
#jk-floating-bench-btn {
  border-radius: 4px !important;
  background: rgba(18, 14, 10, 0.96) !important;
  border: 1px solid rgba(212, 175, 106, 0.56) !important;
  box-shadow:
    inset 0 0 0 3px rgba(18, 14, 10, 0.96),
    inset 0 0 0 4px rgba(212, 175, 106, 0.16),
    0 10px 24px rgba(0, 0, 0, 0.62) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  color: #f5efe4 !important;
  font-variant-numeric: tabular-nums !important;
}

#jk-floating-bench-btn:hover {
  background: rgba(126, 33, 24, 0.96) !important;
  border-color: rgba(236, 204, 140, 0.9) !important;
}

#jk-floating-bench-btn:focus-visible {
  outline: 2px solid #f5efe4 !important;
  outline-offset: 2px !important;
}

#jk-floating-bench-btn .jk-floating-bench-kbd {
  border-radius: 2px !important;
}

/* 3D chant tag over the monk's head */
.kaiun-3d-chant-pop {
  border-radius: 3px !important;
  background: rgba(18, 14, 10, 0.94) !important;
  border-color: rgba(212, 175, 106, 0.56) !important;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.5) !important;
  font-variant-numeric: tabular-nums;
}

#jk-bench-sit-bar,
#jk-pilgrimage-stamp-bar,
.jk-ema-plaque-foot {
  font-variant-numeric: tabular-nums;
}

/* 4. Postcard share sheet (markup carries inline styles, hence the attribute selectors) */
#kaiun-share-sheet-modal {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  font-variant-numeric: tabular-nums;
}

#kaiun-share-sheet-modal .kaiun-share-card {
  background: #120e0a !important;
  border: 1px solid rgba(212, 175, 106, 0.56) !important;
  border-radius: 4px !important;
  box-shadow:
    inset 0 0 0 4px #120e0a,
    inset 0 0 0 5px rgba(212, 175, 106, 0.14),
    0 24px 56px rgba(0, 0, 0, 0.8) !important;
  color: #f5efe4 !important;
}

#kaiun-share-sheet-modal .kaiun-share-card [style*="border-radius"],
#kaiun-share-close {
  border-radius: 3px !important;
}

#kaiun-share-sheet-modal .kaiun-share-card [style*="999px"] {
  border-radius: 2px !important;
}

/* 5. GEO guide drawer (#kaiun-geo-guide): matte Sumi panel, 44px close target */
.kaiun-geo-drawer {
  position: fixed;
  top: auto;
  right: auto;
  left: 50%;
  bottom: max(16px, env(safe-area-inset-bottom));
  transform: translateX(-50%);
  z-index: 9985;
  box-sizing: border-box;
  width: min(560px, calc(100vw - 24px));
  max-height: min(78dvh, 720px);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 20px 20px 18px;
  background: #120e0a;
  border: 1px solid rgba(212, 175, 106, 0.56);
  border-radius: 4px;
  outline: 1px solid rgba(212, 175, 106, 0.14);
  outline-offset: -5px;
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.72);
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  color: #f5efe4;
  font-family: var(--jk-font-serif);
  font-variant-numeric: tabular-nums;
  line-height: 1.7;
}

.kaiun-geo-drawer[hidden] {
  display: none !important;
}

.kaiun-geo-drawer :is(dl, table) {
  border-top: 1px solid rgba(212, 175, 106, 0.32);
}

.kaiun-geo-drawer :is(button, a[role="button"]) {
  border-radius: 3px;
}

.kaiun-geo-drawer :is(.kaiun-geo-close, [data-geo-close], button[aria-label*="閉"], button[aria-label*="lose"]) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 44px !important;
  min-height: 44px !important;
}

/* */

:root {
  --kg-sumi: #120e0a;
  --kg-sumi-raised: #1a140f;
  --kg-washi: #f5efe4;
  --kg-washi-deep: #efe6d5;
  --kg-washi-rule: #d9ccb4;
  --kg-ink: #1a1511;
  --kg-ink-muted: #6b5c4b;
  --kg-kindei: #d4af6a;
  --kg-kindei-line: rgba(212, 175, 106, 0.56);
  --kg-kindei-faint: rgba(212, 175, 106, 0.18);
  --kg-shu: #b63228;
  --kg-shu-deep: #8e241b;
}

/* */
html body #kaiun-goshuincho-btn,
html body #kaiun-hotaru-btn {
  appearance: none;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  box-sizing: border-box;
  min-height: 28px;
  padding: 0 8px;
  border: 1px solid var(--kg-kindei-line);
  border-radius: 3px !important;
  background: var(--kg-sumi);
  color: var(--kg-washi);
  font-family: var(--jk-font-serif);
  font-size: 11px !important;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.04em;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
  cursor: pointer;
  box-shadow: none;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  transition: background-color 0.16s ease, border-color 0.16s ease;
}

html body #kaiun-goshuincho-btn:hover,
html body #kaiun-hotaru-btn:hover {
  background: #241b13;
  border-color: rgba(212, 175, 106, 0.86);
}

html body #kaiun-goshuincho-btn:focus-visible,
html body #kaiun-hotaru-btn:focus-visible {
  outline: 2px solid var(--kg-kindei);
  outline-offset: 2px;
}

html body #kaiun-goshuincho-btn .kaiun-goshuincho-count,
html body #kaiun-goshuincho-btn [data-count] {
  color: var(--kg-kindei);
  font-variant-numeric: tabular-nums;
}

/* Every seal collected: the chip takes a vermilion ground */
html body #kaiun-goshuincho-btn.is-complete,
html body #kaiun-goshuincho-btn[data-complete="true"] {
  background: var(--kg-shu-deep);
  border-color: var(--kg-kindei);
}

html body #kaiun-hotaru-btn[aria-pressed="true"],
html body #kaiun-hotaru-btn.is-active {
  border-color: var(--kg-kindei);
  color: #f2d9a4;
}

@media (pointer: coarse) {
  html body #kaiun-goshuincho-btn,
  html body #kaiun-hotaru-btn {
    min-width: 44px;
  }
  /* 28px chip + 8px above and below = 44px touch target */
  html body #kaiun-goshuincho-btn::before,
  html body #kaiun-hotaru-btn::before {
    content: "";
    position: absolute;
    inset: -8px 0;
  }
}

/* */
.kaiun-mangan-next {
  display: inline-block;
  margin-left: 6px;
  padding-left: 6px;
  border-left: 1px solid var(--kg-kindei-faint);
  color: #e6cf9c;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.02em;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

#kaiun-mangan-bar.is-mangan .kaiun-mangan-next,
.kaiun-mangan-next.is-fulfilled {
  color: var(--kg-kindei);
}

/* 2. Goshuincho dialog */
#kaiun-goshuincho-modal[hidden] {
  display: none !important;
}

#kaiun-goshuincho-modal {
  position: fixed;
  inset: 0;
  z-index: 10030;
  display: grid;
  place-items: center;
  box-sizing: border-box;
  padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
  overflow-y: auto;
  overscroll-behavior: contain;
  background: rgba(10, 8, 6, 0.84);
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  color: var(--kg-washi);
  font-family: var(--jk-font-serif);
  font-variant-numeric: tabular-nums;
}

/* Outer Kinran board: lacquer with a Kindei rule and a second inset rule */
#kaiun-goshuincho-modal .kaiun-goshuincho-book,
#kaiun-goshuincho-modal > [role="document"] {
  position: relative;
  box-sizing: border-box;
  width: min(880px, 100%);
  max-height: calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
  overflow-y: auto;
  padding: 16px 18px 14px;
  background: var(--kg-sumi);
  border: 1px solid #c8a45d;
  border-radius: 4px;
  outline: 1px solid var(--kg-kindei-faint);
  outline-offset: -5px;
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.7);
}

#kaiun-goshuincho-modal .kaiun-goshuincho-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 0 52px 12px 0;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--kg-kindei-faint);
}

#kaiun-goshuincho-title {
  margin: 0;
  color: #e6cf9c;
  font-family: var(--jk-font-display);
  font-size: 19px;
  font-weight: 600;
  letter-spacing: 0.14em;
  line-height: 1.3;
}

#kaiun-goshuincho-modal .kaiun-goshuincho-count {
  color: var(--kg-kindei);
  font-size: 13px;
  letter-spacing: 0.06em;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

/* Square 44px controls: close, page turn */
#kaiun-goshuincho-close,
#kaiun-goshuin-prev,
#kaiun-goshuin-next {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 44px !important;
  min-height: 44px !important;
  padding: 0 10px;
  border: 1px solid var(--kg-kindei-line);
  border-radius: 3px;
  background: var(--kg-sumi-raised);
  color: var(--kg-washi);
  font-family: var(--jk-font-serif);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
}

#kaiun-goshuincho-close {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
  padding: 0;
  font-size: 18px;
}

#kaiun-goshuincho-close:hover,
#kaiun-goshuin-prev:hover:not(:disabled),
#kaiun-goshuin-next:hover:not(:disabled) {
  background: #2a2016;
  border-color: rgba(212, 175, 106, 0.86);
}

#kaiun-goshuin-prev:disabled,
#kaiun-goshuin-next:disabled {
  opacity: 0.38;
  cursor: default;
}

#kaiun-goshuincho-modal :is(button, a):focus-visible {
  outline: 2px solid var(--kg-kindei);
  outline-offset: 2px;
}

/* 3D leaf stage: the Orihon opens as one Washi spread folded at the centre */
#kaiun-goshuincho-modal .kaiun-goshuincho-stage {
  position: relative;
  perspective: 1400px;
  perspective-origin: 50% 40%;
  transform-style: preserve-3d;
}

#kaiun-goshuincho-modal .kaiun-goshuin-spread {
  position: relative;
  display: none;
  grid-template-columns: 1fr 1fr;
  box-sizing: border-box;
  min-height: 360px;
  background:
    linear-gradient(90deg, transparent 49.4%, rgba(26, 21, 17, 0.16) 50%, transparent 50.6%),
    linear-gradient(90deg, var(--kg-washi) 0%, var(--kg-washi-deep) 48%, var(--kg-washi-deep) 52%, var(--kg-washi) 100%);
  border: 1px solid #c8a45d;
  border-radius: 2px;
  color: var(--kg-ink);
  transform-origin: 50% 50%;
  transform-style: preserve-3d;
  backface-visibility: hidden;
}

#kaiun-goshuincho-modal .kaiun-goshuin-spread.is-current,
#kaiun-goshuincho-modal .kaiun-goshuin-spread[aria-hidden="false"] {
  display: grid;
}

/* Page turn: the outgoing right leaf swings over the fold (rotateY) */
#kaiun-goshuincho-modal .kaiun-goshuin-spread.is-flip-next {
  animation: kaiun-orihon-turn-next 0.62s cubic-bezier(0.32, 0.72, 0.24, 1) both;
}

#kaiun-goshuincho-modal .kaiun-goshuin-spread.is-flip-prev {
  animation: kaiun-orihon-turn-prev 0.62s cubic-bezier(0.32, 0.72, 0.24, 1) both;
}

@keyframes kaiun-orihon-turn-next {
  0% { transform: rotateY(0deg); }
  48% { transform: rotateY(-88deg); }
  52% { transform: rotateY(88deg); }
  100% { transform: rotateY(0deg); }
}

@keyframes kaiun-orihon-turn-prev {
  0% { transform: rotateY(0deg); }
  48% { transform: rotateY(88deg); }
  52% { transform: rotateY(-88deg); }
  100% { transform: rotateY(0deg); }
}

/* Corner tab for click/drag turning */
#kaiun-goshuincho-modal .kaiun-goshuin-corner {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 44px;
  height: 44px;
  background: linear-gradient(135deg, transparent 50%, var(--kg-washi-rule) 50%);
  border: 0;
  border-radius: 0;
  cursor: grab;
}

#kaiun-goshuincho-modal .kaiun-goshuin-page {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-sizing: border-box;
  min-width: 0;
  padding: 22px 16px 18px;
  text-align: center;
}

#kaiun-goshuincho-modal .kaiun-goshuin-page + .kaiun-goshuin-page {
  border-left: 1px solid rgba(26, 21, 17, 0.08);
}

/* Seal card: a vermilion stamp over Shodo calligraphy on the Washi leaf */
#kaiun-goshuincho-modal .kaiun-goshuin-seal {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  width: 100%;
  max-width: 280px;
  margin: 0 auto;
  padding: 14px 10px 12px;
  box-sizing: border-box;
  border: 1px solid rgba(182, 50, 40, 0.28);
  border-radius: 2px;
  background: rgba(245, 239, 228, 0.6);
}

#kaiun-goshuincho-modal .kaiun-goshuin-stamp {
  display: block;
  width: min(148px, 60%);
  height: auto;
  aspect-ratio: 1;
  color: var(--kg-shu);
}

#kaiun-goshuincho-modal .kaiun-goshuin-name {
  margin: 0;
  color: var(--kg-ink);
  font-family: var(--jk-font-display);
  font-size: 17px;
  font-weight: 600;
  letter-spacing: 0.16em;
  line-height: 1.4;
}

#kaiun-goshuincho-modal .kaiun-goshuin-date {
  color: var(--kg-shu-deep);
  font-size: 12px;
  letter-spacing: 0.08em;
  font-variant-numeric: tabular-nums;
}

#kaiun-goshuincho-modal .kaiun-goshuin-hint {
  max-width: 22em;
  margin: 0;
  color: var(--kg-ink-muted);
  font-size: 12px;
  line-height: 1.7;
}

/* Locked seal: a blind-embossed outline on bare Washi */
#kaiun-goshuincho-modal .kaiun-goshuin-seal.is-locked {
  border: 1px dashed rgba(26, 21, 17, 0.2);
  background: transparent;
}

#kaiun-goshuincho-modal .kaiun-goshuin-seal.is-locked .kaiun-goshuin-stamp {
  color: rgba(26, 21, 17, 0.16);
  filter: none;
}

#kaiun-goshuincho-modal .kaiun-goshuin-seal.is-locked .kaiun-goshuin-name {
  color: rgba(26, 21, 17, 0.42);
}

/* */
#kaiun-goshuincho-modal .kaiun-goshuin-calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 6px;
  width: 100%;
  max-width: 340px;
  margin: 0 auto;
  font-family: var(--jk-font-num);
  font-variant-numeric: tabular-nums;
}

#kaiun-goshuincho-modal .kaiun-goshuin-day {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 3px;
  min-width: 0;
  padding: 4px 0 2px;
  border-top: 1px solid rgba(26, 21, 17, 0.1);
  color: var(--kg-ink-muted);
  font-size: 11px;
  line-height: 1;
}

#kaiun-goshuincho-modal .kaiun-goshuin-day::after {
  content: "";
  display: block;
  width: 14px;
  height: 14px;
  border: 1px solid rgba(26, 21, 17, 0.22);
  border-radius: 50%;
  background: transparent;
}

#kaiun-goshuincho-modal .kaiun-goshuin-day[data-level="1"]::after {
  border-color: rgba(26, 21, 17, 0.3);
  background: rgba(26, 21, 17, 0.24);
}

#kaiun-goshuincho-modal .kaiun-goshuin-day[data-level="2"]::after {
  border-color: var(--kg-ink);
  background: var(--kg-ink);
}

#kaiun-goshuincho-modal .kaiun-goshuin-day[data-level="3"]::after {
  border-color: #a8833d;
  background: var(--kg-kindei);
}

#kaiun-goshuincho-modal .kaiun-goshuin-day.is-today {
  color: var(--kg-shu-deep);
  font-weight: 700;
  border-top-color: var(--kg-shu);
}

#kaiun-goshuincho-modal .kaiun-goshuin-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 4px 12px;
  margin: 10px 0 0;
  color: var(--kg-ink-muted);
  font-size: 11px;
}

/* Footer: page turn, pager, export */
#kaiun-goshuincho-modal .kaiun-goshuincho-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px 10px;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--kg-kindei-faint);
}

#kaiun-goshuincho-modal .kaiun-goshuin-pager {
  min-width: 4.5em;
  color: var(--kg-kindei);
  font-size: 12px;
  text-align: center;
  letter-spacing: 0.08em;
  font-variant-numeric: tabular-nums;
}

#kaiun-goshuin-export-btn {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  box-sizing: border-box;
  min-height: 44px;
  padding: 0 16px;
  border: 1px solid var(--kg-kindei);
  border-radius: 3px;
  background: var(--kg-shu);
  color: var(--kg-washi);
  font-family: var(--jk-font-serif);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  cursor: pointer;
  box-shadow: none;
}

#kaiun-goshuin-export-btn:hover {
  background: var(--kg-shu-deep);
}

/* Phones: one Washi page per row so seals stay legible */
@media (max-width: 640px) {
  #kaiun-goshuincho-modal .kaiun-goshuincho-book,
  #kaiun-goshuincho-modal > [role="document"] {
    padding: 12px 10px 10px;
  }
  #kaiun-goshuincho-title {
    font-size: 16px;
    letter-spacing: 0.08em;
  }
  #kaiun-goshuincho-modal .kaiun-goshuin-spread {
    grid-template-columns: 1fr;
    min-height: 0;
    background: var(--kg-washi);
  }
  #kaiun-goshuincho-modal .kaiun-goshuin-page + .kaiun-goshuin-page {
    border-left: 0;
    border-top: 1px solid rgba(26, 21, 17, 0.1);
  }
  #kaiun-goshuincho-modal .kaiun-goshuin-page {
    padding: 14px 10px 12px;
  }
  #kaiun-goshuincho-modal .kaiun-goshuin-stamp {
    width: min(112px, 46%);
  }
  #kaiun-goshuincho-modal .kaiun-goshuin-calendar {
    gap: 4px;
  }
}

/* Background chrome hides while the book is open (also out of the Tab order) */
body:has(#kaiun-goshuincho-modal:not([hidden])) :is(#kaiun-merit-hud, #jk-floating-bench-btn, #jk-bench-sit-bar, .jk-bench-sit-bar, #jk-bottom-left-actions, .jk-bottom-left-actions, .jk-dock, #jk-proximity-discovery, .jk-proximity-discovery, #jk-nembutsu-bar, #kaiun-hotaru-whisper),
body:has(#kaiun-goshuincho-modal.is-open) :is(#kaiun-merit-hud, #jk-floating-bench-btn, #jk-bench-sit-bar, .jk-bench-sit-bar, #jk-bottom-left-actions, .jk-bottom-left-actions, .jk-dock, #jk-proximity-discovery, .jk-proximity-discovery, #jk-nembutsu-bar, #kaiun-hotaru-whisper) {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* */
.kaiun-shodo-ink-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  box-sizing: border-box;
  max-width: 100%;
  margin: 8px 0;
  padding: 6px 8px;
  background: #16110c;
  border: 1px solid rgba(200, 164, 93, 0.38);
  border-radius: 4px;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  color: var(--kg-washi);
  font-family: var(--jk-font-serif);
  font-variant-numeric: tabular-nums;
}

.kaiun-shodo-ink-bar button {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  box-sizing: border-box;
  min-height: 32px;
  padding: 0 10px;
  border: 1px solid rgba(200, 164, 93, 0.3);
  border-radius: 3px;
  background: transparent;
  color: #e8dfd1;
  font-family: inherit;
  font-size: 12px;
  line-height: 1;
  letter-spacing: 0.04em;
  white-space: nowrap;
  cursor: pointer;
}

.kaiun-shodo-ink-bar button:hover {
  border-color: rgba(212, 175, 106, 0.78);
}

.kaiun-shodo-ink-bar button:focus-visible {
  outline: 2px solid var(--kg-kindei);
  outline-offset: 2px;
}

.kaiun-shodo-ink-bar button[aria-pressed="true"] {
  border-color: var(--kg-kindei);
  background: rgba(212, 175, 106, 0.14);
  color: #f5efe4;
}

/* Ink swatch: a small chamfered ink-stick face, never a dot or pill */
.kaiun-shodo-ink-bar .kaiun-shodo-swatch,
.kaiun-shodo-ink-bar button[data-ink]::before {
  display: inline-block;
  flex: 0 0 auto;
  width: 14px;
  height: 14px;
  border: 1px solid rgba(245, 239, 228, 0.3);
  border-radius: 3px;
  background: #171310;
}

.kaiun-shodo-ink-bar button[data-ink]::before {
  content: "";
}

.kaiun-shodo-ink-bar button[data-ink]:has(.kaiun-shodo-swatch)::before {
  content: none;
  display: none;
}

.kaiun-shodo-ink-bar button[data-ink="sumi"]::before,
.kaiun-shodo-ink-bar button[data-ink="sumi"] .kaiun-shodo-swatch {
  background: #171310;
}

.kaiun-shodo-ink-bar button[data-ink="shu"]::before,
.kaiun-shodo-ink-bar button[data-ink="vermilion"]::before,
.kaiun-shodo-ink-bar button[data-ink="shu"] .kaiun-shodo-swatch,
.kaiun-shodo-ink-bar button[data-ink="vermilion"] .kaiun-shodo-swatch {
  background: #b8332a;
}

.kaiun-shodo-ink-bar button[data-ink="kindei"]::before,
.kaiun-shodo-ink-bar button[data-ink="gold"]::before,
.kaiun-shodo-ink-bar button[data-ink="kindei"] .kaiun-shodo-swatch,
.kaiun-shodo-ink-bar button[data-ink="gold"] .kaiun-shodo-swatch {
  background: #c8a45d;
}

.kaiun-shodo-ink-bar [data-shodo-action] {
  margin-left: auto;
}

.kaiun-shodo-ink-bar [data-shodo-action] + [data-shodo-action] {
  margin-left: 0;
}

@media (pointer: coarse) {
  .kaiun-shodo-ink-bar button {
    min-height: 44px;
    min-width: 44px;
  }
}

/* 4. Sangha firefly whisper and shared-arrival toast */
#kaiun-hotaru-whisper,
#kaiun-shared-arrival-toast {
  position: fixed;
  left: 50%;
  bottom: calc(118px + env(safe-area-inset-bottom));
  z-index: 9960;
  display: flex;
  align-items: center;
  gap: 10px;
  box-sizing: border-box;
  width: max-content;
  max-width: min(460px, calc(100vw - 24px));
  padding: 9px 14px;
  background: var(--kg-sumi);
  border: 1px solid var(--kg-kindei-line);
  border-radius: 4px;
  outline: 1px solid rgba(212, 175, 106, 0.12);
  outline-offset: -4px;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.55);
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  color: var(--kg-washi);
  font-family: var(--jk-font-serif);
  font-size: 12.5px;
  line-height: 1.6;
  letter-spacing: 0.03em;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate(-50%, 6px);
  transition: opacity 0.24s ease, transform 0.24s ease, visibility 0s linear 0.24s;
}

#kaiun-hotaru-whisper.is-visible,
#kaiun-shared-arrival-toast.is-visible,
#kaiun-shared-arrival-toast[data-open="true"] {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
  transition: opacity 0.24s ease, transform 0.24s ease, visibility 0s linear 0s;
}

#kaiun-hotaru-whisper.is-visible {
  pointer-events: none;
}

#kaiun-shared-arrival-toast.is-visible {
  pointer-events: auto;
}

#kaiun-hotaru-whisper[hidden],
#kaiun-shared-arrival-toast[hidden] {
  display: none !important;
}

/* Arrival toast sits above the whisper when both are visible */
#kaiun-shared-arrival-toast {
  bottom: calc(166px + env(safe-area-inset-bottom));
  z-index: 9965;
  padding-right: 6px;
}

#kaiun-hotaru-whisper strong,
#kaiun-shared-arrival-toast strong {
  color: var(--kg-kindei);
  font-weight: 600;
}

#kaiun-shared-arrival-toast :is(.kaiun-toast-close, button[aria-label]) {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  border: 1px solid rgba(212, 175, 106, 0.32);
  border-radius: 3px;
  background: transparent;
  color: var(--kg-washi);
  font-size: 16px;
  cursor: pointer;
}

#kaiun-shared-arrival-toast :is(.kaiun-toast-close, button[aria-label]):focus-visible {
  outline: 2px solid var(--kg-kindei);
  outline-offset: 2px;
}

@media (max-width: 640px) {
  #kaiun-hotaru-whisper,
  #kaiun-shared-arrival-toast {
    width: calc(100vw - 24px);
    font-size: 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  #kaiun-goshuincho-modal .kaiun-goshuin-spread,
  #kaiun-goshuincho-modal .kaiun-goshuin-spread.is-flip-next,
  #kaiun-goshuincho-modal .kaiun-goshuin-spread.is-flip-prev {
    animation: none !important;
    transition: none !important;
    transform: none !important;
  }
  #kaiun-goshuincho-btn,
  #kaiun-hotaru-btn,
  #kaiun-hotaru-whisper,
  #kaiun-shared-arrival-toast {
    transition: none !important;
  }
}

/* 5. Touch targets the V31 audit found short */
@media (pointer: coarse) {
  /* 28px nav chip + 8px invisible margin above and below = 44px */
  #jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-btn {
    position: relative;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-waypoint-btn::before {
    content: "";
    position: absolute;
    inset: -8px -4px;
  }
  /* Collapsed dock toggle keeps a 44 x 44 hit area around its 28px face */
  .jk-dock.is-collapsed .jk-dock-collapse-btn,
  .jk-dock.is-collapsed .jk-dock-brand {
    position: relative;
  }
  .jk-dock.is-collapsed .jk-dock-collapse-btn::before,
  .jk-dock.is-collapsed .jk-dock-brand::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: max(44px, 100%);
    height: 44px;
    transform: translate(-50%, -50%);
  }
}

/* 6. GEO guide: the drawer is the only frame; the inner panel loses its own border */
.kaiun-geo-drawer .kaiun-geo-panel {
  max-width: none;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

/* V32 R1: Goshuincho hero stamp, hint and close-button overrides */
#kaiun-goshuincho-modal .kaiun-goshuin-stamp svg {
  width: 100% !important;
  height: 100% !important;
  max-width: 136px !important;
  max-height: 136px !important;
  display: block !important;
}

#kaiun-goshuincho-modal .kaiun-goshuin-hint {
  color: #5c4b37 !important;
  text-shadow: none !important;
  animation: none !important;
  opacity: 1 !important;
  visibility: visible !important;
}

#kaiun-goshuincho-close {
  padding: 0 12px !important;
  min-width: 48px !important;
  min-height: 44px !important;
  font-size: 13px !important;
}

/* V32 R1: <=430px the dharma row stays one horizontally scrolling line so #kaiun-merit-hud clears the monk's crown */
@media (max-width: 430px) {
  #jakkoji-openworld-nav .jk-dharma-row,
  #jakkoji-openworld-nav.jk-temple-plaque .jk-dharma-row {
    flex-wrap: nowrap !important;
    justify-content: flex-start !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    max-width: calc(100vw - 16px) !important;
    gap: 0 4px !important;
    white-space: nowrap !important;
  }
  #jakkoji-openworld-nav .jk-dharma-row::-webkit-scrollbar {
    display: none;
  }
}

/* */
#kaiun-cat-pet-btn {
  position: fixed;
  left: 50%;
  /* Above the proximity / bench bars (154px + ~44px) so both can show together */
  bottom: calc(210px + env(safe-area-inset-bottom, 0px));
  transform: translateX(-50%);
  z-index: 9414;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 44px;
  max-width: calc(100vw - 24px);
  padding: 9px 16px;
  box-sizing: border-box;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  background: #120e0a;
  color: #f5efe4;
  border: 1px solid rgba(200, 164, 93, 0.78);
  border-radius: 4px;
  font: 500 14px/1.4 "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif;
  letter-spacing: 0.04em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
  animation: kaiun-cat-prompt-in 0.24s ease-out both;
  transition: border-color 0.18s ease, background-color 0.18s ease;
}
#kaiun-cat-pet-btn[hidden] {
  display: none !important;
}
#kaiun-cat-pet-btn:hover {
  background: #1c1610;
  border-color: #c8a45d;
}
#kaiun-cat-pet-btn:focus-visible {
  outline: 2px solid #c8a45d;
  outline-offset: 2px;
}
#kaiun-cat-pet-btn:active {
  transform: translateX(-50%) scale(0.97);
}
@keyframes kaiun-cat-prompt-in {
  from { opacity: 0; transform: translateX(-50%) translateY(6px); }
  to { opacity: 1; transform: translateX(-50%) translateY(0); }
}
body:has(:is(.jk-modal-backdrop.is-open, .jk-viral-backdrop.is-open, .jk-ema-lightbox.is-open, #jk-ema-gallery-backdrop.is-open, .jk-omikuji-lightbox.is-open, .jk-wardrobe-backdrop.is-open, #jk-kaiun-scroll-drawer.is-open, #kaiun-share-sheet-modal:not([hidden]), #kaiun-goshuincho-modal:not([hidden]), dialog[open]))
  #kaiun-cat-pet-btn {
  visibility: hidden !important;
  pointer-events: none !important;
}

.kaiun-cat-bubble {
  position: fixed;
  left: 0;
  top: 0;
  z-index: 9413;
  padding: 5px 11px;
  background: #120e0a;
  color: #f5efe4;
  border: 1px solid rgba(200, 164, 93, 0.7);
  border-radius: 4px;
  font: 500 13px/1.4 "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  will-change: transform, opacity;
}

@media (max-width: 768px) {
  #kaiun-cat-pet-btn {
    bottom: calc(206px + env(safe-area-inset-bottom, 0px));
    font-size: 13px;
    padding: 9px 14px;
  }
}

@media (max-width: 520px) {
  .kaiun-mangan-next {
    display: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  #kaiun-cat-pet-btn {
    animation: none;
  }
}

/* */
.jk-ema-gallery-invite {
  flex-basis: 100%;
  margin: 2px 0 0;
  color: #7a5a22;
  font-size: 13px;
  line-height: 1.6;
  letter-spacing: 0.04em;
}
.jk-ema-gallery-empty {
  grid-column: 1 / -1;
  margin: 18px 0;
  text-align: center;
  color: #685B4B;
  font-size: 14px;
  line-height: 1.7;
}





/* ==========================================================================
   V34 ZEN MINIMALISM (KYOTO WABI-SABI · UNCLUTTERED 85%+ SCREEN FREEDOM)
   ========================================================================== */

/* 1. Mobile top-left plaque (#jakkoji-openworld-nav): Sleek 32px Kyoto Sumi Title Pill */
@media (max-width: 900px) {
  #jakkoji-openworld-nav.jk-temple-plaque {
    position: fixed !important;
    top: calc(8px + env(safe-area-inset-top, 0px)) !important;
    left: 8px !important;
    right: auto !important;
    transform: none !important;
    width: auto !important;
    max-width: calc(52vw - 12px) !important;
    padding: 0 !important;
    margin: 0 !important;
    background: rgba(18, 14, 10, 0.92) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    border: 1px solid rgba(200, 164, 93, 0.72) !important;
    border-radius: 4px !important;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.42) !important;
    overflow: hidden !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    transition: background-color 0.15s ease !important;
    z-index: 9420 !important;
  }

  /* Collapsed by default on mobile: only title capsule visible */
  #jakkoji-openworld-nav.jk-temple-plaque:not(.is-expanded) {
    max-height: 34px !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque:not(.is-expanded) .jk-plaque-seal,
  #jakkoji-openworld-nav.jk-temple-plaque:not(.is-expanded) .jk-plaque-main,
  #jakkoji-openworld-nav.jk-temple-plaque:not(.is-expanded) .jk-plaque-sub,
  #jakkoji-openworld-nav.jk-temple-plaque:not(.is-expanded) .jk-waypoint-bar,
  #jakkoji-openworld-nav.jk-temple-plaque:not(.is-expanded) .jk-dharma-badge,
  #jakkoji-openworld-nav.jk-temple-plaque:not(.is-expanded) .jk-plaque-walk-hint {
    display: none !important;
  }

  /* Frame */
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-frame {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 4px !important;
    min-height: 32px !important;
    padding: 0 8px !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    outline: none !important;
    box-shadow: none !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    user-select: none !important;
    -webkit-user-select: none !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-frame * {
    pointer-events: none !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-top {
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px !important;
    font-size: 12px !important;
    color: #f5efe4 !important;
    white-space: nowrap !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-mountain {
    font-size: 12px !important;
    line-height: 32px !important;
    letter-spacing: 0.08em !important;
    color: #f5efe4 !important;
    white-space: nowrap !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque .jk-plaque-frame::after {
    content: " ▾" !important;
    display: inline-block !important;
    color: #c8a45d !important;
    font-size: 11px !important;
    transition: transform 0.22s ease !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque.is-expanded .jk-plaque-frame::after {
    transform: rotate(180deg) !important;
  }

  /* Expanded state */
  #jakkoji-openworld-nav.jk-temple-plaque.is-expanded {
    height: auto !important;
    max-height: none !important;
    max-width: min(340px, calc(100vw - 16px)) !important;
    background: rgba(18, 14, 10, 0.96) !important;
    z-index: 9430 !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque.is-expanded .jk-plaque-seal {
    display: block !important;
    font-size: 10px !important;
    color: #c8a45d !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque.is-expanded .jk-plaque-main {
    display: block !important;
    font-size: 13px !important;
    color: #f5efe4 !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque.is-expanded .jk-waypoint-bar {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 4px !important;
    padding: 8px 6px !important;
    border-top: 1px solid rgba(200, 164, 93, 0.28) !important;
    pointer-events: auto !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque.is-expanded .jk-waypoint-btn {
    pointer-events: auto !important;
  }
  #jakkoji-openworld-nav.jk-temple-plaque.is-expanded .jk-dharma-badge {
    display: inline-flex !important;
    margin: 4px auto 8px !important;
    pointer-events: auto !important;
  }
}

/* 2. Floating Merit HUD (#kaiun-merit-hud): Compact Gold Badge on Mobile */
@media (max-width: 900px) {
  #kaiun-merit-hud {
    position: fixed !important;
    top: calc(8px + env(safe-area-inset-top, 0px)) !important;
    right: 8px !important;
    left: auto !important;
    width: auto !important;
    max-width: calc(48vw - 12px) !important;
    padding: 0 !important;
    margin: 0 !important;
    background: rgba(18, 14, 10, 0.92) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    border: 1px solid rgba(200, 164, 93, 0.72) !important;
    border-radius: 4px !important;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.42) !important;
    overflow: hidden !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    transition: background-color 0.15s ease !important;
    z-index: 9410 !important;
  }

  /* Compact collapsed state */
  #kaiun-merit-hud:not(.is-expanded) {
    max-height: 34px !important;
  }
  #kaiun-merit-hud:not(.is-expanded) .kaiun-merit-rank-badge,
  #kaiun-merit-hud:not(.is-expanded) .kaiun-merit-streak-pill,
  #kaiun-merit-hud:not(.is-expanded) .kaiun-merit-bar-track,
  #kaiun-merit-hud:not(.is-expanded) .kaiun-merit-chant-line,
  #kaiun-merit-hud:not(.is-expanded) .kaiun-merit-actions {
    display: none !important;
  }

  #kaiun-merit-hud .kaiun-merit-top-row {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    min-height: 32px !important;
    padding: 0 8px !important;
    margin: 0 !important;
    border: 0 !important;
    cursor: pointer !important;
    pointer-events: auto !important;
    user-select: none !important;
    -webkit-user-select: none !important;
  }
  #kaiun-merit-hud .kaiun-merit-top-row * {
    pointer-events: none !important;
  }
  #kaiun-merit-hud .kaiun-merit-title-group {
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px !important;
  }
  #kaiun-merit-hud .kaiun-merit-label {
    font-size: 11px !important;
    color: #c8a45d !important;
    white-space: nowrap !important;
  }
  #kaiun-merit-hud .kaiun-merit-numbers {
    font-size: 11px !important;
    color: #f5efe4 !important;
    white-space: nowrap !important;
  }
  #kaiun-merit-hud .kaiun-merit-top-row::after {
    content: " ▾" !important;
    color: #c8a45d !important;
    font-size: 11px !important;
    transition: transform 0.22s ease !important;
  }
  #kaiun-merit-hud.is-expanded .kaiun-merit-top-row::after {
    transform: rotate(180deg) !important;
  }

  /* Expanded state */
  #kaiun-merit-hud.is-expanded {
    height: auto !important;
    max-height: none !important;
    max-width: min(320px, calc(100vw - 16px)) !important;
    padding: 8px 10px !important;
    background: rgba(18, 14, 10, 0.96) !important;
    z-index: 9430 !important;
  }
  #kaiun-merit-hud.is-expanded .kaiun-merit-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 4px !important;
    margin-top: 6px !important;
  }
}

/* 3. Hide redundant corner floating buttons on mobile to liberate screen space */
@media (max-width: 768px) {
  #jk-quick-ema-btn {
    display: none !important;
  }
}

/* */

:root {
  --jk-v35-sumi-bg: rgba(24, 22, 19, 0.80);
  --jk-v35-sumi-bg-deep: rgba(18, 16, 14, 0.88);
  --jk-v35-sumi-border: rgba(222, 210, 186, 0.18);
  --jk-v35-sumi-border-active: rgba(216, 182, 116, 0.48);
  --jk-v35-ink-light: #efe9dc;
  --jk-v35-ink-muted: rgba(235, 227, 210, 0.56);
  --jk-v35-washi-bg: rgba(245, 240, 229, 0.96);
  --jk-v35-washi-surface: #ece5d5;
  --jk-v35-washi-ink: #231f1a;
  --jk-v35-washi-sub: #6d6458;
  --jk-v35-washi-border: rgba(38, 32, 24, 0.18);
  --jk-v35-kofun-gold: #d8b56c;
  --jk-v35-kofun-glow: rgba(216, 181, 108, 0.42);
  --jk-v35-shuin-red: #b23b29;
  --jk-v35-font-serif: "Shippori Mincho", "Yu Mincho", "YuMincho", "Hiragino Mincho ProN", "Noto Serif JP", "Songti SC", Georgia, serif;
  --jk-v35-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

/* */
html body #jakkoji-openworld-nav,
html body #jakkoji-openworld-nav.jk-temple-plaque,
html body .jakkoji-openworld-nav,
html body .jk-dock,
html body .jk-dock.is-collapsed,
html body #jk-dock,
html body #jk-duty-dock,
html body .jk-duty-dock,
html body #kaiun-merit-hud,
html body #kaiun-merit-hud.is-expanded,
html body #jk-merit-hud,
html body .kaiun-merit-hud,
html body .jk-merit-hud,
html body #jk-bottom-left-actions,
html body .jk-bottom-left-actions,
html body #game-bow25,
html body .game-bow25,
html body .bow-progress,
html body #bow-progress,
html body .jk-bow-progress,
html body #jk-bow-progress,
html body #jk-floating-bench-btn,
html body #jk-bench-sit-bar,
html body .jk-bench-sit-bar,
html body #jk-quick-ema-btn,
html body .jk-ema-fab,
html body .jk-ema-floating,
body.jk-v35-ready #jakkoji-openworld-nav,
body.jk-v35-ready #jakkoji-openworld-nav.jk-temple-plaque,
body.jk-v35-ready .jakkoji-openworld-nav,
body.jk-v35-ready .jk-dock,
body.jk-v35-ready .jk-dock.is-collapsed,
body.jk-v35-ready #jk-dock,
body.jk-v35-ready #jk-duty-dock,
body.jk-v35-ready .jk-duty-dock,
body.jk-v35-ready #kaiun-merit-hud,
body.jk-v35-ready #kaiun-merit-hud.is-expanded,
body.jk-v35-ready #jk-merit-hud,
body.jk-v35-ready .kaiun-merit-hud,
body.jk-v35-ready .jk-merit-hud,
body.jk-v35-ready #jk-bottom-left-actions,
body.jk-v35-ready .jk-bottom-left-actions,
body.jk-v35-ready #game-bow25,
body.jk-v35-ready .game-bow25,
body.jk-v35-ready .bow-progress,
body.jk-v35-ready #bow-progress,
body.jk-v35-ready .jk-bow-progress,
body.jk-v35-ready #jk-bow-progress,
body.jk-v35-ready #jk-floating-bench-btn,
body.jk-v35-ready #jk-bench-sit-bar,
body.jk-v35-ready .jk-bench-sit-bar,
body.jk-v35-ready #jk-quick-ema-btn,
body.jk-v35-ready .jk-ema-fab,
body.jk-v35-ready .jk-ema-floating {
  display: none !important;
  pointer-events: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
}

/* */
.game-bottom kbd,
.game-modes kbd,
#jk-v35-zenbar kbd,
#jakkoji-zen-bar kbd,
.jakkoji-zen-bar kbd,
#jk-zen-bar kbd,
.jk-zen-bar kbd,
#jk-ritual-bar kbd,
.jk-ritual-bar kbd,
#game-ritual-bar kbd,
.ritual-bar kbd,
kbd {
  display: none !important;
}

/* */
body.jk-v35-ready .game-bottom,
body.jk-v35-ready #game-bottom,
body.jk-v35-ready #jakkoji-zen-bar,
body.jk-v35-ready .jakkoji-zen-bar,
body.jk-v35-ready #jk-zen-bar,
body.jk-v35-ready .jk-zen-bar,
body.jk-v35-ready #jk-ritual-bar,
body.jk-v35-ready .jk-ritual-bar,
body.jk-v35-ready #jk-ritual-dock,
body.jk-v35-ready .jk-ritual-dock,
body.jk-v35-ready #kaiun-ritual-bar,
body.jk-v35-ready #game-ritual-bar {
  display: none !important;
}

/* */
.jk-v35-proxied-prompt {
  position: fixed !important;
  left: -9999px !important;
  top: -9999px !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* */
#jk-v35-top {
  position: fixed;
  top: max(12px, env(safe-area-inset-top, 12px));
  left: 50%;
  transform: translate3d(-50%, 0, 0);
  z-index: 9450;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: max-content;
  min-width: 136px;
  height: 34px;
  padding: 0 13px;
  margin: 0;
  box-sizing: border-box;
  border: 1px solid var(--jk-v35-sumi-border);
  border-radius: 999px;
  background: var(--jk-v35-sumi-bg);
  backdrop-filter: blur(10px) saturate(1.06);
  -webkit-backdrop-filter: blur(10px) saturate(1.06);
  color: var(--jk-v35-ink-light);
  font-family: var(--jk-v35-font-serif);
  font-size: 12px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.08em;
  font-feature-settings: "palt" 1;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  -webkit-user-select: none;
  -webkit-tap-highlight-color: transparent;
  box-shadow: 0 4px 18px rgba(8, 7, 6, 0.24);
  transition:
    opacity 0.28s var(--jk-v35-ease),
    border-color 0.28s var(--jk-v35-ease),
    background-color 0.28s var(--jk-v35-ease);
}

#jk-v35-top::before {
  content: "";
  position: absolute;
  inset: -6px -8px;
}

#jk-v35-top:hover,
#jk-v35-top:focus-visible,
body.jk-v35-sanpaicho-open #jk-v35-top {
  background: var(--jk-v35-sumi-bg-deep);
  border-color: var(--jk-v35-sumi-border-active);
  outline: none;
}

.jk-v35-temple-title {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  pointer-events: none;
}

.jk-v35-sangou {
  font-size: 10px;
  color: rgba(235, 226, 206, 0.72);
  letter-spacing: 0.06em;
}

.jk-v35-jigou {
  font-size: 12px;
  color: var(--jk-v35-ink-light);
  letter-spacing: 0.1em;
}

/* */
.jk-v35-enso-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  pointer-events: none;
}

.jk-v35-enso-svg {
  width: 18px;
  height: 18px;
  overflow: visible;
}

.jk-v35-enso-stroke {
  fill: none;
  stroke: rgba(235, 226, 206, 0.78);
  stroke-width: 2.1;
  stroke-linecap: round;
  transition: stroke 0.35s var(--jk-v35-ease), filter 0.35s var(--jk-v35-ease);
}

.jk-v35-enso-halo {
  position: absolute;
  inset: -3px;
  border-radius: 50%;
  border: 1px solid var(--jk-v35-kofun-gold);
  opacity: 0;
  pointer-events: none;
}

#jk-v35-top.is-resonating {
  border-color: rgba(216, 181, 108, 0.45);
}

#jk-v35-top.is-resonating .jk-v35-enso-stroke {
  stroke: var(--jk-v35-kofun-gold);
  filter: drop-shadow(0 0 5px var(--jk-v35-kofun-glow));
}

#jk-v35-top.is-resonating .jk-v35-enso-halo {
  animation: jk-v35-enso-ripple 1.05s var(--jk-v35-ease) forwards;
}

@keyframes jk-v35-enso-ripple {
  0% {
    opacity: 0.82;
    transform: scale(0.76);
  }
  100% {
    opacity: 0;
    transform: scale(1.75);
  }
}

/* */
#jk-v35-backdrop {
  position: fixed;
  inset: 0;
  z-index: 9430;
  background: rgba(12, 11, 9, 0.22);
  display: none;
}

body.jk-v35-sanpaicho-open #jk-v35-backdrop {
  display: block;
}

#jk-v35-sanpaicho {
  position: fixed;
  top: calc(max(12px, env(safe-area-inset-top, 12px)) + 42px);
  left: 50%;
  transform: translate3d(-50%, 0, 0);
  z-index: 9440;
  width: min(336px, calc(100vw - 28px));
  padding: 15px 16px 14px;
  box-sizing: border-box;
  border-radius: 14px;
  border: 1px solid var(--jk-v35-washi-border);
  background: var(--jk-v35-washi-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: var(--jk-v35-washi-ink);
  font-family: var(--jk-v35-font-serif);
  box-shadow:
    0 16px 40px rgba(10, 9, 7, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.65);
  display: none;
}

body.jk-v35-sanpaicho-open #jk-v35-sanpaicho {
  display: block;
}

.jk-v35-sheet-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 11px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(38, 32, 24, 0.10);
}

.jk-v35-sheet-title {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.22em;
  color: var(--jk-v35-washi-ink);
}

.jk-v35-sheet-sub {
  font-size: 10.5px;
  color: var(--jk-v35-washi-sub);
  letter-spacing: 0.08em;
}

.jk-v35-landmarks-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
}

.jk-v35-spot-btn {
  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 6px;
  border: 1px solid rgba(38, 32, 24, 0.13);
  border-radius: 8px;
  background: rgba(255, 252, 245, 0.72);
  color: var(--jk-v35-washi-ink);
  font-family: var(--jk-v35-font-serif);
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: 0.08em;
  cursor: pointer;
  transition: background-color 0.18s ease, border-color 0.18s ease;
}

.jk-v35-spot-btn:hover,
.jk-v35-spot-btn:focus-visible {
  background: var(--jk-v35-washi-surface);
  border-color: rgba(38, 32, 24, 0.32);
  outline: none;
}

.jk-v35-spot-btn.is-current {
  background: #25211c;
  border-color: #25211c;
  color: #f4efe4;
}

.jk-v35-sheet-divider {
  height: 1px;
  margin: 11px 0 10px;
  background: rgba(38, 32, 24, 0.10);
}

.jk-v35-sheet-utilities {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.jk-v35-util-btn {
  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 44px;
  padding: 0 10px;
  border: 1px solid rgba(38, 32, 24, 0.16);
  border-radius: 8px;
  background: rgba(238, 231, 216, 0.65);
  color: var(--jk-v35-washi-ink);
  font-family: var(--jk-v35-font-serif);
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: 0.1em;
  cursor: pointer;
  transition: background-color 0.18s ease, border-color 0.18s ease;
}

.jk-v35-util-btn:hover,
.jk-v35-util-btn:focus-visible {
  background: #e3dac7;
  border-color: rgba(38, 32, 24, 0.34);
  outline: none;
}

.jk-v35-shuin-seal {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border: 1px solid var(--jk-v35-shuin-red);
  border-radius: 3px;
  color: var(--jk-v35-shuin-red);
  font-size: 9.5px;
  line-height: 1;
  letter-spacing: 0;
}

/* */
#jk-v35-zenbar {
  position: fixed;
  bottom: max(16px, env(safe-area-inset-bottom, 16px));
  left: 50%;
  transform: translate3d(-50%, 0, 0);
  z-index: 9380;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  padding: 0 8px;
  box-sizing: border-box;
  border-radius: 999px;
  border: 1px solid var(--jk-v35-sumi-border);
  background: var(--jk-v35-sumi-bg);
  backdrop-filter: blur(10px) saturate(1.06);
  -webkit-backdrop-filter: blur(10px) saturate(1.06);
  box-shadow: 0 6px 24px rgba(8, 7, 6, 0.28);
  white-space: nowrap;
  user-select: none;
  -webkit-user-select: none;
  transition:
    opacity 0.28s var(--jk-v35-ease),
    transform 0.28s var(--jk-v35-ease),
    border-color 0.28s var(--jk-v35-ease);
}

body.jk-v35-is-zazen #jk-v35-zenbar {
  border-color: rgba(216, 181, 108, 0.30);
}

.jk-v35-zenbtn {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 58px;
  height: 44px;
  min-height: 44px;
  margin-block: -2px;
  padding: 0 12px;
  box-sizing: border-box;
  border: none;
  border-radius: 999px;
  background: transparent;
  color: var(--jk-v35-ink-light);
  font-family: var(--jk-v35-font-serif);
  font-size: 13px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.12em;
  font-feature-settings: "palt" 1;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: color 0.18s ease, background-color 0.18s ease;
}

.jk-v35-zenbtn:hover,
.jk-v35-zenbtn:focus-visible {
  color: #ffffff;
  background: rgba(255, 248, 232, 0.08);
  outline: none;
}

.jk-v35-zenbtn:active,
.jk-v35-zenbtn.is-pulsing {
  color: var(--jk-v35-kofun-gold);
}

.jk-v35-zenbtn[data-v35-act="zazen"][data-posture-state="zazen"] {
  color: var(--jk-v35-kofun-gold);
}

.jk-v35-zenbtn[hidden] {
  display: none !important;
}

.jk-v35-zendot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 8px;
  color: var(--jk-v35-ink-muted);
  font-size: 12px;
  pointer-events: none;
}

/* */
body.jk-v35-idle:not(.jk-v35-sanpaicho-open) #jk-v35-top,
body.jk-v35-idle:not(.jk-v35-has-proximity):not(.jk-v35-sanpaicho-open) #jk-v35-zenbar {
  opacity: 0.28;
}

body.jk-v35-idle #jk-v35-top:hover,
body.jk-v35-idle #jk-v35-zenbar:hover {
  opacity: 1;
}

/* */
body.jk-v35-has-proximity #jk-v35-zenbar {
  display: none !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

#jk-v35-tanzaku {
  position: fixed;
  bottom: max(20px, calc(env(safe-area-inset-bottom, 16px) + 4px));
  left: 50%;
  transform: translate3d(-50%, 0, 0);
  z-index: 9400;
  display: none;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 6px;
  box-sizing: border-box;
  border-radius: 999px;
  border: 1px solid rgba(38, 32, 24, 0.22);
  background: var(--jk-v35-washi-bg);
  color: var(--jk-v35-washi-ink);
  font-family: var(--jk-v35-font-serif);
  box-shadow:
    0 8px 26px rgba(10, 9, 7, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.72);
  white-space: nowrap;
}

body.jk-v35-has-proximity #jk-v35-tanzaku {
  display: inline-flex !important;
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
}

.jk-v35-tanzaku-btn {
  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 96px;
  min-height: 44px;
  padding: 0 18px;
  border: none;
  border-radius: 999px;
  background: transparent;
  color: var(--jk-v35-washi-ink);
  font-family: var(--jk-v35-font-serif);
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  font-feature-settings: "palt" 1;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background-color 0.18s ease, color 0.18s ease;
}

.jk-v35-tanzaku-btn.is-compact {
  min-width: 72px;
  padding: 0 14px;
}

.jk-v35-tanzaku-btn:hover,
.jk-v35-tanzaku-btn:focus-visible {
  background: rgba(38, 32, 24, 0.06);
  outline: none;
}

.jk-v35-tanzaku-sep {
  color: rgba(38, 32, 24, 0.30);
  font-size: 13px;
  padding: 0 2px;
  user-select: none;
  pointer-events: none;
}

@media (max-width: 390px) {
  #jk-v35-zenbar {
    padding: 0 4px;
  }
  .jk-v35-zenbtn {
    min-width: 52px;
    padding: 0 9px;
    font-size: 12.5px;
    letter-spacing: 0.08em;
  }
}

/* */

/* Zen Bar & Sanpaicho & Proximity Tanzaku Blessing Accents */
#jk-v35-zenbar .jk-v35-zenbtn-blessing {
  color: #e4cc92;
  letter-spacing: 0.08em;
}

#jk-v35-zenbar .jk-v35-zenbtn-blessing:hover,
#jk-v35-zenbar .jk-v35-zenbtn-blessing:focus-visible {
  color: #f5e4b8;
  text-shadow: 0 0 12px rgba(200, 164, 93, 0.36);
}

#jk-v35-sanpaicho .jk-v35-sheet-utilities {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

#jk-v35-btn-blessing .jk-v35-blessing-seal {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin-right: 5px;
  border-radius: 50%;
  border: 1px solid rgba(200, 164, 93, 0.62);
  background: rgba(200, 164, 93, 0.14);
  color: #e6cd93;
  font-size: 10px;
  line-height: 1;
}

#jk-v35-tanzaku .jk-v35-tanzaku-sep {
  margin: 0 6px;
  color: rgba(38, 32, 24, 0.28);
  font-size: 12px;
  user-select: none;
  pointer-events: none;
}

#jk-v35-tanzaku .jk-v35-tanzaku-blessing {
  color: #6b4714 !important;
  font-weight: 600;
  letter-spacing: 0.12em;
}

/* Blessing Backdrop */
#jk-blessing-backdrop {
  position: fixed;
  inset: 0;
  z-index: 2147483638;
  display: none;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
  background: radial-gradient(circle at 50% 62%, rgba(10, 12, 11, 0.34), rgba(6, 7, 7, 0.62));
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  transition: opacity 0.22s ease;
}

#jk-blessing-backdrop.is-open {
  display: block;
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
}

#jk-v35-btn-blessing .jk-v35-blessing-seal::before { content: "祈"; }

#jk-blessing-modal {
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 2147483639;
  width: min(440px, calc(100vw - 32px));
  max-height: min(86vh, 620px);
  overflow-y: auto;
  box-sizing: border-box;
  padding: 26px 24px 20px;
  background: linear-gradient(180deg, rgba(18, 20, 19, 0.96) 0%, rgba(16, 18, 17, 0.94) 100%);
  backdrop-filter: blur(18px) saturate(125%);
  -webkit-backdrop-filter: blur(18px) saturate(125%);
  border: 1px solid rgba(200, 164, 93, 0.26);
  border-radius: 14px;
  box-shadow:
    0 24px 64px rgba(0, 0, 0, 0.68),
    0 0 0 1px rgba(255, 255, 255, 0.03) inset,
    0 1px 0 rgba(200, 164, 93, 0.16) inset;
  color: #ece6da;
  font-family: "Shippori Mincho", "Noto Serif JP", "Yu Mincho", "Hiragino Mincho ProN", serif;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate(-50%, -47%) scale(0.97);
  transition:
    opacity 0.34s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.38s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0.34s linear;
}

#jk-blessing-modal.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translate(-50%, -50%) scale(1);
}

.jk-blessing-head {
  padding: 0 32px 16px;
  text-align: center;
  border-bottom: 1px solid rgba(200, 164, 93, 0.15);
  margin-bottom: 18px;
}

.jk-blessing-title {
  margin: 0;
  font-size: 19px;
  font-weight: 500;
  letter-spacing: 0.18em;
  line-height: 1.4;
  color: #f3ede0;
  text-shadow: 0 1px 12px rgba(200, 164, 93, 0.18);
}

.jk-blessing-sub {
  margin: 6px 0 0;
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.08em;
  line-height: 1.6;
  color: rgba(236, 230, 218, 0.64);
}

.jk-blessing-close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 50%;
  color: rgba(236, 230, 218, 0.66);
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  transition:
    color 0.22s ease,
    border-color 0.22s ease,
    background-color 0.22s ease,
    transform 0.22s ease;
}

.jk-blessing-close:hover {
  color: #c8a45d;
  border-color: rgba(200, 164, 93, 0.42);
  background: rgba(200, 164, 93, 0.08);
}

.jk-blessing-close:focus-visible {
  outline: none;
  border-color: #c8a45d;
  box-shadow: 0 0 0 2px rgba(200, 164, 93, 0.28);
}

.jk-blessing-wishes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 16px;
}

.jk-blessing-wish {
  appearance: none;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 8px 10px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
  color: rgba(236, 230, 218, 0.82);
  font-family: inherit;
  font-size: 13px;
  letter-spacing: 0.12em;
  line-height: 1.3;
  text-align: center;
  cursor: pointer;
  transition:
    color 0.24s ease,
    background-color 0.24s ease,
    border-color 0.24s ease,
    box-shadow 0.24s ease,
    transform 0.18s ease;
}

.jk-blessing-wish:hover {
  color: #f4efe3;
  background: rgba(200, 164, 93, 0.07);
  border-color: rgba(200, 164, 93, 0.32);
}

.jk-blessing-wish:active {
  transform: scale(0.985);
}

.jk-blessing-wish.is-selected {
  color: #f6eedc;
  background: linear-gradient(180deg, rgba(200, 164, 93, 0.18) 0%, rgba(200, 164, 93, 0.09) 100%);
  border-color: #c8a45d;
  box-shadow:
    0 0 16px rgba(200, 164, 93, 0.16),
    0 0 0 1px rgba(200, 164, 93, 0.22) inset;
}

.jk-blessing-wish:focus-visible {
  outline: none;
  border-color: #c8a45d;
  box-shadow: 0 0 0 2px rgba(200, 164, 93, 0.3);
}

.jk-blessing-input-row {
  position: relative;
  display: flex;
  align-items: center;
  margin-bottom: 16px;
}

.jk-blessing-input {
  width: 100%;
  box-sizing: border-box;
  padding: 11px 54px 11px 14px;
  background: rgba(8, 10, 9, 0.62);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 9px;
  color: #f2ece0;
  font-family: inherit;
  font-size: 13.5px;
  letter-spacing: 0.06em;
  line-height: 1.5;
  transition:
    border-color 0.24s ease,
    background-color 0.24s ease,
    box-shadow 0.24s ease;
}

.jk-blessing-input::placeholder {
  color: rgba(236, 230, 218, 0.36);
  letter-spacing: 0.05em;
}

.jk-blessing-input:hover {
  border-color: rgba(200, 164, 93, 0.26);
}

.jk-blessing-input:focus {
  outline: none;
  background: rgba(10, 12, 11, 0.82);
  border-color: rgba(200, 164, 93, 0.62);
  box-shadow: 0 0 0 3px rgba(200, 164, 93, 0.12);
}

.jk-blessing-count {
  position: absolute;
  right: 12px;
  bottom: 11px;
  font-family: "Inter", "Hiragino Sans", sans-serif;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: rgba(200, 164, 93, 0.62);
  pointer-events: none;
  user-select: none;
}

.jk-blessing-submit {
  appearance: none;
  width: 100%;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 11px 18px;
  background: linear-gradient(180deg, rgba(200, 164, 93, 0.2) 0%, rgba(200, 164, 93, 0.1) 100%);
  border: 1px solid rgba(200, 164, 93, 0.52);
  border-radius: 9px;
  box-shadow:
    0 6px 20px rgba(0, 0, 0, 0.34),
    0 1px 0 rgba(255, 244, 214, 0.14) inset;
  color: #f5eedf;
  font-family: inherit;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.18em;
  cursor: pointer;
  transition:
    background 0.26s ease,
    border-color 0.26s ease,
    box-shadow 0.26s ease,
    transform 0.18s ease,
    opacity 0.22s ease;
}

.jk-blessing-submit:hover:not(:disabled) {
  background: linear-gradient(180deg, rgba(200, 164, 93, 0.28) 0%, rgba(200, 164, 93, 0.15) 100%);
  border-color: #c8a45d;
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.42),
    0 0 18px rgba(200, 164, 93, 0.2);
}

.jk-blessing-submit:active:not(:disabled) {
  transform: translateY(1px);
}

.jk-blessing-submit:focus-visible {
  outline: none;
  border-color: #c8a45d;
  box-shadow: 0 0 0 2px rgba(200, 164, 93, 0.36);
}

.jk-blessing-submit:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.jk-blessing-submit-enso {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #c8a45d;
  font-size: 15px;
  line-height: 1;
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.jk-blessing-submit-enso:empty {
  width: 15px;
  height: 15px;
  border-radius: 50%;
  border: 1.5px solid #c8a45d;
  border-right-color: rgba(200, 164, 93, 0.32);
  box-sizing: border-box;
}

.jk-blessing-submit:hover:not(:disabled) .jk-blessing-submit-enso {
  transform: rotate(45deg) scale(1.06);
}

.jk-blessing-foot {
  margin: 14px 0 0;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  text-align: center;
  font-size: 11.5px;
  letter-spacing: 0.06em;
  line-height: 1.55;
  color: rgba(236, 230, 218, 0.48);
}

#jk-blessing-banner {
  position: fixed;
  top: max(62px, env(safe-area-inset-top, 0px) + 54px);
  left: 50%;
  z-index: 2147483640;
  width: max-content;
  max-width: min(420px, calc(100vw - 28px));
  box-sizing: border-box;
  padding: 13px 22px;
  background: rgba(16, 18, 17, 0.94);
  backdrop-filter: blur(16px) saturate(120%);
  -webkit-backdrop-filter: blur(16px) saturate(120%);
  border: 1px solid rgba(200, 164, 93, 0.36);
  border-radius: 999px;
  box-shadow:
    0 16px 42px rgba(0, 0, 0, 0.58),
    0 0 22px rgba(200, 164, 93, 0.12),
    0 1px 0 rgba(200, 164, 93, 0.18) inset;
  text-align: center;
  font-family: "Shippori Mincho", "Noto Serif JP", "Yu Mincho", "Hiragino Mincho ProN", serif;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate(-50%, -14px) scale(0.98);
  transition:
    opacity 0.12s ease,
    transform 0.14s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 0.12s;
}

#jk-blessing-banner.is-visible {
  opacity: 1 !important;
  visibility: visible !important;
  transform: translate(-50%, 0) scale(1);
  transition:
    opacity 0.12s ease,
    transform 0.14s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 0s;
}

.jk-blessing-banner-main {
  margin: 0;
  font-size: 13.5px;
  font-weight: 500;
  letter-spacing: 0.12em;
  line-height: 1.45;
  color: #f4eee1;
}

.jk-blessing-banner-note {
  margin: 3px 0 0;
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.08em;
  line-height: 1.4;
  color: #c8a45d;
}

@media (max-width: 600px) {
  #jk-blessing-modal {
    top: 50%;
    bottom: auto;
    width: calc(100vw - 24px);
    max-height: min(80vh, calc(100dvh - 40px));
    padding: 20px 18px 18px;
    border-radius: 16px;
    transform: translate(-50%, -50%) scale(0.98);
  }

  #jk-blessing-modal.is-open {
    transform: translate(-50%, -50%) scale(1);
  }

  .jk-blessing-head {
    padding: 0 28px 14px;
    margin-bottom: 14px;
  }

  .jk-blessing-title {
    font-size: 17px;
    letter-spacing: 0.14em;
  }

  .jk-blessing-sub {
    font-size: 11.5px;
  }

  .jk-blessing-close {
    top: 13px;
    right: 13px;
    width: 30px;
    height: 30px;
  }

  .jk-blessing-wishes {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
  }

  .jk-blessing-wish {
    min-height: 38px;
    padding: 7px 8px;
    font-size: 12.5px;
    letter-spacing: 0.09em;
  }

  .jk-blessing-input {
    font-size: 16px;
    padding: 10px 50px 10px 12px;
  }

  .jk-blessing-submit {
    min-height: 44px;
    font-size: 13.5px;
    letter-spacing: 0.14em;
  }

  #jk-blessing-banner {
    top: max(60px, env(safe-area-inset-top, 0px) + 52px);
    max-width: calc(100vw - 24px);
    padding: 11px 18px;
    border-radius: 14px;
  }

  .jk-blessing-banner-main {
    font-size: 12.5px;
    letter-spacing: 0.09em;
  }

  .jk-blessing-banner-note {
    font-size: 10.5px;
  }
}

/* V38.2h: Hide legacy dark .incense-note card when V35 Washi Tanzaku is active */
body.jk-v35-minimal-hud .sansa-game .incense-note,
.sansa-game .incense-note,
.incense-note {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* V38.2k: High-legibility Sumi contrast on top temple nameplate pill across bright skies & foliage */
#jk-v35-top {
  background: rgba(18, 16, 14, 0.86);
  border-color: rgba(214, 190, 138, 0.34);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.65);
}
body.jk-v35-idle:not(.jk-v35-sanpaicho-open) #jk-v35-top {
  opacity: 0.84;
}
/* V38.2n: Keep legacy #kaiun-cat-pet-btn [C] box parked off-screen in V35 mode even when seated (preserves walking Washi Tanzaku proxy) */
body.jk-v35-ready #kaiun-cat-pet-btn {
  position: fixed !important;
  left: -9999px !important;
  top: -9999px !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* V39: Ultra-Simple Mobile-First Ema Composer (Hinoki & Washi Craftsmanship) */
#jk-simple-ema-backdrop {
  position: fixed;
  inset: 0;
  z-index: 12500;
  background: rgba(14, 11, 9, 0.74);
  display: none;
  align-items: center;
  justify-content: center;
  padding: max(8px, env(safe-area-inset-top, 0px)) 10px max(8px, env(safe-area-inset-bottom, 0px));
  box-sizing: border-box;
}
#jk-simple-ema-backdrop.is-open {
  display: flex;
}
#jk-simple-ema-modal {
  width: min(520px, 100%);
  max-height: calc(100dvh - 16px);
  overflow-y: auto;
  box-sizing: border-box;
  border-radius: 10px;
  border: 2px solid #b58d59;
  background: #f8f2e4;
  color: #1f1812;
  padding: 12px 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  box-shadow: 0 18px 44px rgba(0, 0, 0, 0.48);
}
.jk-sema-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.jk-sema-title {
  margin: 0;
  font-family: "Shippori Mincho", "Zen Old Mincho", "Hiragino Mincho ProN", serif;
  font-size: 1.08rem;
  font-weight: 700;
  color: #1f1812;
  letter-spacing: 0.04em;
}
.jk-sema-close {
  min-width: 48px;
  min-height: 48px;
  padding: 0 12px;
  border-radius: 8px;
  border: 1px solid #c5a87a;
  background: #efe5cf;
  color: #3a2a1c;
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  touch-action: manipulation;
}
.jk-sema-stage {
  position: relative;
  width: 100%;
}
#jk-simple-ema-cv {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  max-height: min(220px, 30dvh);
  background: #fcf8ee;
  border: 2px solid #c59b68;
  border-radius: 6px;
  touch-action: none;
  cursor: crosshair;
  user-select: none;
  -webkit-user-select: none;
  box-sizing: border-box;
}
@media (min-width: 700px) {
  #jk-simple-ema-cv {
    max-height: 290px;
  }
}
.jk-sema-hint {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px;
  text-align: center;
  pointer-events: none;
  color: #8c775c;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.jk-sema-hint.is-hidden {
  display: none;
}
.jk-sema-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
}
.jk-sema-tool-group {
  display: flex;
  align-items: center;
  gap: 5px;
}
.jk-sema-actions {
  margin-left: auto;
}
.jk-sema-ink,
.jk-sema-size,
.jk-sema-action {
  min-height: 48px;
  min-width: 48px;
  padding: 6px 10px;
  border-radius: 8px;
  border: 1.5px solid #c8b08a;
  background: #fcf8ee;
  color: #2c2117;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  touch-action: manipulation;
  box-sizing: border-box;
}
.jk-sema-ink.is-active,
.jk-sema-size.is-active {
  border-color: #9e2218;
  background: #f2e4ce;
  box-shadow: inset 0 0 0 1px #9e2218;
}
.jk-sema-action:disabled {
  opacity: 0.42;
  cursor: not-allowed;
}
.jk-sema-dot {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--sema-dot, #1e1712);
  border: 1px solid rgba(0, 0, 0, 0.25);
  flex: 0 0 auto;
}
.jk-sema-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.jk-sema-chip {
  flex: 1 1 auto;
  min-height: 44px;
  padding: 6px 8px;
  border-radius: 6px;
  border: 1px solid #cbb38b;
  background: #f4ecda;
  color: #3d2c1b;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  touch-action: manipulation;
  white-space: nowrap;
}
.jk-sema-chip.is-selected {
  background: #a82419;
  border-color: #8f1d13;
  color: #fffdf7;
}
.jk-sema-inputs {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr);
  gap: 6px;
}
@media (max-width: 440px) {
  .jk-sema-inputs {
    grid-template-columns: minmax(0, 1fr);
  }
}
#jk-simple-ema-wish,
#jk-simple-ema-author {
  width: 100%;
  min-height: 44px;
  padding: 8px 10px;
  border-radius: 6px;
  border: 1.5px solid #c5a87a;
  background: #fffdf8;
  color: #1f1812;
  font-size: 16px !important;
  box-sizing: border-box;
}
.jk-sema-msg {
  min-height: 18px;
  font-size: 13px;
  font-weight: 600;
  color: #a82419;
}
.jk-sema-submit {
  width: 100%;
  min-height: 50px;
  padding: 10px 16px;
  border-radius: 8px;
  border: 1.5px solid #7d1911;
  background: #a82419;
  color: #fffdf7;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.06em;
  cursor: pointer;
  touch-action: manipulation;
}
.jk-sema-submit:disabled {
  opacity: 0.6;
  cursor: wait;
}
