.world-object--couch {
  --couch-proximity: 0;
  width: clamp(118px, 10.5vw, 172px);
  height: clamp(78px, 7vw, 112px);
}

.couch-symbol {
  position: relative;
  z-index: 2;
  display: block;
  width: 100%;
  height: 100%;
  opacity: 1;
  transform-origin: 50% 72%;
  transition: transform .28s ease, filter .28s ease;
  filter: brightness(1) saturate(.92) drop-shadow(0 18px 24px rgba(0, 0, 0, .72));
}

.world-object--couch > .couch-symbol {
  position: absolute;
  inset: 0;
}

.couch-glow {
  position: absolute;
  z-index: 0;
  left: -24%;
  right: -24%;
  top: -30%;
  bottom: -38%;
  border-radius: 50%;
  pointer-events: none;
  opacity: var(--couch-proximity);
  background: radial-gradient(ellipse at center, rgba(221, 145, 91, .46), rgba(144, 84, 50, .16) 42%, transparent 72%);
  filter: blur(16px);
  transition: opacity .12s linear;
}

.couch-back,
.couch-seat,
.couch-arm {
  position: absolute;
  z-index: 2;
  display: block;
  overflow: hidden;
  border: 1px solid rgba(192, 232, 241, .44);
  background: linear-gradient(145deg, #60777d 0%, #31454a 38%, #172428 70%, #0d1518 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.18),
    inset 0 -10px 22px rgba(0,0,0,.28),
    0 14px 24px rgba(0,0,0,.5),
    0 0 14px rgba(128, 205, 224, .08);
}

.couch-back::after,
.couch-seat::after,
.couch-arm::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: var(--couch-proximity);
  background: linear-gradient(145deg, rgba(190, 119, 75, .92), rgba(126, 70, 48, .72) 56%, rgba(76, 43, 34, .55));
  transition: opacity .1s linear;
}

.couch-back {
  left: 13%;
  right: 13%;
  top: 7%;
  height: 50%;
  border-radius: 18% 18% 10% 10%;
}

.couch-back::before {
  content: "";
  position: absolute;
  z-index: 3;
  left: 50%;
  top: 8%;
  bottom: 7%;
  width: 1px;
  background: rgba(221, 243, 248, .25);
  box-shadow: 0 0 8px rgba(255,255,255,.06);
}

.couch-seat {
  left: 16%;
  right: 16%;
  top: 48%;
  height: 31%;
  border-radius: 10% 10% 16% 16%;
  transform: perspective(170px) rotateX(8deg);
}

.couch-seat::before {
  content: "";
  position: absolute;
  z-index: 3;
  left: 50%;
  top: 7%;
  bottom: 8%;
  width: 1px;
  background: rgba(221, 243, 248, .22);
}

.couch-arm {
  top: 38%;
  width: 20%;
  height: 41%;
  border-radius: 35% 35% 18% 18%;
}

.couch-arm--left { left: 1.5%; }
.couch-arm--right { right: 1.5%; }

.couch-leg {
  position: absolute;
  z-index: 1;
  display: block;
  top: 77%;
  width: 8%;
  height: 18%;
  border-radius: 1px 1px 4px 4px;
  background: linear-gradient(to bottom, #59696d, #12191b 70%, #070a0b);
  box-shadow: 0 8px 10px rgba(0,0,0,.62);
}

.couch-leg--left { left: 21%; transform: rotate(5deg); }
.couch-leg--right { right: 21%; transform: rotate(-5deg); }

.world-object--couch.is-near .world-object-label {
  opacity: 1;
  transform: translate(-50%, 0);
}

.world-object--couch:hover .couch-symbol,
.world-object--couch:focus-visible .couch-symbol {
  transform: translateY(-5px) scale(1.055);
  filter: brightness(1.12) saturate(1.12) drop-shadow(0 23px 30px rgba(0,0,0,.7));
}

.world-object--couch:hover .couch-glow,
.world-object--couch:focus-visible .couch-glow {
  opacity: 1;
}

.couch-detail {
  display: grid;
  grid-template-columns: minmax(250px, 40%) 1fr;
  min-height: 470px;
}

.couch-detail-visual {
  position: relative;
  display: grid;
  place-items: center;
  overflow: hidden;
  min-height: 430px;
  background:
    radial-gradient(ellipse at 50% 48%, rgba(174, 104, 65, .2), transparent 34%),
    radial-gradient(circle at 50% 52%, rgba(20, 46, 53, .34), rgba(2, 6, 8, .98) 70%);
}

.couch-detail-visual::before {
  content: "";
  position: absolute;
  left: 14%;
  right: 14%;
  bottom: 18%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(199, 139, 98, .3), transparent);
  box-shadow: 0 0 30px rgba(194, 118, 73, .14);
}

.couch-detail-symbol {
  --couch-proximity: .78;
  width: min(260px, 72%);
  aspect-ratio: 1.55;
  transform: translateY(-8px);
}

.couch-detail-room-label {
  position: absolute;
  left: 50%;
  bottom: 12%;
  transform: translateX(-50%);
  width: max-content;
  max-width: 82%;
  font-size: .56rem;
  letter-spacing: .3em;
  color: rgba(205, 174, 153, .5);
}

.couch-detail-copy {
  align-self: center;
  padding: clamp(32px, 5vw, 66px);
}

.couch-detail-copy h2 {
  margin: 0;
  font-weight: 300;
  font-size: clamp(2rem, 4vw, 3.8rem);
  line-height: 1;
  letter-spacing: -.025em;
  color: #edf8fa;
}

.couch-topics {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.couch-topics span {
  padding: 8px 11px;
  border: 1px solid rgba(193, 141, 104, .18);
  background: rgba(172, 103, 65, .035);
  color: rgba(215, 203, 194, .72);
  font-size: .67rem;
  letter-spacing: .08em;
}

.couch-status {
  margin: 26px 0 0;
  padding-top: 18px;
  border-top: 1px solid rgba(145, 197, 210, .1);
  max-width: 56ch;
  color: rgba(155, 185, 193, .55);
  font-size: .68rem;
  line-height: 1.6;
}

@media (pointer: coarse) {
  .world-object--couch {
    --couch-proximity: .38 !important;
  }

  .world-object--couch:active,
  .world-object--couch:focus-visible {
    --couch-proximity: 1 !important;
  }
}

@media (max-width: 760px) {
  .world-scene { min-height: 1260px; }
  .world-object--couch { width: 138px; height: 92px; }
  .couch-symbol { filter: brightness(1.1) saturate(1) drop-shadow(0 18px 24px rgba(0,0,0,.72)); }
  .couch-detail { grid-template-columns: 1fr; }
  .couch-detail-visual { min-height: 250px; }
  .couch-detail-symbol { width: min(230px, 70%); }
  .couch-detail-room-label { bottom: 8%; font-size: .5rem; letter-spacing: .22em; }
}

@media (prefers-reduced-motion: reduce) {
  .couch-symbol,
  .couch-glow,
  .couch-back::after,
  .couch-seat::after,
  .couch-arm::after {
    transition: none !important;
  }
}
