.route-map{padding:16px 18px;background:#fbfcfc}.map-meta{margin:0 0 10px;color:#617681;font-size:11px;font-weight:650}.entity-map{position:relative;min-height:450px;overflow:hidden;border:1px solid #cbd9de;background:radial-gradient(circle at 50% 50%,#e7f5ef 0,#f9fbfb 42%,#f2f5f6 100%)}.entity-map:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#dce8eb 1px,transparent 1px),linear-gradient(90deg,#dce8eb 1px,transparent 1px);background-size:32px 32px;opacity:.55}.entity-map svg{position:absolute;inset:0;width:100%;height:100%;z-index:1}.map-edge{stroke:#afc2ca;stroke-width:.38;opacity:.6}.map-edge.active{stroke:#29aa73;stroke-width:.7;opacity:1}.map-entity{position:absolute;z-index:2;transform:translate(-50%,-50%);width:132px;min-height:52px;padding:7px 9px;border:1px solid #9eb6c0;border-radius:5px;background:#fff;color:#234a59;box-shadow:0 2px 8px #17333b17;text-align:center;white-space:normal}.map-entity:hover,.map-entity.selected{border-color:#249062;background:#edfaf4;box-shadow:0 0 0 2px #29aa7333}.map-entity b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.map-entity small{display:block;margin-top:2px;color:#617681;font-size:10px}.map-detail{display:flex;align-items:center;gap:12px;margin-top:10px;color:#617681;font-size:11px}.map-detail b{color:#234a59;font-size:12px}.map-detail .evidence{margin-left:auto;text-decoration:none}@media(max-width:760px){.entity-map{min-height:570px}.map-entity{width:110px}.map-detail{align-items:flex-start;flex-direction:column;gap:5px}.map-detail .evidence{margin-left:0}}
.danger{border-color:#bd5959!important;background:#fff8f8!important;color:#9c3333!important}.danger:hover{background:#fcecec!important}.danger:disabled{cursor:not-allowed;opacity:.45}
.map-link{display:inline-block;margin-right:8px;color:#175d83;font-size:12px;font-weight:650;text-decoration:none}.map-link:hover{text-decoration:underline}
.activity{position:fixed;z-index:20;right:20px;bottom:20px;display:grid;gap:8px;width:min(390px,calc(100vw - 40px));pointer-events:none}.activity-message{display:flex;align-items:flex-start;gap:9px;padding:11px 13px;border:1px solid #b9c8cf;background:#fff;color:#274652;box-shadow:0 10px 25px #18323a2b;font-size:12px;animation:activity-in .18s ease-out}.activity-message.running{border-color:#639ab5;background:#f2f9fc}.activity-message.success{border-color:#76b79a;background:#f0fbf5}.activity-message.error{border-color:#cd7d7d;background:#fff4f4;color:#872f2f}.activity-spinner{width:14px;height:14px;flex:0 0 14px;border:2px solid #8cb9cf;border-top-color:#167ba4;border-radius:50%;animation:activity-spin .8s linear infinite}.activity-message.success:before{content:"✓";color:#168a59;font-weight:800}.activity-message.error:before{content:"!";display:grid;place-items:center;width:14px;height:14px;border-radius:50%;background:#b94040;color:#fff;font-weight:800}@keyframes activity-spin{to{transform:rotate(360deg)}}@keyframes activity-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.interaction-map{display:block;width:100%;height:760px;border:0;background:#050b18}@media(max-width:760px){.interaction-map{height:700px}}

/* Compact repository controls: each saved review carries its own delete action. */
.review-switcher{margin-right:8px}
.new-review-icon{display:grid;place-items:center;min-width:34px;min-height:34px;margin-right:12px;padding:0;border:1px solid #4a6575;border-radius:7px;background:#172936;color:#b9dce8;font-size:20px;font-weight:400}.new-review-icon:hover{background:#223845;color:#e3f6ff}
.status-job-icon{display:grid;place-items:center;min-width:42px;min-height:42px;margin-right:8px;padding:0;border:1px solid #4a6575;border-radius:8px;background:#173b45;color:#d7fff0;font-size:24px;line-height:1}.status-job-icon:hover{background:#205461;color:#fff}.status-job-icon:disabled{opacity:.7}
.job-status-form{width:min(620px,calc(100vw - 32px))}.job-list{display:grid;gap:8px;max-height:420px;overflow:auto;padding:4px 0}.job-item{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:12px;border:1px solid #d4e2e6;border-radius:8px;background:#f8fbfc}.job-item i{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#dff7ed;color:#16885f;font-style:normal;font-weight:800}.job-item.running i,.job-item.queued i{background:#dff2f7;color:#087d99}.job-item.failed i{background:#fae7e7;color:#a24b4b}.job-item b,.job-item span{display:block}.job-item span{margin-top:3px;color:#56717b;font-size:11px}.job-item small{color:#56717b;font-size:10px;white-space:nowrap}
.review-choice{display:flex!important;align-items:center!important;gap:5px;width:100%;min-height:0;padding:5px!important;border-radius:7px}.review-choice:hover,.review-choice.active{background:#22313d}
.review-select{display:block!important;min-width:0;flex:1;padding:5px 6px;border:0!important;background:transparent!important;color:#dce5ea;text-align:left}.review-select:hover{background:transparent}.review-choice b{display:block;font-size:12px}.review-choice small{display:block;overflow:hidden;margin-top:3px;color:#8fa1af;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
.review-delete{display:grid!important;place-items:center;flex:0 0 28px;min-height:28px;padding:0!important;border:0!important;border-radius:5px;background:transparent!important;color:#b9969b;font-size:17px}.review-delete:hover{background:#42262c!important;color:#ffd5d8}
.topbar{height:88px!important;padding:0 max(30px,calc((100% - 1440px)/2))!important;background:#121d28!important;border-bottom:1px solid #293846!important}.brand{display:flex;align-items:center;gap:11px}.brand-mark{display:grid;place-items:center;width:39px;height:39px;border:1px solid #42b985;border-radius:12px;background:#182e29;color:#63d9a3;font-size:20px;font-weight:900}.brand strong{display:block;color:#edf2f5!important;font-size:17px!important;letter-spacing:0}.brand span{display:block;margin:2px 0 0!important;color:#91a2b0!important;font-size:10px!important}.review-switcher{position:relative;margin-left:auto;margin-right:12px}.review-button{display:flex;align-items:center;gap:9px;min-height:42px;padding:8px 12px;border:1px solid #354553;border-radius:7px;background:#182430;color:#dce5ea;font-weight:750}.review-button:hover{background:#202e3a}.review-button i{width:9px;height:9px;border-radius:50%;background:#58cf98}.review-button b{font-size:12px;font-weight:500}.review-menu{position:absolute;z-index:30;top:49px;right:0;display:none;width:340px;padding:10px;border:1px solid #354553;border-radius:12px;background:#182430;box-shadow:0 18px 42px #0008}.review-menu.open{display:block}.review-menu h2{margin:4px 8px 8px;color:#91a2b0;font-size:10px;letter-spacing:.1em;text-transform:uppercase}.review-choice{display:block;width:100%;min-height:0;padding:10px 11px;border:0;border-radius:7px;background:transparent;color:#dce5ea;text-align:left}.review-choice:hover,.review-choice.active{background:#22313d}.review-choice b{display:block;font-size:12px}.review-choice small{display:block;margin-top:3px;color:#8fa1af;font-size:10px}.divider{height:1px;margin:8px 0;background:#354553}.new-review{width:100%;border:1px dashed #4a6575;border-radius:6px;background:#172936;color:#b9dce8}.settings{display:grid;place-items:center;min-width:38px;min-height:38px;padding:0;border:1px solid #354553;border-radius:7px;background:#182430;color:#dce5ea;font-size:18px}.settings:hover{background:#202e3a}.review-bar{min-height:54px!important;align-items:center!important}.review-bar p{font-size:12px!important}@media(max-width:760px){.topbar{height:70px!important;padding:0 14px!important}.brand-mark{width:32px;height:32px}.brand span{display:none}.review-button{max-width:190px}.review-button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-menu{right:-42px;width:min(340px,calc(100vw - 28px))}}
