:root{--lab-bg:#05060f;--lab-fg:#e8ecff;--lab-dim:#8a93c4;--lab-accent:#ffd479;--dock-h:150px;--p0:#e0b96a;--p1:#86aef0;--p2:#7fcf98;--p3:#f0907c;--p4:#c99be0;--p5:#5fd6d0}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--lab-bg);color:var(--lab-fg);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Segoe UI,sans-serif;overflow:hidden;overscroll-behavior:none}#stage{position:fixed;inset:0;touch-action:none;cursor:grab}#stage.dragging{cursor:grabbing}svg{display:block;width:100%;height:100%}.lab-topbar{position:fixed;left:0;right:0;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:10px 14px;background:linear-gradient(#05060fee,#05060f00)}.lab-topbar a.back{color:var(--lab-fg);text-decoration:none;font-size:13px;border:1px solid #2a3568;border-radius:999px;padding:6px 12px;white-space:nowrap}.lab-topbar .t{flex:1;min-width:0;font-size:13px;color:var(--lab-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}body[data-embed="1"] .lab-topbar{display:none}.hint{position:fixed;left:14px;right:120px;top:48px;z-index:4;margin:0;font-size:11.5px;line-height:1.5;color:#6c76a8;pointer-events:none;text-shadow:0 1px 3px #000}body[data-embed="1"] .hint{top:10px}.tools{position:fixed;right:12px;z-index:6;top:48px;display:flex;flex-direction:column;gap:6px;align-items:flex-end}body[data-embed="1"] .tools{top:8px}.coast{fill:none;stroke:#4a5070;stroke-width:2;stroke-dasharray:10 6;stroke-linejoin:round}.river{fill:none;stroke:#3d86d6;stroke-width:4;stroke-linejoin:round;stroke-linecap:round;opacity:.75}.river-name{font-size:24px;font-style:italic;font-weight:600;fill:#5d9be0;text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:#05060f;stroke-width:5px}.route{fill:none;stroke:var(--lab-accent);stroke-width:3;stroke-dasharray:2 7;stroke-linecap:round;stroke-linejoin:round;opacity:.75;pointer-events:none}body[data-route="0"] .route{display:none}.place{cursor:pointer;transition:opacity .2s}.place circle.dot{fill:#1a2147;stroke:#8a93c4;stroke-width:2}.place.seen circle.dot{fill:var(--c, #e0b96a);stroke:#05060f}.place.now circle.ring{stroke:var(--lab-accent);stroke-width:3;fill:none}.place circle.ring{fill:none;stroke:none}.place.sel circle.dot{stroke:var(--lab-accent);stroke-width:4}.place text{font-size:24px;font-weight:700;fill:#dfe4ff;pointer-events:none;paint-order:stroke;stroke:#05060f;stroke-width:5px;stroke-linejoin:round}.place:not(.seen){opacity:.35}.place:focus{outline:none}.place:focus-visible circle.dot{stroke:var(--lab-accent);stroke-width:4}.dock{position:fixed;left:0;right:0;bottom:0;z-index:8;padding:10px 12px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(#05060f00,#05060fee 22%)}.yearrow{display:flex;align-items:center;gap:10px;max-width:760px;margin:0 auto}.yearrow button,.tools button{background:#101736e6;color:var(--lab-fg);border:1px solid #2a3568;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}.yearrow button[aria-pressed=true],.tools button[aria-pressed=true]{border-color:var(--lab-accent);color:var(--lab-accent)}.yearrow input[type=range]{flex:1;min-width:0;accent-color:var(--lab-accent)}.yearval{min-width:64px;text-align:right;font-variant-numeric:tabular-nums;font-weight:800;color:var(--lab-accent);font-size:15px}.events{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;max-width:760px;margin:8px auto 0}.events button{background:transparent;color:var(--lab-dim);border:1px solid #232c57;border-radius:999px;padding:3px 9px;font-size:11px;cursor:pointer;font-variant-numeric:tabular-nums}.events button[aria-pressed=true]{color:var(--lab-accent);border-color:var(--lab-accent)}.legend{display:flex;gap:6px 14px;flex-wrap:wrap;justify-content:center;max-width:760px;margin:8px auto 0}.legend button{display:flex;align-items:center;gap:6px;background:none;border:0;padding:2px 0;color:var(--lab-fg);font-size:11.5px;cursor:pointer}.legend button i{width:10px;height:10px;border-radius:50%;display:inline-block}.legend button[aria-pressed=false]{opacity:.35;text-decoration:line-through}.note{text-align:center;font-size:10.5px;color:#5b6493;margin:6px 0 0}#card{position:fixed;z-index:9;left:0;right:0;bottom:var(--dock-h);max-height:min(46dvh,420px);overflow:auto;transform:translateY(calc(100% + var(--dock-h) + 20px));transition:transform .28s cubic-bezier(.2,.8,.2,1);background:#0d1330f5;backdrop-filter:blur(8px);border:1px solid #223;border-radius:18px 18px 0 0;padding:16px 18px 18px;max-width:560px;margin:0 auto}#card.show{transform:translateY(0)}@media(min-width:900px){#card{inset:120px 14px auto auto;width:360px;max-height:calc(100dvh - 120px - var(--dock-h) - 16px);border-radius:16px;transform:translate(calc(100% + 30px))}#card.show{transform:translate(0)}}#card h2{margin:0 28px 2px 0;font-size:19px;color:#fff}#card .meta{margin:0 0 10px;font-size:12px;color:var(--lab-dim)}#card ul{list-style:none;margin:0;padding:0;font-size:13px;line-height:1.55}#card li{padding:6px 0;border-bottom:1px solid #1a2147;display:flex;gap:8px;align-items:baseline}#card li i{flex:0 0 auto;width:9px;height:9px;border-radius:50%;display:inline-block;transform:translateY(1px)}#card li .when{flex:0 0 auto;color:var(--lab-dim);font-variant-numeric:tabular-nums;font-size:12px}#card li a{color:var(--lab-accent);text-decoration:none}#card li.off a,#card li.off .when{color:#4f5885}#card .empty{color:var(--lab-dim);font-size:12.5px}#card .close{position:absolute;right:12px;top:8px;color:var(--lab-dim);font-size:22px;cursor:pointer;background:none;border:0}
