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;
}
