.page { height: 100vh; padding: 20rpx 20rpx 24rpx; box-sizing: border-box; display: flex; flex-direction: column; overflow: hidden; background: radial-gradient(circle at top left, #d8f3dc 0%, rgba(216, 243, 220, 0) 32%), linear-gradient(180deg, #f7fbf2 0%, #eef6ea 100%); color: #163020; } .page__header { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 16rpx; flex-shrink: 0; } .page__eyebrow { font-size: 20rpx; letter-spacing: 4rpx; color: #5f7a65; } .page__title { margin-top: 8rpx; font-size: 44rpx; font-weight: 600; } .page__badge { padding: 10rpx 18rpx; border-radius: 999rpx; background: #163020; color: #f7fbf2; font-size: 22rpx; } .map-stage-wrap { position: relative; width: 100%; height: 66vh; min-height: 520rpx; max-height: 72vh; flex-shrink: 0; margin-bottom: 16rpx; } .map-stage { position: relative; width: 100%; height: 100%; overflow: hidden; border: 2rpx solid rgba(22, 48, 32, 0.08); border-radius: 32rpx; background: #dbeed4; box-shadow: 0 18rpx 40rpx rgba(22, 48, 32, 0.08); } .map-content { position: absolute; inset: 0; } .map-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; } .map-canvas--base { z-index: 1; } .map-stage__crosshair { position: absolute; left: 50%; top: 50%; width: 44rpx; height: 44rpx; transform: translate(-50%, -50%); border: 3rpx solid rgba(255, 255, 255, 0.95); border-radius: 50%; box-shadow: 0 0 0 4rpx rgba(22, 48, 32, 0.2); pointer-events: none; z-index: 3; } .map-stage__crosshair::before, .map-stage__crosshair::after { content: ''; position: absolute; background: rgba(255, 255, 255, 0.95); } .map-stage__crosshair::before { left: 50%; top: -18rpx; width: 2rpx; height: 76rpx; transform: translateX(-50%); } .map-stage__crosshair::after { left: -18rpx; top: 50%; width: 76rpx; height: 2rpx; transform: translateY(-50%); } .map-stage__overlay { position: absolute; inset: 0; display: flex; align-items: flex-start; justify-content: space-between; padding: 24rpx; box-sizing: border-box; pointer-events: none; z-index: 4; } .overlay-card { width: 68%; padding: 22rpx; border-radius: 24rpx; background: rgba(247, 251, 242, 0.92); box-shadow: 0 12rpx 30rpx rgba(22, 48, 32, 0.08); } .overlay-card__label { font-size: 20rpx; letter-spacing: 3rpx; color: #5f7a65; } .overlay-card__title { margin-top: 10rpx; font-size: 34rpx; font-weight: 600; } .overlay-card__desc { margin-top: 12rpx; font-size: 24rpx; line-height: 1.6; color: #45624b; } .compass-widget { display: flex; flex-direction: column; align-items: center; gap: 10rpx; } .compass-widget__ring { position: relative; width: 108rpx; height: 108rpx; border-radius: 50%; background: rgba(247, 251, 242, 0.94); border: 2rpx solid rgba(22, 48, 32, 0.12); box-shadow: 0 10rpx 24rpx rgba(22, 48, 32, 0.1); } .compass-widget__north { position: absolute; left: 50%; top: 10rpx; transform: translateX(-50%); font-size: 20rpx; font-weight: 700; color: #d62828; } .compass-widget__needle { position: absolute; left: 50%; top: 18rpx; width: 4rpx; height: 72rpx; transform-origin: 50% 36rpx; background: linear-gradient(180deg, #d62828 0%, #163020 100%); border-radius: 999rpx; } .compass-widget__center { position: absolute; left: 50%; top: 50%; width: 14rpx; height: 14rpx; transform: translate(-50%, -50%); border-radius: 50%; background: #163020; } .compass-widget__label { min-width: 92rpx; padding: 6rpx 10rpx; border-radius: 999rpx; background: rgba(247, 251, 242, 0.94); font-size: 20rpx; text-align: center; color: #163020; box-shadow: 0 8rpx 18rpx rgba(22, 48, 32, 0.08); } .info-panel { flex: 1; min-height: 0; padding: 22rpx 20rpx 28rpx; box-sizing: border-box; border-radius: 28rpx; background: rgba(255, 255, 255, 0.88); box-shadow: 0 12rpx 32rpx rgba(22, 48, 32, 0.08); } .info-panel__row { display: flex; align-items: center; justify-content: space-between; gap: 16rpx; padding: 10rpx 0; border-bottom: 1rpx solid rgba(22, 48, 32, 0.08); } .info-panel__row--stack { display: block; } .info-panel__row:last-of-type { border-bottom: none; } .info-panel__label { flex-shrink: 0; font-size: 22rpx; letter-spacing: 2rpx; color: #5f7a65; text-transform: uppercase; } .info-panel__value { font-size: 25rpx; color: #163020; text-align: right; word-break: break-all; } .info-panel__row--stack .info-panel__value { display: block; margin-top: 10rpx; text-align: left; color: #45624b; line-height: 1.5; } .info-panel__actions { display: flex; gap: 14rpx; margin-top: 18rpx; } .info-panel__actions--triple .info-panel__action { font-size: 23rpx; } .info-panel__action { flex: 1; min-width: 0; border-radius: 999rpx; background: #d7e8da; color: #163020; font-size: 26rpx; } .info-panel__action--primary { background: #2d6a4f; color: #f7fbf2; } .info-panel__action--secondary { background: #eef6ea; color: #45624b; } .info-panel__action--active { background: #2d6a4f; color: #f7fbf2; } .control-row { display: flex; gap: 14rpx; margin-top: 18rpx; } .control-row--triple .control-chip { font-size: 23rpx; } .control-chip { flex: 1; min-width: 0; padding: 20rpx 16rpx; border-radius: 999rpx; background: #d7e8da; color: #163020; font-size: 26rpx; text-align: center; box-sizing: border-box; } .control-chip--primary { background: #2d6a4f; color: #f7fbf2; } .control-chip--secondary { background: #eef6ea; color: #45624b; } .control-chip--active { background: #2d6a4f; color: #f7fbf2; }