/*! 世界历史沙盘 · © 2026 保留所有权利 All rights reserved.
 * 本文件为专有软件，未经书面许可不得复制、分发、修改或用于衍生作品。
 * 内容（疆域/朝代/事件/导览/词条）同受著作权保护。
 * build 20261101-55d755
 */
.ww2-layer{ pointer-events:none }
.ww2-layer .w2-op{ pointer-events:auto }
.w2-halo{ fill:none; stroke:rgba(255,255,255,.85); stroke-width:5px; vector-effect:non-scaling-stroke; stroke-linejoin:round; stroke-linecap:round }
.w2-front{ fill:none; stroke:#1d1d1f; stroke-width:2.6px; vector-effect:non-scaling-stroke; stroke-linejoin:round; stroke-linecap:round }
.w2-front.border{ stroke:#4a4a4a; stroke-width:1.8px; stroke-dasharray:6 4 }
.w2-front.moving{ stroke:#7a1410 }
.w2-halo.dim, .w2-front.dim{ opacity:.28 }
.w2-arrow{ fill:none; stroke-width:4px; vector-effect:non-scaling-stroke; stroke-linecap:round; stroke-linejoin:round; opacity:.92;
stroke-dasharray:10 5; animation:w2dash 1.2s linear infinite }
@keyframes w2dash{ to{ stroke-dashoffset:-15 } }
.w2-ahalo{ fill:none; stroke:rgba(255,255,255,.75); stroke-width:7px; vector-effect:non-scaling-stroke; stroke-linecap:round; stroke-linejoin:round }
.w2-pocket{ fill-opacity:.14; stroke-width:1.6px; stroke-dasharray:4 3; vector-effect:non-scaling-stroke }
.w2-mark{ stroke:#fff; stroke-width:1.2px; vector-effect:non-scaling-stroke }
.w2-op{ fill:#fff; stroke-width:1px; vector-effect:non-scaling-stroke; cursor:help }
.w2-op.o{ stroke:#c8261c; fill:#ffd9d4 } .w2-op.d{ stroke:#5b6573; fill:#e4e8ee } .w2-op.l{ stroke:#2f6fb5; fill:#dbe8f7 }
.w2-lbl{ font-family:system-ui,-apple-system,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif; font-weight:700; fill:#1d1d1f;
paint-order:stroke; stroke:rgba(255,255,255,.9); stroke-width:3px; stroke-linejoin:round; vector-effect:non-scaling-stroke; text-anchor:middle }
.w2-lbl.w2-al{ text-anchor:middle }
.w2-lbl.w2-ml{ text-anchor:start }
@media (prefers-reduced-motion:reduce){ .w2-arrow{ animation:none } }
.w2{ padding:4px 2px 18px; font-size:14px; line-height:1.5 }
.w2-date{ font-size:19px; font-weight:800; line-height:1.25; font-variant-numeric:tabular-nums; color:var(--ink, inherit); margin:2px 0 6px }
.w2-bar{ display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; margin:0 0 4px }
.w2-ctrl{ display:flex; align-items:center; gap:5px }
.w2-ctrl button{ width:30px; height:30px; border-radius:50%; border:1px solid var(--border, rgba(0,0,0,.18)); background:var(--panel2, #f4efe6); color:inherit; font-size:12px; line-height:1; cursor:pointer; display:grid; place-items:center; padding:0 }
.w2-ctrl .w2-play{ width:34px; height:34px; font-size:13px; background:var(--accent, #8b5a2b); color:#fff; border-color:transparent }
.w2-range{ width:100%; accent-color:var(--accent, #8b5a2b); margin:4px 0 0 }
.w2-ticks{ display:flex; justify-content:space-between; font-size:11px; color:var(--muted, #8a7f72); margin:-2px 2px 8px }
.w2-th{ display:flex; flex-wrap:wrap; gap:6px; margin:6px 0 10px }
.w2-th button{ border:1px solid var(--border, rgba(0,0,0,.18)); background:transparent; color:inherit; border-radius:999px; padding:5px 11px; font:inherit; font-size:13px; cursor:pointer }
.w2-th button.on{ background:var(--accent, #8b5a2b); color:#fff; border-color:transparent }
.w2-card{ border-radius:12px; padding:12px 14px; background:var(--panel2, rgba(0,0,0,.04)); border-left:4px solid var(--accent, #8b5a2b); margin-bottom:10px; min-height:120px }
.w2-card .w2-kd{ font-size:12px; color:var(--muted, #8a7f72); font-weight:700 }
.w2-card h3{ margin:2px 0 6px; font-size:17px; line-height:1.3 }
.w2-card p{ margin:0; font-size:14px }
.w2-legend{ display:flex; flex-wrap:wrap; gap:6px 14px; font-size:12px; color:var(--muted, #6f665b); margin:4px 0 12px }
.w2-legend span{ display:inline-flex; align-items:center; gap:6px }
.w2-legend i{ display:inline-block; width:22px; height:0; border-top:3px solid #1d1d1f }
.w2-legend i.lg-border{ border-top:2px dashed #4a4a4a }
.w2-legend i.lg-ar{ height:4px; border:0; border-radius:2px }
.w2-legend i.lg-pk{ width:14px; height:14px; border:2px dashed #888; border-radius:50% }
.w2-h{ font-size:13px; margin:12px 0 6px; color:var(--muted, #6f665b) }
.w2-h b{ display:inline-block; min-width:20px; padding:0 6px; border-radius:999px; background:var(--accent, #8b5a2b); color:#fff; font-size:11px; text-align:center }
.w2-ops{ list-style:none; margin:0; padding:0; max-height:200px; overflow:auto }
.w2-ops li{ display:grid; grid-template-columns:12px 1fr auto; gap:8px; align-items:center; padding:5px 6px; border-radius:8px; cursor:pointer; font-size:13px }
.w2-ops li:hover{ background:var(--panel2, rgba(0,0,0,.05)) }
.w2-ops li i{ width:9px; height:9px; transform:rotate(45deg); border:1.5px solid #c8261c; background:#ffd9d4 }
.w2-ops li.d i{ border-color:#5b6573; background:#e4e8ee } .w2-ops li.l i{ border-color:#2f6fb5; background:#dbe8f7 }
.w2-ops li time{ font-size:11px; color:var(--muted, #8a7f72); font-variant-numeric:tabular-nums }
.w2-ops li.none{ display:block; cursor:default; color:var(--muted, #8a7f72) }
.w2-keys{ list-style:none; margin:0; padding:0; border-left:2px solid var(--border, rgba(0,0,0,.15)) }
.w2-keys li{ position:relative; padding:5px 8px 5px 14px; cursor:pointer; border-radius:0 8px 8px 0 }
.w2-keys li::before{ content:''; position:absolute; left:-6px; top:12px; width:10px; height:10px; border-radius:50%; background:var(--panel, #fff); border:2px solid var(--border, #bbb) }
.w2-keys li.on{ background:color-mix(in srgb, var(--accent, #8b5a2b) 12%, transparent) }
.w2-keys li.on::before{ background:var(--accent, #8b5a2b); border-color:var(--accent, #8b5a2b) }
.w2-keys time{ display:block; font-size:11px; color:var(--muted, #8a7f72) }
.w2-keys span{ font-size:13.5px; font-weight:600 }
.w2-note{ font-size:11.5px; color:var(--muted, #8a7f72); margin-top:14px; line-height:1.5 }
.w2-entry{ display:flex; align-items:center; gap:12px; width:calc(100% - 4px); margin:2px 2px 12px; padding:12px 14px; border-radius:14px; cursor:pointer; text-align:left;
border:1px solid color-mix(in srgb, #c8261c 35%, transparent); background:linear-gradient(135deg, color-mix(in srgb, #c8261c 10%, transparent), color-mix(in srgb, #2f6fb5 10%, transparent)); color:inherit; font:inherit }
.w2-entry b{ display:block; font-size:15px }
.w2-entry small{ display:block; font-size:12px; color:var(--muted, #6f665b); line-height:1.4 }
.w2-entry .ic{ font-size:26px }
body.ww2-on #event{ display:none !important }
.w2-band{ stroke:none }
.w2-front{ transition:stroke .4s }
.w2-ping{ fill:none; stroke-width:1.5px; vector-effect:non-scaling-stroke; transform-box:fill-box; transform-origin:center; animation:w2ping 2.4s ease-out infinite }
@keyframes w2ping{ 0%{ transform:scale(1); opacity:.9 } 100%{ transform:scale(3.2); opacity:0 } }
.w2-pocket{ animation:w2breath 3s ease-in-out infinite }
@keyframes w2breath{ 50%{ fill-opacity:.22 } }
.w2-speed{ display:flex; gap:4px }
.w2-speed button{ border:1px solid var(--border, rgba(0,0,0,.18)); background:transparent; color:inherit; border-radius:999px; padding:2px 9px; font:inherit; font-size:12px; cursor:pointer }
.w2-speed button.on{ background:var(--accent, #8b5a2b); color:#fff; border-color:transparent }
.w2-card{ transition:background .3s }
.w2-card h3, .w2-card p{ animation:w2in .45s ease-out }
@keyframes w2in{ from{ opacity:0; transform:translateY(4px) } to{ opacity:1; transform:none } }
@media (prefers-reduced-motion:reduce){ .w2-ping, .w2-pocket, .w2-card h3, .w2-card p{ animation:none } }
.w2-veil{ fill:var(--w2-veil, #f6f1e7); fill-opacity:.38; pointer-events:none }
html[data-skin="obsidian"] .w2-veil, html[data-skin="navy"] .w2-veil, html[data-skin="tan"] .w2-veil{ fill:#1b1a20; fill-opacity:.28 }
.w2-occfill{ fill:#4c5563; stroke:none }
.w2-flag .w2-fbg{ fill:#fff; fill-opacity:.92; filter:drop-shadow(0 .2px .4px rgba(0,0,0,.35)) }
.w2-flag .w2-fline{ fill:none; stroke:rgba(0,0,0,.35); stroke-width:.6px; vector-effect:non-scaling-stroke }
.w2-lbl.w2-fl{ font-weight:700 }
.w2-legend i.lg-occ{ width:16px; height:12px; border:0; background:rgba(76,85,99,.35); border-radius:2px }
.w2-ov{ will-change:transform; contain:strict }
.w2-ov .w2-op{ pointer-events:none }
.w2-ubox{ fill-opacity:.16; stroke-width:1.6px; vector-effect:non-scaling-stroke }
.w2-ux{ stroke-width:1.1px; vector-effect:non-scaling-stroke; opacity:.85 }
.w2-uech, .w2-usym{ text-anchor:middle; font-weight:800; letter-spacing:-.02em; font-family:system-ui,sans-serif }
.w2-uname, .w2-ucmd{ font-family:system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif; paint-order:stroke; stroke:rgba(255,255,255,.92); stroke-width:3px; vector-effect:non-scaling-stroke; stroke-linejoin:round }
.w2-uname{ font-weight:800; fill:#1d1d1f }
.w2-ucmd{ font-weight:700 }
.w2-units{ list-style:none; margin:0; padding:0; max-height:260px; overflow:auto }
.w2-units li{ display:grid; grid-template-columns:10px 1fr; gap:8px; padding:6px; border-radius:8px; cursor:pointer; font-size:13px; line-height:1.4 }
.w2-units li:hover{ background:var(--panel2, rgba(0,0,0,.05)) }
.w2-units li > i{ width:10px; height:10px; border-radius:2px; margin-top:4px }
.w2-units li em{ font-style:normal; font-size:10px; color:var(--muted, #8a7f72); letter-spacing:-.02em }
.w2-units li .c, .w2-units li .s{ display:block; font-size:12px; color:var(--muted, #6f665b) }
.w2-units li .c small{ display:block; font-size:11px; opacity:.85 }
.w2-units li.none{ display:block; cursor:default; color:var(--muted, #8a7f72) }
.w2-now{ display:flex; flex-wrap:wrap; gap:4px 10px; align-items:baseline; margin:4px 0 8px; padding:7px 10px; border-radius:10px; font-size:12.5px;
background:color-mix(in srgb, #c8261c 10%, transparent); border:1px solid color-mix(in srgb, #c8261c 30%, transparent); animation:w2in .3s ease-out }
.w2-now b{ color:#c8261c } .w2-now span{ font-weight:700 } .w2-now small{ font-weight:400; margin-left:4px; color:var(--muted, #8a7f72) }
.w2-spot-dot{ fill:#c8261c; fill-opacity:.25; stroke:#c8261c; stroke-width:2px; vector-effect:non-scaling-stroke }
.w2-spot-ring{ fill:none; stroke:#c8261c; stroke-width:2px; vector-effect:non-scaling-stroke; transform-box:fill-box; transform-origin:center; animation:w2ping 1.2s ease-out infinite }
.w2-spot-tag{ fill:#fffaf0; fill-opacity:.95; stroke:#c8261c; stroke-width:1.2px; vector-effect:non-scaling-stroke }
.w2-spot-txt{ text-anchor:middle; font-weight:800; fill:#7a1410; font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif }
.w2-lead{ fill:none; stroke-width:1.4px; vector-effect:non-scaling-stroke; stroke-dasharray:3 2 }
.w2-cbg{ fill:#fffdf8; fill-opacity:.95; stroke:rgba(0,0,0,.18); stroke-width:.8px; vector-effect:non-scaling-stroke; filter:drop-shadow(0 .15px .35px rgba(0,0,0,.25)) }
.w2-c1, .w2-c2, .w2-c3{ font-family:system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif }
.w2-c1{ font-weight:800; fill:#1d1d1f } .w2-c2{ font-weight:700 } .w2-c3{ fill:#5a524a; font-weight:600 }
@media (max-width:700px){ .w2-date{ font-size:17px } }
.w2-now[hidden]{ display:none !important }
.w2-keys{ max-height:260px; overflow:auto; position:relative }
body.m2-ww2 #m2-sheet, body.m2-ww2 #m2-split-tog, body.m2-ww2 #m2-evchip{ display:none !important }
body.m2-ww2 #m2-time{ visibility:hidden !important; pointer-events:none !important }
#w2cap{ position:fixed; left:8px; right:8px; z-index:45; bottom:calc(var(--m2-nav, 58px) + var(--m2-safe-b, 0px) + 6px);
background:var(--s1, #f6f1e7); border:1px solid var(--hair, rgba(0,0,0,.15)); border-radius:14px; padding:7px 10px 7px 12px;
box-shadow:0 6px 18px rgba(0,0,0,.18); font-size:13px; color:var(--txt, #222) }
#w2cap.live{ border-color:color-mix(in srgb, #c8261c 45%, transparent) }
.w2c-1{ display:flex; align-items:baseline; gap:8px; min-width:0; cursor:pointer }
.w2c-d{ font-weight:800; white-space:nowrap; font-variant-numeric:tabular-nums }
.w2c-t{ flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-weight:700 }
#w2cap.live .w2c-t{ color:#b3261e }
#w2cap:not(.live) .w2c-t::before{ content:''; display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--accent, #8b5a2b); margin-right:5px; vertical-align:1px }
.w2c-2{ display:flex; align-items:center; gap:6px; margin-top:5px }
.w2c-2 button{ width:30px; height:30px; border-radius:50%; border:1px solid var(--hair, rgba(0,0,0,.18)); background:transparent; color:inherit; font-size:12px; padding:0; display:grid; place-items:center; flex:0 0 auto }
.w2c-2 .w2c-play{ width:34px; height:34px; background:var(--accent, #8b5a2b); color:#fff; border-color:transparent; font-size:13px }
.w2c-n{ flex:1; min-width:0; font-size:12px; color:var(--muted, #7a7067); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:pointer }
.w2c-2 .w2c-up{ font-size:15px }
#w2sheet{ position:fixed; left:0; right:0; z-index:46; top:22vh; bottom:calc(var(--m2-nav, 58px) + var(--m2-safe-b, 0px));
background:var(--s1, #f6f1e7); border-radius:16px 16px 0 0; box-shadow:0 -8px 24px rgba(0,0,0,.2); display:flex; flex-direction:column;
transform:translateY(105%); transition:transform .32s cubic-bezier(.32,.72,0,1); visibility:hidden }
#w2m.open #w2sheet{ transform:none; visibility:visible }
#w2m.open #w2cap{ visibility:hidden }
.w2s-head{ display:flex; align-items:center; gap:10px; padding:6px 12px 4px; touch-action:none }
.w2s-head b{ flex:1; font-size:15px }
.w2s-fold{ width:48px; height:24px; border:0; background:transparent; display:grid; place-items:center; padding:0 }
.w2s-fold i{ width:40px; height:5px; border-radius:3px; background:var(--hair, rgba(0,0,0,.25)) }
.w2s-x{ width:32px; height:32px; border-radius:50%; border:1px solid var(--hair, rgba(0,0,0,.18)); background:transparent; color:inherit }
.w2s-body{ flex:1; overflow:auto; padding:0 14px 16px; -webkit-overflow-scrolling:touch }
#w2float{ position:absolute; left:10px; bottom:10px; z-index:6; max-width:62%; display:flex; flex-direction:column; gap:2px; pointer-events:none;
background:var(--s1, #f6f1e7); border:1px solid var(--hair, rgba(0,0,0,.15)); border-radius:12px; padding:7px 11px; box-shadow:0 4px 14px rgba(0,0,0,.15); font-size:13px }
#w2float b{ font-variant-numeric:tabular-nums }
#w2float span{ font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
#w2float.live{ border-color:color-mix(in srgb, #c8261c 45%, transparent) } #w2float.live span{ color:#b3261e }