*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{color:#e8e9eb;background:#131517;font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif}.app{height:100%;display:flex;position:relative}.app>div:first-child{flex:1;min-width:0}.viewport{position:relative}.viewport>div:first-child{width:100%;height:100%}.scene-loading{color:#cfd2d6;white-space:nowrap;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#181a1dc7;border:1px solid #2e3136;border-radius:10px;align-items:center;gap:10px;padding:12px 20px;font-size:14px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.scene-loading-dot{background:#3fa9f5;border-radius:50%;width:8px;height:8px;animation:1.1s ease-in-out infinite scene-loading-pulse}@keyframes scene-loading-pulse{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}.stats{z-index:1!important;pointer-events:none!important;position:absolute!important;bottom:8px!important;left:8px!important}.stats canvas{transform-origin:0 100%;transform:scale(.75)}.panel-outer{flex-shrink:0;width:300px;transition:transform .25s;position:relative}.panel{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#181a1deb;border-left:1px solid #2e3136;width:100%;height:100%;padding:24px 20px;overflow-y:auto}.panel-toggle{z-index:100;color:#e8e9eb;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#181a1de6;border:1px solid #3a3e44;border-radius:10px;width:40px;height:40px;font-size:18px;display:none;position:absolute;top:12px;right:12px}.panel h1{font-size:20px;font-weight:600}.panel .hint{color:#8a8d91;margin-top:6px;font-size:12px}.panel .bmw-hint{color:#3fa9f5;align-items:center;gap:6px;display:flex}.panel .bmw-hint:before{content:"";background:#3fa9f5;border-radius:50%;width:7px;height:7px;animation:1.1s ease-in-out infinite bmw-pulse}@keyframes bmw-pulse{0%,to{opacity:.3}50%{opacity:1}}.roof-toggle{color:#cfd2d6;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;margin-top:14px;font-size:13px;display:flex}.roof-toggle input{accent-color:#3fa9f5;cursor:pointer;width:15px;height:15px}.presets button.view-active{background:#24303a;border-color:#3fa9f5}.loading{color:#cfd2d6;white-space:nowrap;font-size:14px}.model-error{text-align:center;color:#f0d6d6;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#281818eb;border:1px solid #6b3a3a;border-radius:12px;padding:16px 22px}.model-error-title{font-size:15px;font-weight:600}.model-error-sub{color:#d8b8b8;margin-top:6px;font-size:12px}.credit{color:#61666c;margin-top:28px;font-size:11px;line-height:1.6}.section{margin-top:24px}.section h2{color:#9fa3a8;letter-spacing:1px;margin-bottom:10px;font-size:13px;font-weight:500}.presets{flex-wrap:wrap;gap:8px;display:flex}.presets button{color:#e8e9eb;cursor:pointer;background:#24272b;border:1px solid #3a3e44;border-radius:8px;padding:8px 14px;font-size:13px;transition:border-color .15s,background .15s}.presets button:hover{background:#2e3237;border-color:#3fa9f5}.parts{grid-template-columns:1fr 1fr;gap:6px;display:grid}.part{color:#cfd2d6;cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;transition:background .15s,border-color .15s;display:flex}.part:hover{background:#24272b}.part.active{color:#fff;background:#24272b;border-color:#3fa9f5}.part .dot{border:1px solid #ffffff40;border-radius:4px;flex-shrink:0;width:12px;height:12px}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch{cursor:pointer;border:2px solid #ffffff26;border-radius:10px;width:34px;height:34px;transition:transform .12s,border-color .15s}.swatch:hover{transform:scale(1.1)}.swatch.active{border-color:#3fa9f5;transform:scale(1.1)}.brand-mark{z-index:90;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:baseline;gap:9px;padding:6px 10px;transition:background .18s;display:flex;position:absolute;top:22px;left:26px}.brand-mark:hover{background:#ffffff0f}.brand-cn{letter-spacing:.2em;color:#ece7e1;font-size:16px;font-weight:500}.brand-en{letter-spacing:.28em;color:#8a8d91;font-size:10px}.landing{z-index:200;background:radial-gradient(70% 55% at 50% 40%,#1c1f23 0%,#101214 58%,#08090a 100%);justify-content:center;align-items:center;transition:opacity .58s,transform .58s,filter .58s;display:flex;position:absolute;inset:0;overflow:hidden}.landing-exit{opacity:0;filter:blur(2px);pointer-events:none;transform:scale(1.035)}.landing-glow{aspect-ratio:1;pointer-events:none;background:radial-gradient(circle,#b0835621 0%,#b0835600 62%);width:min(78vw,900px);position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.landing-inner{text-align:center;flex-direction:column;align-items:center;padding:0 24px;display:flex;position:relative}.landing-overline{letter-spacing:.42em;text-transform:uppercase;color:#8a7f72;margin-bottom:6.78vh;font-size:2vh}.landing-name{letter-spacing:.1em;text-indent:.1em;color:#f2ece5;font-size:clamp(105px,14vw,21.11vh);font-weight:300;line-height:1}.landing-en{letter-spacing:.62em;text-indent:.62em;color:#b08356;margin-top:4vh;font-size:2.44vh}.landing-rule{background:linear-gradient(90deg,#0000,#b08356bf,#0000);width:14.67vh;height:1px;margin:7vh 0 0;display:block}.landing-desc{letter-spacing:.16em;color:#cdc7c0;margin-top:5.78vh;font-size:3.33vh}.landing-start{letter-spacing:.3em;text-indent:.3em;color:#efe9e2;cursor:pointer;background:#b0835614;border:1px solid #b0835680;border-radius:2px;align-items:center;gap:2.44vh;margin-top:10.44vh;padding:2.89vh 6.78vh;font-family:inherit;font-size:2.56vh;transition:background .22s,border-color .22s,transform .22s;display:inline-flex}.landing-start:hover{background:#b0835633;border-color:#c49a6cf2}.landing-start:active{transform:translateY(1px)}.landing-start:focus-visible{outline-offset:3px;outline:2px solid #b08356}.landing-start-arrow{text-indent:0;letter-spacing:0;font-size:2.78vh;transition:transform .22s}.landing-start:hover .landing-start-arrow{transform:translate(4px)}.landing-foot{letter-spacing:.2em;color:#6b6862;margin-top:7vh;font-size:2vh}.landing-credit{text-align:center;letter-spacing:.08em;color:#3f4145;pointer-events:none;font-size:10px;position:absolute;bottom:20px;left:0;right:0}.landing-watch{z-index:2;letter-spacing:.12em;color:#8b8880;background:#0a0a0b8c;border:1px solid #c8a96b38;padding:7px 14px;font-size:12px;text-decoration:none;transition:color .25s,border-color .25s;position:absolute;bottom:44px;right:26px}.landing-watch:hover{color:#c8a96b;border-color:#c8a96b}@media (width<=640px){.landing-watch{padding:6px 12px;font-size:11px;bottom:26px;right:50%;transform:translate(50%)}.landing-credit{letter-spacing:.04em;font-size:9px;bottom:4px}}@keyframes landing-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.landing-overline,.landing-name,.landing-en,.landing-rule,.landing-desc,.landing-start,.landing-foot{animation:.85s cubic-bezier(.22,.68,.32,1) both landing-rise}.landing-overline{animation-delay:50ms}.landing-name{animation-delay:.16s}.landing-en{animation-delay:.3s}.landing-rule{animation-delay:.4s}.landing-desc{animation-delay:.48s}.landing-start{animation-delay:.6s}.landing-foot{animation-delay:.72s}@media (width<=768px){.panel-outer{z-index:99;width:280px;position:absolute;top:0;bottom:0;right:0;transform:translate(100%)}.panel-outer.panel-open{transform:translate(0)}.panel-toggle{justify-content:center;align-items:center;display:flex}.panel{border-left:1px solid #2e3136;padding:16px 14px;box-shadow:-4px 0 20px #00000059}.panel h1{font-size:17px}.panel .hint{font-size:11px}.section{margin-top:16px}.section h2{margin-bottom:8px;font-size:12px}.presets button{padding:6px 10px;font-size:12px}.part{padding:6px 8px;font-size:12px}.part .dot{width:10px;height:10px}.swatch{width:28px;height:28px}.credit{margin-top:18px;font-size:10px}.landing-overline{letter-spacing:.18em;margin-bottom:7.23vh;font-size:1.66vh}.landing-name{font-size:clamp(105px,36vw,19.43vh)}.landing-en{letter-spacing:.48em;text-indent:.48em;margin-top:4.98vh;font-size:2.96vh}.landing-rule{width:16.94vh;margin-top:7.23vh}.landing-desc{letter-spacing:.05em;margin-top:6.04vh;font-size:2.49vh}.landing-start{margin-top:13.27vh;padding:3.08vh 7.23vh;font-size:2.73vh}.landing-foot{letter-spacing:.14em;margin-top:7.58vh;font-size:1.9vh}.brand-mark{padding:6px 8px;top:10px;left:12px}.brand-cn{font-size:14px}}@media (prefers-reduced-motion:reduce){.landing-overline,.landing-name,.landing-en,.landing-rule,.landing-desc,.landing-start,.landing-foot{animation:none}.landing{transition-duration:10ms}.landing-exit{filter:none}}@media (width<=380px){.panel-outer{width:240px}.parts{grid-template-columns:1fr}}
