| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425 | @use '../../styles/_ios-theme.scss' as *;@use 'sass:color';@use './requirements-confirm-card-alternative.scss' as *;:host {   display: block;   height: 100%;   position: relative; // 确保子元素定位基准}// 新增:文本输入区域独立样式.text-upload-section {  margin-bottom: 1.5rem;    .upload-item {    background: white;    border: 1px solid #e0e0e0;    border-radius: 8px;    padding: 1rem;        h5 {      margin: 0 0 0.75rem 0;      font-size: 0.9rem;      color: #333;      font-weight: 600;    }        textarea {      width: 100%;      padding: 0.75rem;      border: 1px solid #ddd;      border-radius: 4px;      font-size: 0.85rem;      resize: vertical;      margin-bottom: 0.75rem;            &:focus {        outline: none;        border-color: #007bff;      }    }        .btn-primary {      background: #007bff;      border: none;      border-radius: 4px;      padding: 0.5rem 1rem;      color: white;      font-size: 0.85rem;      cursor: pointer;            &:disabled {        opacity: 0.6;        cursor: not-allowed;      }    }  }}// 新增:参考图片和CAD图纸并排布局 - 优化弹窗出现时的布局稳定性.file-upload-grid {  display: grid;  grid-template-columns: 1fr 1fr;  gap: 1rem;  position: relative;  z-index: 1; // 确保在正常文档流中  margin-bottom: $ios-spacing-lg;    // 移动端响应式  @media (max-width: 768px) {    grid-template-columns: 1fr;    gap: $ios-spacing-sm;  }    // 平板端响应式  @media (min-width: 769px) and (max-width: 1024px) {    gap: $ios-spacing-md;  }    // 当弹窗出现时保持布局稳定  .upload-item {    position: relative;    background: white;    border: 1px solid #e0e0e0;    border-radius: 8px;    padding: 1rem;    transition: transform 0.2s ease, box-shadow 0.2s ease;        &:hover {      transform: translateY(-2px);      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);    }        // 确保在弹窗出现时不会被遮挡或错位,优化层级管理    &.image-item, &.cad-item {      z-index: 2;            // 当有弹窗显示时,降低交互优先级      &.modal-active {        pointer-events: none;        opacity: 0.8;      }    }        h5 {      margin: 0 0 $ios-spacing-sm 0;      font-size: $ios-font-size-xs;      font-weight: $ios-font-weight-semibold;      color: $ios-text-primary;    }        .file-upload-zone {      border: 2px dashed $ios-border;      border-radius: 8px;      padding: $ios-spacing-lg;      text-align: center;      cursor: pointer;      transition: all 0.2s ease;            &:hover {        border-color: $ios-primary;        background: rgba(0, 122, 255, 0.02);      }            svg {        color: $ios-text-secondary;        margin-bottom: $ios-spacing-sm;      }            p {        margin: 0 0 $ios-spacing-xs 0;        font-size: $ios-font-size-xs;        color: $ios-text-primary;        font-weight: $ios-font-weight-medium;      }            .hint {        font-size: $ios-font-size-xs;        color: $ios-text-secondary;      }    }  }}.requirements-confirm-card {  .card-header {    display: flex;    justify-content: space-between;    align-items: center;    margin-bottom: $ios-spacing-md;        h4 {      margin: 0;      font-size: $ios-font-size-sm;      font-weight: $ios-font-weight-semibold;      color: $ios-text-primary;    }        .header-actions {      display: flex;      align-items: center;      gap: $ios-spacing-md;            .btn-ghost {        white-space: nowrap;      }    }        .progress-indicator {      display: flex;      align-items: center;      gap: $ios-spacing-xs;            .progress-bar {        width: 80px;        height: 4px;        background: $ios-border;        border-radius: 2px;        overflow: hidden;                .progress-fill {          height: 100%;          background: linear-gradient(90deg, #007AFF 0%, #34C759 100%);          transition: width 0.3s ease;        }      }            .progress-text {        font-size: $ios-font-size-xs;        color: $ios-text-secondary;        font-weight: $ios-font-weight-medium;      }    }  }  // 滑动条输入框样式  .slider-container {    display: flex;    align-items: center;    gap: $ios-spacing-xs;        input[type="range"] {      flex: 1;    }        .slider-input {      width: 60px;      padding: 4px 8px;      border: 1px solid $ios-border;      border-radius: 4px;      font-size: $ios-font-size-xs;      text-align: center;      background: white;            &:focus {        outline: none;        border-color: $ios-primary;        box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.2);      }    }        .unit-label {      font-size: $ios-font-size-xs;      color: $ios-text-secondary;      min-width: 20px;    }  }  // 进度条样式  .progress-container {    margin-bottom: $ios-spacing-md;        &.progress-updated {      .progress-bar-fill {        animation: progressPulse 0.5s ease;      }    }        .progress-visual {      display: flex;      align-items: center;      gap: $ios-spacing-md;            .linear-progress {        flex: 1;        display: flex;        align-items: center;        gap: $ios-spacing-sm;                .progress-track {          flex: 1;          height: 8px;          background: $ios-background-secondary;          border-radius: 4px;          overflow: hidden;                    .progress-bar-fill {            height: 100%;            background: linear-gradient(90deg, #007AFF 0%, #34C759 100%);            border-radius: 4px;            transition: width 0.3s ease;          }        }                .progress-text {          font-size: $ios-font-size-sm;          font-weight: $ios-font-weight-semibold;          color: $ios-text-primary;          min-width: 40px;        }      }            .circular-progress {        position: relative;        width: 120px;        height: 120px;                .progress-circle {          width: 100%;          height: 100%;          transform: rotate(-90deg);                    circle {            transition: stroke-dashoffset 0.3s ease;          }        }                .progress-text {          position: absolute;          top: 50%;          left: 50%;          transform: translate(-50%, -50%);          text-align: center;                    .progress-percentage {            font-size: $ios-font-size-lg;            font-weight: $ios-font-weight-bold;            color: $ios-text-primary;          }                    .progress-label {            font-size: $ios-font-size-xs;            color: $ios-text-secondary;          }        }      }    }  }  // 进度统计样式  .progress-stats {    display: grid;    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));    gap: $ios-spacing-sm;    margin-bottom: $ios-spacing-md;        .stat-item {      text-align: center;      padding: $ios-spacing-sm;      background: $ios-background-secondary;      border-radius: 8px;            .stat-number {        font-size: $ios-font-size-lg;        font-weight: $ios-font-weight-bold;        color: $ios-text-primary;      }            .stat-label {        font-size: $ios-font-size-xs;        color: $ios-text-secondary;        margin-top: 2px;      }    }  }  // 标签页导航  .tab-navigation {    display: flex;    background: $ios-background-secondary;    border-radius: 8px;    padding: 2px;    margin-bottom: $ios-spacing-md;        .tab-button {      flex: 1;      display: flex;      align-items: center;      justify-content: center;      gap: $ios-spacing-xs;      padding: $ios-spacing-sm $ios-spacing-xs;      border: none;      background: transparent;      color: $ios-text-secondary;      font-size: $ios-font-size-xs;      font-weight: $ios-font-weight-medium;      border-radius: 6px;      transition: all 0.2s ease;      cursor: pointer;            svg {        width: 14px;        height: 14px;      }            &:hover {        color: $ios-text-primary;        background: rgba(0, 122, 255, 0.1);      }            &.active {        background: white;        color: $ios-primary;        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);      }    }  }  // 标签页内容  .tab-content {    min-height: 300px;  }  // 素材解析部分  .materials-section {    // 文本输入区域 - 独立一行    .text-upload-section {      margin-bottom: $ios-spacing-lg;            .upload-item.text-item {        h5 {          margin: 0 0 $ios-spacing-sm 0;          font-size: $ios-font-size-xs;          font-weight: $ios-font-weight-semibold;          color: $ios-text-primary;        }                textarea {          width: 100%;          padding: $ios-spacing-sm;          border: 1px solid $ios-border;          border-radius: 6px;          font-size: $ios-font-size-xs;          resize: vertical;          margin-bottom: $ios-spacing-sm;                    &:focus {            outline: none;            border-color: $ios-primary;            box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.1);          }        }      }    }    // 参考图片和CAD图纸并排布局    .file-upload-grid {      display: grid;      grid-template-columns: 1fr 1fr;      gap: 2%;      margin-bottom: $ios-spacing-lg;            // 移动端响应式 - 改为垂直布局      @media (max-width: 768px) {        grid-template-columns: 1fr;        gap: $ios-spacing-md;      }            .upload-item {        &.image-item, &.cad-item {          h5 {            margin: 0 0 $ios-spacing-sm 0;            font-size: $ios-font-size-xs;            font-weight: $ios-font-weight-semibold;            color: $ios-text-primary;          }                    .file-upload-zone {            border: 2px dashed $ios-border;            border-radius: 8px;            padding: $ios-spacing-lg;            text-align: center;            cursor: pointer;            transition: all 0.2s ease;            min-height: 120px;            display: flex;            flex-direction: column;            justify-content: center;            align-items: center;                        &:hover {              border-color: $ios-primary;              background: rgba(0, 122, 255, 0.02);            }                        svg {              color: $ios-text-secondary;              margin-bottom: $ios-spacing-sm;            }                        p {              margin: 0 0 $ios-spacing-xs 0;              font-size: $ios-font-size-xs;              color: $ios-text-primary;              font-weight: $ios-font-weight-medium;            }                        .hint {              font-size: $ios-font-size-xs;              color: $ios-text-secondary;            }          }        }      }    }    // 保留原有的upload-grid样式作为备选方案    .upload-grid {      display: grid;      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));      gap: $ios-spacing-md;      margin-bottom: $ios-spacing-lg;            .upload-item {        h5 {          margin: 0 0 $ios-spacing-sm 0;          font-size: $ios-font-size-xs;          font-weight: $ios-font-weight-semibold;          color: $ios-text-primary;        }                textarea {          width: 100%;          padding: $ios-spacing-sm;          border: 1px solid $ios-border;          border-radius: 6px;          font-size: $ios-font-size-xs;          resize: vertical;          margin-bottom: $ios-spacing-sm;                    &:focus {            outline: none;            border-color: $ios-primary;            box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.1);          }        }                .file-upload-zone {          border: 2px dashed $ios-border;          border-radius: 8px;          padding: $ios-spacing-lg;          text-align: center;          cursor: pointer;          transition: all 0.2s ease;                    &:hover {            border-color: $ios-primary;            background: rgba(0, 122, 255, 0.02);          }                    svg {            color: $ios-text-secondary;            margin-bottom: $ios-spacing-sm;          }                    p {            margin: 0 0 $ios-spacing-xs 0;            font-size: $ios-font-size-xs;            color: $ios-text-primary;            font-weight: $ios-font-weight-medium;          }                    .hint {            font-size: $ios-font-size-xs;            color: $ios-text-secondary;          }        }      }    }        .materials-list {      position: relative;      z-index: 3; // 确保素材列表在弹窗层级之下但高于其他内容            h5 {        margin: 0 0 $ios-spacing-sm 0;        font-size: $ios-font-size-xs;        font-weight: $ios-font-weight-semibold;        color: $ios-text-primary;      }            .material-cards {        display: grid;        grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));        gap: $ios-spacing-sm;                // 响应式布局优化        @media (max-width: 768px) {          grid-template-columns: 1fr;          gap: $ios-spacing-xs;        }                @media (min-width: 769px) and (max-width: 1024px) {          grid-template-columns: repeat(2, 1fr);        }                .material-card {          border: 1px solid $ios-border;          border-radius: 6px;          padding: $ios-spacing-sm;          background: white;          position: relative;          transition: transform 0.2s ease, box-shadow 0.2s ease;                    // 防止弹窗出现时布局错乱,优化对齐          &:hover {            transform: translateY(-1px);            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);            z-index: 4; // 悬停时提升层级          }                    &.material-text {            border-left: 3px solid #34C759;          }                    &.material-image {            border-left: 3px solid #FF9500;          }                    &.material-cad {            border-left: 3px solid #007AFF;          }                    .material-header {            display: flex;            justify-content: space-between;            align-items: center;            margin-bottom: $ios-spacing-xs;                        .material-type {              font-size: $ios-font-size-xs;              font-weight: $ios-font-weight-medium;              color: $ios-text-secondary;              text-transform: uppercase;            }          }                    .material-name {            font-size: $ios-font-size-xs;            color: $ios-text-primary;            margin-bottom: $ios-spacing-xs;            font-weight: $ios-font-weight-medium;          }                    .parsed-info {            .parsed-tags {              .tag-group {                margin-bottom: $ios-spacing-xs;                                .tag-label {                  font-size: $ios-font-size-xs;                  color: $ios-text-secondary;                  margin-right: $ios-spacing-xs;                }                                .tag {                  display: inline-block;                  background: $ios-background-secondary;                  color: $ios-text-primary;                  padding: 2px 6px;                  border-radius: 4px;                  font-size: $ios-font-size-xs;                  margin-right: 4px;                }              }            }                        .analysis-results {              .color-info {                margin-bottom: $ios-spacing-sm;                                .color-temp {                  font-size: $ios-font-size-xs;                  color: $ios-text-secondary;                }              }                            .enhanced-analysis {                .analysis-section {                  margin-bottom: $ios-spacing-md;                  padding: $ios-spacing-sm;                  background: rgba(0, 122, 255, 0.02);                  border-radius: 6px;                  border: 1px solid rgba(0, 122, 255, 0.1);                                    h6 {                    margin: 0 0 $ios-spacing-xs 0;                    font-size: $ios-font-size-xs;                    font-weight: $ios-font-weight-semibold;                    color: $ios-primary;                  }                                    .color-wheel-info {                    display: flex;                    align-items: center;                    gap: $ios-spacing-xs;                    margin-bottom: $ios-spacing-xs;                                        .color-wheel-icon {                      display: flex;                      align-items: center;                      justify-content: center;                      width: 24px;                      height: 24px;                                            svg {                        color: $ios-primary;                      }                    }                                        span {                      font-size: $ios-font-size-xs;                      color: $ios-text-secondary;                      margin-right: $ios-spacing-sm;                    }                  }                                    .psychology-info {                    display: flex;                    gap: $ios-spacing-xs;                    flex-wrap: wrap;                                        .mood-tag, .atmosphere-tag {                      display: inline-block;                      background: rgba(52, 199, 89, 0.1);                      color: #34C759;                      padding: 2px 6px;                      border-radius: 4px;                      font-size: $ios-font-size-xs;                      font-weight: $ios-font-weight-medium;                    }                                        .atmosphere-tag {                      background: rgba(255, 149, 0, 0.1);                      color: #FF9500;                    }                  }                                    .form-metrics {                    .metric-item {                      display: flex;                      align-items: center;                      gap: $ios-spacing-sm;                      margin-bottom: $ios-spacing-xs;                                            .metric-label {                        font-size: $ios-font-size-xs;                        color: $ios-text-secondary;                        min-width: 60px;                      }                                            .metric-bar {                        flex: 1;                        height: 4px;                        background: $ios-border;                        border-radius: 2px;                        overflow: hidden;                                                .metric-fill {                          height: 100%;                          background: linear-gradient(90deg, #34C759, #007AFF);                          transition: width 0.3s ease;                        }                      }                    }                  }                                    .material-info {                    display: flex;                    gap: $ios-spacing-xs;                    flex-wrap: wrap;                                        .material-tag, .surface-tag {                      display: inline-block;                      background: rgba(175, 82, 222, 0.1);                      color: #AF52DE;                      padding: 2px 6px;                      border-radius: 4px;                      font-size: $ios-font-size-xs;                      font-weight: $ios-font-weight-medium;                    }                                        .surface-tag {                      background: rgba(255, 45, 85, 0.1);                      color: #FF2D55;                    }                  }                                    .pattern-info {                    display: flex;                    gap: $ios-spacing-xs;                    flex-wrap: wrap;                                        .pattern-tag {                      display: inline-block;                      background: rgba(88, 86, 214, 0.1);                      color: #5856D6;                      padding: 2px 6px;                      border-radius: 4px;                      font-size: $ios-font-size-xs;                      font-weight: $ios-font-weight-medium;                    }                  }                                    .lighting-info {                    display: flex;                    gap: $ios-spacing-xs;                    flex-wrap: wrap;                                        .mood-tag {                      display: inline-block;                      background: rgba(255, 204, 0, 0.1);                      color: #FFCC00;                      padding: 2px 6px;                      border-radius: 4px;                      font-size: $ios-font-size-xs;                      font-weight: $ios-font-weight-medium;                    }                                        .brightness-tag {                      display: inline-block;                      background: rgba(255, 149, 0, 0.1);                      color: #FF9500;                      padding: 2px 6px;                      border-radius: 4px;                      font-size: $ios-font-size-xs;                      font-weight: $ios-font-weight-medium;                    }                  }                }              }            }          }        }      }    }  }  // 需求映射部分  .mapping-section {    .consistency-warning {      display: flex;      align-items: center;      gap: $ios-spacing-xs;      padding: $ios-spacing-sm;      background: rgba(255, 59, 48, 0.1);      border: 1px solid rgba(255, 59, 48, 0.2);      border-radius: 6px;      color: #FF3B30;      font-size: $ios-font-size-xs;      margin-bottom: $ios-spacing-md;            svg {        width: 16px;        height: 16px;        flex-shrink: 0;      }    }        .indicator-grid {      display: grid;      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));      gap: $ios-spacing-lg;            .indicator-group {        h5 {          margin: 0 0 $ios-spacing-sm 0;          font-size: $ios-font-size-xs;          font-weight: $ios-font-weight-semibold;          color: $ios-text-primary;          padding-bottom: $ios-spacing-xs;          border-bottom: 1px solid $ios-border;        }                .indicator-item {          margin-bottom: $ios-spacing-md;                    label {            display: block;            font-size: $ios-font-size-xs;            color: $ios-text-secondary;            margin-bottom: $ios-spacing-xs;            font-weight: $ios-font-weight-medium;          }                    .slider-container {            display: flex;            align-items: center;            gap: $ios-spacing-sm;                        input[type="range"] {              flex: 1;              height: 4px;              background: $ios-border;              border-radius: 2px;              outline: none;              -webkit-appearance: none;              appearance: none;                            &::-webkit-slider-thumb {                  -webkit-appearance: none;                  appearance: none;                  width: 16px;                height: 16px;                background: #007AFF;                border-radius: 50%;                cursor: pointer;              }                            &::-moz-range-thumb {                width: 16px;                height: 16px;                background: #007AFF;                border-radius: 50%;                cursor: pointer;                border: none;              }            }                        .slider-value {              font-size: $ios-font-size-xs;              color: $ios-text-primary;              font-weight: $ios-font-weight-medium;              min-width: 40px;              text-align: right;            }          }          // RGB控件样式          .rgb-controls {            display: flex;            flex-direction: column;            gap: $ios-spacing-xs;                        .rgb-slider {              display: flex;              align-items: center;              gap: $ios-spacing-xs;                            span:first-child {                font-size: $ios-font-size-xs;                font-weight: $ios-font-weight-semibold;                color: $ios-text-secondary;                width: 12px;              }                            input[type="range"] {                flex: 1;                height: 4px;                background: $ios-border;                border-radius: 2px;                outline: none;                -webkit-appearance: none;                appearance: none;                                &::-webkit-slider-thumb {                  -webkit-appearance: none;                  appearance: none;                  width: 14px;                  height: 14px;                  background: #007AFF;                  border-radius: 50%;                  cursor: pointer;                }              }                            span:last-child {                font-size: $ios-font-size-xs;                color: $ios-text-primary;                font-weight: $ios-font-weight-medium;                min-width: 30px;                text-align: right;              }            }                        .color-preview {              width: 100%;              height: 30px;              border-radius: 6px;              border: 1px solid $ios-border;              margin-top: $ios-spacing-xs;              transition: background-color 0.1s ease; // 减少过渡时间,提高响应速度              // 移除默认背景色,完全依赖Angular绑定              will-change: background-color; // 优化GPU渲染            }          }        }      }    }    // 预设氛围样式    .atmosphere-presets {      display: grid;      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));      gap: $ios-spacing-sm;            .preset-card {        display: flex;        align-items: center;        gap: $ios-spacing-sm;        padding: $ios-spacing-sm;        border: 1px solid $ios-border;        border-radius: 8px;        background: white;        cursor: pointer;        transition: all 0.2s ease;                &:hover {          border-color: #007AFF;          background: rgba(0, 122, 255, 0.02);        }                .preset-color {          width: 40px;          height: 40px;          border-radius: 6px;          border: 1px solid $ios-border;          flex-shrink: 0;        }                .preset-info {          flex: 1;                    .preset-name {            font-size: $ios-font-size-xs;            font-weight: $ios-font-weight-semibold;            color: $ios-text-primary;            margin-bottom: 2px;          }                    .preset-details {            font-size: $ios-font-size-xs;            color: $ios-text-secondary;            margin-bottom: $ios-spacing-xs;          }                    .preset-materials {            display: flex;            gap: 4px;            flex-wrap: wrap;                        .material-tag {              display: inline-block;              background: $ios-background-secondary;              color: $ios-text-secondary;              padding: 2px 6px;              border-radius: 4px;              font-size: $ios-font-size-xs;            }          }        }      }    }  }  // 进度管理样式  .progress-section {    .progress-overview {      display: flex;      gap: 2rem;      margin-bottom: 2rem;            .progress-stats {        flex: 1;        display: grid;        grid-template-columns: repeat(4, 1fr);        gap: 1rem;                .stat-item {          text-align: center;          padding: 1rem;          background: #f8f9fa;          border-radius: 8px;                    .stat-number {            font-size: 2rem;            font-weight: 600;            color: #007AFF;            margin-bottom: 0.5rem;          }                    .stat-label {            font-size: 0.875rem;            color: #666;          }        }      }            .progress-chart {        .chart-container {          display: flex;          justify-content: center;          align-items: center;                    .progress-circle {            position: relative;                        .progress-text {              position: absolute;              top: 50%;              left: 50%;              transform: translate(-50%, -50%);              text-align: center;                            .progress-percentage {                font-size: 1.5rem;                font-weight: 600;                color: #34C759;              }                            .progress-label {                font-size: 0.75rem;                color: #666;                margin-top: 0.25rem;              }            }          }        }      }    }        .history-section {      margin-bottom: 2rem;            .section-header {        display: flex;        justify-content: space-between;        align-items: center;        margin-bottom: 1rem;                h5 {          margin: 0;          color: #333;        }                .history-controls {          display: flex;          gap: 1rem;          align-items: center;                    .history-select {            padding: 0.5rem;            border: 1px solid #ddd;            border-radius: 4px;            background: white;            min-width: 200px;          }        }      }            .history-timeline {        .timeline-item {          display: flex;          align-items: flex-start;          margin-bottom: 1rem;          cursor: pointer;          padding: 0.5rem;          border-radius: 4px;          transition: background-color 0.2s;                    &:hover {            background: #f8f9fa;          }                    .timeline-marker {            width: 12px;            height: 12px;            border-radius: 50%;            background: #007AFF;            margin-right: 1rem;            margin-top: 0.25rem;            flex-shrink: 0;          }                    .timeline-content {            flex: 1;                        .timeline-header {              display: flex;              justify-content: space-between;              margin-bottom: 0.25rem;                            .timeline-time {                font-weight: 500;                color: #333;              }                            .timeline-author {                color: #666;                font-size: 0.875rem;              }            }                        .timeline-summary {              color: #666;              font-size: 0.875rem;            }          }        }      }            .empty-history {        text-align: center;        padding: 2rem;        color: #666;                p {          margin-bottom: 1rem;        }      }    }        .status-distribution {      h5 {        margin-bottom: 1rem;        color: #333;      }            .status-bars {        .status-bar {          margin-bottom: 1rem;                    .status-info {            display: flex;            justify-content: space-between;            margin-bottom: 0.5rem;                        .status-name {              font-weight: 500;              color: #333;            }                        .status-count {              color: #666;            }          }                    .status-progress {            height: 8px;            background: #e5e5ea;            border-radius: 4px;            overflow: hidden;                        .progress-bar {              height: 100%;              transition: width 0.3s ease;                            &.confirmed {                background: #34C759;              }                            &.pending {                background: #FF9500;              }                            &.rejected {                background: #FF3B30;              }            }          }        }      }    }  }  // 协作验证部分  .collaboration-section {    .list-header {      display: flex;      justify-content: space-between;      align-items: center;      margin-bottom: $ios-spacing-md;      padding-bottom: $ios-spacing-sm;      border-bottom: 1px solid $ios-border;            h5 {        margin: 0;        font-size: $ios-font-size-sm;        font-weight: $ios-font-weight-semibold;        color: $ios-text-primary;      }            .list-controls {        display: flex;        gap: $ios-spacing-sm;      }    }        .requirements-list {      .requirement-item {        border: 1px solid $ios-border;        border-radius: 8px;        padding: $ios-spacing-md;        margin-bottom: $ios-spacing-md;        background: white;        transition: all 0.2s ease;                &.confirmed {          border-color: #34C759;          background: rgba(52, 199, 89, 0.02);        }                &.rejected {          border-color: #FF3B30;          background: rgba(255, 59, 48, 0.02);        }                &.pending {          border-color: #FF9500;          background: rgba(255, 149, 0, 0.02);        }                .requirement-header {          display: flex;          justify-content: space-between;          align-items: flex-start;          margin-bottom: $ios-spacing-sm;                    .requirement-info {            flex: 1;                        h6 {              margin: 0 0 $ios-spacing-xs 0;              font-size: $ios-font-size-sm;              font-weight: $ios-font-weight-semibold;              color: $ios-text-primary;            }                        p {              margin: 0 0 $ios-spacing-xs 0;              font-size: $ios-font-size-xs;              color: $ios-text-secondary;              line-height: 1.4;            }                        .requirement-tags {              display: flex;              gap: $ios-spacing-xs;              flex-wrap: wrap;                            .tag {                display: inline-block;                background: $ios-background-secondary;                color: $ios-text-secondary;                padding: 2px 6px;                border-radius: 4px;                font-size: $ios-font-size-xs;              }            }          }                    .requirement-meta {            display: flex;            flex-direction: column;            gap: $ios-spacing-xs;            align-items: flex-end;                        .priority-select {              padding: 4px 8px;              border: 1px solid $ios-border;              border-radius: 4px;              font-size: $ios-font-size-xs;              background: white;                            &:focus {                outline: none;                border-color: #007AFF;              }            }                        .status-badge {              padding: 2px 8px;              border-radius: 12px;              font-size: $ios-font-size-xs;              font-weight: $ios-font-weight-medium;                            &.confirmed {                background: #34C759;                color: white;              }                            &.rejected {                background: #FF3B30;                color: white;              }                            &.pending {                background: #FF9500;                color: white;              }            }          }        }                .requirement-actions {          display: flex;          gap: $ios-spacing-sm;          align-items: center;                    .unread-indicator {            display: inline-block;            width: 6px;            height: 6px;            background: #FF3B30;            border-radius: 50%;            margin-left: 4px;          }        }                .comments-section {          margin-top: $ios-spacing-md;          padding-top: $ios-spacing-md;          border-top: 1px solid $ios-border;                    .comments-list {            margin-bottom: $ios-spacing-md;                        .comment-item {              padding: $ios-spacing-sm;              border: 1px solid $ios-border;              border-radius: 6px;              margin-bottom: $ios-spacing-sm;              background: $ios-background-secondary;                            &.resolved {                opacity: 0.6;                background: rgba(52, 199, 89, 0.05);              }                            .comment-header {                display: flex;                align-items: center;                gap: $ios-spacing-sm;                margin-bottom: $ios-spacing-xs;                                .comment-author {                  font-size: $ios-font-size-xs;                  font-weight: $ios-font-weight-semibold;                  color: $ios-text-primary;                }                                .comment-role {                  font-size: $ios-font-size-xs;                  color: $ios-text-secondary;                  background: white;                  padding: 1px 4px;                  border-radius: 3px;                }                                .comment-time {                  font-size: $ios-font-size-xs;                  color: $ios-text-tertiary;                  margin-left: auto;                }              }                            .comment-content {                font-size: $ios-font-size-xs;                color: $ios-text-primary;                line-height: 1.4;              }            }          }                    .add-comment {            display: flex;            gap: $ios-spacing-sm;            align-items: flex-end;                        textarea {              flex: 1;              padding: $ios-spacing-xs;              border: 1px solid $ios-border;              border-radius: 6px;              font-size: $ios-font-size-xs;              resize: vertical;              min-height: 60px;                            &:focus {                outline: none;                border-color: #007AFF;              }            }          }        }      }    }  }  // 进度管理部分  .progress-section {    .progress-overview {      display: grid;      grid-template-columns: 1fr auto;      gap: $ios-spacing-lg;      margin-bottom: $ios-spacing-lg;            .progress-stats {        display: flex;        gap: $ios-spacing-lg;                .stat-item {          text-align: center;                    .stat-number {            font-size: 24px;            font-weight: $ios-font-weight-bold;            color: $ios-primary;            margin-bottom: $ios-spacing-xs;          }                    .stat-label {            font-size: $ios-font-size-xs;            color: $ios-text-secondary;          }        }      }            .progress-chart {        .chart-container {          position: relative;                    .progress-circle {            position: relative;                        .progress-text-center {              position: absolute;              top: 50%;              left: 50%;              transform: translate(-50%, -50%);              text-align: center;                            .progress-percentage {                font-size: 18px;                font-weight: $ios-font-weight-bold;                color: $ios-primary;              }                            .progress-label {                font-size: $ios-font-size-xs;                color: $ios-text-secondary;              }            }          }        }      }    }        .timeline {      h5 {        margin: 0 0 $ios-spacing-sm 0;        font-size: $ios-font-size-xs;        font-weight: $ios-font-weight-semibold;        color: $ios-text-primary;      }            .timeline-list {        .timeline-item {          display: flex;          align-items: center;          gap: $ios-spacing-sm;          padding: $ios-spacing-sm 0;          border-bottom: 1px dashed $ios-border;                    &:last-child {            border-bottom: none;          }                    .timeline-marker {            width: 8px;            height: 8px;            border-radius: 50%;            background: $ios-border;            flex-shrink: 0;          }                    &.status-confirmed .timeline-marker {            background: #34C759;          }                    &.status-rejected .timeline-marker {            background: #FF3B30;          }                    &.status-pending .timeline-marker {            background: #007AFF;          }                    .timeline-content {            .timeline-title {              font-size: $ios-font-size-xs;              color: $ios-text-primary;              font-weight: $ios-font-weight-medium;            }                        .timeline-status {              font-size: $ios-font-size-xs;              color: $ios-text-secondary;            }          }        }      }    }  }  // 通用按钮样式  .btn-primary, .btn-success, .btn-ghost {    border: none;    border-radius: 6px;    font-size: $ios-font-size-xs;    font-weight: $ios-font-weight-medium;    cursor: pointer;    transition: all 0.2s ease;        &.btn-sm {      padding: 6px 12px;    }        &.btn-xs {      padding: 4px 8px;    }        &:disabled {      opacity: 0.5;      cursor: not-allowed;    }  }    .btn-primary {    background: $ios-primary;    color: white;        &:hover:not(:disabled) {      background: color.adjust($ios-primary, $lightness: -10%);    }  }    .btn-success {    background: #34C759;    color: white;        &:hover:not(:disabled) {      background: color.adjust(#34C759, $lightness: -10%);    }  }    .btn-ghost {    background: transparent;    color: $ios-text-secondary;    border: 1px solid $ios-border;        &:hover:not(:disabled) {      background: $ios-background-secondary;      color: $ios-text-primary;    }  }}// 进度动画@keyframes progressPulse {  0% { opacity: 0.6; }  50% { opacity: 1; }  100% { opacity: 0.6; }}// 全局通知样式.execution-notification {  position: fixed;  top: 20px;  right: 20px;  background: #4CAF50;  color: white;  padding: 16px 24px;  border-radius: 8px;  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);  z-index: 1000;  animation: slideInRight 0.3s ease-out;    &.error {    background: #f44336;  }    &.warning {    background: #ff9800;  }}@keyframes slideInRight {  from {    transform: translateX(100%);    opacity: 0;  }  to {    transform: translateX(0);    opacity: 1;  }}// 紧凑型流程进度指示器.compact-stage-indicators {  display: flex;  align-items: center;  margin: 0 16px;    .stage-chain {    display: flex;    align-items: center;    gap: 8px;  }    .stage-dot {    width: 28px;    height: 28px;    border-radius: 50%;    display: flex;    align-items: center;    justify-content: center;    font-size: 12px;    font-weight: 600;    color: white;    cursor: pointer;    transition: all 0.3s ease;    position: relative;        .stage-number {      font-size: 11px;      font-weight: bold;    }        // 已完成状态 - 绿色    &.stage-completed {      background: linear-gradient(135deg, #10b981, #059669);      box-shadow: 0 2px 8px rgba(16, 185, 129, 0.3);            &:hover {        transform: scale(1.1);        box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4);      }    }        // 进行中状态 - 红色    &.stage-in-progress {      background: linear-gradient(135deg, #ef4444, #dc2626);      box-shadow: 0 2px 8px rgba(239, 68, 68, 0.3);      animation: pulse-red 2s infinite;            &:hover {        transform: scale(1.1);        box-shadow: 0 4px 12px rgba(239, 68, 68, 0.4);      }    }        // 未进行状态 - 黄色    &.stage-pending {      background: linear-gradient(135deg, #f59e0b, #d97706);      box-shadow: 0 2px 8px rgba(245, 158, 11, 0.3);            &:hover {        transform: scale(1.1);        box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);      }    }  }    .stage-connector {    width: 20px;    height: 3px;    border-radius: 2px;    transition: all 0.3s ease;        &.completed {      background: linear-gradient(90deg, #10b981, #059669);    }        &.pending {      background: #e5e7eb;    }  }}// 进行中状态的脉冲动画@keyframes pulse-red {  0%, 100% {    box-shadow: 0 2px 8px rgba(239, 68, 68, 0.3);  }  50% {    box-shadow: 0 2px 12px rgba(239, 68, 68, 0.6);  }}// 更新header-actions布局.header-actions {  display: flex;  align-items: center;  gap: 16px;    .btn-ghost {    flex-shrink: 0;  }    .compact-stage-indicators {    flex-shrink: 0;  }    .progress-indicator {    flex-shrink: 0;  }}// 保存状态区域.save-section {  margin-top: 24px;  padding: 16px;  background: #f8fafc;  border-radius: 8px;  border: 1px solid #e2e8f0;    display: flex;  justify-content: space-between;  align-items: center;  gap: 16px;    .save-status {    display: flex;    align-items: center;    gap: 8px;        .save-icon {      font-size: 16px;      font-weight: bold;            &.save-icon-saved {        color: #10b981;      }            &.save-icon-saving {        color: #3b82f6;        animation: spin 1s linear infinite;      }            &.save-icon-error {        color: #ef4444;      }            &.save-icon-unsaved {        color: #f59e0b;      }    }        .save-text {      font-size: 14px;      color: #64748b;    }  }    .save-actions {    display: flex;    align-items: center;    gap: 16px;        .btn-secondary {      padding: 8px 16px;      background: #3b82f6;      color: white;      border: none;      border-radius: 6px;      font-size: 14px;      cursor: pointer;      transition: all 0.2s ease;            &:hover:not(:disabled) {        background: #2563eb;        transform: translateY(-1px);      }            &:disabled {        background: #94a3b8;        cursor: not-allowed;        transform: none;      }            .loading-spinner {        display: inline-block;        width: 12px;        height: 12px;        border: 2px solid transparent;        border-top: 2px solid currentColor;        border-radius: 50%;        animation: spin 1s linear infinite;        margin-right: 8px;      }    }        .auto-save-toggle {      .toggle-label {        display: flex;        align-items: center;        gap: 8px;        cursor: pointer;                .toggle-input {          display: none;        }                .toggle-slider {          width: 40px;          height: 20px;          background: #cbd5e1;          border-radius: 10px;          position: relative;          transition: all 0.3s ease;                    &::after {            content: '';            position: absolute;            top: 2px;            left: 2px;            width: 16px;            height: 16px;            background: white;            border-radius: 50%;            transition: all 0.3s ease;          }        }                .toggle-input:checked + .toggle-slider {          background: #10b981;                    &::after {            transform: translateX(20px);          }        }                .toggle-text {          font-size: 14px;          color: #64748b;        }      }    }  }}@keyframes spin {  from {    transform: rotate(0deg);  }  to {    transform: rotate(360deg);  }}// 需求映射测试相关样式.test-progress {  margin-bottom: 32px;  padding: 20px;  background: #f8f9fa;  border-radius: 8px;  border: 1px solid #e9ecef;  h3 {    margin: 0 0 16px 0;    font-size: 18px;    color: #495057;  }  .steps-container {    display: grid;    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));    gap: 16px;  }  .step-item {    display: flex;    align-items: center;    padding: 12px;    background: white;    border-radius: 6px;    border: 2px solid #e9ecef;    transition: all 0.2s ease;    &.step-pending {      border-color: #e9ecef;      .step-icon { color: #6c757d; }    }    &.step-in-progress {      border-color: #ffc107;      background: #fff8e1;      .step-icon { color: #ffc107; }    }    &.step-completed {      border-color: #28a745;      background: #f8fff9;      .step-icon { color: #28a745; }    }    &.step-error {      border-color: #dc3545;      background: #fff5f5;      .step-icon { color: #dc3545; }    }    .step-icon {      font-size: 20px;      margin-right: 12px;    }    .step-info {      .step-name {        font-weight: 500;        font-size: 14px;        color: #495057;      }      .step-status {        font-size: 12px;        color: #6c757d;        margin-top: 2px;      }    }  }}.upload-section,.analysis-section,.mapping-section {  margin-bottom: 32px;  padding: 24px;  background: white;  border-radius: 8px;  border: 1px solid #e9ecef;  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);  &.disabled {    opacity: 0.6;    pointer-events: none;  }  h3 {    margin: 0 0 20px 0;    font-size: 20px;    color: #495057;    border-bottom: 2px solid #e9ecef;    padding-bottom: 8px;  }}.upload-area {  position: relative;  min-height: 200px;  .upload-dropzone {    display: flex;    flex-direction: column;    align-items: center;    justify-content: center;    min-height: 200px;    border: 2px dashed #dee2e6;    border-radius: 8px;    background: #f8f9fa;    cursor: pointer;    transition: all 0.2s ease;    position: relative;    &:hover {      border-color: #667eea;      background: #f0f4ff;    }    .upload-icon {      font-size: 48px;      margin-bottom: 16px;      opacity: 0.7;    }    .upload-text {      font-size: 18px;      font-weight: 500;      color: #495057;      margin-bottom: 8px;    }    .upload-hint {      font-size: 14px;      color: #6c757d;    }    .file-input {      position: absolute;      top: 0;      left: 0;      width: 100%;      height: 100%;      opacity: 0;      cursor: pointer;    }  }  .uploaded-files {    h4 {      margin: 0 0 16px 0;      font-size: 16px;      color: #495057;    }    .files-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));      gap: 16px;    }    .file-item {      border: 1px solid #e9ecef;      border-radius: 6px;      overflow: hidden;      background: white;      .file-preview {        width: 100%;        height: 120px;        object-fit: cover;      }      .file-info {        padding: 8px;        .file-name {          font-size: 12px;          font-weight: 500;          color: #495057;          margin-bottom: 4px;          white-space: nowrap;          overflow: hidden;          text-overflow: ellipsis;        }        .file-size {          font-size: 11px;          color: #6c757d;        }      }    }  }  .loading-overlay {    position: absolute;    top: 0;    left: 0;    right: 0;    bottom: 0;    background: rgba(255, 255, 255, 0.9);    display: flex;    flex-direction: column;    align-items: center;    justify-content: center;    border-radius: 8px;  }}.analysis-loading,.mapping-loading {  display: flex;  align-items: center;  padding: 24px;  background: #f0f4ff;  border-radius: 6px;  border: 1px solid #e3f2fd;  .loading-text {    margin-left: 16px;    h4 {      margin: 0 0 8px 0;      font-size: 16px;      color: #495057;    }    p {      margin: 0;      font-size: 14px;      color: #6c757d;    }  }}.analysis-error,.mapping-error {  display: flex;  align-items: center;  padding: 24px;  background: #fff5f5;  border-radius: 6px;  border: 1px solid #ffebee;  .error-icon {    font-size: 24px;    margin-right: 16px;  }  .error-text {    flex: 1;    h4 {      margin: 0 0 8px 0;      font-size: 16px;      color: #dc3545;    }    p {      margin: 0 0 12px 0;      font-size: 14px;      color: #6c757d;    }    .retry-btn {      background: #dc3545;      color: white;      border: none;      padding: 8px 16px;      border-radius: 4px;      cursor: pointer;      font-size: 14px;      transition: background 0.2s ease;      &:hover {        background: #c82333;      }    }  }}.analysis-result,.mapping-result {  h4 {    margin: 0 0 16px 0;    font-size: 18px;    color: #28a745;    display: flex;    align-items: center;  }  .analysis-summary {    display: grid;    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));    gap: 16px;    margin-top: 16px;  }  .summary-item {    display: flex;    justify-content: space-between;    padding: 12px;    background: #f8f9fa;    border-radius: 4px;    .label {      font-weight: 500;      color: #495057;    }    .value {      color: #6c757d;    }  }}.mapping-section-item {  margin-bottom: 24px;  h5 {    margin: 0 0 16px 0;    font-size: 16px;    color: #495057;    border-bottom: 1px solid #e9ecef;    padding-bottom: 8px;  }  .scene-info {    .info-row {      display: flex;      justify-content: space-between;      padding: 8px 0;      border-bottom: 1px solid #f8f9fa;      .label {        font-weight: 500;        color: #495057;      }      .value {        color: #6c757d;      }    }    .atmosphere-preview {      margin-top: 16px;      text-align: center;      .preview-image {        max-width: 300px;        max-height: 200px;        border-radius: 6px;        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);      }      .preview-label {        margin-top: 8px;        font-size: 14px;        color: #6c757d;      }    }  }  .params-grid {    display: grid;    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));    gap: 20px;  }  .param-group {    background: #f8f9fa;    padding: 16px;    border-radius: 6px;    h6 {      margin: 0 0 12px 0;      font-size: 14px;      font-weight: 600;      color: #495057;    }    .param-item {      display: flex;      justify-content: space-between;      padding: 6px 0;      border-bottom: 1px solid #e9ecef;      &:last-child {        border-bottom: none;      }      .label {        font-size: 13px;        color: #6c757d;      }      .value {        font-size: 13px;        font-weight: 500;        color: #495057;      }    }  }}.analysis-placeholder,.mapping-placeholder {  display: flex;  flex-direction: column;  align-items: center;  justify-content: center;  min-height: 150px;  color: #6c757d;  .placeholder-icon {    font-size: 48px;    margin-bottom: 16px;    opacity: 0.7;  }  .placeholder-text {    text-align: center;    h4 {      margin: 0 0 8px 0;      font-size: 16px;    }    p {      margin: 0;      font-size: 14px;      opacity: 0.8;    }  }}.test-actions {  margin-top: 24px;  text-align: center;  .download-btn {    display: inline-flex;    align-items: center;    gap: 8px;    background: #667eea;    color: white;    border: none;    padding: 12px 24px;    border-radius: 6px;    cursor: pointer;    font-size: 14px;    font-weight: 500;    transition: all 0.2s ease;    &:hover {      background: #5a6fd8;      transform: translateY(-1px);    }    svg {      width: 16px;      height: 16px;    }  }}.loading-spinner {  width: 24px;  height: 24px;  border: 2px solid #f3f3f3;  border-top: 2px solid #667eea;  border-radius: 50%;  animation: spin 1s linear infinite;}// 响应式设计@media (max-width: 768px) {  .test-progress {    padding: 16px;    .steps-container {      grid-template-columns: 1fr;    }  }  .upload-section,  .analysis-section,  .mapping-section {    padding: 16px;  }  .params-grid {    grid-template-columns: 1fr;  }  .analysis-summary {    grid-template-columns: 1fr;  }}@keyframes pulse {  0%, 100% { opacity: 1; }  50% { opacity: 0.5; }}
 |