page { min-height: 100vh; background: linear-gradient(180deg, #eff4fb 0%, #e8eff7 100%); } .page { min-height: 100vh; } .shell { display: grid; gap: 24rpx; padding: 28rpx 24rpx 40rpx; } .hero, .panel { display: grid; gap: 16rpx; padding: 24rpx; border-radius: 24rpx; } .hero { background: linear-gradient(135deg, #163a66 0%, #1f5da1 100%); color: #ffffff; } .hero__eyebrow { font-size: 22rpx; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(255, 255, 255, 0.72); } .hero__title { font-size: 40rpx; font-weight: 700; } .hero__desc { font-size: 24rpx; color: rgba(255, 255, 255, 0.84); line-height: 1.6; } .panel { background: rgba(255, 255, 255, 0.94); box-shadow: 0 14rpx 32rpx rgba(40, 63, 95, 0.08); } .panel__title { font-size: 30rpx; font-weight: 700; color: #17345a; } .summary, .row__label, .row__value { font-size: 24rpx; line-height: 1.6; color: #30465f; } .row { display: flex; justify-content: space-between; gap: 16rpx; padding: 10rpx 0; border-bottom: 2rpx solid #edf2f7; } .row:last-child { border-bottom: 0; } .row__value { max-width: 70%; text-align: right; font-weight: 700; color: #17345a; } .actions { display: flex; gap: 16rpx; flex-wrap: wrap; } .launch-progress { display: grid; gap: 12rpx; padding: 18rpx 20rpx; border-radius: 18rpx; background: #f4f8fc; } .launch-progress__row { display: flex; align-items: center; justify-content: space-between; gap: 16rpx; } .launch-progress__label, .launch-progress__value { font-size: 22rpx; line-height: 1.6; color: #35567d; } .launch-progress__value { font-weight: 700; text-align: right; } .launch-progress__track { position: relative; height: 12rpx; overflow: hidden; border-radius: 999rpx; background: #d7e4f1; } .launch-progress__fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 999rpx; background: linear-gradient(90deg, #1e5ca1 0%, #2d78cf 100%); } .device-list { display: grid; gap: 14rpx; } .variant-list { display: grid; gap: 14rpx; } .preview-card { display: grid; gap: 14rpx; margin-top: 8rpx; } .preview-card__header { display: flex; align-items: center; justify-content: space-between; gap: 16rpx; } .preview-card__title { font-size: 26rpx; font-weight: 700; color: #17345a; } .preview-card__status { font-size: 22rpx; color: #5c7288; text-align: right; } .preview-card__variant { justify-self: start; padding: 8rpx 16rpx; border-radius: 999rpx; background: #eef4fb; color: #24486f; font-size: 22rpx; line-height: 1.5; } .preview-frame { position: relative; width: 100%; padding-top: 56.25%; overflow: hidden; border-radius: 22rpx; background: #d9e4ef; box-shadow: inset 0 0 0 2rpx rgba(255, 255, 255, 0.35); } .preview-stage { position: absolute; inset: 0; overflow: hidden; background: #d7e1ec; } .preview-tile { position: absolute; } .preview-wash { position: absolute; inset: 0; background: rgba(255, 255, 255, 0.34); pointer-events: none; } .preview-control { position: absolute; display: flex; align-items: center; justify-content: center; width: 28rpx; height: 28rpx; margin-left: -14rpx; margin-top: -14rpx; border-radius: 999rpx; border: 4rpx solid #e05f36; background: rgba(255, 255, 255, 0.92); box-shadow: 0 6rpx 14rpx rgba(23, 52, 90, 0.12); } .preview-control--start { border-color: #1f6a45; background: rgba(225, 245, 235, 0.96); } .preview-control--finish { border-color: #8f1f4c; background: rgba(255, 230, 239, 0.96); } .preview-loading { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(244, 248, 252, 0.76); font-size: 24rpx; color: #35567d; } .variant-card { display: grid; gap: 8rpx; padding: 18rpx; border-radius: 18rpx; background: #f6f9fc; border: 2rpx solid transparent; } .variant-card--active { background: #edf5ff; border-color: #4f86c9; } .variant-card__main { display: grid; gap: 8rpx; } .variant-card__title-row { display: flex; gap: 10rpx; align-items: center; flex-wrap: wrap; } .variant-card__name { font-size: 26rpx; font-weight: 700; color: #17345a; } .variant-card__badge { padding: 4rpx 10rpx; border-radius: 999rpx; background: #dff3e8; color: #1f6a45; font-size: 20rpx; } .variant-card__meta { font-size: 22rpx; color: #5c7288; line-height: 1.5; } .picker-mask { position: fixed; inset: 0; background: rgba(10, 22, 38, 0.42); z-index: 30; } .picker-sheet { position: fixed; left: 0; right: 0; bottom: 0; z-index: 31; display: grid; gap: 16rpx; padding: 24rpx 24rpx 36rpx; border-top-left-radius: 28rpx; border-top-right-radius: 28rpx; background: rgba(255, 255, 255, 0.98); box-shadow: 0 -14rpx 36rpx rgba(22, 43, 71, 0.18); } .picker-sheet__header { display: flex; align-items: center; justify-content: space-between; gap: 16rpx; } .picker-sheet__title { font-size: 30rpx; font-weight: 700; color: #17345a; } .picker-sheet__close { margin: 0; min-height: 60rpx; padding: 0 18rpx; line-height: 60rpx; border-radius: 999rpx; font-size: 22rpx; background: #eef3f8; color: #455a72; } .picker-sheet__close::after { border: 0; } .device-card { display: flex; justify-content: space-between; gap: 16rpx; align-items: center; padding: 18rpx; border-radius: 18rpx; background: #f6f9fc; } .device-card__main { display: grid; gap: 8rpx; min-width: 0; flex: 1; } .device-card__title-row { display: flex; gap: 10rpx; align-items: center; flex-wrap: wrap; } .device-card__name { font-size: 26rpx; font-weight: 700; color: #17345a; } .device-card__badge { padding: 4rpx 10rpx; border-radius: 999rpx; background: #e1ecfa; color: #35567d; font-size: 20rpx; } .device-card__badge--active { background: #dff3e8; color: #1f6a45; } .device-card__meta { font-size: 22rpx; color: #5c7288; } .device-card__action { flex: none; } .btn { margin: 0; min-height: 76rpx; padding: 0 24rpx; line-height: 76rpx; border-radius: 18rpx; font-size: 26rpx; } .btn::after { border: 0; } .btn--primary { background: #173d73; color: #ffffff; } .btn--secondary { background: #dfeaf8; color: #173d73; } .btn--ghost { background: #ffffff; color: #52657d; border: 2rpx solid #d8e2ec; }