/* =========== 基础页面样式 =========== */ .ticket-page { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; background-color: #f5f6f8; min-height: 100vh; position: relative; overflow-x: hidden; } .header-banner { background: radial-gradient(ellipse at 20% 80%, rgba(120, 80, 255, 0.15) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(255, 0, 127, 0.1) 0%, transparent 40%), linear-gradient(160deg, #1a1625 0%, #2d2840 50%, #1f1b2e 100%); padding: 54px 20px 64px 20px; display: flex; align-items: stretch; color: #fff; position: relative; } .poster { flex-shrink: 0; width: 105px; height: 140px; border-radius: 8px; overflow: hidden; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3); } .poster-img { width: 100%; height: 100%; } .header-info { margin-left: 16px; display: flex; flex-direction: column; align-items: flex-start; } .header-info .title { font-size: 18px; font-weight: bold; line-height: 1.4; margin: 0; margin-top: 4px; } .header-info .tag { font-size: 12px; color: #d0cdd8; margin-top: 10px; text-align: left; } .collect-btn { margin-top: auto; align-self: flex-start; background-color: rgba(0, 0, 0, 0.4); padding: 6px 14px; border-radius: 20px; font-size: 12px; display: flex; align-items: center; } .heart-icon { font-size: 14px; margin-right: 4px; } /* =========== Main Content =========== */ .main-content { background-color: #fff; border-radius: 16px 16px 0 0; margin-top: -24px; padding: 20px; position: relative; z-index: 10; } /* Location Card */ .location-card { margin-top: 10px; background-color: #fcfcfc; border: 1px solid #f0f0f0; border-radius: 12px; padding: 16px; display: flex; flex-direction: column; background-image: radial-gradient(circle at right center, rgba(240, 240, 240, 0.8) 0%, transparent 50%); } .location-content { display: flex; justify-content: space-between; align-items: stretch; width: 100%; } .location-info .venue { font-size: 15px; font-weight: bold; color: #111; text-align: left; } .location-info .address { font-size: 12px; color: #999; margin-top: 6px; } .location-info { flex: 1; text-align: left; display: flex; flex-direction: column; justify-content: center; } .venue-badge { display: inline-block; font-size: 12px; color: #fff; background-color: #ff404f; padding: 1px 6px; border-radius: 4px; margin-bottom: 4px; } .map-more { font-size: 11px; color: #999; margin-top: 4px; text-align: center; } .map-wrapper { display: flex; flex-direction: column; align-items: center; justify-content: center; padding-left: 12px; } .map-icon { width: 22px; height: 22px; background-color: #ffffff; border: 1.5px solid #f76464; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .pin-icon { width: 16px; height: 16px; fill: #e61818; } /* Service Header */ .service-header { display: flex; justify-content: space-between; align-items: flex-start; margin-top: 20px; } .service-tags { display: flex; flex-wrap: wrap; gap: 12px; flex: 1; } .service-tags-wrapper { flex: 1; position: relative; overflow: hidden; } .service-tags-wrapper::after { content: ''; position: absolute; top: 0; right: 0; bottom: 0; width: 30px; background: linear-gradient(to right, transparent, #fff); } .service-more { font-size: 13px; color: #999; margin-left: 8px; } .tag-item { font-size: 11px; color: #333; display: flex; align-items: center; } .icon-success, .icon-warning { width: 14px; height: 14px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 10px; color: #fff; margin-right: 6px; transform: scale(0.9); } .icon-success { background-color: #2ac55a; } .icon-warning { background-color: transparent; color: #ff404f; border: 1px solid #ff404f; } /* =========== Section Card =========== */ .mt-10 { margin-top: 10px; } .section-card { background-color: #fff; padding: 24px 20px; } .section-header { display: flex; justify-content: space-between; align-items: center; } .section-title { font-size: 18px; font-weight: bold; color: #111; margin: 0; } .section-more { font-size: 13px; color: #999; } .notice-grid { display: flex; flex-wrap: wrap; gap: 20px 16px; margin-top: 20px; } .notice-item { width: calc(50% - 8px); min-width: 0; } .notice-title { font-size: 14px; font-weight: bold; color: #333; display: flex; align-items: center; } .notice-title .dot { width: 4px; height: 4px; background-color: #d8d8d8; border-radius: 50%; margin-right: 6px; flex-shrink: 0; } .notice-desc { font-size: 12px; color: #999; margin-top: 6px; padding-left: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: left; } /* =========== Bottom Bar =========== */ .bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; margin: 0 auto; max-width: 1500rpx; background-color: #fff; display: flex; align-items: center; padding: 10px 20px; padding-bottom: calc(10px + constant(safe-area-inset-bottom)); padding-bottom: calc(10px + env(safe-area-inset-bottom)); box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.03); z-index: 100; } .customer-service { display: flex; flex-direction: column; align-items: center; margin-right: 24px; color: #333; } .service-icon { font-size: 20px; margin-bottom: 2px; } .customer-service text { font-size: 10px; } .selected-info { flex: 1; display: flex; flex-direction: column; justify-content: center; margin-right: 16px; } .info-top { font-size: 14px; color: #333; margin-bottom: 2px; display: flex; align-items: center; } .reselect-text { font-size: 12px; color: #ff404f; margin-left: 10px; cursor: pointer; } .info-bottom { font-size: 12px; color: #666; } .price-text { font-size: 18px; color: #ff404f; font-weight: bold; margin-left: 4px; } .buy-button { flex: 1; background-color: #ff404f; color: #fff; border: none; border-radius: 25px; padding: 14px 0; font-size: 16px; font-weight: bold; text-align: center; line-height: 1; } /* 停止售票按钮(无可用场次) */ .buy-button-disabled, .buy-button[disabled] { background-color: #ccc; color: #888; cursor: not-allowed; } /* =========== Popup 样式 =========== */ .popup-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.6); z-index: 999; display: flex; justify-content: center; align-items: flex-end; } .popup-container { width: 100%; max-width: 1600rpx; height: 70vh; background-color: #fff; border-radius: 16px 16px 0 0; display: flex; flex-direction: column; max-height: 70vh; padding: 0 16px; } .popup-header { display: flex; justify-content: center; align-items: center; padding: 20px; position: relative; flex-shrink: 0; } .popup-header.has-tabs { justify-content: flex-start; } .popup-title-text { font-size: 18px; font-weight: bold; color: #111; } .popup-tabs { display: flex; gap: 24px; } .tab-item { font-size: 16px; color: #666; position: relative; transition: all 0.2s; } .tab-item.active { font-size: 20px; font-weight: bold; color: #111; } .tab-item.active::after { content: ''; position: absolute; bottom: -12px; left: 50%; transform: translateX(-50%); width: 50%; height: 3px; background-color: #ff404f; border-radius: 2px; } .popup-close { position: absolute; right: 20px; font-size: 20px; color: #333; font-weight: 300; } .popup-content { flex: 1; overflow-y: auto; overflow-x: hidden; padding: 24px 20px 40px 20px; box-sizing: border-box; word-break: break-word; } /* 弹窗内的说明列表样式 */ .service-popup-global-desc { font-size: 14px; color: #666; line-height: 1.5; margin-bottom: 24px; } .service-popup-item { margin-bottom: 24px; } .service-popup-item-title { font-size: 16px; font-weight: bold; color: #111; display: flex; align-items: center; margin-bottom: 8px; } .notice-pure-title { /* 须知弹窗里没有icon,可以微调样式 */ } .service-popup-item-content { font-size: 14px; color: #666; line-height: 1.6; padding-left: 0; text-align: left; } /* 带有icon时,文字需要和icon对齐,缩进处理 */ .service-popup-item-title .icon-success, .service-popup-item-title .icon-warning { margin-right: 8px; } /* 场馆列表样式 */ .location-card { cursor: pointer; } .venue-popup-item { display: flex; justify-content: space-between; align-items: center; padding: 16px 16px; border-bottom: 1px solid #f0f0f0; cursor: pointer; } .venue-popup-item:last-child { border-bottom: none; } .venue-popup-info { flex: 1; text-align: left; padding-right: 16px; } .venue-info-row { display: flex; align-items: center; margin-bottom: 6px; line-height: 1; } .venue-popup-name { font-size: 16px; font-weight: bold; color: #111; margin-bottom: 6px; } .venue-popup-address { font-size: 13px; color: #999; line-height: 1.4; } .venue-popup-nav { flex-shrink: 0; } .nav-icon-circle { width: 36px; height: 36px; background-color: #d2cfcf; border-radius: 50%; display: flex; align-items: center; justify-content: center; } /* =========== 顶部导航按钮 =========== */ .pf { position: fixed; } .top-nav-left-icon { position: fixed; left: 12px; top: 44px; display: flex; align-items: center; z-index: 9999; } .back-icon { width: 32px; height: 32px; background-color: rgba(255, 255, 255, 0.9); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 20px; color: #333; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); } .round { border-radius: 50%; } .cp { cursor: pointer; }