.app-shell{position:relative;width:100%;height:100%}.app-titlebar{position:absolute;top:14px;left:18px;z-index:10;background:#f5ead0e0;border:1px solid #8a6d4a;border-radius:5px;padding:8px 16px}.app-title{font-size:20px;font-weight:700;color:#3a2a18;font-family:STZhongsong,SimSun,serif;letter-spacing:3px}.app-subtitle{font-size:11px;color:#8a6d4a;margin-top:2px;letter-spacing:1px}html,body,#root{height:100%;margin:0;background:#c9b184}.map-stage{position:relative;width:100%;height:100%;overflow:hidden}.map-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.map-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#3a2a18;font-size:20px;letter-spacing:4px}.node-anchor{position:absolute;left:0;top:0;will-change:transform;visibility:hidden}.node-marker{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:none;cursor:pointer;padding:6px}.node-dot{width:14px;height:14px;border-radius:50%;background:#a83226;border:2px solid #f5ead0;box-shadow:0 1px 4px #3a2a1880;transition:transform .15s}.node-marker:hover .node-dot,.node-marker.active .node-dot{transform:scale(1.5);background:#c04030}.node-marker.visited .node-dot{background:#7a1f1f}.node-name{font-size:15px;font-weight:700;color:#3a2a18;text-shadow:0 1px 2px #f5ead0,0 0 6px rgba(245,234,208,.9);white-space:nowrap}.preview-anchor{position:absolute;z-index:23;width:320px}.preview-guide-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:21;pointer-events:none;overflow:visible}.preview-guide-path{fill:none;stroke:#783424b8;stroke-width:2;stroke-linecap:round;stroke-dasharray:5 7;filter:drop-shadow(0 1px 1px rgba(245,234,208,.7))}.preview-card{position:relative;display:block;width:320px;aspect-ratio:16 / 9;padding:0;border:0;background:transparent;color:#f8edd6;cursor:pointer;text-align:left;filter:drop-shadow(0 14px 22px rgba(40,28,18,.42))}.preview-card:before{content:"";position:absolute;top:-22px;right:-22px;bottom:-22px;left:-22px;z-index:-1;background:radial-gradient(ellipse at 50% 54%,rgba(245,234,208,.4),rgba(168,50,38,.16) 45%,transparent 76%)}.preview-card:disabled{cursor:default;opacity:.78}.preview-card:focus-visible{outline:2px solid #f0b64c;outline-offset:4px}.preview-image-wrap{position:absolute;top:0;right:0;bottom:0;left:0;background:#3a2a1866;border-radius:3px;overflow:hidden;-webkit-mask-image:radial-gradient(ellipse at center,#000 58%,rgba(0,0,0,.82) 76%,transparent 100%);mask-image:radial-gradient(ellipse at center,#000 58%,rgba(0,0,0,.82) 76%,transparent 100%)}.preview-image-wrap img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease,filter .5s ease}.preview-card.is-ready:hover .preview-image-wrap img{transform:scale(1.04);filter:saturate(1.08)}.preview-image-wash{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;pointer-events:none;background:linear-gradient(to top,rgba(36,25,18,.86),rgba(36,25,18,.28) 50%,transparent 76%),radial-gradient(ellipse at 50% 50%,transparent 55%,rgba(58,42,24,.62) 100%);border-radius:3px;-webkit-mask-image:radial-gradient(ellipse at center,#000 62%,rgba(0,0,0,.78) 78%,transparent 100%);mask-image:radial-gradient(ellipse at center,#000 62%,rgba(0,0,0,.78) 78%,transparent 100%)}.preview-body{position:absolute;left:18px;right:18px;bottom:12px;z-index:2}.preview-name{font-size:18px;font-weight:700;color:#fff5d8;text-shadow:0 2px 8px rgba(0,0,0,.72);font-family:STZhongsong,SimSun,serif}.preview-name small{font-size:12px;font-weight:400;color:#f0b64c;margin-left:6px}.preview-event{font-size:12px;color:#f6e8c6;margin:5px 0 8px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-shadow:0 1px 4px rgba(0,0,0,.68)}.preview-hint{display:inline-flex;align-items:center;min-height:22px;padding:2px 9px;background:#a83226c7;color:#fff5d8;border-radius:3px;font-size:12px;box-shadow:inset 0 0 0 1px #f5ead040}.strategy-toggle{position:absolute;right:20px;top:18px;z-index:16}.strategy-toggle-btn{height:36px;display:inline-flex;align-items:center;gap:8px;padding:0 14px;background:#3a2a18e0;color:#e8d9b8;border:1px solid rgba(138,109,74,.95);border-radius:4px;cursor:pointer;font-size:14px;box-shadow:0 4px 14px #281c123d}.strategy-toggle-btn:hover{border-color:#f0b64c;color:#f0b64c}.strategy-toggle-btn[aria-pressed=true]{background:#225030eb;border-color:#9fc46b;color:#f5ead0}.strategy-dot{width:10px;height:10px;border-radius:50%;background:#7b8798;box-shadow:0 0 0 2px #e8d9b838}.strategy-toggle-btn[aria-pressed=true] .strategy-dot{background:#9fc46b;box-shadow:0 0 9px #86cb5dd1}.route-timeline{position:absolute;left:0;right:0;bottom:0;height:56px;background:#3a2a18ed;border-top:1px solid #8a6d4a;padding:0 24px;z-index:10}.timeline-track{position:absolute;left:40px;right:40px;top:16px;height:2px;background:#8a6d4a}.timeline-progress{height:100%;background:#f0b64c;transition:width .6s}.timeline-nodes{position:relative;display:flex;justify-content:space-between;height:100%}.timeline-node{display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:none;cursor:pointer;padding-top:11px;min-width:48px}.timeline-dot{width:12px;height:12px;border-radius:50%;background:#8a6d4a;border:2px solid rgba(58,42,24,.9);transition:all .2s}.timeline-node.visited .timeline-dot{background:#e8d9b8}.timeline-node.current .timeline-dot{background:#f0b64c;box-shadow:0 0 8px #f0b64c;transform:scale(1.3)}.timeline-label{font-size:12px;color:#b39a6e;white-space:nowrap}.timeline-node.visited .timeline-label{color:#e8d9b8}.timeline-node.current .timeline-label{color:#f0b64c;font-weight:700}.guide-controls{position:absolute;right:20px;bottom:72px;display:flex;gap:8px;z-index:15}.guide-btn{background:#3a2a18eb;color:#e8d9b8;border:1px solid #8a6d4a;border-radius:4px;padding:8px 14px;font-size:14px;cursor:pointer}.guide-btn:hover{border-color:#f0b64c;color:#f0b64c}.guide-btn.primary{background:#a83226;color:#f5ead0;border-color:#a83226}.guide-btn.primary:hover{background:#c04030}.event-card{position:absolute;left:24px;top:50%;transform:translateY(-50%);width:300px;background:#f5ead0f2;border:1px solid #8a6d4a;border-left:4px solid #a83226;border-radius:6px;padding:18px 20px;box-shadow:0 8px 24px #3a2a1859;animation:event-card-in .5s ease;z-index:15}@keyframes event-card-in{0%{opacity:0;transform:translate(-20px,-50%)}to{opacity:1;transform:translateY(-50%)}}.event-card-order{font-size:12px;color:#a83226;letter-spacing:2px}.event-card-name{font-size:26px;font-weight:700;color:#3a2a18;margin-top:4px;font-family:STZhongsong,SimSun,serif}.event-card-sub{font-size:13px;color:#8a6d4a;margin-top:2px}.event-card-date{font-size:13px;color:#a83226;margin-top:8px;font-weight:700}.event-card-text{font-size:14px;color:#5e4630;line-height:1.7;margin-top:8px}.scene-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#1a130c}.scene-frame{width:100%;height:100%;border:none}.scene-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#e8d9b8;font-size:18px;letter-spacing:3px}.scene-close{position:absolute;top:16px;right:16px;z-index:101;background:#3a2a18e6;color:#e8d9b8;border:1px solid #8a6d4a;border-radius:4px;padding:9px 16px;font-size:14px;cursor:pointer}.scene-close:hover{border-color:#f0b64c;color:#f0b64c}.ambience{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:12;overflow:hidden}.ambience-snow{background:radial-gradient(ellipse 80% 45% at 45% 20%,rgba(235,244,255,.28),transparent 70%),linear-gradient(115deg,rgba(230,240,255,.18),transparent 40%,rgba(255,255,255,.14))}.snowflake{position:absolute;top:-10%;width:var(--flake-size, 4px);height:var(--flake-size, 4px);border-radius:50%;background:radial-gradient(circle,#f8fcfff2,#ddebf6c7 62%,#ddebf638);opacity:var(--flake-opacity, .85);filter:blur(var(--flake-blur, 0));box-shadow:0 0 3px #eef6ff6b;animation:snow-fall linear infinite}.snow-gust{position:absolute;left:-20%;width:140%;height:18%;background:linear-gradient(100deg,transparent,rgba(218,232,246,.2),transparent);filter:blur(12px);transform:rotate(-9deg);animation:snow-gust 7s ease-in-out infinite}.snow-gust.gust-a{top:22%}.snow-gust.gust-b{top:58%;animation-delay:-3.1s;opacity:.58}@keyframes snow-fall{0%{transform:translate(calc(var(--flake-drift, 8vw) * -.45));opacity:0}12%{opacity:var(--flake-opacity, .85)}78%{opacity:var(--flake-opacity, .85)}to{transform:translate(var(--flake-drift, 8vw),116vh);opacity:0}}@keyframes snow-gust{0%,to{opacity:0;transform:translate(-6%) rotate(-9deg)}35%,68%{opacity:.8}to{transform:translate(8%) rotate(-9deg)}}.ambience-fog{background:radial-gradient(ellipse 60% 35% at 30% 75%,rgba(232,228,218,.46),transparent 70%),radial-gradient(ellipse 70% 40% at 70% 65%,rgba(210,205,195,.38),transparent 70%);animation:fog-drift 12s ease-in-out infinite alternate}@keyframes fog-drift{0%{opacity:.6;transform:translate(-2%)}to{opacity:1;transform:translate(2%)}}.ambience-rain{background:linear-gradient(105deg,rgba(70,89,107,.16),transparent 36%,rgba(35,47,58,.24)),radial-gradient(ellipse 70% 45% at 50% 75%,rgba(70,89,107,.28),transparent 70%)}.raindrop{position:absolute;top:-14%;width:2px;height:44px;background:linear-gradient(to bottom,transparent,rgba(176,196,210,.86));animation:rain-fall linear infinite}@keyframes rain-fall{0%{transform:translateY(0) rotate(8deg);opacity:0}10%{opacity:1}to{transform:translateY(120vh) rotate(8deg);opacity:.62}}.ambience-dust{background:radial-gradient(ellipse 75% 45% at 25% 72%,rgba(193,154,82,.43),transparent 70%),radial-gradient(ellipse 80% 50% at 75% 55%,rgba(155,120,67,.36),transparent 70%),linear-gradient(100deg,rgba(147,113,59,.12),transparent 55%,rgba(220,178,91,.12));animation:dust-drift 9s ease-in-out infinite alternate}@keyframes dust-drift{0%{opacity:.5;transform:translate(-3%)}to{opacity:1;transform:translate(3%)}}.dust-mote{position:absolute;left:-12%;width:22vw;height:2px;background:linear-gradient(90deg,transparent,rgba(232,188,109,.34),transparent);filter:blur(1px);transform:rotate(-7deg);animation:dust-mote linear infinite}@keyframes dust-mote{0%{transform:translate(-10vw) rotate(-7deg);opacity:0}20%{opacity:.9}to{transform:translate(126vw) rotate(-7deg);opacity:0}}.hero-rings{position:absolute;left:0;top:0;z-index:14;width:76px;height:34px;pointer-events:none;will-change:transform}.hero-ring{position:absolute;left:50%;top:50%;width:24px;height:10px;border:2px solid rgba(255,255,255,.88);border-radius:50%;box-shadow:0 0 8px #ffffff6b,inset 0 0 7px #fff3;transform:translate(-50%,-50%);opacity:0;animation:hero-ring-pulse 2.4s ease-out infinite}.hero-ring.ring-b{animation-delay:.62s}.hero-ring.ring-c{animation-delay:1.24s}@keyframes hero-ring-pulse{0%{width:22px;height:9px;opacity:.82}72%{width:76px;height:32px;opacity:.08}to{width:82px;height:35px;opacity:0}}.marching-troops{position:absolute;left:0;top:0;z-index:15;pointer-events:none}.trooper{position:absolute;left:0;top:0;width:34px;will-change:transform;transform-origin:center bottom;filter:drop-shadow(0 2px 2px rgba(58,42,24,.4))}.trooper.flagbearer{width:40px;z-index:1}.trooper-fallback{width:10px;height:14px;background:#5e4630;border-radius:5px 5px 2px 2px;display:block;border:1px solid #3a2a18}.troops-label{position:absolute;left:0;top:0;z-index:16;pointer-events:none;background:#f5ead0eb;border:1px solid #8a6d4a;border-radius:4px;padding:3px 10px;font-size:13px;color:#3a2a18;white-space:nowrap;will-change:transform}.troops-label b{color:#a83226}.troops-date{color:#8a6d4a;margin-right:4px}.encirclement-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:13;pointer-events:none;opacity:0;transition:opacity .6s}.encirclement-layer.show{opacity:1}.encirclement-svg{width:100%;height:100%;overflow:visible}.encirclement-arrow{opacity:.88;stroke:#165c2a75;stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 2px 2px rgba(40,28,18,.24))}.encirclement-arrow.kmt-encirclement-green,.encirclement-arrow.tone-central,.encirclement-arrow.tone-regional,.encirclement-arrow.tone-blockade{stroke:#165c2a75}.garrison-icon{position:absolute;left:0;top:0;width:64px;filter:sepia(.24) hue-rotate(54deg) saturate(1.12) drop-shadow(0 4px 5px rgba(40,28,18,.42))}.garrison-icon.tone-blockade{width:68px}.faction-label{position:absolute;left:0;top:0;background:#f5ead0eb;border:1px solid #1f5f32;color:#1f5f32;border-radius:3px;padding:2px 7px;font-size:12px;font-weight:700;white-space:nowrap;box-shadow:0 2px 8px #281c122e}.faction-label.tone-regional,.faction-label.tone-blockade{border-color:#1f5f32;color:#1f5f32}.landmark-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:11;pointer-events:none}.landmark-img{position:absolute;left:0;top:0;width:60px;will-change:transform;transition:width .4s;filter:drop-shadow(0 3px 4px rgba(58,42,24,.45))}.landmark-img.selected{width:180px}
