:root{font-family:'Noto Sans SC',-apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif;color:#182b43;background:#f4f6f8;font-synthesis:none;--blue:#245bef;--muted:#728095;--line:#e4e9ef}
*{box-sizing:border-box}body{margin:0}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #88afff;outline-offset:3px}button:disabled{opacity:.45;cursor:default}button svg{width:19px;height:19px;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.header{height:94px;display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:18px;background:#fff;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;color:inherit;flex-shrink:0}.brand-mark{display:grid;place-items:center;width:43px;height:43px;border-radius:12px;background:var(--blue);color:#fff;font-weight:700;font-size:25px;box-shadow:0 5px 15px #245bef26}.brand strong{display:block;font-size:17px;font-weight:600;letter-spacing:.035em}.brand small{display:block;font-size:12px;letter-spacing:.19em;margin-top:4px;color:#7b899a}.header-center{font-size:14px;color:#526278;display:flex;align-items:center;gap:12px}.version{background:#edf2f8;border-radius:5px;padding:4px 7px;font-size:12px;color:#718298}.button{border:1px solid var(--line);border-radius:8px;padding:10px 14px;background:#fff;color:#34455d;font-size:14px;display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:42px;transition:background .2s,transform .2s}.button:hover{background:#f4f7fc}.button.primary{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 5px 14px #245bef1c}.button.primary:hover{background:#1546cf}.primary svg{fill:currentColor;stroke:none}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 334px;min-height:690px;height:calc(100dvh - 138px);max-height:1100px;padding:20px;gap:20px}.model-section{position:relative;min-width:0;overflow:hidden;border-radius:14px;background:radial-gradient(ellipse at 45% 42%,#fff 0,#eef3f7 75%);border:1px solid #e4ebf1}.model-heading{position:absolute;top:27px;left:28px;z-index:3;pointer-events:none}.eyebrow{font-size:12px;letter-spacing:.1em;color:#7d8b9f}.model-heading h1{font-size:25px;line-height:1.35;font-weight:600;margin:9px 0 8px;letter-spacing:.035em}.model-heading p{font-size:14px;color:#7c8a9b;margin:0}.view-toolbar{position:absolute;right:22px;top:27px;display:flex;gap:8px;align-items:center;z-index:5}.segmented{display:flex;padding:3px;background:#e9eef4;border:1px solid #e1e8ef;border-radius:8px}.segmented button{border:0;background:transparent;color:#78889d;padding:7px 12px;border-radius:5px;font-size:14px}.segmented button.active{background:#fff;color:var(--blue);box-shadow:0 2px 4px #3248620d}.icon-button{background:#ffffffd9;border:1px solid var(--line);border-radius:8px;display:grid;place-items:center;width:37px;height:37px;color:#66758b}.icon-button:hover{background:#fff;color:var(--blue)}#scene{position:absolute;inset:100px 0 86px;cursor:grab;touch-action:none}#scene:active{cursor:grabbing}#scene canvas{display:block;width:100%;height:100%;outline:none}.loading{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;gap:10px;font-size:14px;color:#65768d}.loading span{width:16px;height:16px;border:2px solid #cad7ed;border-top-color:var(--blue);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#labels{position:absolute;inset:100px 0 86px;pointer-events:none;overflow:hidden}.map-pin{position:absolute;display:flex;align-items:center;gap:6px;transform:translate(-50%,-100%);border:1px solid #fff;background:#ffffffed;border-radius:8px;padding:5px 8px 5px 5px;box-shadow:0 3px 13px #25416324;color:#3a4a60;white-space:nowrap;font-size:12px;pointer-events:auto;transition:background .2s;min-height:33px}.map-pin::after{content:'';position:absolute;left:50%;top:100%;height:10px;width:1px;background:#70879f}.map-pin b{display:grid;place-items:center;width:23px;height:23px;border-radius:5px;background:#edf2f9;font-size:12px;font-weight:600;color:#627991}.map-pin.selected{background:var(--blue);color:#fff;border-color:#245bef;box-shadow:0 5px 20px #245bef38;z-index:3}.map-pin.selected b{background:#ffffff24;color:#fff}.zone-label{position:absolute;transform:translate(-50%,-50%);font-size:12px;line-height:1.4;color:#536a7d;background:#ffffffd9;padding:2px 4px;border-radius:3px;max-width:110px;text-align:center;white-space:normal;pointer-events:none}.map-bottom{position:absolute;bottom:19px;left:25px;right:20px;display:flex;justify-content:space-between;align-items:flex-end;gap:10px;z-index:3;pointer-events:none}.legend{display:flex;gap:12px;flex-wrap:wrap}.legend span{font-size:12px;color:#6a7b8c;display:flex;align-items:center;gap:5px}.legend i{width:8px;height:8px;border-radius:2px}.blue{background:#4881c4}.teal{background:#42a6ac}.gray{background:#a7b7c9}.orange{background:#e6a332}.map-bottom p{font-size:12px;white-space:nowrap;color:#8996a4;margin:0}.model-options{position:absolute;bottom:56px;left:25px;display:flex;gap:13px;align-items:center;z-index:5}.model-options label{font-size:12px;color:#64768b;display:flex;align-items:center;gap:5px;cursor:pointer}.model-options input{accent-color:var(--blue);width:13px;height:13px;margin:0}.model-options button{font-size:12px;background:#fff;border:1px solid #dfe6ee;color:#61778f;padding:5px 8px;border-radius:5px}.model-options button[aria-pressed=true]{background:#e6eeff;color:var(--blue);border-color:#c6d6ff}.model-credit{position:absolute;right:20px;bottom:57px;font-size:12px;color:#99a4b0}.tour-panel{background:#fff;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;min-height:0;overflow:auto}.panel-heading{display:flex;justify-content:space-between;align-items:center;padding:22px 23px 14px}.station-count{color:#99a3b2;font-size:12px}.stations{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:0 19px 20px}.station-button{padding:11px 9px;text-align:left;display:flex;align-items:center;gap:8px;min-height:44px;border:1px solid #edf0f4;background:#fff;border-radius:7px;color:#748296;font-size:14px;transition:all .2s}.station-button b{font-size:12px;color:#a0adbc;font-weight:500}.station-button:hover{background:#f7f9fd}.station-button.active{border-color:#d7e3ff;background:#eff4ff;color:#245bef}.station-button.active b{color:#245bef}.station-detail{padding:22px 25px;border-top:1px solid #edf0f4;flex:1;min-height:315px;background:linear-gradient(#f9fbff,#fff 130px)}.detail-top{display:flex;align-items:center;gap:10px;color:#93a1b4;font-size:12px}.detail-top>span:first-child{font-size:12px;color:#245bef;letter-spacing:.08em}.station-detail h2{font-weight:600;font-size:27px;margin:10px 0 8px;letter-spacing:.03em}.detail-place{font-size:12px;color:#8291a6;line-height:1.8;margin:0}.detail-line{width:24px;height:3px;background:#245bef;margin:23px 0}.station-detail h3{font-size:12px;font-weight:500;color:#8090a4;margin:18px 0 8px}.station-detail>p:not(.detail-place):not(.content-note){font-size:16px;line-height:1.9;color:#42536a;margin:0}.material-tags{display:flex;flex-wrap:wrap;gap:6px}.material-tags span{font-size:12px;color:#667c95;padding:5px 8px;background:#f1f5fa;border-radius:4px}.content-note{font-size:12px;color:#a2aebb;line-height:1.7;margin:21px 0 0}.panel-footer{border-top:1px solid var(--line);padding:17px 19px;display:flex;align-items:center;justify-content:space-between;gap:6px}.panel-footer .button{padding:9px;font-size:12px;border:0;min-height:36px;background:#f6f8fb}.panel-footer>span{font-size:12px;color:#96a5b7;white-space:nowrap}.page-footer{display:flex;justify-content:space-between;gap:15px;padding:0 25px 12px;font-size:12px;color:#94a0af}.error-state{max-width:360px;margin:auto;text-align:center;padding:20px}.error-state button{margin-top:15px}.model-section:fullscreen{border:0;border-radius:0}.model-section:fullscreen #scene,.model-section:fullscreen #labels{inset:80px 0 80px}
@media(min-width:1600px){.workspace{grid-template-columns:minmax(0,1fr) 370px;padding:26px;gap:26px}.station-detail{padding:30px}.header{padding:0 42px}}
@media(max-width:1150px){.header-center{display:none}.workspace{grid-template-columns:minmax(0,1fr) 300px;gap:14px;padding:14px}.model-heading{top:22px;left:20px}.model-heading h1{font-size:21px}.view-toolbar{right:15px;top:24px}.map-bottom{left:18px}.map-bottom p{display:none}.model-credit{display:none}.model-options{left:18px;gap:9px}.station-detail{padding:20px}.station-detail h2{font-size:24px}.station-button{font-size:12px;padding:10px 7px}.model-heading p{font-size:12px}}
@media(max-width:850px){.header{height:76px;padding:0 20px}.workspace{display:flex;flex-direction:column;height:auto;max-height:none;min-height:0}.model-section{height:600px;flex-shrink:0}.tour-panel{display:grid;grid-template-columns:1fr 1fr;overflow:visible}.panel-heading{grid-column:1;padding:20px}.stations{grid-column:1;grid-row:2;align-content:start}.station-detail{grid-column:2;grid-row:1 / span 3;border-top:0;border-left:1px solid var(--line);border-radius:0 14px 14px 0;min-height:340px}.panel-footer{grid-column:1;align-self:end}.model-heading h1{font-size:23px}.page-footer{padding:5px 20px 20px}.model-heading p{font-size:14px}}
@media(max-width:560px){.header{height:75px;padding:0 14px;gap:10px}.brand{gap:9px}.brand-mark{width:35px;height:35px;border-radius:10px;font-size:21px}.brand strong{font-size:14px}.brand small{font-size:8px}.header>.button{font-size:12px;padding:9px;gap:4px}.header>.button svg{width:14px;height:14px}.workspace{padding:10px;gap:12px}.model-section{height:540px;border-radius:11px}.model-heading{left:17px;top:18px}.model-heading h1{font-size:21px;margin:6px 0}.model-heading p{font-size:12px}.eyebrow{font-size:12px}.view-toolbar{top:107px;left:15px;right:auto;gap:6px}.icon-button{width:34px;height:34px}.segmented button{font-size:12px;padding:7px 10px}#scene,#labels{inset:133px 0 99px}.map-pin{padding:3px;border-radius:6px;min-height:29px}.map-pin>span{display:none}.map-pin b{font-size:12px;width:22px;height:22px}.map-bottom{bottom:20px;left:15px;right:15px}.legend{gap:10px}.legend span{font-size:12px}.model-options{left:15px;right:10px;bottom:59px;gap:9px;flex-wrap:wrap}.model-options label,.model-options button{font-size:12px}.tour-panel{display:flex}.panel-heading{padding:19px 18px 13px}.stations{grid-template-columns:repeat(3,1fr);padding:0 15px 18px;gap:6px}.station-button{font-size:12px;gap:5px;padding:10px 7px}.station-detail{border-top:1px solid var(--line);border-left:0;min-height:0;padding:22px;border-radius:0}.station-detail h2{font-size:25px}.station-detail .detail-line{margin:18px 0}.panel-footer{padding:13px 17px}.page-footer{display:block;font-size:12px;line-height:1.8;padding:3px 17px 20px}.page-footer>span{display:block}.content-note{margin-top:16px}.zone-label{font-size:12px;max-width:70px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.tour-status{position:absolute;left:50%;bottom:112px;transform:translateX(-50%);width:min(340px,80%);z-index:5;background:#ffffffee;border:1px solid #dce6f4;border-radius:10px;padding:12px 14px;box-shadow:0 5px 22px #223e6b13;backdrop-filter:blur(10px)}.tour-status[hidden]{display:none}.tour-status>div:first-child{display:flex;align-items:center;gap:8px;font-size:13px;color:#345575}.tour-beacon{width:7px;height:7px;flex-shrink:0;border-radius:50%;background:#245bef}#tour-caption{flex:1}.tour-status button{border:0;background:none;color:#7c8b9e;font-size:12px;padding:3px}.tour-track{height:3px;background:#e8eff8;margin-top:11px;border-radius:2px;overflow:hidden}#tour-progress{display:block;width:0;height:100%;background:#245bef;transition:width .3s}.station-button{font-size:14px}.model-options label,.model-options button{font-size:12px}.detail-place{font-size:14px}.station-detail h3{font-size:14px}.brand small{font-size:11px}.page-footer{font-size:12px}@media(max-width:560px){.station-button{font-size:12px}.tour-status{bottom:103px}.legend{gap:8px}.legend span{font-size:11px}.model-options{gap:7px}.model-options label,.model-options button{font-size:11px}.brand small{font-size:9px}.header>.button{font-size:12px}.model-heading p{font-size:13px}}

.pin-leaders{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.pin-leaders line{stroke-width:1.2}.map-pin::after{display:none}

.map-pin[hidden],.zone-label[hidden]{display:none}
