.git-map{position:relative;width:100%;height:100%;overflow:hidden;isolation:isolate;--map-main:var(--accent);--map-m0:#216aa5;--map-m1:#a24c27;--map-m2:#60731b;--map-m3:#7f438f;--map-m4:#1c756c;--map-m5:#994360;--map-m6:#4055a4;--map-m7:#7f5a26;background:var(--surface)}
[data-theme=dark] .git-map{--map-m0:#70b7eb;--map-m1:#eeac86;--map-m2:#b2c76b;--map-m3:#caa2d7;--map-m4:#77c7bd;--map-m5:#e49bb7;--map-m6:#aebdff;--map-m7:#dec08a}
.git-map [data-hue=main]{--lane:var(--map-main)}.git-map [data-hue=release]{--lane:var(--game-gold)}
.git-map [data-hue=m0]{--lane:var(--map-m0)}.git-map [data-hue=m1]{--lane:var(--map-m1)}.git-map [data-hue=m2]{--lane:var(--map-m2)}.git-map [data-hue=m3]{--lane:var(--map-m3)}.git-map [data-hue=m4]{--lane:var(--map-m4)}.git-map [data-hue=m5]{--lane:var(--map-m5)}.git-map [data-hue=m6]{--lane:var(--map-m6)}.git-map [data-hue=m7]{--lane:var(--map-m7)}
.map-viewport{width:100%;height:100%;display:block;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}.map-viewport:active{cursor:grabbing}
.map-edge{fill:none;stroke:var(--lane,var(--accent));stroke-width:2.5;stroke-linecap:round;opacity:.55}.map-edge.is-trunk{stroke-width:4;opacity:.9}.map-edge.is-lab{stroke-dasharray:4 5}
.map-node{cursor:pointer}.map-face{fill:var(--surface);stroke:var(--lane);stroke-width:2.5}.map-fill{fill:var(--lane);transform-box:fill-box;transform-origin:center;display:none}.map-node[data-status=done] .map-face{fill:var(--lane)}.map-node.is-committing .map-fill{display:block}
.map-glyph{fill:none;stroke:var(--lane);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.map-node[data-status=done] .map-glyph{stroke:var(--surface)}.map-halo{fill:none;stroke:transparent;stroke-width:2}.map-node.is-selected .map-halo{stroke:var(--ink)}.git-map:has(.map-tree:focus-visible) .is-selected .map-halo{stroke:var(--accent);stroke-width:3;stroke-dasharray:3 3}
.map-lock{display:none;fill:var(--surface);stroke:var(--muted);stroke-width:1.7}.map-node[data-status=locked] .map-lock{display:block}.map-node[data-status=locked] .map-face{stroke-dasharray:3 4;stroke:var(--line)}.map-node[data-status=locked] .map-glyph{stroke:var(--muted)}
.map-hash{fill:var(--muted);font:11px ui-monospace,SFMono-Regular,monospace}.map-title{fill:var(--ink);font:650 14px Manrope,sans-serif}.map-stars{fill:var(--game-gold);font:12px ui-monospace,monospace;letter-spacing:2px}
.map-branch text{fill:var(--lane);font:700 12px ui-monospace,monospace;paint-order:stroke;stroke:var(--surface);stroke-width:5px;stroke-linejoin:round}.map-branch[data-locked=true] text{fill:var(--muted)}
.map-tag rect{fill:var(--game-gold-wash);stroke:var(--game-gold)}.map-tag text{fill:var(--game-gold);font:700 12px ui-monospace,monospace}.map-head rect{fill:var(--accent)}.map-head text{fill:var(--surface);font:700 12px ui-monospace,monospace}
.map-ripple{fill:none;stroke:var(--lane);stroke-width:2;opacity:0;pointer-events:none}.map-viewport[data-lod=far] .map-node-copy,.map-viewport[data-lod=far] .map-glyph,.map-viewport[data-lod=far] .map-lock{display:none}
.map-controls{position:absolute;bottom:22px;left:24px;display:flex;gap:5px}.map-controls button{min-width:36px;min-height:36px;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:4px;font:650 13px Manrope,sans-serif;cursor:pointer}.map-controls button:first-child{padding:0 15px;border-color:var(--accent);color:var(--accent)}
.map-mini{position:absolute;right:20px;bottom:20px;width:76px;height:154px;touch-action:none;cursor:crosshair;background:var(--paper);border:1px solid var(--line);border-radius:5px}.map-mini .map-edge{stroke:var(--muted);stroke-width:10;opacity:.4}.map-mini-view{fill:var(--accent);fill-opacity:.14;stroke:var(--accent);stroke-width:10;pointer-events:none}
.map-tree{position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.git-map:has(.map-tree:focus-visible){box-shadow:inset 0 0 0 3px var(--accent)}
@media(prefers-reduced-motion:no-preference){.git-map[data-motion=on][data-hidden=false] .is-next .map-halo{stroke:var(--lane);animation:map-pulse 2.4s ease-in-out infinite}.git-map[data-motion=on] .is-unlocking text{animation:map-unlock .4s ease-in-out 2}@keyframes map-pulse{50%{r:24;opacity:.25}}@keyframes map-unlock{50%{fill:var(--accent);stroke-width:8px}}}
@media(max-width:700px){.map-controls{left:14px;bottom:12px}.map-mini{right:12px;bottom:12px;width:48px;height:100px}}

.map-node.is-committing .map-face{fill:var(--surface)}
.map-tag[data-status=locked] rect,.map-tag[data-status=available] rect{fill:var(--surface);stroke:var(--line);stroke-dasharray:3 3}.map-tag[data-status=locked] text,.map-tag[data-status=available] text{fill:var(--muted)}

.map-edge.is-trunk{stroke:var(--accent)}

/* Camera controls have their own rail; graph labels never share its hit area. */
.git-map{display:grid;grid-template-columns:minmax(0,1fr) 100px;grid-template-rows:minmax(0,1fr) 48px}
.map-viewport{grid-column:1;grid-row:1;min-height:0;min-width:0;overflow:hidden}
.map-controls{position:static;grid-column:1/-1;grid-row:2;align-items:center;padding:5px 16px;border-top:1px solid var(--line);background:var(--paper)}
.map-mini{position:static;grid-column:2;grid-row:1;align-self:end;margin:0 12px 16px;width:76px;height:160px}
.map-module-title{font:600 11px Manrope,sans-serif!important}.map-branch.is-compact text{font-size:9px}.map-branch.is-compact .map-module-title{font-size:9px!important}
@media(max-width:699px),(max-height:499px){.git-map{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 42px}.map-mini{display:none}.git-map.show-mini{grid-template-columns:minmax(0,1fr) 70px}.git-map.show-mini .map-mini{display:block;width:50px;height:110px;margin:10px}.map-controls{padding:3px 10px}.map-controls button{min-height:32px}}
.map-edge{vector-effect:non-scaling-stroke;stroke-width:1.5;opacity:.65}.map-edge.is-trunk{stroke-width:2.5}.map-face{vector-effect:non-scaling-stroke;stroke-width:1.4}.map-viewport[data-lod=far] .map-node[data-status=locked] .map-face{stroke:var(--muted);stroke-dasharray:none;opacity:.55}.map-viewport[data-lod=far] .map-edge{stroke-width:1.2}.map-viewport[data-lod=far] .map-edge.is-trunk{stroke-width:2}.map-mini .map-edge{vector-effect:none;stroke-width:10}.map-viewport[data-detail=compact] .map-hash,.map-viewport[data-detail=compact] .map-stars{display:none}.map-viewport[data-detail=compact] .map-title{font-size:12px}

.map-branch.is-side text{font-size:9px}

.git-map [data-occluded=true]{visibility:hidden}.map-node-copy text{paint-order:stroke;stroke:var(--surface);stroke-width:4px;stroke-linejoin:round}.map-branch{pointer-events:none}

/* While the map is panned, nothing on the page can be selected (labels, the card, the console). */
html[data-map-dragging],html[data-map-dragging] *{user-select:none!important;-webkit-user-select:none!important}
