.cave-path-page {
  direction: rtl;
  color: #e8e1d2;
  font-family: Cairo, sans-serif;
}

.cave-path-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 0 4px 12px;
  border-bottom: 1px solid #5f1717;
}

.cave-path-header h2 { margin: 0; color: #e3c16f; font-size: 1.35rem; }
.cave-path-header p { margin: 3px 0 0; color: #9d978b; font-size: .82rem; }
.cave-path-cycle { color: #c9aa61; font-size: .8rem; white-space: nowrap; }

.cave-path-map {
  position: relative;
  width: 100%;
  margin-top: 14px;
  aspect-ratio: 1692 / 929;
  overflow: hidden;
  border: 1px solid #40372a;
  background: #07090b;
  box-shadow: inset 0 0 70px #000, 0 12px 34px rgba(0,0,0,.45);
}

.cave-world-travel-map {
  width: min(100%, 600px);
  aspect-ratio: 4 / 3;
  margin: 14px auto 0;
  overflow: hidden;
  background: #050607;
}

.cave-world-travel-map > img {
  object-fit: contain;
  image-rendering: auto;
}

.travel-city-node {
  position: absolute;
  z-index: 4;
  transform: translate(-50%, -50%);
  width: clamp(24px, 5.2%, 34px);
  aspect-ratio: 1;
  padding: 0;
  border: 1px solid rgba(245,210,119,.88);
  border-radius: 50%;
  background: rgba(8,7,5,.84);
  color: #e8c768;
  font: 700 clamp(.55rem, 1.4vw, .72rem) Cairo, sans-serif;
  cursor: pointer;
  box-shadow: 0 0 0 3px rgba(0,0,0,.45), 0 0 12px rgba(224,174,54,.28);
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
}

.travel-city-node:hover,
.travel-city-node.is-selected {
  transform: translate(-50%, -50%) scale(1.14);
  border-color: #fff0ae;
  color: #fff0ae;
  box-shadow: 0 0 0 4px rgba(0,0,0,.55), 0 0 20px rgba(245,188,49,.72);
}

.travel-city-node.is-active-city::after {
  content: '';
  position: absolute;
  inset: -6px;
  border: 1px solid rgba(83,201,225,.65);
  border-radius: 50%;
  animation: caveNodePulse 1.8s ease-in-out infinite;
}

.cave-travel-selection {
  width: min(100%, 600px);
  min-height: 58px;
  margin: 0 auto;
  padding: 9px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid #40372a;
  border-top: 0;
  background: #0b0907;
  box-sizing: border-box;
}

.cave-travel-selection div { min-width: 0; }
.cave-travel-selection strong { display: block; color: #e2c36f; font-size: .88rem; }
.cave-travel-selection div span { display: block; color: #999185; font-size: .72rem; }
.cave-travel-selection button {
  flex: 0 0 auto;
  padding: 7px 13px;
  border: 1px solid #765c2b;
  background: #24130c;
  color: #edca76;
  font: 700 .72rem Cairo, sans-serif;
  cursor: pointer;
}
.cave-city-preview-label { color: #625e58; font-size: .7rem; white-space: nowrap; }

.cave-path-map > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cave-path-map > img.cave-map-hover-variant {
  z-index: 1;
  opacity: 0;
  clip-path: circle(var(--hover-radius) at var(--hover-x) var(--hover-y));
  transition: opacity 320ms ease-out;
  pointer-events: none;
}

.cave-path-map > img.cave-map-hover-variant.is-active { opacity: 1; }
.cave-encounter-node.is-hovering .node-ring { transform: translateY(-3px) scale(1.04); }
.cave-encounter-node .node-ring { transition: transform 320ms ease-out, border-color 180ms ease, box-shadow 180ms ease; }

@media (prefers-reduced-motion: reduce) {
  .cave-path-map > img.cave-map-hover-variant,
  .cave-encounter-node .node-ring { transition: none; }
}

.cave-region-choice {
  position: absolute;
  width: min(230px, 22%);
  min-width: 130px;
  padding: 10px 12px;
  border: 1px solid #9b762e;
  background: rgba(7,6,5,.88);
  color: #efd58f;
  font: 700 clamp(.72rem, 1.25vw, 1rem) Cairo, sans-serif;
  text-align: center;
  cursor: pointer;
  box-shadow: 0 5px 18px #000, inset 0 0 15px rgba(180,128,35,.12);
}

.cave-region-choice small { display: block; margin-top: 2px; color: #a9a195; font-weight: 500; }
.cave-region-choice:hover:not(:disabled) { border-color: #f0c75d; box-shadow: 0 0 22px rgba(226,174,50,.42); }
.cave-region-choice:disabled { filter: grayscale(1); color: #6d6962; border-color: #49443c; cursor: not-allowed; }
.cave-region-choice.region-one { left: 13%; top: 30%; }
.cave-region-choice.region-two { left: 39%; top: 67%; }

.cave-back {
  border: 1px solid #736039;
  background: #160d09;
  color: #d7b968;
  padding: 8px 15px;
  font: 700 .8rem Cairo, sans-serif;
  cursor: pointer;
}

.cave-encounter-node {
  position: absolute;
  transform: translate(-50%, -50%);
  width: clamp(76px, 9vw, 124px);
  border: 0;
  background: transparent;
  color: #fff;
  cursor: pointer;
  text-align: center;
  font-family: Cairo, sans-serif;
  z-index: 3;
}

.cave-encounter-node .node-ring {
  width: clamp(48px, 5vw, 70px);
  aspect-ratio: 1;
  margin: auto;
  border: 2px solid #c89a39;
  border-radius: 50%;
  background: rgba(8,6,5,.76);
  box-shadow: 0 0 0 4px rgba(0,0,0,.55), 0 0 18px rgba(222,167,47,.42);
  display: grid;
  place-items: center;
  font-size: clamp(1rem, 2vw, 1.6rem);
}

.cave-encounter-node .node-name {
  display: block;
  margin-top: 6px;
  padding: 3px 6px;
  border: 1px solid #5d4c2b;
  background: rgba(5,4,3,.9);
  color: #f1d685;
  font-size: clamp(.58rem, .85vw, .76rem);
  line-height: 1.45;
  white-space: nowrap;
}

.cave-encounter-node:hover:not(:disabled) .node-ring,
.cave-encounter-node.is-current .node-ring { border-color: #ffe49a; box-shadow: 0 0 0 4px rgba(0,0,0,.65), 0 0 30px #c37d17; }
.cave-encounter-node.is-current .node-ring { animation: caveNodePulse 1.8s ease-in-out infinite; }
.cave-encounter-node.is-complete .node-ring { border-color: #627557; color: #aaca95; box-shadow: 0 0 0 4px rgba(0,0,0,.55), 0 0 12px rgba(92,137,69,.32); }
.cave-encounter-node.is-locked { filter: grayscale(1) brightness(.48); cursor: pointer; }

@keyframes caveNodePulse { 50% { box-shadow: 0 0 0 6px rgba(136,68,16,.22), 0 0 34px #dc9c2a; } }

.cave-battle-modal {
  position: fixed;
  inset: 0;
  z-index: 70000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(0,0,0,.88);
}

.cave-battle-modal.is-open { display: flex; }
.cave-battle-shell { width: min(940px, 96vw); max-height: 90vh; overflow: auto; border: 1px solid #713030; background: #0b0909; box-shadow: 0 18px 70px #000; }
.cave-battle-title { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid #3d2921; color: #e0bd68; }
.cave-battle-title button { border: 0; background: transparent; color: #aaa; font-size: 1.2rem; cursor: pointer; }
.cave-battle-body { display: grid; grid-template-columns: 190px 1fr; min-height: 390px; }
.cave-enemy-card { padding: 16px; border-left: 1px solid #30251f; text-align: center; background: #080707; }
.cave-enemy-card img { width: 126px; height: 126px; object-fit: cover; border: 1px solid #59534d; }
.cave-enemy-card h3 { margin: 8px 0 2px; color: #e6d0a1; font-size: 1rem; }
.cave-enemy-card div { color: #928b80; font-size: .75rem; }
.cave-battle-log { padding: 15px 18px; color: #c9c4bb; font-size: .8rem; line-height: 1.9; overflow-y: auto; max-height: 560px; }
.cave-log-round { margin-top: 8px; color: #d2aa4d; border-bottom: 1px solid #34271d; font-weight: 700; }
.cave-result { margin-top: 14px; padding: 13px; border: 1px solid #4d4031; text-align: center; background: #090706; }
.cave-result.victory { border-color: #366d41; }
.cave-result.defeat { border-color: #7b2828; }
.cave-result h3 { margin: 0 0 8px; }
.cave-result button { margin-top: 12px; border: 1px solid #8d682b; background: #24130c; color: #efca71; padding: 8px 20px; font: 700 .8rem Cairo, sans-serif; cursor: pointer; }

@media (max-width: 700px) {
  .cave-path-header { align-items: flex-start; }
  .cave-path-map { aspect-ratio: 4 / 3; }
  .cave-path-map > img { object-fit: cover; }
  .cave-region-choice { min-width: 105px; padding: 7px; }
  .cave-battle-body { grid-template-columns: 1fr; }
  .cave-enemy-card { border-left: 0; border-bottom: 1px solid #30251f; }
  .cave-enemy-card img { width: 82px; height: 82px; }
}

/* Party combat report */
.cave-party-report { width:min(1180px,96vw); max-height:94vh; direction:rtl; font-family:Cairo,sans-serif; }
.cave-report-header { display:flex; align-items:center; justify-content:space-between; padding:14px 18px; border-bottom:1px solid #4c231f; background:#100b0a; }
.cave-report-header small,.cave-report-header span { color:#8f867a; font-size:.72rem; }
.cave-report-header h2 { color:#e2bd66; font-size:1.15rem; margin:2px 0; }
.cave-report-header button { border:0; background:transparent; color:#aaa; font-size:1.4rem; cursor:pointer; }
.cave-report-versus { display:grid; grid-template-columns:1fr 54px 310px; gap:12px; align-items:center; padding:14px 18px; border-bottom:1px solid #2b211e; background:#080707; }
.cave-report-versus h3,.cave-report-columns h3 { margin:0 0 8px; color:#cdb677; font-size:.82rem; }
.cave-party-roster { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:7px; }
.cave-party-unit { min-width:0; display:flex; gap:7px; align-items:center; padding:6px; border:1px solid #302925; background:#0d0b0a; }
.cave-party-unit.is-dead { filter:grayscale(1); opacity:.55; }
.cave-party-unit img { width:42px; height:42px; object-fit:cover; border:1px solid #66584a; }
.cave-party-unit>div { min-width:0; flex:1; display:grid; }
.cave-party-unit strong { color:#e4ded4; font-size:.72rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cave-party-unit small,.cave-party-unit em { color:#817a71; font-size:.61rem; font-style:normal; }
.cave-party-unit span { height:4px; background:#261515; margin:3px 0; overflow:hidden; }
.cave-party-unit span i { display:block; height:100%; background:#a72d2d; }
.cave-report-mark { color:#a83c35; font-weight:900; text-align:center; }
.cave-monster-summary { display:flex; align-items:center; gap:10px; }
.cave-monster-summary img { width:76px; height:76px; object-fit:contain; border:1px solid #66564c; background:#050505; }
.cave-monster-summary h3 { color:#e6d0a1; margin:0 0 4px; font-size:.9rem; }
.cave-monster-summary span { color:#7f776e; font-size:.65rem; }
.cave-report-columns { display:grid; grid-template-columns:320px 1fr; min-height:470px; }
.cave-report-columns>aside { padding:14px; border-left:1px solid #30251f; background:#080707; overflow:auto; max-height:62vh; }
.cave-report-columns>main { min-width:0; display:flex; flex-direction:column; }
.cave-combat-stats { display:grid; grid-template-columns:1fr 1fr; gap:5px; }
.cave-combat-stats div { display:flex; justify-content:space-between; gap:8px; padding:5px 7px; border:1px solid #28231f; background:#0d0b0a; font-size:.66rem; }
.cave-combat-stats span { color:#8e877d; }.cave-combat-stats b { color:#ddd1bd; }
.cave-traits { margin-top:12px; }.cave-traits h4 { color:#aa9566; font-size:.72rem; margin:0 0 6px; }
.cave-trait { padding:7px; margin-top:5px; border-right:2px solid #705d3a; background:#100e0c; }
.cave-trait.active { border-color:#8b3d35; }.cave-trait.special { border-color:#76518b; }
.cave-trait b,.cave-trait span { display:block; }.cave-trait b { color:#d8c18e; font-size:.67rem; }.cave-trait span { color:#8e877d; font-size:.61rem; line-height:1.55; }
.cave-log-toolbar { display:flex; align-items:center; justify-content:space-between; padding:10px 15px; border-bottom:1px solid #2d2521; }
.cave-log-toolbar h3 { margin:0; }.cave-log-toolbar span { color:#8e877d; font-size:.68rem; }
.cave-party-log { flex:1; max-height:390px; padding:10px 16px; background:#070606; }
.cave-party-log>div:not(.cave-log-round) { padding:3px 7px; margin:2px 0; border-right:2px solid #342823; background:#0c0a09; }
.cave-log-wait { text-align:center; color:#a58b59; padding:80px 10px!important; }
.cave-log-skill { color:#b78acb!important; }.cave-log-control { color:#e0a84b!important; }.cave-log-heal { color:#58b978!important; }
.cave-result { margin:10px 14px 14px; }.cave-result-numbers { display:flex; justify-content:center; gap:18px; flex-wrap:wrap; }
.cave-result-numbers span { color:#928b80; font-size:.72rem; }.cave-result-numbers b { color:#e1c16c; margin-right:4px; }
.cave-result p,.cave-result small { color:#8f887c; font-size:.68rem; }
@media(max-width:900px){.cave-report-versus{grid-template-columns:1fr}.cave-report-mark{display:none}.cave-party-roster{grid-template-columns:1fr 1fr}.cave-report-columns{grid-template-columns:1fr}.cave-report-columns>aside{border-left:0;border-bottom:1px solid #30251f;max-height:none}.cave-party-log{max-height:330px}}
@media(max-width:520px){.cave-party-roster{grid-template-columns:1fr}.cave-report-header span{display:none}.cave-combat-stats{grid-template-columns:1fr 1fr}}

/* War-table cave report theme */
.cave-war-report {
  width: min(1220px, 97vw);
  max-height: 94vh;
  overflow: auto;
  direction: rtl;
  color: #d7d0c5;
  border: 1px solid #6e2926;
  background: #080808;
  box-shadow: 0 24px 90px #000, inset 0 0 0 1px #201513;
  font-family: Cairo, sans-serif;
}
.cave-war-masthead { min-height: 74px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:18px; padding:11px 18px; border-bottom:1px solid #6e2926; background:linear-gradient(180deg,#17100e,#0b0908); }
.cave-war-masthead button { justify-self:start; width:34px; height:34px; border:1px solid #49302b; background:#0b0908; color:#a79b8d; font:700 1.25rem Cairo,sans-serif; cursor:pointer; }
.cave-war-masthead button:hover { color:#fff; border-color:#9e3a33; background:#351311; }
.cave-war-breadcrumb { display:grid; justify-self:end; text-align:right; }.cave-war-breadcrumb span,.cave-war-title small { color:#8c7661; font-size:.62rem; }.cave-war-breadcrumb b { color:#b5aa9c; font-size:.72rem; }
.cave-war-title { text-align:center; min-width:240px; }.cave-war-title h2 { margin:0; color:#e1bb69; font-size:1.25rem; }.cave-war-title small { letter-spacing:0; }
.cave-war-stage { display:grid; grid-template-columns:270px 1fr; min-height:185px; border-bottom:1px solid #29211d; background:radial-gradient(circle at 14% 50%,rgba(123,31,27,.17),transparent 30%),#0a0908; }
.cave-war-enemy { position:relative; display:grid; grid-template-columns:90px 1fr; grid-template-rows:auto auto auto; align-content:center; column-gap:12px; padding:18px; border-left:1px solid #38241f; }
.cave-war-rank { position:absolute; top:8px; right:9px; color:#80332d; font:800 .55rem Arial,sans-serif; }
.cave-war-portrait { grid-row:1/4; width:90px; height:112px; display:flex; align-items:flex-end; justify-content:center; overflow:hidden; border-bottom:2px solid #8f342e; background:linear-gradient(180deg,transparent,#1f0c0b); }
.cave-war-portrait img { max-width:100%; max-height:100%; object-fit:contain; filter:drop-shadow(0 8px 9px #000); }
.cave-war-enemy h3 { align-self:end; margin:0; color:#eee5d8; font-size:.92rem; }.cave-war-enemy p { margin:2px 0; color:#b39161; font-size:.68rem; }.cave-war-enemy small { align-self:start; color:#6f6962; font-size:.58rem; line-height:1.5; }
.cave-war-formation { padding:18px 20px; display:flex; flex-direction:column; justify-content:center; }
.cave-war-formation-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:9px; color:#9f9588; font-size:.66rem; }.cave-war-formation-head b { color:#c99e52; }
.cave-war-roster { grid-template-columns:repeat(4,minmax(0,1fr)); }
.cave-war-roster .cave-party-unit { position:relative; min-height:70px; padding:8px; border:0; border-top:1px solid #46382d; border-bottom:1px solid #241d19; background:linear-gradient(90deg,#100e0c,#0a0908); }
.cave-war-roster .cave-party-unit::before { content:""; position:absolute; right:0; top:0; bottom:0; width:2px; background:#8c312c; }
.cave-war-roster .cave-party-unit img { width:52px; height:52px; border:0; border-bottom:1px solid #85673c; background:#050505; }
.cave-war-order { display:flex; align-items:center; gap:8px; margin-top:9px; color:#625d57; font-size:.56rem; }.cave-war-order i { height:1px; flex:1; background:#28221e; }
.cave-war-strip { min-height:36px; display:flex; align-items:center; gap:18px; padding:0 16px; border-bottom:1px solid #35251f; background:#120d0b; color:#7f766d; font-size:.6rem; }
.cave-war-strip span::before { content:""; display:inline-block; width:4px; height:4px; margin-left:6px; background:#81302b; transform:rotate(45deg); }.cave-war-strip b { margin-right:auto; color:#d1aa5b; }
.cave-war-grid { display:grid; grid-template-columns:330px 1fr; min-height:500px; }
.cave-war-dossier { padding:15px; border-left:1px solid #30231e; background:#090807; }
.cave-war-chronicle { min-width:0; display:flex; flex-direction:column; padding:15px 17px 14px; background:#070707; }
.cave-war-section-title { display:flex; align-items:center; gap:8px; margin-bottom:10px; }.cave-war-section-title span { color:#8c312c; font:800 .58rem Arial,sans-serif; }.cave-war-section-title h3 { margin:0; color:#c9bba7; font-size:.76rem; }
.cave-war-dossier .cave-combat-stats { grid-template-columns:repeat(2,1fr); gap:0; border-top:1px solid #312923; border-right:1px solid #312923; }
.cave-war-dossier .cave-combat-stats div { border:0; border-left:1px solid #312923; border-bottom:1px solid #312923; padding:6px 8px; background:#0d0c0a; }
.cave-war-dossier .cave-traits { margin-top:14px; }.cave-war-dossier .cave-traits h4 { padding-bottom:6px; border-bottom:1px solid #342721; color:#a89a87; }
.cave-war-dossier .cave-trait { position:relative; margin:0; padding:7px 9px 7px 6px; border:0; border-bottom:1px solid #26201c; background:transparent; }
.cave-war-dossier .cave-trait::before { content:""; position:absolute; right:0; top:10px; width:3px; height:16px; background:#7a5e30; }.cave-war-dossier .cave-trait.active::before { background:#94372f; }.cave-war-dossier .cave-trait.special::before { background:#77508b; }
.cave-war-timeline { position:relative; flex:1; max-height:470px; padding:4px 24px 8px 8px; background:transparent; line-height:1.65; }
.cave-war-timeline::before { content:""; position:absolute; right:8px; top:5px; bottom:5px; width:1px; background:#3a201d; }
.cave-war-timeline>div:not(.cave-log-round) { position:relative; padding:5px 9px; margin:3px 0; border:0; border-bottom:1px solid #181615; background:#0b0a09; }
.cave-war-timeline>div:not(.cave-log-round)::before { content:""; position:absolute; right:-19px; top:11px; width:6px; height:6px; border:1px solid #77312c; background:#080707; transform:rotate(45deg); }
.cave-war-timeline .cave-log-round { position:sticky; top:0; z-index:2; margin:10px 0 4px; padding:3px 8px; border:1px solid #34241f; background:#130e0c; color:#c4a15d; font-size:.67rem; }
.cave-war-chronicle .cave-result { margin:10px 0 0; border:1px solid #49302a; background:#0d0a09; }
@media(max-width:900px){.cave-war-masthead{grid-template-columns:1fr auto}.cave-war-title{grid-row:1;grid-column:1;justify-self:start;text-align:right;min-width:0}.cave-war-breadcrumb{display:none}.cave-war-masthead button{grid-column:2}.cave-war-stage{grid-template-columns:1fr}.cave-war-enemy{border-left:0;border-bottom:1px solid #38241f}.cave-war-grid{grid-template-columns:1fr}.cave-war-dossier{border-left:0;border-bottom:1px solid #30231e}.cave-war-strip span{display:none}}
@media(max-width:620px){.cave-war-roster{grid-template-columns:1fr 1fr}.cave-war-stage{min-height:0}.cave-war-formation{padding:12px}.cave-war-grid{min-height:0}.cave-war-dossier{padding:12px}.cave-war-chronicle{padding:12px}.cave-war-timeline{max-height:360px}}

/* Three-region expedition preview */
.cave-world-travel-map {
  width: min(100%, max(1080px, calc((100vh - 82px) * 1.333333)), 1600px);
  width: min(100%, max(1080px, calc((100dvh - 82px) * 1.333333)), 1600px);
  aspect-ratio: 4 / 3;
}

.cave-travel-selection {
  width: min(100%, max(1080px, calc((100vh - 82px) * 1.333333)), 1600px);
  width: min(100%, max(1080px, calc((100dvh - 82px) * 1.333333)), 1600px);
}

.cave-world-map-image {
  filter: grayscale(.78) brightness(.62) contrast(1.08);
}

.cave-route-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.cave-route-overlay path {
  fill: none;
  vector-effect: non-scaling-stroke;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.cave-route-overlay .route-locked {
  stroke: rgba(118, 122, 126, .9);
  stroke-width: 3px;
  stroke-dasharray: 4 4;
  filter: drop-shadow(0 0 3px #000);
}

.cave-route-overlay .route-open {
  stroke: #d4a83d;
  stroke-width: 3px;
  filter: drop-shadow(0 0 5px rgba(228, 168, 43, .85));
}

.travel-city-node.is-locked-city {
  border-color: #777;
  color: #8b8b8b;
  background: rgba(15, 16, 17, .88);
  box-shadow: 0 0 0 3px rgba(0,0,0,.55);
  filter: grayscale(1);
}

.cave-expedition-controls {
  direction: ltr;
  display: flex;
  align-items: center;
  gap: 9px;
}

.cave-expedition-clock {
  min-width: 92px;
  padding: 5px 10px;
  border: 1px solid #6b4424;
  background: #090706;
  text-align: center;
  box-shadow: inset 0 0 14px rgba(164, 43, 25, .13);
}

.cave-expedition-clock b {
  display: block;
  color: #e6bd62;
  font-size: 1.05rem;
  letter-spacing: 0;
  line-height: 1.2;
}

.cave-expedition-clock small {
  display: block;
  color: #8f887c;
  font-size: .58rem;
}

.cave-region-grid {
  width: min(100%, 1380px);
  margin: 16px auto 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.cave-region-card {
  position: relative;
  min-height: 290px;
  overflow: hidden;
  border: 1px solid #4e4030;
  background: #090807 var(--region-image) center / cover no-repeat;
  box-shadow: 0 10px 28px rgba(0,0,0,.38);
}

.cave-region-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(3,3,3,.98) 0 34%, rgba(3,3,3,.28) 70%, rgba(3,3,3,.08));
}

.cave-region-card-copy,
.cave-region-card > button {
  position: relative;
  z-index: 1;
}

.cave-region-card-copy {
  min-height: 220px;
  padding: 15px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}

.cave-region-order { color: #aa8949; font-size: .66rem; }
.cave-region-card h3 { margin: 3px 0; color: #e8c976; font-size: 1rem; }
.cave-region-card p { min-height: 42px; margin: 0 0 5px; color: #aaa399; font-size: .69rem; line-height: 1.55; }
.cave-region-card-copy > div { color: #827a70; font-size: .66rem; }

.cave-region-card > button {
  width: calc(100% - 30px);
  margin: 0 15px 15px;
  padding: 8px;
  border: 1px solid #795523;
  background: #26120b;
  color: #edc872;
  font: 700 .72rem Cairo, sans-serif;
  cursor: pointer;
}

.cave-region-card.is-complete { border-color: #4b7043; }
.cave-region-card.is-complete > button { border-color: #4b7043; color: #a9d29d; }
.cave-region-card.is-locked { filter: grayscale(1) brightness(.55); }
.cave-region-card > button:disabled { cursor: not-allowed; }

.cave-preview-notice {
  width: min(100%, calc((100dvh - 136px) * 1.776833), 2100px);
  box-sizing: border-box;
  margin: 10px auto 0;
  padding: 8px 12px;
  border-top: 1px solid #3f3022;
  color: #827b70;
  text-align: center;
  font-size: .67rem;
}

.cave-region-encounter-map {
  width: min(100%, calc((100vh - 136px) * 1.776833), 2100px);
  width: min(100%, calc((100dvh - 136px) * 1.776833), 2100px);
  margin-inline: auto;
  aspect-ratio: 1672 / 941;
  container-type: inline-size;
}

.cave-world-travel-map > img,
.cave-region-encounter-map > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  image-rendering: auto;
  transform: none;
  backface-visibility: visible;
}

.cave-region-encounter-map .cave-encounter-node {
  width: clamp(98px, 9cqw, 170px);
}

.cave-monster-sprite {
  display: block;
  width: clamp(86px, 8cqw, 150px);
  height: auto;
  aspect-ratio: 9 / 7;
  margin: 0 auto -12px;
  object-fit: contain;
  filter: drop-shadow(0 7px 5px rgba(0,0,0,.85));
  transition: transform 220ms ease, filter 220ms ease;
}

.cave-encounter-node.is-hovering .cave-monster-sprite {
  transform: translateY(-7px) scale(1.12);
  filter: drop-shadow(0 9px 7px #000) drop-shadow(0 0 8px rgba(202,66,36,.62));
}

.cave-encounter-node.is-complete .cave-monster-sprite {
  filter: grayscale(.65) brightness(.62) drop-shadow(0 6px 4px #000);
}

.cave-encounter-node .node-status {
  display: inline-block;
  position: relative;
  z-index: 2;
  padding: 1px 7px;
  border: 1px solid #5e4c2b;
  background: rgba(5,4,3,.92);
  color: #b99a54;
  font-size: .57rem;
}

.cave-encounter-node .node-ring { display: none; }

@media (max-width: 760px) {
  .cave-region-grid { grid-template-columns: 1fr; }
  .cave-region-card { min-height: 230px; }
  .cave-region-card-copy { min-height: 165px; }
  .cave-expedition-header { align-items: flex-start; }
  .cave-expedition-controls { flex-direction: column; }
  .cave-region-encounter-map {
    width: 720px;
    min-width: 720px;
  }
  .cave-path-page { overflow-x: auto; }
}

/* V1 live cave battle report */
.cave-v1-report {
  position: relative;
  width: min(1540px, 98vw);
  min-height: min(900px, 94vh);
  max-height: 94vh;
  overflow: auto;
  direction: rtl;
  border: 1px solid #5c4636;
  background: #050607 url('assets/ui/cave_path/shrines_bat_wings.png') center 18% / cover no-repeat;
  box-shadow: 0 25px 80px #000, inset 0 0 0 1px rgba(204, 159, 86, .08);
  color: #ece7dc;
  font-family: Cairo, sans-serif;
}
.cave-v1-report::before { content:""; position:absolute; inset:0; z-index:0; pointer-events:none; background:linear-gradient(to bottom,rgba(2,3,4,.2),rgba(2,3,4,.58) 42%,#050607 70%); }
.cave-v1-report > * { position:relative; z-index:1; }
.cave-v1-header { min-height:76px; display:flex; align-items:center; justify-content:space-between; padding:14px 22px; text-shadow:0 2px 6px #000; }
.cave-v1-header span,.cave-v1-header small { color:#bd914d; font-size:.65rem; }
.cave-v1-header h2 { margin:2px 0 0; color:#eee6d8; font-size:1.05rem; }
.cave-v1-actions { direction:ltr; display:flex; align-items:center; gap:8px; }
.cave-v1-actions button { width:36px; height:36px; border:1px solid #705137; background:rgba(17,12,9,.88); color:#d6c2a2; font:700 1.2rem Cairo,sans-serif; cursor:pointer; }
.cave-v1-actions button:hover { border-color:#b1443b; color:#fff; background:#341310; }
.cave-v1-timer { min-width:76px; padding:5px 9px; border:1px solid #594630; background:rgba(7,8,9,.82); text-align:center; }
.cave-v1-timer small { display:block; color:#80786e; font-size:.52rem; }.cave-v1-timer b { display:block; color:#ecc974; font:700 .78rem Consolas,monospace; }
.cave-v1-summary { position:absolute; top:78px; right:22px; z-index:3; width:340px; max-width:calc(100% - 44px); padding:10px 12px; border:1px solid rgba(210,167,83,.62); background:rgba(11,11,10,.72); backdrop-filter:blur(7px); box-shadow:0 14px 38px rgba(0,0,0,.65); opacity:0; transform:translateY(-7px); pointer-events:none; transition:opacity .28s,transform .28s; }
.cave-v1-summary.show { opacity:1; transform:none; }.cave-v1-summary>strong { color:#56ce8b; }.cave-v1-summary>div { display:grid; grid-template-columns:repeat(3,1fr); gap:5px; margin-top:7px; }.cave-v1-summary span { padding:5px; border:1px solid rgba(101,84,60,.52); background:rgba(4,5,6,.55); color:#8f877d; font-size:.56rem; }.cave-v1-summary b { display:block; direction:ltr; color:#e7c66e; font-size:.73rem; }
.cave-v1-boss { min-height:385px; padding-top:74px; text-align:center; }
.cave-v1-boss>img { display:block; width:118px; height:118px; margin:0 auto 6px; object-fit:contain; border:1px solid #78513a; background:radial-gradient(circle,#1b1512,#060708 72%); filter:drop-shadow(0 8px 9px #000); cursor:help; }
.cave-v1-boss>small { color:#bd914d; font-size:.61rem; }.cave-v1-boss h1 { margin:0; color:#f2ecdf; font-size:2rem; text-shadow:0 3px 10px #000; }
.cave-v1-bossbar { width:min(760px,78%); height:12px; margin:11px auto 0; overflow:hidden; border:1px solid #94483a; background:#170c0b; }.cave-v1-bossbar i { display:block; width:100%; height:100%; background:linear-gradient(90deg,#5d1717,#d04739); box-shadow:0 0 18px #b63228; transition:width .5s ease; }
.cave-v1-bossnums { direction:ltr; margin-top:4px; color:#c8baaa; font:700 .67rem Consolas,monospace; }
.cave-v1-traits { display:flex; justify-content:center; flex-wrap:wrap; gap:5px; margin-top:8px; }.cave-v1-traits span { padding:2px 7px; border:1px solid currentColor; background:rgba(5,6,7,.76); font-size:.55rem; text-shadow:0 0 1px currentColor; }.cave-v1-traits .active { color:#4ca8e8; }.cave-v1-traits .special { color:#b074d1; }
.cave-v1-lower { direction:ltr; width:min(1450px,95%); margin:0 auto 20px; display:grid; grid-template-columns:minmax(0,1fr) minmax(380px,36%); gap:20px; }
.cave-v1-roster,.cave-v1-chronicle { direction:rtl; min-width:0; border-top:1px solid #55483e; }
.cave-v1-chronicle { grid-column:1; }.cave-v1-roster { grid-column:2; }
.cave-v1-panel-head { min-height:40px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid #2d2925; }.cave-v1-panel-head h3 { margin:0; color:#e0d8cc; font-size:.78rem; }.cave-v1-panel-head span { color:#aa874b; font-size:.57rem; }
.cave-v1-roster .cave-party-roster { grid-template-columns:1fr 1fr; gap:7px; padding-top:8px; }
.cave-v1-roster .cave-party-unit { min-height:110px; display:grid; grid-template-columns:58px 1fr; padding:8px; border:1px solid #362f29; background:linear-gradient(135deg,rgba(20,18,16,.96),rgba(8,9,10,.95)); }
.cave-v1-roster .cave-party-unit.is-player { border-color:#76572f; background:linear-gradient(135deg,rgba(42,28,15,.96),rgba(9,10,10,.96)); }
.cave-v1-roster .cave-party-unit img { width:58px; height:58px; border:1px solid #6b5742; border-radius:50%; object-fit:cover; background:#111; }
.cave-v1-roster .cave-party-unit dl { grid-column:1/-1; display:grid; grid-template-columns:repeat(3,1fr); gap:1px; margin:5px 0 0; background:#302a25; }.cave-v1-roster .cave-party-unit dl div { padding:3px 2px; background:#090a0a; text-align:center; }.cave-v1-roster .cave-party-unit dt { color:#777; font-size:.46rem; }.cave-v1-roster .cave-party-unit dd { direction:ltr; margin:0; color:#d6c5a3; font-size:.56rem; font-weight:700; }
.cave-v1-timeline { height:318px; max-height:318px; padding:4px 6px; overflow-y:auto; background:rgba(5,6,7,.9); scrollbar-color:#5d3d24 #090909; scrollbar-width:thin; }
.cave-v1-timeline>div:not(.cave-log-round) { position:relative; margin:2px 0; padding:7px 9px; border:0; border-bottom:1px solid #24211e; background:rgba(12,11,10,.92); }
.cave-v1-timeline .cave-log-round { position:sticky; top:0; z-index:2; margin:7px 0 3px; padding:4px 8px; border:1px solid #493b2b; background:#18120d; color:#e2b95e; }
.cave-v1-chronicle .cave-result { margin:9px 0 0; padding:9px 12px; border:1px solid #49302a; background:rgba(13,10,9,.94); }

/* Shared combat-log language */
.combat-log-normal { color:#b8b8b8!important; }
.combat-log-crit { color:#ef5148!important; text-shadow:0 0 1px currentColor; }
.combat-log-double { color:#ee913c!important; text-shadow:0 0 1px currentColor; }
.combat-log-heal { color:#4dcb7d!important; text-shadow:0 0 1px currentColor; }
.combat-log-active { color:#4ca8e8!important; text-shadow:0 0 1px currentColor; }
.combat-log-special { color:#b074d1!important; text-shadow:0 0 1px currentColor; }
.combat-log-dot { color:#e1bd43!important; text-shadow:0 0 1px currentColor; }
.combat-log-enemy { font-weight:800!important; }

@media(max-width:900px){.cave-v1-report{min-height:0}.cave-v1-summary{position:relative;top:auto;right:auto;width:calc(100% - 24px);margin:0 12px}.cave-v1-boss{min-height:340px;padding-top:55px}.cave-v1-lower{grid-template-columns:1fr}.cave-v1-chronicle,.cave-v1-roster{grid-column:1}.cave-v1-roster{grid-row:1}.cave-v1-chronicle{grid-row:2}.cave-v1-summary>div{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:620px){.cave-v1-header{padding:10px 12px}.cave-v1-boss{min-height:305px;padding-top:35px}.cave-v1-boss h1{font-size:1.45rem}.cave-v1-bossbar{width:90%}.cave-v1-lower{width:calc(100% - 18px)}.cave-v1-roster .cave-party-roster{grid-template-columns:1fr}.cave-v1-timeline{height:350px;max-height:350px}}
