#tour-stage{display:grid;grid-template-columns:minmax(0,1fr);background:#c4d0ce}
#tour-stage.comparing{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
#tour-stage.comparing #tour-view{height:auto;min-height:0;aspect-ratio:1762 / 1280;align-self:center}
#tour-reference{margin:0;position:relative;display:flex;align-items:center;justify-content:center;background:#f4f6f3;border-left:1px solid #bac6c2;min-width:0;overflow:hidden}
#tour-reference[hidden]{display:none}
#tour-reference img{width:100%;height:100%;object-fit:contain;max-height:min(60vh,650px)}
#tour-reference figcaption{position:absolute;left:12px;right:12px;bottom:10px;font-size:12px;color:#29413b;text-align:center;background:#ffffffdf;padding:5px 10px}
.tour-toolbar button[aria-pressed="true"]{background:#dcece3;border-color:#578e75;color:#20513e}
#tour-view{background:#c4d0ce;min-width:0}
.tour-location{max-width:calc(100% - 28px)}
@media(max-width:760px){#tour-stage.comparing{grid-template-columns:1fr}.comparing #tour-reference{aspect-ratio:1762 / 1280;border-left:0;border-top:1px solid #bac6c2}.comparing #tour-reference img{max-height:none}.tour-location{left:10px;top:10px;padding:8px 12px}.tour-location small{font-size:10px}#tour-reference figcaption{font-size:10px;bottom:5px;padding:3px 6px}}

.oven-controls{display:flex;gap:7px;flex-wrap:wrap;align-items:center;padding:8px 14px;border-top:1px solid #dce5e2;background:#f3f7f5}.oven-controls[hidden]{display:none}.oven-controls span{font-size:12px;color:#47665d;margin-right:4px}.oven-controls button{border:1px solid #d2dfd9;background:white;color:#34564d;padding:8px 10px;font:inherit;font-size:12px;cursor:pointer}.oven-controls button[aria-pressed="true"]{background:#254c42;color:white}.oven-controls button:focus-visible{outline:2px solid #268b70;outline-offset:2px}

.campus-label-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.campus-label-layer[hidden],.campus-label[hidden]{display:none}.campus-label{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;white-space:nowrap;border:1px solid #7b9d9b;background:#183946ed;color:#f0f7f1;padding:3px 6px;min-height:22px;font:500 10px "Microsoft YaHei",sans-serif;line-height:1.3;cursor:pointer;box-shadow:0 2px 6px #10262b30;border-radius:3px;touch-action:manipulation}.campus-label:hover,.campus-label:focus-visible{background:#226953;border-color:#c3f1d5;outline:2px solid #daf4dd;outline-offset:2px}.tour-location{z-index:3}

.campus-label{z-index:1}.campus-label-leader{position:absolute;width:1px;background:#c7e0d5;pointer-events:none}.campus-label-leader[hidden]{display:none}

/* Company-mark loading sequence, kept outside the replaceable WebGL container. */
#tour-stage{position:relative;overflow:hidden}
#tour-dialog.is-entering{animation:tour-dialog-in .5s cubic-bezier(.2,.7,.2,1) both}
#tour-dialog.is-entering::backdrop{animation:tour-backdrop-in .5s ease both}
#tour-dialog.is-closing{animation:tour-dialog-out .24s ease both;pointer-events:none}
#tour-dialog.is-closing::backdrop{animation:tour-backdrop-out .24s ease both}
#tour-dialog.is-loading #tour-view{opacity:0}
#tour-dialog.is-revealing #tour-view{animation:tour-scene-in 1.1s ease both}
.tour-brand-loader{position:absolute;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(ellipse at 50% 43%,#285363 0%,#153747 43%,#0c2534 100%);color:#e7f4ee;transition:opacity .45s ease,visibility .45s ease;isolation:isolate}
.tour-brand-loader[hidden]{display:none}
.tour-brand-loader.is-fading{opacity:0;visibility:hidden;pointer-events:none}
.tour-brand-loader::before{content:"";position:absolute;inset:-80%;z-index:-1;background:linear-gradient(112deg,transparent 38%,#a2eddf04 44%,#b5f5e91c 49%,#e2fff52a 50%,#a2eddf06 55%,transparent 61%);transform:translateX(-35%) rotate(-8deg);animation:tour-ambient-light 4.2s ease-in-out infinite;pointer-events:none}
.tour-loader-symbol{position:relative;width:160px;height:160px;display:grid;place-items:center;margin-bottom:23px}
.tour-loader-symbol img{width:96px;height:100px;object-fit:contain;opacity:.48;filter:brightness(1.25) drop-shadow(0 0 12px #86ead866);animation:tour-mark-breathe 2.6s ease-in-out infinite}
.tour-loader-symbol::after{content:"";position:absolute;width:96px;height:100px;inset:30px 32px;background:linear-gradient(115deg,transparent 25%,#d0fff344 40%,#ffffffed 48%,#c4fff288 53%,transparent 68%);background-size:300% 100%;mask:url('./assets/xiangfeng-mark-transparent.png') center/contain no-repeat;-webkit-mask:url('./assets/xiangfeng-mark-transparent.png') center/contain no-repeat;opacity:.72;animation:tour-mark-shimmer 2.8s ease-in-out infinite;pointer-events:none}
.tour-loader-ring{position:absolute;inset:0;border:1px solid #b9ebdf20;border-radius:50%}
.tour-loader-ring::before{content:"";position:absolute;inset:-1px;border-radius:50%;border:1px solid transparent;border-top-color:#b8f7ddbb;border-right-color:#8dddd33d;animation:tour-ring-turn 3.8s linear infinite;filter:drop-shadow(0 0 5px #9debd6)}
.tour-loader-ring::after{content:"";position:absolute;inset:12px;border:1px dashed #b9ebdf26;border-radius:50%;animation:tour-ring-turn 14s linear reverse infinite}
.tour-loader-name{font-size:19px;font-weight:500;letter-spacing:5px;margin-left:5px;color:#e6f5ef}
.tour-loader-en{font-size:9px;letter-spacing:2.5px;color:#9cbdbb;margin:8px 0 22px}
.tour-brand-loader p{font-size:12px;letter-spacing:1px;color:#b5d2cf;margin:0 0 17px;line-height:1.5}
.tour-loader-track{position:relative;width:160px;height:2px;background:#c4f5e51c;overflow:hidden}
.tour-loader-track::after{content:"";position:absolute;inset:0;width:55%;background:linear-gradient(90deg,transparent,#c5ffe8,transparent);animation:tour-track-flow 1.8s ease-in-out infinite}
.tour-error .tour-retry{padding:9px 18px;margin:0 15px 10px 0;border:1px solid #afc5be;background:#e5f2eb;color:#24513e}
@keyframes tour-dialog-in{from{opacity:0;transform:translateY(26px) scale(.965)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes tour-dialog-out{to{opacity:0;transform:translateY(15px) scale(.975)}}
@keyframes tour-backdrop-in{from{opacity:0}to{opacity:1}}
@keyframes tour-backdrop-out{to{opacity:0}}
@keyframes tour-scene-in{from{opacity:0;filter:blur(5px)}to{opacity:1;filter:blur(0)}}
@keyframes tour-mark-breathe{0%,100%{opacity:.35;transform:translateY(3px);filter:brightness(1.1) drop-shadow(0 0 8px #86ead844)}50%{opacity:.64;transform:translateY(-3px);filter:brightness(1.45) drop-shadow(0 0 19px #86ead899)}}
@keyframes tour-mark-shimmer{0%{background-position:160% 0;transform:translateY(3px)}50%{transform:translateY(-3px)}100%{background-position:-65% 0;transform:translateY(3px)}}
@keyframes tour-ring-turn{to{transform:rotate(360deg)}}
@keyframes tour-track-flow{from{transform:translateX(-110%)}to{transform:translateX(285%)}}
@keyframes tour-ambient-light{0%{transform:translateX(-30%) rotate(-8deg);opacity:.2}50%{opacity:.8}100%{transform:translateX(30%) rotate(-8deg);opacity:.2}}
@media(max-width:760px){.tour-loader-symbol{transform:scale(.8);margin-bottom:4px}.tour-loader-name{font-size:16px}.tour-loader-en{font-size:8px;margin-bottom:17px}}
@media(prefers-reduced-motion:reduce){#tour-dialog.is-entering,#tour-dialog.is-closing,#tour-dialog.is-entering::backdrop,#tour-dialog.is-closing::backdrop,#tour-dialog.is-revealing #tour-view,.tour-brand-loader::before,.tour-loader-symbol img,.tour-loader-symbol::after,.tour-loader-ring::before,.tour-loader-ring::after,.tour-loader-track::after{animation:none}.tour-brand-loader{transition:none}}

#tour-view .tour-transition-cover{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;opacity:0}.tour-navigation{position:absolute;left:14px;bottom:14px;right:14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;z-index:4;pointer-events:none}.tour-navigation button{pointer-events:auto;border:1px solid #cedfd8;border-radius:4px;background:#f8fcfaf2;color:#264a41;padding:9px 12px;font-size:12px;line-height:1.4;box-shadow:0 2px 8px #17362e18}.tour-navigation button:hover:enabled{background:#dff0e6}.tour-navigation button:disabled{opacity:.45;cursor:default}.tour-travel-status{font-size:11px;padding:6px 10px;background:#153c46e8;color:#edf9f1;border-radius:4px}.tour-travel-status[hidden]{display:none}@media(max-width:760px){.tour-navigation{left:10px;right:10px;bottom:10px;gap:6px}.tour-navigation button{font-size:11px;padding:8px 10px}.tour-travel-status{width:fit-content;font-size:10px}}
