*{margin:0;padding:0;box-sizing:border-box}html,body{width:1920px;height:1080px;font-family:'STKaiti','KaiTi','Microsoft YaHei',serif;background:#f5f0e6;color:#3a2e1f;overflow:hidden;position:relative}.header{position:absolute;top:0;left:0;right:0;height:70px;background:linear-gradient(to bottom,#3a2e1f,#4a3e2f);display:flex;align-items:center;justify-content:center;z-index:1000;border-bottom:3px solid #8b5a2b}.header-title{font-size:32px;color:#f5f0e6;letter-spacing:15px;font-weight:bold}.header-sub{position:absolute;right:40px;font-size:16px;color:#a08760;letter-spacing:5px}.header-progress{position:absolute;left:40px;font-size:16px;color:#d4b896;letter-spacing:3px}.main-container{position:absolute;top:70px;left:0;right:0;bottom:0;display:flex}.map-area{flex:1;position:relative;background:#e8e0d0;overflow:hidden}#map{width:100%;height:100%;background:#ded2be !important}.leaflet-container{background:#ded2be !important}.leaflet-control-attribution{display:none !important}.map-location-label{position:absolute;top:20px;left:50%;transform:translateX(-50%);background:rgba(58,46,31,0.9);color:#f5f0e6;padding:12px 30px;border-radius:6px;font-size:24px;letter-spacing:8px;font-weight:bold;z-index:500;box-shadow:0 4px 16px rgba(0,0,0,0.3);transition:all 0.5s}.info-panel{width:520px;background:linear-gradient(to bottom,#f5f0e6,#ebe3d0);border-left:3px solid #8b5a2b;padding:25px 30px;display:flex;flex-direction:column;overflow:hidden}.current-location{margin-bottom:15px;padding-bottom:15px;border-bottom:2px solid #8b5a2b;text-align:center}.location-stage{font-size:16px;color:#b91c1c;letter-spacing:4px;margin-bottom:6px;font-weight:bold}.location-name{font-size:46px;font-weight:bold;color:#3a2e1f;letter-spacing:12px;padding-left:12px}.location-year{font-size:22px;color:#8b5a2b;margin-top:6px;letter-spacing:4px;font-weight:bold}.section{margin-bottom:12px}.section-title{font-size:18px;color:#b91c1c;margin-bottom:8px;padding-left:10px;border-left:4px solid #b91c1c;letter-spacing:3px;font-weight:bold}.section-content{font-size:16px;line-height:1.8;color:#3a2e1f;text-align:justify;letter-spacing:0.5px}.poem-box{background:rgba(139,90,43,0.12);border:2px solid #8b5a2b;border-radius:6px;padding:15px 20px;margin-bottom:12px;position:relative}.poem-title{font-size:20px;color:#b91c1c;margin-bottom:10px;text-align:center;letter-spacing:4px;font-weight:bold}.poem-content{font-size:22px;color:#3a2e1f;line-height:1.7;text-align:center;letter-spacing:2px;font-style:italic}.progress-timeline{margin-top:auto;padding-top:12px;border-top:1px dashed #a08760}.progress-title{font-size:14px;color:#5a4a3a;margin-bottom:10px;text-align:center;letter-spacing:4px}.stage-dots{display:flex;justify-content:space-between;align-items:center}.stage-dot{flex:1;text-align:center;transition:all 0.5s}.dot-circle{width:32px;height:32px;border-radius:50%;background:#d0c4a8;margin:0 auto 6px auto;display:flex;align-items:center;justify-content:center;font-size:14px;color:#5a4a3a;transition:all 0.5s;font-weight:bold}.stage-dot.active .dot-circle{background:#b91c1c;color:#fff;transform:scale(1.2);box-shadow:0 0 20px rgba(185,28,28,0.6)}.stage-dot.completed .dot-circle{background:#8b5a2b;color:#fff}.dot-label{font-size:13px;color:#5a4a3a;letter-spacing:2px;font-weight:bold}.stage-dot.active .dot-label{color:#b91c1c}.fade-in{animation:fadeIn 1s ease-out}@keyframes fadeIn{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.custom-marker{background:transparent !important;border:none !important}.marker-pin{width:36px;height:36px;background:#8b5a2b;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 3px 10px rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;border:3px solid #fff;transition:all 0.5s}.marker-pin span{transform:rotate(45deg);color:#fff;font-weight:bold;font-size:13px}.marker-pin.active{background:#b91c1c;transform:rotate(-45deg) scale(1.4);box-shadow:0 4px 20px rgba(185,28,28,0.8)}.leaflet-tooltip.custom-tooltip{background:rgba(58,46,31,0.9);border:1px solid #8b5a2b;color:#f5f0e6;font-size:14px;padding:4px 10px;font-weight:bold;letter-spacing:2px}.leaflet-tooltip-top.custom-tooltip:before{border-top-color:#8b5a2b}.page-title{animation:titleFadeIn 1s ease-out;background:linear-gradient(135deg,#8B4513,#DAA520);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}@keyframes titleFadeIn{0%{opacity:0;transform:translateY(-30px)}100%{opacity:1;transform:translateY(0)}}.stage-card{animation:stageSlideIn 0.5s cubic-bezier(0.4,0,0.2,1) backwards;transition:all 0.3s ease}.stage-card:nth-child(1){animation-delay:0.1s}.stage-card:nth-child(2){animation-delay:0.2s}.stage-card:nth-child(3){animation-delay:0.3s}.stage-card:nth-child(4){animation-delay:0.4s}@keyframes stageSlideIn{0%{opacity:0;transform:translateY(30px)}100%{opacity:1;transform:translateY(0)}}.stage-card:hover{transform:translateY(-8px);box-shadow:0 15px 40px rgba(139,69,19,0.18)}.location-card{transition:all 0.3s cubic-bezier(0.4,0,0.2,1)}.location-card:hover{transform:translateX(10px);border-left:4px solid #DAA520}.poem-line{overflow:hidden}.poem-char{display:inline-block;opacity:0;transform:translateY(5px);animation:charReveal 0.3s ease-out forwards}@keyframes charReveal{to{opacity:1;transform:translateY(0)}}.timeline-node{transition:all 0.3s ease}.timeline-node:hover{transform:scale(1.3);filter:brightness(1.2)}.timeline-node.active{animation:nodeActive 0.5s cubic-bezier(0.68,-0.55,0.265,1.55)}@keyframes nodeActive{0%{transform:scale(0.8)}50%{transform:scale(1.4)}100%{transform:scale(1)}}#journey-map{position:relative}#journey-map::before{content:'绘制苏轼足迹中...';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#8B4513;font-size:16px;z-index:1000;animation:mapLoading 1.5s ease-in-out infinite}#journey-map.loaded::before{display:none}@keyframes mapLoading{0%,100%{opacity:0.5}50%{opacity:1}}.journey-path{stroke-dasharray:1000;stroke-dashoffset:1000;animation:pathDraw 3s ease-out forwards}@keyframes pathDraw{to{stroke-dashoffset:0}}.check-in-btn{background:linear-gradient(135deg,#b91c1c,#dc2626);color:white;border:none;padding:12px 30px;border-radius:30px;font-size:16px;font-weight:bold;cursor:pointer;transition:all 0.3s cubic-bezier(0.34,1.56,0.64,1);display:flex;align-items:center;gap:8px;margin-top:15px}.check-in-btn:hover{transform:translateY(-3px);box-shadow:0 8px 25px rgba(185,28,28,0.4)}.check-in-btn.checked{background:linear-gradient(135deg,#27AE60,#2ECC71);animation:checkInPulse 1.5s ease-in-out infinite}@keyframes checkInPulse{0%,100%{box-shadow:0 0 0 0 rgba(39,174,96,0.4)}50%{box-shadow:0 0 0 8px rgba(39,174,96,0)}}.checkin-progress{height:8px;background:#f0f0f0;border-radius:4px;margin-top:15px;overflow:hidden}.checkin-progress-fill{height:100%;background:linear-gradient(90deg,#8b5a2b,#b91c1c);border-radius:4px;transition:width 0.8s cubic-bezier(0.4,0,0.2,1)}.checkin-badge{display:inline-block;background:rgba(185,28,28,0.1);border:1px solid rgba(185,28,28,0.3);padding:5px 12px;border-radius:15px;font-size:12px;color:#b91c1c;margin-left:10px;transition:all 0.3s ease}.checkin-badge.checked{background:rgba(39,174,96,0.1);border-color:rgba(39,174,96,0.3);color:#27AE60}.marker-pin{animation:markerBounce 1s cubic-bezier(0.68,-0.55,0.265,1.55)}@keyframes markerBounce{0%{transform:rotate(-45deg) scale(0)}50%{transform:rotate(-45deg) scale(1.2)}100%{transform:rotate(-45deg) scale(1)}}.back-btn{position:relative;overflow:hidden}.back-btn::after{content:'';position:absolute;top:50%;left:50%;width:0;height:0;background:rgba(255,255,255,0.2);border-radius:50%;transform:translate(-50%,-50%);transition:width 0.4s ease-out,height 0.4s ease-out}.back-btn:active::after{width:200%;height:200%}.stat-value{background:linear-gradient(135deg,#8B4513,#DAA520);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.stat-card{transition:all 0.3s ease}.stat-card:hover{transform:translateY(-5px) scale(1.02);box-shadow:0 10px 25px rgba(139,69,19,0.15)}.stage-tag{animation:tagPulse 2s ease-in-out infinite}@keyframes tagPulse{0%,100%{opacity:0.9}50%{opacity:1}}.detail-panel{animation:panelSlideIn 0.4s cubic-bezier(0.4,0,0.2,1)}@keyframes panelSlideIn{0%{opacity:0;transform:translateX(-20px)}100%{opacity:1;transform:translateX(0)}}.ih-demdjt{display:flex;align-items:center;justify-content:space-between;margin-top:10px}.ih-13ufe9n{font-size:13px;color:#5a4a3a}.ih-bi2xnl{font-size:13px;color:#b91c1c;font-weight:bold}