From 853fb6eddaf5f3c04f3c02256af0058dc75fe51a Mon Sep 17 00:00:00 2001 From: cvweiss Date: Mon, 14 Sep 2026 14:29:16 -0400 Subject: [PATCH 1/4] fix contrast issues --- app/css/_override-7-map-and-table.css | 2 -- app/css/_override-c-polish.css | 8 +++++++- public/css/app.min.css | 4 ++-- public/css/app.min.css.map | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/css/_override-7-map-and-table.css b/app/css/_override-7-map-and-table.css index c025dc8b..8c29a781 100644 --- a/app/css/_override-7-map-and-table.css +++ b/app/css/_override-7-map-and-table.css @@ -255,5 +255,3 @@ .sig-chip { color: var(--foreground); } -.gate-chip a { color: var(--foreground); } -.gate-chip a:hover { color: var(--primary); } diff --git a/app/css/_override-c-polish.css b/app/css/_override-c-polish.css index e8118086..9f68206c 100644 --- a/app/css/_override-c-polish.css +++ b/app/css/_override-c-polish.css @@ -148,7 +148,13 @@ line-height: 1.6; text-decoration: none; } -.gate-chip:hover { background: var(--accent); } +/* The chip is the link itself. Pair the brand's primary fill with its + explicitly chosen on-primary ink so hover cannot become blue on orange. */ +.gate-chip:hover { + background: var(--primary); + color: var(--primary-foreground); + text-decoration: none; +} .gate-chip .gate-sec { padding: 0 5px; border-radius: 999px; diff --git a/public/css/app.min.css b/public/css/app.min.css index f63bc915..578e0b5c 100644 --- a/public/css/app.min.css +++ b/public/css/app.min.css @@ -21,12 +21,12 @@ html .ui-selectmenu-menu li a,html .ui-selectmenu-status{padding:0 1em 0 .5em;fo #dialog-signature,#dialog-signature .ui-dialog-content{font-size:var(--fs-base)}#dialog-signature .row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin:0 0 var(--space-3) 0;line-height:1.4}#dialog-signature .row>.label:first-child{flex:0 0 5.5rem;text-align:right;font-size:var(--fs-sm);font-weight:500;color:var(--muted-foreground);letter-spacing:.02em}#dialog-signature .row>.label:not(:first-child){flex:0 0 auto;color:var(--muted-foreground);font-weight:400}#dialog-signature .ui-selectmenu-button,#dialog-signature input[type=password],#dialog-signature input[type=text],#dialog-signature select{background-color:var(--muted);border:1px solid var(--input);border-radius:var(--radius-sm);color:var(--foreground);font-size:var(--fs-base);padding:var(--space-1) var(--space-2);min-height:1.9rem}#dialog-signature input[type=text]:hover,#dialog-signature select:hover{border-color:var(--border-strong)}#dialog-signature input[type=text]:focus,#dialog-signature select:focus{border-color:var(--ring);background-color:var(--background)}#dialog-signature .signatureID{width:3.6rem;text-align:center;text-transform:uppercase}#dialog-signature .wormholeType{width:4.4rem;text-align:center;text-transform:uppercase}#dialog-signature .leadsTo{width:12rem}#dialog-signature [name=signatureName],#dialog-signature [name=wormholeName]{flex:1 1 12rem;min-width:8rem}#dialog-signature .sig-missing,#dialog-signature .sig-missing:focus{border-color:var(--destructive);box-shadow:0 0 0 1px var(--destructive)}#dialog-signature #durationPicker,#dialog-signature .duration-picker{font-size:var(--fs-base)}#dialog-signature .duration-picker input{width:2.4rem;text-align:center}#dialog-signature .duration-picker label,#dialog-signature .duration-picker span{font-size:var(--fs-sm);color:var(--muted-foreground)}#dialog-signature .sideLabel{position:static;transform:none;display:block;width:auto;margin:var(--space-4) 0 var(--space-3);padding-bottom:var(--space-1);border-bottom:1px solid var(--border);color:var(--muted-foreground);font-size:var(--fs-xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;text-align:left}#dialog-signature .side{padding-left:0}#dialog-signature hr{display:none}#dialog-signature .quickSelectBar{display:flex;flex-wrap:wrap;gap:var(--space-1);flex:1 1 100%;margin-left:6rem;margin-top:calc(var(--space-1) * -1)}#dialog-signature .quickSelectBar button{border:1px solid var(--border);border-radius:var(--radius-sm);background:0 0;padding:1px var(--space-2);min-width:0;min-height:0;font-size:var(--fs-xs);line-height:1.6}#dialog-signature .quickSelectBar button:hover{border-color:var(--border-strong);background:var(--muted)}#dialog-signature .quickSelectBar{align-items:center}#dialog-signature .wormholeTypeQuickSelect button{font-size:var(--fs-xs);padding:1px var(--space-2);min-height:0}.ui-dialog:has(#dialog-signature){width:min(30rem,calc(100vw - 2rem))!important}#dialog-signature{width:auto!important}#dialog-signature .row:first-of-type{flex-wrap:nowrap}#dialog-signature #signatureType{margin-left:auto}#dialog-signature #signatureType .ui-selectmenu-button{min-width:8rem}#dialog-signature .quickSelectBar{margin-left:6rem;gap:3px}#dialog-signature .quickSelectBar button{min-width:2rem;text-align:center;font-size:var(--fs-xs);padding:2px 0}#dialog-signature #durationPicker,#dialog-signature .duration-picker{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border:1px solid var(--input);border-radius:var(--radius-sm);background:var(--muted)}#dialog-signature .duration-picker input{border:0;background:0 0;min-height:0;padding:0;width:2rem} @media (max-width:767px),(max-height:599px){#wrapper{overflow-x:hidden}.gridster,.gridster>ul{position:static!important;width:auto!important;height:auto!important;margin:0!important}.gridWidget{position:static!important;width:auto!important;height:auto!important;min-height:12rem;margin:0 0 var(--space-3) 0!important;overflow:visible}.gridWidget>.content,.gridWidget>.controls{position:static!important;height:auto!important;width:auto!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important}#chainWidget .content{min-height:55vh}#notesWidget .content{min-height:14rem}.grid-resize{display:none!important}#layout,#notesWidget #add-comment,#signaturesWidget #add-signature,#signaturesWidget #delete-signature,#signaturesWidget #edit-signature,#signaturesWidget #redo,#signaturesWidget #undo{display:none!important}#serverStatus,#topbar h3:nth-of-type(2){display:none}#topbar{position:sticky}#sigTable td:nth-child(n+5),#sigTable th:nth-child(n+5){display:none}}@media (min-width:768px) and (max-width:959px) and (min-height:600px){.gridster,.gridster>ul{position:static!important;width:auto!important;height:auto!important}.gridster>ul{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);padding:0 var(--space-2)}.gridWidget{position:static!important;width:auto!important;height:auto!important;margin:0!important}.gridWidget>.content,.gridWidget>.controls{position:static!important;height:auto!important;width:auto!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important}#infoWidget{min-height:34vh}#signaturesWidget{min-height:34vh}#notesWidget{min-height:26vh}#chainWidget{grid-column:1/-1;min-height:46vh}.grid-resize{display:none!important}}@media (pointer:coarse){#topbar i,.controls i,.controls span.control,.panel-hide,.quickSelectBar button{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}.ui-button,button,input[type=button],input[type=submit]{min-height:44px;padding:var(--space-2) var(--space-4)}input[type=number],input[type=password],input[type=text],select,textarea{min-height:40px;font-size:1.15rem}#sigTable td{padding:var(--space-3) var(--space-2)}#dialog-signature .mini-selector+label{padding:var(--space-2) var(--space-4)}#sigTable tbody tr:hover>td{background-color:transparent}}@media (max-width:767px),(max-height:599px){.ui-dialog{max-width:calc(100vw - var(--space-4))!important;max-height:calc(100vh - var(--space-4))!important;left:var(--space-2)!important;overflow:auto}.ui-dialog .ui-dialog-content{max-height:60vh;overflow:auto}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:NaNs!important;animation-iteration-count:1!important;transition-duration:NaNs!important}}#chainParent{touch-action:pan-x pan-y pinch-zoom;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}@media (max-width:767px),(max-height:599px){#chainMap .system,#chainMap [class*=system]{touch-action:inherit}} .sys-panel{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);overflow-y:auto;height:100%;box-sizing:border-box}.sys-head{display:flex;flex-direction:column;gap:var(--space-2)}.sys-panel .sys-name{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--fs-lg);font-weight:600;line-height:1.1;color:var(--foreground);letter-spacing:-.01em}.sys-meta{display:flex;flex-wrap:wrap;gap:var(--space-1)}.sys-meta .chip{margin:0;padding:1px var(--space-2);border:1px solid var(--border);border-radius:999px;background:var(--muted);color:var(--foreground);font-size:var(--fs-xs);font-weight:500;line-height:1.7;white-space:nowrap}.sys-meta .chip:empty{display:none}.sys-meta #infoSecurity{color:inherit}.sys-statics{font-size:var(--fs-sm);line-height:1.7;color:var(--card-foreground)}.sys-statics:empty{display:none}.sys-extra{font-size:var(--fs-sm);color:var(--foreground);line-height:1.8}.sys-extra:empty{display:none}#activityGraph{min-height:120px}.sys-range{display:flex;gap:var(--space-1);justify-content:center}.sys-range a{padding:1px var(--space-2);border:1px solid var(--border);border-radius:999px;color:var(--muted-foreground);font-size:var(--fs-xs);font-weight:500;text-decoration:none}.sys-range a:hover{border-color:var(--border-strong);background:var(--muted);color:var(--foreground);text-decoration:none}.sys-links{display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:center;padding-top:var(--space-1);border-top:1px solid var(--border);font-size:var(--fs-sm)}.sys-links a{color:var(--muted-foreground);font-weight:500}.sys-links a:hover{color:var(--primary)} -.copy::after{content:none}.copy{position:relative;display:inline-block;width:1em;height:1em;vertical-align:-.1em;opacity:.55;transition:opacity .12s ease}.copy:focus-visible,.copy:hover{opacity:1}.copy::after,.copy::before{content:"";position:absolute;width:.62em;height:.78em;border:1px solid currentColor;border-radius:2px}.copy::before{left:0;top:.22em}.copy::after{left:.3em;top:0;background:var(--card)}#chainMap .currentNode>div.node,#chainMap div.greenNode.node,#chainMap div.loop,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{background-image:none!important;box-shadow:none;border-radius:var(--radius-md);border-width:1px;border-style:solid;transition:border-color .12s ease,background-color .12s ease}#chainMap div.node{background-color:var(--card)}#chainMap div.redNode.node{background-color:color-mix(in oklab,var(--data-class-red) 22%,var(--card))}#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--data-class-orange) 22%,var(--card))}#chainMap div.greenNode.node{background-color:color-mix(in oklab,var(--data-class-green) 22%,var(--card))}#chainMap div.loop{background-color:color-mix(in oklab,var(--data-class-void) 40%,var(--card))}#chainMap .currentNode>div.node{background-color:color-mix(in oklab,var(--primary) 18%,var(--card));border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}#chainMap div.node:hover{border-color:var(--border-strong)}#chainMap span.badge{background-color:var(--muted);color:var(--muted-foreground);box-shadow:none;border:1px solid var(--border);border-radius:999px;font-family:inherit;font-size:var(--fs-xs);font-weight:600;line-height:1.5;padding:0 5px;min-width:1.1em}#chainMap .nodeType{font-size:var(--fs-xs);color:var(--muted-foreground);letter-spacing:.04em}#chainMap .statics span{border-radius:999px;padding:0 5px;font-size:var(--fs-xs)}#sigTableWrapper{padding:0}#sigTable th.sortable{cursor:pointer;user-select:none;white-space:nowrap}#sigTable th.sortable:hover{color:var(--foreground)}#sigTable th.sortable i[data-icon=""]{display:none}#sigTable th.sortable::after{content:"";display:inline-block;width:0;height:0;margin-left:var(--space-1);border-left:3px solid transparent;border-right:3px solid transparent;opacity:0;transition:opacity .12s ease}#sigTable th.tablesorter-headerAsc::after{border-bottom:4px solid var(--primary);opacity:1}#sigTable th.tablesorter-headerDesc::after{border-top:4px solid var(--primary);opacity:1}#sigTable td .sigTypeName,#sigTable td.sigType>span{display:inline-block;padding:0 var(--space-2);border:1px solid var(--border);border-radius:999px;background:var(--muted);font-size:var(--fs-xs);font-weight:500;line-height:1.7}#sigTable td.sigAge{color:var(--muted-foreground);font-variant-numeric:tabular-nums}#sigTable td.sigID{font-variant-numeric:tabular-nums;letter-spacing:.03em}#sigTable tbody:empty::after,#sigTableWrapper>.sig-empty{content:"No signatures in this system";display:block;padding:var(--space-5) var(--space-3);text-align:center;color:var(--muted-foreground);font-size:var(--fs-sm)}.sig-filter{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-2) var(--space-2);border-bottom:1px solid var(--border)}.sig-filter-groups{display:flex;flex-wrap:wrap;gap:var(--space-1)}.sig-chip{border:1px solid var(--border);border-radius:999px;background:0 0;color:var(--muted-foreground);font-size:var(--fs-xs);font-weight:500;line-height:1.6;padding:0 var(--space-2);min-height:0;cursor:pointer;transition:border-color .12s ease,background-color .12s ease,color .12s ease}.sig-chip:hover{border-color:var(--border-strong);background:var(--muted);color:var(--foreground)}.sig-chip.on{border-color:var(--primary);color:var(--primary);background:color-mix(in oklab,var(--primary) 14%,transparent)}.sig-chip.sig-scan[data-state=scanned].on{border-color:var(--data-good);color:var(--data-good);background:color-mix(in oklab,var(--data-good) 14%,transparent)}.sig-chip.sig-scan[data-state=unscanned].on{border-color:var(--data-info);color:var(--data-info);background:color-mix(in oklab,var(--data-info) 14%,transparent)}.sig-stats{margin-left:auto;color:var(--muted-foreground);font-size:var(--fs-xs);white-space:nowrap;font-variant-numeric:tabular-nums}#sigTable tbody tr.sig-filtered{display:none}#sigTable tbody tr.sig-unscanned>td:first-child{box-shadow:inset 2px 0 0 var(--data-info)}#sigTable tbody tr[data-activity=combat]>td:nth-child(2)::before,#sigTable tbody tr[data-activity=explore]>td:nth-child(2)::before{content:"";display:inline-block;width:.5em;height:.5em;margin-right:.45em;border-radius:50%;vertical-align:.05em}#sigTable tbody tr[data-activity=combat]>td:nth-child(2)::before{background:var(--data-critical)}#sigTable tbody tr[data-activity=explore]>td:nth-child(2)::before{background:var(--data-good)}.gate-chip,.sig-chip,.sys-meta .chip{color:var(--foreground)}.gate-chip a{color:var(--foreground)}.gate-chip a:hover{color:var(--primary)} +.copy::after{content:none}.copy{position:relative;display:inline-block;width:1em;height:1em;vertical-align:-.1em;opacity:.55;transition:opacity .12s ease}.copy:focus-visible,.copy:hover{opacity:1}.copy::after,.copy::before{content:"";position:absolute;width:.62em;height:.78em;border:1px solid currentColor;border-radius:2px}.copy::before{left:0;top:.22em}.copy::after{left:.3em;top:0;background:var(--card)}#chainMap .currentNode>div.node,#chainMap div.greenNode.node,#chainMap div.loop,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{background-image:none!important;box-shadow:none;border-radius:var(--radius-md);border-width:1px;border-style:solid;transition:border-color .12s ease,background-color .12s ease}#chainMap div.node{background-color:var(--card)}#chainMap div.redNode.node{background-color:color-mix(in oklab,var(--data-class-red) 22%,var(--card))}#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--data-class-orange) 22%,var(--card))}#chainMap div.greenNode.node{background-color:color-mix(in oklab,var(--data-class-green) 22%,var(--card))}#chainMap div.loop{background-color:color-mix(in oklab,var(--data-class-void) 40%,var(--card))}#chainMap .currentNode>div.node{background-color:color-mix(in oklab,var(--primary) 18%,var(--card));border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}#chainMap div.node:hover{border-color:var(--border-strong)}#chainMap span.badge{background-color:var(--muted);color:var(--muted-foreground);box-shadow:none;border:1px solid var(--border);border-radius:999px;font-family:inherit;font-size:var(--fs-xs);font-weight:600;line-height:1.5;padding:0 5px;min-width:1.1em}#chainMap .nodeType{font-size:var(--fs-xs);color:var(--muted-foreground);letter-spacing:.04em}#chainMap .statics span{border-radius:999px;padding:0 5px;font-size:var(--fs-xs)}#sigTableWrapper{padding:0}#sigTable th.sortable{cursor:pointer;user-select:none;white-space:nowrap}#sigTable th.sortable:hover{color:var(--foreground)}#sigTable th.sortable i[data-icon=""]{display:none}#sigTable th.sortable::after{content:"";display:inline-block;width:0;height:0;margin-left:var(--space-1);border-left:3px solid transparent;border-right:3px solid transparent;opacity:0;transition:opacity .12s ease}#sigTable th.tablesorter-headerAsc::after{border-bottom:4px solid var(--primary);opacity:1}#sigTable th.tablesorter-headerDesc::after{border-top:4px solid var(--primary);opacity:1}#sigTable td .sigTypeName,#sigTable td.sigType>span{display:inline-block;padding:0 var(--space-2);border:1px solid var(--border);border-radius:999px;background:var(--muted);font-size:var(--fs-xs);font-weight:500;line-height:1.7}#sigTable td.sigAge{color:var(--muted-foreground);font-variant-numeric:tabular-nums}#sigTable td.sigID{font-variant-numeric:tabular-nums;letter-spacing:.03em}#sigTable tbody:empty::after,#sigTableWrapper>.sig-empty{content:"No signatures in this system";display:block;padding:var(--space-5) var(--space-3);text-align:center;color:var(--muted-foreground);font-size:var(--fs-sm)}.sig-filter{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-2) var(--space-2);border-bottom:1px solid var(--border)}.sig-filter-groups{display:flex;flex-wrap:wrap;gap:var(--space-1)}.sig-chip{border:1px solid var(--border);border-radius:999px;background:0 0;color:var(--muted-foreground);font-size:var(--fs-xs);font-weight:500;line-height:1.6;padding:0 var(--space-2);min-height:0;cursor:pointer;transition:border-color .12s ease,background-color .12s ease,color .12s ease}.sig-chip:hover{border-color:var(--border-strong);background:var(--muted);color:var(--foreground)}.sig-chip.on{border-color:var(--primary);color:var(--primary);background:color-mix(in oklab,var(--primary) 14%,transparent)}.sig-chip.sig-scan[data-state=scanned].on{border-color:var(--data-good);color:var(--data-good);background:color-mix(in oklab,var(--data-good) 14%,transparent)}.sig-chip.sig-scan[data-state=unscanned].on{border-color:var(--data-info);color:var(--data-info);background:color-mix(in oklab,var(--data-info) 14%,transparent)}.sig-stats{margin-left:auto;color:var(--muted-foreground);font-size:var(--fs-xs);white-space:nowrap;font-variant-numeric:tabular-nums}#sigTable tbody tr.sig-filtered{display:none}#sigTable tbody tr.sig-unscanned>td:first-child{box-shadow:inset 2px 0 0 var(--data-info)}#sigTable tbody tr[data-activity=combat]>td:nth-child(2)::before,#sigTable tbody tr[data-activity=explore]>td:nth-child(2)::before{content:"";display:inline-block;width:.5em;height:.5em;margin-right:.45em;border-radius:50%;vertical-align:.05em}#sigTable tbody tr[data-activity=combat]>td:nth-child(2)::before{background:var(--data-critical)}#sigTable tbody tr[data-activity=explore]>td:nth-child(2)::before{background:var(--data-good)}.gate-chip,.sig-chip,.sys-meta .chip{color:var(--foreground)} @media (min-width:960px){body,html{height:100%;overflow:hidden}#wrapper{height:100vh;overflow:hidden;display:flex;flex-direction:column}#inner-wrapper{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}#topbar{flex:0 0 auto;position:static}.gridster{flex:1 1 auto;min-height:0;visibility:visible!important;padding:var(--space-2);box-sizing:border-box}.gridster>ul{position:static!important;width:auto!important;height:100%!important;margin:0!important;padding:0;list-style:none;display:grid;gap:var(--space-2);grid-template-columns:minmax(260px,1fr) minmax(340px,1.35fr) minmax(220px,.85fr);grid-template-rows:minmax(180px,32vh) 1fr}}.gridWidget{position:static!important;width:auto!important;height:auto!important;min-height:0;margin:0!important;display:flex;flex-direction:column;overflow:hidden}.gridWidget>.controls{position:static!important;flex:0 0 auto;width:auto!important;height:auto!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important}.gridWidget>.content{position:static!important;flex:1 1 auto;min-height:0;width:auto!important;height:auto!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important;overflow:auto}#chainWidget{grid-column:1/-1}.grid-resize{display:none!important}.gridWidget.panel-hidden{display:none!important}#wrapper::before{content:"";position:fixed;inset:0;background:linear-gradient(to bottom,color-mix(in oklab,var(--background) 88%,transparent),color-mix(in oklab,var(--background) 94%,transparent));pointer-events:none;z-index:0}#inner-wrapper{position:relative;z-index:1}.gridWidget{background-color:var(--card)}#footer{display:none!important}#topbar{display:flex;align-items:center;gap:var(--space-4);padding:0 var(--space-3);height:auto;min-height:2.6rem;line-height:normal}#topbar>.align-left{display:flex;align-items:center;gap:var(--space-3);flex:1 1 auto}#topbar>.align-right{display:flex;align-items:center;gap:var(--space-2);flex:0 0 auto;padding-right:0}#topbar h1,#topbar h3{margin:0;display:flex;align-items:center;gap:var(--space-1)}#chainWidget>.controls{border-bottom-color:color-mix(in oklab,var(--primary) 45%,var(--border))}#chainWidget .panel-title{color:var(--primary)}.gate-list{row-gap:var(--space-1)}.gate-chip{flex:0 0 auto}.gridWidget>.controls{min-height:2.1rem}#activityGraph{min-height:0}#activityGraph.is-sparse{height:84px!important;opacity:.75}#activityGraphControls{margin-top:var(--space-1)}.gridster .gridWidget,.gridster .gs-w{background-color:var(--card);background-image:none}.gridster .gs-w#chainWidget{background-color:color-mix(in oklab,var(--card) 88%,transparent)}#chainWidget>.content{background:0 0}@media (min-width:960px){.gridster>ul{grid-template-rows:minmax(240px,46vh) 1fr}}#sigTable{table-layout:fixed}#sigTable td:nth-child(1),#sigTable th:nth-child(1){width:5.5rem;white-space:nowrap}#sigTable td:nth-child(2),#sigTable th:nth-child(2){width:6rem;white-space:nowrap}#sigTable td:nth-child(3),#sigTable th:nth-child(3){width:4.5rem;white-space:nowrap}#sigTable td:nth-child(4),#sigTable th:nth-child(4){width:auto}#sigTable td:nth-child(5),#sigTable td:nth-child(6),#sigTable th:nth-child(5),#sigTable th:nth-child(6){width:4.5rem;white-space:nowrap}#sigTable td,#sigTable th{text-align:left}#sigTable td:nth-child(5),#sigTable td:nth-child(6),#sigTable th:nth-child(5),#sigTable th:nth-child(6){text-align:right}#sigTable td.centerAlign,#sigTable td.rightAlign{text-align:inherit}#sigTable td:nth-child(1){font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis}#sigTable thead th{position:sticky;top:0;background:var(--card);z-index:1}.sys-panel .sys-name{color:var(--foreground);font-weight:600}.sys-extra,.sys-statics{color:var(--card-foreground)}#activityGraphControls a,#version,.sig-stats,.sys-links a{color:var(--muted-foreground)}.sig-filter{padding:var(--space-1) var(--space-2)}.sig-chip{font-size:calc(var(--fs-xs) * .95)}#topbar #logo{position:static;display:flex;align-items:baseline;gap:var(--space-2)}#version{position:static;top:auto;right:auto;height:auto;font-size:var(--fs-xs);color:var(--muted-foreground);letter-spacing:.04em;white-space:nowrap}#panel-menu{position:absolute;z-index:3000;min-width:12rem;padding:var(--space-1) 0;background:var(--popover);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 8px 24px rgba(0,0,0,.5)}#panel-menu button{display:flex;align-items:center;gap:var(--space-2);width:100%;border:0;border-radius:0;background:0 0;color:var(--foreground);font-size:var(--fs-sm);text-align:left;padding:var(--space-1) var(--space-3);min-height:0}#panel-menu button:hover{background:var(--muted)}#panel-menu .tick{width:1em;color:var(--primary)}.avatar{display:inline-block;width:1.6rem;height:1.6rem;border-radius:50%;object-fit:cover;vertical-align:middle;background:var(--muted);box-shadow:0 0 0 1px var(--border)}#topbar #user{display:inline-flex;align-items:center;gap:var(--space-2)}.avatar-lg{width:3.4rem;height:3.4rem;box-shadow:0 0 0 1px var(--border)}#dialog-options #avatar{padding-right:var(--space-3);vertical-align:top}#login img.avatar,#topbar img.avatar,img.avatar{border-radius:50%}img.logo{width:1.6rem;height:1.6rem;object-fit:contain;vertical-align:middle} #chainWidget>.controls{flex-wrap:nowrap;gap:var(--space-2)}#chainWidget>.controls>:not(#chainTabs){flex:0 0 auto}#chainTabs{flex:1 1 auto;min-width:0;display:flex;align-items:stretch;gap:2px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scroll-snap-type:x proximity;mask-image:linear-gradient(to right,transparent 0,#000 12px,#000 calc(100% - 12px),transparent 100%)}#chainTabs::-webkit-scrollbar{height:4px}#chainTabs::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}#chainTabs::-webkit-scrollbar-track{background:0 0}#chainTabs .tab{flex:0 0 auto;min-width:0;max-width:12rem;display:flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm) var(--radius-sm) 0 0;border-bottom:2px solid transparent;background:0 0;color:var(--muted-foreground);font-size:var(--fs-sm);line-height:1.6;text-align:left;white-space:nowrap;scroll-snap-align:start;transition:color .12s ease,background-color .12s ease,border-color .12s ease}#chainTabs .tab:hover{background:var(--muted);color:var(--foreground);border-bottom-color:var(--border-strong)}#chainTabs .tab.current{background:var(--muted);color:var(--foreground);border-bottom-color:var(--primary);font-weight:600}#chainTabs .tab .name{float:none;padding-left:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#chainTabs .tab .closeTab,#chainTabs .tab .editTab{float:none;flex:0 0 auto;padding:0 2px;font-size:.85em;line-height:1;color:var(--muted-foreground)}#chainTabs .tab.current .closeTab,#chainTabs .tab.current .editTab,#chainTabs .tab:hover .closeTab,#chainTabs .tab:hover .editTab{opacity:1;visibility:visible}#chainTabs .tab .closeTab:hover{color:var(--destructive)}#chainTabs .tab .editTab:hover{color:var(--primary)}#chainTabs .ui-sortable-helper{background:var(--card);border-color:var(--border);box-shadow:0 4px 12px rgba(0,0,0,.4)}#chainWidget .panel-title{display:none}.gridWidget>.controls>div[style*=float]{margin-left:auto;float:none!important;display:flex;align-items:center;gap:var(--space-1)}.gridWidget>.controls>.panel-hide{margin-left:0}.gridWidget>.controls>div[style*=float]~.panel-hide{margin-left:0}.gridWidget>.controls>.panel-hide:first-of-type{margin-left:auto}#chainWidget>.controls>div[style*=float]{margin-left:0} #topbar{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-2) var(--space-3);height:auto;min-height:0;line-height:normal;flex-wrap:nowrap}#topbar>.align-left{display:flex;align-items:center;gap:var(--space-3);flex:1 1 auto;min-width:0}#topbar>.align-right{display:flex;align-items:center;gap:var(--space-3);flex:0 0 auto;padding-right:0}#topbar #logo{display:flex;align-items:baseline;gap:var(--space-2);margin:0;flex:0 0 auto}#topbar #logo a{font-size:1.8rem;line-height:1.1}#topbar h3{margin:0;display:flex;align-items:center;gap:var(--space-1)}#topbar .avatar{width:2.4rem;height:2.4rem}#topbar #user{gap:var(--space-2);font-size:1.05rem}#topbar #layout,#topbar #settings{font-size:1.3rem;flex:0 0 auto}#topbar #systemSearch{flex:1 1 auto;min-width:0}#statusbar{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-1) var(--space-3);border-top:1px solid var(--border);background:color-mix(in oklab,var(--background) 82%,transparent);font-size:var(--fs-sm);color:var(--foreground)}#statusbar .bar-value{font-variant-numeric:tabular-nums;font-weight:600}#statusbar #serverStatus.is-down .bar-value{color:var(--data-critical)}.bar-label{color:var(--muted-foreground);font-size:var(--fs-xs);font-weight:600;letter-spacing:.1em;text-transform:uppercase;margin-right:var(--space-1)}.rte{border:1px solid var(--input);border-radius:var(--radius-sm);background:var(--muted);overflow:hidden}.rte-bar{display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:var(--space-1);border-bottom:1px solid var(--border);background:color-mix(in oklab,var(--card) 60%,transparent)}.rte-btn{min-width:1.9rem;min-height:1.9rem;padding:0 var(--space-1);border:1px solid transparent;border-radius:var(--radius-sm);background:0 0;color:var(--muted-foreground);font-size:var(--fs-sm);line-height:1;cursor:pointer}.rte-btn:hover{background:var(--accent-surface);color:var(--foreground);border-color:var(--border)}.rte-sep{width:1px;align-self:stretch;margin:2px var(--space-1);background:var(--border)}.rte-swatch{width:1.1rem;height:1.1rem;min-width:0;min-height:0;padding:0;border:1px solid var(--border);border-radius:50%;cursor:pointer}.rte-swatch:hover{transform:scale(1.15)}.rte-area{min-height:7rem;max-height:22rem;overflow-y:auto;padding:var(--space-2);color:var(--foreground);font-size:var(--fs-base);line-height:1.6;outline:0}.rte-area:focus{background:var(--background)}.rte-area a{color:var(--primary)}.rte-area ol,.rte-area ul{padding-left:1.4em;margin:.3em 0} a,body,button,div,h1,h2,h3,h4,h5,h6,input,li,p,select,span,table,td,textarea,th{font-family:Montserrat,system-ui,-apple-system,'Segoe UI',sans-serif}.icon,.icon::before,[data-icon],[data-icon]::after,[data-icon]::before{font-family:icon!important}#sigTable td:nth-child(1),#statusbar .bar-value,#topbar #serverTime,.mono,code,pre{font-variant-numeric:tabular-nums}.settings-sections>h3{position:static;background:0 0}#topbar>.align-left{overflow:hidden}#topbar #currentSpan,#topbar #searchSpan,#topbar #systemSearch{min-width:0;overflow:hidden;text-overflow:ellipsis}#topbar #systemSearch input[type=text]{max-width:14rem;min-width:0}#topbar>.align-right{z-index:2}.sys-panel{padding-top:var(--space-4)}.sys-panel .sys-name{margin-top:0}#statusbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}#statusbar>#serverStatus{justify-self:start}#statusbar>#version{justify-self:center}#statusbar>#eveTime{justify-self:end}#activityGraph{overflow:hidden}#dialog-options td,#logoutTable td,table td{font-family:Montserrat,system-ui,-apple-system,'Segoe UI',sans-serif}#sigTable td:nth-child(1){font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;letter-spacing:.04em}#topbar{box-sizing:border-box;width:100%;max-width:100%} -#infoWidget>.content,#notesWidget>.content,#signaturesWidget>.content,.gridWidget>.content{padding:16px;box-sizing:border-box;overflow:auto;min-height:0}#chainWidget>.content{padding:0;min-height:0;overflow:hidden}#chainParent{padding:var(--space-3);box-sizing:border-box;max-height:100%;overflow:auto}#sigFilterBar{margin-bottom:var(--space-3)}.sys-panel>*+*{margin-top:var(--space-3)}#activityGraphControls{margin-top:var(--space-2)}@media (min-width:960px){.gridster>ul{grid-template-columns:minmax(230px,1fr) minmax(320px,1.5fr) minmax(190px,.78fr);grid-template-rows:minmax(240px,46vh) 1fr}}#statusbar{font-size:11px}#statusbar .bar-label{font-size:inherit;letter-spacing:.07em;opacity:.72}#statusbar .bar-value{font-size:inherit;font-variant-numeric:tabular-nums}#topbar #user-avatar.avatar{width:34px;height:34px}#topbar #login h3{display:inline-flex;align-items:center;gap:var(--space-2)}:root{--chart-gridline:rgba(255, 255, 255, .055);--chart-axis-text:#b7b7b7}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--chart-gridline:rgba(0, 0, 0, .075);--chart-axis-text:#4a4a4a}}:root[data-theme=light]{--chart-gridline:rgba(0, 0, 0, .075);--chart-axis-text:#4a4a4a}#activityGraph.is-empty::before,#comment-container:not(:has(.comment:not(.hidden)))::before{content:attr(data-empty);display:block;padding:var(--space-5) var(--space-3);text-align:center;color:var(--muted-foreground);font-size:12px;line-height:1.5}#comment-container:not(:has(.comment:not(.hidden)))::before{content:"No notes on this system yet."}#activityGraph.is-empty{height:auto;min-height:0}.gate-list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.gate-list-label{color:var(--muted-foreground);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.gate-chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-1) 2px var(--space-2);border-radius:999px;background:var(--muted);color:var(--foreground);font-size:11px;line-height:1.6;text-decoration:none}.gate-chip:hover{background:var(--accent)}.gate-chip .gate-sec{padding:0 5px;border-radius:999px;background:currentColor;font-size:9px;font-weight:700;letter-spacing:.02em}.gate-chip .gate-sec::after{content:none}.gate-chip .gate-sec{-webkit-text-fill-color:var(--card)}.gate-chip.is-closed{opacity:.5;text-decoration:line-through}#sigTable td:nth-child(1),#sigTable th:nth-child(1){width:5.25rem}#sigTable td:nth-child(2),#sigTable th:nth-child(2){width:6.5rem}#sigTable td:nth-child(3),#sigTable th:nth-child(3){width:4.25rem}#sigTable td:nth-child(5),#sigTable td:nth-child(6),#sigTable th:nth-child(5),#sigTable th:nth-child(6){width:5rem}.comment{padding:var(--space-2) 0;border-bottom:1px solid var(--border)}.comment:last-child{border-bottom:0}.commentToolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-bottom:6px}.commentToolbar>.commentControls,.commentToolbar>.commentTitle{float:none;min-width:0}.commentTitle{display:flex;flex-direction:column;gap:1px;flex:1 1 auto}.commentTitle .commentCreated,.commentTitle .commentModified{display:block;font-size:10px;line-height:1.35;color:var(--muted-foreground)}.commentControls{display:flex;gap:var(--space-2);flex:0 0 auto;font-size:11px}.commentBody{font-size:12px;line-height:1.5}.commentBody>:first-child{margin-top:0}.commentBody>:last-child{margin-bottom:0}.sys-panel>*{flex:0 0 auto}#activityGraph,#activityGraph.is-empty,#activityGraph.is-sparse{height:auto!important;min-height:0;opacity:1} +#infoWidget>.content,#notesWidget>.content,#signaturesWidget>.content,.gridWidget>.content{padding:16px;box-sizing:border-box;overflow:auto;min-height:0}#chainWidget>.content{padding:0;min-height:0;overflow:hidden}#chainParent{padding:var(--space-3);box-sizing:border-box;max-height:100%;overflow:auto}#sigFilterBar{margin-bottom:var(--space-3)}.sys-panel>*+*{margin-top:var(--space-3)}#activityGraphControls{margin-top:var(--space-2)}@media (min-width:960px){.gridster>ul{grid-template-columns:minmax(230px,1fr) minmax(320px,1.5fr) minmax(190px,.78fr);grid-template-rows:minmax(240px,46vh) 1fr}}#statusbar{font-size:11px}#statusbar .bar-label{font-size:inherit;letter-spacing:.07em;opacity:.72}#statusbar .bar-value{font-size:inherit;font-variant-numeric:tabular-nums}#topbar #user-avatar.avatar{width:34px;height:34px}#topbar #login h3{display:inline-flex;align-items:center;gap:var(--space-2)}:root{--chart-gridline:rgba(255, 255, 255, .055);--chart-axis-text:#b7b7b7}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--chart-gridline:rgba(0, 0, 0, .075);--chart-axis-text:#4a4a4a}}:root[data-theme=light]{--chart-gridline:rgba(0, 0, 0, .075);--chart-axis-text:#4a4a4a}#activityGraph.is-empty::before,#comment-container:not(:has(.comment:not(.hidden)))::before{content:attr(data-empty);display:block;padding:var(--space-5) var(--space-3);text-align:center;color:var(--muted-foreground);font-size:12px;line-height:1.5}#comment-container:not(:has(.comment:not(.hidden)))::before{content:"No notes on this system yet."}#activityGraph.is-empty{height:auto;min-height:0}.gate-list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.gate-list-label{color:var(--muted-foreground);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.gate-chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-1) 2px var(--space-2);border-radius:999px;background:var(--muted);color:var(--foreground);font-size:11px;line-height:1.6;text-decoration:none}.gate-chip:hover{background:var(--primary);color:var(--primary-foreground);text-decoration:none}.gate-chip .gate-sec{padding:0 5px;border-radius:999px;background:currentColor;font-size:9px;font-weight:700;letter-spacing:.02em}.gate-chip .gate-sec::after{content:none}.gate-chip .gate-sec{-webkit-text-fill-color:var(--card)}.gate-chip.is-closed{opacity:.5;text-decoration:line-through}#sigTable td:nth-child(1),#sigTable th:nth-child(1){width:5.25rem}#sigTable td:nth-child(2),#sigTable th:nth-child(2){width:6.5rem}#sigTable td:nth-child(3),#sigTable th:nth-child(3){width:4.25rem}#sigTable td:nth-child(5),#sigTable td:nth-child(6),#sigTable th:nth-child(5),#sigTable th:nth-child(6){width:5rem}.comment{padding:var(--space-2) 0;border-bottom:1px solid var(--border)}.comment:last-child{border-bottom:0}.commentToolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-bottom:6px}.commentToolbar>.commentControls,.commentToolbar>.commentTitle{float:none;min-width:0}.commentTitle{display:flex;flex-direction:column;gap:1px;flex:1 1 auto}.commentTitle .commentCreated,.commentTitle .commentModified{display:block;font-size:10px;line-height:1.35;color:var(--muted-foreground)}.commentControls{display:flex;gap:var(--space-2);flex:0 0 auto;font-size:11px}.commentBody{font-size:12px;line-height:1.5}.commentBody>:first-child{margin-top:0}.commentBody>:last-child{margin-bottom:0}.sys-panel>*{flex:0 0 auto}#activityGraph,#activityGraph.is-empty,#activityGraph.is-sparse{height:auto!important;min-height:0;opacity:1} @media (max-width:767px),(max-height:599px){#topbar{min-height:0;height:auto;padding:8px 12px;gap:8px}#topbar{display:flex;min-height:0}#topbar>.align-left{display:flex;flex:1 1 auto}#topbar>.align-left #systemSearch{display:none}#topbar #hdr-system{font-size:17px}#topbar>.align-center{display:none}#topbar .hdr-pilot{display:none}#topbar .hdr-tools{padding-left:8px}#topbar>.align-right{flex:1 1 auto;width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px}#topbar #user-avatar.avatar{width:32px;height:32px}#topbar h3{margin:0;font-size:13px}.gridster{padding:12px}.gridWidget>.controls{flex-wrap:wrap;row-gap:4px}#chainTabs .closeTab,#chainTabs .editTab,#chainWidget>.controls #newTab,#chainWidget>.controls>.control,#chainWidget>.controls>div[style*=float]>i:not(.panel-hide),.chainTab .closeTab,.chainTab .editTab{display:none!important}#chainTabs{flex:1 1 100%;min-width:0;order:2}}@media (max-width:767px),(max-height:599px){.gridWidget>.controls>.bar-right{flex:1 1 100%;margin-left:0;justify-content:flex-end}#signaturesWidget #paste-signatures,#signaturesWidget .bar-sep{display:none!important}}@media (max-width:767px),(max-height:599px){#notesWidget>.controls>.bar-right,#signaturesWidget>.controls>.bar-right{display:none}}@media (max-width:767px),(max-height:599px){#topbar>.align-right{justify-content:flex-start;gap:14px}#topbar>.align-right>#settings,#topbar>.align-right>i#settings{margin-left:auto}#topbar>.align-right>#layout{display:none}.gridWidget>.controls>.bar-right{flex:0 0 auto;margin-left:auto}.gridWidget>.controls>.bar-right~.panel-hide{margin-left:var(--space-1)}#chainWidget>.controls>#higgs-jump,#chainWidget>.controls>#hot-jump,#chainWidget>.controls>#show-chainLegend,#chainWidget>.controls>#show-favorite,#chainWidget>.controls>#show-viewing,#chainWidget>.controls>.bar-sep{display:none!important}#chainTabs{order:0}}@media (max-width:767px),(max-height:599px){#sigTable tbody tr.selected,#sigTable tbody tr:hover{background-color:var(--muted)}#sigTable tbody tr.selected>td,#sigTable tbody tr:hover>td{background-color:transparent}} :root{--fs-xs:11px;--fs-sm:12px;--fs-base:13px;--fs-md:15px;--fs-lg:18px;--fs-xl:24px;--radius:8px;--radius-md:8px;--radius-sm:4px;--control-dense:28px;--control-standard:36px;--icon:16px;--icon-lg:20px}body{font-size:var(--fs-base)}[data-icon]::before{font-size:var(--icon);line-height:1}#topbar [data-icon]::before{font-size:var(--icon-lg)}.ui-dialog .ui-selectmenu-button,.ui-dialog input[type=number],.ui-dialog input[type=password],.ui-dialog input[type=text],.ui-dialog select{min-height:var(--control-standard);box-sizing:border-box}.ui-dialog-buttonpane button{min-height:var(--control-standard)}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--background:oklch(0.962 0.006 80);--card:oklch(1 0 0);--popover:oklch(1 0 0);--muted:oklch(0.955 0.005 80);--accent-surface:oklch(0.955 0.005 80);--border:oklch(0.90 0.006 80);--border-strong:oklch(0.82 0.008 80);--input:oklch(0.90 0.006 80)}}:root[data-theme=light]{--background:oklch(0.962 0.006 80);--card:oklch(1 0 0);--popover:oklch(1 0 0);--muted:oklch(0.955 0.005 80);--accent-surface:oklch(0.955 0.005 80);--border:oklch(0.90 0.006 80);--border-strong:oklch(0.82 0.008 80);--input:oklch(0.90 0.006 80)}#activityGraphControls,#infoLinks,.sys-links,.sys-range{display:flex;justify-content:flex-start;gap:var(--space-2);text-align:left}#infoLinks{border-top:0;padding-top:0}#infoLinks a,.sys-links a{padding:0}.comment:not(.hidden){display:flex;flex-direction:column}.comment.hidden{display:none!important}.comment>.commentBody{order:1}.comment>.commentToolbar{order:2;margin:6px 0 0}.comment>.commentFooter{order:3}.commentTitle{flex-direction:row;flex-wrap:wrap;gap:0 var(--space-2);align-items:baseline}.commentTitle .commentCreated,.commentTitle .commentModified{font-size:var(--fs-xs)}.commentTitle .commentModified.is-same{display:none}.comment .commentControls{opacity:0;transition:opacity .12s ease}.comment:focus-within .commentControls,.comment:hover .commentControls{opacity:1}@media (pointer:coarse){.comment .commentControls{opacity:1}}@media (max-width:767px),(max-height:599px){#chainWidget>.controls .panel-hide{display:none!important}#chainTabs{flex:1 1 auto;max-width:100%}}.sig-chip,.sig-filter .sig-chip{font-size:var(--fs-xs)}#EVEsystem,#topbar #mask,#topbar #user-track-name,#topbar h3,#topbar h3 a{font-size:var(--fs-base)}#topbar #logo a{font-size:var(--fs-xl)}#infoSecurity,.sys-meta,.sys-meta .chip{font-size:var(--fs-sm)}.gate-chip .gate-sec{font-size:var(--fs-xs);height:15px;padding:0 5px}kbd{font-size:var(--fs-xs)}.node .nodeClass,.node .nodeType{font-size:var(--fs-xs)}.controls .bar-btn{box-sizing:border-box;height:var(--control-dense)}.chip,.gate-chip,.sig-chip,h4.chip{box-sizing:border-box;height:22px;display:inline-flex;align-items:center;padding-top:0;padding-bottom:0}#topbar #follow,#topbar #search,#topbar>.align-right>i[data-icon]{box-sizing:border-box;height:var(--control-dense);min-width:var(--control-dense);display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm)}#topbar>.align-right>i[data-icon]:hover{background:var(--muted)}#activityGraphControls{justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}#activityLegend{display:inline-flex;flex-wrap:wrap;gap:var(--space-1) var(--space-2)}#activityLegend .legend-chip{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px 0 6px;border:1px solid transparent;border-radius:999px;background:0 0;color:var(--foreground);font-size:var(--fs-xs);font-weight:500;cursor:pointer}#activityLegend .legend-chip:hover{background:var(--muted);border-color:var(--border)}#activityLegend .legend-chip .swatch{width:10px;height:10px;border-radius:50%;display:inline-block}#activityLegend .legend-chip.off{color:var(--muted-foreground)}#activityLegend .legend-chip.off .swatch{opacity:.3}#activityGraphControls>a{margin-left:0}#activityGraphControls{justify-content:flex-start}#activityLegend{margin-right:auto} .ui-dialog{background:var(--popover);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 1px 2px rgba(0,0,0,.35),0 16px 48px rgba(0,0,0,.45);padding:0;max-width:min(94vw,720px);overflow:hidden}.ui-dialog-shadow{box-shadow:0 1px 2px rgba(0,0,0,.35),0 16px 48px rgba(0,0,0,.45)}.ui-dialog .ui-dialog-titlebar{padding:var(--space-3) var(--space-4);min-height:var(--control-standard);background:0 0;border-bottom:1px solid var(--border)}.ui-dialog .ui-dialog-title{font-size:var(--fs-sm);letter-spacing:.1em}.ui-dialog .ui-dialog-content{padding:var(--space-4);font-size:var(--fs-base);line-height:1.5}.ui-dialog .ui-dialog-buttonpane{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border)}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);float:none;width:100%}.ui-dialog-buttonpane button{order:2;margin:0;padding:0 var(--space-4);min-height:var(--control-standard);border-radius:var(--radius-sm);font-size:var(--fs-base);font-weight:500}.ui-dialog-buttonpane button.is-quiet{order:1;border-color:transparent;color:var(--muted-foreground)}.ui-dialog-buttonpane button.is-quiet:hover{border-color:transparent;background:var(--muted);color:var(--foreground)}.ui-dialog-buttonpane button.is-primary{order:3;background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}.ui-dialog-buttonpane button.is-primary:hover{background:color-mix(in oklab,var(--primary) 88%,#fff);border-color:color-mix(in oklab,var(--primary) 88%,#fff);color:var(--primary-foreground)}.ui-dialog-buttonpane button.is-destructive{order:0;margin-right:auto;border-color:transparent;color:var(--muted-foreground)}.ui-dialog-buttonpane button.is-destructive:hover{border-color:var(--destructive);color:var(--destructive);background:0 0}.ui-dialog-buttonpane button.ui-state-disabled,.ui-dialog-buttonpane button[disabled]{opacity:.45;pointer-events:none}.ui-widget-overlay{background:rgba(0,0,0,.55);opacity:1}.settings{display:flex;flex-direction:column;gap:0}.settings-tabs{display:flex;gap:var(--space-1);margin:calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) var(--space-4);padding:0 var(--space-4);border-bottom:1px solid var(--border)}.settings-tabs [role=tab]{border:0;border-bottom:2px solid transparent;border-radius:0;background:0 0;padding:var(--space-3) var(--space-2);margin-bottom:-1px;color:var(--muted-foreground);font-size:var(--fs-sm);font-weight:500}.settings-tabs [role=tab]:hover{color:var(--foreground);background:0 0}.settings-tabs [role=tab][aria-selected=true]{color:var(--foreground);border-bottom-color:var(--primary)}.settings-pane{display:flex;flex-direction:column;gap:var(--space-2);min-height:300px}.settings-pane[hidden]{display:none}.field{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-3);min-height:var(--control-standard);padding:var(--space-1) 0}.field.field-block{grid-template-columns:1fr;align-items:start}.field-label{color:var(--foreground);font-size:var(--fs-base)}.field-label small{display:block;color:var(--muted-foreground);font-size:var(--fs-xs);margin-top:1px}.field-value{color:var(--foreground);font-variant-numeric:tabular-nums}.field-inline{display:inline-flex;align-items:center;gap:var(--space-2)}.field-inline input[type=text]{width:12rem}.field-actions{display:flex;gap:var(--space-2);justify-content:flex-end;padding-top:var(--space-3)}.field-group{margin:var(--space-4) 0 var(--space-1);font-size:var(--fs-xs);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground)}.field input[type=text],.field select{min-width:14rem}.switch{position:relative;display:inline-block;width:38px;height:22px;cursor:pointer}.switch input{position:absolute;opacity:0;width:0;height:0}.switch-track{position:absolute;inset:0;border-radius:999px;background:var(--input);transition:background .15s ease}.switch-track::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--foreground);transition:transform .15s ease}.switch input:checked+.switch-track{background:var(--primary)}.switch input:checked+.switch-track::after{transform:translateX(16px);background:var(--primary-foreground)}.switch input:focus-visible+.switch-track{outline:2px solid var(--ring);outline-offset:2px}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.segmented input{position:absolute;opacity:0;pointer-events:none}.segmented label{padding:0 var(--space-3);min-height:calc(var(--control-standard) - 8px);display:inline-flex;align-items:center;font-size:var(--fs-sm);color:var(--muted-foreground);cursor:pointer;border-right:1px solid var(--border)}.segmented label:last-of-type{border-right:0}.segmented input:checked+label{background:var(--muted);color:var(--foreground)}.segmented input:focus-visible+label{outline:2px solid var(--ring);outline-offset:-2px}.slider-wrap{display:inline-flex;align-items:center;gap:var(--space-2);min-width:14rem}.slider-pair{flex-direction:column;align-items:stretch;gap:var(--space-1)}.slider-pair>span{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-xs);color:var(--muted-foreground)}.slider-wrap .ui-slider{flex:1 1 auto;height:4px;border:0;background:var(--input);border-radius:999px;margin:0}.slider-wrap .ui-slider .ui-slider-handle{top:-6px;width:16px;height:16px;margin-left:-8px;border-radius:50%;border:0;background:var(--foreground);cursor:pointer}.slider-wrap .ui-slider .ui-slider-handle:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.slider-value{min-width:2.5em;text-align:right;font-variant-numeric:tabular-nums;color:var(--muted-foreground);font-size:var(--fs-sm)}#dialog-options div.ui-slider{width:auto}.stats{display:grid;grid-template-columns:1fr auto;gap:var(--space-2) var(--space-4);margin:0}.stats dt{color:var(--muted-foreground)}.stats dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}#dialog-signature #wormhole{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--border)}#dialog-signature #wormhole::before{content:"Wormhole";display:block;margin-bottom:var(--space-2);font-size:var(--fs-xs);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature #wormhole>hr{display:none}#dialog-signature #wormhole .side+.side{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--border)}#dialog-signature #wormhole .side+.side::before{content:"Other side";display:block;margin-bottom:var(--space-2);font-size:var(--fs-xs);color:var(--muted-foreground)}#characters{display:flex;flex-direction:column;gap:var(--space-2);width:100%;margin-top:var(--space-2)}.char-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card)}.char-row.is-active{border-color:color-mix(in oklab,var(--primary) 55%,var(--border))}.char-portrait{width:40px;height:40px;border-radius:4px;border:1px solid var(--border);object-fit:cover;flex:0 0 auto}.char-meta{flex:1 1 auto;min-width:0}.char-name{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--foreground);letter-spacing:.04em}.char-note{font-size:var(--fs-xs);color:var(--muted-foreground);margin-top:2px}.char-actions{display:flex;align-items:center;gap:var(--space-2);flex:0 0 auto}.char-btn{height:var(--control-dense);padding:0 var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:0 0;color:var(--foreground);font-size:var(--fs-sm)}.char-btn:hover{background:var(--muted);border-color:var(--border-strong)}.char-btn.is-destructive{border-color:transparent;color:var(--muted-foreground)}.char-btn.is-destructive:hover{border-color:var(--destructive);color:var(--destructive);background:0 0}.char-badge{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--primary);padding:0 var(--space-2)}.field-actions input.is-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground);margin-right:auto}.field-actions input.is-primary:hover{background:color-mix(in oklab,var(--primary) 85%,#fff);border-color:transparent;color:var(--primary-foreground)}#panel-settings{display:flex;flex-direction:column;gap:var(--space-1);width:100%;margin-top:var(--space-2)}.panel-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-1) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);min-height:var(--control-standard)}.panel-row-name{color:var(--foreground)}.panel-row-actions{display:flex;align-items:center;gap:var(--space-2)}.panel-row-actions .char-btn{padding:0 var(--space-2);font-size:10px}.panel-row-actions .char-btn[disabled]{opacity:.3;pointer-events:none} diff --git a/public/css/app.min.css.map b/public/css/app.min.css.map index 772c6e7a..e3e3e623 100644 --- a/public/css/app.min.css.map +++ b/public/css/app.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["_tokens.css","base.css","account.css","chainmap-radial.css","chainmap.css","command-palette.css","comments.css","dialog-admin.css","dialog-mass.css","dialog-options.css","forms.css","gridster.css","icons.css","introjs.css","jbox.css","mask.css","signatures.css","tripwire.css","_override-1-system.css","_override-3-panels.css","_override-4-signature-dialog.css","_override-5-responsive.css","_override-6-system-panel.css","_override-7-map-and-table.css","_override-8-layout.css","_override-9-chain-tabs.css","_override-a-header.css","_override-b-fixes.css","_override-c-polish.css","_override-d-phone.css","_override-e-scale.css","_override-f-dialog.css","_override-g-bars.css","_override-h-nodes.css","_override-i-inline.css","_override-j-type-roles.css","_theme-base.css","_theme-refit.css"],"names":[],"mappings":"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","file":"app.min.css","sourcesContent":["/* ============================================================================\n Design tokens.\n\n Every colour in app/css resolves through one of these. Two families, kept\n deliberately separate:\n\n --n-* Neutral chrome. Flips with the theme.\n --data-* --ui-* --chart-* EVE data semantics: wormhole class, jump-mass\n band, security, loot, status pills, chart\n series. These encode *meaning*, not brand.\n\n The :root block is the dark theme (\"ops floor\"). Its values are identical to\n the literals they replaced, so this extraction does not change dark\n rendering at all.\n\n The light block (\"front office\") inverts the neutral ramp, and darkens the\n 25 data colours that are used as TEXT until they clear 4.5:1 against the\n light panel. Data colours used only as fills are left untouched -- their\n contrast partner is whatever sits on top of them, which is a separate\n question from this ramp.\n\n Brand colours are NOT defined here. A theme file overrides these tokens.\n ========================================================================= */\n\n:root {\n /* neutral ramp -- n-000 darkest .. n-999 lightest */\n --glow-60: rgba(255, 255, 255, .6);\n --n-000: #000000;\n --n-020: #080808;\n --n-050: #111111;\n --n-100: #222222;\n --n-120: #282828;\n --n-200: #333333;\n --n-220: #3b3b3b;\n --n-250: #404040;\n --n-300: #444444;\n --n-400: #555555;\n --n-500: #666666;\n --n-550: #777777;\n --n-560: #7a7a7a;\n --n-600: #888888;\n --n-650: #999999;\n --n-700: #aaaaaa;\n --n-750: #bbbbbb;\n --n-800: #cccccc;\n --n-850: #dddddd;\n --n-870: #ebebeb;\n --n-880: #eeeeee;\n --n-900: #f0f0f0;\n --n-920: #f4f4f4;\n --n-940: #f7f7f7;\n --n-960: #fafafa;\n --n-999: #ffffff;\n --scrim-60: rgba(0, 0, 0, .6);\n --scrim-70: rgba(0,0,0,0.7);\n --scrim-80: rgba(0, 0, 0, .8);\n --scrim-n020: rgba(10, 10, 10, 0.6);\n --scrim-n050: rgba(17, 17, 17, .7);\n --scrim-n120: rgba(40, 40, 40, .9);\n --scrim-n200: rgba(51, 51, 51, .7);\n --shadow-20: rgba(0,0,0,0.2);\n --shadow-20b: rgba(0, 0, 0, 0.2);\n --shadow-25: rgba(0, 0, 0, 0.25);\n --shadow-25b: rgba(0, 0, 0, .25);\n --shadow-30: rgba(0, 0, 0, .3);\n --stroke-n120: rgba(40, 40, 40, 0.8);\n --veil-danger: rgba(255, 0, 0, .3);\n --veil-grey: rgba(120, 120, 120, .1);\n --veil-silver: rgba(192, 192, 192, .3);\n\n /* data semantics */\n --chart-1: #3366cc;\n --chart-2: #dc3912;\n --chart-3: #ff9900;\n --chart-4: #109618;\n --data-alliance: #00a0ff;\n --data-bronze: #e28a0d;\n --data-brown: #744700;\n --data-class-amber: #996600;\n --data-class-blue: #00286e;\n --data-class-blue-deep: #001b47;\n --data-class-cyan: #0070a0;\n --data-class-green: #004400;\n --data-class-green-deep: #003300;\n --data-class-lime: #00aa00;\n --data-class-orange: #8a4117;\n --data-class-orange-deep: #80370d;\n --data-class-red: #881100;\n --data-class-red-deep: #661100;\n --data-class-sky: #3388dd;\n --data-class-temp: #004080;\n --data-class-void: #000810;\n --data-critical: #ff4747;\n --data-danger: #d93627;\n --data-focus-ring: #998800;\n --data-focus-ring-soft: #ff8c0080;\n --data-good: #50d25a;\n --data-info: #4399f0;\n --data-jm-2000kt: #ffb060;\n --data-jm-375kt: #909090;\n --data-jm-5kt: #40e0ff;\n --data-jm-62kt: #90ff90;\n --data-link: #428bca;\n --data-loot-blue: #6060f0;\n --data-loot-gold: #ffc800;\n --data-loot-orange: #f58504;\n --data-loot-pink: #f06090;\n --data-loot-purple: #9060f0;\n --data-loot-red: #f06060;\n --data-magenta: #e06fdf;\n --data-olive: #999900;\n --data-pale-yellow: #ffffbb;\n --data-triglavian: #ff2060;\n --data-warn: #f5b544;\n --ui-amber: #ffb11f;\n --ui-amber-lit: #ffd665;\n --ui-blue: #2b91d9;\n --ui-blue-lit: #5abaff;\n --ui-green: #70a800;\n --ui-green-lit: #95cc2a;\n --ui-red: #b02222;\n --ui-red-lit: #ee2222;\n}\n\n/* Front office. Only tokens that must change are redefined. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n }\n}\n:root[data-theme=\"light\"] {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n}\n","@font-face {\n\tfont-family: 'lucida';\n\tsrc:url('../fonts/lucida.ttf?w81bs6') format('truetype');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n* {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nhtml, body {\n\theight: 100%;\n}\n\nhtml {\n font-size: .6em;\n font-family: Verdana, 'Helvetica Neue', Arial, sans-serif;\n color: var(--n-600);\n line-height: 1.1;\n min-height: 100%;\n}\n\na {\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tcolor: var(--n-800);\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcolor: var(--n-999);\n}\n\nhr { margin: 4px; }\nhr.bar { border-style: solid }\n\ni {\n\tcursor: pointer;\n}\n\ni.disabled {\n\topacity: .4;\n\tcursor: default;\n}\n\n.invisible {\n\tvisibility: hidden;\n}\n\n.hidden {\n\tdisplay: none;\n}\n\n.align-left {\n\tfloat: left;\n}\n\n.align-right {\n\tfloat: right;\n}\n\n.pointer {\n\tcursor: default;\n}\n\n.text-left {\n\ttext-align: left;\n}\n\n.text-right {\n\ttext-align: right;\n}\n\n.text-center {\n\ttext-align: center;\n}\n\ni.active, a.active {\n\tcolor: orange;\n}\n\n/* All of these styles want to be more specific than a normal class selector so the text colour wins */\nbody .wh, body .class-1, body .class-2, body .class-3 {\n\tcolor: var(--data-info);\n}\n\nbody .class-4, body .class-5 {\n\tcolor: var(--data-loot-purple);\n}\n\nbody .class-6 {\n\tcolor: var(--data-loot-pink);\n}\n\nbody .class-12 {\t/* Thera */\n\tcolor: var(--data-loot-gold);\n}\n\nbody .class-15, body .class-16, body .class-17 {\t/* Drifter */\n\tcolor: var(--data-loot-red);\n}\n\nbody .hisec, body .stable, body .frig {\n\tcolor: var(--data-good);\n}\n\nbody .lowsec, body .destab {\n\tcolor: var(--data-loot-orange);\n}\n\nbody .nullsec, body .critical {\n\tcolor: var(--data-critical);\n}\n\nbody .triglavian { color: var(--data-triglavian); }\n\n.blue-loot, .blue-loot .hisec { color: var(--data-loot-blue); }\n\n.jumps {\n\tcolor: var(--chart-1);\n}\n\n.pods {\n\tcolor: var(--chart-2);\n}\n\n.ships {\n\tcolor: var(--chart-3);\n}\n\n.npcs {\n\tcolor: var(--chart-4);\n}\n\n.thermal-icon {\n\tcontent: url(\"../images/th.png\");\n\theight: 16px;\n}\n\n.kinetic-icon {\n\tcontent: url(\"../images/kn.png\");\n\theight: 16px;\n}\n\n.explosive-icon {\n\tcontent: url(\"../images/exp.png\");\n\theight: 16px;\n}\n\n.em-icon {\n\tcontent: url(\"../images/em.png\");\n\theight: 16px;\n}\n\n/* Scrollbar. Body properties are standards-compliant but only work in Firefox.\n-webkit-* works in Chrome/Safari/etc */\n/* We must tell Chrome not to use these or it will disable all the -webkit-scrollbar things - https://stackoverflow.com/questions/77893503 */\n@supports not selector(::-webkit-scrollbar) {\n\tbody {\n\t\t/* Standards - Firefox. Use slightly less contrasty colours because the bar will be wider */\n\t\tscrollbar-width: thin;\n\t\tscrollbar-color: var(--n-300) var(--n-050);\n\t}\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n}\n\n::-webkit-scrollbar-button:start:decrement,\n::-webkit-scrollbar-button:end:increment {\n height: 2em;\n display: none;\n background-color: black;\n}\n\n::-webkit-scrollbar-track { background-color: var(--n-220); }\n::-webkit-scrollbar-thumb {\tbackground-color: var(--n-500);}\n::-webkit-scrollbar-thumb:hover { background-color: var(--n-650);}\n\n::-webkit-scrollbar-corner {\n\tbackground-color: transparent;\n}\n/* ---------- */\n\n::-webkit-input-placeholder {\n color: var(--n-600);\n}\n\n:-moz-placeholder { /* Firefox 18- */\n color: var(--n-600);\n}\n\n::-moz-placeholder { /* Firefox 19+ */\n color: var(--n-600);\n}\n\n:-ms-input-placeholder {\n color: var(--n-600);\n}\n\n@-webkit-keyframes spin {\nfrom { -webkit-transform: rotate(0deg); }\nto { -webkit-transform: rotate(360deg); }\n}\n\n@-moz-keyframes spin {\nfrom { -moz-transform: rotate(0deg); }\nto { -moz-transform: rotate(360deg); }\n}\n\n@-o-keyframes spin {\nfrom { -o-transform: rotate(0deg); }\nto { -o-transform: rotate(360deg); }\n}\n\n@keyframes spin {\n\tfrom { transform: rotate(0deg); }\n\tto { transform: rotate(360deg); }\n}\n\n.transition {\n\t/* -webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransition: 0.3s all ease-out;\n\t-webkit-transition: 0.3s all ease-out;\n\t-moz-transition: 0.3s all ease-out;\n\t-ms-transition: 0.3s all ease-out;\n\t-o-transition: 0.3s all ease-out; */\n}\n\n.scale {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransform: scale(0.9);\n\t-webkit-transform: scale(0.9);\n\t-moz-transform: scale(0.9);\n\t-ms-transform: scale(0.9);\n\t-o-transform: scale(0.9);\n\n\toverflow: hidden;\n}\n\n.blur {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n filter: blur(1px);\n -webkit-filter: blur(1px);\n\t-moz-filter: blur(1px);\n\t-ms-filter: blur(1px);\n\t-o-filter: blur(1px);\n\tfilter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='1');\n}\n","#login {\n\tposition: relative;\n}\n\n#login #panel {\n\tdisplay: none;\n}\n\n#login img {\n border-radius: 3px;\n}\n\n.triangle {\n\tposition: absolute;\n\ttop: -5px;\n\tright: 15px;\n\tborder-left: 5px solid transparent;\n\tborder-right: 5px solid transparent;\n\tborder-bottom: 5px solid var(--n-300);\n}\n\n#login #content {\n\tposition: absolute;\n\ttop: 20px;\n\tright: 0px;\n\n\tfont-size: 1.1em;\n\n\tline-height: normal;\n\tpadding: 5px;\n}\n\n#login #content #track {\n\tborder-right: 1px solid gray;\n\tpadding-right: 2px;\n\tmin-width: 160px;\n}\n\n#login #content #track .tracking-clone {\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n cursor: pointer;\n\topacity: .4;\n transition: all 0.2s ease;\n\n\tmargin-bottom: 2px;\n}\n\n#login #content #track .tracking-clone:hover {\n\tborder-color: var(--n-400);\n opacity: 1;\n}\n\n#login #content #track .tracking-clone.active {\n\tborder-color: darkorange;\n opacity: 1;\n}\n\n#login #content table {\n\ttext-align: right;\n\twidth: 100%;\n}\n\n#login #content table th {\n\ttext-align: right;\n\tpadding-right: 5px;\n}\n\n#login #content table td {\n\ttext-align: left;\n}\n\n#login #content table .text {\n\tpadding: 0 10px 0 3px;\n\twhite-space: nowrap;\n}\n\n#login #content .avatar {\n\theight: 1px;\n\twidth: 1px;\n}\n\n#login #content table td #logout {\n\tfloat: right;\n}\n\n#login #content #error {\n\tcolor: var(--data-critical);\n}\n\n#logo {\n\tcolor: var(--n-800);\n}\n\n#logo > span > div > canvas {\n\tvertical-align: middle;\n}\n\n#login #error {\n\tfont-weight: bold;\n\ttext-align: center;\n}\n\n#link, #account {\n\twhite-space: nowrap;\n\tcolor: var(--n-500);\n}\n\n#link {\n\tvertical-align: top;\n}\n\n#login #logoutTable tbody th {\n\ttext-align: center;\n\tcolor: var(--n-800);\n\tbackground: var(--n-400);\n}\n\n#logoutTable tbody tr td {\n\tvertical-align: top;\n}\n\n#tracking {\n\tdisplay: block;\n\toverflow-y: auto;\n\tmax-height: 332px;\n}\n\n#tracking [data-icon=\"red-giant\"].stable:before {\n\tcolor: var(--data-good);\n}","/* Styles relating to the radial map renderer */\n#chainMap .radial-map .node.top-level {\n\tborder-radius:200px;\n\tpadding: 10px;\n\tborder: 4px var(--data-class-temp) solid;\n\tfont-size: 120%;\n}\n\n#chainMap .radial-map .top-level .nodeIcons {\n top: 0.9em;\n}\n\n.radial-map {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.radial-map .map-chain-wrapper {\n\toverflow:hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin: 0 10px;\n}\n\n.map-outer-container {\n\tposition: relative;\n}\n\n.map-inner-container {\n\tposition: absolute;\n}\n\n.map-inner-container .node-wrapper {\n\tposition:absolute;\n\twidth: 0; height: 0;\n}\n\n#chainMap .node-wrapper > div.node {\n\ttransform: translate(-50%, -50%);\t/* centre around position */\n}\n\n.map-drawing {\n\tposition: absolute;\n}\n\n.temp { border-style: solid; }\t/* Some border properties don't resolve if the element has no border */\n\n/* 'color' is used to cue the aura effect in canvas drawing */\n.temp { border-width: 2px; border-color: var(--data-class-temp); }\n.temp.jm-5kt, #guide .jm-5kt { border-width: 1px; color: var(--data-jm-5kt); }\n.temp.jm-62kt, #guide .jm-62kt { border-width: 3px; color: var(--data-jm-62kt); }\n.temp.jm-375kt, #guide .jm-375kt { border-width: 5px; color: var(--data-jm-375kt); }\n.temp.jm-2000kt, #guide .jm-2000kt { border-width: 7px; color: var(--data-jm-2000kt); }","#chainMap {\n\t-webkit-user-select: none; /* Chrome all / Safari all */\n\t-moz-user-select: none; /* Firefox all */\n\t-ms-user-select: none; /* IE 10+ */\n\n\t/* No support for these yet, use at own risk */\n\t-o-user-select: none;\n\tuser-select: none;\n}\n\n#chainMap .google-visualization-orgchart-table * {\n\tpadding: 0px;\n}\n\n#chainMap .google-visualization-orgchart-table {\n\tpadding: 0 5px;\n\tpadding-right: 0px;\n\twidth: 1px;\n\tmargin: 0 auto;\n}\n\n#chainMap td.node {\n\twhite-space: nowrap;\n\ttext-align: center;\n\tvertical-align: middle;\n\tfont-family: verdana;\n\tfont-size: 1em;\n\tcursor: default;\n\tline-height: 1;\n\tborder: none;\n\tbackground: none;\n}\n\n#chainMap div.node {\n\theight: 30px;\n\tmin-width: 5em;\n\tdisplay: inline-block;\n\tmargin-left: auto; margin-right: auto;\t/* centre horizontally within cell */\n\tborder: 2px solid var(--n-200);\n border-top-left-radius: 15px 50px;\n border-top-right-radius: 15px 50px;\n\tborder-bottom-left-radius: 15px 50px;\n border-bottom-right-radius: 15px 50px;\n\n\tbackground-color: var(--n-050);\n\tbackground: linear-gradient(var(--n-100), var(--n-050));\n\n\tbox-shadow: 2px 2px 8px var(--shadow-20);\n}\n\n#chainMap div.node.third-party {\n\tbackground: var(--n-050);\n\tfont-style: italic;\n\tfilter: saturate(50%) brightness(80%)\n}\n\n#chainMap /*td.node >*/ div.node.loop {\t/* more specific than others nearby, because we want these over flares/current node */\n\tmin-width: auto;\n/*\twidth: 30px;*/\n\tborder-radius: 100px;\n\tborder-color: var(--data-class-cyan);\n}\n\n#chainMap div.loop {\t/* less specific, so flares/current node works over this */\n\tbackground: var(--data-class-void);\n}\n\ndiv.loop .nodeIcons, div.loop .nodeType, div.loop .statics, div.loop .nodeActivity {\n\tdisplay:none;\n}\n\t\n#chainMap .currentNode > div.node {\n\tborder-color: var(--data-class-blue);\n\tbackground: var(--data-class-blue-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-blue-deep) 0%, var(--data-class-blue) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-blue-deep)), to(var(--data-class-blue)));\n}\n\n#chainMap div.redNode.node {\n\tborder-color: var(--data-class-red);\n\tbackground: var(--data-class-red-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-red-deep) 0%, var(--data-class-red) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-red-deep)), to(var(--data-class-red)));\n}\n\n#chainMap div.yellowNode.node {\n\tborder-color: var(--data-class-orange);\n\tbackground: var(--data-class-orange-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-orange-deep) 0%, var(--data-class-orange) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-orange-deep)), to(var(--data-class-orange)));\n}\n\n#chainMap div.greenNode.node {\n\tborder-color: var(--data-class-green);\n\tbackground: var(--data-class-green-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-green-deep) 0%, var(--data-class-green) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-green-deep)), to(var(--data-class-green)));\n}\n\n#chainMap div.node.frig-chain {\n\tborder-color: var(--data-class-lime);\n\tborder-width: 1px;\n}\n\n#chainMap .node a {\n\tfont-weight: normal;\n}\n\n#chainMap span.badge {\n\tdisplay: inline-block;\n\tcolor: var(--n-750);\n\tbackground-color: var(--n-100);\n\tbox-shadow: 0px 0px 6px 2px var(--n-050);\n\tfont-family: monospace;\n\tpadding: 2px 2px;\n\tmin-width: 8px;\n\tfont-size: 9px;\n\tfont-weight: 300;\n\tline-height: 1;\n\ttext-align: center;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\tborder-radius: 10px;\n}\n\n#chainMap .nodeIcons {\n\tposition: absolute;\n\ttop: 0.1em;\n\twidth: 50px;\n\theight: 0;\t/* so it doesn't overlay the class text for tips */\n\tright: 50%;\n\tmargin-right: -25px;\n}\n\n#chainMap [data-nodeid] {\n\tposition: relative;\n\ttext-align: center;\n}\n\n#chainMap [data-nodeid] h4 {\n\tfont-weight: normal;\n\twhite-space: nowrap;\n}\n\n#chainMap .nodeType {\n\ttext-transform: uppercase;\n}\n\n#chainMap .nodeActivity {\n\tposition: absolute;\n\tbottom: 3px;\n\tright: 50%;\n\twidth: 50px;\n\theight: 1px;\n\tmargin-right: -25px;\n\tpointer-events: none;\t/* so it doesn't overlay the link */\n}\n\n#chainMap .nodeActivity * { pointer-events: initial }\n\n#chainMap .statics {\n\tposition: absolute;\n\tbottom: -1.5em;\n}\n\n#chainMap .statics span {\n\tdisplay: inline-block;\n\tbackground: navy;\n\tborder-radius: 0 0 50px 50px;\n\twidth: 8px;\n\theight: 10px;\n\tborder: 2px solid var(--n-200);\n}\n\n#chainMap .statics span:nth-child(2) {\n\tmargin-right: 10px;\t/* To leave a gap for the connection when 3+ statics */\n}\n\n#chainMap i[data-icon=\"user\"] {\n\tpadding: 3px;\n\tcursor: default;\n}\n\n#chainMap i.whEffect {\n\tpadding-left: 3px;\n\tcursor: default;\n}\n\n#chainMap i.nodeActivity > span {\n\tpadding: 2px;\n}\n\n/* These styles need the specific selectors because they need to override presets */\n.critical, #chainMap .critical, #guide .critical { border-color: var(--data-critical); }\n.destab, #chainMap .destab, #guide .destab { border-color: var(--data-warn); }\n.gate, #chainMap .gate, #guide .gate { border-color: darkgray; }\n.eol, #chainMap .eol, #guide .eol { border-style: dashed; }\n.frig, #chainMap .frig, #guide .frig { border-color: var(--data-good); }\n\n.tab {\n\tdisplay: inline-block;\n\tmin-width: 75px;\n\tborder-bottom: 2px solid var(--n-200);\n\tcursor: pointer;\n\tvertical-align: top;\n\ttext-align: right;\n}\n\n.tab:hover {\n\tborder-bottom-color: var(--n-500);\n}\n\n.tab.current {\n\tborder-bottom-color: var(--data-info);\n}\n\n.tab .name {\n\tpadding-left: 4px;\n\tfloat: left;\n}\n\n.tab .closeTab, .tab .editTab {\n\topacity: 0;\n\tvisibility: hidden;\n\tfloat: right;\n\tfont-size: .8em;\n\tpadding: 2px 2px 0 4px;\n\n\ttransition: opacity .15s ease-out;\n\t-moz-transition: opacity .15s ease-out;\n\t-webkit-transition: opacity .15s ease-out;\n\t-o-transition: opacity .15s ease-out;\n}\n\n.tab:hover .closeTab, .tab.current:hover .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#guide td:first-child {\n\twidth: 30px;\n}\n\n#guide div {\n\twidth: 20px;\n\tborder-width: 0;\n\tborder: 2px solid var(--data-class-sky);\n\tborder-top-style: none !important;\t/* so we only get one border even when border style is overridden by eol */\n\tborder-left-style: none !important;\n\tborder-right-style: none !important;\n}\n\n#guide div.frig { border-width: 1px; }\n#guide div.aura { box-shadow: 0 0 5px 2px; }\n\n[data-icon=\"user\"] + .badge {\n\tposition: absolute;\n\ttop: -5px;\n\tright: -12px;\n}\n\ntd.google-visualization-orgchart-linenode[data-signatureid] {\n\tcursor: pointer;\n}\n\n/* Grid lines and flare text */\n#chainGrid .grid-default { color: var(--n-550);}\n.red { color: var(--data-critical);}\n.yellow { color: var(--data-warn);}\n.green { color: var(--data-good);}\n\n#chainGrid {\n\tposition: absolute;\n\twidth: 100%;\n\tz-index: -10;\n\tmargin-left: -3px;\t\n}\n\n#chainGrid .top td {\n\theight: 18px;\n}\n\n#chainGrid .line td {\n\theight: 28px;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#chainGrid .space td {\n\theight: 13px;\n}\n\n#chainGrid .red td {\n\tborder-bottom-color: var(--data-critical);\n}\n\n#chainGrid .yellow td {\n\tborder-bottom-color: var(--data-warn);\n}\n\n#chainGrid .green td {\n\tborder-bottom-color: var(--data-good);\n}\n\n#chainTabs {\n\tpadding-right: 10px;\n}\n","/* Command palette and the shortcuts overlay.\n Colours come from the token layer, so this follows whatever theme is loaded\n rather than hard-coding a palette. */\n\n#cmd-palette,\n#cmd-help {\n\tposition: fixed;\n\tinset: 0;\n\tz-index: 10000;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: center;\n\tpadding-top: 12vh;\n\tbackground: var(--scrim-60);\n}\n\n#cmd-palette.hidden,\n#cmd-help.hidden { display: none; }\n\n#cmd-palette .cmd-box,\n#cmd-help .cmd-box {\n\twidth: min(560px, 92vw);\n\tbackground: var(--n-100);\n\tborder: 1px solid var(--n-300);\n\tbox-shadow: 0 12px 40px var(--scrim-70);\n\tfont-size: 1.25em;\n}\n\n#cmd-input {\n\tdisplay: block;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\tpadding: 12px 14px;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--n-300);\n\tbackground: transparent;\n\tcolor: var(--n-999);\n\tfont-family: inherit;\n\tfont-size: 1em;\n\toutline: none;\n}\n\n#cmd-input::placeholder { color: var(--n-600); }\n\n#cmd-list {\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 4px 0;\n\tmax-height: 46vh;\n\toverflow-y: auto;\n}\n\n#cmd-list li {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: 10px;\n\tpadding: 7px 14px;\n\tcursor: pointer;\n\tcolor: var(--n-800);\n}\n\n#cmd-list li.sel { background: var(--n-200); color: var(--n-999); }\n\n/* Listed but unavailable -- undo with nothing to undo, edit with nothing\n selected. Shown rather than hidden so the palette is a stable map of what\n exists. */\n#cmd-list li.off { opacity: .4; cursor: default; }\n\n#cmd-list li.danger.sel { background: var(--data-critical); color: var(--n-050); }\n\n#cmd-list .cmd-label { flex: 1 1 auto; }\n\n#cmd-list .cmd-group,\n#cmd-list .cmd-keys {\n\tflex: 0 0 auto;\n\tfont-size: .8em;\n\tcolor: var(--n-600);\n\ttext-transform: uppercase;\n\tletter-spacing: .06em;\n}\n\n#cmd-list li.sel .cmd-group,\n#cmd-list li.sel .cmd-keys { color: var(--n-750); }\n\n#cmd-list .cmd-keys {\n\ttext-transform: none;\n\tletter-spacing: 0;\n\tborder: 1px solid var(--n-400);\n\tborder-radius: 2px;\n\tpadding: 1px 5px;\n}\n\n#cmd-list .cmd-empty { color: var(--n-600); cursor: default; }\n\n.cmd-foot {\n\tdisplay: flex;\n\tgap: 16px;\n\tpadding: 8px 14px;\n\tborder-top: 1px solid var(--n-300);\n\tfont-size: .78em;\n\tcolor: var(--n-600);\n}\n\n.cmd-foot b { color: var(--n-800); font-weight: normal; }\n\n/* Shortcuts overlay */\n#cmd-help .cmd-box { padding: 18px 20px; }\n#cmd-help h2 { margin: 0 0 12px; color: var(--n-999); font-size: 1.1em; }\n#cmd-help table { border-collapse: collapse; width: 100%; }\n#cmd-help th {\n\ttext-align: left;\n\tpadding: 4px 14px 4px 0;\n\twhite-space: nowrap;\n\tcolor: var(--n-999);\n\tfont-weight: normal;\n}\n#cmd-help td { padding: 4px 0; color: var(--n-800); }\n#cmd-help p { margin: 14px 0 0; color: var(--n-600); font-size: .9em; }\n#cmd-help b { color: var(--n-999); }\n",".cke .cke_button__source_label {\n\tdisplay: none;\n}\n\n.cke .cke_maximized {\n\tbackground: black;\n}\n\n.comment {\n\tborder-bottom: 1px solid var(--n-300);\n}\n\n.commentSticky {\n\tpadding-left: 3px;\n}\n\n.commentToolbar .commentControls::before {\n\tdisplay: inline-block;\n\tcontent: '';\n\theight: 100%;\n\tvertical-align: bottom;\n}\n\n.commentToolbar, .commentFooter {\n\tfont-size: .9em;\n\tcolor: var(--n-650);\n}\n\n.commentToolbar {\n\theight: 26px;\n}\n\n.commentFooter {\n\tpadding: 3px;\n}\n\n.commentControls {\n\tfloat: right;\n\theight: 100%;\n}\n\n.commentStatus, .commentTitle {\n\tfloat: left;\n\theight: 100%;\n}\n\n.commentModified {\n\tdisplay: block;\n\tpadding-top: 3px;\n\tpadding-bottom: 3px;\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.commentToolbar .commentControls, .commentSticky {\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.comment:hover .commentControls, .comment:hover .commentModified, .comment:hover .commentSticky, .commentSticky.active {\n\topacity: 1;\n}\n\n.commentBody {\n\tcolor: var(--n-800);\n\tpadding: 8px;\n\t//white-space: pre-wrap; /* CSS3 */\n\t//white-space: -moz-pre-wrap; /* Firefox */\n\t//white-space: -pre-wrap; /* Opera <7 */\n\t//white-space: -o-pre-wrap; /* Opera 7 */\n\tword-wrap: break-word; /* IE */\n}\n\n.commentBody a {\n\tcolor: darkorange;\n}\n\n.commentBody ol, .commentBody ul, .commentBody dl {\n\t/* IE7: reset rtl list margin. (#7334) */\n\t*margin-right: 0px;\n\t/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/\n\tpadding: 0 40px;\n}\n","#dialog-admin .menu {\n\twidth: 100px;\n\theight: 100%;\n\tfloat: left;\n}\n\n#dialog-admin .window {\n\theight: 100%;\n\tmargin-left: 100px;\n\toverflow: auto;\n}\n\n#dialog-admin .menu li {\n\tlist-style-type: none;\n}\n\n#dialog-admin .menu li a {\n\tcolor: var(--n-500);\n}\n\n#dialog-admin .menu li a:focus {\n\toutline: none;\n}\n\n#dialog-admin .menu li.active a {\n\tcolor: orange;\n}\n\n#dialog-admin #userTable th {\n\ttext-align: left;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#dialog-admin #userTable tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-700);\n}\n\n#dialog-admin .tablesorter .tablesorter-header i:before, #dialog-admin .tablesorter .sortable i:before {\n\tfloat: none;\n}\n\n#dialog-admin .tablesorter .headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerAsc {\n\tcolor: orange;\n}\n\n#dialog-admin .tablesorter .headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerDesc {\n\tcolor: orange;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .menu {\n\tmargin-right: 6px;\n\tborder-right: 1px solid var(--n-700);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window [data-window] {\n\theight: 100%;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window table tbody tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-650);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .ui-dialog-traypane {\n\tmargin-left: 120px;\n\tmargin-top: 8px;\n\tfont-size: 16px;\n\tcolor: var(--n-200);\n}\n","/* Hide rows based on selection */\n#dialog-mass:has(input[value='all']:checked) tr#small-mass,\n#dialog-mass:has(input[value='all']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='all']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='cruiser']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='cruiser']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='cruiser']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Medium,\n#dialog-mass:has(input[value='battleship']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='capital']:checked) tr.mass-Small, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Medium, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Large { display: none }\n\n/* Mod selectors */\n.inactive { opacity: 0.5 }\n\n/* Table alignment and spacing */\n#massTableContainer {\n\ttext-wrap: nowrap;\n\tmargin-top: 1em;\n\tmax-height: 200px;\n\toverflow-y: auto;\n}\n\n#massTable td:nth-child(1) {\n\tmin-width: 12em;\n}\n\n#massTable td:nth-child(2) {\n\tmin-width: 2em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(3) {\n\twidth: 12em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(4), #massTable th:nth-child(4) {\n\twidth: 8em;\n\ttext-align: right;\n}\n\n#massTable td:nth-child(5) {\n\twidth: 14em;\n\ttext-align: right;\n}\n","#dialog-options input[type=\"radio\"] + label {\n\tvertical-align: top;\n}\n\ndiv.ui-slider { display: inline-block; width: calc(75% - 3px); margin-right: 3px }\n\n#dialog-options input[type=\"text\"], #dialog-options input[type=\"password\"], #dialog-options select { width: 75% }\n\n#dialog-options label[for=uiscale-slider] {\n padding: 0 8px;\n}\n\n#dialog-editMask label {\n\twidth: 100%;\n\tmargin-left: -5px;\n}\n\n#dialog-EVEsearch #EVESearchResults {\n\tmax-height: 320px;\n\toverflow: auto;\n\tpadding-left: 5px;\n padding-right: 10px;\n}\n\n#EVESearchResults label {\n\twidth: 100%;\n\tmargin-left: -5px;\n\topacity: 1;\n}\n\n.optionsTable th {\n\ttext-align: left;\n}\n\n.optionsTable td {\n\ttext-align: right;\n}\n\ntr.line td, tr.line th {\n\tborder-bottom: 1px solid var(--n-400);\n}\n\n.optionsTable tr {\n\theight: 2em;\n}\n\n.ui-accordion .ui-accordion-content {\n\tpadding: 0.5em;\n\tbackground: none;\n\tborder-color: var(--n-050);\n}\n\n.ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n}\n\n#masks {\n\ttext-align: left;\n\tpadding-left: 10px;\n}\n\ndiv.maskCategory {\n\tmin-height: 80px;\n\tposition: relative;\n}\n\ndiv.maskCategoryLabel {\n\tposition: absolute;\n\ttop: 80px;\n\tleft: -12px;\n\twidth: 80px;\n\ttext-align: center;\n\tfont-weight: bold;\n\n\t-ms-transform: rotate(-90deg);\n\t-webkit-transform: rotate(-90deg);\n\ttransform: rotate(-90deg);\n\n\t-ms-transform-origin: left top 0;\n\t-webkit-transform-origin: left top 0;\n\ttransform-origin: left top 0;\n}\n","input[type=\"text\"], input[type=\"password\"], select, textarea {\n background-image: linear-gradient(to bottom, var(--n-000) 0%, var(--n-100) 80%, var(--n-300) 100%);\n\n border: none;\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n -ms-border-radius: 3px;\n -o-border-radius: 3px;\n border-radius: 3px;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 2px;\n\n transition: all 0.2s linear;\n color: var(--n-750);\n font-weight: bold;\n position: relative;\n\t\n\toutline-color: var(--data-focus-ring);\n\toutline-width: thin;\n}\n\noption { background-color: var(--n-100); } /* to align with gradient on the select */\n\n*:focus-visible { outline-style: inset; outline-offset: 0 }\n\ninput[type=\"button\"], input[type=\"submit\"], .ui-button.ui-widget {\n\tfont-family: Verdana;\n\n\t-webkit-appearance: none;\n\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\t-ms-border-radius: 4px;\n\t-o-border-radius: 4px;\n\tborder-radius: 4px;\n\n\tbackground-image: linear-gradient(var(--n-300) 0, var(--n-100) 20%, var(--n-000));\n\n\t-webkit-background-clip: padding-box;\n\t-o-background-clip: padding-box;\n\tbackground-clip: padding-box;\n\n\tborder: 1px solid;\n\tborder-color: var(--n-400) var(--n-200) var(--n-000);\n\n\tcolor: var(--n-750);\n\tfont-weight: bold;\n\tfont-size: 1em;\n\ttext-decoration: none;\n\n\tmargin: 0;\n\tpadding: 0.4em 1.4em;\n\twidth: auto;\n\n\tcursor: pointer;\n\toutline: 0;\n\tvertical-align: top;\n\tdisplay: inline-block;\n\toverflow: visible;\n}\n\ninput[type='radio'], input[type='checkbox'] {\n\tvertical-align: middle;\n}\n\ninput[type=\"button\"]:not([disabled]):focus, input[type=\"submit\"]:not([disabled]):focus, .ui-button:focus:not([disabled]) {\n\tborder: 1px solid darkorange;\n}\n\ninput[type=\"button\"]:not([disabled]):hover, input[type=\"submit\"]:not([disabled]):hover, .ui-button:hover:not([disabled]) {\n\tbackground-image: linear-gradient(var(--n-400) 0, var(--n-120) 20%, var(--n-000));\n}\n\ninput[type=\"button\"]:not([disabled]):active, input[type=\"submit\"]:not([disabled]):active, .ui-button:active:not([disabled]) {\n\tcolor: var(--n-800);\n\n\tbackground-image: linear-gradient(var(--n-300), var(--n-550));\n\n\tbox-shadow: inset var(--shadow-25b) 0 1px 2px 0;\n\n\tborder-color: var(--n-650) var(--n-750) var(--n-850);\n}\n\ninput[disabled], a[disabled] {\n\topacity: .4;\n\tcursor: default;\n}\n\ninput.selector, input.mini-selector {\n\twidth: 0; opacity: 0;\t/* Don't use display:none because it makes it not be keyboard accessible */\n}\n\ninput.selector+label img {\n border-radius: 3px;\n\n\twidth: 64px;\n\theight: 64px;\n}\n\ninput.selector+label .selector_label {\n\tposition: absolute;\n\tbottom: 1px;\n\tleft: 1px;\n\tpadding: 1px 3px;\n\tmargin-right: 1px;\n\tcolor: var(--n-800);\n\tfont-size: 0.8em;\n\tbackground: var(--scrim-70);\n\n border-radius: 3px;\n}\n\ninput.selector+label, input.mini-selector+label, .quick-select {\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 3px;\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n\n\tcursor: pointer;\n\topacity: .4;\n\ttransition: all 0.2s ease;\n}\n\n.quick-select {\n\tcolor: var(--n-700);\n\tbackground: none;\n}\n\ninput.selector+label {\n\tvertical-align: top;\n\tmin-height: 64px;\n\tmin-width: 64px;\n\tmargin: 3px 3px;\n}\n\ninput.mini-selector+label {\n\tmargin: 3px -3px;\n\ttop: -1px;\n}\n\ninput.selector+label:hover, input.mini-selector+label:hover, .quick-select:hover {\n\tborder-color: var(--data-class-amber);\n\topacity: 1;\n}\n\ninput.selector:checked+label, input.mini-selector:checked+label {\n\tborder-color: darkorange;\n\topacity: 1;\n}\n\ninput.selector:focus-visible+label, input.mini-selector:focus-visible+label, .quick-select:focus-visible {\n\toutline-style: inset;\n outline-offset: 1px;\n outline-color: var(--data-focus-ring-soft);\n outline-width: 1px;\n}\n\ninput.selector+label .info {\n\tdisplay: inline-block;\n\tmargin-left: 5px;\n\tvertical-align: top;\n\tfont-weight: normal;\n\tfont-size: 0.9em;\n}\n\ninput.selector:checked+label .info {\n\tdisplay: inline-block;\n}\n\ninput[type=checkbox]:not(.selector) + label {\n\tmargin-left: 4px;\n\tvertical-align:top;\n\tcursor:pointer;\n}\n\ninput[type='radio'], input[type='checkbox'] {\tfilter: invert(1);}\ninput[type='checkbox'] { accent-color: var(--n-850); }",".gridster > ul {\n\t//background: var(--scrim-80);\n\tlist-style-type: none;\n}\n\n.gridster > li {\n overflow: hidden;\n}\n\n.controls i, .controls span.control {\n\tcursor: pointer;\n}\n\n.toggle-panel {\n\tposition: absolute;\n background: var(--n-020);\n border: 1px var(--n-250) solid;\n padding: 3px;\n}\n\n.gridster li div.content {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 5px;\n\tbottom: 5px;\n\tleft: 5px;\n\n\toverflow: auto;\n}\n\n.gridster li .controls + .content {\n\ttop: 18px;\n}\n\n.gridster {\n\tvisibility: hidden;\n margin: 0 auto;\n padding: 50px 0 140px 0;\n\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n -webkit-transition: opacity .6s;\n -moz-transition: opacity .6s;\n -o-transition: opacity .6s;\n -ms-transition: opacity .6s;\n transition: opacity .6s;\n}\n\n.gridster > * {\n margin: 0 auto;\n}\n\n.gridster-transition {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\t-webkit-transition: height .4s, width .4s;\n -moz-transition: height .4s, width .4s;\n -o-transition: height .4s, width .4s;\n -ms-transition: height .4s, width .4s;\n transition: height .4s, width .4s;\n}\n\n.gridster .gs-w {\n z-index: 2;\n position: absolute;\n}\n\n.gridster .gs-w {\n //background: var(--veil-grey);\n background: var(--scrim-60);\n}\n\n.gridster .gs-w:hover .grid-resize-both {\n\topacity: 1;\n}\n\n.gridster .grid-resize {\n\tposition: absolute;\n\tz-index: 1;\n}\n\n.gridster .grid-resize-both {\n width: 30px;\n height: 30px;\n bottom: -18px;\n right: -18px;\n cursor: se-resize;\n z-index: 20;\n opacity: 0;\n color: var(--n-750);\n}\n\n.gridster .gs-resize-handle-both:before {\n\tcontent: \"\\e018\";\n}\n\n.gridster .player {\n background: var(--veil-silver);\n}\n\n.gridster .preview-holder {\n border: none;\n background: var(--veil-danger);\n}\n","@font-face {\n\tfont-family: 'icon';\n\tsrc:url('../fonts/tripwire.eot?w81bs6');\n\tsrc:url('../fonts/tripwire.eot?#iefixw81bs6') format('embedded-opentype'),\n\t\turl('../fonts/tripwire.woff?w81bs6') format('woff'),\n\t\turl('../fonts/tripwire.ttf?w81bs6') format('truetype'),\n\t\turl('../fonts/tripwire.svg?w81bs6#icon') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n/* Use the following CSS code if you want to use data attributes for inserting your icons */\n[data-icon] {\n\tfont-family: 'icon';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n[data-icon]:hover {\n\ttext-decoration: none;\n}\n\n[data-icon=\"undo\"]:before {\n\tcontent: \"\\e60e\";\n}\n[data-icon=\"redo\"]:before {\n\tcontent: \"\\e612\";\n}\n[data-icon=\"move-horizontal\"]:before {\n\tcontent: \"\\e600\";\n}\n[data-icon=\"move-vertical\"]:before {\n\tcontent: \"\\e601\";\n}\n[data-icon=\"tripwire-logo\"]:before {\n\tcontent: \"\\e602\";\n}\n[data-icon=\"edit\"]:before {\n\tcontent: \"\\e609\";\n}\n[data-icon=\"pin\"]:before {\n\tcontent: \"\\e60a\";\n}\n[data-icon=\"plus-circle\"]:before {\n\tcontent: \"\\e60b\";\n}\n[data-icon=\"minus-circle\"]:before {\n\tcontent: \"\\e60c\";\n}\n[data-icon=\"times-circle\"]:before {\n\tcontent: \"\\e60d\";\n}\n[data-icon=\"check\"]:before {\n\tcontent: \"\\f00c\";\n}\n[data-icon=\"times\"]:before {\n\tcontent: \"\\f00d\";\n}\n[data-icon=\"plus\"]:before {\n\tcontent: \"\\f067\";\n}\n[data-icon=\"minus\"]:before {\n\tcontent: \"\\f068\";\n}\n[data-icon=\"eye\"]:before {\n\tcontent: \"\\e000\";\n}\n[data-icon=\"pulsar\"]:before {\n\tcontent: \"\\e001\";\n\tcolor: var(--data-link);\n}\n[data-icon=\"connection\"]:before {\n\tcontent: \"\\e002\";\n}\n[data-icon=\"settings\"]:before {\n\tcontent: \"\\e003\";\n}\n[data-icon=\"magnetar\"]:before {\n\tcontent: \"\\e004\";\n\tcolor: var(--data-magenta);\n}\n[data-icon=\"wolf-rayet\"]:before {\n\tcontent: \"\\e005\";\n\tcolor: var(--data-bronze);\n}\n[data-icon=\"portrait\"]:before {\n\tcontent: \"\\e006\";\n}\n[data-icon=\"landscape\"]:before {\n\tcontent: \"\\e007\";\n}\n[data-icon=\"erase\"]:before {\n\tcontent: \"\\e008\";\n}\n[data-icon=\"lock-open\"]:before {\n\tcontent: \"\\e009\";\n}\n[data-icon=\"lock\"]:before {\n\tcontent: \"\\e00a\";\n}\n[data-icon=\"user\"]:before {\n\tcontent: \"\\e00b\";\n}\n[data-icon=\"red-giant\"]:before {\n\tcontent: \"\\e00c\";\n\tcolor: red;\n}\n[data-icon=\"search\"]:before {\n\tcontent: \"\\e00d\";\n}\n[data-icon=\"star-empty\"]:before {\n\tcontent: \"\\e00e\";\n}\n[data-icon=\"star\"]:before {\n\tcontent: \"\\e00f\";\n}\n[data-icon=\"blackhole\"]:before {\n\tcontent: \"\\e010\";\n\tcolor: var(--n-900);\n}\n[data-icon=\"fullscreen\"]:before {\n\tcontent: \"\\e011\";\n}\n[data-icon=\"fullscreen-exit\"]:before {\n\tcontent: \"\\e012\";\n}\n[data-icon=\"home\"]:before {\n\tcontent: \"\\e013\";\n}\n[data-icon=\"key\"]:before {\n\tcontent: \"\\e014\";\n}\n[data-icon=\"alert\"]:before {\n\tcontent: \"\\e015\";\n}\n[data-icon=\"help\"]:before {\n\tcontent: \"\\e016\";\n}\n[data-icon=\"resize\"]:before {\n\tcontent: \"\\e017\";\n}\n[data-icon=\"info\"]:before {\n\tcontent: \"\\e018\";\n}\n[data-icon=\"tree\"]:before {\n\tcontent: \"\\e019\";\n}\n[data-icon=\"anchor\"]:before {\n\tcontent: \"\\e020\";\n}\n[data-icon=\"prop-mod\"]:before {\n\tcontent: \"\\e021\";\n}\n[data-icon=\"follow\"]:before {\n\tcontent: \"\\e60f\";\n}\n[data-icon=\"viewing\"]:before {\n\tcontent: \"\\e610\";\n}\n[data-icon=\"cataclysmic-variable\"]:before {\n\tcontent: \"\\e611\";\n\tcolor: var(--data-pale-yellow);\n}\n[data-icon=\"layout\"]:before {\n\tcontent: \"\\e603\";\n}\n[data-icon=\"auto\"]:before {\n\tcontent: \"\\e604\";\n}\n[data-icon=\"check-on\"]:before {\n\tcontent: \"\\e605\";\n}\n[data-icon=\"check-off\"]:before {\n\tcontent: \"\\e606\";\n}\n[data-icon=\"radio-off\"]:before {\n\tcontent: \"\\e607\";\n}\n[data-icon=\"radio-on\"]:before {\n\tcontent: \"\\e608\";\n}\n[data-icon=\"trash\"]:before {\n\tcontent: \"\\e9ad\";\n\tvertical-align: text-top;\n}\n[data-icon=\"sort\"]:before {\n\tcontent: \"\\f0dc\";\n}\n[data-icon=\"sort-desc\"]:before {\n\tcontent: \"\\f0dd\";\n}\n[data-icon=\"sort-asc\"]:before {\n\tcontent: \"\\f0de\";\n}\n",".introjs-helperLayer {\n background-color: var(--n-400);\n}\n\na.introjs-button:hover, a.introjs-skipbutton:hover {\n color: var(--n-560);\n}\n",".validation-tooltip .jBox-container, .validation-tooltip .jBox-pointer:after {\n\tbackground: var(--data-danger);\n\tcolor: white;\n\tborder: none;\n\tfont-weight: bold;\n\tfont-size: 1.2em;\n\tpadding: 3px;\n}\n\n.jBox-container {\n\tbackground: var(--n-200);\n\tcolor: var(--n-800);\n\tmin-height: 20px;\n}\n\n.jBox-content {\n\tpadding: 4px 5px;\n}\n\n/* Pointer */\n\n.jBox-pointer-right { right: 2px; }\n\n.jBox-pointer:after {\n\tbackground: var(--n-200);\n}\n\n/* jBox Notice */\n\n.jBox-Notice .jBox-container {\n border-radius: 3px;\n\tbox-shadow: 0 0 3px var(--n-000);\n\n\tcolor: var(--n-999);\n\tfont-size: 1.1em;\n\ttext-shadow: 0 -1px 0 var(--n-000);\n\tbackground: var(--n-200);\n\tbackground-image: linear-gradient(to bottom, var(--n-300), var(--n-100));\n}\n\n.jBox-Notice .jBox-content {\n\tpadding: 6px 10px;\n}\n\n.jBox-Notice .jBox-title {\n\tpadding: 8px 20px 0;\n}\n\n.jBox-Notice-color .jBox-container {\n\ttext-shadow: 0 -1px 0 var(--shadow-30);\n}\n\n.jBox-Notice-gray .jBox-container {\n\tcolor: var(--n-500);\n\ttext-shadow: 0 1px 0 var(--n-999);\n\tbackground: var(--n-920);\n\tbackground-image: linear-gradient(to bottom, var(--n-960), var(--n-900));\n}\n\n.jBox-Notice-red .jBox-container {\n\tbackground: var(--ui-red);\n\tbackground-image: linear-gradient(to bottom, var(--ui-red-lit), var(--ui-red));\n}\n\n.jBox-Notice-green .jBox-container {\n\tbackground: var(--ui-green);\n\tbackground-image: linear-gradient(to bottom, var(--ui-green-lit), var(--ui-green));\n}\n\n.jBox-Notice-blue .jBox-container {\n\tbackground: var(--ui-blue);\n\tbackground-image: linear-gradient(to bottom, var(--ui-blue-lit), var(--ui-blue));\n}\n\n.jBox-Notice-yellow .jBox-container {\n\tcolor: var(--data-brown);\n\ttext-shadow: 0 1px 0 var(--glow-60);\n\tbackground: var(--ui-amber);\n\tbackground-image: linear-gradient(to bottom, var(--ui-amber-lit), var(--ui-amber));\n}\n\n.jBox-Notice-yellow .jBox-container a {\n\tcolor: var(--n-650);\n}\n",".mask .corporate { color: green }\n.mask .alliance { color: var(--data-alliance);display: inline-block;transform: scaleY(-1) translateY(2px); }\t/* need the block to make the transform work */\n.mask i { padding-right: 2px }\n\n#mask-menu a { display: block }\n\n/* Overlays etc on the mask panel */\n#masks label > img { margin-top: 3px; }\n#masks label { height: 69px; }\n.source_bar {\n position: absolute;\n top: 0; left: 0;\n\twidth: 100%;\n\theight: 3px;\n color: var(--n-800);\n font-size: .8em;\n\tborder-radius: 3px 3px 0 0;\n}\n\n.source_bar.global { background: var(--n-550) }\n.source_bar.personal { background: var(--n-800) }\n.source_bar.corporate { background: green }\n.source_bar.alliance { background: var(--data-alliance) }\n\n.icon_bar {\n position: absolute;\n top: 3px; right: 0;\n}\n\n.icon_bar .icon {\n\tborder-radius: 1em;\n\topacity: 0.7;\n\tfont-size: 0.85em;\n\tpadding: 0.15em;\n\theight: 1em;\n\twidth: 1em;\n\tdisplay: inline-block;\n\ttext-align: center;\n\ttext-decoration: none;\n}\n\n.icon_bar .icon:hover, .icon_bar .icon:focus {\n\topacity: 1;\n}\n\n.icon_bar .closeIcon { background: maroon }\n.icon_bar .joinIcon { background: green }\n\n#mask-explanation p { margin: 0.5em 0; }","html .ui-selectmenu-menu li a, html .ui-selectmenu-status {\n\tpadding: 0em 1em 0em .5em;\n\tfont-weight: bold;\n\ttext-align: left;\n}\n\nhtml a.ui-selectmenu:hover {\n\ttext-decoration: none;\n}\n\nhtml .ui-selectmenu {\n\theight: auto;\n\t//margin-bottom: .2em;\n\t//padding: 0.1em;\n}\n\nhtml .ui-selectmenu-menu ul {\n\t//padding: 0 0.1em;\n}\n\n#whType, #sigID {\n\ttext-transform: uppercase;\n\ttext-align: center;\n\tpadding-left: 0px;\n}\n\n#sigAddForm th, #sigEditForm th {\n\ttext-align: right;\n}\n\n#sigAddForm table tr td, #sigEditForm table tr td {\n\tpadding: 2px 0;\n}\n\n#sigTable {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\ttext-align: center;\n\ttable-layout: fixed;\n\tmargin-left: -1px;\n\tuser-select: none;\n}\n\n#sigTable th {\n\tbackground: var(--scrim-n200);\n\tborder: 1px solid var(--n-000);\n}\n\n#sigTable td {\n\tbackground: var(--scrim-n050);\n\tborder: 1px solid var(--n-000);\n\tcursor: default;\n}\n\n#sigTable tr:hover td {\n\tbackground-color: var(--n-300);\n}\n\n#sigTable tr.selected td {\n\tbackground-color: var(--n-200);\n}\n\n#sigTable th:nth-child(1) {\n\twidth: 50px;\n}\n\n#sigTable th:nth-child(2) {\n\twidth: 45px;\n}\n\n#sigTable th:nth-child(3) {\n\twidth: 40px;\n}\n\n#sigTable th:nth-child(5), #sigTable th:nth-child(6) {\n\twidth: 40px;\n}\n\n#sigTable td:nth-child(1) {\n\tfont-family: \"lucida\";\n\tletter-spacing: 1px;\n\ttext-transform: uppercase;\n}\n\n#sigTable td:nth-child(2) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td:nth-child(5), #sigTable td:nth-child(6) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\n#sigTable td.centerAlign {\n\ttext-align: center;\n}\n\n#sigTable td.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\n#sigTable a.siteLink {\n\tcolor: var(--data-olive);\n}\n\n#sigTable tbody .disabled {\n\tcolor: var(--n-300);\n}\n\n.return-visible .return-link { display: inline }\n.return-invisible .return-link { display: none }\n\n.tablesorter .tablesorter-header {\n\tcursor: pointer;\n\tvertical-align: middle;\n\tfont-size: 10px;\n}\n\n.tablesorter .tablesorter-header:focus {\n\toutline: none;\n}\n\n.tablesorter .tablesorter-header i:before, .tablesorter .sortable i:before {\n\tcontent: \"\\f0dc\";\n\tvertical-align: bottom;\n\tpadding: 1px 2px;\n\tfloat: right;\n}\n\n.tablesorter .headerSortUp,\n.tablesorter .tablesorter-headerSortUp,\n.tablesorter .tablesorter-headerAsc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortUp i:before,\n.tablesorter .tablesorter-headerSortUp i:before,\n.tablesorter .tablesorter-headerAsc i:before {\n\tcontent: \"\\f0de\";\n}\n\n.tablesorter .headerSortDown,\n.tablesorter .tablesorter-headerSortDown,\n.tablesorter .tablesorter-headerDesc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortDown i:before,\n.tablesorter .tablesorter-headerSortDown i:before,\n.tablesorter .tablesorter-headerDesc i:before {\n\tcontent: \"\\f0dd\";\n}\n\n.tablesorter thead .sorter-false {\n\tcursor: default;\n}\n\n#dialog-signature hr {\n\tmargin-left: 15px;\n\tmargin-bottom: 10px;\n}\n\n#dialog-signature .label {\n\tfont-weight: bold;\n\ttext-align: right;\n\tvertical-align: text-top;\n}\n\n#dialog-signature .select {\n\tdisplay: inline-block;\n\tvertical-align: text-bottom;\n}\n\n#dialog-signature .row {\n\tmin-height: 22px;\n}\n\n#dialog-signature .label:first-child {\n\tdisplay: inline-block;\n\tmin-width: 70px;\n}\n\n#dialog-signature #signatureName span {\n\tdisplay: table-cell;\n}\n\n#dialog-signature #signatureName span:last-child {\n\twidth: 100%;\n\tpadding-left: 3px;\n}\n\n#dialog-signature #signatureName input {\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n#dialog-signature #signatureType, #dialog-signature #wormholeMass {\n\tfloat: right;\n}\n\n#dialog-signature #wormholeMass .label, #dialog-signature .bookmark .label {\n\tmin-width: auto;\n}\n\n#dialog-signature .signatureID, #dialog-signature .wormholeType {\n\ttext-align: center;\n\ttext-transform: uppercase;\n}\n\n#dialog-signature .side {\n\tposition: relative;\n\tmin-height: 70px;\n}\n\n#dialog-signature .sideLabel {\n\tposition: absolute;\n\tleft: -10px;\n\tfont-weight: bold;\n\ttransform: rotate(-90deg);\n\ttransform-origin: left top 0;\n}\n\n#dialog-signature #wormhole .side:first-child .sideLabel {\n\tbottom: 0px;\n\twidth: 90px;\n\ttext-align: left;\n}\n\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\tbottom: -70px;\n\twidth: 135px;\n\ttext-align: right;\n}\n\n.custom-combobox {\n\tposition: relative;\n\tdisplay: inline-table;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: -20px;\n\tmargin-left: -1px;\n\tpadding: 0;\n}\n\n.custom-combobox input {\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tpadding: 0.4em 0.8em;\n\tborder-radius: 0;\n\tborder-top-right-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.wormholeTypeQuickSelect {\n\tmargin-left: 1.8em;\n}\n\n.quickSelectBar button {\n\tpadding: 1px; margin-right: 1px;\n}\n\n#leadsToQuickBar {\n\tmargin-left: 74px;\n\tmargin-top: 2px;\n\tmargin-bottom: 4px;\n}\n\n.popover {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 1060;\n\tdisplay: block;\n\tmax-width: 276px;\n\tpadding: 1px;\n\tfont-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tletter-spacing: normal;\n\tline-break: auto;\n\tline-height: 1.5;\n\ttext-align: left;\n\ttext-align: start;\n\ttext-decoration: none;\n\ttext-shadow: none;\n\ttext-transform: none;\n\twhite-space: normal;\n\tword-break: normal;\n\tword-spacing: normal;\n\tfont-size: 0.875rem;\n\tword-wrap: break-word;\n\tbackground-color: var(--n-999);\n\t-webkit-background-clip: padding-box;\n\t\t\t\t\tbackground-clip: padding-box;\n\tborder: 1px solid var(--shadow-20b);\n\tborder-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n\tmargin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n\tleft: 50%;\n\tborder-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n\tbottom: -11px;\n\tmargin-left: -11px;\n\tborder-top-color: var(--shadow-25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n\tbottom: -10px;\n\tmargin-left: -10px;\n\tborder-top-color: var(--n-999);\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n\tmargin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n\ttop: 50%;\n\tborder-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n\tleft: -11px;\n\tmargin-top: -11px;\n\tborder-right-color: var(--shadow-25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n\tleft: -10px;\n\tmargin-top: -10px;\n\tborder-right-color: var(--n-999);\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n\tmargin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n\tleft: 50%;\n\tborder-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n\ttop: -11px;\n\tmargin-left: -11px;\n\tborder-bottom-color: var(--shadow-25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n\ttop: -10px;\n\tmargin-left: -10px;\n\tborder-bottom-color: var(--n-940);\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\tdisplay: block;\n\twidth: 20px;\n\tmargin-left: -10px;\n\tcontent: \"\";\n\tborder-bottom: 1px solid var(--n-940);\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n\tmargin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n\ttop: 50%;\n\tborder-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n\tright: -11px;\n\tmargin-top: -11px;\n\tborder-left-color: var(--shadow-25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n\tright: -10px;\n\tmargin-top: -10px;\n\tborder-left-color: var(--n-999);\n}\n\n.popover-title {\n\tpadding: 8px 14px;\n\tmargin-bottom: 0;\n\tfont-size: 1rem;\n\tbackground-color: var(--n-940);\n\tborder-bottom: 1px solid var(--n-870);\n\tborder-top-right-radius: calc(0.3rem - 1px);\n\tborder-top-left-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n\tdisplay: none;\n}\n\n.popover-content {\n\tpadding: 9px 14px;\n}\n\n.popover::before,\n.popover::after {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 0;\n\theight: 0;\n\tborder-color: transparent;\n\tborder-style: solid;\n}\n\n.popover::before {\n\tcontent: \"\";\n\tborder-width: 11px;\n}\n\n.popover::after {\n\tcontent: \"\";\n\tborder-width: 10px;\n}\n\n.age-tooltip-table td {\n\tpadding-left: 12px;\n}\n","#wrapper {\n\theight: 100%;\n\toverflow: auto;\n\n\tbackground-color: black;\n\tbackground-image: url(../images/bg.jpg);\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\n\t-webkit-background-size: cover;\n\t-moz-background-size: cover;\n\t-o-background-size: cover;\n\tbackground-size: cover;\n}\n\n#inner-wrapper {\n\tmin-height: 100%;\n\tposition: relative;\n}\n\n#pageTime {\n\ttext-align: center;\n\tfont-size: 0.8em;\n\topacity: 0.6;\n}\n\n#footer {\n\tposition: absolute;\n\tbottom: 0;\n\twidth: 100%;\n\ttext-align: center;\n\tpadding-bottom: 10px;\n}\n\n#legal {\n\tfont-size: 0.5em;\n\twidth: 60%;\n\ttext-align: center;\n\tmargin: 0 auto;\n\topacity: 0.5;\n}\n\n#topbar {\n\tposition: fixed;\n\ttop: 0;\n\theight: 45px;\n\twidth: 100%;\n\tbackground: var(--scrim-80);\n\tz-index: 3;\n\tline-height: 40px;\n}\n\n#topbar div { line-height: normal; } /** reset for children */\n\n#topbar h1, #topbar h2, #topbar h3, #topbar form {\n\tdisplay: inline;\n}\n\n#topbar .align-right {\n\tpadding-right: 25px;\n}\n\n#topbar .align-left {\n\tpadding-left: 25px;\n}\n\n#logo {\n\tposition: relative;\n}\n\n#version {\n\tposition: absolute;\n\tcolor: var(--data-info);\n\tfont-size: 0.4em;\n\theight: 0;\n\ttop: 4px;\n\tright: 20px;\n}\n\n#clipboard {\n\tposition: fixed;\n\tleft: -99em;\n\ttop: 0;\n}\n\n#searchSpan {\n\tdisplay: none;\n}\n\n.controls {\n position: absolute;\n padding: 3px;\n z-index: 1;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.controls i {\n\tfont-size: 1.2em;\n\tpadding: 0px 2px;\n\tvertical-align: middle;\n\tfont-style: normal;\n}\n\n.controls button {\n\tfont-size: 1em;\n color: var(--n-500);\n margin: 2px;\n padding: 1px;\n background: var(--n-100);\n border: 1px solid var(--n-000);\n\toutline: 0;\n cursor: pointer;\n background-image: linear-gradient(var(--n-100),var(--n-050));\n}\n\n.tooltip-data {\n\tbackground: var(--scrim-n120);\n\tpadding: 5px;\n\tcolor: var(--n-800);\n\tborder: none;\n\tbox-shadow: none;\n\t-webkit-box-shadow: none;\n\n\tborder-radius: 3px;\n}\n\n.tooltip-data table {\n\tborder: none;\n\tborder-collapse: collapse;\n}\n\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }\n\n#chainMenu, #signatureColumnMenu {\n\tz-index: 5;\n}\n\n/* Loading animation container */\n.loading {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n}\n\n/* Spinning circle (inner circle) */\n.loading .maskedCircle {\n\twidth: 2em;\n\theight: 2em;\n\n\t-webkit-border-radius: 1em;\n -moz-border-radius: 1em;\n -ms-border-radius: 1em;\n -o-border-radius: 1em;\n border-radius: 1em;\n\n\tborder: 3px solid var(--n-000);\n}\n\n/* Spinning circle mask */\n.loading .mask {\n\twidth: 1em;\n\theight: 1em;\n\toverflow: hidden;\n}\n\n/* Spinner */\n.loading .spinner {\n\tposition: absolute;\n\tleft: 1px;\n\ttop: 1px;\n\twidth: 2em;\n\theight: 2em;\n\t-webkit-animation: spin 1s infinite linear;\n\t-moz-animation: spin 1s infinite linear;\n\t-o-animation: spin 1s infinite linear;\n\tanimation: spin 1s infinite linear;\n}\n\ntable.stdTable {\n\twidth: 100%;\n}\n\ntable.stdTable th {\n\ttext-align: left;\n}\n\ndiv.overlay {\n\tposition: fixed;\n\tz-index: 101;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\topacity: 0.3;\n\tbackground: var(--n-700) url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;;\n}\n\n.control-group { display:inline-block; text-align: center }\ntd .control-group { width: 100% }\n\n.whEffect { padding-right: 2px; }\n\n.copy { font-size: 75%; margin: 0 3px; padding: 2px }\n.copy::after { content: '\\01F4C4\\00FE0E' }\n\n#activityGraph { padding-top: 8px; }\n#activityGraphControls { padding-bottom: 8px; }\n\n#activityGraph svg > g:nth-child(3) > g > path {\n\tfill: var(--scrim-n020);\n\tstroke: var(--stroke-n120);\n}\n\n#activityGraph svg > g:nth-child(3) > g > g > text {\n\tfill: var(--n-800);\n}\n\n#activityGraph svg > g:nth-child(2) > g:last-child > g {\n\tcursor: pointer;\n}\n\n/* Autocomplete */\nul.ui-autocomplete {\n\tmax-height: 140px;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n}\n\ntd.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\ntd.centerAlign {\n\ttext-align: center;\n}\n\ntd.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\nth.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\nth.centerAlign {\n\ttext-align: center;\n}\n\nth.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n","/* ============================================================================\n TRIPWIRE DESIGN SYSTEM\n\n A reimagining of the interface in Aperture's design language, not a patch\n over the old one. The vocabulary below is Aperture's, taken from its\n globals.css so the two tools speak the same language:\n\n role tokens, not a grey ramp --background / --card / --popover / --muted\n borders as light --border is white at 10%, --input at 15%\n one radius --radius: 0.625rem, everything derives\n muted-foreground for secondary text, ring for focus\n\n Tripwire's own --n-* ramp and --data-* semantics still exist underneath and\n still drive the map, because those encode EVE meaning. This layer governs\n chrome: surfaces, controls, type, tables, dialogs, states.\n\n Ordering: this file must load after the component stylesheets, which is what\n the _override-* group in gulpfile.js exists for.\n ========================================================================= */\n\n:root {\n\t/* ---- surfaces -------------------------------------------------------- */\n\t--background: oklch(0.145 0 0);\n\t--foreground: oklch(0.80 0 0);\n\t--card: oklch(0.205 0 0);\n\t--card-foreground: oklch(0.82 0 0);\n\t--popover: oklch(0.205 0 0);\n\t--popover-foreground: oklch(0.80 0 0);\n\t--muted: oklch(0.269 0 0);\n\t--muted-foreground: oklch(0.66 0 0);\n\t--accent-surface: oklch(0.269 0 0);\n\n\t/* ---- lines and focus ------------------------------------------------- */\n\t--border: oklch(1 0 0 / 10%);\n\t--border-strong: oklch(1 0 0 / 18%);\n\t--input: oklch(1 0 0 / 15%);\n\t--ring: var(--accent, oklch(0.556 0 0));\n\n\t/* ---- intent ---------------------------------------------------------- */\n\t--primary: var(--accent, oklch(0.922 0 0));\n\t--primary-foreground: oklch(0.205 0 0);\n\t--destructive: oklch(68.025% 0.2081 23.639);\n\n\t/* ---- geometry -------------------------------------------------------- */\n\t--radius: 0.625rem;\n\t--radius-sm: calc(var(--radius) * 0.5);\n\t--radius-md: calc(var(--radius) * 0.75);\n\n\t/* ---- rhythm ---------------------------------------------------------- */\n\t--space-1: 0.25rem;\n\t--space-2: 0.5rem;\n\t--space-3: 0.75rem;\n\t--space-4: 1rem;\n\t--space-5: 1.5rem;\n\n\t/* ---- type ------------------------------------------------------------ */\n\t--fs-xs: 0.8rem;\n\t--fs-sm: 0.9rem;\n\t--fs-base: 1rem;\n\t--fs-md: 1.15rem;\n\t--fs-lg: 1.5rem;\n\t--fs-xl: 2rem;\n}\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(1 0 0);\n\t\t--foreground: oklch(0.145 0 0);\n\t\t--card: oklch(1 0 0);\n\t\t--card-foreground: oklch(0.145 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--popover-foreground: oklch(0.145 0 0);\n\t\t--muted: oklch(0.97 0 0);\n\t\t--muted-foreground: oklch(0.556 0 0);\n\t\t--accent-surface: oklch(0.97 0 0);\n\t\t--border: oklch(0.922 0 0);\n\t\t--border-strong: oklch(0.85 0 0);\n\t\t--input: oklch(0.922 0 0);\n\t\t--destructive: oklch(0.577 0.245 27.325);\n\t\t--primary-foreground: oklch(0.985 0 0);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(1 0 0);\n\t--foreground: oklch(0.145 0 0);\n\t--card: oklch(1 0 0);\n\t--card-foreground: oklch(0.145 0 0);\n\t--popover: oklch(1 0 0);\n\t--popover-foreground: oklch(0.145 0 0);\n\t--muted: oklch(0.97 0 0);\n\t--muted-foreground: oklch(0.556 0 0);\n\t--accent-surface: oklch(0.97 0 0);\n\t--border: oklch(0.922 0 0);\n\t--border-strong: oklch(0.85 0 0);\n\t--input: oklch(0.922 0 0);\n\t--destructive: oklch(0.577 0.245 27.325);\n\t--primary-foreground: oklch(0.985 0 0);\n}\n\n/* ============================================================================\n BASE\n ========================================================================= */\n\nhtml {\n\t/* Was .6em -> 9.6px, with nine ad-hoc sizes from 6px to 19.2px in use.\n\t Verified before changing: no panel overflows at 12px. */\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n\nbody {\n\tcolor: var(--foreground);\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\na { color: var(--primary); font-weight: 500; }\na:hover { color: var(--primary); text-decoration: underline; }\n\n::selection { background: var(--primary); color: var(--primary-foreground); }\n\n/* One focus treatment everywhere. Matters more now the app is keyboard-driven. */\n:focus-visible {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n\tborder-radius: var(--radius-sm);\n}\n\n/* ============================================================================\n SURFACES\n Everything raised is a card: same ground, same edge, same radius.\n ========================================================================= */\n\n.gridWidget,\n.ui-dialog,\n.jBox-container {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n\tcolor: var(--card-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: none;\n}\n\n.gridWidget > .controls,\n.ui-dialog .ui-dialog-titlebar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tborder-radius: var(--radius) var(--radius) 0 0;\n\tpadding: var(--space-2) var(--space-3);\n\tmin-height: 0;\n}\n\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\tmargin: 0;\n\tfloat: none;\n}\n\n.panel-title {\n\tflex: 0 0 auto;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\twhite-space: nowrap;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tcolor: var(--card-foreground);\n\tbackground: transparent;\n}\n\n.ui-dialog .ui-dialog-buttonpane {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-top: 1px solid var(--border);\n\tmargin: 0;\n\tpadding: var(--space-3) var(--space-4);\n}\n\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: none; text-align: right; }\n\n/* The dialog's own close affordance, and the panel hide control, are the same\n thing and should look it. */\n.ui-dialog .ui-dialog-titlebar-close,\n.panel-hide {\n\torder: 99;\n\tmargin-left: auto;\n\twidth: auto; height: auto;\n\tposition: static;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-md);\n\tline-height: 1;\n\tpadding: 0 var(--space-1);\n\tcursor: pointer;\n}\n.ui-dialog .ui-dialog-titlebar-close:hover,\n.panel-hide:hover { color: var(--destructive); background: none; }\n.ui-dialog .ui-dialog-titlebar-close .ui-icon { display: none; }\n.ui-dialog .ui-dialog-titlebar-close::after { content: \"\\00d7\"; }\n\n/* ============================================================================\n CONTROLS\n Flat at rest so rows read as data; the affordance arrives on approach.\n ========================================================================= */\n\ninput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\ninput[type=\"search\"], select, textarea {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tbox-shadow: none;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\ninput:hover, select:hover, textarea:hover { border-color: var(--border); }\n\ninput:focus, select:focus, textarea:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--muted);\n\toutline: none;\n}\n\n::placeholder { color: var(--muted-foreground); opacity: 1; }\n\nbutton, .ui-button, .ui-button.ui-widget,\ninput[type=\"button\"], input[type=\"submit\"] {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tpadding: var(--space-1) var(--space-3);\n\tbox-shadow: none;\n\ttext-shadow: none;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n\nbutton:hover, .ui-button:hover, .ui-button.ui-widget:hover,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover {\n\tborder-color: var(--border-strong);\n\tbackground-color: var(--muted);\n\tcolor: var(--foreground);\n}\n\n.ui-dialog-buttonpane button.is-primary {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground-color: transparent;\n}\n\nbutton[disabled], .disabled { opacity: .4; cursor: default; }\n\n/* ============================================================================\n DATA\n ========================================================================= */\n\n#sigTable { border-collapse: collapse; width: 100%; }\n\n#sigTable th {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .09em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n\tpadding: var(--space-2) var(--space-2);\n\tbox-shadow: none;\n}\n\n#sigTable td {\n\tborder: 0;\n\tpadding: var(--space-2);\n\tfont-size: var(--fs-base);\n\tcolor: var(--card-foreground);\n}\n\n#sigTable tbody tr { transition: background-color .1s ease; }\n#sigTable tbody tr:nth-child(even) > td { background-color: oklch(1 0 0 / 3%); }\n#sigTable tbody tr:hover > td { background-color: var(--muted); }\n#sigTable tbody tr.selected > td { background-color: color-mix(in oklab, var(--primary) 18%, transparent); }\n\n/* Chips. Life, mass and security are small closed sets; they read faster as\n pills, and it keeps state out of the same register as the data beside it. */\n#sigTable td .stable, #sigTable td .critical, #sigTable td .destab,\n.chip-pill {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid currentColor;\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.7;\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Segmented control for the dialog's life/mass radios. */\n#dialog-signature .mini-selector { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-block;\n\tpadding: var(--space-1) var(--space-3);\n\tmargin-right: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n#dialog-signature .mini-selector + label:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature .mini-selector:checked + label {\n\tborder-color: currentColor;\n\tbackground: color-mix(in oklab, currentColor 15%, transparent);\n\tfont-weight: 600;\n}\n#dialog-signature .mini-selector:focus-visible + label { outline: 2px solid var(--ring); outline-offset: 1px; }\n\n/* ============================================================================\n NAVIGATION\n ========================================================================= */\n\n#topbar {\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tbackdrop-filter: blur(8px);\n\tborder-bottom: 1px solid var(--border);\n}\n\n#topbar #logo a { font-size: var(--fs-xl); }\n#version { font-size: var(--fs-xs); color: var(--muted-foreground); }\n#legal { font-size: var(--fs-xs); color: var(--muted-foreground); }\n\n/* Settings sections. The accordion is gone -- see options-dialog.js. These\n are the same

/
pairs, laid out flat in a scrolling pane so every\n setting is visible and scannable. */\n.settings-sections { display: flex; flex-direction: column; }\n\n.settings-sections > h3 {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 1;\n\tmargin: var(--space-4) 0 var(--space-2);\n\tpadding: var(--space-2) 0;\n\tbackground: var(--card);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n}\n.settings-sections > h3:first-child { margin-top: 0; }\n.settings-sections > h3 a { color: inherit; font-weight: inherit; text-decoration: none; cursor: default; }\n\n.settings-sections > div { padding: 0 0 var(--space-3); }\n\n#dialog-options { max-height: 62vh; overflow-y: auto; }\n\n.optionsTable tr { height: auto; }\n.optionsTable th, .optionsTable td { padding: var(--space-2); font-size: var(--fs-base); }\n.optionsTable th { color: var(--muted-foreground); font-weight: 500; }\ntr.line td, tr.line th { border-bottom: 1px solid var(--border); }\n\n/* jQuery UI's state classes carry the old theme's gradients wherever they land. */\n.ui-state-default, .ui-state-hover, .ui-state-active, .ui-state-focus,\n.ui-widget-header, .ui-widget-content {\n\tbackground-image: none;\n\ttext-shadow: none;\n}\n\n/* ============================================================================\n DIALOG SIZING\n Settings holds two-column option rows and was squeezed into the default\n dialog width, which is why its labels wrapped and its controls crowded.\n ========================================================================= */\n\n.ui-dialog:has(#dialog-options) { width: min(46rem, calc(100vw - 2rem)) !important; }\n#dialog-options { width: auto !important; }\n\n/* Option rows: label left, control right, on one rhythm. */\n#dialog-options .optionsTable { width: 100%; table-layout: fixed; }\n#dialog-options .optionsTable th {\n\twidth: 55%;\n\ttext-align: left;\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-base);\n\tvertical-align: middle;\n}\n#dialog-options .optionsTable td { text-align: right; vertical-align: middle; }\n#dialog-options input[type=\"text\"],\n#dialog-options input[type=\"password\"],\n#dialog-options select {\n\twidth: 100%;\n\tmax-width: 16rem;\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n}\n#dialog-options div.ui-slider { width: calc(100% - 3rem); }\n\n/* Yes/No and other radio pairs read as a segmented control, like the map's\n life and mass. */\n#dialog-options input[type=\"radio\"] { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-options input[type=\"radio\"] + label {\n\tdisplay: inline-block;\n\tpadding: 2px var(--space-3);\n\tmargin-left: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tvertical-align: middle;\n}\n#dialog-options input[type=\"radio\"] + label:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n#dialog-options input[type=\"radio\"]:checked + label {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 12%, transparent);\n\tfont-weight: 600;\n}\n#dialog-options input[type=\"radio\"]:focus-visible + label {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n}\n\n/* ============================================================================\n LEGIBILITY CORRECTIONS\n\n Not rebranding: these are data colours and they keep their meaning. They are\n lightened only enough to clear 4.5:1 against the card ground, measured. The\n originals were written for a near-black page and the card surface is lighter\n than that, so blue text in particular was failing badly -- the \"Blue loot\n buyer\" line sat at 2.63:1.\n ========================================================================= */\n\n:root {\n\t--data-info: #47a2fe; /* was #4399f0 4.18:1 -> 4.66:1 */\n\t--data-loot-blue: #9090ff; /* was #6060f0 2.63:1 -> 4.52:1 */\n\t--data-link: #4ca1ea; /* was #428bca 3.43:1 -> 4.50:1 */\n\t--data-class-sky: #3ca0ff; /* was #3388dd 3.38:1 -> 4.54:1 */\n\t--chart-1: #4e9dff; /* was #3366cc 2.32:1 -> 4.50:1 */\n}\n\n/* In the light theme the same hues need darkening instead. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--data-info: #1668c4;\n\t\t--data-loot-blue: #3b3bc9;\n\t\t--data-link: #1a6aa8;\n\t\t--data-class-sky: #1466a8;\n\t\t--chart-1: #1f4f9e;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--data-info: #1668c4;\n\t--data-loot-blue: #3b3bc9;\n\t--data-link: #1a6aa8;\n\t--data-class-sky: #1466a8;\n\t--chart-1: #1f4f9e;\n}\n\n/* ============================================================================\n HOVER / ACTIVE STATES\n\n forms.css styles these through `.ui-button:hover:not([disabled])` and\n `input[type=\"button\"]:not([disabled]):hover` -- three selectors deep, which\n outranks a plain :hover. That is why the raised-bevel gradient survived on\n hover and press after the rest was flattened.\n ========================================================================= */\n\nbutton:hover, button:active,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover,\ninput[type=\"button\"]:active, input[type=\"submit\"]:active,\ninput[type=\"button\"]:not([disabled]):hover,\ninput[type=\"submit\"]:not([disabled]):hover,\ninput[type=\"button\"]:not([disabled]):active,\ninput[type=\"submit\"]:not([disabled]):active,\n.ui-button:hover, .ui-button:active,\n.ui-button:hover:not([disabled]), .ui-button:active:not([disabled]),\n.ui-button.ui-widget:hover:not([disabled]),\n.ui-button.ui-widget:active:not([disabled]),\n.ui-state-hover, .ui-state-active, .ui-state-focus,\na.ui-button:hover, a.ui-button:active {\n\tbackground-image: none !important;\n\tbox-shadow: none !important;\n\ttext-shadow: none !important;\n}\n\n/* ============================================================================\n GATE CHIPS\n The gate list was comma-separated prose. Each gate is a destination you can\n click, so it reads as a chip like everything else that is a discrete thing.\n ========================================================================= */\n\n.gate-list {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: var(--space-1);\n\tmargin: 0;\n}\n\n.gate-list > b {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 3px;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tline-height: 1.7;\n\twhite-space: nowrap;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n.gate-chip:hover { border-color: var(--border-strong); background: var(--accent-surface); }\n.gate-chip a { font-weight: 500; }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* The last two gradients in the app: a fade on the account dropdown and the\n chain zoom-reset button. Both are bevel-era leftovers. */\n#content.dialog-like,\n#chain-zoom-reset {\n\tbackground-image: none !important;\n}\n#content.dialog-like { background-color: var(--popover); }\n\n/* ============================================================================\n DIALOG SCROLLING\n\n jQuery UI sizes a dialog to its content, so a tall one grows past the\n viewport and the page scrolls behind it instead of the dialog scrolling\n inside itself. Settings was 1476px tall in a 900px window.\n\n The dialog becomes a flex column capped at the viewport: title bar and\n button pane hold their size, the content takes the remaining space and\n scrolls. Nothing else has to know its height.\n ========================================================================= */\n\n.ui-dialog {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmax-height: calc(100vh - 2rem);\n\tmax-width: calc(100vw - 2rem);\n\tbox-sizing: border-box;\n}\n\n.ui-dialog > .ui-dialog-titlebar,\n.ui-dialog > .ui-dialog-buttonpane { flex: 0 0 auto; }\n\n.ui-dialog > .ui-dialog-content {\n\tflex: 1 1 auto;\n\tmin-height: 0; /* without this a flex child refuses to shrink */\n\toverflow-y: auto;\n\tmax-height: none !important;\n\theight: auto !important;\n}\n\n/* Settings no longer needs its own cap now the dialog handles it. */\n#dialog-options { max-height: none; }\n\n/* The page itself must paint a ground. body was transparent, so anything that\n scrolled past #wrapper -- an over-tall dialog, the footer -- showed the\n browser's white through the app. */\nhtml, body {\n\tbackground-color: var(--background);\n}\n\n/* ============================================================================\n ROUTE SQUARES AND THE BLUE-LOOT LINE\n\n base.css:119 sets `.blue-loot, .blue-loot .hisec { color: loot-blue }`,\n which painted the whole line blue AND overrode the security colour on its\n route squares -- so the one place the squares carry meaning was the one\n place they did not show it.\n\n The line reads as normal text; each square keeps its own security colour and\n is big enough to actually read.\n ========================================================================= */\n\n.blue-loot,\n.sys-extra,\n.sys-extra .blue-loot {\n\tcolor: var(--foreground);\n}\n\n/* Only the destination is a link. */\n.sys-extra a, .blue-loot a { color: var(--primary); }\n\n/* Security colours win on the squares. */\n.blue-loot .hisec { color: var(--data-good) !important; }\n.blue-loot .lowsec { color: var(--data-warn) !important; }\n.blue-loot .nullsec{ color: var(--data-critical) !important; }\n\n.path span,\n.blue-loot .path span {\n\tfont-size: 1.35em;\n\tline-height: 1;\n\tletter-spacing: .06em;\n\tcursor: pointer;\n}\n.path span:hover { filter: brightness(1.35); }\n\n/* ============================================================================\n CHIPS — filled, not outlined\n\n Outlined chips in a colour put the meaning in a 1px border and left the\n label low-contrast. Filled reads at a glance and the label sits on white.\n ========================================================================= */\n\n.sys-meta .chip,\n.gate-chip,\n.sig-chip,\n#sigTable td .stable,\n#sigTable td .critical,\n#sigTable td .destab,\n.chip-pill {\n\tborder: 1px solid transparent;\n\tcolor: #fff;\n\tfont-weight: 600;\n}\n\n/* Neutral facts keep a quiet fill rather than shouting a colour. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-color: var(--border);\n}\n.gate-chip:hover, .sig-chip:hover {\n\tbackground: var(--accent-surface);\n\tborder-color: var(--border-strong);\n}\n\n/* State chips carry their colour as fill. */\n#sigTable td .stable { background: var(--data-good); border-color: var(--data-good); }\n#sigTable td .destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#sigTable td .critical { background: var(--data-critical); border-color: var(--data-critical); }\n\n/* Selected filter and option chips fill with the accent. */\n.sig-chip.on {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tbackground: var(--data-good); border-color: var(--data-good); color: #1b1b1b;\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tbackground: var(--data-info); border-color: var(--data-info); color: #1b1b1b;\n}\n\n#dialog-signature .mini-selector:checked + label,\n#dialog-options input[type=\"radio\"]:checked + label {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n\tfont-weight: 600;\n}\n\n/* Life and mass keep their own meaning when selected. */\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n\n/* ============================================================================\n NAMED COLOURS\n\n The original token extraction swept hex and rgb() literals and missed CSS\n NAMED colours entirely -- fifteen of them survived, including the green mask\n star in the topbar. Mapped onto the token set here.\n ========================================================================= */\n\nbody .mask .corporate { color: var(--foreground); }\n.source_bar.corporate { background: var(--data-good); }\n.source_bar.alliance { background: var(--data-alliance); }\n#chainMap .statics span { background: var(--muted); }\n#chainMap .gate { border-color: var(--border-strong); }\n.jBox-container { color: var(--foreground); }\n\n/* ============================================================================\n TOPBAR\n\n TQ and the mask star were carrying data colours -- green for \"server is up\",\n green for \"corporate mask\". Neither is a reading you act on, and colour in\n the header competes with the map, where colour does mean something. Both go\n white; the count itself is the information.\n ========================================================================= */\n\n#topbar #serverStatus,\n#topbar #serverStatus .stable,\n#topbar #serverStatus .critical,\n#topbar #mask,\n#topbar #mask *,\n#topbar .mask .corporate,\n#topbar .mask .alliance,\n#topbar .mask .character,\n#topbar .mask .global {\n\tcolor: var(--foreground) !important;\n}\n\n/* A genuinely down server is worth the red, though. */\n#topbar #serverStatus.is-down,\n#topbar #serverStatus.is-down .critical {\n\tcolor: var(--data-critical) !important;\n}\n\n/* ============================================================================\n ROUTE LINES\n The squares belong beside the sentence they describe, not wrapped under it.\n ========================================================================= */\n\n.sys-extra > * ,\n.sys-extra {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tgap: .35em;\n}\n\n.sys-extra .path {\n\tdisplay: inline-flex;\n\talign-items: baseline;\n\tgap: .1em;\n\tmargin-left: .2em;\n}\n","/* Panel structure.\n Appearance now comes from the design system (_override-1-system.css); what\n remains here is layout the system cannot express generically. */\n\n/* The controls bar mixes floated children with the flow, so the floated group\n has to be pulled back into the flex line rather than escaping it. */\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n}\n\n/* A hidden panel leaves its grid cell empty rather than reflowing the others.\n Gridster positions every widget absolutely from saved coordinates, so\n collapsing the gap would mean rewriting them and discarding the arrangement\n the user made. Bring it back from the palette. */\n.gridWidget.panel-hidden { display: none; }\n","/* ============================================================================\n SIGNATURE DIALOG — form layout\n\n The dialog kept its original markup (.row > .label + controls) with new\n paint on top, and it showed: bold oversized labels competing with the\n values, no field affordance at all, ragged alignment, and controls landing\n on the wrong rows.\n\n This lays a real form grid over that markup. Every field the dialog had, it\n still has, in the same order.\n ========================================================================= */\n\n#dialog-signature .ui-dialog-content,\n#dialog-signature {\n\tfont-size: var(--fs-base);\n}\n\n/* One row = quiet label in a fixed column, controls flowing after it. */\n#dialog-signature .row {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-2);\n\tmargin: 0 0 var(--space-3) 0;\n\tline-height: 1.4;\n}\n\n/* Labels are wayfinding, not content: small, quiet, consistent width so every\n value starts on the same vertical line. */\n#dialog-signature .row > .label:first-child {\n\tflex: 0 0 5.5rem;\n\ttext-align: right;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .02em;\n}\n\n/* The separator between the two id halves must not take a label column. */\n#dialog-signature .row > .label:not(:first-child) {\n\tflex: 0 0 auto;\n\tcolor: var(--muted-foreground);\n\tfont-weight: 400;\n}\n\n/* ---- fields look like fields --------------------------------------------\n The system layer keeps controls flat so table rows read as data. A form is\n the opposite case: here the whole point is showing what can be edited. */\n\n#dialog-signature input[type=\"text\"],\n#dialog-signature input[type=\"password\"],\n#dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tmin-height: 1.9rem;\n}\n\n#dialog-signature input[type=\"text\"]:hover,\n#dialog-signature select:hover { border-color: var(--border-strong); }\n\n#dialog-signature input[type=\"text\"]:focus,\n#dialog-signature select:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--background);\n}\n\n/* Values sized by what they hold, not by a stray `size` attribute. */\n#dialog-signature .signatureID { width: 3.6rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .wormholeType { width: 4.4rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .leadsTo { width: 12rem; }\n#dialog-signature [name=\"signatureName\"],\n#dialog-signature [name=\"wormholeName\"] { flex: 1 1 12rem; min-width: 8rem; }\n\n/* Unresolved required fields read red at a glance. Applied by\n signature-dialog-keyboard.js: the id always, plus type and destination for\n a wormhole -- the fields the chain is drawn from. */\n#dialog-signature .sig-missing,\n#dialog-signature .sig-missing:focus {\n\tborder-color: var(--destructive);\n\tbox-shadow: 0 0 0 1px var(--destructive);\n}\n\n/* ---- lifetime reads as one control, not three loose numbers ------------- */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tfont-size: var(--fs-base);\n}\n#dialog-signature .duration-picker input {\n\twidth: 2.4rem;\n\ttext-align: center;\n}\n#dialog-signature .duration-picker span,\n#dialog-signature .duration-picker label {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- section headings ---------------------------------------------------\n Were rotated 90 degrees in a left gutter. One divider weight, one style. */\n#dialog-signature .sideLabel {\n\tposition: static;\n\ttransform: none;\n\tdisplay: block;\n\twidth: auto;\n\tmargin: var(--space-4) 0 var(--space-3);\n\tpadding-bottom: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n}\n\n#dialog-signature .side { padding-left: 0; }\n#dialog-signature hr { display: none; } /* the second, heavier divider */\n\n/* ---- quick-select chips ------------------------------------------------\n Were wrapping into a ragged second line. One wrap-safe row, aligned under\n the value column rather than starting at the dialog edge. */\n#dialog-signature .quickSelectBar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tflex: 1 1 100%;\n\tmargin-left: 6rem; /* clears the label column */\n\tmargin-top: calc(var(--space-1) * -1);\n}\n\n#dialog-signature .quickSelectBar button {\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tpadding: 1px var(--space-2);\n\tmin-width: 0;\n\tmin-height: 0;\n\tfont-size: var(--fs-xs);\n\tline-height: 1.6;\n}\n\n#dialog-signature .quickSelectBar button:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n\n/* The bare \"|\" divider inside the bar. */\n#dialog-signature .quickSelectBar { align-items: center; }\n\n/* ---- the wormhole-type shortcut button beside the type field ----------- */\n#dialog-signature .wormholeTypeQuickSelect button {\n\tfont-size: var(--fs-xs);\n\tpadding: 1px var(--space-2);\n\tmin-height: 0;\n}\n\n/* ---- width -------------------------------------------------------------\n The dialog was sized for the old cramped layout, so the type selector wrapped\n off the ID row and the class chips broke onto a ragged second line. */\n.ui-dialog:has(#dialog-signature) {\n\twidth: min(30rem, calc(100vw - 2rem)) !important;\n}\n#dialog-signature { width: auto !important; }\n\n/* ID row holds both id halves and the signature type together -- they are one\n statement (\"this signature, of this kind\"), so they belong on one line. */\n#dialog-signature .row:first-of-type { flex-wrap: nowrap; }\n#dialog-signature #signatureType { margin-left: auto; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 8rem; }\n\n/* Class chips: one tidy row under the destination field. */\n#dialog-signature .quickSelectBar {\n\tmargin-left: 6rem;\n\tgap: 3px;\n}\n#dialog-signature .quickSelectBar button {\n\tmin-width: 2rem;\n\ttext-align: center;\n\tfont-size: var(--fs-xs);\n\tpadding: 2px 0;\n}\n\n/* Lifetime: the three numbers are one value, so box them as one control\n rather than leaving them adrift in the row. */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n}\n#dialog-signature .duration-picker input {\n\tborder: 0;\n\tbackground: transparent;\n\tmin-height: 0;\n\tpadding: 0;\n\twidth: 2rem;\n}\n","/* ============================================================================\n RESPONSIVE — Track 6\n\n Scope is deliberately asymmetric, per the corp's actual use:\n\n READ band phones. Check a chain, see what is scanned. No editing\n chrome. width < 768px OR height < 600px.\n EDIT band tablets. Update signatures, drive the map. Touch-sized\n targets. width >= 768px AND height >= 600px.\n DESKTOP width >= 1280px AND a fine pointer.\n\n The height clause is what catches a landscape phone: an iPhone 15 turned\n sideways is 852px wide -- past any sensible tablet breakpoint -- but only\n 393px tall, with no room for the editing layout. Width alone gets this\n wrong.\n\n The fine-pointer clause on desktop is what keeps a landscape iPad Pro 11\"\n (~1194px) in the EDIT band rather than handing it the dense mouse layout it\n cannot hit accurately.\n\n Density is width-driven; control sizing is pointer-driven. They are separate\n questions: a 1000px window on a desktop wants the multi-panel layout but not\n 44px touch targets.\n ========================================================================= */\n\n/* ── READ: stack the panels ──────────────────────────────────────────────\n Gridster positions every widget absolutely from saved coordinates. Below\n the breakpoint that layout is abandoned entirely and the panels return to\n document flow -- which is the reflow the fixed grid cannot do. The saved\n coordinates are untouched, so rotating back restores the arrangement. */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t#wrapper { overflow-x: hidden; }\n\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmin-height: 12rem;\n\t\tmargin: 0 0 var(--space-3) 0 !important;\n\t\toverflow: visible;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t/* Chain map wants the most room; signatures next. */\n\t#chainWidget .content { min-height: 55vh; }\n\t#notesWidget .content { min-height: 14rem; }\n\n\t/* Resize handles are meaningless without a grid. */\n\t.grid-resize { display: none !important; }\n\n\t/* Editing chrome is out of scope on a phone: this band is for reading. */\n\t#signaturesWidget #add-signature,\n\t#signaturesWidget #edit-signature,\n\t#signaturesWidget #delete-signature,\n\t#signaturesWidget #undo,\n\t#signaturesWidget #redo,\n\t#notesWidget #add-comment,\n\t#layout {\n\t\tdisplay: none !important;\n\t}\n\n\t/* The topbar carries a lot for 393px. Keep identity, time and search. */\n\t#serverStatus,\n\t#topbar h3:nth-of-type(2) { display: none; }\n\n\t#topbar { position: sticky; }\n\n\t/* Signature table: drop the columns that only matter while editing. */\n\t#sigTable th:nth-child(n+5),\n\t#sigTable td:nth-child(n+5) { display: none; }\n}\n\n/* ── EDIT: tablets ───────────────────────────────────────────────────────\n Two columns rather than four panels on a fixed grid; the arrangement a\n 1194px tablet can actually use. */\n\n@media (min-width: 768px) and (max-width: 959px) and (min-height: 600px) {\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t}\n\n\t.gridster > ul {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t\tgap: var(--space-3);\n\t\tpadding: 0 var(--space-2);\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t#infoWidget { min-height: 34vh; }\n\t#signaturesWidget { min-height: 34vh; }\n\t#notesWidget { min-height: 26vh; }\n\n\t/* The chain is the reason you are here; give it the full width. */\n\t#chainWidget {\n\t\tgrid-column: 1 / -1;\n\t\tmin-height: 46vh;\n\t}\n\n\t.grid-resize { display: none !important; }\n}\n\n/* ── Touch sizing, independent of width ──────────────────────────────────\n Driven by pointer, not viewport, because they are different questions. A\n coarse pointer needs a 44px target whatever the screen is. */\n\n@media (pointer: coarse) {\n\t.controls i,\n\t.controls span.control,\n\t.panel-hide,\n\t#topbar i,\n\t.quickSelectBar button {\n\t\tmin-width: 44px;\n\t\tmin-height: 44px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\tbutton, .ui-button, input[type=\"button\"], input[type=\"submit\"] {\n\t\tmin-height: 44px;\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\tinput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\n\tselect, textarea {\n\t\tmin-height: 40px;\n\t\tfont-size: 1.15rem; /* keeps iOS from zooming the field on focus */\n\t}\n\n\t#sigTable td { padding: var(--space-3) var(--space-2); }\n\n\t#dialog-signature .mini-selector + label {\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\t/* Hover styling is misleading on touch -- it sticks after a tap. */\n\t#sigTable tbody tr:hover > td { background-color: transparent; }\n}\n\n/* Dialogs must not exceed a small viewport. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.ui-dialog {\n\t\tmax-width: calc(100vw - var(--space-4)) !important;\n\t\tmax-height: calc(100vh - var(--space-4)) !important;\n\t\tleft: var(--space-2) !important;\n\t\toverflow: auto;\n\t}\n\t.ui-dialog .ui-dialog-content { max-height: 60vh; overflow: auto; }\n}\n\n/* Respect the OS setting; the map already animates a great deal. */\n@media (prefers-reduced-motion: reduce) {\n\t*, *::before, *::after {\n\t\tanimation-duration: .001ms !important;\n\t\tanimation-iteration-count: 1 !important;\n\t\ttransition-duration: .001ms !important;\n\t}\n}\n\n/* ── Touch on the chain map ──────────────────────────────────────────────\n #chainParent is a scroll container driven by dragscroll.js, which is a\n mouse-only library (mousedown/mousemove). Rather than port it, let the\n browser do what it is already good at: native touch panning and pinch-zoom\n on the scroll container. dragscroll keeps working for mice untouched.\n\n touch-action must be set explicitly because the map suppresses user-select\n and jQuery UI's draggable calls preventDefault on pointer events, which\n otherwise kills native scrolling on touch. */\n\n#chainParent {\n\ttouch-action: pan-x pan-y pinch-zoom;\n\t-webkit-overflow-scrolling: touch;\n\toverscroll-behavior: contain;\n}\n\n/* Nodes stay draggable at tablet width and above; on a phone the map is for\n reading, so a drag should pan the map rather than move somebody's system. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainMap .system,\n\t#chainMap [class*=\"system\"] {\n\t\ttouch-action: inherit;\n\t}\n}\n","/* ============================================================================\n SYSTEM PANEL\n\n Was two 50% floats with a
: the system identity on the left,\n and \"Blue loot buyer\" stranded in a right-hand column it did not belong in.\n Statics sat last, below the links, so the rows that matter most needed\n scrolling to reach.\n\n Rebuilt as a single column in reading order -- identity, what it connects\n to, then the supporting detail -- with the metadata as chips.\n ========================================================================= */\n\n.sys-panel {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--space-3);\n\tpadding: var(--space-3);\n\toverflow-y: auto;\n\theight: 100%;\n\tbox-sizing: border-box;\n}\n\n/* ---- identity ----------------------------------------------------------- */\n.sys-head { display: flex; flex-direction: column; gap: var(--space-2); }\n\n.sys-panel .sys-name {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tfont-size: var(--fs-lg);\n\tfont-weight: 600;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\tletter-spacing: -.01em;\n}\n\n/* Security / region / faction as chips: three small facts, read at a glance,\n in the same register as the life and mass chips elsewhere. */\n.sys-meta { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sys-meta .chip {\n\tmargin: 0;\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n\twhite-space: nowrap;\n}\n/* An empty chip should not draw a pill. */\n.sys-meta .chip:empty { display: none; }\n/* Security colouring comes from the data tokens already on the element. */\n.sys-meta #infoSecurity { color: inherit; }\n\n/* ---- what it connects to, promoted above the supporting detail ---------- */\n.sys-statics {\n\tfont-size: var(--fs-sm);\n\tline-height: 1.7;\n\tcolor: var(--card-foreground);\n}\n.sys-statics:empty { display: none; }\n\n/* ---- blue-loot buyer and other route notes ------------------------------\n Was floated into a right-hand column of its own. It is a note about this\n system, so it reads inline with the rest. */\n.sys-extra {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n\tline-height: 1.8;\n}\n.sys-extra:empty { display: none; }\n\n/* ---- graph -------------------------------------------------------------- */\n#activityGraph { min-height: 120px; }\n\n/* Range switch as a segmented control rather than \"Week - 48Hour - 24Hour\". */\n.sys-range {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tjustify-content: center;\n}\n.sys-range a {\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\ttext-decoration: none;\n}\n.sys-range a:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n}\n\n/* ---- external links ----------------------------------------------------- */\n.sys-links {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-3);\n\tjustify-content: center;\n\tpadding-top: var(--space-1);\n\tborder-top: 1px solid var(--border);\n\tfont-size: var(--fs-sm);\n}\n.sys-links a { color: var(--muted-foreground); font-weight: 500; }\n.sys-links a:hover { color: var(--primary); }\n","/* ============================================================================\n CHAIN MAP + SIGNATURE TABLE\n\n The two surfaces the tool is actually used through, and the last places\n carrying the old look.\n\n The map nodes kept their bevels because they are built from VENDOR-PREFIXED\n gradients (-moz-linear-gradient, -webkit-gradient), which the earlier sweep\n for `linear-gradient` did not match.\n ========================================================================= */\n\n/* ---- copy affordance ---------------------------------------------------\n tripwire.css set `content: '\\01F4C4\\00FE0E'` -- the page-facing-up emoji\n with the text-presentation variation selector, asking for a monochrome\n glyph most fonts only ship in colour. The result was fallback tofu, which\n is the \"broken document\" after the system name. There is no copy glyph in\n the icon font, so it is drawn: two offset sheets, the usual copy sign. */\n.copy::after { content: none; }\n\n.copy {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: -0.1em;\n\topacity: .55;\n\ttransition: opacity .12s ease;\n}\n.copy:hover, .copy:focus-visible { opacity: 1; }\n\n.copy::before,\n.copy::after {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: .62em;\n\theight: .78em;\n\tborder: 1px solid currentColor;\n\tborder-radius: 2px;\n}\n.copy::before { left: 0; top: .22em; }\n.copy::after { left: .3em; top: 0; background: var(--card); }\n\n/* ============================================================================\n CHAIN MAP\n ========================================================================= */\n\n/* Flat fills. The class colour moves to the border, where it reads as a label\n rather than as a lit surface, and the node ground stays consistent so the\n map is one plane instead of a tray of buttons. */\n#chainMap .currentNode > div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node,\n#chainMap div.loop,\n#chainMap div.node {\n\tbackground-image: none !important;\n\tbox-shadow: none;\n\tborder-radius: var(--radius-md);\n\tborder-width: 1px;\n\tborder-style: solid;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\n#chainMap div.node { background-color: var(--card); }\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 22%, var(--card)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 22%, var(--card)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 22%, var(--card)); }\n#chainMap div.loop { background-color: color-mix(in oklab, var(--data-class-void) 40%, var(--card)); }\n\n/* Where you are is the one thing that should be unmistakable. */\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 18%, var(--card));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 1px var(--primary);\n}\n\n#chainMap div.node:hover { border-color: var(--border-strong); }\n\n/* Badges were 9px monospace with a 6px glow. Same chip language as everywhere\n else, so a count on the map reads like a count in the table. */\n#chainMap span.badge {\n\tbackground-color: var(--muted);\n\tcolor: var(--muted-foreground);\n\tbox-shadow: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.5;\n\tpadding: 0 5px;\n\tmin-width: 1.1em;\n}\n\n#chainMap .nodeType {\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n}\n\n#chainMap .statics span {\n\tborder-radius: 999px;\n\tpadding: 0 5px;\n\tfont-size: var(--fs-xs);\n}\n\n/* ============================================================================\n SIGNATURE TABLE\n ========================================================================= */\n\n#sigTableWrapper { padding: 0; }\n\n#sigTable th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }\n#sigTable th.sortable:hover { color: var(--foreground); }\n\n/* The sort arrow was an empty -- an icon element with no\n icon. Draw the state instead, and only on the column actually sorted. */\n#sigTable th.sortable i[data-icon=\"\"] { display: none; }\n\n#sigTable th.sortable::after {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: 0; height: 0;\n\tmargin-left: var(--space-1);\n\tborder-left: 3px solid transparent;\n\tborder-right: 3px solid transparent;\n\topacity: 0;\n\ttransition: opacity .12s ease;\n}\n#sigTable th.tablesorter-headerAsc::after {\n\tborder-bottom: 4px solid var(--primary);\n\topacity: 1;\n}\n#sigTable th.tablesorter-headerDesc::after {\n\tborder-top: 4px solid var(--primary);\n\topacity: 1;\n}\n\n/* Signature type as a chip, so the group reads at a glance down the column\n the way life and mass already do. */\n#sigTable td.sigType > span,\n#sigTable td .sigTypeName {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n}\n\n/* Age is context, not content. */\n#sigTable td.sigAge { color: var(--muted-foreground); font-variant-numeric: tabular-nums; }\n\n/* Numeric-ish columns line up. */\n#sigTable td.sigID { font-variant-numeric: tabular-nums; letter-spacing: .03em; }\n\n/* An empty table should say so rather than being a blank rectangle. */\n#sigTable tbody:empty::after,\n#sigTableWrapper > .sig-empty {\n\tcontent: \"No signatures in this system\";\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n}\n\n/* ============================================================================\n SIGNATURE FILTER BAR\n After Aperture's SignatureModule: group chips, a scan-state cycle, and live\n counts. Scanning a long list down one column is the whole job, so the bar\n stays pinned and only the table scrolls.\n ========================================================================= */\n\n.sig-filter {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tpadding: var(--space-2) var(--space-2);\n\tborder-bottom: 1px solid var(--border);\n}\n\n.sig-filter-groups { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sig-chip {\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.6;\n\tpadding: 0 var(--space-2);\n\tmin-height: 0;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n.sig-chip:hover { border-color: var(--border-strong); background: var(--muted); color: var(--foreground); }\n\n/* Active filters stand out without the harshness of a solid fill. */\n.sig-chip.on {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 14%, transparent);\n}\n\n/* The scan cycle earns its own colours: scanned reads as settled, unscanned as\n outstanding work. */\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tborder-color: var(--data-good); color: var(--data-good);\n\tbackground: color-mix(in oklab, var(--data-good) 14%, transparent);\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tborder-color: var(--data-info); color: var(--data-info);\n\tbackground: color-mix(in oklab, var(--data-info) 14%, transparent);\n}\n\n.sig-stats {\n\tmargin-left: auto;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\twhite-space: nowrap;\n\tfont-variant-numeric: tabular-nums;\n}\n\n#sigTable tbody tr.sig-filtered { display: none; }\n\n/* Unscanned rows are outstanding work; mark the id rather than shouting the\n whole row, the way Aperture marks the still-empty required cells. */\n#sigTable tbody tr.sig-unscanned > td:first-child {\n\tbox-shadow: inset 2px 0 0 var(--data-info);\n}\n\n/* Site-safety glyph, derived from the group. A combat site is somewhere rats\n can shoot you; an exploration site is not; a wormhole is neither. */\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before,\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: .5em; height: .5em;\n\tmargin-right: .45em;\n\tborder-radius: 50%;\n\tvertical-align: .05em;\n}\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before { background: var(--data-critical); }\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before { background: var(--data-good); }\n\n/* Chip labels sit on a fill now, so they take the full-strength text colour --\n muted-on-muted was the low-contrast case that made these hard to read. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tcolor: var(--foreground);\n}\n.gate-chip a { color: var(--foreground); }\n.gate-chip a:hover { color: var(--primary); }\n","/* ============================================================================\n DESKTOP LAYOUT\n\n Everything below fixes one root cause: the desktop layout was gridster's\n fixed pixel grid, positioned absolutely from saved coordinates. It did not\n use the window it was in -- at 1600x1000 the panels stopped at 1250x440 and\n the rest was raw background plus footer, which read as a page that had not\n finished loading.\n\n The grid now fills the viewport at every width. The panel registry still\n controls what is shown; what is gone is drag-and-resize, which only existed\n to work around a layout that never fit in the first place.\n ========================================================================= */\n\n/* Desktop only. Below 1280px the READ and EDIT bands in\n _override-5-responsive.css own the layout: panels return to document flow\n and the page scrolls. These rules used to apply at every width, which put\n three columns on a 375px phone with two of them off the right edge -- the\n responsive file sorts earlier and could not win. The guard is what the\n earlier file was always assuming. */\n@media (min-width: 960px) {\n\thtml, body { height: 100%; overflow: hidden; }\n\n\t#wrapper {\n\t\theight: 100vh;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#inner-wrapper {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#topbar { flex: 0 0 auto; position: static; }\n\n\t.gridster {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tvisibility: visible !important;\n\t\tpadding: var(--space-2);\n\t\tbox-sizing: border-box;\n\t}\n\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: 100% !important;\n\t\tmargin: 0 !important;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\n\t\tdisplay: grid;\n\t\tgap: var(--space-2);\n\t\t/* Weighted by how much each panel earns: signatures widest, notes least. */\n\t\tgrid-template-columns: minmax(260px, 1fr) minmax(340px, 1.35fr) minmax(220px, 0.85fr);\n\t\t/* The chain is the reason the tool exists, so it takes what is left. */\n\t\tgrid-template-rows: minmax(180px, 32vh) 1fr;\n\t}\n}\n\n.gridWidget {\n\tposition: static !important;\n\twidth: auto !important;\n\theight: auto !important;\n\tmin-height: 0;\n\tmargin: 0 !important;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\n.gridWidget > .controls {\n\tposition: static !important;\n\tflex: 0 0 auto;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n}\n\n.gridWidget > .content {\n\tposition: static !important;\n\tflex: 1 1 auto;\n\tmin-height: 0;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n\toverflow: auto;\n}\n\n#chainWidget { grid-column: 1 / -1; }\n\n/* Resize handles belong to a grid that no longer exists. */\n.grid-resize { display: none !important; }\n\n/* A hidden panel should give its space back now the grid can reflow. */\n.gridWidget.panel-hidden { display: none !important; }\n\n/* ============================================================================\n BACKGROUND\n\n The image was the brightest, highest-contrast thing on screen, showing\n through translucent panels and pulling the eye off the data every time. It\n stays -- it is the corp's ship -- but well behind a wash, and the panels go\n opaque so nothing reads through them.\n ========================================================================= */\n\n#wrapper::before {\n\tcontent: \"\";\n\tposition: fixed;\n\tinset: 0;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\tcolor-mix(in oklab, var(--background) 88%, transparent),\n\t\tcolor-mix(in oklab, var(--background) 94%, transparent)\n\t);\n\tpointer-events: none;\n\tz-index: 0;\n}\n\n#inner-wrapper { position: relative; z-index: 1; }\n\n.gridWidget {\n\tbackground-color: var(--card); /* opaque: nothing reads through a panel */\n}\n\n/* ============================================================================\n FOOTER\n Donation plea, a yellow button and a wall of CCP legalese, centred on the\n background. It belongs on the landing page, not on the instrument.\n ========================================================================= */\n\n#footer { display: none !important; }\n\n/* ============================================================================\n TOPBAR\n Was a left cluster and a right cluster with ~1000px of nothing between.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: 0 var(--space-3);\n\theight: auto;\n\tmin-height: 2.6rem;\n\tline-height: normal;\n}\n#topbar > .align-left { display: flex; align-items: center; gap: var(--space-3); flex: 1 1 auto; }\n#topbar > .align-right { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; padding-right: 0; }\n#topbar h1, #topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* ============================================================================\n DENSITY AND EMPHASIS\n Everything was the same mid-grey, so nothing said where to look.\n ========================================================================= */\n\n/* The chain panel is the subject; give its header the accent rule. */\n#chainWidget > .controls { border-bottom-color: color-mix(in oklab, var(--primary) 45%, var(--border)); }\n#chainWidget .panel-title { color: var(--primary); }\n\n/* Gate chips should not strand a single item on its own line. */\n.gate-list { row-gap: var(--space-1); }\n.gate-chip { flex: 0 0 auto; }\n\n/* Panel headers all one height, whatever they contain. */\n.gridWidget > .controls { min-height: 2.1rem; }\n\n/* The activity graph earns its space or gives it up. */\n#activityGraph { min-height: 0; }\n#activityGraph.is-sparse { height: 84px !important; opacity: .75; }\n#activityGraphControls { margin-top: var(--space-1); }\n\n/* gridster.css sets `.gridster .gs-w { background: var(--scrim-60) }` -- two\n classes, which outranks a plain .gridWidget. That translucent scrim is what\n let the background image read straight through every panel. */\n.gridster .gs-w,\n.gridster .gridWidget {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n}\n\n/* With every panel opaque the background image is hidden completely, which\n throws away the one piece of brand on the page. The chain panel is the one\n surface with real empty space, so it alone stays slightly translucent -- the\n ship reads faintly behind the map and nowhere near the tables. */\n.gridster .gs-w#chainWidget {\n\tbackground-color: color-mix(in oklab, var(--card) 88%, transparent);\n}\n\n/* The map itself sits on nothing, so the node is what stands out. */\n#chainWidget > .content { background: transparent; }\n\n/* ============================================================================\n PROPORTION, WITH REAL DATA IN FRONT OF ME\n\n A one-signature system flattered the 32vh top row. With a dozen signatures\n the table shows four and clips, while the chain holds 60% of the screen for\n a single node. Signatures are what you read during a scan, so the top row\n grows and the chain takes what is left rather than the reverse.\n ========================================================================= */\n\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ============================================================================\n SIGNATURE TABLE COLUMN SIZING\n The id was wrapping mid-value (\"ABC-\" / \"111\"), the group was stated twice\n (dot plus word), site names were centre-aligned under a left-aligned header,\n and life/mass held full width while empty for every non-wormhole row.\n ========================================================================= */\n\n#sigTable { table-layout: fixed; }\n\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.5rem; white-space: nowrap; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6rem; white-space: nowrap; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.5rem; white-space: nowrap; }\n#sigTable th:nth-child(4), #sigTable td:nth-child(4) { width: auto; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 4.5rem; white-space: nowrap; }\n\n/* Everything reads left except the state columns, which line up on the right\n so they scan as a pair. */\n#sigTable td, #sigTable th { text-align: left; }\n#sigTable td:nth-child(5), #sigTable th:nth-child(5),\n#sigTable td:nth-child(6), #sigTable th:nth-child(6) { text-align: right; }\n\n/* The alignment classes the app writes inline fight the above. */\n#sigTable td.centerAlign, #sigTable td.rightAlign { text-align: inherit; }\n\n/* The signature id is an identifier; never break it. */\n#sigTable td:nth-child(1) { font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; }\n\n/* Header row is chrome, not content. */\n#sigTable thead th { position: sticky; top: 0; background: var(--card); z-index: 1; }\n\n/* ============================================================================\n HIERARCHY\n Three text tokens used almost interchangeably meant nothing led the eye.\n Primary content sits at full strength, supporting detail steps back.\n ========================================================================= */\n\n.sys-panel .sys-name { color: var(--foreground); font-weight: 600; }\n.sys-statics, .sys-extra { color: var(--card-foreground); }\n.sys-links a, #version,\n#activityGraphControls a,\n.sig-stats { color: var(--muted-foreground); }\n\n/* The filter bar is a control surface; it should sit quieter than the rows it\n filters. */\n.sig-filter { padding: var(--space-1) var(--space-2); }\n.sig-chip { font-size: calc(var(--fs-xs) * 0.95); }\n\n/* The version chip was absolutely positioned at top:4px right:20px inside the\n logo, which worked when the topbar was a line-height hack. In a flex row it\n lands on top of the wordmark. It is a sibling, so it sits like one. */\n#topbar #logo { position: static; display: flex; align-items: baseline; gap: var(--space-2); }\n\n#version {\n\tposition: static;\n\ttop: auto; right: auto;\n\theight: auto;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Panel visibility menu, opened from the layout control. */\n#panel-menu {\n\tposition: absolute;\n\tz-index: 3000;\n\tmin-width: 12rem;\n\tpadding: var(--space-1) 0;\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.5);\n}\n#panel-menu button {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\twidth: 100%;\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\ttext-align: left;\n\tpadding: var(--space-1) var(--space-3);\n\tmin-height: 0;\n}\n#panel-menu button:hover { background: var(--muted); }\n#panel-menu .tick { width: 1em; color: var(--primary); }\n\n/* ============================================================================\n CHARACTER PORTRAIT\n\n EVE portraits are square, so they need masking to read as an avatar. Served\n from images.evetech.net -- image.eveonline.com is the retired host and the\n settings portrait was still pointing at it.\n ========================================================================= */\n\n.avatar {\n\tdisplay: inline-block;\n\twidth: 1.6rem;\n\theight: 1.6rem;\n\tborder-radius: 50%;\n\tobject-fit: cover;\n\tvertical-align: middle;\n\tbackground: var(--muted);\n\t/* A thin ring keeps a dark portrait from bleeding into a dark topbar. */\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#topbar #user {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-2);\n}\n\n.avatar-lg {\n\twidth: 3.4rem;\n\theight: 3.4rem;\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#dialog-options #avatar { padding-right: var(--space-3); vertical-align: top; }\n\n/* account.css sets `#login img { border-radius: 3px }` -- an id plus an\n element, which outranks .avatar and squared the portrait off again. */\n#login img.avatar,\n#topbar img.avatar,\nimg.avatar {\n\tborder-radius: 50%;\n}\n\n/* Corporation and alliance logos are marks, not faces; they stay square. */\nimg.logo {\n\twidth: 1.6rem; height: 1.6rem;\n\tobject-fit: contain;\n\tvertical-align: middle;\n}\n","/* ============================================================================\n CHAIN TAB STRIP\n\n On a busy corp map this is the primary navigation -- the chain runs\n roughly sixteen screen widths, so you reach a system by picking its chain,\n not by scrolling to it. Thirteen-plus tabs is normal.\n\n The old strip could not survive that: `.tab { min-width: 75px }` with no\n overflow handling meant thirteen tabs demanded ~975px and simply pushed the\n rest of the header off the right edge. It also used floats inside\n inline-blocks with text-align:right, so the label and its controls fought\n each other.\n\n Now: one scrolling row that takes the space left over, with every other\n control held in place beside it.\n ========================================================================= */\n\n#chainWidget > .controls {\n\tflex-wrap: nowrap;\n\tgap: var(--space-2);\n}\n\n/* Everything that is not the strip keeps its size. */\n#chainWidget > .controls > *:not(#chainTabs) { flex: 0 0 auto; }\n\n#chainTabs {\n\tflex: 1 1 auto;\n\tmin-width: 0; /* without this a flex child refuses to shrink */\n\tdisplay: flex;\n\talign-items: stretch;\n\tgap: 2px;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscrollbar-width: thin;\n\tscroll-snap-type: x proximity;\n\t/* Fade the edges so it is obvious there are more chains off-screen. */\n\tmask-image: linear-gradient(to right, transparent 0, #000 12px,\n\t #000 calc(100% - 12px), transparent 100%);\n}\n\n#chainTabs::-webkit-scrollbar { height: 4px; }\n#chainTabs::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 999px; }\n#chainTabs::-webkit-scrollbar-track { background: transparent; }\n\n/* ---- the tab itself ----------------------------------------------------- */\n\n#chainTabs .tab {\n\tflex: 0 0 auto;\n\tmin-width: 0; /* was 75px, which is what broke the header */\n\tmax-width: 12rem;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm) var(--radius-sm) 0 0;\n\tborder-bottom: 2px solid transparent;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1.6;\n\ttext-align: left;\n\twhite-space: nowrap;\n\tscroll-snap-align: start;\n\ttransition: color .12s ease, background-color .12s ease, border-color .12s ease;\n}\n\n#chainTabs .tab:hover {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--border-strong);\n}\n\n/* The active chain is where you are; a 2px blue rule was too quiet for the\n one control you navigate by. */\n#chainTabs .tab.current {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n\tfont-weight: 600;\n}\n\n/* Floats inside an inline-block, with the row right-aligned, meant the label\n and its buttons never agreed on a baseline. */\n#chainTabs .tab .name {\n\tfloat: none;\n\tpadding-left: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n#chainTabs .tab .closeTab,\n#chainTabs .tab .editTab {\n\tfloat: none;\n\tflex: 0 0 auto;\n\tpadding: 0 2px;\n\tfont-size: .85em;\n\tline-height: 1;\n\tcolor: var(--muted-foreground);\n}\n\n/* Reveal the controls on the tab you are pointing at, and always on the active\n one -- otherwise renaming the chain you are in means hunting for a target\n that appears only on hover. */\n#chainTabs .tab:hover .closeTab,\n#chainTabs .tab:hover .editTab,\n#chainTabs .tab.current .closeTab,\n#chainTabs .tab.current .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#chainTabs .tab .closeTab:hover { color: var(--destructive); }\n#chainTabs .tab .editTab:hover { color: var(--primary); }\n\n/* While dragging to reorder. */\n#chainTabs .ui-sortable-helper {\n\tbackground: var(--card);\n\tborder-color: var(--border);\n\tbox-shadow: 0 4px 12px rgba(0,0,0,.4);\n}\n\n/* The chain panel's own title is redundant next to a strip of named chains,\n and at thirteen tabs the space is worth more than the label. */\n#chainWidget .panel-title { display: none; }\n\n/* ============================================================================\n PANEL HEADER: RIGHT-ANCHORED CONTROLS\n\n .controls is a flex row, and two of its children carried `margin-left: auto`\n -- the group the markup floats right, and the panel-hide button. Flexbox\n divides free space equally between every auto margin, so instead of both\n sitting at the right edge the trailing group was parked in the middle of\n the header (measured: 203px short of the right in System, 206px in\n Signatures, 168px in Notes).\n\n Exactly one element opens the gap. Everything after it packs against the\n right edge behind it.\n ========================================================================= */\n\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n}\n\n/* No second auto margin -- this just follows the group above. */\n.gridWidget > .controls > .panel-hide { margin-left: 0; }\n\n/* If a panel ever has no floated group, the hide button still needs to open\n the gap itself. :only-of-type is too narrow, so match on it being the sole\n right-hand item. */\n.gridWidget > .controls > div[style*=\"float\"] ~ .panel-hide { margin-left: 0; }\n.gridWidget > .controls > .panel-hide:first-of-type { margin-left: auto; }\n\n/* The chain header sizes its strip with flex-grow instead, so nothing there\n should also claim the free space. */\n#chainWidget > .controls > div[style*=\"float\"] { margin-left: 0; }\n","/* ============================================================================\n MAIN HEADER\n\n Was one cramped line of unrelated things divided by literal \"|\" characters,\n with two inline `font-size: 1.7em` overrides and a portrait too small to\n recognise.\n\n An earlier attempt made this a grid with `display: contents` on the\n wrappers; that placed every right-hand control into the same grid cell, so\n they stacked and ran off the right edge. A flex row cannot do that: the\n right cluster is one item that keeps its own width.\n\n Server population and EVE time have moved out entirely, to the status bar\n along the bottom -- they are ambient readings, not navigation.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: var(--space-2) var(--space-3);\n\theight: auto;\n\tmin-height: 0;\n\tline-height: normal;\n\tflex-wrap: nowrap;\n}\n\n#topbar > .align-left {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 1 1 auto;\n\tmin-width: 0; /* lets the left side shrink instead of shoving */\n}\n\n#topbar > .align-right {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 0 0 auto; /* never compressed, never pushed out */\n\tpadding-right: 0;\n}\n\n#topbar #logo {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tflex: 0 0 auto;\n}\n#topbar #logo a { font-size: 1.8rem; line-height: 1.1; }\n\n#topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* Twice the previous portrait; the header height follows it. */\n#topbar .avatar { width: 2.4rem; height: 2.4rem; }\n#topbar #user { gap: var(--space-2); font-size: 1.05rem; }\n\n#topbar #settings,\n#topbar #layout { font-size: 1.3rem; flex: 0 0 auto; }\n\n/* The system search takes the slack in the middle rather than the icons. */\n#topbar #systemSearch { flex: 1 1 auto; min-width: 0; }\n\n/* ============================================================================\n STATUS BAR\n\n Ambient readings, out of the way: server population left, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--space-4);\n\tpadding: var(--space-1) var(--space-3);\n\tborder-top: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n}\n\n#statusbar .bar-value { font-variant-numeric: tabular-nums; font-weight: 600; }\n#statusbar #serverStatus.is-down .bar-value { color: var(--data-critical); }\n\n.bar-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n/* ============================================================================\n NOTE EDITOR\n Replaces CKEditor 4's skin. Same visual language as everything else, so the\n editor does not look like a different application embedded in the panel.\n ========================================================================= */\n\n.rte {\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n\toverflow: hidden;\n}\n\n.rte-bar {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 2px;\n\tpadding: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--card) 60%, transparent);\n}\n\n.rte-btn {\n\tmin-width: 1.9rem;\n\tmin-height: 1.9rem;\n\tpadding: 0 var(--space-1);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1;\n\tcursor: pointer;\n}\n.rte-btn:hover { background: var(--accent-surface); color: var(--foreground); border-color: var(--border); }\n\n.rte-sep { width: 1px; align-self: stretch; margin: 2px var(--space-1); background: var(--border); }\n\n.rte-swatch {\n\twidth: 1.1rem; height: 1.1rem;\n\tmin-width: 0; min-height: 0;\n\tpadding: 0;\n\tborder: 1px solid var(--border);\n\tborder-radius: 50%;\n\tcursor: pointer;\n}\n.rte-swatch:hover { transform: scale(1.15); }\n\n.rte-area {\n\tmin-height: 7rem;\n\tmax-height: 22rem;\n\toverflow-y: auto;\n\tpadding: var(--space-2);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tline-height: 1.6;\n\toutline: none;\n}\n.rte-area:focus { background: var(--background); }\n.rte-area a { color: var(--primary); }\n.rte-area ul, .rte-area ol { padding-left: 1.4em; margin: .3em 0; }\n","/* ============================================================================\n TYPOGRAPHY: ONE FAMILY\n\n The stylesheets declare thirteen different font stacks -- Arial, Verdana,\n \"Arial, verdana, tahoma\", lucida, bare sans-serif, and so on. Most were\n already being overridden by the body rule, but two rules still resolved\n to `lucida`, and any of the rest would resurface the moment a component was\n touched.\n\n One family everywhere, except the icon font and deliberate monospace.\n ========================================================================= */\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n[data-icon], [data-icon]::before, [data-icon]::after,\n.icon, .icon::before { font-family: 'icon' !important; }\n\ncode, pre, .mono,\n#sigTable td:nth-child(1),\n#statusbar .bar-value,\n#topbar #serverTime { font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n SETTINGS SECTION HEADINGS\n\n They were sticky, which needed a solid background to avoid text scrolling\n through them -- and the background did not match every surface they crossed,\n so they rendered as a band that did not line up. Sticky buys little in a\n dialog this short. They are plain headings now.\n ========================================================================= */\n\n.settings-sections > h3 {\n\tposition: static;\n\tbackground: transparent;\n}\n\n/* ============================================================================\n HEADER: NEVER CLIP THE RIGHT CLUSTER\n\n Reported repeatedly. The right cluster is fixed-size and the left is\n flexible, but the left contains a search input with an intrinsic minimum\n width, so at narrow widths it refused to shrink and pushed the icons past\n the edge. Truncating the left is always preferable to losing a control.\n ========================================================================= */\n\n#topbar > .align-left { overflow: hidden; }\n#topbar #systemSearch,\n#topbar #currentSpan,\n#topbar #searchSpan { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n#topbar #systemSearch input[type=\"text\"] { max-width: 14rem; min-width: 0; }\n#topbar > .align-right { z-index: 2; }\n\n/* ============================================================================\n SYSTEM PANEL: BREATHING ROOM AT THE TOP\n The system name sat hard against the panel header.\n ========================================================================= */\n\n.sys-panel { padding-top: var(--space-4); }\n.sys-panel .sys-name { margin-top: 0; }\n\n/* ============================================================================\n STATUS BAR: THREE SLOTS\n Population left, Tripwire version centred, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto 1fr;\n\talign-items: center;\n}\n#statusbar > #serverStatus { justify-self: start; }\n#statusbar > #version { justify-self: center; }\n#statusbar > #eveTime { justify-self: end; }\n\n/* The chart still renders a few pixels past its box even when told the height,\n because Google Charts adds its own chrome. Clip rather than let it paint over\n what follows. */\n#activityGraph { overflow: hidden; }\n\n/* Two rules still resolved to the bundled `lucida` face. */\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n/* signatures.css uses a bundled `lucida` TTF for the signature-id column, to\n keep ids aligned down the column. The intent is right; shipping a font file\n for one column is not. A system monospace stack with tabular figures does\n the same job with no download. */\n#sigTable td:nth-child(1) {\n\tfont-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n\tfont-variant-numeric: tabular-nums;\n\tletter-spacing: .04em;\n}\n\n/* ── The header overflow, root cause ─────────────────────────────────────\n #topbar is content-box (this stylesheet predates border-box being the\n default anyone reaches for), so `width: 100%` plus `padding: 6px 9px`\n resolves to viewport + 18px. The bar hangs 18px off the right of the\n screen and the last control -- the layout icon -- is cut in half.\n\n Every check I ran against this measured `scrollWidth - clientWidth` on\n the bar, which is 0: the bar is not overflowing its own box, its box is\n bigger than the viewport. The document does not report it either,\n because overflow-x is hidden upstream. Both numbers read clean while\n the icon was visibly severed. The right question is whether the bar's\n right edge exceeds documentElement.clientWidth.\n\n Padding belongs inside the width. */\n#topbar {\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tmax-width: 100%;\n}\n","/* ============================================================================\n POLISH PASS\n\n Six things, all of which come back to the same habit: space and weight were\n applied per-element as each one was noticed, so nothing shared a rule and\n nothing agreed with anything else. These set the shared rules.\n ========================================================================= */\n\n/* ── 1. PANEL INSETS ─────────────────────────────────────────────────────\n Measured before writing this, per panel, first painted child against the\n content box:\n\n Notes padding 0 -- \"Posted by\" flush against the left border\n Signatures padding 0 -- filter chips flush against both\n Chain padding 0 -- correct, the map is meant to be full bleed\n System 12px 9px 9px -- three different values, none of them a\n token, top too tight to read as intended\n\n Content that touches its own frame reads as a rendering fault, which is\n what it looked like. One inset, one token, every panel. */\n\n/* Explicit pixels, not var(--space-4). The root font-size here is 12px, not\n the 16px rem maths assumes, so every rem-based value lands 25% short of\n what it reads as -- var(--space-4) is \"1rem\" and resolves to 12px. Rather\n than redefine the scale under everything already tuned against it, the\n values that need to be a specific size are stated as that size. */\n.gridWidget > .content,\n#infoWidget > .content,\n#notesWidget > .content,\n#signaturesWidget > .content {\n\tpadding: 16px;\n\tbox-sizing: border-box;\n\toverflow: auto;\n\tmin-height: 0;\n}\n\n/* The map is the exception and stays edge to edge: it is a canvas that pans,\n and an inset would clip it rather than frame it. The breathing room goes\n inside the scroll area instead, so nodes never butt against the divider. */\n#chainWidget > .content { padding: 0; min-height: 0; overflow: hidden; }\n#chainParent { padding: var(--space-3); box-sizing: border-box; max-height: 100%; overflow: auto; }\n\n/* Rhythm between the blocks inside a panel, which previously had none. */\n#sigFilterBar { margin-bottom: var(--space-3); }\n.sys-panel > * + * { margin-top: var(--space-3); }\n#activityGraphControls { margin-top: var(--space-2); }\n\n/* ── 2. SPACE ALLOCATION ─────────────────────────────────────────────────\n Rows were fixed at 46vh regardless of what was in them. Measured fill:\n\n Notes 82% empty\n Signatures 48% empty\n System 3% empty (close to overflowing)\n Chain -60% (501px of map in a 312px box)\n\n Notes held a third of the screen for one line while the map -- the reason\n the tool exists -- was the only panel that could not fit its content. The\n top row gives some back and notes narrows, since it is the panel that\n demonstrably needs least. */\n/* The top row stays where it was. Taking 6vh off it to feed the chain made\n the System panel clip instead -- it needs 341px and 40vh gave it 320 -- and\n a panel you have to scroll to see the statics is a worse trade than a map\n that pans, which is what a map is for. The chain \"overflowing\" was my own\n mis-framing: a canvas sixteen screens wide is supposed to exceed its box.\n What was actually wrong with it was that it never scrolled to where you\n are, which is fixed in the renderer rather than here. */\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-columns: minmax(230px, 1fr) minmax(320px, 1.5fr) minmax(190px, 0.78fr);\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ── 3. TYPE SCALE ───────────────────────────────────────────────────────\n Footer 9.6px, body ~11px, panel titles 12px: three sizes inside three\n pixels, which reads as inconsistency rather than hierarchy. The footer was\n also simply too small to read, and it is the only place the server's\n player count and EVE time appear. */\n#statusbar { font-size: 11px; }\n#statusbar .bar-label { font-size: inherit; letter-spacing: .07em; opacity: .72; }\n#statusbar .bar-value { font-size: inherit; font-variant-numeric: tabular-nums; }\n\n/* ── 4. AVATAR ───────────────────────────────────────────────────────────\n The header was given room for a larger portrait and then never used it. */\n#topbar #user-avatar.avatar { width: 34px; height: 34px; }\n#topbar #login h3 { display: inline-flex; align-items: center; gap: var(--space-2); }\n\n/* ── 5. GRAPH AXIS ───────────────────────────────────────────────────────\n The chart borrowed --border for its gridlines and --muted-foreground for\n its numbers, and both pull the wrong way: a gridline sits *behind* the\n data and should be lighter than a panel border, while the numbers are\n values you read off the chart, not labels you skim. Dedicated tokens. */\n:root {\n\t--chart-gridline: rgba(255, 255, 255, .055);\n\t--chart-axis-text: #b7b7b7;\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--chart-gridline: rgba(0, 0, 0, .075);\n\t\t--chart-axis-text: #4a4a4a;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--chart-gridline: rgba(0, 0, 0, .075);\n\t--chart-axis-text: #4a4a4a;\n}\n\n/* ── 6. EMPTY STATES ─────────────────────────────────────────────────────\n An empty box is indistinguishable from a broken one. Both of these are\n normal states -- a system nobody has annotated, a system whose hourly\n activity has not accumulated yet -- and should say so. */\n#comment-container:not(:has(.comment:not(.hidden)))::before,\n#activityGraph.is-empty::before {\n\tcontent: attr(data-empty);\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n/* :empty could never match -- the container always holds the hidden template\n row -- so the empty state never showed. :has() asks the real question. */\n#comment-container:not(:has(.comment:not(.hidden)))::before { content: \"No notes on this system yet.\"; }\n#activityGraph.is-empty { height: auto; min-height: 0; }\n\n/* ── 7. GATE CHIPS ───────────────────────────────────────────────────────\n Was \"Ikuchi ( HS )\" per gate, six of them wrapping to three rows. The\n brackets are noise and the security repeats as text what colour already\n says. Name plus a security badge, on one or two rows instead of three. */\n.gate-list { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }\n.gate-list-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: 10px;\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n}\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-1) 2px var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: 11px;\n\tline-height: 1.6;\n\ttext-decoration: none;\n}\n.gate-chip:hover { background: var(--accent); }\n.gate-chip .gate-sec {\n\tpadding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\tfont-size: 9px;\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n/* The badge paints the security colour as its ground; the letters knock out\n of it. currentColor above is the security class colour inherited from the\n named-colour mapping, so the fill stays correct in both themes. */\n.gate-chip .gate-sec::after { content: none; }\n.gate-chip .gate-sec { -webkit-text-fill-color: var(--card); }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* ── 8. SIGNATURE COLUMNS ────────────────────────────────────────────────\n Leads To held 168px against 66-84px for everything else, with slack left\n over; life and mass were cramped for no reason while the id column had\n room to spare. */\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.25rem; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6.5rem; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.25rem; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 5rem; }\n\n\n/* ── 9. THE NOTES OVERLAP ────────────────────────────────────────────────\n Not a spacing problem -- the two lines were drawn on top of each other.\n\n .commentToolbar contains a floated .commentTitle. Nothing contained the\n float, so the toolbar collapsed to 26px while the title's two lines ran\n 67px, and .commentBody was laid out from the collapsed height: body at\n y=130 with the title still painting to y=172. Measured, not inferred.\n\n The float dates from a layout that no longer exists. Flex row, and the\n toolbar is the height of its contents. */\n.comment {\n\tpadding: var(--space-2) 0;\n\tborder-bottom: 1px solid var(--border);\n}\n.comment:last-child { border-bottom: 0; }\n\n.commentToolbar {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: space-between;\n\tgap: var(--space-3);\n\tmargin-bottom: 6px;\n}\n.commentToolbar > .commentTitle,\n.commentToolbar > .commentControls {\n\tfloat: none;\n\tmin-width: 0;\n}\n.commentTitle {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1px;\n\tflex: 1 1 auto;\n}\n.commentTitle .commentModified,\n.commentTitle .commentCreated {\n\tdisplay: block;\n\tfont-size: 10px;\n\tline-height: 1.35;\n\tcolor: var(--muted-foreground);\n}\n.commentControls {\n\tdisplay: flex;\n\tgap: var(--space-2);\n\tflex: 0 0 auto;\n\tfont-size: 11px;\n}\n.commentBody { font-size: 12px; line-height: 1.5; }\n.commentBody > *:first-child { margin-top: 0; }\n.commentBody > *:last-child { margin-bottom: 0; }\n\n/* ── 10. THE SYSTEM PANEL IS A FLEX COLUMN ───────────────────────────────\n Which means every block in it is a flex item, and flex items shrink to\n fit by default. In a column that scrolls, nothing should: the whole point\n of the scroll is that content keeps its size and the viewport moves.\n\n The activity graph is where this showed. Computed height 0px around a\n 92px chart SVG, with overflow hidden -- so what rendered was the 8px of\n padding and nothing else, a blank band where the graph should be. Two\n things were doing it at once: the flex shrink above, and a leftover\n `height: 84px !important` clamp from the earlier attempt at sparse\n sizing, which I had described as removed and had not been. The chart\n sizes itself now (activity-graph.js sets options.height), so the\n container must simply take the height it is given. */\n.sys-panel > * { flex: 0 0 auto; }\n\n#activityGraph,\n#activityGraph.is-sparse,\n#activityGraph.is-empty {\n\theight: auto !important;\n\tmin-height: 0;\n\topacity: 1;\n}\n","/* ============================================================================\n READ BAND CHROME (phones, landscape phones)\n\n The layout bands in _override-5 put the panels back in flow; this file is\n the chrome that goes with it. Sorted after every other override so the\n phone wins its own argument -- the header and control-bar rules in\n _override-a/b/c were written for desktop widths and used to apply here too.\n\n Measured before writing: header 125px tall for one row of controls; chain\n panel bar 460px wide in a 375px viewport, with close/edit tab icons and the\n panel-hide control off the right edge.\n ========================================================================= */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t/* One row: avatar, name, corp, settings. The wordmark is redundant next to\n\t the wing mark on a screen this size, and the search field lives in the\n\t palette. */\n\t#topbar {\n\t\tmin-height: 0;\n\t\theight: auto;\n\t\tpadding: 8px 12px;\n\t\tgap: 8px;\n\t}\n\t#topbar { display: flex; min-height: 0; }\n\t#topbar > .align-left { display: flex; flex: 1 1 auto; }\n\t#topbar > .align-left #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-center { display: none; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar .hdr-tools { padding-left: 8px; }\n\t#topbar > .align-right {\n\t\tflex: 1 1 auto;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 12px;\n\t}\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar h3 { margin: 0; font-size: 13px; }\n\n\t.gridster { padding: 12px; }\n\n\t/* Control bars wrap rather than overflow, and the map's editing chrome is\n\t desktop and tablet work -- a phone reads the chain. */\n\t.gridWidget > .controls { flex-wrap: wrap; row-gap: 4px; }\n\t#chainWidget > .controls > div[style*=\"float\"] > i:not(.panel-hide),\n\t#chainWidget > .controls > .control,\n\t#chainWidget > .controls #newTab,\n\t.chainTab .closeTab,\n\t.chainTab .editTab,\n\t#chainTabs .closeTab,\n\t#chainTabs .editTab { display: none !important; }\n\t#chainTabs { flex: 1 1 100%; min-width: 0; order: 2; }\n\n\t/* Google Charts paginates the legend at this width (\"1/2\"). Two rows of\n\t legend beats a pager nobody expected. */\n\t#activityGraph svg > g:first-of-type { }\n}\n\n/* Phone bars: the right-hand group takes its own row rather than being pushed\n past the edge, and the paste control is desktop/tablet work like the rest\n of the editing chrome. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.gridWidget > .controls > .bar-right { flex: 1 1 100%; margin-left: 0; justify-content: flex-end; }\n\t#signaturesWidget #paste-signatures,\n\t#signaturesWidget .bar-sep { display: none !important; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Every control in this group is editing chrome that the READ band hides\n\t individually; the empty group was still taking a row of its own. */\n\t#signaturesWidget > .controls > .bar-right,\n\t#notesWidget > .controls > .bar-right { display: none; }\n}\n\n/* ── Second look at the READ band, from screenshots ─────────────────────\n The header spread name / corp / settings across the full width with\n nothing between them; the panel bars' right-hand group was forced onto\n its own row, which left the hide control alone on a third; and the chain\n bar showed five map icons before the tabs. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-right { justify-content: flex-start; gap: 14px; }\n\t#topbar > .align-right > #settings,\n\t#topbar > .align-right > i#settings { margin-left: auto; }\n\t#topbar > .align-right > #layout { display: none; }\n\n\t.gridWidget > .controls > .bar-right { flex: 0 0 auto; margin-left: auto; }\n\t.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: var(--space-1); }\n\n\t#chainWidget > .controls > #show-viewing,\n\t#chainWidget > .controls > #show-favorite,\n\t#chainWidget > .controls > #show-chainLegend,\n\t#chainWidget > .controls > #hot-jump,\n\t#chainWidget > .controls > #higgs-jump,\n\t#chainWidget > .controls > .bar-sep { display: none !important; }\n\t#chainTabs { order: 0; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Life and mass cells are hidden here, and they were carrying the row's\n\t hover and selected background -- so a wormhole row's highlight stopped\n\t two columns short. Paint the row instead. */\n\t#sigTable tbody tr:hover, #sigTable tbody tr.selected { background-color: var(--muted); }\n\t#sigTable tbody tr:hover > td, #sigTable tbody tr.selected > td { background-color: transparent; }\n}\n","/* ============================================================================\n THE SCALE\n\n Measured on the main screen at 1920x1080: fourteen font sizes, seven border\n radii, nine control heights, eight icon sizes. Almost none of it chosen --\n the tokens were written in rem against a 12px root, so \"0.8rem\" rendered\n at 9.6px and \"0.76rem\" at 9.12px, and every component that reached for a\n size got a slightly different one.\n\n Six sizes, in pixels, and every token that feeds a size resolves to one of\n them. Anything below 11px is not for reading.\n ========================================================================= */\n\n:root {\n\t--fs-xs: 11px;\n\t--fs-sm: 12px;\n\t--fs-base: 13px;\n\t--fs-md: 15px;\n\t--fs-lg: 18px;\n\t--fs-xl: 24px;\n\n\t/* Two radii and a pill. Inputs and chips at 4, cards and dialogs at 8. */\n\t--radius: 8px;\n\t--radius-md: 8px;\n\t--radius-sm: 4px;\n\n\t/* Two control heights: dense (bars, rows, chips) and standard (dialog\n\t inputs, primary buttons). Coarse pointers raise the floor to 44 in\n\t _override-5-responsive.css. */\n\t--control-dense: 28px;\n\t--control-standard: 36px;\n\n\t/* One icon size inline and in bars; one in the header. */\n\t--icon: 16px;\n\t--icon-lg: 20px;\n}\n\nbody { font-size: var(--fs-base); }\n\n/* Icons take the token, not whatever size their parent happened to be. */\n[data-icon]::before { font-size: var(--icon); line-height: 1; }\n#topbar [data-icon]::before { font-size: var(--icon-lg); }\n\n/* Dialog inputs and buttons at the standard height; the bars stay dense. */\n.ui-dialog input[type=\"text\"], .ui-dialog input[type=\"password\"],\n.ui-dialog input[type=\"number\"], .ui-dialog select,\n.ui-dialog .ui-selectmenu-button {\n\tmin-height: var(--control-standard);\n\tbox-sizing: border-box;\n}\n.ui-dialog-buttonpane button { min-height: var(--control-standard); }\n\n/* ============================================================================\n LIGHT THEME SURFACES\n\n The light theme flipped cleanly but had no depth: body and card were both\n oklch(1 0 0), pure white on pure white, with a 1px border doing all the\n work. The dark theme gets its hierarchy from the card being lighter than\n the ground; the light theme gets the same from the ground being warmer\n than the card. Same three-state structure as _override-1-system.css.\n ========================================================================= */\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(0.962 0.006 80);\n\t\t--card: oklch(1 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--muted: oklch(0.955 0.005 80);\n\t\t--accent-surface: oklch(0.955 0.005 80);\n\t\t--border: oklch(0.90 0.006 80);\n\t\t--border-strong: oklch(0.82 0.008 80);\n\t\t--input: oklch(0.90 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(0.962 0.006 80);\n\t--card: oklch(1 0 0);\n\t--popover: oklch(1 0 0);\n\t--muted: oklch(0.955 0.005 80);\n\t--accent-surface: oklch(0.955 0.005 80);\n\t--border: oklch(0.90 0.006 80);\n\t--border-strong: oklch(0.82 0.008 80);\n\t--input: oklch(0.90 0.006 80);\n}\n\n/* ============================================================================\n SYSTEM PANEL ALIGNMENT\n\n Name, security, gates and routes were left-aligned; the graph legend, the\n range chips and the external links were centred. Two alignment systems in\n one 300px column, switching at the graph. One system.\n ========================================================================= */\n\n#activityGraphControls,\n.sys-range,\n#infoLinks,\n.sys-links {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tgap: var(--space-2);\n\ttext-align: left;\n}\n#infoLinks { border-top: 0; padding-top: 0; }\n#infoLinks a, .sys-links a { padding: 0; }\n\n/* ============================================================================\n NOTES, CONTENT FIRST\n\n \"Posted by Cormorant Fell at 2026-09-01 03:16:48\" was the first line of\n every note and the note itself came second. The reader wants the note.\n Author and time become one muted line beneath it; edit controls appear on\n hover or focus rather than sitting on every note permanently.\n ========================================================================= */\n\n/* :not(.hidden) matters. A bare .comment rule outranked .hidden's display:none\n (same specificity, later in the cascade), which made the hidden template\n row *visible* -- and systemChange.js removes every `.comment:visible` on a\n system change. That deleted the template, parse() had nothing to clone,\n and no note rendered anywhere. Measured: 0 comments in the DOM with 1 in\n the payload, and no template. */\n.comment:not(.hidden) { display: flex; flex-direction: column; }\n.comment.hidden { display: none !important; }\n.comment > .commentBody { order: 1; }\n.comment > .commentToolbar { order: 2; margin: 6px 0 0; }\n.comment > .commentFooter { order: 3; }\n\n.commentTitle { flex-direction: row; flex-wrap: wrap; gap: 0 var(--space-2); align-items: baseline; }\n.commentTitle .commentCreated,\n.commentTitle .commentModified { font-size: var(--fs-xs); }\n.commentTitle .commentModified.is-same { display: none; }\n\n.comment .commentControls { opacity: 0; transition: opacity .12s ease; }\n.comment:hover .commentControls,\n.comment:focus-within .commentControls { opacity: 1; }\n@media (pointer: coarse) { .comment .commentControls { opacity: 1; } }\n\n/* ============================================================================\n PHONE, LEFTOVERS FROM _override-d\n The chain tab strip scrolls internally -- its children past the edge are\n expected -- but the panel-hide control was being pushed off with them.\n Hiding the chain on a phone is not a thing anyone does.\n ========================================================================= */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainWidget > .controls .panel-hide { display: none !important; }\n\t#chainTabs { flex: 1 1 auto; max-width: 100%; }\n}\n\n/* ============================================================================\n THE HOLDOUTS, MEASURED AFTER THE FIRST PASS\n Twelve sizes remained. Each of these was an em-relative size on a\n component that never reached for a token.\n ========================================================================= */\n.sig-chip, .sig-filter .sig-chip { font-size: var(--fs-xs); }\n#topbar h3, #topbar h3 a, #EVEsystem,\n#topbar #mask, #topbar #user-track-name { font-size: var(--fs-base); }\n#topbar #logo a { font-size: var(--fs-xl); }\n.sys-meta, #infoSecurity, .sys-meta .chip { font-size: var(--fs-sm); }\n.gate-chip .gate-sec { font-size: var(--fs-xs); height: 15px; padding: 0 5px; }\nkbd { font-size: var(--fs-xs); }\n.node .nodeClass, .node .nodeType { font-size: var(--fs-xs); }\n\n/* Heights: chips at 22, bars and header controls at 28, dialogs at 36.\n bar-btn measured 30 because the height was content-box plus its border. */\n.controls .bar-btn { box-sizing: border-box; height: var(--control-dense); }\n.sig-chip, .gate-chip, h4.chip, .chip {\n\tbox-sizing: border-box;\n\theight: 22px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding-top: 0; padding-bottom: 0;\n}\n#topbar > .align-right > i[data-icon],\n#topbar #search, #topbar #follow {\n\tbox-sizing: border-box;\n\theight: var(--control-dense);\n\tmin-width: var(--control-dense);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: var(--radius-sm);\n}\n#topbar > .align-right > i[data-icon]:hover { background: var(--muted); }\n\n/* ── Graph legend as chips, in the controls row ──────────────────────── */\n#activityGraphControls { justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-3); }\n#activityLegend { display: inline-flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }\n#activityLegend .legend-chip {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 22px; padding: 0 8px 0 6px;\n\tborder: 1px solid transparent; border-radius: 999px;\n\tbackground: transparent; color: var(--foreground);\n\tfont-size: var(--fs-xs); font-weight: 500; cursor: pointer;\n}\n#activityLegend .legend-chip:hover { background: var(--muted); border-color: var(--border); }\n#activityLegend .legend-chip .swatch { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }\n#activityLegend .legend-chip.off { color: var(--muted-foreground); }\n#activityLegend .legend-chip.off .swatch { opacity: .3; }\n#activityGraphControls > a { margin-left: 0; }\n/* space-between was distributing the three range links across the row along\n with the legend; the legend takes the slack and the ranges stay a group. */\n#activityGraphControls { justify-content: flex-start; }\n#activityLegend { margin-right: auto; }\n","/* ============================================================================\n ONE DIALOG\n\n Every real workflow -- add, edit, settings, ping, confirm -- runs through a\n jQuery UI dialog, and jQuery UI's structure showed through the restyle:\n its titlebar, its button pane as a separate strip, buttons in whatever\n order the config object listed them. The panels are the branch's; the\n dialogs were the library's. This makes the dialog the same object as the\n command palette: one surface, one radius, a header with a title and one\n close, a body, and a footer with the primary action filled and on the\n right, the quiet action beside it, the destructive one alone on the left.\n\n jQuery UI stays underneath for positioning and focus. Only the skin and\n the button roles change; dialog-polish.js assigns the roles.\n ========================================================================= */\n\n.ui-dialog {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45);\n\tpadding: 0;\n\tmax-width: min(94vw, 720px);\n\toverflow: hidden;\n}\n.ui-dialog-shadow { box-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45); }\n\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: var(--space-3) var(--space-4);\n\tmin-height: var(--control-standard);\n\tbackground: transparent;\n\tborder-bottom: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tletter-spacing: .1em;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tfont-size: var(--fs-base);\n\tline-height: 1.5;\n}\n\n/* ---- footer ---------------------------------------------------------- */\n.ui-dialog .ui-dialog-buttonpane {\n\tpadding: var(--space-3) var(--space-4);\n\tborder-top: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tgap: var(--space-2);\n\tfloat: none;\n\twidth: 100%;\n}\n.ui-dialog-buttonpane button {\n\torder: 2;\n\tmargin: 0;\n\tpadding: 0 var(--space-4);\n\tmin-height: var(--control-standard);\n\tborder-radius: var(--radius-sm);\n\tfont-size: var(--fs-base);\n\tfont-weight: 500;\n}\n/* Quiet: cancel, close, and the \"reset\" style choices that are not destructive. */\n.ui-dialog-buttonpane button.is-quiet {\n\torder: 1;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-quiet:hover {\n\tborder-color: transparent;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n}\n/* Primary: filled, last. */\n.ui-dialog-buttonpane button.is-primary {\n\torder: 3;\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 88%, white);\n\tcolor: var(--primary-foreground);\n}\n/* Destructive: alone on the left, red only when approached. */\n.ui-dialog-buttonpane button.is-destructive {\n\torder: 0;\n\tmargin-right: auto;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground: transparent;\n}\n.ui-dialog-buttonpane button[disabled],\n.ui-dialog-buttonpane button.ui-state-disabled { opacity: .45; pointer-events: none; }\n\n/* Modal scrim, one value. */\n.ui-widget-overlay { background: rgba(0,0,0,.55); opacity: 1; }\n\n/* ============================================================================\n FORM ROWS INSIDE DIALOGS\n The palette's row is the dialog's row: label left in a quiet weight,\n control right, one vertical rhythm.\n ========================================================================= */\n\n.settings { display: flex; flex-direction: column; gap: 0; }\n\n.settings-tabs {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tmargin: calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) var(--space-4);\n\tpadding: 0 var(--space-4);\n\tborder-bottom: 1px solid var(--border);\n}\n.settings-tabs [role=\"tab\"] {\n\tborder: 0;\n\tborder-bottom: 2px solid transparent;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tpadding: var(--space-3) var(--space-2);\n\tmargin-bottom: -1px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n}\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); background: transparent; }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] {\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n}\n\n.settings-pane { display: flex; flex-direction: column; gap: var(--space-2); min-height: 300px; }\n.settings-pane[hidden] { display: none; }\n\n.field {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto;\n\talign-items: center;\n\tgap: var(--space-3);\n\tmin-height: var(--control-standard);\n\tpadding: var(--space-1) 0;\n}\n.field.field-block { grid-template-columns: 1fr; align-items: start; }\n.field-label { color: var(--foreground); font-size: var(--fs-base); }\n.field-label small { display: block; color: var(--muted-foreground); font-size: var(--fs-xs); margin-top: 1px; }\n.field-value { color: var(--foreground); font-variant-numeric: tabular-nums; }\n.field-inline { display: inline-flex; align-items: center; gap: var(--space-2); }\n.field-inline input[type=\"text\"] { width: 12rem; }\n.field-actions { display: flex; gap: var(--space-2); justify-content: flex-end; padding-top: var(--space-3); }\n.field-group {\n\tmargin: var(--space-4) 0 var(--space-1);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.field select, .field input[type=\"text\"] { min-width: 14rem; }\n\n/* ---- switch: the one idiom for a boolean ----------------------------- */\n.switch { position: relative; display: inline-block; width: 38px; height: 22px; cursor: pointer; }\n.switch input { position: absolute; opacity: 0; width: 0; height: 0; }\n.switch-track {\n\tposition: absolute; inset: 0;\n\tborder-radius: 999px;\n\tbackground: var(--input);\n\ttransition: background .15s ease;\n}\n.switch-track::after {\n\tcontent: \"\";\n\tposition: absolute; top: 3px; left: 3px;\n\twidth: 16px; height: 16px;\n\tborder-radius: 50%;\n\tbackground: var(--foreground);\n\ttransition: transform .15s ease;\n}\n.switch input:checked + .switch-track { background: var(--primary); }\n.switch input:checked + .switch-track::after { transform: translateX(16px); background: var(--primary-foreground); }\n.switch input:focus-visible + .switch-track { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n/* ---- segmented: two to four options ---------------------------------- */\n.segmented { display: inline-flex; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }\n.segmented input { position: absolute; opacity: 0; pointer-events: none; }\n.segmented label {\n\tpadding: 0 var(--space-3);\n\tmin-height: calc(var(--control-standard) - 8px);\n\tdisplay: inline-flex; align-items: center;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tborder-right: 1px solid var(--border);\n}\n.segmented label:last-of-type { border-right: 0; }\n.segmented input:checked + label { background: var(--muted); color: var(--foreground); }\n.segmented input:focus-visible + label { outline: 2px solid var(--ring); outline-offset: -2px; }\n\n/* ---- slider: jQuery UI's, skinned ------------------------------------ */\n.slider-wrap { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 14rem; }\n.slider-pair { flex-direction: column; align-items: stretch; gap: var(--space-1); }\n.slider-pair > span { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); color: var(--muted-foreground); }\n.slider-wrap .ui-slider { flex: 1 1 auto; height: 4px; border: 0; background: var(--input); border-radius: 999px; margin: 0; }\n.slider-wrap .ui-slider .ui-slider-handle {\n\ttop: -6px; width: 16px; height: 16px; margin-left: -8px;\n\tborder-radius: 50%; border: 0; background: var(--foreground); cursor: pointer;\n}\n.slider-wrap .ui-slider .ui-slider-handle:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n.slider-value { min-width: 2.5em; text-align: right; font-variant-numeric: tabular-nums; color: var(--muted-foreground); font-size: var(--fs-sm); }\n#dialog-options div.ui-slider { width: auto; }\n\n/* ---- statistics ------------------------------------------------------ */\n.stats { display: grid; grid-template-columns: 1fr auto; gap: var(--space-2) var(--space-4); margin: 0; }\n.stats dt { color: var(--muted-foreground); }\n.stats dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n ADD SIGNATURE: THE WORMHOLE HALF IS A SECOND STEP, NOT A REVEAL\n ========================================================================= */\n#dialog-signature #wormhole { margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px solid var(--border); }\n#dialog-signature #wormhole::before {\n\tcontent: \"Wormhole\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature #wormhole > hr { display: none; }\n#dialog-signature #wormhole .side + .side { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px dashed var(--border); }\n#dialog-signature #wormhole .side + .side::before {\n\tcontent: \"Other side\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- characters on the Account tab ------------------------------------ */\n#characters { display: flex; flex-direction: column; gap: var(--space-2); width: 100%; margin-top: var(--space-2); }\n.char-row {\n\tdisplay: flex; align-items: center; gap: var(--space-3);\n\tpadding: var(--space-2) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: var(--card);\n}\n.char-row.is-active { border-color: color-mix(in oklab, var(--primary) 55%, var(--border)); }\n.char-portrait { width: 40px; height: 40px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; flex: 0 0 auto; }\n.char-meta { flex: 1 1 auto; min-width: 0; }\n.char-name { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--foreground); letter-spacing: .04em; }\n.char-note { font-size: var(--fs-xs); color: var(--muted-foreground); margin-top: 2px; }\n.char-actions { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; }\n.char-btn {\n\theight: var(--control-dense); padding: 0 var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: transparent; color: var(--foreground); font-size: var(--fs-sm);\n}\n.char-btn:hover { background: var(--muted); border-color: var(--border-strong); }\n.char-btn.is-destructive { border-color: transparent; color: var(--muted-foreground); }\n.char-btn.is-destructive:hover { border-color: var(--destructive); color: var(--destructive); background: transparent; }\n.char-badge {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--primary); padding: 0 var(--space-2);\n}\n.field-actions input.is-primary { background: var(--primary); border-color: var(--primary); color: var(--primary-foreground); margin-right: auto; }\n.field-actions input.is-primary:hover { background: color-mix(in oklab, var(--primary) 85%, white); border-color: transparent; color: var(--primary-foreground); }\n\n/* ---- panels on the Display tab ---------------------------------------- */\n#panel-settings { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; margin-top: var(--space-2); }\n.panel-row {\n\tdisplay: flex; align-items: center; justify-content: space-between; gap: var(--space-3);\n\tpadding: var(--space-1) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card);\n\tmin-height: var(--control-standard);\n}\n.panel-row-name { color: var(--foreground); }\n.panel-row-actions { display: flex; align-items: center; gap: var(--space-2); }\n.panel-row-actions .char-btn { padding: 0 var(--space-2); font-size: 10px; }\n.panel-row-actions .char-btn[disabled] { opacity: .3; pointer-events: none; }\n","/* ============================================================================\n PANEL BARS WITH WORDS ON THEM\n\n Twenty-five unlabelled icons across four bars, sixty-eight hover tooltips\n to explain them. Hover does not exist on a tablet, which is the device\n this branch was meant to make editing work on.\n\n Primary actions get a word. Secondary actions stay as icons but sit in a\n right-hand group with a real gap, and state toggles (hot, higgs) show\n their state. The elements are the same tags the JavaScript has always\n bound to; only a class and a label span were added, so nothing rebinds.\n ========================================================================= */\n\n.gridWidget > .controls { gap: var(--space-1); }\n\n.controls .bar-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\theight: var(--control-dense);\n\tpadding: 0 10px;\n\tmargin: 0;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tfont-style: normal;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tline-height: 1;\n\tcolor: var(--foreground);\n\tcursor: pointer;\n\twhite-space: nowrap;\n\ttransition: background-color .12s ease, border-color .12s ease;\n}\n.controls .bar-btn::before { font-size: var(--icon); }\n.controls .bar-btn:hover { background: var(--muted); border-color: var(--border); color: var(--foreground); }\n.controls .bar-btn.bar-icon { padding: 0 6px; }\n.controls .bar-btn.bar-icon:not([data-icon]) { font-weight: 600; }\n\n.controls .bar-btn.bar-primary { background: var(--primary); color: var(--primary-foreground); }\n.controls .bar-btn.bar-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: transparent;\n\tcolor: var(--primary-foreground);\n}\n\n.controls .bar-btn.disabled { opacity: .4; pointer-events: none; }\n\n/* A toggle that is on says so with the accent, not by hover. */\n.controls .bar-btn.bar-toggle.active,\n.controls .bar-btn.bar-toggle.on,\n.controls .bar-btn.bar-toggle[data-active=\"true\"] { color: var(--primary); background: color-mix(in oklab, var(--primary) 14%, transparent); }\n\n.controls .bar-btn kbd {\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: 1px 4px;\n\tline-height: 1;\n}\n\n.controls .bar-sep { width: 1px; height: 16px; background: var(--border); margin: 0 var(--space-1); }\n\n.gridWidget > .controls > .bar-right {\n\tmargin-left: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tfloat: none;\n}\n/* The hide control sits after the right group. */\n.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: 0; }\n\n/* The signature count belongs with the title, as a chip. */\n.controls .bar-count {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 18px;\n\tpadding: 0 7px;\n\tmargin-right: var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--muted-foreground);\n\tfont-style: normal;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tfont-variant-numeric: tabular-nums;\n\tcursor: default;\n}\n\n/* Labels give way before icons do. */\n@media (max-width: 1439px) {\n\t#signaturesWidget .bar-btn:not(.bar-primary) .bar-label,\n\t#infoWidget .bar-btn .bar-label { display: none; }\n\t#signaturesWidget .bar-btn:not(.bar-primary):not(.bar-icon) { padding: 0 6px; }\n}\n\n/* The bar inherits the panel title's uppercase and letter-spacing; a button\n label is a word, not a heading. And a bar button is its own width -- the\n notes bar was stretching \"Add note\" across the whole panel because the\n bar's children default to flex: 1 there. */\n.controls .bar-btn { text-transform: none; letter-spacing: 0; flex: 0 0 auto; }\n.controls .bar-btn kbd { border-radius: var(--radius-sm); }\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) { border-radius: var(--radius-sm); }\n/* The label span inherits the bar's uppercase from a more specific rule than\n .bar-btn can beat; set it on the span itself. */\n.gridWidget > .controls .bar-btn > .bar-label { text-transform: none; letter-spacing: 0; font-size: var(--fs-sm); }\n/* The label takes the button's colour, whatever rule the bar had for spans. */\n.gridWidget > .controls .bar-btn > .bar-label { color: inherit; -webkit-text-fill-color: currentColor; }\n/* .bar-btn's display was beating .hidden's; a hidden button is hidden. */\n.controls .bar-btn.hidden { display: none !important; }\n","/* ============================================================================\n CHAIN NODES AS CARDS\n\n A node was a class label, a name and a row of four-pixel dots, floating on\n the canvas with a thin border. The map is the product and it was the least\n designed surface on the screen: nothing said a node was a thing you could\n drag, collapse or open, and at a big corp's density -- sixteen screen widths\n of systems -- small unbounded labels become a wall of text.\n\n A card: fixed width, a definite ground, the security class as a chip in\n the corner rather than a heading, statics as chips inside the card rather\n than tabs hanging below it, activity pips in the footer. The markup in\n chain-map.js is untouched; the renderer measures nothing from the DOM for\n its ring maths (minArc comes from the data), so a slightly larger node\n only needs the spacing factor to breathe, which is a setting.\n ========================================================================= */\n\n#chainMap div.node {\n\tbox-sizing: border-box;\n\twidth: 128px;\n\tmin-height: 56px;\n\tpadding: 6px 8px 8px;\n\tborder-radius: var(--radius);\n\tborder: 1px solid var(--border);\n\tbackground-color: var(--card);\n\ttext-align: left;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tcursor: grab;\n}\n#chainMap div.node:active { cursor: grabbing; }\n\n/* Class chip, top-left. The h4 was a heading; it is a label. */\n#chainMap div.node > h4.nodeClass {\n\torder: 1;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .04em;\n\tline-height: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n#chainMap div.node > h4.nodeClass > span {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 16px;\n\tpadding: 0 6px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: var(--card);\n\tcolor: inherit;\n}\n\n/* System name, the reading line. */\n#chainMap div.node > h4.nodeSystem {\n\torder: 2;\n\tmargin: 0;\n\tfont-size: var(--fs-base);\n\tfont-weight: 600;\n\tline-height: 1.2;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground); text-decoration: none; }\n#chainMap div.node > h4.nodeSystem a:hover { color: var(--primary); }\n\n/* Wormhole type / signature, quiet. */\n#chainMap div.node > h4.nodeType {\n\torder: 3;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\ttext-transform: none;\n\tletter-spacing: 0;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmin-height: 1em;\n}\n\n/* Statics: inside the card as chips, not tabs hanging off the bottom. */\n#chainMap div.node > .statics {\n\torder: 4;\n\tposition: static;\n\tdisplay: flex;\n\tgap: 3px;\n\tmargin-top: 2px;\n\tmin-height: 0;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: auto;\n\tmin-width: 16px;\n\theight: 14px;\n\tpadding: 0 4px;\n\tmargin: 0;\n\tborder: 0;\n\tborder-radius: 3px;\n\tbackground: color-mix(in oklab, currentColor 22%, transparent);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tline-height: 1;\n}\n#chainMap div.node > .statics .multi-static { color: var(--muted-foreground); }\n\n/* Activity pips: footer, right. */\n#chainMap div.node > .nodeActivity {\n\torder: 5;\n\tposition: absolute;\n\tright: 8px;\n\tbottom: 6px;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 3px;\n\tfont-size: 9px;\n\tline-height: 1;\n}\n#chainMap div.node > .nodeActivity .invisible { display: none; }\n\n/* Effect / occupant icons: top-right. */\n#chainMap div.node > .nodeIcons {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 6px;\n\tleft: auto;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 4px;\n\tfont-size: var(--fs-xs);\n}\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; gap: 4px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge {\n\tdisplay: inline-flex; align-items: center;\n\theight: 14px; padding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: var(--primary); color: var(--primary-foreground);\n\tfont-size: 10px; font-weight: 700;\n}\n\n/* The one you are in stays unmistakable; the class tint stays as a ground. */\n#chainMap .currentNode > div.node { box-shadow: 0 0 0 2px var(--primary); border-color: var(--primary); }\n#chainMap div.node:hover { border-color: var(--border-strong); box-shadow: 0 2px 10px rgba(0,0,0,.35); }\n\n/* Collapsed / loop nodes keep the card shape at a reduced height. */\n#chainMap div.loop { width: 128px; min-height: 0; padding: 6px 8px; border-radius: var(--radius); }\n/* The name link was still taking a fixed grey from a more specific legacy\n rule (measured oklch(0.8 0 0) in both themes -- invisible on a white card). */\n#chainMap div.node > h4.nodeSystem,\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground) !important; }\n\n/* The base stylesheet gives div.node a fixed height. As a flex column that\n meant every child shrank to fit -- measured: the name heading at 3px with\n overflow hidden around a 19px link, which rendered as a dark smudge where\n the system name should be. The card takes the height of its contents and\n nothing inside it shrinks. */\n#chainMap div.node { height: auto !important; max-height: none !important; }\n#chainMap div.node > * { flex: 0 0 auto; }\n#chainMap div.node > h4.nodeSystem { height: auto; line-height: 1.25; }\n\n/* ============================================================================\n RAISED CARDS, CAPSULE STATICS\n\n The card ground was the same value as the panel behind it -- var(--card)\n on a panel that is var(--card) at 88% -- so a node read as a faint outline\n on the dark canvas rather than a thing sitting on it. The card is now a\n raised surface a clear step lighter than the canvas, with a stronger edge.\n\n Statics were tiny half-tab glyphs hanging under the node. They are the\n information you scan a chain for, so they become filled capsules in the\n security colour, straddling the card's bottom edge -- half on the card,\n half below it -- with a ring in the card colour so they read as cut into\n the edge rather than stuck on it.\n ========================================================================= */\n\n:root {\n\t--node-surface: color-mix(in oklab, var(--card) 82%, var(--foreground) 18%);\n\t--node-edge: color-mix(in oklab, var(--border-strong) 70%, var(--foreground) 30%);\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--node-surface: oklch(1 0 0);\n\t\t--node-edge: oklch(0.78 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--node-surface: oklch(1 0 0);\n\t--node-edge: oklch(0.78 0.006 80);\n}\n\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node {\n\tbackground-color: var(--node-surface);\n\tborder-color: var(--node-edge);\n\tbox-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 4px 14px rgba(0,0,0,.45);\n\toverflow: visible;\n\tpadding-bottom: 12px; /* room above the straddling capsules */\n\tmargin-bottom: 8px; /* room below them before the next ring */\n}\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 18%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 18%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 18%, var(--node-surface)); }\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 16%, var(--node-surface));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 2px var(--primary), 0 4px 14px rgba(0,0,0,.45);\n}\n\n/* Capsules on the edge. */\n#chainMap div.node > .statics {\n\tposition: absolute;\n\tleft: 8px;\n\tright: 8px;\n\tbottom: 0;\n\ttransform: translateY(50%);\n\tmargin: 0;\n\tgap: 4px;\n\tz-index: 2;\n\tpointer-events: auto;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\theight: 18px;\n\tmin-width: 22px;\n\tpadding: 0 7px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: #fff;\n\tbox-shadow: 0 0 0 2px var(--node-surface);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n#chainMap div.node > .statics .multi-static { background: var(--muted-foreground); }\n\n/* Pips move up beside the name so they never sit under a capsule. */\n#chainMap div.node > .nodeActivity { top: 26px; right: 8px; bottom: auto; }\n#chainMap div.node > h4.nodeSystem { padding-right: 38px; }\n/* \"Dark Venture\" was ellipsising: 128px minus padding minus the 38px held\n for the activity pips left ~70px for the name. A little wider, and the\n pips reserve only what two dots need. */\n#chainMap div.node, #chainMap div.loop { width: 144px; }\n#chainMap div.node > h4.nodeSystem { padding-right: 26px; }\n#chainMap div.node > .nodeActivity { top: 27px; right: 8px; gap: 3px; }\n\n/* Height budget. Three systems in a straight line filled the chain panel and\n forced a scrollbar at 900px tall; a card is two lines and a chip row, and\n should cost about 60px, not 90. */\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node { padding: 5px 8px 9px; min-height: 0; gap: 1px; margin-bottom: 6px; }\n#chainMap div.node > h4.nodeSystem { line-height: 1.15; }\n#chainMap div.node > h4.nodeType:empty, #chainMap div.node > h4.nodeType { min-height: 0; }\n#chainMap div.node > h4.nodeClass > span { height: 15px; }\n#chainMap div.node > .nodeActivity { top: 24px; }\n","/* ============================================================================\n INLINE LIFE / MASS\n The two cells read as editable on approach, and the chooser is the same\n surface as the palette: popover ground, one radius, filled chips in the\n data colours the rest of the app uses for these states.\n ========================================================================= */\n\n#sigTable td.inline-editable { cursor: pointer; position: relative; }\n#sigTable td.inline-editable:hover { color: var(--foreground); text-decoration: underline dotted; text-underline-offset: 3px; }\n#sigTable td.inline-editable.is-saving { opacity: .5; pointer-events: none; }\n\n#inline-edit {\n\tposition: fixed;\n\tz-index: 1200;\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tpadding: var(--space-1);\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 12px 32px rgba(0,0,0,.4);\n}\n#inline-edit .inline-chip {\n\theight: var(--control-dense);\n\tpadding: 0 var(--space-3);\n\tborder-radius: 999px;\n\tborder: 1px solid var(--border);\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tcursor: pointer;\n}\n#inline-edit .inline-chip:hover { background: var(--muted); border-color: var(--border-strong); }\n#inline-edit .inline-chip[aria-selected=\"true\"].stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n#inline-edit .inline-chip:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n@media (pointer: coarse) {\n\t#inline-edit .inline-chip { min-height: 44px; padding: 0 var(--space-4); }\n}\n","/* ============================================================================\n TWO TYPE ROLES\n\n Montserrat was chosen as the brand face and is right for that: geometric,\n round, of a piece with the wing mark. It was then used for every table\n cell, label and chip -- and it is a wide face with a large x-height, which\n at 11-13px in a three-column layout of \"GHJ-456\", \"23:26\", \"Class-3\" costs\n the width budget and reads soft. The signature-id column having to fall\n back to a monospace to stay aligned was the symptom.\n\n Display stays Montserrat. Everything read as data is IBM Plex Sans:\n narrower set, tabular figures, a technical character that suits a mapping\n tool, and a grotesque that sits cleanly under a geometric display face.\n Ids move to Plex Mono so the family holds.\n\n Same selector list as the rule in _override-b-fixes.css that forced one\n family everywhere; this file sorts after it, so equal specificity wins.\n ========================================================================= */\n\n:root {\n\t--font-ui: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-display: 'Montserrat', 'IBM Plex Sans', system-ui, sans-serif;\n\t--font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n}\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li,\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: var(--font-ui);\n\tfont-variant-numeric: tabular-nums;\n}\n\n/* ---- brand surfaces keep the display face ---------------------------- */\n#topbar #logo, #topbar #logo a,\n.panel-title,\n.ui-dialog .ui-dialog-title,\n.sys-panel .sys-name,\n#cmd-palette .cmd-title,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label {\n\tfont-family: var(--font-display);\n}\n\n/* ---- data ids in the mono of the same family --------------------------- */\n#sigTable td:nth-child(1),\n#chainMap div.node > h4.nodeType,\nkbd {\n\tfont-family: var(--font-mono);\n\tletter-spacing: 0;\n}\n\n/* Plex sits a touch smaller on the body than Montserrat did at the same\n size; the base step comes up one pixel so line lengths, not legibility,\n are what change. */\n:root { --fs-base: 13px; --fs-sm: 12px; }\n","/* ============================================================================\n Base theme.\n\n Overrides token VALUES from _tokens.css -- it does not restyle components,\n so it stays out of the way of upstream merges. The values here are the\n built-in defaults; a brand pack (brand.inc.php) overrides them at runtime.\n\n Two notes on scope:\n\n - The neutral ramp is re-pointed at a warmer grey ramp. Tripwire's original\n palette has no accent token -- every emphasis was just a lighter grey --\n so the accent cannot be placed by re-pointing alone. The short accent\n block at the bottom introduces it at the few sites that carry identity.\n - --data-* is deliberately untouched. Wormhole class, mass band and\n security colours encode meaning, and repainting them to fit a brand would\n make the map lie.\n ========================================================================= */\n\n:root {\n /* -- accent constants, used by the accent rules below ------------------- */\n --accent: #f07c00;\n --accent-dim: rgba(240, 124, 0, .18);\n --brand-gray: #adadad;\n --brand-gray-dark: #4d4d4d;\n\n /* -- ops floor: neutral ramp re-pointed at the brand greys -------------\n Ordering and relative contrast follow the original ramp, so component\n styling keeps working; only the values move. */\n --n-000: #000000;\n --n-020: #101010;\n --n-050: #1b1b1b; /* page ground */\n --n-100: #232323; /* raised panel */\n --n-120: #2a2a2a; /* second surface */\n --n-200: #303030; /* hairlines */\n --n-220: #3a3a3a;\n --n-250: #444444;\n --n-300: #4d4d4d; /* rules/borders (brand dark gray) */\n --n-400: #5a5a5a;\n --n-500: #6b6b6b;\n --n-550: #7d7d7d;\n --n-560: #838383;\n --n-600: #8c8c8c; /* secondary text */\n --n-650: #9a9a9a;\n --n-700: #a3a3a3;\n --n-750: #adadad; /* brand gray */\n --n-800: #c4c4c4; /* primary body text */\n --n-850: #d2d2d2;\n --n-870: #dedede;\n --n-880: #e4e4e4;\n --n-900: #ebebeb;\n --n-920: #f0f0f0;\n --n-940: #f5f5f5;\n --n-960: #f8f8f8;\n --n-999: #f2f2f2; /* emphasis text */\n}\n\n/* Front office. The brand orange is identical in both themes by rule, so only\n the neutral grounds swap. Mirrors the structure in _tokens.css: the media\n query is guarded so an explicit dark choice still wins. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9; /* page ground */\n --n-100: #f5f5f5; /* raised panel */\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad; /* rules -- brand gray */\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f; /* pushed past a straight inversion: the mid-ramp is\n where naive flipping leaves text at ~4.5:1 */\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d; /* brand dark gray */\n --n-750: #444444;\n --n-800: #333333; /* primary body text */\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f; /* emphasis text */\n }\n}\n:root[data-theme=\"light\"] {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9;\n --n-100: #f5f5f5;\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad;\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f;\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f;\n}\n\n/* ============================================================================\n Accent placement.\n\n Deliberately short. The orange marks identity and current state -- the\n wordmark, what is selected, what has focus -- and nothing else. Data keeps\n its own colours.\n ========================================================================= */\n\n/* The wordmark carries the brand; the version chip stays quiet beside it.\n The Wing Icon is set as a ::before rather than edited into tripwire.php, so\n the template stays untouched and this whole theme remains one deletable\n file. Brand guidelines allow the standalone Wing Icon to form new lockups;\n the full lockup may not be modified, so it is not used here. */\n#topbar #logo a {\n color: var(--accent);\n letter-spacing: .01em;\n}\n\n\n/* Front office uses the dark lockup, not the orange one -- which the brand\n guidelines call for, and which also fixes the contrast: #F07C00 on a light\n topbar measures 2.77:1. Orange stays the accent for state, not the mark. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) #topbar #logo a { color: var(--n-999); }\n}\n:root[data-theme=\"light\"] #topbar #logo a { color: var(--n-999); }\n\n/* Active/selected state, previously just a lighter grey. */\n#topbar i.active,\n#topbar a.active {\n color: var(--accent);\n}\n\n/* Keyboard focus. Track 2 adds a keyboard layer, so a visible, branded focus\n ring is about to matter a great deal more than it does today. */\n:focus-visible {\n outline: 2px solid var(--accent);\n outline-offset: 1px;\n}\n\n/* Selected signature rows read as \"this is what you are acting on\". */\n#sigTable tbody tr.selected td {\n background: var(--accent-dim);\n}\n\n/* ============================================================================\n Background.\n\n Overridden here rather than in tripwire.css so upstream's default survives a\n rebase. The source is 21:9; under the existing `cover` + `center` a 16:9\n viewport trims the sides, which keeps the ship and loses the brightest edge\n of the nebula -- the framing this was chosen for.\n ========================================================================= */\n\n\n/* Read band: the background is decorative at phone width, so serve 79KB\n instead of 460KB. */\n}\n","/* ============================================================================\n THE PALETTE (default)\n\n The refit palette,\n adopted as Tripwire's default after a side-by-side on the preview. A warm\n charcoal scale that was chosen rather than inherited; two surfaces and one\n rule colour; bone text with dim as the subordinate weight (4.5:1 on both\n surfaces); blood for danger; sage / rust-bright / blood / void for hisec /\n lowsec / nullsec / J-space -- the EVE convention in a muted register, so\n the map's security colours are information rather than the loudest thing\n on the screen.\n\n What stays constant: the mark, the wordmark, and one\n accent -- the primary action, the ring, links. One discipline under a\n corp's flag, not one corp's brand on another's\n tool. Security chips stay filled with white text; that is the house rule.\n\n Type: Geist for text, Geist Mono for labels, ids and stats. The label is\n the signature -- 10px, uppercase, wide-tracked, dim -- and it is applied\n to every panel title, table header and footer label uniformly.\n\n Light theme is a print palette: paper, not white.\n ========================================================================= */\n\n/* ── THE DECK ──────────────────────────────────────────────────────────\n Grounds and neutrals from the house letterhead palette,\n a neutral charcoal ramp:\n brand grey #ADADAD for body text, brand dark grey #4D4D4D for rules,\n orange as the one accent. This puts Tripwire on the same deck as\n the letterhead -- same labels, same accent -- rather than on\n a warm ink.\n\n Data colours deliberately do NOT take the brand callouts. #57DB57 green\n and #0073F0 blue are display colours for a few words on a log line;\n a map paints them on a hundred chips at once and they shout (measured\n and rejected earlier on this branch). Sage / void / a desaturated warn\n stay, with the danger red. */\n:root {\n\t--background: #1b1b1b;\n\t--foreground: #f2f2f2; /* bone: headings, names, values */\n\t--card: #232323;\n\t--card-foreground: #f2f2f2;\n\t--popover: #2a2a2a;\n\t--popover-foreground: #f2f2f2;\n\t--muted: #2a2a2a;\n\t--muted-foreground: #8c8c8c; /* dim: labels, secondary */\n\t--text-body: #adadad; /* fog: brand grey, running text */\n\t--accent-surface: #2a2a2a;\n\t--border: #4d4d4d; /* brand dark grey */\n\t--border-soft: #303030;\n\t--border-strong: #5a5a5a;\n\t--input: #303030;\n\t--glow: #242424;\n\n\t--primary: var(--accent, #f07c00);\n\t--primary-foreground: #1b1b1b;\n\t--ring: var(--accent, #f07c00);\n\t--destructive: #e05252;\n\n\t--data-good: #7d9b76; /* hisec, stable */\n\t--data-warn: #d9a441; /* lowsec, destab -- desaturated brand yellow */\n\t--data-critical: #e05252; /* nullsec, critical, EOL */\n\t--data-info: #8b7aa8; /* J-space, jumps */\n\n\t--node-surface: #2a2a2a;\n\t--node-edge: #5a5a5a;\n\n\t--chart-gridline: rgba(242, 242, 242, .06);\n\t--chart-axis-text: #adadad;\n\n\t--font-ui: 'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace;\n\t--font-display: 'Montserrat', 'Geist', system-ui, sans-serif;\n}\n\n/* The front office: the light theme. Same brand hexes, light\n neutral grounds, dark grey ink. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: #e9e9e9;\n\t\t--foreground: #1f1f1f;\n\t\t--card: #f5f5f5;\n\t\t--card-foreground: #1f1f1f;\n\t\t--popover: #fdfdfd;\n\t\t--popover-foreground: #1f1f1f;\n\t\t--muted: #e4e4e4;\n\t\t--muted-foreground: #767676;\n\t\t--text-body: #4d4d4d;\n\t\t--accent-surface: #e4e4e4;\n\t\t--border: #adadad;\n\t\t--border-soft: #d8d8d8;\n\t\t--border-strong: #8c8c8c;\n\t\t--input: #e4e4e4;\n\t\t--glow: #ffffff;\n\t\t--primary-foreground: #ffffff;\n\t\t--destructive: #b03a3a;\n\t\t--data-good: #4c6a45;\n\t\t--data-warn: #9a6d12;\n\t\t--data-critical: #b03a3a;\n\t\t--data-info: #5d4f78;\n\t\t--node-surface: #fdfdfd;\n\t\t--node-edge: #adadad;\n\t\t--chart-gridline: rgba(31, 31, 31, .08);\n\t\t--chart-axis-text: #4d4d4d;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: #e9e9e9;\n\t--foreground: #1f1f1f;\n\t--card: #f5f5f5;\n\t--card-foreground: #1f1f1f;\n\t--popover: #fdfdfd;\n\t--popover-foreground: #1f1f1f;\n\t--muted: #e4e4e4;\n\t--muted-foreground: #767676;\n\t--text-body: #4d4d4d;\n\t--accent-surface: #e4e4e4;\n\t--border: #adadad;\n\t--border-soft: #d8d8d8;\n\t--border-strong: #8c8c8c;\n\t--input: #e4e4e4;\n\t--glow: #ffffff;\n\t--primary-foreground: #ffffff;\n\t--destructive: #b03a3a;\n\t--data-good: #4c6a45;\n\t--data-warn: #9a6d12;\n\t--data-critical: #b03a3a;\n\t--data-info: #5d4f78;\n\t--node-surface: #fdfdfd;\n\t--node-edge: #adadad;\n\t--chart-gridline: rgba(31, 31, 31, .08);\n\t--chart-axis-text: #4d4d4d;\n}\n\n/* Flat ink. The ship stays on the landing page, where it is a brand\n moment; behind three columns of data it was competition. */\n#wrapper::before { background: radial-gradient(ellipse at 30% -20%, var(--glow) 0%, var(--background) 60%); }\nbody { background-image: none; }\n\n/* Running text in the brand grey; names, values and headings in bone. */\n#sigTable td, .commentBody, .sys-meta, .sys-extra, .field-label, .ui-dialog .ui-dialog-content { color: var(--text-body); }\n#sigTable td:nth-child(1), .sys-name, .field-value, #chainMap div.node > h4.nodeSystem, .stats dd { color: var(--foreground); }\n\n/* The label: mono, small, uppercase, tracked, dim. Everywhere it means\n \"this is a label\", so it reads as one system. */\n.panel-title,\n.ui-dialog .ui-dialog-title,\n#sigTable th,\n.gate-list-label,\n.field-group,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label,\n.sys-links a,\n#activityGraphControls > a,\n#cmd-palette .cmd-group,\n.sig-stats {\n\tfont-family: var(--font-mono);\n\tfont-size: 10px;\n\tfont-weight: 500;\n\tletter-spacing: .22em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.sys-links a:hover,\n#activityGraphControls > a:hover,\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] { color: var(--foreground); }\n\n/* Ids, times and counts in the mono. */\n#sigTable td:nth-child(1),\n#sigTable td:nth-child(3),\n#statusbar .bar-value,\n#signature-count,\n.node .nodeType,\nkbd { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }\n\n/* Surfaces: one small radius, a thin rule, and a deep shadow only where\n something floats. */\n.gridWidget { border-radius: 4px; }\n.ui-dialog, #cmd-palette, #inline-edit, #panel-menu {\n\tborder-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0, 0, 0, .5);\n}\n#chainMap div.node, #chainMap div.loop { border-radius: 4px; }\n\n/* Neutral chips flat on panel-2 with a rule; security and state chips keep\n their fill and white text. */\n.sig-chip, h4.chip, .chip, .gate-chip {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: 3px;\n}\n.sig-chip.on { background: var(--muted); border-color: var(--border-strong); color: var(--foreground); }\n\n/* Primary action: orange fill, ink text; brighter on approach. */\n.controls .bar-btn.bar-primary:hover,\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 85%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 85%, white);\n}\n\n::selection { background: var(--primary); color: var(--background); }\n\n/* ── Second look ─────────────────────────────────────────────────────────\n Bar hierarchy: title · primary · everything else. The right-hand group\n sits at the label weight at rest and comes up on approach, so eleven\n controls on a strip read as three things. */\n.gridWidget > .controls > .bar-right .bar-btn,\n.gridWidget > .controls > .bar-right .panel-hide,\n.gridWidget > .controls > .panel-hide,\n#chainWidget > .controls > .bar-btn.bar-icon { color: var(--muted-foreground); }\n.gridWidget > .controls > .bar-right .bar-btn:hover,\n.gridWidget > .controls > .panel-hide:hover,\n#chainWidget > .controls > .bar-btn.bar-icon:hover { color: var(--foreground); }\n.gridWidget > .controls > .bar-right .bar-btn.bar-toggle.active { color: var(--primary); }\n\n/* Range chips had become tiny bordered boxes next to the borderless legend:\n two idioms in one row. They are quiet mono text like the links beneath. */\n#activityGraphControls > a {\n\tborder: 0;\n\tbackground: transparent;\n\tpadding: 0 2px;\n\theight: auto;\n\tcolor: var(--muted-foreground);\n}\n#activityGraphControls > a.active,\n#activityGraphControls > a[aria-current] { color: var(--primary); }\n#activityGraphControls { gap: var(--space-2) var(--space-3); }\n#activityLegend .legend-chip { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-foreground); }\n#activityLegend .legend-chip:hover { color: var(--foreground); }\n#activityLegend .legend-chip.off { opacity: .5; }\n\n/* The graph sits in the panel like a card of its own. */\n#activityGraph { margin: var(--space-2) 0 0; }\n\n/* Sliders: the last control not in the palette. */\n.slider-wrap .ui-slider { background: var(--input); height: 3px; }\n.slider-wrap .ui-slider .ui-slider-handle { background: var(--primary); width: 14px; height: 14px; top: -6px; margin-left: -7px; border: 2px solid var(--popover); box-sizing: border-box; }\n.slider-value { font-family: var(--font-mono); font-size: 11px; color: var(--muted-foreground); }\n.slider-pair > span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }\n\n/* ── The letterhead ──────────────────────────────────────────────────────\n Three zones. Left: the system you are viewing, large, with your own\n location and the search beneath it. Centre: the corp's mark and\n wordmark. Right: you -- a portrait you can actually make out, name and\n mask beside it, then the two tools. The app's own name lives in the\n footer with its version; the header is the corp's. */\n#topbar {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n\talign-items: center;\n\tgap: 16px;\n\tmin-height: 76px;\n\tpadding: 8px 18px;\n\tbackground: linear-gradient(180deg, var(--card), var(--background));\n\tborder-bottom: 1px solid var(--border);\n}\n#topbar > .align-left, #topbar > .align-right, #topbar > .align-center { display: flex; align-items: center; min-width: 0; }\n#topbar > .align-left { justify-content: flex-start; flex-direction: column; align-items: flex-start; gap: 2px; overflow: visible; }\n#topbar > .align-center{ justify-content: center; }\n#topbar > .align-right { justify-content: flex-end; gap: 14px; }\n\n/* Left: the viewed system. */\n.hdr-sys { display: flex; align-items: center; gap: 8px; }\n#hdr-system {\n\tfont-family: var(--font-display);\n\tfont-size: 22px;\n\tfont-weight: 700;\n\tletter-spacing: -.01em;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n#hdr-system:hover { color: var(--primary); }\n#topbar #search { color: var(--muted-foreground); cursor: pointer; }\n#topbar #search:hover { color: var(--foreground); }\n#topbar #systemSearch { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 11px; }\n#topbar #currentSpan { display: inline-flex; align-items: center; gap: 6px; }\n#topbar #currentSpan .bar-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted-foreground); }\n#topbar #EVEsystem { font-family: var(--font-mono); font-size: 11px; color: var(--text-body); }\n#topbar #follow { color: var(--muted-foreground); }\n/* On is orange. The line above outranked the legacy .active colour, so the\n toggle worked and looked like it had not. */\n#topbar #follow.active { color: var(--primary); }\n#topbar #follow:hover { color: var(--foreground); }\n#topbar #follow.active:hover { color: var(--primary); }\n#topbar #searchSpan input {\n\tfont-family: var(--font-mono); font-size: 11px;\n\tmin-height: 24px; padding: 0 8px; max-width: 12rem;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px; color: var(--foreground);\n}\n\n/* Centre: the mark. Two files, one per theme. */\n#topbar #logo { display: block; line-height: 0; }\n#topbar #logo img { height: 46px; width: auto; display: block; }\n#topbar #logo a::before, #topbar #logo::before { content: none !important; }\n#topbar #logo .logo-light { display: none; }\n@media (prefers-color-scheme: light) { :root:not([data-theme=\"dark\"]) #topbar #logo .logo-dark { display: none; } :root:not([data-theme=\"dark\"]) #topbar #logo .logo-light { display: block; } }\n:root[data-theme=\"light\"] #topbar #logo .logo-dark { display: none; }\n:root[data-theme=\"light\"] #topbar #logo .logo-light { display: block; }\n\n/* Right: you. */\n#topbar #login h3 { margin: 0; }\n#topbar #login h3 > a#user { display: flex; align-items: center; gap: 10px; text-decoration: none; }\n#topbar #user-avatar.avatar {\n\twidth: 44px; height: 44px; border-radius: 4px;\n\tborder: 1px solid var(--border); object-fit: cover; display: block;\n}\n#topbar .hdr-pilot { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; line-height: 1.15; }\n#topbar #user-no-track, #topbar #user-track-name { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; color: var(--foreground); }\n#topbar #user-track { display: inline-flex; align-items: center; gap: 4px; }\n#topbar .hdr-mask, #topbar .hdr-mask a, #topbar #mask {\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); text-decoration: none;\n}\n#topbar .hdr-mask a:hover, #topbar .hdr-mask a:hover #mask { color: var(--foreground); }\n#topbar .hdr-tools { display: flex; align-items: center; gap: 4px; margin-left: 4px; padding-left: 14px; border-left: 1px solid var(--border-soft); }\n#topbar .hdr-tools i { color: var(--muted-foreground); cursor: pointer; }\n#topbar .hdr-tools i:hover { color: var(--foreground); }\n#topbar .hdr-tools [data-icon]::before { font-size: 18px; }\n\n/* The mask menu anchors to the letterhead, not to a pixel offset. */\n#topbar #mask-menu { top: 64px; right: 18px; }\n\n/* Panel heads: a band under the title. */\n.gridWidget > .controls {\n\tbackground: linear-gradient(180deg, var(--popover), var(--card));\n\tborder-bottom: 1px solid var(--border);\n}\n.gridWidget, #chainMap div.node, .ui-dialog { border-radius: 3px; }\n.gridWidget { border: 1px solid var(--border); }\n\n/* Hairlines inside content take the soft rule. */\n#sigTable tbody tr, .comment { border-color: var(--border-soft); }\n\n/* ── The letterhead on a phone ───────────────────────────────────────────\n This file sorts after _override-d-phone.css, so the phone header has to\n be written here or the grid above wins. One row: system name, portrait,\n tools. The mark and the location line are desktop and tablet things. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 10px;\n\t\tmin-height: 0;\n\t\tpadding: 8px 12px;\n\t}\n\t#topbar > .align-center { display: none; }\n\t#topbar > .align-left { flex: 1 1 auto; flex-direction: column; align-items: flex-start; }\n\t#topbar #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-right { flex: 0 0 auto; width: auto; justify-content: flex-end; gap: 8px; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar .hdr-tools { margin-left: 0; padding-left: 8px; }\n\t#topbar #mask-menu { top: 52px; right: 12px; }\n}\n\n/* ── The tracking dropdown ────────────────────────────────────────────────\n account.css collapses every .avatar inside it to 1px -- a legacy trick\n from when the portrait was painted some other way -- which is why the\n character rows showed a name and no face. Portraits at a size a face\n survives, and the dropdown on the same surfaces as everything else. */\n#login #content .tracking-clone td.avatar img.avatar { width: 36px; height: 36px; border-radius: 3px; border: 1px solid var(--border); }\n#login #content #account #avatar img.avatar-lg { width: 56px; height: 56px; border-radius: 4px; border: 1px solid var(--border); }\n#login #content.dialog-like {\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0,0,0,.5); padding: var(--space-2);\n}\n#login #content .triangle { display: none; }\n#login #logoutTable tbody th {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .22em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); background: transparent; border-bottom: 1px solid var(--border); text-align: left; padding: 4px 6px;\n}\n#login #content #track { border-right: 1px solid var(--border-soft); }\n#login #content #track .tracking-clone { border: 1px solid var(--border); border-radius: 3px; opacity: .7; }\n#login #content #track .tracking-clone.active { border-color: var(--primary); opacity: 1; }\n#login #content #track .tracking-clone:hover { border-color: var(--border-strong); opacity: 1; }\n#login #content table .text { color: var(--text-body); }\n#login #content table td.name.text { color: var(--foreground); }\n\n/* ── The mask as a capsule ────────────────────────────────────────────────\n Was a star glyph and the word \"Corp\" run together. A capsule: a source\n dot -- orange for corporate, void for alliance, sage for personal, dim for\n global -- and the label in the label register. */\n#topbar #mask-menu-link { display: inline-block; }\n#topbar #mask .mask {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 18px; padding: 0 8px 0 7px;\n\tborder: 1px solid var(--border); border-radius: 999px;\n\tbackground: var(--popover);\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #mask-menu-link:hover .mask { border-color: var(--border-strong); color: var(--foreground); }\n#topbar #mask .mask i[data-icon] { width: 7px; height: 7px; border-radius: 50%; background: var(--muted-foreground); display: inline-block; }\n#topbar #mask .mask i[data-icon]::before { content: none; }\n#topbar #mask .mask i.corporate { background: var(--primary); }\n#topbar #mask .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.character { background: var(--data-good); }\n#topbar #mask .mask i.global { background: var(--muted-foreground); }\n\n/* ── The mark, larger, riding the letterhead's edge ──────────────────────\n At 46px the wordmark read as a label. It is the letterhead; it gets the\n height, and it hangs a little over the hairline into the gap above the\n panels so the header reads as a plate the mark is mounted on rather than\n a strip the mark is squeezed into. The panel area gives back the room. */\n@media (min-width: 768px) and (min-height: 600px) {\n\t/* The header keeps its height; the mark is taller than the header and\n\t hangs 14px past the hairline into the gap the panel area gives back. */\n\t#topbar { overflow: visible; height: 64px; min-height: 64px; padding-top: 0; padding-bottom: 0; }\n\t#topbar > .align-center { align-self: flex-start; position: relative; z-index: 3; }\n\t/* A pack may ask for a taller mark (logo.height); a round seal wants a\n\t little more than a wide wordmark. It rides the bar's bottom edge. */\n\t#topbar #logo img { height: 64px; margin-top: 0; filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .55)); }\n\t.gridster { padding-top: 10px; }\n}\n\n/* Below the desktop breakpoint the legacy stylesheet fixes the header to the\n viewport and nothing offsets the content, so the panels started at y=20\n underneath it (measured at 1100x700). The tablet page scrolls; the header\n stays in flow and sticks to the top as it goes. */\n@media (max-width: 1279px) {\n\t#topbar { position: sticky; top: 0; z-index: 30; }\n}\n\n/* ── \"Following you\" ─────────────────────────────────────────────────────\n Clicking the tab that is already selected deselects it, and with no tab\n selected the map roots at whichever system you are viewing. That is a\n mode, and it was invisible: the strip just showed no tab highlighted and\n the map \"kept jumping\". Name it. */\n#chainTabs:not(:has(.tab.current))::before {\n\tcontent: \"Following you\";\n\tdisplay: inline-flex; align-items: center;\n\theight: 20px; padding: 0 8px; margin-right: 6px;\n\tborder: 1px solid color-mix(in oklab, var(--primary) 55%, var(--border));\n\tborder-radius: 999px;\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--primary);\n}\n\n/* ── The top row takes what the System panel needs ─────────────────────\n system-fit.js sets --top-row when the panel cannot hold the graph at its\n floor; otherwise the row is the 46vh the layout chose. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 46vh)) 1fr; }\n}\n\n/* ── The room lights: sun and moon on the letterhead ─────────────────── */\n#topbar .hdr-tools .themebtn {\n\tbackground: none; border: 1px solid var(--border); border-radius: 3px; cursor: pointer;\n\tcolor: var(--muted-foreground); font-size: 14px; line-height: 1; padding: 4px 8px;\n\theight: 26px; display: inline-flex; align-items: center; flex: 0 0 auto;\n\tfont-family: var(--font-ui);\n}\n#topbar .hdr-tools .themebtn:hover { color: var(--primary); border-color: var(--primary); }\n\n/* ── The pilot dropdown: cards, not nested tables ──────────────────────\n The tracking list is a table per character (avatar cell spanning five\n rows of name, system, station, ship, ship name) inside a table inside a\n table. Rendered as-is the portrait floated over the name and the eye and\n ship icons drifted down the middle. The table skeleton stays (tracking.js\n clones it); its rows are flattened and each character is laid out as a\n card: portrait, status and controls in a narrow left column, the five\n text lines stacked beside it. */\n#login #content #logoutTable { border-collapse: separate; border-spacing: 0; }\n#login #content #logoutTable > tbody > tr > td { vertical-align: top; padding: 0 12px; }\n#login #content #logoutTable > tbody > tr > td:first-child { padding-left: 0; }\n#login #content #logoutTable > tbody > tr > td:last-child { padding-right: 0; }\n#login #content #track, #login #content #account { min-width: 260px; }\n#login #content #track th, #login #content #account th { text-align: left; padding: 0 0 6px; }\n#login #content #tracking { display: flex; flex-direction: column; gap: 6px; padding: 0; }\n\n#login #content #track .tracking-clone,\n#login #content #track .tracking-clone > tbody { display: block; }\n#login #content #track .tracking-clone > tbody > tr { display: contents; }\n#login #content #track .tracking-clone > tbody {\n\tdisplay: grid;\n\tgrid-template-columns: 44px minmax(0, 1fr);\n\tgrid-template-rows: repeat(5, auto);\n\tcolumn-gap: 10px; row-gap: 1px;\n\tpadding: 8px 10px;\n}\n#login #content #track .tracking-clone td { padding: 0; border: 0; line-height: 1.3; }\n#login #content #track .tracking-clone td.avatar {\n\tgrid-column: 1; grid-row: 1 / span 5;\n\tdisplay: flex; flex-direction: column; align-items: center; gap: 4px;\n}\n#login #content #track .tracking-clone td.avatar img.avatar { display: block; }\n#login #content #track .tracking-clone td.avatar hr.bar { width: 36px; margin: 0; height: 3px; border: 0; border-radius: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group { display: flex; gap: 6px; margin-top: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group i { font-size: 14px; color: var(--muted-foreground); cursor: pointer; }\n#login #content #track .tracking-clone td.avatar .control-group i.active,\n#login #content #track .tracking-clone td.avatar .control-group i:hover { color: var(--primary); }\n#login #content #track .tracking-clone td.name { grid-column: 2; grid-row: 1; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.system { grid-column: 2; grid-row: 2; }\n#login #content #track .tracking-clone td.station { grid-column: 2; grid-row: 3; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.ship { grid-column: 2; grid-row: 4; }\n#login #content #track .tracking-clone td.shipname { grid-column: 2; grid-row: 5; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.text:empty::before,\n#login #content #track .tracking-clone td.text:has(> :empty):not(:has(*))::before { content: none; }\n#login #content #track .tracking-clone i.alert { grid-column: 2; grid-row: 1; justify-self: end; }\n\n/* The signed-in character: portrait beside name and corporation. */\n#login #content #account, #login #content #account > tbody { display: block; }\n#login #content #account > tbody { display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: 12px; align-items: start; }\n#login #content #account > tbody > tr { display: contents; }\n#login #content #account th { grid-column: 1 / -1; }\n#login #content #account td { padding: 0; border: 0; }\n#login #content #account td#avatar { grid-column: 1; grid-row: 2 / span 2; }\n#login #content #account td#characterName { grid-column: 2; grid-row: 2; font-weight: 600; padding-top: 4px; }\n#login #content #account td.text:not(#characterName) { grid-column: 2; grid-row: 3; color: var(--muted-foreground); }\n#login #content #account td:empty { display: none; }\n\n/* Buttons row. */\n#login #content #logoutTable > tbody > tr:last-child > td { padding-top: 12px; }\n#login #content #logoutTable > tbody > tr:last-child > td:last-child { text-align: right; }\n\n/* ── The mask menu: a popover, in the capsule's language ──────────────\n Was orange links stacked with a stray glyph each. Rows: the same source\n dot the capsule wears, the label, and a tick on the one you are in.\n Manage and admin sit under a rule in the quiet register. */\n#topbar #mask-menu {\n\tmin-width: 176px; padding: 4px 0;\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.45);\n}\n#topbar #mask-menu .triangle { display: none; }\n#topbar #mask-menu a {\n\tdisplay: flex; align-items: center; gap: 8px;\n\tpadding: 6px 12px; margin: 0;\n\tcolor: var(--foreground); font-size: var(--fs-sm); font-weight: 500; text-decoration: none;\n\tline-height: 1.2;\n}\n#topbar #mask-menu a:hover { background: var(--muted); color: var(--foreground); }\n#topbar #mask-menu a .mask { display: inline-flex; align-items: center; gap: 8px; color: inherit; font-size: inherit; }\n#topbar #mask-menu a .mask i[data-icon] {\n\twidth: 8px; height: 8px; border-radius: 50%; padding: 0; margin: 0; flex: 0 0 auto;\n\tdisplay: inline-block; transform: none; background: var(--muted-foreground);\n}\n#topbar #mask-menu a .mask i[data-icon]::before { content: none; }\n#topbar #mask-menu a .mask i.global { background: var(--muted-foreground); }\n#topbar #mask-menu a .mask i.personal,\n#topbar #mask-menu a .mask i.character { background: var(--data-good); }\n#topbar #mask-menu a .mask i.corporate { background: var(--primary); }\n#topbar #mask-menu a .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.personal { background: var(--data-good); }\n#topbar #mask-menu a.active::after {\n\tcontent: \"\\2713\"; margin-left: auto; color: var(--primary); font-size: 12px; font-weight: 700;\n}\n#topbar #mask-menu hr.bar { height: 1px; border: 0; margin: 4px 0; background: var(--border); }\n#topbar #mask-menu #mask-link, #topbar #mask-menu #admin {\n\tcolor: var(--muted-foreground); font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n}\n#topbar #mask-menu #mask-link:hover, #topbar #mask-menu #admin:hover { color: var(--foreground); }\n\n/* The eye and ship toggles sit in a row under the portrait. */\n#login #content #track .tracking-clone td.avatar .control-group { width: auto; min-width: 36px; justify-content: center; }\n\n/* ── The ship, under the name ─────────────────────────────────────────── */\n#topbar .hdr-line2 { display: flex; align-items: center; gap: 8px; }\n#topbar .hdr-ship {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; line-height: 18px;\n}\n#topbar .hdr-ship.hidden { display: none; }\n\n/* ── Phone header: the mask dot is a dot, and the name gives way ───────\n The coarse-pointer rule makes every #topbar i a 44px target; the mask\n capsule's source dot is an i too, and became a 44px orange disc beside\n the avatar. And the system name did not shrink, so the pilot block sat\n on top of it. */\n@media (pointer: coarse) {\n\t#topbar #mask .mask i[data-icon], #topbar #mask-menu a .mask i[data-icon] {\n\t\tmin-width: 0; min-height: 0; width: 7px; height: 7px; padding: 0;\n\t}\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-left { min-width: 0; }\n\t#topbar #hdr-system { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\t#topbar > .align-right { flex-shrink: 0; }\n\t#topbar #login h3 > a#user { gap: 6px; }\n}\n\n/* ── Install tip (phones) ─────────────────────────────────────────────── */\n#install-tip {\n\tdisplay: flex; align-items: center; gap: 10px;\n\tpadding: 8px 12px;\n\tbackground: color-mix(in oklab, var(--primary) 14%, var(--card));\n\tborder-bottom: 1px solid var(--border);\n\tfont-size: var(--fs-sm); color: var(--foreground);\n}\n#install-tip .tip-text { flex: 1 1 auto; min-width: 0; }\n#install-tip button { min-height: 32px; border-radius: 4px; font: inherit; cursor: pointer; }\n#install-tip .tip-install { background: var(--primary); color: #1b1207; border: 0; padding: 0 12px; font-weight: 600; }\n#install-tip .tip-close { background: none; border: 0; color: var(--muted-foreground); font-size: 18px; line-height: 1; padding: 0 6px; }\n\n/* ── The top row: smaller by default, and it does not follow the system ──\n 40vh unless a visited system needed more (system-fit.js remembers the\n largest, per window height). The chain gets the rest. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 40vh)) 1fr; }\n}\n\n/* ── Range in the header, links beside the legend ─────────────────────── */\n#infoWidget > .controls .bar-right #sys-range {\n\tdisplay: inline-flex; align-items: center; gap: 2px; margin-right: 6px;\n\tpadding-right: 8px; border-right: 1px solid var(--border-soft);\n}\n#infoWidget > .controls .bar-right #sys-range a {\n\tdisplay: inline-flex; align-items: center; height: 22px; padding: 0 6px;\n\tborder-radius: 3px; text-decoration: none;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#infoWidget > .controls .bar-right #sys-range a:hover { color: var(--foreground); background: var(--muted); }\n#infoWidget > .controls .bar-right #sys-range a.active { color: var(--primary); background: var(--muted); }\n#activityGraphControls { flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-3); }\n#activityGraphControls #infoLinks.in-legend-row { margin: 0 0 0 auto; padding: 0; border: 0; }\n#activityGraphControls #activityLegend { margin-right: 0; }\n\n/* Legend and links on one row: short chip labels, tighter tracking. */\n#activityLegend { gap: 2px 4px; }\n#activityLegend .legend-chip { padding: 0 5px 0 4px; letter-spacing: .06em; gap: 5px; }\n#activityGraphControls #infoLinks.in-legend-row { gap: 8px; }\n#activityGraphControls #infoLinks.in-legend-row a { letter-spacing: .12em; padding: 0; }\n\n/* ── Brand packs ─────────────────────────────────────────────────────────\n A pack without a logo image shows the product name in the display face. */\n#topbar #logo .logo-text { font-family: var(--font-display); font-weight: 700; font-size: 22px; letter-spacing: .02em; color: var(--foreground); line-height: 64px; }\n\n/* ── Typographic lockup: a small line, the name, a small line ───────────\n Set in the page's own fonts (an SVG cannot reach them). The name\n takes the brand face and the accent; the small lines the label register;\n optional rule-and-star flourishes either side of the name. */\n#topbar #logo .logo-lockup { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; line-height: 1; padding: 6px 0; }\n#topbar #logo .lockup-small {\n\tfont-family: var(--font-mono); font-size: 8.5px; font-weight: 500; letter-spacing: .26em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #logo .lockup-main {\n\tdisplay: inline-flex; align-items: center; gap: 10px;\n\tfont-family: var(--font-brand, var(--font-display)); font-size: 19px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;\n\tcolor: var(--primary); padding-left: .2em; /* balances the trailing tracking */\n}\n#topbar #logo .lockup-main.has-flourish::before,\n#topbar #logo .lockup-main.has-flourish::after {\n\tcontent: \"\"; width: 44px; height: 2px; background: var(--primary); flex: 0 0 auto;\n\t-webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px) ; mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px);\n}\n#topbar #logo .lockup-main.has-flourish::before { -webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px); }\n\n/* ── Signature dialog: compact, sides labelled in the gutter ──────────────\n Upstream's dialog was tighter and named each wormhole side with a\n vertical label down the left; the rebuild had replaced those with three\n horizontal headings (WORMHOLE, SIDE, OTHER SIDE) and looser\n rows, and grew a third taller. Back to the gutter, minus the headings. */\n#dialog-signature #wormhole::before,\n#dialog-signature #wormhole .side + .side::before { content: none; }\n#dialog-signature #wormhole { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature #wormhole .side { position: relative; padding-left: 20px; min-height: 0; }\n#dialog-signature #wormhole .side + .side { margin-top: 4px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature .sideLabel {\n\tposition: absolute; left: 0; top: 0; bottom: 5px; width: 14px;\n\tmargin: 0; padding: 0; border: 0;\n\tdisplay: flex; align-items: center; justify-content: center;\n\twriting-mode: vertical-rl; transform: rotate(180deg);\n\tfont-family: var(--font-mono); font-size: 9.5px; font-weight: 500; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; text-align: center;\n}\n#dialog-signature #wormhole .side + .side .sideLabel { top: 8px; }\n#dialog-signature .row { margin: 0 0 5px; gap: 6px; }\n#dialog-signature .row > .label:first-child { flex: 0 0 50px; }\n#dialog-signature #wormhole .row > .label:first-child { flex-basis: 44px; }\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button { min-height: 26px; }\n#dialog-signature .mini-selector + label { min-height: 24px; padding-top: 0; padding-bottom: 0; }\n/* signatures.css sizes the two labels by position (90px / 135px wide, one\n hung 70px below its side) with an id-heavier selector; match it. */\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\twidth: 14px; bottom: 5px; text-align: center; transform-origin: 50% 50%;\n}\n#dialog-signature #wormhole .side:last-child .sideLabel { top: 8px; }\n/* Fields read as fields: the name inputs had the dialog's own ground and a\n border one step from it, so they were invisible until focused. And the\n nine class chips plus divider fit the row. */\n#dialog-signature input[type=\"text\"] { background: var(--input); border-color: var(--border); }\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); }\n#dialog-signature .quickSelectBar { gap: 3px; }\n#dialog-signature .quickSelectBar button { min-width: 24px; padding: 0 4px; }\n\n/* ══ Signature dialog: the design pass ═══════════════════════════════════\n One label column across the whole form; the side gutter is a column of\n its own, so the top rows are indented to match the wormhole rows. Life\n and Mass are connected segmented controls, the class chips two even\n groups, type and leads each one control with its menu button attached.\n ─────────────────────────────────────────────────────────────────────── */\n.ui-dialog:has(#dialog-signature) { width: min(392px, calc(100vw - 2rem)) !important; }\n#dialog-signature #form-signature > .row,\n#dialog-signature #site > .row { padding-left: 20px; }\n\n#dialog-signature .row { margin: 0 0 6px; gap: 6px; align-items: center; }\n#dialog-signature .row > .label:first-child,\n#dialog-signature #wormhole .row > .label:first-child {\n\tflex: 0 0 54px; text-align: right;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature .row > .label:not(:first-child) { font-family: var(--font-mono); color: var(--muted-foreground); }\n\n/* Fields: one height, one ground, one edge. Ids and hull types in the mono. */\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tmin-height: 26px; height: 26px; box-sizing: border-box;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px;\n\tfont-size: 12px; color: var(--foreground);\n}\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); outline: 0; box-shadow: 0 0 0 2px color-mix(in oklab, var(--primary) 30%, transparent); }\n#dialog-signature .signatureID { width: 46px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature .wormholeType { width: 58px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature [name=\"signatureName\"], #dialog-signature [name=\"wormholeName\"] { flex: 1 1 auto; min-width: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 112px; display: inline-flex; align-items: center; }\n\n/* Comboboxes: the input and its menu button are one control. */\n#dialog-signature .custom-combobox { display: inline-flex; align-items: stretch; }\n#dialog-signature .custom-combobox input { border-top-right-radius: 0; border-bottom-right-radius: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle {\n\tposition: static; margin: 0 0 0 -1px; width: 24px; height: 26px; padding: 0;\n\tborder: 1px solid var(--border); border-radius: 0 3px 3px 0; background: var(--muted); color: var(--muted-foreground);\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .custom-combobox .custom-combobox-toggle:hover { color: var(--foreground); border-color: var(--border-strong); }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { flex: 1 1 auto; display: inline-flex; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] .custom-combobox { flex: 1 1 auto; }\n#dialog-signature .leadsTo { width: auto; flex: 1 1 auto; min-width: 0; }\n\n/* Lifetime: one boxed control, numbers in the mono. */\n#dialog-signature .duration-picker { height: 26px; padding: 0 8px; gap: 4px; border-color: var(--border); background: var(--input); }\n#dialog-signature .duration-picker input { width: 22px; text-align: center; font-family: var(--font-mono); font-size: 12px; height: auto; min-height: 0; border: 0; background: transparent; }\n#dialog-signature .duration-picker span, #dialog-signature .duration-picker label { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-foreground); }\n\n/* Life and Mass: segmented. The chosen state is filled in its colour. */\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n\tmin-height: 26px; height: 26px; padding: 0 12px; margin: 0 0 0 -1px;\n\tborder: 1px solid var(--border); border-radius: 0; background: var(--input);\n\tfont-size: 12px; font-weight: 500; color: var(--muted-foreground); line-height: 1;\n}\n#dialog-signature .mini-selector:first-of-type + label { border-radius: 3px 0 0 3px; margin-left: 0; }\n#dialog-signature .row > .mini-selector + label:last-child { border-radius: 0 3px 3px 0; }\n#dialog-signature .mini-selector + label:hover { color: var(--foreground); background: var(--muted); border-color: var(--border); }\n#dialog-signature .mini-selector:checked + label { position: relative; z-index: 1; border-color: transparent; }\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); color: #ffffff; }\n\n/* Class and hull chips: two even groups, the text divider gone. */\n#dialog-signature .quickSelectBar { display: inline-flex; flex-wrap: nowrap; gap: 3px; font-size: 0; margin: 0; }\n#dialog-signature .row > .quickSelectBar { flex-basis: 100%; margin-left: 60px; }\n#dialog-signature .quickSelectBar button {\n\tmin-width: 26px; height: 22px; padding: 0 5px; border: 1px solid var(--border); border-radius: 3px;\n\tbackground: var(--input); font-family: var(--font-mono); font-size: 10px; font-weight: 600; letter-spacing: .04em; line-height: 1;\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .quickSelectBar button:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature #leadsToQuickBar button[value=\"High-Sec\"] { margin-left: 8px; }\n#dialog-signature .wormholeTypeQuickSelect { margin-left: 0; flex-basis: auto; }\n#dialog-signature .wormholeTypeQuickSelect:empty { display: none; }\n\n/* The side gutter, one column wide, the labels centred in it. */\n#dialog-signature #wormhole .side { padding-left: 20px; }\n#dialog-signature .sideLabel,\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel { width: 14px; left: 0; font-size: 9px; letter-spacing: .2em; }\n\n/* A missing required field: the edge in the danger colour, no halo. */\n#dialog-signature .sig-missing, #dialog-signature .sig-missing:focus { border-color: var(--destructive); box-shadow: none; }\n/* Combobox menu button: its sprite icon was absolutely positioned against\n the wrapper, so it landed inside the input. The button is the positioned\n box, the sprite is gone, and a chevron is drawn in the current colour. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { position: relative; text-indent: 0; overflow: hidden; }\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon,\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space { display: none; }\n#dialog-signature .custom-combobox .custom-combobox-toggle::after {\n\tcontent: \"\"; width: 6px; height: 6px; margin-top: -3px;\n\tborder-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg);\n}\n/* The type menu: text first, chevron at the right edge. */\n#dialog-signature #signatureType .ui-selectmenu-button { display: inline-flex; align-items: center; gap: 6px; padding: 0 8px; width: auto !important; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text { flex: 1 1 auto; margin: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon { order: 2; margin: 0; position: static; }\n/* Lifetime: the duration picker's blocks in one boxed control, numbers in the mono. */\n#dialog-signature .bdp-input {\n\tdisplay: inline-flex; align-items: center; gap: 12px; height: 26px; padding: 0 10px;\n\tborder: 1px solid var(--border); border-radius: 3px; background: var(--input);\n}\n#dialog-signature .bdp-block { display: inline-flex; align-items: baseline; gap: 4px; }\n#dialog-signature .bdp-block br { display: none; }\n#dialog-signature .bdp-block a { text-decoration: none; }\n#dialog-signature .bdp-block a span { font-family: var(--font-mono); font-size: 13px !important; font-weight: 500; color: var(--foreground); line-height: 1; }\n#dialog-signature .bdp-block a:hover span { color: var(--primary); }\n#dialog-signature .bdp-block .bdp-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-foreground); }\n/* The picker's seconds block is hidden by class; keep it that way. The\n control then fits the LENGTH row. */\n#dialog-signature .bdp-block.hidden { display: none !important; }\n#dialog-signature .bdp-input { gap: 10px; padding: 0 8px; }\n/* Combobox: input and button touch, and the pair never outgrows the row. */\n#dialog-signature .custom-combobox { gap: 0; max-width: 100%; }\n#dialog-signature .custom-combobox > * { margin: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle { margin-left: -1px; flex: 0 0 24px; }\n#dialog-signature .custom-combobox input.leadsTo { flex: 1 1 0; width: 0; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { max-width: 100%; }\n/* signatures.css offsets the toggle with right:-20px for its absolute\n layout; on a relative box that is a 20px shove. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { right: auto; left: auto; top: auto; bottom: auto; width: 24px; }\n\n/* Phone: the panel bar has no room for the range control beside the\n panel buttons -- the close button was wrapping onto a second line. The\n graph still shows the last 24h. */\n@media (max-width: 767px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n}\n\n/* ══ Feedback round (first corp feedback, 2026-09-04) ════════════════════ */\n\n/* ── 1. Chain nodes: the same card, half the height ──────────────────────\n The class chip sat on its own line above the name and the statics hung\n half below the card; at zoom 1.2 that was 173x70 with an 84px row pitch\n against upstream's 30px pill. Two lines: chip + name + pips, then hull or\n sig id + statics inline. About 120x40 at zoom 1. Security reads at full\n strength on the left edge and in the chip, in both rooms. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, 1fr) auto;\n\tgrid-template-areas: \"class name pips\" \"type type statics\";\n\talign-items: center; column-gap: 5px; row-gap: 2px;\n\twidth: 120px; min-height: 0; height: auto !important;\n\tpadding: 4px 7px 4px 6px; margin: 0;\n\tborder-left: 3px solid var(--node-edge);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, .35);\n\toverflow: visible;\n}\n#chainMap div.node > .nodeClass { grid-area: class; margin: 0; order: 0; }\n#chainMap div.node > .nodeSystem { grid-area: name; margin: 0; padding: 0; order: 0; font-size: 12px; line-height: 16px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; margin: 0; order: 0; gap: 2px; font-size: 8px; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; order: 0; min-height: 0; font-size: 10px; line-height: 14px; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: .04em; }\n#chainMap div.node > .statics { grid-area: statics; position: static; transform: none; margin: 0; gap: 3px; justify-content: flex-end; order: 0; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 14px; min-width: 18px; padding: 0 5px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > .nodeClass > span { height: 15px; padding: 0 5px; font-size: 10px; }\n#chainMap div.node > .nodeIcons { top: 2px; right: 4px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name pips\"; }\n#chainMap div.loop { width: 120px; padding: 4px 7px; }\n\n/* Security and class on the edge, full strength; tokens carry both rooms. */\n#chainMap div.greenNode.node { border-left-color: var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--data-critical); }\n#chainMap div.node:has(> .nodeClass .wh),\n#chainMap div.node:has(> .nodeClass .class-1), #chainMap div.node:has(> .nodeClass .class-2), #chainMap div.node:has(> .nodeClass .class-3) { border-left-color: var(--data-info); }\n#chainMap div.node:has(> .nodeClass .class-4), #chainMap div.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap div.node:has(> .nodeClass .class-12) { border-left-color: var(--data-loot-gold); }\n#chainMap div.node:has(> .nodeClass .class-15), #chainMap div.node:has(> .nodeClass .class-16), #chainMap div.node:has(> .nodeClass .class-17) { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The class tint stays but reads as a ground, not a wash. */\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-critical) 10%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-loot-orange) 10%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-good) 10%, var(--node-surface)); }\n\n/* ── 4. The chain pans with the wheel again ───────────────────────────────\n #chainParent is the widget's .content, so the panel rule that hides\n overflow outranked its own overflow: auto. Drag-to-pan (dragscroll) had\n kept working, which is why it felt like drag became the only way. */\n#chainWidget > #chainParent.content { overflow: auto; }\n\n/* ── 5. Signature columns: header and cells share one alignment ──────────\n The cells carry the per-column alignment classes from Settings; the\n header now wears the same classes (sig-align.js), so the two agree. */\n#sigTable th, #sigTable td { text-align: left; }\n#sigTable .centerAlign { text-align: center; }\n#sigTable .rightAlign { text-align: right; }\n#sigTable .leftAlign { text-align: left; }\n\n/* ── 7. Three columns from 960px; what gives at the narrow end ─────────── */\n@media (min-width: 960px) and (max-width: 1099px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n\t#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n\t#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 3.2rem; padding-left: 2px; padding-right: 4px; }\n\t#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 4.6rem; }\n}\n\n/* ── 6. Phone: a signature is two lines, nothing hidden ─────────────────── */\n@media (max-width: 767px) {\n\t#sigTable thead { display: none; }\n\t#sigTable tbody tr {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto minmax(0, 1fr) auto auto;\n\t\tgrid-template-areas: \"id type type age\" \"leads leads life mass\";\n\t\tcolumn-gap: 10px; row-gap: 2px;\n\t\tpadding: 7px 10px;\n\t}\n\t#sigTable tbody td { display: block; width: auto !important; padding: 0 !important; height: auto; line-height: 18px; text-align: left !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n\t#sigTable tbody td:nth-child(1) { grid-area: id; font-weight: 600; }\n\t#sigTable tbody td:nth-child(2) { grid-area: type; }\n\t#sigTable tbody td:nth-child(3) { grid-area: age; text-align: right !important; }\n\t#sigTable tbody td:nth-child(4) { grid-area: leads; }\n\t#sigTable tbody td:nth-child(5) { grid-area: life; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:nth-child(6) { grid-area: mass; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:empty { display: none; }\n}\n/* Older per-column rules (an id and a pseudo-class) outranked the shared\n alignment classes on the header; match them with the section in the\n selector. And the phone block had hidden Life and Mass outright. */\n#sigTable thead th.leftAlign, #sigTable tbody td.leftAlign { text-align: left; }\n#sigTable thead th.centerAlign, #sigTable tbody td.centerAlign { text-align: center; }\n#sigTable thead th.rightAlign, #sigTable tbody td.rightAlign { text-align: right; }\n@media (max-width: 767px) {\n\t#sigTable tbody tr > td:nth-child(5), #sigTable tbody tr > td:nth-child(6) { display: block !important; }\n\t#sigTable tbody tr > td:empty { display: none !important; }\n}\n/* The name was being cut to one letter: the pips' non-breaking spaces and\n an old right padding on the name ate the column. The card sizes to its\n name between 118 and 168px, as upstream's pill did; the pips are dots. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: auto; min-width: 118px; max-width: 168px; }\n#chainMap div.node > .nodeSystem { padding-right: 0; overflow: visible; text-overflow: clip; }\n#chainMap div.node > .nodeActivity { font-size: 0; gap: 3px; }\n#chainMap div.node > .nodeActivity > span { font-size: 8px; line-height: 8px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.loop { width: auto; min-width: 118px; }\n/* The name column: sized to the name (the card grows to 168px), and the\n older h4 rule that ellipsised it is matched at its own specificity. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto auto minmax(0, auto); }\n#chainMap div.node > h4.nodeSystem { padding-right: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 120px; height: auto; line-height: 16px; }\n/* k-space security on the edge, both rooms, from the same tokens the chips use. */\n#chainMap div.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The name track sizes to the name (max-content), so the card grows with\n it up to its cap; overflow on the h4 had made its automatic minimum 0. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto max-content auto; }\n/* Flares (a colour a pilot sets on a node from its menu) are not security:\n they tint the ground and the top edge; the left edge stays security. */\n#chainMap div.greenNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .hisec), #chainMap div.yellowNode.node:has(> .nodeClass .hisec), #chainMap div.redNode.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.greenNode.node:has(> .nodeClass .lowsec), #chainMap div.yellowNode.node:has(> .nodeClass .lowsec), #chainMap div.redNode.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.greenNode.node:has(> .nodeClass .nullsec), #chainMap div.yellowNode.node:has(> .nodeClass .nullsec), #chainMap div.redNode.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .wh), #chainMap div.yellowNode.node:has(> .nodeClass .wh), #chainMap div.redNode.node:has(> .nodeClass .wh) { border-left-color: var(--data-info); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-4), #chainMap div.greenNode.node:has(> .nodeClass .class-5),\n#chainMap div.yellowNode.node:has(> .nodeClass .class-4), #chainMap div.yellowNode.node:has(> .nodeClass .class-5),\n#chainMap div.redNode.node:has(> .nodeClass .class-4), #chainMap div.redNode.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-6), #chainMap div.yellowNode.node:has(> .nodeClass .class-6), #chainMap div.redNode.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* Security on the left edge from classes the node now carries itself\n (sec-hisec / sec-lowsec / sec-nullsec / sec-wh + cls-N), so no :has()\n is needed and the build cannot drop it. The card shrink-wraps its name. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: fit-content; margin: 0 auto; }\n#chainMap div.node.sec-hisec, #chainMap div.greenNode.node.sec-hisec, #chainMap div.yellowNode.node.sec-hisec, #chainMap div.redNode.node.sec-hisec { border-left-color: var(--data-good); }\n#chainMap div.node.sec-lowsec, #chainMap div.greenNode.node.sec-lowsec, #chainMap div.yellowNode.node.sec-lowsec, #chainMap div.redNode.node.sec-lowsec { border-left-color: var(--data-loot-orange); }\n#chainMap div.node.sec-nullsec, #chainMap div.greenNode.node.sec-nullsec, #chainMap div.yellowNode.node.sec-nullsec, #chainMap div.redNode.node.sec-nullsec { border-left-color: var(--data-critical); }\n#chainMap div.node.sec-triglavian, #chainMap div.greenNode.node.sec-triglavian, #chainMap div.yellowNode.node.sec-triglavian, #chainMap div.redNode.node.sec-triglavian { border-left-color: var(--data-loot-red); }\n#chainMap div.node.sec-wh, #chainMap div.greenNode.node.sec-wh, #chainMap div.yellowNode.node.sec-wh, #chainMap div.redNode.node.sec-wh { border-left-color: var(--data-info); }\n#chainMap div.node.cls-4, #chainMap div.node.cls-5, #chainMap div.greenNode.node.cls-4, #chainMap div.greenNode.node.cls-5, #chainMap div.yellowNode.node.cls-4, #chainMap div.yellowNode.node.cls-5, #chainMap div.redNode.node.cls-4, #chainMap div.redNode.node.cls-5 { border-left-color: var(--data-loot-purple); }\n#chainMap div.node.cls-6, #chainMap div.greenNode.node.cls-6, #chainMap div.yellowNode.node.cls-6, #chainMap div.redNode.node.cls-6 { border-left-color: var(--data-loot-pink); }\n#chainMap div.node.cls-12, #chainMap div.greenNode.node.cls-12, #chainMap div.yellowNode.node.cls-12, #chainMap div.redNode.node.cls-12 { border-left-color: var(--data-loot-gold); }\n#chainMap div.node.cls-15, #chainMap div.node.cls-16, #chainMap div.node.cls-17 { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node, #chainMap .currentNode > div.node.sec-hisec, #chainMap .currentNode > div.node.sec-wh { border-left-color: var(--primary); }\n/* Chrome trimmed so the width is the name's, not the card's. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { column-gap: 4px; padding: 3px 6px 3px 5px; min-width: 104px; }\n#chainMap div.node > .nodeClass > span { padding: 0 4px; height: 14px; }\n#chainMap div.node > .nodeActivity { gap: 2px; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n/* Leads To is the column that takes the table's slack; centred text in it\n drifts away from Age. Upstream pinned it left whatever the setting. */\n#sigTable thead th:nth-child(4), #sigTable tbody td:nth-child(4),\n#sigTable thead th:nth-child(4).centerAlign, #sigTable tbody td:nth-child(4).centerAlign,\n#sigTable thead th:nth-child(4).rightAlign, #sigTable tbody td:nth-child(4).rightAlign { text-align: left; }\n/* The class chip, top-left, filled in its class colour with white text --\n hisec green, lowsec orange, nullsec red, C1-3 blue, C4-5 purple, C6 pink,\n Thera gold, drifter red -- as upstream coloured its nodes. A later rule\n had been greying the chip's currentColor. Same tokens in both rooms. */\n#chainMap div.node > h4.nodeClass > span {\n\tbackground: var(--node-edge); color: #fff; -webkit-text-fill-color: #fff;\n\tfont-weight: 700; letter-spacing: .04em;\n}\n#chainMap div.node > h4.nodeClass > span.hisec { background: var(--data-good); }\n#chainMap div.node > h4.nodeClass > span.lowsec { background: var(--data-loot-orange); }\n#chainMap div.node > h4.nodeClass > span.nullsec { background: var(--data-critical); }\n#chainMap div.node > h4.nodeClass > span.triglavian { background: var(--data-loot-red); }\n#chainMap div.node > h4.nodeClass > span.wh { background: var(--data-info); }\n#chainMap div.node > h4.nodeClass > span.class-4, #chainMap div.node > h4.nodeClass > span.class-5 { background: var(--data-loot-purple); }\n#chainMap div.node > h4.nodeClass > span.class-6 { background: var(--data-loot-pink); }\n#chainMap div.node > h4.nodeClass > span.class-12 { background: var(--data-loot-gold); color: #1b1b1b; -webkit-text-fill-color: #1b1b1b; }\n#chainMap div.node > h4.nodeClass > span.class-15, #chainMap div.node > h4.nodeClass > span.class-16, #chainMap div.node > h4.nodeClass > span.class-17 { background: var(--data-loot-red); }\n\n/* ── Statics span the second row and wrap; three capsules no longer run\n off the edge (they sat in the column the activity pips size). ───────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-areas: \"class name pips\" \"type statics statics\"; }\n#chainMap div.node > .nodeType { white-space: nowrap; }\n#chainMap div.node > .statics { flex-wrap: wrap; justify-content: flex-end; row-gap: 2px; min-width: 0; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n\n/* ── Flares breathe. ──────────────────────────────────────────────────────\n As Aperture's underglow: a blurred pad in the flare colour behind the\n card, scaling 0.96 -> 1.06 and 28% -> 80% opacity on a 1.4s cycle. The\n card itself keeps its security edge and a faint tint; the top edge is\n gone. Still under reduced-motion. */\n@keyframes flare-glow {\n\t0%, 100% { opacity: .28; transform: scale(.96); }\n\t50% { opacity: .8; transform: scale(1.06); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { position: relative; z-index: 0; border-top-width: 1px; border-top-color: var(--node-edge); }\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before {\n\tcontent: \"\"; position: absolute; inset: -3px; z-index: -1; border-radius: inherit;\n\tbackground: var(--flare, transparent); filter: blur(9px);\n\tanimation: flare-glow 1400ms ease-in-out infinite; pointer-events: none;\n}\n#chainMap div.redNode.node { --flare: var(--data-critical); }\n#chainMap div.yellowNode.node { --flare: var(--data-loot-orange); }\n#chainMap div.greenNode.node { --flare: var(--data-good); }\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--flare) 8%, var(--node-surface)); }\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { animation: none; opacity: .55; }\n}\n\n/* ── Three lines, narrow: chains grow sideways, so width is the currency.\n Line 1 chip + name, line 2 hull or sig id with the pips at the right,\n line 3 the statics (J-space only; k-space cards are two lines). About\n 100 wide and 52 tall at zoom 1, against upstream's ~100 x 30. ─────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-columns: auto minmax(0, max-content);\n\tgrid-template-areas: \"class name\" \"type pips\" \"statics statics\";\n\tcolumn-gap: 4px; row-gap: 1px;\n\tmin-width: 92px; max-width: 140px; padding: 3px 6px 3px 5px;\n}\n#chainMap div.node > .nodeType { grid-area: type; }\n#chainMap div.node > .nodeActivity { grid-area: pips; justify-self: end; }\n#chainMap div.node > .statics { grid-area: statics; justify-content: flex-start; margin-top: 1px; }\n#chainMap div.node > h4.nodeSystem { max-width: 104px; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name\" \"statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name\"; }\n#chainMap div.node:not(:has(> .statics span)) { grid-template-areas: \"class name\" \"type pips\"; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { grid-area: name; justify-self: end; }\n#chainMap div.node > .nodeIcons { top: auto; bottom: 3px; right: 5px; }\n#chainMap div.node > .nodeIcons > div { gap: 3px; }\n\n/* ── Upstream's skeleton: a 32px box. Name, then the hull or sig id under\n it; the class chip rides the top-left corner; statics hang off the\n bottom edge as capsules; pips are dots at the bottom right. About\n 100 x 32 at zoom 1 (upstream: ~100 x 30). ────────────────────────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: block; position: relative; overflow: visible;\n\twidth: fit-content; min-width: 96px; max-width: 150px; height: auto !important;\n\tpadding: 3px 10px 3px 10px; margin: 6px auto 8px;\n\ttext-align: center;\n}\n#chainMap div.node > h4.nodeSystem { display: block; margin: 0; padding: 0 10px 0 0; font-size: 12px; line-height: 14px; max-width: none; }\n#chainMap div.node > .nodeType { display: block; margin: 0; font-size: 9.5px; line-height: 11px; letter-spacing: .04em; min-height: 0; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .nodeClass {\n\tposition: absolute; top: -7px; left: -5px; margin: 0; line-height: 1; z-index: 2;\n}\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 6px; right: 6px; bottom: -7px; margin: 0; z-index: 2;\n\tdisplay: flex; justify-content: center; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeActivity { position: absolute; right: 4px; bottom: 3px; top: auto; margin: 0; gap: 2px; z-index: 1; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeIcons { position: absolute; top: -6px; right: -4px; bottom: auto; left: auto; }\n#chainMap div.node > .nodeIcons > div { gap: 2px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; font-size: 9px; padding: 0 4px; }\n#chainMap div.node.frig-chain { border-width: 1px; }\n#chainMap div.loop { width: fit-content; min-width: 0; padding: 3px 10px; margin: 6px auto 8px; }\n/* The glow is a halo around and behind the box, not a wash across it: an\n animated shadow instead of a pad inside the card's own stacking layer. */\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { content: none; animation: none; }\n@keyframes flare-halo {\n\t0%, 100% { box-shadow: 0 0 6px 1px color-mix(in oklab, var(--flare) 45%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n\t50% { box-shadow: 0 0 16px 5px color-mix(in oklab, var(--flare) 85%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tz-index: auto; border-color: color-mix(in oklab, var(--flare) 60%, var(--node-edge));\n\tanimation: flare-halo 1400ms ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { animation: none; box-shadow: 0 0 12px 3px color-mix(in oklab, var(--flare) 70%, transparent); }\n}\n/* The chip sits inline before the name (it was covering the first letter\n from the corner); the type line gets room above the hanging capsules. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: auto max-content; grid-template-areas: \"class name\" \"type type\";\n\talign-items: center; column-gap: 4px; row-gap: 0;\n\tmin-width: 92px; max-width: 160px; padding: 3px 8px 9px 6px; margin: 4px auto 9px; text-align: left;\n}\n#chainMap div.node > .nodeClass { position: static; grid-area: class; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; padding: 0; line-height: 15px; max-width: 110px; }\n#chainMap div.node > .nodeType { grid-area: type; text-align: left; padding-right: 24px; line-height: 11px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { padding-bottom: 3px; grid-template-areas: \"class name\"; }\n#chainMap div.node:has(> .nodeType:empty):has(> .statics span) { padding-bottom: 8px; }\n#chainMap div.node > .statics { bottom: -7px; left: 4px; right: 4px; justify-content: flex-start; }\n#chainMap div.node > .nodeActivity { right: 5px; bottom: 9px; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { bottom: 4px; }\n#chainMap div.node > .nodeIcons { top: -5px; right: -3px; }\n\n/* ══ Chain node, settled ═══════════════════════════════════════════════════\n Everything in flow on one grid, so nothing can land on anything else at\n any zoom. Row 1: class chip, name, effect / occupant icons, activity\n pips. Row 2: hull or sig id. Statics hang off the bottom edge into space\n the card reserves below itself. 34px tall with a type line, 22 without;\n about 100 wide for a J-name. Upstream: ~100 x 30 with its tabs below. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-areas: \"class name icons pips\" \"type type type type\";\n\talign-items: center; column-gap: 4px; row-gap: 1px;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 3px 7px 4px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: left;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name icons pips\"; padding-bottom: 3px; }\n#chainMap div.node > .nodeClass { grid-area: class; position: static; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; margin: 0; padding: 0; line-height: 15px; font-size: 12px; max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeIcons { grid-area: icons; position: static; display: flex; align-items: center; gap: 3px; width: auto; height: auto; margin: 0; top: auto; right: auto; left: auto; bottom: auto; }\n#chainMap div.node > .nodeIcons:empty { display: none; }\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; align-items: center; gap: 3px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 9px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; justify-self: end; display: flex; align-items: center; gap: 2px; width: auto; height: auto; margin: 0; font-size: 0; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; padding: 0; text-align: left; font-family: var(--font-mono); font-size: 9.5px; line-height: 11px; letter-spacing: .04em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 5px; right: 5px; top: 100%; bottom: auto; margin: -4px 0 0; transform: none; z-index: 2;\n\tdisplay: flex; justify-content: flex-start; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 3px 8px; margin: 3px auto 12px; }\n/* Placement by line numbers, not area names: the minifier had reordered\n the named areas and the icons fell into an implicit fourth row. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-areas: none;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-rows: auto auto;\n\tgrid-auto-rows: 0;\n}\n#chainMap div.node > .nodeClass { grid-area: auto; grid-column: 1; grid-row: 1; }\n#chainMap div.node > h4.nodeSystem { grid-area: auto; grid-column: 2; grid-row: 1; }\n#chainMap div.node > .nodeIcons { grid-area: auto; grid-column: 3; grid-row: 1; }\n#chainMap div.node > .nodeActivity { grid-area: auto; grid-column: 4; grid-row: 1; }\n#chainMap div.node > .nodeType { grid-area: auto; grid-column: 1 / 5; grid-row: 2; }\n#chainMap div.node > .statics { grid-area: auto; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n/* The name's own text is its minimum: overflow: clip is not a scroll\n container, so the grid and the org-chart cell size to the name instead of\n collapsing it to \"P.\" at their minimum. Still ellipsises past 110px. */\n#chainMap div.node > h4.nodeSystem { overflow: clip; text-overflow: ellipsis; min-width: min-content; }\n#chainMap div.node > h4.nodeSystem a { white-space: nowrap; }\n\n/* ══ Chain node: the original's layout, in our clothes ═════════════════════\n Three centred lines -- class chip with the effect beside it, the name,\n the hull or sig id -- the statics hanging off the bottom edge into the\n space between rows, activity dots on the edge, the occupant badge on the\n top-right corner. About 100 x 46 at zoom 1, which is what the original\n measured once its three lines were in it. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: minmax(0, max-content); grid-template-rows: auto auto auto; grid-auto-rows: 0;\n\tjustify-items: center; align-items: center; row-gap: 0; column-gap: 0;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 4px 10px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: center;\n}\n#chainMap div.node > .nodeClass { grid-column: 1; grid-row: 1; position: static; margin: 0; display: inline-flex; align-items: center; gap: 4px; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 5px; font-size: 9px; }\n#chainMap div.node > h4.nodeSystem { grid-column: 1; grid-row: 2; margin: 0; padding: 0; line-height: 16px; font-size: 12.5px; font-weight: 600; max-width: 150px; min-width: min-content; overflow: clip; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeType { grid-column: 1; grid-row: 3; margin: 0; padding: 0; text-align: center; font-family: var(--font-mono); font-size: 10px; line-height: 12px; letter-spacing: .06em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto auto; }\n/* The effect sits beside the class, in flow; the occupant badge rides the corner. */\n#chainMap div.node > .nodeIcons { grid-column: 1; grid-row: 1; position: static; display: contents; }\n#chainMap div.node > .nodeIcons > div { float: none; display: contents; }\n#chainMap div.node > .nodeIcons > div:first-child { display: inline-flex; align-items: center; position: absolute; top: 4px; right: 8px; gap: 2px; }\n#chainMap div.node > .nodeIcons > div:last-child { display: inline-flex; align-items: center; position: absolute; top: -6px; right: -6px; gap: 2px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 13px; padding: 0 5px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n/* Dots on the bottom edge, left; statics hanging from the edge, right of them. */\n#chainMap div.node > .nodeActivity { position: absolute; left: 8px; bottom: -3px; top: auto; right: auto; margin: 0; width: auto; height: auto; display: flex; gap: 3px; font-size: 0; z-index: 2; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .statics { position: absolute; left: auto; right: 6px; top: 100%; bottom: auto; margin: -5px 0 0; transform: none; display: flex; justify-content: flex-end; gap: 3px; flex-wrap: nowrap; z-index: 2; }\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 13px; min-width: 17px; padding: 0 5px; font-size: 9px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 4px 10px; margin: 3px auto 12px; }\n/* The class / security capsule hangs off the top-left corner, the effect\n off the top-right; the box holds name and sig; statics and dots hang off\n the bottom. The gaps between rows carry the capsules, as the original's\n tabs did. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-rows: auto auto; padding: 7px 10px 6px; margin: 9px auto 12px; min-width: 92px;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n#chainMap div.node > .nodeClass { position: absolute; top: -7px; left: -5px; margin: 0; z-index: 3; }\n#chainMap div.node > .nodeClass > span { box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > h4.nodeSystem { grid-row: 1; }\n#chainMap div.node > .nodeType { grid-row: 2; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -7px; right: 6px; }\n#chainMap div.node > .nodeIcons > div:last-child { top: -7px; right: -6px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 12px; text-shadow: 0 0 3px var(--background); }\n#chainMap div.node > .nodeActivity { bottom: -4px; left: 7px; }\n#chainMap div.node > .statics { margin-top: -6px; right: 5px; }\n/* Tooltips appended inside the chain panel position against it, not the\n page: the panel is the containing block. */\n#chainWidget > #chainParent.content { position: relative; }\n/* The corner chip straddles the top edge in the box's own top padding; the\n name starts below it. Mirrors the statics on the bottom edge. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { padding-top: 10px; padding-bottom: 7px; margin-top: 10px; }\n#chainMap div.node > .nodeClass { top: -7px; left: -5px; }\n#chainMap div.node > .nodeClass > span { height: 14px; }\n/* The desktop layout pins every panel's .content static with !important;\n the chain panel must be the containing block for its tooltips. */\n#chainWidget > #chainParent.content { position: relative !important; }\n/* An absolutely positioned child of a grid is placed against its grid\n area when it has one; the chip and the dots must be placed against the\n box, so they get no area. And the rows sit 5px closer. */\n#chainMap div.node > .nodeClass, #chainMap div.node > .nodeActivity, #chainMap div.node > .statics,\n#chainMap div.node > .nodeIcons > div { grid-area: auto; grid-row: auto; grid-column: auto; }\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { margin-top: 8px; margin-bottom: 9px; }\n/* The pilot icon and its count sit a little inside the top-right corner,\n and the chain panel keeps headroom above its first row so nothing that\n rides a top edge is clipped by the panel. */\n#chainMap div.node > .nodeIcons > div:last-child { top: -5px; right: -3px; gap: 1px; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -6px; right: 22px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainWidget > #chainParent.content { padding-top: 12px !important; }\n/* The pilot count is centred in its capsule (it is a flex box, which does\n not centre on its own), with a round minimum so \"1\" and \"12\" both sit true. */\n#chainMap div.node > .nodeIcons .badge { justify-content: center; min-width: 14px; padding: 0 4px; box-sizing: border-box; text-align: center; }\n"]} \ No newline at end of file +{"version":3,"sources":["_tokens.css","base.css","account.css","chainmap-radial.css","chainmap.css","command-palette.css","comments.css","dialog-admin.css","dialog-mass.css","dialog-options.css","forms.css","gridster.css","icons.css","introjs.css","jbox.css","mask.css","signatures.css","tripwire.css","_override-1-system.css","_override-3-panels.css","_override-4-signature-dialog.css","_override-5-responsive.css","_override-6-system-panel.css","_override-7-map-and-table.css","_override-8-layout.css","_override-9-chain-tabs.css","_override-a-header.css","_override-b-fixes.css","_override-c-polish.css","_override-d-phone.css","_override-e-scale.css","_override-f-dialog.css","_override-g-bars.css","_override-h-nodes.css","_override-i-inline.css","_override-j-type-roles.css","_theme-base.css","_theme-refit.css"],"names":[],"mappings":"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","file":"app.min.css","sourcesContent":["/* ============================================================================\n Design tokens.\n\n Every colour in app/css resolves through one of these. Two families, kept\n deliberately separate:\n\n --n-* Neutral chrome. Flips with the theme.\n --data-* --ui-* --chart-* EVE data semantics: wormhole class, jump-mass\n band, security, loot, status pills, chart\n series. These encode *meaning*, not brand.\n\n The :root block is the dark theme (\"ops floor\"). Its values are identical to\n the literals they replaced, so this extraction does not change dark\n rendering at all.\n\n The light block (\"front office\") inverts the neutral ramp, and darkens the\n 25 data colours that are used as TEXT until they clear 4.5:1 against the\n light panel. Data colours used only as fills are left untouched -- their\n contrast partner is whatever sits on top of them, which is a separate\n question from this ramp.\n\n Brand colours are NOT defined here. A theme file overrides these tokens.\n ========================================================================= */\n\n:root {\n /* neutral ramp -- n-000 darkest .. n-999 lightest */\n --glow-60: rgba(255, 255, 255, .6);\n --n-000: #000000;\n --n-020: #080808;\n --n-050: #111111;\n --n-100: #222222;\n --n-120: #282828;\n --n-200: #333333;\n --n-220: #3b3b3b;\n --n-250: #404040;\n --n-300: #444444;\n --n-400: #555555;\n --n-500: #666666;\n --n-550: #777777;\n --n-560: #7a7a7a;\n --n-600: #888888;\n --n-650: #999999;\n --n-700: #aaaaaa;\n --n-750: #bbbbbb;\n --n-800: #cccccc;\n --n-850: #dddddd;\n --n-870: #ebebeb;\n --n-880: #eeeeee;\n --n-900: #f0f0f0;\n --n-920: #f4f4f4;\n --n-940: #f7f7f7;\n --n-960: #fafafa;\n --n-999: #ffffff;\n --scrim-60: rgba(0, 0, 0, .6);\n --scrim-70: rgba(0,0,0,0.7);\n --scrim-80: rgba(0, 0, 0, .8);\n --scrim-n020: rgba(10, 10, 10, 0.6);\n --scrim-n050: rgba(17, 17, 17, .7);\n --scrim-n120: rgba(40, 40, 40, .9);\n --scrim-n200: rgba(51, 51, 51, .7);\n --shadow-20: rgba(0,0,0,0.2);\n --shadow-20b: rgba(0, 0, 0, 0.2);\n --shadow-25: rgba(0, 0, 0, 0.25);\n --shadow-25b: rgba(0, 0, 0, .25);\n --shadow-30: rgba(0, 0, 0, .3);\n --stroke-n120: rgba(40, 40, 40, 0.8);\n --veil-danger: rgba(255, 0, 0, .3);\n --veil-grey: rgba(120, 120, 120, .1);\n --veil-silver: rgba(192, 192, 192, .3);\n\n /* data semantics */\n --chart-1: #3366cc;\n --chart-2: #dc3912;\n --chart-3: #ff9900;\n --chart-4: #109618;\n --data-alliance: #00a0ff;\n --data-bronze: #e28a0d;\n --data-brown: #744700;\n --data-class-amber: #996600;\n --data-class-blue: #00286e;\n --data-class-blue-deep: #001b47;\n --data-class-cyan: #0070a0;\n --data-class-green: #004400;\n --data-class-green-deep: #003300;\n --data-class-lime: #00aa00;\n --data-class-orange: #8a4117;\n --data-class-orange-deep: #80370d;\n --data-class-red: #881100;\n --data-class-red-deep: #661100;\n --data-class-sky: #3388dd;\n --data-class-temp: #004080;\n --data-class-void: #000810;\n --data-critical: #ff4747;\n --data-danger: #d93627;\n --data-focus-ring: #998800;\n --data-focus-ring-soft: #ff8c0080;\n --data-good: #50d25a;\n --data-info: #4399f0;\n --data-jm-2000kt: #ffb060;\n --data-jm-375kt: #909090;\n --data-jm-5kt: #40e0ff;\n --data-jm-62kt: #90ff90;\n --data-link: #428bca;\n --data-loot-blue: #6060f0;\n --data-loot-gold: #ffc800;\n --data-loot-orange: #f58504;\n --data-loot-pink: #f06090;\n --data-loot-purple: #9060f0;\n --data-loot-red: #f06060;\n --data-magenta: #e06fdf;\n --data-olive: #999900;\n --data-pale-yellow: #ffffbb;\n --data-triglavian: #ff2060;\n --data-warn: #f5b544;\n --ui-amber: #ffb11f;\n --ui-amber-lit: #ffd665;\n --ui-blue: #2b91d9;\n --ui-blue-lit: #5abaff;\n --ui-green: #70a800;\n --ui-green-lit: #95cc2a;\n --ui-red: #b02222;\n --ui-red-lit: #ee2222;\n}\n\n/* Front office. Only tokens that must change are redefined. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n }\n}\n:root[data-theme=\"light\"] {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n}\n","@font-face {\n\tfont-family: 'lucida';\n\tsrc:url('../fonts/lucida.ttf?w81bs6') format('truetype');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n* {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nhtml, body {\n\theight: 100%;\n}\n\nhtml {\n font-size: .6em;\n font-family: Verdana, 'Helvetica Neue', Arial, sans-serif;\n color: var(--n-600);\n line-height: 1.1;\n min-height: 100%;\n}\n\na {\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tcolor: var(--n-800);\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcolor: var(--n-999);\n}\n\nhr { margin: 4px; }\nhr.bar { border-style: solid }\n\ni {\n\tcursor: pointer;\n}\n\ni.disabled {\n\topacity: .4;\n\tcursor: default;\n}\n\n.invisible {\n\tvisibility: hidden;\n}\n\n.hidden {\n\tdisplay: none;\n}\n\n.align-left {\n\tfloat: left;\n}\n\n.align-right {\n\tfloat: right;\n}\n\n.pointer {\n\tcursor: default;\n}\n\n.text-left {\n\ttext-align: left;\n}\n\n.text-right {\n\ttext-align: right;\n}\n\n.text-center {\n\ttext-align: center;\n}\n\ni.active, a.active {\n\tcolor: orange;\n}\n\n/* All of these styles want to be more specific than a normal class selector so the text colour wins */\nbody .wh, body .class-1, body .class-2, body .class-3 {\n\tcolor: var(--data-info);\n}\n\nbody .class-4, body .class-5 {\n\tcolor: var(--data-loot-purple);\n}\n\nbody .class-6 {\n\tcolor: var(--data-loot-pink);\n}\n\nbody .class-12 {\t/* Thera */\n\tcolor: var(--data-loot-gold);\n}\n\nbody .class-15, body .class-16, body .class-17 {\t/* Drifter */\n\tcolor: var(--data-loot-red);\n}\n\nbody .hisec, body .stable, body .frig {\n\tcolor: var(--data-good);\n}\n\nbody .lowsec, body .destab {\n\tcolor: var(--data-loot-orange);\n}\n\nbody .nullsec, body .critical {\n\tcolor: var(--data-critical);\n}\n\nbody .triglavian { color: var(--data-triglavian); }\n\n.blue-loot, .blue-loot .hisec { color: var(--data-loot-blue); }\n\n.jumps {\n\tcolor: var(--chart-1);\n}\n\n.pods {\n\tcolor: var(--chart-2);\n}\n\n.ships {\n\tcolor: var(--chart-3);\n}\n\n.npcs {\n\tcolor: var(--chart-4);\n}\n\n.thermal-icon {\n\tcontent: url(\"../images/th.png\");\n\theight: 16px;\n}\n\n.kinetic-icon {\n\tcontent: url(\"../images/kn.png\");\n\theight: 16px;\n}\n\n.explosive-icon {\n\tcontent: url(\"../images/exp.png\");\n\theight: 16px;\n}\n\n.em-icon {\n\tcontent: url(\"../images/em.png\");\n\theight: 16px;\n}\n\n/* Scrollbar. Body properties are standards-compliant but only work in Firefox.\n-webkit-* works in Chrome/Safari/etc */\n/* We must tell Chrome not to use these or it will disable all the -webkit-scrollbar things - https://stackoverflow.com/questions/77893503 */\n@supports not selector(::-webkit-scrollbar) {\n\tbody {\n\t\t/* Standards - Firefox. Use slightly less contrasty colours because the bar will be wider */\n\t\tscrollbar-width: thin;\n\t\tscrollbar-color: var(--n-300) var(--n-050);\n\t}\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n}\n\n::-webkit-scrollbar-button:start:decrement,\n::-webkit-scrollbar-button:end:increment {\n height: 2em;\n display: none;\n background-color: black;\n}\n\n::-webkit-scrollbar-track { background-color: var(--n-220); }\n::-webkit-scrollbar-thumb {\tbackground-color: var(--n-500);}\n::-webkit-scrollbar-thumb:hover { background-color: var(--n-650);}\n\n::-webkit-scrollbar-corner {\n\tbackground-color: transparent;\n}\n/* ---------- */\n\n::-webkit-input-placeholder {\n color: var(--n-600);\n}\n\n:-moz-placeholder { /* Firefox 18- */\n color: var(--n-600);\n}\n\n::-moz-placeholder { /* Firefox 19+ */\n color: var(--n-600);\n}\n\n:-ms-input-placeholder {\n color: var(--n-600);\n}\n\n@-webkit-keyframes spin {\nfrom { -webkit-transform: rotate(0deg); }\nto { -webkit-transform: rotate(360deg); }\n}\n\n@-moz-keyframes spin {\nfrom { -moz-transform: rotate(0deg); }\nto { -moz-transform: rotate(360deg); }\n}\n\n@-o-keyframes spin {\nfrom { -o-transform: rotate(0deg); }\nto { -o-transform: rotate(360deg); }\n}\n\n@keyframes spin {\n\tfrom { transform: rotate(0deg); }\n\tto { transform: rotate(360deg); }\n}\n\n.transition {\n\t/* -webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransition: 0.3s all ease-out;\n\t-webkit-transition: 0.3s all ease-out;\n\t-moz-transition: 0.3s all ease-out;\n\t-ms-transition: 0.3s all ease-out;\n\t-o-transition: 0.3s all ease-out; */\n}\n\n.scale {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransform: scale(0.9);\n\t-webkit-transform: scale(0.9);\n\t-moz-transform: scale(0.9);\n\t-ms-transform: scale(0.9);\n\t-o-transform: scale(0.9);\n\n\toverflow: hidden;\n}\n\n.blur {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n filter: blur(1px);\n -webkit-filter: blur(1px);\n\t-moz-filter: blur(1px);\n\t-ms-filter: blur(1px);\n\t-o-filter: blur(1px);\n\tfilter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='1');\n}\n","#login {\n\tposition: relative;\n}\n\n#login #panel {\n\tdisplay: none;\n}\n\n#login img {\n border-radius: 3px;\n}\n\n.triangle {\n\tposition: absolute;\n\ttop: -5px;\n\tright: 15px;\n\tborder-left: 5px solid transparent;\n\tborder-right: 5px solid transparent;\n\tborder-bottom: 5px solid var(--n-300);\n}\n\n#login #content {\n\tposition: absolute;\n\ttop: 20px;\n\tright: 0px;\n\n\tfont-size: 1.1em;\n\n\tline-height: normal;\n\tpadding: 5px;\n}\n\n#login #content #track {\n\tborder-right: 1px solid gray;\n\tpadding-right: 2px;\n\tmin-width: 160px;\n}\n\n#login #content #track .tracking-clone {\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n cursor: pointer;\n\topacity: .4;\n transition: all 0.2s ease;\n\n\tmargin-bottom: 2px;\n}\n\n#login #content #track .tracking-clone:hover {\n\tborder-color: var(--n-400);\n opacity: 1;\n}\n\n#login #content #track .tracking-clone.active {\n\tborder-color: darkorange;\n opacity: 1;\n}\n\n#login #content table {\n\ttext-align: right;\n\twidth: 100%;\n}\n\n#login #content table th {\n\ttext-align: right;\n\tpadding-right: 5px;\n}\n\n#login #content table td {\n\ttext-align: left;\n}\n\n#login #content table .text {\n\tpadding: 0 10px 0 3px;\n\twhite-space: nowrap;\n}\n\n#login #content .avatar {\n\theight: 1px;\n\twidth: 1px;\n}\n\n#login #content table td #logout {\n\tfloat: right;\n}\n\n#login #content #error {\n\tcolor: var(--data-critical);\n}\n\n#logo {\n\tcolor: var(--n-800);\n}\n\n#logo > span > div > canvas {\n\tvertical-align: middle;\n}\n\n#login #error {\n\tfont-weight: bold;\n\ttext-align: center;\n}\n\n#link, #account {\n\twhite-space: nowrap;\n\tcolor: var(--n-500);\n}\n\n#link {\n\tvertical-align: top;\n}\n\n#login #logoutTable tbody th {\n\ttext-align: center;\n\tcolor: var(--n-800);\n\tbackground: var(--n-400);\n}\n\n#logoutTable tbody tr td {\n\tvertical-align: top;\n}\n\n#tracking {\n\tdisplay: block;\n\toverflow-y: auto;\n\tmax-height: 332px;\n}\n\n#tracking [data-icon=\"red-giant\"].stable:before {\n\tcolor: var(--data-good);\n}","/* Styles relating to the radial map renderer */\n#chainMap .radial-map .node.top-level {\n\tborder-radius:200px;\n\tpadding: 10px;\n\tborder: 4px var(--data-class-temp) solid;\n\tfont-size: 120%;\n}\n\n#chainMap .radial-map .top-level .nodeIcons {\n top: 0.9em;\n}\n\n.radial-map {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.radial-map .map-chain-wrapper {\n\toverflow:hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin: 0 10px;\n}\n\n.map-outer-container {\n\tposition: relative;\n}\n\n.map-inner-container {\n\tposition: absolute;\n}\n\n.map-inner-container .node-wrapper {\n\tposition:absolute;\n\twidth: 0; height: 0;\n}\n\n#chainMap .node-wrapper > div.node {\n\ttransform: translate(-50%, -50%);\t/* centre around position */\n}\n\n.map-drawing {\n\tposition: absolute;\n}\n\n.temp { border-style: solid; }\t/* Some border properties don't resolve if the element has no border */\n\n/* 'color' is used to cue the aura effect in canvas drawing */\n.temp { border-width: 2px; border-color: var(--data-class-temp); }\n.temp.jm-5kt, #guide .jm-5kt { border-width: 1px; color: var(--data-jm-5kt); }\n.temp.jm-62kt, #guide .jm-62kt { border-width: 3px; color: var(--data-jm-62kt); }\n.temp.jm-375kt, #guide .jm-375kt { border-width: 5px; color: var(--data-jm-375kt); }\n.temp.jm-2000kt, #guide .jm-2000kt { border-width: 7px; color: var(--data-jm-2000kt); }","#chainMap {\n\t-webkit-user-select: none; /* Chrome all / Safari all */\n\t-moz-user-select: none; /* Firefox all */\n\t-ms-user-select: none; /* IE 10+ */\n\n\t/* No support for these yet, use at own risk */\n\t-o-user-select: none;\n\tuser-select: none;\n}\n\n#chainMap .google-visualization-orgchart-table * {\n\tpadding: 0px;\n}\n\n#chainMap .google-visualization-orgchart-table {\n\tpadding: 0 5px;\n\tpadding-right: 0px;\n\twidth: 1px;\n\tmargin: 0 auto;\n}\n\n#chainMap td.node {\n\twhite-space: nowrap;\n\ttext-align: center;\n\tvertical-align: middle;\n\tfont-family: verdana;\n\tfont-size: 1em;\n\tcursor: default;\n\tline-height: 1;\n\tborder: none;\n\tbackground: none;\n}\n\n#chainMap div.node {\n\theight: 30px;\n\tmin-width: 5em;\n\tdisplay: inline-block;\n\tmargin-left: auto; margin-right: auto;\t/* centre horizontally within cell */\n\tborder: 2px solid var(--n-200);\n border-top-left-radius: 15px 50px;\n border-top-right-radius: 15px 50px;\n\tborder-bottom-left-radius: 15px 50px;\n border-bottom-right-radius: 15px 50px;\n\n\tbackground-color: var(--n-050);\n\tbackground: linear-gradient(var(--n-100), var(--n-050));\n\n\tbox-shadow: 2px 2px 8px var(--shadow-20);\n}\n\n#chainMap div.node.third-party {\n\tbackground: var(--n-050);\n\tfont-style: italic;\n\tfilter: saturate(50%) brightness(80%)\n}\n\n#chainMap /*td.node >*/ div.node.loop {\t/* more specific than others nearby, because we want these over flares/current node */\n\tmin-width: auto;\n/*\twidth: 30px;*/\n\tborder-radius: 100px;\n\tborder-color: var(--data-class-cyan);\n}\n\n#chainMap div.loop {\t/* less specific, so flares/current node works over this */\n\tbackground: var(--data-class-void);\n}\n\ndiv.loop .nodeIcons, div.loop .nodeType, div.loop .statics, div.loop .nodeActivity {\n\tdisplay:none;\n}\n\t\n#chainMap .currentNode > div.node {\n\tborder-color: var(--data-class-blue);\n\tbackground: var(--data-class-blue-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-blue-deep) 0%, var(--data-class-blue) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-blue-deep)), to(var(--data-class-blue)));\n}\n\n#chainMap div.redNode.node {\n\tborder-color: var(--data-class-red);\n\tbackground: var(--data-class-red-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-red-deep) 0%, var(--data-class-red) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-red-deep)), to(var(--data-class-red)));\n}\n\n#chainMap div.yellowNode.node {\n\tborder-color: var(--data-class-orange);\n\tbackground: var(--data-class-orange-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-orange-deep) 0%, var(--data-class-orange) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-orange-deep)), to(var(--data-class-orange)));\n}\n\n#chainMap div.greenNode.node {\n\tborder-color: var(--data-class-green);\n\tbackground: var(--data-class-green-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-green-deep) 0%, var(--data-class-green) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-green-deep)), to(var(--data-class-green)));\n}\n\n#chainMap div.node.frig-chain {\n\tborder-color: var(--data-class-lime);\n\tborder-width: 1px;\n}\n\n#chainMap .node a {\n\tfont-weight: normal;\n}\n\n#chainMap span.badge {\n\tdisplay: inline-block;\n\tcolor: var(--n-750);\n\tbackground-color: var(--n-100);\n\tbox-shadow: 0px 0px 6px 2px var(--n-050);\n\tfont-family: monospace;\n\tpadding: 2px 2px;\n\tmin-width: 8px;\n\tfont-size: 9px;\n\tfont-weight: 300;\n\tline-height: 1;\n\ttext-align: center;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\tborder-radius: 10px;\n}\n\n#chainMap .nodeIcons {\n\tposition: absolute;\n\ttop: 0.1em;\n\twidth: 50px;\n\theight: 0;\t/* so it doesn't overlay the class text for tips */\n\tright: 50%;\n\tmargin-right: -25px;\n}\n\n#chainMap [data-nodeid] {\n\tposition: relative;\n\ttext-align: center;\n}\n\n#chainMap [data-nodeid] h4 {\n\tfont-weight: normal;\n\twhite-space: nowrap;\n}\n\n#chainMap .nodeType {\n\ttext-transform: uppercase;\n}\n\n#chainMap .nodeActivity {\n\tposition: absolute;\n\tbottom: 3px;\n\tright: 50%;\n\twidth: 50px;\n\theight: 1px;\n\tmargin-right: -25px;\n\tpointer-events: none;\t/* so it doesn't overlay the link */\n}\n\n#chainMap .nodeActivity * { pointer-events: initial }\n\n#chainMap .statics {\n\tposition: absolute;\n\tbottom: -1.5em;\n}\n\n#chainMap .statics span {\n\tdisplay: inline-block;\n\tbackground: navy;\n\tborder-radius: 0 0 50px 50px;\n\twidth: 8px;\n\theight: 10px;\n\tborder: 2px solid var(--n-200);\n}\n\n#chainMap .statics span:nth-child(2) {\n\tmargin-right: 10px;\t/* To leave a gap for the connection when 3+ statics */\n}\n\n#chainMap i[data-icon=\"user\"] {\n\tpadding: 3px;\n\tcursor: default;\n}\n\n#chainMap i.whEffect {\n\tpadding-left: 3px;\n\tcursor: default;\n}\n\n#chainMap i.nodeActivity > span {\n\tpadding: 2px;\n}\n\n/* These styles need the specific selectors because they need to override presets */\n.critical, #chainMap .critical, #guide .critical { border-color: var(--data-critical); }\n.destab, #chainMap .destab, #guide .destab { border-color: var(--data-warn); }\n.gate, #chainMap .gate, #guide .gate { border-color: darkgray; }\n.eol, #chainMap .eol, #guide .eol { border-style: dashed; }\n.frig, #chainMap .frig, #guide .frig { border-color: var(--data-good); }\n\n.tab {\n\tdisplay: inline-block;\n\tmin-width: 75px;\n\tborder-bottom: 2px solid var(--n-200);\n\tcursor: pointer;\n\tvertical-align: top;\n\ttext-align: right;\n}\n\n.tab:hover {\n\tborder-bottom-color: var(--n-500);\n}\n\n.tab.current {\n\tborder-bottom-color: var(--data-info);\n}\n\n.tab .name {\n\tpadding-left: 4px;\n\tfloat: left;\n}\n\n.tab .closeTab, .tab .editTab {\n\topacity: 0;\n\tvisibility: hidden;\n\tfloat: right;\n\tfont-size: .8em;\n\tpadding: 2px 2px 0 4px;\n\n\ttransition: opacity .15s ease-out;\n\t-moz-transition: opacity .15s ease-out;\n\t-webkit-transition: opacity .15s ease-out;\n\t-o-transition: opacity .15s ease-out;\n}\n\n.tab:hover .closeTab, .tab.current:hover .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#guide td:first-child {\n\twidth: 30px;\n}\n\n#guide div {\n\twidth: 20px;\n\tborder-width: 0;\n\tborder: 2px solid var(--data-class-sky);\n\tborder-top-style: none !important;\t/* so we only get one border even when border style is overridden by eol */\n\tborder-left-style: none !important;\n\tborder-right-style: none !important;\n}\n\n#guide div.frig { border-width: 1px; }\n#guide div.aura { box-shadow: 0 0 5px 2px; }\n\n[data-icon=\"user\"] + .badge {\n\tposition: absolute;\n\ttop: -5px;\n\tright: -12px;\n}\n\ntd.google-visualization-orgchart-linenode[data-signatureid] {\n\tcursor: pointer;\n}\n\n/* Grid lines and flare text */\n#chainGrid .grid-default { color: var(--n-550);}\n.red { color: var(--data-critical);}\n.yellow { color: var(--data-warn);}\n.green { color: var(--data-good);}\n\n#chainGrid {\n\tposition: absolute;\n\twidth: 100%;\n\tz-index: -10;\n\tmargin-left: -3px;\t\n}\n\n#chainGrid .top td {\n\theight: 18px;\n}\n\n#chainGrid .line td {\n\theight: 28px;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#chainGrid .space td {\n\theight: 13px;\n}\n\n#chainGrid .red td {\n\tborder-bottom-color: var(--data-critical);\n}\n\n#chainGrid .yellow td {\n\tborder-bottom-color: var(--data-warn);\n}\n\n#chainGrid .green td {\n\tborder-bottom-color: var(--data-good);\n}\n\n#chainTabs {\n\tpadding-right: 10px;\n}\n","/* Command palette and the shortcuts overlay.\n Colours come from the token layer, so this follows whatever theme is loaded\n rather than hard-coding a palette. */\n\n#cmd-palette,\n#cmd-help {\n\tposition: fixed;\n\tinset: 0;\n\tz-index: 10000;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: center;\n\tpadding-top: 12vh;\n\tbackground: var(--scrim-60);\n}\n\n#cmd-palette.hidden,\n#cmd-help.hidden { display: none; }\n\n#cmd-palette .cmd-box,\n#cmd-help .cmd-box {\n\twidth: min(560px, 92vw);\n\tbackground: var(--n-100);\n\tborder: 1px solid var(--n-300);\n\tbox-shadow: 0 12px 40px var(--scrim-70);\n\tfont-size: 1.25em;\n}\n\n#cmd-input {\n\tdisplay: block;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\tpadding: 12px 14px;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--n-300);\n\tbackground: transparent;\n\tcolor: var(--n-999);\n\tfont-family: inherit;\n\tfont-size: 1em;\n\toutline: none;\n}\n\n#cmd-input::placeholder { color: var(--n-600); }\n\n#cmd-list {\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 4px 0;\n\tmax-height: 46vh;\n\toverflow-y: auto;\n}\n\n#cmd-list li {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: 10px;\n\tpadding: 7px 14px;\n\tcursor: pointer;\n\tcolor: var(--n-800);\n}\n\n#cmd-list li.sel { background: var(--n-200); color: var(--n-999); }\n\n/* Listed but unavailable -- undo with nothing to undo, edit with nothing\n selected. Shown rather than hidden so the palette is a stable map of what\n exists. */\n#cmd-list li.off { opacity: .4; cursor: default; }\n\n#cmd-list li.danger.sel { background: var(--data-critical); color: var(--n-050); }\n\n#cmd-list .cmd-label { flex: 1 1 auto; }\n\n#cmd-list .cmd-group,\n#cmd-list .cmd-keys {\n\tflex: 0 0 auto;\n\tfont-size: .8em;\n\tcolor: var(--n-600);\n\ttext-transform: uppercase;\n\tletter-spacing: .06em;\n}\n\n#cmd-list li.sel .cmd-group,\n#cmd-list li.sel .cmd-keys { color: var(--n-750); }\n\n#cmd-list .cmd-keys {\n\ttext-transform: none;\n\tletter-spacing: 0;\n\tborder: 1px solid var(--n-400);\n\tborder-radius: 2px;\n\tpadding: 1px 5px;\n}\n\n#cmd-list .cmd-empty { color: var(--n-600); cursor: default; }\n\n.cmd-foot {\n\tdisplay: flex;\n\tgap: 16px;\n\tpadding: 8px 14px;\n\tborder-top: 1px solid var(--n-300);\n\tfont-size: .78em;\n\tcolor: var(--n-600);\n}\n\n.cmd-foot b { color: var(--n-800); font-weight: normal; }\n\n/* Shortcuts overlay */\n#cmd-help .cmd-box { padding: 18px 20px; }\n#cmd-help h2 { margin: 0 0 12px; color: var(--n-999); font-size: 1.1em; }\n#cmd-help table { border-collapse: collapse; width: 100%; }\n#cmd-help th {\n\ttext-align: left;\n\tpadding: 4px 14px 4px 0;\n\twhite-space: nowrap;\n\tcolor: var(--n-999);\n\tfont-weight: normal;\n}\n#cmd-help td { padding: 4px 0; color: var(--n-800); }\n#cmd-help p { margin: 14px 0 0; color: var(--n-600); font-size: .9em; }\n#cmd-help b { color: var(--n-999); }\n",".cke .cke_button__source_label {\n\tdisplay: none;\n}\n\n.cke .cke_maximized {\n\tbackground: black;\n}\n\n.comment {\n\tborder-bottom: 1px solid var(--n-300);\n}\n\n.commentSticky {\n\tpadding-left: 3px;\n}\n\n.commentToolbar .commentControls::before {\n\tdisplay: inline-block;\n\tcontent: '';\n\theight: 100%;\n\tvertical-align: bottom;\n}\n\n.commentToolbar, .commentFooter {\n\tfont-size: .9em;\n\tcolor: var(--n-650);\n}\n\n.commentToolbar {\n\theight: 26px;\n}\n\n.commentFooter {\n\tpadding: 3px;\n}\n\n.commentControls {\n\tfloat: right;\n\theight: 100%;\n}\n\n.commentStatus, .commentTitle {\n\tfloat: left;\n\theight: 100%;\n}\n\n.commentModified {\n\tdisplay: block;\n\tpadding-top: 3px;\n\tpadding-bottom: 3px;\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.commentToolbar .commentControls, .commentSticky {\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.comment:hover .commentControls, .comment:hover .commentModified, .comment:hover .commentSticky, .commentSticky.active {\n\topacity: 1;\n}\n\n.commentBody {\n\tcolor: var(--n-800);\n\tpadding: 8px;\n\t//white-space: pre-wrap; /* CSS3 */\n\t//white-space: -moz-pre-wrap; /* Firefox */\n\t//white-space: -pre-wrap; /* Opera <7 */\n\t//white-space: -o-pre-wrap; /* Opera 7 */\n\tword-wrap: break-word; /* IE */\n}\n\n.commentBody a {\n\tcolor: darkorange;\n}\n\n.commentBody ol, .commentBody ul, .commentBody dl {\n\t/* IE7: reset rtl list margin. (#7334) */\n\t*margin-right: 0px;\n\t/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/\n\tpadding: 0 40px;\n}\n","#dialog-admin .menu {\n\twidth: 100px;\n\theight: 100%;\n\tfloat: left;\n}\n\n#dialog-admin .window {\n\theight: 100%;\n\tmargin-left: 100px;\n\toverflow: auto;\n}\n\n#dialog-admin .menu li {\n\tlist-style-type: none;\n}\n\n#dialog-admin .menu li a {\n\tcolor: var(--n-500);\n}\n\n#dialog-admin .menu li a:focus {\n\toutline: none;\n}\n\n#dialog-admin .menu li.active a {\n\tcolor: orange;\n}\n\n#dialog-admin #userTable th {\n\ttext-align: left;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#dialog-admin #userTable tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-700);\n}\n\n#dialog-admin .tablesorter .tablesorter-header i:before, #dialog-admin .tablesorter .sortable i:before {\n\tfloat: none;\n}\n\n#dialog-admin .tablesorter .headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerAsc {\n\tcolor: orange;\n}\n\n#dialog-admin .tablesorter .headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerDesc {\n\tcolor: orange;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .menu {\n\tmargin-right: 6px;\n\tborder-right: 1px solid var(--n-700);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window [data-window] {\n\theight: 100%;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window table tbody tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-650);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .ui-dialog-traypane {\n\tmargin-left: 120px;\n\tmargin-top: 8px;\n\tfont-size: 16px;\n\tcolor: var(--n-200);\n}\n","/* Hide rows based on selection */\n#dialog-mass:has(input[value='all']:checked) tr#small-mass,\n#dialog-mass:has(input[value='all']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='all']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='cruiser']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='cruiser']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='cruiser']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Medium,\n#dialog-mass:has(input[value='battleship']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='capital']:checked) tr.mass-Small, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Medium, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Large { display: none }\n\n/* Mod selectors */\n.inactive { opacity: 0.5 }\n\n/* Table alignment and spacing */\n#massTableContainer {\n\ttext-wrap: nowrap;\n\tmargin-top: 1em;\n\tmax-height: 200px;\n\toverflow-y: auto;\n}\n\n#massTable td:nth-child(1) {\n\tmin-width: 12em;\n}\n\n#massTable td:nth-child(2) {\n\tmin-width: 2em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(3) {\n\twidth: 12em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(4), #massTable th:nth-child(4) {\n\twidth: 8em;\n\ttext-align: right;\n}\n\n#massTable td:nth-child(5) {\n\twidth: 14em;\n\ttext-align: right;\n}\n","#dialog-options input[type=\"radio\"] + label {\n\tvertical-align: top;\n}\n\ndiv.ui-slider { display: inline-block; width: calc(75% - 3px); margin-right: 3px }\n\n#dialog-options input[type=\"text\"], #dialog-options input[type=\"password\"], #dialog-options select { width: 75% }\n\n#dialog-options label[for=uiscale-slider] {\n padding: 0 8px;\n}\n\n#dialog-editMask label {\n\twidth: 100%;\n\tmargin-left: -5px;\n}\n\n#dialog-EVEsearch #EVESearchResults {\n\tmax-height: 320px;\n\toverflow: auto;\n\tpadding-left: 5px;\n padding-right: 10px;\n}\n\n#EVESearchResults label {\n\twidth: 100%;\n\tmargin-left: -5px;\n\topacity: 1;\n}\n\n.optionsTable th {\n\ttext-align: left;\n}\n\n.optionsTable td {\n\ttext-align: right;\n}\n\ntr.line td, tr.line th {\n\tborder-bottom: 1px solid var(--n-400);\n}\n\n.optionsTable tr {\n\theight: 2em;\n}\n\n.ui-accordion .ui-accordion-content {\n\tpadding: 0.5em;\n\tbackground: none;\n\tborder-color: var(--n-050);\n}\n\n.ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n}\n\n#masks {\n\ttext-align: left;\n\tpadding-left: 10px;\n}\n\ndiv.maskCategory {\n\tmin-height: 80px;\n\tposition: relative;\n}\n\ndiv.maskCategoryLabel {\n\tposition: absolute;\n\ttop: 80px;\n\tleft: -12px;\n\twidth: 80px;\n\ttext-align: center;\n\tfont-weight: bold;\n\n\t-ms-transform: rotate(-90deg);\n\t-webkit-transform: rotate(-90deg);\n\ttransform: rotate(-90deg);\n\n\t-ms-transform-origin: left top 0;\n\t-webkit-transform-origin: left top 0;\n\ttransform-origin: left top 0;\n}\n","input[type=\"text\"], input[type=\"password\"], select, textarea {\n background-image: linear-gradient(to bottom, var(--n-000) 0%, var(--n-100) 80%, var(--n-300) 100%);\n\n border: none;\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n -ms-border-radius: 3px;\n -o-border-radius: 3px;\n border-radius: 3px;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 2px;\n\n transition: all 0.2s linear;\n color: var(--n-750);\n font-weight: bold;\n position: relative;\n\t\n\toutline-color: var(--data-focus-ring);\n\toutline-width: thin;\n}\n\noption { background-color: var(--n-100); } /* to align with gradient on the select */\n\n*:focus-visible { outline-style: inset; outline-offset: 0 }\n\ninput[type=\"button\"], input[type=\"submit\"], .ui-button.ui-widget {\n\tfont-family: Verdana;\n\n\t-webkit-appearance: none;\n\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\t-ms-border-radius: 4px;\n\t-o-border-radius: 4px;\n\tborder-radius: 4px;\n\n\tbackground-image: linear-gradient(var(--n-300) 0, var(--n-100) 20%, var(--n-000));\n\n\t-webkit-background-clip: padding-box;\n\t-o-background-clip: padding-box;\n\tbackground-clip: padding-box;\n\n\tborder: 1px solid;\n\tborder-color: var(--n-400) var(--n-200) var(--n-000);\n\n\tcolor: var(--n-750);\n\tfont-weight: bold;\n\tfont-size: 1em;\n\ttext-decoration: none;\n\n\tmargin: 0;\n\tpadding: 0.4em 1.4em;\n\twidth: auto;\n\n\tcursor: pointer;\n\toutline: 0;\n\tvertical-align: top;\n\tdisplay: inline-block;\n\toverflow: visible;\n}\n\ninput[type='radio'], input[type='checkbox'] {\n\tvertical-align: middle;\n}\n\ninput[type=\"button\"]:not([disabled]):focus, input[type=\"submit\"]:not([disabled]):focus, .ui-button:focus:not([disabled]) {\n\tborder: 1px solid darkorange;\n}\n\ninput[type=\"button\"]:not([disabled]):hover, input[type=\"submit\"]:not([disabled]):hover, .ui-button:hover:not([disabled]) {\n\tbackground-image: linear-gradient(var(--n-400) 0, var(--n-120) 20%, var(--n-000));\n}\n\ninput[type=\"button\"]:not([disabled]):active, input[type=\"submit\"]:not([disabled]):active, .ui-button:active:not([disabled]) {\n\tcolor: var(--n-800);\n\n\tbackground-image: linear-gradient(var(--n-300), var(--n-550));\n\n\tbox-shadow: inset var(--shadow-25b) 0 1px 2px 0;\n\n\tborder-color: var(--n-650) var(--n-750) var(--n-850);\n}\n\ninput[disabled], a[disabled] {\n\topacity: .4;\n\tcursor: default;\n}\n\ninput.selector, input.mini-selector {\n\twidth: 0; opacity: 0;\t/* Don't use display:none because it makes it not be keyboard accessible */\n}\n\ninput.selector+label img {\n border-radius: 3px;\n\n\twidth: 64px;\n\theight: 64px;\n}\n\ninput.selector+label .selector_label {\n\tposition: absolute;\n\tbottom: 1px;\n\tleft: 1px;\n\tpadding: 1px 3px;\n\tmargin-right: 1px;\n\tcolor: var(--n-800);\n\tfont-size: 0.8em;\n\tbackground: var(--scrim-70);\n\n border-radius: 3px;\n}\n\ninput.selector+label, input.mini-selector+label, .quick-select {\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 3px;\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n\n\tcursor: pointer;\n\topacity: .4;\n\ttransition: all 0.2s ease;\n}\n\n.quick-select {\n\tcolor: var(--n-700);\n\tbackground: none;\n}\n\ninput.selector+label {\n\tvertical-align: top;\n\tmin-height: 64px;\n\tmin-width: 64px;\n\tmargin: 3px 3px;\n}\n\ninput.mini-selector+label {\n\tmargin: 3px -3px;\n\ttop: -1px;\n}\n\ninput.selector+label:hover, input.mini-selector+label:hover, .quick-select:hover {\n\tborder-color: var(--data-class-amber);\n\topacity: 1;\n}\n\ninput.selector:checked+label, input.mini-selector:checked+label {\n\tborder-color: darkorange;\n\topacity: 1;\n}\n\ninput.selector:focus-visible+label, input.mini-selector:focus-visible+label, .quick-select:focus-visible {\n\toutline-style: inset;\n outline-offset: 1px;\n outline-color: var(--data-focus-ring-soft);\n outline-width: 1px;\n}\n\ninput.selector+label .info {\n\tdisplay: inline-block;\n\tmargin-left: 5px;\n\tvertical-align: top;\n\tfont-weight: normal;\n\tfont-size: 0.9em;\n}\n\ninput.selector:checked+label .info {\n\tdisplay: inline-block;\n}\n\ninput[type=checkbox]:not(.selector) + label {\n\tmargin-left: 4px;\n\tvertical-align:top;\n\tcursor:pointer;\n}\n\ninput[type='radio'], input[type='checkbox'] {\tfilter: invert(1);}\ninput[type='checkbox'] { accent-color: var(--n-850); }",".gridster > ul {\n\t//background: var(--scrim-80);\n\tlist-style-type: none;\n}\n\n.gridster > li {\n overflow: hidden;\n}\n\n.controls i, .controls span.control {\n\tcursor: pointer;\n}\n\n.toggle-panel {\n\tposition: absolute;\n background: var(--n-020);\n border: 1px var(--n-250) solid;\n padding: 3px;\n}\n\n.gridster li div.content {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 5px;\n\tbottom: 5px;\n\tleft: 5px;\n\n\toverflow: auto;\n}\n\n.gridster li .controls + .content {\n\ttop: 18px;\n}\n\n.gridster {\n\tvisibility: hidden;\n margin: 0 auto;\n padding: 50px 0 140px 0;\n\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n -webkit-transition: opacity .6s;\n -moz-transition: opacity .6s;\n -o-transition: opacity .6s;\n -ms-transition: opacity .6s;\n transition: opacity .6s;\n}\n\n.gridster > * {\n margin: 0 auto;\n}\n\n.gridster-transition {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\t-webkit-transition: height .4s, width .4s;\n -moz-transition: height .4s, width .4s;\n -o-transition: height .4s, width .4s;\n -ms-transition: height .4s, width .4s;\n transition: height .4s, width .4s;\n}\n\n.gridster .gs-w {\n z-index: 2;\n position: absolute;\n}\n\n.gridster .gs-w {\n //background: var(--veil-grey);\n background: var(--scrim-60);\n}\n\n.gridster .gs-w:hover .grid-resize-both {\n\topacity: 1;\n}\n\n.gridster .grid-resize {\n\tposition: absolute;\n\tz-index: 1;\n}\n\n.gridster .grid-resize-both {\n width: 30px;\n height: 30px;\n bottom: -18px;\n right: -18px;\n cursor: se-resize;\n z-index: 20;\n opacity: 0;\n color: var(--n-750);\n}\n\n.gridster .gs-resize-handle-both:before {\n\tcontent: \"\\e018\";\n}\n\n.gridster .player {\n background: var(--veil-silver);\n}\n\n.gridster .preview-holder {\n border: none;\n background: var(--veil-danger);\n}\n","@font-face {\n\tfont-family: 'icon';\n\tsrc:url('../fonts/tripwire.eot?w81bs6');\n\tsrc:url('../fonts/tripwire.eot?#iefixw81bs6') format('embedded-opentype'),\n\t\turl('../fonts/tripwire.woff?w81bs6') format('woff'),\n\t\turl('../fonts/tripwire.ttf?w81bs6') format('truetype'),\n\t\turl('../fonts/tripwire.svg?w81bs6#icon') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n/* Use the following CSS code if you want to use data attributes for inserting your icons */\n[data-icon] {\n\tfont-family: 'icon';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n[data-icon]:hover {\n\ttext-decoration: none;\n}\n\n[data-icon=\"undo\"]:before {\n\tcontent: \"\\e60e\";\n}\n[data-icon=\"redo\"]:before {\n\tcontent: \"\\e612\";\n}\n[data-icon=\"move-horizontal\"]:before {\n\tcontent: \"\\e600\";\n}\n[data-icon=\"move-vertical\"]:before {\n\tcontent: \"\\e601\";\n}\n[data-icon=\"tripwire-logo\"]:before {\n\tcontent: \"\\e602\";\n}\n[data-icon=\"edit\"]:before {\n\tcontent: \"\\e609\";\n}\n[data-icon=\"pin\"]:before {\n\tcontent: \"\\e60a\";\n}\n[data-icon=\"plus-circle\"]:before {\n\tcontent: \"\\e60b\";\n}\n[data-icon=\"minus-circle\"]:before {\n\tcontent: \"\\e60c\";\n}\n[data-icon=\"times-circle\"]:before {\n\tcontent: \"\\e60d\";\n}\n[data-icon=\"check\"]:before {\n\tcontent: \"\\f00c\";\n}\n[data-icon=\"times\"]:before {\n\tcontent: \"\\f00d\";\n}\n[data-icon=\"plus\"]:before {\n\tcontent: \"\\f067\";\n}\n[data-icon=\"minus\"]:before {\n\tcontent: \"\\f068\";\n}\n[data-icon=\"eye\"]:before {\n\tcontent: \"\\e000\";\n}\n[data-icon=\"pulsar\"]:before {\n\tcontent: \"\\e001\";\n\tcolor: var(--data-link);\n}\n[data-icon=\"connection\"]:before {\n\tcontent: \"\\e002\";\n}\n[data-icon=\"settings\"]:before {\n\tcontent: \"\\e003\";\n}\n[data-icon=\"magnetar\"]:before {\n\tcontent: \"\\e004\";\n\tcolor: var(--data-magenta);\n}\n[data-icon=\"wolf-rayet\"]:before {\n\tcontent: \"\\e005\";\n\tcolor: var(--data-bronze);\n}\n[data-icon=\"portrait\"]:before {\n\tcontent: \"\\e006\";\n}\n[data-icon=\"landscape\"]:before {\n\tcontent: \"\\e007\";\n}\n[data-icon=\"erase\"]:before {\n\tcontent: \"\\e008\";\n}\n[data-icon=\"lock-open\"]:before {\n\tcontent: \"\\e009\";\n}\n[data-icon=\"lock\"]:before {\n\tcontent: \"\\e00a\";\n}\n[data-icon=\"user\"]:before {\n\tcontent: \"\\e00b\";\n}\n[data-icon=\"red-giant\"]:before {\n\tcontent: \"\\e00c\";\n\tcolor: red;\n}\n[data-icon=\"search\"]:before {\n\tcontent: \"\\e00d\";\n}\n[data-icon=\"star-empty\"]:before {\n\tcontent: \"\\e00e\";\n}\n[data-icon=\"star\"]:before {\n\tcontent: \"\\e00f\";\n}\n[data-icon=\"blackhole\"]:before {\n\tcontent: \"\\e010\";\n\tcolor: var(--n-900);\n}\n[data-icon=\"fullscreen\"]:before {\n\tcontent: \"\\e011\";\n}\n[data-icon=\"fullscreen-exit\"]:before {\n\tcontent: \"\\e012\";\n}\n[data-icon=\"home\"]:before {\n\tcontent: \"\\e013\";\n}\n[data-icon=\"key\"]:before {\n\tcontent: \"\\e014\";\n}\n[data-icon=\"alert\"]:before {\n\tcontent: \"\\e015\";\n}\n[data-icon=\"help\"]:before {\n\tcontent: \"\\e016\";\n}\n[data-icon=\"resize\"]:before {\n\tcontent: \"\\e017\";\n}\n[data-icon=\"info\"]:before {\n\tcontent: \"\\e018\";\n}\n[data-icon=\"tree\"]:before {\n\tcontent: \"\\e019\";\n}\n[data-icon=\"anchor\"]:before {\n\tcontent: \"\\e020\";\n}\n[data-icon=\"prop-mod\"]:before {\n\tcontent: \"\\e021\";\n}\n[data-icon=\"follow\"]:before {\n\tcontent: \"\\e60f\";\n}\n[data-icon=\"viewing\"]:before {\n\tcontent: \"\\e610\";\n}\n[data-icon=\"cataclysmic-variable\"]:before {\n\tcontent: \"\\e611\";\n\tcolor: var(--data-pale-yellow);\n}\n[data-icon=\"layout\"]:before {\n\tcontent: \"\\e603\";\n}\n[data-icon=\"auto\"]:before {\n\tcontent: \"\\e604\";\n}\n[data-icon=\"check-on\"]:before {\n\tcontent: \"\\e605\";\n}\n[data-icon=\"check-off\"]:before {\n\tcontent: \"\\e606\";\n}\n[data-icon=\"radio-off\"]:before {\n\tcontent: \"\\e607\";\n}\n[data-icon=\"radio-on\"]:before {\n\tcontent: \"\\e608\";\n}\n[data-icon=\"trash\"]:before {\n\tcontent: \"\\e9ad\";\n\tvertical-align: text-top;\n}\n[data-icon=\"sort\"]:before {\n\tcontent: \"\\f0dc\";\n}\n[data-icon=\"sort-desc\"]:before {\n\tcontent: \"\\f0dd\";\n}\n[data-icon=\"sort-asc\"]:before {\n\tcontent: \"\\f0de\";\n}\n",".introjs-helperLayer {\n background-color: var(--n-400);\n}\n\na.introjs-button:hover, a.introjs-skipbutton:hover {\n color: var(--n-560);\n}\n",".validation-tooltip .jBox-container, .validation-tooltip .jBox-pointer:after {\n\tbackground: var(--data-danger);\n\tcolor: white;\n\tborder: none;\n\tfont-weight: bold;\n\tfont-size: 1.2em;\n\tpadding: 3px;\n}\n\n.jBox-container {\n\tbackground: var(--n-200);\n\tcolor: var(--n-800);\n\tmin-height: 20px;\n}\n\n.jBox-content {\n\tpadding: 4px 5px;\n}\n\n/* Pointer */\n\n.jBox-pointer-right { right: 2px; }\n\n.jBox-pointer:after {\n\tbackground: var(--n-200);\n}\n\n/* jBox Notice */\n\n.jBox-Notice .jBox-container {\n border-radius: 3px;\n\tbox-shadow: 0 0 3px var(--n-000);\n\n\tcolor: var(--n-999);\n\tfont-size: 1.1em;\n\ttext-shadow: 0 -1px 0 var(--n-000);\n\tbackground: var(--n-200);\n\tbackground-image: linear-gradient(to bottom, var(--n-300), var(--n-100));\n}\n\n.jBox-Notice .jBox-content {\n\tpadding: 6px 10px;\n}\n\n.jBox-Notice .jBox-title {\n\tpadding: 8px 20px 0;\n}\n\n.jBox-Notice-color .jBox-container {\n\ttext-shadow: 0 -1px 0 var(--shadow-30);\n}\n\n.jBox-Notice-gray .jBox-container {\n\tcolor: var(--n-500);\n\ttext-shadow: 0 1px 0 var(--n-999);\n\tbackground: var(--n-920);\n\tbackground-image: linear-gradient(to bottom, var(--n-960), var(--n-900));\n}\n\n.jBox-Notice-red .jBox-container {\n\tbackground: var(--ui-red);\n\tbackground-image: linear-gradient(to bottom, var(--ui-red-lit), var(--ui-red));\n}\n\n.jBox-Notice-green .jBox-container {\n\tbackground: var(--ui-green);\n\tbackground-image: linear-gradient(to bottom, var(--ui-green-lit), var(--ui-green));\n}\n\n.jBox-Notice-blue .jBox-container {\n\tbackground: var(--ui-blue);\n\tbackground-image: linear-gradient(to bottom, var(--ui-blue-lit), var(--ui-blue));\n}\n\n.jBox-Notice-yellow .jBox-container {\n\tcolor: var(--data-brown);\n\ttext-shadow: 0 1px 0 var(--glow-60);\n\tbackground: var(--ui-amber);\n\tbackground-image: linear-gradient(to bottom, var(--ui-amber-lit), var(--ui-amber));\n}\n\n.jBox-Notice-yellow .jBox-container a {\n\tcolor: var(--n-650);\n}\n",".mask .corporate { color: green }\n.mask .alliance { color: var(--data-alliance);display: inline-block;transform: scaleY(-1) translateY(2px); }\t/* need the block to make the transform work */\n.mask i { padding-right: 2px }\n\n#mask-menu a { display: block }\n\n/* Overlays etc on the mask panel */\n#masks label > img { margin-top: 3px; }\n#masks label { height: 69px; }\n.source_bar {\n position: absolute;\n top: 0; left: 0;\n\twidth: 100%;\n\theight: 3px;\n color: var(--n-800);\n font-size: .8em;\n\tborder-radius: 3px 3px 0 0;\n}\n\n.source_bar.global { background: var(--n-550) }\n.source_bar.personal { background: var(--n-800) }\n.source_bar.corporate { background: green }\n.source_bar.alliance { background: var(--data-alliance) }\n\n.icon_bar {\n position: absolute;\n top: 3px; right: 0;\n}\n\n.icon_bar .icon {\n\tborder-radius: 1em;\n\topacity: 0.7;\n\tfont-size: 0.85em;\n\tpadding: 0.15em;\n\theight: 1em;\n\twidth: 1em;\n\tdisplay: inline-block;\n\ttext-align: center;\n\ttext-decoration: none;\n}\n\n.icon_bar .icon:hover, .icon_bar .icon:focus {\n\topacity: 1;\n}\n\n.icon_bar .closeIcon { background: maroon }\n.icon_bar .joinIcon { background: green }\n\n#mask-explanation p { margin: 0.5em 0; }","html .ui-selectmenu-menu li a, html .ui-selectmenu-status {\n\tpadding: 0em 1em 0em .5em;\n\tfont-weight: bold;\n\ttext-align: left;\n}\n\nhtml a.ui-selectmenu:hover {\n\ttext-decoration: none;\n}\n\nhtml .ui-selectmenu {\n\theight: auto;\n\t//margin-bottom: .2em;\n\t//padding: 0.1em;\n}\n\nhtml .ui-selectmenu-menu ul {\n\t//padding: 0 0.1em;\n}\n\n#whType, #sigID {\n\ttext-transform: uppercase;\n\ttext-align: center;\n\tpadding-left: 0px;\n}\n\n#sigAddForm th, #sigEditForm th {\n\ttext-align: right;\n}\n\n#sigAddForm table tr td, #sigEditForm table tr td {\n\tpadding: 2px 0;\n}\n\n#sigTable {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\ttext-align: center;\n\ttable-layout: fixed;\n\tmargin-left: -1px;\n\tuser-select: none;\n}\n\n#sigTable th {\n\tbackground: var(--scrim-n200);\n\tborder: 1px solid var(--n-000);\n}\n\n#sigTable td {\n\tbackground: var(--scrim-n050);\n\tborder: 1px solid var(--n-000);\n\tcursor: default;\n}\n\n#sigTable tr:hover td {\n\tbackground-color: var(--n-300);\n}\n\n#sigTable tr.selected td {\n\tbackground-color: var(--n-200);\n}\n\n#sigTable th:nth-child(1) {\n\twidth: 50px;\n}\n\n#sigTable th:nth-child(2) {\n\twidth: 45px;\n}\n\n#sigTable th:nth-child(3) {\n\twidth: 40px;\n}\n\n#sigTable th:nth-child(5), #sigTable th:nth-child(6) {\n\twidth: 40px;\n}\n\n#sigTable td:nth-child(1) {\n\tfont-family: \"lucida\";\n\tletter-spacing: 1px;\n\ttext-transform: uppercase;\n}\n\n#sigTable td:nth-child(2) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td:nth-child(5), #sigTable td:nth-child(6) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\n#sigTable td.centerAlign {\n\ttext-align: center;\n}\n\n#sigTable td.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\n#sigTable a.siteLink {\n\tcolor: var(--data-olive);\n}\n\n#sigTable tbody .disabled {\n\tcolor: var(--n-300);\n}\n\n.return-visible .return-link { display: inline }\n.return-invisible .return-link { display: none }\n\n.tablesorter .tablesorter-header {\n\tcursor: pointer;\n\tvertical-align: middle;\n\tfont-size: 10px;\n}\n\n.tablesorter .tablesorter-header:focus {\n\toutline: none;\n}\n\n.tablesorter .tablesorter-header i:before, .tablesorter .sortable i:before {\n\tcontent: \"\\f0dc\";\n\tvertical-align: bottom;\n\tpadding: 1px 2px;\n\tfloat: right;\n}\n\n.tablesorter .headerSortUp,\n.tablesorter .tablesorter-headerSortUp,\n.tablesorter .tablesorter-headerAsc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortUp i:before,\n.tablesorter .tablesorter-headerSortUp i:before,\n.tablesorter .tablesorter-headerAsc i:before {\n\tcontent: \"\\f0de\";\n}\n\n.tablesorter .headerSortDown,\n.tablesorter .tablesorter-headerSortDown,\n.tablesorter .tablesorter-headerDesc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortDown i:before,\n.tablesorter .tablesorter-headerSortDown i:before,\n.tablesorter .tablesorter-headerDesc i:before {\n\tcontent: \"\\f0dd\";\n}\n\n.tablesorter thead .sorter-false {\n\tcursor: default;\n}\n\n#dialog-signature hr {\n\tmargin-left: 15px;\n\tmargin-bottom: 10px;\n}\n\n#dialog-signature .label {\n\tfont-weight: bold;\n\ttext-align: right;\n\tvertical-align: text-top;\n}\n\n#dialog-signature .select {\n\tdisplay: inline-block;\n\tvertical-align: text-bottom;\n}\n\n#dialog-signature .row {\n\tmin-height: 22px;\n}\n\n#dialog-signature .label:first-child {\n\tdisplay: inline-block;\n\tmin-width: 70px;\n}\n\n#dialog-signature #signatureName span {\n\tdisplay: table-cell;\n}\n\n#dialog-signature #signatureName span:last-child {\n\twidth: 100%;\n\tpadding-left: 3px;\n}\n\n#dialog-signature #signatureName input {\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n#dialog-signature #signatureType, #dialog-signature #wormholeMass {\n\tfloat: right;\n}\n\n#dialog-signature #wormholeMass .label, #dialog-signature .bookmark .label {\n\tmin-width: auto;\n}\n\n#dialog-signature .signatureID, #dialog-signature .wormholeType {\n\ttext-align: center;\n\ttext-transform: uppercase;\n}\n\n#dialog-signature .side {\n\tposition: relative;\n\tmin-height: 70px;\n}\n\n#dialog-signature .sideLabel {\n\tposition: absolute;\n\tleft: -10px;\n\tfont-weight: bold;\n\ttransform: rotate(-90deg);\n\ttransform-origin: left top 0;\n}\n\n#dialog-signature #wormhole .side:first-child .sideLabel {\n\tbottom: 0px;\n\twidth: 90px;\n\ttext-align: left;\n}\n\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\tbottom: -70px;\n\twidth: 135px;\n\ttext-align: right;\n}\n\n.custom-combobox {\n\tposition: relative;\n\tdisplay: inline-table;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: -20px;\n\tmargin-left: -1px;\n\tpadding: 0;\n}\n\n.custom-combobox input {\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tpadding: 0.4em 0.8em;\n\tborder-radius: 0;\n\tborder-top-right-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.wormholeTypeQuickSelect {\n\tmargin-left: 1.8em;\n}\n\n.quickSelectBar button {\n\tpadding: 1px; margin-right: 1px;\n}\n\n#leadsToQuickBar {\n\tmargin-left: 74px;\n\tmargin-top: 2px;\n\tmargin-bottom: 4px;\n}\n\n.popover {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 1060;\n\tdisplay: block;\n\tmax-width: 276px;\n\tpadding: 1px;\n\tfont-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tletter-spacing: normal;\n\tline-break: auto;\n\tline-height: 1.5;\n\ttext-align: left;\n\ttext-align: start;\n\ttext-decoration: none;\n\ttext-shadow: none;\n\ttext-transform: none;\n\twhite-space: normal;\n\tword-break: normal;\n\tword-spacing: normal;\n\tfont-size: 0.875rem;\n\tword-wrap: break-word;\n\tbackground-color: var(--n-999);\n\t-webkit-background-clip: padding-box;\n\t\t\t\t\tbackground-clip: padding-box;\n\tborder: 1px solid var(--shadow-20b);\n\tborder-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n\tmargin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n\tleft: 50%;\n\tborder-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n\tbottom: -11px;\n\tmargin-left: -11px;\n\tborder-top-color: var(--shadow-25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n\tbottom: -10px;\n\tmargin-left: -10px;\n\tborder-top-color: var(--n-999);\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n\tmargin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n\ttop: 50%;\n\tborder-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n\tleft: -11px;\n\tmargin-top: -11px;\n\tborder-right-color: var(--shadow-25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n\tleft: -10px;\n\tmargin-top: -10px;\n\tborder-right-color: var(--n-999);\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n\tmargin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n\tleft: 50%;\n\tborder-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n\ttop: -11px;\n\tmargin-left: -11px;\n\tborder-bottom-color: var(--shadow-25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n\ttop: -10px;\n\tmargin-left: -10px;\n\tborder-bottom-color: var(--n-940);\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\tdisplay: block;\n\twidth: 20px;\n\tmargin-left: -10px;\n\tcontent: \"\";\n\tborder-bottom: 1px solid var(--n-940);\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n\tmargin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n\ttop: 50%;\n\tborder-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n\tright: -11px;\n\tmargin-top: -11px;\n\tborder-left-color: var(--shadow-25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n\tright: -10px;\n\tmargin-top: -10px;\n\tborder-left-color: var(--n-999);\n}\n\n.popover-title {\n\tpadding: 8px 14px;\n\tmargin-bottom: 0;\n\tfont-size: 1rem;\n\tbackground-color: var(--n-940);\n\tborder-bottom: 1px solid var(--n-870);\n\tborder-top-right-radius: calc(0.3rem - 1px);\n\tborder-top-left-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n\tdisplay: none;\n}\n\n.popover-content {\n\tpadding: 9px 14px;\n}\n\n.popover::before,\n.popover::after {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 0;\n\theight: 0;\n\tborder-color: transparent;\n\tborder-style: solid;\n}\n\n.popover::before {\n\tcontent: \"\";\n\tborder-width: 11px;\n}\n\n.popover::after {\n\tcontent: \"\";\n\tborder-width: 10px;\n}\n\n.age-tooltip-table td {\n\tpadding-left: 12px;\n}\n","#wrapper {\n\theight: 100%;\n\toverflow: auto;\n\n\tbackground-color: black;\n\tbackground-image: url(../images/bg.jpg);\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\n\t-webkit-background-size: cover;\n\t-moz-background-size: cover;\n\t-o-background-size: cover;\n\tbackground-size: cover;\n}\n\n#inner-wrapper {\n\tmin-height: 100%;\n\tposition: relative;\n}\n\n#pageTime {\n\ttext-align: center;\n\tfont-size: 0.8em;\n\topacity: 0.6;\n}\n\n#footer {\n\tposition: absolute;\n\tbottom: 0;\n\twidth: 100%;\n\ttext-align: center;\n\tpadding-bottom: 10px;\n}\n\n#legal {\n\tfont-size: 0.5em;\n\twidth: 60%;\n\ttext-align: center;\n\tmargin: 0 auto;\n\topacity: 0.5;\n}\n\n#topbar {\n\tposition: fixed;\n\ttop: 0;\n\theight: 45px;\n\twidth: 100%;\n\tbackground: var(--scrim-80);\n\tz-index: 3;\n\tline-height: 40px;\n}\n\n#topbar div { line-height: normal; } /** reset for children */\n\n#topbar h1, #topbar h2, #topbar h3, #topbar form {\n\tdisplay: inline;\n}\n\n#topbar .align-right {\n\tpadding-right: 25px;\n}\n\n#topbar .align-left {\n\tpadding-left: 25px;\n}\n\n#logo {\n\tposition: relative;\n}\n\n#version {\n\tposition: absolute;\n\tcolor: var(--data-info);\n\tfont-size: 0.4em;\n\theight: 0;\n\ttop: 4px;\n\tright: 20px;\n}\n\n#clipboard {\n\tposition: fixed;\n\tleft: -99em;\n\ttop: 0;\n}\n\n#searchSpan {\n\tdisplay: none;\n}\n\n.controls {\n position: absolute;\n padding: 3px;\n z-index: 1;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.controls i {\n\tfont-size: 1.2em;\n\tpadding: 0px 2px;\n\tvertical-align: middle;\n\tfont-style: normal;\n}\n\n.controls button {\n\tfont-size: 1em;\n color: var(--n-500);\n margin: 2px;\n padding: 1px;\n background: var(--n-100);\n border: 1px solid var(--n-000);\n\toutline: 0;\n cursor: pointer;\n background-image: linear-gradient(var(--n-100),var(--n-050));\n}\n\n.tooltip-data {\n\tbackground: var(--scrim-n120);\n\tpadding: 5px;\n\tcolor: var(--n-800);\n\tborder: none;\n\tbox-shadow: none;\n\t-webkit-box-shadow: none;\n\n\tborder-radius: 3px;\n}\n\n.tooltip-data table {\n\tborder: none;\n\tborder-collapse: collapse;\n}\n\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }\n\n#chainMenu, #signatureColumnMenu {\n\tz-index: 5;\n}\n\n/* Loading animation container */\n.loading {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n}\n\n/* Spinning circle (inner circle) */\n.loading .maskedCircle {\n\twidth: 2em;\n\theight: 2em;\n\n\t-webkit-border-radius: 1em;\n -moz-border-radius: 1em;\n -ms-border-radius: 1em;\n -o-border-radius: 1em;\n border-radius: 1em;\n\n\tborder: 3px solid var(--n-000);\n}\n\n/* Spinning circle mask */\n.loading .mask {\n\twidth: 1em;\n\theight: 1em;\n\toverflow: hidden;\n}\n\n/* Spinner */\n.loading .spinner {\n\tposition: absolute;\n\tleft: 1px;\n\ttop: 1px;\n\twidth: 2em;\n\theight: 2em;\n\t-webkit-animation: spin 1s infinite linear;\n\t-moz-animation: spin 1s infinite linear;\n\t-o-animation: spin 1s infinite linear;\n\tanimation: spin 1s infinite linear;\n}\n\ntable.stdTable {\n\twidth: 100%;\n}\n\ntable.stdTable th {\n\ttext-align: left;\n}\n\ndiv.overlay {\n\tposition: fixed;\n\tz-index: 101;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\topacity: 0.3;\n\tbackground: var(--n-700) url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;;\n}\n\n.control-group { display:inline-block; text-align: center }\ntd .control-group { width: 100% }\n\n.whEffect { padding-right: 2px; }\n\n.copy { font-size: 75%; margin: 0 3px; padding: 2px }\n.copy::after { content: '\\01F4C4\\00FE0E' }\n\n#activityGraph { padding-top: 8px; }\n#activityGraphControls { padding-bottom: 8px; }\n\n#activityGraph svg > g:nth-child(3) > g > path {\n\tfill: var(--scrim-n020);\n\tstroke: var(--stroke-n120);\n}\n\n#activityGraph svg > g:nth-child(3) > g > g > text {\n\tfill: var(--n-800);\n}\n\n#activityGraph svg > g:nth-child(2) > g:last-child > g {\n\tcursor: pointer;\n}\n\n/* Autocomplete */\nul.ui-autocomplete {\n\tmax-height: 140px;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n}\n\ntd.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\ntd.centerAlign {\n\ttext-align: center;\n}\n\ntd.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\nth.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\nth.centerAlign {\n\ttext-align: center;\n}\n\nth.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n","/* ============================================================================\n TRIPWIRE DESIGN SYSTEM\n\n A reimagining of the interface in Aperture's design language, not a patch\n over the old one. The vocabulary below is Aperture's, taken from its\n globals.css so the two tools speak the same language:\n\n role tokens, not a grey ramp --background / --card / --popover / --muted\n borders as light --border is white at 10%, --input at 15%\n one radius --radius: 0.625rem, everything derives\n muted-foreground for secondary text, ring for focus\n\n Tripwire's own --n-* ramp and --data-* semantics still exist underneath and\n still drive the map, because those encode EVE meaning. This layer governs\n chrome: surfaces, controls, type, tables, dialogs, states.\n\n Ordering: this file must load after the component stylesheets, which is what\n the _override-* group in gulpfile.js exists for.\n ========================================================================= */\n\n:root {\n\t/* ---- surfaces -------------------------------------------------------- */\n\t--background: oklch(0.145 0 0);\n\t--foreground: oklch(0.80 0 0);\n\t--card: oklch(0.205 0 0);\n\t--card-foreground: oklch(0.82 0 0);\n\t--popover: oklch(0.205 0 0);\n\t--popover-foreground: oklch(0.80 0 0);\n\t--muted: oklch(0.269 0 0);\n\t--muted-foreground: oklch(0.66 0 0);\n\t--accent-surface: oklch(0.269 0 0);\n\n\t/* ---- lines and focus ------------------------------------------------- */\n\t--border: oklch(1 0 0 / 10%);\n\t--border-strong: oklch(1 0 0 / 18%);\n\t--input: oklch(1 0 0 / 15%);\n\t--ring: var(--accent, oklch(0.556 0 0));\n\n\t/* ---- intent ---------------------------------------------------------- */\n\t--primary: var(--accent, oklch(0.922 0 0));\n\t--primary-foreground: oklch(0.205 0 0);\n\t--destructive: oklch(68.025% 0.2081 23.639);\n\n\t/* ---- geometry -------------------------------------------------------- */\n\t--radius: 0.625rem;\n\t--radius-sm: calc(var(--radius) * 0.5);\n\t--radius-md: calc(var(--radius) * 0.75);\n\n\t/* ---- rhythm ---------------------------------------------------------- */\n\t--space-1: 0.25rem;\n\t--space-2: 0.5rem;\n\t--space-3: 0.75rem;\n\t--space-4: 1rem;\n\t--space-5: 1.5rem;\n\n\t/* ---- type ------------------------------------------------------------ */\n\t--fs-xs: 0.8rem;\n\t--fs-sm: 0.9rem;\n\t--fs-base: 1rem;\n\t--fs-md: 1.15rem;\n\t--fs-lg: 1.5rem;\n\t--fs-xl: 2rem;\n}\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(1 0 0);\n\t\t--foreground: oklch(0.145 0 0);\n\t\t--card: oklch(1 0 0);\n\t\t--card-foreground: oklch(0.145 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--popover-foreground: oklch(0.145 0 0);\n\t\t--muted: oklch(0.97 0 0);\n\t\t--muted-foreground: oklch(0.556 0 0);\n\t\t--accent-surface: oklch(0.97 0 0);\n\t\t--border: oklch(0.922 0 0);\n\t\t--border-strong: oklch(0.85 0 0);\n\t\t--input: oklch(0.922 0 0);\n\t\t--destructive: oklch(0.577 0.245 27.325);\n\t\t--primary-foreground: oklch(0.985 0 0);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(1 0 0);\n\t--foreground: oklch(0.145 0 0);\n\t--card: oklch(1 0 0);\n\t--card-foreground: oklch(0.145 0 0);\n\t--popover: oklch(1 0 0);\n\t--popover-foreground: oklch(0.145 0 0);\n\t--muted: oklch(0.97 0 0);\n\t--muted-foreground: oklch(0.556 0 0);\n\t--accent-surface: oklch(0.97 0 0);\n\t--border: oklch(0.922 0 0);\n\t--border-strong: oklch(0.85 0 0);\n\t--input: oklch(0.922 0 0);\n\t--destructive: oklch(0.577 0.245 27.325);\n\t--primary-foreground: oklch(0.985 0 0);\n}\n\n/* ============================================================================\n BASE\n ========================================================================= */\n\nhtml {\n\t/* Was .6em -> 9.6px, with nine ad-hoc sizes from 6px to 19.2px in use.\n\t Verified before changing: no panel overflows at 12px. */\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n\nbody {\n\tcolor: var(--foreground);\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\na { color: var(--primary); font-weight: 500; }\na:hover { color: var(--primary); text-decoration: underline; }\n\n::selection { background: var(--primary); color: var(--primary-foreground); }\n\n/* One focus treatment everywhere. Matters more now the app is keyboard-driven. */\n:focus-visible {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n\tborder-radius: var(--radius-sm);\n}\n\n/* ============================================================================\n SURFACES\n Everything raised is a card: same ground, same edge, same radius.\n ========================================================================= */\n\n.gridWidget,\n.ui-dialog,\n.jBox-container {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n\tcolor: var(--card-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: none;\n}\n\n.gridWidget > .controls,\n.ui-dialog .ui-dialog-titlebar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tborder-radius: var(--radius) var(--radius) 0 0;\n\tpadding: var(--space-2) var(--space-3);\n\tmin-height: 0;\n}\n\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\tmargin: 0;\n\tfloat: none;\n}\n\n.panel-title {\n\tflex: 0 0 auto;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\twhite-space: nowrap;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tcolor: var(--card-foreground);\n\tbackground: transparent;\n}\n\n.ui-dialog .ui-dialog-buttonpane {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-top: 1px solid var(--border);\n\tmargin: 0;\n\tpadding: var(--space-3) var(--space-4);\n}\n\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: none; text-align: right; }\n\n/* The dialog's own close affordance, and the panel hide control, are the same\n thing and should look it. */\n.ui-dialog .ui-dialog-titlebar-close,\n.panel-hide {\n\torder: 99;\n\tmargin-left: auto;\n\twidth: auto; height: auto;\n\tposition: static;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-md);\n\tline-height: 1;\n\tpadding: 0 var(--space-1);\n\tcursor: pointer;\n}\n.ui-dialog .ui-dialog-titlebar-close:hover,\n.panel-hide:hover { color: var(--destructive); background: none; }\n.ui-dialog .ui-dialog-titlebar-close .ui-icon { display: none; }\n.ui-dialog .ui-dialog-titlebar-close::after { content: \"\\00d7\"; }\n\n/* ============================================================================\n CONTROLS\n Flat at rest so rows read as data; the affordance arrives on approach.\n ========================================================================= */\n\ninput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\ninput[type=\"search\"], select, textarea {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tbox-shadow: none;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\ninput:hover, select:hover, textarea:hover { border-color: var(--border); }\n\ninput:focus, select:focus, textarea:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--muted);\n\toutline: none;\n}\n\n::placeholder { color: var(--muted-foreground); opacity: 1; }\n\nbutton, .ui-button, .ui-button.ui-widget,\ninput[type=\"button\"], input[type=\"submit\"] {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tpadding: var(--space-1) var(--space-3);\n\tbox-shadow: none;\n\ttext-shadow: none;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n\nbutton:hover, .ui-button:hover, .ui-button.ui-widget:hover,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover {\n\tborder-color: var(--border-strong);\n\tbackground-color: var(--muted);\n\tcolor: var(--foreground);\n}\n\n.ui-dialog-buttonpane button.is-primary {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground-color: transparent;\n}\n\nbutton[disabled], .disabled { opacity: .4; cursor: default; }\n\n/* ============================================================================\n DATA\n ========================================================================= */\n\n#sigTable { border-collapse: collapse; width: 100%; }\n\n#sigTable th {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .09em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n\tpadding: var(--space-2) var(--space-2);\n\tbox-shadow: none;\n}\n\n#sigTable td {\n\tborder: 0;\n\tpadding: var(--space-2);\n\tfont-size: var(--fs-base);\n\tcolor: var(--card-foreground);\n}\n\n#sigTable tbody tr { transition: background-color .1s ease; }\n#sigTable tbody tr:nth-child(even) > td { background-color: oklch(1 0 0 / 3%); }\n#sigTable tbody tr:hover > td { background-color: var(--muted); }\n#sigTable tbody tr.selected > td { background-color: color-mix(in oklab, var(--primary) 18%, transparent); }\n\n/* Chips. Life, mass and security are small closed sets; they read faster as\n pills, and it keeps state out of the same register as the data beside it. */\n#sigTable td .stable, #sigTable td .critical, #sigTable td .destab,\n.chip-pill {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid currentColor;\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.7;\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Segmented control for the dialog's life/mass radios. */\n#dialog-signature .mini-selector { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-block;\n\tpadding: var(--space-1) var(--space-3);\n\tmargin-right: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n#dialog-signature .mini-selector + label:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature .mini-selector:checked + label {\n\tborder-color: currentColor;\n\tbackground: color-mix(in oklab, currentColor 15%, transparent);\n\tfont-weight: 600;\n}\n#dialog-signature .mini-selector:focus-visible + label { outline: 2px solid var(--ring); outline-offset: 1px; }\n\n/* ============================================================================\n NAVIGATION\n ========================================================================= */\n\n#topbar {\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tbackdrop-filter: blur(8px);\n\tborder-bottom: 1px solid var(--border);\n}\n\n#topbar #logo a { font-size: var(--fs-xl); }\n#version { font-size: var(--fs-xs); color: var(--muted-foreground); }\n#legal { font-size: var(--fs-xs); color: var(--muted-foreground); }\n\n/* Settings sections. The accordion is gone -- see options-dialog.js. These\n are the same

/
pairs, laid out flat in a scrolling pane so every\n setting is visible and scannable. */\n.settings-sections { display: flex; flex-direction: column; }\n\n.settings-sections > h3 {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 1;\n\tmargin: var(--space-4) 0 var(--space-2);\n\tpadding: var(--space-2) 0;\n\tbackground: var(--card);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n}\n.settings-sections > h3:first-child { margin-top: 0; }\n.settings-sections > h3 a { color: inherit; font-weight: inherit; text-decoration: none; cursor: default; }\n\n.settings-sections > div { padding: 0 0 var(--space-3); }\n\n#dialog-options { max-height: 62vh; overflow-y: auto; }\n\n.optionsTable tr { height: auto; }\n.optionsTable th, .optionsTable td { padding: var(--space-2); font-size: var(--fs-base); }\n.optionsTable th { color: var(--muted-foreground); font-weight: 500; }\ntr.line td, tr.line th { border-bottom: 1px solid var(--border); }\n\n/* jQuery UI's state classes carry the old theme's gradients wherever they land. */\n.ui-state-default, .ui-state-hover, .ui-state-active, .ui-state-focus,\n.ui-widget-header, .ui-widget-content {\n\tbackground-image: none;\n\ttext-shadow: none;\n}\n\n/* ============================================================================\n DIALOG SIZING\n Settings holds two-column option rows and was squeezed into the default\n dialog width, which is why its labels wrapped and its controls crowded.\n ========================================================================= */\n\n.ui-dialog:has(#dialog-options) { width: min(46rem, calc(100vw - 2rem)) !important; }\n#dialog-options { width: auto !important; }\n\n/* Option rows: label left, control right, on one rhythm. */\n#dialog-options .optionsTable { width: 100%; table-layout: fixed; }\n#dialog-options .optionsTable th {\n\twidth: 55%;\n\ttext-align: left;\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-base);\n\tvertical-align: middle;\n}\n#dialog-options .optionsTable td { text-align: right; vertical-align: middle; }\n#dialog-options input[type=\"text\"],\n#dialog-options input[type=\"password\"],\n#dialog-options select {\n\twidth: 100%;\n\tmax-width: 16rem;\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n}\n#dialog-options div.ui-slider { width: calc(100% - 3rem); }\n\n/* Yes/No and other radio pairs read as a segmented control, like the map's\n life and mass. */\n#dialog-options input[type=\"radio\"] { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-options input[type=\"radio\"] + label {\n\tdisplay: inline-block;\n\tpadding: 2px var(--space-3);\n\tmargin-left: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tvertical-align: middle;\n}\n#dialog-options input[type=\"radio\"] + label:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n#dialog-options input[type=\"radio\"]:checked + label {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 12%, transparent);\n\tfont-weight: 600;\n}\n#dialog-options input[type=\"radio\"]:focus-visible + label {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n}\n\n/* ============================================================================\n LEGIBILITY CORRECTIONS\n\n Not rebranding: these are data colours and they keep their meaning. They are\n lightened only enough to clear 4.5:1 against the card ground, measured. The\n originals were written for a near-black page and the card surface is lighter\n than that, so blue text in particular was failing badly -- the \"Blue loot\n buyer\" line sat at 2.63:1.\n ========================================================================= */\n\n:root {\n\t--data-info: #47a2fe; /* was #4399f0 4.18:1 -> 4.66:1 */\n\t--data-loot-blue: #9090ff; /* was #6060f0 2.63:1 -> 4.52:1 */\n\t--data-link: #4ca1ea; /* was #428bca 3.43:1 -> 4.50:1 */\n\t--data-class-sky: #3ca0ff; /* was #3388dd 3.38:1 -> 4.54:1 */\n\t--chart-1: #4e9dff; /* was #3366cc 2.32:1 -> 4.50:1 */\n}\n\n/* In the light theme the same hues need darkening instead. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--data-info: #1668c4;\n\t\t--data-loot-blue: #3b3bc9;\n\t\t--data-link: #1a6aa8;\n\t\t--data-class-sky: #1466a8;\n\t\t--chart-1: #1f4f9e;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--data-info: #1668c4;\n\t--data-loot-blue: #3b3bc9;\n\t--data-link: #1a6aa8;\n\t--data-class-sky: #1466a8;\n\t--chart-1: #1f4f9e;\n}\n\n/* ============================================================================\n HOVER / ACTIVE STATES\n\n forms.css styles these through `.ui-button:hover:not([disabled])` and\n `input[type=\"button\"]:not([disabled]):hover` -- three selectors deep, which\n outranks a plain :hover. That is why the raised-bevel gradient survived on\n hover and press after the rest was flattened.\n ========================================================================= */\n\nbutton:hover, button:active,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover,\ninput[type=\"button\"]:active, input[type=\"submit\"]:active,\ninput[type=\"button\"]:not([disabled]):hover,\ninput[type=\"submit\"]:not([disabled]):hover,\ninput[type=\"button\"]:not([disabled]):active,\ninput[type=\"submit\"]:not([disabled]):active,\n.ui-button:hover, .ui-button:active,\n.ui-button:hover:not([disabled]), .ui-button:active:not([disabled]),\n.ui-button.ui-widget:hover:not([disabled]),\n.ui-button.ui-widget:active:not([disabled]),\n.ui-state-hover, .ui-state-active, .ui-state-focus,\na.ui-button:hover, a.ui-button:active {\n\tbackground-image: none !important;\n\tbox-shadow: none !important;\n\ttext-shadow: none !important;\n}\n\n/* ============================================================================\n GATE CHIPS\n The gate list was comma-separated prose. Each gate is a destination you can\n click, so it reads as a chip like everything else that is a discrete thing.\n ========================================================================= */\n\n.gate-list {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: var(--space-1);\n\tmargin: 0;\n}\n\n.gate-list > b {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 3px;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tline-height: 1.7;\n\twhite-space: nowrap;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n.gate-chip:hover { border-color: var(--border-strong); background: var(--accent-surface); }\n.gate-chip a { font-weight: 500; }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* The last two gradients in the app: a fade on the account dropdown and the\n chain zoom-reset button. Both are bevel-era leftovers. */\n#content.dialog-like,\n#chain-zoom-reset {\n\tbackground-image: none !important;\n}\n#content.dialog-like { background-color: var(--popover); }\n\n/* ============================================================================\n DIALOG SCROLLING\n\n jQuery UI sizes a dialog to its content, so a tall one grows past the\n viewport and the page scrolls behind it instead of the dialog scrolling\n inside itself. Settings was 1476px tall in a 900px window.\n\n The dialog becomes a flex column capped at the viewport: title bar and\n button pane hold their size, the content takes the remaining space and\n scrolls. Nothing else has to know its height.\n ========================================================================= */\n\n.ui-dialog {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmax-height: calc(100vh - 2rem);\n\tmax-width: calc(100vw - 2rem);\n\tbox-sizing: border-box;\n}\n\n.ui-dialog > .ui-dialog-titlebar,\n.ui-dialog > .ui-dialog-buttonpane { flex: 0 0 auto; }\n\n.ui-dialog > .ui-dialog-content {\n\tflex: 1 1 auto;\n\tmin-height: 0; /* without this a flex child refuses to shrink */\n\toverflow-y: auto;\n\tmax-height: none !important;\n\theight: auto !important;\n}\n\n/* Settings no longer needs its own cap now the dialog handles it. */\n#dialog-options { max-height: none; }\n\n/* The page itself must paint a ground. body was transparent, so anything that\n scrolled past #wrapper -- an over-tall dialog, the footer -- showed the\n browser's white through the app. */\nhtml, body {\n\tbackground-color: var(--background);\n}\n\n/* ============================================================================\n ROUTE SQUARES AND THE BLUE-LOOT LINE\n\n base.css:119 sets `.blue-loot, .blue-loot .hisec { color: loot-blue }`,\n which painted the whole line blue AND overrode the security colour on its\n route squares -- so the one place the squares carry meaning was the one\n place they did not show it.\n\n The line reads as normal text; each square keeps its own security colour and\n is big enough to actually read.\n ========================================================================= */\n\n.blue-loot,\n.sys-extra,\n.sys-extra .blue-loot {\n\tcolor: var(--foreground);\n}\n\n/* Only the destination is a link. */\n.sys-extra a, .blue-loot a { color: var(--primary); }\n\n/* Security colours win on the squares. */\n.blue-loot .hisec { color: var(--data-good) !important; }\n.blue-loot .lowsec { color: var(--data-warn) !important; }\n.blue-loot .nullsec{ color: var(--data-critical) !important; }\n\n.path span,\n.blue-loot .path span {\n\tfont-size: 1.35em;\n\tline-height: 1;\n\tletter-spacing: .06em;\n\tcursor: pointer;\n}\n.path span:hover { filter: brightness(1.35); }\n\n/* ============================================================================\n CHIPS — filled, not outlined\n\n Outlined chips in a colour put the meaning in a 1px border and left the\n label low-contrast. Filled reads at a glance and the label sits on white.\n ========================================================================= */\n\n.sys-meta .chip,\n.gate-chip,\n.sig-chip,\n#sigTable td .stable,\n#sigTable td .critical,\n#sigTable td .destab,\n.chip-pill {\n\tborder: 1px solid transparent;\n\tcolor: #fff;\n\tfont-weight: 600;\n}\n\n/* Neutral facts keep a quiet fill rather than shouting a colour. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-color: var(--border);\n}\n.gate-chip:hover, .sig-chip:hover {\n\tbackground: var(--accent-surface);\n\tborder-color: var(--border-strong);\n}\n\n/* State chips carry their colour as fill. */\n#sigTable td .stable { background: var(--data-good); border-color: var(--data-good); }\n#sigTable td .destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#sigTable td .critical { background: var(--data-critical); border-color: var(--data-critical); }\n\n/* Selected filter and option chips fill with the accent. */\n.sig-chip.on {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tbackground: var(--data-good); border-color: var(--data-good); color: #1b1b1b;\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tbackground: var(--data-info); border-color: var(--data-info); color: #1b1b1b;\n}\n\n#dialog-signature .mini-selector:checked + label,\n#dialog-options input[type=\"radio\"]:checked + label {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n\tfont-weight: 600;\n}\n\n/* Life and mass keep their own meaning when selected. */\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n\n/* ============================================================================\n NAMED COLOURS\n\n The original token extraction swept hex and rgb() literals and missed CSS\n NAMED colours entirely -- fifteen of them survived, including the green mask\n star in the topbar. Mapped onto the token set here.\n ========================================================================= */\n\nbody .mask .corporate { color: var(--foreground); }\n.source_bar.corporate { background: var(--data-good); }\n.source_bar.alliance { background: var(--data-alliance); }\n#chainMap .statics span { background: var(--muted); }\n#chainMap .gate { border-color: var(--border-strong); }\n.jBox-container { color: var(--foreground); }\n\n/* ============================================================================\n TOPBAR\n\n TQ and the mask star were carrying data colours -- green for \"server is up\",\n green for \"corporate mask\". Neither is a reading you act on, and colour in\n the header competes with the map, where colour does mean something. Both go\n white; the count itself is the information.\n ========================================================================= */\n\n#topbar #serverStatus,\n#topbar #serverStatus .stable,\n#topbar #serverStatus .critical,\n#topbar #mask,\n#topbar #mask *,\n#topbar .mask .corporate,\n#topbar .mask .alliance,\n#topbar .mask .character,\n#topbar .mask .global {\n\tcolor: var(--foreground) !important;\n}\n\n/* A genuinely down server is worth the red, though. */\n#topbar #serverStatus.is-down,\n#topbar #serverStatus.is-down .critical {\n\tcolor: var(--data-critical) !important;\n}\n\n/* ============================================================================\n ROUTE LINES\n The squares belong beside the sentence they describe, not wrapped under it.\n ========================================================================= */\n\n.sys-extra > * ,\n.sys-extra {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tgap: .35em;\n}\n\n.sys-extra .path {\n\tdisplay: inline-flex;\n\talign-items: baseline;\n\tgap: .1em;\n\tmargin-left: .2em;\n}\n","/* Panel structure.\n Appearance now comes from the design system (_override-1-system.css); what\n remains here is layout the system cannot express generically. */\n\n/* The controls bar mixes floated children with the flow, so the floated group\n has to be pulled back into the flex line rather than escaping it. */\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n}\n\n/* A hidden panel leaves its grid cell empty rather than reflowing the others.\n Gridster positions every widget absolutely from saved coordinates, so\n collapsing the gap would mean rewriting them and discarding the arrangement\n the user made. Bring it back from the palette. */\n.gridWidget.panel-hidden { display: none; }\n","/* ============================================================================\n SIGNATURE DIALOG — form layout\n\n The dialog kept its original markup (.row > .label + controls) with new\n paint on top, and it showed: bold oversized labels competing with the\n values, no field affordance at all, ragged alignment, and controls landing\n on the wrong rows.\n\n This lays a real form grid over that markup. Every field the dialog had, it\n still has, in the same order.\n ========================================================================= */\n\n#dialog-signature .ui-dialog-content,\n#dialog-signature {\n\tfont-size: var(--fs-base);\n}\n\n/* One row = quiet label in a fixed column, controls flowing after it. */\n#dialog-signature .row {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-2);\n\tmargin: 0 0 var(--space-3) 0;\n\tline-height: 1.4;\n}\n\n/* Labels are wayfinding, not content: small, quiet, consistent width so every\n value starts on the same vertical line. */\n#dialog-signature .row > .label:first-child {\n\tflex: 0 0 5.5rem;\n\ttext-align: right;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .02em;\n}\n\n/* The separator between the two id halves must not take a label column. */\n#dialog-signature .row > .label:not(:first-child) {\n\tflex: 0 0 auto;\n\tcolor: var(--muted-foreground);\n\tfont-weight: 400;\n}\n\n/* ---- fields look like fields --------------------------------------------\n The system layer keeps controls flat so table rows read as data. A form is\n the opposite case: here the whole point is showing what can be edited. */\n\n#dialog-signature input[type=\"text\"],\n#dialog-signature input[type=\"password\"],\n#dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tmin-height: 1.9rem;\n}\n\n#dialog-signature input[type=\"text\"]:hover,\n#dialog-signature select:hover { border-color: var(--border-strong); }\n\n#dialog-signature input[type=\"text\"]:focus,\n#dialog-signature select:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--background);\n}\n\n/* Values sized by what they hold, not by a stray `size` attribute. */\n#dialog-signature .signatureID { width: 3.6rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .wormholeType { width: 4.4rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .leadsTo { width: 12rem; }\n#dialog-signature [name=\"signatureName\"],\n#dialog-signature [name=\"wormholeName\"] { flex: 1 1 12rem; min-width: 8rem; }\n\n/* Unresolved required fields read red at a glance. Applied by\n signature-dialog-keyboard.js: the id always, plus type and destination for\n a wormhole -- the fields the chain is drawn from. */\n#dialog-signature .sig-missing,\n#dialog-signature .sig-missing:focus {\n\tborder-color: var(--destructive);\n\tbox-shadow: 0 0 0 1px var(--destructive);\n}\n\n/* ---- lifetime reads as one control, not three loose numbers ------------- */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tfont-size: var(--fs-base);\n}\n#dialog-signature .duration-picker input {\n\twidth: 2.4rem;\n\ttext-align: center;\n}\n#dialog-signature .duration-picker span,\n#dialog-signature .duration-picker label {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- section headings ---------------------------------------------------\n Were rotated 90 degrees in a left gutter. One divider weight, one style. */\n#dialog-signature .sideLabel {\n\tposition: static;\n\ttransform: none;\n\tdisplay: block;\n\twidth: auto;\n\tmargin: var(--space-4) 0 var(--space-3);\n\tpadding-bottom: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n}\n\n#dialog-signature .side { padding-left: 0; }\n#dialog-signature hr { display: none; } /* the second, heavier divider */\n\n/* ---- quick-select chips ------------------------------------------------\n Were wrapping into a ragged second line. One wrap-safe row, aligned under\n the value column rather than starting at the dialog edge. */\n#dialog-signature .quickSelectBar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tflex: 1 1 100%;\n\tmargin-left: 6rem; /* clears the label column */\n\tmargin-top: calc(var(--space-1) * -1);\n}\n\n#dialog-signature .quickSelectBar button {\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tpadding: 1px var(--space-2);\n\tmin-width: 0;\n\tmin-height: 0;\n\tfont-size: var(--fs-xs);\n\tline-height: 1.6;\n}\n\n#dialog-signature .quickSelectBar button:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n\n/* The bare \"|\" divider inside the bar. */\n#dialog-signature .quickSelectBar { align-items: center; }\n\n/* ---- the wormhole-type shortcut button beside the type field ----------- */\n#dialog-signature .wormholeTypeQuickSelect button {\n\tfont-size: var(--fs-xs);\n\tpadding: 1px var(--space-2);\n\tmin-height: 0;\n}\n\n/* ---- width -------------------------------------------------------------\n The dialog was sized for the old cramped layout, so the type selector wrapped\n off the ID row and the class chips broke onto a ragged second line. */\n.ui-dialog:has(#dialog-signature) {\n\twidth: min(30rem, calc(100vw - 2rem)) !important;\n}\n#dialog-signature { width: auto !important; }\n\n/* ID row holds both id halves and the signature type together -- they are one\n statement (\"this signature, of this kind\"), so they belong on one line. */\n#dialog-signature .row:first-of-type { flex-wrap: nowrap; }\n#dialog-signature #signatureType { margin-left: auto; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 8rem; }\n\n/* Class chips: one tidy row under the destination field. */\n#dialog-signature .quickSelectBar {\n\tmargin-left: 6rem;\n\tgap: 3px;\n}\n#dialog-signature .quickSelectBar button {\n\tmin-width: 2rem;\n\ttext-align: center;\n\tfont-size: var(--fs-xs);\n\tpadding: 2px 0;\n}\n\n/* Lifetime: the three numbers are one value, so box them as one control\n rather than leaving them adrift in the row. */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n}\n#dialog-signature .duration-picker input {\n\tborder: 0;\n\tbackground: transparent;\n\tmin-height: 0;\n\tpadding: 0;\n\twidth: 2rem;\n}\n","/* ============================================================================\n RESPONSIVE — Track 6\n\n Scope is deliberately asymmetric, per the corp's actual use:\n\n READ band phones. Check a chain, see what is scanned. No editing\n chrome. width < 768px OR height < 600px.\n EDIT band tablets. Update signatures, drive the map. Touch-sized\n targets. width >= 768px AND height >= 600px.\n DESKTOP width >= 1280px AND a fine pointer.\n\n The height clause is what catches a landscape phone: an iPhone 15 turned\n sideways is 852px wide -- past any sensible tablet breakpoint -- but only\n 393px tall, with no room for the editing layout. Width alone gets this\n wrong.\n\n The fine-pointer clause on desktop is what keeps a landscape iPad Pro 11\"\n (~1194px) in the EDIT band rather than handing it the dense mouse layout it\n cannot hit accurately.\n\n Density is width-driven; control sizing is pointer-driven. They are separate\n questions: a 1000px window on a desktop wants the multi-panel layout but not\n 44px touch targets.\n ========================================================================= */\n\n/* ── READ: stack the panels ──────────────────────────────────────────────\n Gridster positions every widget absolutely from saved coordinates. Below\n the breakpoint that layout is abandoned entirely and the panels return to\n document flow -- which is the reflow the fixed grid cannot do. The saved\n coordinates are untouched, so rotating back restores the arrangement. */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t#wrapper { overflow-x: hidden; }\n\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmin-height: 12rem;\n\t\tmargin: 0 0 var(--space-3) 0 !important;\n\t\toverflow: visible;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t/* Chain map wants the most room; signatures next. */\n\t#chainWidget .content { min-height: 55vh; }\n\t#notesWidget .content { min-height: 14rem; }\n\n\t/* Resize handles are meaningless without a grid. */\n\t.grid-resize { display: none !important; }\n\n\t/* Editing chrome is out of scope on a phone: this band is for reading. */\n\t#signaturesWidget #add-signature,\n\t#signaturesWidget #edit-signature,\n\t#signaturesWidget #delete-signature,\n\t#signaturesWidget #undo,\n\t#signaturesWidget #redo,\n\t#notesWidget #add-comment,\n\t#layout {\n\t\tdisplay: none !important;\n\t}\n\n\t/* The topbar carries a lot for 393px. Keep identity, time and search. */\n\t#serverStatus,\n\t#topbar h3:nth-of-type(2) { display: none; }\n\n\t#topbar { position: sticky; }\n\n\t/* Signature table: drop the columns that only matter while editing. */\n\t#sigTable th:nth-child(n+5),\n\t#sigTable td:nth-child(n+5) { display: none; }\n}\n\n/* ── EDIT: tablets ───────────────────────────────────────────────────────\n Two columns rather than four panels on a fixed grid; the arrangement a\n 1194px tablet can actually use. */\n\n@media (min-width: 768px) and (max-width: 959px) and (min-height: 600px) {\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t}\n\n\t.gridster > ul {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t\tgap: var(--space-3);\n\t\tpadding: 0 var(--space-2);\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t#infoWidget { min-height: 34vh; }\n\t#signaturesWidget { min-height: 34vh; }\n\t#notesWidget { min-height: 26vh; }\n\n\t/* The chain is the reason you are here; give it the full width. */\n\t#chainWidget {\n\t\tgrid-column: 1 / -1;\n\t\tmin-height: 46vh;\n\t}\n\n\t.grid-resize { display: none !important; }\n}\n\n/* ── Touch sizing, independent of width ──────────────────────────────────\n Driven by pointer, not viewport, because they are different questions. A\n coarse pointer needs a 44px target whatever the screen is. */\n\n@media (pointer: coarse) {\n\t.controls i,\n\t.controls span.control,\n\t.panel-hide,\n\t#topbar i,\n\t.quickSelectBar button {\n\t\tmin-width: 44px;\n\t\tmin-height: 44px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\tbutton, .ui-button, input[type=\"button\"], input[type=\"submit\"] {\n\t\tmin-height: 44px;\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\tinput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\n\tselect, textarea {\n\t\tmin-height: 40px;\n\t\tfont-size: 1.15rem; /* keeps iOS from zooming the field on focus */\n\t}\n\n\t#sigTable td { padding: var(--space-3) var(--space-2); }\n\n\t#dialog-signature .mini-selector + label {\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\t/* Hover styling is misleading on touch -- it sticks after a tap. */\n\t#sigTable tbody tr:hover > td { background-color: transparent; }\n}\n\n/* Dialogs must not exceed a small viewport. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.ui-dialog {\n\t\tmax-width: calc(100vw - var(--space-4)) !important;\n\t\tmax-height: calc(100vh - var(--space-4)) !important;\n\t\tleft: var(--space-2) !important;\n\t\toverflow: auto;\n\t}\n\t.ui-dialog .ui-dialog-content { max-height: 60vh; overflow: auto; }\n}\n\n/* Respect the OS setting; the map already animates a great deal. */\n@media (prefers-reduced-motion: reduce) {\n\t*, *::before, *::after {\n\t\tanimation-duration: .001ms !important;\n\t\tanimation-iteration-count: 1 !important;\n\t\ttransition-duration: .001ms !important;\n\t}\n}\n\n/* ── Touch on the chain map ──────────────────────────────────────────────\n #chainParent is a scroll container driven by dragscroll.js, which is a\n mouse-only library (mousedown/mousemove). Rather than port it, let the\n browser do what it is already good at: native touch panning and pinch-zoom\n on the scroll container. dragscroll keeps working for mice untouched.\n\n touch-action must be set explicitly because the map suppresses user-select\n and jQuery UI's draggable calls preventDefault on pointer events, which\n otherwise kills native scrolling on touch. */\n\n#chainParent {\n\ttouch-action: pan-x pan-y pinch-zoom;\n\t-webkit-overflow-scrolling: touch;\n\toverscroll-behavior: contain;\n}\n\n/* Nodes stay draggable at tablet width and above; on a phone the map is for\n reading, so a drag should pan the map rather than move somebody's system. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainMap .system,\n\t#chainMap [class*=\"system\"] {\n\t\ttouch-action: inherit;\n\t}\n}\n","/* ============================================================================\n SYSTEM PANEL\n\n Was two 50% floats with a
: the system identity on the left,\n and \"Blue loot buyer\" stranded in a right-hand column it did not belong in.\n Statics sat last, below the links, so the rows that matter most needed\n scrolling to reach.\n\n Rebuilt as a single column in reading order -- identity, what it connects\n to, then the supporting detail -- with the metadata as chips.\n ========================================================================= */\n\n.sys-panel {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--space-3);\n\tpadding: var(--space-3);\n\toverflow-y: auto;\n\theight: 100%;\n\tbox-sizing: border-box;\n}\n\n/* ---- identity ----------------------------------------------------------- */\n.sys-head { display: flex; flex-direction: column; gap: var(--space-2); }\n\n.sys-panel .sys-name {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tfont-size: var(--fs-lg);\n\tfont-weight: 600;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\tletter-spacing: -.01em;\n}\n\n/* Security / region / faction as chips: three small facts, read at a glance,\n in the same register as the life and mass chips elsewhere. */\n.sys-meta { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sys-meta .chip {\n\tmargin: 0;\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n\twhite-space: nowrap;\n}\n/* An empty chip should not draw a pill. */\n.sys-meta .chip:empty { display: none; }\n/* Security colouring comes from the data tokens already on the element. */\n.sys-meta #infoSecurity { color: inherit; }\n\n/* ---- what it connects to, promoted above the supporting detail ---------- */\n.sys-statics {\n\tfont-size: var(--fs-sm);\n\tline-height: 1.7;\n\tcolor: var(--card-foreground);\n}\n.sys-statics:empty { display: none; }\n\n/* ---- blue-loot buyer and other route notes ------------------------------\n Was floated into a right-hand column of its own. It is a note about this\n system, so it reads inline with the rest. */\n.sys-extra {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n\tline-height: 1.8;\n}\n.sys-extra:empty { display: none; }\n\n/* ---- graph -------------------------------------------------------------- */\n#activityGraph { min-height: 120px; }\n\n/* Range switch as a segmented control rather than \"Week - 48Hour - 24Hour\". */\n.sys-range {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tjustify-content: center;\n}\n.sys-range a {\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\ttext-decoration: none;\n}\n.sys-range a:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n}\n\n/* ---- external links ----------------------------------------------------- */\n.sys-links {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-3);\n\tjustify-content: center;\n\tpadding-top: var(--space-1);\n\tborder-top: 1px solid var(--border);\n\tfont-size: var(--fs-sm);\n}\n.sys-links a { color: var(--muted-foreground); font-weight: 500; }\n.sys-links a:hover { color: var(--primary); }\n","/* ============================================================================\n CHAIN MAP + SIGNATURE TABLE\n\n The two surfaces the tool is actually used through, and the last places\n carrying the old look.\n\n The map nodes kept their bevels because they are built from VENDOR-PREFIXED\n gradients (-moz-linear-gradient, -webkit-gradient), which the earlier sweep\n for `linear-gradient` did not match.\n ========================================================================= */\n\n/* ---- copy affordance ---------------------------------------------------\n tripwire.css set `content: '\\01F4C4\\00FE0E'` -- the page-facing-up emoji\n with the text-presentation variation selector, asking for a monochrome\n glyph most fonts only ship in colour. The result was fallback tofu, which\n is the \"broken document\" after the system name. There is no copy glyph in\n the icon font, so it is drawn: two offset sheets, the usual copy sign. */\n.copy::after { content: none; }\n\n.copy {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: -0.1em;\n\topacity: .55;\n\ttransition: opacity .12s ease;\n}\n.copy:hover, .copy:focus-visible { opacity: 1; }\n\n.copy::before,\n.copy::after {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: .62em;\n\theight: .78em;\n\tborder: 1px solid currentColor;\n\tborder-radius: 2px;\n}\n.copy::before { left: 0; top: .22em; }\n.copy::after { left: .3em; top: 0; background: var(--card); }\n\n/* ============================================================================\n CHAIN MAP\n ========================================================================= */\n\n/* Flat fills. The class colour moves to the border, where it reads as a label\n rather than as a lit surface, and the node ground stays consistent so the\n map is one plane instead of a tray of buttons. */\n#chainMap .currentNode > div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node,\n#chainMap div.loop,\n#chainMap div.node {\n\tbackground-image: none !important;\n\tbox-shadow: none;\n\tborder-radius: var(--radius-md);\n\tborder-width: 1px;\n\tborder-style: solid;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\n#chainMap div.node { background-color: var(--card); }\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 22%, var(--card)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 22%, var(--card)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 22%, var(--card)); }\n#chainMap div.loop { background-color: color-mix(in oklab, var(--data-class-void) 40%, var(--card)); }\n\n/* Where you are is the one thing that should be unmistakable. */\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 18%, var(--card));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 1px var(--primary);\n}\n\n#chainMap div.node:hover { border-color: var(--border-strong); }\n\n/* Badges were 9px monospace with a 6px glow. Same chip language as everywhere\n else, so a count on the map reads like a count in the table. */\n#chainMap span.badge {\n\tbackground-color: var(--muted);\n\tcolor: var(--muted-foreground);\n\tbox-shadow: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.5;\n\tpadding: 0 5px;\n\tmin-width: 1.1em;\n}\n\n#chainMap .nodeType {\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n}\n\n#chainMap .statics span {\n\tborder-radius: 999px;\n\tpadding: 0 5px;\n\tfont-size: var(--fs-xs);\n}\n\n/* ============================================================================\n SIGNATURE TABLE\n ========================================================================= */\n\n#sigTableWrapper { padding: 0; }\n\n#sigTable th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }\n#sigTable th.sortable:hover { color: var(--foreground); }\n\n/* The sort arrow was an empty -- an icon element with no\n icon. Draw the state instead, and only on the column actually sorted. */\n#sigTable th.sortable i[data-icon=\"\"] { display: none; }\n\n#sigTable th.sortable::after {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: 0; height: 0;\n\tmargin-left: var(--space-1);\n\tborder-left: 3px solid transparent;\n\tborder-right: 3px solid transparent;\n\topacity: 0;\n\ttransition: opacity .12s ease;\n}\n#sigTable th.tablesorter-headerAsc::after {\n\tborder-bottom: 4px solid var(--primary);\n\topacity: 1;\n}\n#sigTable th.tablesorter-headerDesc::after {\n\tborder-top: 4px solid var(--primary);\n\topacity: 1;\n}\n\n/* Signature type as a chip, so the group reads at a glance down the column\n the way life and mass already do. */\n#sigTable td.sigType > span,\n#sigTable td .sigTypeName {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n}\n\n/* Age is context, not content. */\n#sigTable td.sigAge { color: var(--muted-foreground); font-variant-numeric: tabular-nums; }\n\n/* Numeric-ish columns line up. */\n#sigTable td.sigID { font-variant-numeric: tabular-nums; letter-spacing: .03em; }\n\n/* An empty table should say so rather than being a blank rectangle. */\n#sigTable tbody:empty::after,\n#sigTableWrapper > .sig-empty {\n\tcontent: \"No signatures in this system\";\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n}\n\n/* ============================================================================\n SIGNATURE FILTER BAR\n After Aperture's SignatureModule: group chips, a scan-state cycle, and live\n counts. Scanning a long list down one column is the whole job, so the bar\n stays pinned and only the table scrolls.\n ========================================================================= */\n\n.sig-filter {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tpadding: var(--space-2) var(--space-2);\n\tborder-bottom: 1px solid var(--border);\n}\n\n.sig-filter-groups { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sig-chip {\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.6;\n\tpadding: 0 var(--space-2);\n\tmin-height: 0;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n.sig-chip:hover { border-color: var(--border-strong); background: var(--muted); color: var(--foreground); }\n\n/* Active filters stand out without the harshness of a solid fill. */\n.sig-chip.on {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 14%, transparent);\n}\n\n/* The scan cycle earns its own colours: scanned reads as settled, unscanned as\n outstanding work. */\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tborder-color: var(--data-good); color: var(--data-good);\n\tbackground: color-mix(in oklab, var(--data-good) 14%, transparent);\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tborder-color: var(--data-info); color: var(--data-info);\n\tbackground: color-mix(in oklab, var(--data-info) 14%, transparent);\n}\n\n.sig-stats {\n\tmargin-left: auto;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\twhite-space: nowrap;\n\tfont-variant-numeric: tabular-nums;\n}\n\n#sigTable tbody tr.sig-filtered { display: none; }\n\n/* Unscanned rows are outstanding work; mark the id rather than shouting the\n whole row, the way Aperture marks the still-empty required cells. */\n#sigTable tbody tr.sig-unscanned > td:first-child {\n\tbox-shadow: inset 2px 0 0 var(--data-info);\n}\n\n/* Site-safety glyph, derived from the group. A combat site is somewhere rats\n can shoot you; an exploration site is not; a wormhole is neither. */\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before,\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: .5em; height: .5em;\n\tmargin-right: .45em;\n\tborder-radius: 50%;\n\tvertical-align: .05em;\n}\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before { background: var(--data-critical); }\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before { background: var(--data-good); }\n\n/* Chip labels sit on a fill now, so they take the full-strength text colour --\n muted-on-muted was the low-contrast case that made these hard to read. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tcolor: var(--foreground);\n}\n","/* ============================================================================\n DESKTOP LAYOUT\n\n Everything below fixes one root cause: the desktop layout was gridster's\n fixed pixel grid, positioned absolutely from saved coordinates. It did not\n use the window it was in -- at 1600x1000 the panels stopped at 1250x440 and\n the rest was raw background plus footer, which read as a page that had not\n finished loading.\n\n The grid now fills the viewport at every width. The panel registry still\n controls what is shown; what is gone is drag-and-resize, which only existed\n to work around a layout that never fit in the first place.\n ========================================================================= */\n\n/* Desktop only. Below 1280px the READ and EDIT bands in\n _override-5-responsive.css own the layout: panels return to document flow\n and the page scrolls. These rules used to apply at every width, which put\n three columns on a 375px phone with two of them off the right edge -- the\n responsive file sorts earlier and could not win. The guard is what the\n earlier file was always assuming. */\n@media (min-width: 960px) {\n\thtml, body { height: 100%; overflow: hidden; }\n\n\t#wrapper {\n\t\theight: 100vh;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#inner-wrapper {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#topbar { flex: 0 0 auto; position: static; }\n\n\t.gridster {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tvisibility: visible !important;\n\t\tpadding: var(--space-2);\n\t\tbox-sizing: border-box;\n\t}\n\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: 100% !important;\n\t\tmargin: 0 !important;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\n\t\tdisplay: grid;\n\t\tgap: var(--space-2);\n\t\t/* Weighted by how much each panel earns: signatures widest, notes least. */\n\t\tgrid-template-columns: minmax(260px, 1fr) minmax(340px, 1.35fr) minmax(220px, 0.85fr);\n\t\t/* The chain is the reason the tool exists, so it takes what is left. */\n\t\tgrid-template-rows: minmax(180px, 32vh) 1fr;\n\t}\n}\n\n.gridWidget {\n\tposition: static !important;\n\twidth: auto !important;\n\theight: auto !important;\n\tmin-height: 0;\n\tmargin: 0 !important;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\n.gridWidget > .controls {\n\tposition: static !important;\n\tflex: 0 0 auto;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n}\n\n.gridWidget > .content {\n\tposition: static !important;\n\tflex: 1 1 auto;\n\tmin-height: 0;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n\toverflow: auto;\n}\n\n#chainWidget { grid-column: 1 / -1; }\n\n/* Resize handles belong to a grid that no longer exists. */\n.grid-resize { display: none !important; }\n\n/* A hidden panel should give its space back now the grid can reflow. */\n.gridWidget.panel-hidden { display: none !important; }\n\n/* ============================================================================\n BACKGROUND\n\n The image was the brightest, highest-contrast thing on screen, showing\n through translucent panels and pulling the eye off the data every time. It\n stays -- it is the corp's ship -- but well behind a wash, and the panels go\n opaque so nothing reads through them.\n ========================================================================= */\n\n#wrapper::before {\n\tcontent: \"\";\n\tposition: fixed;\n\tinset: 0;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\tcolor-mix(in oklab, var(--background) 88%, transparent),\n\t\tcolor-mix(in oklab, var(--background) 94%, transparent)\n\t);\n\tpointer-events: none;\n\tz-index: 0;\n}\n\n#inner-wrapper { position: relative; z-index: 1; }\n\n.gridWidget {\n\tbackground-color: var(--card); /* opaque: nothing reads through a panel */\n}\n\n/* ============================================================================\n FOOTER\n Donation plea, a yellow button and a wall of CCP legalese, centred on the\n background. It belongs on the landing page, not on the instrument.\n ========================================================================= */\n\n#footer { display: none !important; }\n\n/* ============================================================================\n TOPBAR\n Was a left cluster and a right cluster with ~1000px of nothing between.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: 0 var(--space-3);\n\theight: auto;\n\tmin-height: 2.6rem;\n\tline-height: normal;\n}\n#topbar > .align-left { display: flex; align-items: center; gap: var(--space-3); flex: 1 1 auto; }\n#topbar > .align-right { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; padding-right: 0; }\n#topbar h1, #topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* ============================================================================\n DENSITY AND EMPHASIS\n Everything was the same mid-grey, so nothing said where to look.\n ========================================================================= */\n\n/* The chain panel is the subject; give its header the accent rule. */\n#chainWidget > .controls { border-bottom-color: color-mix(in oklab, var(--primary) 45%, var(--border)); }\n#chainWidget .panel-title { color: var(--primary); }\n\n/* Gate chips should not strand a single item on its own line. */\n.gate-list { row-gap: var(--space-1); }\n.gate-chip { flex: 0 0 auto; }\n\n/* Panel headers all one height, whatever they contain. */\n.gridWidget > .controls { min-height: 2.1rem; }\n\n/* The activity graph earns its space or gives it up. */\n#activityGraph { min-height: 0; }\n#activityGraph.is-sparse { height: 84px !important; opacity: .75; }\n#activityGraphControls { margin-top: var(--space-1); }\n\n/* gridster.css sets `.gridster .gs-w { background: var(--scrim-60) }` -- two\n classes, which outranks a plain .gridWidget. That translucent scrim is what\n let the background image read straight through every panel. */\n.gridster .gs-w,\n.gridster .gridWidget {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n}\n\n/* With every panel opaque the background image is hidden completely, which\n throws away the one piece of brand on the page. The chain panel is the one\n surface with real empty space, so it alone stays slightly translucent -- the\n ship reads faintly behind the map and nowhere near the tables. */\n.gridster .gs-w#chainWidget {\n\tbackground-color: color-mix(in oklab, var(--card) 88%, transparent);\n}\n\n/* The map itself sits on nothing, so the node is what stands out. */\n#chainWidget > .content { background: transparent; }\n\n/* ============================================================================\n PROPORTION, WITH REAL DATA IN FRONT OF ME\n\n A one-signature system flattered the 32vh top row. With a dozen signatures\n the table shows four and clips, while the chain holds 60% of the screen for\n a single node. Signatures are what you read during a scan, so the top row\n grows and the chain takes what is left rather than the reverse.\n ========================================================================= */\n\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ============================================================================\n SIGNATURE TABLE COLUMN SIZING\n The id was wrapping mid-value (\"ABC-\" / \"111\"), the group was stated twice\n (dot plus word), site names were centre-aligned under a left-aligned header,\n and life/mass held full width while empty for every non-wormhole row.\n ========================================================================= */\n\n#sigTable { table-layout: fixed; }\n\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.5rem; white-space: nowrap; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6rem; white-space: nowrap; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.5rem; white-space: nowrap; }\n#sigTable th:nth-child(4), #sigTable td:nth-child(4) { width: auto; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 4.5rem; white-space: nowrap; }\n\n/* Everything reads left except the state columns, which line up on the right\n so they scan as a pair. */\n#sigTable td, #sigTable th { text-align: left; }\n#sigTable td:nth-child(5), #sigTable th:nth-child(5),\n#sigTable td:nth-child(6), #sigTable th:nth-child(6) { text-align: right; }\n\n/* The alignment classes the app writes inline fight the above. */\n#sigTable td.centerAlign, #sigTable td.rightAlign { text-align: inherit; }\n\n/* The signature id is an identifier; never break it. */\n#sigTable td:nth-child(1) { font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; }\n\n/* Header row is chrome, not content. */\n#sigTable thead th { position: sticky; top: 0; background: var(--card); z-index: 1; }\n\n/* ============================================================================\n HIERARCHY\n Three text tokens used almost interchangeably meant nothing led the eye.\n Primary content sits at full strength, supporting detail steps back.\n ========================================================================= */\n\n.sys-panel .sys-name { color: var(--foreground); font-weight: 600; }\n.sys-statics, .sys-extra { color: var(--card-foreground); }\n.sys-links a, #version,\n#activityGraphControls a,\n.sig-stats { color: var(--muted-foreground); }\n\n/* The filter bar is a control surface; it should sit quieter than the rows it\n filters. */\n.sig-filter { padding: var(--space-1) var(--space-2); }\n.sig-chip { font-size: calc(var(--fs-xs) * 0.95); }\n\n/* The version chip was absolutely positioned at top:4px right:20px inside the\n logo, which worked when the topbar was a line-height hack. In a flex row it\n lands on top of the wordmark. It is a sibling, so it sits like one. */\n#topbar #logo { position: static; display: flex; align-items: baseline; gap: var(--space-2); }\n\n#version {\n\tposition: static;\n\ttop: auto; right: auto;\n\theight: auto;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Panel visibility menu, opened from the layout control. */\n#panel-menu {\n\tposition: absolute;\n\tz-index: 3000;\n\tmin-width: 12rem;\n\tpadding: var(--space-1) 0;\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.5);\n}\n#panel-menu button {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\twidth: 100%;\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\ttext-align: left;\n\tpadding: var(--space-1) var(--space-3);\n\tmin-height: 0;\n}\n#panel-menu button:hover { background: var(--muted); }\n#panel-menu .tick { width: 1em; color: var(--primary); }\n\n/* ============================================================================\n CHARACTER PORTRAIT\n\n EVE portraits are square, so they need masking to read as an avatar. Served\n from images.evetech.net -- image.eveonline.com is the retired host and the\n settings portrait was still pointing at it.\n ========================================================================= */\n\n.avatar {\n\tdisplay: inline-block;\n\twidth: 1.6rem;\n\theight: 1.6rem;\n\tborder-radius: 50%;\n\tobject-fit: cover;\n\tvertical-align: middle;\n\tbackground: var(--muted);\n\t/* A thin ring keeps a dark portrait from bleeding into a dark topbar. */\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#topbar #user {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-2);\n}\n\n.avatar-lg {\n\twidth: 3.4rem;\n\theight: 3.4rem;\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#dialog-options #avatar { padding-right: var(--space-3); vertical-align: top; }\n\n/* account.css sets `#login img { border-radius: 3px }` -- an id plus an\n element, which outranks .avatar and squared the portrait off again. */\n#login img.avatar,\n#topbar img.avatar,\nimg.avatar {\n\tborder-radius: 50%;\n}\n\n/* Corporation and alliance logos are marks, not faces; they stay square. */\nimg.logo {\n\twidth: 1.6rem; height: 1.6rem;\n\tobject-fit: contain;\n\tvertical-align: middle;\n}\n","/* ============================================================================\n CHAIN TAB STRIP\n\n On a busy corp map this is the primary navigation -- the chain runs\n roughly sixteen screen widths, so you reach a system by picking its chain,\n not by scrolling to it. Thirteen-plus tabs is normal.\n\n The old strip could not survive that: `.tab { min-width: 75px }` with no\n overflow handling meant thirteen tabs demanded ~975px and simply pushed the\n rest of the header off the right edge. It also used floats inside\n inline-blocks with text-align:right, so the label and its controls fought\n each other.\n\n Now: one scrolling row that takes the space left over, with every other\n control held in place beside it.\n ========================================================================= */\n\n#chainWidget > .controls {\n\tflex-wrap: nowrap;\n\tgap: var(--space-2);\n}\n\n/* Everything that is not the strip keeps its size. */\n#chainWidget > .controls > *:not(#chainTabs) { flex: 0 0 auto; }\n\n#chainTabs {\n\tflex: 1 1 auto;\n\tmin-width: 0; /* without this a flex child refuses to shrink */\n\tdisplay: flex;\n\talign-items: stretch;\n\tgap: 2px;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscrollbar-width: thin;\n\tscroll-snap-type: x proximity;\n\t/* Fade the edges so it is obvious there are more chains off-screen. */\n\tmask-image: linear-gradient(to right, transparent 0, #000 12px,\n\t #000 calc(100% - 12px), transparent 100%);\n}\n\n#chainTabs::-webkit-scrollbar { height: 4px; }\n#chainTabs::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 999px; }\n#chainTabs::-webkit-scrollbar-track { background: transparent; }\n\n/* ---- the tab itself ----------------------------------------------------- */\n\n#chainTabs .tab {\n\tflex: 0 0 auto;\n\tmin-width: 0; /* was 75px, which is what broke the header */\n\tmax-width: 12rem;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm) var(--radius-sm) 0 0;\n\tborder-bottom: 2px solid transparent;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1.6;\n\ttext-align: left;\n\twhite-space: nowrap;\n\tscroll-snap-align: start;\n\ttransition: color .12s ease, background-color .12s ease, border-color .12s ease;\n}\n\n#chainTabs .tab:hover {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--border-strong);\n}\n\n/* The active chain is where you are; a 2px blue rule was too quiet for the\n one control you navigate by. */\n#chainTabs .tab.current {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n\tfont-weight: 600;\n}\n\n/* Floats inside an inline-block, with the row right-aligned, meant the label\n and its buttons never agreed on a baseline. */\n#chainTabs .tab .name {\n\tfloat: none;\n\tpadding-left: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n#chainTabs .tab .closeTab,\n#chainTabs .tab .editTab {\n\tfloat: none;\n\tflex: 0 0 auto;\n\tpadding: 0 2px;\n\tfont-size: .85em;\n\tline-height: 1;\n\tcolor: var(--muted-foreground);\n}\n\n/* Reveal the controls on the tab you are pointing at, and always on the active\n one -- otherwise renaming the chain you are in means hunting for a target\n that appears only on hover. */\n#chainTabs .tab:hover .closeTab,\n#chainTabs .tab:hover .editTab,\n#chainTabs .tab.current .closeTab,\n#chainTabs .tab.current .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#chainTabs .tab .closeTab:hover { color: var(--destructive); }\n#chainTabs .tab .editTab:hover { color: var(--primary); }\n\n/* While dragging to reorder. */\n#chainTabs .ui-sortable-helper {\n\tbackground: var(--card);\n\tborder-color: var(--border);\n\tbox-shadow: 0 4px 12px rgba(0,0,0,.4);\n}\n\n/* The chain panel's own title is redundant next to a strip of named chains,\n and at thirteen tabs the space is worth more than the label. */\n#chainWidget .panel-title { display: none; }\n\n/* ============================================================================\n PANEL HEADER: RIGHT-ANCHORED CONTROLS\n\n .controls is a flex row, and two of its children carried `margin-left: auto`\n -- the group the markup floats right, and the panel-hide button. Flexbox\n divides free space equally between every auto margin, so instead of both\n sitting at the right edge the trailing group was parked in the middle of\n the header (measured: 203px short of the right in System, 206px in\n Signatures, 168px in Notes).\n\n Exactly one element opens the gap. Everything after it packs against the\n right edge behind it.\n ========================================================================= */\n\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n}\n\n/* No second auto margin -- this just follows the group above. */\n.gridWidget > .controls > .panel-hide { margin-left: 0; }\n\n/* If a panel ever has no floated group, the hide button still needs to open\n the gap itself. :only-of-type is too narrow, so match on it being the sole\n right-hand item. */\n.gridWidget > .controls > div[style*=\"float\"] ~ .panel-hide { margin-left: 0; }\n.gridWidget > .controls > .panel-hide:first-of-type { margin-left: auto; }\n\n/* The chain header sizes its strip with flex-grow instead, so nothing there\n should also claim the free space. */\n#chainWidget > .controls > div[style*=\"float\"] { margin-left: 0; }\n","/* ============================================================================\n MAIN HEADER\n\n Was one cramped line of unrelated things divided by literal \"|\" characters,\n with two inline `font-size: 1.7em` overrides and a portrait too small to\n recognise.\n\n An earlier attempt made this a grid with `display: contents` on the\n wrappers; that placed every right-hand control into the same grid cell, so\n they stacked and ran off the right edge. A flex row cannot do that: the\n right cluster is one item that keeps its own width.\n\n Server population and EVE time have moved out entirely, to the status bar\n along the bottom -- they are ambient readings, not navigation.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: var(--space-2) var(--space-3);\n\theight: auto;\n\tmin-height: 0;\n\tline-height: normal;\n\tflex-wrap: nowrap;\n}\n\n#topbar > .align-left {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 1 1 auto;\n\tmin-width: 0; /* lets the left side shrink instead of shoving */\n}\n\n#topbar > .align-right {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 0 0 auto; /* never compressed, never pushed out */\n\tpadding-right: 0;\n}\n\n#topbar #logo {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tflex: 0 0 auto;\n}\n#topbar #logo a { font-size: 1.8rem; line-height: 1.1; }\n\n#topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* Twice the previous portrait; the header height follows it. */\n#topbar .avatar { width: 2.4rem; height: 2.4rem; }\n#topbar #user { gap: var(--space-2); font-size: 1.05rem; }\n\n#topbar #settings,\n#topbar #layout { font-size: 1.3rem; flex: 0 0 auto; }\n\n/* The system search takes the slack in the middle rather than the icons. */\n#topbar #systemSearch { flex: 1 1 auto; min-width: 0; }\n\n/* ============================================================================\n STATUS BAR\n\n Ambient readings, out of the way: server population left, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--space-4);\n\tpadding: var(--space-1) var(--space-3);\n\tborder-top: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n}\n\n#statusbar .bar-value { font-variant-numeric: tabular-nums; font-weight: 600; }\n#statusbar #serverStatus.is-down .bar-value { color: var(--data-critical); }\n\n.bar-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n/* ============================================================================\n NOTE EDITOR\n Replaces CKEditor 4's skin. Same visual language as everything else, so the\n editor does not look like a different application embedded in the panel.\n ========================================================================= */\n\n.rte {\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n\toverflow: hidden;\n}\n\n.rte-bar {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 2px;\n\tpadding: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--card) 60%, transparent);\n}\n\n.rte-btn {\n\tmin-width: 1.9rem;\n\tmin-height: 1.9rem;\n\tpadding: 0 var(--space-1);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1;\n\tcursor: pointer;\n}\n.rte-btn:hover { background: var(--accent-surface); color: var(--foreground); border-color: var(--border); }\n\n.rte-sep { width: 1px; align-self: stretch; margin: 2px var(--space-1); background: var(--border); }\n\n.rte-swatch {\n\twidth: 1.1rem; height: 1.1rem;\n\tmin-width: 0; min-height: 0;\n\tpadding: 0;\n\tborder: 1px solid var(--border);\n\tborder-radius: 50%;\n\tcursor: pointer;\n}\n.rte-swatch:hover { transform: scale(1.15); }\n\n.rte-area {\n\tmin-height: 7rem;\n\tmax-height: 22rem;\n\toverflow-y: auto;\n\tpadding: var(--space-2);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tline-height: 1.6;\n\toutline: none;\n}\n.rte-area:focus { background: var(--background); }\n.rte-area a { color: var(--primary); }\n.rte-area ul, .rte-area ol { padding-left: 1.4em; margin: .3em 0; }\n","/* ============================================================================\n TYPOGRAPHY: ONE FAMILY\n\n The stylesheets declare thirteen different font stacks -- Arial, Verdana,\n \"Arial, verdana, tahoma\", lucida, bare sans-serif, and so on. Most were\n already being overridden by the body rule, but two rules still resolved\n to `lucida`, and any of the rest would resurface the moment a component was\n touched.\n\n One family everywhere, except the icon font and deliberate monospace.\n ========================================================================= */\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n[data-icon], [data-icon]::before, [data-icon]::after,\n.icon, .icon::before { font-family: 'icon' !important; }\n\ncode, pre, .mono,\n#sigTable td:nth-child(1),\n#statusbar .bar-value,\n#topbar #serverTime { font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n SETTINGS SECTION HEADINGS\n\n They were sticky, which needed a solid background to avoid text scrolling\n through them -- and the background did not match every surface they crossed,\n so they rendered as a band that did not line up. Sticky buys little in a\n dialog this short. They are plain headings now.\n ========================================================================= */\n\n.settings-sections > h3 {\n\tposition: static;\n\tbackground: transparent;\n}\n\n/* ============================================================================\n HEADER: NEVER CLIP THE RIGHT CLUSTER\n\n Reported repeatedly. The right cluster is fixed-size and the left is\n flexible, but the left contains a search input with an intrinsic minimum\n width, so at narrow widths it refused to shrink and pushed the icons past\n the edge. Truncating the left is always preferable to losing a control.\n ========================================================================= */\n\n#topbar > .align-left { overflow: hidden; }\n#topbar #systemSearch,\n#topbar #currentSpan,\n#topbar #searchSpan { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n#topbar #systemSearch input[type=\"text\"] { max-width: 14rem; min-width: 0; }\n#topbar > .align-right { z-index: 2; }\n\n/* ============================================================================\n SYSTEM PANEL: BREATHING ROOM AT THE TOP\n The system name sat hard against the panel header.\n ========================================================================= */\n\n.sys-panel { padding-top: var(--space-4); }\n.sys-panel .sys-name { margin-top: 0; }\n\n/* ============================================================================\n STATUS BAR: THREE SLOTS\n Population left, Tripwire version centred, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto 1fr;\n\talign-items: center;\n}\n#statusbar > #serverStatus { justify-self: start; }\n#statusbar > #version { justify-self: center; }\n#statusbar > #eveTime { justify-self: end; }\n\n/* The chart still renders a few pixels past its box even when told the height,\n because Google Charts adds its own chrome. Clip rather than let it paint over\n what follows. */\n#activityGraph { overflow: hidden; }\n\n/* Two rules still resolved to the bundled `lucida` face. */\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n/* signatures.css uses a bundled `lucida` TTF for the signature-id column, to\n keep ids aligned down the column. The intent is right; shipping a font file\n for one column is not. A system monospace stack with tabular figures does\n the same job with no download. */\n#sigTable td:nth-child(1) {\n\tfont-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n\tfont-variant-numeric: tabular-nums;\n\tletter-spacing: .04em;\n}\n\n/* ── The header overflow, root cause ─────────────────────────────────────\n #topbar is content-box (this stylesheet predates border-box being the\n default anyone reaches for), so `width: 100%` plus `padding: 6px 9px`\n resolves to viewport + 18px. The bar hangs 18px off the right of the\n screen and the last control -- the layout icon -- is cut in half.\n\n Every check I ran against this measured `scrollWidth - clientWidth` on\n the bar, which is 0: the bar is not overflowing its own box, its box is\n bigger than the viewport. The document does not report it either,\n because overflow-x is hidden upstream. Both numbers read clean while\n the icon was visibly severed. The right question is whether the bar's\n right edge exceeds documentElement.clientWidth.\n\n Padding belongs inside the width. */\n#topbar {\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tmax-width: 100%;\n}\n","/* ============================================================================\n POLISH PASS\n\n Six things, all of which come back to the same habit: space and weight were\n applied per-element as each one was noticed, so nothing shared a rule and\n nothing agreed with anything else. These set the shared rules.\n ========================================================================= */\n\n/* ── 1. PANEL INSETS ─────────────────────────────────────────────────────\n Measured before writing this, per panel, first painted child against the\n content box:\n\n Notes padding 0 -- \"Posted by\" flush against the left border\n Signatures padding 0 -- filter chips flush against both\n Chain padding 0 -- correct, the map is meant to be full bleed\n System 12px 9px 9px -- three different values, none of them a\n token, top too tight to read as intended\n\n Content that touches its own frame reads as a rendering fault, which is\n what it looked like. One inset, one token, every panel. */\n\n/* Explicit pixels, not var(--space-4). The root font-size here is 12px, not\n the 16px rem maths assumes, so every rem-based value lands 25% short of\n what it reads as -- var(--space-4) is \"1rem\" and resolves to 12px. Rather\n than redefine the scale under everything already tuned against it, the\n values that need to be a specific size are stated as that size. */\n.gridWidget > .content,\n#infoWidget > .content,\n#notesWidget > .content,\n#signaturesWidget > .content {\n\tpadding: 16px;\n\tbox-sizing: border-box;\n\toverflow: auto;\n\tmin-height: 0;\n}\n\n/* The map is the exception and stays edge to edge: it is a canvas that pans,\n and an inset would clip it rather than frame it. The breathing room goes\n inside the scroll area instead, so nodes never butt against the divider. */\n#chainWidget > .content { padding: 0; min-height: 0; overflow: hidden; }\n#chainParent { padding: var(--space-3); box-sizing: border-box; max-height: 100%; overflow: auto; }\n\n/* Rhythm between the blocks inside a panel, which previously had none. */\n#sigFilterBar { margin-bottom: var(--space-3); }\n.sys-panel > * + * { margin-top: var(--space-3); }\n#activityGraphControls { margin-top: var(--space-2); }\n\n/* ── 2. SPACE ALLOCATION ─────────────────────────────────────────────────\n Rows were fixed at 46vh regardless of what was in them. Measured fill:\n\n Notes 82% empty\n Signatures 48% empty\n System 3% empty (close to overflowing)\n Chain -60% (501px of map in a 312px box)\n\n Notes held a third of the screen for one line while the map -- the reason\n the tool exists -- was the only panel that could not fit its content. The\n top row gives some back and notes narrows, since it is the panel that\n demonstrably needs least. */\n/* The top row stays where it was. Taking 6vh off it to feed the chain made\n the System panel clip instead -- it needs 341px and 40vh gave it 320 -- and\n a panel you have to scroll to see the statics is a worse trade than a map\n that pans, which is what a map is for. The chain \"overflowing\" was my own\n mis-framing: a canvas sixteen screens wide is supposed to exceed its box.\n What was actually wrong with it was that it never scrolled to where you\n are, which is fixed in the renderer rather than here. */\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-columns: minmax(230px, 1fr) minmax(320px, 1.5fr) minmax(190px, 0.78fr);\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ── 3. TYPE SCALE ───────────────────────────────────────────────────────\n Footer 9.6px, body ~11px, panel titles 12px: three sizes inside three\n pixels, which reads as inconsistency rather than hierarchy. The footer was\n also simply too small to read, and it is the only place the server's\n player count and EVE time appear. */\n#statusbar { font-size: 11px; }\n#statusbar .bar-label { font-size: inherit; letter-spacing: .07em; opacity: .72; }\n#statusbar .bar-value { font-size: inherit; font-variant-numeric: tabular-nums; }\n\n/* ── 4. AVATAR ───────────────────────────────────────────────────────────\n The header was given room for a larger portrait and then never used it. */\n#topbar #user-avatar.avatar { width: 34px; height: 34px; }\n#topbar #login h3 { display: inline-flex; align-items: center; gap: var(--space-2); }\n\n/* ── 5. GRAPH AXIS ───────────────────────────────────────────────────────\n The chart borrowed --border for its gridlines and --muted-foreground for\n its numbers, and both pull the wrong way: a gridline sits *behind* the\n data and should be lighter than a panel border, while the numbers are\n values you read off the chart, not labels you skim. Dedicated tokens. */\n:root {\n\t--chart-gridline: rgba(255, 255, 255, .055);\n\t--chart-axis-text: #b7b7b7;\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--chart-gridline: rgba(0, 0, 0, .075);\n\t\t--chart-axis-text: #4a4a4a;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--chart-gridline: rgba(0, 0, 0, .075);\n\t--chart-axis-text: #4a4a4a;\n}\n\n/* ── 6. EMPTY STATES ─────────────────────────────────────────────────────\n An empty box is indistinguishable from a broken one. Both of these are\n normal states -- a system nobody has annotated, a system whose hourly\n activity has not accumulated yet -- and should say so. */\n#comment-container:not(:has(.comment:not(.hidden)))::before,\n#activityGraph.is-empty::before {\n\tcontent: attr(data-empty);\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n/* :empty could never match -- the container always holds the hidden template\n row -- so the empty state never showed. :has() asks the real question. */\n#comment-container:not(:has(.comment:not(.hidden)))::before { content: \"No notes on this system yet.\"; }\n#activityGraph.is-empty { height: auto; min-height: 0; }\n\n/* ── 7. GATE CHIPS ───────────────────────────────────────────────────────\n Was \"Ikuchi ( HS )\" per gate, six of them wrapping to three rows. The\n brackets are noise and the security repeats as text what colour already\n says. Name plus a security badge, on one or two rows instead of three. */\n.gate-list { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }\n.gate-list-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: 10px;\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n}\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-1) 2px var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: 11px;\n\tline-height: 1.6;\n\ttext-decoration: none;\n}\n/* The chip is the link itself. Pair the brand's primary fill with its\n explicitly chosen on-primary ink so hover cannot become blue on orange. */\n.gate-chip:hover {\n\tbackground: var(--primary);\n\tcolor: var(--primary-foreground);\n\ttext-decoration: none;\n}\n.gate-chip .gate-sec {\n\tpadding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\tfont-size: 9px;\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n/* The badge paints the security colour as its ground; the letters knock out\n of it. currentColor above is the security class colour inherited from the\n named-colour mapping, so the fill stays correct in both themes. */\n.gate-chip .gate-sec::after { content: none; }\n.gate-chip .gate-sec { -webkit-text-fill-color: var(--card); }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* ── 8. SIGNATURE COLUMNS ────────────────────────────────────────────────\n Leads To held 168px against 66-84px for everything else, with slack left\n over; life and mass were cramped for no reason while the id column had\n room to spare. */\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.25rem; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6.5rem; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.25rem; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 5rem; }\n\n\n/* ── 9. THE NOTES OVERLAP ────────────────────────────────────────────────\n Not a spacing problem -- the two lines were drawn on top of each other.\n\n .commentToolbar contains a floated .commentTitle. Nothing contained the\n float, so the toolbar collapsed to 26px while the title's two lines ran\n 67px, and .commentBody was laid out from the collapsed height: body at\n y=130 with the title still painting to y=172. Measured, not inferred.\n\n The float dates from a layout that no longer exists. Flex row, and the\n toolbar is the height of its contents. */\n.comment {\n\tpadding: var(--space-2) 0;\n\tborder-bottom: 1px solid var(--border);\n}\n.comment:last-child { border-bottom: 0; }\n\n.commentToolbar {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: space-between;\n\tgap: var(--space-3);\n\tmargin-bottom: 6px;\n}\n.commentToolbar > .commentTitle,\n.commentToolbar > .commentControls {\n\tfloat: none;\n\tmin-width: 0;\n}\n.commentTitle {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1px;\n\tflex: 1 1 auto;\n}\n.commentTitle .commentModified,\n.commentTitle .commentCreated {\n\tdisplay: block;\n\tfont-size: 10px;\n\tline-height: 1.35;\n\tcolor: var(--muted-foreground);\n}\n.commentControls {\n\tdisplay: flex;\n\tgap: var(--space-2);\n\tflex: 0 0 auto;\n\tfont-size: 11px;\n}\n.commentBody { font-size: 12px; line-height: 1.5; }\n.commentBody > *:first-child { margin-top: 0; }\n.commentBody > *:last-child { margin-bottom: 0; }\n\n/* ── 10. THE SYSTEM PANEL IS A FLEX COLUMN ───────────────────────────────\n Which means every block in it is a flex item, and flex items shrink to\n fit by default. In a column that scrolls, nothing should: the whole point\n of the scroll is that content keeps its size and the viewport moves.\n\n The activity graph is where this showed. Computed height 0px around a\n 92px chart SVG, with overflow hidden -- so what rendered was the 8px of\n padding and nothing else, a blank band where the graph should be. Two\n things were doing it at once: the flex shrink above, and a leftover\n `height: 84px !important` clamp from the earlier attempt at sparse\n sizing, which I had described as removed and had not been. The chart\n sizes itself now (activity-graph.js sets options.height), so the\n container must simply take the height it is given. */\n.sys-panel > * { flex: 0 0 auto; }\n\n#activityGraph,\n#activityGraph.is-sparse,\n#activityGraph.is-empty {\n\theight: auto !important;\n\tmin-height: 0;\n\topacity: 1;\n}\n","/* ============================================================================\n READ BAND CHROME (phones, landscape phones)\n\n The layout bands in _override-5 put the panels back in flow; this file is\n the chrome that goes with it. Sorted after every other override so the\n phone wins its own argument -- the header and control-bar rules in\n _override-a/b/c were written for desktop widths and used to apply here too.\n\n Measured before writing: header 125px tall for one row of controls; chain\n panel bar 460px wide in a 375px viewport, with close/edit tab icons and the\n panel-hide control off the right edge.\n ========================================================================= */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t/* One row: avatar, name, corp, settings. The wordmark is redundant next to\n\t the wing mark on a screen this size, and the search field lives in the\n\t palette. */\n\t#topbar {\n\t\tmin-height: 0;\n\t\theight: auto;\n\t\tpadding: 8px 12px;\n\t\tgap: 8px;\n\t}\n\t#topbar { display: flex; min-height: 0; }\n\t#topbar > .align-left { display: flex; flex: 1 1 auto; }\n\t#topbar > .align-left #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-center { display: none; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar .hdr-tools { padding-left: 8px; }\n\t#topbar > .align-right {\n\t\tflex: 1 1 auto;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 12px;\n\t}\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar h3 { margin: 0; font-size: 13px; }\n\n\t.gridster { padding: 12px; }\n\n\t/* Control bars wrap rather than overflow, and the map's editing chrome is\n\t desktop and tablet work -- a phone reads the chain. */\n\t.gridWidget > .controls { flex-wrap: wrap; row-gap: 4px; }\n\t#chainWidget > .controls > div[style*=\"float\"] > i:not(.panel-hide),\n\t#chainWidget > .controls > .control,\n\t#chainWidget > .controls #newTab,\n\t.chainTab .closeTab,\n\t.chainTab .editTab,\n\t#chainTabs .closeTab,\n\t#chainTabs .editTab { display: none !important; }\n\t#chainTabs { flex: 1 1 100%; min-width: 0; order: 2; }\n\n\t/* Google Charts paginates the legend at this width (\"1/2\"). Two rows of\n\t legend beats a pager nobody expected. */\n\t#activityGraph svg > g:first-of-type { }\n}\n\n/* Phone bars: the right-hand group takes its own row rather than being pushed\n past the edge, and the paste control is desktop/tablet work like the rest\n of the editing chrome. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.gridWidget > .controls > .bar-right { flex: 1 1 100%; margin-left: 0; justify-content: flex-end; }\n\t#signaturesWidget #paste-signatures,\n\t#signaturesWidget .bar-sep { display: none !important; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Every control in this group is editing chrome that the READ band hides\n\t individually; the empty group was still taking a row of its own. */\n\t#signaturesWidget > .controls > .bar-right,\n\t#notesWidget > .controls > .bar-right { display: none; }\n}\n\n/* ── Second look at the READ band, from screenshots ─────────────────────\n The header spread name / corp / settings across the full width with\n nothing between them; the panel bars' right-hand group was forced onto\n its own row, which left the hide control alone on a third; and the chain\n bar showed five map icons before the tabs. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-right { justify-content: flex-start; gap: 14px; }\n\t#topbar > .align-right > #settings,\n\t#topbar > .align-right > i#settings { margin-left: auto; }\n\t#topbar > .align-right > #layout { display: none; }\n\n\t.gridWidget > .controls > .bar-right { flex: 0 0 auto; margin-left: auto; }\n\t.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: var(--space-1); }\n\n\t#chainWidget > .controls > #show-viewing,\n\t#chainWidget > .controls > #show-favorite,\n\t#chainWidget > .controls > #show-chainLegend,\n\t#chainWidget > .controls > #hot-jump,\n\t#chainWidget > .controls > #higgs-jump,\n\t#chainWidget > .controls > .bar-sep { display: none !important; }\n\t#chainTabs { order: 0; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Life and mass cells are hidden here, and they were carrying the row's\n\t hover and selected background -- so a wormhole row's highlight stopped\n\t two columns short. Paint the row instead. */\n\t#sigTable tbody tr:hover, #sigTable tbody tr.selected { background-color: var(--muted); }\n\t#sigTable tbody tr:hover > td, #sigTable tbody tr.selected > td { background-color: transparent; }\n}\n","/* ============================================================================\n THE SCALE\n\n Measured on the main screen at 1920x1080: fourteen font sizes, seven border\n radii, nine control heights, eight icon sizes. Almost none of it chosen --\n the tokens were written in rem against a 12px root, so \"0.8rem\" rendered\n at 9.6px and \"0.76rem\" at 9.12px, and every component that reached for a\n size got a slightly different one.\n\n Six sizes, in pixels, and every token that feeds a size resolves to one of\n them. Anything below 11px is not for reading.\n ========================================================================= */\n\n:root {\n\t--fs-xs: 11px;\n\t--fs-sm: 12px;\n\t--fs-base: 13px;\n\t--fs-md: 15px;\n\t--fs-lg: 18px;\n\t--fs-xl: 24px;\n\n\t/* Two radii and a pill. Inputs and chips at 4, cards and dialogs at 8. */\n\t--radius: 8px;\n\t--radius-md: 8px;\n\t--radius-sm: 4px;\n\n\t/* Two control heights: dense (bars, rows, chips) and standard (dialog\n\t inputs, primary buttons). Coarse pointers raise the floor to 44 in\n\t _override-5-responsive.css. */\n\t--control-dense: 28px;\n\t--control-standard: 36px;\n\n\t/* One icon size inline and in bars; one in the header. */\n\t--icon: 16px;\n\t--icon-lg: 20px;\n}\n\nbody { font-size: var(--fs-base); }\n\n/* Icons take the token, not whatever size their parent happened to be. */\n[data-icon]::before { font-size: var(--icon); line-height: 1; }\n#topbar [data-icon]::before { font-size: var(--icon-lg); }\n\n/* Dialog inputs and buttons at the standard height; the bars stay dense. */\n.ui-dialog input[type=\"text\"], .ui-dialog input[type=\"password\"],\n.ui-dialog input[type=\"number\"], .ui-dialog select,\n.ui-dialog .ui-selectmenu-button {\n\tmin-height: var(--control-standard);\n\tbox-sizing: border-box;\n}\n.ui-dialog-buttonpane button { min-height: var(--control-standard); }\n\n/* ============================================================================\n LIGHT THEME SURFACES\n\n The light theme flipped cleanly but had no depth: body and card were both\n oklch(1 0 0), pure white on pure white, with a 1px border doing all the\n work. The dark theme gets its hierarchy from the card being lighter than\n the ground; the light theme gets the same from the ground being warmer\n than the card. Same three-state structure as _override-1-system.css.\n ========================================================================= */\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(0.962 0.006 80);\n\t\t--card: oklch(1 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--muted: oklch(0.955 0.005 80);\n\t\t--accent-surface: oklch(0.955 0.005 80);\n\t\t--border: oklch(0.90 0.006 80);\n\t\t--border-strong: oklch(0.82 0.008 80);\n\t\t--input: oklch(0.90 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(0.962 0.006 80);\n\t--card: oklch(1 0 0);\n\t--popover: oklch(1 0 0);\n\t--muted: oklch(0.955 0.005 80);\n\t--accent-surface: oklch(0.955 0.005 80);\n\t--border: oklch(0.90 0.006 80);\n\t--border-strong: oklch(0.82 0.008 80);\n\t--input: oklch(0.90 0.006 80);\n}\n\n/* ============================================================================\n SYSTEM PANEL ALIGNMENT\n\n Name, security, gates and routes were left-aligned; the graph legend, the\n range chips and the external links were centred. Two alignment systems in\n one 300px column, switching at the graph. One system.\n ========================================================================= */\n\n#activityGraphControls,\n.sys-range,\n#infoLinks,\n.sys-links {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tgap: var(--space-2);\n\ttext-align: left;\n}\n#infoLinks { border-top: 0; padding-top: 0; }\n#infoLinks a, .sys-links a { padding: 0; }\n\n/* ============================================================================\n NOTES, CONTENT FIRST\n\n \"Posted by Cormorant Fell at 2026-09-01 03:16:48\" was the first line of\n every note and the note itself came second. The reader wants the note.\n Author and time become one muted line beneath it; edit controls appear on\n hover or focus rather than sitting on every note permanently.\n ========================================================================= */\n\n/* :not(.hidden) matters. A bare .comment rule outranked .hidden's display:none\n (same specificity, later in the cascade), which made the hidden template\n row *visible* -- and systemChange.js removes every `.comment:visible` on a\n system change. That deleted the template, parse() had nothing to clone,\n and no note rendered anywhere. Measured: 0 comments in the DOM with 1 in\n the payload, and no template. */\n.comment:not(.hidden) { display: flex; flex-direction: column; }\n.comment.hidden { display: none !important; }\n.comment > .commentBody { order: 1; }\n.comment > .commentToolbar { order: 2; margin: 6px 0 0; }\n.comment > .commentFooter { order: 3; }\n\n.commentTitle { flex-direction: row; flex-wrap: wrap; gap: 0 var(--space-2); align-items: baseline; }\n.commentTitle .commentCreated,\n.commentTitle .commentModified { font-size: var(--fs-xs); }\n.commentTitle .commentModified.is-same { display: none; }\n\n.comment .commentControls { opacity: 0; transition: opacity .12s ease; }\n.comment:hover .commentControls,\n.comment:focus-within .commentControls { opacity: 1; }\n@media (pointer: coarse) { .comment .commentControls { opacity: 1; } }\n\n/* ============================================================================\n PHONE, LEFTOVERS FROM _override-d\n The chain tab strip scrolls internally -- its children past the edge are\n expected -- but the panel-hide control was being pushed off with them.\n Hiding the chain on a phone is not a thing anyone does.\n ========================================================================= */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainWidget > .controls .panel-hide { display: none !important; }\n\t#chainTabs { flex: 1 1 auto; max-width: 100%; }\n}\n\n/* ============================================================================\n THE HOLDOUTS, MEASURED AFTER THE FIRST PASS\n Twelve sizes remained. Each of these was an em-relative size on a\n component that never reached for a token.\n ========================================================================= */\n.sig-chip, .sig-filter .sig-chip { font-size: var(--fs-xs); }\n#topbar h3, #topbar h3 a, #EVEsystem,\n#topbar #mask, #topbar #user-track-name { font-size: var(--fs-base); }\n#topbar #logo a { font-size: var(--fs-xl); }\n.sys-meta, #infoSecurity, .sys-meta .chip { font-size: var(--fs-sm); }\n.gate-chip .gate-sec { font-size: var(--fs-xs); height: 15px; padding: 0 5px; }\nkbd { font-size: var(--fs-xs); }\n.node .nodeClass, .node .nodeType { font-size: var(--fs-xs); }\n\n/* Heights: chips at 22, bars and header controls at 28, dialogs at 36.\n bar-btn measured 30 because the height was content-box plus its border. */\n.controls .bar-btn { box-sizing: border-box; height: var(--control-dense); }\n.sig-chip, .gate-chip, h4.chip, .chip {\n\tbox-sizing: border-box;\n\theight: 22px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding-top: 0; padding-bottom: 0;\n}\n#topbar > .align-right > i[data-icon],\n#topbar #search, #topbar #follow {\n\tbox-sizing: border-box;\n\theight: var(--control-dense);\n\tmin-width: var(--control-dense);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: var(--radius-sm);\n}\n#topbar > .align-right > i[data-icon]:hover { background: var(--muted); }\n\n/* ── Graph legend as chips, in the controls row ──────────────────────── */\n#activityGraphControls { justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-3); }\n#activityLegend { display: inline-flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }\n#activityLegend .legend-chip {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 22px; padding: 0 8px 0 6px;\n\tborder: 1px solid transparent; border-radius: 999px;\n\tbackground: transparent; color: var(--foreground);\n\tfont-size: var(--fs-xs); font-weight: 500; cursor: pointer;\n}\n#activityLegend .legend-chip:hover { background: var(--muted); border-color: var(--border); }\n#activityLegend .legend-chip .swatch { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }\n#activityLegend .legend-chip.off { color: var(--muted-foreground); }\n#activityLegend .legend-chip.off .swatch { opacity: .3; }\n#activityGraphControls > a { margin-left: 0; }\n/* space-between was distributing the three range links across the row along\n with the legend; the legend takes the slack and the ranges stay a group. */\n#activityGraphControls { justify-content: flex-start; }\n#activityLegend { margin-right: auto; }\n","/* ============================================================================\n ONE DIALOG\n\n Every real workflow -- add, edit, settings, ping, confirm -- runs through a\n jQuery UI dialog, and jQuery UI's structure showed through the restyle:\n its titlebar, its button pane as a separate strip, buttons in whatever\n order the config object listed them. The panels are the branch's; the\n dialogs were the library's. This makes the dialog the same object as the\n command palette: one surface, one radius, a header with a title and one\n close, a body, and a footer with the primary action filled and on the\n right, the quiet action beside it, the destructive one alone on the left.\n\n jQuery UI stays underneath for positioning and focus. Only the skin and\n the button roles change; dialog-polish.js assigns the roles.\n ========================================================================= */\n\n.ui-dialog {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45);\n\tpadding: 0;\n\tmax-width: min(94vw, 720px);\n\toverflow: hidden;\n}\n.ui-dialog-shadow { box-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45); }\n\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: var(--space-3) var(--space-4);\n\tmin-height: var(--control-standard);\n\tbackground: transparent;\n\tborder-bottom: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tletter-spacing: .1em;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tfont-size: var(--fs-base);\n\tline-height: 1.5;\n}\n\n/* ---- footer ---------------------------------------------------------- */\n.ui-dialog .ui-dialog-buttonpane {\n\tpadding: var(--space-3) var(--space-4);\n\tborder-top: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tgap: var(--space-2);\n\tfloat: none;\n\twidth: 100%;\n}\n.ui-dialog-buttonpane button {\n\torder: 2;\n\tmargin: 0;\n\tpadding: 0 var(--space-4);\n\tmin-height: var(--control-standard);\n\tborder-radius: var(--radius-sm);\n\tfont-size: var(--fs-base);\n\tfont-weight: 500;\n}\n/* Quiet: cancel, close, and the \"reset\" style choices that are not destructive. */\n.ui-dialog-buttonpane button.is-quiet {\n\torder: 1;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-quiet:hover {\n\tborder-color: transparent;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n}\n/* Primary: filled, last. */\n.ui-dialog-buttonpane button.is-primary {\n\torder: 3;\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 88%, white);\n\tcolor: var(--primary-foreground);\n}\n/* Destructive: alone on the left, red only when approached. */\n.ui-dialog-buttonpane button.is-destructive {\n\torder: 0;\n\tmargin-right: auto;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground: transparent;\n}\n.ui-dialog-buttonpane button[disabled],\n.ui-dialog-buttonpane button.ui-state-disabled { opacity: .45; pointer-events: none; }\n\n/* Modal scrim, one value. */\n.ui-widget-overlay { background: rgba(0,0,0,.55); opacity: 1; }\n\n/* ============================================================================\n FORM ROWS INSIDE DIALOGS\n The palette's row is the dialog's row: label left in a quiet weight,\n control right, one vertical rhythm.\n ========================================================================= */\n\n.settings { display: flex; flex-direction: column; gap: 0; }\n\n.settings-tabs {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tmargin: calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) var(--space-4);\n\tpadding: 0 var(--space-4);\n\tborder-bottom: 1px solid var(--border);\n}\n.settings-tabs [role=\"tab\"] {\n\tborder: 0;\n\tborder-bottom: 2px solid transparent;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tpadding: var(--space-3) var(--space-2);\n\tmargin-bottom: -1px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n}\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); background: transparent; }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] {\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n}\n\n.settings-pane { display: flex; flex-direction: column; gap: var(--space-2); min-height: 300px; }\n.settings-pane[hidden] { display: none; }\n\n.field {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto;\n\talign-items: center;\n\tgap: var(--space-3);\n\tmin-height: var(--control-standard);\n\tpadding: var(--space-1) 0;\n}\n.field.field-block { grid-template-columns: 1fr; align-items: start; }\n.field-label { color: var(--foreground); font-size: var(--fs-base); }\n.field-label small { display: block; color: var(--muted-foreground); font-size: var(--fs-xs); margin-top: 1px; }\n.field-value { color: var(--foreground); font-variant-numeric: tabular-nums; }\n.field-inline { display: inline-flex; align-items: center; gap: var(--space-2); }\n.field-inline input[type=\"text\"] { width: 12rem; }\n.field-actions { display: flex; gap: var(--space-2); justify-content: flex-end; padding-top: var(--space-3); }\n.field-group {\n\tmargin: var(--space-4) 0 var(--space-1);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.field select, .field input[type=\"text\"] { min-width: 14rem; }\n\n/* ---- switch: the one idiom for a boolean ----------------------------- */\n.switch { position: relative; display: inline-block; width: 38px; height: 22px; cursor: pointer; }\n.switch input { position: absolute; opacity: 0; width: 0; height: 0; }\n.switch-track {\n\tposition: absolute; inset: 0;\n\tborder-radius: 999px;\n\tbackground: var(--input);\n\ttransition: background .15s ease;\n}\n.switch-track::after {\n\tcontent: \"\";\n\tposition: absolute; top: 3px; left: 3px;\n\twidth: 16px; height: 16px;\n\tborder-radius: 50%;\n\tbackground: var(--foreground);\n\ttransition: transform .15s ease;\n}\n.switch input:checked + .switch-track { background: var(--primary); }\n.switch input:checked + .switch-track::after { transform: translateX(16px); background: var(--primary-foreground); }\n.switch input:focus-visible + .switch-track { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n/* ---- segmented: two to four options ---------------------------------- */\n.segmented { display: inline-flex; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }\n.segmented input { position: absolute; opacity: 0; pointer-events: none; }\n.segmented label {\n\tpadding: 0 var(--space-3);\n\tmin-height: calc(var(--control-standard) - 8px);\n\tdisplay: inline-flex; align-items: center;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tborder-right: 1px solid var(--border);\n}\n.segmented label:last-of-type { border-right: 0; }\n.segmented input:checked + label { background: var(--muted); color: var(--foreground); }\n.segmented input:focus-visible + label { outline: 2px solid var(--ring); outline-offset: -2px; }\n\n/* ---- slider: jQuery UI's, skinned ------------------------------------ */\n.slider-wrap { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 14rem; }\n.slider-pair { flex-direction: column; align-items: stretch; gap: var(--space-1); }\n.slider-pair > span { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); color: var(--muted-foreground); }\n.slider-wrap .ui-slider { flex: 1 1 auto; height: 4px; border: 0; background: var(--input); border-radius: 999px; margin: 0; }\n.slider-wrap .ui-slider .ui-slider-handle {\n\ttop: -6px; width: 16px; height: 16px; margin-left: -8px;\n\tborder-radius: 50%; border: 0; background: var(--foreground); cursor: pointer;\n}\n.slider-wrap .ui-slider .ui-slider-handle:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n.slider-value { min-width: 2.5em; text-align: right; font-variant-numeric: tabular-nums; color: var(--muted-foreground); font-size: var(--fs-sm); }\n#dialog-options div.ui-slider { width: auto; }\n\n/* ---- statistics ------------------------------------------------------ */\n.stats { display: grid; grid-template-columns: 1fr auto; gap: var(--space-2) var(--space-4); margin: 0; }\n.stats dt { color: var(--muted-foreground); }\n.stats dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n ADD SIGNATURE: THE WORMHOLE HALF IS A SECOND STEP, NOT A REVEAL\n ========================================================================= */\n#dialog-signature #wormhole { margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px solid var(--border); }\n#dialog-signature #wormhole::before {\n\tcontent: \"Wormhole\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature #wormhole > hr { display: none; }\n#dialog-signature #wormhole .side + .side { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px dashed var(--border); }\n#dialog-signature #wormhole .side + .side::before {\n\tcontent: \"Other side\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- characters on the Account tab ------------------------------------ */\n#characters { display: flex; flex-direction: column; gap: var(--space-2); width: 100%; margin-top: var(--space-2); }\n.char-row {\n\tdisplay: flex; align-items: center; gap: var(--space-3);\n\tpadding: var(--space-2) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: var(--card);\n}\n.char-row.is-active { border-color: color-mix(in oklab, var(--primary) 55%, var(--border)); }\n.char-portrait { width: 40px; height: 40px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; flex: 0 0 auto; }\n.char-meta { flex: 1 1 auto; min-width: 0; }\n.char-name { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--foreground); letter-spacing: .04em; }\n.char-note { font-size: var(--fs-xs); color: var(--muted-foreground); margin-top: 2px; }\n.char-actions { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; }\n.char-btn {\n\theight: var(--control-dense); padding: 0 var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: transparent; color: var(--foreground); font-size: var(--fs-sm);\n}\n.char-btn:hover { background: var(--muted); border-color: var(--border-strong); }\n.char-btn.is-destructive { border-color: transparent; color: var(--muted-foreground); }\n.char-btn.is-destructive:hover { border-color: var(--destructive); color: var(--destructive); background: transparent; }\n.char-badge {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--primary); padding: 0 var(--space-2);\n}\n.field-actions input.is-primary { background: var(--primary); border-color: var(--primary); color: var(--primary-foreground); margin-right: auto; }\n.field-actions input.is-primary:hover { background: color-mix(in oklab, var(--primary) 85%, white); border-color: transparent; color: var(--primary-foreground); }\n\n/* ---- panels on the Display tab ---------------------------------------- */\n#panel-settings { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; margin-top: var(--space-2); }\n.panel-row {\n\tdisplay: flex; align-items: center; justify-content: space-between; gap: var(--space-3);\n\tpadding: var(--space-1) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card);\n\tmin-height: var(--control-standard);\n}\n.panel-row-name { color: var(--foreground); }\n.panel-row-actions { display: flex; align-items: center; gap: var(--space-2); }\n.panel-row-actions .char-btn { padding: 0 var(--space-2); font-size: 10px; }\n.panel-row-actions .char-btn[disabled] { opacity: .3; pointer-events: none; }\n","/* ============================================================================\n PANEL BARS WITH WORDS ON THEM\n\n Twenty-five unlabelled icons across four bars, sixty-eight hover tooltips\n to explain them. Hover does not exist on a tablet, which is the device\n this branch was meant to make editing work on.\n\n Primary actions get a word. Secondary actions stay as icons but sit in a\n right-hand group with a real gap, and state toggles (hot, higgs) show\n their state. The elements are the same tags the JavaScript has always\n bound to; only a class and a label span were added, so nothing rebinds.\n ========================================================================= */\n\n.gridWidget > .controls { gap: var(--space-1); }\n\n.controls .bar-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\theight: var(--control-dense);\n\tpadding: 0 10px;\n\tmargin: 0;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tfont-style: normal;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tline-height: 1;\n\tcolor: var(--foreground);\n\tcursor: pointer;\n\twhite-space: nowrap;\n\ttransition: background-color .12s ease, border-color .12s ease;\n}\n.controls .bar-btn::before { font-size: var(--icon); }\n.controls .bar-btn:hover { background: var(--muted); border-color: var(--border); color: var(--foreground); }\n.controls .bar-btn.bar-icon { padding: 0 6px; }\n.controls .bar-btn.bar-icon:not([data-icon]) { font-weight: 600; }\n\n.controls .bar-btn.bar-primary { background: var(--primary); color: var(--primary-foreground); }\n.controls .bar-btn.bar-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: transparent;\n\tcolor: var(--primary-foreground);\n}\n\n.controls .bar-btn.disabled { opacity: .4; pointer-events: none; }\n\n/* A toggle that is on says so with the accent, not by hover. */\n.controls .bar-btn.bar-toggle.active,\n.controls .bar-btn.bar-toggle.on,\n.controls .bar-btn.bar-toggle[data-active=\"true\"] { color: var(--primary); background: color-mix(in oklab, var(--primary) 14%, transparent); }\n\n.controls .bar-btn kbd {\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: 1px 4px;\n\tline-height: 1;\n}\n\n.controls .bar-sep { width: 1px; height: 16px; background: var(--border); margin: 0 var(--space-1); }\n\n.gridWidget > .controls > .bar-right {\n\tmargin-left: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tfloat: none;\n}\n/* The hide control sits after the right group. */\n.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: 0; }\n\n/* The signature count belongs with the title, as a chip. */\n.controls .bar-count {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 18px;\n\tpadding: 0 7px;\n\tmargin-right: var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--muted-foreground);\n\tfont-style: normal;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tfont-variant-numeric: tabular-nums;\n\tcursor: default;\n}\n\n/* Labels give way before icons do. */\n@media (max-width: 1439px) {\n\t#signaturesWidget .bar-btn:not(.bar-primary) .bar-label,\n\t#infoWidget .bar-btn .bar-label { display: none; }\n\t#signaturesWidget .bar-btn:not(.bar-primary):not(.bar-icon) { padding: 0 6px; }\n}\n\n/* The bar inherits the panel title's uppercase and letter-spacing; a button\n label is a word, not a heading. And a bar button is its own width -- the\n notes bar was stretching \"Add note\" across the whole panel because the\n bar's children default to flex: 1 there. */\n.controls .bar-btn { text-transform: none; letter-spacing: 0; flex: 0 0 auto; }\n.controls .bar-btn kbd { border-radius: var(--radius-sm); }\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) { border-radius: var(--radius-sm); }\n/* The label span inherits the bar's uppercase from a more specific rule than\n .bar-btn can beat; set it on the span itself. */\n.gridWidget > .controls .bar-btn > .bar-label { text-transform: none; letter-spacing: 0; font-size: var(--fs-sm); }\n/* The label takes the button's colour, whatever rule the bar had for spans. */\n.gridWidget > .controls .bar-btn > .bar-label { color: inherit; -webkit-text-fill-color: currentColor; }\n/* .bar-btn's display was beating .hidden's; a hidden button is hidden. */\n.controls .bar-btn.hidden { display: none !important; }\n","/* ============================================================================\n CHAIN NODES AS CARDS\n\n A node was a class label, a name and a row of four-pixel dots, floating on\n the canvas with a thin border. The map is the product and it was the least\n designed surface on the screen: nothing said a node was a thing you could\n drag, collapse or open, and at a big corp's density -- sixteen screen widths\n of systems -- small unbounded labels become a wall of text.\n\n A card: fixed width, a definite ground, the security class as a chip in\n the corner rather than a heading, statics as chips inside the card rather\n than tabs hanging below it, activity pips in the footer. The markup in\n chain-map.js is untouched; the renderer measures nothing from the DOM for\n its ring maths (minArc comes from the data), so a slightly larger node\n only needs the spacing factor to breathe, which is a setting.\n ========================================================================= */\n\n#chainMap div.node {\n\tbox-sizing: border-box;\n\twidth: 128px;\n\tmin-height: 56px;\n\tpadding: 6px 8px 8px;\n\tborder-radius: var(--radius);\n\tborder: 1px solid var(--border);\n\tbackground-color: var(--card);\n\ttext-align: left;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tcursor: grab;\n}\n#chainMap div.node:active { cursor: grabbing; }\n\n/* Class chip, top-left. The h4 was a heading; it is a label. */\n#chainMap div.node > h4.nodeClass {\n\torder: 1;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .04em;\n\tline-height: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n#chainMap div.node > h4.nodeClass > span {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 16px;\n\tpadding: 0 6px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: var(--card);\n\tcolor: inherit;\n}\n\n/* System name, the reading line. */\n#chainMap div.node > h4.nodeSystem {\n\torder: 2;\n\tmargin: 0;\n\tfont-size: var(--fs-base);\n\tfont-weight: 600;\n\tline-height: 1.2;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground); text-decoration: none; }\n#chainMap div.node > h4.nodeSystem a:hover { color: var(--primary); }\n\n/* Wormhole type / signature, quiet. */\n#chainMap div.node > h4.nodeType {\n\torder: 3;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\ttext-transform: none;\n\tletter-spacing: 0;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmin-height: 1em;\n}\n\n/* Statics: inside the card as chips, not tabs hanging off the bottom. */\n#chainMap div.node > .statics {\n\torder: 4;\n\tposition: static;\n\tdisplay: flex;\n\tgap: 3px;\n\tmargin-top: 2px;\n\tmin-height: 0;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: auto;\n\tmin-width: 16px;\n\theight: 14px;\n\tpadding: 0 4px;\n\tmargin: 0;\n\tborder: 0;\n\tborder-radius: 3px;\n\tbackground: color-mix(in oklab, currentColor 22%, transparent);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tline-height: 1;\n}\n#chainMap div.node > .statics .multi-static { color: var(--muted-foreground); }\n\n/* Activity pips: footer, right. */\n#chainMap div.node > .nodeActivity {\n\torder: 5;\n\tposition: absolute;\n\tright: 8px;\n\tbottom: 6px;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 3px;\n\tfont-size: 9px;\n\tline-height: 1;\n}\n#chainMap div.node > .nodeActivity .invisible { display: none; }\n\n/* Effect / occupant icons: top-right. */\n#chainMap div.node > .nodeIcons {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 6px;\n\tleft: auto;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 4px;\n\tfont-size: var(--fs-xs);\n}\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; gap: 4px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge {\n\tdisplay: inline-flex; align-items: center;\n\theight: 14px; padding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: var(--primary); color: var(--primary-foreground);\n\tfont-size: 10px; font-weight: 700;\n}\n\n/* The one you are in stays unmistakable; the class tint stays as a ground. */\n#chainMap .currentNode > div.node { box-shadow: 0 0 0 2px var(--primary); border-color: var(--primary); }\n#chainMap div.node:hover { border-color: var(--border-strong); box-shadow: 0 2px 10px rgba(0,0,0,.35); }\n\n/* Collapsed / loop nodes keep the card shape at a reduced height. */\n#chainMap div.loop { width: 128px; min-height: 0; padding: 6px 8px; border-radius: var(--radius); }\n/* The name link was still taking a fixed grey from a more specific legacy\n rule (measured oklch(0.8 0 0) in both themes -- invisible on a white card). */\n#chainMap div.node > h4.nodeSystem,\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground) !important; }\n\n/* The base stylesheet gives div.node a fixed height. As a flex column that\n meant every child shrank to fit -- measured: the name heading at 3px with\n overflow hidden around a 19px link, which rendered as a dark smudge where\n the system name should be. The card takes the height of its contents and\n nothing inside it shrinks. */\n#chainMap div.node { height: auto !important; max-height: none !important; }\n#chainMap div.node > * { flex: 0 0 auto; }\n#chainMap div.node > h4.nodeSystem { height: auto; line-height: 1.25; }\n\n/* ============================================================================\n RAISED CARDS, CAPSULE STATICS\n\n The card ground was the same value as the panel behind it -- var(--card)\n on a panel that is var(--card) at 88% -- so a node read as a faint outline\n on the dark canvas rather than a thing sitting on it. The card is now a\n raised surface a clear step lighter than the canvas, with a stronger edge.\n\n Statics were tiny half-tab glyphs hanging under the node. They are the\n information you scan a chain for, so they become filled capsules in the\n security colour, straddling the card's bottom edge -- half on the card,\n half below it -- with a ring in the card colour so they read as cut into\n the edge rather than stuck on it.\n ========================================================================= */\n\n:root {\n\t--node-surface: color-mix(in oklab, var(--card) 82%, var(--foreground) 18%);\n\t--node-edge: color-mix(in oklab, var(--border-strong) 70%, var(--foreground) 30%);\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--node-surface: oklch(1 0 0);\n\t\t--node-edge: oklch(0.78 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--node-surface: oklch(1 0 0);\n\t--node-edge: oklch(0.78 0.006 80);\n}\n\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node {\n\tbackground-color: var(--node-surface);\n\tborder-color: var(--node-edge);\n\tbox-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 4px 14px rgba(0,0,0,.45);\n\toverflow: visible;\n\tpadding-bottom: 12px; /* room above the straddling capsules */\n\tmargin-bottom: 8px; /* room below them before the next ring */\n}\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 18%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 18%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 18%, var(--node-surface)); }\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 16%, var(--node-surface));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 2px var(--primary), 0 4px 14px rgba(0,0,0,.45);\n}\n\n/* Capsules on the edge. */\n#chainMap div.node > .statics {\n\tposition: absolute;\n\tleft: 8px;\n\tright: 8px;\n\tbottom: 0;\n\ttransform: translateY(50%);\n\tmargin: 0;\n\tgap: 4px;\n\tz-index: 2;\n\tpointer-events: auto;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\theight: 18px;\n\tmin-width: 22px;\n\tpadding: 0 7px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: #fff;\n\tbox-shadow: 0 0 0 2px var(--node-surface);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n#chainMap div.node > .statics .multi-static { background: var(--muted-foreground); }\n\n/* Pips move up beside the name so they never sit under a capsule. */\n#chainMap div.node > .nodeActivity { top: 26px; right: 8px; bottom: auto; }\n#chainMap div.node > h4.nodeSystem { padding-right: 38px; }\n/* \"Dark Venture\" was ellipsising: 128px minus padding minus the 38px held\n for the activity pips left ~70px for the name. A little wider, and the\n pips reserve only what two dots need. */\n#chainMap div.node, #chainMap div.loop { width: 144px; }\n#chainMap div.node > h4.nodeSystem { padding-right: 26px; }\n#chainMap div.node > .nodeActivity { top: 27px; right: 8px; gap: 3px; }\n\n/* Height budget. Three systems in a straight line filled the chain panel and\n forced a scrollbar at 900px tall; a card is two lines and a chip row, and\n should cost about 60px, not 90. */\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node { padding: 5px 8px 9px; min-height: 0; gap: 1px; margin-bottom: 6px; }\n#chainMap div.node > h4.nodeSystem { line-height: 1.15; }\n#chainMap div.node > h4.nodeType:empty, #chainMap div.node > h4.nodeType { min-height: 0; }\n#chainMap div.node > h4.nodeClass > span { height: 15px; }\n#chainMap div.node > .nodeActivity { top: 24px; }\n","/* ============================================================================\n INLINE LIFE / MASS\n The two cells read as editable on approach, and the chooser is the same\n surface as the palette: popover ground, one radius, filled chips in the\n data colours the rest of the app uses for these states.\n ========================================================================= */\n\n#sigTable td.inline-editable { cursor: pointer; position: relative; }\n#sigTable td.inline-editable:hover { color: var(--foreground); text-decoration: underline dotted; text-underline-offset: 3px; }\n#sigTable td.inline-editable.is-saving { opacity: .5; pointer-events: none; }\n\n#inline-edit {\n\tposition: fixed;\n\tz-index: 1200;\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tpadding: var(--space-1);\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 12px 32px rgba(0,0,0,.4);\n}\n#inline-edit .inline-chip {\n\theight: var(--control-dense);\n\tpadding: 0 var(--space-3);\n\tborder-radius: 999px;\n\tborder: 1px solid var(--border);\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tcursor: pointer;\n}\n#inline-edit .inline-chip:hover { background: var(--muted); border-color: var(--border-strong); }\n#inline-edit .inline-chip[aria-selected=\"true\"].stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n#inline-edit .inline-chip:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n@media (pointer: coarse) {\n\t#inline-edit .inline-chip { min-height: 44px; padding: 0 var(--space-4); }\n}\n","/* ============================================================================\n TWO TYPE ROLES\n\n Montserrat was chosen as the brand face and is right for that: geometric,\n round, of a piece with the wing mark. It was then used for every table\n cell, label and chip -- and it is a wide face with a large x-height, which\n at 11-13px in a three-column layout of \"GHJ-456\", \"23:26\", \"Class-3\" costs\n the width budget and reads soft. The signature-id column having to fall\n back to a monospace to stay aligned was the symptom.\n\n Display stays Montserrat. Everything read as data is IBM Plex Sans:\n narrower set, tabular figures, a technical character that suits a mapping\n tool, and a grotesque that sits cleanly under a geometric display face.\n Ids move to Plex Mono so the family holds.\n\n Same selector list as the rule in _override-b-fixes.css that forced one\n family everywhere; this file sorts after it, so equal specificity wins.\n ========================================================================= */\n\n:root {\n\t--font-ui: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-display: 'Montserrat', 'IBM Plex Sans', system-ui, sans-serif;\n\t--font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n}\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li,\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: var(--font-ui);\n\tfont-variant-numeric: tabular-nums;\n}\n\n/* ---- brand surfaces keep the display face ---------------------------- */\n#topbar #logo, #topbar #logo a,\n.panel-title,\n.ui-dialog .ui-dialog-title,\n.sys-panel .sys-name,\n#cmd-palette .cmd-title,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label {\n\tfont-family: var(--font-display);\n}\n\n/* ---- data ids in the mono of the same family --------------------------- */\n#sigTable td:nth-child(1),\n#chainMap div.node > h4.nodeType,\nkbd {\n\tfont-family: var(--font-mono);\n\tletter-spacing: 0;\n}\n\n/* Plex sits a touch smaller on the body than Montserrat did at the same\n size; the base step comes up one pixel so line lengths, not legibility,\n are what change. */\n:root { --fs-base: 13px; --fs-sm: 12px; }\n","/* ============================================================================\n Base theme.\n\n Overrides token VALUES from _tokens.css -- it does not restyle components,\n so it stays out of the way of upstream merges. The values here are the\n built-in defaults; a brand pack (brand.inc.php) overrides them at runtime.\n\n Two notes on scope:\n\n - The neutral ramp is re-pointed at a warmer grey ramp. Tripwire's original\n palette has no accent token -- every emphasis was just a lighter grey --\n so the accent cannot be placed by re-pointing alone. The short accent\n block at the bottom introduces it at the few sites that carry identity.\n - --data-* is deliberately untouched. Wormhole class, mass band and\n security colours encode meaning, and repainting them to fit a brand would\n make the map lie.\n ========================================================================= */\n\n:root {\n /* -- accent constants, used by the accent rules below ------------------- */\n --accent: #f07c00;\n --accent-dim: rgba(240, 124, 0, .18);\n --brand-gray: #adadad;\n --brand-gray-dark: #4d4d4d;\n\n /* -- ops floor: neutral ramp re-pointed at the brand greys -------------\n Ordering and relative contrast follow the original ramp, so component\n styling keeps working; only the values move. */\n --n-000: #000000;\n --n-020: #101010;\n --n-050: #1b1b1b; /* page ground */\n --n-100: #232323; /* raised panel */\n --n-120: #2a2a2a; /* second surface */\n --n-200: #303030; /* hairlines */\n --n-220: #3a3a3a;\n --n-250: #444444;\n --n-300: #4d4d4d; /* rules/borders (brand dark gray) */\n --n-400: #5a5a5a;\n --n-500: #6b6b6b;\n --n-550: #7d7d7d;\n --n-560: #838383;\n --n-600: #8c8c8c; /* secondary text */\n --n-650: #9a9a9a;\n --n-700: #a3a3a3;\n --n-750: #adadad; /* brand gray */\n --n-800: #c4c4c4; /* primary body text */\n --n-850: #d2d2d2;\n --n-870: #dedede;\n --n-880: #e4e4e4;\n --n-900: #ebebeb;\n --n-920: #f0f0f0;\n --n-940: #f5f5f5;\n --n-960: #f8f8f8;\n --n-999: #f2f2f2; /* emphasis text */\n}\n\n/* Front office. The brand orange is identical in both themes by rule, so only\n the neutral grounds swap. Mirrors the structure in _tokens.css: the media\n query is guarded so an explicit dark choice still wins. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9; /* page ground */\n --n-100: #f5f5f5; /* raised panel */\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad; /* rules -- brand gray */\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f; /* pushed past a straight inversion: the mid-ramp is\n where naive flipping leaves text at ~4.5:1 */\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d; /* brand dark gray */\n --n-750: #444444;\n --n-800: #333333; /* primary body text */\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f; /* emphasis text */\n }\n}\n:root[data-theme=\"light\"] {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9;\n --n-100: #f5f5f5;\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad;\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f;\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f;\n}\n\n/* ============================================================================\n Accent placement.\n\n Deliberately short. The orange marks identity and current state -- the\n wordmark, what is selected, what has focus -- and nothing else. Data keeps\n its own colours.\n ========================================================================= */\n\n/* The wordmark carries the brand; the version chip stays quiet beside it.\n The Wing Icon is set as a ::before rather than edited into tripwire.php, so\n the template stays untouched and this whole theme remains one deletable\n file. Brand guidelines allow the standalone Wing Icon to form new lockups;\n the full lockup may not be modified, so it is not used here. */\n#topbar #logo a {\n color: var(--accent);\n letter-spacing: .01em;\n}\n\n\n/* Front office uses the dark lockup, not the orange one -- which the brand\n guidelines call for, and which also fixes the contrast: #F07C00 on a light\n topbar measures 2.77:1. Orange stays the accent for state, not the mark. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) #topbar #logo a { color: var(--n-999); }\n}\n:root[data-theme=\"light\"] #topbar #logo a { color: var(--n-999); }\n\n/* Active/selected state, previously just a lighter grey. */\n#topbar i.active,\n#topbar a.active {\n color: var(--accent);\n}\n\n/* Keyboard focus. Track 2 adds a keyboard layer, so a visible, branded focus\n ring is about to matter a great deal more than it does today. */\n:focus-visible {\n outline: 2px solid var(--accent);\n outline-offset: 1px;\n}\n\n/* Selected signature rows read as \"this is what you are acting on\". */\n#sigTable tbody tr.selected td {\n background: var(--accent-dim);\n}\n\n/* ============================================================================\n Background.\n\n Overridden here rather than in tripwire.css so upstream's default survives a\n rebase. The source is 21:9; under the existing `cover` + `center` a 16:9\n viewport trims the sides, which keeps the ship and loses the brightest edge\n of the nebula -- the framing this was chosen for.\n ========================================================================= */\n\n\n/* Read band: the background is decorative at phone width, so serve 79KB\n instead of 460KB. */\n}\n","/* ============================================================================\n THE PALETTE (default)\n\n The refit palette,\n adopted as Tripwire's default after a side-by-side on the preview. A warm\n charcoal scale that was chosen rather than inherited; two surfaces and one\n rule colour; bone text with dim as the subordinate weight (4.5:1 on both\n surfaces); blood for danger; sage / rust-bright / blood / void for hisec /\n lowsec / nullsec / J-space -- the EVE convention in a muted register, so\n the map's security colours are information rather than the loudest thing\n on the screen.\n\n What stays constant: the mark, the wordmark, and one\n accent -- the primary action, the ring, links. One discipline under a\n corp's flag, not one corp's brand on another's\n tool. Security chips stay filled with white text; that is the house rule.\n\n Type: Geist for text, Geist Mono for labels, ids and stats. The label is\n the signature -- 10px, uppercase, wide-tracked, dim -- and it is applied\n to every panel title, table header and footer label uniformly.\n\n Light theme is a print palette: paper, not white.\n ========================================================================= */\n\n/* ── THE DECK ──────────────────────────────────────────────────────────\n Grounds and neutrals from the house letterhead palette,\n a neutral charcoal ramp:\n brand grey #ADADAD for body text, brand dark grey #4D4D4D for rules,\n orange as the one accent. This puts Tripwire on the same deck as\n the letterhead -- same labels, same accent -- rather than on\n a warm ink.\n\n Data colours deliberately do NOT take the brand callouts. #57DB57 green\n and #0073F0 blue are display colours for a few words on a log line;\n a map paints them on a hundred chips at once and they shout (measured\n and rejected earlier on this branch). Sage / void / a desaturated warn\n stay, with the danger red. */\n:root {\n\t--background: #1b1b1b;\n\t--foreground: #f2f2f2; /* bone: headings, names, values */\n\t--card: #232323;\n\t--card-foreground: #f2f2f2;\n\t--popover: #2a2a2a;\n\t--popover-foreground: #f2f2f2;\n\t--muted: #2a2a2a;\n\t--muted-foreground: #8c8c8c; /* dim: labels, secondary */\n\t--text-body: #adadad; /* fog: brand grey, running text */\n\t--accent-surface: #2a2a2a;\n\t--border: #4d4d4d; /* brand dark grey */\n\t--border-soft: #303030;\n\t--border-strong: #5a5a5a;\n\t--input: #303030;\n\t--glow: #242424;\n\n\t--primary: var(--accent, #f07c00);\n\t--primary-foreground: #1b1b1b;\n\t--ring: var(--accent, #f07c00);\n\t--destructive: #e05252;\n\n\t--data-good: #7d9b76; /* hisec, stable */\n\t--data-warn: #d9a441; /* lowsec, destab -- desaturated brand yellow */\n\t--data-critical: #e05252; /* nullsec, critical, EOL */\n\t--data-info: #8b7aa8; /* J-space, jumps */\n\n\t--node-surface: #2a2a2a;\n\t--node-edge: #5a5a5a;\n\n\t--chart-gridline: rgba(242, 242, 242, .06);\n\t--chart-axis-text: #adadad;\n\n\t--font-ui: 'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace;\n\t--font-display: 'Montserrat', 'Geist', system-ui, sans-serif;\n}\n\n/* The front office: the light theme. Same brand hexes, light\n neutral grounds, dark grey ink. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: #e9e9e9;\n\t\t--foreground: #1f1f1f;\n\t\t--card: #f5f5f5;\n\t\t--card-foreground: #1f1f1f;\n\t\t--popover: #fdfdfd;\n\t\t--popover-foreground: #1f1f1f;\n\t\t--muted: #e4e4e4;\n\t\t--muted-foreground: #767676;\n\t\t--text-body: #4d4d4d;\n\t\t--accent-surface: #e4e4e4;\n\t\t--border: #adadad;\n\t\t--border-soft: #d8d8d8;\n\t\t--border-strong: #8c8c8c;\n\t\t--input: #e4e4e4;\n\t\t--glow: #ffffff;\n\t\t--primary-foreground: #ffffff;\n\t\t--destructive: #b03a3a;\n\t\t--data-good: #4c6a45;\n\t\t--data-warn: #9a6d12;\n\t\t--data-critical: #b03a3a;\n\t\t--data-info: #5d4f78;\n\t\t--node-surface: #fdfdfd;\n\t\t--node-edge: #adadad;\n\t\t--chart-gridline: rgba(31, 31, 31, .08);\n\t\t--chart-axis-text: #4d4d4d;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: #e9e9e9;\n\t--foreground: #1f1f1f;\n\t--card: #f5f5f5;\n\t--card-foreground: #1f1f1f;\n\t--popover: #fdfdfd;\n\t--popover-foreground: #1f1f1f;\n\t--muted: #e4e4e4;\n\t--muted-foreground: #767676;\n\t--text-body: #4d4d4d;\n\t--accent-surface: #e4e4e4;\n\t--border: #adadad;\n\t--border-soft: #d8d8d8;\n\t--border-strong: #8c8c8c;\n\t--input: #e4e4e4;\n\t--glow: #ffffff;\n\t--primary-foreground: #ffffff;\n\t--destructive: #b03a3a;\n\t--data-good: #4c6a45;\n\t--data-warn: #9a6d12;\n\t--data-critical: #b03a3a;\n\t--data-info: #5d4f78;\n\t--node-surface: #fdfdfd;\n\t--node-edge: #adadad;\n\t--chart-gridline: rgba(31, 31, 31, .08);\n\t--chart-axis-text: #4d4d4d;\n}\n\n/* Flat ink. The ship stays on the landing page, where it is a brand\n moment; behind three columns of data it was competition. */\n#wrapper::before { background: radial-gradient(ellipse at 30% -20%, var(--glow) 0%, var(--background) 60%); }\nbody { background-image: none; }\n\n/* Running text in the brand grey; names, values and headings in bone. */\n#sigTable td, .commentBody, .sys-meta, .sys-extra, .field-label, .ui-dialog .ui-dialog-content { color: var(--text-body); }\n#sigTable td:nth-child(1), .sys-name, .field-value, #chainMap div.node > h4.nodeSystem, .stats dd { color: var(--foreground); }\n\n/* The label: mono, small, uppercase, tracked, dim. Everywhere it means\n \"this is a label\", so it reads as one system. */\n.panel-title,\n.ui-dialog .ui-dialog-title,\n#sigTable th,\n.gate-list-label,\n.field-group,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label,\n.sys-links a,\n#activityGraphControls > a,\n#cmd-palette .cmd-group,\n.sig-stats {\n\tfont-family: var(--font-mono);\n\tfont-size: 10px;\n\tfont-weight: 500;\n\tletter-spacing: .22em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.sys-links a:hover,\n#activityGraphControls > a:hover,\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] { color: var(--foreground); }\n\n/* Ids, times and counts in the mono. */\n#sigTable td:nth-child(1),\n#sigTable td:nth-child(3),\n#statusbar .bar-value,\n#signature-count,\n.node .nodeType,\nkbd { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }\n\n/* Surfaces: one small radius, a thin rule, and a deep shadow only where\n something floats. */\n.gridWidget { border-radius: 4px; }\n.ui-dialog, #cmd-palette, #inline-edit, #panel-menu {\n\tborder-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0, 0, 0, .5);\n}\n#chainMap div.node, #chainMap div.loop { border-radius: 4px; }\n\n/* Neutral chips flat on panel-2 with a rule; security and state chips keep\n their fill and white text. */\n.sig-chip, h4.chip, .chip, .gate-chip {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: 3px;\n}\n.sig-chip.on { background: var(--muted); border-color: var(--border-strong); color: var(--foreground); }\n\n/* Primary action: orange fill, ink text; brighter on approach. */\n.controls .bar-btn.bar-primary:hover,\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 85%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 85%, white);\n}\n\n::selection { background: var(--primary); color: var(--background); }\n\n/* ── Second look ─────────────────────────────────────────────────────────\n Bar hierarchy: title · primary · everything else. The right-hand group\n sits at the label weight at rest and comes up on approach, so eleven\n controls on a strip read as three things. */\n.gridWidget > .controls > .bar-right .bar-btn,\n.gridWidget > .controls > .bar-right .panel-hide,\n.gridWidget > .controls > .panel-hide,\n#chainWidget > .controls > .bar-btn.bar-icon { color: var(--muted-foreground); }\n.gridWidget > .controls > .bar-right .bar-btn:hover,\n.gridWidget > .controls > .panel-hide:hover,\n#chainWidget > .controls > .bar-btn.bar-icon:hover { color: var(--foreground); }\n.gridWidget > .controls > .bar-right .bar-btn.bar-toggle.active { color: var(--primary); }\n\n/* Range chips had become tiny bordered boxes next to the borderless legend:\n two idioms in one row. They are quiet mono text like the links beneath. */\n#activityGraphControls > a {\n\tborder: 0;\n\tbackground: transparent;\n\tpadding: 0 2px;\n\theight: auto;\n\tcolor: var(--muted-foreground);\n}\n#activityGraphControls > a.active,\n#activityGraphControls > a[aria-current] { color: var(--primary); }\n#activityGraphControls { gap: var(--space-2) var(--space-3); }\n#activityLegend .legend-chip { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-foreground); }\n#activityLegend .legend-chip:hover { color: var(--foreground); }\n#activityLegend .legend-chip.off { opacity: .5; }\n\n/* The graph sits in the panel like a card of its own. */\n#activityGraph { margin: var(--space-2) 0 0; }\n\n/* Sliders: the last control not in the palette. */\n.slider-wrap .ui-slider { background: var(--input); height: 3px; }\n.slider-wrap .ui-slider .ui-slider-handle { background: var(--primary); width: 14px; height: 14px; top: -6px; margin-left: -7px; border: 2px solid var(--popover); box-sizing: border-box; }\n.slider-value { font-family: var(--font-mono); font-size: 11px; color: var(--muted-foreground); }\n.slider-pair > span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }\n\n/* ── The letterhead ──────────────────────────────────────────────────────\n Three zones. Left: the system you are viewing, large, with your own\n location and the search beneath it. Centre: the corp's mark and\n wordmark. Right: you -- a portrait you can actually make out, name and\n mask beside it, then the two tools. The app's own name lives in the\n footer with its version; the header is the corp's. */\n#topbar {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n\talign-items: center;\n\tgap: 16px;\n\tmin-height: 76px;\n\tpadding: 8px 18px;\n\tbackground: linear-gradient(180deg, var(--card), var(--background));\n\tborder-bottom: 1px solid var(--border);\n}\n#topbar > .align-left, #topbar > .align-right, #topbar > .align-center { display: flex; align-items: center; min-width: 0; }\n#topbar > .align-left { justify-content: flex-start; flex-direction: column; align-items: flex-start; gap: 2px; overflow: visible; }\n#topbar > .align-center{ justify-content: center; }\n#topbar > .align-right { justify-content: flex-end; gap: 14px; }\n\n/* Left: the viewed system. */\n.hdr-sys { display: flex; align-items: center; gap: 8px; }\n#hdr-system {\n\tfont-family: var(--font-display);\n\tfont-size: 22px;\n\tfont-weight: 700;\n\tletter-spacing: -.01em;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n#hdr-system:hover { color: var(--primary); }\n#topbar #search { color: var(--muted-foreground); cursor: pointer; }\n#topbar #search:hover { color: var(--foreground); }\n#topbar #systemSearch { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 11px; }\n#topbar #currentSpan { display: inline-flex; align-items: center; gap: 6px; }\n#topbar #currentSpan .bar-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted-foreground); }\n#topbar #EVEsystem { font-family: var(--font-mono); font-size: 11px; color: var(--text-body); }\n#topbar #follow { color: var(--muted-foreground); }\n/* On is orange. The line above outranked the legacy .active colour, so the\n toggle worked and looked like it had not. */\n#topbar #follow.active { color: var(--primary); }\n#topbar #follow:hover { color: var(--foreground); }\n#topbar #follow.active:hover { color: var(--primary); }\n#topbar #searchSpan input {\n\tfont-family: var(--font-mono); font-size: 11px;\n\tmin-height: 24px; padding: 0 8px; max-width: 12rem;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px; color: var(--foreground);\n}\n\n/* Centre: the mark. Two files, one per theme. */\n#topbar #logo { display: block; line-height: 0; }\n#topbar #logo img { height: 46px; width: auto; display: block; }\n#topbar #logo a::before, #topbar #logo::before { content: none !important; }\n#topbar #logo .logo-light { display: none; }\n@media (prefers-color-scheme: light) { :root:not([data-theme=\"dark\"]) #topbar #logo .logo-dark { display: none; } :root:not([data-theme=\"dark\"]) #topbar #logo .logo-light { display: block; } }\n:root[data-theme=\"light\"] #topbar #logo .logo-dark { display: none; }\n:root[data-theme=\"light\"] #topbar #logo .logo-light { display: block; }\n\n/* Right: you. */\n#topbar #login h3 { margin: 0; }\n#topbar #login h3 > a#user { display: flex; align-items: center; gap: 10px; text-decoration: none; }\n#topbar #user-avatar.avatar {\n\twidth: 44px; height: 44px; border-radius: 4px;\n\tborder: 1px solid var(--border); object-fit: cover; display: block;\n}\n#topbar .hdr-pilot { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; line-height: 1.15; }\n#topbar #user-no-track, #topbar #user-track-name { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; color: var(--foreground); }\n#topbar #user-track { display: inline-flex; align-items: center; gap: 4px; }\n#topbar .hdr-mask, #topbar .hdr-mask a, #topbar #mask {\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); text-decoration: none;\n}\n#topbar .hdr-mask a:hover, #topbar .hdr-mask a:hover #mask { color: var(--foreground); }\n#topbar .hdr-tools { display: flex; align-items: center; gap: 4px; margin-left: 4px; padding-left: 14px; border-left: 1px solid var(--border-soft); }\n#topbar .hdr-tools i { color: var(--muted-foreground); cursor: pointer; }\n#topbar .hdr-tools i:hover { color: var(--foreground); }\n#topbar .hdr-tools [data-icon]::before { font-size: 18px; }\n\n/* The mask menu anchors to the letterhead, not to a pixel offset. */\n#topbar #mask-menu { top: 64px; right: 18px; }\n\n/* Panel heads: a band under the title. */\n.gridWidget > .controls {\n\tbackground: linear-gradient(180deg, var(--popover), var(--card));\n\tborder-bottom: 1px solid var(--border);\n}\n.gridWidget, #chainMap div.node, .ui-dialog { border-radius: 3px; }\n.gridWidget { border: 1px solid var(--border); }\n\n/* Hairlines inside content take the soft rule. */\n#sigTable tbody tr, .comment { border-color: var(--border-soft); }\n\n/* ── The letterhead on a phone ───────────────────────────────────────────\n This file sorts after _override-d-phone.css, so the phone header has to\n be written here or the grid above wins. One row: system name, portrait,\n tools. The mark and the location line are desktop and tablet things. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 10px;\n\t\tmin-height: 0;\n\t\tpadding: 8px 12px;\n\t}\n\t#topbar > .align-center { display: none; }\n\t#topbar > .align-left { flex: 1 1 auto; flex-direction: column; align-items: flex-start; }\n\t#topbar #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-right { flex: 0 0 auto; width: auto; justify-content: flex-end; gap: 8px; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar .hdr-tools { margin-left: 0; padding-left: 8px; }\n\t#topbar #mask-menu { top: 52px; right: 12px; }\n}\n\n/* ── The tracking dropdown ────────────────────────────────────────────────\n account.css collapses every .avatar inside it to 1px -- a legacy trick\n from when the portrait was painted some other way -- which is why the\n character rows showed a name and no face. Portraits at a size a face\n survives, and the dropdown on the same surfaces as everything else. */\n#login #content .tracking-clone td.avatar img.avatar { width: 36px; height: 36px; border-radius: 3px; border: 1px solid var(--border); }\n#login #content #account #avatar img.avatar-lg { width: 56px; height: 56px; border-radius: 4px; border: 1px solid var(--border); }\n#login #content.dialog-like {\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0,0,0,.5); padding: var(--space-2);\n}\n#login #content .triangle { display: none; }\n#login #logoutTable tbody th {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .22em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); background: transparent; border-bottom: 1px solid var(--border); text-align: left; padding: 4px 6px;\n}\n#login #content #track { border-right: 1px solid var(--border-soft); }\n#login #content #track .tracking-clone { border: 1px solid var(--border); border-radius: 3px; opacity: .7; }\n#login #content #track .tracking-clone.active { border-color: var(--primary); opacity: 1; }\n#login #content #track .tracking-clone:hover { border-color: var(--border-strong); opacity: 1; }\n#login #content table .text { color: var(--text-body); }\n#login #content table td.name.text { color: var(--foreground); }\n\n/* ── The mask as a capsule ────────────────────────────────────────────────\n Was a star glyph and the word \"Corp\" run together. A capsule: a source\n dot -- orange for corporate, void for alliance, sage for personal, dim for\n global -- and the label in the label register. */\n#topbar #mask-menu-link { display: inline-block; }\n#topbar #mask .mask {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 18px; padding: 0 8px 0 7px;\n\tborder: 1px solid var(--border); border-radius: 999px;\n\tbackground: var(--popover);\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #mask-menu-link:hover .mask { border-color: var(--border-strong); color: var(--foreground); }\n#topbar #mask .mask i[data-icon] { width: 7px; height: 7px; border-radius: 50%; background: var(--muted-foreground); display: inline-block; }\n#topbar #mask .mask i[data-icon]::before { content: none; }\n#topbar #mask .mask i.corporate { background: var(--primary); }\n#topbar #mask .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.character { background: var(--data-good); }\n#topbar #mask .mask i.global { background: var(--muted-foreground); }\n\n/* ── The mark, larger, riding the letterhead's edge ──────────────────────\n At 46px the wordmark read as a label. It is the letterhead; it gets the\n height, and it hangs a little over the hairline into the gap above the\n panels so the header reads as a plate the mark is mounted on rather than\n a strip the mark is squeezed into. The panel area gives back the room. */\n@media (min-width: 768px) and (min-height: 600px) {\n\t/* The header keeps its height; the mark is taller than the header and\n\t hangs 14px past the hairline into the gap the panel area gives back. */\n\t#topbar { overflow: visible; height: 64px; min-height: 64px; padding-top: 0; padding-bottom: 0; }\n\t#topbar > .align-center { align-self: flex-start; position: relative; z-index: 3; }\n\t/* A pack may ask for a taller mark (logo.height); a round seal wants a\n\t little more than a wide wordmark. It rides the bar's bottom edge. */\n\t#topbar #logo img { height: 64px; margin-top: 0; filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .55)); }\n\t.gridster { padding-top: 10px; }\n}\n\n/* Below the desktop breakpoint the legacy stylesheet fixes the header to the\n viewport and nothing offsets the content, so the panels started at y=20\n underneath it (measured at 1100x700). The tablet page scrolls; the header\n stays in flow and sticks to the top as it goes. */\n@media (max-width: 1279px) {\n\t#topbar { position: sticky; top: 0; z-index: 30; }\n}\n\n/* ── \"Following you\" ─────────────────────────────────────────────────────\n Clicking the tab that is already selected deselects it, and with no tab\n selected the map roots at whichever system you are viewing. That is a\n mode, and it was invisible: the strip just showed no tab highlighted and\n the map \"kept jumping\". Name it. */\n#chainTabs:not(:has(.tab.current))::before {\n\tcontent: \"Following you\";\n\tdisplay: inline-flex; align-items: center;\n\theight: 20px; padding: 0 8px; margin-right: 6px;\n\tborder: 1px solid color-mix(in oklab, var(--primary) 55%, var(--border));\n\tborder-radius: 999px;\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--primary);\n}\n\n/* ── The top row takes what the System panel needs ─────────────────────\n system-fit.js sets --top-row when the panel cannot hold the graph at its\n floor; otherwise the row is the 46vh the layout chose. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 46vh)) 1fr; }\n}\n\n/* ── The room lights: sun and moon on the letterhead ─────────────────── */\n#topbar .hdr-tools .themebtn {\n\tbackground: none; border: 1px solid var(--border); border-radius: 3px; cursor: pointer;\n\tcolor: var(--muted-foreground); font-size: 14px; line-height: 1; padding: 4px 8px;\n\theight: 26px; display: inline-flex; align-items: center; flex: 0 0 auto;\n\tfont-family: var(--font-ui);\n}\n#topbar .hdr-tools .themebtn:hover { color: var(--primary); border-color: var(--primary); }\n\n/* ── The pilot dropdown: cards, not nested tables ──────────────────────\n The tracking list is a table per character (avatar cell spanning five\n rows of name, system, station, ship, ship name) inside a table inside a\n table. Rendered as-is the portrait floated over the name and the eye and\n ship icons drifted down the middle. The table skeleton stays (tracking.js\n clones it); its rows are flattened and each character is laid out as a\n card: portrait, status and controls in a narrow left column, the five\n text lines stacked beside it. */\n#login #content #logoutTable { border-collapse: separate; border-spacing: 0; }\n#login #content #logoutTable > tbody > tr > td { vertical-align: top; padding: 0 12px; }\n#login #content #logoutTable > tbody > tr > td:first-child { padding-left: 0; }\n#login #content #logoutTable > tbody > tr > td:last-child { padding-right: 0; }\n#login #content #track, #login #content #account { min-width: 260px; }\n#login #content #track th, #login #content #account th { text-align: left; padding: 0 0 6px; }\n#login #content #tracking { display: flex; flex-direction: column; gap: 6px; padding: 0; }\n\n#login #content #track .tracking-clone,\n#login #content #track .tracking-clone > tbody { display: block; }\n#login #content #track .tracking-clone > tbody > tr { display: contents; }\n#login #content #track .tracking-clone > tbody {\n\tdisplay: grid;\n\tgrid-template-columns: 44px minmax(0, 1fr);\n\tgrid-template-rows: repeat(5, auto);\n\tcolumn-gap: 10px; row-gap: 1px;\n\tpadding: 8px 10px;\n}\n#login #content #track .tracking-clone td { padding: 0; border: 0; line-height: 1.3; }\n#login #content #track .tracking-clone td.avatar {\n\tgrid-column: 1; grid-row: 1 / span 5;\n\tdisplay: flex; flex-direction: column; align-items: center; gap: 4px;\n}\n#login #content #track .tracking-clone td.avatar img.avatar { display: block; }\n#login #content #track .tracking-clone td.avatar hr.bar { width: 36px; margin: 0; height: 3px; border: 0; border-radius: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group { display: flex; gap: 6px; margin-top: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group i { font-size: 14px; color: var(--muted-foreground); cursor: pointer; }\n#login #content #track .tracking-clone td.avatar .control-group i.active,\n#login #content #track .tracking-clone td.avatar .control-group i:hover { color: var(--primary); }\n#login #content #track .tracking-clone td.name { grid-column: 2; grid-row: 1; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.system { grid-column: 2; grid-row: 2; }\n#login #content #track .tracking-clone td.station { grid-column: 2; grid-row: 3; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.ship { grid-column: 2; grid-row: 4; }\n#login #content #track .tracking-clone td.shipname { grid-column: 2; grid-row: 5; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.text:empty::before,\n#login #content #track .tracking-clone td.text:has(> :empty):not(:has(*))::before { content: none; }\n#login #content #track .tracking-clone i.alert { grid-column: 2; grid-row: 1; justify-self: end; }\n\n/* The signed-in character: portrait beside name and corporation. */\n#login #content #account, #login #content #account > tbody { display: block; }\n#login #content #account > tbody { display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: 12px; align-items: start; }\n#login #content #account > tbody > tr { display: contents; }\n#login #content #account th { grid-column: 1 / -1; }\n#login #content #account td { padding: 0; border: 0; }\n#login #content #account td#avatar { grid-column: 1; grid-row: 2 / span 2; }\n#login #content #account td#characterName { grid-column: 2; grid-row: 2; font-weight: 600; padding-top: 4px; }\n#login #content #account td.text:not(#characterName) { grid-column: 2; grid-row: 3; color: var(--muted-foreground); }\n#login #content #account td:empty { display: none; }\n\n/* Buttons row. */\n#login #content #logoutTable > tbody > tr:last-child > td { padding-top: 12px; }\n#login #content #logoutTable > tbody > tr:last-child > td:last-child { text-align: right; }\n\n/* ── The mask menu: a popover, in the capsule's language ──────────────\n Was orange links stacked with a stray glyph each. Rows: the same source\n dot the capsule wears, the label, and a tick on the one you are in.\n Manage and admin sit under a rule in the quiet register. */\n#topbar #mask-menu {\n\tmin-width: 176px; padding: 4px 0;\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.45);\n}\n#topbar #mask-menu .triangle { display: none; }\n#topbar #mask-menu a {\n\tdisplay: flex; align-items: center; gap: 8px;\n\tpadding: 6px 12px; margin: 0;\n\tcolor: var(--foreground); font-size: var(--fs-sm); font-weight: 500; text-decoration: none;\n\tline-height: 1.2;\n}\n#topbar #mask-menu a:hover { background: var(--muted); color: var(--foreground); }\n#topbar #mask-menu a .mask { display: inline-flex; align-items: center; gap: 8px; color: inherit; font-size: inherit; }\n#topbar #mask-menu a .mask i[data-icon] {\n\twidth: 8px; height: 8px; border-radius: 50%; padding: 0; margin: 0; flex: 0 0 auto;\n\tdisplay: inline-block; transform: none; background: var(--muted-foreground);\n}\n#topbar #mask-menu a .mask i[data-icon]::before { content: none; }\n#topbar #mask-menu a .mask i.global { background: var(--muted-foreground); }\n#topbar #mask-menu a .mask i.personal,\n#topbar #mask-menu a .mask i.character { background: var(--data-good); }\n#topbar #mask-menu a .mask i.corporate { background: var(--primary); }\n#topbar #mask-menu a .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.personal { background: var(--data-good); }\n#topbar #mask-menu a.active::after {\n\tcontent: \"\\2713\"; margin-left: auto; color: var(--primary); font-size: 12px; font-weight: 700;\n}\n#topbar #mask-menu hr.bar { height: 1px; border: 0; margin: 4px 0; background: var(--border); }\n#topbar #mask-menu #mask-link, #topbar #mask-menu #admin {\n\tcolor: var(--muted-foreground); font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n}\n#topbar #mask-menu #mask-link:hover, #topbar #mask-menu #admin:hover { color: var(--foreground); }\n\n/* The eye and ship toggles sit in a row under the portrait. */\n#login #content #track .tracking-clone td.avatar .control-group { width: auto; min-width: 36px; justify-content: center; }\n\n/* ── The ship, under the name ─────────────────────────────────────────── */\n#topbar .hdr-line2 { display: flex; align-items: center; gap: 8px; }\n#topbar .hdr-ship {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; line-height: 18px;\n}\n#topbar .hdr-ship.hidden { display: none; }\n\n/* ── Phone header: the mask dot is a dot, and the name gives way ───────\n The coarse-pointer rule makes every #topbar i a 44px target; the mask\n capsule's source dot is an i too, and became a 44px orange disc beside\n the avatar. And the system name did not shrink, so the pilot block sat\n on top of it. */\n@media (pointer: coarse) {\n\t#topbar #mask .mask i[data-icon], #topbar #mask-menu a .mask i[data-icon] {\n\t\tmin-width: 0; min-height: 0; width: 7px; height: 7px; padding: 0;\n\t}\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-left { min-width: 0; }\n\t#topbar #hdr-system { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\t#topbar > .align-right { flex-shrink: 0; }\n\t#topbar #login h3 > a#user { gap: 6px; }\n}\n\n/* ── Install tip (phones) ─────────────────────────────────────────────── */\n#install-tip {\n\tdisplay: flex; align-items: center; gap: 10px;\n\tpadding: 8px 12px;\n\tbackground: color-mix(in oklab, var(--primary) 14%, var(--card));\n\tborder-bottom: 1px solid var(--border);\n\tfont-size: var(--fs-sm); color: var(--foreground);\n}\n#install-tip .tip-text { flex: 1 1 auto; min-width: 0; }\n#install-tip button { min-height: 32px; border-radius: 4px; font: inherit; cursor: pointer; }\n#install-tip .tip-install { background: var(--primary); color: #1b1207; border: 0; padding: 0 12px; font-weight: 600; }\n#install-tip .tip-close { background: none; border: 0; color: var(--muted-foreground); font-size: 18px; line-height: 1; padding: 0 6px; }\n\n/* ── The top row: smaller by default, and it does not follow the system ──\n 40vh unless a visited system needed more (system-fit.js remembers the\n largest, per window height). The chain gets the rest. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 40vh)) 1fr; }\n}\n\n/* ── Range in the header, links beside the legend ─────────────────────── */\n#infoWidget > .controls .bar-right #sys-range {\n\tdisplay: inline-flex; align-items: center; gap: 2px; margin-right: 6px;\n\tpadding-right: 8px; border-right: 1px solid var(--border-soft);\n}\n#infoWidget > .controls .bar-right #sys-range a {\n\tdisplay: inline-flex; align-items: center; height: 22px; padding: 0 6px;\n\tborder-radius: 3px; text-decoration: none;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#infoWidget > .controls .bar-right #sys-range a:hover { color: var(--foreground); background: var(--muted); }\n#infoWidget > .controls .bar-right #sys-range a.active { color: var(--primary); background: var(--muted); }\n#activityGraphControls { flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-3); }\n#activityGraphControls #infoLinks.in-legend-row { margin: 0 0 0 auto; padding: 0; border: 0; }\n#activityGraphControls #activityLegend { margin-right: 0; }\n\n/* Legend and links on one row: short chip labels, tighter tracking. */\n#activityLegend { gap: 2px 4px; }\n#activityLegend .legend-chip { padding: 0 5px 0 4px; letter-spacing: .06em; gap: 5px; }\n#activityGraphControls #infoLinks.in-legend-row { gap: 8px; }\n#activityGraphControls #infoLinks.in-legend-row a { letter-spacing: .12em; padding: 0; }\n\n/* ── Brand packs ─────────────────────────────────────────────────────────\n A pack without a logo image shows the product name in the display face. */\n#topbar #logo .logo-text { font-family: var(--font-display); font-weight: 700; font-size: 22px; letter-spacing: .02em; color: var(--foreground); line-height: 64px; }\n\n/* ── Typographic lockup: a small line, the name, a small line ───────────\n Set in the page's own fonts (an SVG cannot reach them). The name\n takes the brand face and the accent; the small lines the label register;\n optional rule-and-star flourishes either side of the name. */\n#topbar #logo .logo-lockup { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; line-height: 1; padding: 6px 0; }\n#topbar #logo .lockup-small {\n\tfont-family: var(--font-mono); font-size: 8.5px; font-weight: 500; letter-spacing: .26em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #logo .lockup-main {\n\tdisplay: inline-flex; align-items: center; gap: 10px;\n\tfont-family: var(--font-brand, var(--font-display)); font-size: 19px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;\n\tcolor: var(--primary); padding-left: .2em; /* balances the trailing tracking */\n}\n#topbar #logo .lockup-main.has-flourish::before,\n#topbar #logo .lockup-main.has-flourish::after {\n\tcontent: \"\"; width: 44px; height: 2px; background: var(--primary); flex: 0 0 auto;\n\t-webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px) ; mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px);\n}\n#topbar #logo .lockup-main.has-flourish::before { -webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px); }\n\n/* ── Signature dialog: compact, sides labelled in the gutter ──────────────\n Upstream's dialog was tighter and named each wormhole side with a\n vertical label down the left; the rebuild had replaced those with three\n horizontal headings (WORMHOLE, SIDE, OTHER SIDE) and looser\n rows, and grew a third taller. Back to the gutter, minus the headings. */\n#dialog-signature #wormhole::before,\n#dialog-signature #wormhole .side + .side::before { content: none; }\n#dialog-signature #wormhole { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature #wormhole .side { position: relative; padding-left: 20px; min-height: 0; }\n#dialog-signature #wormhole .side + .side { margin-top: 4px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature .sideLabel {\n\tposition: absolute; left: 0; top: 0; bottom: 5px; width: 14px;\n\tmargin: 0; padding: 0; border: 0;\n\tdisplay: flex; align-items: center; justify-content: center;\n\twriting-mode: vertical-rl; transform: rotate(180deg);\n\tfont-family: var(--font-mono); font-size: 9.5px; font-weight: 500; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; text-align: center;\n}\n#dialog-signature #wormhole .side + .side .sideLabel { top: 8px; }\n#dialog-signature .row { margin: 0 0 5px; gap: 6px; }\n#dialog-signature .row > .label:first-child { flex: 0 0 50px; }\n#dialog-signature #wormhole .row > .label:first-child { flex-basis: 44px; }\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button { min-height: 26px; }\n#dialog-signature .mini-selector + label { min-height: 24px; padding-top: 0; padding-bottom: 0; }\n/* signatures.css sizes the two labels by position (90px / 135px wide, one\n hung 70px below its side) with an id-heavier selector; match it. */\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\twidth: 14px; bottom: 5px; text-align: center; transform-origin: 50% 50%;\n}\n#dialog-signature #wormhole .side:last-child .sideLabel { top: 8px; }\n/* Fields read as fields: the name inputs had the dialog's own ground and a\n border one step from it, so they were invisible until focused. And the\n nine class chips plus divider fit the row. */\n#dialog-signature input[type=\"text\"] { background: var(--input); border-color: var(--border); }\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); }\n#dialog-signature .quickSelectBar { gap: 3px; }\n#dialog-signature .quickSelectBar button { min-width: 24px; padding: 0 4px; }\n\n/* ══ Signature dialog: the design pass ═══════════════════════════════════\n One label column across the whole form; the side gutter is a column of\n its own, so the top rows are indented to match the wormhole rows. Life\n and Mass are connected segmented controls, the class chips two even\n groups, type and leads each one control with its menu button attached.\n ─────────────────────────────────────────────────────────────────────── */\n.ui-dialog:has(#dialog-signature) { width: min(392px, calc(100vw - 2rem)) !important; }\n#dialog-signature #form-signature > .row,\n#dialog-signature #site > .row { padding-left: 20px; }\n\n#dialog-signature .row { margin: 0 0 6px; gap: 6px; align-items: center; }\n#dialog-signature .row > .label:first-child,\n#dialog-signature #wormhole .row > .label:first-child {\n\tflex: 0 0 54px; text-align: right;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature .row > .label:not(:first-child) { font-family: var(--font-mono); color: var(--muted-foreground); }\n\n/* Fields: one height, one ground, one edge. Ids and hull types in the mono. */\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tmin-height: 26px; height: 26px; box-sizing: border-box;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px;\n\tfont-size: 12px; color: var(--foreground);\n}\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); outline: 0; box-shadow: 0 0 0 2px color-mix(in oklab, var(--primary) 30%, transparent); }\n#dialog-signature .signatureID { width: 46px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature .wormholeType { width: 58px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature [name=\"signatureName\"], #dialog-signature [name=\"wormholeName\"] { flex: 1 1 auto; min-width: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 112px; display: inline-flex; align-items: center; }\n\n/* Comboboxes: the input and its menu button are one control. */\n#dialog-signature .custom-combobox { display: inline-flex; align-items: stretch; }\n#dialog-signature .custom-combobox input { border-top-right-radius: 0; border-bottom-right-radius: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle {\n\tposition: static; margin: 0 0 0 -1px; width: 24px; height: 26px; padding: 0;\n\tborder: 1px solid var(--border); border-radius: 0 3px 3px 0; background: var(--muted); color: var(--muted-foreground);\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .custom-combobox .custom-combobox-toggle:hover { color: var(--foreground); border-color: var(--border-strong); }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { flex: 1 1 auto; display: inline-flex; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] .custom-combobox { flex: 1 1 auto; }\n#dialog-signature .leadsTo { width: auto; flex: 1 1 auto; min-width: 0; }\n\n/* Lifetime: one boxed control, numbers in the mono. */\n#dialog-signature .duration-picker { height: 26px; padding: 0 8px; gap: 4px; border-color: var(--border); background: var(--input); }\n#dialog-signature .duration-picker input { width: 22px; text-align: center; font-family: var(--font-mono); font-size: 12px; height: auto; min-height: 0; border: 0; background: transparent; }\n#dialog-signature .duration-picker span, #dialog-signature .duration-picker label { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-foreground); }\n\n/* Life and Mass: segmented. The chosen state is filled in its colour. */\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n\tmin-height: 26px; height: 26px; padding: 0 12px; margin: 0 0 0 -1px;\n\tborder: 1px solid var(--border); border-radius: 0; background: var(--input);\n\tfont-size: 12px; font-weight: 500; color: var(--muted-foreground); line-height: 1;\n}\n#dialog-signature .mini-selector:first-of-type + label { border-radius: 3px 0 0 3px; margin-left: 0; }\n#dialog-signature .row > .mini-selector + label:last-child { border-radius: 0 3px 3px 0; }\n#dialog-signature .mini-selector + label:hover { color: var(--foreground); background: var(--muted); border-color: var(--border); }\n#dialog-signature .mini-selector:checked + label { position: relative; z-index: 1; border-color: transparent; }\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); color: #ffffff; }\n\n/* Class and hull chips: two even groups, the text divider gone. */\n#dialog-signature .quickSelectBar { display: inline-flex; flex-wrap: nowrap; gap: 3px; font-size: 0; margin: 0; }\n#dialog-signature .row > .quickSelectBar { flex-basis: 100%; margin-left: 60px; }\n#dialog-signature .quickSelectBar button {\n\tmin-width: 26px; height: 22px; padding: 0 5px; border: 1px solid var(--border); border-radius: 3px;\n\tbackground: var(--input); font-family: var(--font-mono); font-size: 10px; font-weight: 600; letter-spacing: .04em; line-height: 1;\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .quickSelectBar button:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature #leadsToQuickBar button[value=\"High-Sec\"] { margin-left: 8px; }\n#dialog-signature .wormholeTypeQuickSelect { margin-left: 0; flex-basis: auto; }\n#dialog-signature .wormholeTypeQuickSelect:empty { display: none; }\n\n/* The side gutter, one column wide, the labels centred in it. */\n#dialog-signature #wormhole .side { padding-left: 20px; }\n#dialog-signature .sideLabel,\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel { width: 14px; left: 0; font-size: 9px; letter-spacing: .2em; }\n\n/* A missing required field: the edge in the danger colour, no halo. */\n#dialog-signature .sig-missing, #dialog-signature .sig-missing:focus { border-color: var(--destructive); box-shadow: none; }\n/* Combobox menu button: its sprite icon was absolutely positioned against\n the wrapper, so it landed inside the input. The button is the positioned\n box, the sprite is gone, and a chevron is drawn in the current colour. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { position: relative; text-indent: 0; overflow: hidden; }\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon,\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space { display: none; }\n#dialog-signature .custom-combobox .custom-combobox-toggle::after {\n\tcontent: \"\"; width: 6px; height: 6px; margin-top: -3px;\n\tborder-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg);\n}\n/* The type menu: text first, chevron at the right edge. */\n#dialog-signature #signatureType .ui-selectmenu-button { display: inline-flex; align-items: center; gap: 6px; padding: 0 8px; width: auto !important; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text { flex: 1 1 auto; margin: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon { order: 2; margin: 0; position: static; }\n/* Lifetime: the duration picker's blocks in one boxed control, numbers in the mono. */\n#dialog-signature .bdp-input {\n\tdisplay: inline-flex; align-items: center; gap: 12px; height: 26px; padding: 0 10px;\n\tborder: 1px solid var(--border); border-radius: 3px; background: var(--input);\n}\n#dialog-signature .bdp-block { display: inline-flex; align-items: baseline; gap: 4px; }\n#dialog-signature .bdp-block br { display: none; }\n#dialog-signature .bdp-block a { text-decoration: none; }\n#dialog-signature .bdp-block a span { font-family: var(--font-mono); font-size: 13px !important; font-weight: 500; color: var(--foreground); line-height: 1; }\n#dialog-signature .bdp-block a:hover span { color: var(--primary); }\n#dialog-signature .bdp-block .bdp-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-foreground); }\n/* The picker's seconds block is hidden by class; keep it that way. The\n control then fits the LENGTH row. */\n#dialog-signature .bdp-block.hidden { display: none !important; }\n#dialog-signature .bdp-input { gap: 10px; padding: 0 8px; }\n/* Combobox: input and button touch, and the pair never outgrows the row. */\n#dialog-signature .custom-combobox { gap: 0; max-width: 100%; }\n#dialog-signature .custom-combobox > * { margin: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle { margin-left: -1px; flex: 0 0 24px; }\n#dialog-signature .custom-combobox input.leadsTo { flex: 1 1 0; width: 0; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { max-width: 100%; }\n/* signatures.css offsets the toggle with right:-20px for its absolute\n layout; on a relative box that is a 20px shove. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { right: auto; left: auto; top: auto; bottom: auto; width: 24px; }\n\n/* Phone: the panel bar has no room for the range control beside the\n panel buttons -- the close button was wrapping onto a second line. The\n graph still shows the last 24h. */\n@media (max-width: 767px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n}\n\n/* ══ Feedback round (first corp feedback, 2026-09-04) ════════════════════ */\n\n/* ── 1. Chain nodes: the same card, half the height ──────────────────────\n The class chip sat on its own line above the name and the statics hung\n half below the card; at zoom 1.2 that was 173x70 with an 84px row pitch\n against upstream's 30px pill. Two lines: chip + name + pips, then hull or\n sig id + statics inline. About 120x40 at zoom 1. Security reads at full\n strength on the left edge and in the chip, in both rooms. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, 1fr) auto;\n\tgrid-template-areas: \"class name pips\" \"type type statics\";\n\talign-items: center; column-gap: 5px; row-gap: 2px;\n\twidth: 120px; min-height: 0; height: auto !important;\n\tpadding: 4px 7px 4px 6px; margin: 0;\n\tborder-left: 3px solid var(--node-edge);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, .35);\n\toverflow: visible;\n}\n#chainMap div.node > .nodeClass { grid-area: class; margin: 0; order: 0; }\n#chainMap div.node > .nodeSystem { grid-area: name; margin: 0; padding: 0; order: 0; font-size: 12px; line-height: 16px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; margin: 0; order: 0; gap: 2px; font-size: 8px; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; order: 0; min-height: 0; font-size: 10px; line-height: 14px; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: .04em; }\n#chainMap div.node > .statics { grid-area: statics; position: static; transform: none; margin: 0; gap: 3px; justify-content: flex-end; order: 0; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 14px; min-width: 18px; padding: 0 5px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > .nodeClass > span { height: 15px; padding: 0 5px; font-size: 10px; }\n#chainMap div.node > .nodeIcons { top: 2px; right: 4px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name pips\"; }\n#chainMap div.loop { width: 120px; padding: 4px 7px; }\n\n/* Security and class on the edge, full strength; tokens carry both rooms. */\n#chainMap div.greenNode.node { border-left-color: var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--data-critical); }\n#chainMap div.node:has(> .nodeClass .wh),\n#chainMap div.node:has(> .nodeClass .class-1), #chainMap div.node:has(> .nodeClass .class-2), #chainMap div.node:has(> .nodeClass .class-3) { border-left-color: var(--data-info); }\n#chainMap div.node:has(> .nodeClass .class-4), #chainMap div.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap div.node:has(> .nodeClass .class-12) { border-left-color: var(--data-loot-gold); }\n#chainMap div.node:has(> .nodeClass .class-15), #chainMap div.node:has(> .nodeClass .class-16), #chainMap div.node:has(> .nodeClass .class-17) { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The class tint stays but reads as a ground, not a wash. */\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-critical) 10%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-loot-orange) 10%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-good) 10%, var(--node-surface)); }\n\n/* ── 4. The chain pans with the wheel again ───────────────────────────────\n #chainParent is the widget's .content, so the panel rule that hides\n overflow outranked its own overflow: auto. Drag-to-pan (dragscroll) had\n kept working, which is why it felt like drag became the only way. */\n#chainWidget > #chainParent.content { overflow: auto; }\n\n/* ── 5. Signature columns: header and cells share one alignment ──────────\n The cells carry the per-column alignment classes from Settings; the\n header now wears the same classes (sig-align.js), so the two agree. */\n#sigTable th, #sigTable td { text-align: left; }\n#sigTable .centerAlign { text-align: center; }\n#sigTable .rightAlign { text-align: right; }\n#sigTable .leftAlign { text-align: left; }\n\n/* ── 7. Three columns from 960px; what gives at the narrow end ─────────── */\n@media (min-width: 960px) and (max-width: 1099px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n\t#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n\t#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 3.2rem; padding-left: 2px; padding-right: 4px; }\n\t#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 4.6rem; }\n}\n\n/* ── 6. Phone: a signature is two lines, nothing hidden ─────────────────── */\n@media (max-width: 767px) {\n\t#sigTable thead { display: none; }\n\t#sigTable tbody tr {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto minmax(0, 1fr) auto auto;\n\t\tgrid-template-areas: \"id type type age\" \"leads leads life mass\";\n\t\tcolumn-gap: 10px; row-gap: 2px;\n\t\tpadding: 7px 10px;\n\t}\n\t#sigTable tbody td { display: block; width: auto !important; padding: 0 !important; height: auto; line-height: 18px; text-align: left !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n\t#sigTable tbody td:nth-child(1) { grid-area: id; font-weight: 600; }\n\t#sigTable tbody td:nth-child(2) { grid-area: type; }\n\t#sigTable tbody td:nth-child(3) { grid-area: age; text-align: right !important; }\n\t#sigTable tbody td:nth-child(4) { grid-area: leads; }\n\t#sigTable tbody td:nth-child(5) { grid-area: life; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:nth-child(6) { grid-area: mass; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:empty { display: none; }\n}\n/* Older per-column rules (an id and a pseudo-class) outranked the shared\n alignment classes on the header; match them with the section in the\n selector. And the phone block had hidden Life and Mass outright. */\n#sigTable thead th.leftAlign, #sigTable tbody td.leftAlign { text-align: left; }\n#sigTable thead th.centerAlign, #sigTable tbody td.centerAlign { text-align: center; }\n#sigTable thead th.rightAlign, #sigTable tbody td.rightAlign { text-align: right; }\n@media (max-width: 767px) {\n\t#sigTable tbody tr > td:nth-child(5), #sigTable tbody tr > td:nth-child(6) { display: block !important; }\n\t#sigTable tbody tr > td:empty { display: none !important; }\n}\n/* The name was being cut to one letter: the pips' non-breaking spaces and\n an old right padding on the name ate the column. The card sizes to its\n name between 118 and 168px, as upstream's pill did; the pips are dots. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: auto; min-width: 118px; max-width: 168px; }\n#chainMap div.node > .nodeSystem { padding-right: 0; overflow: visible; text-overflow: clip; }\n#chainMap div.node > .nodeActivity { font-size: 0; gap: 3px; }\n#chainMap div.node > .nodeActivity > span { font-size: 8px; line-height: 8px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.loop { width: auto; min-width: 118px; }\n/* The name column: sized to the name (the card grows to 168px), and the\n older h4 rule that ellipsised it is matched at its own specificity. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto auto minmax(0, auto); }\n#chainMap div.node > h4.nodeSystem { padding-right: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 120px; height: auto; line-height: 16px; }\n/* k-space security on the edge, both rooms, from the same tokens the chips use. */\n#chainMap div.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The name track sizes to the name (max-content), so the card grows with\n it up to its cap; overflow on the h4 had made its automatic minimum 0. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto max-content auto; }\n/* Flares (a colour a pilot sets on a node from its menu) are not security:\n they tint the ground and the top edge; the left edge stays security. */\n#chainMap div.greenNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .hisec), #chainMap div.yellowNode.node:has(> .nodeClass .hisec), #chainMap div.redNode.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.greenNode.node:has(> .nodeClass .lowsec), #chainMap div.yellowNode.node:has(> .nodeClass .lowsec), #chainMap div.redNode.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.greenNode.node:has(> .nodeClass .nullsec), #chainMap div.yellowNode.node:has(> .nodeClass .nullsec), #chainMap div.redNode.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .wh), #chainMap div.yellowNode.node:has(> .nodeClass .wh), #chainMap div.redNode.node:has(> .nodeClass .wh) { border-left-color: var(--data-info); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-4), #chainMap div.greenNode.node:has(> .nodeClass .class-5),\n#chainMap div.yellowNode.node:has(> .nodeClass .class-4), #chainMap div.yellowNode.node:has(> .nodeClass .class-5),\n#chainMap div.redNode.node:has(> .nodeClass .class-4), #chainMap div.redNode.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-6), #chainMap div.yellowNode.node:has(> .nodeClass .class-6), #chainMap div.redNode.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* Security on the left edge from classes the node now carries itself\n (sec-hisec / sec-lowsec / sec-nullsec / sec-wh + cls-N), so no :has()\n is needed and the build cannot drop it. The card shrink-wraps its name. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: fit-content; margin: 0 auto; }\n#chainMap div.node.sec-hisec, #chainMap div.greenNode.node.sec-hisec, #chainMap div.yellowNode.node.sec-hisec, #chainMap div.redNode.node.sec-hisec { border-left-color: var(--data-good); }\n#chainMap div.node.sec-lowsec, #chainMap div.greenNode.node.sec-lowsec, #chainMap div.yellowNode.node.sec-lowsec, #chainMap div.redNode.node.sec-lowsec { border-left-color: var(--data-loot-orange); }\n#chainMap div.node.sec-nullsec, #chainMap div.greenNode.node.sec-nullsec, #chainMap div.yellowNode.node.sec-nullsec, #chainMap div.redNode.node.sec-nullsec { border-left-color: var(--data-critical); }\n#chainMap div.node.sec-triglavian, #chainMap div.greenNode.node.sec-triglavian, #chainMap div.yellowNode.node.sec-triglavian, #chainMap div.redNode.node.sec-triglavian { border-left-color: var(--data-loot-red); }\n#chainMap div.node.sec-wh, #chainMap div.greenNode.node.sec-wh, #chainMap div.yellowNode.node.sec-wh, #chainMap div.redNode.node.sec-wh { border-left-color: var(--data-info); }\n#chainMap div.node.cls-4, #chainMap div.node.cls-5, #chainMap div.greenNode.node.cls-4, #chainMap div.greenNode.node.cls-5, #chainMap div.yellowNode.node.cls-4, #chainMap div.yellowNode.node.cls-5, #chainMap div.redNode.node.cls-4, #chainMap div.redNode.node.cls-5 { border-left-color: var(--data-loot-purple); }\n#chainMap div.node.cls-6, #chainMap div.greenNode.node.cls-6, #chainMap div.yellowNode.node.cls-6, #chainMap div.redNode.node.cls-6 { border-left-color: var(--data-loot-pink); }\n#chainMap div.node.cls-12, #chainMap div.greenNode.node.cls-12, #chainMap div.yellowNode.node.cls-12, #chainMap div.redNode.node.cls-12 { border-left-color: var(--data-loot-gold); }\n#chainMap div.node.cls-15, #chainMap div.node.cls-16, #chainMap div.node.cls-17 { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node, #chainMap .currentNode > div.node.sec-hisec, #chainMap .currentNode > div.node.sec-wh { border-left-color: var(--primary); }\n/* Chrome trimmed so the width is the name's, not the card's. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { column-gap: 4px; padding: 3px 6px 3px 5px; min-width: 104px; }\n#chainMap div.node > .nodeClass > span { padding: 0 4px; height: 14px; }\n#chainMap div.node > .nodeActivity { gap: 2px; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n/* Leads To is the column that takes the table's slack; centred text in it\n drifts away from Age. Upstream pinned it left whatever the setting. */\n#sigTable thead th:nth-child(4), #sigTable tbody td:nth-child(4),\n#sigTable thead th:nth-child(4).centerAlign, #sigTable tbody td:nth-child(4).centerAlign,\n#sigTable thead th:nth-child(4).rightAlign, #sigTable tbody td:nth-child(4).rightAlign { text-align: left; }\n/* The class chip, top-left, filled in its class colour with white text --\n hisec green, lowsec orange, nullsec red, C1-3 blue, C4-5 purple, C6 pink,\n Thera gold, drifter red -- as upstream coloured its nodes. A later rule\n had been greying the chip's currentColor. Same tokens in both rooms. */\n#chainMap div.node > h4.nodeClass > span {\n\tbackground: var(--node-edge); color: #fff; -webkit-text-fill-color: #fff;\n\tfont-weight: 700; letter-spacing: .04em;\n}\n#chainMap div.node > h4.nodeClass > span.hisec { background: var(--data-good); }\n#chainMap div.node > h4.nodeClass > span.lowsec { background: var(--data-loot-orange); }\n#chainMap div.node > h4.nodeClass > span.nullsec { background: var(--data-critical); }\n#chainMap div.node > h4.nodeClass > span.triglavian { background: var(--data-loot-red); }\n#chainMap div.node > h4.nodeClass > span.wh { background: var(--data-info); }\n#chainMap div.node > h4.nodeClass > span.class-4, #chainMap div.node > h4.nodeClass > span.class-5 { background: var(--data-loot-purple); }\n#chainMap div.node > h4.nodeClass > span.class-6 { background: var(--data-loot-pink); }\n#chainMap div.node > h4.nodeClass > span.class-12 { background: var(--data-loot-gold); color: #1b1b1b; -webkit-text-fill-color: #1b1b1b; }\n#chainMap div.node > h4.nodeClass > span.class-15, #chainMap div.node > h4.nodeClass > span.class-16, #chainMap div.node > h4.nodeClass > span.class-17 { background: var(--data-loot-red); }\n\n/* ── Statics span the second row and wrap; three capsules no longer run\n off the edge (they sat in the column the activity pips size). ───────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-areas: \"class name pips\" \"type statics statics\"; }\n#chainMap div.node > .nodeType { white-space: nowrap; }\n#chainMap div.node > .statics { flex-wrap: wrap; justify-content: flex-end; row-gap: 2px; min-width: 0; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n\n/* ── Flares breathe. ──────────────────────────────────────────────────────\n As Aperture's underglow: a blurred pad in the flare colour behind the\n card, scaling 0.96 -> 1.06 and 28% -> 80% opacity on a 1.4s cycle. The\n card itself keeps its security edge and a faint tint; the top edge is\n gone. Still under reduced-motion. */\n@keyframes flare-glow {\n\t0%, 100% { opacity: .28; transform: scale(.96); }\n\t50% { opacity: .8; transform: scale(1.06); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { position: relative; z-index: 0; border-top-width: 1px; border-top-color: var(--node-edge); }\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before {\n\tcontent: \"\"; position: absolute; inset: -3px; z-index: -1; border-radius: inherit;\n\tbackground: var(--flare, transparent); filter: blur(9px);\n\tanimation: flare-glow 1400ms ease-in-out infinite; pointer-events: none;\n}\n#chainMap div.redNode.node { --flare: var(--data-critical); }\n#chainMap div.yellowNode.node { --flare: var(--data-loot-orange); }\n#chainMap div.greenNode.node { --flare: var(--data-good); }\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--flare) 8%, var(--node-surface)); }\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { animation: none; opacity: .55; }\n}\n\n/* ── Three lines, narrow: chains grow sideways, so width is the currency.\n Line 1 chip + name, line 2 hull or sig id with the pips at the right,\n line 3 the statics (J-space only; k-space cards are two lines). About\n 100 wide and 52 tall at zoom 1, against upstream's ~100 x 30. ─────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-columns: auto minmax(0, max-content);\n\tgrid-template-areas: \"class name\" \"type pips\" \"statics statics\";\n\tcolumn-gap: 4px; row-gap: 1px;\n\tmin-width: 92px; max-width: 140px; padding: 3px 6px 3px 5px;\n}\n#chainMap div.node > .nodeType { grid-area: type; }\n#chainMap div.node > .nodeActivity { grid-area: pips; justify-self: end; }\n#chainMap div.node > .statics { grid-area: statics; justify-content: flex-start; margin-top: 1px; }\n#chainMap div.node > h4.nodeSystem { max-width: 104px; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name\" \"statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name\"; }\n#chainMap div.node:not(:has(> .statics span)) { grid-template-areas: \"class name\" \"type pips\"; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { grid-area: name; justify-self: end; }\n#chainMap div.node > .nodeIcons { top: auto; bottom: 3px; right: 5px; }\n#chainMap div.node > .nodeIcons > div { gap: 3px; }\n\n/* ── Upstream's skeleton: a 32px box. Name, then the hull or sig id under\n it; the class chip rides the top-left corner; statics hang off the\n bottom edge as capsules; pips are dots at the bottom right. About\n 100 x 32 at zoom 1 (upstream: ~100 x 30). ────────────────────────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: block; position: relative; overflow: visible;\n\twidth: fit-content; min-width: 96px; max-width: 150px; height: auto !important;\n\tpadding: 3px 10px 3px 10px; margin: 6px auto 8px;\n\ttext-align: center;\n}\n#chainMap div.node > h4.nodeSystem { display: block; margin: 0; padding: 0 10px 0 0; font-size: 12px; line-height: 14px; max-width: none; }\n#chainMap div.node > .nodeType { display: block; margin: 0; font-size: 9.5px; line-height: 11px; letter-spacing: .04em; min-height: 0; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .nodeClass {\n\tposition: absolute; top: -7px; left: -5px; margin: 0; line-height: 1; z-index: 2;\n}\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 6px; right: 6px; bottom: -7px; margin: 0; z-index: 2;\n\tdisplay: flex; justify-content: center; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeActivity { position: absolute; right: 4px; bottom: 3px; top: auto; margin: 0; gap: 2px; z-index: 1; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeIcons { position: absolute; top: -6px; right: -4px; bottom: auto; left: auto; }\n#chainMap div.node > .nodeIcons > div { gap: 2px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; font-size: 9px; padding: 0 4px; }\n#chainMap div.node.frig-chain { border-width: 1px; }\n#chainMap div.loop { width: fit-content; min-width: 0; padding: 3px 10px; margin: 6px auto 8px; }\n/* The glow is a halo around and behind the box, not a wash across it: an\n animated shadow instead of a pad inside the card's own stacking layer. */\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { content: none; animation: none; }\n@keyframes flare-halo {\n\t0%, 100% { box-shadow: 0 0 6px 1px color-mix(in oklab, var(--flare) 45%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n\t50% { box-shadow: 0 0 16px 5px color-mix(in oklab, var(--flare) 85%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tz-index: auto; border-color: color-mix(in oklab, var(--flare) 60%, var(--node-edge));\n\tanimation: flare-halo 1400ms ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { animation: none; box-shadow: 0 0 12px 3px color-mix(in oklab, var(--flare) 70%, transparent); }\n}\n/* The chip sits inline before the name (it was covering the first letter\n from the corner); the type line gets room above the hanging capsules. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: auto max-content; grid-template-areas: \"class name\" \"type type\";\n\talign-items: center; column-gap: 4px; row-gap: 0;\n\tmin-width: 92px; max-width: 160px; padding: 3px 8px 9px 6px; margin: 4px auto 9px; text-align: left;\n}\n#chainMap div.node > .nodeClass { position: static; grid-area: class; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; padding: 0; line-height: 15px; max-width: 110px; }\n#chainMap div.node > .nodeType { grid-area: type; text-align: left; padding-right: 24px; line-height: 11px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { padding-bottom: 3px; grid-template-areas: \"class name\"; }\n#chainMap div.node:has(> .nodeType:empty):has(> .statics span) { padding-bottom: 8px; }\n#chainMap div.node > .statics { bottom: -7px; left: 4px; right: 4px; justify-content: flex-start; }\n#chainMap div.node > .nodeActivity { right: 5px; bottom: 9px; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { bottom: 4px; }\n#chainMap div.node > .nodeIcons { top: -5px; right: -3px; }\n\n/* ══ Chain node, settled ═══════════════════════════════════════════════════\n Everything in flow on one grid, so nothing can land on anything else at\n any zoom. Row 1: class chip, name, effect / occupant icons, activity\n pips. Row 2: hull or sig id. Statics hang off the bottom edge into space\n the card reserves below itself. 34px tall with a type line, 22 without;\n about 100 wide for a J-name. Upstream: ~100 x 30 with its tabs below. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-areas: \"class name icons pips\" \"type type type type\";\n\talign-items: center; column-gap: 4px; row-gap: 1px;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 3px 7px 4px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: left;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name icons pips\"; padding-bottom: 3px; }\n#chainMap div.node > .nodeClass { grid-area: class; position: static; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; margin: 0; padding: 0; line-height: 15px; font-size: 12px; max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeIcons { grid-area: icons; position: static; display: flex; align-items: center; gap: 3px; width: auto; height: auto; margin: 0; top: auto; right: auto; left: auto; bottom: auto; }\n#chainMap div.node > .nodeIcons:empty { display: none; }\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; align-items: center; gap: 3px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 9px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; justify-self: end; display: flex; align-items: center; gap: 2px; width: auto; height: auto; margin: 0; font-size: 0; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; padding: 0; text-align: left; font-family: var(--font-mono); font-size: 9.5px; line-height: 11px; letter-spacing: .04em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 5px; right: 5px; top: 100%; bottom: auto; margin: -4px 0 0; transform: none; z-index: 2;\n\tdisplay: flex; justify-content: flex-start; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 3px 8px; margin: 3px auto 12px; }\n/* Placement by line numbers, not area names: the minifier had reordered\n the named areas and the icons fell into an implicit fourth row. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-areas: none;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-rows: auto auto;\n\tgrid-auto-rows: 0;\n}\n#chainMap div.node > .nodeClass { grid-area: auto; grid-column: 1; grid-row: 1; }\n#chainMap div.node > h4.nodeSystem { grid-area: auto; grid-column: 2; grid-row: 1; }\n#chainMap div.node > .nodeIcons { grid-area: auto; grid-column: 3; grid-row: 1; }\n#chainMap div.node > .nodeActivity { grid-area: auto; grid-column: 4; grid-row: 1; }\n#chainMap div.node > .nodeType { grid-area: auto; grid-column: 1 / 5; grid-row: 2; }\n#chainMap div.node > .statics { grid-area: auto; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n/* The name's own text is its minimum: overflow: clip is not a scroll\n container, so the grid and the org-chart cell size to the name instead of\n collapsing it to \"P.\" at their minimum. Still ellipsises past 110px. */\n#chainMap div.node > h4.nodeSystem { overflow: clip; text-overflow: ellipsis; min-width: min-content; }\n#chainMap div.node > h4.nodeSystem a { white-space: nowrap; }\n\n/* ══ Chain node: the original's layout, in our clothes ═════════════════════\n Three centred lines -- class chip with the effect beside it, the name,\n the hull or sig id -- the statics hanging off the bottom edge into the\n space between rows, activity dots on the edge, the occupant badge on the\n top-right corner. About 100 x 46 at zoom 1, which is what the original\n measured once its three lines were in it. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: minmax(0, max-content); grid-template-rows: auto auto auto; grid-auto-rows: 0;\n\tjustify-items: center; align-items: center; row-gap: 0; column-gap: 0;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 4px 10px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: center;\n}\n#chainMap div.node > .nodeClass { grid-column: 1; grid-row: 1; position: static; margin: 0; display: inline-flex; align-items: center; gap: 4px; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 5px; font-size: 9px; }\n#chainMap div.node > h4.nodeSystem { grid-column: 1; grid-row: 2; margin: 0; padding: 0; line-height: 16px; font-size: 12.5px; font-weight: 600; max-width: 150px; min-width: min-content; overflow: clip; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeType { grid-column: 1; grid-row: 3; margin: 0; padding: 0; text-align: center; font-family: var(--font-mono); font-size: 10px; line-height: 12px; letter-spacing: .06em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto auto; }\n/* The effect sits beside the class, in flow; the occupant badge rides the corner. */\n#chainMap div.node > .nodeIcons { grid-column: 1; grid-row: 1; position: static; display: contents; }\n#chainMap div.node > .nodeIcons > div { float: none; display: contents; }\n#chainMap div.node > .nodeIcons > div:first-child { display: inline-flex; align-items: center; position: absolute; top: 4px; right: 8px; gap: 2px; }\n#chainMap div.node > .nodeIcons > div:last-child { display: inline-flex; align-items: center; position: absolute; top: -6px; right: -6px; gap: 2px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 13px; padding: 0 5px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n/* Dots on the bottom edge, left; statics hanging from the edge, right of them. */\n#chainMap div.node > .nodeActivity { position: absolute; left: 8px; bottom: -3px; top: auto; right: auto; margin: 0; width: auto; height: auto; display: flex; gap: 3px; font-size: 0; z-index: 2; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .statics { position: absolute; left: auto; right: 6px; top: 100%; bottom: auto; margin: -5px 0 0; transform: none; display: flex; justify-content: flex-end; gap: 3px; flex-wrap: nowrap; z-index: 2; }\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 13px; min-width: 17px; padding: 0 5px; font-size: 9px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 4px 10px; margin: 3px auto 12px; }\n/* The class / security capsule hangs off the top-left corner, the effect\n off the top-right; the box holds name and sig; statics and dots hang off\n the bottom. The gaps between rows carry the capsules, as the original's\n tabs did. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-rows: auto auto; padding: 7px 10px 6px; margin: 9px auto 12px; min-width: 92px;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n#chainMap div.node > .nodeClass { position: absolute; top: -7px; left: -5px; margin: 0; z-index: 3; }\n#chainMap div.node > .nodeClass > span { box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > h4.nodeSystem { grid-row: 1; }\n#chainMap div.node > .nodeType { grid-row: 2; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -7px; right: 6px; }\n#chainMap div.node > .nodeIcons > div:last-child { top: -7px; right: -6px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 12px; text-shadow: 0 0 3px var(--background); }\n#chainMap div.node > .nodeActivity { bottom: -4px; left: 7px; }\n#chainMap div.node > .statics { margin-top: -6px; right: 5px; }\n/* Tooltips appended inside the chain panel position against it, not the\n page: the panel is the containing block. */\n#chainWidget > #chainParent.content { position: relative; }\n/* The corner chip straddles the top edge in the box's own top padding; the\n name starts below it. Mirrors the statics on the bottom edge. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { padding-top: 10px; padding-bottom: 7px; margin-top: 10px; }\n#chainMap div.node > .nodeClass { top: -7px; left: -5px; }\n#chainMap div.node > .nodeClass > span { height: 14px; }\n/* The desktop layout pins every panel's .content static with !important;\n the chain panel must be the containing block for its tooltips. */\n#chainWidget > #chainParent.content { position: relative !important; }\n/* An absolutely positioned child of a grid is placed against its grid\n area when it has one; the chip and the dots must be placed against the\n box, so they get no area. And the rows sit 5px closer. */\n#chainMap div.node > .nodeClass, #chainMap div.node > .nodeActivity, #chainMap div.node > .statics,\n#chainMap div.node > .nodeIcons > div { grid-area: auto; grid-row: auto; grid-column: auto; }\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { margin-top: 8px; margin-bottom: 9px; }\n/* The pilot icon and its count sit a little inside the top-right corner,\n and the chain panel keeps headroom above its first row so nothing that\n rides a top edge is clipped by the panel. */\n#chainMap div.node > .nodeIcons > div:last-child { top: -5px; right: -3px; gap: 1px; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -6px; right: 22px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainWidget > #chainParent.content { padding-top: 12px !important; }\n/* The pilot count is centred in its capsule (it is a flex box, which does\n not centre on its own), with a round minimum so \"1\" and \"12\" both sit true. */\n#chainMap div.node > .nodeIcons .badge { justify-content: center; min-width: 14px; padding: 0 4px; box-sizing: border-box; text-align: center; }\n"]} \ No newline at end of file From 63936c46ca5857142a3fdc078e3b74d7d79fda62 Mon Sep 17 00:00:00 2001 From: cvweiss Date: Mon, 14 Sep 2026 14:36:23 -0400 Subject: [PATCH 2/4] Move person icon to better position --- app/css/_theme-refit.css | 12 ++++++------ public/css/app.min.css | 2 +- public/css/app.min.css.map | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/css/_theme-refit.css b/app/css/_theme-refit.css index 8f37385a..68ca51d8 100644 --- a/app/css/_theme-refit.css +++ b/app/css/_theme-refit.css @@ -1243,7 +1243,7 @@ kbd { font-family: var(--font-mono); font-variant-numeric: tabular-nums; } /* The corner chip straddles the top edge in the box's own top padding; the name starts below it. Mirrors the statics on the bottom edge. */ #chainMap div.node, -#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { padding-top: 10px; padding-bottom: 7px; margin-top: 10px; } +#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { padding-top: 14px; padding-bottom: 7px; margin-top: 10px; } #chainMap div.node > .nodeClass { top: -7px; left: -5px; } #chainMap div.node > .nodeClass > span { height: 14px; } /* The desktop layout pins every panel's .content static with !important; @@ -1256,13 +1256,13 @@ kbd { font-family: var(--font-mono); font-variant-numeric: tabular-nums; } #chainMap div.node > .nodeIcons > div { grid-area: auto; grid-row: auto; grid-column: auto; } #chainMap div.node, #chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { margin-top: 8px; margin-bottom: 9px; } -/* The pilot icon and its count sit a little inside the top-right corner, - and the chain panel keeps headroom above its first row so nothing that - rides a top edge is clipped by the panel. */ -#chainMap div.node > .nodeIcons > div:last-child { top: -5px; right: -3px; gap: 1px; } +/* Keep the pilot icon and count wholly inside the top-right corner. Negative + offsets put both controls directly over the node's top and right borders. */ +#chainMap div.node > .nodeIcons > div:last-child { top: 2px; right: 3px; gap: 1px; } #chainMap div.node > .nodeIcons > div:first-child { top: -6px; right: 22px; } -#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); } +#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 8.5px; box-shadow: none; } #chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; } +#chainMap div.node > .nodeIcons [data-icon="user"] { padding: 0; } #chainWidget > #chainParent.content { padding-top: 12px !important; } /* The pilot count is centred in its capsule (it is a flex box, which does not centre on its own), with a round minimum so "1" and "12" both sit true. */ diff --git a/public/css/app.min.css b/public/css/app.min.css index 578e0b5c..826935ee 100644 --- a/public/css/app.min.css +++ b/public/css/app.min.css @@ -35,5 +35,5 @@ a,body,button,div,h1,h2,h3,h4,h5,h6,input,li,p,select,span,table,td,textarea,th{ #sigTable td.inline-editable{cursor:pointer;position:relative}#sigTable td.inline-editable:hover{color:var(--foreground);text-decoration:underline dotted;text-underline-offset:3px}#sigTable td.inline-editable.is-saving{opacity:.5;pointer-events:none}#inline-edit{position:fixed;z-index:1200;display:flex;gap:var(--space-1);padding:var(--space-1);background:var(--popover);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 1px 2px rgba(0,0,0,.35),0 12px 32px rgba(0,0,0,.4)}#inline-edit .inline-chip{height:var(--control-dense);padding:0 var(--space-3);border-radius:999px;border:1px solid var(--border);background:0 0;color:var(--foreground);font-size:var(--fs-sm);font-weight:600;cursor:pointer}#inline-edit .inline-chip:hover{background:var(--muted);border-color:var(--border-strong)}#inline-edit .inline-chip[aria-selected=true].stable{background:var(--data-good);border-color:var(--data-good);color:#1b1b1b}#inline-edit .inline-chip[aria-selected=true].destab{background:var(--data-warn);border-color:var(--data-warn);color:#1b1b1b}#inline-edit .inline-chip[aria-selected=true].critical{background:var(--data-critical);border-color:var(--data-critical);color:#fff}#inline-edit .inline-chip:focus-visible{outline:2px solid var(--ring);outline-offset:2px}@media (pointer:coarse){#inline-edit .inline-chip{min-height:44px;padding:0 var(--space-4)}} :root{--font-ui:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--font-display:'Montserrat','IBM Plex Sans',system-ui,sans-serif;--font-mono:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,Consolas,monospace}#dialog-options td,#logoutTable td,a,body,button,div,h1,h2,h3,h4,h5,h6,input,li,p,select,span,table,table td,td,textarea,th{font-family:var(--font-ui);font-variant-numeric:tabular-nums}#cmd-palette .cmd-title,#statusbar .bar-label,#topbar #logo,#topbar #logo a,.panel-title,.settings-tabs [role=tab],.sys-panel .sys-name,.ui-dialog .ui-dialog-title{font-family:var(--font-display)}#chainMap div.node>h4.nodeType,#sigTable td:nth-child(1),kbd{font-family:var(--font-mono);letter-spacing:0}:root{--fs-base:13px;--fs-sm:12px} :root{--accent:#f07c00;--accent-dim:rgba(240, 124, 0, .18);--brand-gray:#adadad;--brand-gray-dark:#4d4d4d;--n-000:#000000;--n-020:#101010;--n-050:#1b1b1b;--n-100:#232323;--n-120:#2a2a2a;--n-200:#303030;--n-220:#3a3a3a;--n-250:#444444;--n-300:#4d4d4d;--n-400:#5a5a5a;--n-500:#6b6b6b;--n-550:#7d7d7d;--n-560:#838383;--n-600:#8c8c8c;--n-650:#9a9a9a;--n-700:#a3a3a3;--n-750:#adadad;--n-800:#c4c4c4;--n-850:#d2d2d2;--n-870:#dedede;--n-880:#e4e4e4;--n-900:#ebebeb;--n-920:#f0f0f0;--n-940:#f5f5f5;--n-960:#f8f8f8;--n-999:#f2f2f2}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--n-000:#ffffff;--n-020:#fbfbfb;--n-050:#e9e9e9;--n-100:#f5f5f5;--n-120:#fdfdfd;--n-200:#d8d8d8;--n-220:#cfcfcf;--n-250:#c4c4c4;--n-300:#adadad;--n-400:#9a9a9a;--n-500:#868686;--n-550:#6f6f6f;--n-560:#6a6a6a;--n-600:#5e5e5e;--n-650:#565656;--n-700:#4d4d4d;--n-750:#444444;--n-800:#333333;--n-850:#2b2b2b;--n-870:#242424;--n-880:#1f1f1f;--n-900:#1b1b1b;--n-920:#161616;--n-940:#101010;--n-960:#080808;--n-999:#1f1f1f}}:root[data-theme=light]{--n-000:#ffffff;--n-020:#fbfbfb;--n-050:#e9e9e9;--n-100:#f5f5f5;--n-120:#fdfdfd;--n-200:#d8d8d8;--n-220:#cfcfcf;--n-250:#c4c4c4;--n-300:#adadad;--n-400:#9a9a9a;--n-500:#868686;--n-550:#6f6f6f;--n-560:#6a6a6a;--n-600:#5e5e5e;--n-650:#565656;--n-700:#4d4d4d;--n-750:#444444;--n-800:#333333;--n-850:#2b2b2b;--n-870:#242424;--n-880:#1f1f1f;--n-900:#1b1b1b;--n-920:#161616;--n-940:#101010;--n-960:#080808;--n-999:#1f1f1f}#topbar #logo a{color:var(--accent);letter-spacing:.01em}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) #topbar #logo a{color:var(--n-999)}}:root[data-theme=light] #topbar #logo a{color:var(--n-999)}#topbar a.active,#topbar i.active{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}#sigTable tbody tr.selected td{background:var(--accent-dim)} -:root{--background:#1b1b1b;--foreground:#f2f2f2;--card:#232323;--card-foreground:#f2f2f2;--popover:#2a2a2a;--popover-foreground:#f2f2f2;--muted:#2a2a2a;--muted-foreground:#8c8c8c;--text-body:#adadad;--accent-surface:#2a2a2a;--border:#4d4d4d;--border-soft:#303030;--border-strong:#5a5a5a;--input:#303030;--glow:#242424;--primary:var(--accent, #f07c00);--primary-foreground:#1b1b1b;--ring:var(--accent, #f07c00);--destructive:#e05252;--data-good:#7d9b76;--data-warn:#d9a441;--data-critical:#e05252;--data-info:#8b7aa8;--node-surface:#2a2a2a;--node-edge:#5a5a5a;--chart-gridline:rgba(242, 242, 242, .06);--chart-axis-text:#adadad;--font-ui:'Geist',system-ui,-apple-system,'Segoe UI',sans-serif;--font-mono:'Geist Mono',ui-monospace,'SF Mono',Menlo,monospace;--font-display:'Montserrat','Geist',system-ui,sans-serif}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--background:#e9e9e9;--foreground:#1f1f1f;--card:#f5f5f5;--card-foreground:#1f1f1f;--popover:#fdfdfd;--popover-foreground:#1f1f1f;--muted:#e4e4e4;--muted-foreground:#767676;--text-body:#4d4d4d;--accent-surface:#e4e4e4;--border:#adadad;--border-soft:#d8d8d8;--border-strong:#8c8c8c;--input:#e4e4e4;--glow:#ffffff;--primary-foreground:#ffffff;--destructive:#b03a3a;--data-good:#4c6a45;--data-warn:#9a6d12;--data-critical:#b03a3a;--data-info:#5d4f78;--node-surface:#fdfdfd;--node-edge:#adadad;--chart-gridline:rgba(31, 31, 31, .08);--chart-axis-text:#4d4d4d}}:root[data-theme=light]{--background:#e9e9e9;--foreground:#1f1f1f;--card:#f5f5f5;--card-foreground:#1f1f1f;--popover:#fdfdfd;--popover-foreground:#1f1f1f;--muted:#e4e4e4;--muted-foreground:#767676;--text-body:#4d4d4d;--accent-surface:#e4e4e4;--border:#adadad;--border-soft:#d8d8d8;--border-strong:#8c8c8c;--input:#e4e4e4;--glow:#ffffff;--primary-foreground:#ffffff;--destructive:#b03a3a;--data-good:#4c6a45;--data-warn:#9a6d12;--data-critical:#b03a3a;--data-info:#5d4f78;--node-surface:#fdfdfd;--node-edge:#adadad;--chart-gridline:rgba(31, 31, 31, .08);--chart-axis-text:#4d4d4d}#wrapper::before{background:radial-gradient(ellipse at 30% -20%,var(--glow) 0,var(--background) 60%)}body{background-image:none}#sigTable td,.commentBody,.field-label,.sys-extra,.sys-meta,.ui-dialog .ui-dialog-content{color:var(--text-body)}#chainMap div.node>h4.nodeSystem,#sigTable td:nth-child(1),.field-value,.stats dd,.sys-name{color:var(--foreground)}#activityGraphControls>a,#cmd-palette .cmd-group,#sigTable th,#statusbar .bar-label,.field-group,.gate-list-label,.panel-title,.settings-tabs [role=tab],.sig-stats,.sys-links a,.ui-dialog .ui-dialog-title{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-foreground)}#activityGraphControls>a:hover,.settings-tabs [role=tab]:hover,.sys-links a:hover{color:var(--foreground)}.settings-tabs [role=tab][aria-selected=true]{color:var(--foreground)}#sigTable td:nth-child(1),#sigTable td:nth-child(3),#signature-count,#statusbar .bar-value,.node .nodeType,kbd{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.gridWidget{border-radius:4px}#cmd-palette,#inline-edit,#panel-menu,.ui-dialog{border-radius:4px;box-shadow:0 8px 30px rgba(0,0,0,.5)}#chainMap div.loop,#chainMap div.node{border-radius:4px}.chip,.gate-chip,.sig-chip,h4.chip{background:var(--popover);border:1px solid var(--border);border-radius:3px}.sig-chip.on{background:var(--muted);border-color:var(--border-strong);color:var(--foreground)}.controls .bar-btn.bar-primary:hover,.ui-dialog-buttonpane button.is-primary:hover{background:color-mix(in oklab,var(--primary) 85%,#fff);border-color:color-mix(in oklab,var(--primary) 85%,#fff)}::selection{background:var(--primary);color:var(--background)}#chainWidget>.controls>.bar-btn.bar-icon,.gridWidget>.controls>.bar-right .bar-btn,.gridWidget>.controls>.bar-right .panel-hide,.gridWidget>.controls>.panel-hide{color:var(--muted-foreground)}#chainWidget>.controls>.bar-btn.bar-icon:hover,.gridWidget>.controls>.bar-right .bar-btn:hover,.gridWidget>.controls>.panel-hide:hover{color:var(--foreground)}.gridWidget>.controls>.bar-right .bar-btn.bar-toggle.active{color:var(--primary)}#activityGraphControls>a{border:0;background:0 0;padding:0 2px;height:auto;color:var(--muted-foreground)}#activityGraphControls>a.active,#activityGraphControls>a[aria-current]{color:var(--primary)}#activityGraphControls{gap:var(--space-2) var(--space-3)}#activityLegend .legend-chip{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground)}#activityLegend .legend-chip:hover{color:var(--foreground)}#activityLegend .legend-chip.off{opacity:.5}#activityGraph{margin:var(--space-2) 0 0}.slider-wrap .ui-slider{background:var(--input);height:3px}.slider-wrap .ui-slider .ui-slider-handle{background:var(--primary);width:14px;height:14px;top:-6px;margin-left:-7px;border:2px solid var(--popover);box-sizing:border-box}.slider-value{font-family:var(--font-mono);font-size:11px;color:var(--muted-foreground)}.slider-pair>span{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}#topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;min-height:76px;padding:8px 18px;background:linear-gradient(180deg,var(--card),var(--background));border-bottom:1px solid var(--border)}#topbar>.align-center,#topbar>.align-left,#topbar>.align-right{display:flex;align-items:center;min-width:0}#topbar>.align-left{justify-content:flex-start;flex-direction:column;align-items:flex-start;gap:2px;overflow:visible}#topbar>.align-center{justify-content:center}#topbar>.align-right{justify-content:flex-end;gap:14px}.hdr-sys{display:flex;align-items:center;gap:8px}#hdr-system{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:-.01em;line-height:1.1;color:var(--foreground);text-decoration:none;white-space:nowrap}#hdr-system:hover{color:var(--primary)}#topbar #search{color:var(--muted-foreground);cursor:pointer}#topbar #search:hover{color:var(--foreground)}#topbar #systemSearch{margin:0;display:flex;align-items:center;gap:8px;font-size:11px}#topbar #currentSpan{display:inline-flex;align-items:center;gap:6px}#topbar #currentSpan .bar-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #EVEsystem{font-family:var(--font-mono);font-size:11px;color:var(--text-body)}#topbar #follow{color:var(--muted-foreground)}#topbar #follow.active{color:var(--primary)}#topbar #follow:hover{color:var(--foreground)}#topbar #follow.active:hover{color:var(--primary)}#topbar #searchSpan input{font-family:var(--font-mono);font-size:11px;min-height:24px;padding:0 8px;max-width:12rem;background:var(--input);border:1px solid var(--border);border-radius:3px;color:var(--foreground)}#topbar #logo{display:block;line-height:0}#topbar #logo img{height:46px;width:auto;display:block}#topbar #logo a::before,#topbar #logo::before{content:none!important}#topbar #logo .logo-light{display:none}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) #topbar #logo .logo-dark{display:none}:root:not([data-theme=dark]) #topbar #logo .logo-light{display:block}}:root[data-theme=light] #topbar #logo .logo-dark{display:none}:root[data-theme=light] #topbar #logo .logo-light{display:block}#topbar #login h3{margin:0}#topbar #login h3>a#user{display:flex;align-items:center;gap:10px;text-decoration:none}#topbar #user-avatar.avatar{width:44px;height:44px;border-radius:4px;border:1px solid var(--border);object-fit:cover;display:block}#topbar .hdr-pilot{display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1.15}#topbar #user-no-track,#topbar #user-track-name{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--foreground)}#topbar #user-track{display:inline-flex;align-items:center;gap:4px}#topbar #mask,#topbar .hdr-mask,#topbar .hdr-mask a{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);text-decoration:none}#topbar .hdr-mask a:hover,#topbar .hdr-mask a:hover #mask{color:var(--foreground)}#topbar .hdr-tools{display:flex;align-items:center;gap:4px;margin-left:4px;padding-left:14px;border-left:1px solid var(--border-soft)}#topbar .hdr-tools i{color:var(--muted-foreground);cursor:pointer}#topbar .hdr-tools i:hover{color:var(--foreground)}#topbar .hdr-tools [data-icon]::before{font-size:18px}#topbar #mask-menu{top:64px;right:18px}.gridWidget>.controls{background:linear-gradient(180deg,var(--popover),var(--card));border-bottom:1px solid var(--border)}#chainMap div.node,.gridWidget,.ui-dialog{border-radius:3px}.gridWidget{border:1px solid var(--border)}#sigTable tbody tr,.comment{border-color:var(--border-soft)}@media (max-width:767px),(max-height:599px){#topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:0;padding:8px 12px}#topbar>.align-center{display:none}#topbar>.align-left{flex:1 1 auto;flex-direction:column;align-items:flex-start}#topbar #systemSearch{display:none}#topbar #hdr-system{font-size:17px}#topbar>.align-right{flex:0 0 auto;width:auto;justify-content:flex-end;gap:8px}#topbar .hdr-pilot{display:none}#topbar #user-avatar.avatar{width:32px;height:32px}#topbar .hdr-tools{margin-left:0;padding-left:8px}#topbar #mask-menu{top:52px;right:12px}}#login #content .tracking-clone td.avatar img.avatar{width:36px;height:36px;border-radius:3px;border:1px solid var(--border)}#login #content #account #avatar img.avatar-lg{width:56px;height:56px;border-radius:4px;border:1px solid var(--border)}#login #content.dialog-like{background:var(--popover);border:1px solid var(--border);border-radius:4px;box-shadow:0 8px 30px rgba(0,0,0,.5);padding:var(--space-2)}#login #content .triangle{display:none}#login #logoutTable tbody th{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-foreground);background:0 0;border-bottom:1px solid var(--border);text-align:left;padding:4px 6px}#login #content #track{border-right:1px solid var(--border-soft)}#login #content #track .tracking-clone{border:1px solid var(--border);border-radius:3px;opacity:.7}#login #content #track .tracking-clone.active{border-color:var(--primary);opacity:1}#login #content #track .tracking-clone:hover{border-color:var(--border-strong);opacity:1}#login #content table .text{color:var(--text-body)}#login #content table td.name.text{color:var(--foreground)}#topbar #mask-menu-link{display:inline-block}#topbar #mask .mask{display:inline-flex;align-items:center;gap:6px;height:18px;padding:0 8px 0 7px;border:1px solid var(--border);border-radius:999px;background:var(--popover);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #mask-menu-link:hover .mask{border-color:var(--border-strong);color:var(--foreground)}#topbar #mask .mask i[data-icon]{width:7px;height:7px;border-radius:50%;background:var(--muted-foreground);display:inline-block}#topbar #mask .mask i[data-icon]::before{content:none}#topbar #mask .mask i.corporate{background:var(--primary)}#topbar #mask .mask i.alliance{background:var(--data-info)}#topbar #mask .mask i.character{background:var(--data-good)}#topbar #mask .mask i.global{background:var(--muted-foreground)}@media (min-width:768px) and (min-height:600px){#topbar{overflow:visible;height:64px;min-height:64px;padding-top:0;padding-bottom:0}#topbar>.align-center{align-self:flex-start;position:relative;z-index:3}#topbar #logo img{height:64px;margin-top:0;filter:drop-shadow(0 6px 14px rgba(0, 0, 0, .55))}.gridster{padding-top:10px}}@media (max-width:1279px){#topbar{position:sticky;top:0;z-index:30}}#chainTabs:not(:has(.tab.current))::before{content:"Following you";display:inline-flex;align-items:center;height:20px;padding:0 8px;margin-right:6px;border:1px solid color-mix(in oklab,var(--primary) 55%,var(--border));border-radius:999px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--primary)}@media (min-width:960px){.gridster>ul{grid-template-rows:minmax(240px,var(--top-row,46vh)) 1fr}}#topbar .hdr-tools .themebtn{background:0 0;border:1px solid var(--border);border-radius:3px;cursor:pointer;color:var(--muted-foreground);font-size:14px;line-height:1;padding:4px 8px;height:26px;display:inline-flex;align-items:center;flex:0 0 auto;font-family:var(--font-ui)}#topbar .hdr-tools .themebtn:hover{color:var(--primary);border-color:var(--primary)}#login #content #logoutTable{border-collapse:separate;border-spacing:0}#login #content #logoutTable>tbody>tr>td{vertical-align:top;padding:0 12px}#login #content #logoutTable>tbody>tr>td:first-child{padding-left:0}#login #content #logoutTable>tbody>tr>td:last-child{padding-right:0}#login #content #account,#login #content #track{min-width:260px}#login #content #account th,#login #content #track th{text-align:left;padding:0 0 6px}#login #content #tracking{display:flex;flex-direction:column;gap:6px;padding:0}#login #content #track .tracking-clone,#login #content #track .tracking-clone>tbody{display:block}#login #content #track .tracking-clone>tbody>tr{display:contents}#login #content #track .tracking-clone>tbody{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-rows:repeat(5,auto);column-gap:10px;row-gap:1px;padding:8px 10px}#login #content #track .tracking-clone td{padding:0;border:0;line-height:1.3}#login #content #track .tracking-clone td.avatar{grid-column:1;grid-row:1/span 5;display:flex;flex-direction:column;align-items:center;gap:4px}#login #content #track .tracking-clone td.avatar img.avatar{display:block}#login #content #track .tracking-clone td.avatar hr.bar{width:36px;margin:0;height:3px;border:0;border-radius:2px}#login #content #track .tracking-clone td.avatar .control-group{display:flex;gap:6px;margin-top:2px}#login #content #track .tracking-clone td.avatar .control-group i{font-size:14px;color:var(--muted-foreground);cursor:pointer}#login #content #track .tracking-clone td.avatar .control-group i.active,#login #content #track .tracking-clone td.avatar .control-group i:hover{color:var(--primary)}#login #content #track .tracking-clone td.name{grid-column:2;grid-row:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.system{grid-column:2;grid-row:2}#login #content #track .tracking-clone td.station{grid-column:2;grid-row:3;color:var(--muted-foreground);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.ship{grid-column:2;grid-row:4}#login #content #track .tracking-clone td.shipname{grid-column:2;grid-row:5;color:var(--muted-foreground);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.text:empty::before,#login #content #track .tracking-clone td.text:has(>:empty):not(:has(*))::before{content:none}#login #content #track .tracking-clone i.alert{grid-column:2;grid-row:1;justify-self:end}#login #content #account,#login #content #account>tbody{display:block}#login #content #account>tbody{display:grid;grid-template-columns:56px minmax(0,1fr);column-gap:12px;align-items:start}#login #content #account>tbody>tr{display:contents}#login #content #account th{grid-column:1/-1}#login #content #account td{padding:0;border:0}#login #content #account td#avatar{grid-column:1;grid-row:2/span 2}#login #content #account td#characterName{grid-column:2;grid-row:2;font-weight:600;padding-top:4px}#login #content #account td.text:not(#characterName){grid-column:2;grid-row:3;color:var(--muted-foreground)}#login #content #account td:empty{display:none}#login #content #logoutTable>tbody>tr:last-child>td{padding-top:12px}#login #content #logoutTable>tbody>tr:last-child>td:last-child{text-align:right}#topbar #mask-menu{min-width:176px;padding:4px 0;background:var(--popover);border:1px solid var(--border);border-radius:4px;box-shadow:0 8px 24px rgba(0,0,0,.45)}#topbar #mask-menu .triangle{display:none}#topbar #mask-menu a{display:flex;align-items:center;gap:8px;padding:6px 12px;margin:0;color:var(--foreground);font-size:var(--fs-sm);font-weight:500;text-decoration:none;line-height:1.2}#topbar #mask-menu a:hover{background:var(--muted);color:var(--foreground)}#topbar #mask-menu a .mask{display:inline-flex;align-items:center;gap:8px;color:inherit;font-size:inherit}#topbar #mask-menu a .mask i[data-icon]{width:8px;height:8px;border-radius:50%;padding:0;margin:0;flex:0 0 auto;display:inline-block;transform:none;background:var(--muted-foreground)}#topbar #mask-menu a .mask i[data-icon]::before{content:none}#topbar #mask-menu a .mask i.global{background:var(--muted-foreground)}#topbar #mask-menu a .mask i.character,#topbar #mask-menu a .mask i.personal{background:var(--data-good)}#topbar #mask-menu a .mask i.corporate{background:var(--primary)}#topbar #mask-menu a .mask i.alliance{background:var(--data-info)}#topbar #mask .mask i.personal{background:var(--data-good)}#topbar #mask-menu a.active::after{content:"\2713";margin-left:auto;color:var(--primary);font-size:12px;font-weight:700}#topbar #mask-menu hr.bar{height:1px;border:0;margin:4px 0;background:var(--border)}#topbar #mask-menu #admin,#topbar #mask-menu #mask-link{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase}#topbar #mask-menu #admin:hover,#topbar #mask-menu #mask-link:hover{color:var(--foreground)}#login #content #track .tracking-clone td.avatar .control-group{width:auto;min-width:36px;justify-content:center}#topbar .hdr-line2{display:flex;align-items:center;gap:8px}#topbar .hdr-ship{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground);white-space:nowrap;line-height:18px}#topbar .hdr-ship.hidden{display:none}@media (pointer:coarse){#topbar #mask .mask i[data-icon],#topbar #mask-menu a .mask i[data-icon]{min-width:0;min-height:0;width:7px;height:7px;padding:0}}@media (max-width:767px),(max-height:599px){#topbar>.align-left{min-width:0}#topbar #hdr-system{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#topbar>.align-right{flex-shrink:0}#topbar #login h3>a#user{gap:6px}}#install-tip{display:flex;align-items:center;gap:10px;padding:8px 12px;background:color-mix(in oklab,var(--primary) 14%,var(--card));border-bottom:1px solid var(--border);font-size:var(--fs-sm);color:var(--foreground)}#install-tip .tip-text{flex:1 1 auto;min-width:0}#install-tip button{min-height:32px;border-radius:4px;font:inherit;cursor:pointer}#install-tip .tip-install{background:var(--primary);color:#1b1207;border:0;padding:0 12px;font-weight:600}#install-tip .tip-close{background:0 0;border:0;color:var(--muted-foreground);font-size:18px;line-height:1;padding:0 6px}@media (min-width:960px){.gridster>ul{grid-template-rows:minmax(240px,var(--top-row,40vh)) 1fr}}#infoWidget>.controls .bar-right #sys-range{display:inline-flex;align-items:center;gap:2px;margin-right:6px;padding-right:8px;border-right:1px solid var(--border-soft)}#infoWidget>.controls .bar-right #sys-range a{display:inline-flex;align-items:center;height:22px;padding:0 6px;border-radius:3px;text-decoration:none;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground)}#infoWidget>.controls .bar-right #sys-range a:hover{color:var(--foreground);background:var(--muted)}#infoWidget>.controls .bar-right #sys-range a.active{color:var(--primary);background:var(--muted)}#activityGraphControls{flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3)}#activityGraphControls #infoLinks.in-legend-row{margin:0 0 0 auto;padding:0;border:0}#activityGraphControls #activityLegend{margin-right:0}#activityLegend{gap:2px 4px}#activityLegend .legend-chip{padding:0 5px 0 4px;letter-spacing:.06em;gap:5px}#activityGraphControls #infoLinks.in-legend-row{gap:8px}#activityGraphControls #infoLinks.in-legend-row a{letter-spacing:.12em;padding:0}#topbar #logo .logo-text{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:.02em;color:var(--foreground);line-height:64px}#topbar #logo .logo-lockup{display:inline-flex;flex-direction:column;align-items:center;gap:3px;line-height:1;padding:6px 0}#topbar #logo .lockup-small{font-family:var(--font-mono);font-size:8.5px;font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #logo .lockup-main{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-brand,var(--font-display));font-size:19px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--primary);padding-left:.2em}#topbar #logo .lockup-main.has-flourish::after,#topbar #logo .lockup-main.has-flourish::before{content:"";width:44px;height:2px;background:var(--primary);flex:0 0 auto;-webkit-mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px);mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px)}#topbar #logo .lockup-main.has-flourish::before{-webkit-mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px)}#dialog-signature #wormhole .side+.side::before,#dialog-signature #wormhole::before{content:none}#dialog-signature #wormhole{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}#dialog-signature #wormhole .side{position:relative;padding-left:20px;min-height:0}#dialog-signature #wormhole .side+.side{margin-top:4px;padding-top:8px;border-top:1px solid var(--border)}#dialog-signature .sideLabel{position:absolute;left:0;top:0;bottom:5px;width:14px;margin:0;padding:0;border:0;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--muted-foreground);white-space:nowrap;text-align:center}#dialog-signature #wormhole .side+.side .sideLabel{top:8px}#dialog-signature .row{margin:0 0 5px;gap:6px}#dialog-signature .row>.label:first-child{flex:0 0 50px}#dialog-signature #wormhole .row>.label:first-child{flex-basis:44px}#dialog-signature .ui-selectmenu-button,#dialog-signature input[type=text],#dialog-signature select{min-height:26px}#dialog-signature .mini-selector+label{min-height:24px;padding-top:0;padding-bottom:0}#dialog-signature #wormhole .side:first-child .sideLabel,#dialog-signature #wormhole .side:last-child .sideLabel{width:14px;bottom:5px;text-align:center;transform-origin:50% 50%}#dialog-signature #wormhole .side:last-child .sideLabel{top:8px}#dialog-signature input[type=text]{background:var(--input);border-color:var(--border)}#dialog-signature input[type=text]:focus{border-color:var(--primary)}#dialog-signature .quickSelectBar{gap:3px}#dialog-signature .quickSelectBar button{min-width:24px;padding:0 4px}.ui-dialog:has(#dialog-signature){width:min(392px,calc(100vw - 2rem))!important}#dialog-signature #form-signature>.row,#dialog-signature #site>.row{padding-left:20px}#dialog-signature .row{margin:0 0 6px;gap:6px;align-items:center}#dialog-signature #wormhole .row>.label:first-child,#dialog-signature .row>.label:first-child{flex:0 0 54px;text-align:right;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .row>.label:not(:first-child){font-family:var(--font-mono);color:var(--muted-foreground)}#dialog-signature .ui-selectmenu-button,#dialog-signature input[type=text],#dialog-signature select{min-height:26px;height:26px;box-sizing:border-box;background:var(--input);border:1px solid var(--border);border-radius:3px;font-size:12px;color:var(--foreground)}#dialog-signature input[type=text]:focus{border-color:var(--primary);outline:0;box-shadow:0 0 0 2px color-mix(in oklab,var(--primary) 30%,transparent)}#dialog-signature .signatureID{width:46px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em}#dialog-signature .wormholeType{width:58px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em}#dialog-signature [name=signatureName],#dialog-signature [name=wormholeName]{flex:1 1 auto;min-width:0}#dialog-signature #signatureType .ui-selectmenu-button{min-width:112px;display:inline-flex;align-items:center}#dialog-signature .custom-combobox{display:inline-flex;align-items:stretch}#dialog-signature .custom-combobox input{border-top-right-radius:0;border-bottom-right-radius:0}#dialog-signature .custom-combobox .custom-combobox-toggle{position:static;margin:0 0 0 -1px;width:24px;height:26px;padding:0;border:1px solid var(--border);border-radius:0 3px 3px 0;background:var(--muted);color:var(--muted-foreground);display:inline-flex;align-items:center;justify-content:center}#dialog-signature .custom-combobox .custom-combobox-toggle:hover{color:var(--foreground);border-color:var(--border-strong)}#dialog-signature [data-autocomplete=sigSystems]{flex:1 1 auto;display:inline-flex;min-width:0}#dialog-signature [data-autocomplete=sigSystems] .custom-combobox{flex:1 1 auto}#dialog-signature .leadsTo{width:auto;flex:1 1 auto;min-width:0}#dialog-signature .duration-picker{height:26px;padding:0 8px;gap:4px;border-color:var(--border);background:var(--input)}#dialog-signature .duration-picker input{width:22px;text-align:center;font-family:var(--font-mono);font-size:12px;height:auto;min-height:0;border:0;background:0 0}#dialog-signature .duration-picker label,#dialog-signature .duration-picker span{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .mini-selector+label{display:inline-flex;align-items:center;justify-content:center;min-height:26px;height:26px;padding:0 12px;margin:0 0 0 -1px;border:1px solid var(--border);border-radius:0;background:var(--input);font-size:12px;font-weight:500;color:var(--muted-foreground);line-height:1}#dialog-signature .mini-selector:first-of-type+label{border-radius:3px 0 0 3px;margin-left:0}#dialog-signature .row>.mini-selector+label:last-child{border-radius:0 3px 3px 0}#dialog-signature .mini-selector+label:hover{color:var(--foreground);background:var(--muted);border-color:var(--border)}#dialog-signature .mini-selector:checked+label{position:relative;z-index:1;border-color:transparent}#dialog-signature .mini-selector:checked+label.stable{background:var(--data-good);color:#12100e}#dialog-signature .mini-selector:checked+label.destab{background:var(--data-warn);color:#12100e}#dialog-signature .mini-selector:checked+label.critical{background:var(--data-critical);color:#fff}#dialog-signature .quickSelectBar{display:inline-flex;flex-wrap:nowrap;gap:3px;font-size:0;margin:0}#dialog-signature .row>.quickSelectBar{flex-basis:100%;margin-left:60px}#dialog-signature .quickSelectBar button{min-width:26px;height:22px;padding:0 5px;border:1px solid var(--border);border-radius:3px;background:var(--input);font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.04em;line-height:1;display:inline-flex;align-items:center;justify-content:center}#dialog-signature .quickSelectBar button:hover{border-color:var(--border-strong);background:var(--muted)}#dialog-signature #leadsToQuickBar button[value=High-Sec]{margin-left:8px}#dialog-signature .wormholeTypeQuickSelect{margin-left:0;flex-basis:auto}#dialog-signature .wormholeTypeQuickSelect:empty{display:none}#dialog-signature #wormhole .side{padding-left:20px}#dialog-signature #wormhole .side:first-child .sideLabel,#dialog-signature #wormhole .side:last-child .sideLabel,#dialog-signature .sideLabel{width:14px;left:0;font-size:9px;letter-spacing:.2em}#dialog-signature .sig-missing,#dialog-signature .sig-missing:focus{border-color:var(--destructive);box-shadow:none}#dialog-signature .custom-combobox .custom-combobox-toggle{position:relative;text-indent:0;overflow:hidden}#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space,#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon{display:none}#dialog-signature .custom-combobox .custom-combobox-toggle::after{content:"";width:6px;height:6px;margin-top:-3px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg)}#dialog-signature #signatureType .ui-selectmenu-button{display:inline-flex;align-items:center;gap:6px;padding:0 8px;width:auto!important}#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text{flex:1 1 auto;margin:0}#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon{order:2;margin:0;position:static}#dialog-signature .bdp-input{display:inline-flex;align-items:center;gap:12px;height:26px;padding:0 10px;border:1px solid var(--border);border-radius:3px;background:var(--input)}#dialog-signature .bdp-block{display:inline-flex;align-items:baseline;gap:4px}#dialog-signature .bdp-block br{display:none}#dialog-signature .bdp-block a{text-decoration:none}#dialog-signature .bdp-block a span{font-family:var(--font-mono);font-size:13px!important;font-weight:500;color:var(--foreground);line-height:1}#dialog-signature .bdp-block a:hover span{color:var(--primary)}#dialog-signature .bdp-block .bdp-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .bdp-block.hidden{display:none!important}#dialog-signature .bdp-input{gap:10px;padding:0 8px}#dialog-signature .custom-combobox{gap:0;max-width:100%}#dialog-signature .custom-combobox>*{margin:0}#dialog-signature .custom-combobox .custom-combobox-toggle{margin-left:-1px;flex:0 0 24px}#dialog-signature .custom-combobox input.leadsTo{flex:1 1 0;width:0;min-width:0}#dialog-signature [data-autocomplete=sigSystems]{max-width:100%}#dialog-signature .custom-combobox .custom-combobox-toggle{right:auto;left:auto;top:auto;bottom:auto;width:24px}@media (max-width:767px){#infoWidget>.controls .bar-right #sys-range{display:none}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"class name pips" "type type statics";align-items:center;column-gap:5px;row-gap:2px;width:120px;min-height:0;height:auto!important;padding:4px 7px 4px 6px;margin:0;border-left:3px solid var(--node-edge);box-shadow:0 2px 8px rgba(0,0,0,.35);overflow:visible}#chainMap div.node>.nodeClass{grid-area:class;margin:0;order:0}#chainMap div.node>.nodeSystem{grid-area:name;margin:0;padding:0;order:0;font-size:12px;line-height:16px}#chainMap div.node>.nodeActivity{grid-area:pips;position:static;margin:0;order:0;gap:2px;font-size:8px}#chainMap div.node>.nodeType{grid-area:type;margin:0;order:0;min-height:0;font-size:10px;line-height:14px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}#chainMap div.node>.statics{grid-area:statics;position:static;transform:none;margin:0;gap:3px;justify-content:flex-end;order:0}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:14px;min-width:18px;padding:0 5px;font-size:9px;box-shadow:none}#chainMap div.node>.nodeClass>span{height:15px;padding:0 5px;font-size:10px}#chainMap div.node>.nodeIcons{top:2px;right:4px}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name pips" "statics statics statics"}#chainMap div.node:has(>.nodeType:empty):not(:has(>.staticsspan)){grid-template-areas:"class name pips"}#chainMap div.loop{width:120px;padding:4px 7px}#chainMap div.greenNode.node{border-left-color:var(--data-good)}#chainMap div.yellowNode.node{border-left-color:var(--data-loot-orange)}#chainMap div.redNode.node{border-left-color:var(--data-critical)}#chainMap div.node:has(>.nodeClass.class-1),#chainMap div.node:has(>.nodeClass.class-2),#chainMap div.node:has(>.nodeClass.class-3),#chainMap div.node:has(>.nodeClass.wh){border-left-color:var(--data-info)}#chainMap div.node:has(>.nodeClass.class-4),#chainMap div.node:has(>.nodeClass.class-5){border-left-color:var(--data-loot-purple)}#chainMap div.node:has(>.nodeClass.class-6){border-left-color:var(--data-loot-pink)}#chainMap div.node:has(>.nodeClass.class-12){border-left-color:var(--data-loot-gold)}#chainMap div.node:has(>.nodeClass.class-15),#chainMap div.node:has(>.nodeClass.class-16),#chainMap div.node:has(>.nodeClass.class-17){border-left-color:var(--data-loot-red)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.redNode.node{background-color:color-mix(in oklab,var(--data-critical) 10%,var(--node-surface))}#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--data-loot-orange) 10%,var(--node-surface))}#chainMap div.greenNode.node{background-color:color-mix(in oklab,var(--data-good) 10%,var(--node-surface))}#chainWidget>#chainParent.content{overflow:auto}#sigTable td,#sigTable th{text-align:left}#sigTable .centerAlign{text-align:center}#sigTable .rightAlign{text-align:right}#sigTable .leftAlign{text-align:left}@media (min-width:960px) and (max-width:1099px){#infoWidget>.controls .bar-right #sys-range{display:none}#sigTable td:nth-child(5),#sigTable td:nth-child(6),#sigTable th:nth-child(5),#sigTable th:nth-child(6){width:3.2rem;padding-left:2px;padding-right:4px}#sigTable td:nth-child(2),#sigTable th:nth-child(2){width:4.6rem}}@media (max-width:767px){#sigTable thead{display:none}#sigTable tbody tr{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;grid-template-areas:"id type type age" "leads leads life mass";column-gap:10px;row-gap:2px;padding:7px 10px}#sigTable tbody td{display:block;width:auto!important;padding:0!important;height:auto;line-height:18px;text-align:left!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#sigTable tbody td:nth-child(1){grid-area:id;font-weight:600}#sigTable tbody td:nth-child(2){grid-area:type}#sigTable tbody td:nth-child(3){grid-area:age;text-align:right!important}#sigTable tbody td:nth-child(4){grid-area:leads}#sigTable tbody td:nth-child(5){grid-area:life;text-align:right!important;font-size:var(--fs-xs);color:var(--muted-foreground)}#sigTable tbody td:nth-child(6){grid-area:mass;text-align:right!important;font-size:var(--fs-xs);color:var(--muted-foreground)}#sigTable tbody td:empty{display:none}}#sigTable tbody td.leftAlign,#sigTable thead th.leftAlign{text-align:left}#sigTable tbody td.centerAlign,#sigTable thead th.centerAlign{text-align:center}#sigTable tbody td.rightAlign,#sigTable thead th.rightAlign{text-align:right}@media (max-width:767px){#sigTable tbody tr>td:nth-child(5),#sigTable tbody tr>td:nth-child(6){display:block!important}#sigTable tbody tr>td:empty{display:none!important}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{width:auto;min-width:118px;max-width:168px}#chainMap div.node>.nodeSystem{padding-right:0;overflow:visible;text-overflow:clip}#chainMap div.node>.nodeActivity{font-size:0;gap:3px}#chainMap div.node>.nodeActivity>span{font-size:8px;line-height:8px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.loop{width:auto;min-width:118px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto auto minmax(0,auto)}#chainMap div.node>h4.nodeSystem{padding-right:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px;height:auto;line-height:16px}#chainMap div.node:has(>.nodeClass.hisec){border-left-color:var(--data-good)}#chainMap div.node:has(>.nodeClass.lowsec){border-left-color:var(--data-loot-orange)}#chainMap div.node:has(>.nodeClass.nullsec){border-left-color:var(--data-critical)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto max-content auto}#chainMap div.greenNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-good)}#chainMap div.yellowNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-loot-orange)}#chainMap div.redNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-critical)}#chainMap div.greenNode.node:has(>.nodeClass.hisec),#chainMap div.redNode.node:has(>.nodeClass.hisec),#chainMap div.yellowNode.node:has(>.nodeClass.hisec){border-left-color:var(--data-good)}#chainMap div.greenNode.node:has(>.nodeClass.lowsec),#chainMap div.redNode.node:has(>.nodeClass.lowsec),#chainMap div.yellowNode.node:has(>.nodeClass.lowsec){border-left-color:var(--data-loot-orange)}#chainMap div.greenNode.node:has(>.nodeClass.nullsec),#chainMap div.redNode.node:has(>.nodeClass.nullsec),#chainMap div.yellowNode.node:has(>.nodeClass.nullsec){border-left-color:var(--data-critical)}#chainMap div.greenNode.node:has(>.nodeClass.wh),#chainMap div.redNode.node:has(>.nodeClass.wh),#chainMap div.yellowNode.node:has(>.nodeClass.wh){border-left-color:var(--data-info)}#chainMap div.greenNode.node:has(>.nodeClass.class-4),#chainMap div.greenNode.node:has(>.nodeClass.class-5),#chainMap div.redNode.node:has(>.nodeClass.class-4),#chainMap div.redNode.node:has(>.nodeClass.class-5),#chainMap div.yellowNode.node:has(>.nodeClass.class-4),#chainMap div.yellowNode.node:has(>.nodeClass.class-5){border-left-color:var(--data-loot-purple)}#chainMap div.greenNode.node:has(>.nodeClass.class-6),#chainMap div.redNode.node:has(>.nodeClass.class-6),#chainMap div.yellowNode.node:has(>.nodeClass.class-6){border-left-color:var(--data-loot-pink)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{width:fit-content;margin:0 auto}#chainMap div.greenNode.node.sec-hisec,#chainMap div.node.sec-hisec,#chainMap div.redNode.node.sec-hisec,#chainMap div.yellowNode.node.sec-hisec{border-left-color:var(--data-good)}#chainMap div.greenNode.node.sec-lowsec,#chainMap div.node.sec-lowsec,#chainMap div.redNode.node.sec-lowsec,#chainMap div.yellowNode.node.sec-lowsec{border-left-color:var(--data-loot-orange)}#chainMap div.greenNode.node.sec-nullsec,#chainMap div.node.sec-nullsec,#chainMap div.redNode.node.sec-nullsec,#chainMap div.yellowNode.node.sec-nullsec{border-left-color:var(--data-critical)}#chainMap div.greenNode.node.sec-triglavian,#chainMap div.node.sec-triglavian,#chainMap div.redNode.node.sec-triglavian,#chainMap div.yellowNode.node.sec-triglavian{border-left-color:var(--data-loot-red)}#chainMap div.greenNode.node.sec-wh,#chainMap div.node.sec-wh,#chainMap div.redNode.node.sec-wh,#chainMap div.yellowNode.node.sec-wh{border-left-color:var(--data-info)}#chainMap div.greenNode.node.cls-4,#chainMap div.greenNode.node.cls-5,#chainMap div.node.cls-4,#chainMap div.node.cls-5,#chainMap div.redNode.node.cls-4,#chainMap div.redNode.node.cls-5,#chainMap div.yellowNode.node.cls-4,#chainMap div.yellowNode.node.cls-5{border-left-color:var(--data-loot-purple)}#chainMap div.greenNode.node.cls-6,#chainMap div.node.cls-6,#chainMap div.redNode.node.cls-6,#chainMap div.yellowNode.node.cls-6{border-left-color:var(--data-loot-pink)}#chainMap div.greenNode.node.cls-12,#chainMap div.node.cls-12,#chainMap div.redNode.node.cls-12,#chainMap div.yellowNode.node.cls-12{border-left-color:var(--data-loot-gold)}#chainMap div.node.cls-15,#chainMap div.node.cls-16,#chainMap div.node.cls-17{border-left-color:var(--data-loot-red)}#chainMap .currentNode>div.node,#chainMap .currentNode>div.node.sec-hisec,#chainMap .currentNode>div.node.sec-wh{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{column-gap:4px;padding:3px 6px 3px 5px;min-width:104px}#chainMap div.node>.nodeClass>span{padding:0 4px;height:14px}#chainMap div.node>.nodeActivity{gap:2px}#chainMap div.node>.nodeActivity>span{font-size:7px;line-height:7px}#sigTable tbody td:nth-child(4),#sigTable tbody td:nth-child(4).centerAlign,#sigTable tbody td:nth-child(4).rightAlign,#sigTable thead th:nth-child(4),#sigTable thead th:nth-child(4).centerAlign,#sigTable thead th:nth-child(4).rightAlign{text-align:left}#chainMap div.node>h4.nodeClass>span{background:var(--node-edge);color:#fff;-webkit-text-fill-color:#fff;font-weight:700;letter-spacing:.04em}#chainMap div.node>h4.nodeClass>span.hisec{background:var(--data-good)}#chainMap div.node>h4.nodeClass>span.lowsec{background:var(--data-loot-orange)}#chainMap div.node>h4.nodeClass>span.nullsec{background:var(--data-critical)}#chainMap div.node>h4.nodeClass>span.triglavian{background:var(--data-loot-red)}#chainMap div.node>h4.nodeClass>span.wh{background:var(--data-info)}#chainMap div.node>h4.nodeClass>span.class-4,#chainMap div.node>h4.nodeClass>span.class-5{background:var(--data-loot-purple)}#chainMap div.node>h4.nodeClass>span.class-6{background:var(--data-loot-pink)}#chainMap div.node>h4.nodeClass>span.class-12{background:var(--data-loot-gold);color:#1b1b1b;-webkit-text-fill-color:#1b1b1b}#chainMap div.node>h4.nodeClass>span.class-15,#chainMap div.node>h4.nodeClass>span.class-16,#chainMap div.node>h4.nodeClass>span.class-17{background:var(--data-loot-red)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-areas:"class name pips" "type statics statics"}#chainMap div.node>.nodeType{white-space:nowrap}#chainMap div.node>.statics{flex-wrap:wrap;justify-content:flex-end;row-gap:2px;min-width:0}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name pips" "statics statics statics"}@keyframes flare-glow{0%,100%{opacity:.28;transform:scale(.96)}50%{opacity:.8;transform:scale(1.06)}}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{position:relative;z-index:0;border-top-width:1px;border-top-color:var(--node-edge)}#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{content:"";position:absolute;inset:-3px;z-index:-1;border-radius:inherit;background:var(--flare,transparent);filter:blur(9px);animation:1.4s ease-in-out infinite flare-glow;pointer-events:none}#chainMap div.redNode.node{--flare:var(--data-critical)}#chainMap div.yellowNode.node{--flare:var(--data-loot-orange)}#chainMap div.greenNode.node{--flare:var(--data-good)}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--flare) 8%,var(--node-surface))}@media (prefers-reduced-motion:reduce){#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{animation:none;opacity:.55}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto minmax(0,max-content);grid-template-areas:"class name" "type pips" "statics statics";column-gap:4px;row-gap:1px;min-width:92px;max-width:140px;padding:3px 6px 3px 5px}#chainMap div.node>.nodeType{grid-area:type}#chainMap div.node>.nodeActivity{grid-area:pips;justify-self:end}#chainMap div.node>.statics{grid-area:statics;justify-content:flex-start;margin-top:1px}#chainMap div.node>h4.nodeSystem{max-width:104px}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name" "statics statics"}#chainMap div.node:has(>.nodeType:empty):not(:has(>.staticsspan)){grid-template-areas:"class name"}#chainMap div.node:not(:has(>.staticsspan)){grid-template-areas:"class name" "type pips"}#chainMap div.node:has(>.nodeType:empty)>.nodeActivity{grid-area:name;justify-self:end}#chainMap div.node>.nodeIcons{top:auto;bottom:3px;right:5px}#chainMap div.node>.nodeIcons>div{gap:3px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:block;position:relative;overflow:visible;width:fit-content;min-width:96px;max-width:150px;height:auto!important;padding:3px 10px;margin:6px auto 8px;text-align:center}#chainMap div.node>h4.nodeSystem{display:block;margin:0;padding:0 10px 0 0;font-size:12px;line-height:14px;max-width:none}#chainMap div.node>.nodeType{display:block;margin:0;font-size:9.5px;line-height:11px;letter-spacing:.04em;min-height:0}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node>.nodeClass{position:absolute;top:-7px;left:-5px;margin:0;line-height:1;z-index:2}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.statics{position:absolute;left:6px;right:6px;bottom:-7px;margin:0;z-index:2;display:flex;justify-content:center;gap:3px;flex-wrap:nowrap}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:12px;min-width:16px;padding:0 4px;font-size:8.5px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.nodeActivity{position:absolute;right:4px;bottom:3px;top:auto;margin:0;gap:2px;z-index:1}#chainMap div.node>.nodeActivity>span{font-size:6px;line-height:6px}#chainMap div.node>.nodeIcons{position:absolute;top:-6px;right:-4px;bottom:auto;left:auto}#chainMap div.node>.nodeIcons>div{gap:2px}#chainMap div.node>.nodeIcons .badge{height:12px;font-size:9px;padding:0 4px}#chainMap div.node.frig-chain{border-width:1px}#chainMap div.loop{width:fit-content;min-width:0;padding:3px 10px;margin:6px auto 8px}#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{content:none;animation:none}@keyframes flare-halo{0%,100%{box-shadow:0 0 6px 1px color-mix(in oklab,var(--flare) 45%,transparent),0 2px 8px rgba(0,0,0,.35)}50%{box-shadow:0 0 16px 5px color-mix(in oklab,var(--flare) 85%,transparent),0 2px 8px rgba(0,0,0,.35)}}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{z-index:auto;border-color:color-mix(in oklab,var(--flare) 60%,var(--node-edge));animation:1.4s ease-in-out infinite flare-halo}@media (prefers-reduced-motion:reduce){#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{animation:none;box-shadow:0 0 12px 3px color-mix(in oklab,var(--flare) 70%,transparent)}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto max-content;grid-template-areas:"class name" "type type";align-items:center;column-gap:4px;row-gap:0;min-width:92px;max-width:160px;padding:3px 8px 9px 6px;margin:4px auto 9px;text-align:left}#chainMap div.node>.nodeClass{position:static;grid-area:class;margin:0;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:none}#chainMap div.node>h4.nodeSystem{grid-area:name;padding:0;line-height:15px;max-width:110px}#chainMap div.node>.nodeType{grid-area:type;text-align:left;padding-right:24px;line-height:11px}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){padding-bottom:3px;grid-template-areas:"class name"}#chainMap div.node:has(>.nodeType:empty):has(>.staticsspan){padding-bottom:8px}#chainMap div.node>.statics{bottom:-7px;left:4px;right:4px;justify-content:flex-start}#chainMap div.node>.nodeActivity{right:5px;bottom:9px}#chainMap div.node:has(>.nodeType:empty)>.nodeActivity{bottom:4px}#chainMap div.node>.nodeIcons{top:-5px;right:-3px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto minmax(0,max-content) auto auto;grid-template-areas:"class name icons pips" "type type type type";align-items:center;column-gap:4px;row-gap:1px;width:fit-content;min-width:96px;max-width:176px;height:auto!important;padding:3px 7px 4px 5px;margin:3px auto 12px;position:relative;overflow:visible;text-align:left}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name icons pips";padding-bottom:3px}#chainMap div.node>.nodeClass{grid-area:class;position:static;margin:0;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:none}#chainMap div.node>h4.nodeSystem{grid-area:name;margin:0;padding:0;line-height:15px;font-size:12px;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#chainMap div.node>.nodeIcons{grid-area:icons;position:static;display:flex;align-items:center;gap:3px;width:auto;height:auto;margin:0;top:auto;right:auto;left:auto;bottom:auto}#chainMap div.node>.nodeIcons:empty{display:none}#chainMap div.node>.nodeIcons>div{float:none;display:flex;align-items:center;gap:3px}#chainMap div.node>.nodeIcons .invisible{display:none}#chainMap div.node>.nodeIcons .badge{height:12px;padding:0 4px;font-size:9px}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeActivity{grid-area:pips;position:static;justify-self:end;display:flex;align-items:center;gap:2px;width:auto;height:auto;margin:0;font-size:0}#chainMap div.node>.nodeActivity>span{font-size:6px;line-height:6px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.node>.nodeType{grid-area:type;margin:0;padding:0;text-align:left;font-family:var(--font-mono);font-size:9.5px;line-height:11px;letter-spacing:.04em;text-transform:uppercase;min-height:0;white-space:nowrap}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node>.statics{position:absolute;left:5px;right:5px;top:100%;bottom:auto;margin:-4px 0 0;transform:none;z-index:2;display:flex;justify-content:flex-start;gap:3px;flex-wrap:nowrap}#chainMap div.node>.statics:empty{display:none}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:12px;min-width:16px;padding:0 4px;font-size:8.5px;line-height:1;box-shadow:0 0 0 2px var(--background)}#chainMap div.loop{display:block;width:fit-content;min-width:0;padding:3px 8px;margin:3px auto 12px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-areas:none;grid-template-columns:auto minmax(0,max-content) auto auto;grid-template-rows:auto auto;grid-auto-rows:0}#chainMap div.node>.nodeClass{grid-area:auto;grid-column:1;grid-row:1}#chainMap div.node>h4.nodeSystem{grid-area:auto;grid-column:2;grid-row:1}#chainMap div.node>.nodeIcons{grid-area:auto;grid-column:3;grid-row:1}#chainMap div.node>.nodeActivity{grid-area:auto;grid-column:4;grid-row:1}#chainMap div.node>.nodeType{grid-area:auto;grid-column:1/5;grid-row:2}#chainMap div.node>.statics{grid-area:auto}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto}#chainMap div.node>h4.nodeSystem{overflow:clip;text-overflow:ellipsis;min-width:min-content}#chainMap div.node>h4.nodeSystem a{white-space:nowrap}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:minmax(0,max-content);grid-template-rows:auto auto auto;grid-auto-rows:0;justify-items:center;align-items:center;row-gap:0;column-gap:0;width:fit-content;min-width:96px;max-width:176px;height:auto!important;padding:4px 10px 5px;margin:3px auto 12px;position:relative;overflow:visible;text-align:center}#chainMap div.node>.nodeClass{grid-column:1;grid-row:1;position:static;margin:0;display:inline-flex;align-items:center;gap:4px;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 5px;font-size:9px}#chainMap div.node>h4.nodeSystem{grid-column:1;grid-row:2;margin:0;padding:0;line-height:16px;font-size:12.5px;font-weight:600;max-width:150px;min-width:min-content;overflow:clip;text-overflow:ellipsis;white-space:nowrap}#chainMap div.node>.nodeType{grid-column:1;grid-row:3;margin:0;padding:0;text-align:center;font-family:var(--font-mono);font-size:10px;line-height:12px;letter-spacing:.06em;text-transform:uppercase;min-height:0;white-space:nowrap}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto auto}#chainMap div.node>.nodeIcons{grid-column:1;grid-row:1;position:static;display:contents}#chainMap div.node>.nodeIcons>div{float:none;display:contents}#chainMap div.node>.nodeIcons>div:first-child{display:inline-flex;align-items:center;position:absolute;top:4px;right:8px;gap:2px}#chainMap div.node>.nodeIcons>div:last-child{display:inline-flex;align-items:center;position:absolute;top:-6px;right:-6px;gap:2px}#chainMap div.node>.nodeIcons .invisible{display:none}#chainMap div.node>.nodeIcons .badge{height:13px;padding:0 5px;font-size:9px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeActivity{position:absolute;left:8px;bottom:-3px;top:auto;right:auto;margin:0;width:auto;height:auto;display:flex;gap:3px;font-size:0;z-index:2}#chainMap div.node>.nodeActivity>span{font-size:7px;line-height:7px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.node>.statics{position:absolute;left:auto;right:6px;top:100%;bottom:auto;margin:-5px 0 0;transform:none;display:flex;justify-content:flex-end;gap:3px;flex-wrap:nowrap;z-index:2}#chainMap div.node>.statics:empty{display:none}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:13px;min-width:17px;padding:0 5px;font-size:9px;line-height:1;box-shadow:0 0 0 2px var(--background)}#chainMap div.loop{display:block;width:fit-content;min-width:0;padding:4px 10px;margin:3px auto 12px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-rows:auto auto;padding:7px 10px 6px;margin:9px auto 12px;min-width:92px}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto}#chainMap div.node>.nodeClass{position:absolute;top:-7px;left:-5px;margin:0;z-index:3}#chainMap div.node>.nodeClass>span{box-shadow:0 0 0 2px var(--background)}#chainMap div.node>h4.nodeSystem{grid-row:1}#chainMap div.node>.nodeType{grid-row:2}#chainMap div.node>.nodeIcons>div:first-child{top:-7px;right:6px}#chainMap div.node>.nodeIcons>div:last-child{top:-7px;right:-6px}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:12px;text-shadow:0 0 3px var(--background)}#chainMap div.node>.nodeActivity{bottom:-4px;left:7px}#chainMap div.node>.statics{margin-top:-6px;right:5px}#chainWidget>#chainParent.content{position:relative}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{padding-top:10px;padding-bottom:7px;margin-top:10px}#chainMap div.node>.nodeClass{top:-7px;left:-5px}#chainMap div.node>.nodeClass>span{height:14px}#chainWidget>#chainParent.content{position:relative!important}#chainMap div.node>.nodeActivity,#chainMap div.node>.nodeClass,#chainMap div.node>.nodeIcons>div,#chainMap div.node>.statics{grid-area:auto;grid-row:auto;grid-column:auto}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{margin-top:8px;margin-bottom:9px}#chainMap div.node>.nodeIcons>div:last-child{top:-5px;right:-3px;gap:1px}#chainMap div.node>.nodeIcons>div:first-child{top:-6px;right:22px}#chainMap div.node>.nodeIcons .badge{height:12px;padding:0 4px;font-size:8.5px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainWidget>#chainParent.content{padding-top:12px!important}#chainMap div.node>.nodeIcons .badge{justify-content:center;min-width:14px;padding:0 4px;box-sizing:border-box;text-align:center} +:root{--background:#1b1b1b;--foreground:#f2f2f2;--card:#232323;--card-foreground:#f2f2f2;--popover:#2a2a2a;--popover-foreground:#f2f2f2;--muted:#2a2a2a;--muted-foreground:#8c8c8c;--text-body:#adadad;--accent-surface:#2a2a2a;--border:#4d4d4d;--border-soft:#303030;--border-strong:#5a5a5a;--input:#303030;--glow:#242424;--primary:var(--accent, #f07c00);--primary-foreground:#1b1b1b;--ring:var(--accent, #f07c00);--destructive:#e05252;--data-good:#7d9b76;--data-warn:#d9a441;--data-critical:#e05252;--data-info:#8b7aa8;--node-surface:#2a2a2a;--node-edge:#5a5a5a;--chart-gridline:rgba(242, 242, 242, .06);--chart-axis-text:#adadad;--font-ui:'Geist',system-ui,-apple-system,'Segoe UI',sans-serif;--font-mono:'Geist Mono',ui-monospace,'SF Mono',Menlo,monospace;--font-display:'Montserrat','Geist',system-ui,sans-serif}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--background:#e9e9e9;--foreground:#1f1f1f;--card:#f5f5f5;--card-foreground:#1f1f1f;--popover:#fdfdfd;--popover-foreground:#1f1f1f;--muted:#e4e4e4;--muted-foreground:#767676;--text-body:#4d4d4d;--accent-surface:#e4e4e4;--border:#adadad;--border-soft:#d8d8d8;--border-strong:#8c8c8c;--input:#e4e4e4;--glow:#ffffff;--primary-foreground:#ffffff;--destructive:#b03a3a;--data-good:#4c6a45;--data-warn:#9a6d12;--data-critical:#b03a3a;--data-info:#5d4f78;--node-surface:#fdfdfd;--node-edge:#adadad;--chart-gridline:rgba(31, 31, 31, .08);--chart-axis-text:#4d4d4d}}:root[data-theme=light]{--background:#e9e9e9;--foreground:#1f1f1f;--card:#f5f5f5;--card-foreground:#1f1f1f;--popover:#fdfdfd;--popover-foreground:#1f1f1f;--muted:#e4e4e4;--muted-foreground:#767676;--text-body:#4d4d4d;--accent-surface:#e4e4e4;--border:#adadad;--border-soft:#d8d8d8;--border-strong:#8c8c8c;--input:#e4e4e4;--glow:#ffffff;--primary-foreground:#ffffff;--destructive:#b03a3a;--data-good:#4c6a45;--data-warn:#9a6d12;--data-critical:#b03a3a;--data-info:#5d4f78;--node-surface:#fdfdfd;--node-edge:#adadad;--chart-gridline:rgba(31, 31, 31, .08);--chart-axis-text:#4d4d4d}#wrapper::before{background:radial-gradient(ellipse at 30% -20%,var(--glow) 0,var(--background) 60%)}body{background-image:none}#sigTable td,.commentBody,.field-label,.sys-extra,.sys-meta,.ui-dialog .ui-dialog-content{color:var(--text-body)}#chainMap div.node>h4.nodeSystem,#sigTable td:nth-child(1),.field-value,.stats dd,.sys-name{color:var(--foreground)}#activityGraphControls>a,#cmd-palette .cmd-group,#sigTable th,#statusbar .bar-label,.field-group,.gate-list-label,.panel-title,.settings-tabs [role=tab],.sig-stats,.sys-links a,.ui-dialog .ui-dialog-title{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-foreground)}#activityGraphControls>a:hover,.settings-tabs [role=tab]:hover,.sys-links a:hover{color:var(--foreground)}.settings-tabs [role=tab][aria-selected=true]{color:var(--foreground)}#sigTable td:nth-child(1),#sigTable td:nth-child(3),#signature-count,#statusbar .bar-value,.node .nodeType,kbd{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.gridWidget{border-radius:4px}#cmd-palette,#inline-edit,#panel-menu,.ui-dialog{border-radius:4px;box-shadow:0 8px 30px rgba(0,0,0,.5)}#chainMap div.loop,#chainMap div.node{border-radius:4px}.chip,.gate-chip,.sig-chip,h4.chip{background:var(--popover);border:1px solid var(--border);border-radius:3px}.sig-chip.on{background:var(--muted);border-color:var(--border-strong);color:var(--foreground)}.controls .bar-btn.bar-primary:hover,.ui-dialog-buttonpane button.is-primary:hover{background:color-mix(in oklab,var(--primary) 85%,#fff);border-color:color-mix(in oklab,var(--primary) 85%,#fff)}::selection{background:var(--primary);color:var(--background)}#chainWidget>.controls>.bar-btn.bar-icon,.gridWidget>.controls>.bar-right .bar-btn,.gridWidget>.controls>.bar-right .panel-hide,.gridWidget>.controls>.panel-hide{color:var(--muted-foreground)}#chainWidget>.controls>.bar-btn.bar-icon:hover,.gridWidget>.controls>.bar-right .bar-btn:hover,.gridWidget>.controls>.panel-hide:hover{color:var(--foreground)}.gridWidget>.controls>.bar-right .bar-btn.bar-toggle.active{color:var(--primary)}#activityGraphControls>a{border:0;background:0 0;padding:0 2px;height:auto;color:var(--muted-foreground)}#activityGraphControls>a.active,#activityGraphControls>a[aria-current]{color:var(--primary)}#activityGraphControls{gap:var(--space-2) var(--space-3)}#activityLegend .legend-chip{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground)}#activityLegend .legend-chip:hover{color:var(--foreground)}#activityLegend .legend-chip.off{opacity:.5}#activityGraph{margin:var(--space-2) 0 0}.slider-wrap .ui-slider{background:var(--input);height:3px}.slider-wrap .ui-slider .ui-slider-handle{background:var(--primary);width:14px;height:14px;top:-6px;margin-left:-7px;border:2px solid var(--popover);box-sizing:border-box}.slider-value{font-family:var(--font-mono);font-size:11px;color:var(--muted-foreground)}.slider-pair>span{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}#topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;min-height:76px;padding:8px 18px;background:linear-gradient(180deg,var(--card),var(--background));border-bottom:1px solid var(--border)}#topbar>.align-center,#topbar>.align-left,#topbar>.align-right{display:flex;align-items:center;min-width:0}#topbar>.align-left{justify-content:flex-start;flex-direction:column;align-items:flex-start;gap:2px;overflow:visible}#topbar>.align-center{justify-content:center}#topbar>.align-right{justify-content:flex-end;gap:14px}.hdr-sys{display:flex;align-items:center;gap:8px}#hdr-system{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:-.01em;line-height:1.1;color:var(--foreground);text-decoration:none;white-space:nowrap}#hdr-system:hover{color:var(--primary)}#topbar #search{color:var(--muted-foreground);cursor:pointer}#topbar #search:hover{color:var(--foreground)}#topbar #systemSearch{margin:0;display:flex;align-items:center;gap:8px;font-size:11px}#topbar #currentSpan{display:inline-flex;align-items:center;gap:6px}#topbar #currentSpan .bar-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #EVEsystem{font-family:var(--font-mono);font-size:11px;color:var(--text-body)}#topbar #follow{color:var(--muted-foreground)}#topbar #follow.active{color:var(--primary)}#topbar #follow:hover{color:var(--foreground)}#topbar #follow.active:hover{color:var(--primary)}#topbar #searchSpan input{font-family:var(--font-mono);font-size:11px;min-height:24px;padding:0 8px;max-width:12rem;background:var(--input);border:1px solid var(--border);border-radius:3px;color:var(--foreground)}#topbar #logo{display:block;line-height:0}#topbar #logo img{height:46px;width:auto;display:block}#topbar #logo a::before,#topbar #logo::before{content:none!important}#topbar #logo .logo-light{display:none}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) #topbar #logo .logo-dark{display:none}:root:not([data-theme=dark]) #topbar #logo .logo-light{display:block}}:root[data-theme=light] #topbar #logo .logo-dark{display:none}:root[data-theme=light] #topbar #logo .logo-light{display:block}#topbar #login h3{margin:0}#topbar #login h3>a#user{display:flex;align-items:center;gap:10px;text-decoration:none}#topbar #user-avatar.avatar{width:44px;height:44px;border-radius:4px;border:1px solid var(--border);object-fit:cover;display:block}#topbar .hdr-pilot{display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1.15}#topbar #user-no-track,#topbar #user-track-name{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--foreground)}#topbar #user-track{display:inline-flex;align-items:center;gap:4px}#topbar #mask,#topbar .hdr-mask,#topbar .hdr-mask a{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);text-decoration:none}#topbar .hdr-mask a:hover,#topbar .hdr-mask a:hover #mask{color:var(--foreground)}#topbar .hdr-tools{display:flex;align-items:center;gap:4px;margin-left:4px;padding-left:14px;border-left:1px solid var(--border-soft)}#topbar .hdr-tools i{color:var(--muted-foreground);cursor:pointer}#topbar .hdr-tools i:hover{color:var(--foreground)}#topbar .hdr-tools [data-icon]::before{font-size:18px}#topbar #mask-menu{top:64px;right:18px}.gridWidget>.controls{background:linear-gradient(180deg,var(--popover),var(--card));border-bottom:1px solid var(--border)}#chainMap div.node,.gridWidget,.ui-dialog{border-radius:3px}.gridWidget{border:1px solid var(--border)}#sigTable tbody tr,.comment{border-color:var(--border-soft)}@media (max-width:767px),(max-height:599px){#topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:0;padding:8px 12px}#topbar>.align-center{display:none}#topbar>.align-left{flex:1 1 auto;flex-direction:column;align-items:flex-start}#topbar #systemSearch{display:none}#topbar #hdr-system{font-size:17px}#topbar>.align-right{flex:0 0 auto;width:auto;justify-content:flex-end;gap:8px}#topbar .hdr-pilot{display:none}#topbar #user-avatar.avatar{width:32px;height:32px}#topbar .hdr-tools{margin-left:0;padding-left:8px}#topbar #mask-menu{top:52px;right:12px}}#login #content .tracking-clone td.avatar img.avatar{width:36px;height:36px;border-radius:3px;border:1px solid var(--border)}#login #content #account #avatar img.avatar-lg{width:56px;height:56px;border-radius:4px;border:1px solid var(--border)}#login #content.dialog-like{background:var(--popover);border:1px solid var(--border);border-radius:4px;box-shadow:0 8px 30px rgba(0,0,0,.5);padding:var(--space-2)}#login #content .triangle{display:none}#login #logoutTable tbody th{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-foreground);background:0 0;border-bottom:1px solid var(--border);text-align:left;padding:4px 6px}#login #content #track{border-right:1px solid var(--border-soft)}#login #content #track .tracking-clone{border:1px solid var(--border);border-radius:3px;opacity:.7}#login #content #track .tracking-clone.active{border-color:var(--primary);opacity:1}#login #content #track .tracking-clone:hover{border-color:var(--border-strong);opacity:1}#login #content table .text{color:var(--text-body)}#login #content table td.name.text{color:var(--foreground)}#topbar #mask-menu-link{display:inline-block}#topbar #mask .mask{display:inline-flex;align-items:center;gap:6px;height:18px;padding:0 8px 0 7px;border:1px solid var(--border);border-radius:999px;background:var(--popover);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #mask-menu-link:hover .mask{border-color:var(--border-strong);color:var(--foreground)}#topbar #mask .mask i[data-icon]{width:7px;height:7px;border-radius:50%;background:var(--muted-foreground);display:inline-block}#topbar #mask .mask i[data-icon]::before{content:none}#topbar #mask .mask i.corporate{background:var(--primary)}#topbar #mask .mask i.alliance{background:var(--data-info)}#topbar #mask .mask i.character{background:var(--data-good)}#topbar #mask .mask i.global{background:var(--muted-foreground)}@media (min-width:768px) and (min-height:600px){#topbar{overflow:visible;height:64px;min-height:64px;padding-top:0;padding-bottom:0}#topbar>.align-center{align-self:flex-start;position:relative;z-index:3}#topbar #logo img{height:64px;margin-top:0;filter:drop-shadow(0 6px 14px rgba(0, 0, 0, .55))}.gridster{padding-top:10px}}@media (max-width:1279px){#topbar{position:sticky;top:0;z-index:30}}#chainTabs:not(:has(.tab.current))::before{content:"Following you";display:inline-flex;align-items:center;height:20px;padding:0 8px;margin-right:6px;border:1px solid color-mix(in oklab,var(--primary) 55%,var(--border));border-radius:999px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--primary)}@media (min-width:960px){.gridster>ul{grid-template-rows:minmax(240px,var(--top-row,46vh)) 1fr}}#topbar .hdr-tools .themebtn{background:0 0;border:1px solid var(--border);border-radius:3px;cursor:pointer;color:var(--muted-foreground);font-size:14px;line-height:1;padding:4px 8px;height:26px;display:inline-flex;align-items:center;flex:0 0 auto;font-family:var(--font-ui)}#topbar .hdr-tools .themebtn:hover{color:var(--primary);border-color:var(--primary)}#login #content #logoutTable{border-collapse:separate;border-spacing:0}#login #content #logoutTable>tbody>tr>td{vertical-align:top;padding:0 12px}#login #content #logoutTable>tbody>tr>td:first-child{padding-left:0}#login #content #logoutTable>tbody>tr>td:last-child{padding-right:0}#login #content #account,#login #content #track{min-width:260px}#login #content #account th,#login #content #track th{text-align:left;padding:0 0 6px}#login #content #tracking{display:flex;flex-direction:column;gap:6px;padding:0}#login #content #track .tracking-clone,#login #content #track .tracking-clone>tbody{display:block}#login #content #track .tracking-clone>tbody>tr{display:contents}#login #content #track .tracking-clone>tbody{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-rows:repeat(5,auto);column-gap:10px;row-gap:1px;padding:8px 10px}#login #content #track .tracking-clone td{padding:0;border:0;line-height:1.3}#login #content #track .tracking-clone td.avatar{grid-column:1;grid-row:1/span 5;display:flex;flex-direction:column;align-items:center;gap:4px}#login #content #track .tracking-clone td.avatar img.avatar{display:block}#login #content #track .tracking-clone td.avatar hr.bar{width:36px;margin:0;height:3px;border:0;border-radius:2px}#login #content #track .tracking-clone td.avatar .control-group{display:flex;gap:6px;margin-top:2px}#login #content #track .tracking-clone td.avatar .control-group i{font-size:14px;color:var(--muted-foreground);cursor:pointer}#login #content #track .tracking-clone td.avatar .control-group i.active,#login #content #track .tracking-clone td.avatar .control-group i:hover{color:var(--primary)}#login #content #track .tracking-clone td.name{grid-column:2;grid-row:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.system{grid-column:2;grid-row:2}#login #content #track .tracking-clone td.station{grid-column:2;grid-row:3;color:var(--muted-foreground);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.ship{grid-column:2;grid-row:4}#login #content #track .tracking-clone td.shipname{grid-column:2;grid-row:5;color:var(--muted-foreground);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.text:empty::before,#login #content #track .tracking-clone td.text:has(>:empty):not(:has(*))::before{content:none}#login #content #track .tracking-clone i.alert{grid-column:2;grid-row:1;justify-self:end}#login #content #account,#login #content #account>tbody{display:block}#login #content #account>tbody{display:grid;grid-template-columns:56px minmax(0,1fr);column-gap:12px;align-items:start}#login #content #account>tbody>tr{display:contents}#login #content #account th{grid-column:1/-1}#login #content #account td{padding:0;border:0}#login #content #account td#avatar{grid-column:1;grid-row:2/span 2}#login #content #account td#characterName{grid-column:2;grid-row:2;font-weight:600;padding-top:4px}#login #content #account td.text:not(#characterName){grid-column:2;grid-row:3;color:var(--muted-foreground)}#login #content #account td:empty{display:none}#login #content #logoutTable>tbody>tr:last-child>td{padding-top:12px}#login #content #logoutTable>tbody>tr:last-child>td:last-child{text-align:right}#topbar #mask-menu{min-width:176px;padding:4px 0;background:var(--popover);border:1px solid var(--border);border-radius:4px;box-shadow:0 8px 24px rgba(0,0,0,.45)}#topbar #mask-menu .triangle{display:none}#topbar #mask-menu a{display:flex;align-items:center;gap:8px;padding:6px 12px;margin:0;color:var(--foreground);font-size:var(--fs-sm);font-weight:500;text-decoration:none;line-height:1.2}#topbar #mask-menu a:hover{background:var(--muted);color:var(--foreground)}#topbar #mask-menu a .mask{display:inline-flex;align-items:center;gap:8px;color:inherit;font-size:inherit}#topbar #mask-menu a .mask i[data-icon]{width:8px;height:8px;border-radius:50%;padding:0;margin:0;flex:0 0 auto;display:inline-block;transform:none;background:var(--muted-foreground)}#topbar #mask-menu a .mask i[data-icon]::before{content:none}#topbar #mask-menu a .mask i.global{background:var(--muted-foreground)}#topbar #mask-menu a .mask i.character,#topbar #mask-menu a .mask i.personal{background:var(--data-good)}#topbar #mask-menu a .mask i.corporate{background:var(--primary)}#topbar #mask-menu a .mask i.alliance{background:var(--data-info)}#topbar #mask .mask i.personal{background:var(--data-good)}#topbar #mask-menu a.active::after{content:"\2713";margin-left:auto;color:var(--primary);font-size:12px;font-weight:700}#topbar #mask-menu hr.bar{height:1px;border:0;margin:4px 0;background:var(--border)}#topbar #mask-menu #admin,#topbar #mask-menu #mask-link{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase}#topbar #mask-menu #admin:hover,#topbar #mask-menu #mask-link:hover{color:var(--foreground)}#login #content #track .tracking-clone td.avatar .control-group{width:auto;min-width:36px;justify-content:center}#topbar .hdr-line2{display:flex;align-items:center;gap:8px}#topbar .hdr-ship{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground);white-space:nowrap;line-height:18px}#topbar .hdr-ship.hidden{display:none}@media (pointer:coarse){#topbar #mask .mask i[data-icon],#topbar #mask-menu a .mask i[data-icon]{min-width:0;min-height:0;width:7px;height:7px;padding:0}}@media (max-width:767px),(max-height:599px){#topbar>.align-left{min-width:0}#topbar #hdr-system{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#topbar>.align-right{flex-shrink:0}#topbar #login h3>a#user{gap:6px}}#install-tip{display:flex;align-items:center;gap:10px;padding:8px 12px;background:color-mix(in oklab,var(--primary) 14%,var(--card));border-bottom:1px solid var(--border);font-size:var(--fs-sm);color:var(--foreground)}#install-tip .tip-text{flex:1 1 auto;min-width:0}#install-tip button{min-height:32px;border-radius:4px;font:inherit;cursor:pointer}#install-tip .tip-install{background:var(--primary);color:#1b1207;border:0;padding:0 12px;font-weight:600}#install-tip .tip-close{background:0 0;border:0;color:var(--muted-foreground);font-size:18px;line-height:1;padding:0 6px}@media (min-width:960px){.gridster>ul{grid-template-rows:minmax(240px,var(--top-row,40vh)) 1fr}}#infoWidget>.controls .bar-right #sys-range{display:inline-flex;align-items:center;gap:2px;margin-right:6px;padding-right:8px;border-right:1px solid var(--border-soft)}#infoWidget>.controls .bar-right #sys-range a{display:inline-flex;align-items:center;height:22px;padding:0 6px;border-radius:3px;text-decoration:none;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground)}#infoWidget>.controls .bar-right #sys-range a:hover{color:var(--foreground);background:var(--muted)}#infoWidget>.controls .bar-right #sys-range a.active{color:var(--primary);background:var(--muted)}#activityGraphControls{flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3)}#activityGraphControls #infoLinks.in-legend-row{margin:0 0 0 auto;padding:0;border:0}#activityGraphControls #activityLegend{margin-right:0}#activityLegend{gap:2px 4px}#activityLegend .legend-chip{padding:0 5px 0 4px;letter-spacing:.06em;gap:5px}#activityGraphControls #infoLinks.in-legend-row{gap:8px}#activityGraphControls #infoLinks.in-legend-row a{letter-spacing:.12em;padding:0}#topbar #logo .logo-text{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:.02em;color:var(--foreground);line-height:64px}#topbar #logo .logo-lockup{display:inline-flex;flex-direction:column;align-items:center;gap:3px;line-height:1;padding:6px 0}#topbar #logo .lockup-small{font-family:var(--font-mono);font-size:8.5px;font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #logo .lockup-main{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-brand,var(--font-display));font-size:19px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--primary);padding-left:.2em}#topbar #logo .lockup-main.has-flourish::after,#topbar #logo .lockup-main.has-flourish::before{content:"";width:44px;height:2px;background:var(--primary);flex:0 0 auto;-webkit-mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px);mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px)}#topbar #logo .lockup-main.has-flourish::before{-webkit-mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px)}#dialog-signature #wormhole .side+.side::before,#dialog-signature #wormhole::before{content:none}#dialog-signature #wormhole{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}#dialog-signature #wormhole .side{position:relative;padding-left:20px;min-height:0}#dialog-signature #wormhole .side+.side{margin-top:4px;padding-top:8px;border-top:1px solid var(--border)}#dialog-signature .sideLabel{position:absolute;left:0;top:0;bottom:5px;width:14px;margin:0;padding:0;border:0;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--muted-foreground);white-space:nowrap;text-align:center}#dialog-signature #wormhole .side+.side .sideLabel{top:8px}#dialog-signature .row{margin:0 0 5px;gap:6px}#dialog-signature .row>.label:first-child{flex:0 0 50px}#dialog-signature #wormhole .row>.label:first-child{flex-basis:44px}#dialog-signature .ui-selectmenu-button,#dialog-signature input[type=text],#dialog-signature select{min-height:26px}#dialog-signature .mini-selector+label{min-height:24px;padding-top:0;padding-bottom:0}#dialog-signature #wormhole .side:first-child .sideLabel,#dialog-signature #wormhole .side:last-child .sideLabel{width:14px;bottom:5px;text-align:center;transform-origin:50% 50%}#dialog-signature #wormhole .side:last-child .sideLabel{top:8px}#dialog-signature input[type=text]{background:var(--input);border-color:var(--border)}#dialog-signature input[type=text]:focus{border-color:var(--primary)}#dialog-signature .quickSelectBar{gap:3px}#dialog-signature .quickSelectBar button{min-width:24px;padding:0 4px}.ui-dialog:has(#dialog-signature){width:min(392px,calc(100vw - 2rem))!important}#dialog-signature #form-signature>.row,#dialog-signature #site>.row{padding-left:20px}#dialog-signature .row{margin:0 0 6px;gap:6px;align-items:center}#dialog-signature #wormhole .row>.label:first-child,#dialog-signature .row>.label:first-child{flex:0 0 54px;text-align:right;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .row>.label:not(:first-child){font-family:var(--font-mono);color:var(--muted-foreground)}#dialog-signature .ui-selectmenu-button,#dialog-signature input[type=text],#dialog-signature select{min-height:26px;height:26px;box-sizing:border-box;background:var(--input);border:1px solid var(--border);border-radius:3px;font-size:12px;color:var(--foreground)}#dialog-signature input[type=text]:focus{border-color:var(--primary);outline:0;box-shadow:0 0 0 2px color-mix(in oklab,var(--primary) 30%,transparent)}#dialog-signature .signatureID{width:46px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em}#dialog-signature .wormholeType{width:58px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em}#dialog-signature [name=signatureName],#dialog-signature [name=wormholeName]{flex:1 1 auto;min-width:0}#dialog-signature #signatureType .ui-selectmenu-button{min-width:112px;display:inline-flex;align-items:center}#dialog-signature .custom-combobox{display:inline-flex;align-items:stretch}#dialog-signature .custom-combobox input{border-top-right-radius:0;border-bottom-right-radius:0}#dialog-signature .custom-combobox .custom-combobox-toggle{position:static;margin:0 0 0 -1px;width:24px;height:26px;padding:0;border:1px solid var(--border);border-radius:0 3px 3px 0;background:var(--muted);color:var(--muted-foreground);display:inline-flex;align-items:center;justify-content:center}#dialog-signature .custom-combobox .custom-combobox-toggle:hover{color:var(--foreground);border-color:var(--border-strong)}#dialog-signature [data-autocomplete=sigSystems]{flex:1 1 auto;display:inline-flex;min-width:0}#dialog-signature [data-autocomplete=sigSystems] .custom-combobox{flex:1 1 auto}#dialog-signature .leadsTo{width:auto;flex:1 1 auto;min-width:0}#dialog-signature .duration-picker{height:26px;padding:0 8px;gap:4px;border-color:var(--border);background:var(--input)}#dialog-signature .duration-picker input{width:22px;text-align:center;font-family:var(--font-mono);font-size:12px;height:auto;min-height:0;border:0;background:0 0}#dialog-signature .duration-picker label,#dialog-signature .duration-picker span{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .mini-selector+label{display:inline-flex;align-items:center;justify-content:center;min-height:26px;height:26px;padding:0 12px;margin:0 0 0 -1px;border:1px solid var(--border);border-radius:0;background:var(--input);font-size:12px;font-weight:500;color:var(--muted-foreground);line-height:1}#dialog-signature .mini-selector:first-of-type+label{border-radius:3px 0 0 3px;margin-left:0}#dialog-signature .row>.mini-selector+label:last-child{border-radius:0 3px 3px 0}#dialog-signature .mini-selector+label:hover{color:var(--foreground);background:var(--muted);border-color:var(--border)}#dialog-signature .mini-selector:checked+label{position:relative;z-index:1;border-color:transparent}#dialog-signature .mini-selector:checked+label.stable{background:var(--data-good);color:#12100e}#dialog-signature .mini-selector:checked+label.destab{background:var(--data-warn);color:#12100e}#dialog-signature .mini-selector:checked+label.critical{background:var(--data-critical);color:#fff}#dialog-signature .quickSelectBar{display:inline-flex;flex-wrap:nowrap;gap:3px;font-size:0;margin:0}#dialog-signature .row>.quickSelectBar{flex-basis:100%;margin-left:60px}#dialog-signature .quickSelectBar button{min-width:26px;height:22px;padding:0 5px;border:1px solid var(--border);border-radius:3px;background:var(--input);font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.04em;line-height:1;display:inline-flex;align-items:center;justify-content:center}#dialog-signature .quickSelectBar button:hover{border-color:var(--border-strong);background:var(--muted)}#dialog-signature #leadsToQuickBar button[value=High-Sec]{margin-left:8px}#dialog-signature .wormholeTypeQuickSelect{margin-left:0;flex-basis:auto}#dialog-signature .wormholeTypeQuickSelect:empty{display:none}#dialog-signature #wormhole .side{padding-left:20px}#dialog-signature #wormhole .side:first-child .sideLabel,#dialog-signature #wormhole .side:last-child .sideLabel,#dialog-signature .sideLabel{width:14px;left:0;font-size:9px;letter-spacing:.2em}#dialog-signature .sig-missing,#dialog-signature .sig-missing:focus{border-color:var(--destructive);box-shadow:none}#dialog-signature .custom-combobox .custom-combobox-toggle{position:relative;text-indent:0;overflow:hidden}#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space,#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon{display:none}#dialog-signature .custom-combobox .custom-combobox-toggle::after{content:"";width:6px;height:6px;margin-top:-3px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg)}#dialog-signature #signatureType .ui-selectmenu-button{display:inline-flex;align-items:center;gap:6px;padding:0 8px;width:auto!important}#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text{flex:1 1 auto;margin:0}#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon{order:2;margin:0;position:static}#dialog-signature .bdp-input{display:inline-flex;align-items:center;gap:12px;height:26px;padding:0 10px;border:1px solid var(--border);border-radius:3px;background:var(--input)}#dialog-signature .bdp-block{display:inline-flex;align-items:baseline;gap:4px}#dialog-signature .bdp-block br{display:none}#dialog-signature .bdp-block a{text-decoration:none}#dialog-signature .bdp-block a span{font-family:var(--font-mono);font-size:13px!important;font-weight:500;color:var(--foreground);line-height:1}#dialog-signature .bdp-block a:hover span{color:var(--primary)}#dialog-signature .bdp-block .bdp-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .bdp-block.hidden{display:none!important}#dialog-signature .bdp-input{gap:10px;padding:0 8px}#dialog-signature .custom-combobox{gap:0;max-width:100%}#dialog-signature .custom-combobox>*{margin:0}#dialog-signature .custom-combobox .custom-combobox-toggle{margin-left:-1px;flex:0 0 24px}#dialog-signature .custom-combobox input.leadsTo{flex:1 1 0;width:0;min-width:0}#dialog-signature [data-autocomplete=sigSystems]{max-width:100%}#dialog-signature .custom-combobox .custom-combobox-toggle{right:auto;left:auto;top:auto;bottom:auto;width:24px}@media (max-width:767px){#infoWidget>.controls .bar-right #sys-range{display:none}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"class name pips" "type type statics";align-items:center;column-gap:5px;row-gap:2px;width:120px;min-height:0;height:auto!important;padding:4px 7px 4px 6px;margin:0;border-left:3px solid var(--node-edge);box-shadow:0 2px 8px rgba(0,0,0,.35);overflow:visible}#chainMap div.node>.nodeClass{grid-area:class;margin:0;order:0}#chainMap div.node>.nodeSystem{grid-area:name;margin:0;padding:0;order:0;font-size:12px;line-height:16px}#chainMap div.node>.nodeActivity{grid-area:pips;position:static;margin:0;order:0;gap:2px;font-size:8px}#chainMap div.node>.nodeType{grid-area:type;margin:0;order:0;min-height:0;font-size:10px;line-height:14px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}#chainMap div.node>.statics{grid-area:statics;position:static;transform:none;margin:0;gap:3px;justify-content:flex-end;order:0}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:14px;min-width:18px;padding:0 5px;font-size:9px;box-shadow:none}#chainMap div.node>.nodeClass>span{height:15px;padding:0 5px;font-size:10px}#chainMap div.node>.nodeIcons{top:2px;right:4px}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name pips" "statics statics statics"}#chainMap div.node:has(>.nodeType:empty):not(:has(>.staticsspan)){grid-template-areas:"class name pips"}#chainMap div.loop{width:120px;padding:4px 7px}#chainMap div.greenNode.node{border-left-color:var(--data-good)}#chainMap div.yellowNode.node{border-left-color:var(--data-loot-orange)}#chainMap div.redNode.node{border-left-color:var(--data-critical)}#chainMap div.node:has(>.nodeClass.class-1),#chainMap div.node:has(>.nodeClass.class-2),#chainMap div.node:has(>.nodeClass.class-3),#chainMap div.node:has(>.nodeClass.wh){border-left-color:var(--data-info)}#chainMap div.node:has(>.nodeClass.class-4),#chainMap div.node:has(>.nodeClass.class-5){border-left-color:var(--data-loot-purple)}#chainMap div.node:has(>.nodeClass.class-6){border-left-color:var(--data-loot-pink)}#chainMap div.node:has(>.nodeClass.class-12){border-left-color:var(--data-loot-gold)}#chainMap div.node:has(>.nodeClass.class-15),#chainMap div.node:has(>.nodeClass.class-16),#chainMap div.node:has(>.nodeClass.class-17){border-left-color:var(--data-loot-red)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.redNode.node{background-color:color-mix(in oklab,var(--data-critical) 10%,var(--node-surface))}#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--data-loot-orange) 10%,var(--node-surface))}#chainMap div.greenNode.node{background-color:color-mix(in oklab,var(--data-good) 10%,var(--node-surface))}#chainWidget>#chainParent.content{overflow:auto}#sigTable td,#sigTable th{text-align:left}#sigTable .centerAlign{text-align:center}#sigTable .rightAlign{text-align:right}#sigTable .leftAlign{text-align:left}@media (min-width:960px) and (max-width:1099px){#infoWidget>.controls .bar-right #sys-range{display:none}#sigTable td:nth-child(5),#sigTable td:nth-child(6),#sigTable th:nth-child(5),#sigTable th:nth-child(6){width:3.2rem;padding-left:2px;padding-right:4px}#sigTable td:nth-child(2),#sigTable th:nth-child(2){width:4.6rem}}@media (max-width:767px){#sigTable thead{display:none}#sigTable tbody tr{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;grid-template-areas:"id type type age" "leads leads life mass";column-gap:10px;row-gap:2px;padding:7px 10px}#sigTable tbody td{display:block;width:auto!important;padding:0!important;height:auto;line-height:18px;text-align:left!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#sigTable tbody td:nth-child(1){grid-area:id;font-weight:600}#sigTable tbody td:nth-child(2){grid-area:type}#sigTable tbody td:nth-child(3){grid-area:age;text-align:right!important}#sigTable tbody td:nth-child(4){grid-area:leads}#sigTable tbody td:nth-child(5){grid-area:life;text-align:right!important;font-size:var(--fs-xs);color:var(--muted-foreground)}#sigTable tbody td:nth-child(6){grid-area:mass;text-align:right!important;font-size:var(--fs-xs);color:var(--muted-foreground)}#sigTable tbody td:empty{display:none}}#sigTable tbody td.leftAlign,#sigTable thead th.leftAlign{text-align:left}#sigTable tbody td.centerAlign,#sigTable thead th.centerAlign{text-align:center}#sigTable tbody td.rightAlign,#sigTable thead th.rightAlign{text-align:right}@media (max-width:767px){#sigTable tbody tr>td:nth-child(5),#sigTable tbody tr>td:nth-child(6){display:block!important}#sigTable tbody tr>td:empty{display:none!important}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{width:auto;min-width:118px;max-width:168px}#chainMap div.node>.nodeSystem{padding-right:0;overflow:visible;text-overflow:clip}#chainMap div.node>.nodeActivity{font-size:0;gap:3px}#chainMap div.node>.nodeActivity>span{font-size:8px;line-height:8px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.loop{width:auto;min-width:118px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto auto minmax(0,auto)}#chainMap div.node>h4.nodeSystem{padding-right:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px;height:auto;line-height:16px}#chainMap div.node:has(>.nodeClass.hisec){border-left-color:var(--data-good)}#chainMap div.node:has(>.nodeClass.lowsec){border-left-color:var(--data-loot-orange)}#chainMap div.node:has(>.nodeClass.nullsec){border-left-color:var(--data-critical)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto max-content auto}#chainMap div.greenNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-good)}#chainMap div.yellowNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-loot-orange)}#chainMap div.redNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-critical)}#chainMap div.greenNode.node:has(>.nodeClass.hisec),#chainMap div.redNode.node:has(>.nodeClass.hisec),#chainMap div.yellowNode.node:has(>.nodeClass.hisec){border-left-color:var(--data-good)}#chainMap div.greenNode.node:has(>.nodeClass.lowsec),#chainMap div.redNode.node:has(>.nodeClass.lowsec),#chainMap div.yellowNode.node:has(>.nodeClass.lowsec){border-left-color:var(--data-loot-orange)}#chainMap div.greenNode.node:has(>.nodeClass.nullsec),#chainMap div.redNode.node:has(>.nodeClass.nullsec),#chainMap div.yellowNode.node:has(>.nodeClass.nullsec){border-left-color:var(--data-critical)}#chainMap div.greenNode.node:has(>.nodeClass.wh),#chainMap div.redNode.node:has(>.nodeClass.wh),#chainMap div.yellowNode.node:has(>.nodeClass.wh){border-left-color:var(--data-info)}#chainMap div.greenNode.node:has(>.nodeClass.class-4),#chainMap div.greenNode.node:has(>.nodeClass.class-5),#chainMap div.redNode.node:has(>.nodeClass.class-4),#chainMap div.redNode.node:has(>.nodeClass.class-5),#chainMap div.yellowNode.node:has(>.nodeClass.class-4),#chainMap div.yellowNode.node:has(>.nodeClass.class-5){border-left-color:var(--data-loot-purple)}#chainMap div.greenNode.node:has(>.nodeClass.class-6),#chainMap div.redNode.node:has(>.nodeClass.class-6),#chainMap div.yellowNode.node:has(>.nodeClass.class-6){border-left-color:var(--data-loot-pink)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{width:fit-content;margin:0 auto}#chainMap div.greenNode.node.sec-hisec,#chainMap div.node.sec-hisec,#chainMap div.redNode.node.sec-hisec,#chainMap div.yellowNode.node.sec-hisec{border-left-color:var(--data-good)}#chainMap div.greenNode.node.sec-lowsec,#chainMap div.node.sec-lowsec,#chainMap div.redNode.node.sec-lowsec,#chainMap div.yellowNode.node.sec-lowsec{border-left-color:var(--data-loot-orange)}#chainMap div.greenNode.node.sec-nullsec,#chainMap div.node.sec-nullsec,#chainMap div.redNode.node.sec-nullsec,#chainMap div.yellowNode.node.sec-nullsec{border-left-color:var(--data-critical)}#chainMap div.greenNode.node.sec-triglavian,#chainMap div.node.sec-triglavian,#chainMap div.redNode.node.sec-triglavian,#chainMap div.yellowNode.node.sec-triglavian{border-left-color:var(--data-loot-red)}#chainMap div.greenNode.node.sec-wh,#chainMap div.node.sec-wh,#chainMap div.redNode.node.sec-wh,#chainMap div.yellowNode.node.sec-wh{border-left-color:var(--data-info)}#chainMap div.greenNode.node.cls-4,#chainMap div.greenNode.node.cls-5,#chainMap div.node.cls-4,#chainMap div.node.cls-5,#chainMap div.redNode.node.cls-4,#chainMap div.redNode.node.cls-5,#chainMap div.yellowNode.node.cls-4,#chainMap div.yellowNode.node.cls-5{border-left-color:var(--data-loot-purple)}#chainMap div.greenNode.node.cls-6,#chainMap div.node.cls-6,#chainMap div.redNode.node.cls-6,#chainMap div.yellowNode.node.cls-6{border-left-color:var(--data-loot-pink)}#chainMap div.greenNode.node.cls-12,#chainMap div.node.cls-12,#chainMap div.redNode.node.cls-12,#chainMap div.yellowNode.node.cls-12{border-left-color:var(--data-loot-gold)}#chainMap div.node.cls-15,#chainMap div.node.cls-16,#chainMap div.node.cls-17{border-left-color:var(--data-loot-red)}#chainMap .currentNode>div.node,#chainMap .currentNode>div.node.sec-hisec,#chainMap .currentNode>div.node.sec-wh{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{column-gap:4px;padding:3px 6px 3px 5px;min-width:104px}#chainMap div.node>.nodeClass>span{padding:0 4px;height:14px}#chainMap div.node>.nodeActivity{gap:2px}#chainMap div.node>.nodeActivity>span{font-size:7px;line-height:7px}#sigTable tbody td:nth-child(4),#sigTable tbody td:nth-child(4).centerAlign,#sigTable tbody td:nth-child(4).rightAlign,#sigTable thead th:nth-child(4),#sigTable thead th:nth-child(4).centerAlign,#sigTable thead th:nth-child(4).rightAlign{text-align:left}#chainMap div.node>h4.nodeClass>span{background:var(--node-edge);color:#fff;-webkit-text-fill-color:#fff;font-weight:700;letter-spacing:.04em}#chainMap div.node>h4.nodeClass>span.hisec{background:var(--data-good)}#chainMap div.node>h4.nodeClass>span.lowsec{background:var(--data-loot-orange)}#chainMap div.node>h4.nodeClass>span.nullsec{background:var(--data-critical)}#chainMap div.node>h4.nodeClass>span.triglavian{background:var(--data-loot-red)}#chainMap div.node>h4.nodeClass>span.wh{background:var(--data-info)}#chainMap div.node>h4.nodeClass>span.class-4,#chainMap div.node>h4.nodeClass>span.class-5{background:var(--data-loot-purple)}#chainMap div.node>h4.nodeClass>span.class-6{background:var(--data-loot-pink)}#chainMap div.node>h4.nodeClass>span.class-12{background:var(--data-loot-gold);color:#1b1b1b;-webkit-text-fill-color:#1b1b1b}#chainMap div.node>h4.nodeClass>span.class-15,#chainMap div.node>h4.nodeClass>span.class-16,#chainMap div.node>h4.nodeClass>span.class-17{background:var(--data-loot-red)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-areas:"class name pips" "type statics statics"}#chainMap div.node>.nodeType{white-space:nowrap}#chainMap div.node>.statics{flex-wrap:wrap;justify-content:flex-end;row-gap:2px;min-width:0}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name pips" "statics statics statics"}@keyframes flare-glow{0%,100%{opacity:.28;transform:scale(.96)}50%{opacity:.8;transform:scale(1.06)}}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{position:relative;z-index:0;border-top-width:1px;border-top-color:var(--node-edge)}#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{content:"";position:absolute;inset:-3px;z-index:-1;border-radius:inherit;background:var(--flare,transparent);filter:blur(9px);animation:1.4s ease-in-out infinite flare-glow;pointer-events:none}#chainMap div.redNode.node{--flare:var(--data-critical)}#chainMap div.yellowNode.node{--flare:var(--data-loot-orange)}#chainMap div.greenNode.node{--flare:var(--data-good)}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--flare) 8%,var(--node-surface))}@media (prefers-reduced-motion:reduce){#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{animation:none;opacity:.55}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto minmax(0,max-content);grid-template-areas:"class name" "type pips" "statics statics";column-gap:4px;row-gap:1px;min-width:92px;max-width:140px;padding:3px 6px 3px 5px}#chainMap div.node>.nodeType{grid-area:type}#chainMap div.node>.nodeActivity{grid-area:pips;justify-self:end}#chainMap div.node>.statics{grid-area:statics;justify-content:flex-start;margin-top:1px}#chainMap div.node>h4.nodeSystem{max-width:104px}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name" "statics statics"}#chainMap div.node:has(>.nodeType:empty):not(:has(>.staticsspan)){grid-template-areas:"class name"}#chainMap div.node:not(:has(>.staticsspan)){grid-template-areas:"class name" "type pips"}#chainMap div.node:has(>.nodeType:empty)>.nodeActivity{grid-area:name;justify-self:end}#chainMap div.node>.nodeIcons{top:auto;bottom:3px;right:5px}#chainMap div.node>.nodeIcons>div{gap:3px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:block;position:relative;overflow:visible;width:fit-content;min-width:96px;max-width:150px;height:auto!important;padding:3px 10px;margin:6px auto 8px;text-align:center}#chainMap div.node>h4.nodeSystem{display:block;margin:0;padding:0 10px 0 0;font-size:12px;line-height:14px;max-width:none}#chainMap div.node>.nodeType{display:block;margin:0;font-size:9.5px;line-height:11px;letter-spacing:.04em;min-height:0}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node>.nodeClass{position:absolute;top:-7px;left:-5px;margin:0;line-height:1;z-index:2}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.statics{position:absolute;left:6px;right:6px;bottom:-7px;margin:0;z-index:2;display:flex;justify-content:center;gap:3px;flex-wrap:nowrap}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:12px;min-width:16px;padding:0 4px;font-size:8.5px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.nodeActivity{position:absolute;right:4px;bottom:3px;top:auto;margin:0;gap:2px;z-index:1}#chainMap div.node>.nodeActivity>span{font-size:6px;line-height:6px}#chainMap div.node>.nodeIcons{position:absolute;top:-6px;right:-4px;bottom:auto;left:auto}#chainMap div.node>.nodeIcons>div{gap:2px}#chainMap div.node>.nodeIcons .badge{height:12px;font-size:9px;padding:0 4px}#chainMap div.node.frig-chain{border-width:1px}#chainMap div.loop{width:fit-content;min-width:0;padding:3px 10px;margin:6px auto 8px}#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{content:none;animation:none}@keyframes flare-halo{0%,100%{box-shadow:0 0 6px 1px color-mix(in oklab,var(--flare) 45%,transparent),0 2px 8px rgba(0,0,0,.35)}50%{box-shadow:0 0 16px 5px color-mix(in oklab,var(--flare) 85%,transparent),0 2px 8px rgba(0,0,0,.35)}}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{z-index:auto;border-color:color-mix(in oklab,var(--flare) 60%,var(--node-edge));animation:1.4s ease-in-out infinite flare-halo}@media (prefers-reduced-motion:reduce){#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{animation:none;box-shadow:0 0 12px 3px color-mix(in oklab,var(--flare) 70%,transparent)}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto max-content;grid-template-areas:"class name" "type type";align-items:center;column-gap:4px;row-gap:0;min-width:92px;max-width:160px;padding:3px 8px 9px 6px;margin:4px auto 9px;text-align:left}#chainMap div.node>.nodeClass{position:static;grid-area:class;margin:0;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:none}#chainMap div.node>h4.nodeSystem{grid-area:name;padding:0;line-height:15px;max-width:110px}#chainMap div.node>.nodeType{grid-area:type;text-align:left;padding-right:24px;line-height:11px}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){padding-bottom:3px;grid-template-areas:"class name"}#chainMap div.node:has(>.nodeType:empty):has(>.staticsspan){padding-bottom:8px}#chainMap div.node>.statics{bottom:-7px;left:4px;right:4px;justify-content:flex-start}#chainMap div.node>.nodeActivity{right:5px;bottom:9px}#chainMap div.node:has(>.nodeType:empty)>.nodeActivity{bottom:4px}#chainMap div.node>.nodeIcons{top:-5px;right:-3px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto minmax(0,max-content) auto auto;grid-template-areas:"class name icons pips" "type type type type";align-items:center;column-gap:4px;row-gap:1px;width:fit-content;min-width:96px;max-width:176px;height:auto!important;padding:3px 7px 4px 5px;margin:3px auto 12px;position:relative;overflow:visible;text-align:left}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name icons pips";padding-bottom:3px}#chainMap div.node>.nodeClass{grid-area:class;position:static;margin:0;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:none}#chainMap div.node>h4.nodeSystem{grid-area:name;margin:0;padding:0;line-height:15px;font-size:12px;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#chainMap div.node>.nodeIcons{grid-area:icons;position:static;display:flex;align-items:center;gap:3px;width:auto;height:auto;margin:0;top:auto;right:auto;left:auto;bottom:auto}#chainMap div.node>.nodeIcons:empty{display:none}#chainMap div.node>.nodeIcons>div{float:none;display:flex;align-items:center;gap:3px}#chainMap div.node>.nodeIcons .invisible{display:none}#chainMap div.node>.nodeIcons .badge{height:12px;padding:0 4px;font-size:9px}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeActivity{grid-area:pips;position:static;justify-self:end;display:flex;align-items:center;gap:2px;width:auto;height:auto;margin:0;font-size:0}#chainMap div.node>.nodeActivity>span{font-size:6px;line-height:6px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.node>.nodeType{grid-area:type;margin:0;padding:0;text-align:left;font-family:var(--font-mono);font-size:9.5px;line-height:11px;letter-spacing:.04em;text-transform:uppercase;min-height:0;white-space:nowrap}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node>.statics{position:absolute;left:5px;right:5px;top:100%;bottom:auto;margin:-4px 0 0;transform:none;z-index:2;display:flex;justify-content:flex-start;gap:3px;flex-wrap:nowrap}#chainMap div.node>.statics:empty{display:none}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:12px;min-width:16px;padding:0 4px;font-size:8.5px;line-height:1;box-shadow:0 0 0 2px var(--background)}#chainMap div.loop{display:block;width:fit-content;min-width:0;padding:3px 8px;margin:3px auto 12px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-areas:none;grid-template-columns:auto minmax(0,max-content) auto auto;grid-template-rows:auto auto;grid-auto-rows:0}#chainMap div.node>.nodeClass{grid-area:auto;grid-column:1;grid-row:1}#chainMap div.node>h4.nodeSystem{grid-area:auto;grid-column:2;grid-row:1}#chainMap div.node>.nodeIcons{grid-area:auto;grid-column:3;grid-row:1}#chainMap div.node>.nodeActivity{grid-area:auto;grid-column:4;grid-row:1}#chainMap div.node>.nodeType{grid-area:auto;grid-column:1/5;grid-row:2}#chainMap div.node>.statics{grid-area:auto}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto}#chainMap div.node>h4.nodeSystem{overflow:clip;text-overflow:ellipsis;min-width:min-content}#chainMap div.node>h4.nodeSystem a{white-space:nowrap}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:minmax(0,max-content);grid-template-rows:auto auto auto;grid-auto-rows:0;justify-items:center;align-items:center;row-gap:0;column-gap:0;width:fit-content;min-width:96px;max-width:176px;height:auto!important;padding:4px 10px 5px;margin:3px auto 12px;position:relative;overflow:visible;text-align:center}#chainMap div.node>.nodeClass{grid-column:1;grid-row:1;position:static;margin:0;display:inline-flex;align-items:center;gap:4px;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 5px;font-size:9px}#chainMap div.node>h4.nodeSystem{grid-column:1;grid-row:2;margin:0;padding:0;line-height:16px;font-size:12.5px;font-weight:600;max-width:150px;min-width:min-content;overflow:clip;text-overflow:ellipsis;white-space:nowrap}#chainMap div.node>.nodeType{grid-column:1;grid-row:3;margin:0;padding:0;text-align:center;font-family:var(--font-mono);font-size:10px;line-height:12px;letter-spacing:.06em;text-transform:uppercase;min-height:0;white-space:nowrap}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto auto}#chainMap div.node>.nodeIcons{grid-column:1;grid-row:1;position:static;display:contents}#chainMap div.node>.nodeIcons>div{float:none;display:contents}#chainMap div.node>.nodeIcons>div:first-child{display:inline-flex;align-items:center;position:absolute;top:4px;right:8px;gap:2px}#chainMap div.node>.nodeIcons>div:last-child{display:inline-flex;align-items:center;position:absolute;top:-6px;right:-6px;gap:2px}#chainMap div.node>.nodeIcons .invisible{display:none}#chainMap div.node>.nodeIcons .badge{height:13px;padding:0 5px;font-size:9px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeActivity{position:absolute;left:8px;bottom:-3px;top:auto;right:auto;margin:0;width:auto;height:auto;display:flex;gap:3px;font-size:0;z-index:2}#chainMap div.node>.nodeActivity>span{font-size:7px;line-height:7px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.node>.statics{position:absolute;left:auto;right:6px;top:100%;bottom:auto;margin:-5px 0 0;transform:none;display:flex;justify-content:flex-end;gap:3px;flex-wrap:nowrap;z-index:2}#chainMap div.node>.statics:empty{display:none}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:13px;min-width:17px;padding:0 5px;font-size:9px;line-height:1;box-shadow:0 0 0 2px var(--background)}#chainMap div.loop{display:block;width:fit-content;min-width:0;padding:4px 10px;margin:3px auto 12px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-rows:auto auto;padding:7px 10px 6px;margin:9px auto 12px;min-width:92px}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto}#chainMap div.node>.nodeClass{position:absolute;top:-7px;left:-5px;margin:0;z-index:3}#chainMap div.node>.nodeClass>span{box-shadow:0 0 0 2px var(--background)}#chainMap div.node>h4.nodeSystem{grid-row:1}#chainMap div.node>.nodeType{grid-row:2}#chainMap div.node>.nodeIcons>div:first-child{top:-7px;right:6px}#chainMap div.node>.nodeIcons>div:last-child{top:-7px;right:-6px}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:12px;text-shadow:0 0 3px var(--background)}#chainMap div.node>.nodeActivity{bottom:-4px;left:7px}#chainMap div.node>.statics{margin-top:-6px;right:5px}#chainWidget>#chainParent.content{position:relative}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{padding-top:14px;padding-bottom:7px;margin-top:10px}#chainMap div.node>.nodeClass{top:-7px;left:-5px}#chainMap div.node>.nodeClass>span{height:14px}#chainWidget>#chainParent.content{position:relative!important}#chainMap div.node>.nodeActivity,#chainMap div.node>.nodeClass,#chainMap div.node>.nodeIcons>div,#chainMap div.node>.statics{grid-area:auto;grid-row:auto;grid-column:auto}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{margin-top:8px;margin-bottom:9px}#chainMap div.node>.nodeIcons>div:last-child{top:2px;right:3px;gap:1px}#chainMap div.node>.nodeIcons>div:first-child{top:-6px;right:22px}#chainMap div.node>.nodeIcons .badge{height:12px;padding:0 4px;font-size:8.5px;box-shadow:none}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeIcons [data-icon=user]{padding:0}#chainWidget>#chainParent.content{padding-top:12px!important}#chainMap div.node>.nodeIcons .badge{justify-content:center;min-width:14px;padding:0 4px;box-sizing:border-box;text-align:center} /*# sourceMappingURL=app.min.css.map */ diff --git a/public/css/app.min.css.map b/public/css/app.min.css.map index e3e3e623..0943a623 100644 --- a/public/css/app.min.css.map +++ b/public/css/app.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["_tokens.css","base.css","account.css","chainmap-radial.css","chainmap.css","command-palette.css","comments.css","dialog-admin.css","dialog-mass.css","dialog-options.css","forms.css","gridster.css","icons.css","introjs.css","jbox.css","mask.css","signatures.css","tripwire.css","_override-1-system.css","_override-3-panels.css","_override-4-signature-dialog.css","_override-5-responsive.css","_override-6-system-panel.css","_override-7-map-and-table.css","_override-8-layout.css","_override-9-chain-tabs.css","_override-a-header.css","_override-b-fixes.css","_override-c-polish.css","_override-d-phone.css","_override-e-scale.css","_override-f-dialog.css","_override-g-bars.css","_override-h-nodes.css","_override-i-inline.css","_override-j-type-roles.css","_theme-base.css","_theme-refit.css"],"names":[],"mappings":"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","file":"app.min.css","sourcesContent":["/* ============================================================================\n Design tokens.\n\n Every colour in app/css resolves through one of these. Two families, kept\n deliberately separate:\n\n --n-* Neutral chrome. Flips with the theme.\n --data-* --ui-* --chart-* EVE data semantics: wormhole class, jump-mass\n band, security, loot, status pills, chart\n series. These encode *meaning*, not brand.\n\n The :root block is the dark theme (\"ops floor\"). Its values are identical to\n the literals they replaced, so this extraction does not change dark\n rendering at all.\n\n The light block (\"front office\") inverts the neutral ramp, and darkens the\n 25 data colours that are used as TEXT until they clear 4.5:1 against the\n light panel. Data colours used only as fills are left untouched -- their\n contrast partner is whatever sits on top of them, which is a separate\n question from this ramp.\n\n Brand colours are NOT defined here. A theme file overrides these tokens.\n ========================================================================= */\n\n:root {\n /* neutral ramp -- n-000 darkest .. n-999 lightest */\n --glow-60: rgba(255, 255, 255, .6);\n --n-000: #000000;\n --n-020: #080808;\n --n-050: #111111;\n --n-100: #222222;\n --n-120: #282828;\n --n-200: #333333;\n --n-220: #3b3b3b;\n --n-250: #404040;\n --n-300: #444444;\n --n-400: #555555;\n --n-500: #666666;\n --n-550: #777777;\n --n-560: #7a7a7a;\n --n-600: #888888;\n --n-650: #999999;\n --n-700: #aaaaaa;\n --n-750: #bbbbbb;\n --n-800: #cccccc;\n --n-850: #dddddd;\n --n-870: #ebebeb;\n --n-880: #eeeeee;\n --n-900: #f0f0f0;\n --n-920: #f4f4f4;\n --n-940: #f7f7f7;\n --n-960: #fafafa;\n --n-999: #ffffff;\n --scrim-60: rgba(0, 0, 0, .6);\n --scrim-70: rgba(0,0,0,0.7);\n --scrim-80: rgba(0, 0, 0, .8);\n --scrim-n020: rgba(10, 10, 10, 0.6);\n --scrim-n050: rgba(17, 17, 17, .7);\n --scrim-n120: rgba(40, 40, 40, .9);\n --scrim-n200: rgba(51, 51, 51, .7);\n --shadow-20: rgba(0,0,0,0.2);\n --shadow-20b: rgba(0, 0, 0, 0.2);\n --shadow-25: rgba(0, 0, 0, 0.25);\n --shadow-25b: rgba(0, 0, 0, .25);\n --shadow-30: rgba(0, 0, 0, .3);\n --stroke-n120: rgba(40, 40, 40, 0.8);\n --veil-danger: rgba(255, 0, 0, .3);\n --veil-grey: rgba(120, 120, 120, .1);\n --veil-silver: rgba(192, 192, 192, .3);\n\n /* data semantics */\n --chart-1: #3366cc;\n --chart-2: #dc3912;\n --chart-3: #ff9900;\n --chart-4: #109618;\n --data-alliance: #00a0ff;\n --data-bronze: #e28a0d;\n --data-brown: #744700;\n --data-class-amber: #996600;\n --data-class-blue: #00286e;\n --data-class-blue-deep: #001b47;\n --data-class-cyan: #0070a0;\n --data-class-green: #004400;\n --data-class-green-deep: #003300;\n --data-class-lime: #00aa00;\n --data-class-orange: #8a4117;\n --data-class-orange-deep: #80370d;\n --data-class-red: #881100;\n --data-class-red-deep: #661100;\n --data-class-sky: #3388dd;\n --data-class-temp: #004080;\n --data-class-void: #000810;\n --data-critical: #ff4747;\n --data-danger: #d93627;\n --data-focus-ring: #998800;\n --data-focus-ring-soft: #ff8c0080;\n --data-good: #50d25a;\n --data-info: #4399f0;\n --data-jm-2000kt: #ffb060;\n --data-jm-375kt: #909090;\n --data-jm-5kt: #40e0ff;\n --data-jm-62kt: #90ff90;\n --data-link: #428bca;\n --data-loot-blue: #6060f0;\n --data-loot-gold: #ffc800;\n --data-loot-orange: #f58504;\n --data-loot-pink: #f06090;\n --data-loot-purple: #9060f0;\n --data-loot-red: #f06060;\n --data-magenta: #e06fdf;\n --data-olive: #999900;\n --data-pale-yellow: #ffffbb;\n --data-triglavian: #ff2060;\n --data-warn: #f5b544;\n --ui-amber: #ffb11f;\n --ui-amber-lit: #ffd665;\n --ui-blue: #2b91d9;\n --ui-blue-lit: #5abaff;\n --ui-green: #70a800;\n --ui-green-lit: #95cc2a;\n --ui-red: #b02222;\n --ui-red-lit: #ee2222;\n}\n\n/* Front office. Only tokens that must change are redefined. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n }\n}\n:root[data-theme=\"light\"] {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n}\n","@font-face {\n\tfont-family: 'lucida';\n\tsrc:url('../fonts/lucida.ttf?w81bs6') format('truetype');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n* {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nhtml, body {\n\theight: 100%;\n}\n\nhtml {\n font-size: .6em;\n font-family: Verdana, 'Helvetica Neue', Arial, sans-serif;\n color: var(--n-600);\n line-height: 1.1;\n min-height: 100%;\n}\n\na {\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tcolor: var(--n-800);\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcolor: var(--n-999);\n}\n\nhr { margin: 4px; }\nhr.bar { border-style: solid }\n\ni {\n\tcursor: pointer;\n}\n\ni.disabled {\n\topacity: .4;\n\tcursor: default;\n}\n\n.invisible {\n\tvisibility: hidden;\n}\n\n.hidden {\n\tdisplay: none;\n}\n\n.align-left {\n\tfloat: left;\n}\n\n.align-right {\n\tfloat: right;\n}\n\n.pointer {\n\tcursor: default;\n}\n\n.text-left {\n\ttext-align: left;\n}\n\n.text-right {\n\ttext-align: right;\n}\n\n.text-center {\n\ttext-align: center;\n}\n\ni.active, a.active {\n\tcolor: orange;\n}\n\n/* All of these styles want to be more specific than a normal class selector so the text colour wins */\nbody .wh, body .class-1, body .class-2, body .class-3 {\n\tcolor: var(--data-info);\n}\n\nbody .class-4, body .class-5 {\n\tcolor: var(--data-loot-purple);\n}\n\nbody .class-6 {\n\tcolor: var(--data-loot-pink);\n}\n\nbody .class-12 {\t/* Thera */\n\tcolor: var(--data-loot-gold);\n}\n\nbody .class-15, body .class-16, body .class-17 {\t/* Drifter */\n\tcolor: var(--data-loot-red);\n}\n\nbody .hisec, body .stable, body .frig {\n\tcolor: var(--data-good);\n}\n\nbody .lowsec, body .destab {\n\tcolor: var(--data-loot-orange);\n}\n\nbody .nullsec, body .critical {\n\tcolor: var(--data-critical);\n}\n\nbody .triglavian { color: var(--data-triglavian); }\n\n.blue-loot, .blue-loot .hisec { color: var(--data-loot-blue); }\n\n.jumps {\n\tcolor: var(--chart-1);\n}\n\n.pods {\n\tcolor: var(--chart-2);\n}\n\n.ships {\n\tcolor: var(--chart-3);\n}\n\n.npcs {\n\tcolor: var(--chart-4);\n}\n\n.thermal-icon {\n\tcontent: url(\"../images/th.png\");\n\theight: 16px;\n}\n\n.kinetic-icon {\n\tcontent: url(\"../images/kn.png\");\n\theight: 16px;\n}\n\n.explosive-icon {\n\tcontent: url(\"../images/exp.png\");\n\theight: 16px;\n}\n\n.em-icon {\n\tcontent: url(\"../images/em.png\");\n\theight: 16px;\n}\n\n/* Scrollbar. Body properties are standards-compliant but only work in Firefox.\n-webkit-* works in Chrome/Safari/etc */\n/* We must tell Chrome not to use these or it will disable all the -webkit-scrollbar things - https://stackoverflow.com/questions/77893503 */\n@supports not selector(::-webkit-scrollbar) {\n\tbody {\n\t\t/* Standards - Firefox. Use slightly less contrasty colours because the bar will be wider */\n\t\tscrollbar-width: thin;\n\t\tscrollbar-color: var(--n-300) var(--n-050);\n\t}\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n}\n\n::-webkit-scrollbar-button:start:decrement,\n::-webkit-scrollbar-button:end:increment {\n height: 2em;\n display: none;\n background-color: black;\n}\n\n::-webkit-scrollbar-track { background-color: var(--n-220); }\n::-webkit-scrollbar-thumb {\tbackground-color: var(--n-500);}\n::-webkit-scrollbar-thumb:hover { background-color: var(--n-650);}\n\n::-webkit-scrollbar-corner {\n\tbackground-color: transparent;\n}\n/* ---------- */\n\n::-webkit-input-placeholder {\n color: var(--n-600);\n}\n\n:-moz-placeholder { /* Firefox 18- */\n color: var(--n-600);\n}\n\n::-moz-placeholder { /* Firefox 19+ */\n color: var(--n-600);\n}\n\n:-ms-input-placeholder {\n color: var(--n-600);\n}\n\n@-webkit-keyframes spin {\nfrom { -webkit-transform: rotate(0deg); }\nto { -webkit-transform: rotate(360deg); }\n}\n\n@-moz-keyframes spin {\nfrom { -moz-transform: rotate(0deg); }\nto { -moz-transform: rotate(360deg); }\n}\n\n@-o-keyframes spin {\nfrom { -o-transform: rotate(0deg); }\nto { -o-transform: rotate(360deg); }\n}\n\n@keyframes spin {\n\tfrom { transform: rotate(0deg); }\n\tto { transform: rotate(360deg); }\n}\n\n.transition {\n\t/* -webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransition: 0.3s all ease-out;\n\t-webkit-transition: 0.3s all ease-out;\n\t-moz-transition: 0.3s all ease-out;\n\t-ms-transition: 0.3s all ease-out;\n\t-o-transition: 0.3s all ease-out; */\n}\n\n.scale {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransform: scale(0.9);\n\t-webkit-transform: scale(0.9);\n\t-moz-transform: scale(0.9);\n\t-ms-transform: scale(0.9);\n\t-o-transform: scale(0.9);\n\n\toverflow: hidden;\n}\n\n.blur {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n filter: blur(1px);\n -webkit-filter: blur(1px);\n\t-moz-filter: blur(1px);\n\t-ms-filter: blur(1px);\n\t-o-filter: blur(1px);\n\tfilter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='1');\n}\n","#login {\n\tposition: relative;\n}\n\n#login #panel {\n\tdisplay: none;\n}\n\n#login img {\n border-radius: 3px;\n}\n\n.triangle {\n\tposition: absolute;\n\ttop: -5px;\n\tright: 15px;\n\tborder-left: 5px solid transparent;\n\tborder-right: 5px solid transparent;\n\tborder-bottom: 5px solid var(--n-300);\n}\n\n#login #content {\n\tposition: absolute;\n\ttop: 20px;\n\tright: 0px;\n\n\tfont-size: 1.1em;\n\n\tline-height: normal;\n\tpadding: 5px;\n}\n\n#login #content #track {\n\tborder-right: 1px solid gray;\n\tpadding-right: 2px;\n\tmin-width: 160px;\n}\n\n#login #content #track .tracking-clone {\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n cursor: pointer;\n\topacity: .4;\n transition: all 0.2s ease;\n\n\tmargin-bottom: 2px;\n}\n\n#login #content #track .tracking-clone:hover {\n\tborder-color: var(--n-400);\n opacity: 1;\n}\n\n#login #content #track .tracking-clone.active {\n\tborder-color: darkorange;\n opacity: 1;\n}\n\n#login #content table {\n\ttext-align: right;\n\twidth: 100%;\n}\n\n#login #content table th {\n\ttext-align: right;\n\tpadding-right: 5px;\n}\n\n#login #content table td {\n\ttext-align: left;\n}\n\n#login #content table .text {\n\tpadding: 0 10px 0 3px;\n\twhite-space: nowrap;\n}\n\n#login #content .avatar {\n\theight: 1px;\n\twidth: 1px;\n}\n\n#login #content table td #logout {\n\tfloat: right;\n}\n\n#login #content #error {\n\tcolor: var(--data-critical);\n}\n\n#logo {\n\tcolor: var(--n-800);\n}\n\n#logo > span > div > canvas {\n\tvertical-align: middle;\n}\n\n#login #error {\n\tfont-weight: bold;\n\ttext-align: center;\n}\n\n#link, #account {\n\twhite-space: nowrap;\n\tcolor: var(--n-500);\n}\n\n#link {\n\tvertical-align: top;\n}\n\n#login #logoutTable tbody th {\n\ttext-align: center;\n\tcolor: var(--n-800);\n\tbackground: var(--n-400);\n}\n\n#logoutTable tbody tr td {\n\tvertical-align: top;\n}\n\n#tracking {\n\tdisplay: block;\n\toverflow-y: auto;\n\tmax-height: 332px;\n}\n\n#tracking [data-icon=\"red-giant\"].stable:before {\n\tcolor: var(--data-good);\n}","/* Styles relating to the radial map renderer */\n#chainMap .radial-map .node.top-level {\n\tborder-radius:200px;\n\tpadding: 10px;\n\tborder: 4px var(--data-class-temp) solid;\n\tfont-size: 120%;\n}\n\n#chainMap .radial-map .top-level .nodeIcons {\n top: 0.9em;\n}\n\n.radial-map {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.radial-map .map-chain-wrapper {\n\toverflow:hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin: 0 10px;\n}\n\n.map-outer-container {\n\tposition: relative;\n}\n\n.map-inner-container {\n\tposition: absolute;\n}\n\n.map-inner-container .node-wrapper {\n\tposition:absolute;\n\twidth: 0; height: 0;\n}\n\n#chainMap .node-wrapper > div.node {\n\ttransform: translate(-50%, -50%);\t/* centre around position */\n}\n\n.map-drawing {\n\tposition: absolute;\n}\n\n.temp { border-style: solid; }\t/* Some border properties don't resolve if the element has no border */\n\n/* 'color' is used to cue the aura effect in canvas drawing */\n.temp { border-width: 2px; border-color: var(--data-class-temp); }\n.temp.jm-5kt, #guide .jm-5kt { border-width: 1px; color: var(--data-jm-5kt); }\n.temp.jm-62kt, #guide .jm-62kt { border-width: 3px; color: var(--data-jm-62kt); }\n.temp.jm-375kt, #guide .jm-375kt { border-width: 5px; color: var(--data-jm-375kt); }\n.temp.jm-2000kt, #guide .jm-2000kt { border-width: 7px; color: var(--data-jm-2000kt); }","#chainMap {\n\t-webkit-user-select: none; /* Chrome all / Safari all */\n\t-moz-user-select: none; /* Firefox all */\n\t-ms-user-select: none; /* IE 10+ */\n\n\t/* No support for these yet, use at own risk */\n\t-o-user-select: none;\n\tuser-select: none;\n}\n\n#chainMap .google-visualization-orgchart-table * {\n\tpadding: 0px;\n}\n\n#chainMap .google-visualization-orgchart-table {\n\tpadding: 0 5px;\n\tpadding-right: 0px;\n\twidth: 1px;\n\tmargin: 0 auto;\n}\n\n#chainMap td.node {\n\twhite-space: nowrap;\n\ttext-align: center;\n\tvertical-align: middle;\n\tfont-family: verdana;\n\tfont-size: 1em;\n\tcursor: default;\n\tline-height: 1;\n\tborder: none;\n\tbackground: none;\n}\n\n#chainMap div.node {\n\theight: 30px;\n\tmin-width: 5em;\n\tdisplay: inline-block;\n\tmargin-left: auto; margin-right: auto;\t/* centre horizontally within cell */\n\tborder: 2px solid var(--n-200);\n border-top-left-radius: 15px 50px;\n border-top-right-radius: 15px 50px;\n\tborder-bottom-left-radius: 15px 50px;\n border-bottom-right-radius: 15px 50px;\n\n\tbackground-color: var(--n-050);\n\tbackground: linear-gradient(var(--n-100), var(--n-050));\n\n\tbox-shadow: 2px 2px 8px var(--shadow-20);\n}\n\n#chainMap div.node.third-party {\n\tbackground: var(--n-050);\n\tfont-style: italic;\n\tfilter: saturate(50%) brightness(80%)\n}\n\n#chainMap /*td.node >*/ div.node.loop {\t/* more specific than others nearby, because we want these over flares/current node */\n\tmin-width: auto;\n/*\twidth: 30px;*/\n\tborder-radius: 100px;\n\tborder-color: var(--data-class-cyan);\n}\n\n#chainMap div.loop {\t/* less specific, so flares/current node works over this */\n\tbackground: var(--data-class-void);\n}\n\ndiv.loop .nodeIcons, div.loop .nodeType, div.loop .statics, div.loop .nodeActivity {\n\tdisplay:none;\n}\n\t\n#chainMap .currentNode > div.node {\n\tborder-color: var(--data-class-blue);\n\tbackground: var(--data-class-blue-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-blue-deep) 0%, var(--data-class-blue) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-blue-deep)), to(var(--data-class-blue)));\n}\n\n#chainMap div.redNode.node {\n\tborder-color: var(--data-class-red);\n\tbackground: var(--data-class-red-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-red-deep) 0%, var(--data-class-red) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-red-deep)), to(var(--data-class-red)));\n}\n\n#chainMap div.yellowNode.node {\n\tborder-color: var(--data-class-orange);\n\tbackground: var(--data-class-orange-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-orange-deep) 0%, var(--data-class-orange) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-orange-deep)), to(var(--data-class-orange)));\n}\n\n#chainMap div.greenNode.node {\n\tborder-color: var(--data-class-green);\n\tbackground: var(--data-class-green-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-green-deep) 0%, var(--data-class-green) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-green-deep)), to(var(--data-class-green)));\n}\n\n#chainMap div.node.frig-chain {\n\tborder-color: var(--data-class-lime);\n\tborder-width: 1px;\n}\n\n#chainMap .node a {\n\tfont-weight: normal;\n}\n\n#chainMap span.badge {\n\tdisplay: inline-block;\n\tcolor: var(--n-750);\n\tbackground-color: var(--n-100);\n\tbox-shadow: 0px 0px 6px 2px var(--n-050);\n\tfont-family: monospace;\n\tpadding: 2px 2px;\n\tmin-width: 8px;\n\tfont-size: 9px;\n\tfont-weight: 300;\n\tline-height: 1;\n\ttext-align: center;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\tborder-radius: 10px;\n}\n\n#chainMap .nodeIcons {\n\tposition: absolute;\n\ttop: 0.1em;\n\twidth: 50px;\n\theight: 0;\t/* so it doesn't overlay the class text for tips */\n\tright: 50%;\n\tmargin-right: -25px;\n}\n\n#chainMap [data-nodeid] {\n\tposition: relative;\n\ttext-align: center;\n}\n\n#chainMap [data-nodeid] h4 {\n\tfont-weight: normal;\n\twhite-space: nowrap;\n}\n\n#chainMap .nodeType {\n\ttext-transform: uppercase;\n}\n\n#chainMap .nodeActivity {\n\tposition: absolute;\n\tbottom: 3px;\n\tright: 50%;\n\twidth: 50px;\n\theight: 1px;\n\tmargin-right: -25px;\n\tpointer-events: none;\t/* so it doesn't overlay the link */\n}\n\n#chainMap .nodeActivity * { pointer-events: initial }\n\n#chainMap .statics {\n\tposition: absolute;\n\tbottom: -1.5em;\n}\n\n#chainMap .statics span {\n\tdisplay: inline-block;\n\tbackground: navy;\n\tborder-radius: 0 0 50px 50px;\n\twidth: 8px;\n\theight: 10px;\n\tborder: 2px solid var(--n-200);\n}\n\n#chainMap .statics span:nth-child(2) {\n\tmargin-right: 10px;\t/* To leave a gap for the connection when 3+ statics */\n}\n\n#chainMap i[data-icon=\"user\"] {\n\tpadding: 3px;\n\tcursor: default;\n}\n\n#chainMap i.whEffect {\n\tpadding-left: 3px;\n\tcursor: default;\n}\n\n#chainMap i.nodeActivity > span {\n\tpadding: 2px;\n}\n\n/* These styles need the specific selectors because they need to override presets */\n.critical, #chainMap .critical, #guide .critical { border-color: var(--data-critical); }\n.destab, #chainMap .destab, #guide .destab { border-color: var(--data-warn); }\n.gate, #chainMap .gate, #guide .gate { border-color: darkgray; }\n.eol, #chainMap .eol, #guide .eol { border-style: dashed; }\n.frig, #chainMap .frig, #guide .frig { border-color: var(--data-good); }\n\n.tab {\n\tdisplay: inline-block;\n\tmin-width: 75px;\n\tborder-bottom: 2px solid var(--n-200);\n\tcursor: pointer;\n\tvertical-align: top;\n\ttext-align: right;\n}\n\n.tab:hover {\n\tborder-bottom-color: var(--n-500);\n}\n\n.tab.current {\n\tborder-bottom-color: var(--data-info);\n}\n\n.tab .name {\n\tpadding-left: 4px;\n\tfloat: left;\n}\n\n.tab .closeTab, .tab .editTab {\n\topacity: 0;\n\tvisibility: hidden;\n\tfloat: right;\n\tfont-size: .8em;\n\tpadding: 2px 2px 0 4px;\n\n\ttransition: opacity .15s ease-out;\n\t-moz-transition: opacity .15s ease-out;\n\t-webkit-transition: opacity .15s ease-out;\n\t-o-transition: opacity .15s ease-out;\n}\n\n.tab:hover .closeTab, .tab.current:hover .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#guide td:first-child {\n\twidth: 30px;\n}\n\n#guide div {\n\twidth: 20px;\n\tborder-width: 0;\n\tborder: 2px solid var(--data-class-sky);\n\tborder-top-style: none !important;\t/* so we only get one border even when border style is overridden by eol */\n\tborder-left-style: none !important;\n\tborder-right-style: none !important;\n}\n\n#guide div.frig { border-width: 1px; }\n#guide div.aura { box-shadow: 0 0 5px 2px; }\n\n[data-icon=\"user\"] + .badge {\n\tposition: absolute;\n\ttop: -5px;\n\tright: -12px;\n}\n\ntd.google-visualization-orgchart-linenode[data-signatureid] {\n\tcursor: pointer;\n}\n\n/* Grid lines and flare text */\n#chainGrid .grid-default { color: var(--n-550);}\n.red { color: var(--data-critical);}\n.yellow { color: var(--data-warn);}\n.green { color: var(--data-good);}\n\n#chainGrid {\n\tposition: absolute;\n\twidth: 100%;\n\tz-index: -10;\n\tmargin-left: -3px;\t\n}\n\n#chainGrid .top td {\n\theight: 18px;\n}\n\n#chainGrid .line td {\n\theight: 28px;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#chainGrid .space td {\n\theight: 13px;\n}\n\n#chainGrid .red td {\n\tborder-bottom-color: var(--data-critical);\n}\n\n#chainGrid .yellow td {\n\tborder-bottom-color: var(--data-warn);\n}\n\n#chainGrid .green td {\n\tborder-bottom-color: var(--data-good);\n}\n\n#chainTabs {\n\tpadding-right: 10px;\n}\n","/* Command palette and the shortcuts overlay.\n Colours come from the token layer, so this follows whatever theme is loaded\n rather than hard-coding a palette. */\n\n#cmd-palette,\n#cmd-help {\n\tposition: fixed;\n\tinset: 0;\n\tz-index: 10000;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: center;\n\tpadding-top: 12vh;\n\tbackground: var(--scrim-60);\n}\n\n#cmd-palette.hidden,\n#cmd-help.hidden { display: none; }\n\n#cmd-palette .cmd-box,\n#cmd-help .cmd-box {\n\twidth: min(560px, 92vw);\n\tbackground: var(--n-100);\n\tborder: 1px solid var(--n-300);\n\tbox-shadow: 0 12px 40px var(--scrim-70);\n\tfont-size: 1.25em;\n}\n\n#cmd-input {\n\tdisplay: block;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\tpadding: 12px 14px;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--n-300);\n\tbackground: transparent;\n\tcolor: var(--n-999);\n\tfont-family: inherit;\n\tfont-size: 1em;\n\toutline: none;\n}\n\n#cmd-input::placeholder { color: var(--n-600); }\n\n#cmd-list {\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 4px 0;\n\tmax-height: 46vh;\n\toverflow-y: auto;\n}\n\n#cmd-list li {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: 10px;\n\tpadding: 7px 14px;\n\tcursor: pointer;\n\tcolor: var(--n-800);\n}\n\n#cmd-list li.sel { background: var(--n-200); color: var(--n-999); }\n\n/* Listed but unavailable -- undo with nothing to undo, edit with nothing\n selected. Shown rather than hidden so the palette is a stable map of what\n exists. */\n#cmd-list li.off { opacity: .4; cursor: default; }\n\n#cmd-list li.danger.sel { background: var(--data-critical); color: var(--n-050); }\n\n#cmd-list .cmd-label { flex: 1 1 auto; }\n\n#cmd-list .cmd-group,\n#cmd-list .cmd-keys {\n\tflex: 0 0 auto;\n\tfont-size: .8em;\n\tcolor: var(--n-600);\n\ttext-transform: uppercase;\n\tletter-spacing: .06em;\n}\n\n#cmd-list li.sel .cmd-group,\n#cmd-list li.sel .cmd-keys { color: var(--n-750); }\n\n#cmd-list .cmd-keys {\n\ttext-transform: none;\n\tletter-spacing: 0;\n\tborder: 1px solid var(--n-400);\n\tborder-radius: 2px;\n\tpadding: 1px 5px;\n}\n\n#cmd-list .cmd-empty { color: var(--n-600); cursor: default; }\n\n.cmd-foot {\n\tdisplay: flex;\n\tgap: 16px;\n\tpadding: 8px 14px;\n\tborder-top: 1px solid var(--n-300);\n\tfont-size: .78em;\n\tcolor: var(--n-600);\n}\n\n.cmd-foot b { color: var(--n-800); font-weight: normal; }\n\n/* Shortcuts overlay */\n#cmd-help .cmd-box { padding: 18px 20px; }\n#cmd-help h2 { margin: 0 0 12px; color: var(--n-999); font-size: 1.1em; }\n#cmd-help table { border-collapse: collapse; width: 100%; }\n#cmd-help th {\n\ttext-align: left;\n\tpadding: 4px 14px 4px 0;\n\twhite-space: nowrap;\n\tcolor: var(--n-999);\n\tfont-weight: normal;\n}\n#cmd-help td { padding: 4px 0; color: var(--n-800); }\n#cmd-help p { margin: 14px 0 0; color: var(--n-600); font-size: .9em; }\n#cmd-help b { color: var(--n-999); }\n",".cke .cke_button__source_label {\n\tdisplay: none;\n}\n\n.cke .cke_maximized {\n\tbackground: black;\n}\n\n.comment {\n\tborder-bottom: 1px solid var(--n-300);\n}\n\n.commentSticky {\n\tpadding-left: 3px;\n}\n\n.commentToolbar .commentControls::before {\n\tdisplay: inline-block;\n\tcontent: '';\n\theight: 100%;\n\tvertical-align: bottom;\n}\n\n.commentToolbar, .commentFooter {\n\tfont-size: .9em;\n\tcolor: var(--n-650);\n}\n\n.commentToolbar {\n\theight: 26px;\n}\n\n.commentFooter {\n\tpadding: 3px;\n}\n\n.commentControls {\n\tfloat: right;\n\theight: 100%;\n}\n\n.commentStatus, .commentTitle {\n\tfloat: left;\n\theight: 100%;\n}\n\n.commentModified {\n\tdisplay: block;\n\tpadding-top: 3px;\n\tpadding-bottom: 3px;\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.commentToolbar .commentControls, .commentSticky {\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.comment:hover .commentControls, .comment:hover .commentModified, .comment:hover .commentSticky, .commentSticky.active {\n\topacity: 1;\n}\n\n.commentBody {\n\tcolor: var(--n-800);\n\tpadding: 8px;\n\t//white-space: pre-wrap; /* CSS3 */\n\t//white-space: -moz-pre-wrap; /* Firefox */\n\t//white-space: -pre-wrap; /* Opera <7 */\n\t//white-space: -o-pre-wrap; /* Opera 7 */\n\tword-wrap: break-word; /* IE */\n}\n\n.commentBody a {\n\tcolor: darkorange;\n}\n\n.commentBody ol, .commentBody ul, .commentBody dl {\n\t/* IE7: reset rtl list margin. (#7334) */\n\t*margin-right: 0px;\n\t/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/\n\tpadding: 0 40px;\n}\n","#dialog-admin .menu {\n\twidth: 100px;\n\theight: 100%;\n\tfloat: left;\n}\n\n#dialog-admin .window {\n\theight: 100%;\n\tmargin-left: 100px;\n\toverflow: auto;\n}\n\n#dialog-admin .menu li {\n\tlist-style-type: none;\n}\n\n#dialog-admin .menu li a {\n\tcolor: var(--n-500);\n}\n\n#dialog-admin .menu li a:focus {\n\toutline: none;\n}\n\n#dialog-admin .menu li.active a {\n\tcolor: orange;\n}\n\n#dialog-admin #userTable th {\n\ttext-align: left;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#dialog-admin #userTable tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-700);\n}\n\n#dialog-admin .tablesorter .tablesorter-header i:before, #dialog-admin .tablesorter .sortable i:before {\n\tfloat: none;\n}\n\n#dialog-admin .tablesorter .headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerAsc {\n\tcolor: orange;\n}\n\n#dialog-admin .tablesorter .headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerDesc {\n\tcolor: orange;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .menu {\n\tmargin-right: 6px;\n\tborder-right: 1px solid var(--n-700);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window [data-window] {\n\theight: 100%;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window table tbody tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-650);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .ui-dialog-traypane {\n\tmargin-left: 120px;\n\tmargin-top: 8px;\n\tfont-size: 16px;\n\tcolor: var(--n-200);\n}\n","/* Hide rows based on selection */\n#dialog-mass:has(input[value='all']:checked) tr#small-mass,\n#dialog-mass:has(input[value='all']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='all']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='cruiser']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='cruiser']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='cruiser']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Medium,\n#dialog-mass:has(input[value='battleship']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='capital']:checked) tr.mass-Small, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Medium, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Large { display: none }\n\n/* Mod selectors */\n.inactive { opacity: 0.5 }\n\n/* Table alignment and spacing */\n#massTableContainer {\n\ttext-wrap: nowrap;\n\tmargin-top: 1em;\n\tmax-height: 200px;\n\toverflow-y: auto;\n}\n\n#massTable td:nth-child(1) {\n\tmin-width: 12em;\n}\n\n#massTable td:nth-child(2) {\n\tmin-width: 2em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(3) {\n\twidth: 12em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(4), #massTable th:nth-child(4) {\n\twidth: 8em;\n\ttext-align: right;\n}\n\n#massTable td:nth-child(5) {\n\twidth: 14em;\n\ttext-align: right;\n}\n","#dialog-options input[type=\"radio\"] + label {\n\tvertical-align: top;\n}\n\ndiv.ui-slider { display: inline-block; width: calc(75% - 3px); margin-right: 3px }\n\n#dialog-options input[type=\"text\"], #dialog-options input[type=\"password\"], #dialog-options select { width: 75% }\n\n#dialog-options label[for=uiscale-slider] {\n padding: 0 8px;\n}\n\n#dialog-editMask label {\n\twidth: 100%;\n\tmargin-left: -5px;\n}\n\n#dialog-EVEsearch #EVESearchResults {\n\tmax-height: 320px;\n\toverflow: auto;\n\tpadding-left: 5px;\n padding-right: 10px;\n}\n\n#EVESearchResults label {\n\twidth: 100%;\n\tmargin-left: -5px;\n\topacity: 1;\n}\n\n.optionsTable th {\n\ttext-align: left;\n}\n\n.optionsTable td {\n\ttext-align: right;\n}\n\ntr.line td, tr.line th {\n\tborder-bottom: 1px solid var(--n-400);\n}\n\n.optionsTable tr {\n\theight: 2em;\n}\n\n.ui-accordion .ui-accordion-content {\n\tpadding: 0.5em;\n\tbackground: none;\n\tborder-color: var(--n-050);\n}\n\n.ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n}\n\n#masks {\n\ttext-align: left;\n\tpadding-left: 10px;\n}\n\ndiv.maskCategory {\n\tmin-height: 80px;\n\tposition: relative;\n}\n\ndiv.maskCategoryLabel {\n\tposition: absolute;\n\ttop: 80px;\n\tleft: -12px;\n\twidth: 80px;\n\ttext-align: center;\n\tfont-weight: bold;\n\n\t-ms-transform: rotate(-90deg);\n\t-webkit-transform: rotate(-90deg);\n\ttransform: rotate(-90deg);\n\n\t-ms-transform-origin: left top 0;\n\t-webkit-transform-origin: left top 0;\n\ttransform-origin: left top 0;\n}\n","input[type=\"text\"], input[type=\"password\"], select, textarea {\n background-image: linear-gradient(to bottom, var(--n-000) 0%, var(--n-100) 80%, var(--n-300) 100%);\n\n border: none;\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n -ms-border-radius: 3px;\n -o-border-radius: 3px;\n border-radius: 3px;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 2px;\n\n transition: all 0.2s linear;\n color: var(--n-750);\n font-weight: bold;\n position: relative;\n\t\n\toutline-color: var(--data-focus-ring);\n\toutline-width: thin;\n}\n\noption { background-color: var(--n-100); } /* to align with gradient on the select */\n\n*:focus-visible { outline-style: inset; outline-offset: 0 }\n\ninput[type=\"button\"], input[type=\"submit\"], .ui-button.ui-widget {\n\tfont-family: Verdana;\n\n\t-webkit-appearance: none;\n\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\t-ms-border-radius: 4px;\n\t-o-border-radius: 4px;\n\tborder-radius: 4px;\n\n\tbackground-image: linear-gradient(var(--n-300) 0, var(--n-100) 20%, var(--n-000));\n\n\t-webkit-background-clip: padding-box;\n\t-o-background-clip: padding-box;\n\tbackground-clip: padding-box;\n\n\tborder: 1px solid;\n\tborder-color: var(--n-400) var(--n-200) var(--n-000);\n\n\tcolor: var(--n-750);\n\tfont-weight: bold;\n\tfont-size: 1em;\n\ttext-decoration: none;\n\n\tmargin: 0;\n\tpadding: 0.4em 1.4em;\n\twidth: auto;\n\n\tcursor: pointer;\n\toutline: 0;\n\tvertical-align: top;\n\tdisplay: inline-block;\n\toverflow: visible;\n}\n\ninput[type='radio'], input[type='checkbox'] {\n\tvertical-align: middle;\n}\n\ninput[type=\"button\"]:not([disabled]):focus, input[type=\"submit\"]:not([disabled]):focus, .ui-button:focus:not([disabled]) {\n\tborder: 1px solid darkorange;\n}\n\ninput[type=\"button\"]:not([disabled]):hover, input[type=\"submit\"]:not([disabled]):hover, .ui-button:hover:not([disabled]) {\n\tbackground-image: linear-gradient(var(--n-400) 0, var(--n-120) 20%, var(--n-000));\n}\n\ninput[type=\"button\"]:not([disabled]):active, input[type=\"submit\"]:not([disabled]):active, .ui-button:active:not([disabled]) {\n\tcolor: var(--n-800);\n\n\tbackground-image: linear-gradient(var(--n-300), var(--n-550));\n\n\tbox-shadow: inset var(--shadow-25b) 0 1px 2px 0;\n\n\tborder-color: var(--n-650) var(--n-750) var(--n-850);\n}\n\ninput[disabled], a[disabled] {\n\topacity: .4;\n\tcursor: default;\n}\n\ninput.selector, input.mini-selector {\n\twidth: 0; opacity: 0;\t/* Don't use display:none because it makes it not be keyboard accessible */\n}\n\ninput.selector+label img {\n border-radius: 3px;\n\n\twidth: 64px;\n\theight: 64px;\n}\n\ninput.selector+label .selector_label {\n\tposition: absolute;\n\tbottom: 1px;\n\tleft: 1px;\n\tpadding: 1px 3px;\n\tmargin-right: 1px;\n\tcolor: var(--n-800);\n\tfont-size: 0.8em;\n\tbackground: var(--scrim-70);\n\n border-radius: 3px;\n}\n\ninput.selector+label, input.mini-selector+label, .quick-select {\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 3px;\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n\n\tcursor: pointer;\n\topacity: .4;\n\ttransition: all 0.2s ease;\n}\n\n.quick-select {\n\tcolor: var(--n-700);\n\tbackground: none;\n}\n\ninput.selector+label {\n\tvertical-align: top;\n\tmin-height: 64px;\n\tmin-width: 64px;\n\tmargin: 3px 3px;\n}\n\ninput.mini-selector+label {\n\tmargin: 3px -3px;\n\ttop: -1px;\n}\n\ninput.selector+label:hover, input.mini-selector+label:hover, .quick-select:hover {\n\tborder-color: var(--data-class-amber);\n\topacity: 1;\n}\n\ninput.selector:checked+label, input.mini-selector:checked+label {\n\tborder-color: darkorange;\n\topacity: 1;\n}\n\ninput.selector:focus-visible+label, input.mini-selector:focus-visible+label, .quick-select:focus-visible {\n\toutline-style: inset;\n outline-offset: 1px;\n outline-color: var(--data-focus-ring-soft);\n outline-width: 1px;\n}\n\ninput.selector+label .info {\n\tdisplay: inline-block;\n\tmargin-left: 5px;\n\tvertical-align: top;\n\tfont-weight: normal;\n\tfont-size: 0.9em;\n}\n\ninput.selector:checked+label .info {\n\tdisplay: inline-block;\n}\n\ninput[type=checkbox]:not(.selector) + label {\n\tmargin-left: 4px;\n\tvertical-align:top;\n\tcursor:pointer;\n}\n\ninput[type='radio'], input[type='checkbox'] {\tfilter: invert(1);}\ninput[type='checkbox'] { accent-color: var(--n-850); }",".gridster > ul {\n\t//background: var(--scrim-80);\n\tlist-style-type: none;\n}\n\n.gridster > li {\n overflow: hidden;\n}\n\n.controls i, .controls span.control {\n\tcursor: pointer;\n}\n\n.toggle-panel {\n\tposition: absolute;\n background: var(--n-020);\n border: 1px var(--n-250) solid;\n padding: 3px;\n}\n\n.gridster li div.content {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 5px;\n\tbottom: 5px;\n\tleft: 5px;\n\n\toverflow: auto;\n}\n\n.gridster li .controls + .content {\n\ttop: 18px;\n}\n\n.gridster {\n\tvisibility: hidden;\n margin: 0 auto;\n padding: 50px 0 140px 0;\n\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n -webkit-transition: opacity .6s;\n -moz-transition: opacity .6s;\n -o-transition: opacity .6s;\n -ms-transition: opacity .6s;\n transition: opacity .6s;\n}\n\n.gridster > * {\n margin: 0 auto;\n}\n\n.gridster-transition {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\t-webkit-transition: height .4s, width .4s;\n -moz-transition: height .4s, width .4s;\n -o-transition: height .4s, width .4s;\n -ms-transition: height .4s, width .4s;\n transition: height .4s, width .4s;\n}\n\n.gridster .gs-w {\n z-index: 2;\n position: absolute;\n}\n\n.gridster .gs-w {\n //background: var(--veil-grey);\n background: var(--scrim-60);\n}\n\n.gridster .gs-w:hover .grid-resize-both {\n\topacity: 1;\n}\n\n.gridster .grid-resize {\n\tposition: absolute;\n\tz-index: 1;\n}\n\n.gridster .grid-resize-both {\n width: 30px;\n height: 30px;\n bottom: -18px;\n right: -18px;\n cursor: se-resize;\n z-index: 20;\n opacity: 0;\n color: var(--n-750);\n}\n\n.gridster .gs-resize-handle-both:before {\n\tcontent: \"\\e018\";\n}\n\n.gridster .player {\n background: var(--veil-silver);\n}\n\n.gridster .preview-holder {\n border: none;\n background: var(--veil-danger);\n}\n","@font-face {\n\tfont-family: 'icon';\n\tsrc:url('../fonts/tripwire.eot?w81bs6');\n\tsrc:url('../fonts/tripwire.eot?#iefixw81bs6') format('embedded-opentype'),\n\t\turl('../fonts/tripwire.woff?w81bs6') format('woff'),\n\t\turl('../fonts/tripwire.ttf?w81bs6') format('truetype'),\n\t\turl('../fonts/tripwire.svg?w81bs6#icon') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n/* Use the following CSS code if you want to use data attributes for inserting your icons */\n[data-icon] {\n\tfont-family: 'icon';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n[data-icon]:hover {\n\ttext-decoration: none;\n}\n\n[data-icon=\"undo\"]:before {\n\tcontent: \"\\e60e\";\n}\n[data-icon=\"redo\"]:before {\n\tcontent: \"\\e612\";\n}\n[data-icon=\"move-horizontal\"]:before {\n\tcontent: \"\\e600\";\n}\n[data-icon=\"move-vertical\"]:before {\n\tcontent: \"\\e601\";\n}\n[data-icon=\"tripwire-logo\"]:before {\n\tcontent: \"\\e602\";\n}\n[data-icon=\"edit\"]:before {\n\tcontent: \"\\e609\";\n}\n[data-icon=\"pin\"]:before {\n\tcontent: \"\\e60a\";\n}\n[data-icon=\"plus-circle\"]:before {\n\tcontent: \"\\e60b\";\n}\n[data-icon=\"minus-circle\"]:before {\n\tcontent: \"\\e60c\";\n}\n[data-icon=\"times-circle\"]:before {\n\tcontent: \"\\e60d\";\n}\n[data-icon=\"check\"]:before {\n\tcontent: \"\\f00c\";\n}\n[data-icon=\"times\"]:before {\n\tcontent: \"\\f00d\";\n}\n[data-icon=\"plus\"]:before {\n\tcontent: \"\\f067\";\n}\n[data-icon=\"minus\"]:before {\n\tcontent: \"\\f068\";\n}\n[data-icon=\"eye\"]:before {\n\tcontent: \"\\e000\";\n}\n[data-icon=\"pulsar\"]:before {\n\tcontent: \"\\e001\";\n\tcolor: var(--data-link);\n}\n[data-icon=\"connection\"]:before {\n\tcontent: \"\\e002\";\n}\n[data-icon=\"settings\"]:before {\n\tcontent: \"\\e003\";\n}\n[data-icon=\"magnetar\"]:before {\n\tcontent: \"\\e004\";\n\tcolor: var(--data-magenta);\n}\n[data-icon=\"wolf-rayet\"]:before {\n\tcontent: \"\\e005\";\n\tcolor: var(--data-bronze);\n}\n[data-icon=\"portrait\"]:before {\n\tcontent: \"\\e006\";\n}\n[data-icon=\"landscape\"]:before {\n\tcontent: \"\\e007\";\n}\n[data-icon=\"erase\"]:before {\n\tcontent: \"\\e008\";\n}\n[data-icon=\"lock-open\"]:before {\n\tcontent: \"\\e009\";\n}\n[data-icon=\"lock\"]:before {\n\tcontent: \"\\e00a\";\n}\n[data-icon=\"user\"]:before {\n\tcontent: \"\\e00b\";\n}\n[data-icon=\"red-giant\"]:before {\n\tcontent: \"\\e00c\";\n\tcolor: red;\n}\n[data-icon=\"search\"]:before {\n\tcontent: \"\\e00d\";\n}\n[data-icon=\"star-empty\"]:before {\n\tcontent: \"\\e00e\";\n}\n[data-icon=\"star\"]:before {\n\tcontent: \"\\e00f\";\n}\n[data-icon=\"blackhole\"]:before {\n\tcontent: \"\\e010\";\n\tcolor: var(--n-900);\n}\n[data-icon=\"fullscreen\"]:before {\n\tcontent: \"\\e011\";\n}\n[data-icon=\"fullscreen-exit\"]:before {\n\tcontent: \"\\e012\";\n}\n[data-icon=\"home\"]:before {\n\tcontent: \"\\e013\";\n}\n[data-icon=\"key\"]:before {\n\tcontent: \"\\e014\";\n}\n[data-icon=\"alert\"]:before {\n\tcontent: \"\\e015\";\n}\n[data-icon=\"help\"]:before {\n\tcontent: \"\\e016\";\n}\n[data-icon=\"resize\"]:before {\n\tcontent: \"\\e017\";\n}\n[data-icon=\"info\"]:before {\n\tcontent: \"\\e018\";\n}\n[data-icon=\"tree\"]:before {\n\tcontent: \"\\e019\";\n}\n[data-icon=\"anchor\"]:before {\n\tcontent: \"\\e020\";\n}\n[data-icon=\"prop-mod\"]:before {\n\tcontent: \"\\e021\";\n}\n[data-icon=\"follow\"]:before {\n\tcontent: \"\\e60f\";\n}\n[data-icon=\"viewing\"]:before {\n\tcontent: \"\\e610\";\n}\n[data-icon=\"cataclysmic-variable\"]:before {\n\tcontent: \"\\e611\";\n\tcolor: var(--data-pale-yellow);\n}\n[data-icon=\"layout\"]:before {\n\tcontent: \"\\e603\";\n}\n[data-icon=\"auto\"]:before {\n\tcontent: \"\\e604\";\n}\n[data-icon=\"check-on\"]:before {\n\tcontent: \"\\e605\";\n}\n[data-icon=\"check-off\"]:before {\n\tcontent: \"\\e606\";\n}\n[data-icon=\"radio-off\"]:before {\n\tcontent: \"\\e607\";\n}\n[data-icon=\"radio-on\"]:before {\n\tcontent: \"\\e608\";\n}\n[data-icon=\"trash\"]:before {\n\tcontent: \"\\e9ad\";\n\tvertical-align: text-top;\n}\n[data-icon=\"sort\"]:before {\n\tcontent: \"\\f0dc\";\n}\n[data-icon=\"sort-desc\"]:before {\n\tcontent: \"\\f0dd\";\n}\n[data-icon=\"sort-asc\"]:before {\n\tcontent: \"\\f0de\";\n}\n",".introjs-helperLayer {\n background-color: var(--n-400);\n}\n\na.introjs-button:hover, a.introjs-skipbutton:hover {\n color: var(--n-560);\n}\n",".validation-tooltip .jBox-container, .validation-tooltip .jBox-pointer:after {\n\tbackground: var(--data-danger);\n\tcolor: white;\n\tborder: none;\n\tfont-weight: bold;\n\tfont-size: 1.2em;\n\tpadding: 3px;\n}\n\n.jBox-container {\n\tbackground: var(--n-200);\n\tcolor: var(--n-800);\n\tmin-height: 20px;\n}\n\n.jBox-content {\n\tpadding: 4px 5px;\n}\n\n/* Pointer */\n\n.jBox-pointer-right { right: 2px; }\n\n.jBox-pointer:after {\n\tbackground: var(--n-200);\n}\n\n/* jBox Notice */\n\n.jBox-Notice .jBox-container {\n border-radius: 3px;\n\tbox-shadow: 0 0 3px var(--n-000);\n\n\tcolor: var(--n-999);\n\tfont-size: 1.1em;\n\ttext-shadow: 0 -1px 0 var(--n-000);\n\tbackground: var(--n-200);\n\tbackground-image: linear-gradient(to bottom, var(--n-300), var(--n-100));\n}\n\n.jBox-Notice .jBox-content {\n\tpadding: 6px 10px;\n}\n\n.jBox-Notice .jBox-title {\n\tpadding: 8px 20px 0;\n}\n\n.jBox-Notice-color .jBox-container {\n\ttext-shadow: 0 -1px 0 var(--shadow-30);\n}\n\n.jBox-Notice-gray .jBox-container {\n\tcolor: var(--n-500);\n\ttext-shadow: 0 1px 0 var(--n-999);\n\tbackground: var(--n-920);\n\tbackground-image: linear-gradient(to bottom, var(--n-960), var(--n-900));\n}\n\n.jBox-Notice-red .jBox-container {\n\tbackground: var(--ui-red);\n\tbackground-image: linear-gradient(to bottom, var(--ui-red-lit), var(--ui-red));\n}\n\n.jBox-Notice-green .jBox-container {\n\tbackground: var(--ui-green);\n\tbackground-image: linear-gradient(to bottom, var(--ui-green-lit), var(--ui-green));\n}\n\n.jBox-Notice-blue .jBox-container {\n\tbackground: var(--ui-blue);\n\tbackground-image: linear-gradient(to bottom, var(--ui-blue-lit), var(--ui-blue));\n}\n\n.jBox-Notice-yellow .jBox-container {\n\tcolor: var(--data-brown);\n\ttext-shadow: 0 1px 0 var(--glow-60);\n\tbackground: var(--ui-amber);\n\tbackground-image: linear-gradient(to bottom, var(--ui-amber-lit), var(--ui-amber));\n}\n\n.jBox-Notice-yellow .jBox-container a {\n\tcolor: var(--n-650);\n}\n",".mask .corporate { color: green }\n.mask .alliance { color: var(--data-alliance);display: inline-block;transform: scaleY(-1) translateY(2px); }\t/* need the block to make the transform work */\n.mask i { padding-right: 2px }\n\n#mask-menu a { display: block }\n\n/* Overlays etc on the mask panel */\n#masks label > img { margin-top: 3px; }\n#masks label { height: 69px; }\n.source_bar {\n position: absolute;\n top: 0; left: 0;\n\twidth: 100%;\n\theight: 3px;\n color: var(--n-800);\n font-size: .8em;\n\tborder-radius: 3px 3px 0 0;\n}\n\n.source_bar.global { background: var(--n-550) }\n.source_bar.personal { background: var(--n-800) }\n.source_bar.corporate { background: green }\n.source_bar.alliance { background: var(--data-alliance) }\n\n.icon_bar {\n position: absolute;\n top: 3px; right: 0;\n}\n\n.icon_bar .icon {\n\tborder-radius: 1em;\n\topacity: 0.7;\n\tfont-size: 0.85em;\n\tpadding: 0.15em;\n\theight: 1em;\n\twidth: 1em;\n\tdisplay: inline-block;\n\ttext-align: center;\n\ttext-decoration: none;\n}\n\n.icon_bar .icon:hover, .icon_bar .icon:focus {\n\topacity: 1;\n}\n\n.icon_bar .closeIcon { background: maroon }\n.icon_bar .joinIcon { background: green }\n\n#mask-explanation p { margin: 0.5em 0; }","html .ui-selectmenu-menu li a, html .ui-selectmenu-status {\n\tpadding: 0em 1em 0em .5em;\n\tfont-weight: bold;\n\ttext-align: left;\n}\n\nhtml a.ui-selectmenu:hover {\n\ttext-decoration: none;\n}\n\nhtml .ui-selectmenu {\n\theight: auto;\n\t//margin-bottom: .2em;\n\t//padding: 0.1em;\n}\n\nhtml .ui-selectmenu-menu ul {\n\t//padding: 0 0.1em;\n}\n\n#whType, #sigID {\n\ttext-transform: uppercase;\n\ttext-align: center;\n\tpadding-left: 0px;\n}\n\n#sigAddForm th, #sigEditForm th {\n\ttext-align: right;\n}\n\n#sigAddForm table tr td, #sigEditForm table tr td {\n\tpadding: 2px 0;\n}\n\n#sigTable {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\ttext-align: center;\n\ttable-layout: fixed;\n\tmargin-left: -1px;\n\tuser-select: none;\n}\n\n#sigTable th {\n\tbackground: var(--scrim-n200);\n\tborder: 1px solid var(--n-000);\n}\n\n#sigTable td {\n\tbackground: var(--scrim-n050);\n\tborder: 1px solid var(--n-000);\n\tcursor: default;\n}\n\n#sigTable tr:hover td {\n\tbackground-color: var(--n-300);\n}\n\n#sigTable tr.selected td {\n\tbackground-color: var(--n-200);\n}\n\n#sigTable th:nth-child(1) {\n\twidth: 50px;\n}\n\n#sigTable th:nth-child(2) {\n\twidth: 45px;\n}\n\n#sigTable th:nth-child(3) {\n\twidth: 40px;\n}\n\n#sigTable th:nth-child(5), #sigTable th:nth-child(6) {\n\twidth: 40px;\n}\n\n#sigTable td:nth-child(1) {\n\tfont-family: \"lucida\";\n\tletter-spacing: 1px;\n\ttext-transform: uppercase;\n}\n\n#sigTable td:nth-child(2) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td:nth-child(5), #sigTable td:nth-child(6) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\n#sigTable td.centerAlign {\n\ttext-align: center;\n}\n\n#sigTable td.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\n#sigTable a.siteLink {\n\tcolor: var(--data-olive);\n}\n\n#sigTable tbody .disabled {\n\tcolor: var(--n-300);\n}\n\n.return-visible .return-link { display: inline }\n.return-invisible .return-link { display: none }\n\n.tablesorter .tablesorter-header {\n\tcursor: pointer;\n\tvertical-align: middle;\n\tfont-size: 10px;\n}\n\n.tablesorter .tablesorter-header:focus {\n\toutline: none;\n}\n\n.tablesorter .tablesorter-header i:before, .tablesorter .sortable i:before {\n\tcontent: \"\\f0dc\";\n\tvertical-align: bottom;\n\tpadding: 1px 2px;\n\tfloat: right;\n}\n\n.tablesorter .headerSortUp,\n.tablesorter .tablesorter-headerSortUp,\n.tablesorter .tablesorter-headerAsc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortUp i:before,\n.tablesorter .tablesorter-headerSortUp i:before,\n.tablesorter .tablesorter-headerAsc i:before {\n\tcontent: \"\\f0de\";\n}\n\n.tablesorter .headerSortDown,\n.tablesorter .tablesorter-headerSortDown,\n.tablesorter .tablesorter-headerDesc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortDown i:before,\n.tablesorter .tablesorter-headerSortDown i:before,\n.tablesorter .tablesorter-headerDesc i:before {\n\tcontent: \"\\f0dd\";\n}\n\n.tablesorter thead .sorter-false {\n\tcursor: default;\n}\n\n#dialog-signature hr {\n\tmargin-left: 15px;\n\tmargin-bottom: 10px;\n}\n\n#dialog-signature .label {\n\tfont-weight: bold;\n\ttext-align: right;\n\tvertical-align: text-top;\n}\n\n#dialog-signature .select {\n\tdisplay: inline-block;\n\tvertical-align: text-bottom;\n}\n\n#dialog-signature .row {\n\tmin-height: 22px;\n}\n\n#dialog-signature .label:first-child {\n\tdisplay: inline-block;\n\tmin-width: 70px;\n}\n\n#dialog-signature #signatureName span {\n\tdisplay: table-cell;\n}\n\n#dialog-signature #signatureName span:last-child {\n\twidth: 100%;\n\tpadding-left: 3px;\n}\n\n#dialog-signature #signatureName input {\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n#dialog-signature #signatureType, #dialog-signature #wormholeMass {\n\tfloat: right;\n}\n\n#dialog-signature #wormholeMass .label, #dialog-signature .bookmark .label {\n\tmin-width: auto;\n}\n\n#dialog-signature .signatureID, #dialog-signature .wormholeType {\n\ttext-align: center;\n\ttext-transform: uppercase;\n}\n\n#dialog-signature .side {\n\tposition: relative;\n\tmin-height: 70px;\n}\n\n#dialog-signature .sideLabel {\n\tposition: absolute;\n\tleft: -10px;\n\tfont-weight: bold;\n\ttransform: rotate(-90deg);\n\ttransform-origin: left top 0;\n}\n\n#dialog-signature #wormhole .side:first-child .sideLabel {\n\tbottom: 0px;\n\twidth: 90px;\n\ttext-align: left;\n}\n\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\tbottom: -70px;\n\twidth: 135px;\n\ttext-align: right;\n}\n\n.custom-combobox {\n\tposition: relative;\n\tdisplay: inline-table;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: -20px;\n\tmargin-left: -1px;\n\tpadding: 0;\n}\n\n.custom-combobox input {\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tpadding: 0.4em 0.8em;\n\tborder-radius: 0;\n\tborder-top-right-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.wormholeTypeQuickSelect {\n\tmargin-left: 1.8em;\n}\n\n.quickSelectBar button {\n\tpadding: 1px; margin-right: 1px;\n}\n\n#leadsToQuickBar {\n\tmargin-left: 74px;\n\tmargin-top: 2px;\n\tmargin-bottom: 4px;\n}\n\n.popover {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 1060;\n\tdisplay: block;\n\tmax-width: 276px;\n\tpadding: 1px;\n\tfont-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tletter-spacing: normal;\n\tline-break: auto;\n\tline-height: 1.5;\n\ttext-align: left;\n\ttext-align: start;\n\ttext-decoration: none;\n\ttext-shadow: none;\n\ttext-transform: none;\n\twhite-space: normal;\n\tword-break: normal;\n\tword-spacing: normal;\n\tfont-size: 0.875rem;\n\tword-wrap: break-word;\n\tbackground-color: var(--n-999);\n\t-webkit-background-clip: padding-box;\n\t\t\t\t\tbackground-clip: padding-box;\n\tborder: 1px solid var(--shadow-20b);\n\tborder-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n\tmargin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n\tleft: 50%;\n\tborder-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n\tbottom: -11px;\n\tmargin-left: -11px;\n\tborder-top-color: var(--shadow-25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n\tbottom: -10px;\n\tmargin-left: -10px;\n\tborder-top-color: var(--n-999);\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n\tmargin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n\ttop: 50%;\n\tborder-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n\tleft: -11px;\n\tmargin-top: -11px;\n\tborder-right-color: var(--shadow-25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n\tleft: -10px;\n\tmargin-top: -10px;\n\tborder-right-color: var(--n-999);\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n\tmargin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n\tleft: 50%;\n\tborder-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n\ttop: -11px;\n\tmargin-left: -11px;\n\tborder-bottom-color: var(--shadow-25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n\ttop: -10px;\n\tmargin-left: -10px;\n\tborder-bottom-color: var(--n-940);\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\tdisplay: block;\n\twidth: 20px;\n\tmargin-left: -10px;\n\tcontent: \"\";\n\tborder-bottom: 1px solid var(--n-940);\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n\tmargin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n\ttop: 50%;\n\tborder-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n\tright: -11px;\n\tmargin-top: -11px;\n\tborder-left-color: var(--shadow-25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n\tright: -10px;\n\tmargin-top: -10px;\n\tborder-left-color: var(--n-999);\n}\n\n.popover-title {\n\tpadding: 8px 14px;\n\tmargin-bottom: 0;\n\tfont-size: 1rem;\n\tbackground-color: var(--n-940);\n\tborder-bottom: 1px solid var(--n-870);\n\tborder-top-right-radius: calc(0.3rem - 1px);\n\tborder-top-left-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n\tdisplay: none;\n}\n\n.popover-content {\n\tpadding: 9px 14px;\n}\n\n.popover::before,\n.popover::after {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 0;\n\theight: 0;\n\tborder-color: transparent;\n\tborder-style: solid;\n}\n\n.popover::before {\n\tcontent: \"\";\n\tborder-width: 11px;\n}\n\n.popover::after {\n\tcontent: \"\";\n\tborder-width: 10px;\n}\n\n.age-tooltip-table td {\n\tpadding-left: 12px;\n}\n","#wrapper {\n\theight: 100%;\n\toverflow: auto;\n\n\tbackground-color: black;\n\tbackground-image: url(../images/bg.jpg);\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\n\t-webkit-background-size: cover;\n\t-moz-background-size: cover;\n\t-o-background-size: cover;\n\tbackground-size: cover;\n}\n\n#inner-wrapper {\n\tmin-height: 100%;\n\tposition: relative;\n}\n\n#pageTime {\n\ttext-align: center;\n\tfont-size: 0.8em;\n\topacity: 0.6;\n}\n\n#footer {\n\tposition: absolute;\n\tbottom: 0;\n\twidth: 100%;\n\ttext-align: center;\n\tpadding-bottom: 10px;\n}\n\n#legal {\n\tfont-size: 0.5em;\n\twidth: 60%;\n\ttext-align: center;\n\tmargin: 0 auto;\n\topacity: 0.5;\n}\n\n#topbar {\n\tposition: fixed;\n\ttop: 0;\n\theight: 45px;\n\twidth: 100%;\n\tbackground: var(--scrim-80);\n\tz-index: 3;\n\tline-height: 40px;\n}\n\n#topbar div { line-height: normal; } /** reset for children */\n\n#topbar h1, #topbar h2, #topbar h3, #topbar form {\n\tdisplay: inline;\n}\n\n#topbar .align-right {\n\tpadding-right: 25px;\n}\n\n#topbar .align-left {\n\tpadding-left: 25px;\n}\n\n#logo {\n\tposition: relative;\n}\n\n#version {\n\tposition: absolute;\n\tcolor: var(--data-info);\n\tfont-size: 0.4em;\n\theight: 0;\n\ttop: 4px;\n\tright: 20px;\n}\n\n#clipboard {\n\tposition: fixed;\n\tleft: -99em;\n\ttop: 0;\n}\n\n#searchSpan {\n\tdisplay: none;\n}\n\n.controls {\n position: absolute;\n padding: 3px;\n z-index: 1;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.controls i {\n\tfont-size: 1.2em;\n\tpadding: 0px 2px;\n\tvertical-align: middle;\n\tfont-style: normal;\n}\n\n.controls button {\n\tfont-size: 1em;\n color: var(--n-500);\n margin: 2px;\n padding: 1px;\n background: var(--n-100);\n border: 1px solid var(--n-000);\n\toutline: 0;\n cursor: pointer;\n background-image: linear-gradient(var(--n-100),var(--n-050));\n}\n\n.tooltip-data {\n\tbackground: var(--scrim-n120);\n\tpadding: 5px;\n\tcolor: var(--n-800);\n\tborder: none;\n\tbox-shadow: none;\n\t-webkit-box-shadow: none;\n\n\tborder-radius: 3px;\n}\n\n.tooltip-data table {\n\tborder: none;\n\tborder-collapse: collapse;\n}\n\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }\n\n#chainMenu, #signatureColumnMenu {\n\tz-index: 5;\n}\n\n/* Loading animation container */\n.loading {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n}\n\n/* Spinning circle (inner circle) */\n.loading .maskedCircle {\n\twidth: 2em;\n\theight: 2em;\n\n\t-webkit-border-radius: 1em;\n -moz-border-radius: 1em;\n -ms-border-radius: 1em;\n -o-border-radius: 1em;\n border-radius: 1em;\n\n\tborder: 3px solid var(--n-000);\n}\n\n/* Spinning circle mask */\n.loading .mask {\n\twidth: 1em;\n\theight: 1em;\n\toverflow: hidden;\n}\n\n/* Spinner */\n.loading .spinner {\n\tposition: absolute;\n\tleft: 1px;\n\ttop: 1px;\n\twidth: 2em;\n\theight: 2em;\n\t-webkit-animation: spin 1s infinite linear;\n\t-moz-animation: spin 1s infinite linear;\n\t-o-animation: spin 1s infinite linear;\n\tanimation: spin 1s infinite linear;\n}\n\ntable.stdTable {\n\twidth: 100%;\n}\n\ntable.stdTable th {\n\ttext-align: left;\n}\n\ndiv.overlay {\n\tposition: fixed;\n\tz-index: 101;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\topacity: 0.3;\n\tbackground: var(--n-700) url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;;\n}\n\n.control-group { display:inline-block; text-align: center }\ntd .control-group { width: 100% }\n\n.whEffect { padding-right: 2px; }\n\n.copy { font-size: 75%; margin: 0 3px; padding: 2px }\n.copy::after { content: '\\01F4C4\\00FE0E' }\n\n#activityGraph { padding-top: 8px; }\n#activityGraphControls { padding-bottom: 8px; }\n\n#activityGraph svg > g:nth-child(3) > g > path {\n\tfill: var(--scrim-n020);\n\tstroke: var(--stroke-n120);\n}\n\n#activityGraph svg > g:nth-child(3) > g > g > text {\n\tfill: var(--n-800);\n}\n\n#activityGraph svg > g:nth-child(2) > g:last-child > g {\n\tcursor: pointer;\n}\n\n/* Autocomplete */\nul.ui-autocomplete {\n\tmax-height: 140px;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n}\n\ntd.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\ntd.centerAlign {\n\ttext-align: center;\n}\n\ntd.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\nth.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\nth.centerAlign {\n\ttext-align: center;\n}\n\nth.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n","/* ============================================================================\n TRIPWIRE DESIGN SYSTEM\n\n A reimagining of the interface in Aperture's design language, not a patch\n over the old one. The vocabulary below is Aperture's, taken from its\n globals.css so the two tools speak the same language:\n\n role tokens, not a grey ramp --background / --card / --popover / --muted\n borders as light --border is white at 10%, --input at 15%\n one radius --radius: 0.625rem, everything derives\n muted-foreground for secondary text, ring for focus\n\n Tripwire's own --n-* ramp and --data-* semantics still exist underneath and\n still drive the map, because those encode EVE meaning. This layer governs\n chrome: surfaces, controls, type, tables, dialogs, states.\n\n Ordering: this file must load after the component stylesheets, which is what\n the _override-* group in gulpfile.js exists for.\n ========================================================================= */\n\n:root {\n\t/* ---- surfaces -------------------------------------------------------- */\n\t--background: oklch(0.145 0 0);\n\t--foreground: oklch(0.80 0 0);\n\t--card: oklch(0.205 0 0);\n\t--card-foreground: oklch(0.82 0 0);\n\t--popover: oklch(0.205 0 0);\n\t--popover-foreground: oklch(0.80 0 0);\n\t--muted: oklch(0.269 0 0);\n\t--muted-foreground: oklch(0.66 0 0);\n\t--accent-surface: oklch(0.269 0 0);\n\n\t/* ---- lines and focus ------------------------------------------------- */\n\t--border: oklch(1 0 0 / 10%);\n\t--border-strong: oklch(1 0 0 / 18%);\n\t--input: oklch(1 0 0 / 15%);\n\t--ring: var(--accent, oklch(0.556 0 0));\n\n\t/* ---- intent ---------------------------------------------------------- */\n\t--primary: var(--accent, oklch(0.922 0 0));\n\t--primary-foreground: oklch(0.205 0 0);\n\t--destructive: oklch(68.025% 0.2081 23.639);\n\n\t/* ---- geometry -------------------------------------------------------- */\n\t--radius: 0.625rem;\n\t--radius-sm: calc(var(--radius) * 0.5);\n\t--radius-md: calc(var(--radius) * 0.75);\n\n\t/* ---- rhythm ---------------------------------------------------------- */\n\t--space-1: 0.25rem;\n\t--space-2: 0.5rem;\n\t--space-3: 0.75rem;\n\t--space-4: 1rem;\n\t--space-5: 1.5rem;\n\n\t/* ---- type ------------------------------------------------------------ */\n\t--fs-xs: 0.8rem;\n\t--fs-sm: 0.9rem;\n\t--fs-base: 1rem;\n\t--fs-md: 1.15rem;\n\t--fs-lg: 1.5rem;\n\t--fs-xl: 2rem;\n}\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(1 0 0);\n\t\t--foreground: oklch(0.145 0 0);\n\t\t--card: oklch(1 0 0);\n\t\t--card-foreground: oklch(0.145 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--popover-foreground: oklch(0.145 0 0);\n\t\t--muted: oklch(0.97 0 0);\n\t\t--muted-foreground: oklch(0.556 0 0);\n\t\t--accent-surface: oklch(0.97 0 0);\n\t\t--border: oklch(0.922 0 0);\n\t\t--border-strong: oklch(0.85 0 0);\n\t\t--input: oklch(0.922 0 0);\n\t\t--destructive: oklch(0.577 0.245 27.325);\n\t\t--primary-foreground: oklch(0.985 0 0);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(1 0 0);\n\t--foreground: oklch(0.145 0 0);\n\t--card: oklch(1 0 0);\n\t--card-foreground: oklch(0.145 0 0);\n\t--popover: oklch(1 0 0);\n\t--popover-foreground: oklch(0.145 0 0);\n\t--muted: oklch(0.97 0 0);\n\t--muted-foreground: oklch(0.556 0 0);\n\t--accent-surface: oklch(0.97 0 0);\n\t--border: oklch(0.922 0 0);\n\t--border-strong: oklch(0.85 0 0);\n\t--input: oklch(0.922 0 0);\n\t--destructive: oklch(0.577 0.245 27.325);\n\t--primary-foreground: oklch(0.985 0 0);\n}\n\n/* ============================================================================\n BASE\n ========================================================================= */\n\nhtml {\n\t/* Was .6em -> 9.6px, with nine ad-hoc sizes from 6px to 19.2px in use.\n\t Verified before changing: no panel overflows at 12px. */\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n\nbody {\n\tcolor: var(--foreground);\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\na { color: var(--primary); font-weight: 500; }\na:hover { color: var(--primary); text-decoration: underline; }\n\n::selection { background: var(--primary); color: var(--primary-foreground); }\n\n/* One focus treatment everywhere. Matters more now the app is keyboard-driven. */\n:focus-visible {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n\tborder-radius: var(--radius-sm);\n}\n\n/* ============================================================================\n SURFACES\n Everything raised is a card: same ground, same edge, same radius.\n ========================================================================= */\n\n.gridWidget,\n.ui-dialog,\n.jBox-container {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n\tcolor: var(--card-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: none;\n}\n\n.gridWidget > .controls,\n.ui-dialog .ui-dialog-titlebar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tborder-radius: var(--radius) var(--radius) 0 0;\n\tpadding: var(--space-2) var(--space-3);\n\tmin-height: 0;\n}\n\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\tmargin: 0;\n\tfloat: none;\n}\n\n.panel-title {\n\tflex: 0 0 auto;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\twhite-space: nowrap;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tcolor: var(--card-foreground);\n\tbackground: transparent;\n}\n\n.ui-dialog .ui-dialog-buttonpane {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-top: 1px solid var(--border);\n\tmargin: 0;\n\tpadding: var(--space-3) var(--space-4);\n}\n\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: none; text-align: right; }\n\n/* The dialog's own close affordance, and the panel hide control, are the same\n thing and should look it. */\n.ui-dialog .ui-dialog-titlebar-close,\n.panel-hide {\n\torder: 99;\n\tmargin-left: auto;\n\twidth: auto; height: auto;\n\tposition: static;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-md);\n\tline-height: 1;\n\tpadding: 0 var(--space-1);\n\tcursor: pointer;\n}\n.ui-dialog .ui-dialog-titlebar-close:hover,\n.panel-hide:hover { color: var(--destructive); background: none; }\n.ui-dialog .ui-dialog-titlebar-close .ui-icon { display: none; }\n.ui-dialog .ui-dialog-titlebar-close::after { content: \"\\00d7\"; }\n\n/* ============================================================================\n CONTROLS\n Flat at rest so rows read as data; the affordance arrives on approach.\n ========================================================================= */\n\ninput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\ninput[type=\"search\"], select, textarea {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tbox-shadow: none;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\ninput:hover, select:hover, textarea:hover { border-color: var(--border); }\n\ninput:focus, select:focus, textarea:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--muted);\n\toutline: none;\n}\n\n::placeholder { color: var(--muted-foreground); opacity: 1; }\n\nbutton, .ui-button, .ui-button.ui-widget,\ninput[type=\"button\"], input[type=\"submit\"] {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tpadding: var(--space-1) var(--space-3);\n\tbox-shadow: none;\n\ttext-shadow: none;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n\nbutton:hover, .ui-button:hover, .ui-button.ui-widget:hover,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover {\n\tborder-color: var(--border-strong);\n\tbackground-color: var(--muted);\n\tcolor: var(--foreground);\n}\n\n.ui-dialog-buttonpane button.is-primary {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground-color: transparent;\n}\n\nbutton[disabled], .disabled { opacity: .4; cursor: default; }\n\n/* ============================================================================\n DATA\n ========================================================================= */\n\n#sigTable { border-collapse: collapse; width: 100%; }\n\n#sigTable th {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .09em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n\tpadding: var(--space-2) var(--space-2);\n\tbox-shadow: none;\n}\n\n#sigTable td {\n\tborder: 0;\n\tpadding: var(--space-2);\n\tfont-size: var(--fs-base);\n\tcolor: var(--card-foreground);\n}\n\n#sigTable tbody tr { transition: background-color .1s ease; }\n#sigTable tbody tr:nth-child(even) > td { background-color: oklch(1 0 0 / 3%); }\n#sigTable tbody tr:hover > td { background-color: var(--muted); }\n#sigTable tbody tr.selected > td { background-color: color-mix(in oklab, var(--primary) 18%, transparent); }\n\n/* Chips. Life, mass and security are small closed sets; they read faster as\n pills, and it keeps state out of the same register as the data beside it. */\n#sigTable td .stable, #sigTable td .critical, #sigTable td .destab,\n.chip-pill {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid currentColor;\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.7;\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Segmented control for the dialog's life/mass radios. */\n#dialog-signature .mini-selector { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-block;\n\tpadding: var(--space-1) var(--space-3);\n\tmargin-right: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n#dialog-signature .mini-selector + label:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature .mini-selector:checked + label {\n\tborder-color: currentColor;\n\tbackground: color-mix(in oklab, currentColor 15%, transparent);\n\tfont-weight: 600;\n}\n#dialog-signature .mini-selector:focus-visible + label { outline: 2px solid var(--ring); outline-offset: 1px; }\n\n/* ============================================================================\n NAVIGATION\n ========================================================================= */\n\n#topbar {\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tbackdrop-filter: blur(8px);\n\tborder-bottom: 1px solid var(--border);\n}\n\n#topbar #logo a { font-size: var(--fs-xl); }\n#version { font-size: var(--fs-xs); color: var(--muted-foreground); }\n#legal { font-size: var(--fs-xs); color: var(--muted-foreground); }\n\n/* Settings sections. The accordion is gone -- see options-dialog.js. These\n are the same

/
pairs, laid out flat in a scrolling pane so every\n setting is visible and scannable. */\n.settings-sections { display: flex; flex-direction: column; }\n\n.settings-sections > h3 {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 1;\n\tmargin: var(--space-4) 0 var(--space-2);\n\tpadding: var(--space-2) 0;\n\tbackground: var(--card);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n}\n.settings-sections > h3:first-child { margin-top: 0; }\n.settings-sections > h3 a { color: inherit; font-weight: inherit; text-decoration: none; cursor: default; }\n\n.settings-sections > div { padding: 0 0 var(--space-3); }\n\n#dialog-options { max-height: 62vh; overflow-y: auto; }\n\n.optionsTable tr { height: auto; }\n.optionsTable th, .optionsTable td { padding: var(--space-2); font-size: var(--fs-base); }\n.optionsTable th { color: var(--muted-foreground); font-weight: 500; }\ntr.line td, tr.line th { border-bottom: 1px solid var(--border); }\n\n/* jQuery UI's state classes carry the old theme's gradients wherever they land. */\n.ui-state-default, .ui-state-hover, .ui-state-active, .ui-state-focus,\n.ui-widget-header, .ui-widget-content {\n\tbackground-image: none;\n\ttext-shadow: none;\n}\n\n/* ============================================================================\n DIALOG SIZING\n Settings holds two-column option rows and was squeezed into the default\n dialog width, which is why its labels wrapped and its controls crowded.\n ========================================================================= */\n\n.ui-dialog:has(#dialog-options) { width: min(46rem, calc(100vw - 2rem)) !important; }\n#dialog-options { width: auto !important; }\n\n/* Option rows: label left, control right, on one rhythm. */\n#dialog-options .optionsTable { width: 100%; table-layout: fixed; }\n#dialog-options .optionsTable th {\n\twidth: 55%;\n\ttext-align: left;\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-base);\n\tvertical-align: middle;\n}\n#dialog-options .optionsTable td { text-align: right; vertical-align: middle; }\n#dialog-options input[type=\"text\"],\n#dialog-options input[type=\"password\"],\n#dialog-options select {\n\twidth: 100%;\n\tmax-width: 16rem;\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n}\n#dialog-options div.ui-slider { width: calc(100% - 3rem); }\n\n/* Yes/No and other radio pairs read as a segmented control, like the map's\n life and mass. */\n#dialog-options input[type=\"radio\"] { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-options input[type=\"radio\"] + label {\n\tdisplay: inline-block;\n\tpadding: 2px var(--space-3);\n\tmargin-left: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tvertical-align: middle;\n}\n#dialog-options input[type=\"radio\"] + label:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n#dialog-options input[type=\"radio\"]:checked + label {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 12%, transparent);\n\tfont-weight: 600;\n}\n#dialog-options input[type=\"radio\"]:focus-visible + label {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n}\n\n/* ============================================================================\n LEGIBILITY CORRECTIONS\n\n Not rebranding: these are data colours and they keep their meaning. They are\n lightened only enough to clear 4.5:1 against the card ground, measured. The\n originals were written for a near-black page and the card surface is lighter\n than that, so blue text in particular was failing badly -- the \"Blue loot\n buyer\" line sat at 2.63:1.\n ========================================================================= */\n\n:root {\n\t--data-info: #47a2fe; /* was #4399f0 4.18:1 -> 4.66:1 */\n\t--data-loot-blue: #9090ff; /* was #6060f0 2.63:1 -> 4.52:1 */\n\t--data-link: #4ca1ea; /* was #428bca 3.43:1 -> 4.50:1 */\n\t--data-class-sky: #3ca0ff; /* was #3388dd 3.38:1 -> 4.54:1 */\n\t--chart-1: #4e9dff; /* was #3366cc 2.32:1 -> 4.50:1 */\n}\n\n/* In the light theme the same hues need darkening instead. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--data-info: #1668c4;\n\t\t--data-loot-blue: #3b3bc9;\n\t\t--data-link: #1a6aa8;\n\t\t--data-class-sky: #1466a8;\n\t\t--chart-1: #1f4f9e;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--data-info: #1668c4;\n\t--data-loot-blue: #3b3bc9;\n\t--data-link: #1a6aa8;\n\t--data-class-sky: #1466a8;\n\t--chart-1: #1f4f9e;\n}\n\n/* ============================================================================\n HOVER / ACTIVE STATES\n\n forms.css styles these through `.ui-button:hover:not([disabled])` and\n `input[type=\"button\"]:not([disabled]):hover` -- three selectors deep, which\n outranks a plain :hover. That is why the raised-bevel gradient survived on\n hover and press after the rest was flattened.\n ========================================================================= */\n\nbutton:hover, button:active,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover,\ninput[type=\"button\"]:active, input[type=\"submit\"]:active,\ninput[type=\"button\"]:not([disabled]):hover,\ninput[type=\"submit\"]:not([disabled]):hover,\ninput[type=\"button\"]:not([disabled]):active,\ninput[type=\"submit\"]:not([disabled]):active,\n.ui-button:hover, .ui-button:active,\n.ui-button:hover:not([disabled]), .ui-button:active:not([disabled]),\n.ui-button.ui-widget:hover:not([disabled]),\n.ui-button.ui-widget:active:not([disabled]),\n.ui-state-hover, .ui-state-active, .ui-state-focus,\na.ui-button:hover, a.ui-button:active {\n\tbackground-image: none !important;\n\tbox-shadow: none !important;\n\ttext-shadow: none !important;\n}\n\n/* ============================================================================\n GATE CHIPS\n The gate list was comma-separated prose. Each gate is a destination you can\n click, so it reads as a chip like everything else that is a discrete thing.\n ========================================================================= */\n\n.gate-list {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: var(--space-1);\n\tmargin: 0;\n}\n\n.gate-list > b {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 3px;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tline-height: 1.7;\n\twhite-space: nowrap;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n.gate-chip:hover { border-color: var(--border-strong); background: var(--accent-surface); }\n.gate-chip a { font-weight: 500; }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* The last two gradients in the app: a fade on the account dropdown and the\n chain zoom-reset button. Both are bevel-era leftovers. */\n#content.dialog-like,\n#chain-zoom-reset {\n\tbackground-image: none !important;\n}\n#content.dialog-like { background-color: var(--popover); }\n\n/* ============================================================================\n DIALOG SCROLLING\n\n jQuery UI sizes a dialog to its content, so a tall one grows past the\n viewport and the page scrolls behind it instead of the dialog scrolling\n inside itself. Settings was 1476px tall in a 900px window.\n\n The dialog becomes a flex column capped at the viewport: title bar and\n button pane hold their size, the content takes the remaining space and\n scrolls. Nothing else has to know its height.\n ========================================================================= */\n\n.ui-dialog {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmax-height: calc(100vh - 2rem);\n\tmax-width: calc(100vw - 2rem);\n\tbox-sizing: border-box;\n}\n\n.ui-dialog > .ui-dialog-titlebar,\n.ui-dialog > .ui-dialog-buttonpane { flex: 0 0 auto; }\n\n.ui-dialog > .ui-dialog-content {\n\tflex: 1 1 auto;\n\tmin-height: 0; /* without this a flex child refuses to shrink */\n\toverflow-y: auto;\n\tmax-height: none !important;\n\theight: auto !important;\n}\n\n/* Settings no longer needs its own cap now the dialog handles it. */\n#dialog-options { max-height: none; }\n\n/* The page itself must paint a ground. body was transparent, so anything that\n scrolled past #wrapper -- an over-tall dialog, the footer -- showed the\n browser's white through the app. */\nhtml, body {\n\tbackground-color: var(--background);\n}\n\n/* ============================================================================\n ROUTE SQUARES AND THE BLUE-LOOT LINE\n\n base.css:119 sets `.blue-loot, .blue-loot .hisec { color: loot-blue }`,\n which painted the whole line blue AND overrode the security colour on its\n route squares -- so the one place the squares carry meaning was the one\n place they did not show it.\n\n The line reads as normal text; each square keeps its own security colour and\n is big enough to actually read.\n ========================================================================= */\n\n.blue-loot,\n.sys-extra,\n.sys-extra .blue-loot {\n\tcolor: var(--foreground);\n}\n\n/* Only the destination is a link. */\n.sys-extra a, .blue-loot a { color: var(--primary); }\n\n/* Security colours win on the squares. */\n.blue-loot .hisec { color: var(--data-good) !important; }\n.blue-loot .lowsec { color: var(--data-warn) !important; }\n.blue-loot .nullsec{ color: var(--data-critical) !important; }\n\n.path span,\n.blue-loot .path span {\n\tfont-size: 1.35em;\n\tline-height: 1;\n\tletter-spacing: .06em;\n\tcursor: pointer;\n}\n.path span:hover { filter: brightness(1.35); }\n\n/* ============================================================================\n CHIPS — filled, not outlined\n\n Outlined chips in a colour put the meaning in a 1px border and left the\n label low-contrast. Filled reads at a glance and the label sits on white.\n ========================================================================= */\n\n.sys-meta .chip,\n.gate-chip,\n.sig-chip,\n#sigTable td .stable,\n#sigTable td .critical,\n#sigTable td .destab,\n.chip-pill {\n\tborder: 1px solid transparent;\n\tcolor: #fff;\n\tfont-weight: 600;\n}\n\n/* Neutral facts keep a quiet fill rather than shouting a colour. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-color: var(--border);\n}\n.gate-chip:hover, .sig-chip:hover {\n\tbackground: var(--accent-surface);\n\tborder-color: var(--border-strong);\n}\n\n/* State chips carry their colour as fill. */\n#sigTable td .stable { background: var(--data-good); border-color: var(--data-good); }\n#sigTable td .destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#sigTable td .critical { background: var(--data-critical); border-color: var(--data-critical); }\n\n/* Selected filter and option chips fill with the accent. */\n.sig-chip.on {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tbackground: var(--data-good); border-color: var(--data-good); color: #1b1b1b;\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tbackground: var(--data-info); border-color: var(--data-info); color: #1b1b1b;\n}\n\n#dialog-signature .mini-selector:checked + label,\n#dialog-options input[type=\"radio\"]:checked + label {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n\tfont-weight: 600;\n}\n\n/* Life and mass keep their own meaning when selected. */\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n\n/* ============================================================================\n NAMED COLOURS\n\n The original token extraction swept hex and rgb() literals and missed CSS\n NAMED colours entirely -- fifteen of them survived, including the green mask\n star in the topbar. Mapped onto the token set here.\n ========================================================================= */\n\nbody .mask .corporate { color: var(--foreground); }\n.source_bar.corporate { background: var(--data-good); }\n.source_bar.alliance { background: var(--data-alliance); }\n#chainMap .statics span { background: var(--muted); }\n#chainMap .gate { border-color: var(--border-strong); }\n.jBox-container { color: var(--foreground); }\n\n/* ============================================================================\n TOPBAR\n\n TQ and the mask star were carrying data colours -- green for \"server is up\",\n green for \"corporate mask\". Neither is a reading you act on, and colour in\n the header competes with the map, where colour does mean something. Both go\n white; the count itself is the information.\n ========================================================================= */\n\n#topbar #serverStatus,\n#topbar #serverStatus .stable,\n#topbar #serverStatus .critical,\n#topbar #mask,\n#topbar #mask *,\n#topbar .mask .corporate,\n#topbar .mask .alliance,\n#topbar .mask .character,\n#topbar .mask .global {\n\tcolor: var(--foreground) !important;\n}\n\n/* A genuinely down server is worth the red, though. */\n#topbar #serverStatus.is-down,\n#topbar #serverStatus.is-down .critical {\n\tcolor: var(--data-critical) !important;\n}\n\n/* ============================================================================\n ROUTE LINES\n The squares belong beside the sentence they describe, not wrapped under it.\n ========================================================================= */\n\n.sys-extra > * ,\n.sys-extra {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tgap: .35em;\n}\n\n.sys-extra .path {\n\tdisplay: inline-flex;\n\talign-items: baseline;\n\tgap: .1em;\n\tmargin-left: .2em;\n}\n","/* Panel structure.\n Appearance now comes from the design system (_override-1-system.css); what\n remains here is layout the system cannot express generically. */\n\n/* The controls bar mixes floated children with the flow, so the floated group\n has to be pulled back into the flex line rather than escaping it. */\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n}\n\n/* A hidden panel leaves its grid cell empty rather than reflowing the others.\n Gridster positions every widget absolutely from saved coordinates, so\n collapsing the gap would mean rewriting them and discarding the arrangement\n the user made. Bring it back from the palette. */\n.gridWidget.panel-hidden { display: none; }\n","/* ============================================================================\n SIGNATURE DIALOG — form layout\n\n The dialog kept its original markup (.row > .label + controls) with new\n paint on top, and it showed: bold oversized labels competing with the\n values, no field affordance at all, ragged alignment, and controls landing\n on the wrong rows.\n\n This lays a real form grid over that markup. Every field the dialog had, it\n still has, in the same order.\n ========================================================================= */\n\n#dialog-signature .ui-dialog-content,\n#dialog-signature {\n\tfont-size: var(--fs-base);\n}\n\n/* One row = quiet label in a fixed column, controls flowing after it. */\n#dialog-signature .row {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-2);\n\tmargin: 0 0 var(--space-3) 0;\n\tline-height: 1.4;\n}\n\n/* Labels are wayfinding, not content: small, quiet, consistent width so every\n value starts on the same vertical line. */\n#dialog-signature .row > .label:first-child {\n\tflex: 0 0 5.5rem;\n\ttext-align: right;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .02em;\n}\n\n/* The separator between the two id halves must not take a label column. */\n#dialog-signature .row > .label:not(:first-child) {\n\tflex: 0 0 auto;\n\tcolor: var(--muted-foreground);\n\tfont-weight: 400;\n}\n\n/* ---- fields look like fields --------------------------------------------\n The system layer keeps controls flat so table rows read as data. A form is\n the opposite case: here the whole point is showing what can be edited. */\n\n#dialog-signature input[type=\"text\"],\n#dialog-signature input[type=\"password\"],\n#dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tmin-height: 1.9rem;\n}\n\n#dialog-signature input[type=\"text\"]:hover,\n#dialog-signature select:hover { border-color: var(--border-strong); }\n\n#dialog-signature input[type=\"text\"]:focus,\n#dialog-signature select:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--background);\n}\n\n/* Values sized by what they hold, not by a stray `size` attribute. */\n#dialog-signature .signatureID { width: 3.6rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .wormholeType { width: 4.4rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .leadsTo { width: 12rem; }\n#dialog-signature [name=\"signatureName\"],\n#dialog-signature [name=\"wormholeName\"] { flex: 1 1 12rem; min-width: 8rem; }\n\n/* Unresolved required fields read red at a glance. Applied by\n signature-dialog-keyboard.js: the id always, plus type and destination for\n a wormhole -- the fields the chain is drawn from. */\n#dialog-signature .sig-missing,\n#dialog-signature .sig-missing:focus {\n\tborder-color: var(--destructive);\n\tbox-shadow: 0 0 0 1px var(--destructive);\n}\n\n/* ---- lifetime reads as one control, not three loose numbers ------------- */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tfont-size: var(--fs-base);\n}\n#dialog-signature .duration-picker input {\n\twidth: 2.4rem;\n\ttext-align: center;\n}\n#dialog-signature .duration-picker span,\n#dialog-signature .duration-picker label {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- section headings ---------------------------------------------------\n Were rotated 90 degrees in a left gutter. One divider weight, one style. */\n#dialog-signature .sideLabel {\n\tposition: static;\n\ttransform: none;\n\tdisplay: block;\n\twidth: auto;\n\tmargin: var(--space-4) 0 var(--space-3);\n\tpadding-bottom: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n}\n\n#dialog-signature .side { padding-left: 0; }\n#dialog-signature hr { display: none; } /* the second, heavier divider */\n\n/* ---- quick-select chips ------------------------------------------------\n Were wrapping into a ragged second line. One wrap-safe row, aligned under\n the value column rather than starting at the dialog edge. */\n#dialog-signature .quickSelectBar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tflex: 1 1 100%;\n\tmargin-left: 6rem; /* clears the label column */\n\tmargin-top: calc(var(--space-1) * -1);\n}\n\n#dialog-signature .quickSelectBar button {\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tpadding: 1px var(--space-2);\n\tmin-width: 0;\n\tmin-height: 0;\n\tfont-size: var(--fs-xs);\n\tline-height: 1.6;\n}\n\n#dialog-signature .quickSelectBar button:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n\n/* The bare \"|\" divider inside the bar. */\n#dialog-signature .quickSelectBar { align-items: center; }\n\n/* ---- the wormhole-type shortcut button beside the type field ----------- */\n#dialog-signature .wormholeTypeQuickSelect button {\n\tfont-size: var(--fs-xs);\n\tpadding: 1px var(--space-2);\n\tmin-height: 0;\n}\n\n/* ---- width -------------------------------------------------------------\n The dialog was sized for the old cramped layout, so the type selector wrapped\n off the ID row and the class chips broke onto a ragged second line. */\n.ui-dialog:has(#dialog-signature) {\n\twidth: min(30rem, calc(100vw - 2rem)) !important;\n}\n#dialog-signature { width: auto !important; }\n\n/* ID row holds both id halves and the signature type together -- they are one\n statement (\"this signature, of this kind\"), so they belong on one line. */\n#dialog-signature .row:first-of-type { flex-wrap: nowrap; }\n#dialog-signature #signatureType { margin-left: auto; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 8rem; }\n\n/* Class chips: one tidy row under the destination field. */\n#dialog-signature .quickSelectBar {\n\tmargin-left: 6rem;\n\tgap: 3px;\n}\n#dialog-signature .quickSelectBar button {\n\tmin-width: 2rem;\n\ttext-align: center;\n\tfont-size: var(--fs-xs);\n\tpadding: 2px 0;\n}\n\n/* Lifetime: the three numbers are one value, so box them as one control\n rather than leaving them adrift in the row. */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n}\n#dialog-signature .duration-picker input {\n\tborder: 0;\n\tbackground: transparent;\n\tmin-height: 0;\n\tpadding: 0;\n\twidth: 2rem;\n}\n","/* ============================================================================\n RESPONSIVE — Track 6\n\n Scope is deliberately asymmetric, per the corp's actual use:\n\n READ band phones. Check a chain, see what is scanned. No editing\n chrome. width < 768px OR height < 600px.\n EDIT band tablets. Update signatures, drive the map. Touch-sized\n targets. width >= 768px AND height >= 600px.\n DESKTOP width >= 1280px AND a fine pointer.\n\n The height clause is what catches a landscape phone: an iPhone 15 turned\n sideways is 852px wide -- past any sensible tablet breakpoint -- but only\n 393px tall, with no room for the editing layout. Width alone gets this\n wrong.\n\n The fine-pointer clause on desktop is what keeps a landscape iPad Pro 11\"\n (~1194px) in the EDIT band rather than handing it the dense mouse layout it\n cannot hit accurately.\n\n Density is width-driven; control sizing is pointer-driven. They are separate\n questions: a 1000px window on a desktop wants the multi-panel layout but not\n 44px touch targets.\n ========================================================================= */\n\n/* ── READ: stack the panels ──────────────────────────────────────────────\n Gridster positions every widget absolutely from saved coordinates. Below\n the breakpoint that layout is abandoned entirely and the panels return to\n document flow -- which is the reflow the fixed grid cannot do. The saved\n coordinates are untouched, so rotating back restores the arrangement. */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t#wrapper { overflow-x: hidden; }\n\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmin-height: 12rem;\n\t\tmargin: 0 0 var(--space-3) 0 !important;\n\t\toverflow: visible;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t/* Chain map wants the most room; signatures next. */\n\t#chainWidget .content { min-height: 55vh; }\n\t#notesWidget .content { min-height: 14rem; }\n\n\t/* Resize handles are meaningless without a grid. */\n\t.grid-resize { display: none !important; }\n\n\t/* Editing chrome is out of scope on a phone: this band is for reading. */\n\t#signaturesWidget #add-signature,\n\t#signaturesWidget #edit-signature,\n\t#signaturesWidget #delete-signature,\n\t#signaturesWidget #undo,\n\t#signaturesWidget #redo,\n\t#notesWidget #add-comment,\n\t#layout {\n\t\tdisplay: none !important;\n\t}\n\n\t/* The topbar carries a lot for 393px. Keep identity, time and search. */\n\t#serverStatus,\n\t#topbar h3:nth-of-type(2) { display: none; }\n\n\t#topbar { position: sticky; }\n\n\t/* Signature table: drop the columns that only matter while editing. */\n\t#sigTable th:nth-child(n+5),\n\t#sigTable td:nth-child(n+5) { display: none; }\n}\n\n/* ── EDIT: tablets ───────────────────────────────────────────────────────\n Two columns rather than four panels on a fixed grid; the arrangement a\n 1194px tablet can actually use. */\n\n@media (min-width: 768px) and (max-width: 959px) and (min-height: 600px) {\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t}\n\n\t.gridster > ul {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t\tgap: var(--space-3);\n\t\tpadding: 0 var(--space-2);\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t#infoWidget { min-height: 34vh; }\n\t#signaturesWidget { min-height: 34vh; }\n\t#notesWidget { min-height: 26vh; }\n\n\t/* The chain is the reason you are here; give it the full width. */\n\t#chainWidget {\n\t\tgrid-column: 1 / -1;\n\t\tmin-height: 46vh;\n\t}\n\n\t.grid-resize { display: none !important; }\n}\n\n/* ── Touch sizing, independent of width ──────────────────────────────────\n Driven by pointer, not viewport, because they are different questions. A\n coarse pointer needs a 44px target whatever the screen is. */\n\n@media (pointer: coarse) {\n\t.controls i,\n\t.controls span.control,\n\t.panel-hide,\n\t#topbar i,\n\t.quickSelectBar button {\n\t\tmin-width: 44px;\n\t\tmin-height: 44px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\tbutton, .ui-button, input[type=\"button\"], input[type=\"submit\"] {\n\t\tmin-height: 44px;\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\tinput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\n\tselect, textarea {\n\t\tmin-height: 40px;\n\t\tfont-size: 1.15rem; /* keeps iOS from zooming the field on focus */\n\t}\n\n\t#sigTable td { padding: var(--space-3) var(--space-2); }\n\n\t#dialog-signature .mini-selector + label {\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\t/* Hover styling is misleading on touch -- it sticks after a tap. */\n\t#sigTable tbody tr:hover > td { background-color: transparent; }\n}\n\n/* Dialogs must not exceed a small viewport. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.ui-dialog {\n\t\tmax-width: calc(100vw - var(--space-4)) !important;\n\t\tmax-height: calc(100vh - var(--space-4)) !important;\n\t\tleft: var(--space-2) !important;\n\t\toverflow: auto;\n\t}\n\t.ui-dialog .ui-dialog-content { max-height: 60vh; overflow: auto; }\n}\n\n/* Respect the OS setting; the map already animates a great deal. */\n@media (prefers-reduced-motion: reduce) {\n\t*, *::before, *::after {\n\t\tanimation-duration: .001ms !important;\n\t\tanimation-iteration-count: 1 !important;\n\t\ttransition-duration: .001ms !important;\n\t}\n}\n\n/* ── Touch on the chain map ──────────────────────────────────────────────\n #chainParent is a scroll container driven by dragscroll.js, which is a\n mouse-only library (mousedown/mousemove). Rather than port it, let the\n browser do what it is already good at: native touch panning and pinch-zoom\n on the scroll container. dragscroll keeps working for mice untouched.\n\n touch-action must be set explicitly because the map suppresses user-select\n and jQuery UI's draggable calls preventDefault on pointer events, which\n otherwise kills native scrolling on touch. */\n\n#chainParent {\n\ttouch-action: pan-x pan-y pinch-zoom;\n\t-webkit-overflow-scrolling: touch;\n\toverscroll-behavior: contain;\n}\n\n/* Nodes stay draggable at tablet width and above; on a phone the map is for\n reading, so a drag should pan the map rather than move somebody's system. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainMap .system,\n\t#chainMap [class*=\"system\"] {\n\t\ttouch-action: inherit;\n\t}\n}\n","/* ============================================================================\n SYSTEM PANEL\n\n Was two 50% floats with a
: the system identity on the left,\n and \"Blue loot buyer\" stranded in a right-hand column it did not belong in.\n Statics sat last, below the links, so the rows that matter most needed\n scrolling to reach.\n\n Rebuilt as a single column in reading order -- identity, what it connects\n to, then the supporting detail -- with the metadata as chips.\n ========================================================================= */\n\n.sys-panel {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--space-3);\n\tpadding: var(--space-3);\n\toverflow-y: auto;\n\theight: 100%;\n\tbox-sizing: border-box;\n}\n\n/* ---- identity ----------------------------------------------------------- */\n.sys-head { display: flex; flex-direction: column; gap: var(--space-2); }\n\n.sys-panel .sys-name {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tfont-size: var(--fs-lg);\n\tfont-weight: 600;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\tletter-spacing: -.01em;\n}\n\n/* Security / region / faction as chips: three small facts, read at a glance,\n in the same register as the life and mass chips elsewhere. */\n.sys-meta { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sys-meta .chip {\n\tmargin: 0;\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n\twhite-space: nowrap;\n}\n/* An empty chip should not draw a pill. */\n.sys-meta .chip:empty { display: none; }\n/* Security colouring comes from the data tokens already on the element. */\n.sys-meta #infoSecurity { color: inherit; }\n\n/* ---- what it connects to, promoted above the supporting detail ---------- */\n.sys-statics {\n\tfont-size: var(--fs-sm);\n\tline-height: 1.7;\n\tcolor: var(--card-foreground);\n}\n.sys-statics:empty { display: none; }\n\n/* ---- blue-loot buyer and other route notes ------------------------------\n Was floated into a right-hand column of its own. It is a note about this\n system, so it reads inline with the rest. */\n.sys-extra {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n\tline-height: 1.8;\n}\n.sys-extra:empty { display: none; }\n\n/* ---- graph -------------------------------------------------------------- */\n#activityGraph { min-height: 120px; }\n\n/* Range switch as a segmented control rather than \"Week - 48Hour - 24Hour\". */\n.sys-range {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tjustify-content: center;\n}\n.sys-range a {\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\ttext-decoration: none;\n}\n.sys-range a:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n}\n\n/* ---- external links ----------------------------------------------------- */\n.sys-links {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-3);\n\tjustify-content: center;\n\tpadding-top: var(--space-1);\n\tborder-top: 1px solid var(--border);\n\tfont-size: var(--fs-sm);\n}\n.sys-links a { color: var(--muted-foreground); font-weight: 500; }\n.sys-links a:hover { color: var(--primary); }\n","/* ============================================================================\n CHAIN MAP + SIGNATURE TABLE\n\n The two surfaces the tool is actually used through, and the last places\n carrying the old look.\n\n The map nodes kept their bevels because they are built from VENDOR-PREFIXED\n gradients (-moz-linear-gradient, -webkit-gradient), which the earlier sweep\n for `linear-gradient` did not match.\n ========================================================================= */\n\n/* ---- copy affordance ---------------------------------------------------\n tripwire.css set `content: '\\01F4C4\\00FE0E'` -- the page-facing-up emoji\n with the text-presentation variation selector, asking for a monochrome\n glyph most fonts only ship in colour. The result was fallback tofu, which\n is the \"broken document\" after the system name. There is no copy glyph in\n the icon font, so it is drawn: two offset sheets, the usual copy sign. */\n.copy::after { content: none; }\n\n.copy {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: -0.1em;\n\topacity: .55;\n\ttransition: opacity .12s ease;\n}\n.copy:hover, .copy:focus-visible { opacity: 1; }\n\n.copy::before,\n.copy::after {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: .62em;\n\theight: .78em;\n\tborder: 1px solid currentColor;\n\tborder-radius: 2px;\n}\n.copy::before { left: 0; top: .22em; }\n.copy::after { left: .3em; top: 0; background: var(--card); }\n\n/* ============================================================================\n CHAIN MAP\n ========================================================================= */\n\n/* Flat fills. The class colour moves to the border, where it reads as a label\n rather than as a lit surface, and the node ground stays consistent so the\n map is one plane instead of a tray of buttons. */\n#chainMap .currentNode > div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node,\n#chainMap div.loop,\n#chainMap div.node {\n\tbackground-image: none !important;\n\tbox-shadow: none;\n\tborder-radius: var(--radius-md);\n\tborder-width: 1px;\n\tborder-style: solid;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\n#chainMap div.node { background-color: var(--card); }\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 22%, var(--card)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 22%, var(--card)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 22%, var(--card)); }\n#chainMap div.loop { background-color: color-mix(in oklab, var(--data-class-void) 40%, var(--card)); }\n\n/* Where you are is the one thing that should be unmistakable. */\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 18%, var(--card));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 1px var(--primary);\n}\n\n#chainMap div.node:hover { border-color: var(--border-strong); }\n\n/* Badges were 9px monospace with a 6px glow. Same chip language as everywhere\n else, so a count on the map reads like a count in the table. */\n#chainMap span.badge {\n\tbackground-color: var(--muted);\n\tcolor: var(--muted-foreground);\n\tbox-shadow: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.5;\n\tpadding: 0 5px;\n\tmin-width: 1.1em;\n}\n\n#chainMap .nodeType {\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n}\n\n#chainMap .statics span {\n\tborder-radius: 999px;\n\tpadding: 0 5px;\n\tfont-size: var(--fs-xs);\n}\n\n/* ============================================================================\n SIGNATURE TABLE\n ========================================================================= */\n\n#sigTableWrapper { padding: 0; }\n\n#sigTable th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }\n#sigTable th.sortable:hover { color: var(--foreground); }\n\n/* The sort arrow was an empty -- an icon element with no\n icon. Draw the state instead, and only on the column actually sorted. */\n#sigTable th.sortable i[data-icon=\"\"] { display: none; }\n\n#sigTable th.sortable::after {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: 0; height: 0;\n\tmargin-left: var(--space-1);\n\tborder-left: 3px solid transparent;\n\tborder-right: 3px solid transparent;\n\topacity: 0;\n\ttransition: opacity .12s ease;\n}\n#sigTable th.tablesorter-headerAsc::after {\n\tborder-bottom: 4px solid var(--primary);\n\topacity: 1;\n}\n#sigTable th.tablesorter-headerDesc::after {\n\tborder-top: 4px solid var(--primary);\n\topacity: 1;\n}\n\n/* Signature type as a chip, so the group reads at a glance down the column\n the way life and mass already do. */\n#sigTable td.sigType > span,\n#sigTable td .sigTypeName {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n}\n\n/* Age is context, not content. */\n#sigTable td.sigAge { color: var(--muted-foreground); font-variant-numeric: tabular-nums; }\n\n/* Numeric-ish columns line up. */\n#sigTable td.sigID { font-variant-numeric: tabular-nums; letter-spacing: .03em; }\n\n/* An empty table should say so rather than being a blank rectangle. */\n#sigTable tbody:empty::after,\n#sigTableWrapper > .sig-empty {\n\tcontent: \"No signatures in this system\";\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n}\n\n/* ============================================================================\n SIGNATURE FILTER BAR\n After Aperture's SignatureModule: group chips, a scan-state cycle, and live\n counts. Scanning a long list down one column is the whole job, so the bar\n stays pinned and only the table scrolls.\n ========================================================================= */\n\n.sig-filter {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tpadding: var(--space-2) var(--space-2);\n\tborder-bottom: 1px solid var(--border);\n}\n\n.sig-filter-groups { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sig-chip {\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.6;\n\tpadding: 0 var(--space-2);\n\tmin-height: 0;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n.sig-chip:hover { border-color: var(--border-strong); background: var(--muted); color: var(--foreground); }\n\n/* Active filters stand out without the harshness of a solid fill. */\n.sig-chip.on {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 14%, transparent);\n}\n\n/* The scan cycle earns its own colours: scanned reads as settled, unscanned as\n outstanding work. */\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tborder-color: var(--data-good); color: var(--data-good);\n\tbackground: color-mix(in oklab, var(--data-good) 14%, transparent);\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tborder-color: var(--data-info); color: var(--data-info);\n\tbackground: color-mix(in oklab, var(--data-info) 14%, transparent);\n}\n\n.sig-stats {\n\tmargin-left: auto;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\twhite-space: nowrap;\n\tfont-variant-numeric: tabular-nums;\n}\n\n#sigTable tbody tr.sig-filtered { display: none; }\n\n/* Unscanned rows are outstanding work; mark the id rather than shouting the\n whole row, the way Aperture marks the still-empty required cells. */\n#sigTable tbody tr.sig-unscanned > td:first-child {\n\tbox-shadow: inset 2px 0 0 var(--data-info);\n}\n\n/* Site-safety glyph, derived from the group. A combat site is somewhere rats\n can shoot you; an exploration site is not; a wormhole is neither. */\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before,\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: .5em; height: .5em;\n\tmargin-right: .45em;\n\tborder-radius: 50%;\n\tvertical-align: .05em;\n}\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before { background: var(--data-critical); }\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before { background: var(--data-good); }\n\n/* Chip labels sit on a fill now, so they take the full-strength text colour --\n muted-on-muted was the low-contrast case that made these hard to read. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tcolor: var(--foreground);\n}\n","/* ============================================================================\n DESKTOP LAYOUT\n\n Everything below fixes one root cause: the desktop layout was gridster's\n fixed pixel grid, positioned absolutely from saved coordinates. It did not\n use the window it was in -- at 1600x1000 the panels stopped at 1250x440 and\n the rest was raw background plus footer, which read as a page that had not\n finished loading.\n\n The grid now fills the viewport at every width. The panel registry still\n controls what is shown; what is gone is drag-and-resize, which only existed\n to work around a layout that never fit in the first place.\n ========================================================================= */\n\n/* Desktop only. Below 1280px the READ and EDIT bands in\n _override-5-responsive.css own the layout: panels return to document flow\n and the page scrolls. These rules used to apply at every width, which put\n three columns on a 375px phone with two of them off the right edge -- the\n responsive file sorts earlier and could not win. The guard is what the\n earlier file was always assuming. */\n@media (min-width: 960px) {\n\thtml, body { height: 100%; overflow: hidden; }\n\n\t#wrapper {\n\t\theight: 100vh;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#inner-wrapper {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#topbar { flex: 0 0 auto; position: static; }\n\n\t.gridster {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tvisibility: visible !important;\n\t\tpadding: var(--space-2);\n\t\tbox-sizing: border-box;\n\t}\n\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: 100% !important;\n\t\tmargin: 0 !important;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\n\t\tdisplay: grid;\n\t\tgap: var(--space-2);\n\t\t/* Weighted by how much each panel earns: signatures widest, notes least. */\n\t\tgrid-template-columns: minmax(260px, 1fr) minmax(340px, 1.35fr) minmax(220px, 0.85fr);\n\t\t/* The chain is the reason the tool exists, so it takes what is left. */\n\t\tgrid-template-rows: minmax(180px, 32vh) 1fr;\n\t}\n}\n\n.gridWidget {\n\tposition: static !important;\n\twidth: auto !important;\n\theight: auto !important;\n\tmin-height: 0;\n\tmargin: 0 !important;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\n.gridWidget > .controls {\n\tposition: static !important;\n\tflex: 0 0 auto;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n}\n\n.gridWidget > .content {\n\tposition: static !important;\n\tflex: 1 1 auto;\n\tmin-height: 0;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n\toverflow: auto;\n}\n\n#chainWidget { grid-column: 1 / -1; }\n\n/* Resize handles belong to a grid that no longer exists. */\n.grid-resize { display: none !important; }\n\n/* A hidden panel should give its space back now the grid can reflow. */\n.gridWidget.panel-hidden { display: none !important; }\n\n/* ============================================================================\n BACKGROUND\n\n The image was the brightest, highest-contrast thing on screen, showing\n through translucent panels and pulling the eye off the data every time. It\n stays -- it is the corp's ship -- but well behind a wash, and the panels go\n opaque so nothing reads through them.\n ========================================================================= */\n\n#wrapper::before {\n\tcontent: \"\";\n\tposition: fixed;\n\tinset: 0;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\tcolor-mix(in oklab, var(--background) 88%, transparent),\n\t\tcolor-mix(in oklab, var(--background) 94%, transparent)\n\t);\n\tpointer-events: none;\n\tz-index: 0;\n}\n\n#inner-wrapper { position: relative; z-index: 1; }\n\n.gridWidget {\n\tbackground-color: var(--card); /* opaque: nothing reads through a panel */\n}\n\n/* ============================================================================\n FOOTER\n Donation plea, a yellow button and a wall of CCP legalese, centred on the\n background. It belongs on the landing page, not on the instrument.\n ========================================================================= */\n\n#footer { display: none !important; }\n\n/* ============================================================================\n TOPBAR\n Was a left cluster and a right cluster with ~1000px of nothing between.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: 0 var(--space-3);\n\theight: auto;\n\tmin-height: 2.6rem;\n\tline-height: normal;\n}\n#topbar > .align-left { display: flex; align-items: center; gap: var(--space-3); flex: 1 1 auto; }\n#topbar > .align-right { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; padding-right: 0; }\n#topbar h1, #topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* ============================================================================\n DENSITY AND EMPHASIS\n Everything was the same mid-grey, so nothing said where to look.\n ========================================================================= */\n\n/* The chain panel is the subject; give its header the accent rule. */\n#chainWidget > .controls { border-bottom-color: color-mix(in oklab, var(--primary) 45%, var(--border)); }\n#chainWidget .panel-title { color: var(--primary); }\n\n/* Gate chips should not strand a single item on its own line. */\n.gate-list { row-gap: var(--space-1); }\n.gate-chip { flex: 0 0 auto; }\n\n/* Panel headers all one height, whatever they contain. */\n.gridWidget > .controls { min-height: 2.1rem; }\n\n/* The activity graph earns its space or gives it up. */\n#activityGraph { min-height: 0; }\n#activityGraph.is-sparse { height: 84px !important; opacity: .75; }\n#activityGraphControls { margin-top: var(--space-1); }\n\n/* gridster.css sets `.gridster .gs-w { background: var(--scrim-60) }` -- two\n classes, which outranks a plain .gridWidget. That translucent scrim is what\n let the background image read straight through every panel. */\n.gridster .gs-w,\n.gridster .gridWidget {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n}\n\n/* With every panel opaque the background image is hidden completely, which\n throws away the one piece of brand on the page. The chain panel is the one\n surface with real empty space, so it alone stays slightly translucent -- the\n ship reads faintly behind the map and nowhere near the tables. */\n.gridster .gs-w#chainWidget {\n\tbackground-color: color-mix(in oklab, var(--card) 88%, transparent);\n}\n\n/* The map itself sits on nothing, so the node is what stands out. */\n#chainWidget > .content { background: transparent; }\n\n/* ============================================================================\n PROPORTION, WITH REAL DATA IN FRONT OF ME\n\n A one-signature system flattered the 32vh top row. With a dozen signatures\n the table shows four and clips, while the chain holds 60% of the screen for\n a single node. Signatures are what you read during a scan, so the top row\n grows and the chain takes what is left rather than the reverse.\n ========================================================================= */\n\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ============================================================================\n SIGNATURE TABLE COLUMN SIZING\n The id was wrapping mid-value (\"ABC-\" / \"111\"), the group was stated twice\n (dot plus word), site names were centre-aligned under a left-aligned header,\n and life/mass held full width while empty for every non-wormhole row.\n ========================================================================= */\n\n#sigTable { table-layout: fixed; }\n\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.5rem; white-space: nowrap; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6rem; white-space: nowrap; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.5rem; white-space: nowrap; }\n#sigTable th:nth-child(4), #sigTable td:nth-child(4) { width: auto; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 4.5rem; white-space: nowrap; }\n\n/* Everything reads left except the state columns, which line up on the right\n so they scan as a pair. */\n#sigTable td, #sigTable th { text-align: left; }\n#sigTable td:nth-child(5), #sigTable th:nth-child(5),\n#sigTable td:nth-child(6), #sigTable th:nth-child(6) { text-align: right; }\n\n/* The alignment classes the app writes inline fight the above. */\n#sigTable td.centerAlign, #sigTable td.rightAlign { text-align: inherit; }\n\n/* The signature id is an identifier; never break it. */\n#sigTable td:nth-child(1) { font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; }\n\n/* Header row is chrome, not content. */\n#sigTable thead th { position: sticky; top: 0; background: var(--card); z-index: 1; }\n\n/* ============================================================================\n HIERARCHY\n Three text tokens used almost interchangeably meant nothing led the eye.\n Primary content sits at full strength, supporting detail steps back.\n ========================================================================= */\n\n.sys-panel .sys-name { color: var(--foreground); font-weight: 600; }\n.sys-statics, .sys-extra { color: var(--card-foreground); }\n.sys-links a, #version,\n#activityGraphControls a,\n.sig-stats { color: var(--muted-foreground); }\n\n/* The filter bar is a control surface; it should sit quieter than the rows it\n filters. */\n.sig-filter { padding: var(--space-1) var(--space-2); }\n.sig-chip { font-size: calc(var(--fs-xs) * 0.95); }\n\n/* The version chip was absolutely positioned at top:4px right:20px inside the\n logo, which worked when the topbar was a line-height hack. In a flex row it\n lands on top of the wordmark. It is a sibling, so it sits like one. */\n#topbar #logo { position: static; display: flex; align-items: baseline; gap: var(--space-2); }\n\n#version {\n\tposition: static;\n\ttop: auto; right: auto;\n\theight: auto;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Panel visibility menu, opened from the layout control. */\n#panel-menu {\n\tposition: absolute;\n\tz-index: 3000;\n\tmin-width: 12rem;\n\tpadding: var(--space-1) 0;\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.5);\n}\n#panel-menu button {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\twidth: 100%;\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\ttext-align: left;\n\tpadding: var(--space-1) var(--space-3);\n\tmin-height: 0;\n}\n#panel-menu button:hover { background: var(--muted); }\n#panel-menu .tick { width: 1em; color: var(--primary); }\n\n/* ============================================================================\n CHARACTER PORTRAIT\n\n EVE portraits are square, so they need masking to read as an avatar. Served\n from images.evetech.net -- image.eveonline.com is the retired host and the\n settings portrait was still pointing at it.\n ========================================================================= */\n\n.avatar {\n\tdisplay: inline-block;\n\twidth: 1.6rem;\n\theight: 1.6rem;\n\tborder-radius: 50%;\n\tobject-fit: cover;\n\tvertical-align: middle;\n\tbackground: var(--muted);\n\t/* A thin ring keeps a dark portrait from bleeding into a dark topbar. */\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#topbar #user {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-2);\n}\n\n.avatar-lg {\n\twidth: 3.4rem;\n\theight: 3.4rem;\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#dialog-options #avatar { padding-right: var(--space-3); vertical-align: top; }\n\n/* account.css sets `#login img { border-radius: 3px }` -- an id plus an\n element, which outranks .avatar and squared the portrait off again. */\n#login img.avatar,\n#topbar img.avatar,\nimg.avatar {\n\tborder-radius: 50%;\n}\n\n/* Corporation and alliance logos are marks, not faces; they stay square. */\nimg.logo {\n\twidth: 1.6rem; height: 1.6rem;\n\tobject-fit: contain;\n\tvertical-align: middle;\n}\n","/* ============================================================================\n CHAIN TAB STRIP\n\n On a busy corp map this is the primary navigation -- the chain runs\n roughly sixteen screen widths, so you reach a system by picking its chain,\n not by scrolling to it. Thirteen-plus tabs is normal.\n\n The old strip could not survive that: `.tab { min-width: 75px }` with no\n overflow handling meant thirteen tabs demanded ~975px and simply pushed the\n rest of the header off the right edge. It also used floats inside\n inline-blocks with text-align:right, so the label and its controls fought\n each other.\n\n Now: one scrolling row that takes the space left over, with every other\n control held in place beside it.\n ========================================================================= */\n\n#chainWidget > .controls {\n\tflex-wrap: nowrap;\n\tgap: var(--space-2);\n}\n\n/* Everything that is not the strip keeps its size. */\n#chainWidget > .controls > *:not(#chainTabs) { flex: 0 0 auto; }\n\n#chainTabs {\n\tflex: 1 1 auto;\n\tmin-width: 0; /* without this a flex child refuses to shrink */\n\tdisplay: flex;\n\talign-items: stretch;\n\tgap: 2px;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscrollbar-width: thin;\n\tscroll-snap-type: x proximity;\n\t/* Fade the edges so it is obvious there are more chains off-screen. */\n\tmask-image: linear-gradient(to right, transparent 0, #000 12px,\n\t #000 calc(100% - 12px), transparent 100%);\n}\n\n#chainTabs::-webkit-scrollbar { height: 4px; }\n#chainTabs::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 999px; }\n#chainTabs::-webkit-scrollbar-track { background: transparent; }\n\n/* ---- the tab itself ----------------------------------------------------- */\n\n#chainTabs .tab {\n\tflex: 0 0 auto;\n\tmin-width: 0; /* was 75px, which is what broke the header */\n\tmax-width: 12rem;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm) var(--radius-sm) 0 0;\n\tborder-bottom: 2px solid transparent;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1.6;\n\ttext-align: left;\n\twhite-space: nowrap;\n\tscroll-snap-align: start;\n\ttransition: color .12s ease, background-color .12s ease, border-color .12s ease;\n}\n\n#chainTabs .tab:hover {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--border-strong);\n}\n\n/* The active chain is where you are; a 2px blue rule was too quiet for the\n one control you navigate by. */\n#chainTabs .tab.current {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n\tfont-weight: 600;\n}\n\n/* Floats inside an inline-block, with the row right-aligned, meant the label\n and its buttons never agreed on a baseline. */\n#chainTabs .tab .name {\n\tfloat: none;\n\tpadding-left: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n#chainTabs .tab .closeTab,\n#chainTabs .tab .editTab {\n\tfloat: none;\n\tflex: 0 0 auto;\n\tpadding: 0 2px;\n\tfont-size: .85em;\n\tline-height: 1;\n\tcolor: var(--muted-foreground);\n}\n\n/* Reveal the controls on the tab you are pointing at, and always on the active\n one -- otherwise renaming the chain you are in means hunting for a target\n that appears only on hover. */\n#chainTabs .tab:hover .closeTab,\n#chainTabs .tab:hover .editTab,\n#chainTabs .tab.current .closeTab,\n#chainTabs .tab.current .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#chainTabs .tab .closeTab:hover { color: var(--destructive); }\n#chainTabs .tab .editTab:hover { color: var(--primary); }\n\n/* While dragging to reorder. */\n#chainTabs .ui-sortable-helper {\n\tbackground: var(--card);\n\tborder-color: var(--border);\n\tbox-shadow: 0 4px 12px rgba(0,0,0,.4);\n}\n\n/* The chain panel's own title is redundant next to a strip of named chains,\n and at thirteen tabs the space is worth more than the label. */\n#chainWidget .panel-title { display: none; }\n\n/* ============================================================================\n PANEL HEADER: RIGHT-ANCHORED CONTROLS\n\n .controls is a flex row, and two of its children carried `margin-left: auto`\n -- the group the markup floats right, and the panel-hide button. Flexbox\n divides free space equally between every auto margin, so instead of both\n sitting at the right edge the trailing group was parked in the middle of\n the header (measured: 203px short of the right in System, 206px in\n Signatures, 168px in Notes).\n\n Exactly one element opens the gap. Everything after it packs against the\n right edge behind it.\n ========================================================================= */\n\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n}\n\n/* No second auto margin -- this just follows the group above. */\n.gridWidget > .controls > .panel-hide { margin-left: 0; }\n\n/* If a panel ever has no floated group, the hide button still needs to open\n the gap itself. :only-of-type is too narrow, so match on it being the sole\n right-hand item. */\n.gridWidget > .controls > div[style*=\"float\"] ~ .panel-hide { margin-left: 0; }\n.gridWidget > .controls > .panel-hide:first-of-type { margin-left: auto; }\n\n/* The chain header sizes its strip with flex-grow instead, so nothing there\n should also claim the free space. */\n#chainWidget > .controls > div[style*=\"float\"] { margin-left: 0; }\n","/* ============================================================================\n MAIN HEADER\n\n Was one cramped line of unrelated things divided by literal \"|\" characters,\n with two inline `font-size: 1.7em` overrides and a portrait too small to\n recognise.\n\n An earlier attempt made this a grid with `display: contents` on the\n wrappers; that placed every right-hand control into the same grid cell, so\n they stacked and ran off the right edge. A flex row cannot do that: the\n right cluster is one item that keeps its own width.\n\n Server population and EVE time have moved out entirely, to the status bar\n along the bottom -- they are ambient readings, not navigation.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: var(--space-2) var(--space-3);\n\theight: auto;\n\tmin-height: 0;\n\tline-height: normal;\n\tflex-wrap: nowrap;\n}\n\n#topbar > .align-left {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 1 1 auto;\n\tmin-width: 0; /* lets the left side shrink instead of shoving */\n}\n\n#topbar > .align-right {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 0 0 auto; /* never compressed, never pushed out */\n\tpadding-right: 0;\n}\n\n#topbar #logo {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tflex: 0 0 auto;\n}\n#topbar #logo a { font-size: 1.8rem; line-height: 1.1; }\n\n#topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* Twice the previous portrait; the header height follows it. */\n#topbar .avatar { width: 2.4rem; height: 2.4rem; }\n#topbar #user { gap: var(--space-2); font-size: 1.05rem; }\n\n#topbar #settings,\n#topbar #layout { font-size: 1.3rem; flex: 0 0 auto; }\n\n/* The system search takes the slack in the middle rather than the icons. */\n#topbar #systemSearch { flex: 1 1 auto; min-width: 0; }\n\n/* ============================================================================\n STATUS BAR\n\n Ambient readings, out of the way: server population left, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--space-4);\n\tpadding: var(--space-1) var(--space-3);\n\tborder-top: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n}\n\n#statusbar .bar-value { font-variant-numeric: tabular-nums; font-weight: 600; }\n#statusbar #serverStatus.is-down .bar-value { color: var(--data-critical); }\n\n.bar-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n/* ============================================================================\n NOTE EDITOR\n Replaces CKEditor 4's skin. Same visual language as everything else, so the\n editor does not look like a different application embedded in the panel.\n ========================================================================= */\n\n.rte {\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n\toverflow: hidden;\n}\n\n.rte-bar {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 2px;\n\tpadding: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--card) 60%, transparent);\n}\n\n.rte-btn {\n\tmin-width: 1.9rem;\n\tmin-height: 1.9rem;\n\tpadding: 0 var(--space-1);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1;\n\tcursor: pointer;\n}\n.rte-btn:hover { background: var(--accent-surface); color: var(--foreground); border-color: var(--border); }\n\n.rte-sep { width: 1px; align-self: stretch; margin: 2px var(--space-1); background: var(--border); }\n\n.rte-swatch {\n\twidth: 1.1rem; height: 1.1rem;\n\tmin-width: 0; min-height: 0;\n\tpadding: 0;\n\tborder: 1px solid var(--border);\n\tborder-radius: 50%;\n\tcursor: pointer;\n}\n.rte-swatch:hover { transform: scale(1.15); }\n\n.rte-area {\n\tmin-height: 7rem;\n\tmax-height: 22rem;\n\toverflow-y: auto;\n\tpadding: var(--space-2);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tline-height: 1.6;\n\toutline: none;\n}\n.rte-area:focus { background: var(--background); }\n.rte-area a { color: var(--primary); }\n.rte-area ul, .rte-area ol { padding-left: 1.4em; margin: .3em 0; }\n","/* ============================================================================\n TYPOGRAPHY: ONE FAMILY\n\n The stylesheets declare thirteen different font stacks -- Arial, Verdana,\n \"Arial, verdana, tahoma\", lucida, bare sans-serif, and so on. Most were\n already being overridden by the body rule, but two rules still resolved\n to `lucida`, and any of the rest would resurface the moment a component was\n touched.\n\n One family everywhere, except the icon font and deliberate monospace.\n ========================================================================= */\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n[data-icon], [data-icon]::before, [data-icon]::after,\n.icon, .icon::before { font-family: 'icon' !important; }\n\ncode, pre, .mono,\n#sigTable td:nth-child(1),\n#statusbar .bar-value,\n#topbar #serverTime { font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n SETTINGS SECTION HEADINGS\n\n They were sticky, which needed a solid background to avoid text scrolling\n through them -- and the background did not match every surface they crossed,\n so they rendered as a band that did not line up. Sticky buys little in a\n dialog this short. They are plain headings now.\n ========================================================================= */\n\n.settings-sections > h3 {\n\tposition: static;\n\tbackground: transparent;\n}\n\n/* ============================================================================\n HEADER: NEVER CLIP THE RIGHT CLUSTER\n\n Reported repeatedly. The right cluster is fixed-size and the left is\n flexible, but the left contains a search input with an intrinsic minimum\n width, so at narrow widths it refused to shrink and pushed the icons past\n the edge. Truncating the left is always preferable to losing a control.\n ========================================================================= */\n\n#topbar > .align-left { overflow: hidden; }\n#topbar #systemSearch,\n#topbar #currentSpan,\n#topbar #searchSpan { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n#topbar #systemSearch input[type=\"text\"] { max-width: 14rem; min-width: 0; }\n#topbar > .align-right { z-index: 2; }\n\n/* ============================================================================\n SYSTEM PANEL: BREATHING ROOM AT THE TOP\n The system name sat hard against the panel header.\n ========================================================================= */\n\n.sys-panel { padding-top: var(--space-4); }\n.sys-panel .sys-name { margin-top: 0; }\n\n/* ============================================================================\n STATUS BAR: THREE SLOTS\n Population left, Tripwire version centred, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto 1fr;\n\talign-items: center;\n}\n#statusbar > #serverStatus { justify-self: start; }\n#statusbar > #version { justify-self: center; }\n#statusbar > #eveTime { justify-self: end; }\n\n/* The chart still renders a few pixels past its box even when told the height,\n because Google Charts adds its own chrome. Clip rather than let it paint over\n what follows. */\n#activityGraph { overflow: hidden; }\n\n/* Two rules still resolved to the bundled `lucida` face. */\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n/* signatures.css uses a bundled `lucida` TTF for the signature-id column, to\n keep ids aligned down the column. The intent is right; shipping a font file\n for one column is not. A system monospace stack with tabular figures does\n the same job with no download. */\n#sigTable td:nth-child(1) {\n\tfont-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n\tfont-variant-numeric: tabular-nums;\n\tletter-spacing: .04em;\n}\n\n/* ── The header overflow, root cause ─────────────────────────────────────\n #topbar is content-box (this stylesheet predates border-box being the\n default anyone reaches for), so `width: 100%` plus `padding: 6px 9px`\n resolves to viewport + 18px. The bar hangs 18px off the right of the\n screen and the last control -- the layout icon -- is cut in half.\n\n Every check I ran against this measured `scrollWidth - clientWidth` on\n the bar, which is 0: the bar is not overflowing its own box, its box is\n bigger than the viewport. The document does not report it either,\n because overflow-x is hidden upstream. Both numbers read clean while\n the icon was visibly severed. The right question is whether the bar's\n right edge exceeds documentElement.clientWidth.\n\n Padding belongs inside the width. */\n#topbar {\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tmax-width: 100%;\n}\n","/* ============================================================================\n POLISH PASS\n\n Six things, all of which come back to the same habit: space and weight were\n applied per-element as each one was noticed, so nothing shared a rule and\n nothing agreed with anything else. These set the shared rules.\n ========================================================================= */\n\n/* ── 1. PANEL INSETS ─────────────────────────────────────────────────────\n Measured before writing this, per panel, first painted child against the\n content box:\n\n Notes padding 0 -- \"Posted by\" flush against the left border\n Signatures padding 0 -- filter chips flush against both\n Chain padding 0 -- correct, the map is meant to be full bleed\n System 12px 9px 9px -- three different values, none of them a\n token, top too tight to read as intended\n\n Content that touches its own frame reads as a rendering fault, which is\n what it looked like. One inset, one token, every panel. */\n\n/* Explicit pixels, not var(--space-4). The root font-size here is 12px, not\n the 16px rem maths assumes, so every rem-based value lands 25% short of\n what it reads as -- var(--space-4) is \"1rem\" and resolves to 12px. Rather\n than redefine the scale under everything already tuned against it, the\n values that need to be a specific size are stated as that size. */\n.gridWidget > .content,\n#infoWidget > .content,\n#notesWidget > .content,\n#signaturesWidget > .content {\n\tpadding: 16px;\n\tbox-sizing: border-box;\n\toverflow: auto;\n\tmin-height: 0;\n}\n\n/* The map is the exception and stays edge to edge: it is a canvas that pans,\n and an inset would clip it rather than frame it. The breathing room goes\n inside the scroll area instead, so nodes never butt against the divider. */\n#chainWidget > .content { padding: 0; min-height: 0; overflow: hidden; }\n#chainParent { padding: var(--space-3); box-sizing: border-box; max-height: 100%; overflow: auto; }\n\n/* Rhythm between the blocks inside a panel, which previously had none. */\n#sigFilterBar { margin-bottom: var(--space-3); }\n.sys-panel > * + * { margin-top: var(--space-3); }\n#activityGraphControls { margin-top: var(--space-2); }\n\n/* ── 2. SPACE ALLOCATION ─────────────────────────────────────────────────\n Rows were fixed at 46vh regardless of what was in them. Measured fill:\n\n Notes 82% empty\n Signatures 48% empty\n System 3% empty (close to overflowing)\n Chain -60% (501px of map in a 312px box)\n\n Notes held a third of the screen for one line while the map -- the reason\n the tool exists -- was the only panel that could not fit its content. The\n top row gives some back and notes narrows, since it is the panel that\n demonstrably needs least. */\n/* The top row stays where it was. Taking 6vh off it to feed the chain made\n the System panel clip instead -- it needs 341px and 40vh gave it 320 -- and\n a panel you have to scroll to see the statics is a worse trade than a map\n that pans, which is what a map is for. The chain \"overflowing\" was my own\n mis-framing: a canvas sixteen screens wide is supposed to exceed its box.\n What was actually wrong with it was that it never scrolled to where you\n are, which is fixed in the renderer rather than here. */\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-columns: minmax(230px, 1fr) minmax(320px, 1.5fr) minmax(190px, 0.78fr);\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ── 3. TYPE SCALE ───────────────────────────────────────────────────────\n Footer 9.6px, body ~11px, panel titles 12px: three sizes inside three\n pixels, which reads as inconsistency rather than hierarchy. The footer was\n also simply too small to read, and it is the only place the server's\n player count and EVE time appear. */\n#statusbar { font-size: 11px; }\n#statusbar .bar-label { font-size: inherit; letter-spacing: .07em; opacity: .72; }\n#statusbar .bar-value { font-size: inherit; font-variant-numeric: tabular-nums; }\n\n/* ── 4. AVATAR ───────────────────────────────────────────────────────────\n The header was given room for a larger portrait and then never used it. */\n#topbar #user-avatar.avatar { width: 34px; height: 34px; }\n#topbar #login h3 { display: inline-flex; align-items: center; gap: var(--space-2); }\n\n/* ── 5. GRAPH AXIS ───────────────────────────────────────────────────────\n The chart borrowed --border for its gridlines and --muted-foreground for\n its numbers, and both pull the wrong way: a gridline sits *behind* the\n data and should be lighter than a panel border, while the numbers are\n values you read off the chart, not labels you skim. Dedicated tokens. */\n:root {\n\t--chart-gridline: rgba(255, 255, 255, .055);\n\t--chart-axis-text: #b7b7b7;\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--chart-gridline: rgba(0, 0, 0, .075);\n\t\t--chart-axis-text: #4a4a4a;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--chart-gridline: rgba(0, 0, 0, .075);\n\t--chart-axis-text: #4a4a4a;\n}\n\n/* ── 6. EMPTY STATES ─────────────────────────────────────────────────────\n An empty box is indistinguishable from a broken one. Both of these are\n normal states -- a system nobody has annotated, a system whose hourly\n activity has not accumulated yet -- and should say so. */\n#comment-container:not(:has(.comment:not(.hidden)))::before,\n#activityGraph.is-empty::before {\n\tcontent: attr(data-empty);\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n/* :empty could never match -- the container always holds the hidden template\n row -- so the empty state never showed. :has() asks the real question. */\n#comment-container:not(:has(.comment:not(.hidden)))::before { content: \"No notes on this system yet.\"; }\n#activityGraph.is-empty { height: auto; min-height: 0; }\n\n/* ── 7. GATE CHIPS ───────────────────────────────────────────────────────\n Was \"Ikuchi ( HS )\" per gate, six of them wrapping to three rows. The\n brackets are noise and the security repeats as text what colour already\n says. Name plus a security badge, on one or two rows instead of three. */\n.gate-list { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }\n.gate-list-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: 10px;\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n}\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-1) 2px var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: 11px;\n\tline-height: 1.6;\n\ttext-decoration: none;\n}\n/* The chip is the link itself. Pair the brand's primary fill with its\n explicitly chosen on-primary ink so hover cannot become blue on orange. */\n.gate-chip:hover {\n\tbackground: var(--primary);\n\tcolor: var(--primary-foreground);\n\ttext-decoration: none;\n}\n.gate-chip .gate-sec {\n\tpadding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\tfont-size: 9px;\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n/* The badge paints the security colour as its ground; the letters knock out\n of it. currentColor above is the security class colour inherited from the\n named-colour mapping, so the fill stays correct in both themes. */\n.gate-chip .gate-sec::after { content: none; }\n.gate-chip .gate-sec { -webkit-text-fill-color: var(--card); }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* ── 8. SIGNATURE COLUMNS ────────────────────────────────────────────────\n Leads To held 168px against 66-84px for everything else, with slack left\n over; life and mass were cramped for no reason while the id column had\n room to spare. */\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.25rem; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6.5rem; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.25rem; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 5rem; }\n\n\n/* ── 9. THE NOTES OVERLAP ────────────────────────────────────────────────\n Not a spacing problem -- the two lines were drawn on top of each other.\n\n .commentToolbar contains a floated .commentTitle. Nothing contained the\n float, so the toolbar collapsed to 26px while the title's two lines ran\n 67px, and .commentBody was laid out from the collapsed height: body at\n y=130 with the title still painting to y=172. Measured, not inferred.\n\n The float dates from a layout that no longer exists. Flex row, and the\n toolbar is the height of its contents. */\n.comment {\n\tpadding: var(--space-2) 0;\n\tborder-bottom: 1px solid var(--border);\n}\n.comment:last-child { border-bottom: 0; }\n\n.commentToolbar {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: space-between;\n\tgap: var(--space-3);\n\tmargin-bottom: 6px;\n}\n.commentToolbar > .commentTitle,\n.commentToolbar > .commentControls {\n\tfloat: none;\n\tmin-width: 0;\n}\n.commentTitle {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1px;\n\tflex: 1 1 auto;\n}\n.commentTitle .commentModified,\n.commentTitle .commentCreated {\n\tdisplay: block;\n\tfont-size: 10px;\n\tline-height: 1.35;\n\tcolor: var(--muted-foreground);\n}\n.commentControls {\n\tdisplay: flex;\n\tgap: var(--space-2);\n\tflex: 0 0 auto;\n\tfont-size: 11px;\n}\n.commentBody { font-size: 12px; line-height: 1.5; }\n.commentBody > *:first-child { margin-top: 0; }\n.commentBody > *:last-child { margin-bottom: 0; }\n\n/* ── 10. THE SYSTEM PANEL IS A FLEX COLUMN ───────────────────────────────\n Which means every block in it is a flex item, and flex items shrink to\n fit by default. In a column that scrolls, nothing should: the whole point\n of the scroll is that content keeps its size and the viewport moves.\n\n The activity graph is where this showed. Computed height 0px around a\n 92px chart SVG, with overflow hidden -- so what rendered was the 8px of\n padding and nothing else, a blank band where the graph should be. Two\n things were doing it at once: the flex shrink above, and a leftover\n `height: 84px !important` clamp from the earlier attempt at sparse\n sizing, which I had described as removed and had not been. The chart\n sizes itself now (activity-graph.js sets options.height), so the\n container must simply take the height it is given. */\n.sys-panel > * { flex: 0 0 auto; }\n\n#activityGraph,\n#activityGraph.is-sparse,\n#activityGraph.is-empty {\n\theight: auto !important;\n\tmin-height: 0;\n\topacity: 1;\n}\n","/* ============================================================================\n READ BAND CHROME (phones, landscape phones)\n\n The layout bands in _override-5 put the panels back in flow; this file is\n the chrome that goes with it. Sorted after every other override so the\n phone wins its own argument -- the header and control-bar rules in\n _override-a/b/c were written for desktop widths and used to apply here too.\n\n Measured before writing: header 125px tall for one row of controls; chain\n panel bar 460px wide in a 375px viewport, with close/edit tab icons and the\n panel-hide control off the right edge.\n ========================================================================= */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t/* One row: avatar, name, corp, settings. The wordmark is redundant next to\n\t the wing mark on a screen this size, and the search field lives in the\n\t palette. */\n\t#topbar {\n\t\tmin-height: 0;\n\t\theight: auto;\n\t\tpadding: 8px 12px;\n\t\tgap: 8px;\n\t}\n\t#topbar { display: flex; min-height: 0; }\n\t#topbar > .align-left { display: flex; flex: 1 1 auto; }\n\t#topbar > .align-left #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-center { display: none; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar .hdr-tools { padding-left: 8px; }\n\t#topbar > .align-right {\n\t\tflex: 1 1 auto;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 12px;\n\t}\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar h3 { margin: 0; font-size: 13px; }\n\n\t.gridster { padding: 12px; }\n\n\t/* Control bars wrap rather than overflow, and the map's editing chrome is\n\t desktop and tablet work -- a phone reads the chain. */\n\t.gridWidget > .controls { flex-wrap: wrap; row-gap: 4px; }\n\t#chainWidget > .controls > div[style*=\"float\"] > i:not(.panel-hide),\n\t#chainWidget > .controls > .control,\n\t#chainWidget > .controls #newTab,\n\t.chainTab .closeTab,\n\t.chainTab .editTab,\n\t#chainTabs .closeTab,\n\t#chainTabs .editTab { display: none !important; }\n\t#chainTabs { flex: 1 1 100%; min-width: 0; order: 2; }\n\n\t/* Google Charts paginates the legend at this width (\"1/2\"). Two rows of\n\t legend beats a pager nobody expected. */\n\t#activityGraph svg > g:first-of-type { }\n}\n\n/* Phone bars: the right-hand group takes its own row rather than being pushed\n past the edge, and the paste control is desktop/tablet work like the rest\n of the editing chrome. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.gridWidget > .controls > .bar-right { flex: 1 1 100%; margin-left: 0; justify-content: flex-end; }\n\t#signaturesWidget #paste-signatures,\n\t#signaturesWidget .bar-sep { display: none !important; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Every control in this group is editing chrome that the READ band hides\n\t individually; the empty group was still taking a row of its own. */\n\t#signaturesWidget > .controls > .bar-right,\n\t#notesWidget > .controls > .bar-right { display: none; }\n}\n\n/* ── Second look at the READ band, from screenshots ─────────────────────\n The header spread name / corp / settings across the full width with\n nothing between them; the panel bars' right-hand group was forced onto\n its own row, which left the hide control alone on a third; and the chain\n bar showed five map icons before the tabs. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-right { justify-content: flex-start; gap: 14px; }\n\t#topbar > .align-right > #settings,\n\t#topbar > .align-right > i#settings { margin-left: auto; }\n\t#topbar > .align-right > #layout { display: none; }\n\n\t.gridWidget > .controls > .bar-right { flex: 0 0 auto; margin-left: auto; }\n\t.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: var(--space-1); }\n\n\t#chainWidget > .controls > #show-viewing,\n\t#chainWidget > .controls > #show-favorite,\n\t#chainWidget > .controls > #show-chainLegend,\n\t#chainWidget > .controls > #hot-jump,\n\t#chainWidget > .controls > #higgs-jump,\n\t#chainWidget > .controls > .bar-sep { display: none !important; }\n\t#chainTabs { order: 0; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Life and mass cells are hidden here, and they were carrying the row's\n\t hover and selected background -- so a wormhole row's highlight stopped\n\t two columns short. Paint the row instead. */\n\t#sigTable tbody tr:hover, #sigTable tbody tr.selected { background-color: var(--muted); }\n\t#sigTable tbody tr:hover > td, #sigTable tbody tr.selected > td { background-color: transparent; }\n}\n","/* ============================================================================\n THE SCALE\n\n Measured on the main screen at 1920x1080: fourteen font sizes, seven border\n radii, nine control heights, eight icon sizes. Almost none of it chosen --\n the tokens were written in rem against a 12px root, so \"0.8rem\" rendered\n at 9.6px and \"0.76rem\" at 9.12px, and every component that reached for a\n size got a slightly different one.\n\n Six sizes, in pixels, and every token that feeds a size resolves to one of\n them. Anything below 11px is not for reading.\n ========================================================================= */\n\n:root {\n\t--fs-xs: 11px;\n\t--fs-sm: 12px;\n\t--fs-base: 13px;\n\t--fs-md: 15px;\n\t--fs-lg: 18px;\n\t--fs-xl: 24px;\n\n\t/* Two radii and a pill. Inputs and chips at 4, cards and dialogs at 8. */\n\t--radius: 8px;\n\t--radius-md: 8px;\n\t--radius-sm: 4px;\n\n\t/* Two control heights: dense (bars, rows, chips) and standard (dialog\n\t inputs, primary buttons). Coarse pointers raise the floor to 44 in\n\t _override-5-responsive.css. */\n\t--control-dense: 28px;\n\t--control-standard: 36px;\n\n\t/* One icon size inline and in bars; one in the header. */\n\t--icon: 16px;\n\t--icon-lg: 20px;\n}\n\nbody { font-size: var(--fs-base); }\n\n/* Icons take the token, not whatever size their parent happened to be. */\n[data-icon]::before { font-size: var(--icon); line-height: 1; }\n#topbar [data-icon]::before { font-size: var(--icon-lg); }\n\n/* Dialog inputs and buttons at the standard height; the bars stay dense. */\n.ui-dialog input[type=\"text\"], .ui-dialog input[type=\"password\"],\n.ui-dialog input[type=\"number\"], .ui-dialog select,\n.ui-dialog .ui-selectmenu-button {\n\tmin-height: var(--control-standard);\n\tbox-sizing: border-box;\n}\n.ui-dialog-buttonpane button { min-height: var(--control-standard); }\n\n/* ============================================================================\n LIGHT THEME SURFACES\n\n The light theme flipped cleanly but had no depth: body and card were both\n oklch(1 0 0), pure white on pure white, with a 1px border doing all the\n work. The dark theme gets its hierarchy from the card being lighter than\n the ground; the light theme gets the same from the ground being warmer\n than the card. Same three-state structure as _override-1-system.css.\n ========================================================================= */\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(0.962 0.006 80);\n\t\t--card: oklch(1 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--muted: oklch(0.955 0.005 80);\n\t\t--accent-surface: oklch(0.955 0.005 80);\n\t\t--border: oklch(0.90 0.006 80);\n\t\t--border-strong: oklch(0.82 0.008 80);\n\t\t--input: oklch(0.90 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(0.962 0.006 80);\n\t--card: oklch(1 0 0);\n\t--popover: oklch(1 0 0);\n\t--muted: oklch(0.955 0.005 80);\n\t--accent-surface: oklch(0.955 0.005 80);\n\t--border: oklch(0.90 0.006 80);\n\t--border-strong: oklch(0.82 0.008 80);\n\t--input: oklch(0.90 0.006 80);\n}\n\n/* ============================================================================\n SYSTEM PANEL ALIGNMENT\n\n Name, security, gates and routes were left-aligned; the graph legend, the\n range chips and the external links were centred. Two alignment systems in\n one 300px column, switching at the graph. One system.\n ========================================================================= */\n\n#activityGraphControls,\n.sys-range,\n#infoLinks,\n.sys-links {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tgap: var(--space-2);\n\ttext-align: left;\n}\n#infoLinks { border-top: 0; padding-top: 0; }\n#infoLinks a, .sys-links a { padding: 0; }\n\n/* ============================================================================\n NOTES, CONTENT FIRST\n\n \"Posted by Cormorant Fell at 2026-09-01 03:16:48\" was the first line of\n every note and the note itself came second. The reader wants the note.\n Author and time become one muted line beneath it; edit controls appear on\n hover or focus rather than sitting on every note permanently.\n ========================================================================= */\n\n/* :not(.hidden) matters. A bare .comment rule outranked .hidden's display:none\n (same specificity, later in the cascade), which made the hidden template\n row *visible* -- and systemChange.js removes every `.comment:visible` on a\n system change. That deleted the template, parse() had nothing to clone,\n and no note rendered anywhere. Measured: 0 comments in the DOM with 1 in\n the payload, and no template. */\n.comment:not(.hidden) { display: flex; flex-direction: column; }\n.comment.hidden { display: none !important; }\n.comment > .commentBody { order: 1; }\n.comment > .commentToolbar { order: 2; margin: 6px 0 0; }\n.comment > .commentFooter { order: 3; }\n\n.commentTitle { flex-direction: row; flex-wrap: wrap; gap: 0 var(--space-2); align-items: baseline; }\n.commentTitle .commentCreated,\n.commentTitle .commentModified { font-size: var(--fs-xs); }\n.commentTitle .commentModified.is-same { display: none; }\n\n.comment .commentControls { opacity: 0; transition: opacity .12s ease; }\n.comment:hover .commentControls,\n.comment:focus-within .commentControls { opacity: 1; }\n@media (pointer: coarse) { .comment .commentControls { opacity: 1; } }\n\n/* ============================================================================\n PHONE, LEFTOVERS FROM _override-d\n The chain tab strip scrolls internally -- its children past the edge are\n expected -- but the panel-hide control was being pushed off with them.\n Hiding the chain on a phone is not a thing anyone does.\n ========================================================================= */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainWidget > .controls .panel-hide { display: none !important; }\n\t#chainTabs { flex: 1 1 auto; max-width: 100%; }\n}\n\n/* ============================================================================\n THE HOLDOUTS, MEASURED AFTER THE FIRST PASS\n Twelve sizes remained. Each of these was an em-relative size on a\n component that never reached for a token.\n ========================================================================= */\n.sig-chip, .sig-filter .sig-chip { font-size: var(--fs-xs); }\n#topbar h3, #topbar h3 a, #EVEsystem,\n#topbar #mask, #topbar #user-track-name { font-size: var(--fs-base); }\n#topbar #logo a { font-size: var(--fs-xl); }\n.sys-meta, #infoSecurity, .sys-meta .chip { font-size: var(--fs-sm); }\n.gate-chip .gate-sec { font-size: var(--fs-xs); height: 15px; padding: 0 5px; }\nkbd { font-size: var(--fs-xs); }\n.node .nodeClass, .node .nodeType { font-size: var(--fs-xs); }\n\n/* Heights: chips at 22, bars and header controls at 28, dialogs at 36.\n bar-btn measured 30 because the height was content-box plus its border. */\n.controls .bar-btn { box-sizing: border-box; height: var(--control-dense); }\n.sig-chip, .gate-chip, h4.chip, .chip {\n\tbox-sizing: border-box;\n\theight: 22px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding-top: 0; padding-bottom: 0;\n}\n#topbar > .align-right > i[data-icon],\n#topbar #search, #topbar #follow {\n\tbox-sizing: border-box;\n\theight: var(--control-dense);\n\tmin-width: var(--control-dense);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: var(--radius-sm);\n}\n#topbar > .align-right > i[data-icon]:hover { background: var(--muted); }\n\n/* ── Graph legend as chips, in the controls row ──────────────────────── */\n#activityGraphControls { justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-3); }\n#activityLegend { display: inline-flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }\n#activityLegend .legend-chip {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 22px; padding: 0 8px 0 6px;\n\tborder: 1px solid transparent; border-radius: 999px;\n\tbackground: transparent; color: var(--foreground);\n\tfont-size: var(--fs-xs); font-weight: 500; cursor: pointer;\n}\n#activityLegend .legend-chip:hover { background: var(--muted); border-color: var(--border); }\n#activityLegend .legend-chip .swatch { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }\n#activityLegend .legend-chip.off { color: var(--muted-foreground); }\n#activityLegend .legend-chip.off .swatch { opacity: .3; }\n#activityGraphControls > a { margin-left: 0; }\n/* space-between was distributing the three range links across the row along\n with the legend; the legend takes the slack and the ranges stay a group. */\n#activityGraphControls { justify-content: flex-start; }\n#activityLegend { margin-right: auto; }\n","/* ============================================================================\n ONE DIALOG\n\n Every real workflow -- add, edit, settings, ping, confirm -- runs through a\n jQuery UI dialog, and jQuery UI's structure showed through the restyle:\n its titlebar, its button pane as a separate strip, buttons in whatever\n order the config object listed them. The panels are the branch's; the\n dialogs were the library's. This makes the dialog the same object as the\n command palette: one surface, one radius, a header with a title and one\n close, a body, and a footer with the primary action filled and on the\n right, the quiet action beside it, the destructive one alone on the left.\n\n jQuery UI stays underneath for positioning and focus. Only the skin and\n the button roles change; dialog-polish.js assigns the roles.\n ========================================================================= */\n\n.ui-dialog {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45);\n\tpadding: 0;\n\tmax-width: min(94vw, 720px);\n\toverflow: hidden;\n}\n.ui-dialog-shadow { box-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45); }\n\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: var(--space-3) var(--space-4);\n\tmin-height: var(--control-standard);\n\tbackground: transparent;\n\tborder-bottom: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tletter-spacing: .1em;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tfont-size: var(--fs-base);\n\tline-height: 1.5;\n}\n\n/* ---- footer ---------------------------------------------------------- */\n.ui-dialog .ui-dialog-buttonpane {\n\tpadding: var(--space-3) var(--space-4);\n\tborder-top: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tgap: var(--space-2);\n\tfloat: none;\n\twidth: 100%;\n}\n.ui-dialog-buttonpane button {\n\torder: 2;\n\tmargin: 0;\n\tpadding: 0 var(--space-4);\n\tmin-height: var(--control-standard);\n\tborder-radius: var(--radius-sm);\n\tfont-size: var(--fs-base);\n\tfont-weight: 500;\n}\n/* Quiet: cancel, close, and the \"reset\" style choices that are not destructive. */\n.ui-dialog-buttonpane button.is-quiet {\n\torder: 1;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-quiet:hover {\n\tborder-color: transparent;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n}\n/* Primary: filled, last. */\n.ui-dialog-buttonpane button.is-primary {\n\torder: 3;\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 88%, white);\n\tcolor: var(--primary-foreground);\n}\n/* Destructive: alone on the left, red only when approached. */\n.ui-dialog-buttonpane button.is-destructive {\n\torder: 0;\n\tmargin-right: auto;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground: transparent;\n}\n.ui-dialog-buttonpane button[disabled],\n.ui-dialog-buttonpane button.ui-state-disabled { opacity: .45; pointer-events: none; }\n\n/* Modal scrim, one value. */\n.ui-widget-overlay { background: rgba(0,0,0,.55); opacity: 1; }\n\n/* ============================================================================\n FORM ROWS INSIDE DIALOGS\n The palette's row is the dialog's row: label left in a quiet weight,\n control right, one vertical rhythm.\n ========================================================================= */\n\n.settings { display: flex; flex-direction: column; gap: 0; }\n\n.settings-tabs {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tmargin: calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) var(--space-4);\n\tpadding: 0 var(--space-4);\n\tborder-bottom: 1px solid var(--border);\n}\n.settings-tabs [role=\"tab\"] {\n\tborder: 0;\n\tborder-bottom: 2px solid transparent;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tpadding: var(--space-3) var(--space-2);\n\tmargin-bottom: -1px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n}\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); background: transparent; }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] {\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n}\n\n.settings-pane { display: flex; flex-direction: column; gap: var(--space-2); min-height: 300px; }\n.settings-pane[hidden] { display: none; }\n\n.field {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto;\n\talign-items: center;\n\tgap: var(--space-3);\n\tmin-height: var(--control-standard);\n\tpadding: var(--space-1) 0;\n}\n.field.field-block { grid-template-columns: 1fr; align-items: start; }\n.field-label { color: var(--foreground); font-size: var(--fs-base); }\n.field-label small { display: block; color: var(--muted-foreground); font-size: var(--fs-xs); margin-top: 1px; }\n.field-value { color: var(--foreground); font-variant-numeric: tabular-nums; }\n.field-inline { display: inline-flex; align-items: center; gap: var(--space-2); }\n.field-inline input[type=\"text\"] { width: 12rem; }\n.field-actions { display: flex; gap: var(--space-2); justify-content: flex-end; padding-top: var(--space-3); }\n.field-group {\n\tmargin: var(--space-4) 0 var(--space-1);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.field select, .field input[type=\"text\"] { min-width: 14rem; }\n\n/* ---- switch: the one idiom for a boolean ----------------------------- */\n.switch { position: relative; display: inline-block; width: 38px; height: 22px; cursor: pointer; }\n.switch input { position: absolute; opacity: 0; width: 0; height: 0; }\n.switch-track {\n\tposition: absolute; inset: 0;\n\tborder-radius: 999px;\n\tbackground: var(--input);\n\ttransition: background .15s ease;\n}\n.switch-track::after {\n\tcontent: \"\";\n\tposition: absolute; top: 3px; left: 3px;\n\twidth: 16px; height: 16px;\n\tborder-radius: 50%;\n\tbackground: var(--foreground);\n\ttransition: transform .15s ease;\n}\n.switch input:checked + .switch-track { background: var(--primary); }\n.switch input:checked + .switch-track::after { transform: translateX(16px); background: var(--primary-foreground); }\n.switch input:focus-visible + .switch-track { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n/* ---- segmented: two to four options ---------------------------------- */\n.segmented { display: inline-flex; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }\n.segmented input { position: absolute; opacity: 0; pointer-events: none; }\n.segmented label {\n\tpadding: 0 var(--space-3);\n\tmin-height: calc(var(--control-standard) - 8px);\n\tdisplay: inline-flex; align-items: center;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tborder-right: 1px solid var(--border);\n}\n.segmented label:last-of-type { border-right: 0; }\n.segmented input:checked + label { background: var(--muted); color: var(--foreground); }\n.segmented input:focus-visible + label { outline: 2px solid var(--ring); outline-offset: -2px; }\n\n/* ---- slider: jQuery UI's, skinned ------------------------------------ */\n.slider-wrap { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 14rem; }\n.slider-pair { flex-direction: column; align-items: stretch; gap: var(--space-1); }\n.slider-pair > span { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); color: var(--muted-foreground); }\n.slider-wrap .ui-slider { flex: 1 1 auto; height: 4px; border: 0; background: var(--input); border-radius: 999px; margin: 0; }\n.slider-wrap .ui-slider .ui-slider-handle {\n\ttop: -6px; width: 16px; height: 16px; margin-left: -8px;\n\tborder-radius: 50%; border: 0; background: var(--foreground); cursor: pointer;\n}\n.slider-wrap .ui-slider .ui-slider-handle:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n.slider-value { min-width: 2.5em; text-align: right; font-variant-numeric: tabular-nums; color: var(--muted-foreground); font-size: var(--fs-sm); }\n#dialog-options div.ui-slider { width: auto; }\n\n/* ---- statistics ------------------------------------------------------ */\n.stats { display: grid; grid-template-columns: 1fr auto; gap: var(--space-2) var(--space-4); margin: 0; }\n.stats dt { color: var(--muted-foreground); }\n.stats dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n ADD SIGNATURE: THE WORMHOLE HALF IS A SECOND STEP, NOT A REVEAL\n ========================================================================= */\n#dialog-signature #wormhole { margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px solid var(--border); }\n#dialog-signature #wormhole::before {\n\tcontent: \"Wormhole\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature #wormhole > hr { display: none; }\n#dialog-signature #wormhole .side + .side { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px dashed var(--border); }\n#dialog-signature #wormhole .side + .side::before {\n\tcontent: \"Other side\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- characters on the Account tab ------------------------------------ */\n#characters { display: flex; flex-direction: column; gap: var(--space-2); width: 100%; margin-top: var(--space-2); }\n.char-row {\n\tdisplay: flex; align-items: center; gap: var(--space-3);\n\tpadding: var(--space-2) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: var(--card);\n}\n.char-row.is-active { border-color: color-mix(in oklab, var(--primary) 55%, var(--border)); }\n.char-portrait { width: 40px; height: 40px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; flex: 0 0 auto; }\n.char-meta { flex: 1 1 auto; min-width: 0; }\n.char-name { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--foreground); letter-spacing: .04em; }\n.char-note { font-size: var(--fs-xs); color: var(--muted-foreground); margin-top: 2px; }\n.char-actions { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; }\n.char-btn {\n\theight: var(--control-dense); padding: 0 var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: transparent; color: var(--foreground); font-size: var(--fs-sm);\n}\n.char-btn:hover { background: var(--muted); border-color: var(--border-strong); }\n.char-btn.is-destructive { border-color: transparent; color: var(--muted-foreground); }\n.char-btn.is-destructive:hover { border-color: var(--destructive); color: var(--destructive); background: transparent; }\n.char-badge {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--primary); padding: 0 var(--space-2);\n}\n.field-actions input.is-primary { background: var(--primary); border-color: var(--primary); color: var(--primary-foreground); margin-right: auto; }\n.field-actions input.is-primary:hover { background: color-mix(in oklab, var(--primary) 85%, white); border-color: transparent; color: var(--primary-foreground); }\n\n/* ---- panels on the Display tab ---------------------------------------- */\n#panel-settings { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; margin-top: var(--space-2); }\n.panel-row {\n\tdisplay: flex; align-items: center; justify-content: space-between; gap: var(--space-3);\n\tpadding: var(--space-1) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card);\n\tmin-height: var(--control-standard);\n}\n.panel-row-name { color: var(--foreground); }\n.panel-row-actions { display: flex; align-items: center; gap: var(--space-2); }\n.panel-row-actions .char-btn { padding: 0 var(--space-2); font-size: 10px; }\n.panel-row-actions .char-btn[disabled] { opacity: .3; pointer-events: none; }\n","/* ============================================================================\n PANEL BARS WITH WORDS ON THEM\n\n Twenty-five unlabelled icons across four bars, sixty-eight hover tooltips\n to explain them. Hover does not exist on a tablet, which is the device\n this branch was meant to make editing work on.\n\n Primary actions get a word. Secondary actions stay as icons but sit in a\n right-hand group with a real gap, and state toggles (hot, higgs) show\n their state. The elements are the same tags the JavaScript has always\n bound to; only a class and a label span were added, so nothing rebinds.\n ========================================================================= */\n\n.gridWidget > .controls { gap: var(--space-1); }\n\n.controls .bar-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\theight: var(--control-dense);\n\tpadding: 0 10px;\n\tmargin: 0;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tfont-style: normal;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tline-height: 1;\n\tcolor: var(--foreground);\n\tcursor: pointer;\n\twhite-space: nowrap;\n\ttransition: background-color .12s ease, border-color .12s ease;\n}\n.controls .bar-btn::before { font-size: var(--icon); }\n.controls .bar-btn:hover { background: var(--muted); border-color: var(--border); color: var(--foreground); }\n.controls .bar-btn.bar-icon { padding: 0 6px; }\n.controls .bar-btn.bar-icon:not([data-icon]) { font-weight: 600; }\n\n.controls .bar-btn.bar-primary { background: var(--primary); color: var(--primary-foreground); }\n.controls .bar-btn.bar-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: transparent;\n\tcolor: var(--primary-foreground);\n}\n\n.controls .bar-btn.disabled { opacity: .4; pointer-events: none; }\n\n/* A toggle that is on says so with the accent, not by hover. */\n.controls .bar-btn.bar-toggle.active,\n.controls .bar-btn.bar-toggle.on,\n.controls .bar-btn.bar-toggle[data-active=\"true\"] { color: var(--primary); background: color-mix(in oklab, var(--primary) 14%, transparent); }\n\n.controls .bar-btn kbd {\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: 1px 4px;\n\tline-height: 1;\n}\n\n.controls .bar-sep { width: 1px; height: 16px; background: var(--border); margin: 0 var(--space-1); }\n\n.gridWidget > .controls > .bar-right {\n\tmargin-left: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tfloat: none;\n}\n/* The hide control sits after the right group. */\n.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: 0; }\n\n/* The signature count belongs with the title, as a chip. */\n.controls .bar-count {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 18px;\n\tpadding: 0 7px;\n\tmargin-right: var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--muted-foreground);\n\tfont-style: normal;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tfont-variant-numeric: tabular-nums;\n\tcursor: default;\n}\n\n/* Labels give way before icons do. */\n@media (max-width: 1439px) {\n\t#signaturesWidget .bar-btn:not(.bar-primary) .bar-label,\n\t#infoWidget .bar-btn .bar-label { display: none; }\n\t#signaturesWidget .bar-btn:not(.bar-primary):not(.bar-icon) { padding: 0 6px; }\n}\n\n/* The bar inherits the panel title's uppercase and letter-spacing; a button\n label is a word, not a heading. And a bar button is its own width -- the\n notes bar was stretching \"Add note\" across the whole panel because the\n bar's children default to flex: 1 there. */\n.controls .bar-btn { text-transform: none; letter-spacing: 0; flex: 0 0 auto; }\n.controls .bar-btn kbd { border-radius: var(--radius-sm); }\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) { border-radius: var(--radius-sm); }\n/* The label span inherits the bar's uppercase from a more specific rule than\n .bar-btn can beat; set it on the span itself. */\n.gridWidget > .controls .bar-btn > .bar-label { text-transform: none; letter-spacing: 0; font-size: var(--fs-sm); }\n/* The label takes the button's colour, whatever rule the bar had for spans. */\n.gridWidget > .controls .bar-btn > .bar-label { color: inherit; -webkit-text-fill-color: currentColor; }\n/* .bar-btn's display was beating .hidden's; a hidden button is hidden. */\n.controls .bar-btn.hidden { display: none !important; }\n","/* ============================================================================\n CHAIN NODES AS CARDS\n\n A node was a class label, a name and a row of four-pixel dots, floating on\n the canvas with a thin border. The map is the product and it was the least\n designed surface on the screen: nothing said a node was a thing you could\n drag, collapse or open, and at a big corp's density -- sixteen screen widths\n of systems -- small unbounded labels become a wall of text.\n\n A card: fixed width, a definite ground, the security class as a chip in\n the corner rather than a heading, statics as chips inside the card rather\n than tabs hanging below it, activity pips in the footer. The markup in\n chain-map.js is untouched; the renderer measures nothing from the DOM for\n its ring maths (minArc comes from the data), so a slightly larger node\n only needs the spacing factor to breathe, which is a setting.\n ========================================================================= */\n\n#chainMap div.node {\n\tbox-sizing: border-box;\n\twidth: 128px;\n\tmin-height: 56px;\n\tpadding: 6px 8px 8px;\n\tborder-radius: var(--radius);\n\tborder: 1px solid var(--border);\n\tbackground-color: var(--card);\n\ttext-align: left;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tcursor: grab;\n}\n#chainMap div.node:active { cursor: grabbing; }\n\n/* Class chip, top-left. The h4 was a heading; it is a label. */\n#chainMap div.node > h4.nodeClass {\n\torder: 1;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .04em;\n\tline-height: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n#chainMap div.node > h4.nodeClass > span {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 16px;\n\tpadding: 0 6px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: var(--card);\n\tcolor: inherit;\n}\n\n/* System name, the reading line. */\n#chainMap div.node > h4.nodeSystem {\n\torder: 2;\n\tmargin: 0;\n\tfont-size: var(--fs-base);\n\tfont-weight: 600;\n\tline-height: 1.2;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground); text-decoration: none; }\n#chainMap div.node > h4.nodeSystem a:hover { color: var(--primary); }\n\n/* Wormhole type / signature, quiet. */\n#chainMap div.node > h4.nodeType {\n\torder: 3;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\ttext-transform: none;\n\tletter-spacing: 0;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmin-height: 1em;\n}\n\n/* Statics: inside the card as chips, not tabs hanging off the bottom. */\n#chainMap div.node > .statics {\n\torder: 4;\n\tposition: static;\n\tdisplay: flex;\n\tgap: 3px;\n\tmargin-top: 2px;\n\tmin-height: 0;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: auto;\n\tmin-width: 16px;\n\theight: 14px;\n\tpadding: 0 4px;\n\tmargin: 0;\n\tborder: 0;\n\tborder-radius: 3px;\n\tbackground: color-mix(in oklab, currentColor 22%, transparent);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tline-height: 1;\n}\n#chainMap div.node > .statics .multi-static { color: var(--muted-foreground); }\n\n/* Activity pips: footer, right. */\n#chainMap div.node > .nodeActivity {\n\torder: 5;\n\tposition: absolute;\n\tright: 8px;\n\tbottom: 6px;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 3px;\n\tfont-size: 9px;\n\tline-height: 1;\n}\n#chainMap div.node > .nodeActivity .invisible { display: none; }\n\n/* Effect / occupant icons: top-right. */\n#chainMap div.node > .nodeIcons {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 6px;\n\tleft: auto;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 4px;\n\tfont-size: var(--fs-xs);\n}\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; gap: 4px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge {\n\tdisplay: inline-flex; align-items: center;\n\theight: 14px; padding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: var(--primary); color: var(--primary-foreground);\n\tfont-size: 10px; font-weight: 700;\n}\n\n/* The one you are in stays unmistakable; the class tint stays as a ground. */\n#chainMap .currentNode > div.node { box-shadow: 0 0 0 2px var(--primary); border-color: var(--primary); }\n#chainMap div.node:hover { border-color: var(--border-strong); box-shadow: 0 2px 10px rgba(0,0,0,.35); }\n\n/* Collapsed / loop nodes keep the card shape at a reduced height. */\n#chainMap div.loop { width: 128px; min-height: 0; padding: 6px 8px; border-radius: var(--radius); }\n/* The name link was still taking a fixed grey from a more specific legacy\n rule (measured oklch(0.8 0 0) in both themes -- invisible on a white card). */\n#chainMap div.node > h4.nodeSystem,\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground) !important; }\n\n/* The base stylesheet gives div.node a fixed height. As a flex column that\n meant every child shrank to fit -- measured: the name heading at 3px with\n overflow hidden around a 19px link, which rendered as a dark smudge where\n the system name should be. The card takes the height of its contents and\n nothing inside it shrinks. */\n#chainMap div.node { height: auto !important; max-height: none !important; }\n#chainMap div.node > * { flex: 0 0 auto; }\n#chainMap div.node > h4.nodeSystem { height: auto; line-height: 1.25; }\n\n/* ============================================================================\n RAISED CARDS, CAPSULE STATICS\n\n The card ground was the same value as the panel behind it -- var(--card)\n on a panel that is var(--card) at 88% -- so a node read as a faint outline\n on the dark canvas rather than a thing sitting on it. The card is now a\n raised surface a clear step lighter than the canvas, with a stronger edge.\n\n Statics were tiny half-tab glyphs hanging under the node. They are the\n information you scan a chain for, so they become filled capsules in the\n security colour, straddling the card's bottom edge -- half on the card,\n half below it -- with a ring in the card colour so they read as cut into\n the edge rather than stuck on it.\n ========================================================================= */\n\n:root {\n\t--node-surface: color-mix(in oklab, var(--card) 82%, var(--foreground) 18%);\n\t--node-edge: color-mix(in oklab, var(--border-strong) 70%, var(--foreground) 30%);\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--node-surface: oklch(1 0 0);\n\t\t--node-edge: oklch(0.78 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--node-surface: oklch(1 0 0);\n\t--node-edge: oklch(0.78 0.006 80);\n}\n\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node {\n\tbackground-color: var(--node-surface);\n\tborder-color: var(--node-edge);\n\tbox-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 4px 14px rgba(0,0,0,.45);\n\toverflow: visible;\n\tpadding-bottom: 12px; /* room above the straddling capsules */\n\tmargin-bottom: 8px; /* room below them before the next ring */\n}\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 18%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 18%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 18%, var(--node-surface)); }\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 16%, var(--node-surface));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 2px var(--primary), 0 4px 14px rgba(0,0,0,.45);\n}\n\n/* Capsules on the edge. */\n#chainMap div.node > .statics {\n\tposition: absolute;\n\tleft: 8px;\n\tright: 8px;\n\tbottom: 0;\n\ttransform: translateY(50%);\n\tmargin: 0;\n\tgap: 4px;\n\tz-index: 2;\n\tpointer-events: auto;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\theight: 18px;\n\tmin-width: 22px;\n\tpadding: 0 7px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: #fff;\n\tbox-shadow: 0 0 0 2px var(--node-surface);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n#chainMap div.node > .statics .multi-static { background: var(--muted-foreground); }\n\n/* Pips move up beside the name so they never sit under a capsule. */\n#chainMap div.node > .nodeActivity { top: 26px; right: 8px; bottom: auto; }\n#chainMap div.node > h4.nodeSystem { padding-right: 38px; }\n/* \"Dark Venture\" was ellipsising: 128px minus padding minus the 38px held\n for the activity pips left ~70px for the name. A little wider, and the\n pips reserve only what two dots need. */\n#chainMap div.node, #chainMap div.loop { width: 144px; }\n#chainMap div.node > h4.nodeSystem { padding-right: 26px; }\n#chainMap div.node > .nodeActivity { top: 27px; right: 8px; gap: 3px; }\n\n/* Height budget. Three systems in a straight line filled the chain panel and\n forced a scrollbar at 900px tall; a card is two lines and a chip row, and\n should cost about 60px, not 90. */\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node { padding: 5px 8px 9px; min-height: 0; gap: 1px; margin-bottom: 6px; }\n#chainMap div.node > h4.nodeSystem { line-height: 1.15; }\n#chainMap div.node > h4.nodeType:empty, #chainMap div.node > h4.nodeType { min-height: 0; }\n#chainMap div.node > h4.nodeClass > span { height: 15px; }\n#chainMap div.node > .nodeActivity { top: 24px; }\n","/* ============================================================================\n INLINE LIFE / MASS\n The two cells read as editable on approach, and the chooser is the same\n surface as the palette: popover ground, one radius, filled chips in the\n data colours the rest of the app uses for these states.\n ========================================================================= */\n\n#sigTable td.inline-editable { cursor: pointer; position: relative; }\n#sigTable td.inline-editable:hover { color: var(--foreground); text-decoration: underline dotted; text-underline-offset: 3px; }\n#sigTable td.inline-editable.is-saving { opacity: .5; pointer-events: none; }\n\n#inline-edit {\n\tposition: fixed;\n\tz-index: 1200;\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tpadding: var(--space-1);\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 12px 32px rgba(0,0,0,.4);\n}\n#inline-edit .inline-chip {\n\theight: var(--control-dense);\n\tpadding: 0 var(--space-3);\n\tborder-radius: 999px;\n\tborder: 1px solid var(--border);\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tcursor: pointer;\n}\n#inline-edit .inline-chip:hover { background: var(--muted); border-color: var(--border-strong); }\n#inline-edit .inline-chip[aria-selected=\"true\"].stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n#inline-edit .inline-chip:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n@media (pointer: coarse) {\n\t#inline-edit .inline-chip { min-height: 44px; padding: 0 var(--space-4); }\n}\n","/* ============================================================================\n TWO TYPE ROLES\n\n Montserrat was chosen as the brand face and is right for that: geometric,\n round, of a piece with the wing mark. It was then used for every table\n cell, label and chip -- and it is a wide face with a large x-height, which\n at 11-13px in a three-column layout of \"GHJ-456\", \"23:26\", \"Class-3\" costs\n the width budget and reads soft. The signature-id column having to fall\n back to a monospace to stay aligned was the symptom.\n\n Display stays Montserrat. Everything read as data is IBM Plex Sans:\n narrower set, tabular figures, a technical character that suits a mapping\n tool, and a grotesque that sits cleanly under a geometric display face.\n Ids move to Plex Mono so the family holds.\n\n Same selector list as the rule in _override-b-fixes.css that forced one\n family everywhere; this file sorts after it, so equal specificity wins.\n ========================================================================= */\n\n:root {\n\t--font-ui: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-display: 'Montserrat', 'IBM Plex Sans', system-ui, sans-serif;\n\t--font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n}\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li,\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: var(--font-ui);\n\tfont-variant-numeric: tabular-nums;\n}\n\n/* ---- brand surfaces keep the display face ---------------------------- */\n#topbar #logo, #topbar #logo a,\n.panel-title,\n.ui-dialog .ui-dialog-title,\n.sys-panel .sys-name,\n#cmd-palette .cmd-title,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label {\n\tfont-family: var(--font-display);\n}\n\n/* ---- data ids in the mono of the same family --------------------------- */\n#sigTable td:nth-child(1),\n#chainMap div.node > h4.nodeType,\nkbd {\n\tfont-family: var(--font-mono);\n\tletter-spacing: 0;\n}\n\n/* Plex sits a touch smaller on the body than Montserrat did at the same\n size; the base step comes up one pixel so line lengths, not legibility,\n are what change. */\n:root { --fs-base: 13px; --fs-sm: 12px; }\n","/* ============================================================================\n Base theme.\n\n Overrides token VALUES from _tokens.css -- it does not restyle components,\n so it stays out of the way of upstream merges. The values here are the\n built-in defaults; a brand pack (brand.inc.php) overrides them at runtime.\n\n Two notes on scope:\n\n - The neutral ramp is re-pointed at a warmer grey ramp. Tripwire's original\n palette has no accent token -- every emphasis was just a lighter grey --\n so the accent cannot be placed by re-pointing alone. The short accent\n block at the bottom introduces it at the few sites that carry identity.\n - --data-* is deliberately untouched. Wormhole class, mass band and\n security colours encode meaning, and repainting them to fit a brand would\n make the map lie.\n ========================================================================= */\n\n:root {\n /* -- accent constants, used by the accent rules below ------------------- */\n --accent: #f07c00;\n --accent-dim: rgba(240, 124, 0, .18);\n --brand-gray: #adadad;\n --brand-gray-dark: #4d4d4d;\n\n /* -- ops floor: neutral ramp re-pointed at the brand greys -------------\n Ordering and relative contrast follow the original ramp, so component\n styling keeps working; only the values move. */\n --n-000: #000000;\n --n-020: #101010;\n --n-050: #1b1b1b; /* page ground */\n --n-100: #232323; /* raised panel */\n --n-120: #2a2a2a; /* second surface */\n --n-200: #303030; /* hairlines */\n --n-220: #3a3a3a;\n --n-250: #444444;\n --n-300: #4d4d4d; /* rules/borders (brand dark gray) */\n --n-400: #5a5a5a;\n --n-500: #6b6b6b;\n --n-550: #7d7d7d;\n --n-560: #838383;\n --n-600: #8c8c8c; /* secondary text */\n --n-650: #9a9a9a;\n --n-700: #a3a3a3;\n --n-750: #adadad; /* brand gray */\n --n-800: #c4c4c4; /* primary body text */\n --n-850: #d2d2d2;\n --n-870: #dedede;\n --n-880: #e4e4e4;\n --n-900: #ebebeb;\n --n-920: #f0f0f0;\n --n-940: #f5f5f5;\n --n-960: #f8f8f8;\n --n-999: #f2f2f2; /* emphasis text */\n}\n\n/* Front office. The brand orange is identical in both themes by rule, so only\n the neutral grounds swap. Mirrors the structure in _tokens.css: the media\n query is guarded so an explicit dark choice still wins. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9; /* page ground */\n --n-100: #f5f5f5; /* raised panel */\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad; /* rules -- brand gray */\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f; /* pushed past a straight inversion: the mid-ramp is\n where naive flipping leaves text at ~4.5:1 */\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d; /* brand dark gray */\n --n-750: #444444;\n --n-800: #333333; /* primary body text */\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f; /* emphasis text */\n }\n}\n:root[data-theme=\"light\"] {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9;\n --n-100: #f5f5f5;\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad;\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f;\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f;\n}\n\n/* ============================================================================\n Accent placement.\n\n Deliberately short. The orange marks identity and current state -- the\n wordmark, what is selected, what has focus -- and nothing else. Data keeps\n its own colours.\n ========================================================================= */\n\n/* The wordmark carries the brand; the version chip stays quiet beside it.\n The Wing Icon is set as a ::before rather than edited into tripwire.php, so\n the template stays untouched and this whole theme remains one deletable\n file. Brand guidelines allow the standalone Wing Icon to form new lockups;\n the full lockup may not be modified, so it is not used here. */\n#topbar #logo a {\n color: var(--accent);\n letter-spacing: .01em;\n}\n\n\n/* Front office uses the dark lockup, not the orange one -- which the brand\n guidelines call for, and which also fixes the contrast: #F07C00 on a light\n topbar measures 2.77:1. Orange stays the accent for state, not the mark. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) #topbar #logo a { color: var(--n-999); }\n}\n:root[data-theme=\"light\"] #topbar #logo a { color: var(--n-999); }\n\n/* Active/selected state, previously just a lighter grey. */\n#topbar i.active,\n#topbar a.active {\n color: var(--accent);\n}\n\n/* Keyboard focus. Track 2 adds a keyboard layer, so a visible, branded focus\n ring is about to matter a great deal more than it does today. */\n:focus-visible {\n outline: 2px solid var(--accent);\n outline-offset: 1px;\n}\n\n/* Selected signature rows read as \"this is what you are acting on\". */\n#sigTable tbody tr.selected td {\n background: var(--accent-dim);\n}\n\n/* ============================================================================\n Background.\n\n Overridden here rather than in tripwire.css so upstream's default survives a\n rebase. The source is 21:9; under the existing `cover` + `center` a 16:9\n viewport trims the sides, which keeps the ship and loses the brightest edge\n of the nebula -- the framing this was chosen for.\n ========================================================================= */\n\n\n/* Read band: the background is decorative at phone width, so serve 79KB\n instead of 460KB. */\n}\n","/* ============================================================================\n THE PALETTE (default)\n\n The refit palette,\n adopted as Tripwire's default after a side-by-side on the preview. A warm\n charcoal scale that was chosen rather than inherited; two surfaces and one\n rule colour; bone text with dim as the subordinate weight (4.5:1 on both\n surfaces); blood for danger; sage / rust-bright / blood / void for hisec /\n lowsec / nullsec / J-space -- the EVE convention in a muted register, so\n the map's security colours are information rather than the loudest thing\n on the screen.\n\n What stays constant: the mark, the wordmark, and one\n accent -- the primary action, the ring, links. One discipline under a\n corp's flag, not one corp's brand on another's\n tool. Security chips stay filled with white text; that is the house rule.\n\n Type: Geist for text, Geist Mono for labels, ids and stats. The label is\n the signature -- 10px, uppercase, wide-tracked, dim -- and it is applied\n to every panel title, table header and footer label uniformly.\n\n Light theme is a print palette: paper, not white.\n ========================================================================= */\n\n/* ── THE DECK ──────────────────────────────────────────────────────────\n Grounds and neutrals from the house letterhead palette,\n a neutral charcoal ramp:\n brand grey #ADADAD for body text, brand dark grey #4D4D4D for rules,\n orange as the one accent. This puts Tripwire on the same deck as\n the letterhead -- same labels, same accent -- rather than on\n a warm ink.\n\n Data colours deliberately do NOT take the brand callouts. #57DB57 green\n and #0073F0 blue are display colours for a few words on a log line;\n a map paints them on a hundred chips at once and they shout (measured\n and rejected earlier on this branch). Sage / void / a desaturated warn\n stay, with the danger red. */\n:root {\n\t--background: #1b1b1b;\n\t--foreground: #f2f2f2; /* bone: headings, names, values */\n\t--card: #232323;\n\t--card-foreground: #f2f2f2;\n\t--popover: #2a2a2a;\n\t--popover-foreground: #f2f2f2;\n\t--muted: #2a2a2a;\n\t--muted-foreground: #8c8c8c; /* dim: labels, secondary */\n\t--text-body: #adadad; /* fog: brand grey, running text */\n\t--accent-surface: #2a2a2a;\n\t--border: #4d4d4d; /* brand dark grey */\n\t--border-soft: #303030;\n\t--border-strong: #5a5a5a;\n\t--input: #303030;\n\t--glow: #242424;\n\n\t--primary: var(--accent, #f07c00);\n\t--primary-foreground: #1b1b1b;\n\t--ring: var(--accent, #f07c00);\n\t--destructive: #e05252;\n\n\t--data-good: #7d9b76; /* hisec, stable */\n\t--data-warn: #d9a441; /* lowsec, destab -- desaturated brand yellow */\n\t--data-critical: #e05252; /* nullsec, critical, EOL */\n\t--data-info: #8b7aa8; /* J-space, jumps */\n\n\t--node-surface: #2a2a2a;\n\t--node-edge: #5a5a5a;\n\n\t--chart-gridline: rgba(242, 242, 242, .06);\n\t--chart-axis-text: #adadad;\n\n\t--font-ui: 'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace;\n\t--font-display: 'Montserrat', 'Geist', system-ui, sans-serif;\n}\n\n/* The front office: the light theme. Same brand hexes, light\n neutral grounds, dark grey ink. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: #e9e9e9;\n\t\t--foreground: #1f1f1f;\n\t\t--card: #f5f5f5;\n\t\t--card-foreground: #1f1f1f;\n\t\t--popover: #fdfdfd;\n\t\t--popover-foreground: #1f1f1f;\n\t\t--muted: #e4e4e4;\n\t\t--muted-foreground: #767676;\n\t\t--text-body: #4d4d4d;\n\t\t--accent-surface: #e4e4e4;\n\t\t--border: #adadad;\n\t\t--border-soft: #d8d8d8;\n\t\t--border-strong: #8c8c8c;\n\t\t--input: #e4e4e4;\n\t\t--glow: #ffffff;\n\t\t--primary-foreground: #ffffff;\n\t\t--destructive: #b03a3a;\n\t\t--data-good: #4c6a45;\n\t\t--data-warn: #9a6d12;\n\t\t--data-critical: #b03a3a;\n\t\t--data-info: #5d4f78;\n\t\t--node-surface: #fdfdfd;\n\t\t--node-edge: #adadad;\n\t\t--chart-gridline: rgba(31, 31, 31, .08);\n\t\t--chart-axis-text: #4d4d4d;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: #e9e9e9;\n\t--foreground: #1f1f1f;\n\t--card: #f5f5f5;\n\t--card-foreground: #1f1f1f;\n\t--popover: #fdfdfd;\n\t--popover-foreground: #1f1f1f;\n\t--muted: #e4e4e4;\n\t--muted-foreground: #767676;\n\t--text-body: #4d4d4d;\n\t--accent-surface: #e4e4e4;\n\t--border: #adadad;\n\t--border-soft: #d8d8d8;\n\t--border-strong: #8c8c8c;\n\t--input: #e4e4e4;\n\t--glow: #ffffff;\n\t--primary-foreground: #ffffff;\n\t--destructive: #b03a3a;\n\t--data-good: #4c6a45;\n\t--data-warn: #9a6d12;\n\t--data-critical: #b03a3a;\n\t--data-info: #5d4f78;\n\t--node-surface: #fdfdfd;\n\t--node-edge: #adadad;\n\t--chart-gridline: rgba(31, 31, 31, .08);\n\t--chart-axis-text: #4d4d4d;\n}\n\n/* Flat ink. The ship stays on the landing page, where it is a brand\n moment; behind three columns of data it was competition. */\n#wrapper::before { background: radial-gradient(ellipse at 30% -20%, var(--glow) 0%, var(--background) 60%); }\nbody { background-image: none; }\n\n/* Running text in the brand grey; names, values and headings in bone. */\n#sigTable td, .commentBody, .sys-meta, .sys-extra, .field-label, .ui-dialog .ui-dialog-content { color: var(--text-body); }\n#sigTable td:nth-child(1), .sys-name, .field-value, #chainMap div.node > h4.nodeSystem, .stats dd { color: var(--foreground); }\n\n/* The label: mono, small, uppercase, tracked, dim. Everywhere it means\n \"this is a label\", so it reads as one system. */\n.panel-title,\n.ui-dialog .ui-dialog-title,\n#sigTable th,\n.gate-list-label,\n.field-group,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label,\n.sys-links a,\n#activityGraphControls > a,\n#cmd-palette .cmd-group,\n.sig-stats {\n\tfont-family: var(--font-mono);\n\tfont-size: 10px;\n\tfont-weight: 500;\n\tletter-spacing: .22em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.sys-links a:hover,\n#activityGraphControls > a:hover,\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] { color: var(--foreground); }\n\n/* Ids, times and counts in the mono. */\n#sigTable td:nth-child(1),\n#sigTable td:nth-child(3),\n#statusbar .bar-value,\n#signature-count,\n.node .nodeType,\nkbd { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }\n\n/* Surfaces: one small radius, a thin rule, and a deep shadow only where\n something floats. */\n.gridWidget { border-radius: 4px; }\n.ui-dialog, #cmd-palette, #inline-edit, #panel-menu {\n\tborder-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0, 0, 0, .5);\n}\n#chainMap div.node, #chainMap div.loop { border-radius: 4px; }\n\n/* Neutral chips flat on panel-2 with a rule; security and state chips keep\n their fill and white text. */\n.sig-chip, h4.chip, .chip, .gate-chip {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: 3px;\n}\n.sig-chip.on { background: var(--muted); border-color: var(--border-strong); color: var(--foreground); }\n\n/* Primary action: orange fill, ink text; brighter on approach. */\n.controls .bar-btn.bar-primary:hover,\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 85%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 85%, white);\n}\n\n::selection { background: var(--primary); color: var(--background); }\n\n/* ── Second look ─────────────────────────────────────────────────────────\n Bar hierarchy: title · primary · everything else. The right-hand group\n sits at the label weight at rest and comes up on approach, so eleven\n controls on a strip read as three things. */\n.gridWidget > .controls > .bar-right .bar-btn,\n.gridWidget > .controls > .bar-right .panel-hide,\n.gridWidget > .controls > .panel-hide,\n#chainWidget > .controls > .bar-btn.bar-icon { color: var(--muted-foreground); }\n.gridWidget > .controls > .bar-right .bar-btn:hover,\n.gridWidget > .controls > .panel-hide:hover,\n#chainWidget > .controls > .bar-btn.bar-icon:hover { color: var(--foreground); }\n.gridWidget > .controls > .bar-right .bar-btn.bar-toggle.active { color: var(--primary); }\n\n/* Range chips had become tiny bordered boxes next to the borderless legend:\n two idioms in one row. They are quiet mono text like the links beneath. */\n#activityGraphControls > a {\n\tborder: 0;\n\tbackground: transparent;\n\tpadding: 0 2px;\n\theight: auto;\n\tcolor: var(--muted-foreground);\n}\n#activityGraphControls > a.active,\n#activityGraphControls > a[aria-current] { color: var(--primary); }\n#activityGraphControls { gap: var(--space-2) var(--space-3); }\n#activityLegend .legend-chip { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-foreground); }\n#activityLegend .legend-chip:hover { color: var(--foreground); }\n#activityLegend .legend-chip.off { opacity: .5; }\n\n/* The graph sits in the panel like a card of its own. */\n#activityGraph { margin: var(--space-2) 0 0; }\n\n/* Sliders: the last control not in the palette. */\n.slider-wrap .ui-slider { background: var(--input); height: 3px; }\n.slider-wrap .ui-slider .ui-slider-handle { background: var(--primary); width: 14px; height: 14px; top: -6px; margin-left: -7px; border: 2px solid var(--popover); box-sizing: border-box; }\n.slider-value { font-family: var(--font-mono); font-size: 11px; color: var(--muted-foreground); }\n.slider-pair > span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }\n\n/* ── The letterhead ──────────────────────────────────────────────────────\n Three zones. Left: the system you are viewing, large, with your own\n location and the search beneath it. Centre: the corp's mark and\n wordmark. Right: you -- a portrait you can actually make out, name and\n mask beside it, then the two tools. The app's own name lives in the\n footer with its version; the header is the corp's. */\n#topbar {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n\talign-items: center;\n\tgap: 16px;\n\tmin-height: 76px;\n\tpadding: 8px 18px;\n\tbackground: linear-gradient(180deg, var(--card), var(--background));\n\tborder-bottom: 1px solid var(--border);\n}\n#topbar > .align-left, #topbar > .align-right, #topbar > .align-center { display: flex; align-items: center; min-width: 0; }\n#topbar > .align-left { justify-content: flex-start; flex-direction: column; align-items: flex-start; gap: 2px; overflow: visible; }\n#topbar > .align-center{ justify-content: center; }\n#topbar > .align-right { justify-content: flex-end; gap: 14px; }\n\n/* Left: the viewed system. */\n.hdr-sys { display: flex; align-items: center; gap: 8px; }\n#hdr-system {\n\tfont-family: var(--font-display);\n\tfont-size: 22px;\n\tfont-weight: 700;\n\tletter-spacing: -.01em;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n#hdr-system:hover { color: var(--primary); }\n#topbar #search { color: var(--muted-foreground); cursor: pointer; }\n#topbar #search:hover { color: var(--foreground); }\n#topbar #systemSearch { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 11px; }\n#topbar #currentSpan { display: inline-flex; align-items: center; gap: 6px; }\n#topbar #currentSpan .bar-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted-foreground); }\n#topbar #EVEsystem { font-family: var(--font-mono); font-size: 11px; color: var(--text-body); }\n#topbar #follow { color: var(--muted-foreground); }\n/* On is orange. The line above outranked the legacy .active colour, so the\n toggle worked and looked like it had not. */\n#topbar #follow.active { color: var(--primary); }\n#topbar #follow:hover { color: var(--foreground); }\n#topbar #follow.active:hover { color: var(--primary); }\n#topbar #searchSpan input {\n\tfont-family: var(--font-mono); font-size: 11px;\n\tmin-height: 24px; padding: 0 8px; max-width: 12rem;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px; color: var(--foreground);\n}\n\n/* Centre: the mark. Two files, one per theme. */\n#topbar #logo { display: block; line-height: 0; }\n#topbar #logo img { height: 46px; width: auto; display: block; }\n#topbar #logo a::before, #topbar #logo::before { content: none !important; }\n#topbar #logo .logo-light { display: none; }\n@media (prefers-color-scheme: light) { :root:not([data-theme=\"dark\"]) #topbar #logo .logo-dark { display: none; } :root:not([data-theme=\"dark\"]) #topbar #logo .logo-light { display: block; } }\n:root[data-theme=\"light\"] #topbar #logo .logo-dark { display: none; }\n:root[data-theme=\"light\"] #topbar #logo .logo-light { display: block; }\n\n/* Right: you. */\n#topbar #login h3 { margin: 0; }\n#topbar #login h3 > a#user { display: flex; align-items: center; gap: 10px; text-decoration: none; }\n#topbar #user-avatar.avatar {\n\twidth: 44px; height: 44px; border-radius: 4px;\n\tborder: 1px solid var(--border); object-fit: cover; display: block;\n}\n#topbar .hdr-pilot { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; line-height: 1.15; }\n#topbar #user-no-track, #topbar #user-track-name { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; color: var(--foreground); }\n#topbar #user-track { display: inline-flex; align-items: center; gap: 4px; }\n#topbar .hdr-mask, #topbar .hdr-mask a, #topbar #mask {\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); text-decoration: none;\n}\n#topbar .hdr-mask a:hover, #topbar .hdr-mask a:hover #mask { color: var(--foreground); }\n#topbar .hdr-tools { display: flex; align-items: center; gap: 4px; margin-left: 4px; padding-left: 14px; border-left: 1px solid var(--border-soft); }\n#topbar .hdr-tools i { color: var(--muted-foreground); cursor: pointer; }\n#topbar .hdr-tools i:hover { color: var(--foreground); }\n#topbar .hdr-tools [data-icon]::before { font-size: 18px; }\n\n/* The mask menu anchors to the letterhead, not to a pixel offset. */\n#topbar #mask-menu { top: 64px; right: 18px; }\n\n/* Panel heads: a band under the title. */\n.gridWidget > .controls {\n\tbackground: linear-gradient(180deg, var(--popover), var(--card));\n\tborder-bottom: 1px solid var(--border);\n}\n.gridWidget, #chainMap div.node, .ui-dialog { border-radius: 3px; }\n.gridWidget { border: 1px solid var(--border); }\n\n/* Hairlines inside content take the soft rule. */\n#sigTable tbody tr, .comment { border-color: var(--border-soft); }\n\n/* ── The letterhead on a phone ───────────────────────────────────────────\n This file sorts after _override-d-phone.css, so the phone header has to\n be written here or the grid above wins. One row: system name, portrait,\n tools. The mark and the location line are desktop and tablet things. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 10px;\n\t\tmin-height: 0;\n\t\tpadding: 8px 12px;\n\t}\n\t#topbar > .align-center { display: none; }\n\t#topbar > .align-left { flex: 1 1 auto; flex-direction: column; align-items: flex-start; }\n\t#topbar #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-right { flex: 0 0 auto; width: auto; justify-content: flex-end; gap: 8px; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar .hdr-tools { margin-left: 0; padding-left: 8px; }\n\t#topbar #mask-menu { top: 52px; right: 12px; }\n}\n\n/* ── The tracking dropdown ────────────────────────────────────────────────\n account.css collapses every .avatar inside it to 1px -- a legacy trick\n from when the portrait was painted some other way -- which is why the\n character rows showed a name and no face. Portraits at a size a face\n survives, and the dropdown on the same surfaces as everything else. */\n#login #content .tracking-clone td.avatar img.avatar { width: 36px; height: 36px; border-radius: 3px; border: 1px solid var(--border); }\n#login #content #account #avatar img.avatar-lg { width: 56px; height: 56px; border-radius: 4px; border: 1px solid var(--border); }\n#login #content.dialog-like {\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0,0,0,.5); padding: var(--space-2);\n}\n#login #content .triangle { display: none; }\n#login #logoutTable tbody th {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .22em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); background: transparent; border-bottom: 1px solid var(--border); text-align: left; padding: 4px 6px;\n}\n#login #content #track { border-right: 1px solid var(--border-soft); }\n#login #content #track .tracking-clone { border: 1px solid var(--border); border-radius: 3px; opacity: .7; }\n#login #content #track .tracking-clone.active { border-color: var(--primary); opacity: 1; }\n#login #content #track .tracking-clone:hover { border-color: var(--border-strong); opacity: 1; }\n#login #content table .text { color: var(--text-body); }\n#login #content table td.name.text { color: var(--foreground); }\n\n/* ── The mask as a capsule ────────────────────────────────────────────────\n Was a star glyph and the word \"Corp\" run together. A capsule: a source\n dot -- orange for corporate, void for alliance, sage for personal, dim for\n global -- and the label in the label register. */\n#topbar #mask-menu-link { display: inline-block; }\n#topbar #mask .mask {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 18px; padding: 0 8px 0 7px;\n\tborder: 1px solid var(--border); border-radius: 999px;\n\tbackground: var(--popover);\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #mask-menu-link:hover .mask { border-color: var(--border-strong); color: var(--foreground); }\n#topbar #mask .mask i[data-icon] { width: 7px; height: 7px; border-radius: 50%; background: var(--muted-foreground); display: inline-block; }\n#topbar #mask .mask i[data-icon]::before { content: none; }\n#topbar #mask .mask i.corporate { background: var(--primary); }\n#topbar #mask .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.character { background: var(--data-good); }\n#topbar #mask .mask i.global { background: var(--muted-foreground); }\n\n/* ── The mark, larger, riding the letterhead's edge ──────────────────────\n At 46px the wordmark read as a label. It is the letterhead; it gets the\n height, and it hangs a little over the hairline into the gap above the\n panels so the header reads as a plate the mark is mounted on rather than\n a strip the mark is squeezed into. The panel area gives back the room. */\n@media (min-width: 768px) and (min-height: 600px) {\n\t/* The header keeps its height; the mark is taller than the header and\n\t hangs 14px past the hairline into the gap the panel area gives back. */\n\t#topbar { overflow: visible; height: 64px; min-height: 64px; padding-top: 0; padding-bottom: 0; }\n\t#topbar > .align-center { align-self: flex-start; position: relative; z-index: 3; }\n\t/* A pack may ask for a taller mark (logo.height); a round seal wants a\n\t little more than a wide wordmark. It rides the bar's bottom edge. */\n\t#topbar #logo img { height: 64px; margin-top: 0; filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .55)); }\n\t.gridster { padding-top: 10px; }\n}\n\n/* Below the desktop breakpoint the legacy stylesheet fixes the header to the\n viewport and nothing offsets the content, so the panels started at y=20\n underneath it (measured at 1100x700). The tablet page scrolls; the header\n stays in flow and sticks to the top as it goes. */\n@media (max-width: 1279px) {\n\t#topbar { position: sticky; top: 0; z-index: 30; }\n}\n\n/* ── \"Following you\" ─────────────────────────────────────────────────────\n Clicking the tab that is already selected deselects it, and with no tab\n selected the map roots at whichever system you are viewing. That is a\n mode, and it was invisible: the strip just showed no tab highlighted and\n the map \"kept jumping\". Name it. */\n#chainTabs:not(:has(.tab.current))::before {\n\tcontent: \"Following you\";\n\tdisplay: inline-flex; align-items: center;\n\theight: 20px; padding: 0 8px; margin-right: 6px;\n\tborder: 1px solid color-mix(in oklab, var(--primary) 55%, var(--border));\n\tborder-radius: 999px;\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--primary);\n}\n\n/* ── The top row takes what the System panel needs ─────────────────────\n system-fit.js sets --top-row when the panel cannot hold the graph at its\n floor; otherwise the row is the 46vh the layout chose. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 46vh)) 1fr; }\n}\n\n/* ── The room lights: sun and moon on the letterhead ─────────────────── */\n#topbar .hdr-tools .themebtn {\n\tbackground: none; border: 1px solid var(--border); border-radius: 3px; cursor: pointer;\n\tcolor: var(--muted-foreground); font-size: 14px; line-height: 1; padding: 4px 8px;\n\theight: 26px; display: inline-flex; align-items: center; flex: 0 0 auto;\n\tfont-family: var(--font-ui);\n}\n#topbar .hdr-tools .themebtn:hover { color: var(--primary); border-color: var(--primary); }\n\n/* ── The pilot dropdown: cards, not nested tables ──────────────────────\n The tracking list is a table per character (avatar cell spanning five\n rows of name, system, station, ship, ship name) inside a table inside a\n table. Rendered as-is the portrait floated over the name and the eye and\n ship icons drifted down the middle. The table skeleton stays (tracking.js\n clones it); its rows are flattened and each character is laid out as a\n card: portrait, status and controls in a narrow left column, the five\n text lines stacked beside it. */\n#login #content #logoutTable { border-collapse: separate; border-spacing: 0; }\n#login #content #logoutTable > tbody > tr > td { vertical-align: top; padding: 0 12px; }\n#login #content #logoutTable > tbody > tr > td:first-child { padding-left: 0; }\n#login #content #logoutTable > tbody > tr > td:last-child { padding-right: 0; }\n#login #content #track, #login #content #account { min-width: 260px; }\n#login #content #track th, #login #content #account th { text-align: left; padding: 0 0 6px; }\n#login #content #tracking { display: flex; flex-direction: column; gap: 6px; padding: 0; }\n\n#login #content #track .tracking-clone,\n#login #content #track .tracking-clone > tbody { display: block; }\n#login #content #track .tracking-clone > tbody > tr { display: contents; }\n#login #content #track .tracking-clone > tbody {\n\tdisplay: grid;\n\tgrid-template-columns: 44px minmax(0, 1fr);\n\tgrid-template-rows: repeat(5, auto);\n\tcolumn-gap: 10px; row-gap: 1px;\n\tpadding: 8px 10px;\n}\n#login #content #track .tracking-clone td { padding: 0; border: 0; line-height: 1.3; }\n#login #content #track .tracking-clone td.avatar {\n\tgrid-column: 1; grid-row: 1 / span 5;\n\tdisplay: flex; flex-direction: column; align-items: center; gap: 4px;\n}\n#login #content #track .tracking-clone td.avatar img.avatar { display: block; }\n#login #content #track .tracking-clone td.avatar hr.bar { width: 36px; margin: 0; height: 3px; border: 0; border-radius: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group { display: flex; gap: 6px; margin-top: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group i { font-size: 14px; color: var(--muted-foreground); cursor: pointer; }\n#login #content #track .tracking-clone td.avatar .control-group i.active,\n#login #content #track .tracking-clone td.avatar .control-group i:hover { color: var(--primary); }\n#login #content #track .tracking-clone td.name { grid-column: 2; grid-row: 1; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.system { grid-column: 2; grid-row: 2; }\n#login #content #track .tracking-clone td.station { grid-column: 2; grid-row: 3; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.ship { grid-column: 2; grid-row: 4; }\n#login #content #track .tracking-clone td.shipname { grid-column: 2; grid-row: 5; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.text:empty::before,\n#login #content #track .tracking-clone td.text:has(> :empty):not(:has(*))::before { content: none; }\n#login #content #track .tracking-clone i.alert { grid-column: 2; grid-row: 1; justify-self: end; }\n\n/* The signed-in character: portrait beside name and corporation. */\n#login #content #account, #login #content #account > tbody { display: block; }\n#login #content #account > tbody { display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: 12px; align-items: start; }\n#login #content #account > tbody > tr { display: contents; }\n#login #content #account th { grid-column: 1 / -1; }\n#login #content #account td { padding: 0; border: 0; }\n#login #content #account td#avatar { grid-column: 1; grid-row: 2 / span 2; }\n#login #content #account td#characterName { grid-column: 2; grid-row: 2; font-weight: 600; padding-top: 4px; }\n#login #content #account td.text:not(#characterName) { grid-column: 2; grid-row: 3; color: var(--muted-foreground); }\n#login #content #account td:empty { display: none; }\n\n/* Buttons row. */\n#login #content #logoutTable > tbody > tr:last-child > td { padding-top: 12px; }\n#login #content #logoutTable > tbody > tr:last-child > td:last-child { text-align: right; }\n\n/* ── The mask menu: a popover, in the capsule's language ──────────────\n Was orange links stacked with a stray glyph each. Rows: the same source\n dot the capsule wears, the label, and a tick on the one you are in.\n Manage and admin sit under a rule in the quiet register. */\n#topbar #mask-menu {\n\tmin-width: 176px; padding: 4px 0;\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.45);\n}\n#topbar #mask-menu .triangle { display: none; }\n#topbar #mask-menu a {\n\tdisplay: flex; align-items: center; gap: 8px;\n\tpadding: 6px 12px; margin: 0;\n\tcolor: var(--foreground); font-size: var(--fs-sm); font-weight: 500; text-decoration: none;\n\tline-height: 1.2;\n}\n#topbar #mask-menu a:hover { background: var(--muted); color: var(--foreground); }\n#topbar #mask-menu a .mask { display: inline-flex; align-items: center; gap: 8px; color: inherit; font-size: inherit; }\n#topbar #mask-menu a .mask i[data-icon] {\n\twidth: 8px; height: 8px; border-radius: 50%; padding: 0; margin: 0; flex: 0 0 auto;\n\tdisplay: inline-block; transform: none; background: var(--muted-foreground);\n}\n#topbar #mask-menu a .mask i[data-icon]::before { content: none; }\n#topbar #mask-menu a .mask i.global { background: var(--muted-foreground); }\n#topbar #mask-menu a .mask i.personal,\n#topbar #mask-menu a .mask i.character { background: var(--data-good); }\n#topbar #mask-menu a .mask i.corporate { background: var(--primary); }\n#topbar #mask-menu a .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.personal { background: var(--data-good); }\n#topbar #mask-menu a.active::after {\n\tcontent: \"\\2713\"; margin-left: auto; color: var(--primary); font-size: 12px; font-weight: 700;\n}\n#topbar #mask-menu hr.bar { height: 1px; border: 0; margin: 4px 0; background: var(--border); }\n#topbar #mask-menu #mask-link, #topbar #mask-menu #admin {\n\tcolor: var(--muted-foreground); font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n}\n#topbar #mask-menu #mask-link:hover, #topbar #mask-menu #admin:hover { color: var(--foreground); }\n\n/* The eye and ship toggles sit in a row under the portrait. */\n#login #content #track .tracking-clone td.avatar .control-group { width: auto; min-width: 36px; justify-content: center; }\n\n/* ── The ship, under the name ─────────────────────────────────────────── */\n#topbar .hdr-line2 { display: flex; align-items: center; gap: 8px; }\n#topbar .hdr-ship {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; line-height: 18px;\n}\n#topbar .hdr-ship.hidden { display: none; }\n\n/* ── Phone header: the mask dot is a dot, and the name gives way ───────\n The coarse-pointer rule makes every #topbar i a 44px target; the mask\n capsule's source dot is an i too, and became a 44px orange disc beside\n the avatar. And the system name did not shrink, so the pilot block sat\n on top of it. */\n@media (pointer: coarse) {\n\t#topbar #mask .mask i[data-icon], #topbar #mask-menu a .mask i[data-icon] {\n\t\tmin-width: 0; min-height: 0; width: 7px; height: 7px; padding: 0;\n\t}\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-left { min-width: 0; }\n\t#topbar #hdr-system { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\t#topbar > .align-right { flex-shrink: 0; }\n\t#topbar #login h3 > a#user { gap: 6px; }\n}\n\n/* ── Install tip (phones) ─────────────────────────────────────────────── */\n#install-tip {\n\tdisplay: flex; align-items: center; gap: 10px;\n\tpadding: 8px 12px;\n\tbackground: color-mix(in oklab, var(--primary) 14%, var(--card));\n\tborder-bottom: 1px solid var(--border);\n\tfont-size: var(--fs-sm); color: var(--foreground);\n}\n#install-tip .tip-text { flex: 1 1 auto; min-width: 0; }\n#install-tip button { min-height: 32px; border-radius: 4px; font: inherit; cursor: pointer; }\n#install-tip .tip-install { background: var(--primary); color: #1b1207; border: 0; padding: 0 12px; font-weight: 600; }\n#install-tip .tip-close { background: none; border: 0; color: var(--muted-foreground); font-size: 18px; line-height: 1; padding: 0 6px; }\n\n/* ── The top row: smaller by default, and it does not follow the system ──\n 40vh unless a visited system needed more (system-fit.js remembers the\n largest, per window height). The chain gets the rest. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 40vh)) 1fr; }\n}\n\n/* ── Range in the header, links beside the legend ─────────────────────── */\n#infoWidget > .controls .bar-right #sys-range {\n\tdisplay: inline-flex; align-items: center; gap: 2px; margin-right: 6px;\n\tpadding-right: 8px; border-right: 1px solid var(--border-soft);\n}\n#infoWidget > .controls .bar-right #sys-range a {\n\tdisplay: inline-flex; align-items: center; height: 22px; padding: 0 6px;\n\tborder-radius: 3px; text-decoration: none;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#infoWidget > .controls .bar-right #sys-range a:hover { color: var(--foreground); background: var(--muted); }\n#infoWidget > .controls .bar-right #sys-range a.active { color: var(--primary); background: var(--muted); }\n#activityGraphControls { flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-3); }\n#activityGraphControls #infoLinks.in-legend-row { margin: 0 0 0 auto; padding: 0; border: 0; }\n#activityGraphControls #activityLegend { margin-right: 0; }\n\n/* Legend and links on one row: short chip labels, tighter tracking. */\n#activityLegend { gap: 2px 4px; }\n#activityLegend .legend-chip { padding: 0 5px 0 4px; letter-spacing: .06em; gap: 5px; }\n#activityGraphControls #infoLinks.in-legend-row { gap: 8px; }\n#activityGraphControls #infoLinks.in-legend-row a { letter-spacing: .12em; padding: 0; }\n\n/* ── Brand packs ─────────────────────────────────────────────────────────\n A pack without a logo image shows the product name in the display face. */\n#topbar #logo .logo-text { font-family: var(--font-display); font-weight: 700; font-size: 22px; letter-spacing: .02em; color: var(--foreground); line-height: 64px; }\n\n/* ── Typographic lockup: a small line, the name, a small line ───────────\n Set in the page's own fonts (an SVG cannot reach them). The name\n takes the brand face and the accent; the small lines the label register;\n optional rule-and-star flourishes either side of the name. */\n#topbar #logo .logo-lockup { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; line-height: 1; padding: 6px 0; }\n#topbar #logo .lockup-small {\n\tfont-family: var(--font-mono); font-size: 8.5px; font-weight: 500; letter-spacing: .26em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #logo .lockup-main {\n\tdisplay: inline-flex; align-items: center; gap: 10px;\n\tfont-family: var(--font-brand, var(--font-display)); font-size: 19px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;\n\tcolor: var(--primary); padding-left: .2em; /* balances the trailing tracking */\n}\n#topbar #logo .lockup-main.has-flourish::before,\n#topbar #logo .lockup-main.has-flourish::after {\n\tcontent: \"\"; width: 44px; height: 2px; background: var(--primary); flex: 0 0 auto;\n\t-webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px) ; mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px);\n}\n#topbar #logo .lockup-main.has-flourish::before { -webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px); }\n\n/* ── Signature dialog: compact, sides labelled in the gutter ──────────────\n Upstream's dialog was tighter and named each wormhole side with a\n vertical label down the left; the rebuild had replaced those with three\n horizontal headings (WORMHOLE, SIDE, OTHER SIDE) and looser\n rows, and grew a third taller. Back to the gutter, minus the headings. */\n#dialog-signature #wormhole::before,\n#dialog-signature #wormhole .side + .side::before { content: none; }\n#dialog-signature #wormhole { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature #wormhole .side { position: relative; padding-left: 20px; min-height: 0; }\n#dialog-signature #wormhole .side + .side { margin-top: 4px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature .sideLabel {\n\tposition: absolute; left: 0; top: 0; bottom: 5px; width: 14px;\n\tmargin: 0; padding: 0; border: 0;\n\tdisplay: flex; align-items: center; justify-content: center;\n\twriting-mode: vertical-rl; transform: rotate(180deg);\n\tfont-family: var(--font-mono); font-size: 9.5px; font-weight: 500; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; text-align: center;\n}\n#dialog-signature #wormhole .side + .side .sideLabel { top: 8px; }\n#dialog-signature .row { margin: 0 0 5px; gap: 6px; }\n#dialog-signature .row > .label:first-child { flex: 0 0 50px; }\n#dialog-signature #wormhole .row > .label:first-child { flex-basis: 44px; }\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button { min-height: 26px; }\n#dialog-signature .mini-selector + label { min-height: 24px; padding-top: 0; padding-bottom: 0; }\n/* signatures.css sizes the two labels by position (90px / 135px wide, one\n hung 70px below its side) with an id-heavier selector; match it. */\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\twidth: 14px; bottom: 5px; text-align: center; transform-origin: 50% 50%;\n}\n#dialog-signature #wormhole .side:last-child .sideLabel { top: 8px; }\n/* Fields read as fields: the name inputs had the dialog's own ground and a\n border one step from it, so they were invisible until focused. And the\n nine class chips plus divider fit the row. */\n#dialog-signature input[type=\"text\"] { background: var(--input); border-color: var(--border); }\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); }\n#dialog-signature .quickSelectBar { gap: 3px; }\n#dialog-signature .quickSelectBar button { min-width: 24px; padding: 0 4px; }\n\n/* ══ Signature dialog: the design pass ═══════════════════════════════════\n One label column across the whole form; the side gutter is a column of\n its own, so the top rows are indented to match the wormhole rows. Life\n and Mass are connected segmented controls, the class chips two even\n groups, type and leads each one control with its menu button attached.\n ─────────────────────────────────────────────────────────────────────── */\n.ui-dialog:has(#dialog-signature) { width: min(392px, calc(100vw - 2rem)) !important; }\n#dialog-signature #form-signature > .row,\n#dialog-signature #site > .row { padding-left: 20px; }\n\n#dialog-signature .row { margin: 0 0 6px; gap: 6px; align-items: center; }\n#dialog-signature .row > .label:first-child,\n#dialog-signature #wormhole .row > .label:first-child {\n\tflex: 0 0 54px; text-align: right;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature .row > .label:not(:first-child) { font-family: var(--font-mono); color: var(--muted-foreground); }\n\n/* Fields: one height, one ground, one edge. Ids and hull types in the mono. */\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tmin-height: 26px; height: 26px; box-sizing: border-box;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px;\n\tfont-size: 12px; color: var(--foreground);\n}\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); outline: 0; box-shadow: 0 0 0 2px color-mix(in oklab, var(--primary) 30%, transparent); }\n#dialog-signature .signatureID { width: 46px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature .wormholeType { width: 58px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature [name=\"signatureName\"], #dialog-signature [name=\"wormholeName\"] { flex: 1 1 auto; min-width: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 112px; display: inline-flex; align-items: center; }\n\n/* Comboboxes: the input and its menu button are one control. */\n#dialog-signature .custom-combobox { display: inline-flex; align-items: stretch; }\n#dialog-signature .custom-combobox input { border-top-right-radius: 0; border-bottom-right-radius: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle {\n\tposition: static; margin: 0 0 0 -1px; width: 24px; height: 26px; padding: 0;\n\tborder: 1px solid var(--border); border-radius: 0 3px 3px 0; background: var(--muted); color: var(--muted-foreground);\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .custom-combobox .custom-combobox-toggle:hover { color: var(--foreground); border-color: var(--border-strong); }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { flex: 1 1 auto; display: inline-flex; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] .custom-combobox { flex: 1 1 auto; }\n#dialog-signature .leadsTo { width: auto; flex: 1 1 auto; min-width: 0; }\n\n/* Lifetime: one boxed control, numbers in the mono. */\n#dialog-signature .duration-picker { height: 26px; padding: 0 8px; gap: 4px; border-color: var(--border); background: var(--input); }\n#dialog-signature .duration-picker input { width: 22px; text-align: center; font-family: var(--font-mono); font-size: 12px; height: auto; min-height: 0; border: 0; background: transparent; }\n#dialog-signature .duration-picker span, #dialog-signature .duration-picker label { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-foreground); }\n\n/* Life and Mass: segmented. The chosen state is filled in its colour. */\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n\tmin-height: 26px; height: 26px; padding: 0 12px; margin: 0 0 0 -1px;\n\tborder: 1px solid var(--border); border-radius: 0; background: var(--input);\n\tfont-size: 12px; font-weight: 500; color: var(--muted-foreground); line-height: 1;\n}\n#dialog-signature .mini-selector:first-of-type + label { border-radius: 3px 0 0 3px; margin-left: 0; }\n#dialog-signature .row > .mini-selector + label:last-child { border-radius: 0 3px 3px 0; }\n#dialog-signature .mini-selector + label:hover { color: var(--foreground); background: var(--muted); border-color: var(--border); }\n#dialog-signature .mini-selector:checked + label { position: relative; z-index: 1; border-color: transparent; }\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); color: #ffffff; }\n\n/* Class and hull chips: two even groups, the text divider gone. */\n#dialog-signature .quickSelectBar { display: inline-flex; flex-wrap: nowrap; gap: 3px; font-size: 0; margin: 0; }\n#dialog-signature .row > .quickSelectBar { flex-basis: 100%; margin-left: 60px; }\n#dialog-signature .quickSelectBar button {\n\tmin-width: 26px; height: 22px; padding: 0 5px; border: 1px solid var(--border); border-radius: 3px;\n\tbackground: var(--input); font-family: var(--font-mono); font-size: 10px; font-weight: 600; letter-spacing: .04em; line-height: 1;\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .quickSelectBar button:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature #leadsToQuickBar button[value=\"High-Sec\"] { margin-left: 8px; }\n#dialog-signature .wormholeTypeQuickSelect { margin-left: 0; flex-basis: auto; }\n#dialog-signature .wormholeTypeQuickSelect:empty { display: none; }\n\n/* The side gutter, one column wide, the labels centred in it. */\n#dialog-signature #wormhole .side { padding-left: 20px; }\n#dialog-signature .sideLabel,\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel { width: 14px; left: 0; font-size: 9px; letter-spacing: .2em; }\n\n/* A missing required field: the edge in the danger colour, no halo. */\n#dialog-signature .sig-missing, #dialog-signature .sig-missing:focus { border-color: var(--destructive); box-shadow: none; }\n/* Combobox menu button: its sprite icon was absolutely positioned against\n the wrapper, so it landed inside the input. The button is the positioned\n box, the sprite is gone, and a chevron is drawn in the current colour. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { position: relative; text-indent: 0; overflow: hidden; }\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon,\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space { display: none; }\n#dialog-signature .custom-combobox .custom-combobox-toggle::after {\n\tcontent: \"\"; width: 6px; height: 6px; margin-top: -3px;\n\tborder-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg);\n}\n/* The type menu: text first, chevron at the right edge. */\n#dialog-signature #signatureType .ui-selectmenu-button { display: inline-flex; align-items: center; gap: 6px; padding: 0 8px; width: auto !important; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text { flex: 1 1 auto; margin: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon { order: 2; margin: 0; position: static; }\n/* Lifetime: the duration picker's blocks in one boxed control, numbers in the mono. */\n#dialog-signature .bdp-input {\n\tdisplay: inline-flex; align-items: center; gap: 12px; height: 26px; padding: 0 10px;\n\tborder: 1px solid var(--border); border-radius: 3px; background: var(--input);\n}\n#dialog-signature .bdp-block { display: inline-flex; align-items: baseline; gap: 4px; }\n#dialog-signature .bdp-block br { display: none; }\n#dialog-signature .bdp-block a { text-decoration: none; }\n#dialog-signature .bdp-block a span { font-family: var(--font-mono); font-size: 13px !important; font-weight: 500; color: var(--foreground); line-height: 1; }\n#dialog-signature .bdp-block a:hover span { color: var(--primary); }\n#dialog-signature .bdp-block .bdp-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-foreground); }\n/* The picker's seconds block is hidden by class; keep it that way. The\n control then fits the LENGTH row. */\n#dialog-signature .bdp-block.hidden { display: none !important; }\n#dialog-signature .bdp-input { gap: 10px; padding: 0 8px; }\n/* Combobox: input and button touch, and the pair never outgrows the row. */\n#dialog-signature .custom-combobox { gap: 0; max-width: 100%; }\n#dialog-signature .custom-combobox > * { margin: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle { margin-left: -1px; flex: 0 0 24px; }\n#dialog-signature .custom-combobox input.leadsTo { flex: 1 1 0; width: 0; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { max-width: 100%; }\n/* signatures.css offsets the toggle with right:-20px for its absolute\n layout; on a relative box that is a 20px shove. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { right: auto; left: auto; top: auto; bottom: auto; width: 24px; }\n\n/* Phone: the panel bar has no room for the range control beside the\n panel buttons -- the close button was wrapping onto a second line. The\n graph still shows the last 24h. */\n@media (max-width: 767px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n}\n\n/* ══ Feedback round (first corp feedback, 2026-09-04) ════════════════════ */\n\n/* ── 1. Chain nodes: the same card, half the height ──────────────────────\n The class chip sat on its own line above the name and the statics hung\n half below the card; at zoom 1.2 that was 173x70 with an 84px row pitch\n against upstream's 30px pill. Two lines: chip + name + pips, then hull or\n sig id + statics inline. About 120x40 at zoom 1. Security reads at full\n strength on the left edge and in the chip, in both rooms. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, 1fr) auto;\n\tgrid-template-areas: \"class name pips\" \"type type statics\";\n\talign-items: center; column-gap: 5px; row-gap: 2px;\n\twidth: 120px; min-height: 0; height: auto !important;\n\tpadding: 4px 7px 4px 6px; margin: 0;\n\tborder-left: 3px solid var(--node-edge);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, .35);\n\toverflow: visible;\n}\n#chainMap div.node > .nodeClass { grid-area: class; margin: 0; order: 0; }\n#chainMap div.node > .nodeSystem { grid-area: name; margin: 0; padding: 0; order: 0; font-size: 12px; line-height: 16px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; margin: 0; order: 0; gap: 2px; font-size: 8px; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; order: 0; min-height: 0; font-size: 10px; line-height: 14px; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: .04em; }\n#chainMap div.node > .statics { grid-area: statics; position: static; transform: none; margin: 0; gap: 3px; justify-content: flex-end; order: 0; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 14px; min-width: 18px; padding: 0 5px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > .nodeClass > span { height: 15px; padding: 0 5px; font-size: 10px; }\n#chainMap div.node > .nodeIcons { top: 2px; right: 4px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name pips\"; }\n#chainMap div.loop { width: 120px; padding: 4px 7px; }\n\n/* Security and class on the edge, full strength; tokens carry both rooms. */\n#chainMap div.greenNode.node { border-left-color: var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--data-critical); }\n#chainMap div.node:has(> .nodeClass .wh),\n#chainMap div.node:has(> .nodeClass .class-1), #chainMap div.node:has(> .nodeClass .class-2), #chainMap div.node:has(> .nodeClass .class-3) { border-left-color: var(--data-info); }\n#chainMap div.node:has(> .nodeClass .class-4), #chainMap div.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap div.node:has(> .nodeClass .class-12) { border-left-color: var(--data-loot-gold); }\n#chainMap div.node:has(> .nodeClass .class-15), #chainMap div.node:has(> .nodeClass .class-16), #chainMap div.node:has(> .nodeClass .class-17) { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The class tint stays but reads as a ground, not a wash. */\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-critical) 10%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-loot-orange) 10%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-good) 10%, var(--node-surface)); }\n\n/* ── 4. The chain pans with the wheel again ───────────────────────────────\n #chainParent is the widget's .content, so the panel rule that hides\n overflow outranked its own overflow: auto. Drag-to-pan (dragscroll) had\n kept working, which is why it felt like drag became the only way. */\n#chainWidget > #chainParent.content { overflow: auto; }\n\n/* ── 5. Signature columns: header and cells share one alignment ──────────\n The cells carry the per-column alignment classes from Settings; the\n header now wears the same classes (sig-align.js), so the two agree. */\n#sigTable th, #sigTable td { text-align: left; }\n#sigTable .centerAlign { text-align: center; }\n#sigTable .rightAlign { text-align: right; }\n#sigTable .leftAlign { text-align: left; }\n\n/* ── 7. Three columns from 960px; what gives at the narrow end ─────────── */\n@media (min-width: 960px) and (max-width: 1099px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n\t#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n\t#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 3.2rem; padding-left: 2px; padding-right: 4px; }\n\t#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 4.6rem; }\n}\n\n/* ── 6. Phone: a signature is two lines, nothing hidden ─────────────────── */\n@media (max-width: 767px) {\n\t#sigTable thead { display: none; }\n\t#sigTable tbody tr {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto minmax(0, 1fr) auto auto;\n\t\tgrid-template-areas: \"id type type age\" \"leads leads life mass\";\n\t\tcolumn-gap: 10px; row-gap: 2px;\n\t\tpadding: 7px 10px;\n\t}\n\t#sigTable tbody td { display: block; width: auto !important; padding: 0 !important; height: auto; line-height: 18px; text-align: left !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n\t#sigTable tbody td:nth-child(1) { grid-area: id; font-weight: 600; }\n\t#sigTable tbody td:nth-child(2) { grid-area: type; }\n\t#sigTable tbody td:nth-child(3) { grid-area: age; text-align: right !important; }\n\t#sigTable tbody td:nth-child(4) { grid-area: leads; }\n\t#sigTable tbody td:nth-child(5) { grid-area: life; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:nth-child(6) { grid-area: mass; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:empty { display: none; }\n}\n/* Older per-column rules (an id and a pseudo-class) outranked the shared\n alignment classes on the header; match them with the section in the\n selector. And the phone block had hidden Life and Mass outright. */\n#sigTable thead th.leftAlign, #sigTable tbody td.leftAlign { text-align: left; }\n#sigTable thead th.centerAlign, #sigTable tbody td.centerAlign { text-align: center; }\n#sigTable thead th.rightAlign, #sigTable tbody td.rightAlign { text-align: right; }\n@media (max-width: 767px) {\n\t#sigTable tbody tr > td:nth-child(5), #sigTable tbody tr > td:nth-child(6) { display: block !important; }\n\t#sigTable tbody tr > td:empty { display: none !important; }\n}\n/* The name was being cut to one letter: the pips' non-breaking spaces and\n an old right padding on the name ate the column. The card sizes to its\n name between 118 and 168px, as upstream's pill did; the pips are dots. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: auto; min-width: 118px; max-width: 168px; }\n#chainMap div.node > .nodeSystem { padding-right: 0; overflow: visible; text-overflow: clip; }\n#chainMap div.node > .nodeActivity { font-size: 0; gap: 3px; }\n#chainMap div.node > .nodeActivity > span { font-size: 8px; line-height: 8px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.loop { width: auto; min-width: 118px; }\n/* The name column: sized to the name (the card grows to 168px), and the\n older h4 rule that ellipsised it is matched at its own specificity. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto auto minmax(0, auto); }\n#chainMap div.node > h4.nodeSystem { padding-right: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 120px; height: auto; line-height: 16px; }\n/* k-space security on the edge, both rooms, from the same tokens the chips use. */\n#chainMap div.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The name track sizes to the name (max-content), so the card grows with\n it up to its cap; overflow on the h4 had made its automatic minimum 0. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto max-content auto; }\n/* Flares (a colour a pilot sets on a node from its menu) are not security:\n they tint the ground and the top edge; the left edge stays security. */\n#chainMap div.greenNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .hisec), #chainMap div.yellowNode.node:has(> .nodeClass .hisec), #chainMap div.redNode.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.greenNode.node:has(> .nodeClass .lowsec), #chainMap div.yellowNode.node:has(> .nodeClass .lowsec), #chainMap div.redNode.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.greenNode.node:has(> .nodeClass .nullsec), #chainMap div.yellowNode.node:has(> .nodeClass .nullsec), #chainMap div.redNode.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .wh), #chainMap div.yellowNode.node:has(> .nodeClass .wh), #chainMap div.redNode.node:has(> .nodeClass .wh) { border-left-color: var(--data-info); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-4), #chainMap div.greenNode.node:has(> .nodeClass .class-5),\n#chainMap div.yellowNode.node:has(> .nodeClass .class-4), #chainMap div.yellowNode.node:has(> .nodeClass .class-5),\n#chainMap div.redNode.node:has(> .nodeClass .class-4), #chainMap div.redNode.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-6), #chainMap div.yellowNode.node:has(> .nodeClass .class-6), #chainMap div.redNode.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* Security on the left edge from classes the node now carries itself\n (sec-hisec / sec-lowsec / sec-nullsec / sec-wh + cls-N), so no :has()\n is needed and the build cannot drop it. The card shrink-wraps its name. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: fit-content; margin: 0 auto; }\n#chainMap div.node.sec-hisec, #chainMap div.greenNode.node.sec-hisec, #chainMap div.yellowNode.node.sec-hisec, #chainMap div.redNode.node.sec-hisec { border-left-color: var(--data-good); }\n#chainMap div.node.sec-lowsec, #chainMap div.greenNode.node.sec-lowsec, #chainMap div.yellowNode.node.sec-lowsec, #chainMap div.redNode.node.sec-lowsec { border-left-color: var(--data-loot-orange); }\n#chainMap div.node.sec-nullsec, #chainMap div.greenNode.node.sec-nullsec, #chainMap div.yellowNode.node.sec-nullsec, #chainMap div.redNode.node.sec-nullsec { border-left-color: var(--data-critical); }\n#chainMap div.node.sec-triglavian, #chainMap div.greenNode.node.sec-triglavian, #chainMap div.yellowNode.node.sec-triglavian, #chainMap div.redNode.node.sec-triglavian { border-left-color: var(--data-loot-red); }\n#chainMap div.node.sec-wh, #chainMap div.greenNode.node.sec-wh, #chainMap div.yellowNode.node.sec-wh, #chainMap div.redNode.node.sec-wh { border-left-color: var(--data-info); }\n#chainMap div.node.cls-4, #chainMap div.node.cls-5, #chainMap div.greenNode.node.cls-4, #chainMap div.greenNode.node.cls-5, #chainMap div.yellowNode.node.cls-4, #chainMap div.yellowNode.node.cls-5, #chainMap div.redNode.node.cls-4, #chainMap div.redNode.node.cls-5 { border-left-color: var(--data-loot-purple); }\n#chainMap div.node.cls-6, #chainMap div.greenNode.node.cls-6, #chainMap div.yellowNode.node.cls-6, #chainMap div.redNode.node.cls-6 { border-left-color: var(--data-loot-pink); }\n#chainMap div.node.cls-12, #chainMap div.greenNode.node.cls-12, #chainMap div.yellowNode.node.cls-12, #chainMap div.redNode.node.cls-12 { border-left-color: var(--data-loot-gold); }\n#chainMap div.node.cls-15, #chainMap div.node.cls-16, #chainMap div.node.cls-17 { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node, #chainMap .currentNode > div.node.sec-hisec, #chainMap .currentNode > div.node.sec-wh { border-left-color: var(--primary); }\n/* Chrome trimmed so the width is the name's, not the card's. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { column-gap: 4px; padding: 3px 6px 3px 5px; min-width: 104px; }\n#chainMap div.node > .nodeClass > span { padding: 0 4px; height: 14px; }\n#chainMap div.node > .nodeActivity { gap: 2px; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n/* Leads To is the column that takes the table's slack; centred text in it\n drifts away from Age. Upstream pinned it left whatever the setting. */\n#sigTable thead th:nth-child(4), #sigTable tbody td:nth-child(4),\n#sigTable thead th:nth-child(4).centerAlign, #sigTable tbody td:nth-child(4).centerAlign,\n#sigTable thead th:nth-child(4).rightAlign, #sigTable tbody td:nth-child(4).rightAlign { text-align: left; }\n/* The class chip, top-left, filled in its class colour with white text --\n hisec green, lowsec orange, nullsec red, C1-3 blue, C4-5 purple, C6 pink,\n Thera gold, drifter red -- as upstream coloured its nodes. A later rule\n had been greying the chip's currentColor. Same tokens in both rooms. */\n#chainMap div.node > h4.nodeClass > span {\n\tbackground: var(--node-edge); color: #fff; -webkit-text-fill-color: #fff;\n\tfont-weight: 700; letter-spacing: .04em;\n}\n#chainMap div.node > h4.nodeClass > span.hisec { background: var(--data-good); }\n#chainMap div.node > h4.nodeClass > span.lowsec { background: var(--data-loot-orange); }\n#chainMap div.node > h4.nodeClass > span.nullsec { background: var(--data-critical); }\n#chainMap div.node > h4.nodeClass > span.triglavian { background: var(--data-loot-red); }\n#chainMap div.node > h4.nodeClass > span.wh { background: var(--data-info); }\n#chainMap div.node > h4.nodeClass > span.class-4, #chainMap div.node > h4.nodeClass > span.class-5 { background: var(--data-loot-purple); }\n#chainMap div.node > h4.nodeClass > span.class-6 { background: var(--data-loot-pink); }\n#chainMap div.node > h4.nodeClass > span.class-12 { background: var(--data-loot-gold); color: #1b1b1b; -webkit-text-fill-color: #1b1b1b; }\n#chainMap div.node > h4.nodeClass > span.class-15, #chainMap div.node > h4.nodeClass > span.class-16, #chainMap div.node > h4.nodeClass > span.class-17 { background: var(--data-loot-red); }\n\n/* ── Statics span the second row and wrap; three capsules no longer run\n off the edge (they sat in the column the activity pips size). ───────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-areas: \"class name pips\" \"type statics statics\"; }\n#chainMap div.node > .nodeType { white-space: nowrap; }\n#chainMap div.node > .statics { flex-wrap: wrap; justify-content: flex-end; row-gap: 2px; min-width: 0; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n\n/* ── Flares breathe. ──────────────────────────────────────────────────────\n As Aperture's underglow: a blurred pad in the flare colour behind the\n card, scaling 0.96 -> 1.06 and 28% -> 80% opacity on a 1.4s cycle. The\n card itself keeps its security edge and a faint tint; the top edge is\n gone. Still under reduced-motion. */\n@keyframes flare-glow {\n\t0%, 100% { opacity: .28; transform: scale(.96); }\n\t50% { opacity: .8; transform: scale(1.06); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { position: relative; z-index: 0; border-top-width: 1px; border-top-color: var(--node-edge); }\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before {\n\tcontent: \"\"; position: absolute; inset: -3px; z-index: -1; border-radius: inherit;\n\tbackground: var(--flare, transparent); filter: blur(9px);\n\tanimation: flare-glow 1400ms ease-in-out infinite; pointer-events: none;\n}\n#chainMap div.redNode.node { --flare: var(--data-critical); }\n#chainMap div.yellowNode.node { --flare: var(--data-loot-orange); }\n#chainMap div.greenNode.node { --flare: var(--data-good); }\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--flare) 8%, var(--node-surface)); }\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { animation: none; opacity: .55; }\n}\n\n/* ── Three lines, narrow: chains grow sideways, so width is the currency.\n Line 1 chip + name, line 2 hull or sig id with the pips at the right,\n line 3 the statics (J-space only; k-space cards are two lines). About\n 100 wide and 52 tall at zoom 1, against upstream's ~100 x 30. ─────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-columns: auto minmax(0, max-content);\n\tgrid-template-areas: \"class name\" \"type pips\" \"statics statics\";\n\tcolumn-gap: 4px; row-gap: 1px;\n\tmin-width: 92px; max-width: 140px; padding: 3px 6px 3px 5px;\n}\n#chainMap div.node > .nodeType { grid-area: type; }\n#chainMap div.node > .nodeActivity { grid-area: pips; justify-self: end; }\n#chainMap div.node > .statics { grid-area: statics; justify-content: flex-start; margin-top: 1px; }\n#chainMap div.node > h4.nodeSystem { max-width: 104px; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name\" \"statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name\"; }\n#chainMap div.node:not(:has(> .statics span)) { grid-template-areas: \"class name\" \"type pips\"; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { grid-area: name; justify-self: end; }\n#chainMap div.node > .nodeIcons { top: auto; bottom: 3px; right: 5px; }\n#chainMap div.node > .nodeIcons > div { gap: 3px; }\n\n/* ── Upstream's skeleton: a 32px box. Name, then the hull or sig id under\n it; the class chip rides the top-left corner; statics hang off the\n bottom edge as capsules; pips are dots at the bottom right. About\n 100 x 32 at zoom 1 (upstream: ~100 x 30). ────────────────────────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: block; position: relative; overflow: visible;\n\twidth: fit-content; min-width: 96px; max-width: 150px; height: auto !important;\n\tpadding: 3px 10px 3px 10px; margin: 6px auto 8px;\n\ttext-align: center;\n}\n#chainMap div.node > h4.nodeSystem { display: block; margin: 0; padding: 0 10px 0 0; font-size: 12px; line-height: 14px; max-width: none; }\n#chainMap div.node > .nodeType { display: block; margin: 0; font-size: 9.5px; line-height: 11px; letter-spacing: .04em; min-height: 0; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .nodeClass {\n\tposition: absolute; top: -7px; left: -5px; margin: 0; line-height: 1; z-index: 2;\n}\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 6px; right: 6px; bottom: -7px; margin: 0; z-index: 2;\n\tdisplay: flex; justify-content: center; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeActivity { position: absolute; right: 4px; bottom: 3px; top: auto; margin: 0; gap: 2px; z-index: 1; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeIcons { position: absolute; top: -6px; right: -4px; bottom: auto; left: auto; }\n#chainMap div.node > .nodeIcons > div { gap: 2px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; font-size: 9px; padding: 0 4px; }\n#chainMap div.node.frig-chain { border-width: 1px; }\n#chainMap div.loop { width: fit-content; min-width: 0; padding: 3px 10px; margin: 6px auto 8px; }\n/* The glow is a halo around and behind the box, not a wash across it: an\n animated shadow instead of a pad inside the card's own stacking layer. */\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { content: none; animation: none; }\n@keyframes flare-halo {\n\t0%, 100% { box-shadow: 0 0 6px 1px color-mix(in oklab, var(--flare) 45%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n\t50% { box-shadow: 0 0 16px 5px color-mix(in oklab, var(--flare) 85%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tz-index: auto; border-color: color-mix(in oklab, var(--flare) 60%, var(--node-edge));\n\tanimation: flare-halo 1400ms ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { animation: none; box-shadow: 0 0 12px 3px color-mix(in oklab, var(--flare) 70%, transparent); }\n}\n/* The chip sits inline before the name (it was covering the first letter\n from the corner); the type line gets room above the hanging capsules. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: auto max-content; grid-template-areas: \"class name\" \"type type\";\n\talign-items: center; column-gap: 4px; row-gap: 0;\n\tmin-width: 92px; max-width: 160px; padding: 3px 8px 9px 6px; margin: 4px auto 9px; text-align: left;\n}\n#chainMap div.node > .nodeClass { position: static; grid-area: class; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; padding: 0; line-height: 15px; max-width: 110px; }\n#chainMap div.node > .nodeType { grid-area: type; text-align: left; padding-right: 24px; line-height: 11px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { padding-bottom: 3px; grid-template-areas: \"class name\"; }\n#chainMap div.node:has(> .nodeType:empty):has(> .statics span) { padding-bottom: 8px; }\n#chainMap div.node > .statics { bottom: -7px; left: 4px; right: 4px; justify-content: flex-start; }\n#chainMap div.node > .nodeActivity { right: 5px; bottom: 9px; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { bottom: 4px; }\n#chainMap div.node > .nodeIcons { top: -5px; right: -3px; }\n\n/* ══ Chain node, settled ═══════════════════════════════════════════════════\n Everything in flow on one grid, so nothing can land on anything else at\n any zoom. Row 1: class chip, name, effect / occupant icons, activity\n pips. Row 2: hull or sig id. Statics hang off the bottom edge into space\n the card reserves below itself. 34px tall with a type line, 22 without;\n about 100 wide for a J-name. Upstream: ~100 x 30 with its tabs below. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-areas: \"class name icons pips\" \"type type type type\";\n\talign-items: center; column-gap: 4px; row-gap: 1px;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 3px 7px 4px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: left;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name icons pips\"; padding-bottom: 3px; }\n#chainMap div.node > .nodeClass { grid-area: class; position: static; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; margin: 0; padding: 0; line-height: 15px; font-size: 12px; max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeIcons { grid-area: icons; position: static; display: flex; align-items: center; gap: 3px; width: auto; height: auto; margin: 0; top: auto; right: auto; left: auto; bottom: auto; }\n#chainMap div.node > .nodeIcons:empty { display: none; }\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; align-items: center; gap: 3px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 9px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; justify-self: end; display: flex; align-items: center; gap: 2px; width: auto; height: auto; margin: 0; font-size: 0; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; padding: 0; text-align: left; font-family: var(--font-mono); font-size: 9.5px; line-height: 11px; letter-spacing: .04em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 5px; right: 5px; top: 100%; bottom: auto; margin: -4px 0 0; transform: none; z-index: 2;\n\tdisplay: flex; justify-content: flex-start; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 3px 8px; margin: 3px auto 12px; }\n/* Placement by line numbers, not area names: the minifier had reordered\n the named areas and the icons fell into an implicit fourth row. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-areas: none;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-rows: auto auto;\n\tgrid-auto-rows: 0;\n}\n#chainMap div.node > .nodeClass { grid-area: auto; grid-column: 1; grid-row: 1; }\n#chainMap div.node > h4.nodeSystem { grid-area: auto; grid-column: 2; grid-row: 1; }\n#chainMap div.node > .nodeIcons { grid-area: auto; grid-column: 3; grid-row: 1; }\n#chainMap div.node > .nodeActivity { grid-area: auto; grid-column: 4; grid-row: 1; }\n#chainMap div.node > .nodeType { grid-area: auto; grid-column: 1 / 5; grid-row: 2; }\n#chainMap div.node > .statics { grid-area: auto; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n/* The name's own text is its minimum: overflow: clip is not a scroll\n container, so the grid and the org-chart cell size to the name instead of\n collapsing it to \"P.\" at their minimum. Still ellipsises past 110px. */\n#chainMap div.node > h4.nodeSystem { overflow: clip; text-overflow: ellipsis; min-width: min-content; }\n#chainMap div.node > h4.nodeSystem a { white-space: nowrap; }\n\n/* ══ Chain node: the original's layout, in our clothes ═════════════════════\n Three centred lines -- class chip with the effect beside it, the name,\n the hull or sig id -- the statics hanging off the bottom edge into the\n space between rows, activity dots on the edge, the occupant badge on the\n top-right corner. About 100 x 46 at zoom 1, which is what the original\n measured once its three lines were in it. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: minmax(0, max-content); grid-template-rows: auto auto auto; grid-auto-rows: 0;\n\tjustify-items: center; align-items: center; row-gap: 0; column-gap: 0;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 4px 10px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: center;\n}\n#chainMap div.node > .nodeClass { grid-column: 1; grid-row: 1; position: static; margin: 0; display: inline-flex; align-items: center; gap: 4px; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 5px; font-size: 9px; }\n#chainMap div.node > h4.nodeSystem { grid-column: 1; grid-row: 2; margin: 0; padding: 0; line-height: 16px; font-size: 12.5px; font-weight: 600; max-width: 150px; min-width: min-content; overflow: clip; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeType { grid-column: 1; grid-row: 3; margin: 0; padding: 0; text-align: center; font-family: var(--font-mono); font-size: 10px; line-height: 12px; letter-spacing: .06em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto auto; }\n/* The effect sits beside the class, in flow; the occupant badge rides the corner. */\n#chainMap div.node > .nodeIcons { grid-column: 1; grid-row: 1; position: static; display: contents; }\n#chainMap div.node > .nodeIcons > div { float: none; display: contents; }\n#chainMap div.node > .nodeIcons > div:first-child { display: inline-flex; align-items: center; position: absolute; top: 4px; right: 8px; gap: 2px; }\n#chainMap div.node > .nodeIcons > div:last-child { display: inline-flex; align-items: center; position: absolute; top: -6px; right: -6px; gap: 2px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 13px; padding: 0 5px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n/* Dots on the bottom edge, left; statics hanging from the edge, right of them. */\n#chainMap div.node > .nodeActivity { position: absolute; left: 8px; bottom: -3px; top: auto; right: auto; margin: 0; width: auto; height: auto; display: flex; gap: 3px; font-size: 0; z-index: 2; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .statics { position: absolute; left: auto; right: 6px; top: 100%; bottom: auto; margin: -5px 0 0; transform: none; display: flex; justify-content: flex-end; gap: 3px; flex-wrap: nowrap; z-index: 2; }\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 13px; min-width: 17px; padding: 0 5px; font-size: 9px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 4px 10px; margin: 3px auto 12px; }\n/* The class / security capsule hangs off the top-left corner, the effect\n off the top-right; the box holds name and sig; statics and dots hang off\n the bottom. The gaps between rows carry the capsules, as the original's\n tabs did. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-rows: auto auto; padding: 7px 10px 6px; margin: 9px auto 12px; min-width: 92px;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n#chainMap div.node > .nodeClass { position: absolute; top: -7px; left: -5px; margin: 0; z-index: 3; }\n#chainMap div.node > .nodeClass > span { box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > h4.nodeSystem { grid-row: 1; }\n#chainMap div.node > .nodeType { grid-row: 2; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -7px; right: 6px; }\n#chainMap div.node > .nodeIcons > div:last-child { top: -7px; right: -6px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 12px; text-shadow: 0 0 3px var(--background); }\n#chainMap div.node > .nodeActivity { bottom: -4px; left: 7px; }\n#chainMap div.node > .statics { margin-top: -6px; right: 5px; }\n/* Tooltips appended inside the chain panel position against it, not the\n page: the panel is the containing block. */\n#chainWidget > #chainParent.content { position: relative; }\n/* The corner chip straddles the top edge in the box's own top padding; the\n name starts below it. Mirrors the statics on the bottom edge. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { padding-top: 10px; padding-bottom: 7px; margin-top: 10px; }\n#chainMap div.node > .nodeClass { top: -7px; left: -5px; }\n#chainMap div.node > .nodeClass > span { height: 14px; }\n/* The desktop layout pins every panel's .content static with !important;\n the chain panel must be the containing block for its tooltips. */\n#chainWidget > #chainParent.content { position: relative !important; }\n/* An absolutely positioned child of a grid is placed against its grid\n area when it has one; the chip and the dots must be placed against the\n box, so they get no area. And the rows sit 5px closer. */\n#chainMap div.node > .nodeClass, #chainMap div.node > .nodeActivity, #chainMap div.node > .statics,\n#chainMap div.node > .nodeIcons > div { grid-area: auto; grid-row: auto; grid-column: auto; }\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { margin-top: 8px; margin-bottom: 9px; }\n/* The pilot icon and its count sit a little inside the top-right corner,\n and the chain panel keeps headroom above its first row so nothing that\n rides a top edge is clipped by the panel. */\n#chainMap div.node > .nodeIcons > div:last-child { top: -5px; right: -3px; gap: 1px; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -6px; right: 22px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainWidget > #chainParent.content { padding-top: 12px !important; }\n/* The pilot count is centred in its capsule (it is a flex box, which does\n not centre on its own), with a round minimum so \"1\" and \"12\" both sit true. */\n#chainMap div.node > .nodeIcons .badge { justify-content: center; min-width: 14px; padding: 0 4px; box-sizing: border-box; text-align: center; }\n"]} \ No newline at end of file +{"version":3,"sources":["_tokens.css","base.css","account.css","chainmap-radial.css","chainmap.css","command-palette.css","comments.css","dialog-admin.css","dialog-mass.css","dialog-options.css","forms.css","gridster.css","icons.css","introjs.css","jbox.css","mask.css","signatures.css","tripwire.css","_override-1-system.css","_override-3-panels.css","_override-4-signature-dialog.css","_override-5-responsive.css","_override-6-system-panel.css","_override-7-map-and-table.css","_override-8-layout.css","_override-9-chain-tabs.css","_override-a-header.css","_override-b-fixes.css","_override-c-polish.css","_override-d-phone.css","_override-e-scale.css","_override-f-dialog.css","_override-g-bars.css","_override-h-nodes.css","_override-i-inline.css","_override-j-type-roles.css","_theme-base.css","_theme-refit.css"],"names":[],"mappings":"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","file":"app.min.css","sourcesContent":["/* ============================================================================\n Design tokens.\n\n Every colour in app/css resolves through one of these. Two families, kept\n deliberately separate:\n\n --n-* Neutral chrome. Flips with the theme.\n --data-* --ui-* --chart-* EVE data semantics: wormhole class, jump-mass\n band, security, loot, status pills, chart\n series. These encode *meaning*, not brand.\n\n The :root block is the dark theme (\"ops floor\"). Its values are identical to\n the literals they replaced, so this extraction does not change dark\n rendering at all.\n\n The light block (\"front office\") inverts the neutral ramp, and darkens the\n 25 data colours that are used as TEXT until they clear 4.5:1 against the\n light panel. Data colours used only as fills are left untouched -- their\n contrast partner is whatever sits on top of them, which is a separate\n question from this ramp.\n\n Brand colours are NOT defined here. A theme file overrides these tokens.\n ========================================================================= */\n\n:root {\n /* neutral ramp -- n-000 darkest .. n-999 lightest */\n --glow-60: rgba(255, 255, 255, .6);\n --n-000: #000000;\n --n-020: #080808;\n --n-050: #111111;\n --n-100: #222222;\n --n-120: #282828;\n --n-200: #333333;\n --n-220: #3b3b3b;\n --n-250: #404040;\n --n-300: #444444;\n --n-400: #555555;\n --n-500: #666666;\n --n-550: #777777;\n --n-560: #7a7a7a;\n --n-600: #888888;\n --n-650: #999999;\n --n-700: #aaaaaa;\n --n-750: #bbbbbb;\n --n-800: #cccccc;\n --n-850: #dddddd;\n --n-870: #ebebeb;\n --n-880: #eeeeee;\n --n-900: #f0f0f0;\n --n-920: #f4f4f4;\n --n-940: #f7f7f7;\n --n-960: #fafafa;\n --n-999: #ffffff;\n --scrim-60: rgba(0, 0, 0, .6);\n --scrim-70: rgba(0,0,0,0.7);\n --scrim-80: rgba(0, 0, 0, .8);\n --scrim-n020: rgba(10, 10, 10, 0.6);\n --scrim-n050: rgba(17, 17, 17, .7);\n --scrim-n120: rgba(40, 40, 40, .9);\n --scrim-n200: rgba(51, 51, 51, .7);\n --shadow-20: rgba(0,0,0,0.2);\n --shadow-20b: rgba(0, 0, 0, 0.2);\n --shadow-25: rgba(0, 0, 0, 0.25);\n --shadow-25b: rgba(0, 0, 0, .25);\n --shadow-30: rgba(0, 0, 0, .3);\n --stroke-n120: rgba(40, 40, 40, 0.8);\n --veil-danger: rgba(255, 0, 0, .3);\n --veil-grey: rgba(120, 120, 120, .1);\n --veil-silver: rgba(192, 192, 192, .3);\n\n /* data semantics */\n --chart-1: #3366cc;\n --chart-2: #dc3912;\n --chart-3: #ff9900;\n --chart-4: #109618;\n --data-alliance: #00a0ff;\n --data-bronze: #e28a0d;\n --data-brown: #744700;\n --data-class-amber: #996600;\n --data-class-blue: #00286e;\n --data-class-blue-deep: #001b47;\n --data-class-cyan: #0070a0;\n --data-class-green: #004400;\n --data-class-green-deep: #003300;\n --data-class-lime: #00aa00;\n --data-class-orange: #8a4117;\n --data-class-orange-deep: #80370d;\n --data-class-red: #881100;\n --data-class-red-deep: #661100;\n --data-class-sky: #3388dd;\n --data-class-temp: #004080;\n --data-class-void: #000810;\n --data-critical: #ff4747;\n --data-danger: #d93627;\n --data-focus-ring: #998800;\n --data-focus-ring-soft: #ff8c0080;\n --data-good: #50d25a;\n --data-info: #4399f0;\n --data-jm-2000kt: #ffb060;\n --data-jm-375kt: #909090;\n --data-jm-5kt: #40e0ff;\n --data-jm-62kt: #90ff90;\n --data-link: #428bca;\n --data-loot-blue: #6060f0;\n --data-loot-gold: #ffc800;\n --data-loot-orange: #f58504;\n --data-loot-pink: #f06090;\n --data-loot-purple: #9060f0;\n --data-loot-red: #f06060;\n --data-magenta: #e06fdf;\n --data-olive: #999900;\n --data-pale-yellow: #ffffbb;\n --data-triglavian: #ff2060;\n --data-warn: #f5b544;\n --ui-amber: #ffb11f;\n --ui-amber-lit: #ffd665;\n --ui-blue: #2b91d9;\n --ui-blue-lit: #5abaff;\n --ui-green: #70a800;\n --ui-green-lit: #95cc2a;\n --ui-red: #b02222;\n --ui-red-lit: #ee2222;\n}\n\n/* Front office. Only tokens that must change are redefined. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n }\n}\n:root[data-theme=\"light\"] {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n}\n","@font-face {\n\tfont-family: 'lucida';\n\tsrc:url('../fonts/lucida.ttf?w81bs6') format('truetype');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n* {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nhtml, body {\n\theight: 100%;\n}\n\nhtml {\n font-size: .6em;\n font-family: Verdana, 'Helvetica Neue', Arial, sans-serif;\n color: var(--n-600);\n line-height: 1.1;\n min-height: 100%;\n}\n\na {\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tcolor: var(--n-800);\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcolor: var(--n-999);\n}\n\nhr { margin: 4px; }\nhr.bar { border-style: solid }\n\ni {\n\tcursor: pointer;\n}\n\ni.disabled {\n\topacity: .4;\n\tcursor: default;\n}\n\n.invisible {\n\tvisibility: hidden;\n}\n\n.hidden {\n\tdisplay: none;\n}\n\n.align-left {\n\tfloat: left;\n}\n\n.align-right {\n\tfloat: right;\n}\n\n.pointer {\n\tcursor: default;\n}\n\n.text-left {\n\ttext-align: left;\n}\n\n.text-right {\n\ttext-align: right;\n}\n\n.text-center {\n\ttext-align: center;\n}\n\ni.active, a.active {\n\tcolor: orange;\n}\n\n/* All of these styles want to be more specific than a normal class selector so the text colour wins */\nbody .wh, body .class-1, body .class-2, body .class-3 {\n\tcolor: var(--data-info);\n}\n\nbody .class-4, body .class-5 {\n\tcolor: var(--data-loot-purple);\n}\n\nbody .class-6 {\n\tcolor: var(--data-loot-pink);\n}\n\nbody .class-12 {\t/* Thera */\n\tcolor: var(--data-loot-gold);\n}\n\nbody .class-15, body .class-16, body .class-17 {\t/* Drifter */\n\tcolor: var(--data-loot-red);\n}\n\nbody .hisec, body .stable, body .frig {\n\tcolor: var(--data-good);\n}\n\nbody .lowsec, body .destab {\n\tcolor: var(--data-loot-orange);\n}\n\nbody .nullsec, body .critical {\n\tcolor: var(--data-critical);\n}\n\nbody .triglavian { color: var(--data-triglavian); }\n\n.blue-loot, .blue-loot .hisec { color: var(--data-loot-blue); }\n\n.jumps {\n\tcolor: var(--chart-1);\n}\n\n.pods {\n\tcolor: var(--chart-2);\n}\n\n.ships {\n\tcolor: var(--chart-3);\n}\n\n.npcs {\n\tcolor: var(--chart-4);\n}\n\n.thermal-icon {\n\tcontent: url(\"../images/th.png\");\n\theight: 16px;\n}\n\n.kinetic-icon {\n\tcontent: url(\"../images/kn.png\");\n\theight: 16px;\n}\n\n.explosive-icon {\n\tcontent: url(\"../images/exp.png\");\n\theight: 16px;\n}\n\n.em-icon {\n\tcontent: url(\"../images/em.png\");\n\theight: 16px;\n}\n\n/* Scrollbar. Body properties are standards-compliant but only work in Firefox.\n-webkit-* works in Chrome/Safari/etc */\n/* We must tell Chrome not to use these or it will disable all the -webkit-scrollbar things - https://stackoverflow.com/questions/77893503 */\n@supports not selector(::-webkit-scrollbar) {\n\tbody {\n\t\t/* Standards - Firefox. Use slightly less contrasty colours because the bar will be wider */\n\t\tscrollbar-width: thin;\n\t\tscrollbar-color: var(--n-300) var(--n-050);\n\t}\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n}\n\n::-webkit-scrollbar-button:start:decrement,\n::-webkit-scrollbar-button:end:increment {\n height: 2em;\n display: none;\n background-color: black;\n}\n\n::-webkit-scrollbar-track { background-color: var(--n-220); }\n::-webkit-scrollbar-thumb {\tbackground-color: var(--n-500);}\n::-webkit-scrollbar-thumb:hover { background-color: var(--n-650);}\n\n::-webkit-scrollbar-corner {\n\tbackground-color: transparent;\n}\n/* ---------- */\n\n::-webkit-input-placeholder {\n color: var(--n-600);\n}\n\n:-moz-placeholder { /* Firefox 18- */\n color: var(--n-600);\n}\n\n::-moz-placeholder { /* Firefox 19+ */\n color: var(--n-600);\n}\n\n:-ms-input-placeholder {\n color: var(--n-600);\n}\n\n@-webkit-keyframes spin {\nfrom { -webkit-transform: rotate(0deg); }\nto { -webkit-transform: rotate(360deg); }\n}\n\n@-moz-keyframes spin {\nfrom { -moz-transform: rotate(0deg); }\nto { -moz-transform: rotate(360deg); }\n}\n\n@-o-keyframes spin {\nfrom { -o-transform: rotate(0deg); }\nto { -o-transform: rotate(360deg); }\n}\n\n@keyframes spin {\n\tfrom { transform: rotate(0deg); }\n\tto { transform: rotate(360deg); }\n}\n\n.transition {\n\t/* -webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransition: 0.3s all ease-out;\n\t-webkit-transition: 0.3s all ease-out;\n\t-moz-transition: 0.3s all ease-out;\n\t-ms-transition: 0.3s all ease-out;\n\t-o-transition: 0.3s all ease-out; */\n}\n\n.scale {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransform: scale(0.9);\n\t-webkit-transform: scale(0.9);\n\t-moz-transform: scale(0.9);\n\t-ms-transform: scale(0.9);\n\t-o-transform: scale(0.9);\n\n\toverflow: hidden;\n}\n\n.blur {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n filter: blur(1px);\n -webkit-filter: blur(1px);\n\t-moz-filter: blur(1px);\n\t-ms-filter: blur(1px);\n\t-o-filter: blur(1px);\n\tfilter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='1');\n}\n","#login {\n\tposition: relative;\n}\n\n#login #panel {\n\tdisplay: none;\n}\n\n#login img {\n border-radius: 3px;\n}\n\n.triangle {\n\tposition: absolute;\n\ttop: -5px;\n\tright: 15px;\n\tborder-left: 5px solid transparent;\n\tborder-right: 5px solid transparent;\n\tborder-bottom: 5px solid var(--n-300);\n}\n\n#login #content {\n\tposition: absolute;\n\ttop: 20px;\n\tright: 0px;\n\n\tfont-size: 1.1em;\n\n\tline-height: normal;\n\tpadding: 5px;\n}\n\n#login #content #track {\n\tborder-right: 1px solid gray;\n\tpadding-right: 2px;\n\tmin-width: 160px;\n}\n\n#login #content #track .tracking-clone {\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n cursor: pointer;\n\topacity: .4;\n transition: all 0.2s ease;\n\n\tmargin-bottom: 2px;\n}\n\n#login #content #track .tracking-clone:hover {\n\tborder-color: var(--n-400);\n opacity: 1;\n}\n\n#login #content #track .tracking-clone.active {\n\tborder-color: darkorange;\n opacity: 1;\n}\n\n#login #content table {\n\ttext-align: right;\n\twidth: 100%;\n}\n\n#login #content table th {\n\ttext-align: right;\n\tpadding-right: 5px;\n}\n\n#login #content table td {\n\ttext-align: left;\n}\n\n#login #content table .text {\n\tpadding: 0 10px 0 3px;\n\twhite-space: nowrap;\n}\n\n#login #content .avatar {\n\theight: 1px;\n\twidth: 1px;\n}\n\n#login #content table td #logout {\n\tfloat: right;\n}\n\n#login #content #error {\n\tcolor: var(--data-critical);\n}\n\n#logo {\n\tcolor: var(--n-800);\n}\n\n#logo > span > div > canvas {\n\tvertical-align: middle;\n}\n\n#login #error {\n\tfont-weight: bold;\n\ttext-align: center;\n}\n\n#link, #account {\n\twhite-space: nowrap;\n\tcolor: var(--n-500);\n}\n\n#link {\n\tvertical-align: top;\n}\n\n#login #logoutTable tbody th {\n\ttext-align: center;\n\tcolor: var(--n-800);\n\tbackground: var(--n-400);\n}\n\n#logoutTable tbody tr td {\n\tvertical-align: top;\n}\n\n#tracking {\n\tdisplay: block;\n\toverflow-y: auto;\n\tmax-height: 332px;\n}\n\n#tracking [data-icon=\"red-giant\"].stable:before {\n\tcolor: var(--data-good);\n}","/* Styles relating to the radial map renderer */\n#chainMap .radial-map .node.top-level {\n\tborder-radius:200px;\n\tpadding: 10px;\n\tborder: 4px var(--data-class-temp) solid;\n\tfont-size: 120%;\n}\n\n#chainMap .radial-map .top-level .nodeIcons {\n top: 0.9em;\n}\n\n.radial-map {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.radial-map .map-chain-wrapper {\n\toverflow:hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin: 0 10px;\n}\n\n.map-outer-container {\n\tposition: relative;\n}\n\n.map-inner-container {\n\tposition: absolute;\n}\n\n.map-inner-container .node-wrapper {\n\tposition:absolute;\n\twidth: 0; height: 0;\n}\n\n#chainMap .node-wrapper > div.node {\n\ttransform: translate(-50%, -50%);\t/* centre around position */\n}\n\n.map-drawing {\n\tposition: absolute;\n}\n\n.temp { border-style: solid; }\t/* Some border properties don't resolve if the element has no border */\n\n/* 'color' is used to cue the aura effect in canvas drawing */\n.temp { border-width: 2px; border-color: var(--data-class-temp); }\n.temp.jm-5kt, #guide .jm-5kt { border-width: 1px; color: var(--data-jm-5kt); }\n.temp.jm-62kt, #guide .jm-62kt { border-width: 3px; color: var(--data-jm-62kt); }\n.temp.jm-375kt, #guide .jm-375kt { border-width: 5px; color: var(--data-jm-375kt); }\n.temp.jm-2000kt, #guide .jm-2000kt { border-width: 7px; color: var(--data-jm-2000kt); }","#chainMap {\n\t-webkit-user-select: none; /* Chrome all / Safari all */\n\t-moz-user-select: none; /* Firefox all */\n\t-ms-user-select: none; /* IE 10+ */\n\n\t/* No support for these yet, use at own risk */\n\t-o-user-select: none;\n\tuser-select: none;\n}\n\n#chainMap .google-visualization-orgchart-table * {\n\tpadding: 0px;\n}\n\n#chainMap .google-visualization-orgchart-table {\n\tpadding: 0 5px;\n\tpadding-right: 0px;\n\twidth: 1px;\n\tmargin: 0 auto;\n}\n\n#chainMap td.node {\n\twhite-space: nowrap;\n\ttext-align: center;\n\tvertical-align: middle;\n\tfont-family: verdana;\n\tfont-size: 1em;\n\tcursor: default;\n\tline-height: 1;\n\tborder: none;\n\tbackground: none;\n}\n\n#chainMap div.node {\n\theight: 30px;\n\tmin-width: 5em;\n\tdisplay: inline-block;\n\tmargin-left: auto; margin-right: auto;\t/* centre horizontally within cell */\n\tborder: 2px solid var(--n-200);\n border-top-left-radius: 15px 50px;\n border-top-right-radius: 15px 50px;\n\tborder-bottom-left-radius: 15px 50px;\n border-bottom-right-radius: 15px 50px;\n\n\tbackground-color: var(--n-050);\n\tbackground: linear-gradient(var(--n-100), var(--n-050));\n\n\tbox-shadow: 2px 2px 8px var(--shadow-20);\n}\n\n#chainMap div.node.third-party {\n\tbackground: var(--n-050);\n\tfont-style: italic;\n\tfilter: saturate(50%) brightness(80%)\n}\n\n#chainMap /*td.node >*/ div.node.loop {\t/* more specific than others nearby, because we want these over flares/current node */\n\tmin-width: auto;\n/*\twidth: 30px;*/\n\tborder-radius: 100px;\n\tborder-color: var(--data-class-cyan);\n}\n\n#chainMap div.loop {\t/* less specific, so flares/current node works over this */\n\tbackground: var(--data-class-void);\n}\n\ndiv.loop .nodeIcons, div.loop .nodeType, div.loop .statics, div.loop .nodeActivity {\n\tdisplay:none;\n}\n\t\n#chainMap .currentNode > div.node {\n\tborder-color: var(--data-class-blue);\n\tbackground: var(--data-class-blue-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-blue-deep) 0%, var(--data-class-blue) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-blue-deep)), to(var(--data-class-blue)));\n}\n\n#chainMap div.redNode.node {\n\tborder-color: var(--data-class-red);\n\tbackground: var(--data-class-red-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-red-deep) 0%, var(--data-class-red) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-red-deep)), to(var(--data-class-red)));\n}\n\n#chainMap div.yellowNode.node {\n\tborder-color: var(--data-class-orange);\n\tbackground: var(--data-class-orange-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-orange-deep) 0%, var(--data-class-orange) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-orange-deep)), to(var(--data-class-orange)));\n}\n\n#chainMap div.greenNode.node {\n\tborder-color: var(--data-class-green);\n\tbackground: var(--data-class-green-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-green-deep) 0%, var(--data-class-green) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-green-deep)), to(var(--data-class-green)));\n}\n\n#chainMap div.node.frig-chain {\n\tborder-color: var(--data-class-lime);\n\tborder-width: 1px;\n}\n\n#chainMap .node a {\n\tfont-weight: normal;\n}\n\n#chainMap span.badge {\n\tdisplay: inline-block;\n\tcolor: var(--n-750);\n\tbackground-color: var(--n-100);\n\tbox-shadow: 0px 0px 6px 2px var(--n-050);\n\tfont-family: monospace;\n\tpadding: 2px 2px;\n\tmin-width: 8px;\n\tfont-size: 9px;\n\tfont-weight: 300;\n\tline-height: 1;\n\ttext-align: center;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\tborder-radius: 10px;\n}\n\n#chainMap .nodeIcons {\n\tposition: absolute;\n\ttop: 0.1em;\n\twidth: 50px;\n\theight: 0;\t/* so it doesn't overlay the class text for tips */\n\tright: 50%;\n\tmargin-right: -25px;\n}\n\n#chainMap [data-nodeid] {\n\tposition: relative;\n\ttext-align: center;\n}\n\n#chainMap [data-nodeid] h4 {\n\tfont-weight: normal;\n\twhite-space: nowrap;\n}\n\n#chainMap .nodeType {\n\ttext-transform: uppercase;\n}\n\n#chainMap .nodeActivity {\n\tposition: absolute;\n\tbottom: 3px;\n\tright: 50%;\n\twidth: 50px;\n\theight: 1px;\n\tmargin-right: -25px;\n\tpointer-events: none;\t/* so it doesn't overlay the link */\n}\n\n#chainMap .nodeActivity * { pointer-events: initial }\n\n#chainMap .statics {\n\tposition: absolute;\n\tbottom: -1.5em;\n}\n\n#chainMap .statics span {\n\tdisplay: inline-block;\n\tbackground: navy;\n\tborder-radius: 0 0 50px 50px;\n\twidth: 8px;\n\theight: 10px;\n\tborder: 2px solid var(--n-200);\n}\n\n#chainMap .statics span:nth-child(2) {\n\tmargin-right: 10px;\t/* To leave a gap for the connection when 3+ statics */\n}\n\n#chainMap i[data-icon=\"user\"] {\n\tpadding: 3px;\n\tcursor: default;\n}\n\n#chainMap i.whEffect {\n\tpadding-left: 3px;\n\tcursor: default;\n}\n\n#chainMap i.nodeActivity > span {\n\tpadding: 2px;\n}\n\n/* These styles need the specific selectors because they need to override presets */\n.critical, #chainMap .critical, #guide .critical { border-color: var(--data-critical); }\n.destab, #chainMap .destab, #guide .destab { border-color: var(--data-warn); }\n.gate, #chainMap .gate, #guide .gate { border-color: darkgray; }\n.eol, #chainMap .eol, #guide .eol { border-style: dashed; }\n.frig, #chainMap .frig, #guide .frig { border-color: var(--data-good); }\n\n.tab {\n\tdisplay: inline-block;\n\tmin-width: 75px;\n\tborder-bottom: 2px solid var(--n-200);\n\tcursor: pointer;\n\tvertical-align: top;\n\ttext-align: right;\n}\n\n.tab:hover {\n\tborder-bottom-color: var(--n-500);\n}\n\n.tab.current {\n\tborder-bottom-color: var(--data-info);\n}\n\n.tab .name {\n\tpadding-left: 4px;\n\tfloat: left;\n}\n\n.tab .closeTab, .tab .editTab {\n\topacity: 0;\n\tvisibility: hidden;\n\tfloat: right;\n\tfont-size: .8em;\n\tpadding: 2px 2px 0 4px;\n\n\ttransition: opacity .15s ease-out;\n\t-moz-transition: opacity .15s ease-out;\n\t-webkit-transition: opacity .15s ease-out;\n\t-o-transition: opacity .15s ease-out;\n}\n\n.tab:hover .closeTab, .tab.current:hover .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#guide td:first-child {\n\twidth: 30px;\n}\n\n#guide div {\n\twidth: 20px;\n\tborder-width: 0;\n\tborder: 2px solid var(--data-class-sky);\n\tborder-top-style: none !important;\t/* so we only get one border even when border style is overridden by eol */\n\tborder-left-style: none !important;\n\tborder-right-style: none !important;\n}\n\n#guide div.frig { border-width: 1px; }\n#guide div.aura { box-shadow: 0 0 5px 2px; }\n\n[data-icon=\"user\"] + .badge {\n\tposition: absolute;\n\ttop: -5px;\n\tright: -12px;\n}\n\ntd.google-visualization-orgchart-linenode[data-signatureid] {\n\tcursor: pointer;\n}\n\n/* Grid lines and flare text */\n#chainGrid .grid-default { color: var(--n-550);}\n.red { color: var(--data-critical);}\n.yellow { color: var(--data-warn);}\n.green { color: var(--data-good);}\n\n#chainGrid {\n\tposition: absolute;\n\twidth: 100%;\n\tz-index: -10;\n\tmargin-left: -3px;\t\n}\n\n#chainGrid .top td {\n\theight: 18px;\n}\n\n#chainGrid .line td {\n\theight: 28px;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#chainGrid .space td {\n\theight: 13px;\n}\n\n#chainGrid .red td {\n\tborder-bottom-color: var(--data-critical);\n}\n\n#chainGrid .yellow td {\n\tborder-bottom-color: var(--data-warn);\n}\n\n#chainGrid .green td {\n\tborder-bottom-color: var(--data-good);\n}\n\n#chainTabs {\n\tpadding-right: 10px;\n}\n","/* Command palette and the shortcuts overlay.\n Colours come from the token layer, so this follows whatever theme is loaded\n rather than hard-coding a palette. */\n\n#cmd-palette,\n#cmd-help {\n\tposition: fixed;\n\tinset: 0;\n\tz-index: 10000;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: center;\n\tpadding-top: 12vh;\n\tbackground: var(--scrim-60);\n}\n\n#cmd-palette.hidden,\n#cmd-help.hidden { display: none; }\n\n#cmd-palette .cmd-box,\n#cmd-help .cmd-box {\n\twidth: min(560px, 92vw);\n\tbackground: var(--n-100);\n\tborder: 1px solid var(--n-300);\n\tbox-shadow: 0 12px 40px var(--scrim-70);\n\tfont-size: 1.25em;\n}\n\n#cmd-input {\n\tdisplay: block;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\tpadding: 12px 14px;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--n-300);\n\tbackground: transparent;\n\tcolor: var(--n-999);\n\tfont-family: inherit;\n\tfont-size: 1em;\n\toutline: none;\n}\n\n#cmd-input::placeholder { color: var(--n-600); }\n\n#cmd-list {\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 4px 0;\n\tmax-height: 46vh;\n\toverflow-y: auto;\n}\n\n#cmd-list li {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: 10px;\n\tpadding: 7px 14px;\n\tcursor: pointer;\n\tcolor: var(--n-800);\n}\n\n#cmd-list li.sel { background: var(--n-200); color: var(--n-999); }\n\n/* Listed but unavailable -- undo with nothing to undo, edit with nothing\n selected. Shown rather than hidden so the palette is a stable map of what\n exists. */\n#cmd-list li.off { opacity: .4; cursor: default; }\n\n#cmd-list li.danger.sel { background: var(--data-critical); color: var(--n-050); }\n\n#cmd-list .cmd-label { flex: 1 1 auto; }\n\n#cmd-list .cmd-group,\n#cmd-list .cmd-keys {\n\tflex: 0 0 auto;\n\tfont-size: .8em;\n\tcolor: var(--n-600);\n\ttext-transform: uppercase;\n\tletter-spacing: .06em;\n}\n\n#cmd-list li.sel .cmd-group,\n#cmd-list li.sel .cmd-keys { color: var(--n-750); }\n\n#cmd-list .cmd-keys {\n\ttext-transform: none;\n\tletter-spacing: 0;\n\tborder: 1px solid var(--n-400);\n\tborder-radius: 2px;\n\tpadding: 1px 5px;\n}\n\n#cmd-list .cmd-empty { color: var(--n-600); cursor: default; }\n\n.cmd-foot {\n\tdisplay: flex;\n\tgap: 16px;\n\tpadding: 8px 14px;\n\tborder-top: 1px solid var(--n-300);\n\tfont-size: .78em;\n\tcolor: var(--n-600);\n}\n\n.cmd-foot b { color: var(--n-800); font-weight: normal; }\n\n/* Shortcuts overlay */\n#cmd-help .cmd-box { padding: 18px 20px; }\n#cmd-help h2 { margin: 0 0 12px; color: var(--n-999); font-size: 1.1em; }\n#cmd-help table { border-collapse: collapse; width: 100%; }\n#cmd-help th {\n\ttext-align: left;\n\tpadding: 4px 14px 4px 0;\n\twhite-space: nowrap;\n\tcolor: var(--n-999);\n\tfont-weight: normal;\n}\n#cmd-help td { padding: 4px 0; color: var(--n-800); }\n#cmd-help p { margin: 14px 0 0; color: var(--n-600); font-size: .9em; }\n#cmd-help b { color: var(--n-999); }\n",".cke .cke_button__source_label {\n\tdisplay: none;\n}\n\n.cke .cke_maximized {\n\tbackground: black;\n}\n\n.comment {\n\tborder-bottom: 1px solid var(--n-300);\n}\n\n.commentSticky {\n\tpadding-left: 3px;\n}\n\n.commentToolbar .commentControls::before {\n\tdisplay: inline-block;\n\tcontent: '';\n\theight: 100%;\n\tvertical-align: bottom;\n}\n\n.commentToolbar, .commentFooter {\n\tfont-size: .9em;\n\tcolor: var(--n-650);\n}\n\n.commentToolbar {\n\theight: 26px;\n}\n\n.commentFooter {\n\tpadding: 3px;\n}\n\n.commentControls {\n\tfloat: right;\n\theight: 100%;\n}\n\n.commentStatus, .commentTitle {\n\tfloat: left;\n\theight: 100%;\n}\n\n.commentModified {\n\tdisplay: block;\n\tpadding-top: 3px;\n\tpadding-bottom: 3px;\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.commentToolbar .commentControls, .commentSticky {\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.comment:hover .commentControls, .comment:hover .commentModified, .comment:hover .commentSticky, .commentSticky.active {\n\topacity: 1;\n}\n\n.commentBody {\n\tcolor: var(--n-800);\n\tpadding: 8px;\n\t//white-space: pre-wrap; /* CSS3 */\n\t//white-space: -moz-pre-wrap; /* Firefox */\n\t//white-space: -pre-wrap; /* Opera <7 */\n\t//white-space: -o-pre-wrap; /* Opera 7 */\n\tword-wrap: break-word; /* IE */\n}\n\n.commentBody a {\n\tcolor: darkorange;\n}\n\n.commentBody ol, .commentBody ul, .commentBody dl {\n\t/* IE7: reset rtl list margin. (#7334) */\n\t*margin-right: 0px;\n\t/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/\n\tpadding: 0 40px;\n}\n","#dialog-admin .menu {\n\twidth: 100px;\n\theight: 100%;\n\tfloat: left;\n}\n\n#dialog-admin .window {\n\theight: 100%;\n\tmargin-left: 100px;\n\toverflow: auto;\n}\n\n#dialog-admin .menu li {\n\tlist-style-type: none;\n}\n\n#dialog-admin .menu li a {\n\tcolor: var(--n-500);\n}\n\n#dialog-admin .menu li a:focus {\n\toutline: none;\n}\n\n#dialog-admin .menu li.active a {\n\tcolor: orange;\n}\n\n#dialog-admin #userTable th {\n\ttext-align: left;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#dialog-admin #userTable tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-700);\n}\n\n#dialog-admin .tablesorter .tablesorter-header i:before, #dialog-admin .tablesorter .sortable i:before {\n\tfloat: none;\n}\n\n#dialog-admin .tablesorter .headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerAsc {\n\tcolor: orange;\n}\n\n#dialog-admin .tablesorter .headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerDesc {\n\tcolor: orange;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .menu {\n\tmargin-right: 6px;\n\tborder-right: 1px solid var(--n-700);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window [data-window] {\n\theight: 100%;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window table tbody tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-650);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .ui-dialog-traypane {\n\tmargin-left: 120px;\n\tmargin-top: 8px;\n\tfont-size: 16px;\n\tcolor: var(--n-200);\n}\n","/* Hide rows based on selection */\n#dialog-mass:has(input[value='all']:checked) tr#small-mass,\n#dialog-mass:has(input[value='all']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='all']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='cruiser']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='cruiser']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='cruiser']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Medium,\n#dialog-mass:has(input[value='battleship']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='capital']:checked) tr.mass-Small, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Medium, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Large { display: none }\n\n/* Mod selectors */\n.inactive { opacity: 0.5 }\n\n/* Table alignment and spacing */\n#massTableContainer {\n\ttext-wrap: nowrap;\n\tmargin-top: 1em;\n\tmax-height: 200px;\n\toverflow-y: auto;\n}\n\n#massTable td:nth-child(1) {\n\tmin-width: 12em;\n}\n\n#massTable td:nth-child(2) {\n\tmin-width: 2em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(3) {\n\twidth: 12em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(4), #massTable th:nth-child(4) {\n\twidth: 8em;\n\ttext-align: right;\n}\n\n#massTable td:nth-child(5) {\n\twidth: 14em;\n\ttext-align: right;\n}\n","#dialog-options input[type=\"radio\"] + label {\n\tvertical-align: top;\n}\n\ndiv.ui-slider { display: inline-block; width: calc(75% - 3px); margin-right: 3px }\n\n#dialog-options input[type=\"text\"], #dialog-options input[type=\"password\"], #dialog-options select { width: 75% }\n\n#dialog-options label[for=uiscale-slider] {\n padding: 0 8px;\n}\n\n#dialog-editMask label {\n\twidth: 100%;\n\tmargin-left: -5px;\n}\n\n#dialog-EVEsearch #EVESearchResults {\n\tmax-height: 320px;\n\toverflow: auto;\n\tpadding-left: 5px;\n padding-right: 10px;\n}\n\n#EVESearchResults label {\n\twidth: 100%;\n\tmargin-left: -5px;\n\topacity: 1;\n}\n\n.optionsTable th {\n\ttext-align: left;\n}\n\n.optionsTable td {\n\ttext-align: right;\n}\n\ntr.line td, tr.line th {\n\tborder-bottom: 1px solid var(--n-400);\n}\n\n.optionsTable tr {\n\theight: 2em;\n}\n\n.ui-accordion .ui-accordion-content {\n\tpadding: 0.5em;\n\tbackground: none;\n\tborder-color: var(--n-050);\n}\n\n.ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n}\n\n#masks {\n\ttext-align: left;\n\tpadding-left: 10px;\n}\n\ndiv.maskCategory {\n\tmin-height: 80px;\n\tposition: relative;\n}\n\ndiv.maskCategoryLabel {\n\tposition: absolute;\n\ttop: 80px;\n\tleft: -12px;\n\twidth: 80px;\n\ttext-align: center;\n\tfont-weight: bold;\n\n\t-ms-transform: rotate(-90deg);\n\t-webkit-transform: rotate(-90deg);\n\ttransform: rotate(-90deg);\n\n\t-ms-transform-origin: left top 0;\n\t-webkit-transform-origin: left top 0;\n\ttransform-origin: left top 0;\n}\n","input[type=\"text\"], input[type=\"password\"], select, textarea {\n background-image: linear-gradient(to bottom, var(--n-000) 0%, var(--n-100) 80%, var(--n-300) 100%);\n\n border: none;\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n -ms-border-radius: 3px;\n -o-border-radius: 3px;\n border-radius: 3px;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 2px;\n\n transition: all 0.2s linear;\n color: var(--n-750);\n font-weight: bold;\n position: relative;\n\t\n\toutline-color: var(--data-focus-ring);\n\toutline-width: thin;\n}\n\noption { background-color: var(--n-100); } /* to align with gradient on the select */\n\n*:focus-visible { outline-style: inset; outline-offset: 0 }\n\ninput[type=\"button\"], input[type=\"submit\"], .ui-button.ui-widget {\n\tfont-family: Verdana;\n\n\t-webkit-appearance: none;\n\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\t-ms-border-radius: 4px;\n\t-o-border-radius: 4px;\n\tborder-radius: 4px;\n\n\tbackground-image: linear-gradient(var(--n-300) 0, var(--n-100) 20%, var(--n-000));\n\n\t-webkit-background-clip: padding-box;\n\t-o-background-clip: padding-box;\n\tbackground-clip: padding-box;\n\n\tborder: 1px solid;\n\tborder-color: var(--n-400) var(--n-200) var(--n-000);\n\n\tcolor: var(--n-750);\n\tfont-weight: bold;\n\tfont-size: 1em;\n\ttext-decoration: none;\n\n\tmargin: 0;\n\tpadding: 0.4em 1.4em;\n\twidth: auto;\n\n\tcursor: pointer;\n\toutline: 0;\n\tvertical-align: top;\n\tdisplay: inline-block;\n\toverflow: visible;\n}\n\ninput[type='radio'], input[type='checkbox'] {\n\tvertical-align: middle;\n}\n\ninput[type=\"button\"]:not([disabled]):focus, input[type=\"submit\"]:not([disabled]):focus, .ui-button:focus:not([disabled]) {\n\tborder: 1px solid darkorange;\n}\n\ninput[type=\"button\"]:not([disabled]):hover, input[type=\"submit\"]:not([disabled]):hover, .ui-button:hover:not([disabled]) {\n\tbackground-image: linear-gradient(var(--n-400) 0, var(--n-120) 20%, var(--n-000));\n}\n\ninput[type=\"button\"]:not([disabled]):active, input[type=\"submit\"]:not([disabled]):active, .ui-button:active:not([disabled]) {\n\tcolor: var(--n-800);\n\n\tbackground-image: linear-gradient(var(--n-300), var(--n-550));\n\n\tbox-shadow: inset var(--shadow-25b) 0 1px 2px 0;\n\n\tborder-color: var(--n-650) var(--n-750) var(--n-850);\n}\n\ninput[disabled], a[disabled] {\n\topacity: .4;\n\tcursor: default;\n}\n\ninput.selector, input.mini-selector {\n\twidth: 0; opacity: 0;\t/* Don't use display:none because it makes it not be keyboard accessible */\n}\n\ninput.selector+label img {\n border-radius: 3px;\n\n\twidth: 64px;\n\theight: 64px;\n}\n\ninput.selector+label .selector_label {\n\tposition: absolute;\n\tbottom: 1px;\n\tleft: 1px;\n\tpadding: 1px 3px;\n\tmargin-right: 1px;\n\tcolor: var(--n-800);\n\tfont-size: 0.8em;\n\tbackground: var(--scrim-70);\n\n border-radius: 3px;\n}\n\ninput.selector+label, input.mini-selector+label, .quick-select {\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 3px;\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n\n\tcursor: pointer;\n\topacity: .4;\n\ttransition: all 0.2s ease;\n}\n\n.quick-select {\n\tcolor: var(--n-700);\n\tbackground: none;\n}\n\ninput.selector+label {\n\tvertical-align: top;\n\tmin-height: 64px;\n\tmin-width: 64px;\n\tmargin: 3px 3px;\n}\n\ninput.mini-selector+label {\n\tmargin: 3px -3px;\n\ttop: -1px;\n}\n\ninput.selector+label:hover, input.mini-selector+label:hover, .quick-select:hover {\n\tborder-color: var(--data-class-amber);\n\topacity: 1;\n}\n\ninput.selector:checked+label, input.mini-selector:checked+label {\n\tborder-color: darkorange;\n\topacity: 1;\n}\n\ninput.selector:focus-visible+label, input.mini-selector:focus-visible+label, .quick-select:focus-visible {\n\toutline-style: inset;\n outline-offset: 1px;\n outline-color: var(--data-focus-ring-soft);\n outline-width: 1px;\n}\n\ninput.selector+label .info {\n\tdisplay: inline-block;\n\tmargin-left: 5px;\n\tvertical-align: top;\n\tfont-weight: normal;\n\tfont-size: 0.9em;\n}\n\ninput.selector:checked+label .info {\n\tdisplay: inline-block;\n}\n\ninput[type=checkbox]:not(.selector) + label {\n\tmargin-left: 4px;\n\tvertical-align:top;\n\tcursor:pointer;\n}\n\ninput[type='radio'], input[type='checkbox'] {\tfilter: invert(1);}\ninput[type='checkbox'] { accent-color: var(--n-850); }",".gridster > ul {\n\t//background: var(--scrim-80);\n\tlist-style-type: none;\n}\n\n.gridster > li {\n overflow: hidden;\n}\n\n.controls i, .controls span.control {\n\tcursor: pointer;\n}\n\n.toggle-panel {\n\tposition: absolute;\n background: var(--n-020);\n border: 1px var(--n-250) solid;\n padding: 3px;\n}\n\n.gridster li div.content {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 5px;\n\tbottom: 5px;\n\tleft: 5px;\n\n\toverflow: auto;\n}\n\n.gridster li .controls + .content {\n\ttop: 18px;\n}\n\n.gridster {\n\tvisibility: hidden;\n margin: 0 auto;\n padding: 50px 0 140px 0;\n\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n -webkit-transition: opacity .6s;\n -moz-transition: opacity .6s;\n -o-transition: opacity .6s;\n -ms-transition: opacity .6s;\n transition: opacity .6s;\n}\n\n.gridster > * {\n margin: 0 auto;\n}\n\n.gridster-transition {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\t-webkit-transition: height .4s, width .4s;\n -moz-transition: height .4s, width .4s;\n -o-transition: height .4s, width .4s;\n -ms-transition: height .4s, width .4s;\n transition: height .4s, width .4s;\n}\n\n.gridster .gs-w {\n z-index: 2;\n position: absolute;\n}\n\n.gridster .gs-w {\n //background: var(--veil-grey);\n background: var(--scrim-60);\n}\n\n.gridster .gs-w:hover .grid-resize-both {\n\topacity: 1;\n}\n\n.gridster .grid-resize {\n\tposition: absolute;\n\tz-index: 1;\n}\n\n.gridster .grid-resize-both {\n width: 30px;\n height: 30px;\n bottom: -18px;\n right: -18px;\n cursor: se-resize;\n z-index: 20;\n opacity: 0;\n color: var(--n-750);\n}\n\n.gridster .gs-resize-handle-both:before {\n\tcontent: \"\\e018\";\n}\n\n.gridster .player {\n background: var(--veil-silver);\n}\n\n.gridster .preview-holder {\n border: none;\n background: var(--veil-danger);\n}\n","@font-face {\n\tfont-family: 'icon';\n\tsrc:url('../fonts/tripwire.eot?w81bs6');\n\tsrc:url('../fonts/tripwire.eot?#iefixw81bs6') format('embedded-opentype'),\n\t\turl('../fonts/tripwire.woff?w81bs6') format('woff'),\n\t\turl('../fonts/tripwire.ttf?w81bs6') format('truetype'),\n\t\turl('../fonts/tripwire.svg?w81bs6#icon') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n/* Use the following CSS code if you want to use data attributes for inserting your icons */\n[data-icon] {\n\tfont-family: 'icon';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n[data-icon]:hover {\n\ttext-decoration: none;\n}\n\n[data-icon=\"undo\"]:before {\n\tcontent: \"\\e60e\";\n}\n[data-icon=\"redo\"]:before {\n\tcontent: \"\\e612\";\n}\n[data-icon=\"move-horizontal\"]:before {\n\tcontent: \"\\e600\";\n}\n[data-icon=\"move-vertical\"]:before {\n\tcontent: \"\\e601\";\n}\n[data-icon=\"tripwire-logo\"]:before {\n\tcontent: \"\\e602\";\n}\n[data-icon=\"edit\"]:before {\n\tcontent: \"\\e609\";\n}\n[data-icon=\"pin\"]:before {\n\tcontent: \"\\e60a\";\n}\n[data-icon=\"plus-circle\"]:before {\n\tcontent: \"\\e60b\";\n}\n[data-icon=\"minus-circle\"]:before {\n\tcontent: \"\\e60c\";\n}\n[data-icon=\"times-circle\"]:before {\n\tcontent: \"\\e60d\";\n}\n[data-icon=\"check\"]:before {\n\tcontent: \"\\f00c\";\n}\n[data-icon=\"times\"]:before {\n\tcontent: \"\\f00d\";\n}\n[data-icon=\"plus\"]:before {\n\tcontent: \"\\f067\";\n}\n[data-icon=\"minus\"]:before {\n\tcontent: \"\\f068\";\n}\n[data-icon=\"eye\"]:before {\n\tcontent: \"\\e000\";\n}\n[data-icon=\"pulsar\"]:before {\n\tcontent: \"\\e001\";\n\tcolor: var(--data-link);\n}\n[data-icon=\"connection\"]:before {\n\tcontent: \"\\e002\";\n}\n[data-icon=\"settings\"]:before {\n\tcontent: \"\\e003\";\n}\n[data-icon=\"magnetar\"]:before {\n\tcontent: \"\\e004\";\n\tcolor: var(--data-magenta);\n}\n[data-icon=\"wolf-rayet\"]:before {\n\tcontent: \"\\e005\";\n\tcolor: var(--data-bronze);\n}\n[data-icon=\"portrait\"]:before {\n\tcontent: \"\\e006\";\n}\n[data-icon=\"landscape\"]:before {\n\tcontent: \"\\e007\";\n}\n[data-icon=\"erase\"]:before {\n\tcontent: \"\\e008\";\n}\n[data-icon=\"lock-open\"]:before {\n\tcontent: \"\\e009\";\n}\n[data-icon=\"lock\"]:before {\n\tcontent: \"\\e00a\";\n}\n[data-icon=\"user\"]:before {\n\tcontent: \"\\e00b\";\n}\n[data-icon=\"red-giant\"]:before {\n\tcontent: \"\\e00c\";\n\tcolor: red;\n}\n[data-icon=\"search\"]:before {\n\tcontent: \"\\e00d\";\n}\n[data-icon=\"star-empty\"]:before {\n\tcontent: \"\\e00e\";\n}\n[data-icon=\"star\"]:before {\n\tcontent: \"\\e00f\";\n}\n[data-icon=\"blackhole\"]:before {\n\tcontent: \"\\e010\";\n\tcolor: var(--n-900);\n}\n[data-icon=\"fullscreen\"]:before {\n\tcontent: \"\\e011\";\n}\n[data-icon=\"fullscreen-exit\"]:before {\n\tcontent: \"\\e012\";\n}\n[data-icon=\"home\"]:before {\n\tcontent: \"\\e013\";\n}\n[data-icon=\"key\"]:before {\n\tcontent: \"\\e014\";\n}\n[data-icon=\"alert\"]:before {\n\tcontent: \"\\e015\";\n}\n[data-icon=\"help\"]:before {\n\tcontent: \"\\e016\";\n}\n[data-icon=\"resize\"]:before {\n\tcontent: \"\\e017\";\n}\n[data-icon=\"info\"]:before {\n\tcontent: \"\\e018\";\n}\n[data-icon=\"tree\"]:before {\n\tcontent: \"\\e019\";\n}\n[data-icon=\"anchor\"]:before {\n\tcontent: \"\\e020\";\n}\n[data-icon=\"prop-mod\"]:before {\n\tcontent: \"\\e021\";\n}\n[data-icon=\"follow\"]:before {\n\tcontent: \"\\e60f\";\n}\n[data-icon=\"viewing\"]:before {\n\tcontent: \"\\e610\";\n}\n[data-icon=\"cataclysmic-variable\"]:before {\n\tcontent: \"\\e611\";\n\tcolor: var(--data-pale-yellow);\n}\n[data-icon=\"layout\"]:before {\n\tcontent: \"\\e603\";\n}\n[data-icon=\"auto\"]:before {\n\tcontent: \"\\e604\";\n}\n[data-icon=\"check-on\"]:before {\n\tcontent: \"\\e605\";\n}\n[data-icon=\"check-off\"]:before {\n\tcontent: \"\\e606\";\n}\n[data-icon=\"radio-off\"]:before {\n\tcontent: \"\\e607\";\n}\n[data-icon=\"radio-on\"]:before {\n\tcontent: \"\\e608\";\n}\n[data-icon=\"trash\"]:before {\n\tcontent: \"\\e9ad\";\n\tvertical-align: text-top;\n}\n[data-icon=\"sort\"]:before {\n\tcontent: \"\\f0dc\";\n}\n[data-icon=\"sort-desc\"]:before {\n\tcontent: \"\\f0dd\";\n}\n[data-icon=\"sort-asc\"]:before {\n\tcontent: \"\\f0de\";\n}\n",".introjs-helperLayer {\n background-color: var(--n-400);\n}\n\na.introjs-button:hover, a.introjs-skipbutton:hover {\n color: var(--n-560);\n}\n",".validation-tooltip .jBox-container, .validation-tooltip .jBox-pointer:after {\n\tbackground: var(--data-danger);\n\tcolor: white;\n\tborder: none;\n\tfont-weight: bold;\n\tfont-size: 1.2em;\n\tpadding: 3px;\n}\n\n.jBox-container {\n\tbackground: var(--n-200);\n\tcolor: var(--n-800);\n\tmin-height: 20px;\n}\n\n.jBox-content {\n\tpadding: 4px 5px;\n}\n\n/* Pointer */\n\n.jBox-pointer-right { right: 2px; }\n\n.jBox-pointer:after {\n\tbackground: var(--n-200);\n}\n\n/* jBox Notice */\n\n.jBox-Notice .jBox-container {\n border-radius: 3px;\n\tbox-shadow: 0 0 3px var(--n-000);\n\n\tcolor: var(--n-999);\n\tfont-size: 1.1em;\n\ttext-shadow: 0 -1px 0 var(--n-000);\n\tbackground: var(--n-200);\n\tbackground-image: linear-gradient(to bottom, var(--n-300), var(--n-100));\n}\n\n.jBox-Notice .jBox-content {\n\tpadding: 6px 10px;\n}\n\n.jBox-Notice .jBox-title {\n\tpadding: 8px 20px 0;\n}\n\n.jBox-Notice-color .jBox-container {\n\ttext-shadow: 0 -1px 0 var(--shadow-30);\n}\n\n.jBox-Notice-gray .jBox-container {\n\tcolor: var(--n-500);\n\ttext-shadow: 0 1px 0 var(--n-999);\n\tbackground: var(--n-920);\n\tbackground-image: linear-gradient(to bottom, var(--n-960), var(--n-900));\n}\n\n.jBox-Notice-red .jBox-container {\n\tbackground: var(--ui-red);\n\tbackground-image: linear-gradient(to bottom, var(--ui-red-lit), var(--ui-red));\n}\n\n.jBox-Notice-green .jBox-container {\n\tbackground: var(--ui-green);\n\tbackground-image: linear-gradient(to bottom, var(--ui-green-lit), var(--ui-green));\n}\n\n.jBox-Notice-blue .jBox-container {\n\tbackground: var(--ui-blue);\n\tbackground-image: linear-gradient(to bottom, var(--ui-blue-lit), var(--ui-blue));\n}\n\n.jBox-Notice-yellow .jBox-container {\n\tcolor: var(--data-brown);\n\ttext-shadow: 0 1px 0 var(--glow-60);\n\tbackground: var(--ui-amber);\n\tbackground-image: linear-gradient(to bottom, var(--ui-amber-lit), var(--ui-amber));\n}\n\n.jBox-Notice-yellow .jBox-container a {\n\tcolor: var(--n-650);\n}\n",".mask .corporate { color: green }\n.mask .alliance { color: var(--data-alliance);display: inline-block;transform: scaleY(-1) translateY(2px); }\t/* need the block to make the transform work */\n.mask i { padding-right: 2px }\n\n#mask-menu a { display: block }\n\n/* Overlays etc on the mask panel */\n#masks label > img { margin-top: 3px; }\n#masks label { height: 69px; }\n.source_bar {\n position: absolute;\n top: 0; left: 0;\n\twidth: 100%;\n\theight: 3px;\n color: var(--n-800);\n font-size: .8em;\n\tborder-radius: 3px 3px 0 0;\n}\n\n.source_bar.global { background: var(--n-550) }\n.source_bar.personal { background: var(--n-800) }\n.source_bar.corporate { background: green }\n.source_bar.alliance { background: var(--data-alliance) }\n\n.icon_bar {\n position: absolute;\n top: 3px; right: 0;\n}\n\n.icon_bar .icon {\n\tborder-radius: 1em;\n\topacity: 0.7;\n\tfont-size: 0.85em;\n\tpadding: 0.15em;\n\theight: 1em;\n\twidth: 1em;\n\tdisplay: inline-block;\n\ttext-align: center;\n\ttext-decoration: none;\n}\n\n.icon_bar .icon:hover, .icon_bar .icon:focus {\n\topacity: 1;\n}\n\n.icon_bar .closeIcon { background: maroon }\n.icon_bar .joinIcon { background: green }\n\n#mask-explanation p { margin: 0.5em 0; }","html .ui-selectmenu-menu li a, html .ui-selectmenu-status {\n\tpadding: 0em 1em 0em .5em;\n\tfont-weight: bold;\n\ttext-align: left;\n}\n\nhtml a.ui-selectmenu:hover {\n\ttext-decoration: none;\n}\n\nhtml .ui-selectmenu {\n\theight: auto;\n\t//margin-bottom: .2em;\n\t//padding: 0.1em;\n}\n\nhtml .ui-selectmenu-menu ul {\n\t//padding: 0 0.1em;\n}\n\n#whType, #sigID {\n\ttext-transform: uppercase;\n\ttext-align: center;\n\tpadding-left: 0px;\n}\n\n#sigAddForm th, #sigEditForm th {\n\ttext-align: right;\n}\n\n#sigAddForm table tr td, #sigEditForm table tr td {\n\tpadding: 2px 0;\n}\n\n#sigTable {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\ttext-align: center;\n\ttable-layout: fixed;\n\tmargin-left: -1px;\n\tuser-select: none;\n}\n\n#sigTable th {\n\tbackground: var(--scrim-n200);\n\tborder: 1px solid var(--n-000);\n}\n\n#sigTable td {\n\tbackground: var(--scrim-n050);\n\tborder: 1px solid var(--n-000);\n\tcursor: default;\n}\n\n#sigTable tr:hover td {\n\tbackground-color: var(--n-300);\n}\n\n#sigTable tr.selected td {\n\tbackground-color: var(--n-200);\n}\n\n#sigTable th:nth-child(1) {\n\twidth: 50px;\n}\n\n#sigTable th:nth-child(2) {\n\twidth: 45px;\n}\n\n#sigTable th:nth-child(3) {\n\twidth: 40px;\n}\n\n#sigTable th:nth-child(5), #sigTable th:nth-child(6) {\n\twidth: 40px;\n}\n\n#sigTable td:nth-child(1) {\n\tfont-family: \"lucida\";\n\tletter-spacing: 1px;\n\ttext-transform: uppercase;\n}\n\n#sigTable td:nth-child(2) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td:nth-child(5), #sigTable td:nth-child(6) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\n#sigTable td.centerAlign {\n\ttext-align: center;\n}\n\n#sigTable td.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\n#sigTable a.siteLink {\n\tcolor: var(--data-olive);\n}\n\n#sigTable tbody .disabled {\n\tcolor: var(--n-300);\n}\n\n.return-visible .return-link { display: inline }\n.return-invisible .return-link { display: none }\n\n.tablesorter .tablesorter-header {\n\tcursor: pointer;\n\tvertical-align: middle;\n\tfont-size: 10px;\n}\n\n.tablesorter .tablesorter-header:focus {\n\toutline: none;\n}\n\n.tablesorter .tablesorter-header i:before, .tablesorter .sortable i:before {\n\tcontent: \"\\f0dc\";\n\tvertical-align: bottom;\n\tpadding: 1px 2px;\n\tfloat: right;\n}\n\n.tablesorter .headerSortUp,\n.tablesorter .tablesorter-headerSortUp,\n.tablesorter .tablesorter-headerAsc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortUp i:before,\n.tablesorter .tablesorter-headerSortUp i:before,\n.tablesorter .tablesorter-headerAsc i:before {\n\tcontent: \"\\f0de\";\n}\n\n.tablesorter .headerSortDown,\n.tablesorter .tablesorter-headerSortDown,\n.tablesorter .tablesorter-headerDesc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortDown i:before,\n.tablesorter .tablesorter-headerSortDown i:before,\n.tablesorter .tablesorter-headerDesc i:before {\n\tcontent: \"\\f0dd\";\n}\n\n.tablesorter thead .sorter-false {\n\tcursor: default;\n}\n\n#dialog-signature hr {\n\tmargin-left: 15px;\n\tmargin-bottom: 10px;\n}\n\n#dialog-signature .label {\n\tfont-weight: bold;\n\ttext-align: right;\n\tvertical-align: text-top;\n}\n\n#dialog-signature .select {\n\tdisplay: inline-block;\n\tvertical-align: text-bottom;\n}\n\n#dialog-signature .row {\n\tmin-height: 22px;\n}\n\n#dialog-signature .label:first-child {\n\tdisplay: inline-block;\n\tmin-width: 70px;\n}\n\n#dialog-signature #signatureName span {\n\tdisplay: table-cell;\n}\n\n#dialog-signature #signatureName span:last-child {\n\twidth: 100%;\n\tpadding-left: 3px;\n}\n\n#dialog-signature #signatureName input {\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n#dialog-signature #signatureType, #dialog-signature #wormholeMass {\n\tfloat: right;\n}\n\n#dialog-signature #wormholeMass .label, #dialog-signature .bookmark .label {\n\tmin-width: auto;\n}\n\n#dialog-signature .signatureID, #dialog-signature .wormholeType {\n\ttext-align: center;\n\ttext-transform: uppercase;\n}\n\n#dialog-signature .side {\n\tposition: relative;\n\tmin-height: 70px;\n}\n\n#dialog-signature .sideLabel {\n\tposition: absolute;\n\tleft: -10px;\n\tfont-weight: bold;\n\ttransform: rotate(-90deg);\n\ttransform-origin: left top 0;\n}\n\n#dialog-signature #wormhole .side:first-child .sideLabel {\n\tbottom: 0px;\n\twidth: 90px;\n\ttext-align: left;\n}\n\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\tbottom: -70px;\n\twidth: 135px;\n\ttext-align: right;\n}\n\n.custom-combobox {\n\tposition: relative;\n\tdisplay: inline-table;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: -20px;\n\tmargin-left: -1px;\n\tpadding: 0;\n}\n\n.custom-combobox input {\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tpadding: 0.4em 0.8em;\n\tborder-radius: 0;\n\tborder-top-right-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.wormholeTypeQuickSelect {\n\tmargin-left: 1.8em;\n}\n\n.quickSelectBar button {\n\tpadding: 1px; margin-right: 1px;\n}\n\n#leadsToQuickBar {\n\tmargin-left: 74px;\n\tmargin-top: 2px;\n\tmargin-bottom: 4px;\n}\n\n.popover {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 1060;\n\tdisplay: block;\n\tmax-width: 276px;\n\tpadding: 1px;\n\tfont-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tletter-spacing: normal;\n\tline-break: auto;\n\tline-height: 1.5;\n\ttext-align: left;\n\ttext-align: start;\n\ttext-decoration: none;\n\ttext-shadow: none;\n\ttext-transform: none;\n\twhite-space: normal;\n\tword-break: normal;\n\tword-spacing: normal;\n\tfont-size: 0.875rem;\n\tword-wrap: break-word;\n\tbackground-color: var(--n-999);\n\t-webkit-background-clip: padding-box;\n\t\t\t\t\tbackground-clip: padding-box;\n\tborder: 1px solid var(--shadow-20b);\n\tborder-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n\tmargin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n\tleft: 50%;\n\tborder-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n\tbottom: -11px;\n\tmargin-left: -11px;\n\tborder-top-color: var(--shadow-25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n\tbottom: -10px;\n\tmargin-left: -10px;\n\tborder-top-color: var(--n-999);\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n\tmargin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n\ttop: 50%;\n\tborder-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n\tleft: -11px;\n\tmargin-top: -11px;\n\tborder-right-color: var(--shadow-25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n\tleft: -10px;\n\tmargin-top: -10px;\n\tborder-right-color: var(--n-999);\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n\tmargin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n\tleft: 50%;\n\tborder-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n\ttop: -11px;\n\tmargin-left: -11px;\n\tborder-bottom-color: var(--shadow-25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n\ttop: -10px;\n\tmargin-left: -10px;\n\tborder-bottom-color: var(--n-940);\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\tdisplay: block;\n\twidth: 20px;\n\tmargin-left: -10px;\n\tcontent: \"\";\n\tborder-bottom: 1px solid var(--n-940);\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n\tmargin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n\ttop: 50%;\n\tborder-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n\tright: -11px;\n\tmargin-top: -11px;\n\tborder-left-color: var(--shadow-25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n\tright: -10px;\n\tmargin-top: -10px;\n\tborder-left-color: var(--n-999);\n}\n\n.popover-title {\n\tpadding: 8px 14px;\n\tmargin-bottom: 0;\n\tfont-size: 1rem;\n\tbackground-color: var(--n-940);\n\tborder-bottom: 1px solid var(--n-870);\n\tborder-top-right-radius: calc(0.3rem - 1px);\n\tborder-top-left-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n\tdisplay: none;\n}\n\n.popover-content {\n\tpadding: 9px 14px;\n}\n\n.popover::before,\n.popover::after {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 0;\n\theight: 0;\n\tborder-color: transparent;\n\tborder-style: solid;\n}\n\n.popover::before {\n\tcontent: \"\";\n\tborder-width: 11px;\n}\n\n.popover::after {\n\tcontent: \"\";\n\tborder-width: 10px;\n}\n\n.age-tooltip-table td {\n\tpadding-left: 12px;\n}\n","#wrapper {\n\theight: 100%;\n\toverflow: auto;\n\n\tbackground-color: black;\n\tbackground-image: url(../images/bg.jpg);\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\n\t-webkit-background-size: cover;\n\t-moz-background-size: cover;\n\t-o-background-size: cover;\n\tbackground-size: cover;\n}\n\n#inner-wrapper {\n\tmin-height: 100%;\n\tposition: relative;\n}\n\n#pageTime {\n\ttext-align: center;\n\tfont-size: 0.8em;\n\topacity: 0.6;\n}\n\n#footer {\n\tposition: absolute;\n\tbottom: 0;\n\twidth: 100%;\n\ttext-align: center;\n\tpadding-bottom: 10px;\n}\n\n#legal {\n\tfont-size: 0.5em;\n\twidth: 60%;\n\ttext-align: center;\n\tmargin: 0 auto;\n\topacity: 0.5;\n}\n\n#topbar {\n\tposition: fixed;\n\ttop: 0;\n\theight: 45px;\n\twidth: 100%;\n\tbackground: var(--scrim-80);\n\tz-index: 3;\n\tline-height: 40px;\n}\n\n#topbar div { line-height: normal; } /** reset for children */\n\n#topbar h1, #topbar h2, #topbar h3, #topbar form {\n\tdisplay: inline;\n}\n\n#topbar .align-right {\n\tpadding-right: 25px;\n}\n\n#topbar .align-left {\n\tpadding-left: 25px;\n}\n\n#logo {\n\tposition: relative;\n}\n\n#version {\n\tposition: absolute;\n\tcolor: var(--data-info);\n\tfont-size: 0.4em;\n\theight: 0;\n\ttop: 4px;\n\tright: 20px;\n}\n\n#clipboard {\n\tposition: fixed;\n\tleft: -99em;\n\ttop: 0;\n}\n\n#searchSpan {\n\tdisplay: none;\n}\n\n.controls {\n position: absolute;\n padding: 3px;\n z-index: 1;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.controls i {\n\tfont-size: 1.2em;\n\tpadding: 0px 2px;\n\tvertical-align: middle;\n\tfont-style: normal;\n}\n\n.controls button {\n\tfont-size: 1em;\n color: var(--n-500);\n margin: 2px;\n padding: 1px;\n background: var(--n-100);\n border: 1px solid var(--n-000);\n\toutline: 0;\n cursor: pointer;\n background-image: linear-gradient(var(--n-100),var(--n-050));\n}\n\n.tooltip-data {\n\tbackground: var(--scrim-n120);\n\tpadding: 5px;\n\tcolor: var(--n-800);\n\tborder: none;\n\tbox-shadow: none;\n\t-webkit-box-shadow: none;\n\n\tborder-radius: 3px;\n}\n\n.tooltip-data table {\n\tborder: none;\n\tborder-collapse: collapse;\n}\n\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }\n\n#chainMenu, #signatureColumnMenu {\n\tz-index: 5;\n}\n\n/* Loading animation container */\n.loading {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n}\n\n/* Spinning circle (inner circle) */\n.loading .maskedCircle {\n\twidth: 2em;\n\theight: 2em;\n\n\t-webkit-border-radius: 1em;\n -moz-border-radius: 1em;\n -ms-border-radius: 1em;\n -o-border-radius: 1em;\n border-radius: 1em;\n\n\tborder: 3px solid var(--n-000);\n}\n\n/* Spinning circle mask */\n.loading .mask {\n\twidth: 1em;\n\theight: 1em;\n\toverflow: hidden;\n}\n\n/* Spinner */\n.loading .spinner {\n\tposition: absolute;\n\tleft: 1px;\n\ttop: 1px;\n\twidth: 2em;\n\theight: 2em;\n\t-webkit-animation: spin 1s infinite linear;\n\t-moz-animation: spin 1s infinite linear;\n\t-o-animation: spin 1s infinite linear;\n\tanimation: spin 1s infinite linear;\n}\n\ntable.stdTable {\n\twidth: 100%;\n}\n\ntable.stdTable th {\n\ttext-align: left;\n}\n\ndiv.overlay {\n\tposition: fixed;\n\tz-index: 101;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\topacity: 0.3;\n\tbackground: var(--n-700) url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;;\n}\n\n.control-group { display:inline-block; text-align: center }\ntd .control-group { width: 100% }\n\n.whEffect { padding-right: 2px; }\n\n.copy { font-size: 75%; margin: 0 3px; padding: 2px }\n.copy::after { content: '\\01F4C4\\00FE0E' }\n\n#activityGraph { padding-top: 8px; }\n#activityGraphControls { padding-bottom: 8px; }\n\n#activityGraph svg > g:nth-child(3) > g > path {\n\tfill: var(--scrim-n020);\n\tstroke: var(--stroke-n120);\n}\n\n#activityGraph svg > g:nth-child(3) > g > g > text {\n\tfill: var(--n-800);\n}\n\n#activityGraph svg > g:nth-child(2) > g:last-child > g {\n\tcursor: pointer;\n}\n\n/* Autocomplete */\nul.ui-autocomplete {\n\tmax-height: 140px;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n}\n\ntd.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\ntd.centerAlign {\n\ttext-align: center;\n}\n\ntd.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\nth.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\nth.centerAlign {\n\ttext-align: center;\n}\n\nth.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n","/* ============================================================================\n TRIPWIRE DESIGN SYSTEM\n\n A reimagining of the interface in Aperture's design language, not a patch\n over the old one. The vocabulary below is Aperture's, taken from its\n globals.css so the two tools speak the same language:\n\n role tokens, not a grey ramp --background / --card / --popover / --muted\n borders as light --border is white at 10%, --input at 15%\n one radius --radius: 0.625rem, everything derives\n muted-foreground for secondary text, ring for focus\n\n Tripwire's own --n-* ramp and --data-* semantics still exist underneath and\n still drive the map, because those encode EVE meaning. This layer governs\n chrome: surfaces, controls, type, tables, dialogs, states.\n\n Ordering: this file must load after the component stylesheets, which is what\n the _override-* group in gulpfile.js exists for.\n ========================================================================= */\n\n:root {\n\t/* ---- surfaces -------------------------------------------------------- */\n\t--background: oklch(0.145 0 0);\n\t--foreground: oklch(0.80 0 0);\n\t--card: oklch(0.205 0 0);\n\t--card-foreground: oklch(0.82 0 0);\n\t--popover: oklch(0.205 0 0);\n\t--popover-foreground: oklch(0.80 0 0);\n\t--muted: oklch(0.269 0 0);\n\t--muted-foreground: oklch(0.66 0 0);\n\t--accent-surface: oklch(0.269 0 0);\n\n\t/* ---- lines and focus ------------------------------------------------- */\n\t--border: oklch(1 0 0 / 10%);\n\t--border-strong: oklch(1 0 0 / 18%);\n\t--input: oklch(1 0 0 / 15%);\n\t--ring: var(--accent, oklch(0.556 0 0));\n\n\t/* ---- intent ---------------------------------------------------------- */\n\t--primary: var(--accent, oklch(0.922 0 0));\n\t--primary-foreground: oklch(0.205 0 0);\n\t--destructive: oklch(68.025% 0.2081 23.639);\n\n\t/* ---- geometry -------------------------------------------------------- */\n\t--radius: 0.625rem;\n\t--radius-sm: calc(var(--radius) * 0.5);\n\t--radius-md: calc(var(--radius) * 0.75);\n\n\t/* ---- rhythm ---------------------------------------------------------- */\n\t--space-1: 0.25rem;\n\t--space-2: 0.5rem;\n\t--space-3: 0.75rem;\n\t--space-4: 1rem;\n\t--space-5: 1.5rem;\n\n\t/* ---- type ------------------------------------------------------------ */\n\t--fs-xs: 0.8rem;\n\t--fs-sm: 0.9rem;\n\t--fs-base: 1rem;\n\t--fs-md: 1.15rem;\n\t--fs-lg: 1.5rem;\n\t--fs-xl: 2rem;\n}\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(1 0 0);\n\t\t--foreground: oklch(0.145 0 0);\n\t\t--card: oklch(1 0 0);\n\t\t--card-foreground: oklch(0.145 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--popover-foreground: oklch(0.145 0 0);\n\t\t--muted: oklch(0.97 0 0);\n\t\t--muted-foreground: oklch(0.556 0 0);\n\t\t--accent-surface: oklch(0.97 0 0);\n\t\t--border: oklch(0.922 0 0);\n\t\t--border-strong: oklch(0.85 0 0);\n\t\t--input: oklch(0.922 0 0);\n\t\t--destructive: oklch(0.577 0.245 27.325);\n\t\t--primary-foreground: oklch(0.985 0 0);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(1 0 0);\n\t--foreground: oklch(0.145 0 0);\n\t--card: oklch(1 0 0);\n\t--card-foreground: oklch(0.145 0 0);\n\t--popover: oklch(1 0 0);\n\t--popover-foreground: oklch(0.145 0 0);\n\t--muted: oklch(0.97 0 0);\n\t--muted-foreground: oklch(0.556 0 0);\n\t--accent-surface: oklch(0.97 0 0);\n\t--border: oklch(0.922 0 0);\n\t--border-strong: oklch(0.85 0 0);\n\t--input: oklch(0.922 0 0);\n\t--destructive: oklch(0.577 0.245 27.325);\n\t--primary-foreground: oklch(0.985 0 0);\n}\n\n/* ============================================================================\n BASE\n ========================================================================= */\n\nhtml {\n\t/* Was .6em -> 9.6px, with nine ad-hoc sizes from 6px to 19.2px in use.\n\t Verified before changing: no panel overflows at 12px. */\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n\nbody {\n\tcolor: var(--foreground);\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\na { color: var(--primary); font-weight: 500; }\na:hover { color: var(--primary); text-decoration: underline; }\n\n::selection { background: var(--primary); color: var(--primary-foreground); }\n\n/* One focus treatment everywhere. Matters more now the app is keyboard-driven. */\n:focus-visible {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n\tborder-radius: var(--radius-sm);\n}\n\n/* ============================================================================\n SURFACES\n Everything raised is a card: same ground, same edge, same radius.\n ========================================================================= */\n\n.gridWidget,\n.ui-dialog,\n.jBox-container {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n\tcolor: var(--card-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: none;\n}\n\n.gridWidget > .controls,\n.ui-dialog .ui-dialog-titlebar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tborder-radius: var(--radius) var(--radius) 0 0;\n\tpadding: var(--space-2) var(--space-3);\n\tmin-height: 0;\n}\n\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\tmargin: 0;\n\tfloat: none;\n}\n\n.panel-title {\n\tflex: 0 0 auto;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\twhite-space: nowrap;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tcolor: var(--card-foreground);\n\tbackground: transparent;\n}\n\n.ui-dialog .ui-dialog-buttonpane {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-top: 1px solid var(--border);\n\tmargin: 0;\n\tpadding: var(--space-3) var(--space-4);\n}\n\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: none; text-align: right; }\n\n/* The dialog's own close affordance, and the panel hide control, are the same\n thing and should look it. */\n.ui-dialog .ui-dialog-titlebar-close,\n.panel-hide {\n\torder: 99;\n\tmargin-left: auto;\n\twidth: auto; height: auto;\n\tposition: static;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-md);\n\tline-height: 1;\n\tpadding: 0 var(--space-1);\n\tcursor: pointer;\n}\n.ui-dialog .ui-dialog-titlebar-close:hover,\n.panel-hide:hover { color: var(--destructive); background: none; }\n.ui-dialog .ui-dialog-titlebar-close .ui-icon { display: none; }\n.ui-dialog .ui-dialog-titlebar-close::after { content: \"\\00d7\"; }\n\n/* ============================================================================\n CONTROLS\n Flat at rest so rows read as data; the affordance arrives on approach.\n ========================================================================= */\n\ninput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\ninput[type=\"search\"], select, textarea {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tbox-shadow: none;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\ninput:hover, select:hover, textarea:hover { border-color: var(--border); }\n\ninput:focus, select:focus, textarea:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--muted);\n\toutline: none;\n}\n\n::placeholder { color: var(--muted-foreground); opacity: 1; }\n\nbutton, .ui-button, .ui-button.ui-widget,\ninput[type=\"button\"], input[type=\"submit\"] {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tpadding: var(--space-1) var(--space-3);\n\tbox-shadow: none;\n\ttext-shadow: none;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n\nbutton:hover, .ui-button:hover, .ui-button.ui-widget:hover,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover {\n\tborder-color: var(--border-strong);\n\tbackground-color: var(--muted);\n\tcolor: var(--foreground);\n}\n\n.ui-dialog-buttonpane button.is-primary {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground-color: transparent;\n}\n\nbutton[disabled], .disabled { opacity: .4; cursor: default; }\n\n/* ============================================================================\n DATA\n ========================================================================= */\n\n#sigTable { border-collapse: collapse; width: 100%; }\n\n#sigTable th {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .09em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n\tpadding: var(--space-2) var(--space-2);\n\tbox-shadow: none;\n}\n\n#sigTable td {\n\tborder: 0;\n\tpadding: var(--space-2);\n\tfont-size: var(--fs-base);\n\tcolor: var(--card-foreground);\n}\n\n#sigTable tbody tr { transition: background-color .1s ease; }\n#sigTable tbody tr:nth-child(even) > td { background-color: oklch(1 0 0 / 3%); }\n#sigTable tbody tr:hover > td { background-color: var(--muted); }\n#sigTable tbody tr.selected > td { background-color: color-mix(in oklab, var(--primary) 18%, transparent); }\n\n/* Chips. Life, mass and security are small closed sets; they read faster as\n pills, and it keeps state out of the same register as the data beside it. */\n#sigTable td .stable, #sigTable td .critical, #sigTable td .destab,\n.chip-pill {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid currentColor;\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.7;\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Segmented control for the dialog's life/mass radios. */\n#dialog-signature .mini-selector { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-block;\n\tpadding: var(--space-1) var(--space-3);\n\tmargin-right: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n#dialog-signature .mini-selector + label:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature .mini-selector:checked + label {\n\tborder-color: currentColor;\n\tbackground: color-mix(in oklab, currentColor 15%, transparent);\n\tfont-weight: 600;\n}\n#dialog-signature .mini-selector:focus-visible + label { outline: 2px solid var(--ring); outline-offset: 1px; }\n\n/* ============================================================================\n NAVIGATION\n ========================================================================= */\n\n#topbar {\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tbackdrop-filter: blur(8px);\n\tborder-bottom: 1px solid var(--border);\n}\n\n#topbar #logo a { font-size: var(--fs-xl); }\n#version { font-size: var(--fs-xs); color: var(--muted-foreground); }\n#legal { font-size: var(--fs-xs); color: var(--muted-foreground); }\n\n/* Settings sections. The accordion is gone -- see options-dialog.js. These\n are the same

/
pairs, laid out flat in a scrolling pane so every\n setting is visible and scannable. */\n.settings-sections { display: flex; flex-direction: column; }\n\n.settings-sections > h3 {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 1;\n\tmargin: var(--space-4) 0 var(--space-2);\n\tpadding: var(--space-2) 0;\n\tbackground: var(--card);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n}\n.settings-sections > h3:first-child { margin-top: 0; }\n.settings-sections > h3 a { color: inherit; font-weight: inherit; text-decoration: none; cursor: default; }\n\n.settings-sections > div { padding: 0 0 var(--space-3); }\n\n#dialog-options { max-height: 62vh; overflow-y: auto; }\n\n.optionsTable tr { height: auto; }\n.optionsTable th, .optionsTable td { padding: var(--space-2); font-size: var(--fs-base); }\n.optionsTable th { color: var(--muted-foreground); font-weight: 500; }\ntr.line td, tr.line th { border-bottom: 1px solid var(--border); }\n\n/* jQuery UI's state classes carry the old theme's gradients wherever they land. */\n.ui-state-default, .ui-state-hover, .ui-state-active, .ui-state-focus,\n.ui-widget-header, .ui-widget-content {\n\tbackground-image: none;\n\ttext-shadow: none;\n}\n\n/* ============================================================================\n DIALOG SIZING\n Settings holds two-column option rows and was squeezed into the default\n dialog width, which is why its labels wrapped and its controls crowded.\n ========================================================================= */\n\n.ui-dialog:has(#dialog-options) { width: min(46rem, calc(100vw - 2rem)) !important; }\n#dialog-options { width: auto !important; }\n\n/* Option rows: label left, control right, on one rhythm. */\n#dialog-options .optionsTable { width: 100%; table-layout: fixed; }\n#dialog-options .optionsTable th {\n\twidth: 55%;\n\ttext-align: left;\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-base);\n\tvertical-align: middle;\n}\n#dialog-options .optionsTable td { text-align: right; vertical-align: middle; }\n#dialog-options input[type=\"text\"],\n#dialog-options input[type=\"password\"],\n#dialog-options select {\n\twidth: 100%;\n\tmax-width: 16rem;\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n}\n#dialog-options div.ui-slider { width: calc(100% - 3rem); }\n\n/* Yes/No and other radio pairs read as a segmented control, like the map's\n life and mass. */\n#dialog-options input[type=\"radio\"] { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-options input[type=\"radio\"] + label {\n\tdisplay: inline-block;\n\tpadding: 2px var(--space-3);\n\tmargin-left: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tvertical-align: middle;\n}\n#dialog-options input[type=\"radio\"] + label:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n#dialog-options input[type=\"radio\"]:checked + label {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 12%, transparent);\n\tfont-weight: 600;\n}\n#dialog-options input[type=\"radio\"]:focus-visible + label {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n}\n\n/* ============================================================================\n LEGIBILITY CORRECTIONS\n\n Not rebranding: these are data colours and they keep their meaning. They are\n lightened only enough to clear 4.5:1 against the card ground, measured. The\n originals were written for a near-black page and the card surface is lighter\n than that, so blue text in particular was failing badly -- the \"Blue loot\n buyer\" line sat at 2.63:1.\n ========================================================================= */\n\n:root {\n\t--data-info: #47a2fe; /* was #4399f0 4.18:1 -> 4.66:1 */\n\t--data-loot-blue: #9090ff; /* was #6060f0 2.63:1 -> 4.52:1 */\n\t--data-link: #4ca1ea; /* was #428bca 3.43:1 -> 4.50:1 */\n\t--data-class-sky: #3ca0ff; /* was #3388dd 3.38:1 -> 4.54:1 */\n\t--chart-1: #4e9dff; /* was #3366cc 2.32:1 -> 4.50:1 */\n}\n\n/* In the light theme the same hues need darkening instead. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--data-info: #1668c4;\n\t\t--data-loot-blue: #3b3bc9;\n\t\t--data-link: #1a6aa8;\n\t\t--data-class-sky: #1466a8;\n\t\t--chart-1: #1f4f9e;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--data-info: #1668c4;\n\t--data-loot-blue: #3b3bc9;\n\t--data-link: #1a6aa8;\n\t--data-class-sky: #1466a8;\n\t--chart-1: #1f4f9e;\n}\n\n/* ============================================================================\n HOVER / ACTIVE STATES\n\n forms.css styles these through `.ui-button:hover:not([disabled])` and\n `input[type=\"button\"]:not([disabled]):hover` -- three selectors deep, which\n outranks a plain :hover. That is why the raised-bevel gradient survived on\n hover and press after the rest was flattened.\n ========================================================================= */\n\nbutton:hover, button:active,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover,\ninput[type=\"button\"]:active, input[type=\"submit\"]:active,\ninput[type=\"button\"]:not([disabled]):hover,\ninput[type=\"submit\"]:not([disabled]):hover,\ninput[type=\"button\"]:not([disabled]):active,\ninput[type=\"submit\"]:not([disabled]):active,\n.ui-button:hover, .ui-button:active,\n.ui-button:hover:not([disabled]), .ui-button:active:not([disabled]),\n.ui-button.ui-widget:hover:not([disabled]),\n.ui-button.ui-widget:active:not([disabled]),\n.ui-state-hover, .ui-state-active, .ui-state-focus,\na.ui-button:hover, a.ui-button:active {\n\tbackground-image: none !important;\n\tbox-shadow: none !important;\n\ttext-shadow: none !important;\n}\n\n/* ============================================================================\n GATE CHIPS\n The gate list was comma-separated prose. Each gate is a destination you can\n click, so it reads as a chip like everything else that is a discrete thing.\n ========================================================================= */\n\n.gate-list {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: var(--space-1);\n\tmargin: 0;\n}\n\n.gate-list > b {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 3px;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tline-height: 1.7;\n\twhite-space: nowrap;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n.gate-chip:hover { border-color: var(--border-strong); background: var(--accent-surface); }\n.gate-chip a { font-weight: 500; }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* The last two gradients in the app: a fade on the account dropdown and the\n chain zoom-reset button. Both are bevel-era leftovers. */\n#content.dialog-like,\n#chain-zoom-reset {\n\tbackground-image: none !important;\n}\n#content.dialog-like { background-color: var(--popover); }\n\n/* ============================================================================\n DIALOG SCROLLING\n\n jQuery UI sizes a dialog to its content, so a tall one grows past the\n viewport and the page scrolls behind it instead of the dialog scrolling\n inside itself. Settings was 1476px tall in a 900px window.\n\n The dialog becomes a flex column capped at the viewport: title bar and\n button pane hold their size, the content takes the remaining space and\n scrolls. Nothing else has to know its height.\n ========================================================================= */\n\n.ui-dialog {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmax-height: calc(100vh - 2rem);\n\tmax-width: calc(100vw - 2rem);\n\tbox-sizing: border-box;\n}\n\n.ui-dialog > .ui-dialog-titlebar,\n.ui-dialog > .ui-dialog-buttonpane { flex: 0 0 auto; }\n\n.ui-dialog > .ui-dialog-content {\n\tflex: 1 1 auto;\n\tmin-height: 0; /* without this a flex child refuses to shrink */\n\toverflow-y: auto;\n\tmax-height: none !important;\n\theight: auto !important;\n}\n\n/* Settings no longer needs its own cap now the dialog handles it. */\n#dialog-options { max-height: none; }\n\n/* The page itself must paint a ground. body was transparent, so anything that\n scrolled past #wrapper -- an over-tall dialog, the footer -- showed the\n browser's white through the app. */\nhtml, body {\n\tbackground-color: var(--background);\n}\n\n/* ============================================================================\n ROUTE SQUARES AND THE BLUE-LOOT LINE\n\n base.css:119 sets `.blue-loot, .blue-loot .hisec { color: loot-blue }`,\n which painted the whole line blue AND overrode the security colour on its\n route squares -- so the one place the squares carry meaning was the one\n place they did not show it.\n\n The line reads as normal text; each square keeps its own security colour and\n is big enough to actually read.\n ========================================================================= */\n\n.blue-loot,\n.sys-extra,\n.sys-extra .blue-loot {\n\tcolor: var(--foreground);\n}\n\n/* Only the destination is a link. */\n.sys-extra a, .blue-loot a { color: var(--primary); }\n\n/* Security colours win on the squares. */\n.blue-loot .hisec { color: var(--data-good) !important; }\n.blue-loot .lowsec { color: var(--data-warn) !important; }\n.blue-loot .nullsec{ color: var(--data-critical) !important; }\n\n.path span,\n.blue-loot .path span {\n\tfont-size: 1.35em;\n\tline-height: 1;\n\tletter-spacing: .06em;\n\tcursor: pointer;\n}\n.path span:hover { filter: brightness(1.35); }\n\n/* ============================================================================\n CHIPS — filled, not outlined\n\n Outlined chips in a colour put the meaning in a 1px border and left the\n label low-contrast. Filled reads at a glance and the label sits on white.\n ========================================================================= */\n\n.sys-meta .chip,\n.gate-chip,\n.sig-chip,\n#sigTable td .stable,\n#sigTable td .critical,\n#sigTable td .destab,\n.chip-pill {\n\tborder: 1px solid transparent;\n\tcolor: #fff;\n\tfont-weight: 600;\n}\n\n/* Neutral facts keep a quiet fill rather than shouting a colour. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-color: var(--border);\n}\n.gate-chip:hover, .sig-chip:hover {\n\tbackground: var(--accent-surface);\n\tborder-color: var(--border-strong);\n}\n\n/* State chips carry their colour as fill. */\n#sigTable td .stable { background: var(--data-good); border-color: var(--data-good); }\n#sigTable td .destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#sigTable td .critical { background: var(--data-critical); border-color: var(--data-critical); }\n\n/* Selected filter and option chips fill with the accent. */\n.sig-chip.on {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tbackground: var(--data-good); border-color: var(--data-good); color: #1b1b1b;\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tbackground: var(--data-info); border-color: var(--data-info); color: #1b1b1b;\n}\n\n#dialog-signature .mini-selector:checked + label,\n#dialog-options input[type=\"radio\"]:checked + label {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n\tfont-weight: 600;\n}\n\n/* Life and mass keep their own meaning when selected. */\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n\n/* ============================================================================\n NAMED COLOURS\n\n The original token extraction swept hex and rgb() literals and missed CSS\n NAMED colours entirely -- fifteen of them survived, including the green mask\n star in the topbar. Mapped onto the token set here.\n ========================================================================= */\n\nbody .mask .corporate { color: var(--foreground); }\n.source_bar.corporate { background: var(--data-good); }\n.source_bar.alliance { background: var(--data-alliance); }\n#chainMap .statics span { background: var(--muted); }\n#chainMap .gate { border-color: var(--border-strong); }\n.jBox-container { color: var(--foreground); }\n\n/* ============================================================================\n TOPBAR\n\n TQ and the mask star were carrying data colours -- green for \"server is up\",\n green for \"corporate mask\". Neither is a reading you act on, and colour in\n the header competes with the map, where colour does mean something. Both go\n white; the count itself is the information.\n ========================================================================= */\n\n#topbar #serverStatus,\n#topbar #serverStatus .stable,\n#topbar #serverStatus .critical,\n#topbar #mask,\n#topbar #mask *,\n#topbar .mask .corporate,\n#topbar .mask .alliance,\n#topbar .mask .character,\n#topbar .mask .global {\n\tcolor: var(--foreground) !important;\n}\n\n/* A genuinely down server is worth the red, though. */\n#topbar #serverStatus.is-down,\n#topbar #serverStatus.is-down .critical {\n\tcolor: var(--data-critical) !important;\n}\n\n/* ============================================================================\n ROUTE LINES\n The squares belong beside the sentence they describe, not wrapped under it.\n ========================================================================= */\n\n.sys-extra > * ,\n.sys-extra {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tgap: .35em;\n}\n\n.sys-extra .path {\n\tdisplay: inline-flex;\n\talign-items: baseline;\n\tgap: .1em;\n\tmargin-left: .2em;\n}\n","/* Panel structure.\n Appearance now comes from the design system (_override-1-system.css); what\n remains here is layout the system cannot express generically. */\n\n/* The controls bar mixes floated children with the flow, so the floated group\n has to be pulled back into the flex line rather than escaping it. */\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n}\n\n/* A hidden panel leaves its grid cell empty rather than reflowing the others.\n Gridster positions every widget absolutely from saved coordinates, so\n collapsing the gap would mean rewriting them and discarding the arrangement\n the user made. Bring it back from the palette. */\n.gridWidget.panel-hidden { display: none; }\n","/* ============================================================================\n SIGNATURE DIALOG — form layout\n\n The dialog kept its original markup (.row > .label + controls) with new\n paint on top, and it showed: bold oversized labels competing with the\n values, no field affordance at all, ragged alignment, and controls landing\n on the wrong rows.\n\n This lays a real form grid over that markup. Every field the dialog had, it\n still has, in the same order.\n ========================================================================= */\n\n#dialog-signature .ui-dialog-content,\n#dialog-signature {\n\tfont-size: var(--fs-base);\n}\n\n/* One row = quiet label in a fixed column, controls flowing after it. */\n#dialog-signature .row {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-2);\n\tmargin: 0 0 var(--space-3) 0;\n\tline-height: 1.4;\n}\n\n/* Labels are wayfinding, not content: small, quiet, consistent width so every\n value starts on the same vertical line. */\n#dialog-signature .row > .label:first-child {\n\tflex: 0 0 5.5rem;\n\ttext-align: right;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .02em;\n}\n\n/* The separator between the two id halves must not take a label column. */\n#dialog-signature .row > .label:not(:first-child) {\n\tflex: 0 0 auto;\n\tcolor: var(--muted-foreground);\n\tfont-weight: 400;\n}\n\n/* ---- fields look like fields --------------------------------------------\n The system layer keeps controls flat so table rows read as data. A form is\n the opposite case: here the whole point is showing what can be edited. */\n\n#dialog-signature input[type=\"text\"],\n#dialog-signature input[type=\"password\"],\n#dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tmin-height: 1.9rem;\n}\n\n#dialog-signature input[type=\"text\"]:hover,\n#dialog-signature select:hover { border-color: var(--border-strong); }\n\n#dialog-signature input[type=\"text\"]:focus,\n#dialog-signature select:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--background);\n}\n\n/* Values sized by what they hold, not by a stray `size` attribute. */\n#dialog-signature .signatureID { width: 3.6rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .wormholeType { width: 4.4rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .leadsTo { width: 12rem; }\n#dialog-signature [name=\"signatureName\"],\n#dialog-signature [name=\"wormholeName\"] { flex: 1 1 12rem; min-width: 8rem; }\n\n/* Unresolved required fields read red at a glance. Applied by\n signature-dialog-keyboard.js: the id always, plus type and destination for\n a wormhole -- the fields the chain is drawn from. */\n#dialog-signature .sig-missing,\n#dialog-signature .sig-missing:focus {\n\tborder-color: var(--destructive);\n\tbox-shadow: 0 0 0 1px var(--destructive);\n}\n\n/* ---- lifetime reads as one control, not three loose numbers ------------- */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tfont-size: var(--fs-base);\n}\n#dialog-signature .duration-picker input {\n\twidth: 2.4rem;\n\ttext-align: center;\n}\n#dialog-signature .duration-picker span,\n#dialog-signature .duration-picker label {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- section headings ---------------------------------------------------\n Were rotated 90 degrees in a left gutter. One divider weight, one style. */\n#dialog-signature .sideLabel {\n\tposition: static;\n\ttransform: none;\n\tdisplay: block;\n\twidth: auto;\n\tmargin: var(--space-4) 0 var(--space-3);\n\tpadding-bottom: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n}\n\n#dialog-signature .side { padding-left: 0; }\n#dialog-signature hr { display: none; } /* the second, heavier divider */\n\n/* ---- quick-select chips ------------------------------------------------\n Were wrapping into a ragged second line. One wrap-safe row, aligned under\n the value column rather than starting at the dialog edge. */\n#dialog-signature .quickSelectBar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tflex: 1 1 100%;\n\tmargin-left: 6rem; /* clears the label column */\n\tmargin-top: calc(var(--space-1) * -1);\n}\n\n#dialog-signature .quickSelectBar button {\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tpadding: 1px var(--space-2);\n\tmin-width: 0;\n\tmin-height: 0;\n\tfont-size: var(--fs-xs);\n\tline-height: 1.6;\n}\n\n#dialog-signature .quickSelectBar button:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n\n/* The bare \"|\" divider inside the bar. */\n#dialog-signature .quickSelectBar { align-items: center; }\n\n/* ---- the wormhole-type shortcut button beside the type field ----------- */\n#dialog-signature .wormholeTypeQuickSelect button {\n\tfont-size: var(--fs-xs);\n\tpadding: 1px var(--space-2);\n\tmin-height: 0;\n}\n\n/* ---- width -------------------------------------------------------------\n The dialog was sized for the old cramped layout, so the type selector wrapped\n off the ID row and the class chips broke onto a ragged second line. */\n.ui-dialog:has(#dialog-signature) {\n\twidth: min(30rem, calc(100vw - 2rem)) !important;\n}\n#dialog-signature { width: auto !important; }\n\n/* ID row holds both id halves and the signature type together -- they are one\n statement (\"this signature, of this kind\"), so they belong on one line. */\n#dialog-signature .row:first-of-type { flex-wrap: nowrap; }\n#dialog-signature #signatureType { margin-left: auto; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 8rem; }\n\n/* Class chips: one tidy row under the destination field. */\n#dialog-signature .quickSelectBar {\n\tmargin-left: 6rem;\n\tgap: 3px;\n}\n#dialog-signature .quickSelectBar button {\n\tmin-width: 2rem;\n\ttext-align: center;\n\tfont-size: var(--fs-xs);\n\tpadding: 2px 0;\n}\n\n/* Lifetime: the three numbers are one value, so box them as one control\n rather than leaving them adrift in the row. */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n}\n#dialog-signature .duration-picker input {\n\tborder: 0;\n\tbackground: transparent;\n\tmin-height: 0;\n\tpadding: 0;\n\twidth: 2rem;\n}\n","/* ============================================================================\n RESPONSIVE — Track 6\n\n Scope is deliberately asymmetric, per the corp's actual use:\n\n READ band phones. Check a chain, see what is scanned. No editing\n chrome. width < 768px OR height < 600px.\n EDIT band tablets. Update signatures, drive the map. Touch-sized\n targets. width >= 768px AND height >= 600px.\n DESKTOP width >= 1280px AND a fine pointer.\n\n The height clause is what catches a landscape phone: an iPhone 15 turned\n sideways is 852px wide -- past any sensible tablet breakpoint -- but only\n 393px tall, with no room for the editing layout. Width alone gets this\n wrong.\n\n The fine-pointer clause on desktop is what keeps a landscape iPad Pro 11\"\n (~1194px) in the EDIT band rather than handing it the dense mouse layout it\n cannot hit accurately.\n\n Density is width-driven; control sizing is pointer-driven. They are separate\n questions: a 1000px window on a desktop wants the multi-panel layout but not\n 44px touch targets.\n ========================================================================= */\n\n/* ── READ: stack the panels ──────────────────────────────────────────────\n Gridster positions every widget absolutely from saved coordinates. Below\n the breakpoint that layout is abandoned entirely and the panels return to\n document flow -- which is the reflow the fixed grid cannot do. The saved\n coordinates are untouched, so rotating back restores the arrangement. */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t#wrapper { overflow-x: hidden; }\n\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmin-height: 12rem;\n\t\tmargin: 0 0 var(--space-3) 0 !important;\n\t\toverflow: visible;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t/* Chain map wants the most room; signatures next. */\n\t#chainWidget .content { min-height: 55vh; }\n\t#notesWidget .content { min-height: 14rem; }\n\n\t/* Resize handles are meaningless without a grid. */\n\t.grid-resize { display: none !important; }\n\n\t/* Editing chrome is out of scope on a phone: this band is for reading. */\n\t#signaturesWidget #add-signature,\n\t#signaturesWidget #edit-signature,\n\t#signaturesWidget #delete-signature,\n\t#signaturesWidget #undo,\n\t#signaturesWidget #redo,\n\t#notesWidget #add-comment,\n\t#layout {\n\t\tdisplay: none !important;\n\t}\n\n\t/* The topbar carries a lot for 393px. Keep identity, time and search. */\n\t#serverStatus,\n\t#topbar h3:nth-of-type(2) { display: none; }\n\n\t#topbar { position: sticky; }\n\n\t/* Signature table: drop the columns that only matter while editing. */\n\t#sigTable th:nth-child(n+5),\n\t#sigTable td:nth-child(n+5) { display: none; }\n}\n\n/* ── EDIT: tablets ───────────────────────────────────────────────────────\n Two columns rather than four panels on a fixed grid; the arrangement a\n 1194px tablet can actually use. */\n\n@media (min-width: 768px) and (max-width: 959px) and (min-height: 600px) {\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t}\n\n\t.gridster > ul {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t\tgap: var(--space-3);\n\t\tpadding: 0 var(--space-2);\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t#infoWidget { min-height: 34vh; }\n\t#signaturesWidget { min-height: 34vh; }\n\t#notesWidget { min-height: 26vh; }\n\n\t/* The chain is the reason you are here; give it the full width. */\n\t#chainWidget {\n\t\tgrid-column: 1 / -1;\n\t\tmin-height: 46vh;\n\t}\n\n\t.grid-resize { display: none !important; }\n}\n\n/* ── Touch sizing, independent of width ──────────────────────────────────\n Driven by pointer, not viewport, because they are different questions. A\n coarse pointer needs a 44px target whatever the screen is. */\n\n@media (pointer: coarse) {\n\t.controls i,\n\t.controls span.control,\n\t.panel-hide,\n\t#topbar i,\n\t.quickSelectBar button {\n\t\tmin-width: 44px;\n\t\tmin-height: 44px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\tbutton, .ui-button, input[type=\"button\"], input[type=\"submit\"] {\n\t\tmin-height: 44px;\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\tinput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\n\tselect, textarea {\n\t\tmin-height: 40px;\n\t\tfont-size: 1.15rem; /* keeps iOS from zooming the field on focus */\n\t}\n\n\t#sigTable td { padding: var(--space-3) var(--space-2); }\n\n\t#dialog-signature .mini-selector + label {\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\t/* Hover styling is misleading on touch -- it sticks after a tap. */\n\t#sigTable tbody tr:hover > td { background-color: transparent; }\n}\n\n/* Dialogs must not exceed a small viewport. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.ui-dialog {\n\t\tmax-width: calc(100vw - var(--space-4)) !important;\n\t\tmax-height: calc(100vh - var(--space-4)) !important;\n\t\tleft: var(--space-2) !important;\n\t\toverflow: auto;\n\t}\n\t.ui-dialog .ui-dialog-content { max-height: 60vh; overflow: auto; }\n}\n\n/* Respect the OS setting; the map already animates a great deal. */\n@media (prefers-reduced-motion: reduce) {\n\t*, *::before, *::after {\n\t\tanimation-duration: .001ms !important;\n\t\tanimation-iteration-count: 1 !important;\n\t\ttransition-duration: .001ms !important;\n\t}\n}\n\n/* ── Touch on the chain map ──────────────────────────────────────────────\n #chainParent is a scroll container driven by dragscroll.js, which is a\n mouse-only library (mousedown/mousemove). Rather than port it, let the\n browser do what it is already good at: native touch panning and pinch-zoom\n on the scroll container. dragscroll keeps working for mice untouched.\n\n touch-action must be set explicitly because the map suppresses user-select\n and jQuery UI's draggable calls preventDefault on pointer events, which\n otherwise kills native scrolling on touch. */\n\n#chainParent {\n\ttouch-action: pan-x pan-y pinch-zoom;\n\t-webkit-overflow-scrolling: touch;\n\toverscroll-behavior: contain;\n}\n\n/* Nodes stay draggable at tablet width and above; on a phone the map is for\n reading, so a drag should pan the map rather than move somebody's system. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainMap .system,\n\t#chainMap [class*=\"system\"] {\n\t\ttouch-action: inherit;\n\t}\n}\n","/* ============================================================================\n SYSTEM PANEL\n\n Was two 50% floats with a
: the system identity on the left,\n and \"Blue loot buyer\" stranded in a right-hand column it did not belong in.\n Statics sat last, below the links, so the rows that matter most needed\n scrolling to reach.\n\n Rebuilt as a single column in reading order -- identity, what it connects\n to, then the supporting detail -- with the metadata as chips.\n ========================================================================= */\n\n.sys-panel {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--space-3);\n\tpadding: var(--space-3);\n\toverflow-y: auto;\n\theight: 100%;\n\tbox-sizing: border-box;\n}\n\n/* ---- identity ----------------------------------------------------------- */\n.sys-head { display: flex; flex-direction: column; gap: var(--space-2); }\n\n.sys-panel .sys-name {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tfont-size: var(--fs-lg);\n\tfont-weight: 600;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\tletter-spacing: -.01em;\n}\n\n/* Security / region / faction as chips: three small facts, read at a glance,\n in the same register as the life and mass chips elsewhere. */\n.sys-meta { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sys-meta .chip {\n\tmargin: 0;\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n\twhite-space: nowrap;\n}\n/* An empty chip should not draw a pill. */\n.sys-meta .chip:empty { display: none; }\n/* Security colouring comes from the data tokens already on the element. */\n.sys-meta #infoSecurity { color: inherit; }\n\n/* ---- what it connects to, promoted above the supporting detail ---------- */\n.sys-statics {\n\tfont-size: var(--fs-sm);\n\tline-height: 1.7;\n\tcolor: var(--card-foreground);\n}\n.sys-statics:empty { display: none; }\n\n/* ---- blue-loot buyer and other route notes ------------------------------\n Was floated into a right-hand column of its own. It is a note about this\n system, so it reads inline with the rest. */\n.sys-extra {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n\tline-height: 1.8;\n}\n.sys-extra:empty { display: none; }\n\n/* ---- graph -------------------------------------------------------------- */\n#activityGraph { min-height: 120px; }\n\n/* Range switch as a segmented control rather than \"Week - 48Hour - 24Hour\". */\n.sys-range {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tjustify-content: center;\n}\n.sys-range a {\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\ttext-decoration: none;\n}\n.sys-range a:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n}\n\n/* ---- external links ----------------------------------------------------- */\n.sys-links {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-3);\n\tjustify-content: center;\n\tpadding-top: var(--space-1);\n\tborder-top: 1px solid var(--border);\n\tfont-size: var(--fs-sm);\n}\n.sys-links a { color: var(--muted-foreground); font-weight: 500; }\n.sys-links a:hover { color: var(--primary); }\n","/* ============================================================================\n CHAIN MAP + SIGNATURE TABLE\n\n The two surfaces the tool is actually used through, and the last places\n carrying the old look.\n\n The map nodes kept their bevels because they are built from VENDOR-PREFIXED\n gradients (-moz-linear-gradient, -webkit-gradient), which the earlier sweep\n for `linear-gradient` did not match.\n ========================================================================= */\n\n/* ---- copy affordance ---------------------------------------------------\n tripwire.css set `content: '\\01F4C4\\00FE0E'` -- the page-facing-up emoji\n with the text-presentation variation selector, asking for a monochrome\n glyph most fonts only ship in colour. The result was fallback tofu, which\n is the \"broken document\" after the system name. There is no copy glyph in\n the icon font, so it is drawn: two offset sheets, the usual copy sign. */\n.copy::after { content: none; }\n\n.copy {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: -0.1em;\n\topacity: .55;\n\ttransition: opacity .12s ease;\n}\n.copy:hover, .copy:focus-visible { opacity: 1; }\n\n.copy::before,\n.copy::after {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: .62em;\n\theight: .78em;\n\tborder: 1px solid currentColor;\n\tborder-radius: 2px;\n}\n.copy::before { left: 0; top: .22em; }\n.copy::after { left: .3em; top: 0; background: var(--card); }\n\n/* ============================================================================\n CHAIN MAP\n ========================================================================= */\n\n/* Flat fills. The class colour moves to the border, where it reads as a label\n rather than as a lit surface, and the node ground stays consistent so the\n map is one plane instead of a tray of buttons. */\n#chainMap .currentNode > div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node,\n#chainMap div.loop,\n#chainMap div.node {\n\tbackground-image: none !important;\n\tbox-shadow: none;\n\tborder-radius: var(--radius-md);\n\tborder-width: 1px;\n\tborder-style: solid;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\n#chainMap div.node { background-color: var(--card); }\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 22%, var(--card)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 22%, var(--card)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 22%, var(--card)); }\n#chainMap div.loop { background-color: color-mix(in oklab, var(--data-class-void) 40%, var(--card)); }\n\n/* Where you are is the one thing that should be unmistakable. */\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 18%, var(--card));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 1px var(--primary);\n}\n\n#chainMap div.node:hover { border-color: var(--border-strong); }\n\n/* Badges were 9px monospace with a 6px glow. Same chip language as everywhere\n else, so a count on the map reads like a count in the table. */\n#chainMap span.badge {\n\tbackground-color: var(--muted);\n\tcolor: var(--muted-foreground);\n\tbox-shadow: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.5;\n\tpadding: 0 5px;\n\tmin-width: 1.1em;\n}\n\n#chainMap .nodeType {\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n}\n\n#chainMap .statics span {\n\tborder-radius: 999px;\n\tpadding: 0 5px;\n\tfont-size: var(--fs-xs);\n}\n\n/* ============================================================================\n SIGNATURE TABLE\n ========================================================================= */\n\n#sigTableWrapper { padding: 0; }\n\n#sigTable th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }\n#sigTable th.sortable:hover { color: var(--foreground); }\n\n/* The sort arrow was an empty -- an icon element with no\n icon. Draw the state instead, and only on the column actually sorted. */\n#sigTable th.sortable i[data-icon=\"\"] { display: none; }\n\n#sigTable th.sortable::after {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: 0; height: 0;\n\tmargin-left: var(--space-1);\n\tborder-left: 3px solid transparent;\n\tborder-right: 3px solid transparent;\n\topacity: 0;\n\ttransition: opacity .12s ease;\n}\n#sigTable th.tablesorter-headerAsc::after {\n\tborder-bottom: 4px solid var(--primary);\n\topacity: 1;\n}\n#sigTable th.tablesorter-headerDesc::after {\n\tborder-top: 4px solid var(--primary);\n\topacity: 1;\n}\n\n/* Signature type as a chip, so the group reads at a glance down the column\n the way life and mass already do. */\n#sigTable td.sigType > span,\n#sigTable td .sigTypeName {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n}\n\n/* Age is context, not content. */\n#sigTable td.sigAge { color: var(--muted-foreground); font-variant-numeric: tabular-nums; }\n\n/* Numeric-ish columns line up. */\n#sigTable td.sigID { font-variant-numeric: tabular-nums; letter-spacing: .03em; }\n\n/* An empty table should say so rather than being a blank rectangle. */\n#sigTable tbody:empty::after,\n#sigTableWrapper > .sig-empty {\n\tcontent: \"No signatures in this system\";\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n}\n\n/* ============================================================================\n SIGNATURE FILTER BAR\n After Aperture's SignatureModule: group chips, a scan-state cycle, and live\n counts. Scanning a long list down one column is the whole job, so the bar\n stays pinned and only the table scrolls.\n ========================================================================= */\n\n.sig-filter {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tpadding: var(--space-2) var(--space-2);\n\tborder-bottom: 1px solid var(--border);\n}\n\n.sig-filter-groups { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sig-chip {\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.6;\n\tpadding: 0 var(--space-2);\n\tmin-height: 0;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n.sig-chip:hover { border-color: var(--border-strong); background: var(--muted); color: var(--foreground); }\n\n/* Active filters stand out without the harshness of a solid fill. */\n.sig-chip.on {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 14%, transparent);\n}\n\n/* The scan cycle earns its own colours: scanned reads as settled, unscanned as\n outstanding work. */\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tborder-color: var(--data-good); color: var(--data-good);\n\tbackground: color-mix(in oklab, var(--data-good) 14%, transparent);\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tborder-color: var(--data-info); color: var(--data-info);\n\tbackground: color-mix(in oklab, var(--data-info) 14%, transparent);\n}\n\n.sig-stats {\n\tmargin-left: auto;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\twhite-space: nowrap;\n\tfont-variant-numeric: tabular-nums;\n}\n\n#sigTable tbody tr.sig-filtered { display: none; }\n\n/* Unscanned rows are outstanding work; mark the id rather than shouting the\n whole row, the way Aperture marks the still-empty required cells. */\n#sigTable tbody tr.sig-unscanned > td:first-child {\n\tbox-shadow: inset 2px 0 0 var(--data-info);\n}\n\n/* Site-safety glyph, derived from the group. A combat site is somewhere rats\n can shoot you; an exploration site is not; a wormhole is neither. */\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before,\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: .5em; height: .5em;\n\tmargin-right: .45em;\n\tborder-radius: 50%;\n\tvertical-align: .05em;\n}\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before { background: var(--data-critical); }\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before { background: var(--data-good); }\n\n/* Chip labels sit on a fill now, so they take the full-strength text colour --\n muted-on-muted was the low-contrast case that made these hard to read. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tcolor: var(--foreground);\n}\n","/* ============================================================================\n DESKTOP LAYOUT\n\n Everything below fixes one root cause: the desktop layout was gridster's\n fixed pixel grid, positioned absolutely from saved coordinates. It did not\n use the window it was in -- at 1600x1000 the panels stopped at 1250x440 and\n the rest was raw background plus footer, which read as a page that had not\n finished loading.\n\n The grid now fills the viewport at every width. The panel registry still\n controls what is shown; what is gone is drag-and-resize, which only existed\n to work around a layout that never fit in the first place.\n ========================================================================= */\n\n/* Desktop only. Below 1280px the READ and EDIT bands in\n _override-5-responsive.css own the layout: panels return to document flow\n and the page scrolls. These rules used to apply at every width, which put\n three columns on a 375px phone with two of them off the right edge -- the\n responsive file sorts earlier and could not win. The guard is what the\n earlier file was always assuming. */\n@media (min-width: 960px) {\n\thtml, body { height: 100%; overflow: hidden; }\n\n\t#wrapper {\n\t\theight: 100vh;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#inner-wrapper {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#topbar { flex: 0 0 auto; position: static; }\n\n\t.gridster {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tvisibility: visible !important;\n\t\tpadding: var(--space-2);\n\t\tbox-sizing: border-box;\n\t}\n\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: 100% !important;\n\t\tmargin: 0 !important;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\n\t\tdisplay: grid;\n\t\tgap: var(--space-2);\n\t\t/* Weighted by how much each panel earns: signatures widest, notes least. */\n\t\tgrid-template-columns: minmax(260px, 1fr) minmax(340px, 1.35fr) minmax(220px, 0.85fr);\n\t\t/* The chain is the reason the tool exists, so it takes what is left. */\n\t\tgrid-template-rows: minmax(180px, 32vh) 1fr;\n\t}\n}\n\n.gridWidget {\n\tposition: static !important;\n\twidth: auto !important;\n\theight: auto !important;\n\tmin-height: 0;\n\tmargin: 0 !important;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\n.gridWidget > .controls {\n\tposition: static !important;\n\tflex: 0 0 auto;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n}\n\n.gridWidget > .content {\n\tposition: static !important;\n\tflex: 1 1 auto;\n\tmin-height: 0;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n\toverflow: auto;\n}\n\n#chainWidget { grid-column: 1 / -1; }\n\n/* Resize handles belong to a grid that no longer exists. */\n.grid-resize { display: none !important; }\n\n/* A hidden panel should give its space back now the grid can reflow. */\n.gridWidget.panel-hidden { display: none !important; }\n\n/* ============================================================================\n BACKGROUND\n\n The image was the brightest, highest-contrast thing on screen, showing\n through translucent panels and pulling the eye off the data every time. It\n stays -- it is the corp's ship -- but well behind a wash, and the panels go\n opaque so nothing reads through them.\n ========================================================================= */\n\n#wrapper::before {\n\tcontent: \"\";\n\tposition: fixed;\n\tinset: 0;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\tcolor-mix(in oklab, var(--background) 88%, transparent),\n\t\tcolor-mix(in oklab, var(--background) 94%, transparent)\n\t);\n\tpointer-events: none;\n\tz-index: 0;\n}\n\n#inner-wrapper { position: relative; z-index: 1; }\n\n.gridWidget {\n\tbackground-color: var(--card); /* opaque: nothing reads through a panel */\n}\n\n/* ============================================================================\n FOOTER\n Donation plea, a yellow button and a wall of CCP legalese, centred on the\n background. It belongs on the landing page, not on the instrument.\n ========================================================================= */\n\n#footer { display: none !important; }\n\n/* ============================================================================\n TOPBAR\n Was a left cluster and a right cluster with ~1000px of nothing between.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: 0 var(--space-3);\n\theight: auto;\n\tmin-height: 2.6rem;\n\tline-height: normal;\n}\n#topbar > .align-left { display: flex; align-items: center; gap: var(--space-3); flex: 1 1 auto; }\n#topbar > .align-right { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; padding-right: 0; }\n#topbar h1, #topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* ============================================================================\n DENSITY AND EMPHASIS\n Everything was the same mid-grey, so nothing said where to look.\n ========================================================================= */\n\n/* The chain panel is the subject; give its header the accent rule. */\n#chainWidget > .controls { border-bottom-color: color-mix(in oklab, var(--primary) 45%, var(--border)); }\n#chainWidget .panel-title { color: var(--primary); }\n\n/* Gate chips should not strand a single item on its own line. */\n.gate-list { row-gap: var(--space-1); }\n.gate-chip { flex: 0 0 auto; }\n\n/* Panel headers all one height, whatever they contain. */\n.gridWidget > .controls { min-height: 2.1rem; }\n\n/* The activity graph earns its space or gives it up. */\n#activityGraph { min-height: 0; }\n#activityGraph.is-sparse { height: 84px !important; opacity: .75; }\n#activityGraphControls { margin-top: var(--space-1); }\n\n/* gridster.css sets `.gridster .gs-w { background: var(--scrim-60) }` -- two\n classes, which outranks a plain .gridWidget. That translucent scrim is what\n let the background image read straight through every panel. */\n.gridster .gs-w,\n.gridster .gridWidget {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n}\n\n/* With every panel opaque the background image is hidden completely, which\n throws away the one piece of brand on the page. The chain panel is the one\n surface with real empty space, so it alone stays slightly translucent -- the\n ship reads faintly behind the map and nowhere near the tables. */\n.gridster .gs-w#chainWidget {\n\tbackground-color: color-mix(in oklab, var(--card) 88%, transparent);\n}\n\n/* The map itself sits on nothing, so the node is what stands out. */\n#chainWidget > .content { background: transparent; }\n\n/* ============================================================================\n PROPORTION, WITH REAL DATA IN FRONT OF ME\n\n A one-signature system flattered the 32vh top row. With a dozen signatures\n the table shows four and clips, while the chain holds 60% of the screen for\n a single node. Signatures are what you read during a scan, so the top row\n grows and the chain takes what is left rather than the reverse.\n ========================================================================= */\n\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ============================================================================\n SIGNATURE TABLE COLUMN SIZING\n The id was wrapping mid-value (\"ABC-\" / \"111\"), the group was stated twice\n (dot plus word), site names were centre-aligned under a left-aligned header,\n and life/mass held full width while empty for every non-wormhole row.\n ========================================================================= */\n\n#sigTable { table-layout: fixed; }\n\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.5rem; white-space: nowrap; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6rem; white-space: nowrap; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.5rem; white-space: nowrap; }\n#sigTable th:nth-child(4), #sigTable td:nth-child(4) { width: auto; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 4.5rem; white-space: nowrap; }\n\n/* Everything reads left except the state columns, which line up on the right\n so they scan as a pair. */\n#sigTable td, #sigTable th { text-align: left; }\n#sigTable td:nth-child(5), #sigTable th:nth-child(5),\n#sigTable td:nth-child(6), #sigTable th:nth-child(6) { text-align: right; }\n\n/* The alignment classes the app writes inline fight the above. */\n#sigTable td.centerAlign, #sigTable td.rightAlign { text-align: inherit; }\n\n/* The signature id is an identifier; never break it. */\n#sigTable td:nth-child(1) { font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; }\n\n/* Header row is chrome, not content. */\n#sigTable thead th { position: sticky; top: 0; background: var(--card); z-index: 1; }\n\n/* ============================================================================\n HIERARCHY\n Three text tokens used almost interchangeably meant nothing led the eye.\n Primary content sits at full strength, supporting detail steps back.\n ========================================================================= */\n\n.sys-panel .sys-name { color: var(--foreground); font-weight: 600; }\n.sys-statics, .sys-extra { color: var(--card-foreground); }\n.sys-links a, #version,\n#activityGraphControls a,\n.sig-stats { color: var(--muted-foreground); }\n\n/* The filter bar is a control surface; it should sit quieter than the rows it\n filters. */\n.sig-filter { padding: var(--space-1) var(--space-2); }\n.sig-chip { font-size: calc(var(--fs-xs) * 0.95); }\n\n/* The version chip was absolutely positioned at top:4px right:20px inside the\n logo, which worked when the topbar was a line-height hack. In a flex row it\n lands on top of the wordmark. It is a sibling, so it sits like one. */\n#topbar #logo { position: static; display: flex; align-items: baseline; gap: var(--space-2); }\n\n#version {\n\tposition: static;\n\ttop: auto; right: auto;\n\theight: auto;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Panel visibility menu, opened from the layout control. */\n#panel-menu {\n\tposition: absolute;\n\tz-index: 3000;\n\tmin-width: 12rem;\n\tpadding: var(--space-1) 0;\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.5);\n}\n#panel-menu button {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\twidth: 100%;\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\ttext-align: left;\n\tpadding: var(--space-1) var(--space-3);\n\tmin-height: 0;\n}\n#panel-menu button:hover { background: var(--muted); }\n#panel-menu .tick { width: 1em; color: var(--primary); }\n\n/* ============================================================================\n CHARACTER PORTRAIT\n\n EVE portraits are square, so they need masking to read as an avatar. Served\n from images.evetech.net -- image.eveonline.com is the retired host and the\n settings portrait was still pointing at it.\n ========================================================================= */\n\n.avatar {\n\tdisplay: inline-block;\n\twidth: 1.6rem;\n\theight: 1.6rem;\n\tborder-radius: 50%;\n\tobject-fit: cover;\n\tvertical-align: middle;\n\tbackground: var(--muted);\n\t/* A thin ring keeps a dark portrait from bleeding into a dark topbar. */\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#topbar #user {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-2);\n}\n\n.avatar-lg {\n\twidth: 3.4rem;\n\theight: 3.4rem;\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#dialog-options #avatar { padding-right: var(--space-3); vertical-align: top; }\n\n/* account.css sets `#login img { border-radius: 3px }` -- an id plus an\n element, which outranks .avatar and squared the portrait off again. */\n#login img.avatar,\n#topbar img.avatar,\nimg.avatar {\n\tborder-radius: 50%;\n}\n\n/* Corporation and alliance logos are marks, not faces; they stay square. */\nimg.logo {\n\twidth: 1.6rem; height: 1.6rem;\n\tobject-fit: contain;\n\tvertical-align: middle;\n}\n","/* ============================================================================\n CHAIN TAB STRIP\n\n On a busy corp map this is the primary navigation -- the chain runs\n roughly sixteen screen widths, so you reach a system by picking its chain,\n not by scrolling to it. Thirteen-plus tabs is normal.\n\n The old strip could not survive that: `.tab { min-width: 75px }` with no\n overflow handling meant thirteen tabs demanded ~975px and simply pushed the\n rest of the header off the right edge. It also used floats inside\n inline-blocks with text-align:right, so the label and its controls fought\n each other.\n\n Now: one scrolling row that takes the space left over, with every other\n control held in place beside it.\n ========================================================================= */\n\n#chainWidget > .controls {\n\tflex-wrap: nowrap;\n\tgap: var(--space-2);\n}\n\n/* Everything that is not the strip keeps its size. */\n#chainWidget > .controls > *:not(#chainTabs) { flex: 0 0 auto; }\n\n#chainTabs {\n\tflex: 1 1 auto;\n\tmin-width: 0; /* without this a flex child refuses to shrink */\n\tdisplay: flex;\n\talign-items: stretch;\n\tgap: 2px;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscrollbar-width: thin;\n\tscroll-snap-type: x proximity;\n\t/* Fade the edges so it is obvious there are more chains off-screen. */\n\tmask-image: linear-gradient(to right, transparent 0, #000 12px,\n\t #000 calc(100% - 12px), transparent 100%);\n}\n\n#chainTabs::-webkit-scrollbar { height: 4px; }\n#chainTabs::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 999px; }\n#chainTabs::-webkit-scrollbar-track { background: transparent; }\n\n/* ---- the tab itself ----------------------------------------------------- */\n\n#chainTabs .tab {\n\tflex: 0 0 auto;\n\tmin-width: 0; /* was 75px, which is what broke the header */\n\tmax-width: 12rem;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm) var(--radius-sm) 0 0;\n\tborder-bottom: 2px solid transparent;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1.6;\n\ttext-align: left;\n\twhite-space: nowrap;\n\tscroll-snap-align: start;\n\ttransition: color .12s ease, background-color .12s ease, border-color .12s ease;\n}\n\n#chainTabs .tab:hover {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--border-strong);\n}\n\n/* The active chain is where you are; a 2px blue rule was too quiet for the\n one control you navigate by. */\n#chainTabs .tab.current {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n\tfont-weight: 600;\n}\n\n/* Floats inside an inline-block, with the row right-aligned, meant the label\n and its buttons never agreed on a baseline. */\n#chainTabs .tab .name {\n\tfloat: none;\n\tpadding-left: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n#chainTabs .tab .closeTab,\n#chainTabs .tab .editTab {\n\tfloat: none;\n\tflex: 0 0 auto;\n\tpadding: 0 2px;\n\tfont-size: .85em;\n\tline-height: 1;\n\tcolor: var(--muted-foreground);\n}\n\n/* Reveal the controls on the tab you are pointing at, and always on the active\n one -- otherwise renaming the chain you are in means hunting for a target\n that appears only on hover. */\n#chainTabs .tab:hover .closeTab,\n#chainTabs .tab:hover .editTab,\n#chainTabs .tab.current .closeTab,\n#chainTabs .tab.current .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#chainTabs .tab .closeTab:hover { color: var(--destructive); }\n#chainTabs .tab .editTab:hover { color: var(--primary); }\n\n/* While dragging to reorder. */\n#chainTabs .ui-sortable-helper {\n\tbackground: var(--card);\n\tborder-color: var(--border);\n\tbox-shadow: 0 4px 12px rgba(0,0,0,.4);\n}\n\n/* The chain panel's own title is redundant next to a strip of named chains,\n and at thirteen tabs the space is worth more than the label. */\n#chainWidget .panel-title { display: none; }\n\n/* ============================================================================\n PANEL HEADER: RIGHT-ANCHORED CONTROLS\n\n .controls is a flex row, and two of its children carried `margin-left: auto`\n -- the group the markup floats right, and the panel-hide button. Flexbox\n divides free space equally between every auto margin, so instead of both\n sitting at the right edge the trailing group was parked in the middle of\n the header (measured: 203px short of the right in System, 206px in\n Signatures, 168px in Notes).\n\n Exactly one element opens the gap. Everything after it packs against the\n right edge behind it.\n ========================================================================= */\n\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n}\n\n/* No second auto margin -- this just follows the group above. */\n.gridWidget > .controls > .panel-hide { margin-left: 0; }\n\n/* If a panel ever has no floated group, the hide button still needs to open\n the gap itself. :only-of-type is too narrow, so match on it being the sole\n right-hand item. */\n.gridWidget > .controls > div[style*=\"float\"] ~ .panel-hide { margin-left: 0; }\n.gridWidget > .controls > .panel-hide:first-of-type { margin-left: auto; }\n\n/* The chain header sizes its strip with flex-grow instead, so nothing there\n should also claim the free space. */\n#chainWidget > .controls > div[style*=\"float\"] { margin-left: 0; }\n","/* ============================================================================\n MAIN HEADER\n\n Was one cramped line of unrelated things divided by literal \"|\" characters,\n with two inline `font-size: 1.7em` overrides and a portrait too small to\n recognise.\n\n An earlier attempt made this a grid with `display: contents` on the\n wrappers; that placed every right-hand control into the same grid cell, so\n they stacked and ran off the right edge. A flex row cannot do that: the\n right cluster is one item that keeps its own width.\n\n Server population and EVE time have moved out entirely, to the status bar\n along the bottom -- they are ambient readings, not navigation.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: var(--space-2) var(--space-3);\n\theight: auto;\n\tmin-height: 0;\n\tline-height: normal;\n\tflex-wrap: nowrap;\n}\n\n#topbar > .align-left {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 1 1 auto;\n\tmin-width: 0; /* lets the left side shrink instead of shoving */\n}\n\n#topbar > .align-right {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 0 0 auto; /* never compressed, never pushed out */\n\tpadding-right: 0;\n}\n\n#topbar #logo {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tflex: 0 0 auto;\n}\n#topbar #logo a { font-size: 1.8rem; line-height: 1.1; }\n\n#topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* Twice the previous portrait; the header height follows it. */\n#topbar .avatar { width: 2.4rem; height: 2.4rem; }\n#topbar #user { gap: var(--space-2); font-size: 1.05rem; }\n\n#topbar #settings,\n#topbar #layout { font-size: 1.3rem; flex: 0 0 auto; }\n\n/* The system search takes the slack in the middle rather than the icons. */\n#topbar #systemSearch { flex: 1 1 auto; min-width: 0; }\n\n/* ============================================================================\n STATUS BAR\n\n Ambient readings, out of the way: server population left, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--space-4);\n\tpadding: var(--space-1) var(--space-3);\n\tborder-top: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n}\n\n#statusbar .bar-value { font-variant-numeric: tabular-nums; font-weight: 600; }\n#statusbar #serverStatus.is-down .bar-value { color: var(--data-critical); }\n\n.bar-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n/* ============================================================================\n NOTE EDITOR\n Replaces CKEditor 4's skin. Same visual language as everything else, so the\n editor does not look like a different application embedded in the panel.\n ========================================================================= */\n\n.rte {\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n\toverflow: hidden;\n}\n\n.rte-bar {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 2px;\n\tpadding: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--card) 60%, transparent);\n}\n\n.rte-btn {\n\tmin-width: 1.9rem;\n\tmin-height: 1.9rem;\n\tpadding: 0 var(--space-1);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1;\n\tcursor: pointer;\n}\n.rte-btn:hover { background: var(--accent-surface); color: var(--foreground); border-color: var(--border); }\n\n.rte-sep { width: 1px; align-self: stretch; margin: 2px var(--space-1); background: var(--border); }\n\n.rte-swatch {\n\twidth: 1.1rem; height: 1.1rem;\n\tmin-width: 0; min-height: 0;\n\tpadding: 0;\n\tborder: 1px solid var(--border);\n\tborder-radius: 50%;\n\tcursor: pointer;\n}\n.rte-swatch:hover { transform: scale(1.15); }\n\n.rte-area {\n\tmin-height: 7rem;\n\tmax-height: 22rem;\n\toverflow-y: auto;\n\tpadding: var(--space-2);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tline-height: 1.6;\n\toutline: none;\n}\n.rte-area:focus { background: var(--background); }\n.rte-area a { color: var(--primary); }\n.rte-area ul, .rte-area ol { padding-left: 1.4em; margin: .3em 0; }\n","/* ============================================================================\n TYPOGRAPHY: ONE FAMILY\n\n The stylesheets declare thirteen different font stacks -- Arial, Verdana,\n \"Arial, verdana, tahoma\", lucida, bare sans-serif, and so on. Most were\n already being overridden by the body rule, but two rules still resolved\n to `lucida`, and any of the rest would resurface the moment a component was\n touched.\n\n One family everywhere, except the icon font and deliberate monospace.\n ========================================================================= */\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n[data-icon], [data-icon]::before, [data-icon]::after,\n.icon, .icon::before { font-family: 'icon' !important; }\n\ncode, pre, .mono,\n#sigTable td:nth-child(1),\n#statusbar .bar-value,\n#topbar #serverTime { font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n SETTINGS SECTION HEADINGS\n\n They were sticky, which needed a solid background to avoid text scrolling\n through them -- and the background did not match every surface they crossed,\n so they rendered as a band that did not line up. Sticky buys little in a\n dialog this short. They are plain headings now.\n ========================================================================= */\n\n.settings-sections > h3 {\n\tposition: static;\n\tbackground: transparent;\n}\n\n/* ============================================================================\n HEADER: NEVER CLIP THE RIGHT CLUSTER\n\n Reported repeatedly. The right cluster is fixed-size and the left is\n flexible, but the left contains a search input with an intrinsic minimum\n width, so at narrow widths it refused to shrink and pushed the icons past\n the edge. Truncating the left is always preferable to losing a control.\n ========================================================================= */\n\n#topbar > .align-left { overflow: hidden; }\n#topbar #systemSearch,\n#topbar #currentSpan,\n#topbar #searchSpan { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n#topbar #systemSearch input[type=\"text\"] { max-width: 14rem; min-width: 0; }\n#topbar > .align-right { z-index: 2; }\n\n/* ============================================================================\n SYSTEM PANEL: BREATHING ROOM AT THE TOP\n The system name sat hard against the panel header.\n ========================================================================= */\n\n.sys-panel { padding-top: var(--space-4); }\n.sys-panel .sys-name { margin-top: 0; }\n\n/* ============================================================================\n STATUS BAR: THREE SLOTS\n Population left, Tripwire version centred, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto 1fr;\n\talign-items: center;\n}\n#statusbar > #serverStatus { justify-self: start; }\n#statusbar > #version { justify-self: center; }\n#statusbar > #eveTime { justify-self: end; }\n\n/* The chart still renders a few pixels past its box even when told the height,\n because Google Charts adds its own chrome. Clip rather than let it paint over\n what follows. */\n#activityGraph { overflow: hidden; }\n\n/* Two rules still resolved to the bundled `lucida` face. */\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n/* signatures.css uses a bundled `lucida` TTF for the signature-id column, to\n keep ids aligned down the column. The intent is right; shipping a font file\n for one column is not. A system monospace stack with tabular figures does\n the same job with no download. */\n#sigTable td:nth-child(1) {\n\tfont-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n\tfont-variant-numeric: tabular-nums;\n\tletter-spacing: .04em;\n}\n\n/* ── The header overflow, root cause ─────────────────────────────────────\n #topbar is content-box (this stylesheet predates border-box being the\n default anyone reaches for), so `width: 100%` plus `padding: 6px 9px`\n resolves to viewport + 18px. The bar hangs 18px off the right of the\n screen and the last control -- the layout icon -- is cut in half.\n\n Every check I ran against this measured `scrollWidth - clientWidth` on\n the bar, which is 0: the bar is not overflowing its own box, its box is\n bigger than the viewport. The document does not report it either,\n because overflow-x is hidden upstream. Both numbers read clean while\n the icon was visibly severed. The right question is whether the bar's\n right edge exceeds documentElement.clientWidth.\n\n Padding belongs inside the width. */\n#topbar {\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tmax-width: 100%;\n}\n","/* ============================================================================\n POLISH PASS\n\n Six things, all of which come back to the same habit: space and weight were\n applied per-element as each one was noticed, so nothing shared a rule and\n nothing agreed with anything else. These set the shared rules.\n ========================================================================= */\n\n/* ── 1. PANEL INSETS ─────────────────────────────────────────────────────\n Measured before writing this, per panel, first painted child against the\n content box:\n\n Notes padding 0 -- \"Posted by\" flush against the left border\n Signatures padding 0 -- filter chips flush against both\n Chain padding 0 -- correct, the map is meant to be full bleed\n System 12px 9px 9px -- three different values, none of them a\n token, top too tight to read as intended\n\n Content that touches its own frame reads as a rendering fault, which is\n what it looked like. One inset, one token, every panel. */\n\n/* Explicit pixels, not var(--space-4). The root font-size here is 12px, not\n the 16px rem maths assumes, so every rem-based value lands 25% short of\n what it reads as -- var(--space-4) is \"1rem\" and resolves to 12px. Rather\n than redefine the scale under everything already tuned against it, the\n values that need to be a specific size are stated as that size. */\n.gridWidget > .content,\n#infoWidget > .content,\n#notesWidget > .content,\n#signaturesWidget > .content {\n\tpadding: 16px;\n\tbox-sizing: border-box;\n\toverflow: auto;\n\tmin-height: 0;\n}\n\n/* The map is the exception and stays edge to edge: it is a canvas that pans,\n and an inset would clip it rather than frame it. The breathing room goes\n inside the scroll area instead, so nodes never butt against the divider. */\n#chainWidget > .content { padding: 0; min-height: 0; overflow: hidden; }\n#chainParent { padding: var(--space-3); box-sizing: border-box; max-height: 100%; overflow: auto; }\n\n/* Rhythm between the blocks inside a panel, which previously had none. */\n#sigFilterBar { margin-bottom: var(--space-3); }\n.sys-panel > * + * { margin-top: var(--space-3); }\n#activityGraphControls { margin-top: var(--space-2); }\n\n/* ── 2. SPACE ALLOCATION ─────────────────────────────────────────────────\n Rows were fixed at 46vh regardless of what was in them. Measured fill:\n\n Notes 82% empty\n Signatures 48% empty\n System 3% empty (close to overflowing)\n Chain -60% (501px of map in a 312px box)\n\n Notes held a third of the screen for one line while the map -- the reason\n the tool exists -- was the only panel that could not fit its content. The\n top row gives some back and notes narrows, since it is the panel that\n demonstrably needs least. */\n/* The top row stays where it was. Taking 6vh off it to feed the chain made\n the System panel clip instead -- it needs 341px and 40vh gave it 320 -- and\n a panel you have to scroll to see the statics is a worse trade than a map\n that pans, which is what a map is for. The chain \"overflowing\" was my own\n mis-framing: a canvas sixteen screens wide is supposed to exceed its box.\n What was actually wrong with it was that it never scrolled to where you\n are, which is fixed in the renderer rather than here. */\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-columns: minmax(230px, 1fr) minmax(320px, 1.5fr) minmax(190px, 0.78fr);\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ── 3. TYPE SCALE ───────────────────────────────────────────────────────\n Footer 9.6px, body ~11px, panel titles 12px: three sizes inside three\n pixels, which reads as inconsistency rather than hierarchy. The footer was\n also simply too small to read, and it is the only place the server's\n player count and EVE time appear. */\n#statusbar { font-size: 11px; }\n#statusbar .bar-label { font-size: inherit; letter-spacing: .07em; opacity: .72; }\n#statusbar .bar-value { font-size: inherit; font-variant-numeric: tabular-nums; }\n\n/* ── 4. AVATAR ───────────────────────────────────────────────────────────\n The header was given room for a larger portrait and then never used it. */\n#topbar #user-avatar.avatar { width: 34px; height: 34px; }\n#topbar #login h3 { display: inline-flex; align-items: center; gap: var(--space-2); }\n\n/* ── 5. GRAPH AXIS ───────────────────────────────────────────────────────\n The chart borrowed --border for its gridlines and --muted-foreground for\n its numbers, and both pull the wrong way: a gridline sits *behind* the\n data and should be lighter than a panel border, while the numbers are\n values you read off the chart, not labels you skim. Dedicated tokens. */\n:root {\n\t--chart-gridline: rgba(255, 255, 255, .055);\n\t--chart-axis-text: #b7b7b7;\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--chart-gridline: rgba(0, 0, 0, .075);\n\t\t--chart-axis-text: #4a4a4a;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--chart-gridline: rgba(0, 0, 0, .075);\n\t--chart-axis-text: #4a4a4a;\n}\n\n/* ── 6. EMPTY STATES ─────────────────────────────────────────────────────\n An empty box is indistinguishable from a broken one. Both of these are\n normal states -- a system nobody has annotated, a system whose hourly\n activity has not accumulated yet -- and should say so. */\n#comment-container:not(:has(.comment:not(.hidden)))::before,\n#activityGraph.is-empty::before {\n\tcontent: attr(data-empty);\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n/* :empty could never match -- the container always holds the hidden template\n row -- so the empty state never showed. :has() asks the real question. */\n#comment-container:not(:has(.comment:not(.hidden)))::before { content: \"No notes on this system yet.\"; }\n#activityGraph.is-empty { height: auto; min-height: 0; }\n\n/* ── 7. GATE CHIPS ───────────────────────────────────────────────────────\n Was \"Ikuchi ( HS )\" per gate, six of them wrapping to three rows. The\n brackets are noise and the security repeats as text what colour already\n says. Name plus a security badge, on one or two rows instead of three. */\n.gate-list { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }\n.gate-list-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: 10px;\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n}\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-1) 2px var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: 11px;\n\tline-height: 1.6;\n\ttext-decoration: none;\n}\n/* The chip is the link itself. Pair the brand's primary fill with its\n explicitly chosen on-primary ink so hover cannot become blue on orange. */\n.gate-chip:hover {\n\tbackground: var(--primary);\n\tcolor: var(--primary-foreground);\n\ttext-decoration: none;\n}\n.gate-chip .gate-sec {\n\tpadding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\tfont-size: 9px;\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n/* The badge paints the security colour as its ground; the letters knock out\n of it. currentColor above is the security class colour inherited from the\n named-colour mapping, so the fill stays correct in both themes. */\n.gate-chip .gate-sec::after { content: none; }\n.gate-chip .gate-sec { -webkit-text-fill-color: var(--card); }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* ── 8. SIGNATURE COLUMNS ────────────────────────────────────────────────\n Leads To held 168px against 66-84px for everything else, with slack left\n over; life and mass were cramped for no reason while the id column had\n room to spare. */\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.25rem; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6.5rem; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.25rem; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 5rem; }\n\n\n/* ── 9. THE NOTES OVERLAP ────────────────────────────────────────────────\n Not a spacing problem -- the two lines were drawn on top of each other.\n\n .commentToolbar contains a floated .commentTitle. Nothing contained the\n float, so the toolbar collapsed to 26px while the title's two lines ran\n 67px, and .commentBody was laid out from the collapsed height: body at\n y=130 with the title still painting to y=172. Measured, not inferred.\n\n The float dates from a layout that no longer exists. Flex row, and the\n toolbar is the height of its contents. */\n.comment {\n\tpadding: var(--space-2) 0;\n\tborder-bottom: 1px solid var(--border);\n}\n.comment:last-child { border-bottom: 0; }\n\n.commentToolbar {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: space-between;\n\tgap: var(--space-3);\n\tmargin-bottom: 6px;\n}\n.commentToolbar > .commentTitle,\n.commentToolbar > .commentControls {\n\tfloat: none;\n\tmin-width: 0;\n}\n.commentTitle {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1px;\n\tflex: 1 1 auto;\n}\n.commentTitle .commentModified,\n.commentTitle .commentCreated {\n\tdisplay: block;\n\tfont-size: 10px;\n\tline-height: 1.35;\n\tcolor: var(--muted-foreground);\n}\n.commentControls {\n\tdisplay: flex;\n\tgap: var(--space-2);\n\tflex: 0 0 auto;\n\tfont-size: 11px;\n}\n.commentBody { font-size: 12px; line-height: 1.5; }\n.commentBody > *:first-child { margin-top: 0; }\n.commentBody > *:last-child { margin-bottom: 0; }\n\n/* ── 10. THE SYSTEM PANEL IS A FLEX COLUMN ───────────────────────────────\n Which means every block in it is a flex item, and flex items shrink to\n fit by default. In a column that scrolls, nothing should: the whole point\n of the scroll is that content keeps its size and the viewport moves.\n\n The activity graph is where this showed. Computed height 0px around a\n 92px chart SVG, with overflow hidden -- so what rendered was the 8px of\n padding and nothing else, a blank band where the graph should be. Two\n things were doing it at once: the flex shrink above, and a leftover\n `height: 84px !important` clamp from the earlier attempt at sparse\n sizing, which I had described as removed and had not been. The chart\n sizes itself now (activity-graph.js sets options.height), so the\n container must simply take the height it is given. */\n.sys-panel > * { flex: 0 0 auto; }\n\n#activityGraph,\n#activityGraph.is-sparse,\n#activityGraph.is-empty {\n\theight: auto !important;\n\tmin-height: 0;\n\topacity: 1;\n}\n","/* ============================================================================\n READ BAND CHROME (phones, landscape phones)\n\n The layout bands in _override-5 put the panels back in flow; this file is\n the chrome that goes with it. Sorted after every other override so the\n phone wins its own argument -- the header and control-bar rules in\n _override-a/b/c were written for desktop widths and used to apply here too.\n\n Measured before writing: header 125px tall for one row of controls; chain\n panel bar 460px wide in a 375px viewport, with close/edit tab icons and the\n panel-hide control off the right edge.\n ========================================================================= */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t/* One row: avatar, name, corp, settings. The wordmark is redundant next to\n\t the wing mark on a screen this size, and the search field lives in the\n\t palette. */\n\t#topbar {\n\t\tmin-height: 0;\n\t\theight: auto;\n\t\tpadding: 8px 12px;\n\t\tgap: 8px;\n\t}\n\t#topbar { display: flex; min-height: 0; }\n\t#topbar > .align-left { display: flex; flex: 1 1 auto; }\n\t#topbar > .align-left #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-center { display: none; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar .hdr-tools { padding-left: 8px; }\n\t#topbar > .align-right {\n\t\tflex: 1 1 auto;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 12px;\n\t}\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar h3 { margin: 0; font-size: 13px; }\n\n\t.gridster { padding: 12px; }\n\n\t/* Control bars wrap rather than overflow, and the map's editing chrome is\n\t desktop and tablet work -- a phone reads the chain. */\n\t.gridWidget > .controls { flex-wrap: wrap; row-gap: 4px; }\n\t#chainWidget > .controls > div[style*=\"float\"] > i:not(.panel-hide),\n\t#chainWidget > .controls > .control,\n\t#chainWidget > .controls #newTab,\n\t.chainTab .closeTab,\n\t.chainTab .editTab,\n\t#chainTabs .closeTab,\n\t#chainTabs .editTab { display: none !important; }\n\t#chainTabs { flex: 1 1 100%; min-width: 0; order: 2; }\n\n\t/* Google Charts paginates the legend at this width (\"1/2\"). Two rows of\n\t legend beats a pager nobody expected. */\n\t#activityGraph svg > g:first-of-type { }\n}\n\n/* Phone bars: the right-hand group takes its own row rather than being pushed\n past the edge, and the paste control is desktop/tablet work like the rest\n of the editing chrome. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.gridWidget > .controls > .bar-right { flex: 1 1 100%; margin-left: 0; justify-content: flex-end; }\n\t#signaturesWidget #paste-signatures,\n\t#signaturesWidget .bar-sep { display: none !important; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Every control in this group is editing chrome that the READ band hides\n\t individually; the empty group was still taking a row of its own. */\n\t#signaturesWidget > .controls > .bar-right,\n\t#notesWidget > .controls > .bar-right { display: none; }\n}\n\n/* ── Second look at the READ band, from screenshots ─────────────────────\n The header spread name / corp / settings across the full width with\n nothing between them; the panel bars' right-hand group was forced onto\n its own row, which left the hide control alone on a third; and the chain\n bar showed five map icons before the tabs. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-right { justify-content: flex-start; gap: 14px; }\n\t#topbar > .align-right > #settings,\n\t#topbar > .align-right > i#settings { margin-left: auto; }\n\t#topbar > .align-right > #layout { display: none; }\n\n\t.gridWidget > .controls > .bar-right { flex: 0 0 auto; margin-left: auto; }\n\t.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: var(--space-1); }\n\n\t#chainWidget > .controls > #show-viewing,\n\t#chainWidget > .controls > #show-favorite,\n\t#chainWidget > .controls > #show-chainLegend,\n\t#chainWidget > .controls > #hot-jump,\n\t#chainWidget > .controls > #higgs-jump,\n\t#chainWidget > .controls > .bar-sep { display: none !important; }\n\t#chainTabs { order: 0; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Life and mass cells are hidden here, and they were carrying the row's\n\t hover and selected background -- so a wormhole row's highlight stopped\n\t two columns short. Paint the row instead. */\n\t#sigTable tbody tr:hover, #sigTable tbody tr.selected { background-color: var(--muted); }\n\t#sigTable tbody tr:hover > td, #sigTable tbody tr.selected > td { background-color: transparent; }\n}\n","/* ============================================================================\n THE SCALE\n\n Measured on the main screen at 1920x1080: fourteen font sizes, seven border\n radii, nine control heights, eight icon sizes. Almost none of it chosen --\n the tokens were written in rem against a 12px root, so \"0.8rem\" rendered\n at 9.6px and \"0.76rem\" at 9.12px, and every component that reached for a\n size got a slightly different one.\n\n Six sizes, in pixels, and every token that feeds a size resolves to one of\n them. Anything below 11px is not for reading.\n ========================================================================= */\n\n:root {\n\t--fs-xs: 11px;\n\t--fs-sm: 12px;\n\t--fs-base: 13px;\n\t--fs-md: 15px;\n\t--fs-lg: 18px;\n\t--fs-xl: 24px;\n\n\t/* Two radii and a pill. Inputs and chips at 4, cards and dialogs at 8. */\n\t--radius: 8px;\n\t--radius-md: 8px;\n\t--radius-sm: 4px;\n\n\t/* Two control heights: dense (bars, rows, chips) and standard (dialog\n\t inputs, primary buttons). Coarse pointers raise the floor to 44 in\n\t _override-5-responsive.css. */\n\t--control-dense: 28px;\n\t--control-standard: 36px;\n\n\t/* One icon size inline and in bars; one in the header. */\n\t--icon: 16px;\n\t--icon-lg: 20px;\n}\n\nbody { font-size: var(--fs-base); }\n\n/* Icons take the token, not whatever size their parent happened to be. */\n[data-icon]::before { font-size: var(--icon); line-height: 1; }\n#topbar [data-icon]::before { font-size: var(--icon-lg); }\n\n/* Dialog inputs and buttons at the standard height; the bars stay dense. */\n.ui-dialog input[type=\"text\"], .ui-dialog input[type=\"password\"],\n.ui-dialog input[type=\"number\"], .ui-dialog select,\n.ui-dialog .ui-selectmenu-button {\n\tmin-height: var(--control-standard);\n\tbox-sizing: border-box;\n}\n.ui-dialog-buttonpane button { min-height: var(--control-standard); }\n\n/* ============================================================================\n LIGHT THEME SURFACES\n\n The light theme flipped cleanly but had no depth: body and card were both\n oklch(1 0 0), pure white on pure white, with a 1px border doing all the\n work. The dark theme gets its hierarchy from the card being lighter than\n the ground; the light theme gets the same from the ground being warmer\n than the card. Same three-state structure as _override-1-system.css.\n ========================================================================= */\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(0.962 0.006 80);\n\t\t--card: oklch(1 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--muted: oklch(0.955 0.005 80);\n\t\t--accent-surface: oklch(0.955 0.005 80);\n\t\t--border: oklch(0.90 0.006 80);\n\t\t--border-strong: oklch(0.82 0.008 80);\n\t\t--input: oklch(0.90 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(0.962 0.006 80);\n\t--card: oklch(1 0 0);\n\t--popover: oklch(1 0 0);\n\t--muted: oklch(0.955 0.005 80);\n\t--accent-surface: oklch(0.955 0.005 80);\n\t--border: oklch(0.90 0.006 80);\n\t--border-strong: oklch(0.82 0.008 80);\n\t--input: oklch(0.90 0.006 80);\n}\n\n/* ============================================================================\n SYSTEM PANEL ALIGNMENT\n\n Name, security, gates and routes were left-aligned; the graph legend, the\n range chips and the external links were centred. Two alignment systems in\n one 300px column, switching at the graph. One system.\n ========================================================================= */\n\n#activityGraphControls,\n.sys-range,\n#infoLinks,\n.sys-links {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tgap: var(--space-2);\n\ttext-align: left;\n}\n#infoLinks { border-top: 0; padding-top: 0; }\n#infoLinks a, .sys-links a { padding: 0; }\n\n/* ============================================================================\n NOTES, CONTENT FIRST\n\n \"Posted by Cormorant Fell at 2026-09-01 03:16:48\" was the first line of\n every note and the note itself came second. The reader wants the note.\n Author and time become one muted line beneath it; edit controls appear on\n hover or focus rather than sitting on every note permanently.\n ========================================================================= */\n\n/* :not(.hidden) matters. A bare .comment rule outranked .hidden's display:none\n (same specificity, later in the cascade), which made the hidden template\n row *visible* -- and systemChange.js removes every `.comment:visible` on a\n system change. That deleted the template, parse() had nothing to clone,\n and no note rendered anywhere. Measured: 0 comments in the DOM with 1 in\n the payload, and no template. */\n.comment:not(.hidden) { display: flex; flex-direction: column; }\n.comment.hidden { display: none !important; }\n.comment > .commentBody { order: 1; }\n.comment > .commentToolbar { order: 2; margin: 6px 0 0; }\n.comment > .commentFooter { order: 3; }\n\n.commentTitle { flex-direction: row; flex-wrap: wrap; gap: 0 var(--space-2); align-items: baseline; }\n.commentTitle .commentCreated,\n.commentTitle .commentModified { font-size: var(--fs-xs); }\n.commentTitle .commentModified.is-same { display: none; }\n\n.comment .commentControls { opacity: 0; transition: opacity .12s ease; }\n.comment:hover .commentControls,\n.comment:focus-within .commentControls { opacity: 1; }\n@media (pointer: coarse) { .comment .commentControls { opacity: 1; } }\n\n/* ============================================================================\n PHONE, LEFTOVERS FROM _override-d\n The chain tab strip scrolls internally -- its children past the edge are\n expected -- but the panel-hide control was being pushed off with them.\n Hiding the chain on a phone is not a thing anyone does.\n ========================================================================= */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainWidget > .controls .panel-hide { display: none !important; }\n\t#chainTabs { flex: 1 1 auto; max-width: 100%; }\n}\n\n/* ============================================================================\n THE HOLDOUTS, MEASURED AFTER THE FIRST PASS\n Twelve sizes remained. Each of these was an em-relative size on a\n component that never reached for a token.\n ========================================================================= */\n.sig-chip, .sig-filter .sig-chip { font-size: var(--fs-xs); }\n#topbar h3, #topbar h3 a, #EVEsystem,\n#topbar #mask, #topbar #user-track-name { font-size: var(--fs-base); }\n#topbar #logo a { font-size: var(--fs-xl); }\n.sys-meta, #infoSecurity, .sys-meta .chip { font-size: var(--fs-sm); }\n.gate-chip .gate-sec { font-size: var(--fs-xs); height: 15px; padding: 0 5px; }\nkbd { font-size: var(--fs-xs); }\n.node .nodeClass, .node .nodeType { font-size: var(--fs-xs); }\n\n/* Heights: chips at 22, bars and header controls at 28, dialogs at 36.\n bar-btn measured 30 because the height was content-box plus its border. */\n.controls .bar-btn { box-sizing: border-box; height: var(--control-dense); }\n.sig-chip, .gate-chip, h4.chip, .chip {\n\tbox-sizing: border-box;\n\theight: 22px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding-top: 0; padding-bottom: 0;\n}\n#topbar > .align-right > i[data-icon],\n#topbar #search, #topbar #follow {\n\tbox-sizing: border-box;\n\theight: var(--control-dense);\n\tmin-width: var(--control-dense);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: var(--radius-sm);\n}\n#topbar > .align-right > i[data-icon]:hover { background: var(--muted); }\n\n/* ── Graph legend as chips, in the controls row ──────────────────────── */\n#activityGraphControls { justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-3); }\n#activityLegend { display: inline-flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }\n#activityLegend .legend-chip {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 22px; padding: 0 8px 0 6px;\n\tborder: 1px solid transparent; border-radius: 999px;\n\tbackground: transparent; color: var(--foreground);\n\tfont-size: var(--fs-xs); font-weight: 500; cursor: pointer;\n}\n#activityLegend .legend-chip:hover { background: var(--muted); border-color: var(--border); }\n#activityLegend .legend-chip .swatch { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }\n#activityLegend .legend-chip.off { color: var(--muted-foreground); }\n#activityLegend .legend-chip.off .swatch { opacity: .3; }\n#activityGraphControls > a { margin-left: 0; }\n/* space-between was distributing the three range links across the row along\n with the legend; the legend takes the slack and the ranges stay a group. */\n#activityGraphControls { justify-content: flex-start; }\n#activityLegend { margin-right: auto; }\n","/* ============================================================================\n ONE DIALOG\n\n Every real workflow -- add, edit, settings, ping, confirm -- runs through a\n jQuery UI dialog, and jQuery UI's structure showed through the restyle:\n its titlebar, its button pane as a separate strip, buttons in whatever\n order the config object listed them. The panels are the branch's; the\n dialogs were the library's. This makes the dialog the same object as the\n command palette: one surface, one radius, a header with a title and one\n close, a body, and a footer with the primary action filled and on the\n right, the quiet action beside it, the destructive one alone on the left.\n\n jQuery UI stays underneath for positioning and focus. Only the skin and\n the button roles change; dialog-polish.js assigns the roles.\n ========================================================================= */\n\n.ui-dialog {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45);\n\tpadding: 0;\n\tmax-width: min(94vw, 720px);\n\toverflow: hidden;\n}\n.ui-dialog-shadow { box-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45); }\n\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: var(--space-3) var(--space-4);\n\tmin-height: var(--control-standard);\n\tbackground: transparent;\n\tborder-bottom: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tletter-spacing: .1em;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tfont-size: var(--fs-base);\n\tline-height: 1.5;\n}\n\n/* ---- footer ---------------------------------------------------------- */\n.ui-dialog .ui-dialog-buttonpane {\n\tpadding: var(--space-3) var(--space-4);\n\tborder-top: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tgap: var(--space-2);\n\tfloat: none;\n\twidth: 100%;\n}\n.ui-dialog-buttonpane button {\n\torder: 2;\n\tmargin: 0;\n\tpadding: 0 var(--space-4);\n\tmin-height: var(--control-standard);\n\tborder-radius: var(--radius-sm);\n\tfont-size: var(--fs-base);\n\tfont-weight: 500;\n}\n/* Quiet: cancel, close, and the \"reset\" style choices that are not destructive. */\n.ui-dialog-buttonpane button.is-quiet {\n\torder: 1;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-quiet:hover {\n\tborder-color: transparent;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n}\n/* Primary: filled, last. */\n.ui-dialog-buttonpane button.is-primary {\n\torder: 3;\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 88%, white);\n\tcolor: var(--primary-foreground);\n}\n/* Destructive: alone on the left, red only when approached. */\n.ui-dialog-buttonpane button.is-destructive {\n\torder: 0;\n\tmargin-right: auto;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground: transparent;\n}\n.ui-dialog-buttonpane button[disabled],\n.ui-dialog-buttonpane button.ui-state-disabled { opacity: .45; pointer-events: none; }\n\n/* Modal scrim, one value. */\n.ui-widget-overlay { background: rgba(0,0,0,.55); opacity: 1; }\n\n/* ============================================================================\n FORM ROWS INSIDE DIALOGS\n The palette's row is the dialog's row: label left in a quiet weight,\n control right, one vertical rhythm.\n ========================================================================= */\n\n.settings { display: flex; flex-direction: column; gap: 0; }\n\n.settings-tabs {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tmargin: calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) var(--space-4);\n\tpadding: 0 var(--space-4);\n\tborder-bottom: 1px solid var(--border);\n}\n.settings-tabs [role=\"tab\"] {\n\tborder: 0;\n\tborder-bottom: 2px solid transparent;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tpadding: var(--space-3) var(--space-2);\n\tmargin-bottom: -1px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n}\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); background: transparent; }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] {\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n}\n\n.settings-pane { display: flex; flex-direction: column; gap: var(--space-2); min-height: 300px; }\n.settings-pane[hidden] { display: none; }\n\n.field {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto;\n\talign-items: center;\n\tgap: var(--space-3);\n\tmin-height: var(--control-standard);\n\tpadding: var(--space-1) 0;\n}\n.field.field-block { grid-template-columns: 1fr; align-items: start; }\n.field-label { color: var(--foreground); font-size: var(--fs-base); }\n.field-label small { display: block; color: var(--muted-foreground); font-size: var(--fs-xs); margin-top: 1px; }\n.field-value { color: var(--foreground); font-variant-numeric: tabular-nums; }\n.field-inline { display: inline-flex; align-items: center; gap: var(--space-2); }\n.field-inline input[type=\"text\"] { width: 12rem; }\n.field-actions { display: flex; gap: var(--space-2); justify-content: flex-end; padding-top: var(--space-3); }\n.field-group {\n\tmargin: var(--space-4) 0 var(--space-1);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.field select, .field input[type=\"text\"] { min-width: 14rem; }\n\n/* ---- switch: the one idiom for a boolean ----------------------------- */\n.switch { position: relative; display: inline-block; width: 38px; height: 22px; cursor: pointer; }\n.switch input { position: absolute; opacity: 0; width: 0; height: 0; }\n.switch-track {\n\tposition: absolute; inset: 0;\n\tborder-radius: 999px;\n\tbackground: var(--input);\n\ttransition: background .15s ease;\n}\n.switch-track::after {\n\tcontent: \"\";\n\tposition: absolute; top: 3px; left: 3px;\n\twidth: 16px; height: 16px;\n\tborder-radius: 50%;\n\tbackground: var(--foreground);\n\ttransition: transform .15s ease;\n}\n.switch input:checked + .switch-track { background: var(--primary); }\n.switch input:checked + .switch-track::after { transform: translateX(16px); background: var(--primary-foreground); }\n.switch input:focus-visible + .switch-track { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n/* ---- segmented: two to four options ---------------------------------- */\n.segmented { display: inline-flex; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }\n.segmented input { position: absolute; opacity: 0; pointer-events: none; }\n.segmented label {\n\tpadding: 0 var(--space-3);\n\tmin-height: calc(var(--control-standard) - 8px);\n\tdisplay: inline-flex; align-items: center;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tborder-right: 1px solid var(--border);\n}\n.segmented label:last-of-type { border-right: 0; }\n.segmented input:checked + label { background: var(--muted); color: var(--foreground); }\n.segmented input:focus-visible + label { outline: 2px solid var(--ring); outline-offset: -2px; }\n\n/* ---- slider: jQuery UI's, skinned ------------------------------------ */\n.slider-wrap { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 14rem; }\n.slider-pair { flex-direction: column; align-items: stretch; gap: var(--space-1); }\n.slider-pair > span { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); color: var(--muted-foreground); }\n.slider-wrap .ui-slider { flex: 1 1 auto; height: 4px; border: 0; background: var(--input); border-radius: 999px; margin: 0; }\n.slider-wrap .ui-slider .ui-slider-handle {\n\ttop: -6px; width: 16px; height: 16px; margin-left: -8px;\n\tborder-radius: 50%; border: 0; background: var(--foreground); cursor: pointer;\n}\n.slider-wrap .ui-slider .ui-slider-handle:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n.slider-value { min-width: 2.5em; text-align: right; font-variant-numeric: tabular-nums; color: var(--muted-foreground); font-size: var(--fs-sm); }\n#dialog-options div.ui-slider { width: auto; }\n\n/* ---- statistics ------------------------------------------------------ */\n.stats { display: grid; grid-template-columns: 1fr auto; gap: var(--space-2) var(--space-4); margin: 0; }\n.stats dt { color: var(--muted-foreground); }\n.stats dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n ADD SIGNATURE: THE WORMHOLE HALF IS A SECOND STEP, NOT A REVEAL\n ========================================================================= */\n#dialog-signature #wormhole { margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px solid var(--border); }\n#dialog-signature #wormhole::before {\n\tcontent: \"Wormhole\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature #wormhole > hr { display: none; }\n#dialog-signature #wormhole .side + .side { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px dashed var(--border); }\n#dialog-signature #wormhole .side + .side::before {\n\tcontent: \"Other side\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- characters on the Account tab ------------------------------------ */\n#characters { display: flex; flex-direction: column; gap: var(--space-2); width: 100%; margin-top: var(--space-2); }\n.char-row {\n\tdisplay: flex; align-items: center; gap: var(--space-3);\n\tpadding: var(--space-2) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: var(--card);\n}\n.char-row.is-active { border-color: color-mix(in oklab, var(--primary) 55%, var(--border)); }\n.char-portrait { width: 40px; height: 40px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; flex: 0 0 auto; }\n.char-meta { flex: 1 1 auto; min-width: 0; }\n.char-name { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--foreground); letter-spacing: .04em; }\n.char-note { font-size: var(--fs-xs); color: var(--muted-foreground); margin-top: 2px; }\n.char-actions { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; }\n.char-btn {\n\theight: var(--control-dense); padding: 0 var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: transparent; color: var(--foreground); font-size: var(--fs-sm);\n}\n.char-btn:hover { background: var(--muted); border-color: var(--border-strong); }\n.char-btn.is-destructive { border-color: transparent; color: var(--muted-foreground); }\n.char-btn.is-destructive:hover { border-color: var(--destructive); color: var(--destructive); background: transparent; }\n.char-badge {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--primary); padding: 0 var(--space-2);\n}\n.field-actions input.is-primary { background: var(--primary); border-color: var(--primary); color: var(--primary-foreground); margin-right: auto; }\n.field-actions input.is-primary:hover { background: color-mix(in oklab, var(--primary) 85%, white); border-color: transparent; color: var(--primary-foreground); }\n\n/* ---- panels on the Display tab ---------------------------------------- */\n#panel-settings { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; margin-top: var(--space-2); }\n.panel-row {\n\tdisplay: flex; align-items: center; justify-content: space-between; gap: var(--space-3);\n\tpadding: var(--space-1) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card);\n\tmin-height: var(--control-standard);\n}\n.panel-row-name { color: var(--foreground); }\n.panel-row-actions { display: flex; align-items: center; gap: var(--space-2); }\n.panel-row-actions .char-btn { padding: 0 var(--space-2); font-size: 10px; }\n.panel-row-actions .char-btn[disabled] { opacity: .3; pointer-events: none; }\n","/* ============================================================================\n PANEL BARS WITH WORDS ON THEM\n\n Twenty-five unlabelled icons across four bars, sixty-eight hover tooltips\n to explain them. Hover does not exist on a tablet, which is the device\n this branch was meant to make editing work on.\n\n Primary actions get a word. Secondary actions stay as icons but sit in a\n right-hand group with a real gap, and state toggles (hot, higgs) show\n their state. The elements are the same tags the JavaScript has always\n bound to; only a class and a label span were added, so nothing rebinds.\n ========================================================================= */\n\n.gridWidget > .controls { gap: var(--space-1); }\n\n.controls .bar-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\theight: var(--control-dense);\n\tpadding: 0 10px;\n\tmargin: 0;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tfont-style: normal;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tline-height: 1;\n\tcolor: var(--foreground);\n\tcursor: pointer;\n\twhite-space: nowrap;\n\ttransition: background-color .12s ease, border-color .12s ease;\n}\n.controls .bar-btn::before { font-size: var(--icon); }\n.controls .bar-btn:hover { background: var(--muted); border-color: var(--border); color: var(--foreground); }\n.controls .bar-btn.bar-icon { padding: 0 6px; }\n.controls .bar-btn.bar-icon:not([data-icon]) { font-weight: 600; }\n\n.controls .bar-btn.bar-primary { background: var(--primary); color: var(--primary-foreground); }\n.controls .bar-btn.bar-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: transparent;\n\tcolor: var(--primary-foreground);\n}\n\n.controls .bar-btn.disabled { opacity: .4; pointer-events: none; }\n\n/* A toggle that is on says so with the accent, not by hover. */\n.controls .bar-btn.bar-toggle.active,\n.controls .bar-btn.bar-toggle.on,\n.controls .bar-btn.bar-toggle[data-active=\"true\"] { color: var(--primary); background: color-mix(in oklab, var(--primary) 14%, transparent); }\n\n.controls .bar-btn kbd {\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: 1px 4px;\n\tline-height: 1;\n}\n\n.controls .bar-sep { width: 1px; height: 16px; background: var(--border); margin: 0 var(--space-1); }\n\n.gridWidget > .controls > .bar-right {\n\tmargin-left: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tfloat: none;\n}\n/* The hide control sits after the right group. */\n.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: 0; }\n\n/* The signature count belongs with the title, as a chip. */\n.controls .bar-count {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 18px;\n\tpadding: 0 7px;\n\tmargin-right: var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--muted-foreground);\n\tfont-style: normal;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tfont-variant-numeric: tabular-nums;\n\tcursor: default;\n}\n\n/* Labels give way before icons do. */\n@media (max-width: 1439px) {\n\t#signaturesWidget .bar-btn:not(.bar-primary) .bar-label,\n\t#infoWidget .bar-btn .bar-label { display: none; }\n\t#signaturesWidget .bar-btn:not(.bar-primary):not(.bar-icon) { padding: 0 6px; }\n}\n\n/* The bar inherits the panel title's uppercase and letter-spacing; a button\n label is a word, not a heading. And a bar button is its own width -- the\n notes bar was stretching \"Add note\" across the whole panel because the\n bar's children default to flex: 1 there. */\n.controls .bar-btn { text-transform: none; letter-spacing: 0; flex: 0 0 auto; }\n.controls .bar-btn kbd { border-radius: var(--radius-sm); }\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) { border-radius: var(--radius-sm); }\n/* The label span inherits the bar's uppercase from a more specific rule than\n .bar-btn can beat; set it on the span itself. */\n.gridWidget > .controls .bar-btn > .bar-label { text-transform: none; letter-spacing: 0; font-size: var(--fs-sm); }\n/* The label takes the button's colour, whatever rule the bar had for spans. */\n.gridWidget > .controls .bar-btn > .bar-label { color: inherit; -webkit-text-fill-color: currentColor; }\n/* .bar-btn's display was beating .hidden's; a hidden button is hidden. */\n.controls .bar-btn.hidden { display: none !important; }\n","/* ============================================================================\n CHAIN NODES AS CARDS\n\n A node was a class label, a name and a row of four-pixel dots, floating on\n the canvas with a thin border. The map is the product and it was the least\n designed surface on the screen: nothing said a node was a thing you could\n drag, collapse or open, and at a big corp's density -- sixteen screen widths\n of systems -- small unbounded labels become a wall of text.\n\n A card: fixed width, a definite ground, the security class as a chip in\n the corner rather than a heading, statics as chips inside the card rather\n than tabs hanging below it, activity pips in the footer. The markup in\n chain-map.js is untouched; the renderer measures nothing from the DOM for\n its ring maths (minArc comes from the data), so a slightly larger node\n only needs the spacing factor to breathe, which is a setting.\n ========================================================================= */\n\n#chainMap div.node {\n\tbox-sizing: border-box;\n\twidth: 128px;\n\tmin-height: 56px;\n\tpadding: 6px 8px 8px;\n\tborder-radius: var(--radius);\n\tborder: 1px solid var(--border);\n\tbackground-color: var(--card);\n\ttext-align: left;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tcursor: grab;\n}\n#chainMap div.node:active { cursor: grabbing; }\n\n/* Class chip, top-left. The h4 was a heading; it is a label. */\n#chainMap div.node > h4.nodeClass {\n\torder: 1;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .04em;\n\tline-height: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n#chainMap div.node > h4.nodeClass > span {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 16px;\n\tpadding: 0 6px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: var(--card);\n\tcolor: inherit;\n}\n\n/* System name, the reading line. */\n#chainMap div.node > h4.nodeSystem {\n\torder: 2;\n\tmargin: 0;\n\tfont-size: var(--fs-base);\n\tfont-weight: 600;\n\tline-height: 1.2;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground); text-decoration: none; }\n#chainMap div.node > h4.nodeSystem a:hover { color: var(--primary); }\n\n/* Wormhole type / signature, quiet. */\n#chainMap div.node > h4.nodeType {\n\torder: 3;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\ttext-transform: none;\n\tletter-spacing: 0;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmin-height: 1em;\n}\n\n/* Statics: inside the card as chips, not tabs hanging off the bottom. */\n#chainMap div.node > .statics {\n\torder: 4;\n\tposition: static;\n\tdisplay: flex;\n\tgap: 3px;\n\tmargin-top: 2px;\n\tmin-height: 0;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: auto;\n\tmin-width: 16px;\n\theight: 14px;\n\tpadding: 0 4px;\n\tmargin: 0;\n\tborder: 0;\n\tborder-radius: 3px;\n\tbackground: color-mix(in oklab, currentColor 22%, transparent);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tline-height: 1;\n}\n#chainMap div.node > .statics .multi-static { color: var(--muted-foreground); }\n\n/* Activity pips: footer, right. */\n#chainMap div.node > .nodeActivity {\n\torder: 5;\n\tposition: absolute;\n\tright: 8px;\n\tbottom: 6px;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 3px;\n\tfont-size: 9px;\n\tline-height: 1;\n}\n#chainMap div.node > .nodeActivity .invisible { display: none; }\n\n/* Effect / occupant icons: top-right. */\n#chainMap div.node > .nodeIcons {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 6px;\n\tleft: auto;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 4px;\n\tfont-size: var(--fs-xs);\n}\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; gap: 4px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge {\n\tdisplay: inline-flex; align-items: center;\n\theight: 14px; padding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: var(--primary); color: var(--primary-foreground);\n\tfont-size: 10px; font-weight: 700;\n}\n\n/* The one you are in stays unmistakable; the class tint stays as a ground. */\n#chainMap .currentNode > div.node { box-shadow: 0 0 0 2px var(--primary); border-color: var(--primary); }\n#chainMap div.node:hover { border-color: var(--border-strong); box-shadow: 0 2px 10px rgba(0,0,0,.35); }\n\n/* Collapsed / loop nodes keep the card shape at a reduced height. */\n#chainMap div.loop { width: 128px; min-height: 0; padding: 6px 8px; border-radius: var(--radius); }\n/* The name link was still taking a fixed grey from a more specific legacy\n rule (measured oklch(0.8 0 0) in both themes -- invisible on a white card). */\n#chainMap div.node > h4.nodeSystem,\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground) !important; }\n\n/* The base stylesheet gives div.node a fixed height. As a flex column that\n meant every child shrank to fit -- measured: the name heading at 3px with\n overflow hidden around a 19px link, which rendered as a dark smudge where\n the system name should be. The card takes the height of its contents and\n nothing inside it shrinks. */\n#chainMap div.node { height: auto !important; max-height: none !important; }\n#chainMap div.node > * { flex: 0 0 auto; }\n#chainMap div.node > h4.nodeSystem { height: auto; line-height: 1.25; }\n\n/* ============================================================================\n RAISED CARDS, CAPSULE STATICS\n\n The card ground was the same value as the panel behind it -- var(--card)\n on a panel that is var(--card) at 88% -- so a node read as a faint outline\n on the dark canvas rather than a thing sitting on it. The card is now a\n raised surface a clear step lighter than the canvas, with a stronger edge.\n\n Statics were tiny half-tab glyphs hanging under the node. They are the\n information you scan a chain for, so they become filled capsules in the\n security colour, straddling the card's bottom edge -- half on the card,\n half below it -- with a ring in the card colour so they read as cut into\n the edge rather than stuck on it.\n ========================================================================= */\n\n:root {\n\t--node-surface: color-mix(in oklab, var(--card) 82%, var(--foreground) 18%);\n\t--node-edge: color-mix(in oklab, var(--border-strong) 70%, var(--foreground) 30%);\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--node-surface: oklch(1 0 0);\n\t\t--node-edge: oklch(0.78 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--node-surface: oklch(1 0 0);\n\t--node-edge: oklch(0.78 0.006 80);\n}\n\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node {\n\tbackground-color: var(--node-surface);\n\tborder-color: var(--node-edge);\n\tbox-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 4px 14px rgba(0,0,0,.45);\n\toverflow: visible;\n\tpadding-bottom: 12px; /* room above the straddling capsules */\n\tmargin-bottom: 8px; /* room below them before the next ring */\n}\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 18%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 18%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 18%, var(--node-surface)); }\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 16%, var(--node-surface));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 2px var(--primary), 0 4px 14px rgba(0,0,0,.45);\n}\n\n/* Capsules on the edge. */\n#chainMap div.node > .statics {\n\tposition: absolute;\n\tleft: 8px;\n\tright: 8px;\n\tbottom: 0;\n\ttransform: translateY(50%);\n\tmargin: 0;\n\tgap: 4px;\n\tz-index: 2;\n\tpointer-events: auto;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\theight: 18px;\n\tmin-width: 22px;\n\tpadding: 0 7px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: #fff;\n\tbox-shadow: 0 0 0 2px var(--node-surface);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n#chainMap div.node > .statics .multi-static { background: var(--muted-foreground); }\n\n/* Pips move up beside the name so they never sit under a capsule. */\n#chainMap div.node > .nodeActivity { top: 26px; right: 8px; bottom: auto; }\n#chainMap div.node > h4.nodeSystem { padding-right: 38px; }\n/* \"Dark Venture\" was ellipsising: 128px minus padding minus the 38px held\n for the activity pips left ~70px for the name. A little wider, and the\n pips reserve only what two dots need. */\n#chainMap div.node, #chainMap div.loop { width: 144px; }\n#chainMap div.node > h4.nodeSystem { padding-right: 26px; }\n#chainMap div.node > .nodeActivity { top: 27px; right: 8px; gap: 3px; }\n\n/* Height budget. Three systems in a straight line filled the chain panel and\n forced a scrollbar at 900px tall; a card is two lines and a chip row, and\n should cost about 60px, not 90. */\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node { padding: 5px 8px 9px; min-height: 0; gap: 1px; margin-bottom: 6px; }\n#chainMap div.node > h4.nodeSystem { line-height: 1.15; }\n#chainMap div.node > h4.nodeType:empty, #chainMap div.node > h4.nodeType { min-height: 0; }\n#chainMap div.node > h4.nodeClass > span { height: 15px; }\n#chainMap div.node > .nodeActivity { top: 24px; }\n","/* ============================================================================\n INLINE LIFE / MASS\n The two cells read as editable on approach, and the chooser is the same\n surface as the palette: popover ground, one radius, filled chips in the\n data colours the rest of the app uses for these states.\n ========================================================================= */\n\n#sigTable td.inline-editable { cursor: pointer; position: relative; }\n#sigTable td.inline-editable:hover { color: var(--foreground); text-decoration: underline dotted; text-underline-offset: 3px; }\n#sigTable td.inline-editable.is-saving { opacity: .5; pointer-events: none; }\n\n#inline-edit {\n\tposition: fixed;\n\tz-index: 1200;\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tpadding: var(--space-1);\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 12px 32px rgba(0,0,0,.4);\n}\n#inline-edit .inline-chip {\n\theight: var(--control-dense);\n\tpadding: 0 var(--space-3);\n\tborder-radius: 999px;\n\tborder: 1px solid var(--border);\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tcursor: pointer;\n}\n#inline-edit .inline-chip:hover { background: var(--muted); border-color: var(--border-strong); }\n#inline-edit .inline-chip[aria-selected=\"true\"].stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n#inline-edit .inline-chip:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n@media (pointer: coarse) {\n\t#inline-edit .inline-chip { min-height: 44px; padding: 0 var(--space-4); }\n}\n","/* ============================================================================\n TWO TYPE ROLES\n\n Montserrat was chosen as the brand face and is right for that: geometric,\n round, of a piece with the wing mark. It was then used for every table\n cell, label and chip -- and it is a wide face with a large x-height, which\n at 11-13px in a three-column layout of \"GHJ-456\", \"23:26\", \"Class-3\" costs\n the width budget and reads soft. The signature-id column having to fall\n back to a monospace to stay aligned was the symptom.\n\n Display stays Montserrat. Everything read as data is IBM Plex Sans:\n narrower set, tabular figures, a technical character that suits a mapping\n tool, and a grotesque that sits cleanly under a geometric display face.\n Ids move to Plex Mono so the family holds.\n\n Same selector list as the rule in _override-b-fixes.css that forced one\n family everywhere; this file sorts after it, so equal specificity wins.\n ========================================================================= */\n\n:root {\n\t--font-ui: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-display: 'Montserrat', 'IBM Plex Sans', system-ui, sans-serif;\n\t--font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n}\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li,\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: var(--font-ui);\n\tfont-variant-numeric: tabular-nums;\n}\n\n/* ---- brand surfaces keep the display face ---------------------------- */\n#topbar #logo, #topbar #logo a,\n.panel-title,\n.ui-dialog .ui-dialog-title,\n.sys-panel .sys-name,\n#cmd-palette .cmd-title,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label {\n\tfont-family: var(--font-display);\n}\n\n/* ---- data ids in the mono of the same family --------------------------- */\n#sigTable td:nth-child(1),\n#chainMap div.node > h4.nodeType,\nkbd {\n\tfont-family: var(--font-mono);\n\tletter-spacing: 0;\n}\n\n/* Plex sits a touch smaller on the body than Montserrat did at the same\n size; the base step comes up one pixel so line lengths, not legibility,\n are what change. */\n:root { --fs-base: 13px; --fs-sm: 12px; }\n","/* ============================================================================\n Base theme.\n\n Overrides token VALUES from _tokens.css -- it does not restyle components,\n so it stays out of the way of upstream merges. The values here are the\n built-in defaults; a brand pack (brand.inc.php) overrides them at runtime.\n\n Two notes on scope:\n\n - The neutral ramp is re-pointed at a warmer grey ramp. Tripwire's original\n palette has no accent token -- every emphasis was just a lighter grey --\n so the accent cannot be placed by re-pointing alone. The short accent\n block at the bottom introduces it at the few sites that carry identity.\n - --data-* is deliberately untouched. Wormhole class, mass band and\n security colours encode meaning, and repainting them to fit a brand would\n make the map lie.\n ========================================================================= */\n\n:root {\n /* -- accent constants, used by the accent rules below ------------------- */\n --accent: #f07c00;\n --accent-dim: rgba(240, 124, 0, .18);\n --brand-gray: #adadad;\n --brand-gray-dark: #4d4d4d;\n\n /* -- ops floor: neutral ramp re-pointed at the brand greys -------------\n Ordering and relative contrast follow the original ramp, so component\n styling keeps working; only the values move. */\n --n-000: #000000;\n --n-020: #101010;\n --n-050: #1b1b1b; /* page ground */\n --n-100: #232323; /* raised panel */\n --n-120: #2a2a2a; /* second surface */\n --n-200: #303030; /* hairlines */\n --n-220: #3a3a3a;\n --n-250: #444444;\n --n-300: #4d4d4d; /* rules/borders (brand dark gray) */\n --n-400: #5a5a5a;\n --n-500: #6b6b6b;\n --n-550: #7d7d7d;\n --n-560: #838383;\n --n-600: #8c8c8c; /* secondary text */\n --n-650: #9a9a9a;\n --n-700: #a3a3a3;\n --n-750: #adadad; /* brand gray */\n --n-800: #c4c4c4; /* primary body text */\n --n-850: #d2d2d2;\n --n-870: #dedede;\n --n-880: #e4e4e4;\n --n-900: #ebebeb;\n --n-920: #f0f0f0;\n --n-940: #f5f5f5;\n --n-960: #f8f8f8;\n --n-999: #f2f2f2; /* emphasis text */\n}\n\n/* Front office. The brand orange is identical in both themes by rule, so only\n the neutral grounds swap. Mirrors the structure in _tokens.css: the media\n query is guarded so an explicit dark choice still wins. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9; /* page ground */\n --n-100: #f5f5f5; /* raised panel */\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad; /* rules -- brand gray */\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f; /* pushed past a straight inversion: the mid-ramp is\n where naive flipping leaves text at ~4.5:1 */\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d; /* brand dark gray */\n --n-750: #444444;\n --n-800: #333333; /* primary body text */\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f; /* emphasis text */\n }\n}\n:root[data-theme=\"light\"] {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9;\n --n-100: #f5f5f5;\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad;\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f;\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f;\n}\n\n/* ============================================================================\n Accent placement.\n\n Deliberately short. The orange marks identity and current state -- the\n wordmark, what is selected, what has focus -- and nothing else. Data keeps\n its own colours.\n ========================================================================= */\n\n/* The wordmark carries the brand; the version chip stays quiet beside it.\n The Wing Icon is set as a ::before rather than edited into tripwire.php, so\n the template stays untouched and this whole theme remains one deletable\n file. Brand guidelines allow the standalone Wing Icon to form new lockups;\n the full lockup may not be modified, so it is not used here. */\n#topbar #logo a {\n color: var(--accent);\n letter-spacing: .01em;\n}\n\n\n/* Front office uses the dark lockup, not the orange one -- which the brand\n guidelines call for, and which also fixes the contrast: #F07C00 on a light\n topbar measures 2.77:1. Orange stays the accent for state, not the mark. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) #topbar #logo a { color: var(--n-999); }\n}\n:root[data-theme=\"light\"] #topbar #logo a { color: var(--n-999); }\n\n/* Active/selected state, previously just a lighter grey. */\n#topbar i.active,\n#topbar a.active {\n color: var(--accent);\n}\n\n/* Keyboard focus. Track 2 adds a keyboard layer, so a visible, branded focus\n ring is about to matter a great deal more than it does today. */\n:focus-visible {\n outline: 2px solid var(--accent);\n outline-offset: 1px;\n}\n\n/* Selected signature rows read as \"this is what you are acting on\". */\n#sigTable tbody tr.selected td {\n background: var(--accent-dim);\n}\n\n/* ============================================================================\n Background.\n\n Overridden here rather than in tripwire.css so upstream's default survives a\n rebase. The source is 21:9; under the existing `cover` + `center` a 16:9\n viewport trims the sides, which keeps the ship and loses the brightest edge\n of the nebula -- the framing this was chosen for.\n ========================================================================= */\n\n\n/* Read band: the background is decorative at phone width, so serve 79KB\n instead of 460KB. */\n}\n","/* ============================================================================\n THE PALETTE (default)\n\n The refit palette,\n adopted as Tripwire's default after a side-by-side on the preview. A warm\n charcoal scale that was chosen rather than inherited; two surfaces and one\n rule colour; bone text with dim as the subordinate weight (4.5:1 on both\n surfaces); blood for danger; sage / rust-bright / blood / void for hisec /\n lowsec / nullsec / J-space -- the EVE convention in a muted register, so\n the map's security colours are information rather than the loudest thing\n on the screen.\n\n What stays constant: the mark, the wordmark, and one\n accent -- the primary action, the ring, links. One discipline under a\n corp's flag, not one corp's brand on another's\n tool. Security chips stay filled with white text; that is the house rule.\n\n Type: Geist for text, Geist Mono for labels, ids and stats. The label is\n the signature -- 10px, uppercase, wide-tracked, dim -- and it is applied\n to every panel title, table header and footer label uniformly.\n\n Light theme is a print palette: paper, not white.\n ========================================================================= */\n\n/* ── THE DECK ──────────────────────────────────────────────────────────\n Grounds and neutrals from the house letterhead palette,\n a neutral charcoal ramp:\n brand grey #ADADAD for body text, brand dark grey #4D4D4D for rules,\n orange as the one accent. This puts Tripwire on the same deck as\n the letterhead -- same labels, same accent -- rather than on\n a warm ink.\n\n Data colours deliberately do NOT take the brand callouts. #57DB57 green\n and #0073F0 blue are display colours for a few words on a log line;\n a map paints them on a hundred chips at once and they shout (measured\n and rejected earlier on this branch). Sage / void / a desaturated warn\n stay, with the danger red. */\n:root {\n\t--background: #1b1b1b;\n\t--foreground: #f2f2f2; /* bone: headings, names, values */\n\t--card: #232323;\n\t--card-foreground: #f2f2f2;\n\t--popover: #2a2a2a;\n\t--popover-foreground: #f2f2f2;\n\t--muted: #2a2a2a;\n\t--muted-foreground: #8c8c8c; /* dim: labels, secondary */\n\t--text-body: #adadad; /* fog: brand grey, running text */\n\t--accent-surface: #2a2a2a;\n\t--border: #4d4d4d; /* brand dark grey */\n\t--border-soft: #303030;\n\t--border-strong: #5a5a5a;\n\t--input: #303030;\n\t--glow: #242424;\n\n\t--primary: var(--accent, #f07c00);\n\t--primary-foreground: #1b1b1b;\n\t--ring: var(--accent, #f07c00);\n\t--destructive: #e05252;\n\n\t--data-good: #7d9b76; /* hisec, stable */\n\t--data-warn: #d9a441; /* lowsec, destab -- desaturated brand yellow */\n\t--data-critical: #e05252; /* nullsec, critical, EOL */\n\t--data-info: #8b7aa8; /* J-space, jumps */\n\n\t--node-surface: #2a2a2a;\n\t--node-edge: #5a5a5a;\n\n\t--chart-gridline: rgba(242, 242, 242, .06);\n\t--chart-axis-text: #adadad;\n\n\t--font-ui: 'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace;\n\t--font-display: 'Montserrat', 'Geist', system-ui, sans-serif;\n}\n\n/* The front office: the light theme. Same brand hexes, light\n neutral grounds, dark grey ink. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: #e9e9e9;\n\t\t--foreground: #1f1f1f;\n\t\t--card: #f5f5f5;\n\t\t--card-foreground: #1f1f1f;\n\t\t--popover: #fdfdfd;\n\t\t--popover-foreground: #1f1f1f;\n\t\t--muted: #e4e4e4;\n\t\t--muted-foreground: #767676;\n\t\t--text-body: #4d4d4d;\n\t\t--accent-surface: #e4e4e4;\n\t\t--border: #adadad;\n\t\t--border-soft: #d8d8d8;\n\t\t--border-strong: #8c8c8c;\n\t\t--input: #e4e4e4;\n\t\t--glow: #ffffff;\n\t\t--primary-foreground: #ffffff;\n\t\t--destructive: #b03a3a;\n\t\t--data-good: #4c6a45;\n\t\t--data-warn: #9a6d12;\n\t\t--data-critical: #b03a3a;\n\t\t--data-info: #5d4f78;\n\t\t--node-surface: #fdfdfd;\n\t\t--node-edge: #adadad;\n\t\t--chart-gridline: rgba(31, 31, 31, .08);\n\t\t--chart-axis-text: #4d4d4d;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: #e9e9e9;\n\t--foreground: #1f1f1f;\n\t--card: #f5f5f5;\n\t--card-foreground: #1f1f1f;\n\t--popover: #fdfdfd;\n\t--popover-foreground: #1f1f1f;\n\t--muted: #e4e4e4;\n\t--muted-foreground: #767676;\n\t--text-body: #4d4d4d;\n\t--accent-surface: #e4e4e4;\n\t--border: #adadad;\n\t--border-soft: #d8d8d8;\n\t--border-strong: #8c8c8c;\n\t--input: #e4e4e4;\n\t--glow: #ffffff;\n\t--primary-foreground: #ffffff;\n\t--destructive: #b03a3a;\n\t--data-good: #4c6a45;\n\t--data-warn: #9a6d12;\n\t--data-critical: #b03a3a;\n\t--data-info: #5d4f78;\n\t--node-surface: #fdfdfd;\n\t--node-edge: #adadad;\n\t--chart-gridline: rgba(31, 31, 31, .08);\n\t--chart-axis-text: #4d4d4d;\n}\n\n/* Flat ink. The ship stays on the landing page, where it is a brand\n moment; behind three columns of data it was competition. */\n#wrapper::before { background: radial-gradient(ellipse at 30% -20%, var(--glow) 0%, var(--background) 60%); }\nbody { background-image: none; }\n\n/* Running text in the brand grey; names, values and headings in bone. */\n#sigTable td, .commentBody, .sys-meta, .sys-extra, .field-label, .ui-dialog .ui-dialog-content { color: var(--text-body); }\n#sigTable td:nth-child(1), .sys-name, .field-value, #chainMap div.node > h4.nodeSystem, .stats dd { color: var(--foreground); }\n\n/* The label: mono, small, uppercase, tracked, dim. Everywhere it means\n \"this is a label\", so it reads as one system. */\n.panel-title,\n.ui-dialog .ui-dialog-title,\n#sigTable th,\n.gate-list-label,\n.field-group,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label,\n.sys-links a,\n#activityGraphControls > a,\n#cmd-palette .cmd-group,\n.sig-stats {\n\tfont-family: var(--font-mono);\n\tfont-size: 10px;\n\tfont-weight: 500;\n\tletter-spacing: .22em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.sys-links a:hover,\n#activityGraphControls > a:hover,\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] { color: var(--foreground); }\n\n/* Ids, times and counts in the mono. */\n#sigTable td:nth-child(1),\n#sigTable td:nth-child(3),\n#statusbar .bar-value,\n#signature-count,\n.node .nodeType,\nkbd { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }\n\n/* Surfaces: one small radius, a thin rule, and a deep shadow only where\n something floats. */\n.gridWidget { border-radius: 4px; }\n.ui-dialog, #cmd-palette, #inline-edit, #panel-menu {\n\tborder-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0, 0, 0, .5);\n}\n#chainMap div.node, #chainMap div.loop { border-radius: 4px; }\n\n/* Neutral chips flat on panel-2 with a rule; security and state chips keep\n their fill and white text. */\n.sig-chip, h4.chip, .chip, .gate-chip {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: 3px;\n}\n.sig-chip.on { background: var(--muted); border-color: var(--border-strong); color: var(--foreground); }\n\n/* Primary action: orange fill, ink text; brighter on approach. */\n.controls .bar-btn.bar-primary:hover,\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 85%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 85%, white);\n}\n\n::selection { background: var(--primary); color: var(--background); }\n\n/* ── Second look ─────────────────────────────────────────────────────────\n Bar hierarchy: title · primary · everything else. The right-hand group\n sits at the label weight at rest and comes up on approach, so eleven\n controls on a strip read as three things. */\n.gridWidget > .controls > .bar-right .bar-btn,\n.gridWidget > .controls > .bar-right .panel-hide,\n.gridWidget > .controls > .panel-hide,\n#chainWidget > .controls > .bar-btn.bar-icon { color: var(--muted-foreground); }\n.gridWidget > .controls > .bar-right .bar-btn:hover,\n.gridWidget > .controls > .panel-hide:hover,\n#chainWidget > .controls > .bar-btn.bar-icon:hover { color: var(--foreground); }\n.gridWidget > .controls > .bar-right .bar-btn.bar-toggle.active { color: var(--primary); }\n\n/* Range chips had become tiny bordered boxes next to the borderless legend:\n two idioms in one row. They are quiet mono text like the links beneath. */\n#activityGraphControls > a {\n\tborder: 0;\n\tbackground: transparent;\n\tpadding: 0 2px;\n\theight: auto;\n\tcolor: var(--muted-foreground);\n}\n#activityGraphControls > a.active,\n#activityGraphControls > a[aria-current] { color: var(--primary); }\n#activityGraphControls { gap: var(--space-2) var(--space-3); }\n#activityLegend .legend-chip { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-foreground); }\n#activityLegend .legend-chip:hover { color: var(--foreground); }\n#activityLegend .legend-chip.off { opacity: .5; }\n\n/* The graph sits in the panel like a card of its own. */\n#activityGraph { margin: var(--space-2) 0 0; }\n\n/* Sliders: the last control not in the palette. */\n.slider-wrap .ui-slider { background: var(--input); height: 3px; }\n.slider-wrap .ui-slider .ui-slider-handle { background: var(--primary); width: 14px; height: 14px; top: -6px; margin-left: -7px; border: 2px solid var(--popover); box-sizing: border-box; }\n.slider-value { font-family: var(--font-mono); font-size: 11px; color: var(--muted-foreground); }\n.slider-pair > span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }\n\n/* ── The letterhead ──────────────────────────────────────────────────────\n Three zones. Left: the system you are viewing, large, with your own\n location and the search beneath it. Centre: the corp's mark and\n wordmark. Right: you -- a portrait you can actually make out, name and\n mask beside it, then the two tools. The app's own name lives in the\n footer with its version; the header is the corp's. */\n#topbar {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n\talign-items: center;\n\tgap: 16px;\n\tmin-height: 76px;\n\tpadding: 8px 18px;\n\tbackground: linear-gradient(180deg, var(--card), var(--background));\n\tborder-bottom: 1px solid var(--border);\n}\n#topbar > .align-left, #topbar > .align-right, #topbar > .align-center { display: flex; align-items: center; min-width: 0; }\n#topbar > .align-left { justify-content: flex-start; flex-direction: column; align-items: flex-start; gap: 2px; overflow: visible; }\n#topbar > .align-center{ justify-content: center; }\n#topbar > .align-right { justify-content: flex-end; gap: 14px; }\n\n/* Left: the viewed system. */\n.hdr-sys { display: flex; align-items: center; gap: 8px; }\n#hdr-system {\n\tfont-family: var(--font-display);\n\tfont-size: 22px;\n\tfont-weight: 700;\n\tletter-spacing: -.01em;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n#hdr-system:hover { color: var(--primary); }\n#topbar #search { color: var(--muted-foreground); cursor: pointer; }\n#topbar #search:hover { color: var(--foreground); }\n#topbar #systemSearch { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 11px; }\n#topbar #currentSpan { display: inline-flex; align-items: center; gap: 6px; }\n#topbar #currentSpan .bar-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted-foreground); }\n#topbar #EVEsystem { font-family: var(--font-mono); font-size: 11px; color: var(--text-body); }\n#topbar #follow { color: var(--muted-foreground); }\n/* On is orange. The line above outranked the legacy .active colour, so the\n toggle worked and looked like it had not. */\n#topbar #follow.active { color: var(--primary); }\n#topbar #follow:hover { color: var(--foreground); }\n#topbar #follow.active:hover { color: var(--primary); }\n#topbar #searchSpan input {\n\tfont-family: var(--font-mono); font-size: 11px;\n\tmin-height: 24px; padding: 0 8px; max-width: 12rem;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px; color: var(--foreground);\n}\n\n/* Centre: the mark. Two files, one per theme. */\n#topbar #logo { display: block; line-height: 0; }\n#topbar #logo img { height: 46px; width: auto; display: block; }\n#topbar #logo a::before, #topbar #logo::before { content: none !important; }\n#topbar #logo .logo-light { display: none; }\n@media (prefers-color-scheme: light) { :root:not([data-theme=\"dark\"]) #topbar #logo .logo-dark { display: none; } :root:not([data-theme=\"dark\"]) #topbar #logo .logo-light { display: block; } }\n:root[data-theme=\"light\"] #topbar #logo .logo-dark { display: none; }\n:root[data-theme=\"light\"] #topbar #logo .logo-light { display: block; }\n\n/* Right: you. */\n#topbar #login h3 { margin: 0; }\n#topbar #login h3 > a#user { display: flex; align-items: center; gap: 10px; text-decoration: none; }\n#topbar #user-avatar.avatar {\n\twidth: 44px; height: 44px; border-radius: 4px;\n\tborder: 1px solid var(--border); object-fit: cover; display: block;\n}\n#topbar .hdr-pilot { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; line-height: 1.15; }\n#topbar #user-no-track, #topbar #user-track-name { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; color: var(--foreground); }\n#topbar #user-track { display: inline-flex; align-items: center; gap: 4px; }\n#topbar .hdr-mask, #topbar .hdr-mask a, #topbar #mask {\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); text-decoration: none;\n}\n#topbar .hdr-mask a:hover, #topbar .hdr-mask a:hover #mask { color: var(--foreground); }\n#topbar .hdr-tools { display: flex; align-items: center; gap: 4px; margin-left: 4px; padding-left: 14px; border-left: 1px solid var(--border-soft); }\n#topbar .hdr-tools i { color: var(--muted-foreground); cursor: pointer; }\n#topbar .hdr-tools i:hover { color: var(--foreground); }\n#topbar .hdr-tools [data-icon]::before { font-size: 18px; }\n\n/* The mask menu anchors to the letterhead, not to a pixel offset. */\n#topbar #mask-menu { top: 64px; right: 18px; }\n\n/* Panel heads: a band under the title. */\n.gridWidget > .controls {\n\tbackground: linear-gradient(180deg, var(--popover), var(--card));\n\tborder-bottom: 1px solid var(--border);\n}\n.gridWidget, #chainMap div.node, .ui-dialog { border-radius: 3px; }\n.gridWidget { border: 1px solid var(--border); }\n\n/* Hairlines inside content take the soft rule. */\n#sigTable tbody tr, .comment { border-color: var(--border-soft); }\n\n/* ── The letterhead on a phone ───────────────────────────────────────────\n This file sorts after _override-d-phone.css, so the phone header has to\n be written here or the grid above wins. One row: system name, portrait,\n tools. The mark and the location line are desktop and tablet things. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 10px;\n\t\tmin-height: 0;\n\t\tpadding: 8px 12px;\n\t}\n\t#topbar > .align-center { display: none; }\n\t#topbar > .align-left { flex: 1 1 auto; flex-direction: column; align-items: flex-start; }\n\t#topbar #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-right { flex: 0 0 auto; width: auto; justify-content: flex-end; gap: 8px; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar .hdr-tools { margin-left: 0; padding-left: 8px; }\n\t#topbar #mask-menu { top: 52px; right: 12px; }\n}\n\n/* ── The tracking dropdown ────────────────────────────────────────────────\n account.css collapses every .avatar inside it to 1px -- a legacy trick\n from when the portrait was painted some other way -- which is why the\n character rows showed a name and no face. Portraits at a size a face\n survives, and the dropdown on the same surfaces as everything else. */\n#login #content .tracking-clone td.avatar img.avatar { width: 36px; height: 36px; border-radius: 3px; border: 1px solid var(--border); }\n#login #content #account #avatar img.avatar-lg { width: 56px; height: 56px; border-radius: 4px; border: 1px solid var(--border); }\n#login #content.dialog-like {\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0,0,0,.5); padding: var(--space-2);\n}\n#login #content .triangle { display: none; }\n#login #logoutTable tbody th {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .22em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); background: transparent; border-bottom: 1px solid var(--border); text-align: left; padding: 4px 6px;\n}\n#login #content #track { border-right: 1px solid var(--border-soft); }\n#login #content #track .tracking-clone { border: 1px solid var(--border); border-radius: 3px; opacity: .7; }\n#login #content #track .tracking-clone.active { border-color: var(--primary); opacity: 1; }\n#login #content #track .tracking-clone:hover { border-color: var(--border-strong); opacity: 1; }\n#login #content table .text { color: var(--text-body); }\n#login #content table td.name.text { color: var(--foreground); }\n\n/* ── The mask as a capsule ────────────────────────────────────────────────\n Was a star glyph and the word \"Corp\" run together. A capsule: a source\n dot -- orange for corporate, void for alliance, sage for personal, dim for\n global -- and the label in the label register. */\n#topbar #mask-menu-link { display: inline-block; }\n#topbar #mask .mask {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 18px; padding: 0 8px 0 7px;\n\tborder: 1px solid var(--border); border-radius: 999px;\n\tbackground: var(--popover);\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #mask-menu-link:hover .mask { border-color: var(--border-strong); color: var(--foreground); }\n#topbar #mask .mask i[data-icon] { width: 7px; height: 7px; border-radius: 50%; background: var(--muted-foreground); display: inline-block; }\n#topbar #mask .mask i[data-icon]::before { content: none; }\n#topbar #mask .mask i.corporate { background: var(--primary); }\n#topbar #mask .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.character { background: var(--data-good); }\n#topbar #mask .mask i.global { background: var(--muted-foreground); }\n\n/* ── The mark, larger, riding the letterhead's edge ──────────────────────\n At 46px the wordmark read as a label. It is the letterhead; it gets the\n height, and it hangs a little over the hairline into the gap above the\n panels so the header reads as a plate the mark is mounted on rather than\n a strip the mark is squeezed into. The panel area gives back the room. */\n@media (min-width: 768px) and (min-height: 600px) {\n\t/* The header keeps its height; the mark is taller than the header and\n\t hangs 14px past the hairline into the gap the panel area gives back. */\n\t#topbar { overflow: visible; height: 64px; min-height: 64px; padding-top: 0; padding-bottom: 0; }\n\t#topbar > .align-center { align-self: flex-start; position: relative; z-index: 3; }\n\t/* A pack may ask for a taller mark (logo.height); a round seal wants a\n\t little more than a wide wordmark. It rides the bar's bottom edge. */\n\t#topbar #logo img { height: 64px; margin-top: 0; filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .55)); }\n\t.gridster { padding-top: 10px; }\n}\n\n/* Below the desktop breakpoint the legacy stylesheet fixes the header to the\n viewport and nothing offsets the content, so the panels started at y=20\n underneath it (measured at 1100x700). The tablet page scrolls; the header\n stays in flow and sticks to the top as it goes. */\n@media (max-width: 1279px) {\n\t#topbar { position: sticky; top: 0; z-index: 30; }\n}\n\n/* ── \"Following you\" ─────────────────────────────────────────────────────\n Clicking the tab that is already selected deselects it, and with no tab\n selected the map roots at whichever system you are viewing. That is a\n mode, and it was invisible: the strip just showed no tab highlighted and\n the map \"kept jumping\". Name it. */\n#chainTabs:not(:has(.tab.current))::before {\n\tcontent: \"Following you\";\n\tdisplay: inline-flex; align-items: center;\n\theight: 20px; padding: 0 8px; margin-right: 6px;\n\tborder: 1px solid color-mix(in oklab, var(--primary) 55%, var(--border));\n\tborder-radius: 999px;\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--primary);\n}\n\n/* ── The top row takes what the System panel needs ─────────────────────\n system-fit.js sets --top-row when the panel cannot hold the graph at its\n floor; otherwise the row is the 46vh the layout chose. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 46vh)) 1fr; }\n}\n\n/* ── The room lights: sun and moon on the letterhead ─────────────────── */\n#topbar .hdr-tools .themebtn {\n\tbackground: none; border: 1px solid var(--border); border-radius: 3px; cursor: pointer;\n\tcolor: var(--muted-foreground); font-size: 14px; line-height: 1; padding: 4px 8px;\n\theight: 26px; display: inline-flex; align-items: center; flex: 0 0 auto;\n\tfont-family: var(--font-ui);\n}\n#topbar .hdr-tools .themebtn:hover { color: var(--primary); border-color: var(--primary); }\n\n/* ── The pilot dropdown: cards, not nested tables ──────────────────────\n The tracking list is a table per character (avatar cell spanning five\n rows of name, system, station, ship, ship name) inside a table inside a\n table. Rendered as-is the portrait floated over the name and the eye and\n ship icons drifted down the middle. The table skeleton stays (tracking.js\n clones it); its rows are flattened and each character is laid out as a\n card: portrait, status and controls in a narrow left column, the five\n text lines stacked beside it. */\n#login #content #logoutTable { border-collapse: separate; border-spacing: 0; }\n#login #content #logoutTable > tbody > tr > td { vertical-align: top; padding: 0 12px; }\n#login #content #logoutTable > tbody > tr > td:first-child { padding-left: 0; }\n#login #content #logoutTable > tbody > tr > td:last-child { padding-right: 0; }\n#login #content #track, #login #content #account { min-width: 260px; }\n#login #content #track th, #login #content #account th { text-align: left; padding: 0 0 6px; }\n#login #content #tracking { display: flex; flex-direction: column; gap: 6px; padding: 0; }\n\n#login #content #track .tracking-clone,\n#login #content #track .tracking-clone > tbody { display: block; }\n#login #content #track .tracking-clone > tbody > tr { display: contents; }\n#login #content #track .tracking-clone > tbody {\n\tdisplay: grid;\n\tgrid-template-columns: 44px minmax(0, 1fr);\n\tgrid-template-rows: repeat(5, auto);\n\tcolumn-gap: 10px; row-gap: 1px;\n\tpadding: 8px 10px;\n}\n#login #content #track .tracking-clone td { padding: 0; border: 0; line-height: 1.3; }\n#login #content #track .tracking-clone td.avatar {\n\tgrid-column: 1; grid-row: 1 / span 5;\n\tdisplay: flex; flex-direction: column; align-items: center; gap: 4px;\n}\n#login #content #track .tracking-clone td.avatar img.avatar { display: block; }\n#login #content #track .tracking-clone td.avatar hr.bar { width: 36px; margin: 0; height: 3px; border: 0; border-radius: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group { display: flex; gap: 6px; margin-top: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group i { font-size: 14px; color: var(--muted-foreground); cursor: pointer; }\n#login #content #track .tracking-clone td.avatar .control-group i.active,\n#login #content #track .tracking-clone td.avatar .control-group i:hover { color: var(--primary); }\n#login #content #track .tracking-clone td.name { grid-column: 2; grid-row: 1; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.system { grid-column: 2; grid-row: 2; }\n#login #content #track .tracking-clone td.station { grid-column: 2; grid-row: 3; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.ship { grid-column: 2; grid-row: 4; }\n#login #content #track .tracking-clone td.shipname { grid-column: 2; grid-row: 5; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.text:empty::before,\n#login #content #track .tracking-clone td.text:has(> :empty):not(:has(*))::before { content: none; }\n#login #content #track .tracking-clone i.alert { grid-column: 2; grid-row: 1; justify-self: end; }\n\n/* The signed-in character: portrait beside name and corporation. */\n#login #content #account, #login #content #account > tbody { display: block; }\n#login #content #account > tbody { display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: 12px; align-items: start; }\n#login #content #account > tbody > tr { display: contents; }\n#login #content #account th { grid-column: 1 / -1; }\n#login #content #account td { padding: 0; border: 0; }\n#login #content #account td#avatar { grid-column: 1; grid-row: 2 / span 2; }\n#login #content #account td#characterName { grid-column: 2; grid-row: 2; font-weight: 600; padding-top: 4px; }\n#login #content #account td.text:not(#characterName) { grid-column: 2; grid-row: 3; color: var(--muted-foreground); }\n#login #content #account td:empty { display: none; }\n\n/* Buttons row. */\n#login #content #logoutTable > tbody > tr:last-child > td { padding-top: 12px; }\n#login #content #logoutTable > tbody > tr:last-child > td:last-child { text-align: right; }\n\n/* ── The mask menu: a popover, in the capsule's language ──────────────\n Was orange links stacked with a stray glyph each. Rows: the same source\n dot the capsule wears, the label, and a tick on the one you are in.\n Manage and admin sit under a rule in the quiet register. */\n#topbar #mask-menu {\n\tmin-width: 176px; padding: 4px 0;\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.45);\n}\n#topbar #mask-menu .triangle { display: none; }\n#topbar #mask-menu a {\n\tdisplay: flex; align-items: center; gap: 8px;\n\tpadding: 6px 12px; margin: 0;\n\tcolor: var(--foreground); font-size: var(--fs-sm); font-weight: 500; text-decoration: none;\n\tline-height: 1.2;\n}\n#topbar #mask-menu a:hover { background: var(--muted); color: var(--foreground); }\n#topbar #mask-menu a .mask { display: inline-flex; align-items: center; gap: 8px; color: inherit; font-size: inherit; }\n#topbar #mask-menu a .mask i[data-icon] {\n\twidth: 8px; height: 8px; border-radius: 50%; padding: 0; margin: 0; flex: 0 0 auto;\n\tdisplay: inline-block; transform: none; background: var(--muted-foreground);\n}\n#topbar #mask-menu a .mask i[data-icon]::before { content: none; }\n#topbar #mask-menu a .mask i.global { background: var(--muted-foreground); }\n#topbar #mask-menu a .mask i.personal,\n#topbar #mask-menu a .mask i.character { background: var(--data-good); }\n#topbar #mask-menu a .mask i.corporate { background: var(--primary); }\n#topbar #mask-menu a .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.personal { background: var(--data-good); }\n#topbar #mask-menu a.active::after {\n\tcontent: \"\\2713\"; margin-left: auto; color: var(--primary); font-size: 12px; font-weight: 700;\n}\n#topbar #mask-menu hr.bar { height: 1px; border: 0; margin: 4px 0; background: var(--border); }\n#topbar #mask-menu #mask-link, #topbar #mask-menu #admin {\n\tcolor: var(--muted-foreground); font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n}\n#topbar #mask-menu #mask-link:hover, #topbar #mask-menu #admin:hover { color: var(--foreground); }\n\n/* The eye and ship toggles sit in a row under the portrait. */\n#login #content #track .tracking-clone td.avatar .control-group { width: auto; min-width: 36px; justify-content: center; }\n\n/* ── The ship, under the name ─────────────────────────────────────────── */\n#topbar .hdr-line2 { display: flex; align-items: center; gap: 8px; }\n#topbar .hdr-ship {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; line-height: 18px;\n}\n#topbar .hdr-ship.hidden { display: none; }\n\n/* ── Phone header: the mask dot is a dot, and the name gives way ───────\n The coarse-pointer rule makes every #topbar i a 44px target; the mask\n capsule's source dot is an i too, and became a 44px orange disc beside\n the avatar. And the system name did not shrink, so the pilot block sat\n on top of it. */\n@media (pointer: coarse) {\n\t#topbar #mask .mask i[data-icon], #topbar #mask-menu a .mask i[data-icon] {\n\t\tmin-width: 0; min-height: 0; width: 7px; height: 7px; padding: 0;\n\t}\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-left { min-width: 0; }\n\t#topbar #hdr-system { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\t#topbar > .align-right { flex-shrink: 0; }\n\t#topbar #login h3 > a#user { gap: 6px; }\n}\n\n/* ── Install tip (phones) ─────────────────────────────────────────────── */\n#install-tip {\n\tdisplay: flex; align-items: center; gap: 10px;\n\tpadding: 8px 12px;\n\tbackground: color-mix(in oklab, var(--primary) 14%, var(--card));\n\tborder-bottom: 1px solid var(--border);\n\tfont-size: var(--fs-sm); color: var(--foreground);\n}\n#install-tip .tip-text { flex: 1 1 auto; min-width: 0; }\n#install-tip button { min-height: 32px; border-radius: 4px; font: inherit; cursor: pointer; }\n#install-tip .tip-install { background: var(--primary); color: #1b1207; border: 0; padding: 0 12px; font-weight: 600; }\n#install-tip .tip-close { background: none; border: 0; color: var(--muted-foreground); font-size: 18px; line-height: 1; padding: 0 6px; }\n\n/* ── The top row: smaller by default, and it does not follow the system ──\n 40vh unless a visited system needed more (system-fit.js remembers the\n largest, per window height). The chain gets the rest. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 40vh)) 1fr; }\n}\n\n/* ── Range in the header, links beside the legend ─────────────────────── */\n#infoWidget > .controls .bar-right #sys-range {\n\tdisplay: inline-flex; align-items: center; gap: 2px; margin-right: 6px;\n\tpadding-right: 8px; border-right: 1px solid var(--border-soft);\n}\n#infoWidget > .controls .bar-right #sys-range a {\n\tdisplay: inline-flex; align-items: center; height: 22px; padding: 0 6px;\n\tborder-radius: 3px; text-decoration: none;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#infoWidget > .controls .bar-right #sys-range a:hover { color: var(--foreground); background: var(--muted); }\n#infoWidget > .controls .bar-right #sys-range a.active { color: var(--primary); background: var(--muted); }\n#activityGraphControls { flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-3); }\n#activityGraphControls #infoLinks.in-legend-row { margin: 0 0 0 auto; padding: 0; border: 0; }\n#activityGraphControls #activityLegend { margin-right: 0; }\n\n/* Legend and links on one row: short chip labels, tighter tracking. */\n#activityLegend { gap: 2px 4px; }\n#activityLegend .legend-chip { padding: 0 5px 0 4px; letter-spacing: .06em; gap: 5px; }\n#activityGraphControls #infoLinks.in-legend-row { gap: 8px; }\n#activityGraphControls #infoLinks.in-legend-row a { letter-spacing: .12em; padding: 0; }\n\n/* ── Brand packs ─────────────────────────────────────────────────────────\n A pack without a logo image shows the product name in the display face. */\n#topbar #logo .logo-text { font-family: var(--font-display); font-weight: 700; font-size: 22px; letter-spacing: .02em; color: var(--foreground); line-height: 64px; }\n\n/* ── Typographic lockup: a small line, the name, a small line ───────────\n Set in the page's own fonts (an SVG cannot reach them). The name\n takes the brand face and the accent; the small lines the label register;\n optional rule-and-star flourishes either side of the name. */\n#topbar #logo .logo-lockup { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; line-height: 1; padding: 6px 0; }\n#topbar #logo .lockup-small {\n\tfont-family: var(--font-mono); font-size: 8.5px; font-weight: 500; letter-spacing: .26em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #logo .lockup-main {\n\tdisplay: inline-flex; align-items: center; gap: 10px;\n\tfont-family: var(--font-brand, var(--font-display)); font-size: 19px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;\n\tcolor: var(--primary); padding-left: .2em; /* balances the trailing tracking */\n}\n#topbar #logo .lockup-main.has-flourish::before,\n#topbar #logo .lockup-main.has-flourish::after {\n\tcontent: \"\"; width: 44px; height: 2px; background: var(--primary); flex: 0 0 auto;\n\t-webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px) ; mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px);\n}\n#topbar #logo .lockup-main.has-flourish::before { -webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px); }\n\n/* ── Signature dialog: compact, sides labelled in the gutter ──────────────\n Upstream's dialog was tighter and named each wormhole side with a\n vertical label down the left; the rebuild had replaced those with three\n horizontal headings (WORMHOLE, SIDE, OTHER SIDE) and looser\n rows, and grew a third taller. Back to the gutter, minus the headings. */\n#dialog-signature #wormhole::before,\n#dialog-signature #wormhole .side + .side::before { content: none; }\n#dialog-signature #wormhole { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature #wormhole .side { position: relative; padding-left: 20px; min-height: 0; }\n#dialog-signature #wormhole .side + .side { margin-top: 4px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature .sideLabel {\n\tposition: absolute; left: 0; top: 0; bottom: 5px; width: 14px;\n\tmargin: 0; padding: 0; border: 0;\n\tdisplay: flex; align-items: center; justify-content: center;\n\twriting-mode: vertical-rl; transform: rotate(180deg);\n\tfont-family: var(--font-mono); font-size: 9.5px; font-weight: 500; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; text-align: center;\n}\n#dialog-signature #wormhole .side + .side .sideLabel { top: 8px; }\n#dialog-signature .row { margin: 0 0 5px; gap: 6px; }\n#dialog-signature .row > .label:first-child { flex: 0 0 50px; }\n#dialog-signature #wormhole .row > .label:first-child { flex-basis: 44px; }\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button { min-height: 26px; }\n#dialog-signature .mini-selector + label { min-height: 24px; padding-top: 0; padding-bottom: 0; }\n/* signatures.css sizes the two labels by position (90px / 135px wide, one\n hung 70px below its side) with an id-heavier selector; match it. */\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\twidth: 14px; bottom: 5px; text-align: center; transform-origin: 50% 50%;\n}\n#dialog-signature #wormhole .side:last-child .sideLabel { top: 8px; }\n/* Fields read as fields: the name inputs had the dialog's own ground and a\n border one step from it, so they were invisible until focused. And the\n nine class chips plus divider fit the row. */\n#dialog-signature input[type=\"text\"] { background: var(--input); border-color: var(--border); }\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); }\n#dialog-signature .quickSelectBar { gap: 3px; }\n#dialog-signature .quickSelectBar button { min-width: 24px; padding: 0 4px; }\n\n/* ══ Signature dialog: the design pass ═══════════════════════════════════\n One label column across the whole form; the side gutter is a column of\n its own, so the top rows are indented to match the wormhole rows. Life\n and Mass are connected segmented controls, the class chips two even\n groups, type and leads each one control with its menu button attached.\n ─────────────────────────────────────────────────────────────────────── */\n.ui-dialog:has(#dialog-signature) { width: min(392px, calc(100vw - 2rem)) !important; }\n#dialog-signature #form-signature > .row,\n#dialog-signature #site > .row { padding-left: 20px; }\n\n#dialog-signature .row { margin: 0 0 6px; gap: 6px; align-items: center; }\n#dialog-signature .row > .label:first-child,\n#dialog-signature #wormhole .row > .label:first-child {\n\tflex: 0 0 54px; text-align: right;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature .row > .label:not(:first-child) { font-family: var(--font-mono); color: var(--muted-foreground); }\n\n/* Fields: one height, one ground, one edge. Ids and hull types in the mono. */\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tmin-height: 26px; height: 26px; box-sizing: border-box;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px;\n\tfont-size: 12px; color: var(--foreground);\n}\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); outline: 0; box-shadow: 0 0 0 2px color-mix(in oklab, var(--primary) 30%, transparent); }\n#dialog-signature .signatureID { width: 46px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature .wormholeType { width: 58px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature [name=\"signatureName\"], #dialog-signature [name=\"wormholeName\"] { flex: 1 1 auto; min-width: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 112px; display: inline-flex; align-items: center; }\n\n/* Comboboxes: the input and its menu button are one control. */\n#dialog-signature .custom-combobox { display: inline-flex; align-items: stretch; }\n#dialog-signature .custom-combobox input { border-top-right-radius: 0; border-bottom-right-radius: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle {\n\tposition: static; margin: 0 0 0 -1px; width: 24px; height: 26px; padding: 0;\n\tborder: 1px solid var(--border); border-radius: 0 3px 3px 0; background: var(--muted); color: var(--muted-foreground);\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .custom-combobox .custom-combobox-toggle:hover { color: var(--foreground); border-color: var(--border-strong); }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { flex: 1 1 auto; display: inline-flex; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] .custom-combobox { flex: 1 1 auto; }\n#dialog-signature .leadsTo { width: auto; flex: 1 1 auto; min-width: 0; }\n\n/* Lifetime: one boxed control, numbers in the mono. */\n#dialog-signature .duration-picker { height: 26px; padding: 0 8px; gap: 4px; border-color: var(--border); background: var(--input); }\n#dialog-signature .duration-picker input { width: 22px; text-align: center; font-family: var(--font-mono); font-size: 12px; height: auto; min-height: 0; border: 0; background: transparent; }\n#dialog-signature .duration-picker span, #dialog-signature .duration-picker label { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-foreground); }\n\n/* Life and Mass: segmented. The chosen state is filled in its colour. */\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n\tmin-height: 26px; height: 26px; padding: 0 12px; margin: 0 0 0 -1px;\n\tborder: 1px solid var(--border); border-radius: 0; background: var(--input);\n\tfont-size: 12px; font-weight: 500; color: var(--muted-foreground); line-height: 1;\n}\n#dialog-signature .mini-selector:first-of-type + label { border-radius: 3px 0 0 3px; margin-left: 0; }\n#dialog-signature .row > .mini-selector + label:last-child { border-radius: 0 3px 3px 0; }\n#dialog-signature .mini-selector + label:hover { color: var(--foreground); background: var(--muted); border-color: var(--border); }\n#dialog-signature .mini-selector:checked + label { position: relative; z-index: 1; border-color: transparent; }\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); color: #ffffff; }\n\n/* Class and hull chips: two even groups, the text divider gone. */\n#dialog-signature .quickSelectBar { display: inline-flex; flex-wrap: nowrap; gap: 3px; font-size: 0; margin: 0; }\n#dialog-signature .row > .quickSelectBar { flex-basis: 100%; margin-left: 60px; }\n#dialog-signature .quickSelectBar button {\n\tmin-width: 26px; height: 22px; padding: 0 5px; border: 1px solid var(--border); border-radius: 3px;\n\tbackground: var(--input); font-family: var(--font-mono); font-size: 10px; font-weight: 600; letter-spacing: .04em; line-height: 1;\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .quickSelectBar button:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature #leadsToQuickBar button[value=\"High-Sec\"] { margin-left: 8px; }\n#dialog-signature .wormholeTypeQuickSelect { margin-left: 0; flex-basis: auto; }\n#dialog-signature .wormholeTypeQuickSelect:empty { display: none; }\n\n/* The side gutter, one column wide, the labels centred in it. */\n#dialog-signature #wormhole .side { padding-left: 20px; }\n#dialog-signature .sideLabel,\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel { width: 14px; left: 0; font-size: 9px; letter-spacing: .2em; }\n\n/* A missing required field: the edge in the danger colour, no halo. */\n#dialog-signature .sig-missing, #dialog-signature .sig-missing:focus { border-color: var(--destructive); box-shadow: none; }\n/* Combobox menu button: its sprite icon was absolutely positioned against\n the wrapper, so it landed inside the input. The button is the positioned\n box, the sprite is gone, and a chevron is drawn in the current colour. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { position: relative; text-indent: 0; overflow: hidden; }\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon,\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space { display: none; }\n#dialog-signature .custom-combobox .custom-combobox-toggle::after {\n\tcontent: \"\"; width: 6px; height: 6px; margin-top: -3px;\n\tborder-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg);\n}\n/* The type menu: text first, chevron at the right edge. */\n#dialog-signature #signatureType .ui-selectmenu-button { display: inline-flex; align-items: center; gap: 6px; padding: 0 8px; width: auto !important; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text { flex: 1 1 auto; margin: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon { order: 2; margin: 0; position: static; }\n/* Lifetime: the duration picker's blocks in one boxed control, numbers in the mono. */\n#dialog-signature .bdp-input {\n\tdisplay: inline-flex; align-items: center; gap: 12px; height: 26px; padding: 0 10px;\n\tborder: 1px solid var(--border); border-radius: 3px; background: var(--input);\n}\n#dialog-signature .bdp-block { display: inline-flex; align-items: baseline; gap: 4px; }\n#dialog-signature .bdp-block br { display: none; }\n#dialog-signature .bdp-block a { text-decoration: none; }\n#dialog-signature .bdp-block a span { font-family: var(--font-mono); font-size: 13px !important; font-weight: 500; color: var(--foreground); line-height: 1; }\n#dialog-signature .bdp-block a:hover span { color: var(--primary); }\n#dialog-signature .bdp-block .bdp-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-foreground); }\n/* The picker's seconds block is hidden by class; keep it that way. The\n control then fits the LENGTH row. */\n#dialog-signature .bdp-block.hidden { display: none !important; }\n#dialog-signature .bdp-input { gap: 10px; padding: 0 8px; }\n/* Combobox: input and button touch, and the pair never outgrows the row. */\n#dialog-signature .custom-combobox { gap: 0; max-width: 100%; }\n#dialog-signature .custom-combobox > * { margin: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle { margin-left: -1px; flex: 0 0 24px; }\n#dialog-signature .custom-combobox input.leadsTo { flex: 1 1 0; width: 0; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { max-width: 100%; }\n/* signatures.css offsets the toggle with right:-20px for its absolute\n layout; on a relative box that is a 20px shove. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { right: auto; left: auto; top: auto; bottom: auto; width: 24px; }\n\n/* Phone: the panel bar has no room for the range control beside the\n panel buttons -- the close button was wrapping onto a second line. The\n graph still shows the last 24h. */\n@media (max-width: 767px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n}\n\n/* ══ Feedback round (first corp feedback, 2026-09-04) ════════════════════ */\n\n/* ── 1. Chain nodes: the same card, half the height ──────────────────────\n The class chip sat on its own line above the name and the statics hung\n half below the card; at zoom 1.2 that was 173x70 with an 84px row pitch\n against upstream's 30px pill. Two lines: chip + name + pips, then hull or\n sig id + statics inline. About 120x40 at zoom 1. Security reads at full\n strength on the left edge and in the chip, in both rooms. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, 1fr) auto;\n\tgrid-template-areas: \"class name pips\" \"type type statics\";\n\talign-items: center; column-gap: 5px; row-gap: 2px;\n\twidth: 120px; min-height: 0; height: auto !important;\n\tpadding: 4px 7px 4px 6px; margin: 0;\n\tborder-left: 3px solid var(--node-edge);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, .35);\n\toverflow: visible;\n}\n#chainMap div.node > .nodeClass { grid-area: class; margin: 0; order: 0; }\n#chainMap div.node > .nodeSystem { grid-area: name; margin: 0; padding: 0; order: 0; font-size: 12px; line-height: 16px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; margin: 0; order: 0; gap: 2px; font-size: 8px; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; order: 0; min-height: 0; font-size: 10px; line-height: 14px; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: .04em; }\n#chainMap div.node > .statics { grid-area: statics; position: static; transform: none; margin: 0; gap: 3px; justify-content: flex-end; order: 0; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 14px; min-width: 18px; padding: 0 5px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > .nodeClass > span { height: 15px; padding: 0 5px; font-size: 10px; }\n#chainMap div.node > .nodeIcons { top: 2px; right: 4px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name pips\"; }\n#chainMap div.loop { width: 120px; padding: 4px 7px; }\n\n/* Security and class on the edge, full strength; tokens carry both rooms. */\n#chainMap div.greenNode.node { border-left-color: var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--data-critical); }\n#chainMap div.node:has(> .nodeClass .wh),\n#chainMap div.node:has(> .nodeClass .class-1), #chainMap div.node:has(> .nodeClass .class-2), #chainMap div.node:has(> .nodeClass .class-3) { border-left-color: var(--data-info); }\n#chainMap div.node:has(> .nodeClass .class-4), #chainMap div.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap div.node:has(> .nodeClass .class-12) { border-left-color: var(--data-loot-gold); }\n#chainMap div.node:has(> .nodeClass .class-15), #chainMap div.node:has(> .nodeClass .class-16), #chainMap div.node:has(> .nodeClass .class-17) { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The class tint stays but reads as a ground, not a wash. */\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-critical) 10%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-loot-orange) 10%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-good) 10%, var(--node-surface)); }\n\n/* ── 4. The chain pans with the wheel again ───────────────────────────────\n #chainParent is the widget's .content, so the panel rule that hides\n overflow outranked its own overflow: auto. Drag-to-pan (dragscroll) had\n kept working, which is why it felt like drag became the only way. */\n#chainWidget > #chainParent.content { overflow: auto; }\n\n/* ── 5. Signature columns: header and cells share one alignment ──────────\n The cells carry the per-column alignment classes from Settings; the\n header now wears the same classes (sig-align.js), so the two agree. */\n#sigTable th, #sigTable td { text-align: left; }\n#sigTable .centerAlign { text-align: center; }\n#sigTable .rightAlign { text-align: right; }\n#sigTable .leftAlign { text-align: left; }\n\n/* ── 7. Three columns from 960px; what gives at the narrow end ─────────── */\n@media (min-width: 960px) and (max-width: 1099px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n\t#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n\t#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 3.2rem; padding-left: 2px; padding-right: 4px; }\n\t#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 4.6rem; }\n}\n\n/* ── 6. Phone: a signature is two lines, nothing hidden ─────────────────── */\n@media (max-width: 767px) {\n\t#sigTable thead { display: none; }\n\t#sigTable tbody tr {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto minmax(0, 1fr) auto auto;\n\t\tgrid-template-areas: \"id type type age\" \"leads leads life mass\";\n\t\tcolumn-gap: 10px; row-gap: 2px;\n\t\tpadding: 7px 10px;\n\t}\n\t#sigTable tbody td { display: block; width: auto !important; padding: 0 !important; height: auto; line-height: 18px; text-align: left !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n\t#sigTable tbody td:nth-child(1) { grid-area: id; font-weight: 600; }\n\t#sigTable tbody td:nth-child(2) { grid-area: type; }\n\t#sigTable tbody td:nth-child(3) { grid-area: age; text-align: right !important; }\n\t#sigTable tbody td:nth-child(4) { grid-area: leads; }\n\t#sigTable tbody td:nth-child(5) { grid-area: life; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:nth-child(6) { grid-area: mass; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:empty { display: none; }\n}\n/* Older per-column rules (an id and a pseudo-class) outranked the shared\n alignment classes on the header; match them with the section in the\n selector. And the phone block had hidden Life and Mass outright. */\n#sigTable thead th.leftAlign, #sigTable tbody td.leftAlign { text-align: left; }\n#sigTable thead th.centerAlign, #sigTable tbody td.centerAlign { text-align: center; }\n#sigTable thead th.rightAlign, #sigTable tbody td.rightAlign { text-align: right; }\n@media (max-width: 767px) {\n\t#sigTable tbody tr > td:nth-child(5), #sigTable tbody tr > td:nth-child(6) { display: block !important; }\n\t#sigTable tbody tr > td:empty { display: none !important; }\n}\n/* The name was being cut to one letter: the pips' non-breaking spaces and\n an old right padding on the name ate the column. The card sizes to its\n name between 118 and 168px, as upstream's pill did; the pips are dots. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: auto; min-width: 118px; max-width: 168px; }\n#chainMap div.node > .nodeSystem { padding-right: 0; overflow: visible; text-overflow: clip; }\n#chainMap div.node > .nodeActivity { font-size: 0; gap: 3px; }\n#chainMap div.node > .nodeActivity > span { font-size: 8px; line-height: 8px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.loop { width: auto; min-width: 118px; }\n/* The name column: sized to the name (the card grows to 168px), and the\n older h4 rule that ellipsised it is matched at its own specificity. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto auto minmax(0, auto); }\n#chainMap div.node > h4.nodeSystem { padding-right: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 120px; height: auto; line-height: 16px; }\n/* k-space security on the edge, both rooms, from the same tokens the chips use. */\n#chainMap div.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The name track sizes to the name (max-content), so the card grows with\n it up to its cap; overflow on the h4 had made its automatic minimum 0. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto max-content auto; }\n/* Flares (a colour a pilot sets on a node from its menu) are not security:\n they tint the ground and the top edge; the left edge stays security. */\n#chainMap div.greenNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .hisec), #chainMap div.yellowNode.node:has(> .nodeClass .hisec), #chainMap div.redNode.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.greenNode.node:has(> .nodeClass .lowsec), #chainMap div.yellowNode.node:has(> .nodeClass .lowsec), #chainMap div.redNode.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.greenNode.node:has(> .nodeClass .nullsec), #chainMap div.yellowNode.node:has(> .nodeClass .nullsec), #chainMap div.redNode.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .wh), #chainMap div.yellowNode.node:has(> .nodeClass .wh), #chainMap div.redNode.node:has(> .nodeClass .wh) { border-left-color: var(--data-info); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-4), #chainMap div.greenNode.node:has(> .nodeClass .class-5),\n#chainMap div.yellowNode.node:has(> .nodeClass .class-4), #chainMap div.yellowNode.node:has(> .nodeClass .class-5),\n#chainMap div.redNode.node:has(> .nodeClass .class-4), #chainMap div.redNode.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-6), #chainMap div.yellowNode.node:has(> .nodeClass .class-6), #chainMap div.redNode.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* Security on the left edge from classes the node now carries itself\n (sec-hisec / sec-lowsec / sec-nullsec / sec-wh + cls-N), so no :has()\n is needed and the build cannot drop it. The card shrink-wraps its name. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: fit-content; margin: 0 auto; }\n#chainMap div.node.sec-hisec, #chainMap div.greenNode.node.sec-hisec, #chainMap div.yellowNode.node.sec-hisec, #chainMap div.redNode.node.sec-hisec { border-left-color: var(--data-good); }\n#chainMap div.node.sec-lowsec, #chainMap div.greenNode.node.sec-lowsec, #chainMap div.yellowNode.node.sec-lowsec, #chainMap div.redNode.node.sec-lowsec { border-left-color: var(--data-loot-orange); }\n#chainMap div.node.sec-nullsec, #chainMap div.greenNode.node.sec-nullsec, #chainMap div.yellowNode.node.sec-nullsec, #chainMap div.redNode.node.sec-nullsec { border-left-color: var(--data-critical); }\n#chainMap div.node.sec-triglavian, #chainMap div.greenNode.node.sec-triglavian, #chainMap div.yellowNode.node.sec-triglavian, #chainMap div.redNode.node.sec-triglavian { border-left-color: var(--data-loot-red); }\n#chainMap div.node.sec-wh, #chainMap div.greenNode.node.sec-wh, #chainMap div.yellowNode.node.sec-wh, #chainMap div.redNode.node.sec-wh { border-left-color: var(--data-info); }\n#chainMap div.node.cls-4, #chainMap div.node.cls-5, #chainMap div.greenNode.node.cls-4, #chainMap div.greenNode.node.cls-5, #chainMap div.yellowNode.node.cls-4, #chainMap div.yellowNode.node.cls-5, #chainMap div.redNode.node.cls-4, #chainMap div.redNode.node.cls-5 { border-left-color: var(--data-loot-purple); }\n#chainMap div.node.cls-6, #chainMap div.greenNode.node.cls-6, #chainMap div.yellowNode.node.cls-6, #chainMap div.redNode.node.cls-6 { border-left-color: var(--data-loot-pink); }\n#chainMap div.node.cls-12, #chainMap div.greenNode.node.cls-12, #chainMap div.yellowNode.node.cls-12, #chainMap div.redNode.node.cls-12 { border-left-color: var(--data-loot-gold); }\n#chainMap div.node.cls-15, #chainMap div.node.cls-16, #chainMap div.node.cls-17 { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node, #chainMap .currentNode > div.node.sec-hisec, #chainMap .currentNode > div.node.sec-wh { border-left-color: var(--primary); }\n/* Chrome trimmed so the width is the name's, not the card's. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { column-gap: 4px; padding: 3px 6px 3px 5px; min-width: 104px; }\n#chainMap div.node > .nodeClass > span { padding: 0 4px; height: 14px; }\n#chainMap div.node > .nodeActivity { gap: 2px; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n/* Leads To is the column that takes the table's slack; centred text in it\n drifts away from Age. Upstream pinned it left whatever the setting. */\n#sigTable thead th:nth-child(4), #sigTable tbody td:nth-child(4),\n#sigTable thead th:nth-child(4).centerAlign, #sigTable tbody td:nth-child(4).centerAlign,\n#sigTable thead th:nth-child(4).rightAlign, #sigTable tbody td:nth-child(4).rightAlign { text-align: left; }\n/* The class chip, top-left, filled in its class colour with white text --\n hisec green, lowsec orange, nullsec red, C1-3 blue, C4-5 purple, C6 pink,\n Thera gold, drifter red -- as upstream coloured its nodes. A later rule\n had been greying the chip's currentColor. Same tokens in both rooms. */\n#chainMap div.node > h4.nodeClass > span {\n\tbackground: var(--node-edge); color: #fff; -webkit-text-fill-color: #fff;\n\tfont-weight: 700; letter-spacing: .04em;\n}\n#chainMap div.node > h4.nodeClass > span.hisec { background: var(--data-good); }\n#chainMap div.node > h4.nodeClass > span.lowsec { background: var(--data-loot-orange); }\n#chainMap div.node > h4.nodeClass > span.nullsec { background: var(--data-critical); }\n#chainMap div.node > h4.nodeClass > span.triglavian { background: var(--data-loot-red); }\n#chainMap div.node > h4.nodeClass > span.wh { background: var(--data-info); }\n#chainMap div.node > h4.nodeClass > span.class-4, #chainMap div.node > h4.nodeClass > span.class-5 { background: var(--data-loot-purple); }\n#chainMap div.node > h4.nodeClass > span.class-6 { background: var(--data-loot-pink); }\n#chainMap div.node > h4.nodeClass > span.class-12 { background: var(--data-loot-gold); color: #1b1b1b; -webkit-text-fill-color: #1b1b1b; }\n#chainMap div.node > h4.nodeClass > span.class-15, #chainMap div.node > h4.nodeClass > span.class-16, #chainMap div.node > h4.nodeClass > span.class-17 { background: var(--data-loot-red); }\n\n/* ── Statics span the second row and wrap; three capsules no longer run\n off the edge (they sat in the column the activity pips size). ───────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-areas: \"class name pips\" \"type statics statics\"; }\n#chainMap div.node > .nodeType { white-space: nowrap; }\n#chainMap div.node > .statics { flex-wrap: wrap; justify-content: flex-end; row-gap: 2px; min-width: 0; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n\n/* ── Flares breathe. ──────────────────────────────────────────────────────\n As Aperture's underglow: a blurred pad in the flare colour behind the\n card, scaling 0.96 -> 1.06 and 28% -> 80% opacity on a 1.4s cycle. The\n card itself keeps its security edge and a faint tint; the top edge is\n gone. Still under reduced-motion. */\n@keyframes flare-glow {\n\t0%, 100% { opacity: .28; transform: scale(.96); }\n\t50% { opacity: .8; transform: scale(1.06); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { position: relative; z-index: 0; border-top-width: 1px; border-top-color: var(--node-edge); }\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before {\n\tcontent: \"\"; position: absolute; inset: -3px; z-index: -1; border-radius: inherit;\n\tbackground: var(--flare, transparent); filter: blur(9px);\n\tanimation: flare-glow 1400ms ease-in-out infinite; pointer-events: none;\n}\n#chainMap div.redNode.node { --flare: var(--data-critical); }\n#chainMap div.yellowNode.node { --flare: var(--data-loot-orange); }\n#chainMap div.greenNode.node { --flare: var(--data-good); }\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--flare) 8%, var(--node-surface)); }\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { animation: none; opacity: .55; }\n}\n\n/* ── Three lines, narrow: chains grow sideways, so width is the currency.\n Line 1 chip + name, line 2 hull or sig id with the pips at the right,\n line 3 the statics (J-space only; k-space cards are two lines). About\n 100 wide and 52 tall at zoom 1, against upstream's ~100 x 30. ─────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-columns: auto minmax(0, max-content);\n\tgrid-template-areas: \"class name\" \"type pips\" \"statics statics\";\n\tcolumn-gap: 4px; row-gap: 1px;\n\tmin-width: 92px; max-width: 140px; padding: 3px 6px 3px 5px;\n}\n#chainMap div.node > .nodeType { grid-area: type; }\n#chainMap div.node > .nodeActivity { grid-area: pips; justify-self: end; }\n#chainMap div.node > .statics { grid-area: statics; justify-content: flex-start; margin-top: 1px; }\n#chainMap div.node > h4.nodeSystem { max-width: 104px; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name\" \"statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name\"; }\n#chainMap div.node:not(:has(> .statics span)) { grid-template-areas: \"class name\" \"type pips\"; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { grid-area: name; justify-self: end; }\n#chainMap div.node > .nodeIcons { top: auto; bottom: 3px; right: 5px; }\n#chainMap div.node > .nodeIcons > div { gap: 3px; }\n\n/* ── Upstream's skeleton: a 32px box. Name, then the hull or sig id under\n it; the class chip rides the top-left corner; statics hang off the\n bottom edge as capsules; pips are dots at the bottom right. About\n 100 x 32 at zoom 1 (upstream: ~100 x 30). ────────────────────────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: block; position: relative; overflow: visible;\n\twidth: fit-content; min-width: 96px; max-width: 150px; height: auto !important;\n\tpadding: 3px 10px 3px 10px; margin: 6px auto 8px;\n\ttext-align: center;\n}\n#chainMap div.node > h4.nodeSystem { display: block; margin: 0; padding: 0 10px 0 0; font-size: 12px; line-height: 14px; max-width: none; }\n#chainMap div.node > .nodeType { display: block; margin: 0; font-size: 9.5px; line-height: 11px; letter-spacing: .04em; min-height: 0; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .nodeClass {\n\tposition: absolute; top: -7px; left: -5px; margin: 0; line-height: 1; z-index: 2;\n}\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 6px; right: 6px; bottom: -7px; margin: 0; z-index: 2;\n\tdisplay: flex; justify-content: center; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeActivity { position: absolute; right: 4px; bottom: 3px; top: auto; margin: 0; gap: 2px; z-index: 1; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeIcons { position: absolute; top: -6px; right: -4px; bottom: auto; left: auto; }\n#chainMap div.node > .nodeIcons > div { gap: 2px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; font-size: 9px; padding: 0 4px; }\n#chainMap div.node.frig-chain { border-width: 1px; }\n#chainMap div.loop { width: fit-content; min-width: 0; padding: 3px 10px; margin: 6px auto 8px; }\n/* The glow is a halo around and behind the box, not a wash across it: an\n animated shadow instead of a pad inside the card's own stacking layer. */\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { content: none; animation: none; }\n@keyframes flare-halo {\n\t0%, 100% { box-shadow: 0 0 6px 1px color-mix(in oklab, var(--flare) 45%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n\t50% { box-shadow: 0 0 16px 5px color-mix(in oklab, var(--flare) 85%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tz-index: auto; border-color: color-mix(in oklab, var(--flare) 60%, var(--node-edge));\n\tanimation: flare-halo 1400ms ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { animation: none; box-shadow: 0 0 12px 3px color-mix(in oklab, var(--flare) 70%, transparent); }\n}\n/* The chip sits inline before the name (it was covering the first letter\n from the corner); the type line gets room above the hanging capsules. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: auto max-content; grid-template-areas: \"class name\" \"type type\";\n\talign-items: center; column-gap: 4px; row-gap: 0;\n\tmin-width: 92px; max-width: 160px; padding: 3px 8px 9px 6px; margin: 4px auto 9px; text-align: left;\n}\n#chainMap div.node > .nodeClass { position: static; grid-area: class; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; padding: 0; line-height: 15px; max-width: 110px; }\n#chainMap div.node > .nodeType { grid-area: type; text-align: left; padding-right: 24px; line-height: 11px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { padding-bottom: 3px; grid-template-areas: \"class name\"; }\n#chainMap div.node:has(> .nodeType:empty):has(> .statics span) { padding-bottom: 8px; }\n#chainMap div.node > .statics { bottom: -7px; left: 4px; right: 4px; justify-content: flex-start; }\n#chainMap div.node > .nodeActivity { right: 5px; bottom: 9px; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { bottom: 4px; }\n#chainMap div.node > .nodeIcons { top: -5px; right: -3px; }\n\n/* ══ Chain node, settled ═══════════════════════════════════════════════════\n Everything in flow on one grid, so nothing can land on anything else at\n any zoom. Row 1: class chip, name, effect / occupant icons, activity\n pips. Row 2: hull or sig id. Statics hang off the bottom edge into space\n the card reserves below itself. 34px tall with a type line, 22 without;\n about 100 wide for a J-name. Upstream: ~100 x 30 with its tabs below. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-areas: \"class name icons pips\" \"type type type type\";\n\talign-items: center; column-gap: 4px; row-gap: 1px;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 3px 7px 4px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: left;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name icons pips\"; padding-bottom: 3px; }\n#chainMap div.node > .nodeClass { grid-area: class; position: static; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; margin: 0; padding: 0; line-height: 15px; font-size: 12px; max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeIcons { grid-area: icons; position: static; display: flex; align-items: center; gap: 3px; width: auto; height: auto; margin: 0; top: auto; right: auto; left: auto; bottom: auto; }\n#chainMap div.node > .nodeIcons:empty { display: none; }\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; align-items: center; gap: 3px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 9px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; justify-self: end; display: flex; align-items: center; gap: 2px; width: auto; height: auto; margin: 0; font-size: 0; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; padding: 0; text-align: left; font-family: var(--font-mono); font-size: 9.5px; line-height: 11px; letter-spacing: .04em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 5px; right: 5px; top: 100%; bottom: auto; margin: -4px 0 0; transform: none; z-index: 2;\n\tdisplay: flex; justify-content: flex-start; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 3px 8px; margin: 3px auto 12px; }\n/* Placement by line numbers, not area names: the minifier had reordered\n the named areas and the icons fell into an implicit fourth row. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-areas: none;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-rows: auto auto;\n\tgrid-auto-rows: 0;\n}\n#chainMap div.node > .nodeClass { grid-area: auto; grid-column: 1; grid-row: 1; }\n#chainMap div.node > h4.nodeSystem { grid-area: auto; grid-column: 2; grid-row: 1; }\n#chainMap div.node > .nodeIcons { grid-area: auto; grid-column: 3; grid-row: 1; }\n#chainMap div.node > .nodeActivity { grid-area: auto; grid-column: 4; grid-row: 1; }\n#chainMap div.node > .nodeType { grid-area: auto; grid-column: 1 / 5; grid-row: 2; }\n#chainMap div.node > .statics { grid-area: auto; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n/* The name's own text is its minimum: overflow: clip is not a scroll\n container, so the grid and the org-chart cell size to the name instead of\n collapsing it to \"P.\" at their minimum. Still ellipsises past 110px. */\n#chainMap div.node > h4.nodeSystem { overflow: clip; text-overflow: ellipsis; min-width: min-content; }\n#chainMap div.node > h4.nodeSystem a { white-space: nowrap; }\n\n/* ══ Chain node: the original's layout, in our clothes ═════════════════════\n Three centred lines -- class chip with the effect beside it, the name,\n the hull or sig id -- the statics hanging off the bottom edge into the\n space between rows, activity dots on the edge, the occupant badge on the\n top-right corner. About 100 x 46 at zoom 1, which is what the original\n measured once its three lines were in it. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: minmax(0, max-content); grid-template-rows: auto auto auto; grid-auto-rows: 0;\n\tjustify-items: center; align-items: center; row-gap: 0; column-gap: 0;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 4px 10px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: center;\n}\n#chainMap div.node > .nodeClass { grid-column: 1; grid-row: 1; position: static; margin: 0; display: inline-flex; align-items: center; gap: 4px; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 5px; font-size: 9px; }\n#chainMap div.node > h4.nodeSystem { grid-column: 1; grid-row: 2; margin: 0; padding: 0; line-height: 16px; font-size: 12.5px; font-weight: 600; max-width: 150px; min-width: min-content; overflow: clip; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeType { grid-column: 1; grid-row: 3; margin: 0; padding: 0; text-align: center; font-family: var(--font-mono); font-size: 10px; line-height: 12px; letter-spacing: .06em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto auto; }\n/* The effect sits beside the class, in flow; the occupant badge rides the corner. */\n#chainMap div.node > .nodeIcons { grid-column: 1; grid-row: 1; position: static; display: contents; }\n#chainMap div.node > .nodeIcons > div { float: none; display: contents; }\n#chainMap div.node > .nodeIcons > div:first-child { display: inline-flex; align-items: center; position: absolute; top: 4px; right: 8px; gap: 2px; }\n#chainMap div.node > .nodeIcons > div:last-child { display: inline-flex; align-items: center; position: absolute; top: -6px; right: -6px; gap: 2px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 13px; padding: 0 5px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n/* Dots on the bottom edge, left; statics hanging from the edge, right of them. */\n#chainMap div.node > .nodeActivity { position: absolute; left: 8px; bottom: -3px; top: auto; right: auto; margin: 0; width: auto; height: auto; display: flex; gap: 3px; font-size: 0; z-index: 2; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .statics { position: absolute; left: auto; right: 6px; top: 100%; bottom: auto; margin: -5px 0 0; transform: none; display: flex; justify-content: flex-end; gap: 3px; flex-wrap: nowrap; z-index: 2; }\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 13px; min-width: 17px; padding: 0 5px; font-size: 9px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 4px 10px; margin: 3px auto 12px; }\n/* The class / security capsule hangs off the top-left corner, the effect\n off the top-right; the box holds name and sig; statics and dots hang off\n the bottom. The gaps between rows carry the capsules, as the original's\n tabs did. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-rows: auto auto; padding: 7px 10px 6px; margin: 9px auto 12px; min-width: 92px;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n#chainMap div.node > .nodeClass { position: absolute; top: -7px; left: -5px; margin: 0; z-index: 3; }\n#chainMap div.node > .nodeClass > span { box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > h4.nodeSystem { grid-row: 1; }\n#chainMap div.node > .nodeType { grid-row: 2; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -7px; right: 6px; }\n#chainMap div.node > .nodeIcons > div:last-child { top: -7px; right: -6px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 12px; text-shadow: 0 0 3px var(--background); }\n#chainMap div.node > .nodeActivity { bottom: -4px; left: 7px; }\n#chainMap div.node > .statics { margin-top: -6px; right: 5px; }\n/* Tooltips appended inside the chain panel position against it, not the\n page: the panel is the containing block. */\n#chainWidget > #chainParent.content { position: relative; }\n/* The corner chip straddles the top edge in the box's own top padding; the\n name starts below it. Mirrors the statics on the bottom edge. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { padding-top: 14px; padding-bottom: 7px; margin-top: 10px; }\n#chainMap div.node > .nodeClass { top: -7px; left: -5px; }\n#chainMap div.node > .nodeClass > span { height: 14px; }\n/* The desktop layout pins every panel's .content static with !important;\n the chain panel must be the containing block for its tooltips. */\n#chainWidget > #chainParent.content { position: relative !important; }\n/* An absolutely positioned child of a grid is placed against its grid\n area when it has one; the chip and the dots must be placed against the\n box, so they get no area. And the rows sit 5px closer. */\n#chainMap div.node > .nodeClass, #chainMap div.node > .nodeActivity, #chainMap div.node > .statics,\n#chainMap div.node > .nodeIcons > div { grid-area: auto; grid-row: auto; grid-column: auto; }\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { margin-top: 8px; margin-bottom: 9px; }\n/* Keep the pilot icon and count wholly inside the top-right corner. Negative\n offsets put both controls directly over the node's top and right borders. */\n#chainMap div.node > .nodeIcons > div:last-child { top: 2px; right: 3px; gap: 1px; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -6px; right: 22px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 8.5px; box-shadow: none; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainMap div.node > .nodeIcons [data-icon=\"user\"] { padding: 0; }\n#chainWidget > #chainParent.content { padding-top: 12px !important; }\n/* The pilot count is centred in its capsule (it is a flex box, which does\n not centre on its own), with a round minimum so \"1\" and \"12\" both sit true. */\n#chainMap div.node > .nodeIcons .badge { justify-content: center; min-width: 14px; padding: 0 4px; box-sizing: border-box; text-align: center; }\n"]} \ No newline at end of file From d03e404ffc5766fdd43443660776e698f062e601 Mon Sep 17 00:00:00 2001 From: cvweiss Date: Mon, 14 Sep 2026 14:50:11 -0400 Subject: [PATCH 3/4] WCAG for tutorial popover text --- app/css/_theme-refit.css | 16 ++++++++++++++++ public/css/app.min.css | 2 +- public/css/app.min.css.map | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/css/_theme-refit.css b/app/css/_theme-refit.css index 68ca51d8..733f79a7 100644 --- a/app/css/_theme-refit.css +++ b/app/css/_theme-refit.css @@ -137,6 +137,22 @@ #wrapper::before { background: radial-gradient(ellipse at 30% -20%, var(--glow) 0%, var(--background) 60%); } body { background-image: none; } +/* Bring Intro.js tooltips onto the active theme surface. Its bundled CSS + otherwise leaves the panel and arrow white in dark mode. */ +.introjs-tooltip { + background-color: var(--popover); + border: 1px solid var(--border); + color: var(--popover-foreground); +} +.introjs-arrow.top, +.introjs-arrow.top-right, +.introjs-arrow.top-middle { border-bottom-color: var(--popover); } +.introjs-arrow.right, +.introjs-arrow.right-bottom { border-left-color: var(--popover); } +.introjs-arrow.bottom { border-top-color: var(--popover); } +.introjs-arrow.left, +.introjs-arrow.left-bottom { border-right-color: var(--popover); } + /* Running text in the brand grey; names, values and headings in bone. */ #sigTable td, .commentBody, .sys-meta, .sys-extra, .field-label, .ui-dialog .ui-dialog-content { color: var(--text-body); } #sigTable td:nth-child(1), .sys-name, .field-value, #chainMap div.node > h4.nodeSystem, .stats dd { color: var(--foreground); } diff --git a/public/css/app.min.css b/public/css/app.min.css index 826935ee..4cf2d9b8 100644 --- a/public/css/app.min.css +++ b/public/css/app.min.css @@ -35,5 +35,5 @@ a,body,button,div,h1,h2,h3,h4,h5,h6,input,li,p,select,span,table,td,textarea,th{ #sigTable td.inline-editable{cursor:pointer;position:relative}#sigTable td.inline-editable:hover{color:var(--foreground);text-decoration:underline dotted;text-underline-offset:3px}#sigTable td.inline-editable.is-saving{opacity:.5;pointer-events:none}#inline-edit{position:fixed;z-index:1200;display:flex;gap:var(--space-1);padding:var(--space-1);background:var(--popover);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 1px 2px rgba(0,0,0,.35),0 12px 32px rgba(0,0,0,.4)}#inline-edit .inline-chip{height:var(--control-dense);padding:0 var(--space-3);border-radius:999px;border:1px solid var(--border);background:0 0;color:var(--foreground);font-size:var(--fs-sm);font-weight:600;cursor:pointer}#inline-edit .inline-chip:hover{background:var(--muted);border-color:var(--border-strong)}#inline-edit .inline-chip[aria-selected=true].stable{background:var(--data-good);border-color:var(--data-good);color:#1b1b1b}#inline-edit .inline-chip[aria-selected=true].destab{background:var(--data-warn);border-color:var(--data-warn);color:#1b1b1b}#inline-edit .inline-chip[aria-selected=true].critical{background:var(--data-critical);border-color:var(--data-critical);color:#fff}#inline-edit .inline-chip:focus-visible{outline:2px solid var(--ring);outline-offset:2px}@media (pointer:coarse){#inline-edit .inline-chip{min-height:44px;padding:0 var(--space-4)}} :root{--font-ui:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--font-display:'Montserrat','IBM Plex Sans',system-ui,sans-serif;--font-mono:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,Consolas,monospace}#dialog-options td,#logoutTable td,a,body,button,div,h1,h2,h3,h4,h5,h6,input,li,p,select,span,table,table td,td,textarea,th{font-family:var(--font-ui);font-variant-numeric:tabular-nums}#cmd-palette .cmd-title,#statusbar .bar-label,#topbar #logo,#topbar #logo a,.panel-title,.settings-tabs [role=tab],.sys-panel .sys-name,.ui-dialog .ui-dialog-title{font-family:var(--font-display)}#chainMap div.node>h4.nodeType,#sigTable td:nth-child(1),kbd{font-family:var(--font-mono);letter-spacing:0}:root{--fs-base:13px;--fs-sm:12px} :root{--accent:#f07c00;--accent-dim:rgba(240, 124, 0, .18);--brand-gray:#adadad;--brand-gray-dark:#4d4d4d;--n-000:#000000;--n-020:#101010;--n-050:#1b1b1b;--n-100:#232323;--n-120:#2a2a2a;--n-200:#303030;--n-220:#3a3a3a;--n-250:#444444;--n-300:#4d4d4d;--n-400:#5a5a5a;--n-500:#6b6b6b;--n-550:#7d7d7d;--n-560:#838383;--n-600:#8c8c8c;--n-650:#9a9a9a;--n-700:#a3a3a3;--n-750:#adadad;--n-800:#c4c4c4;--n-850:#d2d2d2;--n-870:#dedede;--n-880:#e4e4e4;--n-900:#ebebeb;--n-920:#f0f0f0;--n-940:#f5f5f5;--n-960:#f8f8f8;--n-999:#f2f2f2}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--n-000:#ffffff;--n-020:#fbfbfb;--n-050:#e9e9e9;--n-100:#f5f5f5;--n-120:#fdfdfd;--n-200:#d8d8d8;--n-220:#cfcfcf;--n-250:#c4c4c4;--n-300:#adadad;--n-400:#9a9a9a;--n-500:#868686;--n-550:#6f6f6f;--n-560:#6a6a6a;--n-600:#5e5e5e;--n-650:#565656;--n-700:#4d4d4d;--n-750:#444444;--n-800:#333333;--n-850:#2b2b2b;--n-870:#242424;--n-880:#1f1f1f;--n-900:#1b1b1b;--n-920:#161616;--n-940:#101010;--n-960:#080808;--n-999:#1f1f1f}}:root[data-theme=light]{--n-000:#ffffff;--n-020:#fbfbfb;--n-050:#e9e9e9;--n-100:#f5f5f5;--n-120:#fdfdfd;--n-200:#d8d8d8;--n-220:#cfcfcf;--n-250:#c4c4c4;--n-300:#adadad;--n-400:#9a9a9a;--n-500:#868686;--n-550:#6f6f6f;--n-560:#6a6a6a;--n-600:#5e5e5e;--n-650:#565656;--n-700:#4d4d4d;--n-750:#444444;--n-800:#333333;--n-850:#2b2b2b;--n-870:#242424;--n-880:#1f1f1f;--n-900:#1b1b1b;--n-920:#161616;--n-940:#101010;--n-960:#080808;--n-999:#1f1f1f}#topbar #logo a{color:var(--accent);letter-spacing:.01em}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) #topbar #logo a{color:var(--n-999)}}:root[data-theme=light] #topbar #logo a{color:var(--n-999)}#topbar a.active,#topbar i.active{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}#sigTable tbody tr.selected td{background:var(--accent-dim)} -:root{--background:#1b1b1b;--foreground:#f2f2f2;--card:#232323;--card-foreground:#f2f2f2;--popover:#2a2a2a;--popover-foreground:#f2f2f2;--muted:#2a2a2a;--muted-foreground:#8c8c8c;--text-body:#adadad;--accent-surface:#2a2a2a;--border:#4d4d4d;--border-soft:#303030;--border-strong:#5a5a5a;--input:#303030;--glow:#242424;--primary:var(--accent, #f07c00);--primary-foreground:#1b1b1b;--ring:var(--accent, #f07c00);--destructive:#e05252;--data-good:#7d9b76;--data-warn:#d9a441;--data-critical:#e05252;--data-info:#8b7aa8;--node-surface:#2a2a2a;--node-edge:#5a5a5a;--chart-gridline:rgba(242, 242, 242, .06);--chart-axis-text:#adadad;--font-ui:'Geist',system-ui,-apple-system,'Segoe UI',sans-serif;--font-mono:'Geist Mono',ui-monospace,'SF Mono',Menlo,monospace;--font-display:'Montserrat','Geist',system-ui,sans-serif}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--background:#e9e9e9;--foreground:#1f1f1f;--card:#f5f5f5;--card-foreground:#1f1f1f;--popover:#fdfdfd;--popover-foreground:#1f1f1f;--muted:#e4e4e4;--muted-foreground:#767676;--text-body:#4d4d4d;--accent-surface:#e4e4e4;--border:#adadad;--border-soft:#d8d8d8;--border-strong:#8c8c8c;--input:#e4e4e4;--glow:#ffffff;--primary-foreground:#ffffff;--destructive:#b03a3a;--data-good:#4c6a45;--data-warn:#9a6d12;--data-critical:#b03a3a;--data-info:#5d4f78;--node-surface:#fdfdfd;--node-edge:#adadad;--chart-gridline:rgba(31, 31, 31, .08);--chart-axis-text:#4d4d4d}}:root[data-theme=light]{--background:#e9e9e9;--foreground:#1f1f1f;--card:#f5f5f5;--card-foreground:#1f1f1f;--popover:#fdfdfd;--popover-foreground:#1f1f1f;--muted:#e4e4e4;--muted-foreground:#767676;--text-body:#4d4d4d;--accent-surface:#e4e4e4;--border:#adadad;--border-soft:#d8d8d8;--border-strong:#8c8c8c;--input:#e4e4e4;--glow:#ffffff;--primary-foreground:#ffffff;--destructive:#b03a3a;--data-good:#4c6a45;--data-warn:#9a6d12;--data-critical:#b03a3a;--data-info:#5d4f78;--node-surface:#fdfdfd;--node-edge:#adadad;--chart-gridline:rgba(31, 31, 31, .08);--chart-axis-text:#4d4d4d}#wrapper::before{background:radial-gradient(ellipse at 30% -20%,var(--glow) 0,var(--background) 60%)}body{background-image:none}#sigTable td,.commentBody,.field-label,.sys-extra,.sys-meta,.ui-dialog .ui-dialog-content{color:var(--text-body)}#chainMap div.node>h4.nodeSystem,#sigTable td:nth-child(1),.field-value,.stats dd,.sys-name{color:var(--foreground)}#activityGraphControls>a,#cmd-palette .cmd-group,#sigTable th,#statusbar .bar-label,.field-group,.gate-list-label,.panel-title,.settings-tabs [role=tab],.sig-stats,.sys-links a,.ui-dialog .ui-dialog-title{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-foreground)}#activityGraphControls>a:hover,.settings-tabs [role=tab]:hover,.sys-links a:hover{color:var(--foreground)}.settings-tabs [role=tab][aria-selected=true]{color:var(--foreground)}#sigTable td:nth-child(1),#sigTable td:nth-child(3),#signature-count,#statusbar .bar-value,.node .nodeType,kbd{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.gridWidget{border-radius:4px}#cmd-palette,#inline-edit,#panel-menu,.ui-dialog{border-radius:4px;box-shadow:0 8px 30px rgba(0,0,0,.5)}#chainMap div.loop,#chainMap div.node{border-radius:4px}.chip,.gate-chip,.sig-chip,h4.chip{background:var(--popover);border:1px solid var(--border);border-radius:3px}.sig-chip.on{background:var(--muted);border-color:var(--border-strong);color:var(--foreground)}.controls .bar-btn.bar-primary:hover,.ui-dialog-buttonpane button.is-primary:hover{background:color-mix(in oklab,var(--primary) 85%,#fff);border-color:color-mix(in oklab,var(--primary) 85%,#fff)}::selection{background:var(--primary);color:var(--background)}#chainWidget>.controls>.bar-btn.bar-icon,.gridWidget>.controls>.bar-right .bar-btn,.gridWidget>.controls>.bar-right .panel-hide,.gridWidget>.controls>.panel-hide{color:var(--muted-foreground)}#chainWidget>.controls>.bar-btn.bar-icon:hover,.gridWidget>.controls>.bar-right .bar-btn:hover,.gridWidget>.controls>.panel-hide:hover{color:var(--foreground)}.gridWidget>.controls>.bar-right .bar-btn.bar-toggle.active{color:var(--primary)}#activityGraphControls>a{border:0;background:0 0;padding:0 2px;height:auto;color:var(--muted-foreground)}#activityGraphControls>a.active,#activityGraphControls>a[aria-current]{color:var(--primary)}#activityGraphControls{gap:var(--space-2) var(--space-3)}#activityLegend .legend-chip{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground)}#activityLegend .legend-chip:hover{color:var(--foreground)}#activityLegend .legend-chip.off{opacity:.5}#activityGraph{margin:var(--space-2) 0 0}.slider-wrap .ui-slider{background:var(--input);height:3px}.slider-wrap .ui-slider .ui-slider-handle{background:var(--primary);width:14px;height:14px;top:-6px;margin-left:-7px;border:2px solid var(--popover);box-sizing:border-box}.slider-value{font-family:var(--font-mono);font-size:11px;color:var(--muted-foreground)}.slider-pair>span{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}#topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;min-height:76px;padding:8px 18px;background:linear-gradient(180deg,var(--card),var(--background));border-bottom:1px solid var(--border)}#topbar>.align-center,#topbar>.align-left,#topbar>.align-right{display:flex;align-items:center;min-width:0}#topbar>.align-left{justify-content:flex-start;flex-direction:column;align-items:flex-start;gap:2px;overflow:visible}#topbar>.align-center{justify-content:center}#topbar>.align-right{justify-content:flex-end;gap:14px}.hdr-sys{display:flex;align-items:center;gap:8px}#hdr-system{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:-.01em;line-height:1.1;color:var(--foreground);text-decoration:none;white-space:nowrap}#hdr-system:hover{color:var(--primary)}#topbar #search{color:var(--muted-foreground);cursor:pointer}#topbar #search:hover{color:var(--foreground)}#topbar #systemSearch{margin:0;display:flex;align-items:center;gap:8px;font-size:11px}#topbar #currentSpan{display:inline-flex;align-items:center;gap:6px}#topbar #currentSpan .bar-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #EVEsystem{font-family:var(--font-mono);font-size:11px;color:var(--text-body)}#topbar #follow{color:var(--muted-foreground)}#topbar #follow.active{color:var(--primary)}#topbar #follow:hover{color:var(--foreground)}#topbar #follow.active:hover{color:var(--primary)}#topbar #searchSpan input{font-family:var(--font-mono);font-size:11px;min-height:24px;padding:0 8px;max-width:12rem;background:var(--input);border:1px solid var(--border);border-radius:3px;color:var(--foreground)}#topbar #logo{display:block;line-height:0}#topbar #logo img{height:46px;width:auto;display:block}#topbar #logo a::before,#topbar #logo::before{content:none!important}#topbar #logo .logo-light{display:none}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) #topbar #logo .logo-dark{display:none}:root:not([data-theme=dark]) #topbar #logo .logo-light{display:block}}:root[data-theme=light] #topbar #logo .logo-dark{display:none}:root[data-theme=light] #topbar #logo .logo-light{display:block}#topbar #login h3{margin:0}#topbar #login h3>a#user{display:flex;align-items:center;gap:10px;text-decoration:none}#topbar #user-avatar.avatar{width:44px;height:44px;border-radius:4px;border:1px solid var(--border);object-fit:cover;display:block}#topbar .hdr-pilot{display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1.15}#topbar #user-no-track,#topbar #user-track-name{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--foreground)}#topbar #user-track{display:inline-flex;align-items:center;gap:4px}#topbar #mask,#topbar .hdr-mask,#topbar .hdr-mask a{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);text-decoration:none}#topbar .hdr-mask a:hover,#topbar .hdr-mask a:hover #mask{color:var(--foreground)}#topbar .hdr-tools{display:flex;align-items:center;gap:4px;margin-left:4px;padding-left:14px;border-left:1px solid var(--border-soft)}#topbar .hdr-tools i{color:var(--muted-foreground);cursor:pointer}#topbar .hdr-tools i:hover{color:var(--foreground)}#topbar .hdr-tools [data-icon]::before{font-size:18px}#topbar #mask-menu{top:64px;right:18px}.gridWidget>.controls{background:linear-gradient(180deg,var(--popover),var(--card));border-bottom:1px solid var(--border)}#chainMap div.node,.gridWidget,.ui-dialog{border-radius:3px}.gridWidget{border:1px solid var(--border)}#sigTable tbody tr,.comment{border-color:var(--border-soft)}@media (max-width:767px),(max-height:599px){#topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:0;padding:8px 12px}#topbar>.align-center{display:none}#topbar>.align-left{flex:1 1 auto;flex-direction:column;align-items:flex-start}#topbar #systemSearch{display:none}#topbar #hdr-system{font-size:17px}#topbar>.align-right{flex:0 0 auto;width:auto;justify-content:flex-end;gap:8px}#topbar .hdr-pilot{display:none}#topbar #user-avatar.avatar{width:32px;height:32px}#topbar .hdr-tools{margin-left:0;padding-left:8px}#topbar #mask-menu{top:52px;right:12px}}#login #content .tracking-clone td.avatar img.avatar{width:36px;height:36px;border-radius:3px;border:1px solid var(--border)}#login #content #account #avatar img.avatar-lg{width:56px;height:56px;border-radius:4px;border:1px solid var(--border)}#login #content.dialog-like{background:var(--popover);border:1px solid var(--border);border-radius:4px;box-shadow:0 8px 30px rgba(0,0,0,.5);padding:var(--space-2)}#login #content .triangle{display:none}#login #logoutTable tbody th{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-foreground);background:0 0;border-bottom:1px solid var(--border);text-align:left;padding:4px 6px}#login #content #track{border-right:1px solid var(--border-soft)}#login #content #track .tracking-clone{border:1px solid var(--border);border-radius:3px;opacity:.7}#login #content #track .tracking-clone.active{border-color:var(--primary);opacity:1}#login #content #track .tracking-clone:hover{border-color:var(--border-strong);opacity:1}#login #content table .text{color:var(--text-body)}#login #content table td.name.text{color:var(--foreground)}#topbar #mask-menu-link{display:inline-block}#topbar #mask .mask{display:inline-flex;align-items:center;gap:6px;height:18px;padding:0 8px 0 7px;border:1px solid var(--border);border-radius:999px;background:var(--popover);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #mask-menu-link:hover .mask{border-color:var(--border-strong);color:var(--foreground)}#topbar #mask .mask i[data-icon]{width:7px;height:7px;border-radius:50%;background:var(--muted-foreground);display:inline-block}#topbar #mask .mask i[data-icon]::before{content:none}#topbar #mask .mask i.corporate{background:var(--primary)}#topbar #mask .mask i.alliance{background:var(--data-info)}#topbar #mask .mask i.character{background:var(--data-good)}#topbar #mask .mask i.global{background:var(--muted-foreground)}@media (min-width:768px) and (min-height:600px){#topbar{overflow:visible;height:64px;min-height:64px;padding-top:0;padding-bottom:0}#topbar>.align-center{align-self:flex-start;position:relative;z-index:3}#topbar #logo img{height:64px;margin-top:0;filter:drop-shadow(0 6px 14px rgba(0, 0, 0, .55))}.gridster{padding-top:10px}}@media (max-width:1279px){#topbar{position:sticky;top:0;z-index:30}}#chainTabs:not(:has(.tab.current))::before{content:"Following you";display:inline-flex;align-items:center;height:20px;padding:0 8px;margin-right:6px;border:1px solid color-mix(in oklab,var(--primary) 55%,var(--border));border-radius:999px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--primary)}@media (min-width:960px){.gridster>ul{grid-template-rows:minmax(240px,var(--top-row,46vh)) 1fr}}#topbar .hdr-tools .themebtn{background:0 0;border:1px solid var(--border);border-radius:3px;cursor:pointer;color:var(--muted-foreground);font-size:14px;line-height:1;padding:4px 8px;height:26px;display:inline-flex;align-items:center;flex:0 0 auto;font-family:var(--font-ui)}#topbar .hdr-tools .themebtn:hover{color:var(--primary);border-color:var(--primary)}#login #content #logoutTable{border-collapse:separate;border-spacing:0}#login #content #logoutTable>tbody>tr>td{vertical-align:top;padding:0 12px}#login #content #logoutTable>tbody>tr>td:first-child{padding-left:0}#login #content #logoutTable>tbody>tr>td:last-child{padding-right:0}#login #content #account,#login #content #track{min-width:260px}#login #content #account th,#login #content #track th{text-align:left;padding:0 0 6px}#login #content #tracking{display:flex;flex-direction:column;gap:6px;padding:0}#login #content #track .tracking-clone,#login #content #track .tracking-clone>tbody{display:block}#login #content #track .tracking-clone>tbody>tr{display:contents}#login #content #track .tracking-clone>tbody{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-rows:repeat(5,auto);column-gap:10px;row-gap:1px;padding:8px 10px}#login #content #track .tracking-clone td{padding:0;border:0;line-height:1.3}#login #content #track .tracking-clone td.avatar{grid-column:1;grid-row:1/span 5;display:flex;flex-direction:column;align-items:center;gap:4px}#login #content #track .tracking-clone td.avatar img.avatar{display:block}#login #content #track .tracking-clone td.avatar hr.bar{width:36px;margin:0;height:3px;border:0;border-radius:2px}#login #content #track .tracking-clone td.avatar .control-group{display:flex;gap:6px;margin-top:2px}#login #content #track .tracking-clone td.avatar .control-group i{font-size:14px;color:var(--muted-foreground);cursor:pointer}#login #content #track .tracking-clone td.avatar .control-group i.active,#login #content #track .tracking-clone td.avatar .control-group i:hover{color:var(--primary)}#login #content #track .tracking-clone td.name{grid-column:2;grid-row:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.system{grid-column:2;grid-row:2}#login #content #track .tracking-clone td.station{grid-column:2;grid-row:3;color:var(--muted-foreground);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.ship{grid-column:2;grid-row:4}#login #content #track .tracking-clone td.shipname{grid-column:2;grid-row:5;color:var(--muted-foreground);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.text:empty::before,#login #content #track .tracking-clone td.text:has(>:empty):not(:has(*))::before{content:none}#login #content #track .tracking-clone i.alert{grid-column:2;grid-row:1;justify-self:end}#login #content #account,#login #content #account>tbody{display:block}#login #content #account>tbody{display:grid;grid-template-columns:56px minmax(0,1fr);column-gap:12px;align-items:start}#login #content #account>tbody>tr{display:contents}#login #content #account th{grid-column:1/-1}#login #content #account td{padding:0;border:0}#login #content #account td#avatar{grid-column:1;grid-row:2/span 2}#login #content #account td#characterName{grid-column:2;grid-row:2;font-weight:600;padding-top:4px}#login #content #account td.text:not(#characterName){grid-column:2;grid-row:3;color:var(--muted-foreground)}#login #content #account td:empty{display:none}#login #content #logoutTable>tbody>tr:last-child>td{padding-top:12px}#login #content #logoutTable>tbody>tr:last-child>td:last-child{text-align:right}#topbar #mask-menu{min-width:176px;padding:4px 0;background:var(--popover);border:1px solid var(--border);border-radius:4px;box-shadow:0 8px 24px rgba(0,0,0,.45)}#topbar #mask-menu .triangle{display:none}#topbar #mask-menu a{display:flex;align-items:center;gap:8px;padding:6px 12px;margin:0;color:var(--foreground);font-size:var(--fs-sm);font-weight:500;text-decoration:none;line-height:1.2}#topbar #mask-menu a:hover{background:var(--muted);color:var(--foreground)}#topbar #mask-menu a .mask{display:inline-flex;align-items:center;gap:8px;color:inherit;font-size:inherit}#topbar #mask-menu a .mask i[data-icon]{width:8px;height:8px;border-radius:50%;padding:0;margin:0;flex:0 0 auto;display:inline-block;transform:none;background:var(--muted-foreground)}#topbar #mask-menu a .mask i[data-icon]::before{content:none}#topbar #mask-menu a .mask i.global{background:var(--muted-foreground)}#topbar #mask-menu a .mask i.character,#topbar #mask-menu a .mask i.personal{background:var(--data-good)}#topbar #mask-menu a .mask i.corporate{background:var(--primary)}#topbar #mask-menu a .mask i.alliance{background:var(--data-info)}#topbar #mask .mask i.personal{background:var(--data-good)}#topbar #mask-menu a.active::after{content:"\2713";margin-left:auto;color:var(--primary);font-size:12px;font-weight:700}#topbar #mask-menu hr.bar{height:1px;border:0;margin:4px 0;background:var(--border)}#topbar #mask-menu #admin,#topbar #mask-menu #mask-link{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase}#topbar #mask-menu #admin:hover,#topbar #mask-menu #mask-link:hover{color:var(--foreground)}#login #content #track .tracking-clone td.avatar .control-group{width:auto;min-width:36px;justify-content:center}#topbar .hdr-line2{display:flex;align-items:center;gap:8px}#topbar .hdr-ship{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground);white-space:nowrap;line-height:18px}#topbar .hdr-ship.hidden{display:none}@media (pointer:coarse){#topbar #mask .mask i[data-icon],#topbar #mask-menu a .mask i[data-icon]{min-width:0;min-height:0;width:7px;height:7px;padding:0}}@media (max-width:767px),(max-height:599px){#topbar>.align-left{min-width:0}#topbar #hdr-system{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#topbar>.align-right{flex-shrink:0}#topbar #login h3>a#user{gap:6px}}#install-tip{display:flex;align-items:center;gap:10px;padding:8px 12px;background:color-mix(in oklab,var(--primary) 14%,var(--card));border-bottom:1px solid var(--border);font-size:var(--fs-sm);color:var(--foreground)}#install-tip .tip-text{flex:1 1 auto;min-width:0}#install-tip button{min-height:32px;border-radius:4px;font:inherit;cursor:pointer}#install-tip .tip-install{background:var(--primary);color:#1b1207;border:0;padding:0 12px;font-weight:600}#install-tip .tip-close{background:0 0;border:0;color:var(--muted-foreground);font-size:18px;line-height:1;padding:0 6px}@media (min-width:960px){.gridster>ul{grid-template-rows:minmax(240px,var(--top-row,40vh)) 1fr}}#infoWidget>.controls .bar-right #sys-range{display:inline-flex;align-items:center;gap:2px;margin-right:6px;padding-right:8px;border-right:1px solid var(--border-soft)}#infoWidget>.controls .bar-right #sys-range a{display:inline-flex;align-items:center;height:22px;padding:0 6px;border-radius:3px;text-decoration:none;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground)}#infoWidget>.controls .bar-right #sys-range a:hover{color:var(--foreground);background:var(--muted)}#infoWidget>.controls .bar-right #sys-range a.active{color:var(--primary);background:var(--muted)}#activityGraphControls{flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3)}#activityGraphControls #infoLinks.in-legend-row{margin:0 0 0 auto;padding:0;border:0}#activityGraphControls #activityLegend{margin-right:0}#activityLegend{gap:2px 4px}#activityLegend .legend-chip{padding:0 5px 0 4px;letter-spacing:.06em;gap:5px}#activityGraphControls #infoLinks.in-legend-row{gap:8px}#activityGraphControls #infoLinks.in-legend-row a{letter-spacing:.12em;padding:0}#topbar #logo .logo-text{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:.02em;color:var(--foreground);line-height:64px}#topbar #logo .logo-lockup{display:inline-flex;flex-direction:column;align-items:center;gap:3px;line-height:1;padding:6px 0}#topbar #logo .lockup-small{font-family:var(--font-mono);font-size:8.5px;font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #logo .lockup-main{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-brand,var(--font-display));font-size:19px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--primary);padding-left:.2em}#topbar #logo .lockup-main.has-flourish::after,#topbar #logo .lockup-main.has-flourish::before{content:"";width:44px;height:2px;background:var(--primary);flex:0 0 auto;-webkit-mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px);mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px)}#topbar #logo .lockup-main.has-flourish::before{-webkit-mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px)}#dialog-signature #wormhole .side+.side::before,#dialog-signature #wormhole::before{content:none}#dialog-signature #wormhole{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}#dialog-signature #wormhole .side{position:relative;padding-left:20px;min-height:0}#dialog-signature #wormhole .side+.side{margin-top:4px;padding-top:8px;border-top:1px solid var(--border)}#dialog-signature .sideLabel{position:absolute;left:0;top:0;bottom:5px;width:14px;margin:0;padding:0;border:0;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--muted-foreground);white-space:nowrap;text-align:center}#dialog-signature #wormhole .side+.side .sideLabel{top:8px}#dialog-signature .row{margin:0 0 5px;gap:6px}#dialog-signature .row>.label:first-child{flex:0 0 50px}#dialog-signature #wormhole .row>.label:first-child{flex-basis:44px}#dialog-signature .ui-selectmenu-button,#dialog-signature input[type=text],#dialog-signature select{min-height:26px}#dialog-signature .mini-selector+label{min-height:24px;padding-top:0;padding-bottom:0}#dialog-signature #wormhole .side:first-child .sideLabel,#dialog-signature #wormhole .side:last-child .sideLabel{width:14px;bottom:5px;text-align:center;transform-origin:50% 50%}#dialog-signature #wormhole .side:last-child .sideLabel{top:8px}#dialog-signature input[type=text]{background:var(--input);border-color:var(--border)}#dialog-signature input[type=text]:focus{border-color:var(--primary)}#dialog-signature .quickSelectBar{gap:3px}#dialog-signature .quickSelectBar button{min-width:24px;padding:0 4px}.ui-dialog:has(#dialog-signature){width:min(392px,calc(100vw - 2rem))!important}#dialog-signature #form-signature>.row,#dialog-signature #site>.row{padding-left:20px}#dialog-signature .row{margin:0 0 6px;gap:6px;align-items:center}#dialog-signature #wormhole .row>.label:first-child,#dialog-signature .row>.label:first-child{flex:0 0 54px;text-align:right;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .row>.label:not(:first-child){font-family:var(--font-mono);color:var(--muted-foreground)}#dialog-signature .ui-selectmenu-button,#dialog-signature input[type=text],#dialog-signature select{min-height:26px;height:26px;box-sizing:border-box;background:var(--input);border:1px solid var(--border);border-radius:3px;font-size:12px;color:var(--foreground)}#dialog-signature input[type=text]:focus{border-color:var(--primary);outline:0;box-shadow:0 0 0 2px color-mix(in oklab,var(--primary) 30%,transparent)}#dialog-signature .signatureID{width:46px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em}#dialog-signature .wormholeType{width:58px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em}#dialog-signature [name=signatureName],#dialog-signature [name=wormholeName]{flex:1 1 auto;min-width:0}#dialog-signature #signatureType .ui-selectmenu-button{min-width:112px;display:inline-flex;align-items:center}#dialog-signature .custom-combobox{display:inline-flex;align-items:stretch}#dialog-signature .custom-combobox input{border-top-right-radius:0;border-bottom-right-radius:0}#dialog-signature .custom-combobox .custom-combobox-toggle{position:static;margin:0 0 0 -1px;width:24px;height:26px;padding:0;border:1px solid var(--border);border-radius:0 3px 3px 0;background:var(--muted);color:var(--muted-foreground);display:inline-flex;align-items:center;justify-content:center}#dialog-signature .custom-combobox .custom-combobox-toggle:hover{color:var(--foreground);border-color:var(--border-strong)}#dialog-signature [data-autocomplete=sigSystems]{flex:1 1 auto;display:inline-flex;min-width:0}#dialog-signature [data-autocomplete=sigSystems] .custom-combobox{flex:1 1 auto}#dialog-signature .leadsTo{width:auto;flex:1 1 auto;min-width:0}#dialog-signature .duration-picker{height:26px;padding:0 8px;gap:4px;border-color:var(--border);background:var(--input)}#dialog-signature .duration-picker input{width:22px;text-align:center;font-family:var(--font-mono);font-size:12px;height:auto;min-height:0;border:0;background:0 0}#dialog-signature .duration-picker label,#dialog-signature .duration-picker span{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .mini-selector+label{display:inline-flex;align-items:center;justify-content:center;min-height:26px;height:26px;padding:0 12px;margin:0 0 0 -1px;border:1px solid var(--border);border-radius:0;background:var(--input);font-size:12px;font-weight:500;color:var(--muted-foreground);line-height:1}#dialog-signature .mini-selector:first-of-type+label{border-radius:3px 0 0 3px;margin-left:0}#dialog-signature .row>.mini-selector+label:last-child{border-radius:0 3px 3px 0}#dialog-signature .mini-selector+label:hover{color:var(--foreground);background:var(--muted);border-color:var(--border)}#dialog-signature .mini-selector:checked+label{position:relative;z-index:1;border-color:transparent}#dialog-signature .mini-selector:checked+label.stable{background:var(--data-good);color:#12100e}#dialog-signature .mini-selector:checked+label.destab{background:var(--data-warn);color:#12100e}#dialog-signature .mini-selector:checked+label.critical{background:var(--data-critical);color:#fff}#dialog-signature .quickSelectBar{display:inline-flex;flex-wrap:nowrap;gap:3px;font-size:0;margin:0}#dialog-signature .row>.quickSelectBar{flex-basis:100%;margin-left:60px}#dialog-signature .quickSelectBar button{min-width:26px;height:22px;padding:0 5px;border:1px solid var(--border);border-radius:3px;background:var(--input);font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.04em;line-height:1;display:inline-flex;align-items:center;justify-content:center}#dialog-signature .quickSelectBar button:hover{border-color:var(--border-strong);background:var(--muted)}#dialog-signature #leadsToQuickBar button[value=High-Sec]{margin-left:8px}#dialog-signature .wormholeTypeQuickSelect{margin-left:0;flex-basis:auto}#dialog-signature .wormholeTypeQuickSelect:empty{display:none}#dialog-signature #wormhole .side{padding-left:20px}#dialog-signature #wormhole .side:first-child .sideLabel,#dialog-signature #wormhole .side:last-child .sideLabel,#dialog-signature .sideLabel{width:14px;left:0;font-size:9px;letter-spacing:.2em}#dialog-signature .sig-missing,#dialog-signature .sig-missing:focus{border-color:var(--destructive);box-shadow:none}#dialog-signature .custom-combobox .custom-combobox-toggle{position:relative;text-indent:0;overflow:hidden}#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space,#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon{display:none}#dialog-signature .custom-combobox .custom-combobox-toggle::after{content:"";width:6px;height:6px;margin-top:-3px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg)}#dialog-signature #signatureType .ui-selectmenu-button{display:inline-flex;align-items:center;gap:6px;padding:0 8px;width:auto!important}#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text{flex:1 1 auto;margin:0}#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon{order:2;margin:0;position:static}#dialog-signature .bdp-input{display:inline-flex;align-items:center;gap:12px;height:26px;padding:0 10px;border:1px solid var(--border);border-radius:3px;background:var(--input)}#dialog-signature .bdp-block{display:inline-flex;align-items:baseline;gap:4px}#dialog-signature .bdp-block br{display:none}#dialog-signature .bdp-block a{text-decoration:none}#dialog-signature .bdp-block a span{font-family:var(--font-mono);font-size:13px!important;font-weight:500;color:var(--foreground);line-height:1}#dialog-signature .bdp-block a:hover span{color:var(--primary)}#dialog-signature .bdp-block .bdp-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .bdp-block.hidden{display:none!important}#dialog-signature .bdp-input{gap:10px;padding:0 8px}#dialog-signature .custom-combobox{gap:0;max-width:100%}#dialog-signature .custom-combobox>*{margin:0}#dialog-signature .custom-combobox .custom-combobox-toggle{margin-left:-1px;flex:0 0 24px}#dialog-signature .custom-combobox input.leadsTo{flex:1 1 0;width:0;min-width:0}#dialog-signature [data-autocomplete=sigSystems]{max-width:100%}#dialog-signature .custom-combobox .custom-combobox-toggle{right:auto;left:auto;top:auto;bottom:auto;width:24px}@media (max-width:767px){#infoWidget>.controls .bar-right #sys-range{display:none}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"class name pips" "type type statics";align-items:center;column-gap:5px;row-gap:2px;width:120px;min-height:0;height:auto!important;padding:4px 7px 4px 6px;margin:0;border-left:3px solid var(--node-edge);box-shadow:0 2px 8px rgba(0,0,0,.35);overflow:visible}#chainMap div.node>.nodeClass{grid-area:class;margin:0;order:0}#chainMap div.node>.nodeSystem{grid-area:name;margin:0;padding:0;order:0;font-size:12px;line-height:16px}#chainMap div.node>.nodeActivity{grid-area:pips;position:static;margin:0;order:0;gap:2px;font-size:8px}#chainMap div.node>.nodeType{grid-area:type;margin:0;order:0;min-height:0;font-size:10px;line-height:14px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}#chainMap div.node>.statics{grid-area:statics;position:static;transform:none;margin:0;gap:3px;justify-content:flex-end;order:0}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:14px;min-width:18px;padding:0 5px;font-size:9px;box-shadow:none}#chainMap div.node>.nodeClass>span{height:15px;padding:0 5px;font-size:10px}#chainMap div.node>.nodeIcons{top:2px;right:4px}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name pips" "statics statics statics"}#chainMap div.node:has(>.nodeType:empty):not(:has(>.staticsspan)){grid-template-areas:"class name pips"}#chainMap div.loop{width:120px;padding:4px 7px}#chainMap div.greenNode.node{border-left-color:var(--data-good)}#chainMap div.yellowNode.node{border-left-color:var(--data-loot-orange)}#chainMap div.redNode.node{border-left-color:var(--data-critical)}#chainMap div.node:has(>.nodeClass.class-1),#chainMap div.node:has(>.nodeClass.class-2),#chainMap div.node:has(>.nodeClass.class-3),#chainMap div.node:has(>.nodeClass.wh){border-left-color:var(--data-info)}#chainMap div.node:has(>.nodeClass.class-4),#chainMap div.node:has(>.nodeClass.class-5){border-left-color:var(--data-loot-purple)}#chainMap div.node:has(>.nodeClass.class-6){border-left-color:var(--data-loot-pink)}#chainMap div.node:has(>.nodeClass.class-12){border-left-color:var(--data-loot-gold)}#chainMap div.node:has(>.nodeClass.class-15),#chainMap div.node:has(>.nodeClass.class-16),#chainMap div.node:has(>.nodeClass.class-17){border-left-color:var(--data-loot-red)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.redNode.node{background-color:color-mix(in oklab,var(--data-critical) 10%,var(--node-surface))}#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--data-loot-orange) 10%,var(--node-surface))}#chainMap div.greenNode.node{background-color:color-mix(in oklab,var(--data-good) 10%,var(--node-surface))}#chainWidget>#chainParent.content{overflow:auto}#sigTable td,#sigTable th{text-align:left}#sigTable .centerAlign{text-align:center}#sigTable .rightAlign{text-align:right}#sigTable .leftAlign{text-align:left}@media (min-width:960px) and (max-width:1099px){#infoWidget>.controls .bar-right #sys-range{display:none}#sigTable td:nth-child(5),#sigTable td:nth-child(6),#sigTable th:nth-child(5),#sigTable th:nth-child(6){width:3.2rem;padding-left:2px;padding-right:4px}#sigTable td:nth-child(2),#sigTable th:nth-child(2){width:4.6rem}}@media (max-width:767px){#sigTable thead{display:none}#sigTable tbody tr{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;grid-template-areas:"id type type age" "leads leads life mass";column-gap:10px;row-gap:2px;padding:7px 10px}#sigTable tbody td{display:block;width:auto!important;padding:0!important;height:auto;line-height:18px;text-align:left!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#sigTable tbody td:nth-child(1){grid-area:id;font-weight:600}#sigTable tbody td:nth-child(2){grid-area:type}#sigTable tbody td:nth-child(3){grid-area:age;text-align:right!important}#sigTable tbody td:nth-child(4){grid-area:leads}#sigTable tbody td:nth-child(5){grid-area:life;text-align:right!important;font-size:var(--fs-xs);color:var(--muted-foreground)}#sigTable tbody td:nth-child(6){grid-area:mass;text-align:right!important;font-size:var(--fs-xs);color:var(--muted-foreground)}#sigTable tbody td:empty{display:none}}#sigTable tbody td.leftAlign,#sigTable thead th.leftAlign{text-align:left}#sigTable tbody td.centerAlign,#sigTable thead th.centerAlign{text-align:center}#sigTable tbody td.rightAlign,#sigTable thead th.rightAlign{text-align:right}@media (max-width:767px){#sigTable tbody tr>td:nth-child(5),#sigTable tbody tr>td:nth-child(6){display:block!important}#sigTable tbody tr>td:empty{display:none!important}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{width:auto;min-width:118px;max-width:168px}#chainMap div.node>.nodeSystem{padding-right:0;overflow:visible;text-overflow:clip}#chainMap div.node>.nodeActivity{font-size:0;gap:3px}#chainMap div.node>.nodeActivity>span{font-size:8px;line-height:8px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.loop{width:auto;min-width:118px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto auto minmax(0,auto)}#chainMap div.node>h4.nodeSystem{padding-right:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px;height:auto;line-height:16px}#chainMap div.node:has(>.nodeClass.hisec){border-left-color:var(--data-good)}#chainMap div.node:has(>.nodeClass.lowsec){border-left-color:var(--data-loot-orange)}#chainMap div.node:has(>.nodeClass.nullsec){border-left-color:var(--data-critical)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto max-content auto}#chainMap div.greenNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-good)}#chainMap div.yellowNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-loot-orange)}#chainMap div.redNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-critical)}#chainMap div.greenNode.node:has(>.nodeClass.hisec),#chainMap div.redNode.node:has(>.nodeClass.hisec),#chainMap div.yellowNode.node:has(>.nodeClass.hisec){border-left-color:var(--data-good)}#chainMap div.greenNode.node:has(>.nodeClass.lowsec),#chainMap div.redNode.node:has(>.nodeClass.lowsec),#chainMap div.yellowNode.node:has(>.nodeClass.lowsec){border-left-color:var(--data-loot-orange)}#chainMap div.greenNode.node:has(>.nodeClass.nullsec),#chainMap div.redNode.node:has(>.nodeClass.nullsec),#chainMap div.yellowNode.node:has(>.nodeClass.nullsec){border-left-color:var(--data-critical)}#chainMap div.greenNode.node:has(>.nodeClass.wh),#chainMap div.redNode.node:has(>.nodeClass.wh),#chainMap div.yellowNode.node:has(>.nodeClass.wh){border-left-color:var(--data-info)}#chainMap div.greenNode.node:has(>.nodeClass.class-4),#chainMap div.greenNode.node:has(>.nodeClass.class-5),#chainMap div.redNode.node:has(>.nodeClass.class-4),#chainMap div.redNode.node:has(>.nodeClass.class-5),#chainMap div.yellowNode.node:has(>.nodeClass.class-4),#chainMap div.yellowNode.node:has(>.nodeClass.class-5){border-left-color:var(--data-loot-purple)}#chainMap div.greenNode.node:has(>.nodeClass.class-6),#chainMap div.redNode.node:has(>.nodeClass.class-6),#chainMap div.yellowNode.node:has(>.nodeClass.class-6){border-left-color:var(--data-loot-pink)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{width:fit-content;margin:0 auto}#chainMap div.greenNode.node.sec-hisec,#chainMap div.node.sec-hisec,#chainMap div.redNode.node.sec-hisec,#chainMap div.yellowNode.node.sec-hisec{border-left-color:var(--data-good)}#chainMap div.greenNode.node.sec-lowsec,#chainMap div.node.sec-lowsec,#chainMap div.redNode.node.sec-lowsec,#chainMap div.yellowNode.node.sec-lowsec{border-left-color:var(--data-loot-orange)}#chainMap div.greenNode.node.sec-nullsec,#chainMap div.node.sec-nullsec,#chainMap div.redNode.node.sec-nullsec,#chainMap div.yellowNode.node.sec-nullsec{border-left-color:var(--data-critical)}#chainMap div.greenNode.node.sec-triglavian,#chainMap div.node.sec-triglavian,#chainMap div.redNode.node.sec-triglavian,#chainMap div.yellowNode.node.sec-triglavian{border-left-color:var(--data-loot-red)}#chainMap div.greenNode.node.sec-wh,#chainMap div.node.sec-wh,#chainMap div.redNode.node.sec-wh,#chainMap div.yellowNode.node.sec-wh{border-left-color:var(--data-info)}#chainMap div.greenNode.node.cls-4,#chainMap div.greenNode.node.cls-5,#chainMap div.node.cls-4,#chainMap div.node.cls-5,#chainMap div.redNode.node.cls-4,#chainMap div.redNode.node.cls-5,#chainMap div.yellowNode.node.cls-4,#chainMap div.yellowNode.node.cls-5{border-left-color:var(--data-loot-purple)}#chainMap div.greenNode.node.cls-6,#chainMap div.node.cls-6,#chainMap div.redNode.node.cls-6,#chainMap div.yellowNode.node.cls-6{border-left-color:var(--data-loot-pink)}#chainMap div.greenNode.node.cls-12,#chainMap div.node.cls-12,#chainMap div.redNode.node.cls-12,#chainMap div.yellowNode.node.cls-12{border-left-color:var(--data-loot-gold)}#chainMap div.node.cls-15,#chainMap div.node.cls-16,#chainMap div.node.cls-17{border-left-color:var(--data-loot-red)}#chainMap .currentNode>div.node,#chainMap .currentNode>div.node.sec-hisec,#chainMap .currentNode>div.node.sec-wh{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{column-gap:4px;padding:3px 6px 3px 5px;min-width:104px}#chainMap div.node>.nodeClass>span{padding:0 4px;height:14px}#chainMap div.node>.nodeActivity{gap:2px}#chainMap div.node>.nodeActivity>span{font-size:7px;line-height:7px}#sigTable tbody td:nth-child(4),#sigTable tbody td:nth-child(4).centerAlign,#sigTable tbody td:nth-child(4).rightAlign,#sigTable thead th:nth-child(4),#sigTable thead th:nth-child(4).centerAlign,#sigTable thead th:nth-child(4).rightAlign{text-align:left}#chainMap div.node>h4.nodeClass>span{background:var(--node-edge);color:#fff;-webkit-text-fill-color:#fff;font-weight:700;letter-spacing:.04em}#chainMap div.node>h4.nodeClass>span.hisec{background:var(--data-good)}#chainMap div.node>h4.nodeClass>span.lowsec{background:var(--data-loot-orange)}#chainMap div.node>h4.nodeClass>span.nullsec{background:var(--data-critical)}#chainMap div.node>h4.nodeClass>span.triglavian{background:var(--data-loot-red)}#chainMap div.node>h4.nodeClass>span.wh{background:var(--data-info)}#chainMap div.node>h4.nodeClass>span.class-4,#chainMap div.node>h4.nodeClass>span.class-5{background:var(--data-loot-purple)}#chainMap div.node>h4.nodeClass>span.class-6{background:var(--data-loot-pink)}#chainMap div.node>h4.nodeClass>span.class-12{background:var(--data-loot-gold);color:#1b1b1b;-webkit-text-fill-color:#1b1b1b}#chainMap div.node>h4.nodeClass>span.class-15,#chainMap div.node>h4.nodeClass>span.class-16,#chainMap div.node>h4.nodeClass>span.class-17{background:var(--data-loot-red)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-areas:"class name pips" "type statics statics"}#chainMap div.node>.nodeType{white-space:nowrap}#chainMap div.node>.statics{flex-wrap:wrap;justify-content:flex-end;row-gap:2px;min-width:0}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name pips" "statics statics statics"}@keyframes flare-glow{0%,100%{opacity:.28;transform:scale(.96)}50%{opacity:.8;transform:scale(1.06)}}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{position:relative;z-index:0;border-top-width:1px;border-top-color:var(--node-edge)}#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{content:"";position:absolute;inset:-3px;z-index:-1;border-radius:inherit;background:var(--flare,transparent);filter:blur(9px);animation:1.4s ease-in-out infinite flare-glow;pointer-events:none}#chainMap div.redNode.node{--flare:var(--data-critical)}#chainMap div.yellowNode.node{--flare:var(--data-loot-orange)}#chainMap div.greenNode.node{--flare:var(--data-good)}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--flare) 8%,var(--node-surface))}@media (prefers-reduced-motion:reduce){#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{animation:none;opacity:.55}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto minmax(0,max-content);grid-template-areas:"class name" "type pips" "statics statics";column-gap:4px;row-gap:1px;min-width:92px;max-width:140px;padding:3px 6px 3px 5px}#chainMap div.node>.nodeType{grid-area:type}#chainMap div.node>.nodeActivity{grid-area:pips;justify-self:end}#chainMap div.node>.statics{grid-area:statics;justify-content:flex-start;margin-top:1px}#chainMap div.node>h4.nodeSystem{max-width:104px}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name" "statics statics"}#chainMap div.node:has(>.nodeType:empty):not(:has(>.staticsspan)){grid-template-areas:"class name"}#chainMap div.node:not(:has(>.staticsspan)){grid-template-areas:"class name" "type pips"}#chainMap div.node:has(>.nodeType:empty)>.nodeActivity{grid-area:name;justify-self:end}#chainMap div.node>.nodeIcons{top:auto;bottom:3px;right:5px}#chainMap div.node>.nodeIcons>div{gap:3px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:block;position:relative;overflow:visible;width:fit-content;min-width:96px;max-width:150px;height:auto!important;padding:3px 10px;margin:6px auto 8px;text-align:center}#chainMap div.node>h4.nodeSystem{display:block;margin:0;padding:0 10px 0 0;font-size:12px;line-height:14px;max-width:none}#chainMap div.node>.nodeType{display:block;margin:0;font-size:9.5px;line-height:11px;letter-spacing:.04em;min-height:0}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node>.nodeClass{position:absolute;top:-7px;left:-5px;margin:0;line-height:1;z-index:2}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.statics{position:absolute;left:6px;right:6px;bottom:-7px;margin:0;z-index:2;display:flex;justify-content:center;gap:3px;flex-wrap:nowrap}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:12px;min-width:16px;padding:0 4px;font-size:8.5px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.nodeActivity{position:absolute;right:4px;bottom:3px;top:auto;margin:0;gap:2px;z-index:1}#chainMap div.node>.nodeActivity>span{font-size:6px;line-height:6px}#chainMap div.node>.nodeIcons{position:absolute;top:-6px;right:-4px;bottom:auto;left:auto}#chainMap div.node>.nodeIcons>div{gap:2px}#chainMap div.node>.nodeIcons .badge{height:12px;font-size:9px;padding:0 4px}#chainMap div.node.frig-chain{border-width:1px}#chainMap div.loop{width:fit-content;min-width:0;padding:3px 10px;margin:6px auto 8px}#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{content:none;animation:none}@keyframes flare-halo{0%,100%{box-shadow:0 0 6px 1px color-mix(in oklab,var(--flare) 45%,transparent),0 2px 8px rgba(0,0,0,.35)}50%{box-shadow:0 0 16px 5px color-mix(in oklab,var(--flare) 85%,transparent),0 2px 8px rgba(0,0,0,.35)}}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{z-index:auto;border-color:color-mix(in oklab,var(--flare) 60%,var(--node-edge));animation:1.4s ease-in-out infinite flare-halo}@media (prefers-reduced-motion:reduce){#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{animation:none;box-shadow:0 0 12px 3px color-mix(in oklab,var(--flare) 70%,transparent)}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto max-content;grid-template-areas:"class name" "type type";align-items:center;column-gap:4px;row-gap:0;min-width:92px;max-width:160px;padding:3px 8px 9px 6px;margin:4px auto 9px;text-align:left}#chainMap div.node>.nodeClass{position:static;grid-area:class;margin:0;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:none}#chainMap div.node>h4.nodeSystem{grid-area:name;padding:0;line-height:15px;max-width:110px}#chainMap div.node>.nodeType{grid-area:type;text-align:left;padding-right:24px;line-height:11px}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){padding-bottom:3px;grid-template-areas:"class name"}#chainMap div.node:has(>.nodeType:empty):has(>.staticsspan){padding-bottom:8px}#chainMap div.node>.statics{bottom:-7px;left:4px;right:4px;justify-content:flex-start}#chainMap div.node>.nodeActivity{right:5px;bottom:9px}#chainMap div.node:has(>.nodeType:empty)>.nodeActivity{bottom:4px}#chainMap div.node>.nodeIcons{top:-5px;right:-3px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto minmax(0,max-content) auto auto;grid-template-areas:"class name icons pips" "type type type type";align-items:center;column-gap:4px;row-gap:1px;width:fit-content;min-width:96px;max-width:176px;height:auto!important;padding:3px 7px 4px 5px;margin:3px auto 12px;position:relative;overflow:visible;text-align:left}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name icons pips";padding-bottom:3px}#chainMap div.node>.nodeClass{grid-area:class;position:static;margin:0;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:none}#chainMap div.node>h4.nodeSystem{grid-area:name;margin:0;padding:0;line-height:15px;font-size:12px;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#chainMap div.node>.nodeIcons{grid-area:icons;position:static;display:flex;align-items:center;gap:3px;width:auto;height:auto;margin:0;top:auto;right:auto;left:auto;bottom:auto}#chainMap div.node>.nodeIcons:empty{display:none}#chainMap div.node>.nodeIcons>div{float:none;display:flex;align-items:center;gap:3px}#chainMap div.node>.nodeIcons .invisible{display:none}#chainMap div.node>.nodeIcons .badge{height:12px;padding:0 4px;font-size:9px}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeActivity{grid-area:pips;position:static;justify-self:end;display:flex;align-items:center;gap:2px;width:auto;height:auto;margin:0;font-size:0}#chainMap div.node>.nodeActivity>span{font-size:6px;line-height:6px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.node>.nodeType{grid-area:type;margin:0;padding:0;text-align:left;font-family:var(--font-mono);font-size:9.5px;line-height:11px;letter-spacing:.04em;text-transform:uppercase;min-height:0;white-space:nowrap}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node>.statics{position:absolute;left:5px;right:5px;top:100%;bottom:auto;margin:-4px 0 0;transform:none;z-index:2;display:flex;justify-content:flex-start;gap:3px;flex-wrap:nowrap}#chainMap div.node>.statics:empty{display:none}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:12px;min-width:16px;padding:0 4px;font-size:8.5px;line-height:1;box-shadow:0 0 0 2px var(--background)}#chainMap div.loop{display:block;width:fit-content;min-width:0;padding:3px 8px;margin:3px auto 12px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-areas:none;grid-template-columns:auto minmax(0,max-content) auto auto;grid-template-rows:auto auto;grid-auto-rows:0}#chainMap div.node>.nodeClass{grid-area:auto;grid-column:1;grid-row:1}#chainMap div.node>h4.nodeSystem{grid-area:auto;grid-column:2;grid-row:1}#chainMap div.node>.nodeIcons{grid-area:auto;grid-column:3;grid-row:1}#chainMap div.node>.nodeActivity{grid-area:auto;grid-column:4;grid-row:1}#chainMap div.node>.nodeType{grid-area:auto;grid-column:1/5;grid-row:2}#chainMap div.node>.statics{grid-area:auto}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto}#chainMap div.node>h4.nodeSystem{overflow:clip;text-overflow:ellipsis;min-width:min-content}#chainMap div.node>h4.nodeSystem a{white-space:nowrap}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:minmax(0,max-content);grid-template-rows:auto auto auto;grid-auto-rows:0;justify-items:center;align-items:center;row-gap:0;column-gap:0;width:fit-content;min-width:96px;max-width:176px;height:auto!important;padding:4px 10px 5px;margin:3px auto 12px;position:relative;overflow:visible;text-align:center}#chainMap div.node>.nodeClass{grid-column:1;grid-row:1;position:static;margin:0;display:inline-flex;align-items:center;gap:4px;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 5px;font-size:9px}#chainMap div.node>h4.nodeSystem{grid-column:1;grid-row:2;margin:0;padding:0;line-height:16px;font-size:12.5px;font-weight:600;max-width:150px;min-width:min-content;overflow:clip;text-overflow:ellipsis;white-space:nowrap}#chainMap div.node>.nodeType{grid-column:1;grid-row:3;margin:0;padding:0;text-align:center;font-family:var(--font-mono);font-size:10px;line-height:12px;letter-spacing:.06em;text-transform:uppercase;min-height:0;white-space:nowrap}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto auto}#chainMap div.node>.nodeIcons{grid-column:1;grid-row:1;position:static;display:contents}#chainMap div.node>.nodeIcons>div{float:none;display:contents}#chainMap div.node>.nodeIcons>div:first-child{display:inline-flex;align-items:center;position:absolute;top:4px;right:8px;gap:2px}#chainMap div.node>.nodeIcons>div:last-child{display:inline-flex;align-items:center;position:absolute;top:-6px;right:-6px;gap:2px}#chainMap div.node>.nodeIcons .invisible{display:none}#chainMap div.node>.nodeIcons .badge{height:13px;padding:0 5px;font-size:9px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeActivity{position:absolute;left:8px;bottom:-3px;top:auto;right:auto;margin:0;width:auto;height:auto;display:flex;gap:3px;font-size:0;z-index:2}#chainMap div.node>.nodeActivity>span{font-size:7px;line-height:7px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.node>.statics{position:absolute;left:auto;right:6px;top:100%;bottom:auto;margin:-5px 0 0;transform:none;display:flex;justify-content:flex-end;gap:3px;flex-wrap:nowrap;z-index:2}#chainMap div.node>.statics:empty{display:none}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:13px;min-width:17px;padding:0 5px;font-size:9px;line-height:1;box-shadow:0 0 0 2px var(--background)}#chainMap div.loop{display:block;width:fit-content;min-width:0;padding:4px 10px;margin:3px auto 12px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-rows:auto auto;padding:7px 10px 6px;margin:9px auto 12px;min-width:92px}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto}#chainMap div.node>.nodeClass{position:absolute;top:-7px;left:-5px;margin:0;z-index:3}#chainMap div.node>.nodeClass>span{box-shadow:0 0 0 2px var(--background)}#chainMap div.node>h4.nodeSystem{grid-row:1}#chainMap div.node>.nodeType{grid-row:2}#chainMap div.node>.nodeIcons>div:first-child{top:-7px;right:6px}#chainMap div.node>.nodeIcons>div:last-child{top:-7px;right:-6px}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:12px;text-shadow:0 0 3px var(--background)}#chainMap div.node>.nodeActivity{bottom:-4px;left:7px}#chainMap div.node>.statics{margin-top:-6px;right:5px}#chainWidget>#chainParent.content{position:relative}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{padding-top:14px;padding-bottom:7px;margin-top:10px}#chainMap div.node>.nodeClass{top:-7px;left:-5px}#chainMap div.node>.nodeClass>span{height:14px}#chainWidget>#chainParent.content{position:relative!important}#chainMap div.node>.nodeActivity,#chainMap div.node>.nodeClass,#chainMap div.node>.nodeIcons>div,#chainMap div.node>.statics{grid-area:auto;grid-row:auto;grid-column:auto}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{margin-top:8px;margin-bottom:9px}#chainMap div.node>.nodeIcons>div:last-child{top:2px;right:3px;gap:1px}#chainMap div.node>.nodeIcons>div:first-child{top:-6px;right:22px}#chainMap div.node>.nodeIcons .badge{height:12px;padding:0 4px;font-size:8.5px;box-shadow:none}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeIcons [data-icon=user]{padding:0}#chainWidget>#chainParent.content{padding-top:12px!important}#chainMap div.node>.nodeIcons .badge{justify-content:center;min-width:14px;padding:0 4px;box-sizing:border-box;text-align:center} +:root{--background:#1b1b1b;--foreground:#f2f2f2;--card:#232323;--card-foreground:#f2f2f2;--popover:#2a2a2a;--popover-foreground:#f2f2f2;--muted:#2a2a2a;--muted-foreground:#8c8c8c;--text-body:#adadad;--accent-surface:#2a2a2a;--border:#4d4d4d;--border-soft:#303030;--border-strong:#5a5a5a;--input:#303030;--glow:#242424;--primary:var(--accent, #f07c00);--primary-foreground:#1b1b1b;--ring:var(--accent, #f07c00);--destructive:#e05252;--data-good:#7d9b76;--data-warn:#d9a441;--data-critical:#e05252;--data-info:#8b7aa8;--node-surface:#2a2a2a;--node-edge:#5a5a5a;--chart-gridline:rgba(242, 242, 242, .06);--chart-axis-text:#adadad;--font-ui:'Geist',system-ui,-apple-system,'Segoe UI',sans-serif;--font-mono:'Geist Mono',ui-monospace,'SF Mono',Menlo,monospace;--font-display:'Montserrat','Geist',system-ui,sans-serif}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--background:#e9e9e9;--foreground:#1f1f1f;--card:#f5f5f5;--card-foreground:#1f1f1f;--popover:#fdfdfd;--popover-foreground:#1f1f1f;--muted:#e4e4e4;--muted-foreground:#767676;--text-body:#4d4d4d;--accent-surface:#e4e4e4;--border:#adadad;--border-soft:#d8d8d8;--border-strong:#8c8c8c;--input:#e4e4e4;--glow:#ffffff;--primary-foreground:#ffffff;--destructive:#b03a3a;--data-good:#4c6a45;--data-warn:#9a6d12;--data-critical:#b03a3a;--data-info:#5d4f78;--node-surface:#fdfdfd;--node-edge:#adadad;--chart-gridline:rgba(31, 31, 31, .08);--chart-axis-text:#4d4d4d}}:root[data-theme=light]{--background:#e9e9e9;--foreground:#1f1f1f;--card:#f5f5f5;--card-foreground:#1f1f1f;--popover:#fdfdfd;--popover-foreground:#1f1f1f;--muted:#e4e4e4;--muted-foreground:#767676;--text-body:#4d4d4d;--accent-surface:#e4e4e4;--border:#adadad;--border-soft:#d8d8d8;--border-strong:#8c8c8c;--input:#e4e4e4;--glow:#ffffff;--primary-foreground:#ffffff;--destructive:#b03a3a;--data-good:#4c6a45;--data-warn:#9a6d12;--data-critical:#b03a3a;--data-info:#5d4f78;--node-surface:#fdfdfd;--node-edge:#adadad;--chart-gridline:rgba(31, 31, 31, .08);--chart-axis-text:#4d4d4d}#wrapper::before{background:radial-gradient(ellipse at 30% -20%,var(--glow) 0,var(--background) 60%)}body{background-image:none}.introjs-tooltip{background-color:var(--popover);border:1px solid var(--border);color:var(--popover-foreground)}.introjs-arrow.top,.introjs-arrow.top-middle,.introjs-arrow.top-right{border-bottom-color:var(--popover)}.introjs-arrow.right,.introjs-arrow.right-bottom{border-left-color:var(--popover)}.introjs-arrow.bottom{border-top-color:var(--popover)}.introjs-arrow.left,.introjs-arrow.left-bottom{border-right-color:var(--popover)}#sigTable td,.commentBody,.field-label,.sys-extra,.sys-meta,.ui-dialog .ui-dialog-content{color:var(--text-body)}#chainMap div.node>h4.nodeSystem,#sigTable td:nth-child(1),.field-value,.stats dd,.sys-name{color:var(--foreground)}#activityGraphControls>a,#cmd-palette .cmd-group,#sigTable th,#statusbar .bar-label,.field-group,.gate-list-label,.panel-title,.settings-tabs [role=tab],.sig-stats,.sys-links a,.ui-dialog .ui-dialog-title{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-foreground)}#activityGraphControls>a:hover,.settings-tabs [role=tab]:hover,.sys-links a:hover{color:var(--foreground)}.settings-tabs [role=tab][aria-selected=true]{color:var(--foreground)}#sigTable td:nth-child(1),#sigTable td:nth-child(3),#signature-count,#statusbar .bar-value,.node .nodeType,kbd{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.gridWidget{border-radius:4px}#cmd-palette,#inline-edit,#panel-menu,.ui-dialog{border-radius:4px;box-shadow:0 8px 30px rgba(0,0,0,.5)}#chainMap div.loop,#chainMap div.node{border-radius:4px}.chip,.gate-chip,.sig-chip,h4.chip{background:var(--popover);border:1px solid var(--border);border-radius:3px}.sig-chip.on{background:var(--muted);border-color:var(--border-strong);color:var(--foreground)}.controls .bar-btn.bar-primary:hover,.ui-dialog-buttonpane button.is-primary:hover{background:color-mix(in oklab,var(--primary) 85%,#fff);border-color:color-mix(in oklab,var(--primary) 85%,#fff)}::selection{background:var(--primary);color:var(--background)}#chainWidget>.controls>.bar-btn.bar-icon,.gridWidget>.controls>.bar-right .bar-btn,.gridWidget>.controls>.bar-right .panel-hide,.gridWidget>.controls>.panel-hide{color:var(--muted-foreground)}#chainWidget>.controls>.bar-btn.bar-icon:hover,.gridWidget>.controls>.bar-right .bar-btn:hover,.gridWidget>.controls>.panel-hide:hover{color:var(--foreground)}.gridWidget>.controls>.bar-right .bar-btn.bar-toggle.active{color:var(--primary)}#activityGraphControls>a{border:0;background:0 0;padding:0 2px;height:auto;color:var(--muted-foreground)}#activityGraphControls>a.active,#activityGraphControls>a[aria-current]{color:var(--primary)}#activityGraphControls{gap:var(--space-2) var(--space-3)}#activityLegend .legend-chip{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-foreground)}#activityLegend .legend-chip:hover{color:var(--foreground)}#activityLegend .legend-chip.off{opacity:.5}#activityGraph{margin:var(--space-2) 0 0}.slider-wrap .ui-slider{background:var(--input);height:3px}.slider-wrap .ui-slider .ui-slider-handle{background:var(--primary);width:14px;height:14px;top:-6px;margin-left:-7px;border:2px solid var(--popover);box-sizing:border-box}.slider-value{font-family:var(--font-mono);font-size:11px;color:var(--muted-foreground)}.slider-pair>span{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}#topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;min-height:76px;padding:8px 18px;background:linear-gradient(180deg,var(--card),var(--background));border-bottom:1px solid var(--border)}#topbar>.align-center,#topbar>.align-left,#topbar>.align-right{display:flex;align-items:center;min-width:0}#topbar>.align-left{justify-content:flex-start;flex-direction:column;align-items:flex-start;gap:2px;overflow:visible}#topbar>.align-center{justify-content:center}#topbar>.align-right{justify-content:flex-end;gap:14px}.hdr-sys{display:flex;align-items:center;gap:8px}#hdr-system{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:-.01em;line-height:1.1;color:var(--foreground);text-decoration:none;white-space:nowrap}#hdr-system:hover{color:var(--primary)}#topbar #search{color:var(--muted-foreground);cursor:pointer}#topbar #search:hover{color:var(--foreground)}#topbar #systemSearch{margin:0;display:flex;align-items:center;gap:8px;font-size:11px}#topbar #currentSpan{display:inline-flex;align-items:center;gap:6px}#topbar #currentSpan .bar-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #EVEsystem{font-family:var(--font-mono);font-size:11px;color:var(--text-body)}#topbar #follow{color:var(--muted-foreground)}#topbar #follow.active{color:var(--primary)}#topbar #follow:hover{color:var(--foreground)}#topbar #follow.active:hover{color:var(--primary)}#topbar #searchSpan input{font-family:var(--font-mono);font-size:11px;min-height:24px;padding:0 8px;max-width:12rem;background:var(--input);border:1px solid var(--border);border-radius:3px;color:var(--foreground)}#topbar #logo{display:block;line-height:0}#topbar #logo img{height:46px;width:auto;display:block}#topbar #logo a::before,#topbar #logo::before{content:none!important}#topbar #logo .logo-light{display:none}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) #topbar #logo .logo-dark{display:none}:root:not([data-theme=dark]) #topbar #logo .logo-light{display:block}}:root[data-theme=light] #topbar #logo .logo-dark{display:none}:root[data-theme=light] #topbar #logo .logo-light{display:block}#topbar #login h3{margin:0}#topbar #login h3>a#user{display:flex;align-items:center;gap:10px;text-decoration:none}#topbar #user-avatar.avatar{width:44px;height:44px;border-radius:4px;border:1px solid var(--border);object-fit:cover;display:block}#topbar .hdr-pilot{display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1.15}#topbar #user-no-track,#topbar #user-track-name{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--foreground)}#topbar #user-track{display:inline-flex;align-items:center;gap:4px}#topbar #mask,#topbar .hdr-mask,#topbar .hdr-mask a{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);text-decoration:none}#topbar .hdr-mask a:hover,#topbar .hdr-mask a:hover #mask{color:var(--foreground)}#topbar .hdr-tools{display:flex;align-items:center;gap:4px;margin-left:4px;padding-left:14px;border-left:1px solid var(--border-soft)}#topbar .hdr-tools i{color:var(--muted-foreground);cursor:pointer}#topbar .hdr-tools i:hover{color:var(--foreground)}#topbar .hdr-tools [data-icon]::before{font-size:18px}#topbar #mask-menu{top:64px;right:18px}.gridWidget>.controls{background:linear-gradient(180deg,var(--popover),var(--card));border-bottom:1px solid var(--border)}#chainMap div.node,.gridWidget,.ui-dialog{border-radius:3px}.gridWidget{border:1px solid var(--border)}#sigTable tbody tr,.comment{border-color:var(--border-soft)}@media (max-width:767px),(max-height:599px){#topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:0;padding:8px 12px}#topbar>.align-center{display:none}#topbar>.align-left{flex:1 1 auto;flex-direction:column;align-items:flex-start}#topbar #systemSearch{display:none}#topbar #hdr-system{font-size:17px}#topbar>.align-right{flex:0 0 auto;width:auto;justify-content:flex-end;gap:8px}#topbar .hdr-pilot{display:none}#topbar #user-avatar.avatar{width:32px;height:32px}#topbar .hdr-tools{margin-left:0;padding-left:8px}#topbar #mask-menu{top:52px;right:12px}}#login #content .tracking-clone td.avatar img.avatar{width:36px;height:36px;border-radius:3px;border:1px solid var(--border)}#login #content #account #avatar img.avatar-lg{width:56px;height:56px;border-radius:4px;border:1px solid var(--border)}#login #content.dialog-like{background:var(--popover);border:1px solid var(--border);border-radius:4px;box-shadow:0 8px 30px rgba(0,0,0,.5);padding:var(--space-2)}#login #content .triangle{display:none}#login #logoutTable tbody th{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-foreground);background:0 0;border-bottom:1px solid var(--border);text-align:left;padding:4px 6px}#login #content #track{border-right:1px solid var(--border-soft)}#login #content #track .tracking-clone{border:1px solid var(--border);border-radius:3px;opacity:.7}#login #content #track .tracking-clone.active{border-color:var(--primary);opacity:1}#login #content #track .tracking-clone:hover{border-color:var(--border-strong);opacity:1}#login #content table .text{color:var(--text-body)}#login #content table td.name.text{color:var(--foreground)}#topbar #mask-menu-link{display:inline-block}#topbar #mask .mask{display:inline-flex;align-items:center;gap:6px;height:18px;padding:0 8px 0 7px;border:1px solid var(--border);border-radius:999px;background:var(--popover);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #mask-menu-link:hover .mask{border-color:var(--border-strong);color:var(--foreground)}#topbar #mask .mask i[data-icon]{width:7px;height:7px;border-radius:50%;background:var(--muted-foreground);display:inline-block}#topbar #mask .mask i[data-icon]::before{content:none}#topbar #mask .mask i.corporate{background:var(--primary)}#topbar #mask .mask i.alliance{background:var(--data-info)}#topbar #mask .mask i.character{background:var(--data-good)}#topbar #mask .mask i.global{background:var(--muted-foreground)}@media (min-width:768px) and (min-height:600px){#topbar{overflow:visible;height:64px;min-height:64px;padding-top:0;padding-bottom:0}#topbar>.align-center{align-self:flex-start;position:relative;z-index:3}#topbar #logo img{height:64px;margin-top:0;filter:drop-shadow(0 6px 14px rgba(0, 0, 0, .55))}.gridster{padding-top:10px}}@media (max-width:1279px){#topbar{position:sticky;top:0;z-index:30}}#chainTabs:not(:has(.tab.current))::before{content:"Following you";display:inline-flex;align-items:center;height:20px;padding:0 8px;margin-right:6px;border:1px solid color-mix(in oklab,var(--primary) 55%,var(--border));border-radius:999px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--primary)}@media (min-width:960px){.gridster>ul{grid-template-rows:minmax(240px,var(--top-row,46vh)) 1fr}}#topbar .hdr-tools .themebtn{background:0 0;border:1px solid var(--border);border-radius:3px;cursor:pointer;color:var(--muted-foreground);font-size:14px;line-height:1;padding:4px 8px;height:26px;display:inline-flex;align-items:center;flex:0 0 auto;font-family:var(--font-ui)}#topbar .hdr-tools .themebtn:hover{color:var(--primary);border-color:var(--primary)}#login #content #logoutTable{border-collapse:separate;border-spacing:0}#login #content #logoutTable>tbody>tr>td{vertical-align:top;padding:0 12px}#login #content #logoutTable>tbody>tr>td:first-child{padding-left:0}#login #content #logoutTable>tbody>tr>td:last-child{padding-right:0}#login #content #account,#login #content #track{min-width:260px}#login #content #account th,#login #content #track th{text-align:left;padding:0 0 6px}#login #content #tracking{display:flex;flex-direction:column;gap:6px;padding:0}#login #content #track .tracking-clone,#login #content #track .tracking-clone>tbody{display:block}#login #content #track .tracking-clone>tbody>tr{display:contents}#login #content #track .tracking-clone>tbody{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-rows:repeat(5,auto);column-gap:10px;row-gap:1px;padding:8px 10px}#login #content #track .tracking-clone td{padding:0;border:0;line-height:1.3}#login #content #track .tracking-clone td.avatar{grid-column:1;grid-row:1/span 5;display:flex;flex-direction:column;align-items:center;gap:4px}#login #content #track .tracking-clone td.avatar img.avatar{display:block}#login #content #track .tracking-clone td.avatar hr.bar{width:36px;margin:0;height:3px;border:0;border-radius:2px}#login #content #track .tracking-clone td.avatar .control-group{display:flex;gap:6px;margin-top:2px}#login #content #track .tracking-clone td.avatar .control-group i{font-size:14px;color:var(--muted-foreground);cursor:pointer}#login #content #track .tracking-clone td.avatar .control-group i.active,#login #content #track .tracking-clone td.avatar .control-group i:hover{color:var(--primary)}#login #content #track .tracking-clone td.name{grid-column:2;grid-row:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.system{grid-column:2;grid-row:2}#login #content #track .tracking-clone td.station{grid-column:2;grid-row:3;color:var(--muted-foreground);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.ship{grid-column:2;grid-row:4}#login #content #track .tracking-clone td.shipname{grid-column:2;grid-row:5;color:var(--muted-foreground);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#login #content #track .tracking-clone td.text:empty::before,#login #content #track .tracking-clone td.text:has(>:empty):not(:has(*))::before{content:none}#login #content #track .tracking-clone i.alert{grid-column:2;grid-row:1;justify-self:end}#login #content #account,#login #content #account>tbody{display:block}#login #content #account>tbody{display:grid;grid-template-columns:56px minmax(0,1fr);column-gap:12px;align-items:start}#login #content #account>tbody>tr{display:contents}#login #content #account th{grid-column:1/-1}#login #content #account td{padding:0;border:0}#login #content #account td#avatar{grid-column:1;grid-row:2/span 2}#login #content #account td#characterName{grid-column:2;grid-row:2;font-weight:600;padding-top:4px}#login #content #account td.text:not(#characterName){grid-column:2;grid-row:3;color:var(--muted-foreground)}#login #content #account td:empty{display:none}#login #content #logoutTable>tbody>tr:last-child>td{padding-top:12px}#login #content #logoutTable>tbody>tr:last-child>td:last-child{text-align:right}#topbar #mask-menu{min-width:176px;padding:4px 0;background:var(--popover);border:1px solid var(--border);border-radius:4px;box-shadow:0 8px 24px rgba(0,0,0,.45)}#topbar #mask-menu .triangle{display:none}#topbar #mask-menu a{display:flex;align-items:center;gap:8px;padding:6px 12px;margin:0;color:var(--foreground);font-size:var(--fs-sm);font-weight:500;text-decoration:none;line-height:1.2}#topbar #mask-menu a:hover{background:var(--muted);color:var(--foreground)}#topbar #mask-menu a .mask{display:inline-flex;align-items:center;gap:8px;color:inherit;font-size:inherit}#topbar #mask-menu a .mask i[data-icon]{width:8px;height:8px;border-radius:50%;padding:0;margin:0;flex:0 0 auto;display:inline-block;transform:none;background:var(--muted-foreground)}#topbar #mask-menu a .mask i[data-icon]::before{content:none}#topbar #mask-menu a .mask i.global{background:var(--muted-foreground)}#topbar #mask-menu a .mask i.character,#topbar #mask-menu a .mask i.personal{background:var(--data-good)}#topbar #mask-menu a .mask i.corporate{background:var(--primary)}#topbar #mask-menu a .mask i.alliance{background:var(--data-info)}#topbar #mask .mask i.personal{background:var(--data-good)}#topbar #mask-menu a.active::after{content:"\2713";margin-left:auto;color:var(--primary);font-size:12px;font-weight:700}#topbar #mask-menu hr.bar{height:1px;border:0;margin:4px 0;background:var(--border)}#topbar #mask-menu #admin,#topbar #mask-menu #mask-link{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase}#topbar #mask-menu #admin:hover,#topbar #mask-menu #mask-link:hover{color:var(--foreground)}#login #content #track .tracking-clone td.avatar .control-group{width:auto;min-width:36px;justify-content:center}#topbar .hdr-line2{display:flex;align-items:center;gap:8px}#topbar .hdr-ship{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground);white-space:nowrap;line-height:18px}#topbar .hdr-ship.hidden{display:none}@media (pointer:coarse){#topbar #mask .mask i[data-icon],#topbar #mask-menu a .mask i[data-icon]{min-width:0;min-height:0;width:7px;height:7px;padding:0}}@media (max-width:767px),(max-height:599px){#topbar>.align-left{min-width:0}#topbar #hdr-system{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#topbar>.align-right{flex-shrink:0}#topbar #login h3>a#user{gap:6px}}#install-tip{display:flex;align-items:center;gap:10px;padding:8px 12px;background:color-mix(in oklab,var(--primary) 14%,var(--card));border-bottom:1px solid var(--border);font-size:var(--fs-sm);color:var(--foreground)}#install-tip .tip-text{flex:1 1 auto;min-width:0}#install-tip button{min-height:32px;border-radius:4px;font:inherit;cursor:pointer}#install-tip .tip-install{background:var(--primary);color:#1b1207;border:0;padding:0 12px;font-weight:600}#install-tip .tip-close{background:0 0;border:0;color:var(--muted-foreground);font-size:18px;line-height:1;padding:0 6px}@media (min-width:960px){.gridster>ul{grid-template-rows:minmax(240px,var(--top-row,40vh)) 1fr}}#infoWidget>.controls .bar-right #sys-range{display:inline-flex;align-items:center;gap:2px;margin-right:6px;padding-right:8px;border-right:1px solid var(--border-soft)}#infoWidget>.controls .bar-right #sys-range a{display:inline-flex;align-items:center;height:22px;padding:0 6px;border-radius:3px;text-decoration:none;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-foreground)}#infoWidget>.controls .bar-right #sys-range a:hover{color:var(--foreground);background:var(--muted)}#infoWidget>.controls .bar-right #sys-range a.active{color:var(--primary);background:var(--muted)}#activityGraphControls{flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3)}#activityGraphControls #infoLinks.in-legend-row{margin:0 0 0 auto;padding:0;border:0}#activityGraphControls #activityLegend{margin-right:0}#activityLegend{gap:2px 4px}#activityLegend .legend-chip{padding:0 5px 0 4px;letter-spacing:.06em;gap:5px}#activityGraphControls #infoLinks.in-legend-row{gap:8px}#activityGraphControls #infoLinks.in-legend-row a{letter-spacing:.12em;padding:0}#topbar #logo .logo-text{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:.02em;color:var(--foreground);line-height:64px}#topbar #logo .logo-lockup{display:inline-flex;flex-direction:column;align-items:center;gap:3px;line-height:1;padding:6px 0}#topbar #logo .lockup-small{font-family:var(--font-mono);font-size:8.5px;font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--muted-foreground)}#topbar #logo .lockup-main{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-brand,var(--font-display));font-size:19px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--primary);padding-left:.2em}#topbar #logo .lockup-main.has-flourish::after,#topbar #logo .lockup-main.has-flourish::before{content:"";width:44px;height:2px;background:var(--primary);flex:0 0 auto;-webkit-mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px);mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px)}#topbar #logo .lockup-main.has-flourish::before{-webkit-mask:linear-gradient(90deg,#000 0 26px,transparent 26px 30px,#000 30px)}#dialog-signature #wormhole .side+.side::before,#dialog-signature #wormhole::before{content:none}#dialog-signature #wormhole{margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}#dialog-signature #wormhole .side{position:relative;padding-left:20px;min-height:0}#dialog-signature #wormhole .side+.side{margin-top:4px;padding-top:8px;border-top:1px solid var(--border)}#dialog-signature .sideLabel{position:absolute;left:0;top:0;bottom:5px;width:14px;margin:0;padding:0;border:0;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--muted-foreground);white-space:nowrap;text-align:center}#dialog-signature #wormhole .side+.side .sideLabel{top:8px}#dialog-signature .row{margin:0 0 5px;gap:6px}#dialog-signature .row>.label:first-child{flex:0 0 50px}#dialog-signature #wormhole .row>.label:first-child{flex-basis:44px}#dialog-signature .ui-selectmenu-button,#dialog-signature input[type=text],#dialog-signature select{min-height:26px}#dialog-signature .mini-selector+label{min-height:24px;padding-top:0;padding-bottom:0}#dialog-signature #wormhole .side:first-child .sideLabel,#dialog-signature #wormhole .side:last-child .sideLabel{width:14px;bottom:5px;text-align:center;transform-origin:50% 50%}#dialog-signature #wormhole .side:last-child .sideLabel{top:8px}#dialog-signature input[type=text]{background:var(--input);border-color:var(--border)}#dialog-signature input[type=text]:focus{border-color:var(--primary)}#dialog-signature .quickSelectBar{gap:3px}#dialog-signature .quickSelectBar button{min-width:24px;padding:0 4px}.ui-dialog:has(#dialog-signature){width:min(392px,calc(100vw - 2rem))!important}#dialog-signature #form-signature>.row,#dialog-signature #site>.row{padding-left:20px}#dialog-signature .row{margin:0 0 6px;gap:6px;align-items:center}#dialog-signature #wormhole .row>.label:first-child,#dialog-signature .row>.label:first-child{flex:0 0 54px;text-align:right;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .row>.label:not(:first-child){font-family:var(--font-mono);color:var(--muted-foreground)}#dialog-signature .ui-selectmenu-button,#dialog-signature input[type=text],#dialog-signature select{min-height:26px;height:26px;box-sizing:border-box;background:var(--input);border:1px solid var(--border);border-radius:3px;font-size:12px;color:var(--foreground)}#dialog-signature input[type=text]:focus{border-color:var(--primary);outline:0;box-shadow:0 0 0 2px color-mix(in oklab,var(--primary) 30%,transparent)}#dialog-signature .signatureID{width:46px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em}#dialog-signature .wormholeType{width:58px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em}#dialog-signature [name=signatureName],#dialog-signature [name=wormholeName]{flex:1 1 auto;min-width:0}#dialog-signature #signatureType .ui-selectmenu-button{min-width:112px;display:inline-flex;align-items:center}#dialog-signature .custom-combobox{display:inline-flex;align-items:stretch}#dialog-signature .custom-combobox input{border-top-right-radius:0;border-bottom-right-radius:0}#dialog-signature .custom-combobox .custom-combobox-toggle{position:static;margin:0 0 0 -1px;width:24px;height:26px;padding:0;border:1px solid var(--border);border-radius:0 3px 3px 0;background:var(--muted);color:var(--muted-foreground);display:inline-flex;align-items:center;justify-content:center}#dialog-signature .custom-combobox .custom-combobox-toggle:hover{color:var(--foreground);border-color:var(--border-strong)}#dialog-signature [data-autocomplete=sigSystems]{flex:1 1 auto;display:inline-flex;min-width:0}#dialog-signature [data-autocomplete=sigSystems] .custom-combobox{flex:1 1 auto}#dialog-signature .leadsTo{width:auto;flex:1 1 auto;min-width:0}#dialog-signature .duration-picker{height:26px;padding:0 8px;gap:4px;border-color:var(--border);background:var(--input)}#dialog-signature .duration-picker input{width:22px;text-align:center;font-family:var(--font-mono);font-size:12px;height:auto;min-height:0;border:0;background:0 0}#dialog-signature .duration-picker label,#dialog-signature .duration-picker span{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .mini-selector+label{display:inline-flex;align-items:center;justify-content:center;min-height:26px;height:26px;padding:0 12px;margin:0 0 0 -1px;border:1px solid var(--border);border-radius:0;background:var(--input);font-size:12px;font-weight:500;color:var(--muted-foreground);line-height:1}#dialog-signature .mini-selector:first-of-type+label{border-radius:3px 0 0 3px;margin-left:0}#dialog-signature .row>.mini-selector+label:last-child{border-radius:0 3px 3px 0}#dialog-signature .mini-selector+label:hover{color:var(--foreground);background:var(--muted);border-color:var(--border)}#dialog-signature .mini-selector:checked+label{position:relative;z-index:1;border-color:transparent}#dialog-signature .mini-selector:checked+label.stable{background:var(--data-good);color:#12100e}#dialog-signature .mini-selector:checked+label.destab{background:var(--data-warn);color:#12100e}#dialog-signature .mini-selector:checked+label.critical{background:var(--data-critical);color:#fff}#dialog-signature .quickSelectBar{display:inline-flex;flex-wrap:nowrap;gap:3px;font-size:0;margin:0}#dialog-signature .row>.quickSelectBar{flex-basis:100%;margin-left:60px}#dialog-signature .quickSelectBar button{min-width:26px;height:22px;padding:0 5px;border:1px solid var(--border);border-radius:3px;background:var(--input);font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.04em;line-height:1;display:inline-flex;align-items:center;justify-content:center}#dialog-signature .quickSelectBar button:hover{border-color:var(--border-strong);background:var(--muted)}#dialog-signature #leadsToQuickBar button[value=High-Sec]{margin-left:8px}#dialog-signature .wormholeTypeQuickSelect{margin-left:0;flex-basis:auto}#dialog-signature .wormholeTypeQuickSelect:empty{display:none}#dialog-signature #wormhole .side{padding-left:20px}#dialog-signature #wormhole .side:first-child .sideLabel,#dialog-signature #wormhole .side:last-child .sideLabel,#dialog-signature .sideLabel{width:14px;left:0;font-size:9px;letter-spacing:.2em}#dialog-signature .sig-missing,#dialog-signature .sig-missing:focus{border-color:var(--destructive);box-shadow:none}#dialog-signature .custom-combobox .custom-combobox-toggle{position:relative;text-indent:0;overflow:hidden}#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space,#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon{display:none}#dialog-signature .custom-combobox .custom-combobox-toggle::after{content:"";width:6px;height:6px;margin-top:-3px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg)}#dialog-signature #signatureType .ui-selectmenu-button{display:inline-flex;align-items:center;gap:6px;padding:0 8px;width:auto!important}#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text{flex:1 1 auto;margin:0}#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon{order:2;margin:0;position:static}#dialog-signature .bdp-input{display:inline-flex;align-items:center;gap:12px;height:26px;padding:0 10px;border:1px solid var(--border);border-radius:3px;background:var(--input)}#dialog-signature .bdp-block{display:inline-flex;align-items:baseline;gap:4px}#dialog-signature .bdp-block br{display:none}#dialog-signature .bdp-block a{text-decoration:none}#dialog-signature .bdp-block a span{font-family:var(--font-mono);font-size:13px!important;font-weight:500;color:var(--foreground);line-height:1}#dialog-signature .bdp-block a:hover span{color:var(--primary)}#dialog-signature .bdp-block .bdp-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-foreground)}#dialog-signature .bdp-block.hidden{display:none!important}#dialog-signature .bdp-input{gap:10px;padding:0 8px}#dialog-signature .custom-combobox{gap:0;max-width:100%}#dialog-signature .custom-combobox>*{margin:0}#dialog-signature .custom-combobox .custom-combobox-toggle{margin-left:-1px;flex:0 0 24px}#dialog-signature .custom-combobox input.leadsTo{flex:1 1 0;width:0;min-width:0}#dialog-signature [data-autocomplete=sigSystems]{max-width:100%}#dialog-signature .custom-combobox .custom-combobox-toggle{right:auto;left:auto;top:auto;bottom:auto;width:24px}@media (max-width:767px){#infoWidget>.controls .bar-right #sys-range{display:none}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"class name pips" "type type statics";align-items:center;column-gap:5px;row-gap:2px;width:120px;min-height:0;height:auto!important;padding:4px 7px 4px 6px;margin:0;border-left:3px solid var(--node-edge);box-shadow:0 2px 8px rgba(0,0,0,.35);overflow:visible}#chainMap div.node>.nodeClass{grid-area:class;margin:0;order:0}#chainMap div.node>.nodeSystem{grid-area:name;margin:0;padding:0;order:0;font-size:12px;line-height:16px}#chainMap div.node>.nodeActivity{grid-area:pips;position:static;margin:0;order:0;gap:2px;font-size:8px}#chainMap div.node>.nodeType{grid-area:type;margin:0;order:0;min-height:0;font-size:10px;line-height:14px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}#chainMap div.node>.statics{grid-area:statics;position:static;transform:none;margin:0;gap:3px;justify-content:flex-end;order:0}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:14px;min-width:18px;padding:0 5px;font-size:9px;box-shadow:none}#chainMap div.node>.nodeClass>span{height:15px;padding:0 5px;font-size:10px}#chainMap div.node>.nodeIcons{top:2px;right:4px}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name pips" "statics statics statics"}#chainMap div.node:has(>.nodeType:empty):not(:has(>.staticsspan)){grid-template-areas:"class name pips"}#chainMap div.loop{width:120px;padding:4px 7px}#chainMap div.greenNode.node{border-left-color:var(--data-good)}#chainMap div.yellowNode.node{border-left-color:var(--data-loot-orange)}#chainMap div.redNode.node{border-left-color:var(--data-critical)}#chainMap div.node:has(>.nodeClass.class-1),#chainMap div.node:has(>.nodeClass.class-2),#chainMap div.node:has(>.nodeClass.class-3),#chainMap div.node:has(>.nodeClass.wh){border-left-color:var(--data-info)}#chainMap div.node:has(>.nodeClass.class-4),#chainMap div.node:has(>.nodeClass.class-5){border-left-color:var(--data-loot-purple)}#chainMap div.node:has(>.nodeClass.class-6){border-left-color:var(--data-loot-pink)}#chainMap div.node:has(>.nodeClass.class-12){border-left-color:var(--data-loot-gold)}#chainMap div.node:has(>.nodeClass.class-15),#chainMap div.node:has(>.nodeClass.class-16),#chainMap div.node:has(>.nodeClass.class-17){border-left-color:var(--data-loot-red)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.redNode.node{background-color:color-mix(in oklab,var(--data-critical) 10%,var(--node-surface))}#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--data-loot-orange) 10%,var(--node-surface))}#chainMap div.greenNode.node{background-color:color-mix(in oklab,var(--data-good) 10%,var(--node-surface))}#chainWidget>#chainParent.content{overflow:auto}#sigTable td,#sigTable th{text-align:left}#sigTable .centerAlign{text-align:center}#sigTable .rightAlign{text-align:right}#sigTable .leftAlign{text-align:left}@media (min-width:960px) and (max-width:1099px){#infoWidget>.controls .bar-right #sys-range{display:none}#sigTable td:nth-child(5),#sigTable td:nth-child(6),#sigTable th:nth-child(5),#sigTable th:nth-child(6){width:3.2rem;padding-left:2px;padding-right:4px}#sigTable td:nth-child(2),#sigTable th:nth-child(2){width:4.6rem}}@media (max-width:767px){#sigTable thead{display:none}#sigTable tbody tr{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;grid-template-areas:"id type type age" "leads leads life mass";column-gap:10px;row-gap:2px;padding:7px 10px}#sigTable tbody td{display:block;width:auto!important;padding:0!important;height:auto;line-height:18px;text-align:left!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#sigTable tbody td:nth-child(1){grid-area:id;font-weight:600}#sigTable tbody td:nth-child(2){grid-area:type}#sigTable tbody td:nth-child(3){grid-area:age;text-align:right!important}#sigTable tbody td:nth-child(4){grid-area:leads}#sigTable tbody td:nth-child(5){grid-area:life;text-align:right!important;font-size:var(--fs-xs);color:var(--muted-foreground)}#sigTable tbody td:nth-child(6){grid-area:mass;text-align:right!important;font-size:var(--fs-xs);color:var(--muted-foreground)}#sigTable tbody td:empty{display:none}}#sigTable tbody td.leftAlign,#sigTable thead th.leftAlign{text-align:left}#sigTable tbody td.centerAlign,#sigTable thead th.centerAlign{text-align:center}#sigTable tbody td.rightAlign,#sigTable thead th.rightAlign{text-align:right}@media (max-width:767px){#sigTable tbody tr>td:nth-child(5),#sigTable tbody tr>td:nth-child(6){display:block!important}#sigTable tbody tr>td:empty{display:none!important}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{width:auto;min-width:118px;max-width:168px}#chainMap div.node>.nodeSystem{padding-right:0;overflow:visible;text-overflow:clip}#chainMap div.node>.nodeActivity{font-size:0;gap:3px}#chainMap div.node>.nodeActivity>span{font-size:8px;line-height:8px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.loop{width:auto;min-width:118px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto auto minmax(0,auto)}#chainMap div.node>h4.nodeSystem{padding-right:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px;height:auto;line-height:16px}#chainMap div.node:has(>.nodeClass.hisec){border-left-color:var(--data-good)}#chainMap div.node:has(>.nodeClass.lowsec){border-left-color:var(--data-loot-orange)}#chainMap div.node:has(>.nodeClass.nullsec){border-left-color:var(--data-critical)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto max-content auto}#chainMap div.greenNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-good)}#chainMap div.yellowNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-loot-orange)}#chainMap div.redNode.node{border-left-color:var(--node-edge);border-top:2px solid var(--data-critical)}#chainMap div.greenNode.node:has(>.nodeClass.hisec),#chainMap div.redNode.node:has(>.nodeClass.hisec),#chainMap div.yellowNode.node:has(>.nodeClass.hisec){border-left-color:var(--data-good)}#chainMap div.greenNode.node:has(>.nodeClass.lowsec),#chainMap div.redNode.node:has(>.nodeClass.lowsec),#chainMap div.yellowNode.node:has(>.nodeClass.lowsec){border-left-color:var(--data-loot-orange)}#chainMap div.greenNode.node:has(>.nodeClass.nullsec),#chainMap div.redNode.node:has(>.nodeClass.nullsec),#chainMap div.yellowNode.node:has(>.nodeClass.nullsec){border-left-color:var(--data-critical)}#chainMap div.greenNode.node:has(>.nodeClass.wh),#chainMap div.redNode.node:has(>.nodeClass.wh),#chainMap div.yellowNode.node:has(>.nodeClass.wh){border-left-color:var(--data-info)}#chainMap div.greenNode.node:has(>.nodeClass.class-4),#chainMap div.greenNode.node:has(>.nodeClass.class-5),#chainMap div.redNode.node:has(>.nodeClass.class-4),#chainMap div.redNode.node:has(>.nodeClass.class-5),#chainMap div.yellowNode.node:has(>.nodeClass.class-4),#chainMap div.yellowNode.node:has(>.nodeClass.class-5){border-left-color:var(--data-loot-purple)}#chainMap div.greenNode.node:has(>.nodeClass.class-6),#chainMap div.redNode.node:has(>.nodeClass.class-6),#chainMap div.yellowNode.node:has(>.nodeClass.class-6){border-left-color:var(--data-loot-pink)}#chainMap .currentNode>div.node{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{width:fit-content;margin:0 auto}#chainMap div.greenNode.node.sec-hisec,#chainMap div.node.sec-hisec,#chainMap div.redNode.node.sec-hisec,#chainMap div.yellowNode.node.sec-hisec{border-left-color:var(--data-good)}#chainMap div.greenNode.node.sec-lowsec,#chainMap div.node.sec-lowsec,#chainMap div.redNode.node.sec-lowsec,#chainMap div.yellowNode.node.sec-lowsec{border-left-color:var(--data-loot-orange)}#chainMap div.greenNode.node.sec-nullsec,#chainMap div.node.sec-nullsec,#chainMap div.redNode.node.sec-nullsec,#chainMap div.yellowNode.node.sec-nullsec{border-left-color:var(--data-critical)}#chainMap div.greenNode.node.sec-triglavian,#chainMap div.node.sec-triglavian,#chainMap div.redNode.node.sec-triglavian,#chainMap div.yellowNode.node.sec-triglavian{border-left-color:var(--data-loot-red)}#chainMap div.greenNode.node.sec-wh,#chainMap div.node.sec-wh,#chainMap div.redNode.node.sec-wh,#chainMap div.yellowNode.node.sec-wh{border-left-color:var(--data-info)}#chainMap div.greenNode.node.cls-4,#chainMap div.greenNode.node.cls-5,#chainMap div.node.cls-4,#chainMap div.node.cls-5,#chainMap div.redNode.node.cls-4,#chainMap div.redNode.node.cls-5,#chainMap div.yellowNode.node.cls-4,#chainMap div.yellowNode.node.cls-5{border-left-color:var(--data-loot-purple)}#chainMap div.greenNode.node.cls-6,#chainMap div.node.cls-6,#chainMap div.redNode.node.cls-6,#chainMap div.yellowNode.node.cls-6{border-left-color:var(--data-loot-pink)}#chainMap div.greenNode.node.cls-12,#chainMap div.node.cls-12,#chainMap div.redNode.node.cls-12,#chainMap div.yellowNode.node.cls-12{border-left-color:var(--data-loot-gold)}#chainMap div.node.cls-15,#chainMap div.node.cls-16,#chainMap div.node.cls-17{border-left-color:var(--data-loot-red)}#chainMap .currentNode>div.node,#chainMap .currentNode>div.node.sec-hisec,#chainMap .currentNode>div.node.sec-wh{border-left-color:var(--primary)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{column-gap:4px;padding:3px 6px 3px 5px;min-width:104px}#chainMap div.node>.nodeClass>span{padding:0 4px;height:14px}#chainMap div.node>.nodeActivity{gap:2px}#chainMap div.node>.nodeActivity>span{font-size:7px;line-height:7px}#sigTable tbody td:nth-child(4),#sigTable tbody td:nth-child(4).centerAlign,#sigTable tbody td:nth-child(4).rightAlign,#sigTable thead th:nth-child(4),#sigTable thead th:nth-child(4).centerAlign,#sigTable thead th:nth-child(4).rightAlign{text-align:left}#chainMap div.node>h4.nodeClass>span{background:var(--node-edge);color:#fff;-webkit-text-fill-color:#fff;font-weight:700;letter-spacing:.04em}#chainMap div.node>h4.nodeClass>span.hisec{background:var(--data-good)}#chainMap div.node>h4.nodeClass>span.lowsec{background:var(--data-loot-orange)}#chainMap div.node>h4.nodeClass>span.nullsec{background:var(--data-critical)}#chainMap div.node>h4.nodeClass>span.triglavian{background:var(--data-loot-red)}#chainMap div.node>h4.nodeClass>span.wh{background:var(--data-info)}#chainMap div.node>h4.nodeClass>span.class-4,#chainMap div.node>h4.nodeClass>span.class-5{background:var(--data-loot-purple)}#chainMap div.node>h4.nodeClass>span.class-6{background:var(--data-loot-pink)}#chainMap div.node>h4.nodeClass>span.class-12{background:var(--data-loot-gold);color:#1b1b1b;-webkit-text-fill-color:#1b1b1b}#chainMap div.node>h4.nodeClass>span.class-15,#chainMap div.node>h4.nodeClass>span.class-16,#chainMap div.node>h4.nodeClass>span.class-17{background:var(--data-loot-red)}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-areas:"class name pips" "type statics statics"}#chainMap div.node>.nodeType{white-space:nowrap}#chainMap div.node>.statics{flex-wrap:wrap;justify-content:flex-end;row-gap:2px;min-width:0}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name pips" "statics statics statics"}@keyframes flare-glow{0%,100%{opacity:.28;transform:scale(.96)}50%{opacity:.8;transform:scale(1.06)}}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{position:relative;z-index:0;border-top-width:1px;border-top-color:var(--node-edge)}#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{content:"";position:absolute;inset:-3px;z-index:-1;border-radius:inherit;background:var(--flare,transparent);filter:blur(9px);animation:1.4s ease-in-out infinite flare-glow;pointer-events:none}#chainMap div.redNode.node{--flare:var(--data-critical)}#chainMap div.yellowNode.node{--flare:var(--data-loot-orange)}#chainMap div.greenNode.node{--flare:var(--data-good)}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{background-color:color-mix(in oklab,var(--flare) 8%,var(--node-surface))}@media (prefers-reduced-motion:reduce){#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{animation:none;opacity:.55}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-columns:auto minmax(0,max-content);grid-template-areas:"class name" "type pips" "statics statics";column-gap:4px;row-gap:1px;min-width:92px;max-width:140px;padding:3px 6px 3px 5px}#chainMap div.node>.nodeType{grid-area:type}#chainMap div.node>.nodeActivity{grid-area:pips;justify-self:end}#chainMap div.node>.statics{grid-area:statics;justify-content:flex-start;margin-top:1px}#chainMap div.node>h4.nodeSystem{max-width:104px}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name" "statics statics"}#chainMap div.node:has(>.nodeType:empty):not(:has(>.staticsspan)){grid-template-areas:"class name"}#chainMap div.node:not(:has(>.staticsspan)){grid-template-areas:"class name" "type pips"}#chainMap div.node:has(>.nodeType:empty)>.nodeActivity{grid-area:name;justify-self:end}#chainMap div.node>.nodeIcons{top:auto;bottom:3px;right:5px}#chainMap div.node>.nodeIcons>div{gap:3px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:block;position:relative;overflow:visible;width:fit-content;min-width:96px;max-width:150px;height:auto!important;padding:3px 10px;margin:6px auto 8px;text-align:center}#chainMap div.node>h4.nodeSystem{display:block;margin:0;padding:0 10px 0 0;font-size:12px;line-height:14px;max-width:none}#chainMap div.node>.nodeType{display:block;margin:0;font-size:9.5px;line-height:11px;letter-spacing:.04em;min-height:0}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node>.nodeClass{position:absolute;top:-7px;left:-5px;margin:0;line-height:1;z-index:2}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.statics{position:absolute;left:6px;right:6px;bottom:-7px;margin:0;z-index:2;display:flex;justify-content:center;gap:3px;flex-wrap:nowrap}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:12px;min-width:16px;padding:0 4px;font-size:8.5px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.nodeActivity{position:absolute;right:4px;bottom:3px;top:auto;margin:0;gap:2px;z-index:1}#chainMap div.node>.nodeActivity>span{font-size:6px;line-height:6px}#chainMap div.node>.nodeIcons{position:absolute;top:-6px;right:-4px;bottom:auto;left:auto}#chainMap div.node>.nodeIcons>div{gap:2px}#chainMap div.node>.nodeIcons .badge{height:12px;font-size:9px;padding:0 4px}#chainMap div.node.frig-chain{border-width:1px}#chainMap div.loop{width:fit-content;min-width:0;padding:3px 10px;margin:6px auto 8px}#chainMap div.greenNode.node::before,#chainMap div.redNode.node::before,#chainMap div.yellowNode.node::before{content:none;animation:none}@keyframes flare-halo{0%,100%{box-shadow:0 0 6px 1px color-mix(in oklab,var(--flare) 45%,transparent),0 2px 8px rgba(0,0,0,.35)}50%{box-shadow:0 0 16px 5px color-mix(in oklab,var(--flare) 85%,transparent),0 2px 8px rgba(0,0,0,.35)}}#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{z-index:auto;border-color:color-mix(in oklab,var(--flare) 60%,var(--node-edge));animation:1.4s ease-in-out infinite flare-halo}@media (prefers-reduced-motion:reduce){#chainMap div.greenNode.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{animation:none;box-shadow:0 0 12px 3px color-mix(in oklab,var(--flare) 70%,transparent)}}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto max-content;grid-template-areas:"class name" "type type";align-items:center;column-gap:4px;row-gap:0;min-width:92px;max-width:160px;padding:3px 8px 9px 6px;margin:4px auto 9px;text-align:left}#chainMap div.node>.nodeClass{position:static;grid-area:class;margin:0;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:none}#chainMap div.node>h4.nodeSystem{grid-area:name;padding:0;line-height:15px;max-width:110px}#chainMap div.node>.nodeType{grid-area:type;text-align:left;padding-right:24px;line-height:11px}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){padding-bottom:3px;grid-template-areas:"class name"}#chainMap div.node:has(>.nodeType:empty):has(>.staticsspan){padding-bottom:8px}#chainMap div.node>.statics{bottom:-7px;left:4px;right:4px;justify-content:flex-start}#chainMap div.node>.nodeActivity{right:5px;bottom:9px}#chainMap div.node:has(>.nodeType:empty)>.nodeActivity{bottom:4px}#chainMap div.node>.nodeIcons{top:-5px;right:-3px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:auto minmax(0,max-content) auto auto;grid-template-areas:"class name icons pips" "type type type type";align-items:center;column-gap:4px;row-gap:1px;width:fit-content;min-width:96px;max-width:176px;height:auto!important;padding:3px 7px 4px 5px;margin:3px auto 12px;position:relative;overflow:visible;text-align:left}#chainMap div.node:has(>.nodeType:empty){grid-template-areas:"class name icons pips";padding-bottom:3px}#chainMap div.node>.nodeClass{grid-area:class;position:static;margin:0;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 4px;font-size:9px;box-shadow:none}#chainMap div.node>h4.nodeSystem{grid-area:name;margin:0;padding:0;line-height:15px;font-size:12px;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#chainMap div.node>.nodeIcons{grid-area:icons;position:static;display:flex;align-items:center;gap:3px;width:auto;height:auto;margin:0;top:auto;right:auto;left:auto;bottom:auto}#chainMap div.node>.nodeIcons:empty{display:none}#chainMap div.node>.nodeIcons>div{float:none;display:flex;align-items:center;gap:3px}#chainMap div.node>.nodeIcons .invisible{display:none}#chainMap div.node>.nodeIcons .badge{height:12px;padding:0 4px;font-size:9px}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeActivity{grid-area:pips;position:static;justify-self:end;display:flex;align-items:center;gap:2px;width:auto;height:auto;margin:0;font-size:0}#chainMap div.node>.nodeActivity>span{font-size:6px;line-height:6px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.node>.nodeType{grid-area:type;margin:0;padding:0;text-align:left;font-family:var(--font-mono);font-size:9.5px;line-height:11px;letter-spacing:.04em;text-transform:uppercase;min-height:0;white-space:nowrap}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node>.statics{position:absolute;left:5px;right:5px;top:100%;bottom:auto;margin:-4px 0 0;transform:none;z-index:2;display:flex;justify-content:flex-start;gap:3px;flex-wrap:nowrap}#chainMap div.node>.statics:empty{display:none}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:12px;min-width:16px;padding:0 4px;font-size:8.5px;line-height:1;box-shadow:0 0 0 2px var(--background)}#chainMap div.loop{display:block;width:fit-content;min-width:0;padding:3px 8px;margin:3px auto 12px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-areas:none;grid-template-columns:auto minmax(0,max-content) auto auto;grid-template-rows:auto auto;grid-auto-rows:0}#chainMap div.node>.nodeClass{grid-area:auto;grid-column:1;grid-row:1}#chainMap div.node>h4.nodeSystem{grid-area:auto;grid-column:2;grid-row:1}#chainMap div.node>.nodeIcons{grid-area:auto;grid-column:3;grid-row:1}#chainMap div.node>.nodeActivity{grid-area:auto;grid-column:4;grid-row:1}#chainMap div.node>.nodeType{grid-area:auto;grid-column:1/5;grid-row:2}#chainMap div.node>.statics{grid-area:auto}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto}#chainMap div.node>h4.nodeSystem{overflow:clip;text-overflow:ellipsis;min-width:min-content}#chainMap div.node>h4.nodeSystem a{white-space:nowrap}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{display:grid;grid-template-columns:minmax(0,max-content);grid-template-rows:auto auto auto;grid-auto-rows:0;justify-items:center;align-items:center;row-gap:0;column-gap:0;width:fit-content;min-width:96px;max-width:176px;height:auto!important;padding:4px 10px 5px;margin:3px auto 12px;position:relative;overflow:visible;text-align:center}#chainMap div.node>.nodeClass{grid-column:1;grid-row:1;position:static;margin:0;display:inline-flex;align-items:center;gap:4px;line-height:1}#chainMap div.node>.nodeClass>span{height:13px;padding:0 5px;font-size:9px}#chainMap div.node>h4.nodeSystem{grid-column:1;grid-row:2;margin:0;padding:0;line-height:16px;font-size:12.5px;font-weight:600;max-width:150px;min-width:min-content;overflow:clip;text-overflow:ellipsis;white-space:nowrap}#chainMap div.node>.nodeType{grid-column:1;grid-row:3;margin:0;padding:0;text-align:center;font-family:var(--font-mono);font-size:10px;line-height:12px;letter-spacing:.06em;text-transform:uppercase;min-height:0;white-space:nowrap}#chainMap div.node>.nodeType:empty{display:none}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto auto}#chainMap div.node>.nodeIcons{grid-column:1;grid-row:1;position:static;display:contents}#chainMap div.node>.nodeIcons>div{float:none;display:contents}#chainMap div.node>.nodeIcons>div:first-child{display:inline-flex;align-items:center;position:absolute;top:4px;right:8px;gap:2px}#chainMap div.node>.nodeIcons>div:last-child{display:inline-flex;align-items:center;position:absolute;top:-6px;right:-6px;gap:2px}#chainMap div.node>.nodeIcons .invisible{display:none}#chainMap div.node>.nodeIcons .badge{height:13px;padding:0 5px;font-size:9px;box-shadow:0 0 0 2px var(--background)}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeActivity{position:absolute;left:8px;bottom:-3px;top:auto;right:auto;margin:0;width:auto;height:auto;display:flex;gap:3px;font-size:0;z-index:2}#chainMap div.node>.nodeActivity>span{font-size:7px;line-height:7px}#chainMap div.node>.nodeActivity>span.invisible{display:none}#chainMap div.node>.statics{position:absolute;left:auto;right:6px;top:100%;bottom:auto;margin:-5px 0 0;transform:none;display:flex;justify-content:flex-end;gap:3px;flex-wrap:nowrap;z-index:2}#chainMap div.node>.statics:empty{display:none}#chainMap div.node>.statics span,#chainMap div.node>.statics span:nth-child(2){height:13px;min-width:17px;padding:0 5px;font-size:9px;line-height:1;box-shadow:0 0 0 2px var(--background)}#chainMap div.loop{display:block;width:fit-content;min-width:0;padding:4px 10px;margin:3px auto 12px}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{grid-template-rows:auto auto;padding:7px 10px 6px;margin:9px auto 12px;min-width:92px}#chainMap div.node:has(>.nodeType:empty){grid-template-rows:auto}#chainMap div.node>.nodeClass{position:absolute;top:-7px;left:-5px;margin:0;z-index:3}#chainMap div.node>.nodeClass>span{box-shadow:0 0 0 2px var(--background)}#chainMap div.node>h4.nodeSystem{grid-row:1}#chainMap div.node>.nodeType{grid-row:2}#chainMap div.node>.nodeIcons>div:first-child{top:-7px;right:6px}#chainMap div.node>.nodeIcons>div:last-child{top:-7px;right:-6px}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:12px;text-shadow:0 0 3px var(--background)}#chainMap div.node>.nodeActivity{bottom:-4px;left:7px}#chainMap div.node>.statics{margin-top:-6px;right:5px}#chainWidget>#chainParent.content{position:relative}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{padding-top:14px;padding-bottom:7px;margin-top:10px}#chainMap div.node>.nodeClass{top:-7px;left:-5px}#chainMap div.node>.nodeClass>span{height:14px}#chainWidget>#chainParent.content{position:relative!important}#chainMap div.node>.nodeActivity,#chainMap div.node>.nodeClass,#chainMap div.node>.nodeIcons>div,#chainMap div.node>.statics{grid-area:auto;grid-row:auto;grid-column:auto}#chainMap div.greenNode.node,#chainMap div.node,#chainMap div.redNode.node,#chainMap div.yellowNode.node{margin-top:8px;margin-bottom:9px}#chainMap div.node>.nodeIcons>div:last-child{top:2px;right:3px;gap:1px}#chainMap div.node>.nodeIcons>div:first-child{top:-6px;right:22px}#chainMap div.node>.nodeIcons .badge{height:12px;padding:0 4px;font-size:8.5px;box-shadow:none}#chainMap div.node>.nodeIcons [data-icon]::before{font-size:11px}#chainMap div.node>.nodeIcons [data-icon=user]{padding:0}#chainWidget>#chainParent.content{padding-top:12px!important}#chainMap div.node>.nodeIcons .badge{justify-content:center;min-width:14px;padding:0 4px;box-sizing:border-box;text-align:center} /*# sourceMappingURL=app.min.css.map */ diff --git a/public/css/app.min.css.map b/public/css/app.min.css.map index 0943a623..fa0c9325 100644 --- a/public/css/app.min.css.map +++ b/public/css/app.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["_tokens.css","base.css","account.css","chainmap-radial.css","chainmap.css","command-palette.css","comments.css","dialog-admin.css","dialog-mass.css","dialog-options.css","forms.css","gridster.css","icons.css","introjs.css","jbox.css","mask.css","signatures.css","tripwire.css","_override-1-system.css","_override-3-panels.css","_override-4-signature-dialog.css","_override-5-responsive.css","_override-6-system-panel.css","_override-7-map-and-table.css","_override-8-layout.css","_override-9-chain-tabs.css","_override-a-header.css","_override-b-fixes.css","_override-c-polish.css","_override-d-phone.css","_override-e-scale.css","_override-f-dialog.css","_override-g-bars.css","_override-h-nodes.css","_override-i-inline.css","_override-j-type-roles.css","_theme-base.css","_theme-refit.css"],"names":[],"mappings":"AAwBA,MAEE,UAAgB,wBAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,QAAgB,QAChB,WAAgB,kBAChB,WAAgB,gBAChB,WAAgB,kBAChB,aAAgB,sBAChB,aAAgB,qBAChB,aAAgB,qBAChB,aAAgB,qBAChB,YAAgB,gBAChB,aAAgB,mBAChB,YAAgB,oBAChB,aAAgB,mBAChB,YAAgB,kBAChB,cAAgB,sBAChB,cAAgB,oBAChB,YAAgB,wBAChB,cAAgB,wBAGhB,UAA2B,QAC3B,UAA2B,QAC3B,UAA2B,QAC3B,UAA2B,QAC3B,gBAA2B,QAC3B,cAA2B,QAC3B,aAA2B,QAC3B,mBAA2B,QAC3B,kBAA2B,QAC3B,uBAA2B,QAC3B,kBAA2B,QAC3B,mBAA2B,QAC3B,wBAA2B,QAC3B,kBAA2B,QAC3B,oBAA2B,QAC3B,yBAA2B,QAC3B,iBAA2B,QAC3B,sBAA2B,QAC3B,iBAA2B,QAC3B,kBAA2B,QAC3B,kBAA2B,QAC3B,gBAA2B,QAC3B,cAA2B,QAC3B,kBAA2B,QAC3B,uBAA2B,UAC3B,YAA2B,QAC3B,YAA2B,QAC3B,iBAA2B,QAC3B,gBAA2B,QAC3B,cAA2B,QAC3B,eAA2B,QAC3B,YAA2B,QAC3B,iBAA2B,QAC3B,iBAA2B,QAC3B,mBAA2B,QAC3B,iBAA2B,QAC3B,mBAA2B,QAC3B,gBAA2B,QAC3B,eAA2B,QAC3B,aAA2B,QAC3B,mBAA2B,QAC3B,kBAA2B,QAC3B,YAA2B,QAC3B,WAA2B,QAC3B,eAA2B,QAC3B,UAA2B,QAC3B,cAA2B,QAC3B,WAA2B,QAC3B,eAA2B,QAC3B,SAA2B,QAC3B,aAA2B,QAI7B,oCACE,6BACE,UAAqB,QACrB,UAAqB,QACrB,UAAqB,QACrB,UAAqB,QACrB,gBAAqB,QACrB,cAAqB,QACrB,gBAAqB,QACrB,YAAqB,QACrB,YAAqB,QACrB,iBAAqB,QACrB,gBAAqB,QACrB,cAAqB,QACrB,eAAqB,QACrB,YAAqB,QACrB,iBAAqB,QACrB,iBAAqB,QACrB,mBAAqB,QACrB,iBAAqB,QACrB,mBAAqB,QACrB,gBAAqB,QACrB,eAAqB,QACrB,aAAqB,QACrB,mBAAqB,QACrB,kBAAqB,QACrB,YAAqB,QACrB,UAAqB,kBACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,WAAqB,wBACrB,WAAqB,yBACrB,WAAqB,wBACrB,aAAqB,yBACrB,aAAqB,wBACrB,aAAqB,wBACrB,aAAqB,wBACrB,YAAqB,yBACrB,aAAqB,yBACrB,YAAqB,0BACrB,aAAqB,yBACrB,YAAqB,wBACrB,cAAqB,yBACrB,YAAqB,wBACrB,cAAqB,sBAGzB,wBACE,UAAqB,QACrB,UAAqB,QACrB,UAAqB,QACrB,UAAqB,QACrB,gBAAqB,QACrB,cAAqB,QACrB,gBAAqB,QACrB,YAAqB,QACrB,YAAqB,QACrB,iBAAqB,QACrB,gBAAqB,QACrB,cAAqB,QACrB,eAAqB,QACrB,YAAqB,QACrB,iBAAqB,QACrB,iBAAqB,QACrB,mBAAqB,QACrB,iBAAqB,QACrB,mBAAqB,QACrB,gBAAqB,QACrB,eAAqB,QACrB,aAAqB,QACrB,mBAAqB,QACrB,kBAAqB,QACrB,YAAqB,QACrB,UAAqB,kBACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,QAAqB,QACrB,WAAqB,wBACrB,WAAqB,yBACrB,WAAqB,wBACrB,aAAqB,yBACrB,aAAqB,wBACrB,aAAqB,wBACrB,aAAqB,wBACrB,YAAqB,yBACrB,aAAqB,yBACrB,YAAqB,0BACrB,aAAqB,yBACrB,YAAqB,wBACrB,cAAqB,yBACrB,YAAqB,wBACrB,cAAqB;ACvQvB,WACC,YAAa,OACb,IAAI,gCAAkC,mBACtC,YAAa,IACb,WAAY,OAGb,EACC,OAAQ,EACR,QAAS,EAGJ,KAAN,KACC,OAAQ,KAGT,KACI,UAAW,KACX,YAAa,OAAO,CAAE,gBAAgB,CAAE,KAAK,CAAE,WAC/C,MAAO,aACP,YAAa,IACb,WAAY,KAGhB,EACC,gBAAiB,KACjB,YAAa,IACb,MAAO,aAGR,QACC,gBAAiB,UACjB,MAAO,aAGR,GAAK,OAAQ,IACb,OAAS,aAAc,MAEvB,EACC,OAAQ,QAGT,WACC,QAAS,GACT,OAAQ,QAGT,WACC,WAAY,OAGb,QACC,QAAS,KAGV,YACC,MAAO,KAGR,aACC,MAAO,MAGR,SACC,OAAQ,QAGT,WACC,WAAY,KAGb,YACC,WAAY,MAGb,aACC,WAAY,OAGH,SAAV,SACC,MAAO,OAIE,cAAe,cAAe,cAAxC,SACC,MAAO,iBAGR,cAAe,cACd,MAAO,wBAGR,cACC,MAAO,sBAGR,eACC,MAAO,sBAGR,eAAgB,eAAgB,eAC/B,MAAO,qBAGmB,WAA3B,YAAa,aACZ,MAAO,iBAGM,aAAd,aACC,MAAO,wBAGO,eAAf,cACC,MAAO,qBAGR,iBAAmB,MAAO,uBAE1B,WAAY,kBAAoB,MAAO,sBAEvC,OACC,MAAO,eAGR,MACC,MAAO,eAGR,OACC,MAAO,eAGR,MACC,MAAO,eAGR,cACC,QAAS,sBACT,OAAQ,KAGT,cACC,QAAS,sBACT,OAAQ,KAGT,gBACC,QAAS,uBACT,OAAQ,KAGT,SACC,QAAS,sBACT,OAAQ,KAMT,4CACC,KAEC,gBAAiB,KACjB,gBAAiB,aAAa,cAIhC,oBACI,MAAO,IACP,OAAQ,IAIZ,yCADA,2CAEI,OAAQ,IACR,QAAS,KACT,iBAAkB,KAGtB,0BAA4B,iBAAkB,aAC9C,0BAA4B,iBAAkB,aAC9C,gCAAkC,iBAAkB,aAEpD,2BACC,iBAAkB,YAInB,4BACG,MAAO,aAGV,kBACG,MAAO,aAGV,mBACG,MAAO,aAGV,uBACG,MAAO,aAGV,wBACA,KAAO,kBAAmB,UAC1B,GAAK,kBAAmB,gBAGxB,qBACA,KAAO,eAAgB,UACvB,GAAK,eAAgB,gBAGrB,mBACA,KAAO,aAAc,UACrB,GAAK,aAAc,gBAGnB,gBACC,KAAO,UAAW,UAClB,GAAK,UAAW,gBAcjB,OACC,4BAA6B,OAC7B,oBAAqB,OAErB,UAAW,UACX,kBAAmB,UACnB,eAAgB,UAChB,cAAe,UACf,aAAc,UAEd,SAAU,OAGX,MACC,4BAA6B,OAC7B,oBAAqB,OAElB,OAAQ,UACR,eAAgB,UACnB,YAAa,UACb,WAAY,UACZ,UAAW;AChQZ,OACC,SAAU,SAGX,cACC,QAAS,KAGV,WACI,cAAe,IAGnB,UACC,SAAU,SACV,IAAK,KACL,MAAO,KACP,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,cAAe,IAAI,MAAM,aAG1B,gBACC,SAAU,SACV,IAAK,KACL,MAAO,EAEP,UAAW,MAEX,YAAa,OACb,QAAS,IAGV,uBACC,aAAc,IAAI,MAAM,KACxB,cAAe,IACf,UAAW,MAGZ,uCACC,OAAQ,IAAI,MAAM,aACf,cAAe,IACf,OAAQ,QACX,QAAS,GACN,WAAY,IAAI,IAAK,KAExB,cAAe,IAGhB,6CACC,aAAc,aACX,QAAS,EAGb,8CACC,aAAc,QACX,QAAS,EAGb,sBACC,WAAY,MACZ,MAAO,KAGR,yBACC,WAAY,MACZ,cAAe,IAGhB,yBACC,WAAY,KAGb,4BACC,QAAS,EAAE,KAAK,EAAE,IAClB,YAAa,OAGd,wBACC,OAAQ,IACR,MAAO,IAGR,iCACC,MAAO,MAGR,uBACC,MAAO,qBAGR,MACC,MAAO,aAGR,sBACC,eAAgB,OAGjB,cACC,YAAa,IACb,WAAY,OAGN,SAAP,MACC,YAAa,OACb,MAAO,aAGR,MACC,eAAgB,IAGjB,6BACC,WAAY,OACZ,MAAO,aACP,WAAY,aAGb,yBACC,eAAgB,IAGjB,UACC,QAAS,MACT,WAAY,KACZ,WAAY,MAGb,8CACC,MAAQ;AChIT,sCACC,cAAc,MACd,QAAS,KACT,OAAQ,IAAI,uBAAuB,MACnC,UAAW,KAGZ,4CACI,IAAK,KAGT,YACC,SAAU,SACV,MAAO,KAGR,+BACC,SAAS,OACT,QAAS,aACT,eAAgB,OAChB,OAAQ,EAAE,KAGX,qBACC,SAAU,SAGX,qBACC,SAAU,SAGX,mCACC,SAAS,SACT,MAAO,EAAG,OAAQ,EAGnB,iCACC,UAAW,qBAGZ,aACC,SAAU,SAGX,MAAQ,aAAc,MAGtB,MAAQ,aAAc,IAAK,aAAc,uBAC3B,eAAd,aAA+B,aAAc,IAAK,MAAO,mBAC1C,gBAAf,cAAiC,aAAc,IAAK,MAAO,oBAC3C,iBAAhB,eAAmC,aAAc,IAAK,MAAO,qBAC5C,kBAAjB,gBAAqC,aAAc,IAAK,MAAO;ACpD/D,UACC,oBAAqB,KACrB,iBAAkB,KAClB,gBAAiB,KAGjB,eAAgB,KAChB,YAAa,KAGd,iDACC,QAAS,EAGV,+CACC,QAAS,EAAE,IACX,cAAe,EACf,MAAO,IACP,OAAQ,EAAE,KAGX,kBACC,YAAa,OACb,WAAY,OACZ,eAAgB,OAChB,YAAa,QACb,UAAW,IACX,OAAQ,QACR,YAAa,EACb,YACA,eAGD,mBACC,OAAQ,KACR,UAAW,IACX,QAAS,aACT,YAAa,KAAM,aAAc,KACjC,OAAQ,IAAI,MAAM,aACf,uBAAwB,KAAK,KAC7B,wBAAyB,KAAK,KACjC,0BAA2B,KAAK,KAC7B,2BAA4B,KAAK,KAEpC,iBAAkB,aAClB,WAAY,2CAEZ,WAAY,IAAI,IAAI,IAAI,iBAGzB,+BACC,WAAY,aACZ,WAAY,OACZ,OAAQ,cAAc,gBAGvB,wBACC,UAAW,KAEX,cAAe,MACf,aAAc,uBAGf,mBACC,WAAY,uBAG+C,uBAA5D,oBAAqB,mBAAoB,kBACxC,QAAQ,KAGT,gCACC,aAAc,uBACd,WAAY,4BAEZ,WAAY,oFACZ,WAAY,2GAGb,2BACC,aAAc,sBACd,WAAY,2BAEZ,WAAY,kFACZ,WAAY,yGAGb,8BACC,aAAc,yBACd,WAAY,8BAEZ,WAAY,wFACZ,WAAY,+GAGb,6BACC,aAAc,wBACd,WAAY,6BAEZ,WAAY,sFACZ,WAAY,6GAGb,8BACC,aAAc,uBACd,aAAc,IAGf,kBACC,YAAa,IAGd,qBACC,QAAS,aACT,MAAO,aACP,iBAAkB,aAClB,WAAY,EAAI,EAAI,IAAI,IAAI,aAC5B,YAAa,UACb,QAAS,IACT,UAAW,IACX,UAAW,IACX,YAAa,IACb,YAAa,EACb,WAAY,OACZ,YAAa,OACb,eAAgB,OAChB,cAAe,KAGhB,qBACC,SAAU,SACV,IAAK,KACL,MAAO,KACP,OAAQ,EACR,MAAO,IACP,aAAc,MAGf,wBACC,SAAU,SACV,WAAY,OAGb,2BACC,YAAa,IACb,YAAa,OAGd,oBACC,eAAgB,UAGjB,wBACC,SAAU,SACV,OAAQ,IACR,MAAO,IACP,MAAO,KACP,OAAQ,IACR,aAAc,MACd,eAAgB,KAGjB,0BAA4B,eAAgB,QAE5C,mBACC,SAAU,SACV,OAAQ,OAGT,wBACC,QAAS,aACT,WAAY,KACZ,cAAe,EAAE,EAAE,KAAK,KACxB,MAAO,IACP,OAAQ,KACR,OAAQ,IAAI,MAAM,aAGnB,qCACC,aAAc,KAGf,4BACC,QAAS,IACT,OAAQ,QAGT,qBACC,aAAc,IACd,OAAQ,QAGT,8BACC,QAAS,IAIC,oBAAqB,iBAAhC,UAAmD,aAAc,qBACxD,kBAAmB,eAA5B,QAA6C,aAAc,iBACpD,gBAAiB,aAAxB,MAAuC,aAAc,QAC/C,eAAgB,YAAtB,KAAoC,aAAc,OAC3C,gBAAiB,aAAxB,MAAuC,aAAc,iBAErD,KACC,QAAS,aACT,UAAW,KACX,cAAe,IAAI,MAAM,aACzB,OAAQ,QACR,eAAgB,IAChB,WAAY,MAGb,WACC,oBAAqB,aAGtB,aACC,oBAAqB,iBAGtB,WACC,aAAc,IACd,MAAO,KAGR,eAAgB,cACf,QAAS,EACT,WAAY,OACZ,MAAO,MACP,UAAW,KACX,QAAS,IAAI,IAAI,EAAE,IAEnB,WAAY,QAAQ,KAAK,SACzB,gBAAiB,QAAQ,KAAK,SAC9B,mBAAoB,QAAQ,KAAK,SACjC,cAAe,QAAQ,KAAK,SAGP,4BAAtB,qBACC,QAAS,EACT,WAAY,QAGb,sBACC,MAAO,KAGR,WACC,MAAO,KACP,aAAc,EACd,OAAQ,IAAI,MAAM,sBAClB,iBAAkB,eAClB,kBAAmB,eACnB,mBAAoB,eAGrB,gBAAkB,aAAc,IAChC,gBAAkB,WAAY,EAAE,EAAE,IAAI,IAEtC,wBACC,SAAU,SACV,IAAK,KACL,MAAO,MAGR,4DACC,OAAQ,QAIT,yBAA2B,MAAO,aAClC,KAAO,MAAO,qBACd,QAAU,MAAO,iBACjB,OAAS,MAAO,iBAEhB,WACC,SAAU,SACV,MAAO,KACP,QAAS,IACT,YAAa,KAGd,mBACC,OAAQ,KAGT,oBACC,OAAQ,KACR,cAAe,IAAI,MAAM,aAG1B,qBACC,OAAQ,KAGT,mBACC,oBAAqB,qBAGtB,sBACC,oBAAqB,iBAGtB,qBACC,oBAAqB,iBAGtB,WACC,cAAe;AC/ShB,UADA,aAEC,SAAU,MACV,MAAO,EACP,QAAS,MACT,QAAS,KACT,YAAa,WACb,gBAAiB,OACjB,YAAa,KACb,WAAY,gBAIb,iBADA,oBACmB,QAAS,KAG5B,mBADA,sBAEC,MAAO,gBACP,WAAY,aACZ,OAAQ,IAAI,MAAM,aAClB,WAAY,EAAE,KAAK,KAAK,gBACxB,UAAW,OAGZ,WACC,QAAS,MACT,MAAO,KACP,WAAY,WACZ,QAAS,KAAK,KACd,OAAQ,EACR,cAAe,IAAI,MAAM,aACzB,eACA,MAAO,aACP,YAAa,QACb,UAAW,IACX,QAAS,EAGV,wBAA0B,MAAO,aAEjC,UACC,WAAY,KACZ,OAAQ,EACR,QAAS,IAAI,EACb,WAAY,KACZ,WAAY,KAGb,aACC,QAAS,KACT,YAAa,SACb,IAAK,KACL,QAAS,IAAI,KACb,OAAQ,QACR,MAAO,aAGR,iBAAmB,WAAY,aAAc,MAAO,aAKpD,iBAAmB,QAAS,GAAI,OAAQ,QAExC,wBAA0B,WAAY,qBAAsB,MAAO,aAEnE,qBAAuB,KAAM,EAAE,EAAE,KAEjC,qBACA,oBACC,KAAM,EAAE,EAAE,KACV,UAAW,KACX,MAAO,aACP,eAAgB,UAChB,eAAgB,MAGjB,4BACA,2BAA6B,MAAO,aAEpC,oBACC,eAAgB,KAChB,eAAgB,EAChB,OAAQ,IAAI,MAAM,aAClB,cAAe,IACf,QAAS,IAAI,IAGd,qBAAuB,MAAO,aAAc,OAAQ,QAEpD,UACC,QAAS,KACT,IAAK,KACL,QAAS,IAAI,KACb,WAAY,IAAI,MAAM,aACtB,UAAW,MACX,MAAO,aAGR,YAAc,MAAO,aAAc,YAAa,IAGhD,mBAAqB,QAAS,KAAK,KACnC,aAAe,OAAQ,EAAE,EAAE,KAAM,MAAO,aAAc,UAAW,MACjE,gBAAkB,gBAAiB,SAAU,MAAO,KACpD,aACC,WAAY,KACZ,QAAS,IAAI,KAAK,IAAI,EACtB,YAAa,OACb,MAAO,aACP,YAAa,IAEd,aAAe,QAAS,IAAI,EAAG,MAAO,aACtC,YAAc,OAAQ,KAAK,EAAE,EAAG,MAAO,aAAc,UAAW,KAChE,YAAc,MAAO;ACtHrB,+BACC,QAAS,KAGV,oBACC,WAAY,KAGb,SACC,cAAe,IAAI,MAAM,aAG1B,eACC,aAAc,IAGf,yCACC,QAAS,aACT,QAAS,GACT,OAAQ,KACR,eAAgB,OAGA,eAAjB,gBACC,UAAW,KACX,MAAO,aAGR,gBACC,OAAQ,KAGT,eACC,QAAS,IAGV,iBACC,MAAO,MACP,OAAQ,KAGT,eAAgB,cACf,MAAO,KACP,OAAQ,KAGT,iBACC,QAAS,MACT,YAAa,IACb,eAAgB,IAChB,QAAS,EAET,WAAY,QAAQ,KAAK,SACzB,gBAAiB,QAAQ,KAAK,SAC9B,mBAAoB,QAAQ,KAAK,SACjC,cAAe,QAAQ,KAAK,SAGK,eAAlC,iCACC,QAAS,EAET,WAAY,QAAQ,KAAK,SACzB,gBAAiB,QAAQ,KAAK,SAC9B,mBAAoB,QAAQ,KAAK,SACjC,cAAe,QAAQ,KAAK,SAG7B,gCAAiC,gCAAiC,8BAA+B,sBAChG,QAAS,EAGV,aACC,MAAO,aACP,QAAS,IAKT,UAAW,WAGZ,eACC,MAAO,QAG0B,gBAAlC,gBAAiB,gBAIhB,QAAS,EAAE;ACzFZ,oBACC,MAAO,MACP,OAAQ,KACR,MAAO,KAGR,sBACC,OAAQ,KACR,YAAa,MACb,SAAU,KAGX,uBACC,gBAAiB,KAGlB,yBACC,MAAO,aAGR,+BACC,QAAS,EAGV,gCACC,MAAO,OAGR,4BACC,WAAY,KACZ,cAAe,IAAI,MAAM,aAG1B,+CACC,cAAe,IAAI,MAAM,aAG+B,8CAAzD,wDACC,MAAO,KAGR,yCAEA,kDADA,qDAEC,MAAO,OAGR,2CAEA,mDADA,uDAEC,MAAO,OAGR,mDACC,aAAc,IACd,aAAc,IAAI,MAAM,aAGzB,mEACC,OAAQ,KAGT,uFACC,cAAe,IAAI,MAAM,aAG1B,iEACC,YAAa,MACb,WAAY,IACZ,UAAW,KACX,MAAO;ACnER,yDADA,0DADA,yDAUA,gEADA,iEADA,gEAMA,6DADA,8DADA,6DANA,6DADA,8DADA,6DAUiE,QAAS,KAG1E,UAAY,QAAS,GAGrB,oBACC,UAAW,OACX,WAAY,IACZ,WAAY,MACZ,WAAY,KAGb,2BACC,UAAW,KAGZ,2BACC,UAAW,IACX,WAAY,OAGb,2BACC,MAAO,KACP,WAAY,OAGb,2BAA4B,2BAC3B,MAAO,IACP,WAAY,MAGb,2BACC,MAAO,KACP,WAAY;ACjDb,wCACC,eAAgB,IAGjB,cAAgB,QAAS,aAAc,MAAO,gBAAiB,aAAc,IAEzC,qCAApC,iCAA4E,uBAAyB,MAAO,IAE5G,0CACI,QAAS,EAAE,IAGf,uBACC,MAAO,KACP,YAAa,KAGd,oCACC,WAAY,MACZ,SAAU,KACV,aAAc,IACX,cAAe,KAGnB,wBACC,MAAO,KACP,YAAa,KACb,QAAS,EAGV,iBACC,WAAY,KAGb,iBACC,WAAY,MAGb,WAAY,WACX,cAAe,IAAI,MAAM,aAG1B,iBACC,OAAQ,IAGT,oCACC,QAAS,KACT,eACA,aAAc,aAGf,yCACC,QAAS,EAGV,OACC,WAAY,KACZ,aAAc,KAGf,iBACC,WAAY,KACZ,SAAU,SAGX,sBACC,SAAU,SACV,IAAK,KACL,KAAM,MACN,MAAO,KACP,WAAY,OACZ,YAAa,IAEb,cAAe,eACf,kBAAmB,eACnB,UAAW,eAEX,qBAAsB,KAAK,IAAI,EAC/B,yBAA0B,KAAK,IAAI,EACnC,iBAAkB,KAAK,IAAI;AChFR,qBAApB,iBAA4C,OAAQ,SAChD,iBAAkB,6EAElB,YACA,sBAAuB,IACvB,mBAAoB,IACpB,kBAAmB,IACnB,iBAAkB,IAClB,cAAe,IAEf,QAAS,IACT,aAAc,IACd,YAAa,IAEb,WAAY,IAAI,IAAK,OACrB,MAAO,aACP,YAAa,IACb,SAAU,SAEb,cAAe,uBACf,cAAe,KAGhB,OAAS,iBAAkB,aAE3B,eAAkB,cAAe,MAAO,eAAgB,EAEZ,qBAA5C,mBAAsB,mBACrB,YAAa,QAEb,mBAAoB,KAEpB,sBAAuB,IACvB,mBAAoB,IACpB,kBAAmB,IACnB,iBAAkB,IAClB,cAAe,IAEf,iBAAkB,8DAElB,wBAAyB,YACzB,mBAAoB,YACpB,gBAAiB,YAEjB,OAAQ,IAAI,MACZ,aAAc,aAAa,aAAa,aAExC,MAAO,aACP,YAAa,IACb,UAAW,IACX,gBAAiB,KAEjB,OAAQ,EACR,QAAS,KAAM,MACf,MAAO,KAEP,OAAQ,QACR,QAAS,EACT,eAAgB,IAChB,QAAS,aACT,SAAU,QAGU,qBAArB,kBACC,eAAgB,OAGuE,iCAAxF,yCAA4C,yCAC3C,OAAQ,IAAI,MAAM,QAGqE,iCAAxF,yCAA4C,yCAC3C,iBAAkB,8DAGuE,kCAA1F,0CAA6C,0CAC5C,MAAO,aAEP,iBAAkB,2CAElB,WAAY,MAAM,kBAAkB,EAAE,IAAI,IAAI,EAE9C,aAAc,aAAa,aAAa,aAGxB,YAAjB,gBACC,QAAS,GACT,OAAQ,QAGO,oBAAhB,eACC,MAAO,EAAG,QAAS,EAGpB,yBACI,cAAe,IAElB,MAAO,KACP,OAAQ,KAGT,qCACC,SAAU,SACV,OAAQ,IACR,KAAM,IACN,QAAS,IAAI,IACb,aAAc,IACd,MAAO,aACP,UAAW,KACX,WAAY,gBAET,cAAe,IAG8B,cAA3B,0BAAtB,qBACC,QAAS,aACT,SAAU,SACV,QAAS,IACT,OAAQ,IAAI,MAAM,aACf,cAAe,IAElB,OAAQ,QACR,QAAS,GACT,WAAY,IAAI,IAAK,KAGtB,cACC,MAAO,aACP,eAGD,qBACC,eAAgB,IAChB,WAAY,KACZ,UAAW,KACX,OAAQ,IAGT,0BACC,OAAQ,IAAI,KACZ,IAAK,KAGuD,oBAAjC,gCAA5B,2BACC,aAAc,wBACd,QAAS,EAGoB,kCAA9B,6BACC,aAAc,QACd,QAAS,EAGmE,4BAAzC,wCAApC,mCACC,cAAe,MACZ,eAAgB,IAChB,cAAe,4BACf,cAAe,IAGnB,2BACC,QAAS,aACT,YAAa,IACb,eAAgB,IAChB,YAAa,IACb,UAAW,KAGZ,mCACC,QAAS,aAGV,0CACC,YAAa,IACb,eAAe,IACf,OAAO,QAGa,qBAArB,kBAA8C,OAAQ,UACtD,qBAAyB,aAAc;ACnLvC,aAEC,gBAAiB,KAGlB,aACI,SAAU,OAGd,YAAa,uBACZ,OAAQ,QAGT,cACC,SAAU,SACP,WAAY,aACZ,OAAQ,IAAI,aAAa,MACzB,QAAS,IAGb,yBACC,SAAU,SACV,IAAK,IACL,MAAO,IACP,OAAQ,IACR,KAAM,IAEN,SAAU,KAGX,gCACC,IAAK,KAGN,UACC,WAAY,OACT,OAAQ,EAAE,KACV,QAAS,KAAK,EAAE,MAEnB,4BAA6B,OAC7B,oBAAqB,OAElB,mBAAoB,QAAQ,IAC5B,gBAAiB,QAAQ,IACzB,cAAe,QAAQ,IACvB,eAAgB,QAAQ,IACxB,WAAY,QAAQ,IAGxB,YACI,OAAQ,EAAE,KAGd,qBACC,4BAA6B,OAC7B,oBAAqB,OAErB,mBAAoB,OAAO,GAAG,CAAE,MAAM,IACnC,gBAAiB,OAAO,GAAG,CAAE,MAAM,IACnC,cAAe,OAAO,GAAG,CAAE,MAAM,IACjC,eAAgB,OAAO,GAAG,CAAE,MAAM,IAClC,WAAY,OAAO,GAAG,CAAE,MAAM,IAGlC,gBACI,QAAS,EACT,SAAU,SAGd,gBAEI,WAAY,gBAGhB,wCACC,QAAS,EAGV,uBACC,SAAU,SACV,QAAS,EAGV,4BACI,MAAO,KACP,OAAQ,KACR,OAAQ,MACR,MAAO,MACP,OAAQ,UACR,QAAS,GACT,QAAS,EACT,MAAO,aAGX,wCACC,QAAS,QAGV,kBACI,WAAY,mBAGhB,0BACI,YACA,WAAY;ACxGhB,WACC,YAAa,KACb,IAAI,kCACJ,IAAI,wCAA0C,2BAA2B,CACxE,mCAAqC,cAAc,CACnD,kCAAoC,kBAAkB,CACtD,uCAAyC,cAC1C,YAAa,IACb,WAAY,OAIb,YACC,YAAa,KACb,MAAO,KACP,WAAY,OACZ,YAAa,IACb,aAAc,OACd,eAAgB,KAChB,YAAa,EAGb,uBAAwB,YACxB,wBAAyB,UAG1B,kBACC,gBAAiB,KAGlB,wBACC,QAAS,QAEV,wBACC,QAAS,QAEV,mCACC,QAAS,QAEV,iCACC,QAAS,QAEV,iCACC,QAAS,QAEV,wBACC,QAAS,QAEV,uBACC,QAAS,QAEV,+BACC,QAAS,QAEV,gCACC,QAAS,QAEV,gCACC,QAAS,QAEV,yBACC,QAAS,QAEV,yBACC,QAAS,QAEV,wBACC,QAAS,QAEV,yBACC,QAAS,QAEV,uBACC,QAAS,QAEV,0BACC,QAAS,QACT,MAAO,iBAER,8BACC,QAAS,QAEV,4BACC,QAAS,QAEV,4BACC,QAAS,QACT,MAAO,oBAER,8BACC,QAAS,QACT,MAAO,mBAER,4BACC,QAAS,QAEV,6BACC,QAAS,QAEV,yBACC,QAAS,QAEV,6BACC,QAAS,QAEV,wBACC,QAAS,QAEV,wBACC,QAAS,QAEV,6BACC,QAAS,QACT,MAAO,IAER,0BACC,QAAS,QAEV,8BACC,QAAS,QAEV,wBACC,QAAS,QAEV,6BACC,QAAS,QACT,MAAO,aAER,8BACC,QAAS,QAEV,mCACC,QAAS,QAEV,wBACC,QAAS,QAEV,uBACC,QAAS,QAEV,yBACC,QAAS,QAEV,wBACC,QAAS,QAEV,0BACC,QAAS,QAEV,wBACC,QAAS,QAEV,wBACC,QAAS,QAEV,0BACC,QAAS,QAEV,4BACC,QAAS,QAEV,0BACC,QAAS,QAEV,2BACC,QAAS,QAEV,wCACC,QAAS,QACT,MAAO,wBAER,0BACC,QAAS,QAEV,wBACC,QAAS,QAEV,4BACC,QAAS,QAEV,6BACC,QAAS,QAEV,6BACC,QAAS,QAEV,4BACC,QAAS,QAEV,yBACC,QAAS,QACT,eAAgB,SAEjB,wBACC,QAAS,QAEV,6BACC,QAAS,QAEV,4BACC,QAAS;ACxMV,qBACI,iBAAkB,aAGtB,uBAAwB,2BACpB,MAAO;ACLX,oCAAqC,wCACpC,WAAY,mBACZ,MAAO,KACP,YACA,YAAa,IACb,UAAW,MACX,QAAS,IAGV,gBACC,WAAY,aACZ,MAAO,aACP,WAAY,KAGb,cACC,QAAS,IAAI,IAKd,oBAAsB,MAAO,IAE7B,oBACC,WAAY,aAKb,6BACI,cAAe,IAClB,WAAY,EAAE,EAAE,IAAI,aAEpB,MAAO,aACP,UAAW,MACX,YAAa,EAAE,KAAK,EAAE,aACtB,WAAY,aACZ,iBAAkB,qDAGnB,2BACC,QAAS,IAAI,KAGd,yBACC,QAAS,IAAI,KAAK,EAGnB,mCACC,YAAa,EAAE,KAAK,EAAE,iBAGvB,kCACC,MAAO,aACP,YAAa,EAAE,IAAI,EAAE,aACrB,WAAY,aACZ,iBAAkB,qDAGnB,iCACC,WAAY,cACZ,iBAAkB,2DAGnB,mCACC,WAAY,gBACZ,iBAAkB,+DAGnB,kCACC,WAAY,eACZ,iBAAkB,6DAGnB,oCACC,MAAO,kBACP,YAAa,EAAE,IAAI,EAAE,eACrB,WAAY,gBACZ,iBAAkB,+DAGnB,sCACC,MAAO;AClFR,iBAAmB,MAAO,MAC1B,gBAAkB,MAAO,qBAAqB,QAAS,aAAa,UAAW,WAAW,gBAC1F,QAAU,cAAe,IAEzB,aAAe,QAAS,MAGxB,iBAAqB,WAAY,IACjC,aAAe,OAAQ,KACvB,YACI,SAAU,SACV,IAAK,EAAG,KAAM,EACjB,MAAO,KACP,OAAQ,IACL,MAAO,aACP,UAAW,KACd,cAAe,IAAI,IAAI,EAAE,EAG1B,mBAAqB,WAAY,aACjC,qBAAuB,WAAY,aACnC,sBAAwB,WAAY,MACpC,qBAAuB,WAAY,qBAEnC,UACI,SAAU,SACV,IAAK,IAAK,MAAO,EAGrB,gBACC,cAAe,IACf,QAAS,GACT,UAAW,MACX,QAAS,MACT,OAAQ,IACR,MAAO,IACP,QAAS,aACT,WAAY,OACZ,gBAAiB,KAGK,sBAAvB,sBACC,QAAS,EAGV,qBAAuB,WAAY,OACnC,oBAAsB,WAAY,MAElC,oBAAsB,OAAQ,KAAM;AChDpC,8BAA+B,2BAC9B,QAAS,EAAI,IAAI,EAAI,KACrB,YAAa,IACb,WAAY,KAGb,2BACC,gBAAiB,KAGlB,oBACC,OAAQ,KASA,OAAT,QACC,eAAgB,UAChB,WAAY,OACZ,aAAc,EAGf,eAAgB,gBACf,WAAY,MAGb,wBAAyB,yBACxB,QAAS,IAAI,EAGd,UACC,MAAO,KACP,gBAAiB,SACjB,WAAY,OACZ,aAAc,MACd,YAAa,KACb,YAAa,KAGd,aACC,WAAY,kBACZ,OAAQ,IAAI,MAAM,aAGnB,aACC,WAAY,kBACZ,OAAQ,IAAI,MAAM,aAClB,OAAQ,QAGT,sBACC,iBAAkB,aAGnB,yBACC,iBAAkB,aAGnB,0BACC,MAAO,KAGR,0BACC,MAAO,KAGR,0BACC,MAAO,KAGR,0BAA2B,0BAC1B,MAAO,KAGR,0BACC,YAAa,OACb,eAAgB,IAChB,eAAgB,UAGjB,0BACC,eAAgB,WAGjB,0BAA2B,0BAC1B,eAAgB,WAGjB,uBACC,WAAY,KACZ,aAAc,IAGf,yBACC,WAAY,OAGb,wBACC,WAAY,MACZ,cAAe,IAGhB,qBACC,MAAO,kBAGR,0BACC,MAAO,aAGR,6BAA+B,QAAS,OACxC,+BAAiC,QAAS,KAE1C,iCACC,OAAQ,QACR,eAAgB,OAChB,UAAW,KAGZ,uCACC,QAAS,EAGiC,gCAA3C,0CACC,QAAS,QACT,eAAgB,OAChB,QAAS,IAAI,IACb,MAAO,MAGR,2BAEA,oCADA,uCAEC,MAAO,aAGR,oCAEA,6CADA,gDAEC,QAAS,QAGV,6BAEA,qCADA,yCAEC,MAAO,aAGR,sCAEA,8CADA,kDAEC,QAAS,QAGV,iCACC,OAAQ,QAGT,qBACC,YAAa,KACb,cAAe,KAGhB,yBACC,YAAa,IACb,WAAY,MACZ,eAAgB,SAGjB,0BACC,QAAS,aACT,eAAgB,YAGjB,uBACC,WAAY,KAGb,qCACC,QAAS,aACT,UAAW,KAGZ,sCACC,QAAS,WAGV,iDACC,MAAO,KACP,aAAc,IAGf,uCACC,MAAO,KACP,WAAY,WAGb,iCAAkC,gCACjC,MAAO,MAGR,uCAAwC,mCACvC,UAAW,KAGZ,+BAAgC,gCAC/B,WAAY,OACZ,eAAgB,UAGjB,wBACC,SAAU,SACV,WAAY,KAGb,6BACC,SAAU,SACV,KAAM,MACN,YAAa,IACb,UAAW,eACX,iBAAkB,KAAK,IAAI,EAG5B,yDACC,OAAQ,EACR,MAAO,KACP,WAAY,KAGb,wDACC,OAAQ,MACR,MAAO,MACP,WAAY,MAGb,iBACC,SAAU,SACV,QAAS,aAGV,yCACC,SAAU,SACV,IAAK,EACL,OAAQ,EACR,MAAO,MACP,YAAa,KACb,QAAS,EAGV,uBACC,wBAAyB,EACzB,2BAA4B,EAG7B,yCACC,QAAS,KAAM,KACf,cAAe,EACf,wBAAyB,IACzB,2BAA4B,IAG7B,yBACC,YAAa,MAGd,uBACC,QAAS,IAAK,aAAc,IAG7B,iBACC,YAAa,KACb,WAAY,IACZ,cAAe,IAGhB,SACC,SAAU,SACV,IAAK,EACL,KAAM,EACN,QAAS,KACT,QAAS,MACT,UAAW,MACX,QAAS,IACT,YAAa,aAAa,CAAE,SAAS,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,gBAAgB,CAAE,KAAK,CAAE,WACxG,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,WAAY,KACZ,YAAa,IACb,WAAY,KACZ,WAAY,MACZ,gBAAiB,KACjB,YAAa,KACb,eAAgB,KAChB,YAAa,OACb,WAAY,OACZ,aAAc,OACd,UAAW,QACX,UAAW,WACX,iBAAkB,aAClB,wBAAyB,YACrB,gBAAiB,YACrB,OAAQ,IAAI,MAAM,kBAClB,cAAe,MAGM,2CAAtB,qBACC,WAAY,MAGkG,kDAApD,mDAA7B,4BAA9B,6BACC,KAAM,IACN,oBAAqB,EAGQ,mDAA9B,6BACC,OAAQ,MACR,YAAa,MACb,iBAAkB,iBAGU,kDAA7B,4BACC,OAAQ,MACR,YAAa,MACb,iBAAkB,aAGK,yCAAxB,uBACC,YAAa,KAGmG,gDAAlD,iDAA/B,8BAAhC,+BACC,IAAK,IACL,kBAAmB,EAGY,iDAAhC,+BACC,KAAM,MACN,WAAY,MACZ,mBAAoB,iBAGU,gDAA/B,8BACC,KAAM,MACN,WAAY,MACZ,mBAAoB,aAGI,wCAAzB,wBACC,WAAY,KAGqG,+CAAjD,gDAAhC,+BAAjC,gCACC,KAAM,IACN,iBAAkB,EAGc,gDAAjC,gCACC,IAAK,MACL,YAAa,MACb,oBAAqB,iBAGU,+CAAhC,+BACC,IAAK,MACL,YAAa,MACb,oBAAqB,aAG0B,+DAAhD,+CACC,SAAU,SACV,IAAK,EACL,KAAM,IACN,QAAS,MACT,MAAO,KACP,YAAa,MACb,QAAS,GACT,cAAe,IAAI,MAAM,aAGH,0CAAvB,sBACC,YAAa,MAGkG,iDAAnD,kDAA9B,6BAA/B,8BACC,IAAK,IACL,mBAAoB,EAGU,kDAA/B,8BACC,MAAO,MACP,WAAY,MACZ,kBAAmB,iBAGU,iDAA9B,6BACC,MAAO,MACP,WAAY,MACZ,kBAAmB,aAGpB,eACC,QAAS,IAAI,KACb,cAAe,EACf,UAAW,KACX,iBAAkB,aAClB,cAAe,IAAI,MAAM,aACzB,wBAAyB,kBACzB,uBAAwB,kBAGzB,qBACC,QAAS,KAGV,iBACC,QAAS,IAAI,KAId,gBADA,iBAEC,SAAU,SACV,QAAS,MACT,MAAO,EACP,OAAQ,EACR,aAAc,YACd,aAAc,MAGf,iBACC,QAAS,GACT,aAAc,KAGf,gBACC,QAAS,GACT,aAAc,KAGf,sBACC,aAAc;AC5bf,SACC,OAAQ,KACR,SAAU,KAEV,iBAAkB,KAClB,iBAAkB,sBAClB,kBAAmB,UACnB,oBAAqB,OAErB,wBAAyB,MACzB,qBAAsB,MACtB,mBAAoB,MACpB,gBAAiB,MAGlB,eACC,WAAY,KACZ,SAAU,SAGX,UACC,WAAY,OACZ,UAAW,KACX,QAAS,GAGV,QACC,SAAU,SACV,OAAQ,EACR,MAAO,KACP,WAAY,OACZ,eAAgB,KAGjB,OACC,UAAW,KACX,MAAO,IACP,WAAY,OACZ,OAAQ,EAAE,KACV,QAAS,GAGV,QACC,SAAU,MACV,IAAK,EACL,OAAQ,KACR,MAAO,KACP,WAAY,gBACZ,QAAS,EACT,YAAa,KAGd,YAAc,YAAa,OAES,aAApC,WAAY,WAAY,WACvB,QAAS,OAGV,qBACC,cAAe,KAGhB,oBACC,aAAc,KAGf,MACC,SAAU,SAGX,SACC,SAAU,SACV,MAAO,iBACP,UAAW,KACX,OAAQ,EACR,IAAK,IACL,MAAO,KAGR,WACC,SAAU,MACV,KAAM,MACN,IAAK,EAGN,YACC,QAAS,KAGV,UACI,SAAU,SACV,QAAS,IACT,QAAS,EACZ,MAAO,KACP,WAAY,WAGb,YACC,UAAW,MACX,QAAS,EAAI,IACb,eAAgB,OAChB,WAAY,OAGb,iBACC,UAAW,IACR,MAAO,aACP,OAAQ,IACR,QAAS,IACT,WAAY,aACZ,OAAQ,IAAI,MAAM,aACrB,QAAS,EACN,OAAQ,QACR,iBAAkB,2CAGtB,cACC,WAAY,kBACZ,QAAS,IACT,MAAO,aACP,YACA,WAAY,KACZ,mBAAoB,KAEpB,cAAe,IAGhB,oBACC,YACA,gBAAiB,SAGlB,eAAgC,gBAAiB,cAAjC,eAAiD,2BAA4B,IAAK,+BAAgC,IAAK,8BAA+B,IAAK,uBAAwB,IACnM,eAAgC,iBAAhB,eAAkC,cAAgB,4BAA6B,IAAK,gCAAiC,IAAK,+BAAgC,IAAK,wBAAyB,IACxM,eAAoD,cAApC,kBAAmB,gBAAiC,8BAA+B,IAAK,kCAAmC,IAAK,iCAAkC,IAAK,0BAA2B,IAClN,eAAgB,kBAAqC,cAAlB,iBAAkC,+BAAgC,IAAK,mCAAoC,IAAK,kCAAmC,IAAK,2BAA4B,IAEvN,WAAY,qBACX,QAAS,EAIV,SACC,SAAU,SACV,IAAK,IACL,KAAM,IAIP,uBACC,MAAO,IACP,OAAQ,IAER,sBAAuB,IACpB,mBAAoB,IACpB,kBAAmB,IACnB,iBAAkB,IAClB,cAAe,IAElB,OAAQ,IAAI,MAAM,aAInB,eACC,MAAO,IACP,OAAQ,IACR,SAAU,OAIX,kBACC,SAAU,SACV,KAAM,IACN,IAAK,IACL,MAAO,IACP,OAAQ,IACR,kBAAwB,GAAY,OAAT,SAAR,KACnB,eAAqB,GAAY,OAAT,SAAR,KAChB,aAAmB,GAAY,OAAT,SAAR,KACd,UAAgB,GAAY,OAAT,SAAR,KAGZ,eACC,MAAO,KAGR,kBACC,WAAY,KAGb,YACC,SAAU,MACV,QAAS,IACT,IAAK,EACL,KAAM,EACN,MAAO,KACP,OAAQ,KACR,QAAS,GACT,WAAY,aAAa,2CAA2C,IAAI,IAAI,SAG7E,eAAiB,QAAQ,aAAc,WAAY,OACnD,kBAAoB,MAAO,KAE3B,UAAY,cAAe,IAE3B,MAAQ,UAAW,IAAK,OAAQ,EAAE,IAAK,QAAS,IAChD,aAAe,QAAS,iBAExB,eAAiB,YAAa,IAC9B,uBAAyB,eAAgB,IAEzC,yCACC,KAAM,kBACN,OAAQ,mBAGT,2CACC,KAAM,aAGP,iDACC,OAAQ,QAIT,mBACC,WAAY,MACZ,WAAY,OACZ,WAAY,KAGb,aACC,WAAY,KACZ,aAAc,IAGf,eACC,WAAY,OAGb,cACC,WAAY,MACZ,cAAe,IAGhB,aACC,WAAY,KACZ,aAAc,IAGf,eACC,WAAY,OAGb,cACC,WAAY,MACZ,cAAe;AC7OhB,MAEC,aAAyB,iBACzB,aAAyB,gBACzB,OAAyB,iBACzB,kBAAyB,gBACzB,UAAyB,iBACzB,qBAAyB,gBACzB,QAAyB,iBACzB,mBAAyB,gBACzB,iBAAyB,iBAGzB,SAAyB,mBACzB,gBAAyB,mBACzB,QAAyB,mBACzB,OAAyB,gCAGzB,UAAyB,gCACzB,qBAAyB,iBACzB,cAAyB,6BAGzB,SAAyB,SACzB,YAAyB,0BACzB,YAAyB,2BAGzB,UAAW,QACX,UAAW,OACX,UAAW,QACX,UAAW,KACX,UAAW,OAGX,QAAW,OACX,QAAW,OACX,UAAW,KACX,QAAW,QACX,QAAW,OACX,QAAW,KAGZ,oCACC,6BACC,aAAsB,aACtB,aAAsB,iBACtB,OAAsB,aACtB,kBAAsB,iBACtB,UAAsB,aACtB,qBAAsB,iBACtB,QAAsB,gBACtB,mBAAsB,iBACtB,iBAAsB,gBACtB,SAAsB,iBACtB,gBAAsB,gBACtB,QAAsB,iBACtB,cAAsB,0BACtB,qBAAsB,kBAGxB,wBACC,aAAsB,aACtB,aAAsB,iBACtB,OAAsB,aACtB,kBAAsB,iBACtB,UAAsB,aACtB,qBAAsB,iBACtB,QAAsB,gBACtB,mBAAsB,iBACtB,iBAAsB,gBACtB,SAAsB,iBACtB,gBAAsB,gBACtB,QAAsB,iBACtB,cAAsB,0BACtB,qBAAsB,iBAOvB,KAGC,UAAW,KACX,YAAa,IAGd,KACC,MAAO,kBACP,YAAa,UAAY,CAAE,SAAS,CAAE,aAAa,CAAE,UAAU,CAAE,WAGlE,EAAI,MAAO,eAAgB,YAAa,IACxC,QAAU,MAAO,eAAgB,gBAAiB,UAElD,YAAc,WAAY,eAAgB,MAAO,0BAGjD,eACC,QAAS,IAAI,MAAM,YACnB,eAAgB,IAChB,cAAe,iBAQhB,YAEA,gBADA,WAEC,iBAAkB,YAClB,iBAAkB,KAClB,MAAO,uBACP,OAAQ,IAAI,MAAM,cAClB,cAAe,cACf,WAAY,KAGb,sBACA,+BACC,QAAS,KACT,YAAa,OACb,IAAK,eACL,eACA,iBAAkB,KAClB,OAAQ,EACR,cAAe,IAAI,MAAM,cACzB,cAAe,cAAc,cAAc,EAAE,EAC7C,QAAS,eAAe,eACxB,WAAY,EAGb,4BACC,UAAW,aACX,YAAa,IACb,eAAgB,MAChB,eAAgB,UAChB,MAAO,wBACP,OAAQ,EACR,MAAO,KAGR,aACC,KAAM,EAAE,EAAE,KACV,UAAW,aACX,YAAa,IACb,eAAgB,MAChB,eAAgB,UAChB,MAAO,wBACP,YAAa,OAGd,8BACC,QAAS,eACT,MAAO,uBACP,eAGD,iCACC,eACA,iBAAkB,KAClB,OAAQ,EACR,WAAY,IAAI,MAAM,cACtB,OAAQ,EACR,QAAS,eAAe,eAGzB,sDAAwD,MAAO,KAAM,WAAY,MAKjF,YADA,qCAEC,MAAO,GACP,YAAa,KACb,MAAO,KAAM,OAAQ,KACrB,SAAU,OACV,OAAQ,EACR,eACA,MAAO,wBACP,UAAW,aACX,YAAa,EACb,QAAS,EAAE,eACX,OAAQ,QAGT,kBADA,2CACoB,MAAO,mBAAoB,eAC/C,8CAAgD,QAAS,KACzD,4CAA8C,QAAS,QAOX,mBAAxB,qBACpB,mBADA,iBACsB,OAAQ,SAC7B,WAAY,KACZ,iBAAkB,YAClB,iBAAkB,KAClB,OAAQ,IAAI,MAAM,YAClB,cAAe,iBACf,MAAO,kBACP,KAAM,QACN,UAAW,eACX,QAAS,eAAe,eACxB,WAAY,KACZ,WAAY,aAAa,KAAK,IAAI,CAAE,iBAAiB,KAAK,KAG3D,YAAa,aAAc,eAAiB,aAAc,cAE1D,YAAa,aAAc,eAC1B,aAAc,YACd,iBAAkB,aAClB,QAAS,EAGV,cAAgB,MAAO,wBAAyB,QAAS,EAEjD,WAAY,qBAApB,OACA,mBAAsB,mBACrB,WAAY,KACZ,iBAAkB,YAClB,iBAAkB,KAClB,OAAQ,IAAI,MAAM,cAClB,cAAe,iBACf,MAAO,kBACP,KAAM,QACN,UAAW,aACX,YAAa,IACb,QAAS,eAAe,eACxB,WAAY,KACZ,YAAa,KACb,OAAQ,QACR,WAAY,aAAa,KAAK,IAAI,CAAE,iBAAiB,KAAK,IAAI,CAAE,MAAM,KAAK,KAG5C,2BAAlB,iBAAd,aACA,yBAA4B,yBAC3B,aAAc,qBACd,iBAAkB,aAClB,MAAO,kBAGR,wCACC,aAAc,eACd,MAAO,eAER,8CACC,iBAAkB,eAClB,MAAO,0BAER,kDACC,aAAc,mBACd,MAAO,mBACP,iBAAkB,YAGD,UAAlB,iBAA8B,QAAS,GAAI,OAAQ,QAMnD,UAAY,gBAAiB,SAAU,MAAO,KAE9C,aACC,eACA,iBAAkB,KAClB,OAAQ,EACR,cAAe,IAAI,MAAM,cACzB,MAAO,wBACP,UAAW,aACX,YAAa,IACb,eAAgB,MAChB,eAAgB,UAChB,WAAY,KACZ,QAAS,eAAe,eACxB,WAAY,KAGb,aACC,OAAQ,EACR,QAAS,eACT,UAAW,eACX,MAAO,uBAGR,mBAAqB,WAAY,iBAAiB,IAAI,KACtD,sCAA0C,iBAAkB,kBAC5D,4BAAgC,iBAAkB,aAClD,+BAAmC,iBAAkB,mDAI/B,uBAAwB,qBAA9C,qBACA,WACC,QAAS,aACT,QAAS,EAAE,eACX,OAAQ,IAAI,MAAM,aAClB,cAAe,MACf,eACA,UAAW,aACX,YAAa,IACb,YAAa,IACb,eAAgB,MAChB,YAAa,OAId,iCAAmC,SAAU,SAAU,QAAS,EAAG,eAAgB,KACnF,uCACC,QAAS,aACT,QAAS,eAAe,eACxB,aAAc,eACd,OAAQ,IAAI,MAAM,cAClB,cAAe,MACf,UAAW,aACX,OAAQ,QACR,WAAY,aAAa,KAAK,IAAI,CAAE,iBAAiB,KAAK,KAE3D,6CAAiD,aAAc,qBAAsB,WAAY,aACjG,+CACC,aAAc,aACd,WAAY,iDACZ,YAAa,IAEd,qDAAyD,QAAS,IAAI,MAAM,YAAa,eAAgB,IAMzG,QACC,WAAY,sDACZ,gBAAiB,UACjB,cAAe,IAAI,MAAM,cAG1B,gBAAkB,UAAW,aAC7B,SAAW,UAAW,aAAc,MAAO,wBAC3C,OAAW,UAAW,aAAc,MAAO,wBAK3C,mBAAqB,QAAS,KAAM,eAAgB,OAEpD,sBACC,SAAU,OACV,IAAK,EACL,QAAS,EACT,OAAQ,eAAe,EAAE,eACzB,QAAS,eAAe,EACxB,WAAY,YACZ,cAAe,IAAI,MAAM,cACzB,MAAO,wBACP,UAAW,aACX,YAAa,IACb,eAAgB,MAChB,eAAgB,UAEjB,kCAAsC,WAAY,EAClD,wBAA4B,MAAO,QAAS,YAAa,QAAS,gBAAiB,KAAM,OAAQ,QAEjG,uBAA2B,QAAS,EAAE,EAAE,eAExC,gBAAkB,WAAY,KAAM,WAAY,KAEhD,iBAAmB,OAAQ,KACT,iBAAlB,iBAAqC,QAAS,eAAgB,UAAW,eACzE,iBAAmB,MAAO,wBAAyB,YAAa,IAChE,WAAY,WAAa,cAAe,IAAI,MAAM,cAGd,iBAApC,kBAAsD,gBAAnC,gBACA,mBAAnB,kBACC,iBAAkB,KAClB,YAAa,KASd,gCAAkC,MAAO,wCACzC,gBAAkB,MAAO,eAGzB,8BAAgC,MAAO,KAAM,aAAc,MAC3D,iCACC,MAAO,IACP,WAAY,KACZ,YAAa,IACb,MAAO,wBACP,UAAW,eACX,eAAgB,OAEjB,iCAAmC,WAAY,MAAO,eAAgB,OAEtE,qCADA,iCAEA,uBACC,MAAO,KACP,UAAW,MACX,iBAAkB,aAClB,OAAQ,IAAI,MAAM,aAEnB,8BAAgC,MAAO,kBAIvC,kCAAsC,SAAU,SAAU,QAAS,EAAG,eAAgB,KACtF,wCACC,QAAS,aACT,QAAS,IAAI,eACb,YAAa,eACb,OAAQ,IAAI,MAAM,cAClB,cAAe,MACf,UAAW,aACX,MAAO,wBACP,OAAQ,QACR,eAAgB,OAEjB,8CACC,aAAc,qBACd,WAAY,aAEb,gDACC,aAAc,eACd,MAAO,eACP,WAAY,mDACZ,YAAa,IAEd,sDACC,QAAS,IAAI,MAAM,YACnB,eAAgB,IAajB,MACC,YAAmB,QACnB,iBAAmB,QACnB,YAAmB,QACnB,iBAAmB,QACnB,UAAmB,QAIpB,oCACC,6BACC,YAAkB,QAClB,iBAAkB,QAClB,YAAkB,QAClB,iBAAkB,QAClB,UAAkB,SAGpB,wBACC,YAAkB,QAClB,iBAAkB,QAClB,YAAkB,QAClB,iBAAkB,QAClB,UAAkB,QAsBnB,4CADA,2CAFkB,kBACgB,kCADlC,iBACA,iCAGiB,iBAAkB,gBAAnC,gBACmB,mBAAnB,kBAZc,cAAd,aAEA,0BADA,yBAIA,0CAFA,yCAD6B,0BADD,yBAK5B,0CAFA,yCASC,iBAAkB,eAClB,WAAY,eACZ,YAAa,eASd,WACC,QAAS,KACT,UAAW,KACX,YAAa,OACb,IAAK,eACL,OAAQ,EAGT,aACC,MAAO,wBACP,UAAW,aACX,YAAa,IACb,eAAgB,KAChB,eAAgB,UAChB,aAAc,eAGf,WACC,QAAS,YACT,YAAa,OACb,IAAK,IACL,QAAS,EAAE,eACX,OAAQ,IAAI,MAAM,cAClB,cAAe,MACf,WAAY,aACZ,UAAW,aACX,YAAa,IACb,YAAa,OACb,WAAY,aAAa,KAAK,IAAI,CAAE,iBAAiB,KAAK,KAE3D,iBAAmB,aAAc,qBAAsB,WAAY,sBACnE,aAAe,YAAa,IAC5B,qBAAuB,QAAS,GAAI,gBAAiB,aAKrD,kBADA,qBAEC,iBAAkB,eAEnB,qBAAuB,iBAAkB,eAczC,WACC,QAAS,KACT,eAAgB,OAChB,WAAY,mBACZ,UAAW,mBACX,WAAY,WAIb,iCADA,+BACqC,KAAM,EAAE,EAAE,KAE/C,8BACC,KAAM,EAAE,EAAE,KACV,WAAY,EACZ,WAAY,KACZ,WAAY,eACZ,OAAQ,eAIT,gBAAkB,WAAY,KAKxB,KAAN,KACC,iBAAkB,kBAenB,WACA,WACA,sBACC,MAAO,kBAIM,aAAd,aAA6B,MAAO,eAGpC,kBAAqB,MAAO,2BAC5B,mBAAqB,MAAO,2BAC5B,oBAAqB,MAAO,+BAG5B,sBADA,WAEC,UAAW,OACX,YAAa,EACb,eAAgB,MAChB,OAAQ,QAET,iBAAmB,OAAQ,iBAa3B,uBACA,qBAFA,qBAGA,WALA,WACA,UAFA,gBAOC,OAAQ,IAAI,MAAM,YAClB,MAAO,KACP,YAAa,IAKd,WACA,UAFA,gBAGC,WAAY,aACZ,MAAO,kBACP,aAAc,cAEf,iBAAkB,gBACjB,WAAY,sBACZ,aAAc,qBAIf,qBAAyB,WAAY,iBAAsB,aAAc,iBACzE,qBAAyB,WAAY,iBAAsB,aAAc,iBAAoB,MAAO,QACpG,uBAAyB,WAAY,qBAAsB,aAAc,qBAGzE,aACC,WAAY,eACZ,aAAc,eACd,MAAO,0BAER,0CACC,WAAY,iBAAkB,aAAc,iBAAkB,MAAO,QAEtE,4CACC,WAAY,iBAAkB,aAAc,iBAAkB,MAAO,QAItE,gDADA,+CAEC,WAAY,eACZ,aAAc,eACd,MAAO,0BACP,YAAa,IAId,sDAA4D,WAAY,iBAAsB,aAAc,iBAAsB,MAAO,QACzI,sDAA4D,WAAY,iBAAsB,aAAc,iBAAsB,MAAO,QACzI,wDAA4D,WAAY,qBAAsB,aAAc,qBAAsB,MAAO,KAUzI,sBAA6B,MAAO,kBACpC,sBAA6B,WAAY,iBACzC,qBAA6B,WAAY,qBACzC,wBAA6B,WAAY,aACzC,gBAA6B,aAAc,qBAC3C,gBAA6B,MAAO,kBAcpC,cACA,gBAJA,sBAEA,gCADA,8BAKA,wBACA,yBAFA,yBAGA,sBACC,MAAO,4BAIR,8BACA,wCACC,MAAO,+BASR,WADA,aAEC,QAAS,KACT,UAAW,KACX,YAAa,SACb,IAAK,MAGN,iBACC,QAAS,YACT,YAAa,SACb,IAAK,KACL,YAAa;ACjwBd,wCACC,YAAa,KACb,MAAO,eAOR,yBAA2B,QAAS;ACFpC,kBADA,qCAEC,UAAW,eAIZ,uBACC,QAAS,KACT,YAAa,OACb,UAAW,KACX,IAAK,eACL,OAAQ,EAAE,EAAE,eAAe,EAC3B,YAAa,IAKd,0CACC,KAAM,EAAE,EAAE,OACV,WAAY,MACZ,UAAW,aACX,YAAa,IACb,MAAO,wBACP,eAAgB,MAIjB,gDACC,KAAM,EAAE,EAAE,KACV,MAAO,wBACP,YAAa,IAUd,wCAFA,uCADA,mCAEA,yBAEC,iBAAkB,aAClB,OAAQ,IAAI,MAAM,aAClB,cAAe,iBACf,MAAO,kBACP,UAAW,eACX,QAAS,eAAe,eACxB,WAAY,OAGb,yCACA,+BAAiC,aAAc,qBAE/C,yCACA,+BACC,aAAc,YACd,iBAAkB,kBAInB,+BAAkC,MAAO,OAAQ,WAAY,OAAQ,eAAgB,UACrF,gCAAkC,MAAO,OAAQ,WAAY,OAAQ,eAAgB,UACrF,2BAAkC,MAAO,MACzC,uCACA,sCAA0C,KAAM,EAAE,EAAE,MAAO,UAAW,KAKtE,+BACA,qCACC,aAAc,mBACd,WAAY,EAAE,EAAE,EAAE,IAAI,mBAIvB,kCACA,mCACC,UAAW,eAEZ,yCACC,MAAO,OACP,WAAY,OAGb,yCADA,wCAEC,UAAW,aACX,MAAO,wBAKR,6BACC,SAAU,OACV,UAAW,KACX,QAAS,MACT,MAAO,KACP,OAAQ,eAAe,EAAE,eACzB,eAAgB,eAChB,cAAe,IAAI,MAAM,cACzB,MAAO,wBACP,UAAW,aACX,YAAa,IACb,eAAgB,MAChB,eAAgB,UAChB,WAAY,KAGb,wBAA0B,aAAc,EACxC,qBAAuB,QAAS,KAKhC,kCACC,QAAS,KACT,UAAW,KACX,IAAK,eACL,KAAM,EAAE,EAAE,KACV,YAAa,KACb,WAAY,0BAGb,yCACC,OAAQ,IAAI,MAAM,cAClB,cAAe,iBACf,eACA,QAAS,IAAI,eACb,UAAW,EACX,WAAY,EACZ,UAAW,aACX,YAAa,IAGd,+CACC,aAAc,qBACd,WAAY,aAIb,kCAAoC,YAAa,OAGjD,kDACC,UAAW,aACX,QAAS,IAAI,eACb,WAAY,EAMb,kCACC,MAAO,wCAER,kBAAoB,MAAO,eAI3B,qCAAuC,UAAW,OAClD,iCAAmC,YAAa,KAChD,uDAAyD,UAAW,KAGpE,kCACC,YAAa,KACb,IAAK,IAEN,yCACC,UAAW,KACX,WAAY,OACZ,UAAW,aACX,QAAS,IAAI,EAKd,kCACA,mCACC,QAAS,YACT,YAAa,OACb,IAAK,eACL,QAAS,IAAI,eACb,OAAQ,IAAI,MAAM,aAClB,cAAe,iBACf,WAAY,aAEb,yCACC,OAAQ,EACR,eACA,WAAY,EACZ,QAAS,EACT,MAAO;AC7KR,yBAA2B,mBAC1B,SAAW,WAAY,OAEvB,UACA,aACC,SAAU,iBACV,MAAO,eACP,OAAQ,eACR,OAAQ,YAGT,YACC,SAAU,iBACV,MAAO,eACP,OAAQ,eACR,WAAY,MACZ,OAAQ,EAAE,EAAE,eAAe,YAC3B,SAAU,QAMX,qBACA,sBACC,SAAU,iBACV,OAAQ,eACR,MAAO,eACP,IAAK,eACL,MAAO,eACP,OAAQ,eACR,KAAM,eAIP,sBAAwB,WAAY,KACpC,sBAAwB,WAAY,MAGpC,aAAe,QAAS,eASxB,QADA,0BALA,iCAEA,oCADA,kCAGA,wBADA,wBAIC,QAAS,eAIV,cACA,0BAA4B,QAAS,KAErC,QAAU,SAAU,OAIpB,4BADA,4BAC8B,QAAS,MAOxC,sEACC,UACA,aACC,SAAU,iBACV,MAAO,eACP,OAAQ,eAGT,aACC,QAAS,KACT,sBAAuB,IAAI,IAC3B,IAAK,eACL,QAAS,EAAE,eAGZ,YACC,SAAU,iBACV,MAAO,eACP,OAAQ,eACR,OAAQ,YAMT,qBACA,sBACC,SAAU,iBACV,OAAQ,eACR,MAAO,eACP,IAAK,eACL,MAAO,eACP,OAAQ,eACR,KAAM,eAGP,YAAoB,WAAY,KAChC,kBAAoB,WAAY,KAChC,aAAoB,WAAY,KAGhC,aACC,YAAa,CAAE,CAAE,GACjB,WAAY,KAGb,aAAe,QAAS,gBAOzB,wBAIC,UAHA,YACA,uBACA,YAEA,uBACC,UAAW,KACX,WAAY,KACZ,QAAS,YACT,YAAa,OACb,gBAAiB,OAGV,WAAR,OAAoB,mBAAsB,mBACzC,WAAY,KACZ,QAAS,eAAe,eAGmB,mBAAxB,qBAApB,iBACA,OAAQ,SACP,WAAY,KACZ,UAAW,QAGZ,aAAe,QAAS,eAAe,eAEvC,uCACC,QAAS,eAAe,eAIzB,4BAAgC,iBAAkB,aAInD,yBAA2B,mBAC1B,WACC,UAAW,uCACX,WAAY,uCACZ,KAAM,yBACN,SAAU,KAEX,8BAAgC,WAAY,KAAM,SAAU,MAI7D,uCACC,EAAc,QAAX,SACF,mBAAoB,eACpB,0BAA2B,YAC3B,oBAAqB,gBAcvB,aACC,aAAc,MAAM,MAAM,WAC1B,2BAA4B,MAC5B,oBAAqB,QAKtB,yBAA2B,mBAC1B,kBACA,0BACC,aAAc;ACtNhB,WACC,QAAS,KACT,eAAgB,OAChB,IAAK,eACL,QAAS,eACT,WAAY,KACZ,OAAQ,KACR,WAAY,WAIb,UAAY,QAAS,KAAM,eAAgB,OAAQ,IAAK,eAExD,qBACC,QAAS,KACT,YAAa,OACb,IAAK,eACL,OAAQ,EACR,UAAW,aACX,YAAa,IACb,YAAa,IACb,MAAO,kBACP,eAAgB,OAKjB,UAAY,QAAS,KAAM,UAAW,KAAM,IAAK,eAEjD,gBACC,OAAQ,EACR,QAAS,IAAI,eACb,OAAQ,IAAI,MAAM,cAClB,cAAe,MACf,WAAY,aACZ,MAAO,kBACP,UAAW,aACX,YAAa,IACb,YAAa,IACb,YAAa,OAGd,sBAAwB,QAAS,KAEjC,wBAA0B,MAAO,QAGjC,aACC,UAAW,aACX,YAAa,IACb,MAAO,uBAER,mBAAqB,QAAS,KAK9B,WACC,UAAW,aACX,MAAO,kBACP,YAAa,IAEd,iBAAmB,QAAS,KAG5B,eAAiB,WAAY,MAG7B,WACC,QAAS,KACT,IAAK,eACL,gBAAiB,OAElB,aACC,QAAS,IAAI,eACb,OAAQ,IAAI,MAAM,cAClB,cAAe,MACf,MAAO,wBACP,UAAW,aACX,YAAa,IACb,gBAAiB,KAElB,mBACC,aAAc,qBACd,WAAY,aACZ,MAAO,kBACP,gBAAiB,KAIlB,WACC,QAAS,KACT,UAAW,KACX,IAAK,eACL,gBAAiB,OACjB,YAAa,eACb,WAAY,IAAI,MAAM,cACtB,UAAW,aAEZ,aAAe,MAAO,wBAAyB,YAAa,IAC5D,mBAAqB,MAAO;AC/F5B,aAAe,QAAS,KAExB,MACC,SAAU,SACV,QAAS,aACT,MAAO,IACP,OAAQ,IACR,eAAgB,MAChB,QAAS,IACT,WAAY,QAAQ,KAAK,KAEb,oBAAb,YAAmC,QAAS,EAG5C,aADA,cAEC,QAAS,GACT,SAAU,SACV,MAAO,MACP,OAAQ,MACR,OAAQ,IAAI,MAAM,aAClB,cAAe,IAEhB,cAAgB,KAAM,EAAO,IAAK,MAClC,aAAgB,KAAM,KAAO,IAAK,EAAO,WAAY,YASrD,gCAGA,6BACA,mBACA,mBAJA,2BACA,8BAIC,iBAAkB,eAClB,WAAY,KACZ,cAAe,iBACf,aAAc,IACd,aAAc,MACd,WAAY,aAAa,KAAK,IAAI,CAAE,iBAAiB,KAAK,KAG3D,mBAAgC,iBAAkB,YAClD,2BAAgC,iBAAkB,0DAClD,8BAAgC,iBAAkB,6DAClD,6BAAgC,iBAAkB,4DAClD,mBAAgC,iBAAkB,2DAGlD,gCACC,iBAAkB,mDAClB,aAAc,eACd,WAAY,EAAE,EAAE,EAAE,IAAI,eAGvB,yBAA2B,aAAc,qBAIzC,qBACC,iBAAkB,aAClB,MAAO,wBACP,WAAY,KACZ,OAAQ,IAAI,MAAM,cAClB,cAAe,MACf,YAAa,QACb,UAAW,aACX,YAAa,IACb,YAAa,IACb,QAAS,EAAE,IACX,UAAW,MAGZ,oBACC,UAAW,aACX,MAAO,wBACP,eAAgB,MAGjB,wBACC,cAAe,MACf,QAAS,EAAE,IACX,UAAW,aAOZ,iBAAmB,QAAS,EAE5B,sBAAwB,OAAQ,QAAS,YAAa,KAAM,YAAa,OACzE,4BAA8B,MAAO,kBAIrC,sCAAwC,QAAS,KAEjD,6BACC,QAAS,GACT,QAAS,aACT,MAAO,EAAG,OAAQ,EAClB,YAAa,eACb,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,QAAS,EACT,WAAY,QAAQ,KAAK,KAE1B,0CACC,cAAe,IAAI,MAAM,eACzB,QAAS,EAEV,2CACC,WAAY,IAAI,MAAM,eACtB,QAAS,EAMV,0BADA,0BAEC,QAAS,aACT,QAAS,EAAE,eACX,OAAQ,IAAI,MAAM,cAClB,cAAe,MACf,WAAY,aACZ,UAAW,aACX,YAAa,IACb,YAAa,IAId,oBAAsB,MAAO,wBAAyB,qBAAsB,aAG5E,mBAAqB,qBAAsB,aAAc,eAAgB,MAGzE,6BACA,4BACC,QAAS,+BACT,QAAS,MACT,QAAS,eAAe,eACxB,WAAY,OACZ,MAAO,wBACP,UAAW,aAUZ,YACC,QAAS,KACT,YAAa,OACb,UAAW,KACX,IAAK,eACL,QAAS,eAAe,eACxB,cAAe,IAAI,MAAM,cAG1B,mBAAqB,QAAS,KAAM,UAAW,KAAM,IAAK,eAE1D,UACC,OAAQ,IAAI,MAAM,cAClB,cAAe,MACf,eACA,MAAO,wBACP,UAAW,aACX,YAAa,IACb,YAAa,IACb,QAAS,EAAE,eACX,WAAY,EACZ,OAAQ,QACR,WAAY,aAAa,KAAK,IAAI,CAAE,iBAAiB,KAAK,IAAI,CAAE,MAAM,KAAK,KAE5E,gBAAkB,aAAc,qBAAsB,WAAY,aAAc,MAAO,kBAGvF,aACC,aAAc,eACd,MAAO,eACP,WAAY,mDAKb,0CACC,aAAc,iBAAkB,MAAO,iBACvC,WAAY,qDAEb,4CACC,aAAc,iBAAkB,MAAO,iBACvC,WAAY,qDAGb,WACC,YAAa,KACb,MAAO,wBACP,UAAW,aACX,YAAa,OACb,qBAAsB,aAGvB,gCAAkC,QAAS,KAI3C,gDACC,WAAY,MAAM,IAAI,EAAE,EAAE,iBAK3B,iEACA,kEACC,QAAS,GACT,QAAS,aACT,MAAO,KAAM,OAAQ,KACrB,aAAc,MACd,cAAe,IACf,eAAgB,MAEjB,iEAAwE,WAAY,qBACpF,kEAAwE,WAAY,iBAKpF,WACA,UAFA,gBAGC,MAAO;AC3OR,yBACO,KAAN,KAAa,OAAQ,KAAM,SAAU,OAErC,SACC,OAAQ,MACR,SAAU,OACV,QAAS,KACT,eAAgB,OAGjB,eACC,KAAM,EAAE,EAAE,KACV,WAAY,EACZ,QAAS,KACT,eAAgB,OAGjB,QAAU,KAAM,EAAE,EAAE,KAAM,SAAU,OAEpC,UACC,KAAM,EAAE,EAAE,KACV,WAAY,EACZ,WAAY,kBACZ,QAAS,eACT,WAAY,WAGb,aACC,SAAU,iBACV,MAAO,eACP,OAAQ,eACR,OAAQ,YACR,QAAS,EACT,WAAY,KAEZ,QAAS,KACT,IAAK,eAEL,sBAAuB,kBAAmB,qBAAsB,oBAEhE,mBAAoB,mBAAoB,KAI1C,YACC,SAAU,iBACV,MAAO,eACP,OAAQ,eACR,WAAY,EACZ,OAAQ,YACR,QAAS,KACT,eAAgB,OAChB,SAAU,OAGX,sBACC,SAAU,iBACV,KAAM,EAAE,EAAE,KACV,MAAO,eACP,OAAQ,eACR,IAAK,eAAiB,MAAO,eAC7B,OAAQ,eAAiB,KAAM,eAGhC,qBACC,SAAU,iBACV,KAAM,EAAE,EAAE,KACV,WAAY,EACZ,MAAO,eACP,OAAQ,eACR,IAAK,eAAiB,MAAO,eAC7B,OAAQ,eAAiB,KAAM,eAC/B,SAAU,KAGX,aAAe,YAAa,CAAE,CAAE,GAGhC,aAAe,QAAS,eAGxB,yBAA2B,QAAS,eAWpC,iBACC,QAAS,GACT,SAAU,MACV,MAAO,EACP,WAAY,uIAKZ,eAAgB,KAChB,QAAS,EAGV,eAAiB,SAAU,SAAU,QAAS,EAE9C,YACC,iBAAkB,YASnB,QAAU,QAAS,eAOnB,QACC,QAAS,KACT,YAAa,OACb,IAAK,eACL,QAAS,EAAE,eACX,OAAQ,KACR,WAAY,OACZ,YAAa,OAEd,oBAAyB,QAAS,KAAM,YAAa,OAAQ,IAAK,eAAgB,KAAM,EAAE,EAAE,KAC5F,qBAAyB,QAAS,KAAM,YAAa,OAAQ,IAAK,eAAgB,KAAM,EAAE,EAAE,KAAM,cAAe,EACjH,WAAY,WAAa,OAAQ,EAAG,QAAS,KAAM,YAAa,OAAQ,IAAK,eAQ7E,uBAA2B,oBAAqB,qDAChD,0BAA4B,MAAO,eAGnC,WAAa,QAAS,eACtB,WAAa,KAAM,EAAE,EAAE,KAGvB,sBAA0B,WAAY,OAGtC,eAAiB,WAAY,EAC7B,yBAA2B,OAAQ,eAAiB,QAAS,IAC7D,uBAAyB,WAAY,eAMrC,sBADA,gBAEC,iBAAkB,YAClB,iBAAkB,KAOnB,4BACC,iBAAkB,gDAInB,sBAA0B,eAW1B,yBACC,aACC,mBAAoB,mBAAoB,KAW1C,UAAY,aAAc,MAEC,0BAA3B,0BAAuD,MAAO,OAAQ,YAAa,OACxD,0BAA3B,0BAAuD,MAAO,KAAQ,YAAa,OACxD,0BAA3B,0BAAuD,MAAO,OAAQ,YAAa,OACxD,0BAA3B,0BAAuD,MAAO,KACnC,0BACA,0BAD3B,0BACA,0BAAuD,MAAO,OAAQ,YAAa,OAInF,aAAc,aAAe,WAAY,KACzC,0BACA,0BAD2B,0BACA,0BAA4B,WAAY,MAGnE,yBAA0B,wBAA0B,WAAY,QAGhE,0BAA4B,qBAAsB,aAAc,SAAU,OAAQ,cAAe,SAGjG,mBAAqB,SAAU,OAAQ,IAAK,EAAG,WAAY,YAAa,QAAS,EAQjF,qBAA8B,MAAO,kBAAmB,YAAa,IACvD,WAAd,aAA8B,MAAO,uBAErC,yBADc,SAEd,WAFA,aAE8B,MAAO,wBAIrC,YAAc,QAAS,eAAe,eACtC,UAAc,UAAW,yBAKzB,cAAgB,SAAU,OAAQ,QAAS,KAAM,YAAa,SAAU,IAAK,eAE7E,SACC,SAAU,OACV,IAAK,KAAM,MAAO,KAClB,OAAQ,KACR,UAAW,aACX,MAAO,wBACP,eAAgB,MAChB,YAAa,OAId,YACC,SAAU,SACV,QAAS,KACT,UAAW,MACX,QAAS,eAAe,EACxB,WAAY,eACZ,OAAQ,IAAI,MAAM,cAClB,cAAe,iBACf,WAAY,EAAE,IAAI,KAAK,eAExB,mBACC,QAAS,KACT,YAAa,OACb,IAAK,eACL,MAAO,KACP,OAAQ,EACR,cAAe,EACf,eACA,MAAO,kBACP,UAAW,aACX,WAAY,KACZ,QAAS,eAAe,eACxB,WAAY,EAEb,yBAA2B,WAAY,aACvC,kBAAoB,MAAO,IAAK,MAAO,eAUvC,QACC,QAAS,aACT,MAAO,OACP,OAAQ,OACR,cAAe,IACf,WAAY,MACZ,eAAgB,OAChB,WAAY,aAEZ,WAAY,EAAE,EAAE,EAAE,IAAI,cAGvB,cACC,QAAS,YACT,YAAa,OACb,IAAK,eAGN,WACC,MAAO,OACP,OAAQ,OACR,WAAY,EAAE,EAAE,EAAE,IAAI,cAGvB,wBAA0B,cAAe,eAAgB,eAAgB,IAIzE,kBACA,mBACA,WACC,cAAe,IAIhB,SACC,MAAO,OAAQ,OAAQ,OACvB,WAAY,QACZ,eAAgB;AC7UjB,uBACC,UAAW,OACX,IAAK,eAIN,wCAA+C,KAAM,EAAE,EAAE,KAEzD,WACC,KAAM,EAAE,EAAE,KACV,UAAW,EACX,QAAS,KACT,YAAa,QACb,IAAK,IACL,WAAY,KACZ,WAAY,OACZ,gBAAiB,KACjB,iBAAkB,EAAE,UAEpB,WAAY,0FAIb,8BAAgC,OAAQ,IACxC,oCAAsC,WAAY,qBAAsB,cAAe,MACvF,oCAAsC,eAItC,gBACC,KAAM,EAAE,EAAE,KACV,UAAW,EACX,UAAW,MACX,QAAS,KACT,YAAa,OACb,IAAK,eACL,QAAS,IAAI,eACb,OAAQ,IAAI,MAAM,YAClB,cAAe,iBAAiB,iBAAiB,EAAE,EACnD,cAAe,IAAI,MAAM,YACzB,eACA,MAAO,wBACP,UAAW,aACX,YAAa,IACb,WAAY,KACZ,YAAa,OACb,kBAAmB,MACnB,WAAY,MAAM,KAAK,IAAI,CAAE,iBAAiB,KAAK,IAAI,CAAE,aAAa,KAAK,KAG5E,sBACC,WAAY,aACZ,MAAO,kBACP,oBAAqB,qBAKtB,wBACC,WAAY,aACZ,MAAO,kBACP,oBAAqB,eACrB,YAAa,IAKd,sBACC,MAAO,KACP,aAAc,EACd,SAAU,OACV,cAAe,SACf,YAAa,OAGd,0BACA,yBACC,MAAO,KACP,KAAM,EAAE,EAAE,KACV,QAAS,EAAE,IACX,UAAW,MACX,YAAa,EACb,MAAO,wBAQR,kCACA,iCAHA,gCACA,+BAGC,QAAS,EACT,WAAY,QAGb,gCAAkC,MAAO,mBACzC,+BAAkC,MAAO,eAGzC,+BACC,WAAY,YACZ,aAAc,cACd,WAAY,EAAE,IAAI,KAAK,eAKxB,0BAA4B,QAAS,KAgBrC,wCACC,YAAa,KACb,MAAO,eACP,QAAS,KACT,YAAa,OACb,IAAK,eAIN,kCAAwC,YAAa,EAKrD,oDAA8D,YAAa,EAC3E,gDAAsD,YAAa,KAInE,yCAAiD,YAAa;AChJ9D,QACC,QAAS,KACT,YAAa,OACb,IAAK,eACL,QAAS,eAAe,eACxB,OAAQ,KACR,WAAY,EACZ,YAAa,OACb,UAAW,OAGZ,oBACC,QAAS,KACT,YAAa,OACb,IAAK,eACL,KAAM,EAAE,EAAE,KACV,UAAW,EAGZ,qBACC,QAAS,KACT,YAAa,OACb,IAAK,eACL,KAAM,EAAE,EAAE,KACV,cAAe,EAGhB,cACC,QAAS,KACT,YAAa,SACb,IAAK,eACL,OAAQ,EACR,KAAM,EAAE,EAAE,KAEX,gBAAkB,UAAW,OAAQ,YAAa,IAElD,WAAa,OAAQ,EAAG,QAAS,KAAM,YAAa,OAAQ,IAAK,eAGjE,gBAAkB,MAAO,OAAQ,OAAQ,OACzC,cAAgB,IAAK,eAAgB,UAAW,QAGhD,gBADA,kBACkB,UAAW,OAAQ,KAAM,EAAE,EAAE,KAG/C,sBAAwB,KAAM,EAAE,EAAE,KAAM,UAAW,EAQnD,WACC,KAAM,EAAE,EAAE,KACV,QAAS,KACT,YAAa,OACb,gBAAiB,cACjB,IAAK,eACL,QAAS,eAAe,eACxB,WAAY,IAAI,MAAM,cACtB,WAAY,sDACZ,UAAW,aACX,MAAO,kBAGR,sBAAwB,qBAAsB,aAAc,YAAa,IACzE,4CAA8C,MAAO,qBAErD,WACC,MAAO,wBACP,UAAW,aACX,YAAa,IACb,eAAgB,KAChB,eAAgB,UAChB,aAAc,eASf,KACC,OAAQ,IAAI,MAAM,aAClB,cAAe,iBACf,WAAY,aACZ,SAAU,OAGX,SACC,QAAS,KACT,YAAa,OACb,UAAW,KACX,IAAK,IACL,QAAS,eACT,cAAe,IAAI,MAAM,cACzB,WAAY,gDAGb,SACC,UAAW,OACX,WAAY,OACZ,QAAS,EAAE,eACX,OAAQ,IAAI,MAAM,YAClB,cAAe,iBACf,eACA,MAAO,wBACP,UAAW,aACX,YAAa,EACb,OAAQ,QAET,eAAiB,WAAY,sBAAuB,MAAO,kBAAmB,aAAc,cAE5F,SAAW,MAAO,IAAK,WAAY,QAAS,OAAQ,IAAI,eAAgB,WAAY,cAEpF,YACC,MAAO,OAAQ,OAAQ,OACvB,UAAW,EAAG,WAAY,EAC1B,QAAS,EACT,OAAQ,IAAI,MAAM,cAClB,cAAe,IACf,OAAQ,QAET,kBAAoB,UAAW,YAE/B,UACC,WAAY,KACZ,WAAY,MACZ,WAAY,KACZ,QAAS,eACT,MAAO,kBACP,UAAW,eACX,YAAa,IACb,QAAS,EAEV,gBAAkB,WAAY,kBAC9B,YAAc,MAAO,eACP,aAAd,aAA6B,aAAc,MAAO,OAAQ,KAAK;AC/IV,EADrD,KAA+B,OACW,IAA3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAD7B,MACkD,GAAjB,EAD1B,OACkC,KAA/C,MAAO,GADc,SACV,GACV,YAAa,UAAY,CAAE,SAAS,CAAE,aAAa,CAAE,UAAU,CAAE,WAIlE,MAAO,cADP,YAAkC,mBAArB,oBACU,YAAa,eAGpC,0BACA,sBACA,oBAHW,MAAX,KAAM,IAGgB,qBAAsB,aAW5C,sBACC,SAAU,OACV,eAYD,oBAAwB,SAAU,OAElC,qBACA,oBAFA,sBAEsB,UAAW,EAAG,SAAU,OAAQ,cAAe,SACrE,uCAA2C,UAAW,MAAO,UAAW,EACxE,qBAAyB,QAAS,EAOlC,WAAa,YAAa,eAC1B,qBAAuB,WAAY,EAOnC,WACC,QAAS,KACT,sBAAuB,IAAI,KAAK,IAChC,YAAa,OAEd,yBAA6B,aAAc,MAC3C,oBAA6B,aAAc,OAC3C,oBAA6B,aAAc,IAK3C,eAAiB,SAAU,OAG3B,mBAAoB,gBAAiB,SACpC,YAAa,UAAY,CAAE,SAAS,CAAE,aAAa,CAAE,UAAU,CAAE,WAOlE,0BACC,YAAa,YAAY,CAAE,SAAS,CAAE,KAAK,CAAE,QAAQ,CAAE,UACvD,qBAAsB,aACtB,eAAgB,MAiBjB,QACC,WAAY,WACZ,MAAO,KACP,UAAW;ACvFZ,qBACA,sBACA,2BAHA,qBAIC,QAAS,KACT,WAAY,WACZ,SAAU,KACV,WAAY,EAMb,sBAA0B,QAAS,EAAG,WAAY,EAAG,SAAU,OAC/D,aAAe,QAAS,eAAgB,WAAY,WAAY,WAAY,KAAM,SAAU,KAG5F,cAAgB,cAAe,eAC/B,eAAqB,WAAY,eACjC,uBAAyB,WAAY,eAqBrC,yBACC,aACC,sBAAuB,kBAAmB,oBAAqB,oBAC/D,mBAAoB,mBAAoB,KAS1C,WAAa,UAAW,KACxB,sBAAwB,UAAW,QAAS,eAAgB,MAAO,QAAS,IAC5E,sBAAwB,UAAW,QAAS,qBAAsB,aAIlE,4BAA8B,MAAO,KAAM,OAAQ,KACnD,kBAAoB,QAAS,YAAa,YAAa,OAAQ,IAAK,eAOpE,MACC,iBAAkB,0BAClB,kBAAmB,QAEpB,oCACC,6BACC,iBAAkB,oBAClB,kBAAmB,SAGrB,wBACC,iBAAkB,oBAClB,kBAAmB,QAQpB,gCADA,4DAEC,QAAS,iBACT,QAAS,MACT,QAAS,eAAe,eACxB,WAAY,OACZ,MAAO,wBACP,UAAW,KACX,YAAa,IAId,4DAA8D,QAAS,+BACvE,wBAA0B,OAAQ,KAAM,WAAY,EAMpD,WAAa,QAAS,KAAM,UAAW,KAAM,YAAa,OAAQ,IAAK,eACvE,iBACC,MAAO,wBACP,UAAW,KACX,YAAa,IACb,eAAgB,MAChB,eAAgB,UAEjB,WACC,QAAS,YACT,YAAa,OACb,IAAK,eACL,QAAS,IAAI,eAAe,IAAI,eAChC,cAAe,MACf,WAAY,aACZ,MAAO,kBACP,UAAW,KACX,YAAa,IACb,gBAAiB,KAIlB,iBACC,WAAY,eACZ,MAAO,0BACP,gBAAiB,KAElB,qBACC,QAAS,EAAE,IACX,cAAe,MACf,WAAY,aACZ,UAAW,IACX,YAAa,IACb,eAAgB,MAKjB,4BAA8B,QAAS,KACvC,qBAAuB,wBAAyB,YAChD,qBAAuB,QAAS,GAAI,gBAAiB,aAM1B,0BAA3B,0BAAuD,MAAO,QACnC,0BAA3B,0BAAuD,MAAO,OACnC,0BAA3B,0BAAuD,MAAO,QACnC,0BACA,0BAD3B,0BACA,0BAAuD,MAAO,KAa9D,SACC,QAAS,eAAe,EACxB,cAAe,IAAI,MAAM,cAE1B,oBAAsB,cAAe,EAErC,gBACC,QAAS,KACT,YAAa,WACb,gBAAiB,cACjB,IAAK,eACL,cAAe,IAGhB,iCADA,8BAEC,MAAO,KACP,UAAW,EAEZ,cACC,QAAS,KACT,eAAgB,OAChB,IAAK,IACL,KAAM,EAAE,EAAE,KAGX,8BADA,+BAEC,QAAS,MACT,UAAW,KACX,YAAa,KACb,MAAO,wBAER,iBACC,QAAS,KACT,IAAK,eACL,KAAM,EAAE,EAAE,KACV,UAAW,KAEZ,aAAe,UAAW,KAAM,YAAa,IAC7C,0BAA+B,WAAY,EAC3C,yBAA+B,cAAe,EAe9C,aAAiB,KAAM,EAAE,EAAE,KAE3B,eAEA,wBADA,yBAEC,OAAQ,eACR,WAAY,EACZ,QAAS;ACjPV,yBAA2B,mBAI1B,QACC,WAAY,EACZ,OAAQ,KACR,QAAS,IAAI,KACb,IAAK,IAEN,QAAU,QAAS,KAAM,WAAY,EACrC,oBAAwB,QAAS,KAAM,KAAM,EAAE,EAAE,KACjD,kCAAsC,QAAS,KAC/C,oBAAsB,UAAW,KACjC,sBAA0B,QAAS,KACnC,mBAAqB,QAAS,KAC9B,mBAAqB,aAAc,IACnC,qBACC,KAAM,EAAE,EAAE,KACV,MAAO,KACP,QAAS,KACT,YAAa,OACb,gBAAiB,cACjB,IAAK,KAEN,4BAA8B,MAAO,KAAM,OAAQ,KACnD,WAAa,OAAQ,EAAG,UAAW,KAEnC,UAAY,QAAS,KAIrB,sBAA0B,UAAW,KAAM,QAAS,IAMpD,qBACA,oBAJA,+BADA,gCADA,4DAGA,oBACA,mBAEsB,QAAS,eAC/B,WAAa,KAAM,EAAE,EAAE,KAAM,UAAW,EAAG,MAAO,GAUnD,yBAA2B,mBAC1B,iCAAuC,KAAM,EAAE,EAAE,KAAM,YAAa,EAAG,gBAAiB,SACxF,oCACA,2BAA6B,QAAS,gBAEvC,yBAA2B,mBAI1B,kCADA,uCACwC,QAAS,MAQlD,yBAA2B,mBAC1B,qBAAyB,gBAAiB,WAAY,IAAK,KAC3D,+BACA,gCAAsC,YAAa,KACnD,6BAAmC,QAAS,KAE5C,iCAAuC,KAAM,EAAE,EAAE,KAAM,YAAa,KACpE,6CAAqD,YAAa,eAMlE,mCADA,iCADA,yCADA,sCADA,qCAKA,gCAAsC,QAAS,eAC/C,WAAa,MAAO,GAErB,yBAA2B,mBAIA,4BAA1B,yBAAwD,iBAAkB,aAC3C,+BAA/B,4BAAkE,iBAAkB;ACzFrF,MACC,QAAW,KACX,QAAW,KACX,UAAW,KACX,QAAW,KACX,QAAW,KACX,QAAW,KAGX,SAAa,IACb,YAAa,IACb,YAAa,IAKb,gBAAoB,KACpB,mBAAoB,KAGpB,OAAQ,KACR,UAAW,KAGZ,KAAO,UAAW,eAGlB,oBAAsB,UAAW,YAAa,YAAa,EAC3D,4BAA8B,UAAW,eAKzC,iCADA,8BAD+B,gCAA/B,4BACiC,kBAEhC,WAAY,wBACZ,WAAY,WAEb,6BAA+B,WAAY,wBAY3C,oCACC,6BACC,aAAkB,sBAClB,OAAkB,aAClB,UAAkB,aAClB,QAAkB,sBAClB,iBAAkB,sBAClB,SAAkB,qBAClB,gBAAkB,qBAClB,QAAkB,sBAGpB,wBACC,aAAkB,sBAClB,OAAkB,aAClB,UAAkB,aAClB,QAAkB,sBAClB,iBAAkB,sBAClB,SAAkB,qBAClB,gBAAkB,qBAClB,QAAkB,qBAWnB,uBAEA,WACA,WAFA,WAGC,QAAS,KACT,gBAAiB,WACjB,IAAK,eACL,WAAY,KAEb,WAAa,WAAY,EAAG,YAAa,EACzC,aAAc,aAAe,QAAS,EAiBtC,sBAAwB,QAAS,KAAM,eAAgB,OACvD,gBAAkB,QAAS,eAC3B,sBAA0B,MAAO,EACjC,yBAA6B,MAAO,EAAG,OAAQ,IAAI,EAAE,EACrD,wBAA4B,MAAO,EAEnC,cAAgB,eAAgB,IAAK,UAAW,KAAM,IAAK,EAAE,eAAgB,YAAa,SAC1F,8BACA,+BAAiC,UAAW,aAC5C,uCAAyC,QAAS,KAElD,0BAA4B,QAAS,EAAG,WAAY,QAAQ,KAAK,KAEjE,uCADA,gCACyC,QAAS,EAClD,wBAA2B,0BAA4B,QAAS,GAQhE,yBAA2B,mBAC1B,mCAAuC,QAAS,eAChD,WAAa,KAAM,EAAE,EAAE,KAAM,UAAW,MAQzC,UAAW,sBAA+B,UAAW,aAC3B,WAC1B,cAAe,yBADf,WAAY,aAC8B,UAAW,eACrD,gBAA2C,UAAW,aAC3C,cAAX,UAA0B,gBAAkB,UAAW,aACvD,qBAA2C,UAAW,aAAc,OAAQ,KAAM,QAAS,EAAE,IAC7F,IAA2C,UAAW,aACtD,iBAAkB,gBAAyB,UAAW,aAItD,mBAAqB,WAAY,WAAY,OAAQ,qBACrB,MAArB,WAAX,UAAuB,QACtB,WAAY,WACZ,OAAQ,KACR,QAAS,YACT,YAAa,OACb,YAAa,EAAG,eAAgB,EAGhB,gBAAjB,gBADA,kCAEC,WAAY,WACZ,OAAQ,qBACR,UAAW,qBACX,QAAS,YACT,YAAa,OACb,gBAAiB,OACjB,cAAe,iBAEhB,wCAA8C,WAAY,aAG1D,uBAAyB,gBAAiB,cAAe,YAAa,OAAQ,UAAW,KAAM,IAAK,eAAe,eACnH,gBAAkB,QAAS,YAAa,UAAW,KAAM,IAAK,eAAe,eAC7E,6BACC,QAAS,YAAa,YAAa,OAAQ,IAAK,IAChD,OAAQ,KAAM,QAAS,EAAE,IAAI,EAAE,IAC/B,OAAQ,IAAI,MAAM,YAAa,cAAe,MAC9C,eAAyB,MAAO,kBAChC,UAAW,aAAc,YAAa,IAAK,OAAQ,QAEpD,mCAAqC,WAAY,aAAc,aAAc,cAC7E,qCAAuC,MAAO,KAAM,OAAQ,KAAM,cAAe,IAAK,QAAS,aAC/F,iCAAmC,MAAO,wBAC1C,yCAA2C,QAAS,GACpD,yBAA6B,YAAa,EAG1C,uBAAyB,gBAAiB,WAC1C,gBAAkB,aAAc;ACzLhC,WACC,WAAY,eACZ,OAAQ,IAAI,MAAM,cAClB,cAAe,cACf,WAAY,EAAE,IAAI,IAAI,eAAe,CAAE,EAAE,KAAK,KAAK,gBACnD,QAAS,EACT,UAAW,gBACX,SAAU,OAEX,kBAAoB,WAAY,EAAE,IAAI,IAAI,eAAe,CAAE,EAAE,KAAK,KAAK,gBAEvE,+BACC,QAAS,eAAe,eACxB,WAAY,wBACZ,eACA,cAAe,IAAI,MAAM,cAE1B,4BACC,UAAW,aACX,eAAgB,KAGjB,8BACC,QAAS,eACT,UAAW,eACX,YAAa,IAId,iCACC,QAAS,eAAe,eACxB,WAAY,IAAI,MAAM,cAEvB,sDACC,QAAS,KACT,YAAa,OACb,gBAAiB,SACjB,IAAK,eACL,MAAO,KACP,MAAO,KAER,6BACC,MAAO,EACP,OAAQ,EACR,QAAS,EAAE,eACX,WAAY,wBACZ,cAAe,iBACf,UAAW,eACX,YAAa,IAGd,sCACC,MAAO,EACP,aAAc,YACd,MAAO,wBAER,4CACC,aAAc,YACd,WAAY,aACZ,MAAO,kBAGR,wCACC,MAAO,EACP,WAAY,eACZ,aAAc,eACd,MAAO,0BAER,8CACC,WAAY,4CACZ,aAAc,4CACd,MAAO,0BAGR,4CACC,MAAO,EACP,aAAc,KACd,aAAc,YACd,MAAO,wBAER,kDACC,aAAc,mBACd,MAAO,mBACP,eAGD,+CADA,uCACiD,QAAS,IAAK,eAAgB,KAG/E,mBAAqB,WAAY,gBAAiB,QAAS,EAQ3D,UAAY,QAAS,KAAM,eAAgB,OAAQ,IAAK,EAExD,eACC,QAAS,KACT,IAAK,eACL,OAAQ,0BAA0B,0BAA0B,eAC5D,QAAS,EAAE,eACX,cAAe,IAAI,MAAM,cAE1B,0BACC,OAAQ,EACR,cAAe,IAAI,MAAM,YACzB,cAAe,EACf,eACA,QAAS,eAAe,eACxB,cAAe,KACf,MAAO,wBACP,UAAW,aACX,YAAa,IAEd,gCAAoC,MAAO,kBAAmB,eAC9D,8CACC,MAAO,kBACP,oBAAqB,eAGtB,eAAiB,QAAS,KAAM,eAAgB,OAAQ,IAAK,eAAgB,WAAY,MACzF,uBAAyB,QAAS,KAElC,OACC,QAAS,KACT,sBAAuB,cAAe,KACtC,YAAa,OACb,IAAK,eACL,WAAY,wBACZ,QAAS,eAAe,EAEzB,mBAAqB,sBAAuB,IAAK,YAAa,MAC9D,aAAe,MAAO,kBAAmB,UAAW,eACpD,mBAAqB,QAAS,MAAO,MAAO,wBAAyB,UAAW,aAAc,WAAY,IAC1G,aAAe,MAAO,kBAAmB,qBAAsB,aAC/D,cAAgB,QAAS,YAAa,YAAa,OAAQ,IAAK,eAChE,+BAAmC,MAAO,MAC1C,eAAiB,QAAS,KAAM,IAAK,eAAgB,gBAAiB,SAAU,YAAa,eAC7F,aACC,OAAQ,eAAe,EAAE,eACzB,UAAW,aACX,YAAa,IACb,eAAgB,KAChB,eAAgB,UAChB,MAAO,wBAEO,wBAAf,cAA2C,UAAW,MAGtD,QAAU,SAAU,SAAU,QAAS,aAAc,MAAO,KAAM,OAAQ,KAAM,OAAQ,QACxF,cAAgB,SAAU,SAAU,QAAS,EAAG,MAAO,EAAG,OAAQ,EAClE,cACC,SAAU,SAAU,MAAO,EAC3B,cAAe,MACf,WAAY,aACZ,WAAY,WAAW,KAAK,KAE7B,qBACC,QAAS,GACT,SAAU,SAAU,IAAK,IAAK,KAAM,IACpC,MAAO,KAAM,OAAQ,KACrB,cAAe,IACf,WAAY,kBACZ,WAAY,UAAU,KAAK,KAE5B,oCAAwC,WAAY,eACpD,2CAA+C,UAAW,iBAAkB,WAAY,0BACxF,0CAA8C,QAAS,IAAI,MAAM,YAAa,eAAgB,IAG9F,WAAa,QAAS,YAAa,OAAQ,IAAI,MAAM,cAAe,cAAe,iBAAkB,SAAU,OAC/G,iBAAmB,SAAU,SAAU,QAAS,EAAG,eAAgB,KACnE,iBACC,QAAS,EAAE,eACX,WAAY,oCACZ,QAAS,YAAa,YAAa,OACnC,UAAW,aACX,MAAO,wBACP,OAAQ,QACR,aAAc,IAAI,MAAM,cAEzB,8BAAgC,aAAc,EAC9C,+BAAmC,WAAY,aAAc,MAAO,kBACpE,qCAAyC,QAAS,IAAI,MAAM,YAAa,eAAgB,KAGzF,aAAe,QAAS,YAAa,YAAa,OAAQ,IAAK,eAAgB,UAAW,MAC1F,aAAe,eAAgB,OAAQ,YAAa,QAAS,IAAK,eAClE,kBAAsB,QAAS,KAAM,YAAa,OAAQ,IAAK,eAAgB,UAAW,aAAc,MAAO,wBAC/G,wBAA0B,KAAM,EAAE,EAAE,KAAM,OAAQ,IAAK,OAAQ,EAAG,WAAY,aAAc,cAAe,MAAO,OAAQ,EAC1H,0CACC,IAAK,KAAM,MAAO,KAAM,OAAQ,KAAM,YAAa,KACnD,cAAe,IAAK,OAAQ,EAAG,WAAY,kBAAmB,OAAQ,QAEvE,wDAA0D,QAAS,IAAI,MAAM,YAAa,eAAgB,IAC1G,cAAgB,UAAW,MAAO,WAAY,MAAO,qBAAsB,aAAc,MAAO,wBAAyB,UAAW,aACpI,8BAAgC,MAAO,KAGvC,OAAS,QAAS,KAAM,sBAAuB,IAAI,KAAM,IAAK,eAAe,eAAgB,OAAQ,EACrG,UAAY,MAAO,wBACnB,UAAY,OAAQ,EAAG,WAAY,MAAO,qBAAsB,aAKhE,4BAA8B,WAAY,eAAgB,YAAa,eAAgB,WAAY,IAAI,MAAM,cAC7G,oCACC,QAAS,WACT,QAAS,MACT,cAAe,eACf,UAAW,aACX,YAAa,IACb,eAAgB,KAChB,eAAgB,UAChB,MAAO,wBAER,+BAAmC,QAAS,KAC5C,wCAA4C,WAAY,eAAgB,YAAa,eAAgB,WAAY,IAAI,OAAO,cAC5H,gDACC,QAAS,aACT,QAAS,MACT,cAAe,eACf,UAAW,aACX,MAAO,wBAIR,YAAc,QAAS,KAAM,eAAgB,OAAQ,IAAK,eAAgB,MAAO,KAAM,WAAY,eACnG,UACC,QAAS,KAAM,YAAa,OAAQ,IAAK,eACzC,QAAS,eAAe,eACxB,OAAQ,IAAI,MAAM,cAAe,cAAe,iBAChD,WAAY,YAEb,oBAAsB,aAAc,qDACpC,eAAiB,MAAO,KAAM,OAAQ,KAAM,cAAe,IAAK,OAAQ,IAAI,MAAM,cAAe,WAAY,MAAO,KAAM,EAAE,EAAE,KAC9H,WAAa,KAAM,EAAE,EAAE,KAAM,UAAW,EACxC,WAAa,YAAa,iBAAkB,UAAW,aAAc,MAAO,kBAAmB,eAAgB,MAC/G,WAAa,UAAW,aAAc,MAAO,wBAAyB,WAAY,IAClF,cAAgB,QAAS,KAAM,YAAa,OAAQ,IAAK,eAAgB,KAAM,EAAE,EAAE,KACnF,UACC,OAAQ,qBAAsB,QAAS,EAAE,eACzC,OAAQ,IAAI,MAAM,cAAe,cAAe,iBAChD,eAAyB,MAAO,kBAAmB,UAAW,aAE/D,gBAAkB,WAAY,aAAc,aAAc,qBAC1D,yBAA2B,aAAc,YAAa,MAAO,wBAC7D,+BAAiC,aAAc,mBAAoB,MAAO,mBAAoB,eAC9F,YACC,YAAa,iBAAkB,UAAW,KAAM,eAAgB,MAAO,eAAgB,UACvF,MAAO,eAAgB,QAAS,EAAE,eAEnC,gCAAkC,WAAY,eAAgB,aAAc,eAAgB,MAAO,0BAA2B,aAAc,KAC5I,sCAAwC,WAAY,4CAAgD,aAAc,YAAa,MAAO,0BAGtI,gBAAkB,QAAS,KAAM,eAAgB,OAAQ,IAAK,eAAgB,MAAO,KAAM,WAAY,eACvG,WACC,QAAS,KAAM,YAAa,OAAQ,gBAAiB,cAAe,IAAK,eACzE,QAAS,eAAe,eACxB,OAAQ,IAAI,MAAM,cAAe,cAAe,iBAAkB,WAAY,YAC9E,WAAY,wBAEb,gBAAkB,MAAO,kBACzB,mBAAqB,QAAS,KAAM,YAAa,OAAQ,IAAK,eAC9D,6BAA+B,QAAS,EAAE,eAAgB,UAAW,KACrE,uCAAyC,QAAS,GAAI,eAAgB;ACjRtE,sBAA0B,IAAK,eAE/B,mBACC,QAAS,YACT,YAAa,OACb,IAAK,IACL,OAAQ,qBACR,QAAS,EAAE,KACX,OAAQ,EACR,OAAQ,IAAI,MAAM,YAClB,cAAe,iBACf,WAAY,OACZ,UAAW,aACX,YAAa,IACb,YAAa,EACb,MAAO,kBACP,OAAQ,QACR,YAAa,OACb,WAAY,iBAAiB,KAAK,IAAI,CAAE,aAAa,KAAK,KAE3D,2BAA6B,UAAW,YACxC,yBAA2B,WAAY,aAAc,aAAc,cAAe,MAAO,kBACzF,4BAA8B,QAAS,EAAE,IACzC,6CAA+C,YAAa,IAE5D,+BAAiC,WAAY,eAAgB,MAAO,0BACpE,qCACC,WAAY,4CACZ,aAAc,YACd,MAAO,0BAGR,4BAA8B,QAAS,GAAI,eAAgB,KAG3D,qCACA,iCACA,gDAAoD,MAAO,eAAgB,WAAY,mDAEvF,uBACC,YAAa,QACb,UAAW,aACX,MAAO,wBACP,OAAQ,IAAI,MAAM,cAClB,cAAe,iBACf,QAAS,IAAI,IACb,YAAa,EAGd,mBAAqB,MAAO,IAAK,OAAQ,KAAM,WAAY,cAAe,OAAQ,EAAE,eAEpF,iCACC,YAAa,KACb,QAAS,KACT,YAAa,OACb,IAAK,eACL,MAAO,KAGR,6CAAqD,YAAa,EAGlE,qBACC,QAAS,YACT,YAAa,OACb,OAAQ,KACR,QAAS,EAAE,IACX,aAAc,eACd,cAAe,MACf,WAAY,aACZ,MAAO,wBACP,WAAY,OACZ,UAAW,aACX,YAAa,IACb,qBAAsB,aACtB,OAAQ,QAIT,0BAEC,gCADA,wDACkC,QAAS,KAC3C,4DAA8D,QAAS,EAAE,KAO1E,mBAAqB,eAAgB,KAAM,eAAgB,EAAG,KAAM,EAAE,EAAE,KACxE,uBAAyB,cAAe,iBACxC,iCACA,8CAAkD,cAAe,iBAGjE,0CAAgD,eAAgB,KAAM,eAAgB,EAAG,UAAW,aAEpG,0CAAgD,MAAO,QAAS,wBAAyB,aAEzF,0BAA4B,QAAS;AC/FrC,mBACC,WAAY,WACZ,MAAO,MACP,WAAY,KACZ,QAAS,IAAI,IAAI,IACjB,cAAe,cACf,OAAQ,IAAI,MAAM,cAClB,iBAAkB,YAClB,WAAY,KACZ,QAAS,KACT,eAAgB,OAChB,IAAK,IACL,OAAQ,KAET,0BAA4B,OAAQ,SAGpC,gCACC,MAAO,EACP,OAAQ,EACR,UAAW,aACX,YAAa,IACb,eAAgB,MAChB,YAAa,EACb,QAAS,KACT,YAAa,OACb,IAAK,IAEN,qCACC,QAAS,YACT,YAAa,OACb,OAAQ,KACR,QAAS,EAAE,IACX,cAAe,MACf,WAAY,aACZ,wBAAyB,YACzB,MAAO,QAIR,iCACC,MAAO,EACP,OAAQ,EACR,UAAW,eACX,YAAa,IACb,YAAa,IACb,YAAa,OACb,SAAU,OACV,cAAe,SAEhB,mCAAuC,MAAO,kBAAmB,gBAAiB,KAClF,yCAA6C,MAAO,eAGpD,+BACC,MAAO,EACP,OAAQ,EACR,UAAW,aACX,YAAa,IACb,MAAO,wBACP,eAAgB,KAChB,eAAgB,EAChB,YAAa,OACb,SAAU,OACV,cAAe,SACf,WAAY,IAIb,4BACC,MAAO,EACP,SAAU,OACV,QAAS,KACT,IAAK,IACL,WAAY,IACZ,WAAY,EAEb,iCACA,8CACC,QAAS,YACT,YAAa,OACb,gBAAiB,OACjB,MAAO,KACP,UAAW,KACX,OAAQ,KACR,QAAS,EAAE,IACX,OAAQ,EACR,OAAQ,EACR,cAAe,IACf,WAAY,iDACZ,UAAW,aACX,YAAa,IACb,YAAa,EAEd,0CAA8C,MAAO,wBAGrD,iCACC,MAAO,EACP,SAAU,SACV,MAAO,IACP,OAAQ,IACR,MAAO,KACP,OAAQ,KACR,OAAQ,EACR,QAAS,KACT,IAAK,IACL,UAAW,IACX,YAAa,EAEd,4CAAgD,QAAS,KAGzD,8BACC,SAAU,SACV,IAAK,IACL,MAAO,IACP,KAAM,KACN,MAAO,KACP,OAAQ,KACR,OAAQ,EACR,QAAS,KACT,IAAK,IACL,UAAW,aAEZ,kCAAwC,MAAO,KAAM,QAAS,KAAM,IAAK,IACzE,yCAA6C,QAAS,KACtD,qCACC,QAAS,YAAa,YAAa,OACnC,OAAQ,KAAM,QAAS,EAAE,IACzB,cAAe,MACf,WAAY,eAAgB,MAAO,0BACnC,UAAW,KAAM,YAAa,IAI/B,gCAAoC,WAAY,EAAE,EAAE,EAAE,IAAI,eAAgB,aAAc,eACxF,yBAA2B,aAAc,qBAAsB,WAAY,EAAE,IAAI,KAAK,gBAGtF,mBAAqB,MAAO,MAAO,WAAY,EAAG,QAAS,IAAI,IAAK,cAAe,cAGnF,iCACA,mCAAuC,MAAO,4BAO9C,mBAAqB,OAAQ,eAAiB,WAAY,eAC1D,qBAAyB,KAAM,EAAE,EAAE,KACnC,iCAAqC,OAAQ,KAAM,YAAa,KAiBhE,MACC,eAAgB,4DAChB,YAAgB,qEAEjB,oCACC,6BACC,eAAgB,aAChB,YAAgB,sBAGlB,wBACC,eAAgB,aAChB,YAAgB,qBAMjB,6BAHA,mBACA,2BACA,8BAEC,iBAAkB,oBAClB,aAAc,iBACd,WAAY,EAAE,IAAI,EAAE,sBAAsB,KAAK,CAAE,EAAE,IAAI,KAAK,gBAC5D,SAAU,QACV,eAAgB,KAChB,cAAe,IAEhB,2BAAgC,iBAAkB,kEAClD,8BAAgC,iBAAkB,qEAClD,6BAAgC,iBAAkB,oEAClD,gCACC,iBAAkB,2DAClB,aAAc,eACd,WAAY,EAAE,EAAE,EAAE,IAAI,cAAc,CAAE,EAAE,IAAI,KAAK,gBAIlD,4BACC,SAAU,SACV,KAAM,IACN,MAAO,IACP,OAAQ,EACR,UAAW,gBACX,OAAQ,EACR,IAAK,IACL,QAAS,EACT,eAAgB,KAEjB,iCACA,8CACC,OAAQ,KACR,UAAW,KACX,QAAS,EAAE,IACX,cAAe,MACf,WAAY,aACZ,wBAAyB,KACzB,WAAY,EAAE,EAAE,EAAE,IAAI,oBACtB,UAAW,aACX,YAAa,IACb,eAAgB,MAEjB,0CAA8C,WAAY,wBAG1D,iCAAqC,IAAK,KAAM,MAAO,IAAK,OAAQ,KACpE,iCAAqC,cAAe,KAIhC,mBAApB,mBAAyC,MAAO,MAChD,iCAAqC,cAAe,KACpD,iCAAqC,IAAK,KAAM,MAAO,IAAK,IAAK,IAQjE,6BAHA,mBACA,2BACA,8BAC+B,QAAS,IAAI,IAAI,IAAK,WAAY,EAAG,IAAK,IAAK,cAAe,IAC7F,iCAAqC,YAAa,KACV,+BAAxC,qCAA2E,WAAY,EACvF,qCAA2C,OAAQ,KACnD,iCAAqC,IAAK;ACtQ1C,6BAA+B,OAAQ,QAAS,SAAU,SAC1D,mCAAqC,MAAO,kBAAmB,gBAAiB,UAAU,OAAQ,sBAAuB,IACzH,uCAAyC,QAAS,GAAI,eAAgB,KAEtE,aACC,SAAU,MACV,QAAS,KACT,QAAS,KACT,IAAK,eACL,QAAS,eACT,WAAY,eACZ,OAAQ,IAAI,MAAM,cAClB,cAAe,cACf,WAAY,EAAE,IAAI,IAAI,eAAe,CAAE,EAAE,KAAK,KAAK,eAEpD,0BACC,OAAQ,qBACR,QAAS,EAAE,eACX,cAAe,MACf,OAAQ,IAAI,MAAM,cAClB,eACA,MAAO,kBACP,UAAW,aACX,YAAa,IACb,OAAQ,QAET,gCAAkC,WAAY,aAAc,aAAc,qBAC1E,qDAA2D,WAAY,iBAAsB,aAAc,iBAAsB,MAAO,QACxI,qDAA2D,WAAY,iBAAsB,aAAc,iBAAsB,MAAO,QACxI,uDAA2D,WAAY,qBAAsB,aAAc,qBAAsB,MAAO,KACxI,wCAA0C,QAAS,IAAI,MAAM,YAAa,eAAgB,IAE1F,wBACC,0BAA4B,WAAY,KAAM,QAAS,EAAE;ACrB1D,MACC,UAAgB,eAAe,CAAE,SAAS,CAAE,aAAa,CAAE,UAAU,CAAE,WACvE,eAAgB,YAAY,CAAE,eAAe,CAAE,SAAS,CAAE,WAC1D,YAAgB,eAAe,CAAE,YAAY,CAAE,SAAS,CAAE,KAAK,CAAE,QAAQ,CAAE,UAK5E,mBAAoB,gBADiC,EADrD,KAA+B,OACW,IAA3B,GAAI,GAAI,GAAI,GAAI,GAAI,GAD7B,MACkD,GAAjB,EAD1B,OACkC,KAA/C,MACqC,SAD9B,GADc,SACV,GAEV,YAAa,eACb,qBAAsB,aAQvB,wBAEA,sBANA,cAAe,gBACf,aAIA,0BAFA,qBADA,4BAKC,YAAa,oBAKd,+BADA,0BAEA,IACC,YAAa,iBACb,eAAgB,EAMjB,MAAQ,UAAW,KAAM,QAAS;ACpClC,MAEE,SAAe,QACf,aAAe,uBACf,aAAqB,QACrB,kBAAqB,QAKrB,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QAMX,oCACE,6BACE,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QAET,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,SAGb,wBACE,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QAgBX,gBACE,MAAO,cACP,eAAgB,MAOlB,oCACE,6CAAiD,MAAO,cAE1D,wCAA4C,MAAO,aAInD,iBADA,iBAEE,MAAO,cAKT,eACE,QAAS,IAAI,MAAM,cACnB,eAAgB,IAIlB,+BACE,WAAY;AC5Hd,MACC,aAAsB,QACtB,aAAsB,QACtB,OAAsB,QACtB,kBAAsB,QACtB,UAAsB,QACtB,qBAAsB,QACtB,QAAsB,QACtB,mBAAsB,QACtB,YAAsB,QACtB,iBAAsB,QACtB,SAAsB,QACtB,cAAsB,QACtB,gBAAsB,QACtB,QAAsB,QACtB,OAAsB,QAEtB,UAAsB,uBACtB,qBAAsB,QACtB,OAAsB,uBACtB,cAAsB,QAEtB,YAAsB,QACtB,YAAsB,QACtB,gBAAsB,QACtB,YAAsB,QAEtB,eAAsB,QACtB,YAAsB,QAEtB,iBAAsB,yBACtB,kBAAsB,QAEtB,UAAgB,OAAO,CAAE,SAAS,CAAE,aAAa,CAAE,UAAU,CAAE,WAC/D,YAAgB,YAAY,CAAE,YAAY,CAAE,SAAS,CAAE,KAAK,CAAE,UAC9D,eAAgB,YAAY,CAAE,OAAO,CAAE,SAAS,CAAE,WAKnD,oCACC,6BACC,aAAsB,QACtB,aAAsB,QACtB,OAAsB,QACtB,kBAAsB,QACtB,UAAsB,QACtB,qBAAsB,QACtB,QAAsB,QACtB,mBAAsB,QACtB,YAAsB,QACtB,iBAAsB,QACtB,SAAsB,QACtB,cAAsB,QACtB,gBAAsB,QACtB,QAAsB,QACtB,OAAsB,QACtB,qBAAsB,QACtB,cAAsB,QACtB,YAAsB,QACtB,YAAsB,QACtB,gBAAsB,QACtB,YAAsB,QACtB,eAAsB,QACtB,YAAsB,QACtB,iBAAsB,sBACtB,kBAAsB,SAGxB,wBACC,aAAsB,QACtB,aAAsB,QACtB,OAAsB,QACtB,kBAAsB,QACtB,UAAsB,QACtB,qBAAsB,QACtB,QAAsB,QACtB,mBAAsB,QACtB,YAAsB,QACtB,iBAAsB,QACtB,SAAsB,QACtB,cAAsB,QACtB,gBAAsB,QACtB,QAAsB,QACtB,OAAsB,QACtB,qBAAsB,QACtB,cAAsB,QACtB,YAAsB,QACtB,YAAsB,QACtB,gBAAsB,QACtB,YAAsB,QACtB,eAAsB,QACtB,YAAsB,QACtB,iBAAsB,sBACtB,kBAAsB,QAKvB,iBAAmB,WAAY,yEAC/B,KAAO,iBAAkB,KAGzB,aAAc,aAAqC,aAAZ,WAAX,UAAqC,8BAAgC,MAAO,iBACpD,iCAApD,0BAAsC,aAAkD,UAA7D,UAAyE,MAAO,kBAY3G,yBACA,wBAPA,aAIA,sBAFA,aADA,iBAHA,aAKA,0BAKA,WAHA,aANA,4BAUC,YAAa,iBACb,UAAW,KACX,YAAa,IACb,eAAgB,MAChB,eAAgB,UAChB,MAAO,wBAGR,+BACA,gCAFA,mBAEoC,MAAO,kBAC3C,8CAAoD,MAAO,kBAG3D,0BACA,0BAEA,iBADA,sBAEA,gBACA,IAAM,YAAa,iBAAkB,qBAAsB,aAI3D,YAAc,cAAe,IACjB,aAAc,aAAc,YAAxC,WACC,cAAe,IACf,WAAY,EAAE,IAAI,KAAK,eAEJ,mBAApB,mBAAyC,cAAe,IAIpC,MAAO,WAA3B,UAAW,QACV,WAAY,eACZ,OAAQ,IAAI,MAAM,cAClB,cAAe,IAEhB,aAAe,WAAY,aAAc,aAAc,qBAAsB,MAAO,kBAGpF,qCACA,8CACC,WAAY,4CACZ,aAAc,4CAGf,YAAc,WAAY,eAAgB,MAAO,kBASjD,yCAHA,0CACA,6CACA,kCAC+C,MAAO,wBAGtD,+CAFA,gDACA,wCACqD,MAAO,kBAC5D,4DAAkE,MAAO,eAIzE,yBACC,OAAQ,EACR,eACA,QAAS,EAAE,IACX,OAAQ,KACR,MAAO,wBAER,gCACA,uCAA2C,MAAO,eAClD,uBAAyB,IAAK,eAAe,eAC7C,6BAA+B,YAAa,iBAAkB,UAAW,KAAM,eAAgB,MAAO,eAAgB,UAAW,MAAO,wBACxI,mCAAqC,MAAO,kBAC5C,iCAAmC,QAAS,GAG5C,eAAiB,OAAQ,eAAe,EAAE,EAG1C,wBAA0B,WAAY,aAAc,OAAQ,IAC5D,0CAA4C,WAAY,eAAgB,MAAO,KAAM,OAAQ,KAAM,IAAK,KAAM,YAAa,KAAM,OAAQ,IAAI,MAAM,eAAgB,WAAY,WAC/K,cAAgB,YAAa,iBAAkB,UAAW,KAAM,MAAO,wBACvE,kBAAsB,YAAa,iBAAkB,UAAW,KAAM,eAAgB,KAAM,eAAgB,UAQ5G,QACC,QAAS,KACT,sBAAuB,cAAe,KAAK,cAC3C,YAAa,OACb,IAAK,KACL,WAAY,KACZ,QAAS,IAAI,KACb,WAAY,sDACZ,cAAe,IAAI,MAAM,cAEqB,sBAA/C,oBAAuB,qBAAkD,QAAS,KAAM,YAAa,OAAQ,UAAW,EACxH,oBAAyB,gBAAiB,WAAY,eAAgB,OAAQ,YAAa,WAAY,IAAK,IAAK,SAAU,QAC3H,sBAAyB,gBAAiB,OAC1C,qBAAyB,gBAAiB,SAAU,IAAK,KAGzD,SAAW,QAAS,KAAM,YAAa,OAAQ,IAAK,IACpD,YACC,YAAa,oBACb,UAAW,KACX,YAAa,IACb,eAAgB,OAChB,YAAa,IACb,MAAO,kBACP,gBAAiB,KACjB,YAAa,OAEd,kBAAoB,MAAO,eAC3B,gBAAkB,MAAO,wBAAyB,OAAQ,QAC1D,sBAAwB,MAAO,kBAC/B,sBAAwB,OAAQ,EAAG,QAAS,KAAM,YAAa,OAAQ,IAAK,IAAK,UAAW,KAC5F,qBAAuB,QAAS,YAAa,YAAa,OAAQ,IAAK,IACvE,gCAAkC,YAAa,iBAAkB,UAAW,IAAK,eAAgB,KAAM,eAAgB,UAAW,MAAO,wBACzI,mBAAqB,YAAa,iBAAkB,UAAW,KAAM,MAAO,iBAC5E,gBAAkB,MAAO,wBAGzB,uBAAyB,MAAO,eAChC,sBAAwB,MAAO,kBAC/B,6BAA+B,MAAO,eACtC,0BACC,YAAa,iBAAkB,UAAW,KAC1C,WAAY,KAAM,QAAS,EAAE,IAAK,UAAW,MAC7C,WAAY,aAAc,OAAQ,IAAI,MAAM,cAAe,cAAe,IAAK,MAAO,kBAIvF,cAAgB,QAAS,MAAO,YAAa,EAC7C,kBAAoB,OAAQ,KAAM,MAAO,KAAM,QAAS,MACxD,wBAAyB,sBAAwB,QAAS,eAC1D,0BAA4B,QAAS,KACrC,oCAAuC,sDAA0D,QAAS,KAAQ,uDAA2D,QAAS,OACtL,iDAAqD,QAAS,KAC9D,kDAAsD,QAAS,MAG/D,kBAAoB,OAAQ,EAC5B,yBAA6B,QAAS,KAAM,YAAa,OAAQ,IAAK,KAAM,gBAAiB,KAC7F,4BACC,MAAO,KAAM,OAAQ,KAAM,cAAe,IAC1C,OAAQ,IAAI,MAAM,cAAe,WAAY,MAAO,QAAS,MAE9D,mBAAqB,QAAS,KAAM,eAAgB,OAAQ,YAAa,WAAY,IAAK,IAAK,YAAa,KAC5G,uBAAwB,yBAA2B,YAAa,iBAAkB,UAAW,KAAM,eAAgB,MAAO,MAAO,kBACjI,oBAAsB,QAAS,YAAa,YAAa,OAAQ,IAAK,IAC9B,cAAxC,kBAAmB,oBAClB,YAAa,iBAAkB,UAAW,MAAO,eAAgB,MAAO,eAAgB,UACxF,MAAO,wBAAyB,gBAAiB,KAElD,0BAA2B,gCAAkC,MAAO,kBACpE,mBAAqB,QAAS,KAAM,YAAa,OAAQ,IAAK,IAAK,YAAa,IAAK,aAAc,KAAM,YAAa,IAAI,MAAM,mBAChI,qBAAuB,MAAO,wBAAyB,OAAQ,QAC/D,2BAA6B,MAAO,kBACpC,uCAAyC,UAAW,KAGpD,mBAAqB,IAAK,KAAM,MAAO,KAGvC,sBACC,WAAY,mDACZ,cAAe,IAAI,MAAM,cAEb,mBAAb,YAAiC,WAAa,cAAe,IAC7D,YAAc,OAAQ,IAAI,MAAM,cAGhC,mBAAoB,SAAW,aAAc,mBAM7C,yBAA2B,mBAC1B,QACC,QAAS,KACT,YAAa,OACb,gBAAiB,cACjB,IAAK,KACL,WAAY,EACZ,QAAS,IAAI,KAEd,sBAA0B,QAAS,KACnC,oBAAwB,KAAM,EAAE,EAAE,KAAM,eAAgB,OAAQ,YAAa,WAC7E,sBAAwB,QAAS,KACjC,oBAAsB,UAAW,KACjC,qBAAyB,KAAM,EAAE,EAAE,KAAM,MAAO,KAAM,gBAAiB,SAAU,IAAK,IACtF,mBAAqB,QAAS,KAC9B,4BAA8B,MAAO,KAAM,OAAQ,KACnD,mBAAqB,YAAa,EAAG,aAAc,IACnD,mBAAqB,IAAK,KAAM,MAAO,MAQxC,qDAAuD,MAAO,KAAM,OAAQ,KAAM,cAAe,IAAK,OAAQ,IAAI,MAAM,cACxH,+CAAiD,MAAO,KAAM,OAAQ,KAAM,cAAe,IAAK,OAAQ,IAAI,MAAM,cAClH,4BACC,WAAY,eAAgB,OAAQ,IAAI,MAAM,cAAe,cAAe,IAC5E,WAAY,EAAE,IAAI,KAAK,eAAgB,QAAS,eAEjD,0BAA4B,QAAS,KACrC,6BACC,YAAa,iBAAkB,UAAW,KAAM,eAAgB,MAAO,eAAgB,UACvF,MAAO,wBAAyB,eAAyB,cAAe,IAAI,MAAM,cAAe,WAAY,KAAM,QAAS,IAAI,IAEjI,uBAAyB,aAAc,IAAI,MAAM,mBACjD,uCAAyC,OAAQ,IAAI,MAAM,cAAe,cAAe,IAAK,QAAS,GACvG,8CAAgD,aAAc,eAAgB,QAAS,EACvF,6CAA+C,aAAc,qBAAsB,QAAS,EAC5F,4BAA8B,MAAO,iBACrC,mCAAqC,MAAO,kBAM5C,wBAA0B,QAAS,aACnC,oBACC,QAAS,YAAa,YAAa,OAAQ,IAAK,IAChD,OAAQ,KAAM,QAAS,EAAE,IAAI,EAAE,IAC/B,OAAQ,IAAI,MAAM,cAAe,cAAe,MAChD,WAAY,eACZ,YAAa,iBAAkB,UAAW,MAAO,eAAgB,MAAO,eAAgB,UACxF,MAAO,wBAER,oCAAsC,aAAc,qBAAsB,MAAO,kBACjF,iCAAmC,MAAO,IAAK,OAAQ,IAAK,cAAe,IAAK,WAAY,wBAAyB,QAAS,aAC9H,yCAA2C,QAAS,KACpD,gCAAkC,WAAY,eAC9C,+BAAkC,WAAY,iBAC9C,gCAAkC,WAAY,iBAC9C,6BAAkC,WAAY,wBAO9C,gDAGC,QAAU,SAAU,QAAS,OAAQ,KAAM,WAAY,KAAM,YAAa,EAAG,eAAgB,EAC7F,sBAA0B,WAAY,WAAY,SAAU,SAAU,QAAS,EAG/E,kBAAoB,OAAQ,KAAM,WAAY,EAAG,OAAQ,2CACzD,UAAY,YAAa,MAO1B,0BACC,QAAU,SAAU,OAAQ,IAAK,EAAG,QAAS,IAQ9C,2CACC,QAAS,gBACT,QAAS,YAAa,YAAa,OACnC,OAAQ,KAAM,QAAS,EAAE,IAAK,aAAc,IAC5C,OAAQ,IAAI,MAAM,qDAClB,cAAe,MACf,YAAa,iBAAkB,UAAW,MAAO,eAAgB,MAAO,eAAgB,UACxF,MAAO,eAMR,yBACC,aAAiB,mBAAoB,kCAAoC,KAI1E,6BACC,eAAkB,OAAQ,IAAI,MAAM,cAAe,cAAe,IAAK,OAAQ,QAC/E,MAAO,wBAAyB,UAAW,KAAM,YAAa,EAAG,QAAS,IAAI,IAC9E,OAAQ,KAAM,QAAS,YAAa,YAAa,OAAQ,KAAM,EAAE,EAAE,KACnE,YAAa,eAEd,mCAAqC,MAAO,eAAgB,aAAc,eAU1E,6BAA+B,gBAAiB,SAAU,eAAgB,EAC1E,yCAAiD,eAAgB,IAAK,QAAS,EAAE,KACjF,qDAA6D,aAAc,EAC3E,oDAA4D,cAAe,EACnD,yBAAxB,uBAAmD,UAAW,MACnC,4BAA3B,0BAAyD,WAAY,KAAM,QAAS,EAAE,EAAE,IACxF,0BAA4B,QAAS,KAAM,eAAgB,OAAQ,IAAK,IAAK,QAAS,EAEtF,uCACA,6CAAiD,QAAS,MAC1D,gDAAsD,QAAS,SAC/D,6CACC,QAAS,KACT,sBAAuB,KAAK,cAC5B,mBAAoB,eACpB,WAAY,KAAM,QAAS,IAC3B,QAAS,IAAI,KAEd,0CAA4C,QAAS,EAAG,OAAQ,EAAG,YAAa,IAChF,iDACC,YAAa,EAAG,SAAU,CAAE,CAAE,KAAK,EACnC,QAAS,KAAM,eAAgB,OAAQ,YAAa,OAAQ,IAAK,IAElE,4DAA8D,QAAS,MACvE,wDAA0D,MAAO,KAAM,OAAQ,EAAG,OAAQ,IAAK,OAAQ,EAAG,cAAe,IACzH,gEAAkE,QAAS,KAAM,IAAK,IAAK,WAAY,IACvG,kEAAoE,UAAW,KAAM,MAAO,wBAAyB,OAAQ,QAC7H,yEACA,wEAA0E,MAAO,eACjF,+CAAqD,YAAa,EAAG,SAAU,EAAG,YAAa,IAAK,YAAa,OAAQ,SAAU,OAAQ,cAAe,SAC1J,iDAAqD,YAAa,EAAG,SAAU,EAC/E,kDAAqD,YAAa,EAAG,SAAU,EAAG,MAAO,wBAAyB,UAAW,aAAc,YAAa,OAAQ,SAAU,OAAQ,cAAe,SACjM,+CAAqD,YAAa,EAAG,SAAU,EAC/E,mDAAqD,YAAa,EAAG,SAAU,EAAG,MAAO,wBAAyB,UAAW,aAAc,YAAa,OAAQ,SAAU,OAAQ,cAAe,SACjM,6DACA,iFAAoF,QAAS,KAC7F,+CAAiD,YAAa,EAAG,SAAU,EAAG,aAAc,IAG5F,yBAA0B,+BAAmC,QAAS,MACtE,+BAAmC,QAAS,KAAM,sBAAuB,KAAK,cAAgB,WAAY,KAAM,YAAa,MAC7H,kCAAwC,QAAS,SACjD,4BAA8B,YAAa,CAAE,CAAE,GAC/C,4BAA8B,QAAS,EAAG,OAAQ,EAClD,mCAAqC,YAAa,EAAG,SAAU,CAAE,CAAE,KAAK,EACxE,0CAA4C,YAAa,EAAG,SAAU,EAAG,YAAa,IAAK,YAAa,IACxG,qDAAuD,YAAa,EAAG,SAAU,EAAG,MAAO,wBAC3F,kCAAoC,QAAS,KAG7C,oDAA4D,YAAa,KACzE,+DAAuE,WAAY,MAMnF,mBACC,UAAW,MAAO,QAAS,IAAI,EAC/B,WAAY,eAAgB,OAAQ,IAAI,MAAM,cAAe,cAAe,IAC5E,WAAY,EAAE,IAAI,KAAK,gBAExB,6BAA+B,QAAS,KACxC,qBACC,QAAS,KAAM,YAAa,OAAQ,IAAK,IACzC,QAAS,IAAI,KAAM,OAAQ,EAC3B,MAAO,kBAAmB,UAAW,aAAc,YAAa,IAAK,gBAAiB,KACtF,YAAa,IAEd,2BAA6B,WAAY,aAAc,MAAO,kBAC9D,2BAA6B,QAAS,YAAa,YAAa,OAAQ,IAAK,IAAK,MAAO,QAAS,UAAW,QAC7G,wCACC,MAAO,IAAK,OAAQ,IAAK,cAAe,IAAK,QAAS,EAAG,OAAQ,EAAG,KAAM,EAAE,EAAE,KAC9E,QAAS,aAAc,UAAW,KAAM,WAAY,wBAErD,gDAAkD,QAAS,KAC3D,oCAAyC,WAAY,wBAErD,uCADA,sCACyC,WAAY,iBACrD,uCAAyC,WAAY,eACrD,sCAAyC,WAAY,iBACrD,+BAAyC,WAAY,iBACrD,mCACC,QAAS,QAAS,YAAa,KAAM,MAAO,eAAgB,UAAW,KAAM,YAAa,IAE3F,0BAA4B,OAAQ,IAAK,OAAQ,EAAG,OAAQ,IAAI,EAAG,WAAY,cAChD,0BAA/B,8BACC,MAAO,wBAAyB,YAAa,iBAAkB,UAAW,KAAM,eAAgB,MAAO,eAAgB,UAEnF,gCAArC,oCAAuE,MAAO,kBAG9E,gEAAkE,MAAO,KAAM,UAAW,KAAM,gBAAiB,OAGjH,mBAAqB,QAAS,KAAM,YAAa,OAAQ,IAAK,IAC9D,kBACC,YAAa,iBAAkB,UAAW,KAAM,eAAgB,MAAO,eAAgB,UACvF,MAAO,wBAAyB,YAAa,OAAQ,YAAa,KAEnE,yBAA2B,QAAS,KAOpC,wBACC,iCAAkC,wCACjC,UAAW,EAAG,WAAY,EAAG,MAAO,IAAK,OAAQ,IAAK,QAAS,GAGjE,yBAA2B,mBAC1B,oBAAwB,UAAW,EACnC,oBAAsB,QAAS,MAAO,UAAW,KAAM,SAAU,OAAQ,cAAe,SAAU,YAAa,OAC/G,qBAAyB,YAAa,EACtC,yBAA6B,IAAK,KAInC,aACC,QAAS,KAAM,YAAa,OAAQ,IAAK,KACzC,QAAS,IAAI,KACb,WAAY,mDACZ,cAAe,IAAI,MAAM,cACzB,UAAW,aAAc,MAAO,kBAEjC,uBAAyB,KAAM,EAAE,EAAE,KAAM,UAAW,EACpD,oBAAsB,WAAY,KAAM,cAAe,IAAK,KAAM,QAAS,OAAQ,QACnF,0BAA4B,WAAY,eAAgB,MAAO,QAAS,OAAQ,EAAG,QAAS,EAAE,KAAM,YAAa,IACjH,wBAA0B,eAAkB,OAAQ,EAAG,MAAO,wBAAyB,UAAW,KAAM,YAAa,EAAG,QAAS,EAAE,IAKnI,yBACC,aAAiB,mBAAoB,kCAAoC,KAI1E,4CACC,QAAS,YAAa,YAAa,OAAQ,IAAK,IAAK,aAAc,IACnE,cAAe,IAAK,aAAc,IAAI,MAAM,mBAE7C,8CACC,QAAS,YAAa,YAAa,OAAQ,OAAQ,KAAM,QAAS,EAAE,IACpE,cAAe,IAAK,gBAAiB,KACrC,YAAa,iBAAkB,UAAW,KAAM,YAAa,IAAK,eAAgB,MAAO,eAAgB,UACzG,MAAO,wBAER,oDAAwD,MAAO,kBAAmB,WAAY,aAC9F,qDAAyD,MAAO,eAAgB,WAAY,aAC5F,uBAAyB,UAAW,KAAM,YAAa,OAAQ,IAAK,eAAe,eACnF,gDAAkD,OAAQ,EAAE,EAAE,EAAE,KAAM,QAAS,EAAG,OAAQ,EAC1F,uCAAyC,aAAc,EAGvD,gBAAkB,IAAK,IAAI,IAC3B,6BAA+B,QAAS,EAAE,IAAI,EAAE,IAAK,eAAgB,MAAO,IAAK,IACjF,gDAAkD,IAAK,IACvD,kDAAoD,eAAgB,MAAO,QAAS,EAIpF,yBAA2B,YAAa,oBAAqB,YAAa,IAAK,UAAW,KAAM,eAAgB,MAAO,MAAO,kBAAmB,YAAa,KAM9J,2BAA6B,QAAS,YAAa,eAAgB,OAAQ,YAAa,OAAQ,IAAK,IAAK,YAAa,EAAG,QAAS,IAAI,EACvI,4BACC,YAAa,iBAAkB,UAAW,MAAO,YAAa,IAAK,eAAgB,MAAO,eAAgB,UAC1G,MAAO,wBAER,2BACC,QAAS,YAAa,YAAa,OAAQ,IAAK,KAChD,YAAa,sCAAwC,UAAW,KAAM,YAAa,IAAK,eAAgB,KAAM,eAAgB,UAC9H,MAAO,eAAgB,aAAc,KAGtC,+CADA,gDAEC,QAAS,GAAI,MAAO,KAAM,OAAQ,IAAK,WAAY,eAAgB,KAAM,EAAE,EAAE,KAC7E,aAAc,mEAAwE,KAAM,mEAE7F,gDAAkD,aAAc,mEAQhE,gDADA,oCACoD,QAAS,KAC7D,4BAA8B,WAAY,IAAK,YAAa,IAAK,WAAY,IAAI,MAAM,cACvF,kCAAoC,SAAU,SAAU,aAAc,KAAM,WAAY,EACxF,wCAA4C,WAAY,IAAK,YAAa,IAAK,WAAY,IAAI,MAAM,cACrG,6BACC,SAAU,SAAU,KAAM,EAAG,IAAK,EAAG,OAAQ,IAAK,MAAO,KACzD,OAAQ,EAAG,QAAS,EAAG,OAAQ,EAC/B,QAAS,KAAM,YAAa,OAAQ,gBAAiB,OACrD,aAAc,YAAa,UAAW,eACtC,YAAa,iBAAkB,UAAW,MAAO,YAAa,IAAK,eAAgB,MAAO,eAAgB,UAC1G,MAAO,wBAAyB,YAAa,OAAQ,WAAY,OAElE,mDAAuD,IAAK,IAC5D,uBAAyB,OAAQ,EAAE,EAAE,IAAK,IAAK,IAC/C,0CAA8C,KAAM,EAAE,EAAE,KACxD,oDAAwD,WAAY,KAEpE,wCADA,mCAAsC,yBACI,WAAY,KACtD,uCAA2C,WAAY,KAAM,YAAa,EAAG,eAAgB,EAG7F,yDACA,wDACC,MAAO,KAAM,OAAQ,IAAK,WAAY,OAAQ,iBAAkB,IAAI,IAErE,wDAA0D,IAAK,IAI/D,mCAAuC,WAAY,aAAc,aAAc,cAC/E,yCAA6C,aAAc,eAC3D,kCAAoC,IAAK,IACzC,yCAA2C,UAAW,KAAM,QAAS,EAAE,IAQvE,kCAAoC,MAAO,wCAC3C,uCACA,6BAAiC,aAAc,KAE/C,uBAAyB,OAAQ,EAAE,EAAE,IAAK,IAAK,IAAK,YAAa,OAEjE,oDADA,0CAEC,KAAM,EAAE,EAAE,KAAM,WAAY,MAC5B,YAAa,iBAAkB,UAAW,KAAM,YAAa,IAAK,eAAgB,MAAO,eAAgB,UACzG,MAAO,wBAER,gDAAoD,YAAa,iBAAkB,MAAO,wBAI1F,wCADA,mCAAsC,yBAErC,WAAY,KAAM,OAAQ,KAAM,WAAY,WAC5C,WAAY,aAAc,OAAQ,IAAI,MAAM,cAAe,cAAe,IAC1E,UAAW,KAAM,MAAO,kBAEzB,yCAA6C,aAAc,eAAgB,QAAS,EAAG,WAAY,EAAE,EAAE,EAAE,IAAI,mDAC7G,+BAAiC,MAAO,KAAM,YAAa,iBAAkB,UAAW,KAAM,eAAgB,MAC9G,gCAAkC,MAAO,KAAM,YAAa,iBAAkB,UAAW,KAAM,eAAgB,MAC/G,uCAA0C,sCAA0C,KAAM,EAAE,EAAE,KAAM,UAAW,EAC/G,uDAAyD,UAAW,MAAO,QAAS,YAAa,YAAa,OAG9G,mCAAqC,QAAS,YAAa,YAAa,QACxE,yCAA2C,wBAAyB,EAAG,2BAA4B,EACnG,2DACC,SAAU,OAAQ,OAAQ,EAAE,EAAE,EAAE,KAAM,MAAO,KAAM,OAAQ,KAAM,QAAS,EAC1E,OAAQ,IAAI,MAAM,cAAe,cAAe,EAAE,IAAI,IAAI,EAAG,WAAY,aAAc,MAAO,wBAC9F,QAAS,YAAa,YAAa,OAAQ,gBAAiB,OAE7D,iEAAmE,MAAO,kBAAmB,aAAc,qBAC3G,iDAAqD,KAAM,EAAE,EAAE,KAAM,QAAS,YAAa,UAAW,EACtG,kEAAsE,KAAM,EAAE,EAAE,KAChF,2BAA6B,MAAO,KAAM,KAAM,EAAE,EAAE,KAAM,UAAW,EAGrE,mCAAqC,OAAQ,KAAM,QAAS,EAAE,IAAK,IAAK,IAAK,aAAc,cAAe,WAAY,aACtH,yCAA2C,MAAO,KAAM,WAAY,OAAQ,YAAa,iBAAkB,UAAW,KAAM,OAAQ,KAAM,WAAY,EAAG,OAAQ,EAAG,eAC3H,yCAAzC,wCAAoF,YAAa,iBAAkB,UAAW,KAAM,eAAgB,KAAM,eAAgB,UAAW,MAAO,wBAG5L,uCACC,QAAS,YAAa,YAAa,OAAQ,gBAAiB,OAC5D,WAAY,KAAM,OAAQ,KAAM,QAAS,EAAE,KAAM,OAAQ,EAAE,EAAE,EAAE,KAC/D,OAAQ,IAAI,MAAM,cAAe,cAAe,EAAG,WAAY,aAC/D,UAAW,KAAM,YAAa,IAAK,MAAO,wBAAyB,YAAa,EAEjF,qDAAyD,cAAe,IAAI,EAAE,EAAE,IAAK,YAAa,EAClG,uDAA6D,cAAe,EAAE,IAAI,IAAI,EACtF,6CAAiD,MAAO,kBAAmB,WAAY,aAAc,aAAc,cACnH,+CAAmD,SAAU,SAAU,QAAS,EAAG,aAAc,YACjG,sDAA4D,WAAY,iBAAsB,MAAO,QACrG,sDAA4D,WAAY,iBAAsB,MAAO,QACrG,wDAA4D,WAAY,qBAAsB,MAAO,KAGrG,kCAAoC,QAAS,YAAa,UAAW,OAAQ,IAAK,IAAK,UAAW,EAAG,OAAQ,EAC7G,uCAA2C,WAAY,KAAM,YAAa,KAC1E,yCACC,UAAW,KAAM,OAAQ,KAAM,QAAS,EAAE,IAAK,OAAQ,IAAI,MAAM,cAAe,cAAe,IAC/F,WAAY,aAAc,YAAa,iBAAkB,UAAW,KAAM,YAAa,IAAK,eAAgB,MAAO,YAAa,EAChI,QAAS,YAAa,YAAa,OAAQ,gBAAiB,OAE7D,+CAAiD,aAAc,qBAAsB,WAAY,aACjG,0DAA8D,YAAa,IAC3E,2CAA6C,YAAa,EAAG,WAAY,KACzE,iDAAmD,QAAS,KAG5D,kCAAoC,aAAc,KAElD,yDACA,wDAFA,6BAE0D,MAAO,KAAM,KAAM,EAAG,UAAW,IAAK,eAAgB,KAGhH,+BAAgC,qCAAuC,aAAc,mBAAoB,WAAY,KAIrH,2DAA6D,SAAU,SAAU,YAAa,EAAG,SAAU,OAE3G,iFADA,oEACmF,QAAS,KAC5F,kEACC,QAAS,GAAI,MAAO,IAAK,OAAQ,IAAK,WAAY,KAClD,aAAc,MAAM,MAAM,aAAc,cAAe,MAAM,MAAM,aAAc,UAAW,cAG7F,uDAAyD,QAAS,YAAa,YAAa,OAAQ,IAAK,IAAK,QAAS,EAAE,IAAK,MAAO,eACrI,2EAA6E,KAAM,EAAE,EAAE,KAAM,OAAQ,EACrG,2EAA6E,MAAO,EAAG,OAAQ,EAAG,SAAU,OAE5G,6BACC,QAAS,YAAa,YAAa,OAAQ,IAAK,KAAM,OAAQ,KAAM,QAAS,EAAE,KAC/E,OAAQ,IAAI,MAAM,cAAe,cAAe,IAAK,WAAY,aAElE,6BAA+B,QAAS,YAAa,YAAa,SAAU,IAAK,IACjF,gCAAkC,QAAS,KAC3C,+BAAiC,gBAAiB,KAClD,oCAAsC,YAAa,iBAAkB,UAAW,eAAiB,YAAa,IAAK,MAAO,kBAAmB,YAAa,EAC1J,0CAA4C,MAAO,eACnD,wCAA0C,YAAa,iBAAkB,UAAW,IAAK,eAAgB,MAAO,eAAgB,UAAW,MAAO,wBAGlJ,oCAAsC,QAAS,eAC/C,6BAA+B,IAAK,KAAM,QAAS,EAAE,IAErD,mCAAqC,IAAK,EAAG,UAAW,KACxD,qCAAyC,OAAQ,EACjD,2DAA6D,YAAa,KAAM,KAAM,EAAE,EAAE,KAC1F,iDAAmD,KAAM,EAAE,EAAE,EAAG,MAAO,EAAG,UAAW,EACrF,iDAAqD,UAAW,KAGhE,2DAA6D,MAAO,KAAM,KAAM,KAAM,IAAK,KAAM,OAAQ,KAAM,MAAO,KAKtH,yBACC,4CAAgD,QAAS,MAYC,6BAD3D,mBACA,2BAA4B,8BAC3B,QAAS,KACT,sBAAuB,KAAK,cAAe,KAC3C,oBAAqB,kBAAkB,oBACvC,YAAa,OAAQ,WAAY,IAAK,QAAS,IAC/C,MAAO,MAAO,WAAY,EAAG,OAAQ,eACrC,QAAS,IAAI,IAAI,IAAI,IAAK,OAAQ,EAClC,YAAa,IAAI,MAAM,iBACvB,WAAY,EAAE,IAAI,IAAI,gBACtB,SAAU,QAEX,8BAAmC,UAAW,MAAO,OAAQ,EAAG,MAAO,EACvE,+BAAmC,UAAW,KAAO,OAAQ,EAAG,QAAS,EAAG,MAAO,EAAG,UAAW,KAAM,YAAa,KACpH,iCAAqC,UAAW,KAAM,SAAU,OAAQ,OAAQ,EAAG,MAAO,EAAG,IAAK,IAAK,UAAW,IAClH,6BAAmC,UAAW,KAAO,OAAQ,EAAG,MAAO,EAAG,WAAY,EAAG,UAAW,KAAM,YAAa,KAAM,YAAa,iBAAkB,eAAgB,UAAW,eAAgB,MACvM,4BAAmC,UAAW,QAAS,SAAU,OAAQ,UAAW,KAAM,OAAQ,EAAG,IAAK,IAAK,gBAAiB,SAAU,MAAO,EACjJ,iCAAoC,8CAAkD,OAAQ,KAAM,UAAW,KAAM,QAAS,EAAE,IAAK,UAAW,IAAK,WAAY,KACjK,mCAAyC,OAAQ,KAAM,QAAS,EAAE,IAAK,UAAW,KAClF,8BAAkC,IAAK,IAAK,MAAO,IACnD,mCAAuC,QAAS,KAChD,yCAA4C,oBAAqB,kBAAkB,0BACnF,kEAAuE,oBAAqB,kBAC5F,mBAAqB,MAAO,MAAO,QAAS,IAAI,IAGhD,6BAAgC,kBAAmB,iBACnD,8BAAgC,kBAAmB,wBACnD,2BAAgC,kBAAmB,qBAEnD,4CAA+C,4CAA+C,4CAD9F,uCAC8I,kBAAmB,iBACjK,4CAA+C,4CAAgD,kBAAmB,wBAClH,4CAAiD,kBAAmB,sBACpE,6CAAiD,kBAAmB,sBACpE,6CAAgD,6CAAgD,6CAAiD,kBAAmB,qBACpK,gCAAoC,kBAAmB,eAEvD,2BAAgC,iBAAkB,iEAClD,8BAAgC,iBAAkB,oEAClD,6BAAgC,iBAAkB,6DAMlD,kCAAsC,SAAU,KAKlC,aAAd,aAA6B,WAAY,KACzC,uBAAyB,WAAY,OACrC,sBAAyB,WAAY,MACrC,qBAAyB,WAAY,KAGrC,gDACC,4CAAgD,QAAS,KAC9B,0BACA,0BAD3B,0BACA,0BAAuD,MAAO,OAAQ,aAAc,IAAK,cAAe,IAC7E,0BAA3B,0BAAuD,MAAO,QAI/D,yBACC,gBAAkB,QAAS,KAC3B,mBACC,QAAS,KACT,sBAAuB,KAAK,cAAe,KAAK,KAChD,oBAAqB,mBAAmB,wBACxC,WAAY,KAAM,QAAS,IAC3B,QAAS,IAAI,KAEd,mBAAqB,QAAS,MAAO,MAAO,eAAiB,QAAS,YAAc,OAAQ,KAAM,YAAa,KAAM,WAAY,eAAiB,YAAa,OAAQ,SAAU,OAAQ,cAAe,SACxM,gCAAkC,UAAW,GAAI,YAAa,IAC9D,gCAAkC,UAAW,KAC7C,gCAAkC,UAAW,IAAK,WAAY,gBAC9D,gCAAkC,UAAW,MAC7C,gCAAkC,UAAW,KAAM,WAAY,gBAAkB,UAAW,aAAc,MAAO,wBACjH,gCAAkC,UAAW,KAAM,WAAY,gBAAkB,UAAW,aAAc,MAAO,wBACjH,yBAA2B,QAAS,MAKL,6BAAhC,6BAAiE,WAAY,KAC7C,+BAAhC,+BAAiE,WAAY,OAC7C,8BAAhC,8BAAiE,WAAY,MAC7E,yBACC,mCAAsC,mCAAuC,QAAS,gBACtF,4BAAgC,QAAS,gBAMiB,6BAD3D,mBACA,2BAA4B,8BAA8D,MAAO,KAAM,UAAW,MAAO,UAAW,MACpI,+BAAmC,cAAe,EAAG,SAAU,QAAS,cAAe,KACvF,iCAAqC,UAAW,EAAG,IAAK,IACxD,sCAA4C,UAAW,IAAK,YAAa,IACzE,gDAAsD,QAAS,KAC/D,mBAAqB,MAAO,KAAM,UAAW,MAIc,6BAD3D,mBACA,2BAA4B,8BAA8D,sBAAuB,KAAK,KAAK,eAC3H,iCAAqC,cAAe,EAAG,SAAU,OAAQ,cAAe,SAAU,YAAa,OAAQ,UAAW,MAAO,OAAQ,KAAM,YAAa,KAEpK,0CAA+C,kBAAmB,iBAClE,2CAA+C,kBAAmB,wBAClE,4CAAgD,kBAAmB,qBACnE,gCAAoC,kBAAmB,eAII,6BAD3D,mBACA,2BAA4B,8BAA8D,sBAAuB,KAAK,YAAY,KAGlI,6BAAgC,kBAAmB,iBAAkB,WAAY,IAAI,MAAM,iBAC3F,8BAAgC,kBAAmB,iBAAkB,WAAY,IAAI,MAAM,wBAC3F,2BAAgC,kBAAmB,iBAAkB,WAAY,IAAI,MAAM,qBAC3F,oDAA+G,kDAAxD,qDAA8G,kBAAmB,iBACxL,qDAAiH,mDAAzD,sDAAgH,kBAAmB,wBAC3L,sDAAmH,oDAA1D,uDAAkH,kBAAmB,qBAC9L,iDAAyG,+CAArD,kDAAwG,kBAAmB,iBAC/K,sDAAyD,sDAEzD,oDAAuD,oDADvD,uDAA0D,uDACqD,kBAAmB,wBAClI,sDAAmH,oDAA1D,uDAAkH,kBAAmB,sBAC9L,gCAAoC,kBAAmB,eAKI,6BAD3D,mBACA,2BAA4B,8BAA8D,MAAO,YAAa,OAAQ,EAAE,KACzF,uCAA/B,6BAAkH,qCAA1C,wCAAkF,kBAAmB,iBAC9I,wCAA/B,8BAAkH,sCAA1C,yCAAkF,kBAAmB,wBAC7I,yCAAhC,+BAAqH,uCAA3C,0CAAoF,kBAAmB,qBAC9I,4CAAnC,kCAA8H,0CAA9C,6CAA0F,kBAAmB,qBAClK,oCAA3B,0BAAsG,kCAAtC,qCAA0E,kBAAmB,iBACzG,mCAAoC,mCAAxF,yBAA0B,yBAA4K,iCAAkC,iCAA5G,oCAAqC,oCAA0G,kBAAmB,wBACpQ,mCAA1B,yBAAmG,iCAArC,oCAAwE,kBAAmB,sBAC9H,oCAA3B,0BAAsG,kCAAtC,qCAA0E,kBAAmB,sBAC7J,0BAA2B,0BAA2B,0BAA4B,kBAAmB,qBACrG,gCAAmC,0CAA6C,uCAA2C,kBAAmB,eAGnF,6BAD3D,mBACA,2BAA4B,8BAA8D,WAAY,IAAK,QAAS,IAAI,IAAI,IAAI,IAAK,UAAW,MAChJ,mCAAyC,QAAS,EAAE,IAAK,OAAQ,KACjE,iCAAqC,IAAK,IAC1C,sCAA4C,UAAW,IAAK,YAAa,IAGxC,gCACY,4CACA,2CAF7C,gCACA,4CACA,2CAA0F,WAAY,KAKtG,qCACC,WAAY,iBAAkB,MAAO,KAAM,wBAAyB,KACpE,YAAa,IAAK,eAAgB,MAEnC,2CAAsD,WAAY,iBAClE,4CAAsD,WAAY,wBAClE,6CAAsD,WAAY,qBAClE,gDAAsD,WAAY,qBAClE,wCAAsD,WAAY,iBAClE,6CAAkD,6CAAmD,WAAY,wBACjH,6CAAsD,WAAY,sBAClE,8CAAsD,WAAY,sBAAuB,MAAO,QAAS,wBAAyB,QAClI,8CAAmD,8CAAmD,8CAAoD,WAAY,qBAK3G,6BAD3D,mBACA,2BAA4B,8BAA8D,oBAAqB,kBAAkB,uBACjI,6BAAiC,YAAa,OAC9C,4BAAgC,UAAW,KAAM,gBAAiB,SAAU,QAAS,IAAK,UAAW,EACrG,yCAA4C,oBAAqB,kBAAkB,0BAOnF,sBACC,GAAI,KAAO,QAAS,IAAK,UAAW,WACpC,IAAW,QAAS,GAAK,UAAW,aAEsB,6BAA3D,2BAA4B,8BAA8D,SAAU,SAAU,QAAS,EAAG,iBAAkB,IAAK,iBAAkB,iBACxF,qCAA3E,mCAAoC,sCACnC,QAAS,GAAI,SAAU,SAAU,MAAO,KAAM,QAAS,GAAI,cAAe,QAC1E,WAAY,yBAA2B,OAAQ,UAC/C,UAAsB,KAAO,YAAY,SAA9B,WAAwC,eAAgB,KAEpE,2BAAgC,QAAS,qBACzC,8BAAgC,QAAS,wBACzC,6BAAgC,QAAS,iBACkB,6BAA3D,2BAA4B,8BAA8D,iBAAkB,wDAC5G,uCAC4E,qCAA3E,mCAAoC,sCAA8E,eAAiB,QAAS,KAQlF,6BAD3D,mBACA,2BAA4B,8BAC3B,sBAAuB,KAAK,sBAC5B,oBAAqB,aAAa,YAAY,kBAC9C,WAAY,IAAK,QAAS,IAC1B,UAAW,KAAM,UAAW,MAAO,QAAS,IAAI,IAAI,IAAI,IAEzD,6BAAiC,UAAW,KAC5C,iCAAqC,UAAW,KAAM,aAAc,IACpE,4BAAgC,UAAW,QAAS,gBAAiB,WAAY,WAAY,IAC7F,iCAAqC,UAAW,MAChD,yCAA4C,oBAAqB,aAAa,kBAC9E,kEAAuE,oBAAqB,aAC5F,4CAAgD,oBAAqB,aAAa,YAClF,uDAA4D,UAAW,KAAM,aAAc,IAC3F,8BAAkC,IAAK,KAAM,OAAQ,IAAK,MAAO,IACjE,kCAAwC,IAAK,IAOc,6BAD3D,mBACA,2BAA4B,8BAC3B,QAAS,MAAO,SAAU,SAAU,SAAU,QAC9C,MAAO,YAAa,UAAW,KAAM,UAAW,MAAO,OAAQ,eAC/D,QAAS,IAAI,KAAe,OAAQ,IAAI,KAAK,IAC7C,WAAY,OAEb,iCAAqC,QAAS,MAAO,OAAQ,EAAG,QAAS,EAAE,KAAK,EAAE,EAAG,UAAW,KAAM,YAAa,KAAM,UAAW,KACpI,6BAAiC,QAAS,MAAO,OAAQ,EAAG,UAAW,MAAO,YAAa,KAAM,eAAgB,MAAO,WAAY,EACpI,mCAAuC,QAAS,KAChD,8BACC,SAAU,SAAU,IAAK,KAAM,KAAM,KAAM,OAAQ,EAAG,YAAa,EAAG,QAAS,EAEhF,mCAAyC,OAAQ,KAAM,QAAS,EAAE,IAAK,UAAW,IAAK,WAAY,EAAE,EAAE,EAAE,IAAI,kBAC7G,4BACC,SAAU,SAAU,KAAM,IAAK,MAAO,IAAK,OAAQ,KAAM,OAAQ,EAAG,QAAS,EAC7E,QAAS,KAAM,gBAAiB,OAAQ,IAAK,IAAK,UAAW,OAE9D,iCAAoC,8CAAkD,OAAQ,KAAM,UAAW,KAAM,QAAS,EAAE,IAAK,UAAW,MAAO,WAAY,EAAE,EAAE,EAAE,IAAI,kBAC7K,iCAAqC,SAAU,SAAU,MAAO,IAAK,OAAQ,IAAK,IAAK,KAAM,OAAQ,EAAG,IAAK,IAAK,QAAS,EAC3H,sCAA4C,UAAW,IAAK,YAAa,IACzE,8BAAkC,SAAU,SAAU,IAAK,KAAM,MAAO,KAAM,OAAQ,KAAM,KAAM,KAClG,kCAAwC,IAAK,IAC7C,qCAAyC,OAAQ,KAAM,UAAW,IAAK,QAAS,EAAE,IAClF,8BAAgC,aAAc,IAC9C,mBAAqB,MAAO,YAAa,UAAW,EAAG,QAAS,IAAI,KAAM,OAAQ,IAAI,KAAK,IAGhB,qCAA3E,mCAAoC,sCAA8E,QAAS,KAAM,eACjI,sBACC,GAAI,KAAO,WAAY,EAAE,EAAE,IAAI,IAAI,gDAAkD,CAAE,EAAE,IAAI,IAAI,gBACjG,IAAW,WAAY,EAAE,EAAE,KAAK,IAAI,gDAAkD,CAAE,EAAE,IAAI,IAAI,iBAExC,6BAA3D,2BAA4B,8BAC3B,QAAS,KAAM,aAAc,sDAC7B,UAAsB,KAAO,YAAY,SAA9B,WAEZ,uCAC4D,6BAA3D,2BAA4B,8BAA8D,eAAiB,WAAY,EAAE,EAAE,KAAK,IAAI,kDAK1E,6BAD3D,mBACA,2BAA4B,8BAC3B,QAAS,KAAM,sBAAuB,KAAK,YAAa,oBAAqB,aAAa,YAC1F,YAAa,OAAQ,WAAY,IAAK,QAAS,EAC/C,UAAW,KAAM,UAAW,MAAO,QAAS,IAAI,IAAI,IAAI,IAAK,OAAQ,IAAI,KAAK,IAAK,WAAY,KAEhG,8BAAkC,SAAU,OAAQ,UAAW,MAAO,OAAQ,EAAG,YAAa,EAC9F,mCAAyC,OAAQ,KAAM,QAAS,EAAE,IAAK,UAAW,IAAK,WAAY,KACnG,iCAAqC,UAAW,KAAM,QAAS,EAAG,YAAa,KAAM,UAAW,MAChG,6BAAiC,UAAW,KAAM,WAAY,KAAM,cAAe,KAAM,YAAa,KACtG,mCAAuC,QAAS,KAChD,yCAA4C,eAAgB,IAAK,oBAAqB,aACtF,4DAAiE,eAAgB,IACjF,4BAAgC,OAAQ,KAAM,KAAM,IAAK,MAAO,IAAK,gBAAiB,WACtF,iCAAqC,MAAO,IAAK,OAAQ,IACzD,uDAA4D,OAAQ,IACpE,8BAAkC,IAAK,KAAM,MAAO,KASO,6BAD3D,mBACA,2BAA4B,8BAC3B,QAAS,KACT,sBAAuB,KAAK,sBAAuB,KAAK,KACxD,oBAAqB,wBAAwB,sBAC7C,YAAa,OAAQ,WAAY,IAAK,QAAS,IAC/C,MAAO,YAAa,UAAW,KAAM,UAAW,MAAO,OAAQ,eAC/D,QAAS,IAAI,IAAI,IAAI,IAAK,OAAQ,IAAI,KAAK,KAC3C,SAAU,SAAU,SAAU,QAAS,WAAY,KAEpD,yCAA4C,oBAAqB,wBAAyB,eAAgB,IAC1G,8BAAkC,UAAW,MAAO,SAAU,OAAQ,OAAQ,EAAG,YAAa,EAC9F,mCAAyC,OAAQ,KAAM,QAAS,EAAE,IAAK,UAAW,IAAK,WAAY,KACnG,iCAAqC,UAAW,KAAM,OAAQ,EAAG,QAAS,EAAG,YAAa,KAAM,UAAW,KAAM,UAAW,MAAO,SAAU,OAAQ,cAAe,SAAU,YAAa,OAC3L,8BAAkC,UAAW,MAAO,SAAU,OAAQ,QAAS,KAAM,YAAa,OAAQ,IAAK,IAAK,MAAO,KAAM,OAAQ,KAAM,OAAQ,EAAG,IAAK,KAAM,MAAO,KAAM,KAAM,KAAM,OAAQ,KACtM,oCAAwC,QAAS,KACjD,kCAAwC,MAAO,KAAM,QAAS,KAAM,YAAa,OAAQ,IAAK,IAC9F,yCAA6C,QAAS,KACtD,qCAAyC,OAAQ,KAAM,QAAS,EAAE,IAAK,UAAW,IAClF,kDAAsD,UAAW,KACjE,iCAAqC,UAAW,KAAM,SAAU,OAAQ,aAAc,IAAK,QAAS,KAAM,YAAa,OAAQ,IAAK,IAAK,MAAO,KAAM,OAAQ,KAAM,OAAQ,EAAG,UAAW,EAC1L,sCAA4C,UAAW,IAAK,YAAa,IACzE,gDAAsD,QAAS,KAC/D,6BAAiC,UAAW,KAAM,OAAQ,EAAG,QAAS,EAAG,WAAY,KAAM,YAAa,iBAAkB,UAAW,MAAO,YAAa,KAAM,eAAgB,MAAO,eAAgB,UAAW,WAAY,EAAG,YAAa,OAC7O,mCAAuC,QAAS,KAChD,4BACC,SAAU,SAAU,KAAM,IAAK,MAAO,IAAK,IAAK,KAAM,OAAQ,KAAM,OAAQ,KAAK,EAAE,EAAG,UAAW,KAAM,QAAS,EAChH,QAAS,KAAM,gBAAiB,WAAY,IAAK,IAAK,UAAW,OAElE,kCAAsC,QAAS,KAC/C,iCAAoC,8CAAkD,OAAQ,KAAM,UAAW,KAAM,QAAS,EAAE,IAAK,UAAW,MAAO,YAAa,EAAG,WAAY,EAAE,EAAE,EAAE,IAAI,kBAC7L,mBAAqB,QAAS,MAAO,MAAO,YAAa,UAAW,EAAG,QAAS,IAAI,IAAK,OAAQ,IAAI,KAAK,KAI/C,6BAD3D,mBACA,2BAA4B,8BAC3B,oBAAqB,KACrB,sBAAuB,KAAK,sBAAuB,KAAK,KACxD,mBAAoB,KAAK,KACzB,eAAgB,EAEjB,8BAAqC,UAAW,KAAM,YAAa,EAAG,SAAU,EAChF,iCAAqC,UAAW,KAAM,YAAa,EAAG,SAAU,EAChF,8BAAqC,UAAW,KAAM,YAAa,EAAG,SAAU,EAChF,iCAAqC,UAAW,KAAM,YAAa,EAAG,SAAU,EAChF,6BAAqC,UAAW,KAAM,YAAa,CAAE,CAAE,EAAG,SAAU,EACpF,4BAAqC,UAAW,KAChD,yCAA4C,mBAAoB,KAIhE,iCAAqC,SAAU,KAAM,cAAe,SAAU,UAAW,YACzF,mCAAuC,YAAa,OASO,6BAD3D,mBACA,2BAA4B,8BAC3B,QAAS,KAAM,sBAAuB,sBAAwB,mBAAoB,KAAK,KAAK,KAAM,eAAgB,EAClH,cAAe,OAAQ,YAAa,OAAQ,QAAS,EAAG,WAAY,EACpE,MAAO,YAAa,UAAW,KAAM,UAAW,MAAO,OAAQ,eAC/D,QAAS,IAAI,KAAK,IAAK,OAAQ,IAAI,KAAK,KACxC,SAAU,SAAU,SAAU,QAAS,WAAY,OAEpD,8BAAqC,YAAa,EAAG,SAAU,EAAG,SAAU,OAAQ,OAAQ,EAAG,QAAS,YAAa,YAAa,OAAQ,IAAK,IAAK,YAAa,EACjK,mCAAyC,OAAQ,KAAM,QAAS,EAAE,IAAK,UAAW,IAClF,iCAAqC,YAAa,EAAG,SAAU,EAAG,OAAQ,EAAG,QAAS,EAAG,YAAa,KAAM,UAAW,OAAQ,YAAa,IAAK,UAAW,MAAO,UAAW,YAAa,SAAU,KAAM,cAAe,SAAU,YAAa,OACjP,6BAAqC,YAAa,EAAG,SAAU,EAAG,OAAQ,EAAG,QAAS,EAAG,WAAY,OAAQ,YAAa,iBAAkB,UAAW,KAAM,YAAa,KAAM,eAAgB,MAAO,eAAgB,UAAW,WAAY,EAAG,YAAa,OAC9P,mCAAuC,QAAS,KAChD,yCAA4C,mBAAoB,KAAK,KAErE,8BAAkC,YAAa,EAAG,SAAU,EAAG,SAAU,OAAQ,QAAS,SAC1F,kCAAwC,MAAO,KAAM,QAAS,SAC9D,8CAAoD,QAAS,YAAa,YAAa,OAAQ,SAAU,SAAU,IAAK,IAAK,MAAO,IAAK,IAAK,IAC9I,6CAAmD,QAAS,YAAa,YAAa,OAAQ,SAAU,SAAU,IAAK,KAAM,MAAO,KAAM,IAAK,IAC/I,yCAA6C,QAAS,KACtD,qCAAyC,OAAQ,KAAM,QAAS,EAAE,IAAK,UAAW,IAAK,WAAY,EAAE,EAAE,EAAE,IAAI,kBAC7G,kDAAsD,UAAW,KAEjE,iCAAqC,SAAU,SAAU,KAAM,IAAK,OAAQ,KAAM,IAAK,KAAM,MAAO,KAAM,OAAQ,EAAG,MAAO,KAAM,OAAQ,KAAM,QAAS,KAAM,IAAK,IAAK,UAAW,EAAG,QAAS,EAChM,sCAA4C,UAAW,IAAK,YAAa,IACzE,gDAAsD,QAAS,KAC/D,4BAAgC,SAAU,SAAU,KAAM,KAAM,MAAO,IAAK,IAAK,KAAM,OAAQ,KAAM,OAAQ,KAAK,EAAE,EAAG,UAAW,KAAM,QAAS,KAAM,gBAAiB,SAAU,IAAK,IAAK,UAAW,OAAQ,QAAS,EACxN,kCAAsC,QAAS,KAC/C,iCAAoC,8CAAkD,OAAQ,KAAM,UAAW,KAAM,QAAS,EAAE,IAAK,UAAW,IAAK,YAAa,EAAG,WAAY,EAAE,EAAE,EAAE,IAAI,kBAC3L,mBAAqB,QAAS,MAAO,MAAO,YAAa,UAAW,EAAG,QAAS,IAAI,KAAM,OAAQ,IAAI,KAAK,KAMhD,6BAD3D,mBACA,2BAA4B,8BAC3B,mBAAoB,KAAK,KAAM,QAAS,IAAI,KAAK,IAAK,OAAQ,IAAI,KAAK,KAAM,UAAW,KAEzF,yCAA4C,mBAAoB,KAChE,8BAAkC,SAAU,SAAU,IAAK,KAAM,KAAM,KAAM,OAAQ,EAAG,QAAS,EACjG,mCAAyC,WAAY,EAAE,EAAE,EAAE,IAAI,kBAC/D,iCAAqC,SAAU,EAC/C,6BAAiC,SAAU,EAC3C,8CAAoD,IAAK,KAAM,MAAO,IACtE,6CAAmD,IAAK,KAAM,MAAO,KACrE,kDAAsD,UAAW,KAAM,YAAa,EAAE,EAAE,IAAI,kBAC5F,iCAAqC,OAAQ,KAAM,KAAM,IACzD,4BAAgC,WAAY,KAAM,MAAO,IAGzD,kCAAsC,SAAU,SAIW,6BAD3D,mBACA,2BAA4B,8BAA8D,YAAa,KAAM,eAAgB,IAAK,WAAY,KAC9I,8BAAkC,IAAK,KAAM,KAAM,KACnD,mCAAyC,OAAQ,KAGjD,kCAAsC,SAAU,mBAIf,iCAAjC,8BACA,kCADqE,4BAC7B,UAAW,KAAM,SAAU,KAAM,YAAa,KAE3B,6BAD3D,mBACA,2BAA4B,8BAA8D,WAAY,IAAK,cAAe,IAG1H,6CAAmD,IAAK,IAAK,MAAO,IAAK,IAAK,IAC9E,8CAAoD,IAAK,KAAM,MAAO,KACtE,qCAAyC,OAAQ,KAAM,QAAS,EAAE,IAAK,UAAW,MAAO,WAAY,KACrG,kDAAsD,UAAW,KACjE,+CAAqD,QAAS,EAC9D,kCAAsC,YAAa,eAGnD,qCAAyC,gBAAiB,OAAQ,UAAW,KAAM,QAAS,EAAE,IAAK,WAAY,WAAY,WAAY","file":"app.min.css","sourcesContent":["/* ============================================================================\n Design tokens.\n\n Every colour in app/css resolves through one of these. Two families, kept\n deliberately separate:\n\n --n-* Neutral chrome. Flips with the theme.\n --data-* --ui-* --chart-* EVE data semantics: wormhole class, jump-mass\n band, security, loot, status pills, chart\n series. These encode *meaning*, not brand.\n\n The :root block is the dark theme (\"ops floor\"). Its values are identical to\n the literals they replaced, so this extraction does not change dark\n rendering at all.\n\n The light block (\"front office\") inverts the neutral ramp, and darkens the\n 25 data colours that are used as TEXT until they clear 4.5:1 against the\n light panel. Data colours used only as fills are left untouched -- their\n contrast partner is whatever sits on top of them, which is a separate\n question from this ramp.\n\n Brand colours are NOT defined here. A theme file overrides these tokens.\n ========================================================================= */\n\n:root {\n /* neutral ramp -- n-000 darkest .. n-999 lightest */\n --glow-60: rgba(255, 255, 255, .6);\n --n-000: #000000;\n --n-020: #080808;\n --n-050: #111111;\n --n-100: #222222;\n --n-120: #282828;\n --n-200: #333333;\n --n-220: #3b3b3b;\n --n-250: #404040;\n --n-300: #444444;\n --n-400: #555555;\n --n-500: #666666;\n --n-550: #777777;\n --n-560: #7a7a7a;\n --n-600: #888888;\n --n-650: #999999;\n --n-700: #aaaaaa;\n --n-750: #bbbbbb;\n --n-800: #cccccc;\n --n-850: #dddddd;\n --n-870: #ebebeb;\n --n-880: #eeeeee;\n --n-900: #f0f0f0;\n --n-920: #f4f4f4;\n --n-940: #f7f7f7;\n --n-960: #fafafa;\n --n-999: #ffffff;\n --scrim-60: rgba(0, 0, 0, .6);\n --scrim-70: rgba(0,0,0,0.7);\n --scrim-80: rgba(0, 0, 0, .8);\n --scrim-n020: rgba(10, 10, 10, 0.6);\n --scrim-n050: rgba(17, 17, 17, .7);\n --scrim-n120: rgba(40, 40, 40, .9);\n --scrim-n200: rgba(51, 51, 51, .7);\n --shadow-20: rgba(0,0,0,0.2);\n --shadow-20b: rgba(0, 0, 0, 0.2);\n --shadow-25: rgba(0, 0, 0, 0.25);\n --shadow-25b: rgba(0, 0, 0, .25);\n --shadow-30: rgba(0, 0, 0, .3);\n --stroke-n120: rgba(40, 40, 40, 0.8);\n --veil-danger: rgba(255, 0, 0, .3);\n --veil-grey: rgba(120, 120, 120, .1);\n --veil-silver: rgba(192, 192, 192, .3);\n\n /* data semantics */\n --chart-1: #3366cc;\n --chart-2: #dc3912;\n --chart-3: #ff9900;\n --chart-4: #109618;\n --data-alliance: #00a0ff;\n --data-bronze: #e28a0d;\n --data-brown: #744700;\n --data-class-amber: #996600;\n --data-class-blue: #00286e;\n --data-class-blue-deep: #001b47;\n --data-class-cyan: #0070a0;\n --data-class-green: #004400;\n --data-class-green-deep: #003300;\n --data-class-lime: #00aa00;\n --data-class-orange: #8a4117;\n --data-class-orange-deep: #80370d;\n --data-class-red: #881100;\n --data-class-red-deep: #661100;\n --data-class-sky: #3388dd;\n --data-class-temp: #004080;\n --data-class-void: #000810;\n --data-critical: #ff4747;\n --data-danger: #d93627;\n --data-focus-ring: #998800;\n --data-focus-ring-soft: #ff8c0080;\n --data-good: #50d25a;\n --data-info: #4399f0;\n --data-jm-2000kt: #ffb060;\n --data-jm-375kt: #909090;\n --data-jm-5kt: #40e0ff;\n --data-jm-62kt: #90ff90;\n --data-link: #428bca;\n --data-loot-blue: #6060f0;\n --data-loot-gold: #ffc800;\n --data-loot-orange: #f58504;\n --data-loot-pink: #f06090;\n --data-loot-purple: #9060f0;\n --data-loot-red: #f06060;\n --data-magenta: #e06fdf;\n --data-olive: #999900;\n --data-pale-yellow: #ffffbb;\n --data-triglavian: #ff2060;\n --data-warn: #f5b544;\n --ui-amber: #ffb11f;\n --ui-amber-lit: #ffd665;\n --ui-blue: #2b91d9;\n --ui-blue-lit: #5abaff;\n --ui-green: #70a800;\n --ui-green-lit: #95cc2a;\n --ui-red: #b02222;\n --ui-red-lit: #ee2222;\n}\n\n/* Front office. Only tokens that must change are redefined. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n }\n}\n:root[data-theme=\"light\"] {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n}\n","@font-face {\n\tfont-family: 'lucida';\n\tsrc:url('../fonts/lucida.ttf?w81bs6') format('truetype');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n* {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nhtml, body {\n\theight: 100%;\n}\n\nhtml {\n font-size: .6em;\n font-family: Verdana, 'Helvetica Neue', Arial, sans-serif;\n color: var(--n-600);\n line-height: 1.1;\n min-height: 100%;\n}\n\na {\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tcolor: var(--n-800);\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcolor: var(--n-999);\n}\n\nhr { margin: 4px; }\nhr.bar { border-style: solid }\n\ni {\n\tcursor: pointer;\n}\n\ni.disabled {\n\topacity: .4;\n\tcursor: default;\n}\n\n.invisible {\n\tvisibility: hidden;\n}\n\n.hidden {\n\tdisplay: none;\n}\n\n.align-left {\n\tfloat: left;\n}\n\n.align-right {\n\tfloat: right;\n}\n\n.pointer {\n\tcursor: default;\n}\n\n.text-left {\n\ttext-align: left;\n}\n\n.text-right {\n\ttext-align: right;\n}\n\n.text-center {\n\ttext-align: center;\n}\n\ni.active, a.active {\n\tcolor: orange;\n}\n\n/* All of these styles want to be more specific than a normal class selector so the text colour wins */\nbody .wh, body .class-1, body .class-2, body .class-3 {\n\tcolor: var(--data-info);\n}\n\nbody .class-4, body .class-5 {\n\tcolor: var(--data-loot-purple);\n}\n\nbody .class-6 {\n\tcolor: var(--data-loot-pink);\n}\n\nbody .class-12 {\t/* Thera */\n\tcolor: var(--data-loot-gold);\n}\n\nbody .class-15, body .class-16, body .class-17 {\t/* Drifter */\n\tcolor: var(--data-loot-red);\n}\n\nbody .hisec, body .stable, body .frig {\n\tcolor: var(--data-good);\n}\n\nbody .lowsec, body .destab {\n\tcolor: var(--data-loot-orange);\n}\n\nbody .nullsec, body .critical {\n\tcolor: var(--data-critical);\n}\n\nbody .triglavian { color: var(--data-triglavian); }\n\n.blue-loot, .blue-loot .hisec { color: var(--data-loot-blue); }\n\n.jumps {\n\tcolor: var(--chart-1);\n}\n\n.pods {\n\tcolor: var(--chart-2);\n}\n\n.ships {\n\tcolor: var(--chart-3);\n}\n\n.npcs {\n\tcolor: var(--chart-4);\n}\n\n.thermal-icon {\n\tcontent: url(\"../images/th.png\");\n\theight: 16px;\n}\n\n.kinetic-icon {\n\tcontent: url(\"../images/kn.png\");\n\theight: 16px;\n}\n\n.explosive-icon {\n\tcontent: url(\"../images/exp.png\");\n\theight: 16px;\n}\n\n.em-icon {\n\tcontent: url(\"../images/em.png\");\n\theight: 16px;\n}\n\n/* Scrollbar. Body properties are standards-compliant but only work in Firefox.\n-webkit-* works in Chrome/Safari/etc */\n/* We must tell Chrome not to use these or it will disable all the -webkit-scrollbar things - https://stackoverflow.com/questions/77893503 */\n@supports not selector(::-webkit-scrollbar) {\n\tbody {\n\t\t/* Standards - Firefox. Use slightly less contrasty colours because the bar will be wider */\n\t\tscrollbar-width: thin;\n\t\tscrollbar-color: var(--n-300) var(--n-050);\n\t}\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n}\n\n::-webkit-scrollbar-button:start:decrement,\n::-webkit-scrollbar-button:end:increment {\n height: 2em;\n display: none;\n background-color: black;\n}\n\n::-webkit-scrollbar-track { background-color: var(--n-220); }\n::-webkit-scrollbar-thumb {\tbackground-color: var(--n-500);}\n::-webkit-scrollbar-thumb:hover { background-color: var(--n-650);}\n\n::-webkit-scrollbar-corner {\n\tbackground-color: transparent;\n}\n/* ---------- */\n\n::-webkit-input-placeholder {\n color: var(--n-600);\n}\n\n:-moz-placeholder { /* Firefox 18- */\n color: var(--n-600);\n}\n\n::-moz-placeholder { /* Firefox 19+ */\n color: var(--n-600);\n}\n\n:-ms-input-placeholder {\n color: var(--n-600);\n}\n\n@-webkit-keyframes spin {\nfrom { -webkit-transform: rotate(0deg); }\nto { -webkit-transform: rotate(360deg); }\n}\n\n@-moz-keyframes spin {\nfrom { -moz-transform: rotate(0deg); }\nto { -moz-transform: rotate(360deg); }\n}\n\n@-o-keyframes spin {\nfrom { -o-transform: rotate(0deg); }\nto { -o-transform: rotate(360deg); }\n}\n\n@keyframes spin {\n\tfrom { transform: rotate(0deg); }\n\tto { transform: rotate(360deg); }\n}\n\n.transition {\n\t/* -webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransition: 0.3s all ease-out;\n\t-webkit-transition: 0.3s all ease-out;\n\t-moz-transition: 0.3s all ease-out;\n\t-ms-transition: 0.3s all ease-out;\n\t-o-transition: 0.3s all ease-out; */\n}\n\n.scale {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransform: scale(0.9);\n\t-webkit-transform: scale(0.9);\n\t-moz-transform: scale(0.9);\n\t-ms-transform: scale(0.9);\n\t-o-transform: scale(0.9);\n\n\toverflow: hidden;\n}\n\n.blur {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n filter: blur(1px);\n -webkit-filter: blur(1px);\n\t-moz-filter: blur(1px);\n\t-ms-filter: blur(1px);\n\t-o-filter: blur(1px);\n\tfilter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='1');\n}\n","#login {\n\tposition: relative;\n}\n\n#login #panel {\n\tdisplay: none;\n}\n\n#login img {\n border-radius: 3px;\n}\n\n.triangle {\n\tposition: absolute;\n\ttop: -5px;\n\tright: 15px;\n\tborder-left: 5px solid transparent;\n\tborder-right: 5px solid transparent;\n\tborder-bottom: 5px solid var(--n-300);\n}\n\n#login #content {\n\tposition: absolute;\n\ttop: 20px;\n\tright: 0px;\n\n\tfont-size: 1.1em;\n\n\tline-height: normal;\n\tpadding: 5px;\n}\n\n#login #content #track {\n\tborder-right: 1px solid gray;\n\tpadding-right: 2px;\n\tmin-width: 160px;\n}\n\n#login #content #track .tracking-clone {\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n cursor: pointer;\n\topacity: .4;\n transition: all 0.2s ease;\n\n\tmargin-bottom: 2px;\n}\n\n#login #content #track .tracking-clone:hover {\n\tborder-color: var(--n-400);\n opacity: 1;\n}\n\n#login #content #track .tracking-clone.active {\n\tborder-color: darkorange;\n opacity: 1;\n}\n\n#login #content table {\n\ttext-align: right;\n\twidth: 100%;\n}\n\n#login #content table th {\n\ttext-align: right;\n\tpadding-right: 5px;\n}\n\n#login #content table td {\n\ttext-align: left;\n}\n\n#login #content table .text {\n\tpadding: 0 10px 0 3px;\n\twhite-space: nowrap;\n}\n\n#login #content .avatar {\n\theight: 1px;\n\twidth: 1px;\n}\n\n#login #content table td #logout {\n\tfloat: right;\n}\n\n#login #content #error {\n\tcolor: var(--data-critical);\n}\n\n#logo {\n\tcolor: var(--n-800);\n}\n\n#logo > span > div > canvas {\n\tvertical-align: middle;\n}\n\n#login #error {\n\tfont-weight: bold;\n\ttext-align: center;\n}\n\n#link, #account {\n\twhite-space: nowrap;\n\tcolor: var(--n-500);\n}\n\n#link {\n\tvertical-align: top;\n}\n\n#login #logoutTable tbody th {\n\ttext-align: center;\n\tcolor: var(--n-800);\n\tbackground: var(--n-400);\n}\n\n#logoutTable tbody tr td {\n\tvertical-align: top;\n}\n\n#tracking {\n\tdisplay: block;\n\toverflow-y: auto;\n\tmax-height: 332px;\n}\n\n#tracking [data-icon=\"red-giant\"].stable:before {\n\tcolor: var(--data-good);\n}","/* Styles relating to the radial map renderer */\n#chainMap .radial-map .node.top-level {\n\tborder-radius:200px;\n\tpadding: 10px;\n\tborder: 4px var(--data-class-temp) solid;\n\tfont-size: 120%;\n}\n\n#chainMap .radial-map .top-level .nodeIcons {\n top: 0.9em;\n}\n\n.radial-map {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.radial-map .map-chain-wrapper {\n\toverflow:hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin: 0 10px;\n}\n\n.map-outer-container {\n\tposition: relative;\n}\n\n.map-inner-container {\n\tposition: absolute;\n}\n\n.map-inner-container .node-wrapper {\n\tposition:absolute;\n\twidth: 0; height: 0;\n}\n\n#chainMap .node-wrapper > div.node {\n\ttransform: translate(-50%, -50%);\t/* centre around position */\n}\n\n.map-drawing {\n\tposition: absolute;\n}\n\n.temp { border-style: solid; }\t/* Some border properties don't resolve if the element has no border */\n\n/* 'color' is used to cue the aura effect in canvas drawing */\n.temp { border-width: 2px; border-color: var(--data-class-temp); }\n.temp.jm-5kt, #guide .jm-5kt { border-width: 1px; color: var(--data-jm-5kt); }\n.temp.jm-62kt, #guide .jm-62kt { border-width: 3px; color: var(--data-jm-62kt); }\n.temp.jm-375kt, #guide .jm-375kt { border-width: 5px; color: var(--data-jm-375kt); }\n.temp.jm-2000kt, #guide .jm-2000kt { border-width: 7px; color: var(--data-jm-2000kt); }","#chainMap {\n\t-webkit-user-select: none; /* Chrome all / Safari all */\n\t-moz-user-select: none; /* Firefox all */\n\t-ms-user-select: none; /* IE 10+ */\n\n\t/* No support for these yet, use at own risk */\n\t-o-user-select: none;\n\tuser-select: none;\n}\n\n#chainMap .google-visualization-orgchart-table * {\n\tpadding: 0px;\n}\n\n#chainMap .google-visualization-orgchart-table {\n\tpadding: 0 5px;\n\tpadding-right: 0px;\n\twidth: 1px;\n\tmargin: 0 auto;\n}\n\n#chainMap td.node {\n\twhite-space: nowrap;\n\ttext-align: center;\n\tvertical-align: middle;\n\tfont-family: verdana;\n\tfont-size: 1em;\n\tcursor: default;\n\tline-height: 1;\n\tborder: none;\n\tbackground: none;\n}\n\n#chainMap div.node {\n\theight: 30px;\n\tmin-width: 5em;\n\tdisplay: inline-block;\n\tmargin-left: auto; margin-right: auto;\t/* centre horizontally within cell */\n\tborder: 2px solid var(--n-200);\n border-top-left-radius: 15px 50px;\n border-top-right-radius: 15px 50px;\n\tborder-bottom-left-radius: 15px 50px;\n border-bottom-right-radius: 15px 50px;\n\n\tbackground-color: var(--n-050);\n\tbackground: linear-gradient(var(--n-100), var(--n-050));\n\n\tbox-shadow: 2px 2px 8px var(--shadow-20);\n}\n\n#chainMap div.node.third-party {\n\tbackground: var(--n-050);\n\tfont-style: italic;\n\tfilter: saturate(50%) brightness(80%)\n}\n\n#chainMap /*td.node >*/ div.node.loop {\t/* more specific than others nearby, because we want these over flares/current node */\n\tmin-width: auto;\n/*\twidth: 30px;*/\n\tborder-radius: 100px;\n\tborder-color: var(--data-class-cyan);\n}\n\n#chainMap div.loop {\t/* less specific, so flares/current node works over this */\n\tbackground: var(--data-class-void);\n}\n\ndiv.loop .nodeIcons, div.loop .nodeType, div.loop .statics, div.loop .nodeActivity {\n\tdisplay:none;\n}\n\t\n#chainMap .currentNode > div.node {\n\tborder-color: var(--data-class-blue);\n\tbackground: var(--data-class-blue-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-blue-deep) 0%, var(--data-class-blue) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-blue-deep)), to(var(--data-class-blue)));\n}\n\n#chainMap div.redNode.node {\n\tborder-color: var(--data-class-red);\n\tbackground: var(--data-class-red-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-red-deep) 0%, var(--data-class-red) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-red-deep)), to(var(--data-class-red)));\n}\n\n#chainMap div.yellowNode.node {\n\tborder-color: var(--data-class-orange);\n\tbackground: var(--data-class-orange-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-orange-deep) 0%, var(--data-class-orange) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-orange-deep)), to(var(--data-class-orange)));\n}\n\n#chainMap div.greenNode.node {\n\tborder-color: var(--data-class-green);\n\tbackground: var(--data-class-green-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-green-deep) 0%, var(--data-class-green) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-green-deep)), to(var(--data-class-green)));\n}\n\n#chainMap div.node.frig-chain {\n\tborder-color: var(--data-class-lime);\n\tborder-width: 1px;\n}\n\n#chainMap .node a {\n\tfont-weight: normal;\n}\n\n#chainMap span.badge {\n\tdisplay: inline-block;\n\tcolor: var(--n-750);\n\tbackground-color: var(--n-100);\n\tbox-shadow: 0px 0px 6px 2px var(--n-050);\n\tfont-family: monospace;\n\tpadding: 2px 2px;\n\tmin-width: 8px;\n\tfont-size: 9px;\n\tfont-weight: 300;\n\tline-height: 1;\n\ttext-align: center;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\tborder-radius: 10px;\n}\n\n#chainMap .nodeIcons {\n\tposition: absolute;\n\ttop: 0.1em;\n\twidth: 50px;\n\theight: 0;\t/* so it doesn't overlay the class text for tips */\n\tright: 50%;\n\tmargin-right: -25px;\n}\n\n#chainMap [data-nodeid] {\n\tposition: relative;\n\ttext-align: center;\n}\n\n#chainMap [data-nodeid] h4 {\n\tfont-weight: normal;\n\twhite-space: nowrap;\n}\n\n#chainMap .nodeType {\n\ttext-transform: uppercase;\n}\n\n#chainMap .nodeActivity {\n\tposition: absolute;\n\tbottom: 3px;\n\tright: 50%;\n\twidth: 50px;\n\theight: 1px;\n\tmargin-right: -25px;\n\tpointer-events: none;\t/* so it doesn't overlay the link */\n}\n\n#chainMap .nodeActivity * { pointer-events: initial }\n\n#chainMap .statics {\n\tposition: absolute;\n\tbottom: -1.5em;\n}\n\n#chainMap .statics span {\n\tdisplay: inline-block;\n\tbackground: navy;\n\tborder-radius: 0 0 50px 50px;\n\twidth: 8px;\n\theight: 10px;\n\tborder: 2px solid var(--n-200);\n}\n\n#chainMap .statics span:nth-child(2) {\n\tmargin-right: 10px;\t/* To leave a gap for the connection when 3+ statics */\n}\n\n#chainMap i[data-icon=\"user\"] {\n\tpadding: 3px;\n\tcursor: default;\n}\n\n#chainMap i.whEffect {\n\tpadding-left: 3px;\n\tcursor: default;\n}\n\n#chainMap i.nodeActivity > span {\n\tpadding: 2px;\n}\n\n/* These styles need the specific selectors because they need to override presets */\n.critical, #chainMap .critical, #guide .critical { border-color: var(--data-critical); }\n.destab, #chainMap .destab, #guide .destab { border-color: var(--data-warn); }\n.gate, #chainMap .gate, #guide .gate { border-color: darkgray; }\n.eol, #chainMap .eol, #guide .eol { border-style: dashed; }\n.frig, #chainMap .frig, #guide .frig { border-color: var(--data-good); }\n\n.tab {\n\tdisplay: inline-block;\n\tmin-width: 75px;\n\tborder-bottom: 2px solid var(--n-200);\n\tcursor: pointer;\n\tvertical-align: top;\n\ttext-align: right;\n}\n\n.tab:hover {\n\tborder-bottom-color: var(--n-500);\n}\n\n.tab.current {\n\tborder-bottom-color: var(--data-info);\n}\n\n.tab .name {\n\tpadding-left: 4px;\n\tfloat: left;\n}\n\n.tab .closeTab, .tab .editTab {\n\topacity: 0;\n\tvisibility: hidden;\n\tfloat: right;\n\tfont-size: .8em;\n\tpadding: 2px 2px 0 4px;\n\n\ttransition: opacity .15s ease-out;\n\t-moz-transition: opacity .15s ease-out;\n\t-webkit-transition: opacity .15s ease-out;\n\t-o-transition: opacity .15s ease-out;\n}\n\n.tab:hover .closeTab, .tab.current:hover .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#guide td:first-child {\n\twidth: 30px;\n}\n\n#guide div {\n\twidth: 20px;\n\tborder-width: 0;\n\tborder: 2px solid var(--data-class-sky);\n\tborder-top-style: none !important;\t/* so we only get one border even when border style is overridden by eol */\n\tborder-left-style: none !important;\n\tborder-right-style: none !important;\n}\n\n#guide div.frig { border-width: 1px; }\n#guide div.aura { box-shadow: 0 0 5px 2px; }\n\n[data-icon=\"user\"] + .badge {\n\tposition: absolute;\n\ttop: -5px;\n\tright: -12px;\n}\n\ntd.google-visualization-orgchart-linenode[data-signatureid] {\n\tcursor: pointer;\n}\n\n/* Grid lines and flare text */\n#chainGrid .grid-default { color: var(--n-550);}\n.red { color: var(--data-critical);}\n.yellow { color: var(--data-warn);}\n.green { color: var(--data-good);}\n\n#chainGrid {\n\tposition: absolute;\n\twidth: 100%;\n\tz-index: -10;\n\tmargin-left: -3px;\t\n}\n\n#chainGrid .top td {\n\theight: 18px;\n}\n\n#chainGrid .line td {\n\theight: 28px;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#chainGrid .space td {\n\theight: 13px;\n}\n\n#chainGrid .red td {\n\tborder-bottom-color: var(--data-critical);\n}\n\n#chainGrid .yellow td {\n\tborder-bottom-color: var(--data-warn);\n}\n\n#chainGrid .green td {\n\tborder-bottom-color: var(--data-good);\n}\n\n#chainTabs {\n\tpadding-right: 10px;\n}\n","/* Command palette and the shortcuts overlay.\n Colours come from the token layer, so this follows whatever theme is loaded\n rather than hard-coding a palette. */\n\n#cmd-palette,\n#cmd-help {\n\tposition: fixed;\n\tinset: 0;\n\tz-index: 10000;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: center;\n\tpadding-top: 12vh;\n\tbackground: var(--scrim-60);\n}\n\n#cmd-palette.hidden,\n#cmd-help.hidden { display: none; }\n\n#cmd-palette .cmd-box,\n#cmd-help .cmd-box {\n\twidth: min(560px, 92vw);\n\tbackground: var(--n-100);\n\tborder: 1px solid var(--n-300);\n\tbox-shadow: 0 12px 40px var(--scrim-70);\n\tfont-size: 1.25em;\n}\n\n#cmd-input {\n\tdisplay: block;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\tpadding: 12px 14px;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--n-300);\n\tbackground: transparent;\n\tcolor: var(--n-999);\n\tfont-family: inherit;\n\tfont-size: 1em;\n\toutline: none;\n}\n\n#cmd-input::placeholder { color: var(--n-600); }\n\n#cmd-list {\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 4px 0;\n\tmax-height: 46vh;\n\toverflow-y: auto;\n}\n\n#cmd-list li {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: 10px;\n\tpadding: 7px 14px;\n\tcursor: pointer;\n\tcolor: var(--n-800);\n}\n\n#cmd-list li.sel { background: var(--n-200); color: var(--n-999); }\n\n/* Listed but unavailable -- undo with nothing to undo, edit with nothing\n selected. Shown rather than hidden so the palette is a stable map of what\n exists. */\n#cmd-list li.off { opacity: .4; cursor: default; }\n\n#cmd-list li.danger.sel { background: var(--data-critical); color: var(--n-050); }\n\n#cmd-list .cmd-label { flex: 1 1 auto; }\n\n#cmd-list .cmd-group,\n#cmd-list .cmd-keys {\n\tflex: 0 0 auto;\n\tfont-size: .8em;\n\tcolor: var(--n-600);\n\ttext-transform: uppercase;\n\tletter-spacing: .06em;\n}\n\n#cmd-list li.sel .cmd-group,\n#cmd-list li.sel .cmd-keys { color: var(--n-750); }\n\n#cmd-list .cmd-keys {\n\ttext-transform: none;\n\tletter-spacing: 0;\n\tborder: 1px solid var(--n-400);\n\tborder-radius: 2px;\n\tpadding: 1px 5px;\n}\n\n#cmd-list .cmd-empty { color: var(--n-600); cursor: default; }\n\n.cmd-foot {\n\tdisplay: flex;\n\tgap: 16px;\n\tpadding: 8px 14px;\n\tborder-top: 1px solid var(--n-300);\n\tfont-size: .78em;\n\tcolor: var(--n-600);\n}\n\n.cmd-foot b { color: var(--n-800); font-weight: normal; }\n\n/* Shortcuts overlay */\n#cmd-help .cmd-box { padding: 18px 20px; }\n#cmd-help h2 { margin: 0 0 12px; color: var(--n-999); font-size: 1.1em; }\n#cmd-help table { border-collapse: collapse; width: 100%; }\n#cmd-help th {\n\ttext-align: left;\n\tpadding: 4px 14px 4px 0;\n\twhite-space: nowrap;\n\tcolor: var(--n-999);\n\tfont-weight: normal;\n}\n#cmd-help td { padding: 4px 0; color: var(--n-800); }\n#cmd-help p { margin: 14px 0 0; color: var(--n-600); font-size: .9em; }\n#cmd-help b { color: var(--n-999); }\n",".cke .cke_button__source_label {\n\tdisplay: none;\n}\n\n.cke .cke_maximized {\n\tbackground: black;\n}\n\n.comment {\n\tborder-bottom: 1px solid var(--n-300);\n}\n\n.commentSticky {\n\tpadding-left: 3px;\n}\n\n.commentToolbar .commentControls::before {\n\tdisplay: inline-block;\n\tcontent: '';\n\theight: 100%;\n\tvertical-align: bottom;\n}\n\n.commentToolbar, .commentFooter {\n\tfont-size: .9em;\n\tcolor: var(--n-650);\n}\n\n.commentToolbar {\n\theight: 26px;\n}\n\n.commentFooter {\n\tpadding: 3px;\n}\n\n.commentControls {\n\tfloat: right;\n\theight: 100%;\n}\n\n.commentStatus, .commentTitle {\n\tfloat: left;\n\theight: 100%;\n}\n\n.commentModified {\n\tdisplay: block;\n\tpadding-top: 3px;\n\tpadding-bottom: 3px;\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.commentToolbar .commentControls, .commentSticky {\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.comment:hover .commentControls, .comment:hover .commentModified, .comment:hover .commentSticky, .commentSticky.active {\n\topacity: 1;\n}\n\n.commentBody {\n\tcolor: var(--n-800);\n\tpadding: 8px;\n\t//white-space: pre-wrap; /* CSS3 */\n\t//white-space: -moz-pre-wrap; /* Firefox */\n\t//white-space: -pre-wrap; /* Opera <7 */\n\t//white-space: -o-pre-wrap; /* Opera 7 */\n\tword-wrap: break-word; /* IE */\n}\n\n.commentBody a {\n\tcolor: darkorange;\n}\n\n.commentBody ol, .commentBody ul, .commentBody dl {\n\t/* IE7: reset rtl list margin. (#7334) */\n\t*margin-right: 0px;\n\t/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/\n\tpadding: 0 40px;\n}\n","#dialog-admin .menu {\n\twidth: 100px;\n\theight: 100%;\n\tfloat: left;\n}\n\n#dialog-admin .window {\n\theight: 100%;\n\tmargin-left: 100px;\n\toverflow: auto;\n}\n\n#dialog-admin .menu li {\n\tlist-style-type: none;\n}\n\n#dialog-admin .menu li a {\n\tcolor: var(--n-500);\n}\n\n#dialog-admin .menu li a:focus {\n\toutline: none;\n}\n\n#dialog-admin .menu li.active a {\n\tcolor: orange;\n}\n\n#dialog-admin #userTable th {\n\ttext-align: left;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#dialog-admin #userTable tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-700);\n}\n\n#dialog-admin .tablesorter .tablesorter-header i:before, #dialog-admin .tablesorter .sortable i:before {\n\tfloat: none;\n}\n\n#dialog-admin .tablesorter .headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerAsc {\n\tcolor: orange;\n}\n\n#dialog-admin .tablesorter .headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerDesc {\n\tcolor: orange;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .menu {\n\tmargin-right: 6px;\n\tborder-right: 1px solid var(--n-700);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window [data-window] {\n\theight: 100%;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window table tbody tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-650);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .ui-dialog-traypane {\n\tmargin-left: 120px;\n\tmargin-top: 8px;\n\tfont-size: 16px;\n\tcolor: var(--n-200);\n}\n","/* Hide rows based on selection */\n#dialog-mass:has(input[value='all']:checked) tr#small-mass,\n#dialog-mass:has(input[value='all']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='all']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='cruiser']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='cruiser']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='cruiser']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Medium,\n#dialog-mass:has(input[value='battleship']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='capital']:checked) tr.mass-Small, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Medium, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Large { display: none }\n\n/* Mod selectors */\n.inactive { opacity: 0.5 }\n\n/* Table alignment and spacing */\n#massTableContainer {\n\ttext-wrap: nowrap;\n\tmargin-top: 1em;\n\tmax-height: 200px;\n\toverflow-y: auto;\n}\n\n#massTable td:nth-child(1) {\n\tmin-width: 12em;\n}\n\n#massTable td:nth-child(2) {\n\tmin-width: 2em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(3) {\n\twidth: 12em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(4), #massTable th:nth-child(4) {\n\twidth: 8em;\n\ttext-align: right;\n}\n\n#massTable td:nth-child(5) {\n\twidth: 14em;\n\ttext-align: right;\n}\n","#dialog-options input[type=\"radio\"] + label {\n\tvertical-align: top;\n}\n\ndiv.ui-slider { display: inline-block; width: calc(75% - 3px); margin-right: 3px }\n\n#dialog-options input[type=\"text\"], #dialog-options input[type=\"password\"], #dialog-options select { width: 75% }\n\n#dialog-options label[for=uiscale-slider] {\n padding: 0 8px;\n}\n\n#dialog-editMask label {\n\twidth: 100%;\n\tmargin-left: -5px;\n}\n\n#dialog-EVEsearch #EVESearchResults {\n\tmax-height: 320px;\n\toverflow: auto;\n\tpadding-left: 5px;\n padding-right: 10px;\n}\n\n#EVESearchResults label {\n\twidth: 100%;\n\tmargin-left: -5px;\n\topacity: 1;\n}\n\n.optionsTable th {\n\ttext-align: left;\n}\n\n.optionsTable td {\n\ttext-align: right;\n}\n\ntr.line td, tr.line th {\n\tborder-bottom: 1px solid var(--n-400);\n}\n\n.optionsTable tr {\n\theight: 2em;\n}\n\n.ui-accordion .ui-accordion-content {\n\tpadding: 0.5em;\n\tbackground: none;\n\tborder-color: var(--n-050);\n}\n\n.ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n}\n\n#masks {\n\ttext-align: left;\n\tpadding-left: 10px;\n}\n\ndiv.maskCategory {\n\tmin-height: 80px;\n\tposition: relative;\n}\n\ndiv.maskCategoryLabel {\n\tposition: absolute;\n\ttop: 80px;\n\tleft: -12px;\n\twidth: 80px;\n\ttext-align: center;\n\tfont-weight: bold;\n\n\t-ms-transform: rotate(-90deg);\n\t-webkit-transform: rotate(-90deg);\n\ttransform: rotate(-90deg);\n\n\t-ms-transform-origin: left top 0;\n\t-webkit-transform-origin: left top 0;\n\ttransform-origin: left top 0;\n}\n","input[type=\"text\"], input[type=\"password\"], select, textarea {\n background-image: linear-gradient(to bottom, var(--n-000) 0%, var(--n-100) 80%, var(--n-300) 100%);\n\n border: none;\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n -ms-border-radius: 3px;\n -o-border-radius: 3px;\n border-radius: 3px;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 2px;\n\n transition: all 0.2s linear;\n color: var(--n-750);\n font-weight: bold;\n position: relative;\n\t\n\toutline-color: var(--data-focus-ring);\n\toutline-width: thin;\n}\n\noption { background-color: var(--n-100); } /* to align with gradient on the select */\n\n*:focus-visible { outline-style: inset; outline-offset: 0 }\n\ninput[type=\"button\"], input[type=\"submit\"], .ui-button.ui-widget {\n\tfont-family: Verdana;\n\n\t-webkit-appearance: none;\n\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\t-ms-border-radius: 4px;\n\t-o-border-radius: 4px;\n\tborder-radius: 4px;\n\n\tbackground-image: linear-gradient(var(--n-300) 0, var(--n-100) 20%, var(--n-000));\n\n\t-webkit-background-clip: padding-box;\n\t-o-background-clip: padding-box;\n\tbackground-clip: padding-box;\n\n\tborder: 1px solid;\n\tborder-color: var(--n-400) var(--n-200) var(--n-000);\n\n\tcolor: var(--n-750);\n\tfont-weight: bold;\n\tfont-size: 1em;\n\ttext-decoration: none;\n\n\tmargin: 0;\n\tpadding: 0.4em 1.4em;\n\twidth: auto;\n\n\tcursor: pointer;\n\toutline: 0;\n\tvertical-align: top;\n\tdisplay: inline-block;\n\toverflow: visible;\n}\n\ninput[type='radio'], input[type='checkbox'] {\n\tvertical-align: middle;\n}\n\ninput[type=\"button\"]:not([disabled]):focus, input[type=\"submit\"]:not([disabled]):focus, .ui-button:focus:not([disabled]) {\n\tborder: 1px solid darkorange;\n}\n\ninput[type=\"button\"]:not([disabled]):hover, input[type=\"submit\"]:not([disabled]):hover, .ui-button:hover:not([disabled]) {\n\tbackground-image: linear-gradient(var(--n-400) 0, var(--n-120) 20%, var(--n-000));\n}\n\ninput[type=\"button\"]:not([disabled]):active, input[type=\"submit\"]:not([disabled]):active, .ui-button:active:not([disabled]) {\n\tcolor: var(--n-800);\n\n\tbackground-image: linear-gradient(var(--n-300), var(--n-550));\n\n\tbox-shadow: inset var(--shadow-25b) 0 1px 2px 0;\n\n\tborder-color: var(--n-650) var(--n-750) var(--n-850);\n}\n\ninput[disabled], a[disabled] {\n\topacity: .4;\n\tcursor: default;\n}\n\ninput.selector, input.mini-selector {\n\twidth: 0; opacity: 0;\t/* Don't use display:none because it makes it not be keyboard accessible */\n}\n\ninput.selector+label img {\n border-radius: 3px;\n\n\twidth: 64px;\n\theight: 64px;\n}\n\ninput.selector+label .selector_label {\n\tposition: absolute;\n\tbottom: 1px;\n\tleft: 1px;\n\tpadding: 1px 3px;\n\tmargin-right: 1px;\n\tcolor: var(--n-800);\n\tfont-size: 0.8em;\n\tbackground: var(--scrim-70);\n\n border-radius: 3px;\n}\n\ninput.selector+label, input.mini-selector+label, .quick-select {\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 3px;\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n\n\tcursor: pointer;\n\topacity: .4;\n\ttransition: all 0.2s ease;\n}\n\n.quick-select {\n\tcolor: var(--n-700);\n\tbackground: none;\n}\n\ninput.selector+label {\n\tvertical-align: top;\n\tmin-height: 64px;\n\tmin-width: 64px;\n\tmargin: 3px 3px;\n}\n\ninput.mini-selector+label {\n\tmargin: 3px -3px;\n\ttop: -1px;\n}\n\ninput.selector+label:hover, input.mini-selector+label:hover, .quick-select:hover {\n\tborder-color: var(--data-class-amber);\n\topacity: 1;\n}\n\ninput.selector:checked+label, input.mini-selector:checked+label {\n\tborder-color: darkorange;\n\topacity: 1;\n}\n\ninput.selector:focus-visible+label, input.mini-selector:focus-visible+label, .quick-select:focus-visible {\n\toutline-style: inset;\n outline-offset: 1px;\n outline-color: var(--data-focus-ring-soft);\n outline-width: 1px;\n}\n\ninput.selector+label .info {\n\tdisplay: inline-block;\n\tmargin-left: 5px;\n\tvertical-align: top;\n\tfont-weight: normal;\n\tfont-size: 0.9em;\n}\n\ninput.selector:checked+label .info {\n\tdisplay: inline-block;\n}\n\ninput[type=checkbox]:not(.selector) + label {\n\tmargin-left: 4px;\n\tvertical-align:top;\n\tcursor:pointer;\n}\n\ninput[type='radio'], input[type='checkbox'] {\tfilter: invert(1);}\ninput[type='checkbox'] { accent-color: var(--n-850); }",".gridster > ul {\n\t//background: var(--scrim-80);\n\tlist-style-type: none;\n}\n\n.gridster > li {\n overflow: hidden;\n}\n\n.controls i, .controls span.control {\n\tcursor: pointer;\n}\n\n.toggle-panel {\n\tposition: absolute;\n background: var(--n-020);\n border: 1px var(--n-250) solid;\n padding: 3px;\n}\n\n.gridster li div.content {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 5px;\n\tbottom: 5px;\n\tleft: 5px;\n\n\toverflow: auto;\n}\n\n.gridster li .controls + .content {\n\ttop: 18px;\n}\n\n.gridster {\n\tvisibility: hidden;\n margin: 0 auto;\n padding: 50px 0 140px 0;\n\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n -webkit-transition: opacity .6s;\n -moz-transition: opacity .6s;\n -o-transition: opacity .6s;\n -ms-transition: opacity .6s;\n transition: opacity .6s;\n}\n\n.gridster > * {\n margin: 0 auto;\n}\n\n.gridster-transition {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\t-webkit-transition: height .4s, width .4s;\n -moz-transition: height .4s, width .4s;\n -o-transition: height .4s, width .4s;\n -ms-transition: height .4s, width .4s;\n transition: height .4s, width .4s;\n}\n\n.gridster .gs-w {\n z-index: 2;\n position: absolute;\n}\n\n.gridster .gs-w {\n //background: var(--veil-grey);\n background: var(--scrim-60);\n}\n\n.gridster .gs-w:hover .grid-resize-both {\n\topacity: 1;\n}\n\n.gridster .grid-resize {\n\tposition: absolute;\n\tz-index: 1;\n}\n\n.gridster .grid-resize-both {\n width: 30px;\n height: 30px;\n bottom: -18px;\n right: -18px;\n cursor: se-resize;\n z-index: 20;\n opacity: 0;\n color: var(--n-750);\n}\n\n.gridster .gs-resize-handle-both:before {\n\tcontent: \"\\e018\";\n}\n\n.gridster .player {\n background: var(--veil-silver);\n}\n\n.gridster .preview-holder {\n border: none;\n background: var(--veil-danger);\n}\n","@font-face {\n\tfont-family: 'icon';\n\tsrc:url('../fonts/tripwire.eot?w81bs6');\n\tsrc:url('../fonts/tripwire.eot?#iefixw81bs6') format('embedded-opentype'),\n\t\turl('../fonts/tripwire.woff?w81bs6') format('woff'),\n\t\turl('../fonts/tripwire.ttf?w81bs6') format('truetype'),\n\t\turl('../fonts/tripwire.svg?w81bs6#icon') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n/* Use the following CSS code if you want to use data attributes for inserting your icons */\n[data-icon] {\n\tfont-family: 'icon';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n[data-icon]:hover {\n\ttext-decoration: none;\n}\n\n[data-icon=\"undo\"]:before {\n\tcontent: \"\\e60e\";\n}\n[data-icon=\"redo\"]:before {\n\tcontent: \"\\e612\";\n}\n[data-icon=\"move-horizontal\"]:before {\n\tcontent: \"\\e600\";\n}\n[data-icon=\"move-vertical\"]:before {\n\tcontent: \"\\e601\";\n}\n[data-icon=\"tripwire-logo\"]:before {\n\tcontent: \"\\e602\";\n}\n[data-icon=\"edit\"]:before {\n\tcontent: \"\\e609\";\n}\n[data-icon=\"pin\"]:before {\n\tcontent: \"\\e60a\";\n}\n[data-icon=\"plus-circle\"]:before {\n\tcontent: \"\\e60b\";\n}\n[data-icon=\"minus-circle\"]:before {\n\tcontent: \"\\e60c\";\n}\n[data-icon=\"times-circle\"]:before {\n\tcontent: \"\\e60d\";\n}\n[data-icon=\"check\"]:before {\n\tcontent: \"\\f00c\";\n}\n[data-icon=\"times\"]:before {\n\tcontent: \"\\f00d\";\n}\n[data-icon=\"plus\"]:before {\n\tcontent: \"\\f067\";\n}\n[data-icon=\"minus\"]:before {\n\tcontent: \"\\f068\";\n}\n[data-icon=\"eye\"]:before {\n\tcontent: \"\\e000\";\n}\n[data-icon=\"pulsar\"]:before {\n\tcontent: \"\\e001\";\n\tcolor: var(--data-link);\n}\n[data-icon=\"connection\"]:before {\n\tcontent: \"\\e002\";\n}\n[data-icon=\"settings\"]:before {\n\tcontent: \"\\e003\";\n}\n[data-icon=\"magnetar\"]:before {\n\tcontent: \"\\e004\";\n\tcolor: var(--data-magenta);\n}\n[data-icon=\"wolf-rayet\"]:before {\n\tcontent: \"\\e005\";\n\tcolor: var(--data-bronze);\n}\n[data-icon=\"portrait\"]:before {\n\tcontent: \"\\e006\";\n}\n[data-icon=\"landscape\"]:before {\n\tcontent: \"\\e007\";\n}\n[data-icon=\"erase\"]:before {\n\tcontent: \"\\e008\";\n}\n[data-icon=\"lock-open\"]:before {\n\tcontent: \"\\e009\";\n}\n[data-icon=\"lock\"]:before {\n\tcontent: \"\\e00a\";\n}\n[data-icon=\"user\"]:before {\n\tcontent: \"\\e00b\";\n}\n[data-icon=\"red-giant\"]:before {\n\tcontent: \"\\e00c\";\n\tcolor: red;\n}\n[data-icon=\"search\"]:before {\n\tcontent: \"\\e00d\";\n}\n[data-icon=\"star-empty\"]:before {\n\tcontent: \"\\e00e\";\n}\n[data-icon=\"star\"]:before {\n\tcontent: \"\\e00f\";\n}\n[data-icon=\"blackhole\"]:before {\n\tcontent: \"\\e010\";\n\tcolor: var(--n-900);\n}\n[data-icon=\"fullscreen\"]:before {\n\tcontent: \"\\e011\";\n}\n[data-icon=\"fullscreen-exit\"]:before {\n\tcontent: \"\\e012\";\n}\n[data-icon=\"home\"]:before {\n\tcontent: \"\\e013\";\n}\n[data-icon=\"key\"]:before {\n\tcontent: \"\\e014\";\n}\n[data-icon=\"alert\"]:before {\n\tcontent: \"\\e015\";\n}\n[data-icon=\"help\"]:before {\n\tcontent: \"\\e016\";\n}\n[data-icon=\"resize\"]:before {\n\tcontent: \"\\e017\";\n}\n[data-icon=\"info\"]:before {\n\tcontent: \"\\e018\";\n}\n[data-icon=\"tree\"]:before {\n\tcontent: \"\\e019\";\n}\n[data-icon=\"anchor\"]:before {\n\tcontent: \"\\e020\";\n}\n[data-icon=\"prop-mod\"]:before {\n\tcontent: \"\\e021\";\n}\n[data-icon=\"follow\"]:before {\n\tcontent: \"\\e60f\";\n}\n[data-icon=\"viewing\"]:before {\n\tcontent: \"\\e610\";\n}\n[data-icon=\"cataclysmic-variable\"]:before {\n\tcontent: \"\\e611\";\n\tcolor: var(--data-pale-yellow);\n}\n[data-icon=\"layout\"]:before {\n\tcontent: \"\\e603\";\n}\n[data-icon=\"auto\"]:before {\n\tcontent: \"\\e604\";\n}\n[data-icon=\"check-on\"]:before {\n\tcontent: \"\\e605\";\n}\n[data-icon=\"check-off\"]:before {\n\tcontent: \"\\e606\";\n}\n[data-icon=\"radio-off\"]:before {\n\tcontent: \"\\e607\";\n}\n[data-icon=\"radio-on\"]:before {\n\tcontent: \"\\e608\";\n}\n[data-icon=\"trash\"]:before {\n\tcontent: \"\\e9ad\";\n\tvertical-align: text-top;\n}\n[data-icon=\"sort\"]:before {\n\tcontent: \"\\f0dc\";\n}\n[data-icon=\"sort-desc\"]:before {\n\tcontent: \"\\f0dd\";\n}\n[data-icon=\"sort-asc\"]:before {\n\tcontent: \"\\f0de\";\n}\n",".introjs-helperLayer {\n background-color: var(--n-400);\n}\n\na.introjs-button:hover, a.introjs-skipbutton:hover {\n color: var(--n-560);\n}\n",".validation-tooltip .jBox-container, .validation-tooltip .jBox-pointer:after {\n\tbackground: var(--data-danger);\n\tcolor: white;\n\tborder: none;\n\tfont-weight: bold;\n\tfont-size: 1.2em;\n\tpadding: 3px;\n}\n\n.jBox-container {\n\tbackground: var(--n-200);\n\tcolor: var(--n-800);\n\tmin-height: 20px;\n}\n\n.jBox-content {\n\tpadding: 4px 5px;\n}\n\n/* Pointer */\n\n.jBox-pointer-right { right: 2px; }\n\n.jBox-pointer:after {\n\tbackground: var(--n-200);\n}\n\n/* jBox Notice */\n\n.jBox-Notice .jBox-container {\n border-radius: 3px;\n\tbox-shadow: 0 0 3px var(--n-000);\n\n\tcolor: var(--n-999);\n\tfont-size: 1.1em;\n\ttext-shadow: 0 -1px 0 var(--n-000);\n\tbackground: var(--n-200);\n\tbackground-image: linear-gradient(to bottom, var(--n-300), var(--n-100));\n}\n\n.jBox-Notice .jBox-content {\n\tpadding: 6px 10px;\n}\n\n.jBox-Notice .jBox-title {\n\tpadding: 8px 20px 0;\n}\n\n.jBox-Notice-color .jBox-container {\n\ttext-shadow: 0 -1px 0 var(--shadow-30);\n}\n\n.jBox-Notice-gray .jBox-container {\n\tcolor: var(--n-500);\n\ttext-shadow: 0 1px 0 var(--n-999);\n\tbackground: var(--n-920);\n\tbackground-image: linear-gradient(to bottom, var(--n-960), var(--n-900));\n}\n\n.jBox-Notice-red .jBox-container {\n\tbackground: var(--ui-red);\n\tbackground-image: linear-gradient(to bottom, var(--ui-red-lit), var(--ui-red));\n}\n\n.jBox-Notice-green .jBox-container {\n\tbackground: var(--ui-green);\n\tbackground-image: linear-gradient(to bottom, var(--ui-green-lit), var(--ui-green));\n}\n\n.jBox-Notice-blue .jBox-container {\n\tbackground: var(--ui-blue);\n\tbackground-image: linear-gradient(to bottom, var(--ui-blue-lit), var(--ui-blue));\n}\n\n.jBox-Notice-yellow .jBox-container {\n\tcolor: var(--data-brown);\n\ttext-shadow: 0 1px 0 var(--glow-60);\n\tbackground: var(--ui-amber);\n\tbackground-image: linear-gradient(to bottom, var(--ui-amber-lit), var(--ui-amber));\n}\n\n.jBox-Notice-yellow .jBox-container a {\n\tcolor: var(--n-650);\n}\n",".mask .corporate { color: green }\n.mask .alliance { color: var(--data-alliance);display: inline-block;transform: scaleY(-1) translateY(2px); }\t/* need the block to make the transform work */\n.mask i { padding-right: 2px }\n\n#mask-menu a { display: block }\n\n/* Overlays etc on the mask panel */\n#masks label > img { margin-top: 3px; }\n#masks label { height: 69px; }\n.source_bar {\n position: absolute;\n top: 0; left: 0;\n\twidth: 100%;\n\theight: 3px;\n color: var(--n-800);\n font-size: .8em;\n\tborder-radius: 3px 3px 0 0;\n}\n\n.source_bar.global { background: var(--n-550) }\n.source_bar.personal { background: var(--n-800) }\n.source_bar.corporate { background: green }\n.source_bar.alliance { background: var(--data-alliance) }\n\n.icon_bar {\n position: absolute;\n top: 3px; right: 0;\n}\n\n.icon_bar .icon {\n\tborder-radius: 1em;\n\topacity: 0.7;\n\tfont-size: 0.85em;\n\tpadding: 0.15em;\n\theight: 1em;\n\twidth: 1em;\n\tdisplay: inline-block;\n\ttext-align: center;\n\ttext-decoration: none;\n}\n\n.icon_bar .icon:hover, .icon_bar .icon:focus {\n\topacity: 1;\n}\n\n.icon_bar .closeIcon { background: maroon }\n.icon_bar .joinIcon { background: green }\n\n#mask-explanation p { margin: 0.5em 0; }","html .ui-selectmenu-menu li a, html .ui-selectmenu-status {\n\tpadding: 0em 1em 0em .5em;\n\tfont-weight: bold;\n\ttext-align: left;\n}\n\nhtml a.ui-selectmenu:hover {\n\ttext-decoration: none;\n}\n\nhtml .ui-selectmenu {\n\theight: auto;\n\t//margin-bottom: .2em;\n\t//padding: 0.1em;\n}\n\nhtml .ui-selectmenu-menu ul {\n\t//padding: 0 0.1em;\n}\n\n#whType, #sigID {\n\ttext-transform: uppercase;\n\ttext-align: center;\n\tpadding-left: 0px;\n}\n\n#sigAddForm th, #sigEditForm th {\n\ttext-align: right;\n}\n\n#sigAddForm table tr td, #sigEditForm table tr td {\n\tpadding: 2px 0;\n}\n\n#sigTable {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\ttext-align: center;\n\ttable-layout: fixed;\n\tmargin-left: -1px;\n\tuser-select: none;\n}\n\n#sigTable th {\n\tbackground: var(--scrim-n200);\n\tborder: 1px solid var(--n-000);\n}\n\n#sigTable td {\n\tbackground: var(--scrim-n050);\n\tborder: 1px solid var(--n-000);\n\tcursor: default;\n}\n\n#sigTable tr:hover td {\n\tbackground-color: var(--n-300);\n}\n\n#sigTable tr.selected td {\n\tbackground-color: var(--n-200);\n}\n\n#sigTable th:nth-child(1) {\n\twidth: 50px;\n}\n\n#sigTable th:nth-child(2) {\n\twidth: 45px;\n}\n\n#sigTable th:nth-child(3) {\n\twidth: 40px;\n}\n\n#sigTable th:nth-child(5), #sigTable th:nth-child(6) {\n\twidth: 40px;\n}\n\n#sigTable td:nth-child(1) {\n\tfont-family: \"lucida\";\n\tletter-spacing: 1px;\n\ttext-transform: uppercase;\n}\n\n#sigTable td:nth-child(2) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td:nth-child(5), #sigTable td:nth-child(6) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\n#sigTable td.centerAlign {\n\ttext-align: center;\n}\n\n#sigTable td.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\n#sigTable a.siteLink {\n\tcolor: var(--data-olive);\n}\n\n#sigTable tbody .disabled {\n\tcolor: var(--n-300);\n}\n\n.return-visible .return-link { display: inline }\n.return-invisible .return-link { display: none }\n\n.tablesorter .tablesorter-header {\n\tcursor: pointer;\n\tvertical-align: middle;\n\tfont-size: 10px;\n}\n\n.tablesorter .tablesorter-header:focus {\n\toutline: none;\n}\n\n.tablesorter .tablesorter-header i:before, .tablesorter .sortable i:before {\n\tcontent: \"\\f0dc\";\n\tvertical-align: bottom;\n\tpadding: 1px 2px;\n\tfloat: right;\n}\n\n.tablesorter .headerSortUp,\n.tablesorter .tablesorter-headerSortUp,\n.tablesorter .tablesorter-headerAsc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortUp i:before,\n.tablesorter .tablesorter-headerSortUp i:before,\n.tablesorter .tablesorter-headerAsc i:before {\n\tcontent: \"\\f0de\";\n}\n\n.tablesorter .headerSortDown,\n.tablesorter .tablesorter-headerSortDown,\n.tablesorter .tablesorter-headerDesc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortDown i:before,\n.tablesorter .tablesorter-headerSortDown i:before,\n.tablesorter .tablesorter-headerDesc i:before {\n\tcontent: \"\\f0dd\";\n}\n\n.tablesorter thead .sorter-false {\n\tcursor: default;\n}\n\n#dialog-signature hr {\n\tmargin-left: 15px;\n\tmargin-bottom: 10px;\n}\n\n#dialog-signature .label {\n\tfont-weight: bold;\n\ttext-align: right;\n\tvertical-align: text-top;\n}\n\n#dialog-signature .select {\n\tdisplay: inline-block;\n\tvertical-align: text-bottom;\n}\n\n#dialog-signature .row {\n\tmin-height: 22px;\n}\n\n#dialog-signature .label:first-child {\n\tdisplay: inline-block;\n\tmin-width: 70px;\n}\n\n#dialog-signature #signatureName span {\n\tdisplay: table-cell;\n}\n\n#dialog-signature #signatureName span:last-child {\n\twidth: 100%;\n\tpadding-left: 3px;\n}\n\n#dialog-signature #signatureName input {\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n#dialog-signature #signatureType, #dialog-signature #wormholeMass {\n\tfloat: right;\n}\n\n#dialog-signature #wormholeMass .label, #dialog-signature .bookmark .label {\n\tmin-width: auto;\n}\n\n#dialog-signature .signatureID, #dialog-signature .wormholeType {\n\ttext-align: center;\n\ttext-transform: uppercase;\n}\n\n#dialog-signature .side {\n\tposition: relative;\n\tmin-height: 70px;\n}\n\n#dialog-signature .sideLabel {\n\tposition: absolute;\n\tleft: -10px;\n\tfont-weight: bold;\n\ttransform: rotate(-90deg);\n\ttransform-origin: left top 0;\n}\n\n#dialog-signature #wormhole .side:first-child .sideLabel {\n\tbottom: 0px;\n\twidth: 90px;\n\ttext-align: left;\n}\n\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\tbottom: -70px;\n\twidth: 135px;\n\ttext-align: right;\n}\n\n.custom-combobox {\n\tposition: relative;\n\tdisplay: inline-table;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: -20px;\n\tmargin-left: -1px;\n\tpadding: 0;\n}\n\n.custom-combobox input {\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tpadding: 0.4em 0.8em;\n\tborder-radius: 0;\n\tborder-top-right-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.wormholeTypeQuickSelect {\n\tmargin-left: 1.8em;\n}\n\n.quickSelectBar button {\n\tpadding: 1px; margin-right: 1px;\n}\n\n#leadsToQuickBar {\n\tmargin-left: 74px;\n\tmargin-top: 2px;\n\tmargin-bottom: 4px;\n}\n\n.popover {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 1060;\n\tdisplay: block;\n\tmax-width: 276px;\n\tpadding: 1px;\n\tfont-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tletter-spacing: normal;\n\tline-break: auto;\n\tline-height: 1.5;\n\ttext-align: left;\n\ttext-align: start;\n\ttext-decoration: none;\n\ttext-shadow: none;\n\ttext-transform: none;\n\twhite-space: normal;\n\tword-break: normal;\n\tword-spacing: normal;\n\tfont-size: 0.875rem;\n\tword-wrap: break-word;\n\tbackground-color: var(--n-999);\n\t-webkit-background-clip: padding-box;\n\t\t\t\t\tbackground-clip: padding-box;\n\tborder: 1px solid var(--shadow-20b);\n\tborder-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n\tmargin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n\tleft: 50%;\n\tborder-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n\tbottom: -11px;\n\tmargin-left: -11px;\n\tborder-top-color: var(--shadow-25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n\tbottom: -10px;\n\tmargin-left: -10px;\n\tborder-top-color: var(--n-999);\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n\tmargin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n\ttop: 50%;\n\tborder-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n\tleft: -11px;\n\tmargin-top: -11px;\n\tborder-right-color: var(--shadow-25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n\tleft: -10px;\n\tmargin-top: -10px;\n\tborder-right-color: var(--n-999);\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n\tmargin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n\tleft: 50%;\n\tborder-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n\ttop: -11px;\n\tmargin-left: -11px;\n\tborder-bottom-color: var(--shadow-25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n\ttop: -10px;\n\tmargin-left: -10px;\n\tborder-bottom-color: var(--n-940);\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\tdisplay: block;\n\twidth: 20px;\n\tmargin-left: -10px;\n\tcontent: \"\";\n\tborder-bottom: 1px solid var(--n-940);\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n\tmargin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n\ttop: 50%;\n\tborder-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n\tright: -11px;\n\tmargin-top: -11px;\n\tborder-left-color: var(--shadow-25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n\tright: -10px;\n\tmargin-top: -10px;\n\tborder-left-color: var(--n-999);\n}\n\n.popover-title {\n\tpadding: 8px 14px;\n\tmargin-bottom: 0;\n\tfont-size: 1rem;\n\tbackground-color: var(--n-940);\n\tborder-bottom: 1px solid var(--n-870);\n\tborder-top-right-radius: calc(0.3rem - 1px);\n\tborder-top-left-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n\tdisplay: none;\n}\n\n.popover-content {\n\tpadding: 9px 14px;\n}\n\n.popover::before,\n.popover::after {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 0;\n\theight: 0;\n\tborder-color: transparent;\n\tborder-style: solid;\n}\n\n.popover::before {\n\tcontent: \"\";\n\tborder-width: 11px;\n}\n\n.popover::after {\n\tcontent: \"\";\n\tborder-width: 10px;\n}\n\n.age-tooltip-table td {\n\tpadding-left: 12px;\n}\n","#wrapper {\n\theight: 100%;\n\toverflow: auto;\n\n\tbackground-color: black;\n\tbackground-image: url(../images/bg.jpg);\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\n\t-webkit-background-size: cover;\n\t-moz-background-size: cover;\n\t-o-background-size: cover;\n\tbackground-size: cover;\n}\n\n#inner-wrapper {\n\tmin-height: 100%;\n\tposition: relative;\n}\n\n#pageTime {\n\ttext-align: center;\n\tfont-size: 0.8em;\n\topacity: 0.6;\n}\n\n#footer {\n\tposition: absolute;\n\tbottom: 0;\n\twidth: 100%;\n\ttext-align: center;\n\tpadding-bottom: 10px;\n}\n\n#legal {\n\tfont-size: 0.5em;\n\twidth: 60%;\n\ttext-align: center;\n\tmargin: 0 auto;\n\topacity: 0.5;\n}\n\n#topbar {\n\tposition: fixed;\n\ttop: 0;\n\theight: 45px;\n\twidth: 100%;\n\tbackground: var(--scrim-80);\n\tz-index: 3;\n\tline-height: 40px;\n}\n\n#topbar div { line-height: normal; } /** reset for children */\n\n#topbar h1, #topbar h2, #topbar h3, #topbar form {\n\tdisplay: inline;\n}\n\n#topbar .align-right {\n\tpadding-right: 25px;\n}\n\n#topbar .align-left {\n\tpadding-left: 25px;\n}\n\n#logo {\n\tposition: relative;\n}\n\n#version {\n\tposition: absolute;\n\tcolor: var(--data-info);\n\tfont-size: 0.4em;\n\theight: 0;\n\ttop: 4px;\n\tright: 20px;\n}\n\n#clipboard {\n\tposition: fixed;\n\tleft: -99em;\n\ttop: 0;\n}\n\n#searchSpan {\n\tdisplay: none;\n}\n\n.controls {\n position: absolute;\n padding: 3px;\n z-index: 1;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.controls i {\n\tfont-size: 1.2em;\n\tpadding: 0px 2px;\n\tvertical-align: middle;\n\tfont-style: normal;\n}\n\n.controls button {\n\tfont-size: 1em;\n color: var(--n-500);\n margin: 2px;\n padding: 1px;\n background: var(--n-100);\n border: 1px solid var(--n-000);\n\toutline: 0;\n cursor: pointer;\n background-image: linear-gradient(var(--n-100),var(--n-050));\n}\n\n.tooltip-data {\n\tbackground: var(--scrim-n120);\n\tpadding: 5px;\n\tcolor: var(--n-800);\n\tborder: none;\n\tbox-shadow: none;\n\t-webkit-box-shadow: none;\n\n\tborder-radius: 3px;\n}\n\n.tooltip-data table {\n\tborder: none;\n\tborder-collapse: collapse;\n}\n\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }\n\n#chainMenu, #signatureColumnMenu {\n\tz-index: 5;\n}\n\n/* Loading animation container */\n.loading {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n}\n\n/* Spinning circle (inner circle) */\n.loading .maskedCircle {\n\twidth: 2em;\n\theight: 2em;\n\n\t-webkit-border-radius: 1em;\n -moz-border-radius: 1em;\n -ms-border-radius: 1em;\n -o-border-radius: 1em;\n border-radius: 1em;\n\n\tborder: 3px solid var(--n-000);\n}\n\n/* Spinning circle mask */\n.loading .mask {\n\twidth: 1em;\n\theight: 1em;\n\toverflow: hidden;\n}\n\n/* Spinner */\n.loading .spinner {\n\tposition: absolute;\n\tleft: 1px;\n\ttop: 1px;\n\twidth: 2em;\n\theight: 2em;\n\t-webkit-animation: spin 1s infinite linear;\n\t-moz-animation: spin 1s infinite linear;\n\t-o-animation: spin 1s infinite linear;\n\tanimation: spin 1s infinite linear;\n}\n\ntable.stdTable {\n\twidth: 100%;\n}\n\ntable.stdTable th {\n\ttext-align: left;\n}\n\ndiv.overlay {\n\tposition: fixed;\n\tz-index: 101;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\topacity: 0.3;\n\tbackground: var(--n-700) url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;;\n}\n\n.control-group { display:inline-block; text-align: center }\ntd .control-group { width: 100% }\n\n.whEffect { padding-right: 2px; }\n\n.copy { font-size: 75%; margin: 0 3px; padding: 2px }\n.copy::after { content: '\\01F4C4\\00FE0E' }\n\n#activityGraph { padding-top: 8px; }\n#activityGraphControls { padding-bottom: 8px; }\n\n#activityGraph svg > g:nth-child(3) > g > path {\n\tfill: var(--scrim-n020);\n\tstroke: var(--stroke-n120);\n}\n\n#activityGraph svg > g:nth-child(3) > g > g > text {\n\tfill: var(--n-800);\n}\n\n#activityGraph svg > g:nth-child(2) > g:last-child > g {\n\tcursor: pointer;\n}\n\n/* Autocomplete */\nul.ui-autocomplete {\n\tmax-height: 140px;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n}\n\ntd.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\ntd.centerAlign {\n\ttext-align: center;\n}\n\ntd.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\nth.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\nth.centerAlign {\n\ttext-align: center;\n}\n\nth.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n","/* ============================================================================\n TRIPWIRE DESIGN SYSTEM\n\n A reimagining of the interface in Aperture's design language, not a patch\n over the old one. The vocabulary below is Aperture's, taken from its\n globals.css so the two tools speak the same language:\n\n role tokens, not a grey ramp --background / --card / --popover / --muted\n borders as light --border is white at 10%, --input at 15%\n one radius --radius: 0.625rem, everything derives\n muted-foreground for secondary text, ring for focus\n\n Tripwire's own --n-* ramp and --data-* semantics still exist underneath and\n still drive the map, because those encode EVE meaning. This layer governs\n chrome: surfaces, controls, type, tables, dialogs, states.\n\n Ordering: this file must load after the component stylesheets, which is what\n the _override-* group in gulpfile.js exists for.\n ========================================================================= */\n\n:root {\n\t/* ---- surfaces -------------------------------------------------------- */\n\t--background: oklch(0.145 0 0);\n\t--foreground: oklch(0.80 0 0);\n\t--card: oklch(0.205 0 0);\n\t--card-foreground: oklch(0.82 0 0);\n\t--popover: oklch(0.205 0 0);\n\t--popover-foreground: oklch(0.80 0 0);\n\t--muted: oklch(0.269 0 0);\n\t--muted-foreground: oklch(0.66 0 0);\n\t--accent-surface: oklch(0.269 0 0);\n\n\t/* ---- lines and focus ------------------------------------------------- */\n\t--border: oklch(1 0 0 / 10%);\n\t--border-strong: oklch(1 0 0 / 18%);\n\t--input: oklch(1 0 0 / 15%);\n\t--ring: var(--accent, oklch(0.556 0 0));\n\n\t/* ---- intent ---------------------------------------------------------- */\n\t--primary: var(--accent, oklch(0.922 0 0));\n\t--primary-foreground: oklch(0.205 0 0);\n\t--destructive: oklch(68.025% 0.2081 23.639);\n\n\t/* ---- geometry -------------------------------------------------------- */\n\t--radius: 0.625rem;\n\t--radius-sm: calc(var(--radius) * 0.5);\n\t--radius-md: calc(var(--radius) * 0.75);\n\n\t/* ---- rhythm ---------------------------------------------------------- */\n\t--space-1: 0.25rem;\n\t--space-2: 0.5rem;\n\t--space-3: 0.75rem;\n\t--space-4: 1rem;\n\t--space-5: 1.5rem;\n\n\t/* ---- type ------------------------------------------------------------ */\n\t--fs-xs: 0.8rem;\n\t--fs-sm: 0.9rem;\n\t--fs-base: 1rem;\n\t--fs-md: 1.15rem;\n\t--fs-lg: 1.5rem;\n\t--fs-xl: 2rem;\n}\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(1 0 0);\n\t\t--foreground: oklch(0.145 0 0);\n\t\t--card: oklch(1 0 0);\n\t\t--card-foreground: oklch(0.145 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--popover-foreground: oklch(0.145 0 0);\n\t\t--muted: oklch(0.97 0 0);\n\t\t--muted-foreground: oklch(0.556 0 0);\n\t\t--accent-surface: oklch(0.97 0 0);\n\t\t--border: oklch(0.922 0 0);\n\t\t--border-strong: oklch(0.85 0 0);\n\t\t--input: oklch(0.922 0 0);\n\t\t--destructive: oklch(0.577 0.245 27.325);\n\t\t--primary-foreground: oklch(0.985 0 0);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(1 0 0);\n\t--foreground: oklch(0.145 0 0);\n\t--card: oklch(1 0 0);\n\t--card-foreground: oklch(0.145 0 0);\n\t--popover: oklch(1 0 0);\n\t--popover-foreground: oklch(0.145 0 0);\n\t--muted: oklch(0.97 0 0);\n\t--muted-foreground: oklch(0.556 0 0);\n\t--accent-surface: oklch(0.97 0 0);\n\t--border: oklch(0.922 0 0);\n\t--border-strong: oklch(0.85 0 0);\n\t--input: oklch(0.922 0 0);\n\t--destructive: oklch(0.577 0.245 27.325);\n\t--primary-foreground: oklch(0.985 0 0);\n}\n\n/* ============================================================================\n BASE\n ========================================================================= */\n\nhtml {\n\t/* Was .6em -> 9.6px, with nine ad-hoc sizes from 6px to 19.2px in use.\n\t Verified before changing: no panel overflows at 12px. */\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n\nbody {\n\tcolor: var(--foreground);\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\na { color: var(--primary); font-weight: 500; }\na:hover { color: var(--primary); text-decoration: underline; }\n\n::selection { background: var(--primary); color: var(--primary-foreground); }\n\n/* One focus treatment everywhere. Matters more now the app is keyboard-driven. */\n:focus-visible {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n\tborder-radius: var(--radius-sm);\n}\n\n/* ============================================================================\n SURFACES\n Everything raised is a card: same ground, same edge, same radius.\n ========================================================================= */\n\n.gridWidget,\n.ui-dialog,\n.jBox-container {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n\tcolor: var(--card-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: none;\n}\n\n.gridWidget > .controls,\n.ui-dialog .ui-dialog-titlebar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tborder-radius: var(--radius) var(--radius) 0 0;\n\tpadding: var(--space-2) var(--space-3);\n\tmin-height: 0;\n}\n\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\tmargin: 0;\n\tfloat: none;\n}\n\n.panel-title {\n\tflex: 0 0 auto;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\twhite-space: nowrap;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tcolor: var(--card-foreground);\n\tbackground: transparent;\n}\n\n.ui-dialog .ui-dialog-buttonpane {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-top: 1px solid var(--border);\n\tmargin: 0;\n\tpadding: var(--space-3) var(--space-4);\n}\n\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: none; text-align: right; }\n\n/* The dialog's own close affordance, and the panel hide control, are the same\n thing and should look it. */\n.ui-dialog .ui-dialog-titlebar-close,\n.panel-hide {\n\torder: 99;\n\tmargin-left: auto;\n\twidth: auto; height: auto;\n\tposition: static;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-md);\n\tline-height: 1;\n\tpadding: 0 var(--space-1);\n\tcursor: pointer;\n}\n.ui-dialog .ui-dialog-titlebar-close:hover,\n.panel-hide:hover { color: var(--destructive); background: none; }\n.ui-dialog .ui-dialog-titlebar-close .ui-icon { display: none; }\n.ui-dialog .ui-dialog-titlebar-close::after { content: \"\\00d7\"; }\n\n/* ============================================================================\n CONTROLS\n Flat at rest so rows read as data; the affordance arrives on approach.\n ========================================================================= */\n\ninput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\ninput[type=\"search\"], select, textarea {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tbox-shadow: none;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\ninput:hover, select:hover, textarea:hover { border-color: var(--border); }\n\ninput:focus, select:focus, textarea:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--muted);\n\toutline: none;\n}\n\n::placeholder { color: var(--muted-foreground); opacity: 1; }\n\nbutton, .ui-button, .ui-button.ui-widget,\ninput[type=\"button\"], input[type=\"submit\"] {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tpadding: var(--space-1) var(--space-3);\n\tbox-shadow: none;\n\ttext-shadow: none;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n\nbutton:hover, .ui-button:hover, .ui-button.ui-widget:hover,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover {\n\tborder-color: var(--border-strong);\n\tbackground-color: var(--muted);\n\tcolor: var(--foreground);\n}\n\n.ui-dialog-buttonpane button.is-primary {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground-color: transparent;\n}\n\nbutton[disabled], .disabled { opacity: .4; cursor: default; }\n\n/* ============================================================================\n DATA\n ========================================================================= */\n\n#sigTable { border-collapse: collapse; width: 100%; }\n\n#sigTable th {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .09em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n\tpadding: var(--space-2) var(--space-2);\n\tbox-shadow: none;\n}\n\n#sigTable td {\n\tborder: 0;\n\tpadding: var(--space-2);\n\tfont-size: var(--fs-base);\n\tcolor: var(--card-foreground);\n}\n\n#sigTable tbody tr { transition: background-color .1s ease; }\n#sigTable tbody tr:nth-child(even) > td { background-color: oklch(1 0 0 / 3%); }\n#sigTable tbody tr:hover > td { background-color: var(--muted); }\n#sigTable tbody tr.selected > td { background-color: color-mix(in oklab, var(--primary) 18%, transparent); }\n\n/* Chips. Life, mass and security are small closed sets; they read faster as\n pills, and it keeps state out of the same register as the data beside it. */\n#sigTable td .stable, #sigTable td .critical, #sigTable td .destab,\n.chip-pill {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid currentColor;\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.7;\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Segmented control for the dialog's life/mass radios. */\n#dialog-signature .mini-selector { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-block;\n\tpadding: var(--space-1) var(--space-3);\n\tmargin-right: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n#dialog-signature .mini-selector + label:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature .mini-selector:checked + label {\n\tborder-color: currentColor;\n\tbackground: color-mix(in oklab, currentColor 15%, transparent);\n\tfont-weight: 600;\n}\n#dialog-signature .mini-selector:focus-visible + label { outline: 2px solid var(--ring); outline-offset: 1px; }\n\n/* ============================================================================\n NAVIGATION\n ========================================================================= */\n\n#topbar {\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tbackdrop-filter: blur(8px);\n\tborder-bottom: 1px solid var(--border);\n}\n\n#topbar #logo a { font-size: var(--fs-xl); }\n#version { font-size: var(--fs-xs); color: var(--muted-foreground); }\n#legal { font-size: var(--fs-xs); color: var(--muted-foreground); }\n\n/* Settings sections. The accordion is gone -- see options-dialog.js. These\n are the same

/
pairs, laid out flat in a scrolling pane so every\n setting is visible and scannable. */\n.settings-sections { display: flex; flex-direction: column; }\n\n.settings-sections > h3 {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 1;\n\tmargin: var(--space-4) 0 var(--space-2);\n\tpadding: var(--space-2) 0;\n\tbackground: var(--card);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n}\n.settings-sections > h3:first-child { margin-top: 0; }\n.settings-sections > h3 a { color: inherit; font-weight: inherit; text-decoration: none; cursor: default; }\n\n.settings-sections > div { padding: 0 0 var(--space-3); }\n\n#dialog-options { max-height: 62vh; overflow-y: auto; }\n\n.optionsTable tr { height: auto; }\n.optionsTable th, .optionsTable td { padding: var(--space-2); font-size: var(--fs-base); }\n.optionsTable th { color: var(--muted-foreground); font-weight: 500; }\ntr.line td, tr.line th { border-bottom: 1px solid var(--border); }\n\n/* jQuery UI's state classes carry the old theme's gradients wherever they land. */\n.ui-state-default, .ui-state-hover, .ui-state-active, .ui-state-focus,\n.ui-widget-header, .ui-widget-content {\n\tbackground-image: none;\n\ttext-shadow: none;\n}\n\n/* ============================================================================\n DIALOG SIZING\n Settings holds two-column option rows and was squeezed into the default\n dialog width, which is why its labels wrapped and its controls crowded.\n ========================================================================= */\n\n.ui-dialog:has(#dialog-options) { width: min(46rem, calc(100vw - 2rem)) !important; }\n#dialog-options { width: auto !important; }\n\n/* Option rows: label left, control right, on one rhythm. */\n#dialog-options .optionsTable { width: 100%; table-layout: fixed; }\n#dialog-options .optionsTable th {\n\twidth: 55%;\n\ttext-align: left;\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-base);\n\tvertical-align: middle;\n}\n#dialog-options .optionsTable td { text-align: right; vertical-align: middle; }\n#dialog-options input[type=\"text\"],\n#dialog-options input[type=\"password\"],\n#dialog-options select {\n\twidth: 100%;\n\tmax-width: 16rem;\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n}\n#dialog-options div.ui-slider { width: calc(100% - 3rem); }\n\n/* Yes/No and other radio pairs read as a segmented control, like the map's\n life and mass. */\n#dialog-options input[type=\"radio\"] { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-options input[type=\"radio\"] + label {\n\tdisplay: inline-block;\n\tpadding: 2px var(--space-3);\n\tmargin-left: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tvertical-align: middle;\n}\n#dialog-options input[type=\"radio\"] + label:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n#dialog-options input[type=\"radio\"]:checked + label {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 12%, transparent);\n\tfont-weight: 600;\n}\n#dialog-options input[type=\"radio\"]:focus-visible + label {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n}\n\n/* ============================================================================\n LEGIBILITY CORRECTIONS\n\n Not rebranding: these are data colours and they keep their meaning. They are\n lightened only enough to clear 4.5:1 against the card ground, measured. The\n originals were written for a near-black page and the card surface is lighter\n than that, so blue text in particular was failing badly -- the \"Blue loot\n buyer\" line sat at 2.63:1.\n ========================================================================= */\n\n:root {\n\t--data-info: #47a2fe; /* was #4399f0 4.18:1 -> 4.66:1 */\n\t--data-loot-blue: #9090ff; /* was #6060f0 2.63:1 -> 4.52:1 */\n\t--data-link: #4ca1ea; /* was #428bca 3.43:1 -> 4.50:1 */\n\t--data-class-sky: #3ca0ff; /* was #3388dd 3.38:1 -> 4.54:1 */\n\t--chart-1: #4e9dff; /* was #3366cc 2.32:1 -> 4.50:1 */\n}\n\n/* In the light theme the same hues need darkening instead. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--data-info: #1668c4;\n\t\t--data-loot-blue: #3b3bc9;\n\t\t--data-link: #1a6aa8;\n\t\t--data-class-sky: #1466a8;\n\t\t--chart-1: #1f4f9e;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--data-info: #1668c4;\n\t--data-loot-blue: #3b3bc9;\n\t--data-link: #1a6aa8;\n\t--data-class-sky: #1466a8;\n\t--chart-1: #1f4f9e;\n}\n\n/* ============================================================================\n HOVER / ACTIVE STATES\n\n forms.css styles these through `.ui-button:hover:not([disabled])` and\n `input[type=\"button\"]:not([disabled]):hover` -- three selectors deep, which\n outranks a plain :hover. That is why the raised-bevel gradient survived on\n hover and press after the rest was flattened.\n ========================================================================= */\n\nbutton:hover, button:active,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover,\ninput[type=\"button\"]:active, input[type=\"submit\"]:active,\ninput[type=\"button\"]:not([disabled]):hover,\ninput[type=\"submit\"]:not([disabled]):hover,\ninput[type=\"button\"]:not([disabled]):active,\ninput[type=\"submit\"]:not([disabled]):active,\n.ui-button:hover, .ui-button:active,\n.ui-button:hover:not([disabled]), .ui-button:active:not([disabled]),\n.ui-button.ui-widget:hover:not([disabled]),\n.ui-button.ui-widget:active:not([disabled]),\n.ui-state-hover, .ui-state-active, .ui-state-focus,\na.ui-button:hover, a.ui-button:active {\n\tbackground-image: none !important;\n\tbox-shadow: none !important;\n\ttext-shadow: none !important;\n}\n\n/* ============================================================================\n GATE CHIPS\n The gate list was comma-separated prose. Each gate is a destination you can\n click, so it reads as a chip like everything else that is a discrete thing.\n ========================================================================= */\n\n.gate-list {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: var(--space-1);\n\tmargin: 0;\n}\n\n.gate-list > b {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 3px;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tline-height: 1.7;\n\twhite-space: nowrap;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n.gate-chip:hover { border-color: var(--border-strong); background: var(--accent-surface); }\n.gate-chip a { font-weight: 500; }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* The last two gradients in the app: a fade on the account dropdown and the\n chain zoom-reset button. Both are bevel-era leftovers. */\n#content.dialog-like,\n#chain-zoom-reset {\n\tbackground-image: none !important;\n}\n#content.dialog-like { background-color: var(--popover); }\n\n/* ============================================================================\n DIALOG SCROLLING\n\n jQuery UI sizes a dialog to its content, so a tall one grows past the\n viewport and the page scrolls behind it instead of the dialog scrolling\n inside itself. Settings was 1476px tall in a 900px window.\n\n The dialog becomes a flex column capped at the viewport: title bar and\n button pane hold their size, the content takes the remaining space and\n scrolls. Nothing else has to know its height.\n ========================================================================= */\n\n.ui-dialog {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmax-height: calc(100vh - 2rem);\n\tmax-width: calc(100vw - 2rem);\n\tbox-sizing: border-box;\n}\n\n.ui-dialog > .ui-dialog-titlebar,\n.ui-dialog > .ui-dialog-buttonpane { flex: 0 0 auto; }\n\n.ui-dialog > .ui-dialog-content {\n\tflex: 1 1 auto;\n\tmin-height: 0; /* without this a flex child refuses to shrink */\n\toverflow-y: auto;\n\tmax-height: none !important;\n\theight: auto !important;\n}\n\n/* Settings no longer needs its own cap now the dialog handles it. */\n#dialog-options { max-height: none; }\n\n/* The page itself must paint a ground. body was transparent, so anything that\n scrolled past #wrapper -- an over-tall dialog, the footer -- showed the\n browser's white through the app. */\nhtml, body {\n\tbackground-color: var(--background);\n}\n\n/* ============================================================================\n ROUTE SQUARES AND THE BLUE-LOOT LINE\n\n base.css:119 sets `.blue-loot, .blue-loot .hisec { color: loot-blue }`,\n which painted the whole line blue AND overrode the security colour on its\n route squares -- so the one place the squares carry meaning was the one\n place they did not show it.\n\n The line reads as normal text; each square keeps its own security colour and\n is big enough to actually read.\n ========================================================================= */\n\n.blue-loot,\n.sys-extra,\n.sys-extra .blue-loot {\n\tcolor: var(--foreground);\n}\n\n/* Only the destination is a link. */\n.sys-extra a, .blue-loot a { color: var(--primary); }\n\n/* Security colours win on the squares. */\n.blue-loot .hisec { color: var(--data-good) !important; }\n.blue-loot .lowsec { color: var(--data-warn) !important; }\n.blue-loot .nullsec{ color: var(--data-critical) !important; }\n\n.path span,\n.blue-loot .path span {\n\tfont-size: 1.35em;\n\tline-height: 1;\n\tletter-spacing: .06em;\n\tcursor: pointer;\n}\n.path span:hover { filter: brightness(1.35); }\n\n/* ============================================================================\n CHIPS — filled, not outlined\n\n Outlined chips in a colour put the meaning in a 1px border and left the\n label low-contrast. Filled reads at a glance and the label sits on white.\n ========================================================================= */\n\n.sys-meta .chip,\n.gate-chip,\n.sig-chip,\n#sigTable td .stable,\n#sigTable td .critical,\n#sigTable td .destab,\n.chip-pill {\n\tborder: 1px solid transparent;\n\tcolor: #fff;\n\tfont-weight: 600;\n}\n\n/* Neutral facts keep a quiet fill rather than shouting a colour. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-color: var(--border);\n}\n.gate-chip:hover, .sig-chip:hover {\n\tbackground: var(--accent-surface);\n\tborder-color: var(--border-strong);\n}\n\n/* State chips carry their colour as fill. */\n#sigTable td .stable { background: var(--data-good); border-color: var(--data-good); }\n#sigTable td .destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#sigTable td .critical { background: var(--data-critical); border-color: var(--data-critical); }\n\n/* Selected filter and option chips fill with the accent. */\n.sig-chip.on {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tbackground: var(--data-good); border-color: var(--data-good); color: #1b1b1b;\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tbackground: var(--data-info); border-color: var(--data-info); color: #1b1b1b;\n}\n\n#dialog-signature .mini-selector:checked + label,\n#dialog-options input[type=\"radio\"]:checked + label {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n\tfont-weight: 600;\n}\n\n/* Life and mass keep their own meaning when selected. */\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n\n/* ============================================================================\n NAMED COLOURS\n\n The original token extraction swept hex and rgb() literals and missed CSS\n NAMED colours entirely -- fifteen of them survived, including the green mask\n star in the topbar. Mapped onto the token set here.\n ========================================================================= */\n\nbody .mask .corporate { color: var(--foreground); }\n.source_bar.corporate { background: var(--data-good); }\n.source_bar.alliance { background: var(--data-alliance); }\n#chainMap .statics span { background: var(--muted); }\n#chainMap .gate { border-color: var(--border-strong); }\n.jBox-container { color: var(--foreground); }\n\n/* ============================================================================\n TOPBAR\n\n TQ and the mask star were carrying data colours -- green for \"server is up\",\n green for \"corporate mask\". Neither is a reading you act on, and colour in\n the header competes with the map, where colour does mean something. Both go\n white; the count itself is the information.\n ========================================================================= */\n\n#topbar #serverStatus,\n#topbar #serverStatus .stable,\n#topbar #serverStatus .critical,\n#topbar #mask,\n#topbar #mask *,\n#topbar .mask .corporate,\n#topbar .mask .alliance,\n#topbar .mask .character,\n#topbar .mask .global {\n\tcolor: var(--foreground) !important;\n}\n\n/* A genuinely down server is worth the red, though. */\n#topbar #serverStatus.is-down,\n#topbar #serverStatus.is-down .critical {\n\tcolor: var(--data-critical) !important;\n}\n\n/* ============================================================================\n ROUTE LINES\n The squares belong beside the sentence they describe, not wrapped under it.\n ========================================================================= */\n\n.sys-extra > * ,\n.sys-extra {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tgap: .35em;\n}\n\n.sys-extra .path {\n\tdisplay: inline-flex;\n\talign-items: baseline;\n\tgap: .1em;\n\tmargin-left: .2em;\n}\n","/* Panel structure.\n Appearance now comes from the design system (_override-1-system.css); what\n remains here is layout the system cannot express generically. */\n\n/* The controls bar mixes floated children with the flow, so the floated group\n has to be pulled back into the flex line rather than escaping it. */\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n}\n\n/* A hidden panel leaves its grid cell empty rather than reflowing the others.\n Gridster positions every widget absolutely from saved coordinates, so\n collapsing the gap would mean rewriting them and discarding the arrangement\n the user made. Bring it back from the palette. */\n.gridWidget.panel-hidden { display: none; }\n","/* ============================================================================\n SIGNATURE DIALOG — form layout\n\n The dialog kept its original markup (.row > .label + controls) with new\n paint on top, and it showed: bold oversized labels competing with the\n values, no field affordance at all, ragged alignment, and controls landing\n on the wrong rows.\n\n This lays a real form grid over that markup. Every field the dialog had, it\n still has, in the same order.\n ========================================================================= */\n\n#dialog-signature .ui-dialog-content,\n#dialog-signature {\n\tfont-size: var(--fs-base);\n}\n\n/* One row = quiet label in a fixed column, controls flowing after it. */\n#dialog-signature .row {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-2);\n\tmargin: 0 0 var(--space-3) 0;\n\tline-height: 1.4;\n}\n\n/* Labels are wayfinding, not content: small, quiet, consistent width so every\n value starts on the same vertical line. */\n#dialog-signature .row > .label:first-child {\n\tflex: 0 0 5.5rem;\n\ttext-align: right;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .02em;\n}\n\n/* The separator between the two id halves must not take a label column. */\n#dialog-signature .row > .label:not(:first-child) {\n\tflex: 0 0 auto;\n\tcolor: var(--muted-foreground);\n\tfont-weight: 400;\n}\n\n/* ---- fields look like fields --------------------------------------------\n The system layer keeps controls flat so table rows read as data. A form is\n the opposite case: here the whole point is showing what can be edited. */\n\n#dialog-signature input[type=\"text\"],\n#dialog-signature input[type=\"password\"],\n#dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tmin-height: 1.9rem;\n}\n\n#dialog-signature input[type=\"text\"]:hover,\n#dialog-signature select:hover { border-color: var(--border-strong); }\n\n#dialog-signature input[type=\"text\"]:focus,\n#dialog-signature select:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--background);\n}\n\n/* Values sized by what they hold, not by a stray `size` attribute. */\n#dialog-signature .signatureID { width: 3.6rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .wormholeType { width: 4.4rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .leadsTo { width: 12rem; }\n#dialog-signature [name=\"signatureName\"],\n#dialog-signature [name=\"wormholeName\"] { flex: 1 1 12rem; min-width: 8rem; }\n\n/* Unresolved required fields read red at a glance. Applied by\n signature-dialog-keyboard.js: the id always, plus type and destination for\n a wormhole -- the fields the chain is drawn from. */\n#dialog-signature .sig-missing,\n#dialog-signature .sig-missing:focus {\n\tborder-color: var(--destructive);\n\tbox-shadow: 0 0 0 1px var(--destructive);\n}\n\n/* ---- lifetime reads as one control, not three loose numbers ------------- */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tfont-size: var(--fs-base);\n}\n#dialog-signature .duration-picker input {\n\twidth: 2.4rem;\n\ttext-align: center;\n}\n#dialog-signature .duration-picker span,\n#dialog-signature .duration-picker label {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- section headings ---------------------------------------------------\n Were rotated 90 degrees in a left gutter. One divider weight, one style. */\n#dialog-signature .sideLabel {\n\tposition: static;\n\ttransform: none;\n\tdisplay: block;\n\twidth: auto;\n\tmargin: var(--space-4) 0 var(--space-3);\n\tpadding-bottom: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n}\n\n#dialog-signature .side { padding-left: 0; }\n#dialog-signature hr { display: none; } /* the second, heavier divider */\n\n/* ---- quick-select chips ------------------------------------------------\n Were wrapping into a ragged second line. One wrap-safe row, aligned under\n the value column rather than starting at the dialog edge. */\n#dialog-signature .quickSelectBar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tflex: 1 1 100%;\n\tmargin-left: 6rem; /* clears the label column */\n\tmargin-top: calc(var(--space-1) * -1);\n}\n\n#dialog-signature .quickSelectBar button {\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tpadding: 1px var(--space-2);\n\tmin-width: 0;\n\tmin-height: 0;\n\tfont-size: var(--fs-xs);\n\tline-height: 1.6;\n}\n\n#dialog-signature .quickSelectBar button:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n\n/* The bare \"|\" divider inside the bar. */\n#dialog-signature .quickSelectBar { align-items: center; }\n\n/* ---- the wormhole-type shortcut button beside the type field ----------- */\n#dialog-signature .wormholeTypeQuickSelect button {\n\tfont-size: var(--fs-xs);\n\tpadding: 1px var(--space-2);\n\tmin-height: 0;\n}\n\n/* ---- width -------------------------------------------------------------\n The dialog was sized for the old cramped layout, so the type selector wrapped\n off the ID row and the class chips broke onto a ragged second line. */\n.ui-dialog:has(#dialog-signature) {\n\twidth: min(30rem, calc(100vw - 2rem)) !important;\n}\n#dialog-signature { width: auto !important; }\n\n/* ID row holds both id halves and the signature type together -- they are one\n statement (\"this signature, of this kind\"), so they belong on one line. */\n#dialog-signature .row:first-of-type { flex-wrap: nowrap; }\n#dialog-signature #signatureType { margin-left: auto; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 8rem; }\n\n/* Class chips: one tidy row under the destination field. */\n#dialog-signature .quickSelectBar {\n\tmargin-left: 6rem;\n\tgap: 3px;\n}\n#dialog-signature .quickSelectBar button {\n\tmin-width: 2rem;\n\ttext-align: center;\n\tfont-size: var(--fs-xs);\n\tpadding: 2px 0;\n}\n\n/* Lifetime: the three numbers are one value, so box them as one control\n rather than leaving them adrift in the row. */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n}\n#dialog-signature .duration-picker input {\n\tborder: 0;\n\tbackground: transparent;\n\tmin-height: 0;\n\tpadding: 0;\n\twidth: 2rem;\n}\n","/* ============================================================================\n RESPONSIVE — Track 6\n\n Scope is deliberately asymmetric, per the corp's actual use:\n\n READ band phones. Check a chain, see what is scanned. No editing\n chrome. width < 768px OR height < 600px.\n EDIT band tablets. Update signatures, drive the map. Touch-sized\n targets. width >= 768px AND height >= 600px.\n DESKTOP width >= 1280px AND a fine pointer.\n\n The height clause is what catches a landscape phone: an iPhone 15 turned\n sideways is 852px wide -- past any sensible tablet breakpoint -- but only\n 393px tall, with no room for the editing layout. Width alone gets this\n wrong.\n\n The fine-pointer clause on desktop is what keeps a landscape iPad Pro 11\"\n (~1194px) in the EDIT band rather than handing it the dense mouse layout it\n cannot hit accurately.\n\n Density is width-driven; control sizing is pointer-driven. They are separate\n questions: a 1000px window on a desktop wants the multi-panel layout but not\n 44px touch targets.\n ========================================================================= */\n\n/* ── READ: stack the panels ──────────────────────────────────────────────\n Gridster positions every widget absolutely from saved coordinates. Below\n the breakpoint that layout is abandoned entirely and the panels return to\n document flow -- which is the reflow the fixed grid cannot do. The saved\n coordinates are untouched, so rotating back restores the arrangement. */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t#wrapper { overflow-x: hidden; }\n\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmin-height: 12rem;\n\t\tmargin: 0 0 var(--space-3) 0 !important;\n\t\toverflow: visible;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t/* Chain map wants the most room; signatures next. */\n\t#chainWidget .content { min-height: 55vh; }\n\t#notesWidget .content { min-height: 14rem; }\n\n\t/* Resize handles are meaningless without a grid. */\n\t.grid-resize { display: none !important; }\n\n\t/* Editing chrome is out of scope on a phone: this band is for reading. */\n\t#signaturesWidget #add-signature,\n\t#signaturesWidget #edit-signature,\n\t#signaturesWidget #delete-signature,\n\t#signaturesWidget #undo,\n\t#signaturesWidget #redo,\n\t#notesWidget #add-comment,\n\t#layout {\n\t\tdisplay: none !important;\n\t}\n\n\t/* The topbar carries a lot for 393px. Keep identity, time and search. */\n\t#serverStatus,\n\t#topbar h3:nth-of-type(2) { display: none; }\n\n\t#topbar { position: sticky; }\n\n\t/* Signature table: drop the columns that only matter while editing. */\n\t#sigTable th:nth-child(n+5),\n\t#sigTable td:nth-child(n+5) { display: none; }\n}\n\n/* ── EDIT: tablets ───────────────────────────────────────────────────────\n Two columns rather than four panels on a fixed grid; the arrangement a\n 1194px tablet can actually use. */\n\n@media (min-width: 768px) and (max-width: 959px) and (min-height: 600px) {\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t}\n\n\t.gridster > ul {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t\tgap: var(--space-3);\n\t\tpadding: 0 var(--space-2);\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t#infoWidget { min-height: 34vh; }\n\t#signaturesWidget { min-height: 34vh; }\n\t#notesWidget { min-height: 26vh; }\n\n\t/* The chain is the reason you are here; give it the full width. */\n\t#chainWidget {\n\t\tgrid-column: 1 / -1;\n\t\tmin-height: 46vh;\n\t}\n\n\t.grid-resize { display: none !important; }\n}\n\n/* ── Touch sizing, independent of width ──────────────────────────────────\n Driven by pointer, not viewport, because they are different questions. A\n coarse pointer needs a 44px target whatever the screen is. */\n\n@media (pointer: coarse) {\n\t.controls i,\n\t.controls span.control,\n\t.panel-hide,\n\t#topbar i,\n\t.quickSelectBar button {\n\t\tmin-width: 44px;\n\t\tmin-height: 44px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\tbutton, .ui-button, input[type=\"button\"], input[type=\"submit\"] {\n\t\tmin-height: 44px;\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\tinput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\n\tselect, textarea {\n\t\tmin-height: 40px;\n\t\tfont-size: 1.15rem; /* keeps iOS from zooming the field on focus */\n\t}\n\n\t#sigTable td { padding: var(--space-3) var(--space-2); }\n\n\t#dialog-signature .mini-selector + label {\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\t/* Hover styling is misleading on touch -- it sticks after a tap. */\n\t#sigTable tbody tr:hover > td { background-color: transparent; }\n}\n\n/* Dialogs must not exceed a small viewport. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.ui-dialog {\n\t\tmax-width: calc(100vw - var(--space-4)) !important;\n\t\tmax-height: calc(100vh - var(--space-4)) !important;\n\t\tleft: var(--space-2) !important;\n\t\toverflow: auto;\n\t}\n\t.ui-dialog .ui-dialog-content { max-height: 60vh; overflow: auto; }\n}\n\n/* Respect the OS setting; the map already animates a great deal. */\n@media (prefers-reduced-motion: reduce) {\n\t*, *::before, *::after {\n\t\tanimation-duration: .001ms !important;\n\t\tanimation-iteration-count: 1 !important;\n\t\ttransition-duration: .001ms !important;\n\t}\n}\n\n/* ── Touch on the chain map ──────────────────────────────────────────────\n #chainParent is a scroll container driven by dragscroll.js, which is a\n mouse-only library (mousedown/mousemove). Rather than port it, let the\n browser do what it is already good at: native touch panning and pinch-zoom\n on the scroll container. dragscroll keeps working for mice untouched.\n\n touch-action must be set explicitly because the map suppresses user-select\n and jQuery UI's draggable calls preventDefault on pointer events, which\n otherwise kills native scrolling on touch. */\n\n#chainParent {\n\ttouch-action: pan-x pan-y pinch-zoom;\n\t-webkit-overflow-scrolling: touch;\n\toverscroll-behavior: contain;\n}\n\n/* Nodes stay draggable at tablet width and above; on a phone the map is for\n reading, so a drag should pan the map rather than move somebody's system. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainMap .system,\n\t#chainMap [class*=\"system\"] {\n\t\ttouch-action: inherit;\n\t}\n}\n","/* ============================================================================\n SYSTEM PANEL\n\n Was two 50% floats with a
: the system identity on the left,\n and \"Blue loot buyer\" stranded in a right-hand column it did not belong in.\n Statics sat last, below the links, so the rows that matter most needed\n scrolling to reach.\n\n Rebuilt as a single column in reading order -- identity, what it connects\n to, then the supporting detail -- with the metadata as chips.\n ========================================================================= */\n\n.sys-panel {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--space-3);\n\tpadding: var(--space-3);\n\toverflow-y: auto;\n\theight: 100%;\n\tbox-sizing: border-box;\n}\n\n/* ---- identity ----------------------------------------------------------- */\n.sys-head { display: flex; flex-direction: column; gap: var(--space-2); }\n\n.sys-panel .sys-name {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tfont-size: var(--fs-lg);\n\tfont-weight: 600;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\tletter-spacing: -.01em;\n}\n\n/* Security / region / faction as chips: three small facts, read at a glance,\n in the same register as the life and mass chips elsewhere. */\n.sys-meta { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sys-meta .chip {\n\tmargin: 0;\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n\twhite-space: nowrap;\n}\n/* An empty chip should not draw a pill. */\n.sys-meta .chip:empty { display: none; }\n/* Security colouring comes from the data tokens already on the element. */\n.sys-meta #infoSecurity { color: inherit; }\n\n/* ---- what it connects to, promoted above the supporting detail ---------- */\n.sys-statics {\n\tfont-size: var(--fs-sm);\n\tline-height: 1.7;\n\tcolor: var(--card-foreground);\n}\n.sys-statics:empty { display: none; }\n\n/* ---- blue-loot buyer and other route notes ------------------------------\n Was floated into a right-hand column of its own. It is a note about this\n system, so it reads inline with the rest. */\n.sys-extra {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n\tline-height: 1.8;\n}\n.sys-extra:empty { display: none; }\n\n/* ---- graph -------------------------------------------------------------- */\n#activityGraph { min-height: 120px; }\n\n/* Range switch as a segmented control rather than \"Week - 48Hour - 24Hour\". */\n.sys-range {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tjustify-content: center;\n}\n.sys-range a {\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\ttext-decoration: none;\n}\n.sys-range a:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n}\n\n/* ---- external links ----------------------------------------------------- */\n.sys-links {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-3);\n\tjustify-content: center;\n\tpadding-top: var(--space-1);\n\tborder-top: 1px solid var(--border);\n\tfont-size: var(--fs-sm);\n}\n.sys-links a { color: var(--muted-foreground); font-weight: 500; }\n.sys-links a:hover { color: var(--primary); }\n","/* ============================================================================\n CHAIN MAP + SIGNATURE TABLE\n\n The two surfaces the tool is actually used through, and the last places\n carrying the old look.\n\n The map nodes kept their bevels because they are built from VENDOR-PREFIXED\n gradients (-moz-linear-gradient, -webkit-gradient), which the earlier sweep\n for `linear-gradient` did not match.\n ========================================================================= */\n\n/* ---- copy affordance ---------------------------------------------------\n tripwire.css set `content: '\\01F4C4\\00FE0E'` -- the page-facing-up emoji\n with the text-presentation variation selector, asking for a monochrome\n glyph most fonts only ship in colour. The result was fallback tofu, which\n is the \"broken document\" after the system name. There is no copy glyph in\n the icon font, so it is drawn: two offset sheets, the usual copy sign. */\n.copy::after { content: none; }\n\n.copy {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: -0.1em;\n\topacity: .55;\n\ttransition: opacity .12s ease;\n}\n.copy:hover, .copy:focus-visible { opacity: 1; }\n\n.copy::before,\n.copy::after {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: .62em;\n\theight: .78em;\n\tborder: 1px solid currentColor;\n\tborder-radius: 2px;\n}\n.copy::before { left: 0; top: .22em; }\n.copy::after { left: .3em; top: 0; background: var(--card); }\n\n/* ============================================================================\n CHAIN MAP\n ========================================================================= */\n\n/* Flat fills. The class colour moves to the border, where it reads as a label\n rather than as a lit surface, and the node ground stays consistent so the\n map is one plane instead of a tray of buttons. */\n#chainMap .currentNode > div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node,\n#chainMap div.loop,\n#chainMap div.node {\n\tbackground-image: none !important;\n\tbox-shadow: none;\n\tborder-radius: var(--radius-md);\n\tborder-width: 1px;\n\tborder-style: solid;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\n#chainMap div.node { background-color: var(--card); }\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 22%, var(--card)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 22%, var(--card)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 22%, var(--card)); }\n#chainMap div.loop { background-color: color-mix(in oklab, var(--data-class-void) 40%, var(--card)); }\n\n/* Where you are is the one thing that should be unmistakable. */\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 18%, var(--card));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 1px var(--primary);\n}\n\n#chainMap div.node:hover { border-color: var(--border-strong); }\n\n/* Badges were 9px monospace with a 6px glow. Same chip language as everywhere\n else, so a count on the map reads like a count in the table. */\n#chainMap span.badge {\n\tbackground-color: var(--muted);\n\tcolor: var(--muted-foreground);\n\tbox-shadow: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.5;\n\tpadding: 0 5px;\n\tmin-width: 1.1em;\n}\n\n#chainMap .nodeType {\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n}\n\n#chainMap .statics span {\n\tborder-radius: 999px;\n\tpadding: 0 5px;\n\tfont-size: var(--fs-xs);\n}\n\n/* ============================================================================\n SIGNATURE TABLE\n ========================================================================= */\n\n#sigTableWrapper { padding: 0; }\n\n#sigTable th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }\n#sigTable th.sortable:hover { color: var(--foreground); }\n\n/* The sort arrow was an empty -- an icon element with no\n icon. Draw the state instead, and only on the column actually sorted. */\n#sigTable th.sortable i[data-icon=\"\"] { display: none; }\n\n#sigTable th.sortable::after {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: 0; height: 0;\n\tmargin-left: var(--space-1);\n\tborder-left: 3px solid transparent;\n\tborder-right: 3px solid transparent;\n\topacity: 0;\n\ttransition: opacity .12s ease;\n}\n#sigTable th.tablesorter-headerAsc::after {\n\tborder-bottom: 4px solid var(--primary);\n\topacity: 1;\n}\n#sigTable th.tablesorter-headerDesc::after {\n\tborder-top: 4px solid var(--primary);\n\topacity: 1;\n}\n\n/* Signature type as a chip, so the group reads at a glance down the column\n the way life and mass already do. */\n#sigTable td.sigType > span,\n#sigTable td .sigTypeName {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n}\n\n/* Age is context, not content. */\n#sigTable td.sigAge { color: var(--muted-foreground); font-variant-numeric: tabular-nums; }\n\n/* Numeric-ish columns line up. */\n#sigTable td.sigID { font-variant-numeric: tabular-nums; letter-spacing: .03em; }\n\n/* An empty table should say so rather than being a blank rectangle. */\n#sigTable tbody:empty::after,\n#sigTableWrapper > .sig-empty {\n\tcontent: \"No signatures in this system\";\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n}\n\n/* ============================================================================\n SIGNATURE FILTER BAR\n After Aperture's SignatureModule: group chips, a scan-state cycle, and live\n counts. Scanning a long list down one column is the whole job, so the bar\n stays pinned and only the table scrolls.\n ========================================================================= */\n\n.sig-filter {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tpadding: var(--space-2) var(--space-2);\n\tborder-bottom: 1px solid var(--border);\n}\n\n.sig-filter-groups { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sig-chip {\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.6;\n\tpadding: 0 var(--space-2);\n\tmin-height: 0;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n.sig-chip:hover { border-color: var(--border-strong); background: var(--muted); color: var(--foreground); }\n\n/* Active filters stand out without the harshness of a solid fill. */\n.sig-chip.on {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 14%, transparent);\n}\n\n/* The scan cycle earns its own colours: scanned reads as settled, unscanned as\n outstanding work. */\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tborder-color: var(--data-good); color: var(--data-good);\n\tbackground: color-mix(in oklab, var(--data-good) 14%, transparent);\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tborder-color: var(--data-info); color: var(--data-info);\n\tbackground: color-mix(in oklab, var(--data-info) 14%, transparent);\n}\n\n.sig-stats {\n\tmargin-left: auto;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\twhite-space: nowrap;\n\tfont-variant-numeric: tabular-nums;\n}\n\n#sigTable tbody tr.sig-filtered { display: none; }\n\n/* Unscanned rows are outstanding work; mark the id rather than shouting the\n whole row, the way Aperture marks the still-empty required cells. */\n#sigTable tbody tr.sig-unscanned > td:first-child {\n\tbox-shadow: inset 2px 0 0 var(--data-info);\n}\n\n/* Site-safety glyph, derived from the group. A combat site is somewhere rats\n can shoot you; an exploration site is not; a wormhole is neither. */\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before,\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: .5em; height: .5em;\n\tmargin-right: .45em;\n\tborder-radius: 50%;\n\tvertical-align: .05em;\n}\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before { background: var(--data-critical); }\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before { background: var(--data-good); }\n\n/* Chip labels sit on a fill now, so they take the full-strength text colour --\n muted-on-muted was the low-contrast case that made these hard to read. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tcolor: var(--foreground);\n}\n","/* ============================================================================\n DESKTOP LAYOUT\n\n Everything below fixes one root cause: the desktop layout was gridster's\n fixed pixel grid, positioned absolutely from saved coordinates. It did not\n use the window it was in -- at 1600x1000 the panels stopped at 1250x440 and\n the rest was raw background plus footer, which read as a page that had not\n finished loading.\n\n The grid now fills the viewport at every width. The panel registry still\n controls what is shown; what is gone is drag-and-resize, which only existed\n to work around a layout that never fit in the first place.\n ========================================================================= */\n\n/* Desktop only. Below 1280px the READ and EDIT bands in\n _override-5-responsive.css own the layout: panels return to document flow\n and the page scrolls. These rules used to apply at every width, which put\n three columns on a 375px phone with two of them off the right edge -- the\n responsive file sorts earlier and could not win. The guard is what the\n earlier file was always assuming. */\n@media (min-width: 960px) {\n\thtml, body { height: 100%; overflow: hidden; }\n\n\t#wrapper {\n\t\theight: 100vh;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#inner-wrapper {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#topbar { flex: 0 0 auto; position: static; }\n\n\t.gridster {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tvisibility: visible !important;\n\t\tpadding: var(--space-2);\n\t\tbox-sizing: border-box;\n\t}\n\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: 100% !important;\n\t\tmargin: 0 !important;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\n\t\tdisplay: grid;\n\t\tgap: var(--space-2);\n\t\t/* Weighted by how much each panel earns: signatures widest, notes least. */\n\t\tgrid-template-columns: minmax(260px, 1fr) minmax(340px, 1.35fr) minmax(220px, 0.85fr);\n\t\t/* The chain is the reason the tool exists, so it takes what is left. */\n\t\tgrid-template-rows: minmax(180px, 32vh) 1fr;\n\t}\n}\n\n.gridWidget {\n\tposition: static !important;\n\twidth: auto !important;\n\theight: auto !important;\n\tmin-height: 0;\n\tmargin: 0 !important;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\n.gridWidget > .controls {\n\tposition: static !important;\n\tflex: 0 0 auto;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n}\n\n.gridWidget > .content {\n\tposition: static !important;\n\tflex: 1 1 auto;\n\tmin-height: 0;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n\toverflow: auto;\n}\n\n#chainWidget { grid-column: 1 / -1; }\n\n/* Resize handles belong to a grid that no longer exists. */\n.grid-resize { display: none !important; }\n\n/* A hidden panel should give its space back now the grid can reflow. */\n.gridWidget.panel-hidden { display: none !important; }\n\n/* ============================================================================\n BACKGROUND\n\n The image was the brightest, highest-contrast thing on screen, showing\n through translucent panels and pulling the eye off the data every time. It\n stays -- it is the corp's ship -- but well behind a wash, and the panels go\n opaque so nothing reads through them.\n ========================================================================= */\n\n#wrapper::before {\n\tcontent: \"\";\n\tposition: fixed;\n\tinset: 0;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\tcolor-mix(in oklab, var(--background) 88%, transparent),\n\t\tcolor-mix(in oklab, var(--background) 94%, transparent)\n\t);\n\tpointer-events: none;\n\tz-index: 0;\n}\n\n#inner-wrapper { position: relative; z-index: 1; }\n\n.gridWidget {\n\tbackground-color: var(--card); /* opaque: nothing reads through a panel */\n}\n\n/* ============================================================================\n FOOTER\n Donation plea, a yellow button and a wall of CCP legalese, centred on the\n background. It belongs on the landing page, not on the instrument.\n ========================================================================= */\n\n#footer { display: none !important; }\n\n/* ============================================================================\n TOPBAR\n Was a left cluster and a right cluster with ~1000px of nothing between.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: 0 var(--space-3);\n\theight: auto;\n\tmin-height: 2.6rem;\n\tline-height: normal;\n}\n#topbar > .align-left { display: flex; align-items: center; gap: var(--space-3); flex: 1 1 auto; }\n#topbar > .align-right { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; padding-right: 0; }\n#topbar h1, #topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* ============================================================================\n DENSITY AND EMPHASIS\n Everything was the same mid-grey, so nothing said where to look.\n ========================================================================= */\n\n/* The chain panel is the subject; give its header the accent rule. */\n#chainWidget > .controls { border-bottom-color: color-mix(in oklab, var(--primary) 45%, var(--border)); }\n#chainWidget .panel-title { color: var(--primary); }\n\n/* Gate chips should not strand a single item on its own line. */\n.gate-list { row-gap: var(--space-1); }\n.gate-chip { flex: 0 0 auto; }\n\n/* Panel headers all one height, whatever they contain. */\n.gridWidget > .controls { min-height: 2.1rem; }\n\n/* The activity graph earns its space or gives it up. */\n#activityGraph { min-height: 0; }\n#activityGraph.is-sparse { height: 84px !important; opacity: .75; }\n#activityGraphControls { margin-top: var(--space-1); }\n\n/* gridster.css sets `.gridster .gs-w { background: var(--scrim-60) }` -- two\n classes, which outranks a plain .gridWidget. That translucent scrim is what\n let the background image read straight through every panel. */\n.gridster .gs-w,\n.gridster .gridWidget {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n}\n\n/* With every panel opaque the background image is hidden completely, which\n throws away the one piece of brand on the page. The chain panel is the one\n surface with real empty space, so it alone stays slightly translucent -- the\n ship reads faintly behind the map and nowhere near the tables. */\n.gridster .gs-w#chainWidget {\n\tbackground-color: color-mix(in oklab, var(--card) 88%, transparent);\n}\n\n/* The map itself sits on nothing, so the node is what stands out. */\n#chainWidget > .content { background: transparent; }\n\n/* ============================================================================\n PROPORTION, WITH REAL DATA IN FRONT OF ME\n\n A one-signature system flattered the 32vh top row. With a dozen signatures\n the table shows four and clips, while the chain holds 60% of the screen for\n a single node. Signatures are what you read during a scan, so the top row\n grows and the chain takes what is left rather than the reverse.\n ========================================================================= */\n\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ============================================================================\n SIGNATURE TABLE COLUMN SIZING\n The id was wrapping mid-value (\"ABC-\" / \"111\"), the group was stated twice\n (dot plus word), site names were centre-aligned under a left-aligned header,\n and life/mass held full width while empty for every non-wormhole row.\n ========================================================================= */\n\n#sigTable { table-layout: fixed; }\n\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.5rem; white-space: nowrap; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6rem; white-space: nowrap; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.5rem; white-space: nowrap; }\n#sigTable th:nth-child(4), #sigTable td:nth-child(4) { width: auto; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 4.5rem; white-space: nowrap; }\n\n/* Everything reads left except the state columns, which line up on the right\n so they scan as a pair. */\n#sigTable td, #sigTable th { text-align: left; }\n#sigTable td:nth-child(5), #sigTable th:nth-child(5),\n#sigTable td:nth-child(6), #sigTable th:nth-child(6) { text-align: right; }\n\n/* The alignment classes the app writes inline fight the above. */\n#sigTable td.centerAlign, #sigTable td.rightAlign { text-align: inherit; }\n\n/* The signature id is an identifier; never break it. */\n#sigTable td:nth-child(1) { font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; }\n\n/* Header row is chrome, not content. */\n#sigTable thead th { position: sticky; top: 0; background: var(--card); z-index: 1; }\n\n/* ============================================================================\n HIERARCHY\n Three text tokens used almost interchangeably meant nothing led the eye.\n Primary content sits at full strength, supporting detail steps back.\n ========================================================================= */\n\n.sys-panel .sys-name { color: var(--foreground); font-weight: 600; }\n.sys-statics, .sys-extra { color: var(--card-foreground); }\n.sys-links a, #version,\n#activityGraphControls a,\n.sig-stats { color: var(--muted-foreground); }\n\n/* The filter bar is a control surface; it should sit quieter than the rows it\n filters. */\n.sig-filter { padding: var(--space-1) var(--space-2); }\n.sig-chip { font-size: calc(var(--fs-xs) * 0.95); }\n\n/* The version chip was absolutely positioned at top:4px right:20px inside the\n logo, which worked when the topbar was a line-height hack. In a flex row it\n lands on top of the wordmark. It is a sibling, so it sits like one. */\n#topbar #logo { position: static; display: flex; align-items: baseline; gap: var(--space-2); }\n\n#version {\n\tposition: static;\n\ttop: auto; right: auto;\n\theight: auto;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Panel visibility menu, opened from the layout control. */\n#panel-menu {\n\tposition: absolute;\n\tz-index: 3000;\n\tmin-width: 12rem;\n\tpadding: var(--space-1) 0;\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.5);\n}\n#panel-menu button {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\twidth: 100%;\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\ttext-align: left;\n\tpadding: var(--space-1) var(--space-3);\n\tmin-height: 0;\n}\n#panel-menu button:hover { background: var(--muted); }\n#panel-menu .tick { width: 1em; color: var(--primary); }\n\n/* ============================================================================\n CHARACTER PORTRAIT\n\n EVE portraits are square, so they need masking to read as an avatar. Served\n from images.evetech.net -- image.eveonline.com is the retired host and the\n settings portrait was still pointing at it.\n ========================================================================= */\n\n.avatar {\n\tdisplay: inline-block;\n\twidth: 1.6rem;\n\theight: 1.6rem;\n\tborder-radius: 50%;\n\tobject-fit: cover;\n\tvertical-align: middle;\n\tbackground: var(--muted);\n\t/* A thin ring keeps a dark portrait from bleeding into a dark topbar. */\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#topbar #user {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-2);\n}\n\n.avatar-lg {\n\twidth: 3.4rem;\n\theight: 3.4rem;\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#dialog-options #avatar { padding-right: var(--space-3); vertical-align: top; }\n\n/* account.css sets `#login img { border-radius: 3px }` -- an id plus an\n element, which outranks .avatar and squared the portrait off again. */\n#login img.avatar,\n#topbar img.avatar,\nimg.avatar {\n\tborder-radius: 50%;\n}\n\n/* Corporation and alliance logos are marks, not faces; they stay square. */\nimg.logo {\n\twidth: 1.6rem; height: 1.6rem;\n\tobject-fit: contain;\n\tvertical-align: middle;\n}\n","/* ============================================================================\n CHAIN TAB STRIP\n\n On a busy corp map this is the primary navigation -- the chain runs\n roughly sixteen screen widths, so you reach a system by picking its chain,\n not by scrolling to it. Thirteen-plus tabs is normal.\n\n The old strip could not survive that: `.tab { min-width: 75px }` with no\n overflow handling meant thirteen tabs demanded ~975px and simply pushed the\n rest of the header off the right edge. It also used floats inside\n inline-blocks with text-align:right, so the label and its controls fought\n each other.\n\n Now: one scrolling row that takes the space left over, with every other\n control held in place beside it.\n ========================================================================= */\n\n#chainWidget > .controls {\n\tflex-wrap: nowrap;\n\tgap: var(--space-2);\n}\n\n/* Everything that is not the strip keeps its size. */\n#chainWidget > .controls > *:not(#chainTabs) { flex: 0 0 auto; }\n\n#chainTabs {\n\tflex: 1 1 auto;\n\tmin-width: 0; /* without this a flex child refuses to shrink */\n\tdisplay: flex;\n\talign-items: stretch;\n\tgap: 2px;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscrollbar-width: thin;\n\tscroll-snap-type: x proximity;\n\t/* Fade the edges so it is obvious there are more chains off-screen. */\n\tmask-image: linear-gradient(to right, transparent 0, #000 12px,\n\t #000 calc(100% - 12px), transparent 100%);\n}\n\n#chainTabs::-webkit-scrollbar { height: 4px; }\n#chainTabs::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 999px; }\n#chainTabs::-webkit-scrollbar-track { background: transparent; }\n\n/* ---- the tab itself ----------------------------------------------------- */\n\n#chainTabs .tab {\n\tflex: 0 0 auto;\n\tmin-width: 0; /* was 75px, which is what broke the header */\n\tmax-width: 12rem;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm) var(--radius-sm) 0 0;\n\tborder-bottom: 2px solid transparent;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1.6;\n\ttext-align: left;\n\twhite-space: nowrap;\n\tscroll-snap-align: start;\n\ttransition: color .12s ease, background-color .12s ease, border-color .12s ease;\n}\n\n#chainTabs .tab:hover {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--border-strong);\n}\n\n/* The active chain is where you are; a 2px blue rule was too quiet for the\n one control you navigate by. */\n#chainTabs .tab.current {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n\tfont-weight: 600;\n}\n\n/* Floats inside an inline-block, with the row right-aligned, meant the label\n and its buttons never agreed on a baseline. */\n#chainTabs .tab .name {\n\tfloat: none;\n\tpadding-left: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n#chainTabs .tab .closeTab,\n#chainTabs .tab .editTab {\n\tfloat: none;\n\tflex: 0 0 auto;\n\tpadding: 0 2px;\n\tfont-size: .85em;\n\tline-height: 1;\n\tcolor: var(--muted-foreground);\n}\n\n/* Reveal the controls on the tab you are pointing at, and always on the active\n one -- otherwise renaming the chain you are in means hunting for a target\n that appears only on hover. */\n#chainTabs .tab:hover .closeTab,\n#chainTabs .tab:hover .editTab,\n#chainTabs .tab.current .closeTab,\n#chainTabs .tab.current .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#chainTabs .tab .closeTab:hover { color: var(--destructive); }\n#chainTabs .tab .editTab:hover { color: var(--primary); }\n\n/* While dragging to reorder. */\n#chainTabs .ui-sortable-helper {\n\tbackground: var(--card);\n\tborder-color: var(--border);\n\tbox-shadow: 0 4px 12px rgba(0,0,0,.4);\n}\n\n/* The chain panel's own title is redundant next to a strip of named chains,\n and at thirteen tabs the space is worth more than the label. */\n#chainWidget .panel-title { display: none; }\n\n/* ============================================================================\n PANEL HEADER: RIGHT-ANCHORED CONTROLS\n\n .controls is a flex row, and two of its children carried `margin-left: auto`\n -- the group the markup floats right, and the panel-hide button. Flexbox\n divides free space equally between every auto margin, so instead of both\n sitting at the right edge the trailing group was parked in the middle of\n the header (measured: 203px short of the right in System, 206px in\n Signatures, 168px in Notes).\n\n Exactly one element opens the gap. Everything after it packs against the\n right edge behind it.\n ========================================================================= */\n\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n}\n\n/* No second auto margin -- this just follows the group above. */\n.gridWidget > .controls > .panel-hide { margin-left: 0; }\n\n/* If a panel ever has no floated group, the hide button still needs to open\n the gap itself. :only-of-type is too narrow, so match on it being the sole\n right-hand item. */\n.gridWidget > .controls > div[style*=\"float\"] ~ .panel-hide { margin-left: 0; }\n.gridWidget > .controls > .panel-hide:first-of-type { margin-left: auto; }\n\n/* The chain header sizes its strip with flex-grow instead, so nothing there\n should also claim the free space. */\n#chainWidget > .controls > div[style*=\"float\"] { margin-left: 0; }\n","/* ============================================================================\n MAIN HEADER\n\n Was one cramped line of unrelated things divided by literal \"|\" characters,\n with two inline `font-size: 1.7em` overrides and a portrait too small to\n recognise.\n\n An earlier attempt made this a grid with `display: contents` on the\n wrappers; that placed every right-hand control into the same grid cell, so\n they stacked and ran off the right edge. A flex row cannot do that: the\n right cluster is one item that keeps its own width.\n\n Server population and EVE time have moved out entirely, to the status bar\n along the bottom -- they are ambient readings, not navigation.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: var(--space-2) var(--space-3);\n\theight: auto;\n\tmin-height: 0;\n\tline-height: normal;\n\tflex-wrap: nowrap;\n}\n\n#topbar > .align-left {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 1 1 auto;\n\tmin-width: 0; /* lets the left side shrink instead of shoving */\n}\n\n#topbar > .align-right {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 0 0 auto; /* never compressed, never pushed out */\n\tpadding-right: 0;\n}\n\n#topbar #logo {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tflex: 0 0 auto;\n}\n#topbar #logo a { font-size: 1.8rem; line-height: 1.1; }\n\n#topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* Twice the previous portrait; the header height follows it. */\n#topbar .avatar { width: 2.4rem; height: 2.4rem; }\n#topbar #user { gap: var(--space-2); font-size: 1.05rem; }\n\n#topbar #settings,\n#topbar #layout { font-size: 1.3rem; flex: 0 0 auto; }\n\n/* The system search takes the slack in the middle rather than the icons. */\n#topbar #systemSearch { flex: 1 1 auto; min-width: 0; }\n\n/* ============================================================================\n STATUS BAR\n\n Ambient readings, out of the way: server population left, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--space-4);\n\tpadding: var(--space-1) var(--space-3);\n\tborder-top: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n}\n\n#statusbar .bar-value { font-variant-numeric: tabular-nums; font-weight: 600; }\n#statusbar #serverStatus.is-down .bar-value { color: var(--data-critical); }\n\n.bar-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n/* ============================================================================\n NOTE EDITOR\n Replaces CKEditor 4's skin. Same visual language as everything else, so the\n editor does not look like a different application embedded in the panel.\n ========================================================================= */\n\n.rte {\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n\toverflow: hidden;\n}\n\n.rte-bar {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 2px;\n\tpadding: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--card) 60%, transparent);\n}\n\n.rte-btn {\n\tmin-width: 1.9rem;\n\tmin-height: 1.9rem;\n\tpadding: 0 var(--space-1);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1;\n\tcursor: pointer;\n}\n.rte-btn:hover { background: var(--accent-surface); color: var(--foreground); border-color: var(--border); }\n\n.rte-sep { width: 1px; align-self: stretch; margin: 2px var(--space-1); background: var(--border); }\n\n.rte-swatch {\n\twidth: 1.1rem; height: 1.1rem;\n\tmin-width: 0; min-height: 0;\n\tpadding: 0;\n\tborder: 1px solid var(--border);\n\tborder-radius: 50%;\n\tcursor: pointer;\n}\n.rte-swatch:hover { transform: scale(1.15); }\n\n.rte-area {\n\tmin-height: 7rem;\n\tmax-height: 22rem;\n\toverflow-y: auto;\n\tpadding: var(--space-2);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tline-height: 1.6;\n\toutline: none;\n}\n.rte-area:focus { background: var(--background); }\n.rte-area a { color: var(--primary); }\n.rte-area ul, .rte-area ol { padding-left: 1.4em; margin: .3em 0; }\n","/* ============================================================================\n TYPOGRAPHY: ONE FAMILY\n\n The stylesheets declare thirteen different font stacks -- Arial, Verdana,\n \"Arial, verdana, tahoma\", lucida, bare sans-serif, and so on. Most were\n already being overridden by the body rule, but two rules still resolved\n to `lucida`, and any of the rest would resurface the moment a component was\n touched.\n\n One family everywhere, except the icon font and deliberate monospace.\n ========================================================================= */\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n[data-icon], [data-icon]::before, [data-icon]::after,\n.icon, .icon::before { font-family: 'icon' !important; }\n\ncode, pre, .mono,\n#sigTable td:nth-child(1),\n#statusbar .bar-value,\n#topbar #serverTime { font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n SETTINGS SECTION HEADINGS\n\n They were sticky, which needed a solid background to avoid text scrolling\n through them -- and the background did not match every surface they crossed,\n so they rendered as a band that did not line up. Sticky buys little in a\n dialog this short. They are plain headings now.\n ========================================================================= */\n\n.settings-sections > h3 {\n\tposition: static;\n\tbackground: transparent;\n}\n\n/* ============================================================================\n HEADER: NEVER CLIP THE RIGHT CLUSTER\n\n Reported repeatedly. The right cluster is fixed-size and the left is\n flexible, but the left contains a search input with an intrinsic minimum\n width, so at narrow widths it refused to shrink and pushed the icons past\n the edge. Truncating the left is always preferable to losing a control.\n ========================================================================= */\n\n#topbar > .align-left { overflow: hidden; }\n#topbar #systemSearch,\n#topbar #currentSpan,\n#topbar #searchSpan { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n#topbar #systemSearch input[type=\"text\"] { max-width: 14rem; min-width: 0; }\n#topbar > .align-right { z-index: 2; }\n\n/* ============================================================================\n SYSTEM PANEL: BREATHING ROOM AT THE TOP\n The system name sat hard against the panel header.\n ========================================================================= */\n\n.sys-panel { padding-top: var(--space-4); }\n.sys-panel .sys-name { margin-top: 0; }\n\n/* ============================================================================\n STATUS BAR: THREE SLOTS\n Population left, Tripwire version centred, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto 1fr;\n\talign-items: center;\n}\n#statusbar > #serverStatus { justify-self: start; }\n#statusbar > #version { justify-self: center; }\n#statusbar > #eveTime { justify-self: end; }\n\n/* The chart still renders a few pixels past its box even when told the height,\n because Google Charts adds its own chrome. Clip rather than let it paint over\n what follows. */\n#activityGraph { overflow: hidden; }\n\n/* Two rules still resolved to the bundled `lucida` face. */\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n/* signatures.css uses a bundled `lucida` TTF for the signature-id column, to\n keep ids aligned down the column. The intent is right; shipping a font file\n for one column is not. A system monospace stack with tabular figures does\n the same job with no download. */\n#sigTable td:nth-child(1) {\n\tfont-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n\tfont-variant-numeric: tabular-nums;\n\tletter-spacing: .04em;\n}\n\n/* ── The header overflow, root cause ─────────────────────────────────────\n #topbar is content-box (this stylesheet predates border-box being the\n default anyone reaches for), so `width: 100%` plus `padding: 6px 9px`\n resolves to viewport + 18px. The bar hangs 18px off the right of the\n screen and the last control -- the layout icon -- is cut in half.\n\n Every check I ran against this measured `scrollWidth - clientWidth` on\n the bar, which is 0: the bar is not overflowing its own box, its box is\n bigger than the viewport. The document does not report it either,\n because overflow-x is hidden upstream. Both numbers read clean while\n the icon was visibly severed. The right question is whether the bar's\n right edge exceeds documentElement.clientWidth.\n\n Padding belongs inside the width. */\n#topbar {\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tmax-width: 100%;\n}\n","/* ============================================================================\n POLISH PASS\n\n Six things, all of which come back to the same habit: space and weight were\n applied per-element as each one was noticed, so nothing shared a rule and\n nothing agreed with anything else. These set the shared rules.\n ========================================================================= */\n\n/* ── 1. PANEL INSETS ─────────────────────────────────────────────────────\n Measured before writing this, per panel, first painted child against the\n content box:\n\n Notes padding 0 -- \"Posted by\" flush against the left border\n Signatures padding 0 -- filter chips flush against both\n Chain padding 0 -- correct, the map is meant to be full bleed\n System 12px 9px 9px -- three different values, none of them a\n token, top too tight to read as intended\n\n Content that touches its own frame reads as a rendering fault, which is\n what it looked like. One inset, one token, every panel. */\n\n/* Explicit pixels, not var(--space-4). The root font-size here is 12px, not\n the 16px rem maths assumes, so every rem-based value lands 25% short of\n what it reads as -- var(--space-4) is \"1rem\" and resolves to 12px. Rather\n than redefine the scale under everything already tuned against it, the\n values that need to be a specific size are stated as that size. */\n.gridWidget > .content,\n#infoWidget > .content,\n#notesWidget > .content,\n#signaturesWidget > .content {\n\tpadding: 16px;\n\tbox-sizing: border-box;\n\toverflow: auto;\n\tmin-height: 0;\n}\n\n/* The map is the exception and stays edge to edge: it is a canvas that pans,\n and an inset would clip it rather than frame it. The breathing room goes\n inside the scroll area instead, so nodes never butt against the divider. */\n#chainWidget > .content { padding: 0; min-height: 0; overflow: hidden; }\n#chainParent { padding: var(--space-3); box-sizing: border-box; max-height: 100%; overflow: auto; }\n\n/* Rhythm between the blocks inside a panel, which previously had none. */\n#sigFilterBar { margin-bottom: var(--space-3); }\n.sys-panel > * + * { margin-top: var(--space-3); }\n#activityGraphControls { margin-top: var(--space-2); }\n\n/* ── 2. SPACE ALLOCATION ─────────────────────────────────────────────────\n Rows were fixed at 46vh regardless of what was in them. Measured fill:\n\n Notes 82% empty\n Signatures 48% empty\n System 3% empty (close to overflowing)\n Chain -60% (501px of map in a 312px box)\n\n Notes held a third of the screen for one line while the map -- the reason\n the tool exists -- was the only panel that could not fit its content. The\n top row gives some back and notes narrows, since it is the panel that\n demonstrably needs least. */\n/* The top row stays where it was. Taking 6vh off it to feed the chain made\n the System panel clip instead -- it needs 341px and 40vh gave it 320 -- and\n a panel you have to scroll to see the statics is a worse trade than a map\n that pans, which is what a map is for. The chain \"overflowing\" was my own\n mis-framing: a canvas sixteen screens wide is supposed to exceed its box.\n What was actually wrong with it was that it never scrolled to where you\n are, which is fixed in the renderer rather than here. */\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-columns: minmax(230px, 1fr) minmax(320px, 1.5fr) minmax(190px, 0.78fr);\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ── 3. TYPE SCALE ───────────────────────────────────────────────────────\n Footer 9.6px, body ~11px, panel titles 12px: three sizes inside three\n pixels, which reads as inconsistency rather than hierarchy. The footer was\n also simply too small to read, and it is the only place the server's\n player count and EVE time appear. */\n#statusbar { font-size: 11px; }\n#statusbar .bar-label { font-size: inherit; letter-spacing: .07em; opacity: .72; }\n#statusbar .bar-value { font-size: inherit; font-variant-numeric: tabular-nums; }\n\n/* ── 4. AVATAR ───────────────────────────────────────────────────────────\n The header was given room for a larger portrait and then never used it. */\n#topbar #user-avatar.avatar { width: 34px; height: 34px; }\n#topbar #login h3 { display: inline-flex; align-items: center; gap: var(--space-2); }\n\n/* ── 5. GRAPH AXIS ───────────────────────────────────────────────────────\n The chart borrowed --border for its gridlines and --muted-foreground for\n its numbers, and both pull the wrong way: a gridline sits *behind* the\n data and should be lighter than a panel border, while the numbers are\n values you read off the chart, not labels you skim. Dedicated tokens. */\n:root {\n\t--chart-gridline: rgba(255, 255, 255, .055);\n\t--chart-axis-text: #b7b7b7;\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--chart-gridline: rgba(0, 0, 0, .075);\n\t\t--chart-axis-text: #4a4a4a;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--chart-gridline: rgba(0, 0, 0, .075);\n\t--chart-axis-text: #4a4a4a;\n}\n\n/* ── 6. EMPTY STATES ─────────────────────────────────────────────────────\n An empty box is indistinguishable from a broken one. Both of these are\n normal states -- a system nobody has annotated, a system whose hourly\n activity has not accumulated yet -- and should say so. */\n#comment-container:not(:has(.comment:not(.hidden)))::before,\n#activityGraph.is-empty::before {\n\tcontent: attr(data-empty);\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n/* :empty could never match -- the container always holds the hidden template\n row -- so the empty state never showed. :has() asks the real question. */\n#comment-container:not(:has(.comment:not(.hidden)))::before { content: \"No notes on this system yet.\"; }\n#activityGraph.is-empty { height: auto; min-height: 0; }\n\n/* ── 7. GATE CHIPS ───────────────────────────────────────────────────────\n Was \"Ikuchi ( HS )\" per gate, six of them wrapping to three rows. The\n brackets are noise and the security repeats as text what colour already\n says. Name plus a security badge, on one or two rows instead of three. */\n.gate-list { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }\n.gate-list-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: 10px;\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n}\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-1) 2px var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: 11px;\n\tline-height: 1.6;\n\ttext-decoration: none;\n}\n/* The chip is the link itself. Pair the brand's primary fill with its\n explicitly chosen on-primary ink so hover cannot become blue on orange. */\n.gate-chip:hover {\n\tbackground: var(--primary);\n\tcolor: var(--primary-foreground);\n\ttext-decoration: none;\n}\n.gate-chip .gate-sec {\n\tpadding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\tfont-size: 9px;\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n/* The badge paints the security colour as its ground; the letters knock out\n of it. currentColor above is the security class colour inherited from the\n named-colour mapping, so the fill stays correct in both themes. */\n.gate-chip .gate-sec::after { content: none; }\n.gate-chip .gate-sec { -webkit-text-fill-color: var(--card); }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* ── 8. SIGNATURE COLUMNS ────────────────────────────────────────────────\n Leads To held 168px against 66-84px for everything else, with slack left\n over; life and mass were cramped for no reason while the id column had\n room to spare. */\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.25rem; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6.5rem; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.25rem; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 5rem; }\n\n\n/* ── 9. THE NOTES OVERLAP ────────────────────────────────────────────────\n Not a spacing problem -- the two lines were drawn on top of each other.\n\n .commentToolbar contains a floated .commentTitle. Nothing contained the\n float, so the toolbar collapsed to 26px while the title's two lines ran\n 67px, and .commentBody was laid out from the collapsed height: body at\n y=130 with the title still painting to y=172. Measured, not inferred.\n\n The float dates from a layout that no longer exists. Flex row, and the\n toolbar is the height of its contents. */\n.comment {\n\tpadding: var(--space-2) 0;\n\tborder-bottom: 1px solid var(--border);\n}\n.comment:last-child { border-bottom: 0; }\n\n.commentToolbar {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: space-between;\n\tgap: var(--space-3);\n\tmargin-bottom: 6px;\n}\n.commentToolbar > .commentTitle,\n.commentToolbar > .commentControls {\n\tfloat: none;\n\tmin-width: 0;\n}\n.commentTitle {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1px;\n\tflex: 1 1 auto;\n}\n.commentTitle .commentModified,\n.commentTitle .commentCreated {\n\tdisplay: block;\n\tfont-size: 10px;\n\tline-height: 1.35;\n\tcolor: var(--muted-foreground);\n}\n.commentControls {\n\tdisplay: flex;\n\tgap: var(--space-2);\n\tflex: 0 0 auto;\n\tfont-size: 11px;\n}\n.commentBody { font-size: 12px; line-height: 1.5; }\n.commentBody > *:first-child { margin-top: 0; }\n.commentBody > *:last-child { margin-bottom: 0; }\n\n/* ── 10. THE SYSTEM PANEL IS A FLEX COLUMN ───────────────────────────────\n Which means every block in it is a flex item, and flex items shrink to\n fit by default. In a column that scrolls, nothing should: the whole point\n of the scroll is that content keeps its size and the viewport moves.\n\n The activity graph is where this showed. Computed height 0px around a\n 92px chart SVG, with overflow hidden -- so what rendered was the 8px of\n padding and nothing else, a blank band where the graph should be. Two\n things were doing it at once: the flex shrink above, and a leftover\n `height: 84px !important` clamp from the earlier attempt at sparse\n sizing, which I had described as removed and had not been. The chart\n sizes itself now (activity-graph.js sets options.height), so the\n container must simply take the height it is given. */\n.sys-panel > * { flex: 0 0 auto; }\n\n#activityGraph,\n#activityGraph.is-sparse,\n#activityGraph.is-empty {\n\theight: auto !important;\n\tmin-height: 0;\n\topacity: 1;\n}\n","/* ============================================================================\n READ BAND CHROME (phones, landscape phones)\n\n The layout bands in _override-5 put the panels back in flow; this file is\n the chrome that goes with it. Sorted after every other override so the\n phone wins its own argument -- the header and control-bar rules in\n _override-a/b/c were written for desktop widths and used to apply here too.\n\n Measured before writing: header 125px tall for one row of controls; chain\n panel bar 460px wide in a 375px viewport, with close/edit tab icons and the\n panel-hide control off the right edge.\n ========================================================================= */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t/* One row: avatar, name, corp, settings. The wordmark is redundant next to\n\t the wing mark on a screen this size, and the search field lives in the\n\t palette. */\n\t#topbar {\n\t\tmin-height: 0;\n\t\theight: auto;\n\t\tpadding: 8px 12px;\n\t\tgap: 8px;\n\t}\n\t#topbar { display: flex; min-height: 0; }\n\t#topbar > .align-left { display: flex; flex: 1 1 auto; }\n\t#topbar > .align-left #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-center { display: none; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar .hdr-tools { padding-left: 8px; }\n\t#topbar > .align-right {\n\t\tflex: 1 1 auto;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 12px;\n\t}\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar h3 { margin: 0; font-size: 13px; }\n\n\t.gridster { padding: 12px; }\n\n\t/* Control bars wrap rather than overflow, and the map's editing chrome is\n\t desktop and tablet work -- a phone reads the chain. */\n\t.gridWidget > .controls { flex-wrap: wrap; row-gap: 4px; }\n\t#chainWidget > .controls > div[style*=\"float\"] > i:not(.panel-hide),\n\t#chainWidget > .controls > .control,\n\t#chainWidget > .controls #newTab,\n\t.chainTab .closeTab,\n\t.chainTab .editTab,\n\t#chainTabs .closeTab,\n\t#chainTabs .editTab { display: none !important; }\n\t#chainTabs { flex: 1 1 100%; min-width: 0; order: 2; }\n\n\t/* Google Charts paginates the legend at this width (\"1/2\"). Two rows of\n\t legend beats a pager nobody expected. */\n\t#activityGraph svg > g:first-of-type { }\n}\n\n/* Phone bars: the right-hand group takes its own row rather than being pushed\n past the edge, and the paste control is desktop/tablet work like the rest\n of the editing chrome. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.gridWidget > .controls > .bar-right { flex: 1 1 100%; margin-left: 0; justify-content: flex-end; }\n\t#signaturesWidget #paste-signatures,\n\t#signaturesWidget .bar-sep { display: none !important; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Every control in this group is editing chrome that the READ band hides\n\t individually; the empty group was still taking a row of its own. */\n\t#signaturesWidget > .controls > .bar-right,\n\t#notesWidget > .controls > .bar-right { display: none; }\n}\n\n/* ── Second look at the READ band, from screenshots ─────────────────────\n The header spread name / corp / settings across the full width with\n nothing between them; the panel bars' right-hand group was forced onto\n its own row, which left the hide control alone on a third; and the chain\n bar showed five map icons before the tabs. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-right { justify-content: flex-start; gap: 14px; }\n\t#topbar > .align-right > #settings,\n\t#topbar > .align-right > i#settings { margin-left: auto; }\n\t#topbar > .align-right > #layout { display: none; }\n\n\t.gridWidget > .controls > .bar-right { flex: 0 0 auto; margin-left: auto; }\n\t.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: var(--space-1); }\n\n\t#chainWidget > .controls > #show-viewing,\n\t#chainWidget > .controls > #show-favorite,\n\t#chainWidget > .controls > #show-chainLegend,\n\t#chainWidget > .controls > #hot-jump,\n\t#chainWidget > .controls > #higgs-jump,\n\t#chainWidget > .controls > .bar-sep { display: none !important; }\n\t#chainTabs { order: 0; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Life and mass cells are hidden here, and they were carrying the row's\n\t hover and selected background -- so a wormhole row's highlight stopped\n\t two columns short. Paint the row instead. */\n\t#sigTable tbody tr:hover, #sigTable tbody tr.selected { background-color: var(--muted); }\n\t#sigTable tbody tr:hover > td, #sigTable tbody tr.selected > td { background-color: transparent; }\n}\n","/* ============================================================================\n THE SCALE\n\n Measured on the main screen at 1920x1080: fourteen font sizes, seven border\n radii, nine control heights, eight icon sizes. Almost none of it chosen --\n the tokens were written in rem against a 12px root, so \"0.8rem\" rendered\n at 9.6px and \"0.76rem\" at 9.12px, and every component that reached for a\n size got a slightly different one.\n\n Six sizes, in pixels, and every token that feeds a size resolves to one of\n them. Anything below 11px is not for reading.\n ========================================================================= */\n\n:root {\n\t--fs-xs: 11px;\n\t--fs-sm: 12px;\n\t--fs-base: 13px;\n\t--fs-md: 15px;\n\t--fs-lg: 18px;\n\t--fs-xl: 24px;\n\n\t/* Two radii and a pill. Inputs and chips at 4, cards and dialogs at 8. */\n\t--radius: 8px;\n\t--radius-md: 8px;\n\t--radius-sm: 4px;\n\n\t/* Two control heights: dense (bars, rows, chips) and standard (dialog\n\t inputs, primary buttons). Coarse pointers raise the floor to 44 in\n\t _override-5-responsive.css. */\n\t--control-dense: 28px;\n\t--control-standard: 36px;\n\n\t/* One icon size inline and in bars; one in the header. */\n\t--icon: 16px;\n\t--icon-lg: 20px;\n}\n\nbody { font-size: var(--fs-base); }\n\n/* Icons take the token, not whatever size their parent happened to be. */\n[data-icon]::before { font-size: var(--icon); line-height: 1; }\n#topbar [data-icon]::before { font-size: var(--icon-lg); }\n\n/* Dialog inputs and buttons at the standard height; the bars stay dense. */\n.ui-dialog input[type=\"text\"], .ui-dialog input[type=\"password\"],\n.ui-dialog input[type=\"number\"], .ui-dialog select,\n.ui-dialog .ui-selectmenu-button {\n\tmin-height: var(--control-standard);\n\tbox-sizing: border-box;\n}\n.ui-dialog-buttonpane button { min-height: var(--control-standard); }\n\n/* ============================================================================\n LIGHT THEME SURFACES\n\n The light theme flipped cleanly but had no depth: body and card were both\n oklch(1 0 0), pure white on pure white, with a 1px border doing all the\n work. The dark theme gets its hierarchy from the card being lighter than\n the ground; the light theme gets the same from the ground being warmer\n than the card. Same three-state structure as _override-1-system.css.\n ========================================================================= */\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(0.962 0.006 80);\n\t\t--card: oklch(1 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--muted: oklch(0.955 0.005 80);\n\t\t--accent-surface: oklch(0.955 0.005 80);\n\t\t--border: oklch(0.90 0.006 80);\n\t\t--border-strong: oklch(0.82 0.008 80);\n\t\t--input: oklch(0.90 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(0.962 0.006 80);\n\t--card: oklch(1 0 0);\n\t--popover: oklch(1 0 0);\n\t--muted: oklch(0.955 0.005 80);\n\t--accent-surface: oklch(0.955 0.005 80);\n\t--border: oklch(0.90 0.006 80);\n\t--border-strong: oklch(0.82 0.008 80);\n\t--input: oklch(0.90 0.006 80);\n}\n\n/* ============================================================================\n SYSTEM PANEL ALIGNMENT\n\n Name, security, gates and routes were left-aligned; the graph legend, the\n range chips and the external links were centred. Two alignment systems in\n one 300px column, switching at the graph. One system.\n ========================================================================= */\n\n#activityGraphControls,\n.sys-range,\n#infoLinks,\n.sys-links {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tgap: var(--space-2);\n\ttext-align: left;\n}\n#infoLinks { border-top: 0; padding-top: 0; }\n#infoLinks a, .sys-links a { padding: 0; }\n\n/* ============================================================================\n NOTES, CONTENT FIRST\n\n \"Posted by Cormorant Fell at 2026-09-01 03:16:48\" was the first line of\n every note and the note itself came second. The reader wants the note.\n Author and time become one muted line beneath it; edit controls appear on\n hover or focus rather than sitting on every note permanently.\n ========================================================================= */\n\n/* :not(.hidden) matters. A bare .comment rule outranked .hidden's display:none\n (same specificity, later in the cascade), which made the hidden template\n row *visible* -- and systemChange.js removes every `.comment:visible` on a\n system change. That deleted the template, parse() had nothing to clone,\n and no note rendered anywhere. Measured: 0 comments in the DOM with 1 in\n the payload, and no template. */\n.comment:not(.hidden) { display: flex; flex-direction: column; }\n.comment.hidden { display: none !important; }\n.comment > .commentBody { order: 1; }\n.comment > .commentToolbar { order: 2; margin: 6px 0 0; }\n.comment > .commentFooter { order: 3; }\n\n.commentTitle { flex-direction: row; flex-wrap: wrap; gap: 0 var(--space-2); align-items: baseline; }\n.commentTitle .commentCreated,\n.commentTitle .commentModified { font-size: var(--fs-xs); }\n.commentTitle .commentModified.is-same { display: none; }\n\n.comment .commentControls { opacity: 0; transition: opacity .12s ease; }\n.comment:hover .commentControls,\n.comment:focus-within .commentControls { opacity: 1; }\n@media (pointer: coarse) { .comment .commentControls { opacity: 1; } }\n\n/* ============================================================================\n PHONE, LEFTOVERS FROM _override-d\n The chain tab strip scrolls internally -- its children past the edge are\n expected -- but the panel-hide control was being pushed off with them.\n Hiding the chain on a phone is not a thing anyone does.\n ========================================================================= */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainWidget > .controls .panel-hide { display: none !important; }\n\t#chainTabs { flex: 1 1 auto; max-width: 100%; }\n}\n\n/* ============================================================================\n THE HOLDOUTS, MEASURED AFTER THE FIRST PASS\n Twelve sizes remained. Each of these was an em-relative size on a\n component that never reached for a token.\n ========================================================================= */\n.sig-chip, .sig-filter .sig-chip { font-size: var(--fs-xs); }\n#topbar h3, #topbar h3 a, #EVEsystem,\n#topbar #mask, #topbar #user-track-name { font-size: var(--fs-base); }\n#topbar #logo a { font-size: var(--fs-xl); }\n.sys-meta, #infoSecurity, .sys-meta .chip { font-size: var(--fs-sm); }\n.gate-chip .gate-sec { font-size: var(--fs-xs); height: 15px; padding: 0 5px; }\nkbd { font-size: var(--fs-xs); }\n.node .nodeClass, .node .nodeType { font-size: var(--fs-xs); }\n\n/* Heights: chips at 22, bars and header controls at 28, dialogs at 36.\n bar-btn measured 30 because the height was content-box plus its border. */\n.controls .bar-btn { box-sizing: border-box; height: var(--control-dense); }\n.sig-chip, .gate-chip, h4.chip, .chip {\n\tbox-sizing: border-box;\n\theight: 22px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding-top: 0; padding-bottom: 0;\n}\n#topbar > .align-right > i[data-icon],\n#topbar #search, #topbar #follow {\n\tbox-sizing: border-box;\n\theight: var(--control-dense);\n\tmin-width: var(--control-dense);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: var(--radius-sm);\n}\n#topbar > .align-right > i[data-icon]:hover { background: var(--muted); }\n\n/* ── Graph legend as chips, in the controls row ──────────────────────── */\n#activityGraphControls { justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-3); }\n#activityLegend { display: inline-flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }\n#activityLegend .legend-chip {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 22px; padding: 0 8px 0 6px;\n\tborder: 1px solid transparent; border-radius: 999px;\n\tbackground: transparent; color: var(--foreground);\n\tfont-size: var(--fs-xs); font-weight: 500; cursor: pointer;\n}\n#activityLegend .legend-chip:hover { background: var(--muted); border-color: var(--border); }\n#activityLegend .legend-chip .swatch { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }\n#activityLegend .legend-chip.off { color: var(--muted-foreground); }\n#activityLegend .legend-chip.off .swatch { opacity: .3; }\n#activityGraphControls > a { margin-left: 0; }\n/* space-between was distributing the three range links across the row along\n with the legend; the legend takes the slack and the ranges stay a group. */\n#activityGraphControls { justify-content: flex-start; }\n#activityLegend { margin-right: auto; }\n","/* ============================================================================\n ONE DIALOG\n\n Every real workflow -- add, edit, settings, ping, confirm -- runs through a\n jQuery UI dialog, and jQuery UI's structure showed through the restyle:\n its titlebar, its button pane as a separate strip, buttons in whatever\n order the config object listed them. The panels are the branch's; the\n dialogs were the library's. This makes the dialog the same object as the\n command palette: one surface, one radius, a header with a title and one\n close, a body, and a footer with the primary action filled and on the\n right, the quiet action beside it, the destructive one alone on the left.\n\n jQuery UI stays underneath for positioning and focus. Only the skin and\n the button roles change; dialog-polish.js assigns the roles.\n ========================================================================= */\n\n.ui-dialog {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45);\n\tpadding: 0;\n\tmax-width: min(94vw, 720px);\n\toverflow: hidden;\n}\n.ui-dialog-shadow { box-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45); }\n\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: var(--space-3) var(--space-4);\n\tmin-height: var(--control-standard);\n\tbackground: transparent;\n\tborder-bottom: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tletter-spacing: .1em;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tfont-size: var(--fs-base);\n\tline-height: 1.5;\n}\n\n/* ---- footer ---------------------------------------------------------- */\n.ui-dialog .ui-dialog-buttonpane {\n\tpadding: var(--space-3) var(--space-4);\n\tborder-top: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tgap: var(--space-2);\n\tfloat: none;\n\twidth: 100%;\n}\n.ui-dialog-buttonpane button {\n\torder: 2;\n\tmargin: 0;\n\tpadding: 0 var(--space-4);\n\tmin-height: var(--control-standard);\n\tborder-radius: var(--radius-sm);\n\tfont-size: var(--fs-base);\n\tfont-weight: 500;\n}\n/* Quiet: cancel, close, and the \"reset\" style choices that are not destructive. */\n.ui-dialog-buttonpane button.is-quiet {\n\torder: 1;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-quiet:hover {\n\tborder-color: transparent;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n}\n/* Primary: filled, last. */\n.ui-dialog-buttonpane button.is-primary {\n\torder: 3;\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 88%, white);\n\tcolor: var(--primary-foreground);\n}\n/* Destructive: alone on the left, red only when approached. */\n.ui-dialog-buttonpane button.is-destructive {\n\torder: 0;\n\tmargin-right: auto;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground: transparent;\n}\n.ui-dialog-buttonpane button[disabled],\n.ui-dialog-buttonpane button.ui-state-disabled { opacity: .45; pointer-events: none; }\n\n/* Modal scrim, one value. */\n.ui-widget-overlay { background: rgba(0,0,0,.55); opacity: 1; }\n\n/* ============================================================================\n FORM ROWS INSIDE DIALOGS\n The palette's row is the dialog's row: label left in a quiet weight,\n control right, one vertical rhythm.\n ========================================================================= */\n\n.settings { display: flex; flex-direction: column; gap: 0; }\n\n.settings-tabs {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tmargin: calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) var(--space-4);\n\tpadding: 0 var(--space-4);\n\tborder-bottom: 1px solid var(--border);\n}\n.settings-tabs [role=\"tab\"] {\n\tborder: 0;\n\tborder-bottom: 2px solid transparent;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tpadding: var(--space-3) var(--space-2);\n\tmargin-bottom: -1px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n}\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); background: transparent; }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] {\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n}\n\n.settings-pane { display: flex; flex-direction: column; gap: var(--space-2); min-height: 300px; }\n.settings-pane[hidden] { display: none; }\n\n.field {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto;\n\talign-items: center;\n\tgap: var(--space-3);\n\tmin-height: var(--control-standard);\n\tpadding: var(--space-1) 0;\n}\n.field.field-block { grid-template-columns: 1fr; align-items: start; }\n.field-label { color: var(--foreground); font-size: var(--fs-base); }\n.field-label small { display: block; color: var(--muted-foreground); font-size: var(--fs-xs); margin-top: 1px; }\n.field-value { color: var(--foreground); font-variant-numeric: tabular-nums; }\n.field-inline { display: inline-flex; align-items: center; gap: var(--space-2); }\n.field-inline input[type=\"text\"] { width: 12rem; }\n.field-actions { display: flex; gap: var(--space-2); justify-content: flex-end; padding-top: var(--space-3); }\n.field-group {\n\tmargin: var(--space-4) 0 var(--space-1);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.field select, .field input[type=\"text\"] { min-width: 14rem; }\n\n/* ---- switch: the one idiom for a boolean ----------------------------- */\n.switch { position: relative; display: inline-block; width: 38px; height: 22px; cursor: pointer; }\n.switch input { position: absolute; opacity: 0; width: 0; height: 0; }\n.switch-track {\n\tposition: absolute; inset: 0;\n\tborder-radius: 999px;\n\tbackground: var(--input);\n\ttransition: background .15s ease;\n}\n.switch-track::after {\n\tcontent: \"\";\n\tposition: absolute; top: 3px; left: 3px;\n\twidth: 16px; height: 16px;\n\tborder-radius: 50%;\n\tbackground: var(--foreground);\n\ttransition: transform .15s ease;\n}\n.switch input:checked + .switch-track { background: var(--primary); }\n.switch input:checked + .switch-track::after { transform: translateX(16px); background: var(--primary-foreground); }\n.switch input:focus-visible + .switch-track { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n/* ---- segmented: two to four options ---------------------------------- */\n.segmented { display: inline-flex; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }\n.segmented input { position: absolute; opacity: 0; pointer-events: none; }\n.segmented label {\n\tpadding: 0 var(--space-3);\n\tmin-height: calc(var(--control-standard) - 8px);\n\tdisplay: inline-flex; align-items: center;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tborder-right: 1px solid var(--border);\n}\n.segmented label:last-of-type { border-right: 0; }\n.segmented input:checked + label { background: var(--muted); color: var(--foreground); }\n.segmented input:focus-visible + label { outline: 2px solid var(--ring); outline-offset: -2px; }\n\n/* ---- slider: jQuery UI's, skinned ------------------------------------ */\n.slider-wrap { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 14rem; }\n.slider-pair { flex-direction: column; align-items: stretch; gap: var(--space-1); }\n.slider-pair > span { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); color: var(--muted-foreground); }\n.slider-wrap .ui-slider { flex: 1 1 auto; height: 4px; border: 0; background: var(--input); border-radius: 999px; margin: 0; }\n.slider-wrap .ui-slider .ui-slider-handle {\n\ttop: -6px; width: 16px; height: 16px; margin-left: -8px;\n\tborder-radius: 50%; border: 0; background: var(--foreground); cursor: pointer;\n}\n.slider-wrap .ui-slider .ui-slider-handle:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n.slider-value { min-width: 2.5em; text-align: right; font-variant-numeric: tabular-nums; color: var(--muted-foreground); font-size: var(--fs-sm); }\n#dialog-options div.ui-slider { width: auto; }\n\n/* ---- statistics ------------------------------------------------------ */\n.stats { display: grid; grid-template-columns: 1fr auto; gap: var(--space-2) var(--space-4); margin: 0; }\n.stats dt { color: var(--muted-foreground); }\n.stats dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n ADD SIGNATURE: THE WORMHOLE HALF IS A SECOND STEP, NOT A REVEAL\n ========================================================================= */\n#dialog-signature #wormhole { margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px solid var(--border); }\n#dialog-signature #wormhole::before {\n\tcontent: \"Wormhole\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature #wormhole > hr { display: none; }\n#dialog-signature #wormhole .side + .side { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px dashed var(--border); }\n#dialog-signature #wormhole .side + .side::before {\n\tcontent: \"Other side\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- characters on the Account tab ------------------------------------ */\n#characters { display: flex; flex-direction: column; gap: var(--space-2); width: 100%; margin-top: var(--space-2); }\n.char-row {\n\tdisplay: flex; align-items: center; gap: var(--space-3);\n\tpadding: var(--space-2) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: var(--card);\n}\n.char-row.is-active { border-color: color-mix(in oklab, var(--primary) 55%, var(--border)); }\n.char-portrait { width: 40px; height: 40px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; flex: 0 0 auto; }\n.char-meta { flex: 1 1 auto; min-width: 0; }\n.char-name { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--foreground); letter-spacing: .04em; }\n.char-note { font-size: var(--fs-xs); color: var(--muted-foreground); margin-top: 2px; }\n.char-actions { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; }\n.char-btn {\n\theight: var(--control-dense); padding: 0 var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: transparent; color: var(--foreground); font-size: var(--fs-sm);\n}\n.char-btn:hover { background: var(--muted); border-color: var(--border-strong); }\n.char-btn.is-destructive { border-color: transparent; color: var(--muted-foreground); }\n.char-btn.is-destructive:hover { border-color: var(--destructive); color: var(--destructive); background: transparent; }\n.char-badge {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--primary); padding: 0 var(--space-2);\n}\n.field-actions input.is-primary { background: var(--primary); border-color: var(--primary); color: var(--primary-foreground); margin-right: auto; }\n.field-actions input.is-primary:hover { background: color-mix(in oklab, var(--primary) 85%, white); border-color: transparent; color: var(--primary-foreground); }\n\n/* ---- panels on the Display tab ---------------------------------------- */\n#panel-settings { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; margin-top: var(--space-2); }\n.panel-row {\n\tdisplay: flex; align-items: center; justify-content: space-between; gap: var(--space-3);\n\tpadding: var(--space-1) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card);\n\tmin-height: var(--control-standard);\n}\n.panel-row-name { color: var(--foreground); }\n.panel-row-actions { display: flex; align-items: center; gap: var(--space-2); }\n.panel-row-actions .char-btn { padding: 0 var(--space-2); font-size: 10px; }\n.panel-row-actions .char-btn[disabled] { opacity: .3; pointer-events: none; }\n","/* ============================================================================\n PANEL BARS WITH WORDS ON THEM\n\n Twenty-five unlabelled icons across four bars, sixty-eight hover tooltips\n to explain them. Hover does not exist on a tablet, which is the device\n this branch was meant to make editing work on.\n\n Primary actions get a word. Secondary actions stay as icons but sit in a\n right-hand group with a real gap, and state toggles (hot, higgs) show\n their state. The elements are the same tags the JavaScript has always\n bound to; only a class and a label span were added, so nothing rebinds.\n ========================================================================= */\n\n.gridWidget > .controls { gap: var(--space-1); }\n\n.controls .bar-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\theight: var(--control-dense);\n\tpadding: 0 10px;\n\tmargin: 0;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tfont-style: normal;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tline-height: 1;\n\tcolor: var(--foreground);\n\tcursor: pointer;\n\twhite-space: nowrap;\n\ttransition: background-color .12s ease, border-color .12s ease;\n}\n.controls .bar-btn::before { font-size: var(--icon); }\n.controls .bar-btn:hover { background: var(--muted); border-color: var(--border); color: var(--foreground); }\n.controls .bar-btn.bar-icon { padding: 0 6px; }\n.controls .bar-btn.bar-icon:not([data-icon]) { font-weight: 600; }\n\n.controls .bar-btn.bar-primary { background: var(--primary); color: var(--primary-foreground); }\n.controls .bar-btn.bar-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: transparent;\n\tcolor: var(--primary-foreground);\n}\n\n.controls .bar-btn.disabled { opacity: .4; pointer-events: none; }\n\n/* A toggle that is on says so with the accent, not by hover. */\n.controls .bar-btn.bar-toggle.active,\n.controls .bar-btn.bar-toggle.on,\n.controls .bar-btn.bar-toggle[data-active=\"true\"] { color: var(--primary); background: color-mix(in oklab, var(--primary) 14%, transparent); }\n\n.controls .bar-btn kbd {\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: 1px 4px;\n\tline-height: 1;\n}\n\n.controls .bar-sep { width: 1px; height: 16px; background: var(--border); margin: 0 var(--space-1); }\n\n.gridWidget > .controls > .bar-right {\n\tmargin-left: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tfloat: none;\n}\n/* The hide control sits after the right group. */\n.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: 0; }\n\n/* The signature count belongs with the title, as a chip. */\n.controls .bar-count {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 18px;\n\tpadding: 0 7px;\n\tmargin-right: var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--muted-foreground);\n\tfont-style: normal;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tfont-variant-numeric: tabular-nums;\n\tcursor: default;\n}\n\n/* Labels give way before icons do. */\n@media (max-width: 1439px) {\n\t#signaturesWidget .bar-btn:not(.bar-primary) .bar-label,\n\t#infoWidget .bar-btn .bar-label { display: none; }\n\t#signaturesWidget .bar-btn:not(.bar-primary):not(.bar-icon) { padding: 0 6px; }\n}\n\n/* The bar inherits the panel title's uppercase and letter-spacing; a button\n label is a word, not a heading. And a bar button is its own width -- the\n notes bar was stretching \"Add note\" across the whole panel because the\n bar's children default to flex: 1 there. */\n.controls .bar-btn { text-transform: none; letter-spacing: 0; flex: 0 0 auto; }\n.controls .bar-btn kbd { border-radius: var(--radius-sm); }\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) { border-radius: var(--radius-sm); }\n/* The label span inherits the bar's uppercase from a more specific rule than\n .bar-btn can beat; set it on the span itself. */\n.gridWidget > .controls .bar-btn > .bar-label { text-transform: none; letter-spacing: 0; font-size: var(--fs-sm); }\n/* The label takes the button's colour, whatever rule the bar had for spans. */\n.gridWidget > .controls .bar-btn > .bar-label { color: inherit; -webkit-text-fill-color: currentColor; }\n/* .bar-btn's display was beating .hidden's; a hidden button is hidden. */\n.controls .bar-btn.hidden { display: none !important; }\n","/* ============================================================================\n CHAIN NODES AS CARDS\n\n A node was a class label, a name and a row of four-pixel dots, floating on\n the canvas with a thin border. The map is the product and it was the least\n designed surface on the screen: nothing said a node was a thing you could\n drag, collapse or open, and at a big corp's density -- sixteen screen widths\n of systems -- small unbounded labels become a wall of text.\n\n A card: fixed width, a definite ground, the security class as a chip in\n the corner rather than a heading, statics as chips inside the card rather\n than tabs hanging below it, activity pips in the footer. The markup in\n chain-map.js is untouched; the renderer measures nothing from the DOM for\n its ring maths (minArc comes from the data), so a slightly larger node\n only needs the spacing factor to breathe, which is a setting.\n ========================================================================= */\n\n#chainMap div.node {\n\tbox-sizing: border-box;\n\twidth: 128px;\n\tmin-height: 56px;\n\tpadding: 6px 8px 8px;\n\tborder-radius: var(--radius);\n\tborder: 1px solid var(--border);\n\tbackground-color: var(--card);\n\ttext-align: left;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tcursor: grab;\n}\n#chainMap div.node:active { cursor: grabbing; }\n\n/* Class chip, top-left. The h4 was a heading; it is a label. */\n#chainMap div.node > h4.nodeClass {\n\torder: 1;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .04em;\n\tline-height: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n#chainMap div.node > h4.nodeClass > span {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 16px;\n\tpadding: 0 6px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: var(--card);\n\tcolor: inherit;\n}\n\n/* System name, the reading line. */\n#chainMap div.node > h4.nodeSystem {\n\torder: 2;\n\tmargin: 0;\n\tfont-size: var(--fs-base);\n\tfont-weight: 600;\n\tline-height: 1.2;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground); text-decoration: none; }\n#chainMap div.node > h4.nodeSystem a:hover { color: var(--primary); }\n\n/* Wormhole type / signature, quiet. */\n#chainMap div.node > h4.nodeType {\n\torder: 3;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\ttext-transform: none;\n\tletter-spacing: 0;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmin-height: 1em;\n}\n\n/* Statics: inside the card as chips, not tabs hanging off the bottom. */\n#chainMap div.node > .statics {\n\torder: 4;\n\tposition: static;\n\tdisplay: flex;\n\tgap: 3px;\n\tmargin-top: 2px;\n\tmin-height: 0;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: auto;\n\tmin-width: 16px;\n\theight: 14px;\n\tpadding: 0 4px;\n\tmargin: 0;\n\tborder: 0;\n\tborder-radius: 3px;\n\tbackground: color-mix(in oklab, currentColor 22%, transparent);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tline-height: 1;\n}\n#chainMap div.node > .statics .multi-static { color: var(--muted-foreground); }\n\n/* Activity pips: footer, right. */\n#chainMap div.node > .nodeActivity {\n\torder: 5;\n\tposition: absolute;\n\tright: 8px;\n\tbottom: 6px;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 3px;\n\tfont-size: 9px;\n\tline-height: 1;\n}\n#chainMap div.node > .nodeActivity .invisible { display: none; }\n\n/* Effect / occupant icons: top-right. */\n#chainMap div.node > .nodeIcons {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 6px;\n\tleft: auto;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 4px;\n\tfont-size: var(--fs-xs);\n}\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; gap: 4px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge {\n\tdisplay: inline-flex; align-items: center;\n\theight: 14px; padding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: var(--primary); color: var(--primary-foreground);\n\tfont-size: 10px; font-weight: 700;\n}\n\n/* The one you are in stays unmistakable; the class tint stays as a ground. */\n#chainMap .currentNode > div.node { box-shadow: 0 0 0 2px var(--primary); border-color: var(--primary); }\n#chainMap div.node:hover { border-color: var(--border-strong); box-shadow: 0 2px 10px rgba(0,0,0,.35); }\n\n/* Collapsed / loop nodes keep the card shape at a reduced height. */\n#chainMap div.loop { width: 128px; min-height: 0; padding: 6px 8px; border-radius: var(--radius); }\n/* The name link was still taking a fixed grey from a more specific legacy\n rule (measured oklch(0.8 0 0) in both themes -- invisible on a white card). */\n#chainMap div.node > h4.nodeSystem,\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground) !important; }\n\n/* The base stylesheet gives div.node a fixed height. As a flex column that\n meant every child shrank to fit -- measured: the name heading at 3px with\n overflow hidden around a 19px link, which rendered as a dark smudge where\n the system name should be. The card takes the height of its contents and\n nothing inside it shrinks. */\n#chainMap div.node { height: auto !important; max-height: none !important; }\n#chainMap div.node > * { flex: 0 0 auto; }\n#chainMap div.node > h4.nodeSystem { height: auto; line-height: 1.25; }\n\n/* ============================================================================\n RAISED CARDS, CAPSULE STATICS\n\n The card ground was the same value as the panel behind it -- var(--card)\n on a panel that is var(--card) at 88% -- so a node read as a faint outline\n on the dark canvas rather than a thing sitting on it. The card is now a\n raised surface a clear step lighter than the canvas, with a stronger edge.\n\n Statics were tiny half-tab glyphs hanging under the node. They are the\n information you scan a chain for, so they become filled capsules in the\n security colour, straddling the card's bottom edge -- half on the card,\n half below it -- with a ring in the card colour so they read as cut into\n the edge rather than stuck on it.\n ========================================================================= */\n\n:root {\n\t--node-surface: color-mix(in oklab, var(--card) 82%, var(--foreground) 18%);\n\t--node-edge: color-mix(in oklab, var(--border-strong) 70%, var(--foreground) 30%);\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--node-surface: oklch(1 0 0);\n\t\t--node-edge: oklch(0.78 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--node-surface: oklch(1 0 0);\n\t--node-edge: oklch(0.78 0.006 80);\n}\n\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node {\n\tbackground-color: var(--node-surface);\n\tborder-color: var(--node-edge);\n\tbox-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 4px 14px rgba(0,0,0,.45);\n\toverflow: visible;\n\tpadding-bottom: 12px; /* room above the straddling capsules */\n\tmargin-bottom: 8px; /* room below them before the next ring */\n}\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 18%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 18%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 18%, var(--node-surface)); }\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 16%, var(--node-surface));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 2px var(--primary), 0 4px 14px rgba(0,0,0,.45);\n}\n\n/* Capsules on the edge. */\n#chainMap div.node > .statics {\n\tposition: absolute;\n\tleft: 8px;\n\tright: 8px;\n\tbottom: 0;\n\ttransform: translateY(50%);\n\tmargin: 0;\n\tgap: 4px;\n\tz-index: 2;\n\tpointer-events: auto;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\theight: 18px;\n\tmin-width: 22px;\n\tpadding: 0 7px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: #fff;\n\tbox-shadow: 0 0 0 2px var(--node-surface);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n#chainMap div.node > .statics .multi-static { background: var(--muted-foreground); }\n\n/* Pips move up beside the name so they never sit under a capsule. */\n#chainMap div.node > .nodeActivity { top: 26px; right: 8px; bottom: auto; }\n#chainMap div.node > h4.nodeSystem { padding-right: 38px; }\n/* \"Dark Venture\" was ellipsising: 128px minus padding minus the 38px held\n for the activity pips left ~70px for the name. A little wider, and the\n pips reserve only what two dots need. */\n#chainMap div.node, #chainMap div.loop { width: 144px; }\n#chainMap div.node > h4.nodeSystem { padding-right: 26px; }\n#chainMap div.node > .nodeActivity { top: 27px; right: 8px; gap: 3px; }\n\n/* Height budget. Three systems in a straight line filled the chain panel and\n forced a scrollbar at 900px tall; a card is two lines and a chip row, and\n should cost about 60px, not 90. */\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node { padding: 5px 8px 9px; min-height: 0; gap: 1px; margin-bottom: 6px; }\n#chainMap div.node > h4.nodeSystem { line-height: 1.15; }\n#chainMap div.node > h4.nodeType:empty, #chainMap div.node > h4.nodeType { min-height: 0; }\n#chainMap div.node > h4.nodeClass > span { height: 15px; }\n#chainMap div.node > .nodeActivity { top: 24px; }\n","/* ============================================================================\n INLINE LIFE / MASS\n The two cells read as editable on approach, and the chooser is the same\n surface as the palette: popover ground, one radius, filled chips in the\n data colours the rest of the app uses for these states.\n ========================================================================= */\n\n#sigTable td.inline-editable { cursor: pointer; position: relative; }\n#sigTable td.inline-editable:hover { color: var(--foreground); text-decoration: underline dotted; text-underline-offset: 3px; }\n#sigTable td.inline-editable.is-saving { opacity: .5; pointer-events: none; }\n\n#inline-edit {\n\tposition: fixed;\n\tz-index: 1200;\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tpadding: var(--space-1);\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 12px 32px rgba(0,0,0,.4);\n}\n#inline-edit .inline-chip {\n\theight: var(--control-dense);\n\tpadding: 0 var(--space-3);\n\tborder-radius: 999px;\n\tborder: 1px solid var(--border);\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tcursor: pointer;\n}\n#inline-edit .inline-chip:hover { background: var(--muted); border-color: var(--border-strong); }\n#inline-edit .inline-chip[aria-selected=\"true\"].stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n#inline-edit .inline-chip:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n@media (pointer: coarse) {\n\t#inline-edit .inline-chip { min-height: 44px; padding: 0 var(--space-4); }\n}\n","/* ============================================================================\n TWO TYPE ROLES\n\n Montserrat was chosen as the brand face and is right for that: geometric,\n round, of a piece with the wing mark. It was then used for every table\n cell, label and chip -- and it is a wide face with a large x-height, which\n at 11-13px in a three-column layout of \"GHJ-456\", \"23:26\", \"Class-3\" costs\n the width budget and reads soft. The signature-id column having to fall\n back to a monospace to stay aligned was the symptom.\n\n Display stays Montserrat. Everything read as data is IBM Plex Sans:\n narrower set, tabular figures, a technical character that suits a mapping\n tool, and a grotesque that sits cleanly under a geometric display face.\n Ids move to Plex Mono so the family holds.\n\n Same selector list as the rule in _override-b-fixes.css that forced one\n family everywhere; this file sorts after it, so equal specificity wins.\n ========================================================================= */\n\n:root {\n\t--font-ui: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-display: 'Montserrat', 'IBM Plex Sans', system-ui, sans-serif;\n\t--font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n}\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li,\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: var(--font-ui);\n\tfont-variant-numeric: tabular-nums;\n}\n\n/* ---- brand surfaces keep the display face ---------------------------- */\n#topbar #logo, #topbar #logo a,\n.panel-title,\n.ui-dialog .ui-dialog-title,\n.sys-panel .sys-name,\n#cmd-palette .cmd-title,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label {\n\tfont-family: var(--font-display);\n}\n\n/* ---- data ids in the mono of the same family --------------------------- */\n#sigTable td:nth-child(1),\n#chainMap div.node > h4.nodeType,\nkbd {\n\tfont-family: var(--font-mono);\n\tletter-spacing: 0;\n}\n\n/* Plex sits a touch smaller on the body than Montserrat did at the same\n size; the base step comes up one pixel so line lengths, not legibility,\n are what change. */\n:root { --fs-base: 13px; --fs-sm: 12px; }\n","/* ============================================================================\n Base theme.\n\n Overrides token VALUES from _tokens.css -- it does not restyle components,\n so it stays out of the way of upstream merges. The values here are the\n built-in defaults; a brand pack (brand.inc.php) overrides them at runtime.\n\n Two notes on scope:\n\n - The neutral ramp is re-pointed at a warmer grey ramp. Tripwire's original\n palette has no accent token -- every emphasis was just a lighter grey --\n so the accent cannot be placed by re-pointing alone. The short accent\n block at the bottom introduces it at the few sites that carry identity.\n - --data-* is deliberately untouched. Wormhole class, mass band and\n security colours encode meaning, and repainting them to fit a brand would\n make the map lie.\n ========================================================================= */\n\n:root {\n /* -- accent constants, used by the accent rules below ------------------- */\n --accent: #f07c00;\n --accent-dim: rgba(240, 124, 0, .18);\n --brand-gray: #adadad;\n --brand-gray-dark: #4d4d4d;\n\n /* -- ops floor: neutral ramp re-pointed at the brand greys -------------\n Ordering and relative contrast follow the original ramp, so component\n styling keeps working; only the values move. */\n --n-000: #000000;\n --n-020: #101010;\n --n-050: #1b1b1b; /* page ground */\n --n-100: #232323; /* raised panel */\n --n-120: #2a2a2a; /* second surface */\n --n-200: #303030; /* hairlines */\n --n-220: #3a3a3a;\n --n-250: #444444;\n --n-300: #4d4d4d; /* rules/borders (brand dark gray) */\n --n-400: #5a5a5a;\n --n-500: #6b6b6b;\n --n-550: #7d7d7d;\n --n-560: #838383;\n --n-600: #8c8c8c; /* secondary text */\n --n-650: #9a9a9a;\n --n-700: #a3a3a3;\n --n-750: #adadad; /* brand gray */\n --n-800: #c4c4c4; /* primary body text */\n --n-850: #d2d2d2;\n --n-870: #dedede;\n --n-880: #e4e4e4;\n --n-900: #ebebeb;\n --n-920: #f0f0f0;\n --n-940: #f5f5f5;\n --n-960: #f8f8f8;\n --n-999: #f2f2f2; /* emphasis text */\n}\n\n/* Front office. The brand orange is identical in both themes by rule, so only\n the neutral grounds swap. Mirrors the structure in _tokens.css: the media\n query is guarded so an explicit dark choice still wins. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9; /* page ground */\n --n-100: #f5f5f5; /* raised panel */\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad; /* rules -- brand gray */\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f; /* pushed past a straight inversion: the mid-ramp is\n where naive flipping leaves text at ~4.5:1 */\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d; /* brand dark gray */\n --n-750: #444444;\n --n-800: #333333; /* primary body text */\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f; /* emphasis text */\n }\n}\n:root[data-theme=\"light\"] {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9;\n --n-100: #f5f5f5;\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad;\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f;\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f;\n}\n\n/* ============================================================================\n Accent placement.\n\n Deliberately short. The orange marks identity and current state -- the\n wordmark, what is selected, what has focus -- and nothing else. Data keeps\n its own colours.\n ========================================================================= */\n\n/* The wordmark carries the brand; the version chip stays quiet beside it.\n The Wing Icon is set as a ::before rather than edited into tripwire.php, so\n the template stays untouched and this whole theme remains one deletable\n file. Brand guidelines allow the standalone Wing Icon to form new lockups;\n the full lockup may not be modified, so it is not used here. */\n#topbar #logo a {\n color: var(--accent);\n letter-spacing: .01em;\n}\n\n\n/* Front office uses the dark lockup, not the orange one -- which the brand\n guidelines call for, and which also fixes the contrast: #F07C00 on a light\n topbar measures 2.77:1. Orange stays the accent for state, not the mark. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) #topbar #logo a { color: var(--n-999); }\n}\n:root[data-theme=\"light\"] #topbar #logo a { color: var(--n-999); }\n\n/* Active/selected state, previously just a lighter grey. */\n#topbar i.active,\n#topbar a.active {\n color: var(--accent);\n}\n\n/* Keyboard focus. Track 2 adds a keyboard layer, so a visible, branded focus\n ring is about to matter a great deal more than it does today. */\n:focus-visible {\n outline: 2px solid var(--accent);\n outline-offset: 1px;\n}\n\n/* Selected signature rows read as \"this is what you are acting on\". */\n#sigTable tbody tr.selected td {\n background: var(--accent-dim);\n}\n\n/* ============================================================================\n Background.\n\n Overridden here rather than in tripwire.css so upstream's default survives a\n rebase. The source is 21:9; under the existing `cover` + `center` a 16:9\n viewport trims the sides, which keeps the ship and loses the brightest edge\n of the nebula -- the framing this was chosen for.\n ========================================================================= */\n\n\n/* Read band: the background is decorative at phone width, so serve 79KB\n instead of 460KB. */\n}\n","/* ============================================================================\n THE PALETTE (default)\n\n The refit palette,\n adopted as Tripwire's default after a side-by-side on the preview. A warm\n charcoal scale that was chosen rather than inherited; two surfaces and one\n rule colour; bone text with dim as the subordinate weight (4.5:1 on both\n surfaces); blood for danger; sage / rust-bright / blood / void for hisec /\n lowsec / nullsec / J-space -- the EVE convention in a muted register, so\n the map's security colours are information rather than the loudest thing\n on the screen.\n\n What stays constant: the mark, the wordmark, and one\n accent -- the primary action, the ring, links. One discipline under a\n corp's flag, not one corp's brand on another's\n tool. Security chips stay filled with white text; that is the house rule.\n\n Type: Geist for text, Geist Mono for labels, ids and stats. The label is\n the signature -- 10px, uppercase, wide-tracked, dim -- and it is applied\n to every panel title, table header and footer label uniformly.\n\n Light theme is a print palette: paper, not white.\n ========================================================================= */\n\n/* ── THE DECK ──────────────────────────────────────────────────────────\n Grounds and neutrals from the house letterhead palette,\n a neutral charcoal ramp:\n brand grey #ADADAD for body text, brand dark grey #4D4D4D for rules,\n orange as the one accent. This puts Tripwire on the same deck as\n the letterhead -- same labels, same accent -- rather than on\n a warm ink.\n\n Data colours deliberately do NOT take the brand callouts. #57DB57 green\n and #0073F0 blue are display colours for a few words on a log line;\n a map paints them on a hundred chips at once and they shout (measured\n and rejected earlier on this branch). Sage / void / a desaturated warn\n stay, with the danger red. */\n:root {\n\t--background: #1b1b1b;\n\t--foreground: #f2f2f2; /* bone: headings, names, values */\n\t--card: #232323;\n\t--card-foreground: #f2f2f2;\n\t--popover: #2a2a2a;\n\t--popover-foreground: #f2f2f2;\n\t--muted: #2a2a2a;\n\t--muted-foreground: #8c8c8c; /* dim: labels, secondary */\n\t--text-body: #adadad; /* fog: brand grey, running text */\n\t--accent-surface: #2a2a2a;\n\t--border: #4d4d4d; /* brand dark grey */\n\t--border-soft: #303030;\n\t--border-strong: #5a5a5a;\n\t--input: #303030;\n\t--glow: #242424;\n\n\t--primary: var(--accent, #f07c00);\n\t--primary-foreground: #1b1b1b;\n\t--ring: var(--accent, #f07c00);\n\t--destructive: #e05252;\n\n\t--data-good: #7d9b76; /* hisec, stable */\n\t--data-warn: #d9a441; /* lowsec, destab -- desaturated brand yellow */\n\t--data-critical: #e05252; /* nullsec, critical, EOL */\n\t--data-info: #8b7aa8; /* J-space, jumps */\n\n\t--node-surface: #2a2a2a;\n\t--node-edge: #5a5a5a;\n\n\t--chart-gridline: rgba(242, 242, 242, .06);\n\t--chart-axis-text: #adadad;\n\n\t--font-ui: 'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace;\n\t--font-display: 'Montserrat', 'Geist', system-ui, sans-serif;\n}\n\n/* The front office: the light theme. Same brand hexes, light\n neutral grounds, dark grey ink. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: #e9e9e9;\n\t\t--foreground: #1f1f1f;\n\t\t--card: #f5f5f5;\n\t\t--card-foreground: #1f1f1f;\n\t\t--popover: #fdfdfd;\n\t\t--popover-foreground: #1f1f1f;\n\t\t--muted: #e4e4e4;\n\t\t--muted-foreground: #767676;\n\t\t--text-body: #4d4d4d;\n\t\t--accent-surface: #e4e4e4;\n\t\t--border: #adadad;\n\t\t--border-soft: #d8d8d8;\n\t\t--border-strong: #8c8c8c;\n\t\t--input: #e4e4e4;\n\t\t--glow: #ffffff;\n\t\t--primary-foreground: #ffffff;\n\t\t--destructive: #b03a3a;\n\t\t--data-good: #4c6a45;\n\t\t--data-warn: #9a6d12;\n\t\t--data-critical: #b03a3a;\n\t\t--data-info: #5d4f78;\n\t\t--node-surface: #fdfdfd;\n\t\t--node-edge: #adadad;\n\t\t--chart-gridline: rgba(31, 31, 31, .08);\n\t\t--chart-axis-text: #4d4d4d;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: #e9e9e9;\n\t--foreground: #1f1f1f;\n\t--card: #f5f5f5;\n\t--card-foreground: #1f1f1f;\n\t--popover: #fdfdfd;\n\t--popover-foreground: #1f1f1f;\n\t--muted: #e4e4e4;\n\t--muted-foreground: #767676;\n\t--text-body: #4d4d4d;\n\t--accent-surface: #e4e4e4;\n\t--border: #adadad;\n\t--border-soft: #d8d8d8;\n\t--border-strong: #8c8c8c;\n\t--input: #e4e4e4;\n\t--glow: #ffffff;\n\t--primary-foreground: #ffffff;\n\t--destructive: #b03a3a;\n\t--data-good: #4c6a45;\n\t--data-warn: #9a6d12;\n\t--data-critical: #b03a3a;\n\t--data-info: #5d4f78;\n\t--node-surface: #fdfdfd;\n\t--node-edge: #adadad;\n\t--chart-gridline: rgba(31, 31, 31, .08);\n\t--chart-axis-text: #4d4d4d;\n}\n\n/* Flat ink. The ship stays on the landing page, where it is a brand\n moment; behind three columns of data it was competition. */\n#wrapper::before { background: radial-gradient(ellipse at 30% -20%, var(--glow) 0%, var(--background) 60%); }\nbody { background-image: none; }\n\n/* Running text in the brand grey; names, values and headings in bone. */\n#sigTable td, .commentBody, .sys-meta, .sys-extra, .field-label, .ui-dialog .ui-dialog-content { color: var(--text-body); }\n#sigTable td:nth-child(1), .sys-name, .field-value, #chainMap div.node > h4.nodeSystem, .stats dd { color: var(--foreground); }\n\n/* The label: mono, small, uppercase, tracked, dim. Everywhere it means\n \"this is a label\", so it reads as one system. */\n.panel-title,\n.ui-dialog .ui-dialog-title,\n#sigTable th,\n.gate-list-label,\n.field-group,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label,\n.sys-links a,\n#activityGraphControls > a,\n#cmd-palette .cmd-group,\n.sig-stats {\n\tfont-family: var(--font-mono);\n\tfont-size: 10px;\n\tfont-weight: 500;\n\tletter-spacing: .22em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.sys-links a:hover,\n#activityGraphControls > a:hover,\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] { color: var(--foreground); }\n\n/* Ids, times and counts in the mono. */\n#sigTable td:nth-child(1),\n#sigTable td:nth-child(3),\n#statusbar .bar-value,\n#signature-count,\n.node .nodeType,\nkbd { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }\n\n/* Surfaces: one small radius, a thin rule, and a deep shadow only where\n something floats. */\n.gridWidget { border-radius: 4px; }\n.ui-dialog, #cmd-palette, #inline-edit, #panel-menu {\n\tborder-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0, 0, 0, .5);\n}\n#chainMap div.node, #chainMap div.loop { border-radius: 4px; }\n\n/* Neutral chips flat on panel-2 with a rule; security and state chips keep\n their fill and white text. */\n.sig-chip, h4.chip, .chip, .gate-chip {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: 3px;\n}\n.sig-chip.on { background: var(--muted); border-color: var(--border-strong); color: var(--foreground); }\n\n/* Primary action: orange fill, ink text; brighter on approach. */\n.controls .bar-btn.bar-primary:hover,\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 85%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 85%, white);\n}\n\n::selection { background: var(--primary); color: var(--background); }\n\n/* ── Second look ─────────────────────────────────────────────────────────\n Bar hierarchy: title · primary · everything else. The right-hand group\n sits at the label weight at rest and comes up on approach, so eleven\n controls on a strip read as three things. */\n.gridWidget > .controls > .bar-right .bar-btn,\n.gridWidget > .controls > .bar-right .panel-hide,\n.gridWidget > .controls > .panel-hide,\n#chainWidget > .controls > .bar-btn.bar-icon { color: var(--muted-foreground); }\n.gridWidget > .controls > .bar-right .bar-btn:hover,\n.gridWidget > .controls > .panel-hide:hover,\n#chainWidget > .controls > .bar-btn.bar-icon:hover { color: var(--foreground); }\n.gridWidget > .controls > .bar-right .bar-btn.bar-toggle.active { color: var(--primary); }\n\n/* Range chips had become tiny bordered boxes next to the borderless legend:\n two idioms in one row. They are quiet mono text like the links beneath. */\n#activityGraphControls > a {\n\tborder: 0;\n\tbackground: transparent;\n\tpadding: 0 2px;\n\theight: auto;\n\tcolor: var(--muted-foreground);\n}\n#activityGraphControls > a.active,\n#activityGraphControls > a[aria-current] { color: var(--primary); }\n#activityGraphControls { gap: var(--space-2) var(--space-3); }\n#activityLegend .legend-chip { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-foreground); }\n#activityLegend .legend-chip:hover { color: var(--foreground); }\n#activityLegend .legend-chip.off { opacity: .5; }\n\n/* The graph sits in the panel like a card of its own. */\n#activityGraph { margin: var(--space-2) 0 0; }\n\n/* Sliders: the last control not in the palette. */\n.slider-wrap .ui-slider { background: var(--input); height: 3px; }\n.slider-wrap .ui-slider .ui-slider-handle { background: var(--primary); width: 14px; height: 14px; top: -6px; margin-left: -7px; border: 2px solid var(--popover); box-sizing: border-box; }\n.slider-value { font-family: var(--font-mono); font-size: 11px; color: var(--muted-foreground); }\n.slider-pair > span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }\n\n/* ── The letterhead ──────────────────────────────────────────────────────\n Three zones. Left: the system you are viewing, large, with your own\n location and the search beneath it. Centre: the corp's mark and\n wordmark. Right: you -- a portrait you can actually make out, name and\n mask beside it, then the two tools. The app's own name lives in the\n footer with its version; the header is the corp's. */\n#topbar {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n\talign-items: center;\n\tgap: 16px;\n\tmin-height: 76px;\n\tpadding: 8px 18px;\n\tbackground: linear-gradient(180deg, var(--card), var(--background));\n\tborder-bottom: 1px solid var(--border);\n}\n#topbar > .align-left, #topbar > .align-right, #topbar > .align-center { display: flex; align-items: center; min-width: 0; }\n#topbar > .align-left { justify-content: flex-start; flex-direction: column; align-items: flex-start; gap: 2px; overflow: visible; }\n#topbar > .align-center{ justify-content: center; }\n#topbar > .align-right { justify-content: flex-end; gap: 14px; }\n\n/* Left: the viewed system. */\n.hdr-sys { display: flex; align-items: center; gap: 8px; }\n#hdr-system {\n\tfont-family: var(--font-display);\n\tfont-size: 22px;\n\tfont-weight: 700;\n\tletter-spacing: -.01em;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n#hdr-system:hover { color: var(--primary); }\n#topbar #search { color: var(--muted-foreground); cursor: pointer; }\n#topbar #search:hover { color: var(--foreground); }\n#topbar #systemSearch { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 11px; }\n#topbar #currentSpan { display: inline-flex; align-items: center; gap: 6px; }\n#topbar #currentSpan .bar-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted-foreground); }\n#topbar #EVEsystem { font-family: var(--font-mono); font-size: 11px; color: var(--text-body); }\n#topbar #follow { color: var(--muted-foreground); }\n/* On is orange. The line above outranked the legacy .active colour, so the\n toggle worked and looked like it had not. */\n#topbar #follow.active { color: var(--primary); }\n#topbar #follow:hover { color: var(--foreground); }\n#topbar #follow.active:hover { color: var(--primary); }\n#topbar #searchSpan input {\n\tfont-family: var(--font-mono); font-size: 11px;\n\tmin-height: 24px; padding: 0 8px; max-width: 12rem;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px; color: var(--foreground);\n}\n\n/* Centre: the mark. Two files, one per theme. */\n#topbar #logo { display: block; line-height: 0; }\n#topbar #logo img { height: 46px; width: auto; display: block; }\n#topbar #logo a::before, #topbar #logo::before { content: none !important; }\n#topbar #logo .logo-light { display: none; }\n@media (prefers-color-scheme: light) { :root:not([data-theme=\"dark\"]) #topbar #logo .logo-dark { display: none; } :root:not([data-theme=\"dark\"]) #topbar #logo .logo-light { display: block; } }\n:root[data-theme=\"light\"] #topbar #logo .logo-dark { display: none; }\n:root[data-theme=\"light\"] #topbar #logo .logo-light { display: block; }\n\n/* Right: you. */\n#topbar #login h3 { margin: 0; }\n#topbar #login h3 > a#user { display: flex; align-items: center; gap: 10px; text-decoration: none; }\n#topbar #user-avatar.avatar {\n\twidth: 44px; height: 44px; border-radius: 4px;\n\tborder: 1px solid var(--border); object-fit: cover; display: block;\n}\n#topbar .hdr-pilot { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; line-height: 1.15; }\n#topbar #user-no-track, #topbar #user-track-name { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; color: var(--foreground); }\n#topbar #user-track { display: inline-flex; align-items: center; gap: 4px; }\n#topbar .hdr-mask, #topbar .hdr-mask a, #topbar #mask {\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); text-decoration: none;\n}\n#topbar .hdr-mask a:hover, #topbar .hdr-mask a:hover #mask { color: var(--foreground); }\n#topbar .hdr-tools { display: flex; align-items: center; gap: 4px; margin-left: 4px; padding-left: 14px; border-left: 1px solid var(--border-soft); }\n#topbar .hdr-tools i { color: var(--muted-foreground); cursor: pointer; }\n#topbar .hdr-tools i:hover { color: var(--foreground); }\n#topbar .hdr-tools [data-icon]::before { font-size: 18px; }\n\n/* The mask menu anchors to the letterhead, not to a pixel offset. */\n#topbar #mask-menu { top: 64px; right: 18px; }\n\n/* Panel heads: a band under the title. */\n.gridWidget > .controls {\n\tbackground: linear-gradient(180deg, var(--popover), var(--card));\n\tborder-bottom: 1px solid var(--border);\n}\n.gridWidget, #chainMap div.node, .ui-dialog { border-radius: 3px; }\n.gridWidget { border: 1px solid var(--border); }\n\n/* Hairlines inside content take the soft rule. */\n#sigTable tbody tr, .comment { border-color: var(--border-soft); }\n\n/* ── The letterhead on a phone ───────────────────────────────────────────\n This file sorts after _override-d-phone.css, so the phone header has to\n be written here or the grid above wins. One row: system name, portrait,\n tools. The mark and the location line are desktop and tablet things. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 10px;\n\t\tmin-height: 0;\n\t\tpadding: 8px 12px;\n\t}\n\t#topbar > .align-center { display: none; }\n\t#topbar > .align-left { flex: 1 1 auto; flex-direction: column; align-items: flex-start; }\n\t#topbar #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-right { flex: 0 0 auto; width: auto; justify-content: flex-end; gap: 8px; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar .hdr-tools { margin-left: 0; padding-left: 8px; }\n\t#topbar #mask-menu { top: 52px; right: 12px; }\n}\n\n/* ── The tracking dropdown ────────────────────────────────────────────────\n account.css collapses every .avatar inside it to 1px -- a legacy trick\n from when the portrait was painted some other way -- which is why the\n character rows showed a name and no face. Portraits at a size a face\n survives, and the dropdown on the same surfaces as everything else. */\n#login #content .tracking-clone td.avatar img.avatar { width: 36px; height: 36px; border-radius: 3px; border: 1px solid var(--border); }\n#login #content #account #avatar img.avatar-lg { width: 56px; height: 56px; border-radius: 4px; border: 1px solid var(--border); }\n#login #content.dialog-like {\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0,0,0,.5); padding: var(--space-2);\n}\n#login #content .triangle { display: none; }\n#login #logoutTable tbody th {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .22em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); background: transparent; border-bottom: 1px solid var(--border); text-align: left; padding: 4px 6px;\n}\n#login #content #track { border-right: 1px solid var(--border-soft); }\n#login #content #track .tracking-clone { border: 1px solid var(--border); border-radius: 3px; opacity: .7; }\n#login #content #track .tracking-clone.active { border-color: var(--primary); opacity: 1; }\n#login #content #track .tracking-clone:hover { border-color: var(--border-strong); opacity: 1; }\n#login #content table .text { color: var(--text-body); }\n#login #content table td.name.text { color: var(--foreground); }\n\n/* ── The mask as a capsule ────────────────────────────────────────────────\n Was a star glyph and the word \"Corp\" run together. A capsule: a source\n dot -- orange for corporate, void for alliance, sage for personal, dim for\n global -- and the label in the label register. */\n#topbar #mask-menu-link { display: inline-block; }\n#topbar #mask .mask {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 18px; padding: 0 8px 0 7px;\n\tborder: 1px solid var(--border); border-radius: 999px;\n\tbackground: var(--popover);\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #mask-menu-link:hover .mask { border-color: var(--border-strong); color: var(--foreground); }\n#topbar #mask .mask i[data-icon] { width: 7px; height: 7px; border-radius: 50%; background: var(--muted-foreground); display: inline-block; }\n#topbar #mask .mask i[data-icon]::before { content: none; }\n#topbar #mask .mask i.corporate { background: var(--primary); }\n#topbar #mask .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.character { background: var(--data-good); }\n#topbar #mask .mask i.global { background: var(--muted-foreground); }\n\n/* ── The mark, larger, riding the letterhead's edge ──────────────────────\n At 46px the wordmark read as a label. It is the letterhead; it gets the\n height, and it hangs a little over the hairline into the gap above the\n panels so the header reads as a plate the mark is mounted on rather than\n a strip the mark is squeezed into. The panel area gives back the room. */\n@media (min-width: 768px) and (min-height: 600px) {\n\t/* The header keeps its height; the mark is taller than the header and\n\t hangs 14px past the hairline into the gap the panel area gives back. */\n\t#topbar { overflow: visible; height: 64px; min-height: 64px; padding-top: 0; padding-bottom: 0; }\n\t#topbar > .align-center { align-self: flex-start; position: relative; z-index: 3; }\n\t/* A pack may ask for a taller mark (logo.height); a round seal wants a\n\t little more than a wide wordmark. It rides the bar's bottom edge. */\n\t#topbar #logo img { height: 64px; margin-top: 0; filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .55)); }\n\t.gridster { padding-top: 10px; }\n}\n\n/* Below the desktop breakpoint the legacy stylesheet fixes the header to the\n viewport and nothing offsets the content, so the panels started at y=20\n underneath it (measured at 1100x700). The tablet page scrolls; the header\n stays in flow and sticks to the top as it goes. */\n@media (max-width: 1279px) {\n\t#topbar { position: sticky; top: 0; z-index: 30; }\n}\n\n/* ── \"Following you\" ─────────────────────────────────────────────────────\n Clicking the tab that is already selected deselects it, and with no tab\n selected the map roots at whichever system you are viewing. That is a\n mode, and it was invisible: the strip just showed no tab highlighted and\n the map \"kept jumping\". Name it. */\n#chainTabs:not(:has(.tab.current))::before {\n\tcontent: \"Following you\";\n\tdisplay: inline-flex; align-items: center;\n\theight: 20px; padding: 0 8px; margin-right: 6px;\n\tborder: 1px solid color-mix(in oklab, var(--primary) 55%, var(--border));\n\tborder-radius: 999px;\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--primary);\n}\n\n/* ── The top row takes what the System panel needs ─────────────────────\n system-fit.js sets --top-row when the panel cannot hold the graph at its\n floor; otherwise the row is the 46vh the layout chose. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 46vh)) 1fr; }\n}\n\n/* ── The room lights: sun and moon on the letterhead ─────────────────── */\n#topbar .hdr-tools .themebtn {\n\tbackground: none; border: 1px solid var(--border); border-radius: 3px; cursor: pointer;\n\tcolor: var(--muted-foreground); font-size: 14px; line-height: 1; padding: 4px 8px;\n\theight: 26px; display: inline-flex; align-items: center; flex: 0 0 auto;\n\tfont-family: var(--font-ui);\n}\n#topbar .hdr-tools .themebtn:hover { color: var(--primary); border-color: var(--primary); }\n\n/* ── The pilot dropdown: cards, not nested tables ──────────────────────\n The tracking list is a table per character (avatar cell spanning five\n rows of name, system, station, ship, ship name) inside a table inside a\n table. Rendered as-is the portrait floated over the name and the eye and\n ship icons drifted down the middle. The table skeleton stays (tracking.js\n clones it); its rows are flattened and each character is laid out as a\n card: portrait, status and controls in a narrow left column, the five\n text lines stacked beside it. */\n#login #content #logoutTable { border-collapse: separate; border-spacing: 0; }\n#login #content #logoutTable > tbody > tr > td { vertical-align: top; padding: 0 12px; }\n#login #content #logoutTable > tbody > tr > td:first-child { padding-left: 0; }\n#login #content #logoutTable > tbody > tr > td:last-child { padding-right: 0; }\n#login #content #track, #login #content #account { min-width: 260px; }\n#login #content #track th, #login #content #account th { text-align: left; padding: 0 0 6px; }\n#login #content #tracking { display: flex; flex-direction: column; gap: 6px; padding: 0; }\n\n#login #content #track .tracking-clone,\n#login #content #track .tracking-clone > tbody { display: block; }\n#login #content #track .tracking-clone > tbody > tr { display: contents; }\n#login #content #track .tracking-clone > tbody {\n\tdisplay: grid;\n\tgrid-template-columns: 44px minmax(0, 1fr);\n\tgrid-template-rows: repeat(5, auto);\n\tcolumn-gap: 10px; row-gap: 1px;\n\tpadding: 8px 10px;\n}\n#login #content #track .tracking-clone td { padding: 0; border: 0; line-height: 1.3; }\n#login #content #track .tracking-clone td.avatar {\n\tgrid-column: 1; grid-row: 1 / span 5;\n\tdisplay: flex; flex-direction: column; align-items: center; gap: 4px;\n}\n#login #content #track .tracking-clone td.avatar img.avatar { display: block; }\n#login #content #track .tracking-clone td.avatar hr.bar { width: 36px; margin: 0; height: 3px; border: 0; border-radius: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group { display: flex; gap: 6px; margin-top: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group i { font-size: 14px; color: var(--muted-foreground); cursor: pointer; }\n#login #content #track .tracking-clone td.avatar .control-group i.active,\n#login #content #track .tracking-clone td.avatar .control-group i:hover { color: var(--primary); }\n#login #content #track .tracking-clone td.name { grid-column: 2; grid-row: 1; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.system { grid-column: 2; grid-row: 2; }\n#login #content #track .tracking-clone td.station { grid-column: 2; grid-row: 3; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.ship { grid-column: 2; grid-row: 4; }\n#login #content #track .tracking-clone td.shipname { grid-column: 2; grid-row: 5; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.text:empty::before,\n#login #content #track .tracking-clone td.text:has(> :empty):not(:has(*))::before { content: none; }\n#login #content #track .tracking-clone i.alert { grid-column: 2; grid-row: 1; justify-self: end; }\n\n/* The signed-in character: portrait beside name and corporation. */\n#login #content #account, #login #content #account > tbody { display: block; }\n#login #content #account > tbody { display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: 12px; align-items: start; }\n#login #content #account > tbody > tr { display: contents; }\n#login #content #account th { grid-column: 1 / -1; }\n#login #content #account td { padding: 0; border: 0; }\n#login #content #account td#avatar { grid-column: 1; grid-row: 2 / span 2; }\n#login #content #account td#characterName { grid-column: 2; grid-row: 2; font-weight: 600; padding-top: 4px; }\n#login #content #account td.text:not(#characterName) { grid-column: 2; grid-row: 3; color: var(--muted-foreground); }\n#login #content #account td:empty { display: none; }\n\n/* Buttons row. */\n#login #content #logoutTable > tbody > tr:last-child > td { padding-top: 12px; }\n#login #content #logoutTable > tbody > tr:last-child > td:last-child { text-align: right; }\n\n/* ── The mask menu: a popover, in the capsule's language ──────────────\n Was orange links stacked with a stray glyph each. Rows: the same source\n dot the capsule wears, the label, and a tick on the one you are in.\n Manage and admin sit under a rule in the quiet register. */\n#topbar #mask-menu {\n\tmin-width: 176px; padding: 4px 0;\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.45);\n}\n#topbar #mask-menu .triangle { display: none; }\n#topbar #mask-menu a {\n\tdisplay: flex; align-items: center; gap: 8px;\n\tpadding: 6px 12px; margin: 0;\n\tcolor: var(--foreground); font-size: var(--fs-sm); font-weight: 500; text-decoration: none;\n\tline-height: 1.2;\n}\n#topbar #mask-menu a:hover { background: var(--muted); color: var(--foreground); }\n#topbar #mask-menu a .mask { display: inline-flex; align-items: center; gap: 8px; color: inherit; font-size: inherit; }\n#topbar #mask-menu a .mask i[data-icon] {\n\twidth: 8px; height: 8px; border-radius: 50%; padding: 0; margin: 0; flex: 0 0 auto;\n\tdisplay: inline-block; transform: none; background: var(--muted-foreground);\n}\n#topbar #mask-menu a .mask i[data-icon]::before { content: none; }\n#topbar #mask-menu a .mask i.global { background: var(--muted-foreground); }\n#topbar #mask-menu a .mask i.personal,\n#topbar #mask-menu a .mask i.character { background: var(--data-good); }\n#topbar #mask-menu a .mask i.corporate { background: var(--primary); }\n#topbar #mask-menu a .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.personal { background: var(--data-good); }\n#topbar #mask-menu a.active::after {\n\tcontent: \"\\2713\"; margin-left: auto; color: var(--primary); font-size: 12px; font-weight: 700;\n}\n#topbar #mask-menu hr.bar { height: 1px; border: 0; margin: 4px 0; background: var(--border); }\n#topbar #mask-menu #mask-link, #topbar #mask-menu #admin {\n\tcolor: var(--muted-foreground); font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n}\n#topbar #mask-menu #mask-link:hover, #topbar #mask-menu #admin:hover { color: var(--foreground); }\n\n/* The eye and ship toggles sit in a row under the portrait. */\n#login #content #track .tracking-clone td.avatar .control-group { width: auto; min-width: 36px; justify-content: center; }\n\n/* ── The ship, under the name ─────────────────────────────────────────── */\n#topbar .hdr-line2 { display: flex; align-items: center; gap: 8px; }\n#topbar .hdr-ship {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; line-height: 18px;\n}\n#topbar .hdr-ship.hidden { display: none; }\n\n/* ── Phone header: the mask dot is a dot, and the name gives way ───────\n The coarse-pointer rule makes every #topbar i a 44px target; the mask\n capsule's source dot is an i too, and became a 44px orange disc beside\n the avatar. And the system name did not shrink, so the pilot block sat\n on top of it. */\n@media (pointer: coarse) {\n\t#topbar #mask .mask i[data-icon], #topbar #mask-menu a .mask i[data-icon] {\n\t\tmin-width: 0; min-height: 0; width: 7px; height: 7px; padding: 0;\n\t}\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-left { min-width: 0; }\n\t#topbar #hdr-system { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\t#topbar > .align-right { flex-shrink: 0; }\n\t#topbar #login h3 > a#user { gap: 6px; }\n}\n\n/* ── Install tip (phones) ─────────────────────────────────────────────── */\n#install-tip {\n\tdisplay: flex; align-items: center; gap: 10px;\n\tpadding: 8px 12px;\n\tbackground: color-mix(in oklab, var(--primary) 14%, var(--card));\n\tborder-bottom: 1px solid var(--border);\n\tfont-size: var(--fs-sm); color: var(--foreground);\n}\n#install-tip .tip-text { flex: 1 1 auto; min-width: 0; }\n#install-tip button { min-height: 32px; border-radius: 4px; font: inherit; cursor: pointer; }\n#install-tip .tip-install { background: var(--primary); color: #1b1207; border: 0; padding: 0 12px; font-weight: 600; }\n#install-tip .tip-close { background: none; border: 0; color: var(--muted-foreground); font-size: 18px; line-height: 1; padding: 0 6px; }\n\n/* ── The top row: smaller by default, and it does not follow the system ──\n 40vh unless a visited system needed more (system-fit.js remembers the\n largest, per window height). The chain gets the rest. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 40vh)) 1fr; }\n}\n\n/* ── Range in the header, links beside the legend ─────────────────────── */\n#infoWidget > .controls .bar-right #sys-range {\n\tdisplay: inline-flex; align-items: center; gap: 2px; margin-right: 6px;\n\tpadding-right: 8px; border-right: 1px solid var(--border-soft);\n}\n#infoWidget > .controls .bar-right #sys-range a {\n\tdisplay: inline-flex; align-items: center; height: 22px; padding: 0 6px;\n\tborder-radius: 3px; text-decoration: none;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#infoWidget > .controls .bar-right #sys-range a:hover { color: var(--foreground); background: var(--muted); }\n#infoWidget > .controls .bar-right #sys-range a.active { color: var(--primary); background: var(--muted); }\n#activityGraphControls { flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-3); }\n#activityGraphControls #infoLinks.in-legend-row { margin: 0 0 0 auto; padding: 0; border: 0; }\n#activityGraphControls #activityLegend { margin-right: 0; }\n\n/* Legend and links on one row: short chip labels, tighter tracking. */\n#activityLegend { gap: 2px 4px; }\n#activityLegend .legend-chip { padding: 0 5px 0 4px; letter-spacing: .06em; gap: 5px; }\n#activityGraphControls #infoLinks.in-legend-row { gap: 8px; }\n#activityGraphControls #infoLinks.in-legend-row a { letter-spacing: .12em; padding: 0; }\n\n/* ── Brand packs ─────────────────────────────────────────────────────────\n A pack without a logo image shows the product name in the display face. */\n#topbar #logo .logo-text { font-family: var(--font-display); font-weight: 700; font-size: 22px; letter-spacing: .02em; color: var(--foreground); line-height: 64px; }\n\n/* ── Typographic lockup: a small line, the name, a small line ───────────\n Set in the page's own fonts (an SVG cannot reach them). The name\n takes the brand face and the accent; the small lines the label register;\n optional rule-and-star flourishes either side of the name. */\n#topbar #logo .logo-lockup { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; line-height: 1; padding: 6px 0; }\n#topbar #logo .lockup-small {\n\tfont-family: var(--font-mono); font-size: 8.5px; font-weight: 500; letter-spacing: .26em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #logo .lockup-main {\n\tdisplay: inline-flex; align-items: center; gap: 10px;\n\tfont-family: var(--font-brand, var(--font-display)); font-size: 19px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;\n\tcolor: var(--primary); padding-left: .2em; /* balances the trailing tracking */\n}\n#topbar #logo .lockup-main.has-flourish::before,\n#topbar #logo .lockup-main.has-flourish::after {\n\tcontent: \"\"; width: 44px; height: 2px; background: var(--primary); flex: 0 0 auto;\n\t-webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px) ; mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px);\n}\n#topbar #logo .lockup-main.has-flourish::before { -webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px); }\n\n/* ── Signature dialog: compact, sides labelled in the gutter ──────────────\n Upstream's dialog was tighter and named each wormhole side with a\n vertical label down the left; the rebuild had replaced those with three\n horizontal headings (WORMHOLE, SIDE, OTHER SIDE) and looser\n rows, and grew a third taller. Back to the gutter, minus the headings. */\n#dialog-signature #wormhole::before,\n#dialog-signature #wormhole .side + .side::before { content: none; }\n#dialog-signature #wormhole { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature #wormhole .side { position: relative; padding-left: 20px; min-height: 0; }\n#dialog-signature #wormhole .side + .side { margin-top: 4px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature .sideLabel {\n\tposition: absolute; left: 0; top: 0; bottom: 5px; width: 14px;\n\tmargin: 0; padding: 0; border: 0;\n\tdisplay: flex; align-items: center; justify-content: center;\n\twriting-mode: vertical-rl; transform: rotate(180deg);\n\tfont-family: var(--font-mono); font-size: 9.5px; font-weight: 500; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; text-align: center;\n}\n#dialog-signature #wormhole .side + .side .sideLabel { top: 8px; }\n#dialog-signature .row { margin: 0 0 5px; gap: 6px; }\n#dialog-signature .row > .label:first-child { flex: 0 0 50px; }\n#dialog-signature #wormhole .row > .label:first-child { flex-basis: 44px; }\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button { min-height: 26px; }\n#dialog-signature .mini-selector + label { min-height: 24px; padding-top: 0; padding-bottom: 0; }\n/* signatures.css sizes the two labels by position (90px / 135px wide, one\n hung 70px below its side) with an id-heavier selector; match it. */\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\twidth: 14px; bottom: 5px; text-align: center; transform-origin: 50% 50%;\n}\n#dialog-signature #wormhole .side:last-child .sideLabel { top: 8px; }\n/* Fields read as fields: the name inputs had the dialog's own ground and a\n border one step from it, so they were invisible until focused. And the\n nine class chips plus divider fit the row. */\n#dialog-signature input[type=\"text\"] { background: var(--input); border-color: var(--border); }\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); }\n#dialog-signature .quickSelectBar { gap: 3px; }\n#dialog-signature .quickSelectBar button { min-width: 24px; padding: 0 4px; }\n\n/* ══ Signature dialog: the design pass ═══════════════════════════════════\n One label column across the whole form; the side gutter is a column of\n its own, so the top rows are indented to match the wormhole rows. Life\n and Mass are connected segmented controls, the class chips two even\n groups, type and leads each one control with its menu button attached.\n ─────────────────────────────────────────────────────────────────────── */\n.ui-dialog:has(#dialog-signature) { width: min(392px, calc(100vw - 2rem)) !important; }\n#dialog-signature #form-signature > .row,\n#dialog-signature #site > .row { padding-left: 20px; }\n\n#dialog-signature .row { margin: 0 0 6px; gap: 6px; align-items: center; }\n#dialog-signature .row > .label:first-child,\n#dialog-signature #wormhole .row > .label:first-child {\n\tflex: 0 0 54px; text-align: right;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature .row > .label:not(:first-child) { font-family: var(--font-mono); color: var(--muted-foreground); }\n\n/* Fields: one height, one ground, one edge. Ids and hull types in the mono. */\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tmin-height: 26px; height: 26px; box-sizing: border-box;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px;\n\tfont-size: 12px; color: var(--foreground);\n}\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); outline: 0; box-shadow: 0 0 0 2px color-mix(in oklab, var(--primary) 30%, transparent); }\n#dialog-signature .signatureID { width: 46px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature .wormholeType { width: 58px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature [name=\"signatureName\"], #dialog-signature [name=\"wormholeName\"] { flex: 1 1 auto; min-width: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 112px; display: inline-flex; align-items: center; }\n\n/* Comboboxes: the input and its menu button are one control. */\n#dialog-signature .custom-combobox { display: inline-flex; align-items: stretch; }\n#dialog-signature .custom-combobox input { border-top-right-radius: 0; border-bottom-right-radius: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle {\n\tposition: static; margin: 0 0 0 -1px; width: 24px; height: 26px; padding: 0;\n\tborder: 1px solid var(--border); border-radius: 0 3px 3px 0; background: var(--muted); color: var(--muted-foreground);\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .custom-combobox .custom-combobox-toggle:hover { color: var(--foreground); border-color: var(--border-strong); }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { flex: 1 1 auto; display: inline-flex; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] .custom-combobox { flex: 1 1 auto; }\n#dialog-signature .leadsTo { width: auto; flex: 1 1 auto; min-width: 0; }\n\n/* Lifetime: one boxed control, numbers in the mono. */\n#dialog-signature .duration-picker { height: 26px; padding: 0 8px; gap: 4px; border-color: var(--border); background: var(--input); }\n#dialog-signature .duration-picker input { width: 22px; text-align: center; font-family: var(--font-mono); font-size: 12px; height: auto; min-height: 0; border: 0; background: transparent; }\n#dialog-signature .duration-picker span, #dialog-signature .duration-picker label { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-foreground); }\n\n/* Life and Mass: segmented. The chosen state is filled in its colour. */\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n\tmin-height: 26px; height: 26px; padding: 0 12px; margin: 0 0 0 -1px;\n\tborder: 1px solid var(--border); border-radius: 0; background: var(--input);\n\tfont-size: 12px; font-weight: 500; color: var(--muted-foreground); line-height: 1;\n}\n#dialog-signature .mini-selector:first-of-type + label { border-radius: 3px 0 0 3px; margin-left: 0; }\n#dialog-signature .row > .mini-selector + label:last-child { border-radius: 0 3px 3px 0; }\n#dialog-signature .mini-selector + label:hover { color: var(--foreground); background: var(--muted); border-color: var(--border); }\n#dialog-signature .mini-selector:checked + label { position: relative; z-index: 1; border-color: transparent; }\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); color: #ffffff; }\n\n/* Class and hull chips: two even groups, the text divider gone. */\n#dialog-signature .quickSelectBar { display: inline-flex; flex-wrap: nowrap; gap: 3px; font-size: 0; margin: 0; }\n#dialog-signature .row > .quickSelectBar { flex-basis: 100%; margin-left: 60px; }\n#dialog-signature .quickSelectBar button {\n\tmin-width: 26px; height: 22px; padding: 0 5px; border: 1px solid var(--border); border-radius: 3px;\n\tbackground: var(--input); font-family: var(--font-mono); font-size: 10px; font-weight: 600; letter-spacing: .04em; line-height: 1;\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .quickSelectBar button:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature #leadsToQuickBar button[value=\"High-Sec\"] { margin-left: 8px; }\n#dialog-signature .wormholeTypeQuickSelect { margin-left: 0; flex-basis: auto; }\n#dialog-signature .wormholeTypeQuickSelect:empty { display: none; }\n\n/* The side gutter, one column wide, the labels centred in it. */\n#dialog-signature #wormhole .side { padding-left: 20px; }\n#dialog-signature .sideLabel,\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel { width: 14px; left: 0; font-size: 9px; letter-spacing: .2em; }\n\n/* A missing required field: the edge in the danger colour, no halo. */\n#dialog-signature .sig-missing, #dialog-signature .sig-missing:focus { border-color: var(--destructive); box-shadow: none; }\n/* Combobox menu button: its sprite icon was absolutely positioned against\n the wrapper, so it landed inside the input. The button is the positioned\n box, the sprite is gone, and a chevron is drawn in the current colour. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { position: relative; text-indent: 0; overflow: hidden; }\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon,\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space { display: none; }\n#dialog-signature .custom-combobox .custom-combobox-toggle::after {\n\tcontent: \"\"; width: 6px; height: 6px; margin-top: -3px;\n\tborder-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg);\n}\n/* The type menu: text first, chevron at the right edge. */\n#dialog-signature #signatureType .ui-selectmenu-button { display: inline-flex; align-items: center; gap: 6px; padding: 0 8px; width: auto !important; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text { flex: 1 1 auto; margin: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon { order: 2; margin: 0; position: static; }\n/* Lifetime: the duration picker's blocks in one boxed control, numbers in the mono. */\n#dialog-signature .bdp-input {\n\tdisplay: inline-flex; align-items: center; gap: 12px; height: 26px; padding: 0 10px;\n\tborder: 1px solid var(--border); border-radius: 3px; background: var(--input);\n}\n#dialog-signature .bdp-block { display: inline-flex; align-items: baseline; gap: 4px; }\n#dialog-signature .bdp-block br { display: none; }\n#dialog-signature .bdp-block a { text-decoration: none; }\n#dialog-signature .bdp-block a span { font-family: var(--font-mono); font-size: 13px !important; font-weight: 500; color: var(--foreground); line-height: 1; }\n#dialog-signature .bdp-block a:hover span { color: var(--primary); }\n#dialog-signature .bdp-block .bdp-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-foreground); }\n/* The picker's seconds block is hidden by class; keep it that way. The\n control then fits the LENGTH row. */\n#dialog-signature .bdp-block.hidden { display: none !important; }\n#dialog-signature .bdp-input { gap: 10px; padding: 0 8px; }\n/* Combobox: input and button touch, and the pair never outgrows the row. */\n#dialog-signature .custom-combobox { gap: 0; max-width: 100%; }\n#dialog-signature .custom-combobox > * { margin: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle { margin-left: -1px; flex: 0 0 24px; }\n#dialog-signature .custom-combobox input.leadsTo { flex: 1 1 0; width: 0; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { max-width: 100%; }\n/* signatures.css offsets the toggle with right:-20px for its absolute\n layout; on a relative box that is a 20px shove. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { right: auto; left: auto; top: auto; bottom: auto; width: 24px; }\n\n/* Phone: the panel bar has no room for the range control beside the\n panel buttons -- the close button was wrapping onto a second line. The\n graph still shows the last 24h. */\n@media (max-width: 767px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n}\n\n/* ══ Feedback round (first corp feedback, 2026-09-04) ════════════════════ */\n\n/* ── 1. Chain nodes: the same card, half the height ──────────────────────\n The class chip sat on its own line above the name and the statics hung\n half below the card; at zoom 1.2 that was 173x70 with an 84px row pitch\n against upstream's 30px pill. Two lines: chip + name + pips, then hull or\n sig id + statics inline. About 120x40 at zoom 1. Security reads at full\n strength on the left edge and in the chip, in both rooms. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, 1fr) auto;\n\tgrid-template-areas: \"class name pips\" \"type type statics\";\n\talign-items: center; column-gap: 5px; row-gap: 2px;\n\twidth: 120px; min-height: 0; height: auto !important;\n\tpadding: 4px 7px 4px 6px; margin: 0;\n\tborder-left: 3px solid var(--node-edge);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, .35);\n\toverflow: visible;\n}\n#chainMap div.node > .nodeClass { grid-area: class; margin: 0; order: 0; }\n#chainMap div.node > .nodeSystem { grid-area: name; margin: 0; padding: 0; order: 0; font-size: 12px; line-height: 16px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; margin: 0; order: 0; gap: 2px; font-size: 8px; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; order: 0; min-height: 0; font-size: 10px; line-height: 14px; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: .04em; }\n#chainMap div.node > .statics { grid-area: statics; position: static; transform: none; margin: 0; gap: 3px; justify-content: flex-end; order: 0; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 14px; min-width: 18px; padding: 0 5px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > .nodeClass > span { height: 15px; padding: 0 5px; font-size: 10px; }\n#chainMap div.node > .nodeIcons { top: 2px; right: 4px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name pips\"; }\n#chainMap div.loop { width: 120px; padding: 4px 7px; }\n\n/* Security and class on the edge, full strength; tokens carry both rooms. */\n#chainMap div.greenNode.node { border-left-color: var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--data-critical); }\n#chainMap div.node:has(> .nodeClass .wh),\n#chainMap div.node:has(> .nodeClass .class-1), #chainMap div.node:has(> .nodeClass .class-2), #chainMap div.node:has(> .nodeClass .class-3) { border-left-color: var(--data-info); }\n#chainMap div.node:has(> .nodeClass .class-4), #chainMap div.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap div.node:has(> .nodeClass .class-12) { border-left-color: var(--data-loot-gold); }\n#chainMap div.node:has(> .nodeClass .class-15), #chainMap div.node:has(> .nodeClass .class-16), #chainMap div.node:has(> .nodeClass .class-17) { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The class tint stays but reads as a ground, not a wash. */\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-critical) 10%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-loot-orange) 10%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-good) 10%, var(--node-surface)); }\n\n/* ── 4. The chain pans with the wheel again ───────────────────────────────\n #chainParent is the widget's .content, so the panel rule that hides\n overflow outranked its own overflow: auto. Drag-to-pan (dragscroll) had\n kept working, which is why it felt like drag became the only way. */\n#chainWidget > #chainParent.content { overflow: auto; }\n\n/* ── 5. Signature columns: header and cells share one alignment ──────────\n The cells carry the per-column alignment classes from Settings; the\n header now wears the same classes (sig-align.js), so the two agree. */\n#sigTable th, #sigTable td { text-align: left; }\n#sigTable .centerAlign { text-align: center; }\n#sigTable .rightAlign { text-align: right; }\n#sigTable .leftAlign { text-align: left; }\n\n/* ── 7. Three columns from 960px; what gives at the narrow end ─────────── */\n@media (min-width: 960px) and (max-width: 1099px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n\t#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n\t#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 3.2rem; padding-left: 2px; padding-right: 4px; }\n\t#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 4.6rem; }\n}\n\n/* ── 6. Phone: a signature is two lines, nothing hidden ─────────────────── */\n@media (max-width: 767px) {\n\t#sigTable thead { display: none; }\n\t#sigTable tbody tr {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto minmax(0, 1fr) auto auto;\n\t\tgrid-template-areas: \"id type type age\" \"leads leads life mass\";\n\t\tcolumn-gap: 10px; row-gap: 2px;\n\t\tpadding: 7px 10px;\n\t}\n\t#sigTable tbody td { display: block; width: auto !important; padding: 0 !important; height: auto; line-height: 18px; text-align: left !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n\t#sigTable tbody td:nth-child(1) { grid-area: id; font-weight: 600; }\n\t#sigTable tbody td:nth-child(2) { grid-area: type; }\n\t#sigTable tbody td:nth-child(3) { grid-area: age; text-align: right !important; }\n\t#sigTable tbody td:nth-child(4) { grid-area: leads; }\n\t#sigTable tbody td:nth-child(5) { grid-area: life; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:nth-child(6) { grid-area: mass; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:empty { display: none; }\n}\n/* Older per-column rules (an id and a pseudo-class) outranked the shared\n alignment classes on the header; match them with the section in the\n selector. And the phone block had hidden Life and Mass outright. */\n#sigTable thead th.leftAlign, #sigTable tbody td.leftAlign { text-align: left; }\n#sigTable thead th.centerAlign, #sigTable tbody td.centerAlign { text-align: center; }\n#sigTable thead th.rightAlign, #sigTable tbody td.rightAlign { text-align: right; }\n@media (max-width: 767px) {\n\t#sigTable tbody tr > td:nth-child(5), #sigTable tbody tr > td:nth-child(6) { display: block !important; }\n\t#sigTable tbody tr > td:empty { display: none !important; }\n}\n/* The name was being cut to one letter: the pips' non-breaking spaces and\n an old right padding on the name ate the column. The card sizes to its\n name between 118 and 168px, as upstream's pill did; the pips are dots. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: auto; min-width: 118px; max-width: 168px; }\n#chainMap div.node > .nodeSystem { padding-right: 0; overflow: visible; text-overflow: clip; }\n#chainMap div.node > .nodeActivity { font-size: 0; gap: 3px; }\n#chainMap div.node > .nodeActivity > span { font-size: 8px; line-height: 8px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.loop { width: auto; min-width: 118px; }\n/* The name column: sized to the name (the card grows to 168px), and the\n older h4 rule that ellipsised it is matched at its own specificity. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto auto minmax(0, auto); }\n#chainMap div.node > h4.nodeSystem { padding-right: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 120px; height: auto; line-height: 16px; }\n/* k-space security on the edge, both rooms, from the same tokens the chips use. */\n#chainMap div.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The name track sizes to the name (max-content), so the card grows with\n it up to its cap; overflow on the h4 had made its automatic minimum 0. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto max-content auto; }\n/* Flares (a colour a pilot sets on a node from its menu) are not security:\n they tint the ground and the top edge; the left edge stays security. */\n#chainMap div.greenNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .hisec), #chainMap div.yellowNode.node:has(> .nodeClass .hisec), #chainMap div.redNode.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.greenNode.node:has(> .nodeClass .lowsec), #chainMap div.yellowNode.node:has(> .nodeClass .lowsec), #chainMap div.redNode.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.greenNode.node:has(> .nodeClass .nullsec), #chainMap div.yellowNode.node:has(> .nodeClass .nullsec), #chainMap div.redNode.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .wh), #chainMap div.yellowNode.node:has(> .nodeClass .wh), #chainMap div.redNode.node:has(> .nodeClass .wh) { border-left-color: var(--data-info); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-4), #chainMap div.greenNode.node:has(> .nodeClass .class-5),\n#chainMap div.yellowNode.node:has(> .nodeClass .class-4), #chainMap div.yellowNode.node:has(> .nodeClass .class-5),\n#chainMap div.redNode.node:has(> .nodeClass .class-4), #chainMap div.redNode.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-6), #chainMap div.yellowNode.node:has(> .nodeClass .class-6), #chainMap div.redNode.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* Security on the left edge from classes the node now carries itself\n (sec-hisec / sec-lowsec / sec-nullsec / sec-wh + cls-N), so no :has()\n is needed and the build cannot drop it. The card shrink-wraps its name. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: fit-content; margin: 0 auto; }\n#chainMap div.node.sec-hisec, #chainMap div.greenNode.node.sec-hisec, #chainMap div.yellowNode.node.sec-hisec, #chainMap div.redNode.node.sec-hisec { border-left-color: var(--data-good); }\n#chainMap div.node.sec-lowsec, #chainMap div.greenNode.node.sec-lowsec, #chainMap div.yellowNode.node.sec-lowsec, #chainMap div.redNode.node.sec-lowsec { border-left-color: var(--data-loot-orange); }\n#chainMap div.node.sec-nullsec, #chainMap div.greenNode.node.sec-nullsec, #chainMap div.yellowNode.node.sec-nullsec, #chainMap div.redNode.node.sec-nullsec { border-left-color: var(--data-critical); }\n#chainMap div.node.sec-triglavian, #chainMap div.greenNode.node.sec-triglavian, #chainMap div.yellowNode.node.sec-triglavian, #chainMap div.redNode.node.sec-triglavian { border-left-color: var(--data-loot-red); }\n#chainMap div.node.sec-wh, #chainMap div.greenNode.node.sec-wh, #chainMap div.yellowNode.node.sec-wh, #chainMap div.redNode.node.sec-wh { border-left-color: var(--data-info); }\n#chainMap div.node.cls-4, #chainMap div.node.cls-5, #chainMap div.greenNode.node.cls-4, #chainMap div.greenNode.node.cls-5, #chainMap div.yellowNode.node.cls-4, #chainMap div.yellowNode.node.cls-5, #chainMap div.redNode.node.cls-4, #chainMap div.redNode.node.cls-5 { border-left-color: var(--data-loot-purple); }\n#chainMap div.node.cls-6, #chainMap div.greenNode.node.cls-6, #chainMap div.yellowNode.node.cls-6, #chainMap div.redNode.node.cls-6 { border-left-color: var(--data-loot-pink); }\n#chainMap div.node.cls-12, #chainMap div.greenNode.node.cls-12, #chainMap div.yellowNode.node.cls-12, #chainMap div.redNode.node.cls-12 { border-left-color: var(--data-loot-gold); }\n#chainMap div.node.cls-15, #chainMap div.node.cls-16, #chainMap div.node.cls-17 { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node, #chainMap .currentNode > div.node.sec-hisec, #chainMap .currentNode > div.node.sec-wh { border-left-color: var(--primary); }\n/* Chrome trimmed so the width is the name's, not the card's. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { column-gap: 4px; padding: 3px 6px 3px 5px; min-width: 104px; }\n#chainMap div.node > .nodeClass > span { padding: 0 4px; height: 14px; }\n#chainMap div.node > .nodeActivity { gap: 2px; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n/* Leads To is the column that takes the table's slack; centred text in it\n drifts away from Age. Upstream pinned it left whatever the setting. */\n#sigTable thead th:nth-child(4), #sigTable tbody td:nth-child(4),\n#sigTable thead th:nth-child(4).centerAlign, #sigTable tbody td:nth-child(4).centerAlign,\n#sigTable thead th:nth-child(4).rightAlign, #sigTable tbody td:nth-child(4).rightAlign { text-align: left; }\n/* The class chip, top-left, filled in its class colour with white text --\n hisec green, lowsec orange, nullsec red, C1-3 blue, C4-5 purple, C6 pink,\n Thera gold, drifter red -- as upstream coloured its nodes. A later rule\n had been greying the chip's currentColor. Same tokens in both rooms. */\n#chainMap div.node > h4.nodeClass > span {\n\tbackground: var(--node-edge); color: #fff; -webkit-text-fill-color: #fff;\n\tfont-weight: 700; letter-spacing: .04em;\n}\n#chainMap div.node > h4.nodeClass > span.hisec { background: var(--data-good); }\n#chainMap div.node > h4.nodeClass > span.lowsec { background: var(--data-loot-orange); }\n#chainMap div.node > h4.nodeClass > span.nullsec { background: var(--data-critical); }\n#chainMap div.node > h4.nodeClass > span.triglavian { background: var(--data-loot-red); }\n#chainMap div.node > h4.nodeClass > span.wh { background: var(--data-info); }\n#chainMap div.node > h4.nodeClass > span.class-4, #chainMap div.node > h4.nodeClass > span.class-5 { background: var(--data-loot-purple); }\n#chainMap div.node > h4.nodeClass > span.class-6 { background: var(--data-loot-pink); }\n#chainMap div.node > h4.nodeClass > span.class-12 { background: var(--data-loot-gold); color: #1b1b1b; -webkit-text-fill-color: #1b1b1b; }\n#chainMap div.node > h4.nodeClass > span.class-15, #chainMap div.node > h4.nodeClass > span.class-16, #chainMap div.node > h4.nodeClass > span.class-17 { background: var(--data-loot-red); }\n\n/* ── Statics span the second row and wrap; three capsules no longer run\n off the edge (they sat in the column the activity pips size). ───────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-areas: \"class name pips\" \"type statics statics\"; }\n#chainMap div.node > .nodeType { white-space: nowrap; }\n#chainMap div.node > .statics { flex-wrap: wrap; justify-content: flex-end; row-gap: 2px; min-width: 0; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n\n/* ── Flares breathe. ──────────────────────────────────────────────────────\n As Aperture's underglow: a blurred pad in the flare colour behind the\n card, scaling 0.96 -> 1.06 and 28% -> 80% opacity on a 1.4s cycle. The\n card itself keeps its security edge and a faint tint; the top edge is\n gone. Still under reduced-motion. */\n@keyframes flare-glow {\n\t0%, 100% { opacity: .28; transform: scale(.96); }\n\t50% { opacity: .8; transform: scale(1.06); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { position: relative; z-index: 0; border-top-width: 1px; border-top-color: var(--node-edge); }\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before {\n\tcontent: \"\"; position: absolute; inset: -3px; z-index: -1; border-radius: inherit;\n\tbackground: var(--flare, transparent); filter: blur(9px);\n\tanimation: flare-glow 1400ms ease-in-out infinite; pointer-events: none;\n}\n#chainMap div.redNode.node { --flare: var(--data-critical); }\n#chainMap div.yellowNode.node { --flare: var(--data-loot-orange); }\n#chainMap div.greenNode.node { --flare: var(--data-good); }\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--flare) 8%, var(--node-surface)); }\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { animation: none; opacity: .55; }\n}\n\n/* ── Three lines, narrow: chains grow sideways, so width is the currency.\n Line 1 chip + name, line 2 hull or sig id with the pips at the right,\n line 3 the statics (J-space only; k-space cards are two lines). About\n 100 wide and 52 tall at zoom 1, against upstream's ~100 x 30. ─────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-columns: auto minmax(0, max-content);\n\tgrid-template-areas: \"class name\" \"type pips\" \"statics statics\";\n\tcolumn-gap: 4px; row-gap: 1px;\n\tmin-width: 92px; max-width: 140px; padding: 3px 6px 3px 5px;\n}\n#chainMap div.node > .nodeType { grid-area: type; }\n#chainMap div.node > .nodeActivity { grid-area: pips; justify-self: end; }\n#chainMap div.node > .statics { grid-area: statics; justify-content: flex-start; margin-top: 1px; }\n#chainMap div.node > h4.nodeSystem { max-width: 104px; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name\" \"statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name\"; }\n#chainMap div.node:not(:has(> .statics span)) { grid-template-areas: \"class name\" \"type pips\"; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { grid-area: name; justify-self: end; }\n#chainMap div.node > .nodeIcons { top: auto; bottom: 3px; right: 5px; }\n#chainMap div.node > .nodeIcons > div { gap: 3px; }\n\n/* ── Upstream's skeleton: a 32px box. Name, then the hull or sig id under\n it; the class chip rides the top-left corner; statics hang off the\n bottom edge as capsules; pips are dots at the bottom right. About\n 100 x 32 at zoom 1 (upstream: ~100 x 30). ────────────────────────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: block; position: relative; overflow: visible;\n\twidth: fit-content; min-width: 96px; max-width: 150px; height: auto !important;\n\tpadding: 3px 10px 3px 10px; margin: 6px auto 8px;\n\ttext-align: center;\n}\n#chainMap div.node > h4.nodeSystem { display: block; margin: 0; padding: 0 10px 0 0; font-size: 12px; line-height: 14px; max-width: none; }\n#chainMap div.node > .nodeType { display: block; margin: 0; font-size: 9.5px; line-height: 11px; letter-spacing: .04em; min-height: 0; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .nodeClass {\n\tposition: absolute; top: -7px; left: -5px; margin: 0; line-height: 1; z-index: 2;\n}\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 6px; right: 6px; bottom: -7px; margin: 0; z-index: 2;\n\tdisplay: flex; justify-content: center; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeActivity { position: absolute; right: 4px; bottom: 3px; top: auto; margin: 0; gap: 2px; z-index: 1; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeIcons { position: absolute; top: -6px; right: -4px; bottom: auto; left: auto; }\n#chainMap div.node > .nodeIcons > div { gap: 2px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; font-size: 9px; padding: 0 4px; }\n#chainMap div.node.frig-chain { border-width: 1px; }\n#chainMap div.loop { width: fit-content; min-width: 0; padding: 3px 10px; margin: 6px auto 8px; }\n/* The glow is a halo around and behind the box, not a wash across it: an\n animated shadow instead of a pad inside the card's own stacking layer. */\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { content: none; animation: none; }\n@keyframes flare-halo {\n\t0%, 100% { box-shadow: 0 0 6px 1px color-mix(in oklab, var(--flare) 45%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n\t50% { box-shadow: 0 0 16px 5px color-mix(in oklab, var(--flare) 85%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tz-index: auto; border-color: color-mix(in oklab, var(--flare) 60%, var(--node-edge));\n\tanimation: flare-halo 1400ms ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { animation: none; box-shadow: 0 0 12px 3px color-mix(in oklab, var(--flare) 70%, transparent); }\n}\n/* The chip sits inline before the name (it was covering the first letter\n from the corner); the type line gets room above the hanging capsules. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: auto max-content; grid-template-areas: \"class name\" \"type type\";\n\talign-items: center; column-gap: 4px; row-gap: 0;\n\tmin-width: 92px; max-width: 160px; padding: 3px 8px 9px 6px; margin: 4px auto 9px; text-align: left;\n}\n#chainMap div.node > .nodeClass { position: static; grid-area: class; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; padding: 0; line-height: 15px; max-width: 110px; }\n#chainMap div.node > .nodeType { grid-area: type; text-align: left; padding-right: 24px; line-height: 11px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { padding-bottom: 3px; grid-template-areas: \"class name\"; }\n#chainMap div.node:has(> .nodeType:empty):has(> .statics span) { padding-bottom: 8px; }\n#chainMap div.node > .statics { bottom: -7px; left: 4px; right: 4px; justify-content: flex-start; }\n#chainMap div.node > .nodeActivity { right: 5px; bottom: 9px; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { bottom: 4px; }\n#chainMap div.node > .nodeIcons { top: -5px; right: -3px; }\n\n/* ══ Chain node, settled ═══════════════════════════════════════════════════\n Everything in flow on one grid, so nothing can land on anything else at\n any zoom. Row 1: class chip, name, effect / occupant icons, activity\n pips. Row 2: hull or sig id. Statics hang off the bottom edge into space\n the card reserves below itself. 34px tall with a type line, 22 without;\n about 100 wide for a J-name. Upstream: ~100 x 30 with its tabs below. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-areas: \"class name icons pips\" \"type type type type\";\n\talign-items: center; column-gap: 4px; row-gap: 1px;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 3px 7px 4px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: left;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name icons pips\"; padding-bottom: 3px; }\n#chainMap div.node > .nodeClass { grid-area: class; position: static; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; margin: 0; padding: 0; line-height: 15px; font-size: 12px; max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeIcons { grid-area: icons; position: static; display: flex; align-items: center; gap: 3px; width: auto; height: auto; margin: 0; top: auto; right: auto; left: auto; bottom: auto; }\n#chainMap div.node > .nodeIcons:empty { display: none; }\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; align-items: center; gap: 3px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 9px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; justify-self: end; display: flex; align-items: center; gap: 2px; width: auto; height: auto; margin: 0; font-size: 0; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; padding: 0; text-align: left; font-family: var(--font-mono); font-size: 9.5px; line-height: 11px; letter-spacing: .04em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 5px; right: 5px; top: 100%; bottom: auto; margin: -4px 0 0; transform: none; z-index: 2;\n\tdisplay: flex; justify-content: flex-start; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 3px 8px; margin: 3px auto 12px; }\n/* Placement by line numbers, not area names: the minifier had reordered\n the named areas and the icons fell into an implicit fourth row. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-areas: none;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-rows: auto auto;\n\tgrid-auto-rows: 0;\n}\n#chainMap div.node > .nodeClass { grid-area: auto; grid-column: 1; grid-row: 1; }\n#chainMap div.node > h4.nodeSystem { grid-area: auto; grid-column: 2; grid-row: 1; }\n#chainMap div.node > .nodeIcons { grid-area: auto; grid-column: 3; grid-row: 1; }\n#chainMap div.node > .nodeActivity { grid-area: auto; grid-column: 4; grid-row: 1; }\n#chainMap div.node > .nodeType { grid-area: auto; grid-column: 1 / 5; grid-row: 2; }\n#chainMap div.node > .statics { grid-area: auto; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n/* The name's own text is its minimum: overflow: clip is not a scroll\n container, so the grid and the org-chart cell size to the name instead of\n collapsing it to \"P.\" at their minimum. Still ellipsises past 110px. */\n#chainMap div.node > h4.nodeSystem { overflow: clip; text-overflow: ellipsis; min-width: min-content; }\n#chainMap div.node > h4.nodeSystem a { white-space: nowrap; }\n\n/* ══ Chain node: the original's layout, in our clothes ═════════════════════\n Three centred lines -- class chip with the effect beside it, the name,\n the hull or sig id -- the statics hanging off the bottom edge into the\n space between rows, activity dots on the edge, the occupant badge on the\n top-right corner. About 100 x 46 at zoom 1, which is what the original\n measured once its three lines were in it. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: minmax(0, max-content); grid-template-rows: auto auto auto; grid-auto-rows: 0;\n\tjustify-items: center; align-items: center; row-gap: 0; column-gap: 0;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 4px 10px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: center;\n}\n#chainMap div.node > .nodeClass { grid-column: 1; grid-row: 1; position: static; margin: 0; display: inline-flex; align-items: center; gap: 4px; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 5px; font-size: 9px; }\n#chainMap div.node > h4.nodeSystem { grid-column: 1; grid-row: 2; margin: 0; padding: 0; line-height: 16px; font-size: 12.5px; font-weight: 600; max-width: 150px; min-width: min-content; overflow: clip; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeType { grid-column: 1; grid-row: 3; margin: 0; padding: 0; text-align: center; font-family: var(--font-mono); font-size: 10px; line-height: 12px; letter-spacing: .06em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto auto; }\n/* The effect sits beside the class, in flow; the occupant badge rides the corner. */\n#chainMap div.node > .nodeIcons { grid-column: 1; grid-row: 1; position: static; display: contents; }\n#chainMap div.node > .nodeIcons > div { float: none; display: contents; }\n#chainMap div.node > .nodeIcons > div:first-child { display: inline-flex; align-items: center; position: absolute; top: 4px; right: 8px; gap: 2px; }\n#chainMap div.node > .nodeIcons > div:last-child { display: inline-flex; align-items: center; position: absolute; top: -6px; right: -6px; gap: 2px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 13px; padding: 0 5px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n/* Dots on the bottom edge, left; statics hanging from the edge, right of them. */\n#chainMap div.node > .nodeActivity { position: absolute; left: 8px; bottom: -3px; top: auto; right: auto; margin: 0; width: auto; height: auto; display: flex; gap: 3px; font-size: 0; z-index: 2; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .statics { position: absolute; left: auto; right: 6px; top: 100%; bottom: auto; margin: -5px 0 0; transform: none; display: flex; justify-content: flex-end; gap: 3px; flex-wrap: nowrap; z-index: 2; }\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 13px; min-width: 17px; padding: 0 5px; font-size: 9px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 4px 10px; margin: 3px auto 12px; }\n/* The class / security capsule hangs off the top-left corner, the effect\n off the top-right; the box holds name and sig; statics and dots hang off\n the bottom. The gaps between rows carry the capsules, as the original's\n tabs did. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-rows: auto auto; padding: 7px 10px 6px; margin: 9px auto 12px; min-width: 92px;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n#chainMap div.node > .nodeClass { position: absolute; top: -7px; left: -5px; margin: 0; z-index: 3; }\n#chainMap div.node > .nodeClass > span { box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > h4.nodeSystem { grid-row: 1; }\n#chainMap div.node > .nodeType { grid-row: 2; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -7px; right: 6px; }\n#chainMap div.node > .nodeIcons > div:last-child { top: -7px; right: -6px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 12px; text-shadow: 0 0 3px var(--background); }\n#chainMap div.node > .nodeActivity { bottom: -4px; left: 7px; }\n#chainMap div.node > .statics { margin-top: -6px; right: 5px; }\n/* Tooltips appended inside the chain panel position against it, not the\n page: the panel is the containing block. */\n#chainWidget > #chainParent.content { position: relative; }\n/* The corner chip straddles the top edge in the box's own top padding; the\n name starts below it. Mirrors the statics on the bottom edge. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { padding-top: 14px; padding-bottom: 7px; margin-top: 10px; }\n#chainMap div.node > .nodeClass { top: -7px; left: -5px; }\n#chainMap div.node > .nodeClass > span { height: 14px; }\n/* The desktop layout pins every panel's .content static with !important;\n the chain panel must be the containing block for its tooltips. */\n#chainWidget > #chainParent.content { position: relative !important; }\n/* An absolutely positioned child of a grid is placed against its grid\n area when it has one; the chip and the dots must be placed against the\n box, so they get no area. And the rows sit 5px closer. */\n#chainMap div.node > .nodeClass, #chainMap div.node > .nodeActivity, #chainMap div.node > .statics,\n#chainMap div.node > .nodeIcons > div { grid-area: auto; grid-row: auto; grid-column: auto; }\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { margin-top: 8px; margin-bottom: 9px; }\n/* Keep the pilot icon and count wholly inside the top-right corner. Negative\n offsets put both controls directly over the node's top and right borders. */\n#chainMap div.node > .nodeIcons > div:last-child { top: 2px; right: 3px; gap: 1px; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -6px; right: 22px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 8.5px; box-shadow: none; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainMap div.node > .nodeIcons [data-icon=\"user\"] { padding: 0; }\n#chainWidget > #chainParent.content { padding-top: 12px !important; }\n/* The pilot count is centred in its capsule (it is a flex box, which does\n not centre on its own), with a round minimum so \"1\" and \"12\" both sit true. */\n#chainMap div.node > .nodeIcons .badge { justify-content: center; min-width: 14px; padding: 0 4px; box-sizing: border-box; text-align: center; }\n"]} \ No newline at end of file +{"version":3,"sources":["_tokens.css","base.css","account.css","chainmap-radial.css","chainmap.css","command-palette.css","comments.css","dialog-admin.css","dialog-mass.css","dialog-options.css","forms.css","gridster.css","icons.css","introjs.css","jbox.css","mask.css","signatures.css","tripwire.css","_override-1-system.css","_override-3-panels.css","_override-4-signature-dialog.css","_override-5-responsive.css","_override-6-system-panel.css","_override-7-map-and-table.css","_override-8-layout.css","_override-9-chain-tabs.css","_override-a-header.css","_override-b-fixes.css","_override-c-polish.css","_override-d-phone.css","_override-e-scale.css","_override-f-dialog.css","_override-g-bars.css","_override-h-nodes.css","_override-i-inline.css","_override-j-type-roles.css","_theme-base.css","_theme-refit.css"],"names":[],"mappings":"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","file":"app.min.css","sourcesContent":["/* ============================================================================\n Design tokens.\n\n Every colour in app/css resolves through one of these. Two families, kept\n deliberately separate:\n\n --n-* Neutral chrome. Flips with the theme.\n --data-* --ui-* --chart-* EVE data semantics: wormhole class, jump-mass\n band, security, loot, status pills, chart\n series. These encode *meaning*, not brand.\n\n The :root block is the dark theme (\"ops floor\"). Its values are identical to\n the literals they replaced, so this extraction does not change dark\n rendering at all.\n\n The light block (\"front office\") inverts the neutral ramp, and darkens the\n 25 data colours that are used as TEXT until they clear 4.5:1 against the\n light panel. Data colours used only as fills are left untouched -- their\n contrast partner is whatever sits on top of them, which is a separate\n question from this ramp.\n\n Brand colours are NOT defined here. A theme file overrides these tokens.\n ========================================================================= */\n\n:root {\n /* neutral ramp -- n-000 darkest .. n-999 lightest */\n --glow-60: rgba(255, 255, 255, .6);\n --n-000: #000000;\n --n-020: #080808;\n --n-050: #111111;\n --n-100: #222222;\n --n-120: #282828;\n --n-200: #333333;\n --n-220: #3b3b3b;\n --n-250: #404040;\n --n-300: #444444;\n --n-400: #555555;\n --n-500: #666666;\n --n-550: #777777;\n --n-560: #7a7a7a;\n --n-600: #888888;\n --n-650: #999999;\n --n-700: #aaaaaa;\n --n-750: #bbbbbb;\n --n-800: #cccccc;\n --n-850: #dddddd;\n --n-870: #ebebeb;\n --n-880: #eeeeee;\n --n-900: #f0f0f0;\n --n-920: #f4f4f4;\n --n-940: #f7f7f7;\n --n-960: #fafafa;\n --n-999: #ffffff;\n --scrim-60: rgba(0, 0, 0, .6);\n --scrim-70: rgba(0,0,0,0.7);\n --scrim-80: rgba(0, 0, 0, .8);\n --scrim-n020: rgba(10, 10, 10, 0.6);\n --scrim-n050: rgba(17, 17, 17, .7);\n --scrim-n120: rgba(40, 40, 40, .9);\n --scrim-n200: rgba(51, 51, 51, .7);\n --shadow-20: rgba(0,0,0,0.2);\n --shadow-20b: rgba(0, 0, 0, 0.2);\n --shadow-25: rgba(0, 0, 0, 0.25);\n --shadow-25b: rgba(0, 0, 0, .25);\n --shadow-30: rgba(0, 0, 0, .3);\n --stroke-n120: rgba(40, 40, 40, 0.8);\n --veil-danger: rgba(255, 0, 0, .3);\n --veil-grey: rgba(120, 120, 120, .1);\n --veil-silver: rgba(192, 192, 192, .3);\n\n /* data semantics */\n --chart-1: #3366cc;\n --chart-2: #dc3912;\n --chart-3: #ff9900;\n --chart-4: #109618;\n --data-alliance: #00a0ff;\n --data-bronze: #e28a0d;\n --data-brown: #744700;\n --data-class-amber: #996600;\n --data-class-blue: #00286e;\n --data-class-blue-deep: #001b47;\n --data-class-cyan: #0070a0;\n --data-class-green: #004400;\n --data-class-green-deep: #003300;\n --data-class-lime: #00aa00;\n --data-class-orange: #8a4117;\n --data-class-orange-deep: #80370d;\n --data-class-red: #881100;\n --data-class-red-deep: #661100;\n --data-class-sky: #3388dd;\n --data-class-temp: #004080;\n --data-class-void: #000810;\n --data-critical: #ff4747;\n --data-danger: #d93627;\n --data-focus-ring: #998800;\n --data-focus-ring-soft: #ff8c0080;\n --data-good: #50d25a;\n --data-info: #4399f0;\n --data-jm-2000kt: #ffb060;\n --data-jm-375kt: #909090;\n --data-jm-5kt: #40e0ff;\n --data-jm-62kt: #90ff90;\n --data-link: #428bca;\n --data-loot-blue: #6060f0;\n --data-loot-gold: #ffc800;\n --data-loot-orange: #f58504;\n --data-loot-pink: #f06090;\n --data-loot-purple: #9060f0;\n --data-loot-red: #f06060;\n --data-magenta: #e06fdf;\n --data-olive: #999900;\n --data-pale-yellow: #ffffbb;\n --data-triglavian: #ff2060;\n --data-warn: #f5b544;\n --ui-amber: #ffb11f;\n --ui-amber-lit: #ffd665;\n --ui-blue: #2b91d9;\n --ui-blue-lit: #5abaff;\n --ui-green: #70a800;\n --ui-green-lit: #95cc2a;\n --ui-red: #b02222;\n --ui-red-lit: #ee2222;\n}\n\n/* Front office. Only tokens that must change are redefined. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n }\n}\n:root[data-theme=\"light\"] {\n --chart-1: #2e5cb9;\n --chart-2: #b62f0e;\n --chart-3: #8c5400;\n --chart-4: #0c7212;\n --data-alliance: #0064a0;\n --data-bronze: #895407;\n --data-critical: #b23131;\n --data-good: #2a6f2f;\n --data-info: #2b639c;\n --data-jm-2000kt: #7f5830;\n --data-jm-375kt: #606060;\n --data-jm-5kt: #1e6977;\n --data-jm-62kt: #3c6b3c;\n --data-link: #306593;\n --data-loot-blue: #5151cc;\n --data-loot-gold: #775e00;\n --data-loot-orange: #934f02;\n --data-loot-pink: #a04060;\n --data-loot-purple: #704abb;\n --data-loot-red: #a34141;\n --data-magenta: #8d458c;\n --data-olive: #646400;\n --data-pale-yellow: #636348;\n --data-triglavian: #bc1747;\n --data-warn: #7a5a22;\n --glow-60: rgba(0, 0, 0, .6);\n --n-000: #ffffff;\n --n-020: #f7f7f7;\n --n-050: #eeeeee;\n --n-100: #dddddd;\n --n-120: #d7d7d7;\n --n-200: #cccccc;\n --n-220: #c4c4c4;\n --n-250: #bfbfbf;\n --n-300: #bbbbbb;\n --n-400: #aaaaaa;\n --n-500: #999999;\n --n-550: #888888;\n --n-560: #858585;\n --n-600: #777777;\n --n-650: #666666;\n --n-700: #555555;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #222222;\n --n-870: #141414;\n --n-880: #111111;\n --n-900: #0f0f0f;\n --n-920: #0b0b0b;\n --n-940: #080808;\n --n-960: #050505;\n --n-999: #000000;\n --scrim-60: rgba(255, 255, 255, .6);\n --scrim-70: rgba(255, 255, 255, 0.7);\n --scrim-80: rgba(255, 255, 255, .8);\n --scrim-n020: rgba(245, 245, 245, 0.6);\n --scrim-n050: rgba(238, 238, 238, .7);\n --scrim-n120: rgba(215, 215, 215, .9);\n --scrim-n200: rgba(204, 204, 204, .7);\n --shadow-20: rgba(255, 255, 255, 0.2);\n --shadow-20b: rgba(255, 255, 255, 0.2);\n --shadow-25: rgba(255, 255, 255, 0.25);\n --shadow-25b: rgba(255, 255, 255, .25);\n --shadow-30: rgba(255, 255, 255, .3);\n --stroke-n120: rgba(215, 215, 215, 0.8);\n --veil-grey: rgba(135, 135, 135, .1);\n --veil-silver: rgba(63, 63, 63, .3);\n}\n","@font-face {\n\tfont-family: 'lucida';\n\tsrc:url('../fonts/lucida.ttf?w81bs6') format('truetype');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n* {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nhtml, body {\n\theight: 100%;\n}\n\nhtml {\n font-size: .6em;\n font-family: Verdana, 'Helvetica Neue', Arial, sans-serif;\n color: var(--n-600);\n line-height: 1.1;\n min-height: 100%;\n}\n\na {\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tcolor: var(--n-800);\n}\n\na:hover {\n\ttext-decoration: underline;\n\tcolor: var(--n-999);\n}\n\nhr { margin: 4px; }\nhr.bar { border-style: solid }\n\ni {\n\tcursor: pointer;\n}\n\ni.disabled {\n\topacity: .4;\n\tcursor: default;\n}\n\n.invisible {\n\tvisibility: hidden;\n}\n\n.hidden {\n\tdisplay: none;\n}\n\n.align-left {\n\tfloat: left;\n}\n\n.align-right {\n\tfloat: right;\n}\n\n.pointer {\n\tcursor: default;\n}\n\n.text-left {\n\ttext-align: left;\n}\n\n.text-right {\n\ttext-align: right;\n}\n\n.text-center {\n\ttext-align: center;\n}\n\ni.active, a.active {\n\tcolor: orange;\n}\n\n/* All of these styles want to be more specific than a normal class selector so the text colour wins */\nbody .wh, body .class-1, body .class-2, body .class-3 {\n\tcolor: var(--data-info);\n}\n\nbody .class-4, body .class-5 {\n\tcolor: var(--data-loot-purple);\n}\n\nbody .class-6 {\n\tcolor: var(--data-loot-pink);\n}\n\nbody .class-12 {\t/* Thera */\n\tcolor: var(--data-loot-gold);\n}\n\nbody .class-15, body .class-16, body .class-17 {\t/* Drifter */\n\tcolor: var(--data-loot-red);\n}\n\nbody .hisec, body .stable, body .frig {\n\tcolor: var(--data-good);\n}\n\nbody .lowsec, body .destab {\n\tcolor: var(--data-loot-orange);\n}\n\nbody .nullsec, body .critical {\n\tcolor: var(--data-critical);\n}\n\nbody .triglavian { color: var(--data-triglavian); }\n\n.blue-loot, .blue-loot .hisec { color: var(--data-loot-blue); }\n\n.jumps {\n\tcolor: var(--chart-1);\n}\n\n.pods {\n\tcolor: var(--chart-2);\n}\n\n.ships {\n\tcolor: var(--chart-3);\n}\n\n.npcs {\n\tcolor: var(--chart-4);\n}\n\n.thermal-icon {\n\tcontent: url(\"../images/th.png\");\n\theight: 16px;\n}\n\n.kinetic-icon {\n\tcontent: url(\"../images/kn.png\");\n\theight: 16px;\n}\n\n.explosive-icon {\n\tcontent: url(\"../images/exp.png\");\n\theight: 16px;\n}\n\n.em-icon {\n\tcontent: url(\"../images/em.png\");\n\theight: 16px;\n}\n\n/* Scrollbar. Body properties are standards-compliant but only work in Firefox.\n-webkit-* works in Chrome/Safari/etc */\n/* We must tell Chrome not to use these or it will disable all the -webkit-scrollbar things - https://stackoverflow.com/questions/77893503 */\n@supports not selector(::-webkit-scrollbar) {\n\tbody {\n\t\t/* Standards - Firefox. Use slightly less contrasty colours because the bar will be wider */\n\t\tscrollbar-width: thin;\n\t\tscrollbar-color: var(--n-300) var(--n-050);\n\t}\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n}\n\n::-webkit-scrollbar-button:start:decrement,\n::-webkit-scrollbar-button:end:increment {\n height: 2em;\n display: none;\n background-color: black;\n}\n\n::-webkit-scrollbar-track { background-color: var(--n-220); }\n::-webkit-scrollbar-thumb {\tbackground-color: var(--n-500);}\n::-webkit-scrollbar-thumb:hover { background-color: var(--n-650);}\n\n::-webkit-scrollbar-corner {\n\tbackground-color: transparent;\n}\n/* ---------- */\n\n::-webkit-input-placeholder {\n color: var(--n-600);\n}\n\n:-moz-placeholder { /* Firefox 18- */\n color: var(--n-600);\n}\n\n::-moz-placeholder { /* Firefox 19+ */\n color: var(--n-600);\n}\n\n:-ms-input-placeholder {\n color: var(--n-600);\n}\n\n@-webkit-keyframes spin {\nfrom { -webkit-transform: rotate(0deg); }\nto { -webkit-transform: rotate(360deg); }\n}\n\n@-moz-keyframes spin {\nfrom { -moz-transform: rotate(0deg); }\nto { -moz-transform: rotate(360deg); }\n}\n\n@-o-keyframes spin {\nfrom { -o-transform: rotate(0deg); }\nto { -o-transform: rotate(360deg); }\n}\n\n@keyframes spin {\n\tfrom { transform: rotate(0deg); }\n\tto { transform: rotate(360deg); }\n}\n\n.transition {\n\t/* -webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransition: 0.3s all ease-out;\n\t-webkit-transition: 0.3s all ease-out;\n\t-moz-transition: 0.3s all ease-out;\n\t-ms-transition: 0.3s all ease-out;\n\t-o-transition: 0.3s all ease-out; */\n}\n\n.scale {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\ttransform: scale(0.9);\n\t-webkit-transform: scale(0.9);\n\t-moz-transform: scale(0.9);\n\t-ms-transform: scale(0.9);\n\t-o-transform: scale(0.9);\n\n\toverflow: hidden;\n}\n\n.blur {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n filter: blur(1px);\n -webkit-filter: blur(1px);\n\t-moz-filter: blur(1px);\n\t-ms-filter: blur(1px);\n\t-o-filter: blur(1px);\n\tfilter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='1');\n}\n","#login {\n\tposition: relative;\n}\n\n#login #panel {\n\tdisplay: none;\n}\n\n#login img {\n border-radius: 3px;\n}\n\n.triangle {\n\tposition: absolute;\n\ttop: -5px;\n\tright: 15px;\n\tborder-left: 5px solid transparent;\n\tborder-right: 5px solid transparent;\n\tborder-bottom: 5px solid var(--n-300);\n}\n\n#login #content {\n\tposition: absolute;\n\ttop: 20px;\n\tright: 0px;\n\n\tfont-size: 1.1em;\n\n\tline-height: normal;\n\tpadding: 5px;\n}\n\n#login #content #track {\n\tborder-right: 1px solid gray;\n\tpadding-right: 2px;\n\tmin-width: 160px;\n}\n\n#login #content #track .tracking-clone {\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n cursor: pointer;\n\topacity: .4;\n transition: all 0.2s ease;\n\n\tmargin-bottom: 2px;\n}\n\n#login #content #track .tracking-clone:hover {\n\tborder-color: var(--n-400);\n opacity: 1;\n}\n\n#login #content #track .tracking-clone.active {\n\tborder-color: darkorange;\n opacity: 1;\n}\n\n#login #content table {\n\ttext-align: right;\n\twidth: 100%;\n}\n\n#login #content table th {\n\ttext-align: right;\n\tpadding-right: 5px;\n}\n\n#login #content table td {\n\ttext-align: left;\n}\n\n#login #content table .text {\n\tpadding: 0 10px 0 3px;\n\twhite-space: nowrap;\n}\n\n#login #content .avatar {\n\theight: 1px;\n\twidth: 1px;\n}\n\n#login #content table td #logout {\n\tfloat: right;\n}\n\n#login #content #error {\n\tcolor: var(--data-critical);\n}\n\n#logo {\n\tcolor: var(--n-800);\n}\n\n#logo > span > div > canvas {\n\tvertical-align: middle;\n}\n\n#login #error {\n\tfont-weight: bold;\n\ttext-align: center;\n}\n\n#link, #account {\n\twhite-space: nowrap;\n\tcolor: var(--n-500);\n}\n\n#link {\n\tvertical-align: top;\n}\n\n#login #logoutTable tbody th {\n\ttext-align: center;\n\tcolor: var(--n-800);\n\tbackground: var(--n-400);\n}\n\n#logoutTable tbody tr td {\n\tvertical-align: top;\n}\n\n#tracking {\n\tdisplay: block;\n\toverflow-y: auto;\n\tmax-height: 332px;\n}\n\n#tracking [data-icon=\"red-giant\"].stable:before {\n\tcolor: var(--data-good);\n}","/* Styles relating to the radial map renderer */\n#chainMap .radial-map .node.top-level {\n\tborder-radius:200px;\n\tpadding: 10px;\n\tborder: 4px var(--data-class-temp) solid;\n\tfont-size: 120%;\n}\n\n#chainMap .radial-map .top-level .nodeIcons {\n top: 0.9em;\n}\n\n.radial-map {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.radial-map .map-chain-wrapper {\n\toverflow:hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n\tmargin: 0 10px;\n}\n\n.map-outer-container {\n\tposition: relative;\n}\n\n.map-inner-container {\n\tposition: absolute;\n}\n\n.map-inner-container .node-wrapper {\n\tposition:absolute;\n\twidth: 0; height: 0;\n}\n\n#chainMap .node-wrapper > div.node {\n\ttransform: translate(-50%, -50%);\t/* centre around position */\n}\n\n.map-drawing {\n\tposition: absolute;\n}\n\n.temp { border-style: solid; }\t/* Some border properties don't resolve if the element has no border */\n\n/* 'color' is used to cue the aura effect in canvas drawing */\n.temp { border-width: 2px; border-color: var(--data-class-temp); }\n.temp.jm-5kt, #guide .jm-5kt { border-width: 1px; color: var(--data-jm-5kt); }\n.temp.jm-62kt, #guide .jm-62kt { border-width: 3px; color: var(--data-jm-62kt); }\n.temp.jm-375kt, #guide .jm-375kt { border-width: 5px; color: var(--data-jm-375kt); }\n.temp.jm-2000kt, #guide .jm-2000kt { border-width: 7px; color: var(--data-jm-2000kt); }","#chainMap {\n\t-webkit-user-select: none; /* Chrome all / Safari all */\n\t-moz-user-select: none; /* Firefox all */\n\t-ms-user-select: none; /* IE 10+ */\n\n\t/* No support for these yet, use at own risk */\n\t-o-user-select: none;\n\tuser-select: none;\n}\n\n#chainMap .google-visualization-orgchart-table * {\n\tpadding: 0px;\n}\n\n#chainMap .google-visualization-orgchart-table {\n\tpadding: 0 5px;\n\tpadding-right: 0px;\n\twidth: 1px;\n\tmargin: 0 auto;\n}\n\n#chainMap td.node {\n\twhite-space: nowrap;\n\ttext-align: center;\n\tvertical-align: middle;\n\tfont-family: verdana;\n\tfont-size: 1em;\n\tcursor: default;\n\tline-height: 1;\n\tborder: none;\n\tbackground: none;\n}\n\n#chainMap div.node {\n\theight: 30px;\n\tmin-width: 5em;\n\tdisplay: inline-block;\n\tmargin-left: auto; margin-right: auto;\t/* centre horizontally within cell */\n\tborder: 2px solid var(--n-200);\n border-top-left-radius: 15px 50px;\n border-top-right-radius: 15px 50px;\n\tborder-bottom-left-radius: 15px 50px;\n border-bottom-right-radius: 15px 50px;\n\n\tbackground-color: var(--n-050);\n\tbackground: linear-gradient(var(--n-100), var(--n-050));\n\n\tbox-shadow: 2px 2px 8px var(--shadow-20);\n}\n\n#chainMap div.node.third-party {\n\tbackground: var(--n-050);\n\tfont-style: italic;\n\tfilter: saturate(50%) brightness(80%)\n}\n\n#chainMap /*td.node >*/ div.node.loop {\t/* more specific than others nearby, because we want these over flares/current node */\n\tmin-width: auto;\n/*\twidth: 30px;*/\n\tborder-radius: 100px;\n\tborder-color: var(--data-class-cyan);\n}\n\n#chainMap div.loop {\t/* less specific, so flares/current node works over this */\n\tbackground: var(--data-class-void);\n}\n\ndiv.loop .nodeIcons, div.loop .nodeType, div.loop .statics, div.loop .nodeActivity {\n\tdisplay:none;\n}\n\t\n#chainMap .currentNode > div.node {\n\tborder-color: var(--data-class-blue);\n\tbackground: var(--data-class-blue-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-blue-deep) 0%, var(--data-class-blue) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-blue-deep)), to(var(--data-class-blue)));\n}\n\n#chainMap div.redNode.node {\n\tborder-color: var(--data-class-red);\n\tbackground: var(--data-class-red-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-red-deep) 0%, var(--data-class-red) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-red-deep)), to(var(--data-class-red)));\n}\n\n#chainMap div.yellowNode.node {\n\tborder-color: var(--data-class-orange);\n\tbackground: var(--data-class-orange-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-orange-deep) 0%, var(--data-class-orange) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-orange-deep)), to(var(--data-class-orange)));\n}\n\n#chainMap div.greenNode.node {\n\tborder-color: var(--data-class-green);\n\tbackground: var(--data-class-green-deep);\n\n\tbackground: -moz-linear-gradient(top, var(--data-class-green-deep) 0%, var(--data-class-green) 100%);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(var(--data-class-green-deep)), to(var(--data-class-green)));\n}\n\n#chainMap div.node.frig-chain {\n\tborder-color: var(--data-class-lime);\n\tborder-width: 1px;\n}\n\n#chainMap .node a {\n\tfont-weight: normal;\n}\n\n#chainMap span.badge {\n\tdisplay: inline-block;\n\tcolor: var(--n-750);\n\tbackground-color: var(--n-100);\n\tbox-shadow: 0px 0px 6px 2px var(--n-050);\n\tfont-family: monospace;\n\tpadding: 2px 2px;\n\tmin-width: 8px;\n\tfont-size: 9px;\n\tfont-weight: 300;\n\tline-height: 1;\n\ttext-align: center;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\tborder-radius: 10px;\n}\n\n#chainMap .nodeIcons {\n\tposition: absolute;\n\ttop: 0.1em;\n\twidth: 50px;\n\theight: 0;\t/* so it doesn't overlay the class text for tips */\n\tright: 50%;\n\tmargin-right: -25px;\n}\n\n#chainMap [data-nodeid] {\n\tposition: relative;\n\ttext-align: center;\n}\n\n#chainMap [data-nodeid] h4 {\n\tfont-weight: normal;\n\twhite-space: nowrap;\n}\n\n#chainMap .nodeType {\n\ttext-transform: uppercase;\n}\n\n#chainMap .nodeActivity {\n\tposition: absolute;\n\tbottom: 3px;\n\tright: 50%;\n\twidth: 50px;\n\theight: 1px;\n\tmargin-right: -25px;\n\tpointer-events: none;\t/* so it doesn't overlay the link */\n}\n\n#chainMap .nodeActivity * { pointer-events: initial }\n\n#chainMap .statics {\n\tposition: absolute;\n\tbottom: -1.5em;\n}\n\n#chainMap .statics span {\n\tdisplay: inline-block;\n\tbackground: navy;\n\tborder-radius: 0 0 50px 50px;\n\twidth: 8px;\n\theight: 10px;\n\tborder: 2px solid var(--n-200);\n}\n\n#chainMap .statics span:nth-child(2) {\n\tmargin-right: 10px;\t/* To leave a gap for the connection when 3+ statics */\n}\n\n#chainMap i[data-icon=\"user\"] {\n\tpadding: 3px;\n\tcursor: default;\n}\n\n#chainMap i.whEffect {\n\tpadding-left: 3px;\n\tcursor: default;\n}\n\n#chainMap i.nodeActivity > span {\n\tpadding: 2px;\n}\n\n/* These styles need the specific selectors because they need to override presets */\n.critical, #chainMap .critical, #guide .critical { border-color: var(--data-critical); }\n.destab, #chainMap .destab, #guide .destab { border-color: var(--data-warn); }\n.gate, #chainMap .gate, #guide .gate { border-color: darkgray; }\n.eol, #chainMap .eol, #guide .eol { border-style: dashed; }\n.frig, #chainMap .frig, #guide .frig { border-color: var(--data-good); }\n\n.tab {\n\tdisplay: inline-block;\n\tmin-width: 75px;\n\tborder-bottom: 2px solid var(--n-200);\n\tcursor: pointer;\n\tvertical-align: top;\n\ttext-align: right;\n}\n\n.tab:hover {\n\tborder-bottom-color: var(--n-500);\n}\n\n.tab.current {\n\tborder-bottom-color: var(--data-info);\n}\n\n.tab .name {\n\tpadding-left: 4px;\n\tfloat: left;\n}\n\n.tab .closeTab, .tab .editTab {\n\topacity: 0;\n\tvisibility: hidden;\n\tfloat: right;\n\tfont-size: .8em;\n\tpadding: 2px 2px 0 4px;\n\n\ttransition: opacity .15s ease-out;\n\t-moz-transition: opacity .15s ease-out;\n\t-webkit-transition: opacity .15s ease-out;\n\t-o-transition: opacity .15s ease-out;\n}\n\n.tab:hover .closeTab, .tab.current:hover .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#guide td:first-child {\n\twidth: 30px;\n}\n\n#guide div {\n\twidth: 20px;\n\tborder-width: 0;\n\tborder: 2px solid var(--data-class-sky);\n\tborder-top-style: none !important;\t/* so we only get one border even when border style is overridden by eol */\n\tborder-left-style: none !important;\n\tborder-right-style: none !important;\n}\n\n#guide div.frig { border-width: 1px; }\n#guide div.aura { box-shadow: 0 0 5px 2px; }\n\n[data-icon=\"user\"] + .badge {\n\tposition: absolute;\n\ttop: -5px;\n\tright: -12px;\n}\n\ntd.google-visualization-orgchart-linenode[data-signatureid] {\n\tcursor: pointer;\n}\n\n/* Grid lines and flare text */\n#chainGrid .grid-default { color: var(--n-550);}\n.red { color: var(--data-critical);}\n.yellow { color: var(--data-warn);}\n.green { color: var(--data-good);}\n\n#chainGrid {\n\tposition: absolute;\n\twidth: 100%;\n\tz-index: -10;\n\tmargin-left: -3px;\t\n}\n\n#chainGrid .top td {\n\theight: 18px;\n}\n\n#chainGrid .line td {\n\theight: 28px;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#chainGrid .space td {\n\theight: 13px;\n}\n\n#chainGrid .red td {\n\tborder-bottom-color: var(--data-critical);\n}\n\n#chainGrid .yellow td {\n\tborder-bottom-color: var(--data-warn);\n}\n\n#chainGrid .green td {\n\tborder-bottom-color: var(--data-good);\n}\n\n#chainTabs {\n\tpadding-right: 10px;\n}\n","/* Command palette and the shortcuts overlay.\n Colours come from the token layer, so this follows whatever theme is loaded\n rather than hard-coding a palette. */\n\n#cmd-palette,\n#cmd-help {\n\tposition: fixed;\n\tinset: 0;\n\tz-index: 10000;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: center;\n\tpadding-top: 12vh;\n\tbackground: var(--scrim-60);\n}\n\n#cmd-palette.hidden,\n#cmd-help.hidden { display: none; }\n\n#cmd-palette .cmd-box,\n#cmd-help .cmd-box {\n\twidth: min(560px, 92vw);\n\tbackground: var(--n-100);\n\tborder: 1px solid var(--n-300);\n\tbox-shadow: 0 12px 40px var(--scrim-70);\n\tfont-size: 1.25em;\n}\n\n#cmd-input {\n\tdisplay: block;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\tpadding: 12px 14px;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--n-300);\n\tbackground: transparent;\n\tcolor: var(--n-999);\n\tfont-family: inherit;\n\tfont-size: 1em;\n\toutline: none;\n}\n\n#cmd-input::placeholder { color: var(--n-600); }\n\n#cmd-list {\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 4px 0;\n\tmax-height: 46vh;\n\toverflow-y: auto;\n}\n\n#cmd-list li {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: 10px;\n\tpadding: 7px 14px;\n\tcursor: pointer;\n\tcolor: var(--n-800);\n}\n\n#cmd-list li.sel { background: var(--n-200); color: var(--n-999); }\n\n/* Listed but unavailable -- undo with nothing to undo, edit with nothing\n selected. Shown rather than hidden so the palette is a stable map of what\n exists. */\n#cmd-list li.off { opacity: .4; cursor: default; }\n\n#cmd-list li.danger.sel { background: var(--data-critical); color: var(--n-050); }\n\n#cmd-list .cmd-label { flex: 1 1 auto; }\n\n#cmd-list .cmd-group,\n#cmd-list .cmd-keys {\n\tflex: 0 0 auto;\n\tfont-size: .8em;\n\tcolor: var(--n-600);\n\ttext-transform: uppercase;\n\tletter-spacing: .06em;\n}\n\n#cmd-list li.sel .cmd-group,\n#cmd-list li.sel .cmd-keys { color: var(--n-750); }\n\n#cmd-list .cmd-keys {\n\ttext-transform: none;\n\tletter-spacing: 0;\n\tborder: 1px solid var(--n-400);\n\tborder-radius: 2px;\n\tpadding: 1px 5px;\n}\n\n#cmd-list .cmd-empty { color: var(--n-600); cursor: default; }\n\n.cmd-foot {\n\tdisplay: flex;\n\tgap: 16px;\n\tpadding: 8px 14px;\n\tborder-top: 1px solid var(--n-300);\n\tfont-size: .78em;\n\tcolor: var(--n-600);\n}\n\n.cmd-foot b { color: var(--n-800); font-weight: normal; }\n\n/* Shortcuts overlay */\n#cmd-help .cmd-box { padding: 18px 20px; }\n#cmd-help h2 { margin: 0 0 12px; color: var(--n-999); font-size: 1.1em; }\n#cmd-help table { border-collapse: collapse; width: 100%; }\n#cmd-help th {\n\ttext-align: left;\n\tpadding: 4px 14px 4px 0;\n\twhite-space: nowrap;\n\tcolor: var(--n-999);\n\tfont-weight: normal;\n}\n#cmd-help td { padding: 4px 0; color: var(--n-800); }\n#cmd-help p { margin: 14px 0 0; color: var(--n-600); font-size: .9em; }\n#cmd-help b { color: var(--n-999); }\n",".cke .cke_button__source_label {\n\tdisplay: none;\n}\n\n.cke .cke_maximized {\n\tbackground: black;\n}\n\n.comment {\n\tborder-bottom: 1px solid var(--n-300);\n}\n\n.commentSticky {\n\tpadding-left: 3px;\n}\n\n.commentToolbar .commentControls::before {\n\tdisplay: inline-block;\n\tcontent: '';\n\theight: 100%;\n\tvertical-align: bottom;\n}\n\n.commentToolbar, .commentFooter {\n\tfont-size: .9em;\n\tcolor: var(--n-650);\n}\n\n.commentToolbar {\n\theight: 26px;\n}\n\n.commentFooter {\n\tpadding: 3px;\n}\n\n.commentControls {\n\tfloat: right;\n\theight: 100%;\n}\n\n.commentStatus, .commentTitle {\n\tfloat: left;\n\theight: 100%;\n}\n\n.commentModified {\n\tdisplay: block;\n\tpadding-top: 3px;\n\tpadding-bottom: 3px;\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.commentToolbar .commentControls, .commentSticky {\n\topacity: 0;\n\n\ttransition: opacity .25s ease-out;\n\t-moz-transition: opacity .25s ease-out;\n\t-webkit-transition: opacity .25s ease-out;\n\t-o-transition: opacity .25s ease-out;\n}\n\n.comment:hover .commentControls, .comment:hover .commentModified, .comment:hover .commentSticky, .commentSticky.active {\n\topacity: 1;\n}\n\n.commentBody {\n\tcolor: var(--n-800);\n\tpadding: 8px;\n\t//white-space: pre-wrap; /* CSS3 */\n\t//white-space: -moz-pre-wrap; /* Firefox */\n\t//white-space: -pre-wrap; /* Opera <7 */\n\t//white-space: -o-pre-wrap; /* Opera 7 */\n\tword-wrap: break-word; /* IE */\n}\n\n.commentBody a {\n\tcolor: darkorange;\n}\n\n.commentBody ol, .commentBody ul, .commentBody dl {\n\t/* IE7: reset rtl list margin. (#7334) */\n\t*margin-right: 0px;\n\t/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/\n\tpadding: 0 40px;\n}\n","#dialog-admin .menu {\n\twidth: 100px;\n\theight: 100%;\n\tfloat: left;\n}\n\n#dialog-admin .window {\n\theight: 100%;\n\tmargin-left: 100px;\n\toverflow: auto;\n}\n\n#dialog-admin .menu li {\n\tlist-style-type: none;\n}\n\n#dialog-admin .menu li a {\n\tcolor: var(--n-500);\n}\n\n#dialog-admin .menu li a:focus {\n\toutline: none;\n}\n\n#dialog-admin .menu li.active a {\n\tcolor: orange;\n}\n\n#dialog-admin #userTable th {\n\ttext-align: left;\n\tborder-bottom: 1px solid var(--n-200);\n}\n\n#dialog-admin #userTable tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-700);\n}\n\n#dialog-admin .tablesorter .tablesorter-header i:before, #dialog-admin .tablesorter .sortable i:before {\n\tfloat: none;\n}\n\n#dialog-admin .tablesorter .headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerSortUp,\n#dialog-admin .tablesorter .tablesorter-headerAsc {\n\tcolor: orange;\n}\n\n#dialog-admin .tablesorter .headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerSortDown,\n#dialog-admin .tablesorter .tablesorter-headerDesc {\n\tcolor: orange;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .menu {\n\tmargin-right: 6px;\n\tborder-right: 1px solid var(--n-700);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window [data-window] {\n\theight: 100%;\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .window table tbody tr:nth-child(even) td {\n\tborder-bottom: 1px solid var(--n-650);\n}\n\ndiv.ui-dialog[aria-describedby='dialog-admin'] .ui-dialog-traypane {\n\tmargin-left: 120px;\n\tmargin-top: 8px;\n\tfont-size: 16px;\n\tcolor: var(--n-200);\n}\n","/* Hide rows based on selection */\n#dialog-mass:has(input[value='all']:checked) tr#small-mass,\n#dialog-mass:has(input[value='all']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='all']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='cruiser']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='cruiser']:checked) tr#medium-mass,\n#dialog-mass:has(input[value='cruiser']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Small,\n#dialog-mass:has(input[value='battleship']:checked) tr.mass-Medium,\n#dialog-mass:has(input[value='battleship']:checked) tr#large-mass,\n\n#dialog-mass:has(input[value='capital']:checked) tr.mass-Small, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Medium, \n#dialog-mass:has(input[value='capital']:checked) tr.mass-Large { display: none }\n\n/* Mod selectors */\n.inactive { opacity: 0.5 }\n\n/* Table alignment and spacing */\n#massTableContainer {\n\ttext-wrap: nowrap;\n\tmargin-top: 1em;\n\tmax-height: 200px;\n\toverflow-y: auto;\n}\n\n#massTable td:nth-child(1) {\n\tmin-width: 12em;\n}\n\n#massTable td:nth-child(2) {\n\tmin-width: 2em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(3) {\n\twidth: 12em;\n\ttext-align: center;\n}\n\n#massTable td:nth-child(4), #massTable th:nth-child(4) {\n\twidth: 8em;\n\ttext-align: right;\n}\n\n#massTable td:nth-child(5) {\n\twidth: 14em;\n\ttext-align: right;\n}\n","#dialog-options input[type=\"radio\"] + label {\n\tvertical-align: top;\n}\n\ndiv.ui-slider { display: inline-block; width: calc(75% - 3px); margin-right: 3px }\n\n#dialog-options input[type=\"text\"], #dialog-options input[type=\"password\"], #dialog-options select { width: 75% }\n\n#dialog-options label[for=uiscale-slider] {\n padding: 0 8px;\n}\n\n#dialog-editMask label {\n\twidth: 100%;\n\tmargin-left: -5px;\n}\n\n#dialog-EVEsearch #EVESearchResults {\n\tmax-height: 320px;\n\toverflow: auto;\n\tpadding-left: 5px;\n padding-right: 10px;\n}\n\n#EVESearchResults label {\n\twidth: 100%;\n\tmargin-left: -5px;\n\topacity: 1;\n}\n\n.optionsTable th {\n\ttext-align: left;\n}\n\n.optionsTable td {\n\ttext-align: right;\n}\n\ntr.line td, tr.line th {\n\tborder-bottom: 1px solid var(--n-400);\n}\n\n.optionsTable tr {\n\theight: 2em;\n}\n\n.ui-accordion .ui-accordion-content {\n\tpadding: 0.5em;\n\tbackground: none;\n\tborder-color: var(--n-050);\n}\n\n.ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n}\n\n#masks {\n\ttext-align: left;\n\tpadding-left: 10px;\n}\n\ndiv.maskCategory {\n\tmin-height: 80px;\n\tposition: relative;\n}\n\ndiv.maskCategoryLabel {\n\tposition: absolute;\n\ttop: 80px;\n\tleft: -12px;\n\twidth: 80px;\n\ttext-align: center;\n\tfont-weight: bold;\n\n\t-ms-transform: rotate(-90deg);\n\t-webkit-transform: rotate(-90deg);\n\ttransform: rotate(-90deg);\n\n\t-ms-transform-origin: left top 0;\n\t-webkit-transform-origin: left top 0;\n\ttransform-origin: left top 0;\n}\n","input[type=\"text\"], input[type=\"password\"], select, textarea {\n background-image: linear-gradient(to bottom, var(--n-000) 0%, var(--n-100) 80%, var(--n-300) 100%);\n\n border: none;\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n -ms-border-radius: 3px;\n -o-border-radius: 3px;\n border-radius: 3px;\n\n padding: 2px;\n padding-left: 5px;\n margin-left: 2px;\n\n transition: all 0.2s linear;\n color: var(--n-750);\n font-weight: bold;\n position: relative;\n\t\n\toutline-color: var(--data-focus-ring);\n\toutline-width: thin;\n}\n\noption { background-color: var(--n-100); } /* to align with gradient on the select */\n\n*:focus-visible { outline-style: inset; outline-offset: 0 }\n\ninput[type=\"button\"], input[type=\"submit\"], .ui-button.ui-widget {\n\tfont-family: Verdana;\n\n\t-webkit-appearance: none;\n\n\t-webkit-border-radius: 4px;\n\t-moz-border-radius: 4px;\n\t-ms-border-radius: 4px;\n\t-o-border-radius: 4px;\n\tborder-radius: 4px;\n\n\tbackground-image: linear-gradient(var(--n-300) 0, var(--n-100) 20%, var(--n-000));\n\n\t-webkit-background-clip: padding-box;\n\t-o-background-clip: padding-box;\n\tbackground-clip: padding-box;\n\n\tborder: 1px solid;\n\tborder-color: var(--n-400) var(--n-200) var(--n-000);\n\n\tcolor: var(--n-750);\n\tfont-weight: bold;\n\tfont-size: 1em;\n\ttext-decoration: none;\n\n\tmargin: 0;\n\tpadding: 0.4em 1.4em;\n\twidth: auto;\n\n\tcursor: pointer;\n\toutline: 0;\n\tvertical-align: top;\n\tdisplay: inline-block;\n\toverflow: visible;\n}\n\ninput[type='radio'], input[type='checkbox'] {\n\tvertical-align: middle;\n}\n\ninput[type=\"button\"]:not([disabled]):focus, input[type=\"submit\"]:not([disabled]):focus, .ui-button:focus:not([disabled]) {\n\tborder: 1px solid darkorange;\n}\n\ninput[type=\"button\"]:not([disabled]):hover, input[type=\"submit\"]:not([disabled]):hover, .ui-button:hover:not([disabled]) {\n\tbackground-image: linear-gradient(var(--n-400) 0, var(--n-120) 20%, var(--n-000));\n}\n\ninput[type=\"button\"]:not([disabled]):active, input[type=\"submit\"]:not([disabled]):active, .ui-button:active:not([disabled]) {\n\tcolor: var(--n-800);\n\n\tbackground-image: linear-gradient(var(--n-300), var(--n-550));\n\n\tbox-shadow: inset var(--shadow-25b) 0 1px 2px 0;\n\n\tborder-color: var(--n-650) var(--n-750) var(--n-850);\n}\n\ninput[disabled], a[disabled] {\n\topacity: .4;\n\tcursor: default;\n}\n\ninput.selector, input.mini-selector {\n\twidth: 0; opacity: 0;\t/* Don't use display:none because it makes it not be keyboard accessible */\n}\n\ninput.selector+label img {\n border-radius: 3px;\n\n\twidth: 64px;\n\theight: 64px;\n}\n\ninput.selector+label .selector_label {\n\tposition: absolute;\n\tbottom: 1px;\n\tleft: 1px;\n\tpadding: 1px 3px;\n\tmargin-right: 1px;\n\tcolor: var(--n-800);\n\tfont-size: 0.8em;\n\tbackground: var(--scrim-70);\n\n border-radius: 3px;\n}\n\ninput.selector+label, input.mini-selector+label, .quick-select {\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 3px;\n\tborder: 2px solid var(--n-600);\n border-radius: 5px;\n\n\tcursor: pointer;\n\topacity: .4;\n\ttransition: all 0.2s ease;\n}\n\n.quick-select {\n\tcolor: var(--n-700);\n\tbackground: none;\n}\n\ninput.selector+label {\n\tvertical-align: top;\n\tmin-height: 64px;\n\tmin-width: 64px;\n\tmargin: 3px 3px;\n}\n\ninput.mini-selector+label {\n\tmargin: 3px -3px;\n\ttop: -1px;\n}\n\ninput.selector+label:hover, input.mini-selector+label:hover, .quick-select:hover {\n\tborder-color: var(--data-class-amber);\n\topacity: 1;\n}\n\ninput.selector:checked+label, input.mini-selector:checked+label {\n\tborder-color: darkorange;\n\topacity: 1;\n}\n\ninput.selector:focus-visible+label, input.mini-selector:focus-visible+label, .quick-select:focus-visible {\n\toutline-style: inset;\n outline-offset: 1px;\n outline-color: var(--data-focus-ring-soft);\n outline-width: 1px;\n}\n\ninput.selector+label .info {\n\tdisplay: inline-block;\n\tmargin-left: 5px;\n\tvertical-align: top;\n\tfont-weight: normal;\n\tfont-size: 0.9em;\n}\n\ninput.selector:checked+label .info {\n\tdisplay: inline-block;\n}\n\ninput[type=checkbox]:not(.selector) + label {\n\tmargin-left: 4px;\n\tvertical-align:top;\n\tcursor:pointer;\n}\n\ninput[type='radio'], input[type='checkbox'] {\tfilter: invert(1);}\ninput[type='checkbox'] { accent-color: var(--n-850); }",".gridster > ul {\n\t//background: var(--scrim-80);\n\tlist-style-type: none;\n}\n\n.gridster > li {\n overflow: hidden;\n}\n\n.controls i, .controls span.control {\n\tcursor: pointer;\n}\n\n.toggle-panel {\n\tposition: absolute;\n background: var(--n-020);\n border: 1px var(--n-250) solid;\n padding: 3px;\n}\n\n.gridster li div.content {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 5px;\n\tbottom: 5px;\n\tleft: 5px;\n\n\toverflow: auto;\n}\n\n.gridster li .controls + .content {\n\ttop: 18px;\n}\n\n.gridster {\n\tvisibility: hidden;\n margin: 0 auto;\n padding: 50px 0 140px 0;\n\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n -webkit-transition: opacity .6s;\n -moz-transition: opacity .6s;\n -o-transition: opacity .6s;\n -ms-transition: opacity .6s;\n transition: opacity .6s;\n}\n\n.gridster > * {\n margin: 0 auto;\n}\n\n.gridster-transition {\n\t-webkit-backface-visibility: hidden;\n\tbackface-visibility: hidden;\n\n\t-webkit-transition: height .4s, width .4s;\n -moz-transition: height .4s, width .4s;\n -o-transition: height .4s, width .4s;\n -ms-transition: height .4s, width .4s;\n transition: height .4s, width .4s;\n}\n\n.gridster .gs-w {\n z-index: 2;\n position: absolute;\n}\n\n.gridster .gs-w {\n //background: var(--veil-grey);\n background: var(--scrim-60);\n}\n\n.gridster .gs-w:hover .grid-resize-both {\n\topacity: 1;\n}\n\n.gridster .grid-resize {\n\tposition: absolute;\n\tz-index: 1;\n}\n\n.gridster .grid-resize-both {\n width: 30px;\n height: 30px;\n bottom: -18px;\n right: -18px;\n cursor: se-resize;\n z-index: 20;\n opacity: 0;\n color: var(--n-750);\n}\n\n.gridster .gs-resize-handle-both:before {\n\tcontent: \"\\e018\";\n}\n\n.gridster .player {\n background: var(--veil-silver);\n}\n\n.gridster .preview-holder {\n border: none;\n background: var(--veil-danger);\n}\n","@font-face {\n\tfont-family: 'icon';\n\tsrc:url('../fonts/tripwire.eot?w81bs6');\n\tsrc:url('../fonts/tripwire.eot?#iefixw81bs6') format('embedded-opentype'),\n\t\turl('../fonts/tripwire.woff?w81bs6') format('woff'),\n\t\turl('../fonts/tripwire.ttf?w81bs6') format('truetype'),\n\t\turl('../fonts/tripwire.svg?w81bs6#icon') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n/* Use the following CSS code if you want to use data attributes for inserting your icons */\n[data-icon] {\n\tfont-family: 'icon';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: 1;\n\n\t/* Better Font Rendering =========== */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n[data-icon]:hover {\n\ttext-decoration: none;\n}\n\n[data-icon=\"undo\"]:before {\n\tcontent: \"\\e60e\";\n}\n[data-icon=\"redo\"]:before {\n\tcontent: \"\\e612\";\n}\n[data-icon=\"move-horizontal\"]:before {\n\tcontent: \"\\e600\";\n}\n[data-icon=\"move-vertical\"]:before {\n\tcontent: \"\\e601\";\n}\n[data-icon=\"tripwire-logo\"]:before {\n\tcontent: \"\\e602\";\n}\n[data-icon=\"edit\"]:before {\n\tcontent: \"\\e609\";\n}\n[data-icon=\"pin\"]:before {\n\tcontent: \"\\e60a\";\n}\n[data-icon=\"plus-circle\"]:before {\n\tcontent: \"\\e60b\";\n}\n[data-icon=\"minus-circle\"]:before {\n\tcontent: \"\\e60c\";\n}\n[data-icon=\"times-circle\"]:before {\n\tcontent: \"\\e60d\";\n}\n[data-icon=\"check\"]:before {\n\tcontent: \"\\f00c\";\n}\n[data-icon=\"times\"]:before {\n\tcontent: \"\\f00d\";\n}\n[data-icon=\"plus\"]:before {\n\tcontent: \"\\f067\";\n}\n[data-icon=\"minus\"]:before {\n\tcontent: \"\\f068\";\n}\n[data-icon=\"eye\"]:before {\n\tcontent: \"\\e000\";\n}\n[data-icon=\"pulsar\"]:before {\n\tcontent: \"\\e001\";\n\tcolor: var(--data-link);\n}\n[data-icon=\"connection\"]:before {\n\tcontent: \"\\e002\";\n}\n[data-icon=\"settings\"]:before {\n\tcontent: \"\\e003\";\n}\n[data-icon=\"magnetar\"]:before {\n\tcontent: \"\\e004\";\n\tcolor: var(--data-magenta);\n}\n[data-icon=\"wolf-rayet\"]:before {\n\tcontent: \"\\e005\";\n\tcolor: var(--data-bronze);\n}\n[data-icon=\"portrait\"]:before {\n\tcontent: \"\\e006\";\n}\n[data-icon=\"landscape\"]:before {\n\tcontent: \"\\e007\";\n}\n[data-icon=\"erase\"]:before {\n\tcontent: \"\\e008\";\n}\n[data-icon=\"lock-open\"]:before {\n\tcontent: \"\\e009\";\n}\n[data-icon=\"lock\"]:before {\n\tcontent: \"\\e00a\";\n}\n[data-icon=\"user\"]:before {\n\tcontent: \"\\e00b\";\n}\n[data-icon=\"red-giant\"]:before {\n\tcontent: \"\\e00c\";\n\tcolor: red;\n}\n[data-icon=\"search\"]:before {\n\tcontent: \"\\e00d\";\n}\n[data-icon=\"star-empty\"]:before {\n\tcontent: \"\\e00e\";\n}\n[data-icon=\"star\"]:before {\n\tcontent: \"\\e00f\";\n}\n[data-icon=\"blackhole\"]:before {\n\tcontent: \"\\e010\";\n\tcolor: var(--n-900);\n}\n[data-icon=\"fullscreen\"]:before {\n\tcontent: \"\\e011\";\n}\n[data-icon=\"fullscreen-exit\"]:before {\n\tcontent: \"\\e012\";\n}\n[data-icon=\"home\"]:before {\n\tcontent: \"\\e013\";\n}\n[data-icon=\"key\"]:before {\n\tcontent: \"\\e014\";\n}\n[data-icon=\"alert\"]:before {\n\tcontent: \"\\e015\";\n}\n[data-icon=\"help\"]:before {\n\tcontent: \"\\e016\";\n}\n[data-icon=\"resize\"]:before {\n\tcontent: \"\\e017\";\n}\n[data-icon=\"info\"]:before {\n\tcontent: \"\\e018\";\n}\n[data-icon=\"tree\"]:before {\n\tcontent: \"\\e019\";\n}\n[data-icon=\"anchor\"]:before {\n\tcontent: \"\\e020\";\n}\n[data-icon=\"prop-mod\"]:before {\n\tcontent: \"\\e021\";\n}\n[data-icon=\"follow\"]:before {\n\tcontent: \"\\e60f\";\n}\n[data-icon=\"viewing\"]:before {\n\tcontent: \"\\e610\";\n}\n[data-icon=\"cataclysmic-variable\"]:before {\n\tcontent: \"\\e611\";\n\tcolor: var(--data-pale-yellow);\n}\n[data-icon=\"layout\"]:before {\n\tcontent: \"\\e603\";\n}\n[data-icon=\"auto\"]:before {\n\tcontent: \"\\e604\";\n}\n[data-icon=\"check-on\"]:before {\n\tcontent: \"\\e605\";\n}\n[data-icon=\"check-off\"]:before {\n\tcontent: \"\\e606\";\n}\n[data-icon=\"radio-off\"]:before {\n\tcontent: \"\\e607\";\n}\n[data-icon=\"radio-on\"]:before {\n\tcontent: \"\\e608\";\n}\n[data-icon=\"trash\"]:before {\n\tcontent: \"\\e9ad\";\n\tvertical-align: text-top;\n}\n[data-icon=\"sort\"]:before {\n\tcontent: \"\\f0dc\";\n}\n[data-icon=\"sort-desc\"]:before {\n\tcontent: \"\\f0dd\";\n}\n[data-icon=\"sort-asc\"]:before {\n\tcontent: \"\\f0de\";\n}\n",".introjs-helperLayer {\n background-color: var(--n-400);\n}\n\na.introjs-button:hover, a.introjs-skipbutton:hover {\n color: var(--n-560);\n}\n",".validation-tooltip .jBox-container, .validation-tooltip .jBox-pointer:after {\n\tbackground: var(--data-danger);\n\tcolor: white;\n\tborder: none;\n\tfont-weight: bold;\n\tfont-size: 1.2em;\n\tpadding: 3px;\n}\n\n.jBox-container {\n\tbackground: var(--n-200);\n\tcolor: var(--n-800);\n\tmin-height: 20px;\n}\n\n.jBox-content {\n\tpadding: 4px 5px;\n}\n\n/* Pointer */\n\n.jBox-pointer-right { right: 2px; }\n\n.jBox-pointer:after {\n\tbackground: var(--n-200);\n}\n\n/* jBox Notice */\n\n.jBox-Notice .jBox-container {\n border-radius: 3px;\n\tbox-shadow: 0 0 3px var(--n-000);\n\n\tcolor: var(--n-999);\n\tfont-size: 1.1em;\n\ttext-shadow: 0 -1px 0 var(--n-000);\n\tbackground: var(--n-200);\n\tbackground-image: linear-gradient(to bottom, var(--n-300), var(--n-100));\n}\n\n.jBox-Notice .jBox-content {\n\tpadding: 6px 10px;\n}\n\n.jBox-Notice .jBox-title {\n\tpadding: 8px 20px 0;\n}\n\n.jBox-Notice-color .jBox-container {\n\ttext-shadow: 0 -1px 0 var(--shadow-30);\n}\n\n.jBox-Notice-gray .jBox-container {\n\tcolor: var(--n-500);\n\ttext-shadow: 0 1px 0 var(--n-999);\n\tbackground: var(--n-920);\n\tbackground-image: linear-gradient(to bottom, var(--n-960), var(--n-900));\n}\n\n.jBox-Notice-red .jBox-container {\n\tbackground: var(--ui-red);\n\tbackground-image: linear-gradient(to bottom, var(--ui-red-lit), var(--ui-red));\n}\n\n.jBox-Notice-green .jBox-container {\n\tbackground: var(--ui-green);\n\tbackground-image: linear-gradient(to bottom, var(--ui-green-lit), var(--ui-green));\n}\n\n.jBox-Notice-blue .jBox-container {\n\tbackground: var(--ui-blue);\n\tbackground-image: linear-gradient(to bottom, var(--ui-blue-lit), var(--ui-blue));\n}\n\n.jBox-Notice-yellow .jBox-container {\n\tcolor: var(--data-brown);\n\ttext-shadow: 0 1px 0 var(--glow-60);\n\tbackground: var(--ui-amber);\n\tbackground-image: linear-gradient(to bottom, var(--ui-amber-lit), var(--ui-amber));\n}\n\n.jBox-Notice-yellow .jBox-container a {\n\tcolor: var(--n-650);\n}\n",".mask .corporate { color: green }\n.mask .alliance { color: var(--data-alliance);display: inline-block;transform: scaleY(-1) translateY(2px); }\t/* need the block to make the transform work */\n.mask i { padding-right: 2px }\n\n#mask-menu a { display: block }\n\n/* Overlays etc on the mask panel */\n#masks label > img { margin-top: 3px; }\n#masks label { height: 69px; }\n.source_bar {\n position: absolute;\n top: 0; left: 0;\n\twidth: 100%;\n\theight: 3px;\n color: var(--n-800);\n font-size: .8em;\n\tborder-radius: 3px 3px 0 0;\n}\n\n.source_bar.global { background: var(--n-550) }\n.source_bar.personal { background: var(--n-800) }\n.source_bar.corporate { background: green }\n.source_bar.alliance { background: var(--data-alliance) }\n\n.icon_bar {\n position: absolute;\n top: 3px; right: 0;\n}\n\n.icon_bar .icon {\n\tborder-radius: 1em;\n\topacity: 0.7;\n\tfont-size: 0.85em;\n\tpadding: 0.15em;\n\theight: 1em;\n\twidth: 1em;\n\tdisplay: inline-block;\n\ttext-align: center;\n\ttext-decoration: none;\n}\n\n.icon_bar .icon:hover, .icon_bar .icon:focus {\n\topacity: 1;\n}\n\n.icon_bar .closeIcon { background: maroon }\n.icon_bar .joinIcon { background: green }\n\n#mask-explanation p { margin: 0.5em 0; }","html .ui-selectmenu-menu li a, html .ui-selectmenu-status {\n\tpadding: 0em 1em 0em .5em;\n\tfont-weight: bold;\n\ttext-align: left;\n}\n\nhtml a.ui-selectmenu:hover {\n\ttext-decoration: none;\n}\n\nhtml .ui-selectmenu {\n\theight: auto;\n\t//margin-bottom: .2em;\n\t//padding: 0.1em;\n}\n\nhtml .ui-selectmenu-menu ul {\n\t//padding: 0 0.1em;\n}\n\n#whType, #sigID {\n\ttext-transform: uppercase;\n\ttext-align: center;\n\tpadding-left: 0px;\n}\n\n#sigAddForm th, #sigEditForm th {\n\ttext-align: right;\n}\n\n#sigAddForm table tr td, #sigEditForm table tr td {\n\tpadding: 2px 0;\n}\n\n#sigTable {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\ttext-align: center;\n\ttable-layout: fixed;\n\tmargin-left: -1px;\n\tuser-select: none;\n}\n\n#sigTable th {\n\tbackground: var(--scrim-n200);\n\tborder: 1px solid var(--n-000);\n}\n\n#sigTable td {\n\tbackground: var(--scrim-n050);\n\tborder: 1px solid var(--n-000);\n\tcursor: default;\n}\n\n#sigTable tr:hover td {\n\tbackground-color: var(--n-300);\n}\n\n#sigTable tr.selected td {\n\tbackground-color: var(--n-200);\n}\n\n#sigTable th:nth-child(1) {\n\twidth: 50px;\n}\n\n#sigTable th:nth-child(2) {\n\twidth: 45px;\n}\n\n#sigTable th:nth-child(3) {\n\twidth: 40px;\n}\n\n#sigTable th:nth-child(5), #sigTable th:nth-child(6) {\n\twidth: 40px;\n}\n\n#sigTable td:nth-child(1) {\n\tfont-family: \"lucida\";\n\tletter-spacing: 1px;\n\ttext-transform: uppercase;\n}\n\n#sigTable td:nth-child(2) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td:nth-child(5), #sigTable td:nth-child(6) {\n\ttext-transform: capitalize;\n}\n\n#sigTable td.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\n#sigTable td.centerAlign {\n\ttext-align: center;\n}\n\n#sigTable td.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\n#sigTable a.siteLink {\n\tcolor: var(--data-olive);\n}\n\n#sigTable tbody .disabled {\n\tcolor: var(--n-300);\n}\n\n.return-visible .return-link { display: inline }\n.return-invisible .return-link { display: none }\n\n.tablesorter .tablesorter-header {\n\tcursor: pointer;\n\tvertical-align: middle;\n\tfont-size: 10px;\n}\n\n.tablesorter .tablesorter-header:focus {\n\toutline: none;\n}\n\n.tablesorter .tablesorter-header i:before, .tablesorter .sortable i:before {\n\tcontent: \"\\f0dc\";\n\tvertical-align: bottom;\n\tpadding: 1px 2px;\n\tfloat: right;\n}\n\n.tablesorter .headerSortUp,\n.tablesorter .tablesorter-headerSortUp,\n.tablesorter .tablesorter-headerAsc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortUp i:before,\n.tablesorter .tablesorter-headerSortUp i:before,\n.tablesorter .tablesorter-headerAsc i:before {\n\tcontent: \"\\f0de\";\n}\n\n.tablesorter .headerSortDown,\n.tablesorter .tablesorter-headerSortDown,\n.tablesorter .tablesorter-headerDesc {\n\tcolor: var(--n-880);\n}\n\n.tablesorter .headerSortDown i:before,\n.tablesorter .tablesorter-headerSortDown i:before,\n.tablesorter .tablesorter-headerDesc i:before {\n\tcontent: \"\\f0dd\";\n}\n\n.tablesorter thead .sorter-false {\n\tcursor: default;\n}\n\n#dialog-signature hr {\n\tmargin-left: 15px;\n\tmargin-bottom: 10px;\n}\n\n#dialog-signature .label {\n\tfont-weight: bold;\n\ttext-align: right;\n\tvertical-align: text-top;\n}\n\n#dialog-signature .select {\n\tdisplay: inline-block;\n\tvertical-align: text-bottom;\n}\n\n#dialog-signature .row {\n\tmin-height: 22px;\n}\n\n#dialog-signature .label:first-child {\n\tdisplay: inline-block;\n\tmin-width: 70px;\n}\n\n#dialog-signature #signatureName span {\n\tdisplay: table-cell;\n}\n\n#dialog-signature #signatureName span:last-child {\n\twidth: 100%;\n\tpadding-left: 3px;\n}\n\n#dialog-signature #signatureName input {\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n#dialog-signature #signatureType, #dialog-signature #wormholeMass {\n\tfloat: right;\n}\n\n#dialog-signature #wormholeMass .label, #dialog-signature .bookmark .label {\n\tmin-width: auto;\n}\n\n#dialog-signature .signatureID, #dialog-signature .wormholeType {\n\ttext-align: center;\n\ttext-transform: uppercase;\n}\n\n#dialog-signature .side {\n\tposition: relative;\n\tmin-height: 70px;\n}\n\n#dialog-signature .sideLabel {\n\tposition: absolute;\n\tleft: -10px;\n\tfont-weight: bold;\n\ttransform: rotate(-90deg);\n\ttransform-origin: left top 0;\n}\n\n#dialog-signature #wormhole .side:first-child .sideLabel {\n\tbottom: 0px;\n\twidth: 90px;\n\ttext-align: left;\n}\n\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\tbottom: -70px;\n\twidth: 135px;\n\ttext-align: right;\n}\n\n.custom-combobox {\n\tposition: relative;\n\tdisplay: inline-table;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: -20px;\n\tmargin-left: -1px;\n\tpadding: 0;\n}\n\n.custom-combobox input {\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.custom-combobox .custom-combobox-toggle {\n\tpadding: 0.4em 0.8em;\n\tborder-radius: 0;\n\tborder-top-right-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.wormholeTypeQuickSelect {\n\tmargin-left: 1.8em;\n}\n\n.quickSelectBar button {\n\tpadding: 1px; margin-right: 1px;\n}\n\n#leadsToQuickBar {\n\tmargin-left: 74px;\n\tmargin-top: 2px;\n\tmargin-bottom: 4px;\n}\n\n.popover {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 1060;\n\tdisplay: block;\n\tmax-width: 276px;\n\tpadding: 1px;\n\tfont-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tletter-spacing: normal;\n\tline-break: auto;\n\tline-height: 1.5;\n\ttext-align: left;\n\ttext-align: start;\n\ttext-decoration: none;\n\ttext-shadow: none;\n\ttext-transform: none;\n\twhite-space: normal;\n\tword-break: normal;\n\tword-spacing: normal;\n\tfont-size: 0.875rem;\n\tword-wrap: break-word;\n\tbackground-color: var(--n-999);\n\t-webkit-background-clip: padding-box;\n\t\t\t\t\tbackground-clip: padding-box;\n\tborder: 1px solid var(--shadow-20b);\n\tborder-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n\tmargin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n\tleft: 50%;\n\tborder-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n\tbottom: -11px;\n\tmargin-left: -11px;\n\tborder-top-color: var(--shadow-25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n\tbottom: -10px;\n\tmargin-left: -10px;\n\tborder-top-color: var(--n-999);\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n\tmargin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n\ttop: 50%;\n\tborder-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n\tleft: -11px;\n\tmargin-top: -11px;\n\tborder-right-color: var(--shadow-25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n\tleft: -10px;\n\tmargin-top: -10px;\n\tborder-right-color: var(--n-999);\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n\tmargin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n\tleft: 50%;\n\tborder-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n\ttop: -11px;\n\tmargin-left: -11px;\n\tborder-bottom-color: var(--shadow-25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n\ttop: -10px;\n\tmargin-left: -10px;\n\tborder-bottom-color: var(--n-940);\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\tdisplay: block;\n\twidth: 20px;\n\tmargin-left: -10px;\n\tcontent: \"\";\n\tborder-bottom: 1px solid var(--n-940);\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n\tmargin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n\ttop: 50%;\n\tborder-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n\tright: -11px;\n\tmargin-top: -11px;\n\tborder-left-color: var(--shadow-25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n\tright: -10px;\n\tmargin-top: -10px;\n\tborder-left-color: var(--n-999);\n}\n\n.popover-title {\n\tpadding: 8px 14px;\n\tmargin-bottom: 0;\n\tfont-size: 1rem;\n\tbackground-color: var(--n-940);\n\tborder-bottom: 1px solid var(--n-870);\n\tborder-top-right-radius: calc(0.3rem - 1px);\n\tborder-top-left-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n\tdisplay: none;\n}\n\n.popover-content {\n\tpadding: 9px 14px;\n}\n\n.popover::before,\n.popover::after {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 0;\n\theight: 0;\n\tborder-color: transparent;\n\tborder-style: solid;\n}\n\n.popover::before {\n\tcontent: \"\";\n\tborder-width: 11px;\n}\n\n.popover::after {\n\tcontent: \"\";\n\tborder-width: 10px;\n}\n\n.age-tooltip-table td {\n\tpadding-left: 12px;\n}\n","#wrapper {\n\theight: 100%;\n\toverflow: auto;\n\n\tbackground-color: black;\n\tbackground-image: url(../images/bg.jpg);\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\n\t-webkit-background-size: cover;\n\t-moz-background-size: cover;\n\t-o-background-size: cover;\n\tbackground-size: cover;\n}\n\n#inner-wrapper {\n\tmin-height: 100%;\n\tposition: relative;\n}\n\n#pageTime {\n\ttext-align: center;\n\tfont-size: 0.8em;\n\topacity: 0.6;\n}\n\n#footer {\n\tposition: absolute;\n\tbottom: 0;\n\twidth: 100%;\n\ttext-align: center;\n\tpadding-bottom: 10px;\n}\n\n#legal {\n\tfont-size: 0.5em;\n\twidth: 60%;\n\ttext-align: center;\n\tmargin: 0 auto;\n\topacity: 0.5;\n}\n\n#topbar {\n\tposition: fixed;\n\ttop: 0;\n\theight: 45px;\n\twidth: 100%;\n\tbackground: var(--scrim-80);\n\tz-index: 3;\n\tline-height: 40px;\n}\n\n#topbar div { line-height: normal; } /** reset for children */\n\n#topbar h1, #topbar h2, #topbar h3, #topbar form {\n\tdisplay: inline;\n}\n\n#topbar .align-right {\n\tpadding-right: 25px;\n}\n\n#topbar .align-left {\n\tpadding-left: 25px;\n}\n\n#logo {\n\tposition: relative;\n}\n\n#version {\n\tposition: absolute;\n\tcolor: var(--data-info);\n\tfont-size: 0.4em;\n\theight: 0;\n\ttop: 4px;\n\tright: 20px;\n}\n\n#clipboard {\n\tposition: fixed;\n\tleft: -99em;\n\ttop: 0;\n}\n\n#searchSpan {\n\tdisplay: none;\n}\n\n.controls {\n position: absolute;\n padding: 3px;\n z-index: 1;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.controls i {\n\tfont-size: 1.2em;\n\tpadding: 0px 2px;\n\tvertical-align: middle;\n\tfont-style: normal;\n}\n\n.controls button {\n\tfont-size: 1em;\n color: var(--n-500);\n margin: 2px;\n padding: 1px;\n background: var(--n-100);\n border: 1px solid var(--n-000);\n\toutline: 0;\n cursor: pointer;\n background-image: linear-gradient(var(--n-100),var(--n-050));\n}\n\n.tooltip-data {\n\tbackground: var(--scrim-n120);\n\tpadding: 5px;\n\tcolor: var(--n-800);\n\tborder: none;\n\tbox-shadow: none;\n\t-webkit-box-shadow: none;\n\n\tborder-radius: 3px;\n}\n\n.tooltip-data table {\n\tborder: none;\n\tborder-collapse: collapse;\n}\n\n.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }\n.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }\n.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }\n\n#chainMenu, #signatureColumnMenu {\n\tz-index: 5;\n}\n\n/* Loading animation container */\n.loading {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n}\n\n/* Spinning circle (inner circle) */\n.loading .maskedCircle {\n\twidth: 2em;\n\theight: 2em;\n\n\t-webkit-border-radius: 1em;\n -moz-border-radius: 1em;\n -ms-border-radius: 1em;\n -o-border-radius: 1em;\n border-radius: 1em;\n\n\tborder: 3px solid var(--n-000);\n}\n\n/* Spinning circle mask */\n.loading .mask {\n\twidth: 1em;\n\theight: 1em;\n\toverflow: hidden;\n}\n\n/* Spinner */\n.loading .spinner {\n\tposition: absolute;\n\tleft: 1px;\n\ttop: 1px;\n\twidth: 2em;\n\theight: 2em;\n\t-webkit-animation: spin 1s infinite linear;\n\t-moz-animation: spin 1s infinite linear;\n\t-o-animation: spin 1s infinite linear;\n\tanimation: spin 1s infinite linear;\n}\n\ntable.stdTable {\n\twidth: 100%;\n}\n\ntable.stdTable th {\n\ttext-align: left;\n}\n\ndiv.overlay {\n\tposition: fixed;\n\tz-index: 101;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\topacity: 0.3;\n\tbackground: var(--n-700) url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;;\n}\n\n.control-group { display:inline-block; text-align: center }\ntd .control-group { width: 100% }\n\n.whEffect { padding-right: 2px; }\n\n.copy { font-size: 75%; margin: 0 3px; padding: 2px }\n.copy::after { content: '\\01F4C4\\00FE0E' }\n\n#activityGraph { padding-top: 8px; }\n#activityGraphControls { padding-bottom: 8px; }\n\n#activityGraph svg > g:nth-child(3) > g > path {\n\tfill: var(--scrim-n020);\n\tstroke: var(--stroke-n120);\n}\n\n#activityGraph svg > g:nth-child(3) > g > g > text {\n\tfill: var(--n-800);\n}\n\n#activityGraph svg > g:nth-child(2) > g:last-child > g {\n\tcursor: pointer;\n}\n\n/* Autocomplete */\nul.ui-autocomplete {\n\tmax-height: 140px;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n}\n\ntd.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\ntd.centerAlign {\n\ttext-align: center;\n}\n\ntd.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n\nth.leftAlign {\n\ttext-align: left;\n\tpadding-left: 2px;\n}\n\nth.centerAlign {\n\ttext-align: center;\n}\n\nth.rightAlign {\n\ttext-align: right;\n\tpadding-right: 2px;\n}\n","/* ============================================================================\n TRIPWIRE DESIGN SYSTEM\n\n A reimagining of the interface in Aperture's design language, not a patch\n over the old one. The vocabulary below is Aperture's, taken from its\n globals.css so the two tools speak the same language:\n\n role tokens, not a grey ramp --background / --card / --popover / --muted\n borders as light --border is white at 10%, --input at 15%\n one radius --radius: 0.625rem, everything derives\n muted-foreground for secondary text, ring for focus\n\n Tripwire's own --n-* ramp and --data-* semantics still exist underneath and\n still drive the map, because those encode EVE meaning. This layer governs\n chrome: surfaces, controls, type, tables, dialogs, states.\n\n Ordering: this file must load after the component stylesheets, which is what\n the _override-* group in gulpfile.js exists for.\n ========================================================================= */\n\n:root {\n\t/* ---- surfaces -------------------------------------------------------- */\n\t--background: oklch(0.145 0 0);\n\t--foreground: oklch(0.80 0 0);\n\t--card: oklch(0.205 0 0);\n\t--card-foreground: oklch(0.82 0 0);\n\t--popover: oklch(0.205 0 0);\n\t--popover-foreground: oklch(0.80 0 0);\n\t--muted: oklch(0.269 0 0);\n\t--muted-foreground: oklch(0.66 0 0);\n\t--accent-surface: oklch(0.269 0 0);\n\n\t/* ---- lines and focus ------------------------------------------------- */\n\t--border: oklch(1 0 0 / 10%);\n\t--border-strong: oklch(1 0 0 / 18%);\n\t--input: oklch(1 0 0 / 15%);\n\t--ring: var(--accent, oklch(0.556 0 0));\n\n\t/* ---- intent ---------------------------------------------------------- */\n\t--primary: var(--accent, oklch(0.922 0 0));\n\t--primary-foreground: oklch(0.205 0 0);\n\t--destructive: oklch(68.025% 0.2081 23.639);\n\n\t/* ---- geometry -------------------------------------------------------- */\n\t--radius: 0.625rem;\n\t--radius-sm: calc(var(--radius) * 0.5);\n\t--radius-md: calc(var(--radius) * 0.75);\n\n\t/* ---- rhythm ---------------------------------------------------------- */\n\t--space-1: 0.25rem;\n\t--space-2: 0.5rem;\n\t--space-3: 0.75rem;\n\t--space-4: 1rem;\n\t--space-5: 1.5rem;\n\n\t/* ---- type ------------------------------------------------------------ */\n\t--fs-xs: 0.8rem;\n\t--fs-sm: 0.9rem;\n\t--fs-base: 1rem;\n\t--fs-md: 1.15rem;\n\t--fs-lg: 1.5rem;\n\t--fs-xl: 2rem;\n}\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(1 0 0);\n\t\t--foreground: oklch(0.145 0 0);\n\t\t--card: oklch(1 0 0);\n\t\t--card-foreground: oklch(0.145 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--popover-foreground: oklch(0.145 0 0);\n\t\t--muted: oklch(0.97 0 0);\n\t\t--muted-foreground: oklch(0.556 0 0);\n\t\t--accent-surface: oklch(0.97 0 0);\n\t\t--border: oklch(0.922 0 0);\n\t\t--border-strong: oklch(0.85 0 0);\n\t\t--input: oklch(0.922 0 0);\n\t\t--destructive: oklch(0.577 0.245 27.325);\n\t\t--primary-foreground: oklch(0.985 0 0);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(1 0 0);\n\t--foreground: oklch(0.145 0 0);\n\t--card: oklch(1 0 0);\n\t--card-foreground: oklch(0.145 0 0);\n\t--popover: oklch(1 0 0);\n\t--popover-foreground: oklch(0.145 0 0);\n\t--muted: oklch(0.97 0 0);\n\t--muted-foreground: oklch(0.556 0 0);\n\t--accent-surface: oklch(0.97 0 0);\n\t--border: oklch(0.922 0 0);\n\t--border-strong: oklch(0.85 0 0);\n\t--input: oklch(0.922 0 0);\n\t--destructive: oklch(0.577 0.245 27.325);\n\t--primary-foreground: oklch(0.985 0 0);\n}\n\n/* ============================================================================\n BASE\n ========================================================================= */\n\nhtml {\n\t/* Was .6em -> 9.6px, with nine ad-hoc sizes from 6px to 19.2px in use.\n\t Verified before changing: no panel overflows at 12px. */\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n\nbody {\n\tcolor: var(--foreground);\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\na { color: var(--primary); font-weight: 500; }\na:hover { color: var(--primary); text-decoration: underline; }\n\n::selection { background: var(--primary); color: var(--primary-foreground); }\n\n/* One focus treatment everywhere. Matters more now the app is keyboard-driven. */\n:focus-visible {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n\tborder-radius: var(--radius-sm);\n}\n\n/* ============================================================================\n SURFACES\n Everything raised is a card: same ground, same edge, same radius.\n ========================================================================= */\n\n.gridWidget,\n.ui-dialog,\n.jBox-container {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n\tcolor: var(--card-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: none;\n}\n\n.gridWidget > .controls,\n.ui-dialog .ui-dialog-titlebar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tborder-radius: var(--radius) var(--radius) 0 0;\n\tpadding: var(--space-2) var(--space-3);\n\tmin-height: 0;\n}\n\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\tmargin: 0;\n\tfloat: none;\n}\n\n.panel-title {\n\tflex: 0 0 auto;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n\twhite-space: nowrap;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tcolor: var(--card-foreground);\n\tbackground: transparent;\n}\n\n.ui-dialog .ui-dialog-buttonpane {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-top: 1px solid var(--border);\n\tmargin: 0;\n\tpadding: var(--space-3) var(--space-4);\n}\n\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: none; text-align: right; }\n\n/* The dialog's own close affordance, and the panel hide control, are the same\n thing and should look it. */\n.ui-dialog .ui-dialog-titlebar-close,\n.panel-hide {\n\torder: 99;\n\tmargin-left: auto;\n\twidth: auto; height: auto;\n\tposition: static;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-md);\n\tline-height: 1;\n\tpadding: 0 var(--space-1);\n\tcursor: pointer;\n}\n.ui-dialog .ui-dialog-titlebar-close:hover,\n.panel-hide:hover { color: var(--destructive); background: none; }\n.ui-dialog .ui-dialog-titlebar-close .ui-icon { display: none; }\n.ui-dialog .ui-dialog-titlebar-close::after { content: \"\\00d7\"; }\n\n/* ============================================================================\n CONTROLS\n Flat at rest so rows read as data; the affordance arrives on approach.\n ========================================================================= */\n\ninput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\ninput[type=\"search\"], select, textarea {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tbox-shadow: none;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\ninput:hover, select:hover, textarea:hover { border-color: var(--border); }\n\ninput:focus, select:focus, textarea:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--muted);\n\toutline: none;\n}\n\n::placeholder { color: var(--muted-foreground); opacity: 1; }\n\nbutton, .ui-button, .ui-button.ui-widget,\ninput[type=\"button\"], input[type=\"submit\"] {\n\tappearance: none;\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont: inherit;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tpadding: var(--space-1) var(--space-3);\n\tbox-shadow: none;\n\ttext-shadow: none;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n\nbutton:hover, .ui-button:hover, .ui-button.ui-widget:hover,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover {\n\tborder-color: var(--border-strong);\n\tbackground-color: var(--muted);\n\tcolor: var(--foreground);\n}\n\n.ui-dialog-buttonpane button.is-primary {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground-color: transparent;\n}\n\nbutton[disabled], .disabled { opacity: .4; cursor: default; }\n\n/* ============================================================================\n DATA\n ========================================================================= */\n\n#sigTable { border-collapse: collapse; width: 100%; }\n\n#sigTable th {\n\tbackground: transparent;\n\tbackground-image: none;\n\tborder: 0;\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .09em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n\tpadding: var(--space-2) var(--space-2);\n\tbox-shadow: none;\n}\n\n#sigTable td {\n\tborder: 0;\n\tpadding: var(--space-2);\n\tfont-size: var(--fs-base);\n\tcolor: var(--card-foreground);\n}\n\n#sigTable tbody tr { transition: background-color .1s ease; }\n#sigTable tbody tr:nth-child(even) > td { background-color: oklch(1 0 0 / 3%); }\n#sigTable tbody tr:hover > td { background-color: var(--muted); }\n#sigTable tbody tr.selected > td { background-color: color-mix(in oklab, var(--primary) 18%, transparent); }\n\n/* Chips. Life, mass and security are small closed sets; they read faster as\n pills, and it keeps state out of the same register as the data beside it. */\n#sigTable td .stable, #sigTable td .critical, #sigTable td .destab,\n.chip-pill {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid currentColor;\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.7;\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Segmented control for the dialog's life/mass radios. */\n#dialog-signature .mini-selector { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-block;\n\tpadding: var(--space-1) var(--space-3);\n\tmargin-right: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n#dialog-signature .mini-selector + label:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature .mini-selector:checked + label {\n\tborder-color: currentColor;\n\tbackground: color-mix(in oklab, currentColor 15%, transparent);\n\tfont-weight: 600;\n}\n#dialog-signature .mini-selector:focus-visible + label { outline: 2px solid var(--ring); outline-offset: 1px; }\n\n/* ============================================================================\n NAVIGATION\n ========================================================================= */\n\n#topbar {\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tbackdrop-filter: blur(8px);\n\tborder-bottom: 1px solid var(--border);\n}\n\n#topbar #logo a { font-size: var(--fs-xl); }\n#version { font-size: var(--fs-xs); color: var(--muted-foreground); }\n#legal { font-size: var(--fs-xs); color: var(--muted-foreground); }\n\n/* Settings sections. The accordion is gone -- see options-dialog.js. These\n are the same

/
pairs, laid out flat in a scrolling pane so every\n setting is visible and scannable. */\n.settings-sections { display: flex; flex-direction: column; }\n\n.settings-sections > h3 {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 1;\n\tmargin: var(--space-4) 0 var(--space-2);\n\tpadding: var(--space-2) 0;\n\tbackground: var(--card);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n}\n.settings-sections > h3:first-child { margin-top: 0; }\n.settings-sections > h3 a { color: inherit; font-weight: inherit; text-decoration: none; cursor: default; }\n\n.settings-sections > div { padding: 0 0 var(--space-3); }\n\n#dialog-options { max-height: 62vh; overflow-y: auto; }\n\n.optionsTable tr { height: auto; }\n.optionsTable th, .optionsTable td { padding: var(--space-2); font-size: var(--fs-base); }\n.optionsTable th { color: var(--muted-foreground); font-weight: 500; }\ntr.line td, tr.line th { border-bottom: 1px solid var(--border); }\n\n/* jQuery UI's state classes carry the old theme's gradients wherever they land. */\n.ui-state-default, .ui-state-hover, .ui-state-active, .ui-state-focus,\n.ui-widget-header, .ui-widget-content {\n\tbackground-image: none;\n\ttext-shadow: none;\n}\n\n/* ============================================================================\n DIALOG SIZING\n Settings holds two-column option rows and was squeezed into the default\n dialog width, which is why its labels wrapped and its controls crowded.\n ========================================================================= */\n\n.ui-dialog:has(#dialog-options) { width: min(46rem, calc(100vw - 2rem)) !important; }\n#dialog-options { width: auto !important; }\n\n/* Option rows: label left, control right, on one rhythm. */\n#dialog-options .optionsTable { width: 100%; table-layout: fixed; }\n#dialog-options .optionsTable th {\n\twidth: 55%;\n\ttext-align: left;\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-base);\n\tvertical-align: middle;\n}\n#dialog-options .optionsTable td { text-align: right; vertical-align: middle; }\n#dialog-options input[type=\"text\"],\n#dialog-options input[type=\"password\"],\n#dialog-options select {\n\twidth: 100%;\n\tmax-width: 16rem;\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n}\n#dialog-options div.ui-slider { width: calc(100% - 3rem); }\n\n/* Yes/No and other radio pairs read as a segmented control, like the map's\n life and mass. */\n#dialog-options input[type=\"radio\"] { position: absolute; opacity: 0; pointer-events: none; }\n#dialog-options input[type=\"radio\"] + label {\n\tdisplay: inline-block;\n\tpadding: 2px var(--space-3);\n\tmargin-left: var(--space-1);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tvertical-align: middle;\n}\n#dialog-options input[type=\"radio\"] + label:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n#dialog-options input[type=\"radio\"]:checked + label {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 12%, transparent);\n\tfont-weight: 600;\n}\n#dialog-options input[type=\"radio\"]:focus-visible + label {\n\toutline: 2px solid var(--ring);\n\toutline-offset: 1px;\n}\n\n/* ============================================================================\n LEGIBILITY CORRECTIONS\n\n Not rebranding: these are data colours and they keep their meaning. They are\n lightened only enough to clear 4.5:1 against the card ground, measured. The\n originals were written for a near-black page and the card surface is lighter\n than that, so blue text in particular was failing badly -- the \"Blue loot\n buyer\" line sat at 2.63:1.\n ========================================================================= */\n\n:root {\n\t--data-info: #47a2fe; /* was #4399f0 4.18:1 -> 4.66:1 */\n\t--data-loot-blue: #9090ff; /* was #6060f0 2.63:1 -> 4.52:1 */\n\t--data-link: #4ca1ea; /* was #428bca 3.43:1 -> 4.50:1 */\n\t--data-class-sky: #3ca0ff; /* was #3388dd 3.38:1 -> 4.54:1 */\n\t--chart-1: #4e9dff; /* was #3366cc 2.32:1 -> 4.50:1 */\n}\n\n/* In the light theme the same hues need darkening instead. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--data-info: #1668c4;\n\t\t--data-loot-blue: #3b3bc9;\n\t\t--data-link: #1a6aa8;\n\t\t--data-class-sky: #1466a8;\n\t\t--chart-1: #1f4f9e;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--data-info: #1668c4;\n\t--data-loot-blue: #3b3bc9;\n\t--data-link: #1a6aa8;\n\t--data-class-sky: #1466a8;\n\t--chart-1: #1f4f9e;\n}\n\n/* ============================================================================\n HOVER / ACTIVE STATES\n\n forms.css styles these through `.ui-button:hover:not([disabled])` and\n `input[type=\"button\"]:not([disabled]):hover` -- three selectors deep, which\n outranks a plain :hover. That is why the raised-bevel gradient survived on\n hover and press after the rest was flattened.\n ========================================================================= */\n\nbutton:hover, button:active,\ninput[type=\"button\"]:hover, input[type=\"submit\"]:hover,\ninput[type=\"button\"]:active, input[type=\"submit\"]:active,\ninput[type=\"button\"]:not([disabled]):hover,\ninput[type=\"submit\"]:not([disabled]):hover,\ninput[type=\"button\"]:not([disabled]):active,\ninput[type=\"submit\"]:not([disabled]):active,\n.ui-button:hover, .ui-button:active,\n.ui-button:hover:not([disabled]), .ui-button:active:not([disabled]),\n.ui-button.ui-widget:hover:not([disabled]),\n.ui-button.ui-widget:active:not([disabled]),\n.ui-state-hover, .ui-state-active, .ui-state-focus,\na.ui-button:hover, a.ui-button:active {\n\tbackground-image: none !important;\n\tbox-shadow: none !important;\n\ttext-shadow: none !important;\n}\n\n/* ============================================================================\n GATE CHIPS\n The gate list was comma-separated prose. Each gate is a destination you can\n click, so it reads as a chip like everything else that is a discrete thing.\n ========================================================================= */\n\n.gate-list {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: var(--space-1);\n\tmargin: 0;\n}\n\n.gate-list > b {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 3px;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tline-height: 1.7;\n\twhite-space: nowrap;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n.gate-chip:hover { border-color: var(--border-strong); background: var(--accent-surface); }\n.gate-chip a { font-weight: 500; }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* The last two gradients in the app: a fade on the account dropdown and the\n chain zoom-reset button. Both are bevel-era leftovers. */\n#content.dialog-like,\n#chain-zoom-reset {\n\tbackground-image: none !important;\n}\n#content.dialog-like { background-color: var(--popover); }\n\n/* ============================================================================\n DIALOG SCROLLING\n\n jQuery UI sizes a dialog to its content, so a tall one grows past the\n viewport and the page scrolls behind it instead of the dialog scrolling\n inside itself. Settings was 1476px tall in a 900px window.\n\n The dialog becomes a flex column capped at the viewport: title bar and\n button pane hold their size, the content takes the remaining space and\n scrolls. Nothing else has to know its height.\n ========================================================================= */\n\n.ui-dialog {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmax-height: calc(100vh - 2rem);\n\tmax-width: calc(100vw - 2rem);\n\tbox-sizing: border-box;\n}\n\n.ui-dialog > .ui-dialog-titlebar,\n.ui-dialog > .ui-dialog-buttonpane { flex: 0 0 auto; }\n\n.ui-dialog > .ui-dialog-content {\n\tflex: 1 1 auto;\n\tmin-height: 0; /* without this a flex child refuses to shrink */\n\toverflow-y: auto;\n\tmax-height: none !important;\n\theight: auto !important;\n}\n\n/* Settings no longer needs its own cap now the dialog handles it. */\n#dialog-options { max-height: none; }\n\n/* The page itself must paint a ground. body was transparent, so anything that\n scrolled past #wrapper -- an over-tall dialog, the footer -- showed the\n browser's white through the app. */\nhtml, body {\n\tbackground-color: var(--background);\n}\n\n/* ============================================================================\n ROUTE SQUARES AND THE BLUE-LOOT LINE\n\n base.css:119 sets `.blue-loot, .blue-loot .hisec { color: loot-blue }`,\n which painted the whole line blue AND overrode the security colour on its\n route squares -- so the one place the squares carry meaning was the one\n place they did not show it.\n\n The line reads as normal text; each square keeps its own security colour and\n is big enough to actually read.\n ========================================================================= */\n\n.blue-loot,\n.sys-extra,\n.sys-extra .blue-loot {\n\tcolor: var(--foreground);\n}\n\n/* Only the destination is a link. */\n.sys-extra a, .blue-loot a { color: var(--primary); }\n\n/* Security colours win on the squares. */\n.blue-loot .hisec { color: var(--data-good) !important; }\n.blue-loot .lowsec { color: var(--data-warn) !important; }\n.blue-loot .nullsec{ color: var(--data-critical) !important; }\n\n.path span,\n.blue-loot .path span {\n\tfont-size: 1.35em;\n\tline-height: 1;\n\tletter-spacing: .06em;\n\tcursor: pointer;\n}\n.path span:hover { filter: brightness(1.35); }\n\n/* ============================================================================\n CHIPS — filled, not outlined\n\n Outlined chips in a colour put the meaning in a 1px border and left the\n label low-contrast. Filled reads at a glance and the label sits on white.\n ========================================================================= */\n\n.sys-meta .chip,\n.gate-chip,\n.sig-chip,\n#sigTable td .stable,\n#sigTable td .critical,\n#sigTable td .destab,\n.chip-pill {\n\tborder: 1px solid transparent;\n\tcolor: #fff;\n\tfont-weight: 600;\n}\n\n/* Neutral facts keep a quiet fill rather than shouting a colour. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-color: var(--border);\n}\n.gate-chip:hover, .sig-chip:hover {\n\tbackground: var(--accent-surface);\n\tborder-color: var(--border-strong);\n}\n\n/* State chips carry their colour as fill. */\n#sigTable td .stable { background: var(--data-good); border-color: var(--data-good); }\n#sigTable td .destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#sigTable td .critical { background: var(--data-critical); border-color: var(--data-critical); }\n\n/* Selected filter and option chips fill with the accent. */\n.sig-chip.on {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tbackground: var(--data-good); border-color: var(--data-good); color: #1b1b1b;\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tbackground: var(--data-info); border-color: var(--data-info); color: #1b1b1b;\n}\n\n#dialog-signature .mini-selector:checked + label,\n#dialog-options input[type=\"radio\"]:checked + label {\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n\tfont-weight: 600;\n}\n\n/* Life and mass keep their own meaning when selected. */\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n\n/* ============================================================================\n NAMED COLOURS\n\n The original token extraction swept hex and rgb() literals and missed CSS\n NAMED colours entirely -- fifteen of them survived, including the green mask\n star in the topbar. Mapped onto the token set here.\n ========================================================================= */\n\nbody .mask .corporate { color: var(--foreground); }\n.source_bar.corporate { background: var(--data-good); }\n.source_bar.alliance { background: var(--data-alliance); }\n#chainMap .statics span { background: var(--muted); }\n#chainMap .gate { border-color: var(--border-strong); }\n.jBox-container { color: var(--foreground); }\n\n/* ============================================================================\n TOPBAR\n\n TQ and the mask star were carrying data colours -- green for \"server is up\",\n green for \"corporate mask\". Neither is a reading you act on, and colour in\n the header competes with the map, where colour does mean something. Both go\n white; the count itself is the information.\n ========================================================================= */\n\n#topbar #serverStatus,\n#topbar #serverStatus .stable,\n#topbar #serverStatus .critical,\n#topbar #mask,\n#topbar #mask *,\n#topbar .mask .corporate,\n#topbar .mask .alliance,\n#topbar .mask .character,\n#topbar .mask .global {\n\tcolor: var(--foreground) !important;\n}\n\n/* A genuinely down server is worth the red, though. */\n#topbar #serverStatus.is-down,\n#topbar #serverStatus.is-down .critical {\n\tcolor: var(--data-critical) !important;\n}\n\n/* ============================================================================\n ROUTE LINES\n The squares belong beside the sentence they describe, not wrapped under it.\n ========================================================================= */\n\n.sys-extra > * ,\n.sys-extra {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tgap: .35em;\n}\n\n.sys-extra .path {\n\tdisplay: inline-flex;\n\talign-items: baseline;\n\tgap: .1em;\n\tmargin-left: .2em;\n}\n","/* Panel structure.\n Appearance now comes from the design system (_override-1-system.css); what\n remains here is layout the system cannot express generically. */\n\n/* The controls bar mixes floated children with the flow, so the floated group\n has to be pulled back into the flex line rather than escaping it. */\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n}\n\n/* A hidden panel leaves its grid cell empty rather than reflowing the others.\n Gridster positions every widget absolutely from saved coordinates, so\n collapsing the gap would mean rewriting them and discarding the arrangement\n the user made. Bring it back from the palette. */\n.gridWidget.panel-hidden { display: none; }\n","/* ============================================================================\n SIGNATURE DIALOG — form layout\n\n The dialog kept its original markup (.row > .label + controls) with new\n paint on top, and it showed: bold oversized labels competing with the\n values, no field affordance at all, ragged alignment, and controls landing\n on the wrong rows.\n\n This lays a real form grid over that markup. Every field the dialog had, it\n still has, in the same order.\n ========================================================================= */\n\n#dialog-signature .ui-dialog-content,\n#dialog-signature {\n\tfont-size: var(--fs-base);\n}\n\n/* One row = quiet label in a fixed column, controls flowing after it. */\n#dialog-signature .row {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-2);\n\tmargin: 0 0 var(--space-3) 0;\n\tline-height: 1.4;\n}\n\n/* Labels are wayfinding, not content: small, quiet, consistent width so every\n value starts on the same vertical line. */\n#dialog-signature .row > .label:first-child {\n\tflex: 0 0 5.5rem;\n\ttext-align: right;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .02em;\n}\n\n/* The separator between the two id halves must not take a label column. */\n#dialog-signature .row > .label:not(:first-child) {\n\tflex: 0 0 auto;\n\tcolor: var(--muted-foreground);\n\tfont-weight: 400;\n}\n\n/* ---- fields look like fields --------------------------------------------\n The system layer keeps controls flat so table rows read as data. A form is\n the opposite case: here the whole point is showing what can be edited. */\n\n#dialog-signature input[type=\"text\"],\n#dialog-signature input[type=\"password\"],\n#dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tbackground-color: var(--muted);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tpadding: var(--space-1) var(--space-2);\n\tmin-height: 1.9rem;\n}\n\n#dialog-signature input[type=\"text\"]:hover,\n#dialog-signature select:hover { border-color: var(--border-strong); }\n\n#dialog-signature input[type=\"text\"]:focus,\n#dialog-signature select:focus {\n\tborder-color: var(--ring);\n\tbackground-color: var(--background);\n}\n\n/* Values sized by what they hold, not by a stray `size` attribute. */\n#dialog-signature .signatureID { width: 3.6rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .wormholeType { width: 4.4rem; text-align: center; text-transform: uppercase; }\n#dialog-signature .leadsTo { width: 12rem; }\n#dialog-signature [name=\"signatureName\"],\n#dialog-signature [name=\"wormholeName\"] { flex: 1 1 12rem; min-width: 8rem; }\n\n/* Unresolved required fields read red at a glance. Applied by\n signature-dialog-keyboard.js: the id always, plus type and destination for\n a wormhole -- the fields the chain is drawn from. */\n#dialog-signature .sig-missing,\n#dialog-signature .sig-missing:focus {\n\tborder-color: var(--destructive);\n\tbox-shadow: 0 0 0 1px var(--destructive);\n}\n\n/* ---- lifetime reads as one control, not three loose numbers ------------- */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tfont-size: var(--fs-base);\n}\n#dialog-signature .duration-picker input {\n\twidth: 2.4rem;\n\ttext-align: center;\n}\n#dialog-signature .duration-picker span,\n#dialog-signature .duration-picker label {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- section headings ---------------------------------------------------\n Were rotated 90 degrees in a left gutter. One divider weight, one style. */\n#dialog-signature .sideLabel {\n\tposition: static;\n\ttransform: none;\n\tdisplay: block;\n\twidth: auto;\n\tmargin: var(--space-4) 0 var(--space-3);\n\tpadding-bottom: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .12em;\n\ttext-transform: uppercase;\n\ttext-align: left;\n}\n\n#dialog-signature .side { padding-left: 0; }\n#dialog-signature hr { display: none; } /* the second, heavier divider */\n\n/* ---- quick-select chips ------------------------------------------------\n Were wrapping into a ragged second line. One wrap-safe row, aligned under\n the value column rather than starting at the dialog edge. */\n#dialog-signature .quickSelectBar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tflex: 1 1 100%;\n\tmargin-left: 6rem; /* clears the label column */\n\tmargin-top: calc(var(--space-1) * -1);\n}\n\n#dialog-signature .quickSelectBar button {\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tpadding: 1px var(--space-2);\n\tmin-width: 0;\n\tmin-height: 0;\n\tfont-size: var(--fs-xs);\n\tline-height: 1.6;\n}\n\n#dialog-signature .quickSelectBar button:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n}\n\n/* The bare \"|\" divider inside the bar. */\n#dialog-signature .quickSelectBar { align-items: center; }\n\n/* ---- the wormhole-type shortcut button beside the type field ----------- */\n#dialog-signature .wormholeTypeQuickSelect button {\n\tfont-size: var(--fs-xs);\n\tpadding: 1px var(--space-2);\n\tmin-height: 0;\n}\n\n/* ---- width -------------------------------------------------------------\n The dialog was sized for the old cramped layout, so the type selector wrapped\n off the ID row and the class chips broke onto a ragged second line. */\n.ui-dialog:has(#dialog-signature) {\n\twidth: min(30rem, calc(100vw - 2rem)) !important;\n}\n#dialog-signature { width: auto !important; }\n\n/* ID row holds both id halves and the signature type together -- they are one\n statement (\"this signature, of this kind\"), so they belong on one line. */\n#dialog-signature .row:first-of-type { flex-wrap: nowrap; }\n#dialog-signature #signatureType { margin-left: auto; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 8rem; }\n\n/* Class chips: one tidy row under the destination field. */\n#dialog-signature .quickSelectBar {\n\tmargin-left: 6rem;\n\tgap: 3px;\n}\n#dialog-signature .quickSelectBar button {\n\tmin-width: 2rem;\n\ttext-align: center;\n\tfont-size: var(--fs-xs);\n\tpadding: 2px 0;\n}\n\n/* Lifetime: the three numbers are one value, so box them as one control\n rather than leaving them adrift in the row. */\n#dialog-signature #durationPicker,\n#dialog-signature .duration-picker {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n}\n#dialog-signature .duration-picker input {\n\tborder: 0;\n\tbackground: transparent;\n\tmin-height: 0;\n\tpadding: 0;\n\twidth: 2rem;\n}\n","/* ============================================================================\n RESPONSIVE — Track 6\n\n Scope is deliberately asymmetric, per the corp's actual use:\n\n READ band phones. Check a chain, see what is scanned. No editing\n chrome. width < 768px OR height < 600px.\n EDIT band tablets. Update signatures, drive the map. Touch-sized\n targets. width >= 768px AND height >= 600px.\n DESKTOP width >= 1280px AND a fine pointer.\n\n The height clause is what catches a landscape phone: an iPhone 15 turned\n sideways is 852px wide -- past any sensible tablet breakpoint -- but only\n 393px tall, with no room for the editing layout. Width alone gets this\n wrong.\n\n The fine-pointer clause on desktop is what keeps a landscape iPad Pro 11\"\n (~1194px) in the EDIT band rather than handing it the dense mouse layout it\n cannot hit accurately.\n\n Density is width-driven; control sizing is pointer-driven. They are separate\n questions: a 1000px window on a desktop wants the multi-panel layout but not\n 44px touch targets.\n ========================================================================= */\n\n/* ── READ: stack the panels ──────────────────────────────────────────────\n Gridster positions every widget absolutely from saved coordinates. Below\n the breakpoint that layout is abandoned entirely and the panels return to\n document flow -- which is the reflow the fixed grid cannot do. The saved\n coordinates are untouched, so rotating back restores the arrangement. */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t#wrapper { overflow-x: hidden; }\n\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmin-height: 12rem;\n\t\tmargin: 0 0 var(--space-3) 0 !important;\n\t\toverflow: visible;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t/* Chain map wants the most room; signatures next. */\n\t#chainWidget .content { min-height: 55vh; }\n\t#notesWidget .content { min-height: 14rem; }\n\n\t/* Resize handles are meaningless without a grid. */\n\t.grid-resize { display: none !important; }\n\n\t/* Editing chrome is out of scope on a phone: this band is for reading. */\n\t#signaturesWidget #add-signature,\n\t#signaturesWidget #edit-signature,\n\t#signaturesWidget #delete-signature,\n\t#signaturesWidget #undo,\n\t#signaturesWidget #redo,\n\t#notesWidget #add-comment,\n\t#layout {\n\t\tdisplay: none !important;\n\t}\n\n\t/* The topbar carries a lot for 393px. Keep identity, time and search. */\n\t#serverStatus,\n\t#topbar h3:nth-of-type(2) { display: none; }\n\n\t#topbar { position: sticky; }\n\n\t/* Signature table: drop the columns that only matter while editing. */\n\t#sigTable th:nth-child(n+5),\n\t#sigTable td:nth-child(n+5) { display: none; }\n}\n\n/* ── EDIT: tablets ───────────────────────────────────────────────────────\n Two columns rather than four panels on a fixed grid; the arrangement a\n 1194px tablet can actually use. */\n\n@media (min-width: 768px) and (max-width: 959px) and (min-height: 600px) {\n\t.gridster,\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t}\n\n\t.gridster > ul {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t\tgap: var(--space-3);\n\t\tpadding: 0 var(--space-2);\n\t}\n\n\t.gridWidget {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: auto !important;\n\t\tmargin: 0 !important;\n\t}\n\n\t/* Gridster absolutely-positions .content inside each widget, so once the\n\t widget's fixed height is removed it has no in-flow children and collapses\n\t to the height of its controls bar. Put the content back in flow. */\n\t.gridWidget > .content,\n\t.gridWidget > .controls {\n\t\tposition: static !important;\n\t\theight: auto !important;\n\t\twidth: auto !important;\n\t\ttop: auto !important;\n\t\tright: auto !important;\n\t\tbottom: auto !important;\n\t\tleft: auto !important;\n\t}\n\n\t#infoWidget { min-height: 34vh; }\n\t#signaturesWidget { min-height: 34vh; }\n\t#notesWidget { min-height: 26vh; }\n\n\t/* The chain is the reason you are here; give it the full width. */\n\t#chainWidget {\n\t\tgrid-column: 1 / -1;\n\t\tmin-height: 46vh;\n\t}\n\n\t.grid-resize { display: none !important; }\n}\n\n/* ── Touch sizing, independent of width ──────────────────────────────────\n Driven by pointer, not viewport, because they are different questions. A\n coarse pointer needs a 44px target whatever the screen is. */\n\n@media (pointer: coarse) {\n\t.controls i,\n\t.controls span.control,\n\t.panel-hide,\n\t#topbar i,\n\t.quickSelectBar button {\n\t\tmin-width: 44px;\n\t\tmin-height: 44px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\tbutton, .ui-button, input[type=\"button\"], input[type=\"submit\"] {\n\t\tmin-height: 44px;\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\tinput[type=\"text\"], input[type=\"password\"], input[type=\"number\"],\n\tselect, textarea {\n\t\tmin-height: 40px;\n\t\tfont-size: 1.15rem; /* keeps iOS from zooming the field on focus */\n\t}\n\n\t#sigTable td { padding: var(--space-3) var(--space-2); }\n\n\t#dialog-signature .mini-selector + label {\n\t\tpadding: var(--space-2) var(--space-4);\n\t}\n\n\t/* Hover styling is misleading on touch -- it sticks after a tap. */\n\t#sigTable tbody tr:hover > td { background-color: transparent; }\n}\n\n/* Dialogs must not exceed a small viewport. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.ui-dialog {\n\t\tmax-width: calc(100vw - var(--space-4)) !important;\n\t\tmax-height: calc(100vh - var(--space-4)) !important;\n\t\tleft: var(--space-2) !important;\n\t\toverflow: auto;\n\t}\n\t.ui-dialog .ui-dialog-content { max-height: 60vh; overflow: auto; }\n}\n\n/* Respect the OS setting; the map already animates a great deal. */\n@media (prefers-reduced-motion: reduce) {\n\t*, *::before, *::after {\n\t\tanimation-duration: .001ms !important;\n\t\tanimation-iteration-count: 1 !important;\n\t\ttransition-duration: .001ms !important;\n\t}\n}\n\n/* ── Touch on the chain map ──────────────────────────────────────────────\n #chainParent is a scroll container driven by dragscroll.js, which is a\n mouse-only library (mousedown/mousemove). Rather than port it, let the\n browser do what it is already good at: native touch panning and pinch-zoom\n on the scroll container. dragscroll keeps working for mice untouched.\n\n touch-action must be set explicitly because the map suppresses user-select\n and jQuery UI's draggable calls preventDefault on pointer events, which\n otherwise kills native scrolling on touch. */\n\n#chainParent {\n\ttouch-action: pan-x pan-y pinch-zoom;\n\t-webkit-overflow-scrolling: touch;\n\toverscroll-behavior: contain;\n}\n\n/* Nodes stay draggable at tablet width and above; on a phone the map is for\n reading, so a drag should pan the map rather than move somebody's system. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainMap .system,\n\t#chainMap [class*=\"system\"] {\n\t\ttouch-action: inherit;\n\t}\n}\n","/* ============================================================================\n SYSTEM PANEL\n\n Was two 50% floats with a
: the system identity on the left,\n and \"Blue loot buyer\" stranded in a right-hand column it did not belong in.\n Statics sat last, below the links, so the rows that matter most needed\n scrolling to reach.\n\n Rebuilt as a single column in reading order -- identity, what it connects\n to, then the supporting detail -- with the metadata as chips.\n ========================================================================= */\n\n.sys-panel {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--space-3);\n\tpadding: var(--space-3);\n\toverflow-y: auto;\n\theight: 100%;\n\tbox-sizing: border-box;\n}\n\n/* ---- identity ----------------------------------------------------------- */\n.sys-head { display: flex; flex-direction: column; gap: var(--space-2); }\n\n.sys-panel .sys-name {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tfont-size: var(--fs-lg);\n\tfont-weight: 600;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\tletter-spacing: -.01em;\n}\n\n/* Security / region / faction as chips: three small facts, read at a glance,\n in the same register as the life and mass chips elsewhere. */\n.sys-meta { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sys-meta .chip {\n\tmargin: 0;\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n\twhite-space: nowrap;\n}\n/* An empty chip should not draw a pill. */\n.sys-meta .chip:empty { display: none; }\n/* Security colouring comes from the data tokens already on the element. */\n.sys-meta #infoSecurity { color: inherit; }\n\n/* ---- what it connects to, promoted above the supporting detail ---------- */\n.sys-statics {\n\tfont-size: var(--fs-sm);\n\tline-height: 1.7;\n\tcolor: var(--card-foreground);\n}\n.sys-statics:empty { display: none; }\n\n/* ---- blue-loot buyer and other route notes ------------------------------\n Was floated into a right-hand column of its own. It is a note about this\n system, so it reads inline with the rest. */\n.sys-extra {\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n\tline-height: 1.8;\n}\n.sys-extra:empty { display: none; }\n\n/* ---- graph -------------------------------------------------------------- */\n#activityGraph { min-height: 120px; }\n\n/* Range switch as a segmented control rather than \"Week - 48Hour - 24Hour\". */\n.sys-range {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tjustify-content: center;\n}\n.sys-range a {\n\tpadding: 1px var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\ttext-decoration: none;\n}\n.sys-range a:hover {\n\tborder-color: var(--border-strong);\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n}\n\n/* ---- external links ----------------------------------------------------- */\n.sys-links {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--space-3);\n\tjustify-content: center;\n\tpadding-top: var(--space-1);\n\tborder-top: 1px solid var(--border);\n\tfont-size: var(--fs-sm);\n}\n.sys-links a { color: var(--muted-foreground); font-weight: 500; }\n.sys-links a:hover { color: var(--primary); }\n","/* ============================================================================\n CHAIN MAP + SIGNATURE TABLE\n\n The two surfaces the tool is actually used through, and the last places\n carrying the old look.\n\n The map nodes kept their bevels because they are built from VENDOR-PREFIXED\n gradients (-moz-linear-gradient, -webkit-gradient), which the earlier sweep\n for `linear-gradient` did not match.\n ========================================================================= */\n\n/* ---- copy affordance ---------------------------------------------------\n tripwire.css set `content: '\\01F4C4\\00FE0E'` -- the page-facing-up emoji\n with the text-presentation variation selector, asking for a monochrome\n glyph most fonts only ship in colour. The result was fallback tofu, which\n is the \"broken document\" after the system name. There is no copy glyph in\n the icon font, so it is drawn: two offset sheets, the usual copy sign. */\n.copy::after { content: none; }\n\n.copy {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: -0.1em;\n\topacity: .55;\n\ttransition: opacity .12s ease;\n}\n.copy:hover, .copy:focus-visible { opacity: 1; }\n\n.copy::before,\n.copy::after {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: .62em;\n\theight: .78em;\n\tborder: 1px solid currentColor;\n\tborder-radius: 2px;\n}\n.copy::before { left: 0; top: .22em; }\n.copy::after { left: .3em; top: 0; background: var(--card); }\n\n/* ============================================================================\n CHAIN MAP\n ========================================================================= */\n\n/* Flat fills. The class colour moves to the border, where it reads as a label\n rather than as a lit surface, and the node ground stays consistent so the\n map is one plane instead of a tray of buttons. */\n#chainMap .currentNode > div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node,\n#chainMap div.loop,\n#chainMap div.node {\n\tbackground-image: none !important;\n\tbox-shadow: none;\n\tborder-radius: var(--radius-md);\n\tborder-width: 1px;\n\tborder-style: solid;\n\ttransition: border-color .12s ease, background-color .12s ease;\n}\n\n#chainMap div.node { background-color: var(--card); }\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 22%, var(--card)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 22%, var(--card)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 22%, var(--card)); }\n#chainMap div.loop { background-color: color-mix(in oklab, var(--data-class-void) 40%, var(--card)); }\n\n/* Where you are is the one thing that should be unmistakable. */\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 18%, var(--card));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 1px var(--primary);\n}\n\n#chainMap div.node:hover { border-color: var(--border-strong); }\n\n/* Badges were 9px monospace with a 6px glow. Same chip language as everywhere\n else, so a count on the map reads like a count in the table. */\n#chainMap span.badge {\n\tbackground-color: var(--muted);\n\tcolor: var(--muted-foreground);\n\tbox-shadow: none;\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tline-height: 1.5;\n\tpadding: 0 5px;\n\tmin-width: 1.1em;\n}\n\n#chainMap .nodeType {\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n}\n\n#chainMap .statics span {\n\tborder-radius: 999px;\n\tpadding: 0 5px;\n\tfont-size: var(--fs-xs);\n}\n\n/* ============================================================================\n SIGNATURE TABLE\n ========================================================================= */\n\n#sigTableWrapper { padding: 0; }\n\n#sigTable th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }\n#sigTable th.sortable:hover { color: var(--foreground); }\n\n/* The sort arrow was an empty -- an icon element with no\n icon. Draw the state instead, and only on the column actually sorted. */\n#sigTable th.sortable i[data-icon=\"\"] { display: none; }\n\n#sigTable th.sortable::after {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: 0; height: 0;\n\tmargin-left: var(--space-1);\n\tborder-left: 3px solid transparent;\n\tborder-right: 3px solid transparent;\n\topacity: 0;\n\ttransition: opacity .12s ease;\n}\n#sigTable th.tablesorter-headerAsc::after {\n\tborder-bottom: 4px solid var(--primary);\n\topacity: 1;\n}\n#sigTable th.tablesorter-headerDesc::after {\n\tborder-top: 4px solid var(--primary);\n\topacity: 1;\n}\n\n/* Signature type as a chip, so the group reads at a glance down the column\n the way life and mass already do. */\n#sigTable td.sigType > span,\n#sigTable td .sigTypeName {\n\tdisplay: inline-block;\n\tpadding: 0 var(--space-2);\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.7;\n}\n\n/* Age is context, not content. */\n#sigTable td.sigAge { color: var(--muted-foreground); font-variant-numeric: tabular-nums; }\n\n/* Numeric-ish columns line up. */\n#sigTable td.sigID { font-variant-numeric: tabular-nums; letter-spacing: .03em; }\n\n/* An empty table should say so rather than being a blank rectangle. */\n#sigTable tbody:empty::after,\n#sigTableWrapper > .sig-empty {\n\tcontent: \"No signatures in this system\";\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n}\n\n/* ============================================================================\n SIGNATURE FILTER BAR\n After Aperture's SignatureModule: group chips, a scan-state cycle, and live\n counts. Scanning a long list down one column is the whole job, so the bar\n stays pinned and only the table scrolls.\n ========================================================================= */\n\n.sig-filter {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-1);\n\tpadding: var(--space-2) var(--space-2);\n\tborder-bottom: 1px solid var(--border);\n}\n\n.sig-filter-groups { display: flex; flex-wrap: wrap; gap: var(--space-1); }\n\n.sig-chip {\n\tborder: 1px solid var(--border);\n\tborder-radius: 999px;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tline-height: 1.6;\n\tpadding: 0 var(--space-2);\n\tmin-height: 0;\n\tcursor: pointer;\n\ttransition: border-color .12s ease, background-color .12s ease, color .12s ease;\n}\n.sig-chip:hover { border-color: var(--border-strong); background: var(--muted); color: var(--foreground); }\n\n/* Active filters stand out without the harshness of a solid fill. */\n.sig-chip.on {\n\tborder-color: var(--primary);\n\tcolor: var(--primary);\n\tbackground: color-mix(in oklab, var(--primary) 14%, transparent);\n}\n\n/* The scan cycle earns its own colours: scanned reads as settled, unscanned as\n outstanding work. */\n.sig-chip.sig-scan[data-state=\"scanned\"].on {\n\tborder-color: var(--data-good); color: var(--data-good);\n\tbackground: color-mix(in oklab, var(--data-good) 14%, transparent);\n}\n.sig-chip.sig-scan[data-state=\"unscanned\"].on {\n\tborder-color: var(--data-info); color: var(--data-info);\n\tbackground: color-mix(in oklab, var(--data-info) 14%, transparent);\n}\n\n.sig-stats {\n\tmargin-left: auto;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\twhite-space: nowrap;\n\tfont-variant-numeric: tabular-nums;\n}\n\n#sigTable tbody tr.sig-filtered { display: none; }\n\n/* Unscanned rows are outstanding work; mark the id rather than shouting the\n whole row, the way Aperture marks the still-empty required cells. */\n#sigTable tbody tr.sig-unscanned > td:first-child {\n\tbox-shadow: inset 2px 0 0 var(--data-info);\n}\n\n/* Site-safety glyph, derived from the group. A combat site is somewhere rats\n can shoot you; an exploration site is not; a wormhole is neither. */\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before,\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: .5em; height: .5em;\n\tmargin-right: .45em;\n\tborder-radius: 50%;\n\tvertical-align: .05em;\n}\n#sigTable tbody tr[data-activity=\"combat\"] > td:nth-child(2)::before { background: var(--data-critical); }\n#sigTable tbody tr[data-activity=\"explore\"] > td:nth-child(2)::before { background: var(--data-good); }\n\n/* Chip labels sit on a fill now, so they take the full-strength text colour --\n muted-on-muted was the low-contrast case that made these hard to read. */\n.sys-meta .chip,\n.gate-chip,\n.sig-chip {\n\tcolor: var(--foreground);\n}\n","/* ============================================================================\n DESKTOP LAYOUT\n\n Everything below fixes one root cause: the desktop layout was gridster's\n fixed pixel grid, positioned absolutely from saved coordinates. It did not\n use the window it was in -- at 1600x1000 the panels stopped at 1250x440 and\n the rest was raw background plus footer, which read as a page that had not\n finished loading.\n\n The grid now fills the viewport at every width. The panel registry still\n controls what is shown; what is gone is drag-and-resize, which only existed\n to work around a layout that never fit in the first place.\n ========================================================================= */\n\n/* Desktop only. Below 1280px the READ and EDIT bands in\n _override-5-responsive.css own the layout: panels return to document flow\n and the page scrolls. These rules used to apply at every width, which put\n three columns on a 375px phone with two of them off the right edge -- the\n responsive file sorts earlier and could not win. The guard is what the\n earlier file was always assuming. */\n@media (min-width: 960px) {\n\thtml, body { height: 100%; overflow: hidden; }\n\n\t#wrapper {\n\t\theight: 100vh;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#inner-wrapper {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t#topbar { flex: 0 0 auto; position: static; }\n\n\t.gridster {\n\t\tflex: 1 1 auto;\n\t\tmin-height: 0;\n\t\tvisibility: visible !important;\n\t\tpadding: var(--space-2);\n\t\tbox-sizing: border-box;\n\t}\n\n\t.gridster > ul {\n\t\tposition: static !important;\n\t\twidth: auto !important;\n\t\theight: 100% !important;\n\t\tmargin: 0 !important;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\n\t\tdisplay: grid;\n\t\tgap: var(--space-2);\n\t\t/* Weighted by how much each panel earns: signatures widest, notes least. */\n\t\tgrid-template-columns: minmax(260px, 1fr) minmax(340px, 1.35fr) minmax(220px, 0.85fr);\n\t\t/* The chain is the reason the tool exists, so it takes what is left. */\n\t\tgrid-template-rows: minmax(180px, 32vh) 1fr;\n\t}\n}\n\n.gridWidget {\n\tposition: static !important;\n\twidth: auto !important;\n\theight: auto !important;\n\tmin-height: 0;\n\tmargin: 0 !important;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\n.gridWidget > .controls {\n\tposition: static !important;\n\tflex: 0 0 auto;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n}\n\n.gridWidget > .content {\n\tposition: static !important;\n\tflex: 1 1 auto;\n\tmin-height: 0;\n\twidth: auto !important;\n\theight: auto !important;\n\ttop: auto !important; right: auto !important;\n\tbottom: auto !important; left: auto !important;\n\toverflow: auto;\n}\n\n#chainWidget { grid-column: 1 / -1; }\n\n/* Resize handles belong to a grid that no longer exists. */\n.grid-resize { display: none !important; }\n\n/* A hidden panel should give its space back now the grid can reflow. */\n.gridWidget.panel-hidden { display: none !important; }\n\n/* ============================================================================\n BACKGROUND\n\n The image was the brightest, highest-contrast thing on screen, showing\n through translucent panels and pulling the eye off the data every time. It\n stays -- it is the corp's ship -- but well behind a wash, and the panels go\n opaque so nothing reads through them.\n ========================================================================= */\n\n#wrapper::before {\n\tcontent: \"\";\n\tposition: fixed;\n\tinset: 0;\n\tbackground: linear-gradient(\n\t\tto bottom,\n\t\tcolor-mix(in oklab, var(--background) 88%, transparent),\n\t\tcolor-mix(in oklab, var(--background) 94%, transparent)\n\t);\n\tpointer-events: none;\n\tz-index: 0;\n}\n\n#inner-wrapper { position: relative; z-index: 1; }\n\n.gridWidget {\n\tbackground-color: var(--card); /* opaque: nothing reads through a panel */\n}\n\n/* ============================================================================\n FOOTER\n Donation plea, a yellow button and a wall of CCP legalese, centred on the\n background. It belongs on the landing page, not on the instrument.\n ========================================================================= */\n\n#footer { display: none !important; }\n\n/* ============================================================================\n TOPBAR\n Was a left cluster and a right cluster with ~1000px of nothing between.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: 0 var(--space-3);\n\theight: auto;\n\tmin-height: 2.6rem;\n\tline-height: normal;\n}\n#topbar > .align-left { display: flex; align-items: center; gap: var(--space-3); flex: 1 1 auto; }\n#topbar > .align-right { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; padding-right: 0; }\n#topbar h1, #topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* ============================================================================\n DENSITY AND EMPHASIS\n Everything was the same mid-grey, so nothing said where to look.\n ========================================================================= */\n\n/* The chain panel is the subject; give its header the accent rule. */\n#chainWidget > .controls { border-bottom-color: color-mix(in oklab, var(--primary) 45%, var(--border)); }\n#chainWidget .panel-title { color: var(--primary); }\n\n/* Gate chips should not strand a single item on its own line. */\n.gate-list { row-gap: var(--space-1); }\n.gate-chip { flex: 0 0 auto; }\n\n/* Panel headers all one height, whatever they contain. */\n.gridWidget > .controls { min-height: 2.1rem; }\n\n/* The activity graph earns its space or gives it up. */\n#activityGraph { min-height: 0; }\n#activityGraph.is-sparse { height: 84px !important; opacity: .75; }\n#activityGraphControls { margin-top: var(--space-1); }\n\n/* gridster.css sets `.gridster .gs-w { background: var(--scrim-60) }` -- two\n classes, which outranks a plain .gridWidget. That translucent scrim is what\n let the background image read straight through every panel. */\n.gridster .gs-w,\n.gridster .gridWidget {\n\tbackground-color: var(--card);\n\tbackground-image: none;\n}\n\n/* With every panel opaque the background image is hidden completely, which\n throws away the one piece of brand on the page. The chain panel is the one\n surface with real empty space, so it alone stays slightly translucent -- the\n ship reads faintly behind the map and nowhere near the tables. */\n.gridster .gs-w#chainWidget {\n\tbackground-color: color-mix(in oklab, var(--card) 88%, transparent);\n}\n\n/* The map itself sits on nothing, so the node is what stands out. */\n#chainWidget > .content { background: transparent; }\n\n/* ============================================================================\n PROPORTION, WITH REAL DATA IN FRONT OF ME\n\n A one-signature system flattered the 32vh top row. With a dozen signatures\n the table shows four and clips, while the chain holds 60% of the screen for\n a single node. Signatures are what you read during a scan, so the top row\n grows and the chain takes what is left rather than the reverse.\n ========================================================================= */\n\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ============================================================================\n SIGNATURE TABLE COLUMN SIZING\n The id was wrapping mid-value (\"ABC-\" / \"111\"), the group was stated twice\n (dot plus word), site names were centre-aligned under a left-aligned header,\n and life/mass held full width while empty for every non-wormhole row.\n ========================================================================= */\n\n#sigTable { table-layout: fixed; }\n\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.5rem; white-space: nowrap; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6rem; white-space: nowrap; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.5rem; white-space: nowrap; }\n#sigTable th:nth-child(4), #sigTable td:nth-child(4) { width: auto; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 4.5rem; white-space: nowrap; }\n\n/* Everything reads left except the state columns, which line up on the right\n so they scan as a pair. */\n#sigTable td, #sigTable th { text-align: left; }\n#sigTable td:nth-child(5), #sigTable th:nth-child(5),\n#sigTable td:nth-child(6), #sigTable th:nth-child(6) { text-align: right; }\n\n/* The alignment classes the app writes inline fight the above. */\n#sigTable td.centerAlign, #sigTable td.rightAlign { text-align: inherit; }\n\n/* The signature id is an identifier; never break it. */\n#sigTable td:nth-child(1) { font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; }\n\n/* Header row is chrome, not content. */\n#sigTable thead th { position: sticky; top: 0; background: var(--card); z-index: 1; }\n\n/* ============================================================================\n HIERARCHY\n Three text tokens used almost interchangeably meant nothing led the eye.\n Primary content sits at full strength, supporting detail steps back.\n ========================================================================= */\n\n.sys-panel .sys-name { color: var(--foreground); font-weight: 600; }\n.sys-statics, .sys-extra { color: var(--card-foreground); }\n.sys-links a, #version,\n#activityGraphControls a,\n.sig-stats { color: var(--muted-foreground); }\n\n/* The filter bar is a control surface; it should sit quieter than the rows it\n filters. */\n.sig-filter { padding: var(--space-1) var(--space-2); }\n.sig-chip { font-size: calc(var(--fs-xs) * 0.95); }\n\n/* The version chip was absolutely positioned at top:4px right:20px inside the\n logo, which worked when the topbar was a line-height hack. In a flex row it\n lands on top of the wordmark. It is a sibling, so it sits like one. */\n#topbar #logo { position: static; display: flex; align-items: baseline; gap: var(--space-2); }\n\n#version {\n\tposition: static;\n\ttop: auto; right: auto;\n\theight: auto;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tletter-spacing: .04em;\n\twhite-space: nowrap;\n}\n\n/* Panel visibility menu, opened from the layout control. */\n#panel-menu {\n\tposition: absolute;\n\tz-index: 3000;\n\tmin-width: 12rem;\n\tpadding: var(--space-1) 0;\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.5);\n}\n#panel-menu button {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-2);\n\twidth: 100%;\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\ttext-align: left;\n\tpadding: var(--space-1) var(--space-3);\n\tmin-height: 0;\n}\n#panel-menu button:hover { background: var(--muted); }\n#panel-menu .tick { width: 1em; color: var(--primary); }\n\n/* ============================================================================\n CHARACTER PORTRAIT\n\n EVE portraits are square, so they need masking to read as an avatar. Served\n from images.evetech.net -- image.eveonline.com is the retired host and the\n settings portrait was still pointing at it.\n ========================================================================= */\n\n.avatar {\n\tdisplay: inline-block;\n\twidth: 1.6rem;\n\theight: 1.6rem;\n\tborder-radius: 50%;\n\tobject-fit: cover;\n\tvertical-align: middle;\n\tbackground: var(--muted);\n\t/* A thin ring keeps a dark portrait from bleeding into a dark topbar. */\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#topbar #user {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-2);\n}\n\n.avatar-lg {\n\twidth: 3.4rem;\n\theight: 3.4rem;\n\tbox-shadow: 0 0 0 1px var(--border);\n}\n\n#dialog-options #avatar { padding-right: var(--space-3); vertical-align: top; }\n\n/* account.css sets `#login img { border-radius: 3px }` -- an id plus an\n element, which outranks .avatar and squared the portrait off again. */\n#login img.avatar,\n#topbar img.avatar,\nimg.avatar {\n\tborder-radius: 50%;\n}\n\n/* Corporation and alliance logos are marks, not faces; they stay square. */\nimg.logo {\n\twidth: 1.6rem; height: 1.6rem;\n\tobject-fit: contain;\n\tvertical-align: middle;\n}\n","/* ============================================================================\n CHAIN TAB STRIP\n\n On a busy corp map this is the primary navigation -- the chain runs\n roughly sixteen screen widths, so you reach a system by picking its chain,\n not by scrolling to it. Thirteen-plus tabs is normal.\n\n The old strip could not survive that: `.tab { min-width: 75px }` with no\n overflow handling meant thirteen tabs demanded ~975px and simply pushed the\n rest of the header off the right edge. It also used floats inside\n inline-blocks with text-align:right, so the label and its controls fought\n each other.\n\n Now: one scrolling row that takes the space left over, with every other\n control held in place beside it.\n ========================================================================= */\n\n#chainWidget > .controls {\n\tflex-wrap: nowrap;\n\tgap: var(--space-2);\n}\n\n/* Everything that is not the strip keeps its size. */\n#chainWidget > .controls > *:not(#chainTabs) { flex: 0 0 auto; }\n\n#chainTabs {\n\tflex: 1 1 auto;\n\tmin-width: 0; /* without this a flex child refuses to shrink */\n\tdisplay: flex;\n\talign-items: stretch;\n\tgap: 2px;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tscrollbar-width: thin;\n\tscroll-snap-type: x proximity;\n\t/* Fade the edges so it is obvious there are more chains off-screen. */\n\tmask-image: linear-gradient(to right, transparent 0, #000 12px,\n\t #000 calc(100% - 12px), transparent 100%);\n}\n\n#chainTabs::-webkit-scrollbar { height: 4px; }\n#chainTabs::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 999px; }\n#chainTabs::-webkit-scrollbar-track { background: transparent; }\n\n/* ---- the tab itself ----------------------------------------------------- */\n\n#chainTabs .tab {\n\tflex: 0 0 auto;\n\tmin-width: 0; /* was 75px, which is what broke the header */\n\tmax-width: 12rem;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-2);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm) var(--radius-sm) 0 0;\n\tborder-bottom: 2px solid transparent;\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1.6;\n\ttext-align: left;\n\twhite-space: nowrap;\n\tscroll-snap-align: start;\n\ttransition: color .12s ease, background-color .12s ease, border-color .12s ease;\n}\n\n#chainTabs .tab:hover {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--border-strong);\n}\n\n/* The active chain is where you are; a 2px blue rule was too quiet for the\n one control you navigate by. */\n#chainTabs .tab.current {\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n\tfont-weight: 600;\n}\n\n/* Floats inside an inline-block, with the row right-aligned, meant the label\n and its buttons never agreed on a baseline. */\n#chainTabs .tab .name {\n\tfloat: none;\n\tpadding-left: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n#chainTabs .tab .closeTab,\n#chainTabs .tab .editTab {\n\tfloat: none;\n\tflex: 0 0 auto;\n\tpadding: 0 2px;\n\tfont-size: .85em;\n\tline-height: 1;\n\tcolor: var(--muted-foreground);\n}\n\n/* Reveal the controls on the tab you are pointing at, and always on the active\n one -- otherwise renaming the chain you are in means hunting for a target\n that appears only on hover. */\n#chainTabs .tab:hover .closeTab,\n#chainTabs .tab:hover .editTab,\n#chainTabs .tab.current .closeTab,\n#chainTabs .tab.current .editTab {\n\topacity: 1;\n\tvisibility: visible;\n}\n\n#chainTabs .tab .closeTab:hover { color: var(--destructive); }\n#chainTabs .tab .editTab:hover { color: var(--primary); }\n\n/* While dragging to reorder. */\n#chainTabs .ui-sortable-helper {\n\tbackground: var(--card);\n\tborder-color: var(--border);\n\tbox-shadow: 0 4px 12px rgba(0,0,0,.4);\n}\n\n/* The chain panel's own title is redundant next to a strip of named chains,\n and at thirteen tabs the space is worth more than the label. */\n#chainWidget .panel-title { display: none; }\n\n/* ============================================================================\n PANEL HEADER: RIGHT-ANCHORED CONTROLS\n\n .controls is a flex row, and two of its children carried `margin-left: auto`\n -- the group the markup floats right, and the panel-hide button. Flexbox\n divides free space equally between every auto margin, so instead of both\n sitting at the right edge the trailing group was parked in the middle of\n the header (measured: 203px short of the right in System, 206px in\n Signatures, 168px in Notes).\n\n Exactly one element opens the gap. Everything after it packs against the\n right edge behind it.\n ========================================================================= */\n\n.gridWidget > .controls > div[style*=\"float\"] {\n\tmargin-left: auto;\n\tfloat: none !important;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n}\n\n/* No second auto margin -- this just follows the group above. */\n.gridWidget > .controls > .panel-hide { margin-left: 0; }\n\n/* If a panel ever has no floated group, the hide button still needs to open\n the gap itself. :only-of-type is too narrow, so match on it being the sole\n right-hand item. */\n.gridWidget > .controls > div[style*=\"float\"] ~ .panel-hide { margin-left: 0; }\n.gridWidget > .controls > .panel-hide:first-of-type { margin-left: auto; }\n\n/* The chain header sizes its strip with flex-grow instead, so nothing there\n should also claim the free space. */\n#chainWidget > .controls > div[style*=\"float\"] { margin-left: 0; }\n","/* ============================================================================\n MAIN HEADER\n\n Was one cramped line of unrelated things divided by literal \"|\" characters,\n with two inline `font-size: 1.7em` overrides and a portrait too small to\n recognise.\n\n An earlier attempt made this a grid with `display: contents` on the\n wrappers; that placed every right-hand control into the same grid cell, so\n they stacked and ran off the right edge. A flex row cannot do that: the\n right cluster is one item that keeps its own width.\n\n Server population and EVE time have moved out entirely, to the status bar\n along the bottom -- they are ambient readings, not navigation.\n ========================================================================= */\n\n#topbar {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-4);\n\tpadding: var(--space-2) var(--space-3);\n\theight: auto;\n\tmin-height: 0;\n\tline-height: normal;\n\tflex-wrap: nowrap;\n}\n\n#topbar > .align-left {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 1 1 auto;\n\tmin-width: 0; /* lets the left side shrink instead of shoving */\n}\n\n#topbar > .align-right {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-3);\n\tflex: 0 0 auto; /* never compressed, never pushed out */\n\tpadding-right: 0;\n}\n\n#topbar #logo {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: var(--space-2);\n\tmargin: 0;\n\tflex: 0 0 auto;\n}\n#topbar #logo a { font-size: 1.8rem; line-height: 1.1; }\n\n#topbar h3 { margin: 0; display: flex; align-items: center; gap: var(--space-1); }\n\n/* Twice the previous portrait; the header height follows it. */\n#topbar .avatar { width: 2.4rem; height: 2.4rem; }\n#topbar #user { gap: var(--space-2); font-size: 1.05rem; }\n\n#topbar #settings,\n#topbar #layout { font-size: 1.3rem; flex: 0 0 auto; }\n\n/* The system search takes the slack in the middle rather than the icons. */\n#topbar #systemSearch { flex: 1 1 auto; min-width: 0; }\n\n/* ============================================================================\n STATUS BAR\n\n Ambient readings, out of the way: server population left, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: var(--space-4);\n\tpadding: var(--space-1) var(--space-3);\n\tborder-top: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--background) 82%, transparent);\n\tfont-size: var(--fs-sm);\n\tcolor: var(--foreground);\n}\n\n#statusbar .bar-value { font-variant-numeric: tabular-nums; font-weight: 600; }\n#statusbar #serverStatus.is-down .bar-value { color: var(--data-critical); }\n\n.bar-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tmargin-right: var(--space-1);\n}\n\n/* ============================================================================\n NOTE EDITOR\n Replaces CKEditor 4's skin. Same visual language as everything else, so the\n editor does not look like a different application embedded in the panel.\n ========================================================================= */\n\n.rte {\n\tborder: 1px solid var(--input);\n\tborder-radius: var(--radius-sm);\n\tbackground: var(--muted);\n\toverflow: hidden;\n}\n\n.rte-bar {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 2px;\n\tpadding: var(--space-1);\n\tborder-bottom: 1px solid var(--border);\n\tbackground: color-mix(in oklab, var(--card) 60%, transparent);\n}\n\n.rte-btn {\n\tmin-width: 1.9rem;\n\tmin-height: 1.9rem;\n\tpadding: 0 var(--space-1);\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tbackground: transparent;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tline-height: 1;\n\tcursor: pointer;\n}\n.rte-btn:hover { background: var(--accent-surface); color: var(--foreground); border-color: var(--border); }\n\n.rte-sep { width: 1px; align-self: stretch; margin: 2px var(--space-1); background: var(--border); }\n\n.rte-swatch {\n\twidth: 1.1rem; height: 1.1rem;\n\tmin-width: 0; min-height: 0;\n\tpadding: 0;\n\tborder: 1px solid var(--border);\n\tborder-radius: 50%;\n\tcursor: pointer;\n}\n.rte-swatch:hover { transform: scale(1.15); }\n\n.rte-area {\n\tmin-height: 7rem;\n\tmax-height: 22rem;\n\toverflow-y: auto;\n\tpadding: var(--space-2);\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-base);\n\tline-height: 1.6;\n\toutline: none;\n}\n.rte-area:focus { background: var(--background); }\n.rte-area a { color: var(--primary); }\n.rte-area ul, .rte-area ol { padding-left: 1.4em; margin: .3em 0; }\n","/* ============================================================================\n TYPOGRAPHY: ONE FAMILY\n\n The stylesheets declare thirteen different font stacks -- Arial, Verdana,\n \"Arial, verdana, tahoma\", lucida, bare sans-serif, and so on. Most were\n already being overridden by the body rule, but two rules still resolved\n to `lucida`, and any of the rest would resurface the moment a component was\n touched.\n\n One family everywhere, except the icon font and deliberate monospace.\n ========================================================================= */\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n[data-icon], [data-icon]::before, [data-icon]::after,\n.icon, .icon::before { font-family: 'icon' !important; }\n\ncode, pre, .mono,\n#sigTable td:nth-child(1),\n#statusbar .bar-value,\n#topbar #serverTime { font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n SETTINGS SECTION HEADINGS\n\n They were sticky, which needed a solid background to avoid text scrolling\n through them -- and the background did not match every surface they crossed,\n so they rendered as a band that did not line up. Sticky buys little in a\n dialog this short. They are plain headings now.\n ========================================================================= */\n\n.settings-sections > h3 {\n\tposition: static;\n\tbackground: transparent;\n}\n\n/* ============================================================================\n HEADER: NEVER CLIP THE RIGHT CLUSTER\n\n Reported repeatedly. The right cluster is fixed-size and the left is\n flexible, but the left contains a search input with an intrinsic minimum\n width, so at narrow widths it refused to shrink and pushed the icons past\n the edge. Truncating the left is always preferable to losing a control.\n ========================================================================= */\n\n#topbar > .align-left { overflow: hidden; }\n#topbar #systemSearch,\n#topbar #currentSpan,\n#topbar #searchSpan { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n#topbar #systemSearch input[type=\"text\"] { max-width: 14rem; min-width: 0; }\n#topbar > .align-right { z-index: 2; }\n\n/* ============================================================================\n SYSTEM PANEL: BREATHING ROOM AT THE TOP\n The system name sat hard against the panel header.\n ========================================================================= */\n\n.sys-panel { padding-top: var(--space-4); }\n.sys-panel .sys-name { margin-top: 0; }\n\n/* ============================================================================\n STATUS BAR: THREE SLOTS\n Population left, Tripwire version centred, EVE time right.\n ========================================================================= */\n\n#statusbar {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto 1fr;\n\talign-items: center;\n}\n#statusbar > #serverStatus { justify-self: start; }\n#statusbar > #version { justify-self: center; }\n#statusbar > #eveTime { justify-self: end; }\n\n/* The chart still renders a few pixels past its box even when told the height,\n because Google Charts adds its own chrome. Clip rather than let it paint over\n what follows. */\n#activityGraph { overflow: hidden; }\n\n/* Two rules still resolved to the bundled `lucida` face. */\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: 'Montserrat', system-ui, -apple-system, 'Segoe UI', sans-serif;\n}\n\n/* signatures.css uses a bundled `lucida` TTF for the signature-id column, to\n keep ids aligned down the column. The intent is right; shipping a font file\n for one column is not. A system monospace stack with tabular figures does\n the same job with no download. */\n#sigTable td:nth-child(1) {\n\tfont-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n\tfont-variant-numeric: tabular-nums;\n\tletter-spacing: .04em;\n}\n\n/* ── The header overflow, root cause ─────────────────────────────────────\n #topbar is content-box (this stylesheet predates border-box being the\n default anyone reaches for), so `width: 100%` plus `padding: 6px 9px`\n resolves to viewport + 18px. The bar hangs 18px off the right of the\n screen and the last control -- the layout icon -- is cut in half.\n\n Every check I ran against this measured `scrollWidth - clientWidth` on\n the bar, which is 0: the bar is not overflowing its own box, its box is\n bigger than the viewport. The document does not report it either,\n because overflow-x is hidden upstream. Both numbers read clean while\n the icon was visibly severed. The right question is whether the bar's\n right edge exceeds documentElement.clientWidth.\n\n Padding belongs inside the width. */\n#topbar {\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tmax-width: 100%;\n}\n","/* ============================================================================\n POLISH PASS\n\n Six things, all of which come back to the same habit: space and weight were\n applied per-element as each one was noticed, so nothing shared a rule and\n nothing agreed with anything else. These set the shared rules.\n ========================================================================= */\n\n/* ── 1. PANEL INSETS ─────────────────────────────────────────────────────\n Measured before writing this, per panel, first painted child against the\n content box:\n\n Notes padding 0 -- \"Posted by\" flush against the left border\n Signatures padding 0 -- filter chips flush against both\n Chain padding 0 -- correct, the map is meant to be full bleed\n System 12px 9px 9px -- three different values, none of them a\n token, top too tight to read as intended\n\n Content that touches its own frame reads as a rendering fault, which is\n what it looked like. One inset, one token, every panel. */\n\n/* Explicit pixels, not var(--space-4). The root font-size here is 12px, not\n the 16px rem maths assumes, so every rem-based value lands 25% short of\n what it reads as -- var(--space-4) is \"1rem\" and resolves to 12px. Rather\n than redefine the scale under everything already tuned against it, the\n values that need to be a specific size are stated as that size. */\n.gridWidget > .content,\n#infoWidget > .content,\n#notesWidget > .content,\n#signaturesWidget > .content {\n\tpadding: 16px;\n\tbox-sizing: border-box;\n\toverflow: auto;\n\tmin-height: 0;\n}\n\n/* The map is the exception and stays edge to edge: it is a canvas that pans,\n and an inset would clip it rather than frame it. The breathing room goes\n inside the scroll area instead, so nodes never butt against the divider. */\n#chainWidget > .content { padding: 0; min-height: 0; overflow: hidden; }\n#chainParent { padding: var(--space-3); box-sizing: border-box; max-height: 100%; overflow: auto; }\n\n/* Rhythm between the blocks inside a panel, which previously had none. */\n#sigFilterBar { margin-bottom: var(--space-3); }\n.sys-panel > * + * { margin-top: var(--space-3); }\n#activityGraphControls { margin-top: var(--space-2); }\n\n/* ── 2. SPACE ALLOCATION ─────────────────────────────────────────────────\n Rows were fixed at 46vh regardless of what was in them. Measured fill:\n\n Notes 82% empty\n Signatures 48% empty\n System 3% empty (close to overflowing)\n Chain -60% (501px of map in a 312px box)\n\n Notes held a third of the screen for one line while the map -- the reason\n the tool exists -- was the only panel that could not fit its content. The\n top row gives some back and notes narrows, since it is the panel that\n demonstrably needs least. */\n/* The top row stays where it was. Taking 6vh off it to feed the chain made\n the System panel clip instead -- it needs 341px and 40vh gave it 320 -- and\n a panel you have to scroll to see the statics is a worse trade than a map\n that pans, which is what a map is for. The chain \"overflowing\" was my own\n mis-framing: a canvas sixteen screens wide is supposed to exceed its box.\n What was actually wrong with it was that it never scrolled to where you\n are, which is fixed in the renderer rather than here. */\n@media (min-width: 960px) {\n\t.gridster > ul {\n\t\tgrid-template-columns: minmax(230px, 1fr) minmax(320px, 1.5fr) minmax(190px, 0.78fr);\n\t\tgrid-template-rows: minmax(240px, 46vh) 1fr;\n\t}\n}\n\n/* ── 3. TYPE SCALE ───────────────────────────────────────────────────────\n Footer 9.6px, body ~11px, panel titles 12px: three sizes inside three\n pixels, which reads as inconsistency rather than hierarchy. The footer was\n also simply too small to read, and it is the only place the server's\n player count and EVE time appear. */\n#statusbar { font-size: 11px; }\n#statusbar .bar-label { font-size: inherit; letter-spacing: .07em; opacity: .72; }\n#statusbar .bar-value { font-size: inherit; font-variant-numeric: tabular-nums; }\n\n/* ── 4. AVATAR ───────────────────────────────────────────────────────────\n The header was given room for a larger portrait and then never used it. */\n#topbar #user-avatar.avatar { width: 34px; height: 34px; }\n#topbar #login h3 { display: inline-flex; align-items: center; gap: var(--space-2); }\n\n/* ── 5. GRAPH AXIS ───────────────────────────────────────────────────────\n The chart borrowed --border for its gridlines and --muted-foreground for\n its numbers, and both pull the wrong way: a gridline sits *behind* the\n data and should be lighter than a panel border, while the numbers are\n values you read off the chart, not labels you skim. Dedicated tokens. */\n:root {\n\t--chart-gridline: rgba(255, 255, 255, .055);\n\t--chart-axis-text: #b7b7b7;\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--chart-gridline: rgba(0, 0, 0, .075);\n\t\t--chart-axis-text: #4a4a4a;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--chart-gridline: rgba(0, 0, 0, .075);\n\t--chart-axis-text: #4a4a4a;\n}\n\n/* ── 6. EMPTY STATES ─────────────────────────────────────────────────────\n An empty box is indistinguishable from a broken one. Both of these are\n normal states -- a system nobody has annotated, a system whose hourly\n activity has not accumulated yet -- and should say so. */\n#comment-container:not(:has(.comment:not(.hidden)))::before,\n#activityGraph.is-empty::before {\n\tcontent: attr(data-empty);\n\tdisplay: block;\n\tpadding: var(--space-5) var(--space-3);\n\ttext-align: center;\n\tcolor: var(--muted-foreground);\n\tfont-size: 12px;\n\tline-height: 1.5;\n}\n/* :empty could never match -- the container always holds the hidden template\n row -- so the empty state never showed. :has() asks the real question. */\n#comment-container:not(:has(.comment:not(.hidden)))::before { content: \"No notes on this system yet.\"; }\n#activityGraph.is-empty { height: auto; min-height: 0; }\n\n/* ── 7. GATE CHIPS ───────────────────────────────────────────────────────\n Was \"Ikuchi ( HS )\" per gate, six of them wrapping to three rows. The\n brackets are noise and the security repeats as text what colour already\n says. Name plus a security badge, on one or two rows instead of three. */\n.gate-list { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }\n.gate-list-label {\n\tcolor: var(--muted-foreground);\n\tfont-size: 10px;\n\tfont-weight: 600;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n}\n.gate-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tpadding: 2px var(--space-1) 2px var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n\tfont-size: 11px;\n\tline-height: 1.6;\n\ttext-decoration: none;\n}\n/* The chip is the link itself. Pair the brand's primary fill with its\n explicitly chosen on-primary ink so hover cannot become blue on orange. */\n.gate-chip:hover {\n\tbackground: var(--primary);\n\tcolor: var(--primary-foreground);\n\ttext-decoration: none;\n}\n.gate-chip .gate-sec {\n\tpadding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\tfont-size: 9px;\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n/* The badge paints the security colour as its ground; the letters knock out\n of it. currentColor above is the security class colour inherited from the\n named-colour mapping, so the fill stays correct in both themes. */\n.gate-chip .gate-sec::after { content: none; }\n.gate-chip .gate-sec { -webkit-text-fill-color: var(--card); }\n.gate-chip.is-closed { opacity: .5; text-decoration: line-through; }\n\n/* ── 8. SIGNATURE COLUMNS ────────────────────────────────────────────────\n Leads To held 168px against 66-84px for everything else, with slack left\n over; life and mass were cramped for no reason while the id column had\n room to spare. */\n#sigTable th:nth-child(1), #sigTable td:nth-child(1) { width: 5.25rem; }\n#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 6.5rem; }\n#sigTable th:nth-child(3), #sigTable td:nth-child(3) { width: 4.25rem; }\n#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 5rem; }\n\n\n/* ── 9. THE NOTES OVERLAP ────────────────────────────────────────────────\n Not a spacing problem -- the two lines were drawn on top of each other.\n\n .commentToolbar contains a floated .commentTitle. Nothing contained the\n float, so the toolbar collapsed to 26px while the title's two lines ran\n 67px, and .commentBody was laid out from the collapsed height: body at\n y=130 with the title still painting to y=172. Measured, not inferred.\n\n The float dates from a layout that no longer exists. Flex row, and the\n toolbar is the height of its contents. */\n.comment {\n\tpadding: var(--space-2) 0;\n\tborder-bottom: 1px solid var(--border);\n}\n.comment:last-child { border-bottom: 0; }\n\n.commentToolbar {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: space-between;\n\tgap: var(--space-3);\n\tmargin-bottom: 6px;\n}\n.commentToolbar > .commentTitle,\n.commentToolbar > .commentControls {\n\tfloat: none;\n\tmin-width: 0;\n}\n.commentTitle {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1px;\n\tflex: 1 1 auto;\n}\n.commentTitle .commentModified,\n.commentTitle .commentCreated {\n\tdisplay: block;\n\tfont-size: 10px;\n\tline-height: 1.35;\n\tcolor: var(--muted-foreground);\n}\n.commentControls {\n\tdisplay: flex;\n\tgap: var(--space-2);\n\tflex: 0 0 auto;\n\tfont-size: 11px;\n}\n.commentBody { font-size: 12px; line-height: 1.5; }\n.commentBody > *:first-child { margin-top: 0; }\n.commentBody > *:last-child { margin-bottom: 0; }\n\n/* ── 10. THE SYSTEM PANEL IS A FLEX COLUMN ───────────────────────────────\n Which means every block in it is a flex item, and flex items shrink to\n fit by default. In a column that scrolls, nothing should: the whole point\n of the scroll is that content keeps its size and the viewport moves.\n\n The activity graph is where this showed. Computed height 0px around a\n 92px chart SVG, with overflow hidden -- so what rendered was the 8px of\n padding and nothing else, a blank band where the graph should be. Two\n things were doing it at once: the flex shrink above, and a leftover\n `height: 84px !important` clamp from the earlier attempt at sparse\n sizing, which I had described as removed and had not been. The chart\n sizes itself now (activity-graph.js sets options.height), so the\n container must simply take the height it is given. */\n.sys-panel > * { flex: 0 0 auto; }\n\n#activityGraph,\n#activityGraph.is-sparse,\n#activityGraph.is-empty {\n\theight: auto !important;\n\tmin-height: 0;\n\topacity: 1;\n}\n","/* ============================================================================\n READ BAND CHROME (phones, landscape phones)\n\n The layout bands in _override-5 put the panels back in flow; this file is\n the chrome that goes with it. Sorted after every other override so the\n phone wins its own argument -- the header and control-bar rules in\n _override-a/b/c were written for desktop widths and used to apply here too.\n\n Measured before writing: header 125px tall for one row of controls; chain\n panel bar 460px wide in a 375px viewport, with close/edit tab icons and the\n panel-hide control off the right edge.\n ========================================================================= */\n\n@media (max-width: 767px), (max-height: 599px) {\n\t/* One row: avatar, name, corp, settings. The wordmark is redundant next to\n\t the wing mark on a screen this size, and the search field lives in the\n\t palette. */\n\t#topbar {\n\t\tmin-height: 0;\n\t\theight: auto;\n\t\tpadding: 8px 12px;\n\t\tgap: 8px;\n\t}\n\t#topbar { display: flex; min-height: 0; }\n\t#topbar > .align-left { display: flex; flex: 1 1 auto; }\n\t#topbar > .align-left #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-center { display: none; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar .hdr-tools { padding-left: 8px; }\n\t#topbar > .align-right {\n\t\tflex: 1 1 auto;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 12px;\n\t}\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar h3 { margin: 0; font-size: 13px; }\n\n\t.gridster { padding: 12px; }\n\n\t/* Control bars wrap rather than overflow, and the map's editing chrome is\n\t desktop and tablet work -- a phone reads the chain. */\n\t.gridWidget > .controls { flex-wrap: wrap; row-gap: 4px; }\n\t#chainWidget > .controls > div[style*=\"float\"] > i:not(.panel-hide),\n\t#chainWidget > .controls > .control,\n\t#chainWidget > .controls #newTab,\n\t.chainTab .closeTab,\n\t.chainTab .editTab,\n\t#chainTabs .closeTab,\n\t#chainTabs .editTab { display: none !important; }\n\t#chainTabs { flex: 1 1 100%; min-width: 0; order: 2; }\n\n\t/* Google Charts paginates the legend at this width (\"1/2\"). Two rows of\n\t legend beats a pager nobody expected. */\n\t#activityGraph svg > g:first-of-type { }\n}\n\n/* Phone bars: the right-hand group takes its own row rather than being pushed\n past the edge, and the paste control is desktop/tablet work like the rest\n of the editing chrome. */\n@media (max-width: 767px), (max-height: 599px) {\n\t.gridWidget > .controls > .bar-right { flex: 1 1 100%; margin-left: 0; justify-content: flex-end; }\n\t#signaturesWidget #paste-signatures,\n\t#signaturesWidget .bar-sep { display: none !important; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Every control in this group is editing chrome that the READ band hides\n\t individually; the empty group was still taking a row of its own. */\n\t#signaturesWidget > .controls > .bar-right,\n\t#notesWidget > .controls > .bar-right { display: none; }\n}\n\n/* ── Second look at the READ band, from screenshots ─────────────────────\n The header spread name / corp / settings across the full width with\n nothing between them; the panel bars' right-hand group was forced onto\n its own row, which left the hide control alone on a third; and the chain\n bar showed five map icons before the tabs. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-right { justify-content: flex-start; gap: 14px; }\n\t#topbar > .align-right > #settings,\n\t#topbar > .align-right > i#settings { margin-left: auto; }\n\t#topbar > .align-right > #layout { display: none; }\n\n\t.gridWidget > .controls > .bar-right { flex: 0 0 auto; margin-left: auto; }\n\t.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: var(--space-1); }\n\n\t#chainWidget > .controls > #show-viewing,\n\t#chainWidget > .controls > #show-favorite,\n\t#chainWidget > .controls > #show-chainLegend,\n\t#chainWidget > .controls > #hot-jump,\n\t#chainWidget > .controls > #higgs-jump,\n\t#chainWidget > .controls > .bar-sep { display: none !important; }\n\t#chainTabs { order: 0; }\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t/* Life and mass cells are hidden here, and they were carrying the row's\n\t hover and selected background -- so a wormhole row's highlight stopped\n\t two columns short. Paint the row instead. */\n\t#sigTable tbody tr:hover, #sigTable tbody tr.selected { background-color: var(--muted); }\n\t#sigTable tbody tr:hover > td, #sigTable tbody tr.selected > td { background-color: transparent; }\n}\n","/* ============================================================================\n THE SCALE\n\n Measured on the main screen at 1920x1080: fourteen font sizes, seven border\n radii, nine control heights, eight icon sizes. Almost none of it chosen --\n the tokens were written in rem against a 12px root, so \"0.8rem\" rendered\n at 9.6px and \"0.76rem\" at 9.12px, and every component that reached for a\n size got a slightly different one.\n\n Six sizes, in pixels, and every token that feeds a size resolves to one of\n them. Anything below 11px is not for reading.\n ========================================================================= */\n\n:root {\n\t--fs-xs: 11px;\n\t--fs-sm: 12px;\n\t--fs-base: 13px;\n\t--fs-md: 15px;\n\t--fs-lg: 18px;\n\t--fs-xl: 24px;\n\n\t/* Two radii and a pill. Inputs and chips at 4, cards and dialogs at 8. */\n\t--radius: 8px;\n\t--radius-md: 8px;\n\t--radius-sm: 4px;\n\n\t/* Two control heights: dense (bars, rows, chips) and standard (dialog\n\t inputs, primary buttons). Coarse pointers raise the floor to 44 in\n\t _override-5-responsive.css. */\n\t--control-dense: 28px;\n\t--control-standard: 36px;\n\n\t/* One icon size inline and in bars; one in the header. */\n\t--icon: 16px;\n\t--icon-lg: 20px;\n}\n\nbody { font-size: var(--fs-base); }\n\n/* Icons take the token, not whatever size their parent happened to be. */\n[data-icon]::before { font-size: var(--icon); line-height: 1; }\n#topbar [data-icon]::before { font-size: var(--icon-lg); }\n\n/* Dialog inputs and buttons at the standard height; the bars stay dense. */\n.ui-dialog input[type=\"text\"], .ui-dialog input[type=\"password\"],\n.ui-dialog input[type=\"number\"], .ui-dialog select,\n.ui-dialog .ui-selectmenu-button {\n\tmin-height: var(--control-standard);\n\tbox-sizing: border-box;\n}\n.ui-dialog-buttonpane button { min-height: var(--control-standard); }\n\n/* ============================================================================\n LIGHT THEME SURFACES\n\n The light theme flipped cleanly but had no depth: body and card were both\n oklch(1 0 0), pure white on pure white, with a 1px border doing all the\n work. The dark theme gets its hierarchy from the card being lighter than\n the ground; the light theme gets the same from the ground being warmer\n than the card. Same three-state structure as _override-1-system.css.\n ========================================================================= */\n\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: oklch(0.962 0.006 80);\n\t\t--card: oklch(1 0 0);\n\t\t--popover: oklch(1 0 0);\n\t\t--muted: oklch(0.955 0.005 80);\n\t\t--accent-surface: oklch(0.955 0.005 80);\n\t\t--border: oklch(0.90 0.006 80);\n\t\t--border-strong: oklch(0.82 0.008 80);\n\t\t--input: oklch(0.90 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: oklch(0.962 0.006 80);\n\t--card: oklch(1 0 0);\n\t--popover: oklch(1 0 0);\n\t--muted: oklch(0.955 0.005 80);\n\t--accent-surface: oklch(0.955 0.005 80);\n\t--border: oklch(0.90 0.006 80);\n\t--border-strong: oklch(0.82 0.008 80);\n\t--input: oklch(0.90 0.006 80);\n}\n\n/* ============================================================================\n SYSTEM PANEL ALIGNMENT\n\n Name, security, gates and routes were left-aligned; the graph legend, the\n range chips and the external links were centred. Two alignment systems in\n one 300px column, switching at the graph. One system.\n ========================================================================= */\n\n#activityGraphControls,\n.sys-range,\n#infoLinks,\n.sys-links {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tgap: var(--space-2);\n\ttext-align: left;\n}\n#infoLinks { border-top: 0; padding-top: 0; }\n#infoLinks a, .sys-links a { padding: 0; }\n\n/* ============================================================================\n NOTES, CONTENT FIRST\n\n \"Posted by Cormorant Fell at 2026-09-01 03:16:48\" was the first line of\n every note and the note itself came second. The reader wants the note.\n Author and time become one muted line beneath it; edit controls appear on\n hover or focus rather than sitting on every note permanently.\n ========================================================================= */\n\n/* :not(.hidden) matters. A bare .comment rule outranked .hidden's display:none\n (same specificity, later in the cascade), which made the hidden template\n row *visible* -- and systemChange.js removes every `.comment:visible` on a\n system change. That deleted the template, parse() had nothing to clone,\n and no note rendered anywhere. Measured: 0 comments in the DOM with 1 in\n the payload, and no template. */\n.comment:not(.hidden) { display: flex; flex-direction: column; }\n.comment.hidden { display: none !important; }\n.comment > .commentBody { order: 1; }\n.comment > .commentToolbar { order: 2; margin: 6px 0 0; }\n.comment > .commentFooter { order: 3; }\n\n.commentTitle { flex-direction: row; flex-wrap: wrap; gap: 0 var(--space-2); align-items: baseline; }\n.commentTitle .commentCreated,\n.commentTitle .commentModified { font-size: var(--fs-xs); }\n.commentTitle .commentModified.is-same { display: none; }\n\n.comment .commentControls { opacity: 0; transition: opacity .12s ease; }\n.comment:hover .commentControls,\n.comment:focus-within .commentControls { opacity: 1; }\n@media (pointer: coarse) { .comment .commentControls { opacity: 1; } }\n\n/* ============================================================================\n PHONE, LEFTOVERS FROM _override-d\n The chain tab strip scrolls internally -- its children past the edge are\n expected -- but the panel-hide control was being pushed off with them.\n Hiding the chain on a phone is not a thing anyone does.\n ========================================================================= */\n@media (max-width: 767px), (max-height: 599px) {\n\t#chainWidget > .controls .panel-hide { display: none !important; }\n\t#chainTabs { flex: 1 1 auto; max-width: 100%; }\n}\n\n/* ============================================================================\n THE HOLDOUTS, MEASURED AFTER THE FIRST PASS\n Twelve sizes remained. Each of these was an em-relative size on a\n component that never reached for a token.\n ========================================================================= */\n.sig-chip, .sig-filter .sig-chip { font-size: var(--fs-xs); }\n#topbar h3, #topbar h3 a, #EVEsystem,\n#topbar #mask, #topbar #user-track-name { font-size: var(--fs-base); }\n#topbar #logo a { font-size: var(--fs-xl); }\n.sys-meta, #infoSecurity, .sys-meta .chip { font-size: var(--fs-sm); }\n.gate-chip .gate-sec { font-size: var(--fs-xs); height: 15px; padding: 0 5px; }\nkbd { font-size: var(--fs-xs); }\n.node .nodeClass, .node .nodeType { font-size: var(--fs-xs); }\n\n/* Heights: chips at 22, bars and header controls at 28, dialogs at 36.\n bar-btn measured 30 because the height was content-box plus its border. */\n.controls .bar-btn { box-sizing: border-box; height: var(--control-dense); }\n.sig-chip, .gate-chip, h4.chip, .chip {\n\tbox-sizing: border-box;\n\theight: 22px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding-top: 0; padding-bottom: 0;\n}\n#topbar > .align-right > i[data-icon],\n#topbar #search, #topbar #follow {\n\tbox-sizing: border-box;\n\theight: var(--control-dense);\n\tmin-width: var(--control-dense);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: var(--radius-sm);\n}\n#topbar > .align-right > i[data-icon]:hover { background: var(--muted); }\n\n/* ── Graph legend as chips, in the controls row ──────────────────────── */\n#activityGraphControls { justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-3); }\n#activityLegend { display: inline-flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }\n#activityLegend .legend-chip {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 22px; padding: 0 8px 0 6px;\n\tborder: 1px solid transparent; border-radius: 999px;\n\tbackground: transparent; color: var(--foreground);\n\tfont-size: var(--fs-xs); font-weight: 500; cursor: pointer;\n}\n#activityLegend .legend-chip:hover { background: var(--muted); border-color: var(--border); }\n#activityLegend .legend-chip .swatch { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }\n#activityLegend .legend-chip.off { color: var(--muted-foreground); }\n#activityLegend .legend-chip.off .swatch { opacity: .3; }\n#activityGraphControls > a { margin-left: 0; }\n/* space-between was distributing the three range links across the row along\n with the legend; the legend takes the slack and the ranges stay a group. */\n#activityGraphControls { justify-content: flex-start; }\n#activityLegend { margin-right: auto; }\n","/* ============================================================================\n ONE DIALOG\n\n Every real workflow -- add, edit, settings, ping, confirm -- runs through a\n jQuery UI dialog, and jQuery UI's structure showed through the restyle:\n its titlebar, its button pane as a separate strip, buttons in whatever\n order the config object listed them. The panels are the branch's; the\n dialogs were the library's. This makes the dialog the same object as the\n command palette: one surface, one radius, a header with a title and one\n close, a body, and a footer with the primary action filled and on the\n right, the quiet action beside it, the destructive one alone on the left.\n\n jQuery UI stays underneath for positioning and focus. Only the skin and\n the button roles change; dialog-polish.js assigns the roles.\n ========================================================================= */\n\n.ui-dialog {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45);\n\tpadding: 0;\n\tmax-width: min(94vw, 720px);\n\toverflow: hidden;\n}\n.ui-dialog-shadow { box-shadow: 0 1px 2px rgba(0,0,0,.35), 0 16px 48px rgba(0,0,0,.45); }\n\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: var(--space-3) var(--space-4);\n\tmin-height: var(--control-standard);\n\tbackground: transparent;\n\tborder-bottom: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-title {\n\tfont-size: var(--fs-sm);\n\tletter-spacing: .1em;\n}\n\n.ui-dialog .ui-dialog-content {\n\tpadding: var(--space-4);\n\tfont-size: var(--fs-base);\n\tline-height: 1.5;\n}\n\n/* ---- footer ---------------------------------------------------------- */\n.ui-dialog .ui-dialog-buttonpane {\n\tpadding: var(--space-3) var(--space-4);\n\tborder-top: 1px solid var(--border);\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tgap: var(--space-2);\n\tfloat: none;\n\twidth: 100%;\n}\n.ui-dialog-buttonpane button {\n\torder: 2;\n\tmargin: 0;\n\tpadding: 0 var(--space-4);\n\tmin-height: var(--control-standard);\n\tborder-radius: var(--radius-sm);\n\tfont-size: var(--fs-base);\n\tfont-weight: 500;\n}\n/* Quiet: cancel, close, and the \"reset\" style choices that are not destructive. */\n.ui-dialog-buttonpane button.is-quiet {\n\torder: 1;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-quiet:hover {\n\tborder-color: transparent;\n\tbackground: var(--muted);\n\tcolor: var(--foreground);\n}\n/* Primary: filled, last. */\n.ui-dialog-buttonpane button.is-primary {\n\torder: 3;\n\tbackground: var(--primary);\n\tborder-color: var(--primary);\n\tcolor: var(--primary-foreground);\n}\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 88%, white);\n\tcolor: var(--primary-foreground);\n}\n/* Destructive: alone on the left, red only when approached. */\n.ui-dialog-buttonpane button.is-destructive {\n\torder: 0;\n\tmargin-right: auto;\n\tborder-color: transparent;\n\tcolor: var(--muted-foreground);\n}\n.ui-dialog-buttonpane button.is-destructive:hover {\n\tborder-color: var(--destructive);\n\tcolor: var(--destructive);\n\tbackground: transparent;\n}\n.ui-dialog-buttonpane button[disabled],\n.ui-dialog-buttonpane button.ui-state-disabled { opacity: .45; pointer-events: none; }\n\n/* Modal scrim, one value. */\n.ui-widget-overlay { background: rgba(0,0,0,.55); opacity: 1; }\n\n/* ============================================================================\n FORM ROWS INSIDE DIALOGS\n The palette's row is the dialog's row: label left in a quiet weight,\n control right, one vertical rhythm.\n ========================================================================= */\n\n.settings { display: flex; flex-direction: column; gap: 0; }\n\n.settings-tabs {\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tmargin: calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) var(--space-4);\n\tpadding: 0 var(--space-4);\n\tborder-bottom: 1px solid var(--border);\n}\n.settings-tabs [role=\"tab\"] {\n\tborder: 0;\n\tborder-bottom: 2px solid transparent;\n\tborder-radius: 0;\n\tbackground: transparent;\n\tpadding: var(--space-3) var(--space-2);\n\tmargin-bottom: -1px;\n\tcolor: var(--muted-foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n}\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); background: transparent; }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] {\n\tcolor: var(--foreground);\n\tborder-bottom-color: var(--primary);\n}\n\n.settings-pane { display: flex; flex-direction: column; gap: var(--space-2); min-height: 300px; }\n.settings-pane[hidden] { display: none; }\n\n.field {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto;\n\talign-items: center;\n\tgap: var(--space-3);\n\tmin-height: var(--control-standard);\n\tpadding: var(--space-1) 0;\n}\n.field.field-block { grid-template-columns: 1fr; align-items: start; }\n.field-label { color: var(--foreground); font-size: var(--fs-base); }\n.field-label small { display: block; color: var(--muted-foreground); font-size: var(--fs-xs); margin-top: 1px; }\n.field-value { color: var(--foreground); font-variant-numeric: tabular-nums; }\n.field-inline { display: inline-flex; align-items: center; gap: var(--space-2); }\n.field-inline input[type=\"text\"] { width: 12rem; }\n.field-actions { display: flex; gap: var(--space-2); justify-content: flex-end; padding-top: var(--space-3); }\n.field-group {\n\tmargin: var(--space-4) 0 var(--space-1);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.field select, .field input[type=\"text\"] { min-width: 14rem; }\n\n/* ---- switch: the one idiom for a boolean ----------------------------- */\n.switch { position: relative; display: inline-block; width: 38px; height: 22px; cursor: pointer; }\n.switch input { position: absolute; opacity: 0; width: 0; height: 0; }\n.switch-track {\n\tposition: absolute; inset: 0;\n\tborder-radius: 999px;\n\tbackground: var(--input);\n\ttransition: background .15s ease;\n}\n.switch-track::after {\n\tcontent: \"\";\n\tposition: absolute; top: 3px; left: 3px;\n\twidth: 16px; height: 16px;\n\tborder-radius: 50%;\n\tbackground: var(--foreground);\n\ttransition: transform .15s ease;\n}\n.switch input:checked + .switch-track { background: var(--primary); }\n.switch input:checked + .switch-track::after { transform: translateX(16px); background: var(--primary-foreground); }\n.switch input:focus-visible + .switch-track { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n/* ---- segmented: two to four options ---------------------------------- */\n.segmented { display: inline-flex; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }\n.segmented input { position: absolute; opacity: 0; pointer-events: none; }\n.segmented label {\n\tpadding: 0 var(--space-3);\n\tmin-height: calc(var(--control-standard) - 8px);\n\tdisplay: inline-flex; align-items: center;\n\tfont-size: var(--fs-sm);\n\tcolor: var(--muted-foreground);\n\tcursor: pointer;\n\tborder-right: 1px solid var(--border);\n}\n.segmented label:last-of-type { border-right: 0; }\n.segmented input:checked + label { background: var(--muted); color: var(--foreground); }\n.segmented input:focus-visible + label { outline: 2px solid var(--ring); outline-offset: -2px; }\n\n/* ---- slider: jQuery UI's, skinned ------------------------------------ */\n.slider-wrap { display: inline-flex; align-items: center; gap: var(--space-2); min-width: 14rem; }\n.slider-pair { flex-direction: column; align-items: stretch; gap: var(--space-1); }\n.slider-pair > span { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); color: var(--muted-foreground); }\n.slider-wrap .ui-slider { flex: 1 1 auto; height: 4px; border: 0; background: var(--input); border-radius: 999px; margin: 0; }\n.slider-wrap .ui-slider .ui-slider-handle {\n\ttop: -6px; width: 16px; height: 16px; margin-left: -8px;\n\tborder-radius: 50%; border: 0; background: var(--foreground); cursor: pointer;\n}\n.slider-wrap .ui-slider .ui-slider-handle:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n.slider-value { min-width: 2.5em; text-align: right; font-variant-numeric: tabular-nums; color: var(--muted-foreground); font-size: var(--fs-sm); }\n#dialog-options div.ui-slider { width: auto; }\n\n/* ---- statistics ------------------------------------------------------ */\n.stats { display: grid; grid-template-columns: 1fr auto; gap: var(--space-2) var(--space-4); margin: 0; }\n.stats dt { color: var(--muted-foreground); }\n.stats dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }\n\n/* ============================================================================\n ADD SIGNATURE: THE WORMHOLE HALF IS A SECOND STEP, NOT A REVEAL\n ========================================================================= */\n#dialog-signature #wormhole { margin-top: var(--space-4); padding-top: var(--space-3); border-top: 1px solid var(--border); }\n#dialog-signature #wormhole::before {\n\tcontent: \"Wormhole\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tletter-spacing: .1em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature #wormhole > hr { display: none; }\n#dialog-signature #wormhole .side + .side { margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px dashed var(--border); }\n#dialog-signature #wormhole .side + .side::before {\n\tcontent: \"Other side\";\n\tdisplay: block;\n\tmargin-bottom: var(--space-2);\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n}\n\n/* ---- characters on the Account tab ------------------------------------ */\n#characters { display: flex; flex-direction: column; gap: var(--space-2); width: 100%; margin-top: var(--space-2); }\n.char-row {\n\tdisplay: flex; align-items: center; gap: var(--space-3);\n\tpadding: var(--space-2) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: var(--card);\n}\n.char-row.is-active { border-color: color-mix(in oklab, var(--primary) 55%, var(--border)); }\n.char-portrait { width: 40px; height: 40px; border-radius: 4px; border: 1px solid var(--border); object-fit: cover; flex: 0 0 auto; }\n.char-meta { flex: 1 1 auto; min-width: 0; }\n.char-name { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--foreground); letter-spacing: .04em; }\n.char-note { font-size: var(--fs-xs); color: var(--muted-foreground); margin-top: 2px; }\n.char-actions { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; }\n.char-btn {\n\theight: var(--control-dense); padding: 0 var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm);\n\tbackground: transparent; color: var(--foreground); font-size: var(--fs-sm);\n}\n.char-btn:hover { background: var(--muted); border-color: var(--border-strong); }\n.char-btn.is-destructive { border-color: transparent; color: var(--muted-foreground); }\n.char-btn.is-destructive:hover { border-color: var(--destructive); color: var(--destructive); background: transparent; }\n.char-badge {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--primary); padding: 0 var(--space-2);\n}\n.field-actions input.is-primary { background: var(--primary); border-color: var(--primary); color: var(--primary-foreground); margin-right: auto; }\n.field-actions input.is-primary:hover { background: color-mix(in oklab, var(--primary) 85%, white); border-color: transparent; color: var(--primary-foreground); }\n\n/* ---- panels on the Display tab ---------------------------------------- */\n#panel-settings { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; margin-top: var(--space-2); }\n.panel-row {\n\tdisplay: flex; align-items: center; justify-content: space-between; gap: var(--space-3);\n\tpadding: var(--space-1) var(--space-3);\n\tborder: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card);\n\tmin-height: var(--control-standard);\n}\n.panel-row-name { color: var(--foreground); }\n.panel-row-actions { display: flex; align-items: center; gap: var(--space-2); }\n.panel-row-actions .char-btn { padding: 0 var(--space-2); font-size: 10px; }\n.panel-row-actions .char-btn[disabled] { opacity: .3; pointer-events: none; }\n","/* ============================================================================\n PANEL BARS WITH WORDS ON THEM\n\n Twenty-five unlabelled icons across four bars, sixty-eight hover tooltips\n to explain them. Hover does not exist on a tablet, which is the device\n this branch was meant to make editing work on.\n\n Primary actions get a word. Secondary actions stay as icons but sit in a\n right-hand group with a real gap, and state toggles (hot, higgs) show\n their state. The elements are the same tags the JavaScript has always\n bound to; only a class and a label span were added, so nothing rebinds.\n ========================================================================= */\n\n.gridWidget > .controls { gap: var(--space-1); }\n\n.controls .bar-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\theight: var(--control-dense);\n\tpadding: 0 10px;\n\tmargin: 0;\n\tborder: 1px solid transparent;\n\tborder-radius: var(--radius-sm);\n\tfont-style: normal;\n\tfont-size: var(--fs-sm);\n\tfont-weight: 500;\n\tline-height: 1;\n\tcolor: var(--foreground);\n\tcursor: pointer;\n\twhite-space: nowrap;\n\ttransition: background-color .12s ease, border-color .12s ease;\n}\n.controls .bar-btn::before { font-size: var(--icon); }\n.controls .bar-btn:hover { background: var(--muted); border-color: var(--border); color: var(--foreground); }\n.controls .bar-btn.bar-icon { padding: 0 6px; }\n.controls .bar-btn.bar-icon:not([data-icon]) { font-weight: 600; }\n\n.controls .bar-btn.bar-primary { background: var(--primary); color: var(--primary-foreground); }\n.controls .bar-btn.bar-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 88%, white);\n\tborder-color: transparent;\n\tcolor: var(--primary-foreground);\n}\n\n.controls .bar-btn.disabled { opacity: .4; pointer-events: none; }\n\n/* A toggle that is on says so with the accent, not by hover. */\n.controls .bar-btn.bar-toggle.active,\n.controls .bar-btn.bar-toggle.on,\n.controls .bar-btn.bar-toggle[data-active=\"true\"] { color: var(--primary); background: color-mix(in oklab, var(--primary) 14%, transparent); }\n\n.controls .bar-btn kbd {\n\tfont-family: inherit;\n\tfont-size: var(--fs-xs);\n\tcolor: var(--muted-foreground);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius-sm);\n\tpadding: 1px 4px;\n\tline-height: 1;\n}\n\n.controls .bar-sep { width: 1px; height: 16px; background: var(--border); margin: 0 var(--space-1); }\n\n.gridWidget > .controls > .bar-right {\n\tmargin-left: auto;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-1);\n\tfloat: none;\n}\n/* The hide control sits after the right group. */\n.gridWidget > .controls > .bar-right ~ .panel-hide { margin-left: 0; }\n\n/* The signature count belongs with the title, as a chip. */\n.controls .bar-count {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 18px;\n\tpadding: 0 7px;\n\tmargin-right: var(--space-2);\n\tborder-radius: 999px;\n\tbackground: var(--muted);\n\tcolor: var(--muted-foreground);\n\tfont-style: normal;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 600;\n\tfont-variant-numeric: tabular-nums;\n\tcursor: default;\n}\n\n/* Labels give way before icons do. */\n@media (max-width: 1439px) {\n\t#signaturesWidget .bar-btn:not(.bar-primary) .bar-label,\n\t#infoWidget .bar-btn .bar-label { display: none; }\n\t#signaturesWidget .bar-btn:not(.bar-primary):not(.bar-icon) { padding: 0 6px; }\n}\n\n/* The bar inherits the panel title's uppercase and letter-spacing; a button\n label is a word, not a heading. And a bar button is its own width -- the\n notes bar was stretching \"Add note\" across the whole panel because the\n bar's children default to flex: 1 there. */\n.controls .bar-btn { text-transform: none; letter-spacing: 0; flex: 0 0 auto; }\n.controls .bar-btn kbd { border-radius: var(--radius-sm); }\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) { border-radius: var(--radius-sm); }\n/* The label span inherits the bar's uppercase from a more specific rule than\n .bar-btn can beat; set it on the span itself. */\n.gridWidget > .controls .bar-btn > .bar-label { text-transform: none; letter-spacing: 0; font-size: var(--fs-sm); }\n/* The label takes the button's colour, whatever rule the bar had for spans. */\n.gridWidget > .controls .bar-btn > .bar-label { color: inherit; -webkit-text-fill-color: currentColor; }\n/* .bar-btn's display was beating .hidden's; a hidden button is hidden. */\n.controls .bar-btn.hidden { display: none !important; }\n","/* ============================================================================\n CHAIN NODES AS CARDS\n\n A node was a class label, a name and a row of four-pixel dots, floating on\n the canvas with a thin border. The map is the product and it was the least\n designed surface on the screen: nothing said a node was a thing you could\n drag, collapse or open, and at a big corp's density -- sixteen screen widths\n of systems -- small unbounded labels become a wall of text.\n\n A card: fixed width, a definite ground, the security class as a chip in\n the corner rather than a heading, statics as chips inside the card rather\n than tabs hanging below it, activity pips in the footer. The markup in\n chain-map.js is untouched; the renderer measures nothing from the DOM for\n its ring maths (minArc comes from the data), so a slightly larger node\n only needs the spacing factor to breathe, which is a setting.\n ========================================================================= */\n\n#chainMap div.node {\n\tbox-sizing: border-box;\n\twidth: 128px;\n\tmin-height: 56px;\n\tpadding: 6px 8px 8px;\n\tborder-radius: var(--radius);\n\tborder: 1px solid var(--border);\n\tbackground-color: var(--card);\n\ttext-align: left;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tcursor: grab;\n}\n#chainMap div.node:active { cursor: grabbing; }\n\n/* Class chip, top-left. The h4 was a heading; it is a label. */\n#chainMap div.node > h4.nodeClass {\n\torder: 1;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .04em;\n\tline-height: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n#chainMap div.node > h4.nodeClass > span {\n\tdisplay: inline-flex;\n\talign-items: center;\n\theight: 16px;\n\tpadding: 0 6px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: var(--card);\n\tcolor: inherit;\n}\n\n/* System name, the reading line. */\n#chainMap div.node > h4.nodeSystem {\n\torder: 2;\n\tmargin: 0;\n\tfont-size: var(--fs-base);\n\tfont-weight: 600;\n\tline-height: 1.2;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground); text-decoration: none; }\n#chainMap div.node > h4.nodeSystem a:hover { color: var(--primary); }\n\n/* Wormhole type / signature, quiet. */\n#chainMap div.node > h4.nodeType {\n\torder: 3;\n\tmargin: 0;\n\tfont-size: var(--fs-xs);\n\tfont-weight: 500;\n\tcolor: var(--muted-foreground);\n\ttext-transform: none;\n\tletter-spacing: 0;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmin-height: 1em;\n}\n\n/* Statics: inside the card as chips, not tabs hanging off the bottom. */\n#chainMap div.node > .statics {\n\torder: 4;\n\tposition: static;\n\tdisplay: flex;\n\tgap: 3px;\n\tmargin-top: 2px;\n\tmin-height: 0;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: auto;\n\tmin-width: 16px;\n\theight: 14px;\n\tpadding: 0 4px;\n\tmargin: 0;\n\tborder: 0;\n\tborder-radius: 3px;\n\tbackground: color-mix(in oklab, currentColor 22%, transparent);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tline-height: 1;\n}\n#chainMap div.node > .statics .multi-static { color: var(--muted-foreground); }\n\n/* Activity pips: footer, right. */\n#chainMap div.node > .nodeActivity {\n\torder: 5;\n\tposition: absolute;\n\tright: 8px;\n\tbottom: 6px;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 3px;\n\tfont-size: 9px;\n\tline-height: 1;\n}\n#chainMap div.node > .nodeActivity .invisible { display: none; }\n\n/* Effect / occupant icons: top-right. */\n#chainMap div.node > .nodeIcons {\n\tposition: absolute;\n\ttop: 5px;\n\tright: 6px;\n\tleft: auto;\n\twidth: auto;\n\theight: auto;\n\tmargin: 0;\n\tdisplay: flex;\n\tgap: 4px;\n\tfont-size: var(--fs-xs);\n}\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; gap: 4px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge {\n\tdisplay: inline-flex; align-items: center;\n\theight: 14px; padding: 0 5px;\n\tborder-radius: 999px;\n\tbackground: var(--primary); color: var(--primary-foreground);\n\tfont-size: 10px; font-weight: 700;\n}\n\n/* The one you are in stays unmistakable; the class tint stays as a ground. */\n#chainMap .currentNode > div.node { box-shadow: 0 0 0 2px var(--primary); border-color: var(--primary); }\n#chainMap div.node:hover { border-color: var(--border-strong); box-shadow: 0 2px 10px rgba(0,0,0,.35); }\n\n/* Collapsed / loop nodes keep the card shape at a reduced height. */\n#chainMap div.loop { width: 128px; min-height: 0; padding: 6px 8px; border-radius: var(--radius); }\n/* The name link was still taking a fixed grey from a more specific legacy\n rule (measured oklch(0.8 0 0) in both themes -- invisible on a white card). */\n#chainMap div.node > h4.nodeSystem,\n#chainMap div.node > h4.nodeSystem a { color: var(--foreground) !important; }\n\n/* The base stylesheet gives div.node a fixed height. As a flex column that\n meant every child shrank to fit -- measured: the name heading at 3px with\n overflow hidden around a 19px link, which rendered as a dark smudge where\n the system name should be. The card takes the height of its contents and\n nothing inside it shrinks. */\n#chainMap div.node { height: auto !important; max-height: none !important; }\n#chainMap div.node > * { flex: 0 0 auto; }\n#chainMap div.node > h4.nodeSystem { height: auto; line-height: 1.25; }\n\n/* ============================================================================\n RAISED CARDS, CAPSULE STATICS\n\n The card ground was the same value as the panel behind it -- var(--card)\n on a panel that is var(--card) at 88% -- so a node read as a faint outline\n on the dark canvas rather than a thing sitting on it. The card is now a\n raised surface a clear step lighter than the canvas, with a stronger edge.\n\n Statics were tiny half-tab glyphs hanging under the node. They are the\n information you scan a chain for, so they become filled capsules in the\n security colour, straddling the card's bottom edge -- half on the card,\n half below it -- with a ring in the card colour so they read as cut into\n the edge rather than stuck on it.\n ========================================================================= */\n\n:root {\n\t--node-surface: color-mix(in oklab, var(--card) 82%, var(--foreground) 18%);\n\t--node-edge: color-mix(in oklab, var(--border-strong) 70%, var(--foreground) 30%);\n}\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--node-surface: oklch(1 0 0);\n\t\t--node-edge: oklch(0.78 0.006 80);\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--node-surface: oklch(1 0 0);\n\t--node-edge: oklch(0.78 0.006 80);\n}\n\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node {\n\tbackground-color: var(--node-surface);\n\tborder-color: var(--node-edge);\n\tbox-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 4px 14px rgba(0,0,0,.45);\n\toverflow: visible;\n\tpadding-bottom: 12px; /* room above the straddling capsules */\n\tmargin-bottom: 8px; /* room below them before the next ring */\n}\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-class-red) 18%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-class-orange) 18%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-class-green) 18%, var(--node-surface)); }\n#chainMap .currentNode > div.node {\n\tbackground-color: color-mix(in oklab, var(--primary) 16%, var(--node-surface));\n\tborder-color: var(--primary);\n\tbox-shadow: 0 0 0 2px var(--primary), 0 4px 14px rgba(0,0,0,.45);\n}\n\n/* Capsules on the edge. */\n#chainMap div.node > .statics {\n\tposition: absolute;\n\tleft: 8px;\n\tright: 8px;\n\tbottom: 0;\n\ttransform: translateY(50%);\n\tmargin: 0;\n\tgap: 4px;\n\tz-index: 2;\n\tpointer-events: auto;\n}\n#chainMap div.node > .statics span,\n#chainMap div.node > .statics span:nth-child(2) {\n\theight: 18px;\n\tmin-width: 22px;\n\tpadding: 0 7px;\n\tborder-radius: 999px;\n\tbackground: currentColor;\n\t-webkit-text-fill-color: #fff;\n\tbox-shadow: 0 0 0 2px var(--node-surface);\n\tfont-size: var(--fs-xs);\n\tfont-weight: 700;\n\tletter-spacing: .02em;\n}\n#chainMap div.node > .statics .multi-static { background: var(--muted-foreground); }\n\n/* Pips move up beside the name so they never sit under a capsule. */\n#chainMap div.node > .nodeActivity { top: 26px; right: 8px; bottom: auto; }\n#chainMap div.node > h4.nodeSystem { padding-right: 38px; }\n/* \"Dark Venture\" was ellipsising: 128px minus padding minus the 38px held\n for the activity pips left ~70px for the name. A little wider, and the\n pips reserve only what two dots need. */\n#chainMap div.node, #chainMap div.loop { width: 144px; }\n#chainMap div.node > h4.nodeSystem { padding-right: 26px; }\n#chainMap div.node > .nodeActivity { top: 27px; right: 8px; gap: 3px; }\n\n/* Height budget. Three systems in a straight line filled the chain panel and\n forced a scrollbar at 900px tall; a card is two lines and a chip row, and\n should cost about 60px, not 90. */\n#chainMap div.node,\n#chainMap div.redNode.node,\n#chainMap div.yellowNode.node,\n#chainMap div.greenNode.node { padding: 5px 8px 9px; min-height: 0; gap: 1px; margin-bottom: 6px; }\n#chainMap div.node > h4.nodeSystem { line-height: 1.15; }\n#chainMap div.node > h4.nodeType:empty, #chainMap div.node > h4.nodeType { min-height: 0; }\n#chainMap div.node > h4.nodeClass > span { height: 15px; }\n#chainMap div.node > .nodeActivity { top: 24px; }\n","/* ============================================================================\n INLINE LIFE / MASS\n The two cells read as editable on approach, and the chooser is the same\n surface as the palette: popover ground, one radius, filled chips in the\n data colours the rest of the app uses for these states.\n ========================================================================= */\n\n#sigTable td.inline-editable { cursor: pointer; position: relative; }\n#sigTable td.inline-editable:hover { color: var(--foreground); text-decoration: underline dotted; text-underline-offset: 3px; }\n#sigTable td.inline-editable.is-saving { opacity: .5; pointer-events: none; }\n\n#inline-edit {\n\tposition: fixed;\n\tz-index: 1200;\n\tdisplay: flex;\n\tgap: var(--space-1);\n\tpadding: var(--space-1);\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: var(--radius);\n\tbox-shadow: 0 1px 2px rgba(0,0,0,.35), 0 12px 32px rgba(0,0,0,.4);\n}\n#inline-edit .inline-chip {\n\theight: var(--control-dense);\n\tpadding: 0 var(--space-3);\n\tborder-radius: 999px;\n\tborder: 1px solid var(--border);\n\tbackground: transparent;\n\tcolor: var(--foreground);\n\tfont-size: var(--fs-sm);\n\tfont-weight: 600;\n\tcursor: pointer;\n}\n#inline-edit .inline-chip:hover { background: var(--muted); border-color: var(--border-strong); }\n#inline-edit .inline-chip[aria-selected=\"true\"].stable { background: var(--data-good); border-color: var(--data-good); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].destab { background: var(--data-warn); border-color: var(--data-warn); color: #1b1b1b; }\n#inline-edit .inline-chip[aria-selected=\"true\"].critical { background: var(--data-critical); border-color: var(--data-critical); color: #fff; }\n#inline-edit .inline-chip:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }\n\n@media (pointer: coarse) {\n\t#inline-edit .inline-chip { min-height: 44px; padding: 0 var(--space-4); }\n}\n","/* ============================================================================\n TWO TYPE ROLES\n\n Montserrat was chosen as the brand face and is right for that: geometric,\n round, of a piece with the wing mark. It was then used for every table\n cell, label and chip -- and it is a wide face with a large x-height, which\n at 11-13px in a three-column layout of \"GHJ-456\", \"23:26\", \"Class-3\" costs\n the width budget and reads soft. The signature-id column having to fall\n back to a monospace to stay aligned was the symptom.\n\n Display stays Montserrat. Everything read as data is IBM Plex Sans:\n narrower set, tabular figures, a technical character that suits a mapping\n tool, and a grotesque that sits cleanly under a geometric display face.\n Ids move to Plex Mono so the family holds.\n\n Same selector list as the rule in _override-b-fixes.css that forced one\n family everywhere; this file sorts after it, so equal specificity wins.\n ========================================================================= */\n\n:root {\n\t--font-ui: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-display: 'Montserrat', 'IBM Plex Sans', system-ui, sans-serif;\n\t--font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n}\n\nbody, input, select, textarea, button,\ntable, td, th, h1, h2, h3, h4, h5, h6, p, div, span, a, li,\n#dialog-options td, #logoutTable td, table td {\n\tfont-family: var(--font-ui);\n\tfont-variant-numeric: tabular-nums;\n}\n\n/* ---- brand surfaces keep the display face ---------------------------- */\n#topbar #logo, #topbar #logo a,\n.panel-title,\n.ui-dialog .ui-dialog-title,\n.sys-panel .sys-name,\n#cmd-palette .cmd-title,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label {\n\tfont-family: var(--font-display);\n}\n\n/* ---- data ids in the mono of the same family --------------------------- */\n#sigTable td:nth-child(1),\n#chainMap div.node > h4.nodeType,\nkbd {\n\tfont-family: var(--font-mono);\n\tletter-spacing: 0;\n}\n\n/* Plex sits a touch smaller on the body than Montserrat did at the same\n size; the base step comes up one pixel so line lengths, not legibility,\n are what change. */\n:root { --fs-base: 13px; --fs-sm: 12px; }\n","/* ============================================================================\n Base theme.\n\n Overrides token VALUES from _tokens.css -- it does not restyle components,\n so it stays out of the way of upstream merges. The values here are the\n built-in defaults; a brand pack (brand.inc.php) overrides them at runtime.\n\n Two notes on scope:\n\n - The neutral ramp is re-pointed at a warmer grey ramp. Tripwire's original\n palette has no accent token -- every emphasis was just a lighter grey --\n so the accent cannot be placed by re-pointing alone. The short accent\n block at the bottom introduces it at the few sites that carry identity.\n - --data-* is deliberately untouched. Wormhole class, mass band and\n security colours encode meaning, and repainting them to fit a brand would\n make the map lie.\n ========================================================================= */\n\n:root {\n /* -- accent constants, used by the accent rules below ------------------- */\n --accent: #f07c00;\n --accent-dim: rgba(240, 124, 0, .18);\n --brand-gray: #adadad;\n --brand-gray-dark: #4d4d4d;\n\n /* -- ops floor: neutral ramp re-pointed at the brand greys -------------\n Ordering and relative contrast follow the original ramp, so component\n styling keeps working; only the values move. */\n --n-000: #000000;\n --n-020: #101010;\n --n-050: #1b1b1b; /* page ground */\n --n-100: #232323; /* raised panel */\n --n-120: #2a2a2a; /* second surface */\n --n-200: #303030; /* hairlines */\n --n-220: #3a3a3a;\n --n-250: #444444;\n --n-300: #4d4d4d; /* rules/borders (brand dark gray) */\n --n-400: #5a5a5a;\n --n-500: #6b6b6b;\n --n-550: #7d7d7d;\n --n-560: #838383;\n --n-600: #8c8c8c; /* secondary text */\n --n-650: #9a9a9a;\n --n-700: #a3a3a3;\n --n-750: #adadad; /* brand gray */\n --n-800: #c4c4c4; /* primary body text */\n --n-850: #d2d2d2;\n --n-870: #dedede;\n --n-880: #e4e4e4;\n --n-900: #ebebeb;\n --n-920: #f0f0f0;\n --n-940: #f5f5f5;\n --n-960: #f8f8f8;\n --n-999: #f2f2f2; /* emphasis text */\n}\n\n/* Front office. The brand orange is identical in both themes by rule, so only\n the neutral grounds swap. Mirrors the structure in _tokens.css: the media\n query is guarded so an explicit dark choice still wins. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9; /* page ground */\n --n-100: #f5f5f5; /* raised panel */\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad; /* rules -- brand gray */\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f; /* pushed past a straight inversion: the mid-ramp is\n where naive flipping leaves text at ~4.5:1 */\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d; /* brand dark gray */\n --n-750: #444444;\n --n-800: #333333; /* primary body text */\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f; /* emphasis text */\n }\n}\n:root[data-theme=\"light\"] {\n --n-000: #ffffff;\n --n-020: #fbfbfb;\n --n-050: #e9e9e9;\n --n-100: #f5f5f5;\n --n-120: #fdfdfd;\n --n-200: #d8d8d8;\n --n-220: #cfcfcf;\n --n-250: #c4c4c4;\n --n-300: #adadad;\n --n-400: #9a9a9a;\n --n-500: #868686;\n --n-550: #6f6f6f;\n --n-560: #6a6a6a;\n --n-600: #5e5e5e;\n --n-650: #565656;\n --n-700: #4d4d4d;\n --n-750: #444444;\n --n-800: #333333;\n --n-850: #2b2b2b;\n --n-870: #242424;\n --n-880: #1f1f1f;\n --n-900: #1b1b1b;\n --n-920: #161616;\n --n-940: #101010;\n --n-960: #080808;\n --n-999: #1f1f1f;\n}\n\n/* ============================================================================\n Accent placement.\n\n Deliberately short. The orange marks identity and current state -- the\n wordmark, what is selected, what has focus -- and nothing else. Data keeps\n its own colours.\n ========================================================================= */\n\n/* The wordmark carries the brand; the version chip stays quiet beside it.\n The Wing Icon is set as a ::before rather than edited into tripwire.php, so\n the template stays untouched and this whole theme remains one deletable\n file. Brand guidelines allow the standalone Wing Icon to form new lockups;\n the full lockup may not be modified, so it is not used here. */\n#topbar #logo a {\n color: var(--accent);\n letter-spacing: .01em;\n}\n\n\n/* Front office uses the dark lockup, not the orange one -- which the brand\n guidelines call for, and which also fixes the contrast: #F07C00 on a light\n topbar measures 2.77:1. Orange stays the accent for state, not the mark. */\n@media (prefers-color-scheme: light) {\n :root:not([data-theme=\"dark\"]) #topbar #logo a { color: var(--n-999); }\n}\n:root[data-theme=\"light\"] #topbar #logo a { color: var(--n-999); }\n\n/* Active/selected state, previously just a lighter grey. */\n#topbar i.active,\n#topbar a.active {\n color: var(--accent);\n}\n\n/* Keyboard focus. Track 2 adds a keyboard layer, so a visible, branded focus\n ring is about to matter a great deal more than it does today. */\n:focus-visible {\n outline: 2px solid var(--accent);\n outline-offset: 1px;\n}\n\n/* Selected signature rows read as \"this is what you are acting on\". */\n#sigTable tbody tr.selected td {\n background: var(--accent-dim);\n}\n\n/* ============================================================================\n Background.\n\n Overridden here rather than in tripwire.css so upstream's default survives a\n rebase. The source is 21:9; under the existing `cover` + `center` a 16:9\n viewport trims the sides, which keeps the ship and loses the brightest edge\n of the nebula -- the framing this was chosen for.\n ========================================================================= */\n\n\n/* Read band: the background is decorative at phone width, so serve 79KB\n instead of 460KB. */\n}\n","/* ============================================================================\n THE PALETTE (default)\n\n The refit palette,\n adopted as Tripwire's default after a side-by-side on the preview. A warm\n charcoal scale that was chosen rather than inherited; two surfaces and one\n rule colour; bone text with dim as the subordinate weight (4.5:1 on both\n surfaces); blood for danger; sage / rust-bright / blood / void for hisec /\n lowsec / nullsec / J-space -- the EVE convention in a muted register, so\n the map's security colours are information rather than the loudest thing\n on the screen.\n\n What stays constant: the mark, the wordmark, and one\n accent -- the primary action, the ring, links. One discipline under a\n corp's flag, not one corp's brand on another's\n tool. Security chips stay filled with white text; that is the house rule.\n\n Type: Geist for text, Geist Mono for labels, ids and stats. The label is\n the signature -- 10px, uppercase, wide-tracked, dim -- and it is applied\n to every panel title, table header and footer label uniformly.\n\n Light theme is a print palette: paper, not white.\n ========================================================================= */\n\n/* ── THE DECK ──────────────────────────────────────────────────────────\n Grounds and neutrals from the house letterhead palette,\n a neutral charcoal ramp:\n brand grey #ADADAD for body text, brand dark grey #4D4D4D for rules,\n orange as the one accent. This puts Tripwire on the same deck as\n the letterhead -- same labels, same accent -- rather than on\n a warm ink.\n\n Data colours deliberately do NOT take the brand callouts. #57DB57 green\n and #0073F0 blue are display colours for a few words on a log line;\n a map paints them on a hundred chips at once and they shout (measured\n and rejected earlier on this branch). Sage / void / a desaturated warn\n stay, with the danger red. */\n:root {\n\t--background: #1b1b1b;\n\t--foreground: #f2f2f2; /* bone: headings, names, values */\n\t--card: #232323;\n\t--card-foreground: #f2f2f2;\n\t--popover: #2a2a2a;\n\t--popover-foreground: #f2f2f2;\n\t--muted: #2a2a2a;\n\t--muted-foreground: #8c8c8c; /* dim: labels, secondary */\n\t--text-body: #adadad; /* fog: brand grey, running text */\n\t--accent-surface: #2a2a2a;\n\t--border: #4d4d4d; /* brand dark grey */\n\t--border-soft: #303030;\n\t--border-strong: #5a5a5a;\n\t--input: #303030;\n\t--glow: #242424;\n\n\t--primary: var(--accent, #f07c00);\n\t--primary-foreground: #1b1b1b;\n\t--ring: var(--accent, #f07c00);\n\t--destructive: #e05252;\n\n\t--data-good: #7d9b76; /* hisec, stable */\n\t--data-warn: #d9a441; /* lowsec, destab -- desaturated brand yellow */\n\t--data-critical: #e05252; /* nullsec, critical, EOL */\n\t--data-info: #8b7aa8; /* J-space, jumps */\n\n\t--node-surface: #2a2a2a;\n\t--node-edge: #5a5a5a;\n\n\t--chart-gridline: rgba(242, 242, 242, .06);\n\t--chart-axis-text: #adadad;\n\n\t--font-ui: 'Geist', system-ui, -apple-system, 'Segoe UI', sans-serif;\n\t--font-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace;\n\t--font-display: 'Montserrat', 'Geist', system-ui, sans-serif;\n}\n\n/* The front office: the light theme. Same brand hexes, light\n neutral grounds, dark grey ink. */\n@media (prefers-color-scheme: light) {\n\t:root:not([data-theme=\"dark\"]) {\n\t\t--background: #e9e9e9;\n\t\t--foreground: #1f1f1f;\n\t\t--card: #f5f5f5;\n\t\t--card-foreground: #1f1f1f;\n\t\t--popover: #fdfdfd;\n\t\t--popover-foreground: #1f1f1f;\n\t\t--muted: #e4e4e4;\n\t\t--muted-foreground: #767676;\n\t\t--text-body: #4d4d4d;\n\t\t--accent-surface: #e4e4e4;\n\t\t--border: #adadad;\n\t\t--border-soft: #d8d8d8;\n\t\t--border-strong: #8c8c8c;\n\t\t--input: #e4e4e4;\n\t\t--glow: #ffffff;\n\t\t--primary-foreground: #ffffff;\n\t\t--destructive: #b03a3a;\n\t\t--data-good: #4c6a45;\n\t\t--data-warn: #9a6d12;\n\t\t--data-critical: #b03a3a;\n\t\t--data-info: #5d4f78;\n\t\t--node-surface: #fdfdfd;\n\t\t--node-edge: #adadad;\n\t\t--chart-gridline: rgba(31, 31, 31, .08);\n\t\t--chart-axis-text: #4d4d4d;\n\t}\n}\n:root[data-theme=\"light\"] {\n\t--background: #e9e9e9;\n\t--foreground: #1f1f1f;\n\t--card: #f5f5f5;\n\t--card-foreground: #1f1f1f;\n\t--popover: #fdfdfd;\n\t--popover-foreground: #1f1f1f;\n\t--muted: #e4e4e4;\n\t--muted-foreground: #767676;\n\t--text-body: #4d4d4d;\n\t--accent-surface: #e4e4e4;\n\t--border: #adadad;\n\t--border-soft: #d8d8d8;\n\t--border-strong: #8c8c8c;\n\t--input: #e4e4e4;\n\t--glow: #ffffff;\n\t--primary-foreground: #ffffff;\n\t--destructive: #b03a3a;\n\t--data-good: #4c6a45;\n\t--data-warn: #9a6d12;\n\t--data-critical: #b03a3a;\n\t--data-info: #5d4f78;\n\t--node-surface: #fdfdfd;\n\t--node-edge: #adadad;\n\t--chart-gridline: rgba(31, 31, 31, .08);\n\t--chart-axis-text: #4d4d4d;\n}\n\n/* Flat ink. The ship stays on the landing page, where it is a brand\n moment; behind three columns of data it was competition. */\n#wrapper::before { background: radial-gradient(ellipse at 30% -20%, var(--glow) 0%, var(--background) 60%); }\nbody { background-image: none; }\n\n/* Bring Intro.js tooltips onto the active theme surface. Its bundled CSS\n otherwise leaves the panel and arrow white in dark mode. */\n.introjs-tooltip {\n\tbackground-color: var(--popover);\n\tborder: 1px solid var(--border);\n\tcolor: var(--popover-foreground);\n}\n.introjs-arrow.top,\n.introjs-arrow.top-right,\n.introjs-arrow.top-middle { border-bottom-color: var(--popover); }\n.introjs-arrow.right,\n.introjs-arrow.right-bottom { border-left-color: var(--popover); }\n.introjs-arrow.bottom { border-top-color: var(--popover); }\n.introjs-arrow.left,\n.introjs-arrow.left-bottom { border-right-color: var(--popover); }\n\n/* Running text in the brand grey; names, values and headings in bone. */\n#sigTable td, .commentBody, .sys-meta, .sys-extra, .field-label, .ui-dialog .ui-dialog-content { color: var(--text-body); }\n#sigTable td:nth-child(1), .sys-name, .field-value, #chainMap div.node > h4.nodeSystem, .stats dd { color: var(--foreground); }\n\n/* The label: mono, small, uppercase, tracked, dim. Everywhere it means\n \"this is a label\", so it reads as one system. */\n.panel-title,\n.ui-dialog .ui-dialog-title,\n#sigTable th,\n.gate-list-label,\n.field-group,\n.settings-tabs [role=\"tab\"],\n#statusbar .bar-label,\n.sys-links a,\n#activityGraphControls > a,\n#cmd-palette .cmd-group,\n.sig-stats {\n\tfont-family: var(--font-mono);\n\tfont-size: 10px;\n\tfont-weight: 500;\n\tletter-spacing: .22em;\n\ttext-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n.sys-links a:hover,\n#activityGraphControls > a:hover,\n.settings-tabs [role=\"tab\"]:hover { color: var(--foreground); }\n.settings-tabs [role=\"tab\"][aria-selected=\"true\"] { color: var(--foreground); }\n\n/* Ids, times and counts in the mono. */\n#sigTable td:nth-child(1),\n#sigTable td:nth-child(3),\n#statusbar .bar-value,\n#signature-count,\n.node .nodeType,\nkbd { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }\n\n/* Surfaces: one small radius, a thin rule, and a deep shadow only where\n something floats. */\n.gridWidget { border-radius: 4px; }\n.ui-dialog, #cmd-palette, #inline-edit, #panel-menu {\n\tborder-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0, 0, 0, .5);\n}\n#chainMap div.node, #chainMap div.loop { border-radius: 4px; }\n\n/* Neutral chips flat on panel-2 with a rule; security and state chips keep\n their fill and white text. */\n.sig-chip, h4.chip, .chip, .gate-chip {\n\tbackground: var(--popover);\n\tborder: 1px solid var(--border);\n\tborder-radius: 3px;\n}\n.sig-chip.on { background: var(--muted); border-color: var(--border-strong); color: var(--foreground); }\n\n/* Primary action: orange fill, ink text; brighter on approach. */\n.controls .bar-btn.bar-primary:hover,\n.ui-dialog-buttonpane button.is-primary:hover {\n\tbackground: color-mix(in oklab, var(--primary) 85%, white);\n\tborder-color: color-mix(in oklab, var(--primary) 85%, white);\n}\n\n::selection { background: var(--primary); color: var(--background); }\n\n/* ── Second look ─────────────────────────────────────────────────────────\n Bar hierarchy: title · primary · everything else. The right-hand group\n sits at the label weight at rest and comes up on approach, so eleven\n controls on a strip read as three things. */\n.gridWidget > .controls > .bar-right .bar-btn,\n.gridWidget > .controls > .bar-right .panel-hide,\n.gridWidget > .controls > .panel-hide,\n#chainWidget > .controls > .bar-btn.bar-icon { color: var(--muted-foreground); }\n.gridWidget > .controls > .bar-right .bar-btn:hover,\n.gridWidget > .controls > .panel-hide:hover,\n#chainWidget > .controls > .bar-btn.bar-icon:hover { color: var(--foreground); }\n.gridWidget > .controls > .bar-right .bar-btn.bar-toggle.active { color: var(--primary); }\n\n/* Range chips had become tiny bordered boxes next to the borderless legend:\n two idioms in one row. They are quiet mono text like the links beneath. */\n#activityGraphControls > a {\n\tborder: 0;\n\tbackground: transparent;\n\tpadding: 0 2px;\n\theight: auto;\n\tcolor: var(--muted-foreground);\n}\n#activityGraphControls > a.active,\n#activityGraphControls > a[aria-current] { color: var(--primary); }\n#activityGraphControls { gap: var(--space-2) var(--space-3); }\n#activityLegend .legend-chip { font-family: var(--font-mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-foreground); }\n#activityLegend .legend-chip:hover { color: var(--foreground); }\n#activityLegend .legend-chip.off { opacity: .5; }\n\n/* The graph sits in the panel like a card of its own. */\n#activityGraph { margin: var(--space-2) 0 0; }\n\n/* Sliders: the last control not in the palette. */\n.slider-wrap .ui-slider { background: var(--input); height: 3px; }\n.slider-wrap .ui-slider .ui-slider-handle { background: var(--primary); width: 14px; height: 14px; top: -6px; margin-left: -7px; border: 2px solid var(--popover); box-sizing: border-box; }\n.slider-value { font-family: var(--font-mono); font-size: 11px; color: var(--muted-foreground); }\n.slider-pair > span { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }\n\n/* ── The letterhead ──────────────────────────────────────────────────────\n Three zones. Left: the system you are viewing, large, with your own\n location and the search beneath it. Centre: the corp's mark and\n wordmark. Right: you -- a portrait you can actually make out, name and\n mask beside it, then the two tools. The app's own name lives in the\n footer with its version; the header is the corp's. */\n#topbar {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n\talign-items: center;\n\tgap: 16px;\n\tmin-height: 76px;\n\tpadding: 8px 18px;\n\tbackground: linear-gradient(180deg, var(--card), var(--background));\n\tborder-bottom: 1px solid var(--border);\n}\n#topbar > .align-left, #topbar > .align-right, #topbar > .align-center { display: flex; align-items: center; min-width: 0; }\n#topbar > .align-left { justify-content: flex-start; flex-direction: column; align-items: flex-start; gap: 2px; overflow: visible; }\n#topbar > .align-center{ justify-content: center; }\n#topbar > .align-right { justify-content: flex-end; gap: 14px; }\n\n/* Left: the viewed system. */\n.hdr-sys { display: flex; align-items: center; gap: 8px; }\n#hdr-system {\n\tfont-family: var(--font-display);\n\tfont-size: 22px;\n\tfont-weight: 700;\n\tletter-spacing: -.01em;\n\tline-height: 1.1;\n\tcolor: var(--foreground);\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n#hdr-system:hover { color: var(--primary); }\n#topbar #search { color: var(--muted-foreground); cursor: pointer; }\n#topbar #search:hover { color: var(--foreground); }\n#topbar #systemSearch { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 11px; }\n#topbar #currentSpan { display: inline-flex; align-items: center; gap: 6px; }\n#topbar #currentSpan .bar-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted-foreground); }\n#topbar #EVEsystem { font-family: var(--font-mono); font-size: 11px; color: var(--text-body); }\n#topbar #follow { color: var(--muted-foreground); }\n/* On is orange. The line above outranked the legacy .active colour, so the\n toggle worked and looked like it had not. */\n#topbar #follow.active { color: var(--primary); }\n#topbar #follow:hover { color: var(--foreground); }\n#topbar #follow.active:hover { color: var(--primary); }\n#topbar #searchSpan input {\n\tfont-family: var(--font-mono); font-size: 11px;\n\tmin-height: 24px; padding: 0 8px; max-width: 12rem;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px; color: var(--foreground);\n}\n\n/* Centre: the mark. Two files, one per theme. */\n#topbar #logo { display: block; line-height: 0; }\n#topbar #logo img { height: 46px; width: auto; display: block; }\n#topbar #logo a::before, #topbar #logo::before { content: none !important; }\n#topbar #logo .logo-light { display: none; }\n@media (prefers-color-scheme: light) { :root:not([data-theme=\"dark\"]) #topbar #logo .logo-dark { display: none; } :root:not([data-theme=\"dark\"]) #topbar #logo .logo-light { display: block; } }\n:root[data-theme=\"light\"] #topbar #logo .logo-dark { display: none; }\n:root[data-theme=\"light\"] #topbar #logo .logo-light { display: block; }\n\n/* Right: you. */\n#topbar #login h3 { margin: 0; }\n#topbar #login h3 > a#user { display: flex; align-items: center; gap: 10px; text-decoration: none; }\n#topbar #user-avatar.avatar {\n\twidth: 44px; height: 44px; border-radius: 4px;\n\tborder: 1px solid var(--border); object-fit: cover; display: block;\n}\n#topbar .hdr-pilot { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; line-height: 1.15; }\n#topbar #user-no-track, #topbar #user-track-name { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; color: var(--foreground); }\n#topbar #user-track { display: inline-flex; align-items: center; gap: 4px; }\n#topbar .hdr-mask, #topbar .hdr-mask a, #topbar #mask {\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); text-decoration: none;\n}\n#topbar .hdr-mask a:hover, #topbar .hdr-mask a:hover #mask { color: var(--foreground); }\n#topbar .hdr-tools { display: flex; align-items: center; gap: 4px; margin-left: 4px; padding-left: 14px; border-left: 1px solid var(--border-soft); }\n#topbar .hdr-tools i { color: var(--muted-foreground); cursor: pointer; }\n#topbar .hdr-tools i:hover { color: var(--foreground); }\n#topbar .hdr-tools [data-icon]::before { font-size: 18px; }\n\n/* The mask menu anchors to the letterhead, not to a pixel offset. */\n#topbar #mask-menu { top: 64px; right: 18px; }\n\n/* Panel heads: a band under the title. */\n.gridWidget > .controls {\n\tbackground: linear-gradient(180deg, var(--popover), var(--card));\n\tborder-bottom: 1px solid var(--border);\n}\n.gridWidget, #chainMap div.node, .ui-dialog { border-radius: 3px; }\n.gridWidget { border: 1px solid var(--border); }\n\n/* Hairlines inside content take the soft rule. */\n#sigTable tbody tr, .comment { border-color: var(--border-soft); }\n\n/* ── The letterhead on a phone ───────────────────────────────────────────\n This file sorts after _override-d-phone.css, so the phone header has to\n be written here or the grid above wins. One row: system name, portrait,\n tools. The mark and the location line are desktop and tablet things. */\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 10px;\n\t\tmin-height: 0;\n\t\tpadding: 8px 12px;\n\t}\n\t#topbar > .align-center { display: none; }\n\t#topbar > .align-left { flex: 1 1 auto; flex-direction: column; align-items: flex-start; }\n\t#topbar #systemSearch { display: none; }\n\t#topbar #hdr-system { font-size: 17px; }\n\t#topbar > .align-right { flex: 0 0 auto; width: auto; justify-content: flex-end; gap: 8px; }\n\t#topbar .hdr-pilot { display: none; }\n\t#topbar #user-avatar.avatar { width: 32px; height: 32px; }\n\t#topbar .hdr-tools { margin-left: 0; padding-left: 8px; }\n\t#topbar #mask-menu { top: 52px; right: 12px; }\n}\n\n/* ── The tracking dropdown ────────────────────────────────────────────────\n account.css collapses every .avatar inside it to 1px -- a legacy trick\n from when the portrait was painted some other way -- which is why the\n character rows showed a name and no face. Portraits at a size a face\n survives, and the dropdown on the same surfaces as everything else. */\n#login #content .tracking-clone td.avatar img.avatar { width: 36px; height: 36px; border-radius: 3px; border: 1px solid var(--border); }\n#login #content #account #avatar img.avatar-lg { width: 56px; height: 56px; border-radius: 4px; border: 1px solid var(--border); }\n#login #content.dialog-like {\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 30px rgba(0,0,0,.5); padding: var(--space-2);\n}\n#login #content .triangle { display: none; }\n#login #logoutTable tbody th {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .22em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); background: transparent; border-bottom: 1px solid var(--border); text-align: left; padding: 4px 6px;\n}\n#login #content #track { border-right: 1px solid var(--border-soft); }\n#login #content #track .tracking-clone { border: 1px solid var(--border); border-radius: 3px; opacity: .7; }\n#login #content #track .tracking-clone.active { border-color: var(--primary); opacity: 1; }\n#login #content #track .tracking-clone:hover { border-color: var(--border-strong); opacity: 1; }\n#login #content table .text { color: var(--text-body); }\n#login #content table td.name.text { color: var(--foreground); }\n\n/* ── The mask as a capsule ────────────────────────────────────────────────\n Was a star glyph and the word \"Corp\" run together. A capsule: a source\n dot -- orange for corporate, void for alliance, sage for personal, dim for\n global -- and the label in the label register. */\n#topbar #mask-menu-link { display: inline-block; }\n#topbar #mask .mask {\n\tdisplay: inline-flex; align-items: center; gap: 6px;\n\theight: 18px; padding: 0 8px 0 7px;\n\tborder: 1px solid var(--border); border-radius: 999px;\n\tbackground: var(--popover);\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #mask-menu-link:hover .mask { border-color: var(--border-strong); color: var(--foreground); }\n#topbar #mask .mask i[data-icon] { width: 7px; height: 7px; border-radius: 50%; background: var(--muted-foreground); display: inline-block; }\n#topbar #mask .mask i[data-icon]::before { content: none; }\n#topbar #mask .mask i.corporate { background: var(--primary); }\n#topbar #mask .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.character { background: var(--data-good); }\n#topbar #mask .mask i.global { background: var(--muted-foreground); }\n\n/* ── The mark, larger, riding the letterhead's edge ──────────────────────\n At 46px the wordmark read as a label. It is the letterhead; it gets the\n height, and it hangs a little over the hairline into the gap above the\n panels so the header reads as a plate the mark is mounted on rather than\n a strip the mark is squeezed into. The panel area gives back the room. */\n@media (min-width: 768px) and (min-height: 600px) {\n\t/* The header keeps its height; the mark is taller than the header and\n\t hangs 14px past the hairline into the gap the panel area gives back. */\n\t#topbar { overflow: visible; height: 64px; min-height: 64px; padding-top: 0; padding-bottom: 0; }\n\t#topbar > .align-center { align-self: flex-start; position: relative; z-index: 3; }\n\t/* A pack may ask for a taller mark (logo.height); a round seal wants a\n\t little more than a wide wordmark. It rides the bar's bottom edge. */\n\t#topbar #logo img { height: 64px; margin-top: 0; filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .55)); }\n\t.gridster { padding-top: 10px; }\n}\n\n/* Below the desktop breakpoint the legacy stylesheet fixes the header to the\n viewport and nothing offsets the content, so the panels started at y=20\n underneath it (measured at 1100x700). The tablet page scrolls; the header\n stays in flow and sticks to the top as it goes. */\n@media (max-width: 1279px) {\n\t#topbar { position: sticky; top: 0; z-index: 30; }\n}\n\n/* ── \"Following you\" ─────────────────────────────────────────────────────\n Clicking the tab that is already selected deselects it, and with no tab\n selected the map roots at whichever system you are viewing. That is a\n mode, and it was invisible: the strip just showed no tab highlighted and\n the map \"kept jumping\". Name it. */\n#chainTabs:not(:has(.tab.current))::before {\n\tcontent: \"Following you\";\n\tdisplay: inline-flex; align-items: center;\n\theight: 20px; padding: 0 8px; margin-right: 6px;\n\tborder: 1px solid color-mix(in oklab, var(--primary) 55%, var(--border));\n\tborder-radius: 999px;\n\tfont-family: var(--font-mono); font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--primary);\n}\n\n/* ── The top row takes what the System panel needs ─────────────────────\n system-fit.js sets --top-row when the panel cannot hold the graph at its\n floor; otherwise the row is the 46vh the layout chose. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 46vh)) 1fr; }\n}\n\n/* ── The room lights: sun and moon on the letterhead ─────────────────── */\n#topbar .hdr-tools .themebtn {\n\tbackground: none; border: 1px solid var(--border); border-radius: 3px; cursor: pointer;\n\tcolor: var(--muted-foreground); font-size: 14px; line-height: 1; padding: 4px 8px;\n\theight: 26px; display: inline-flex; align-items: center; flex: 0 0 auto;\n\tfont-family: var(--font-ui);\n}\n#topbar .hdr-tools .themebtn:hover { color: var(--primary); border-color: var(--primary); }\n\n/* ── The pilot dropdown: cards, not nested tables ──────────────────────\n The tracking list is a table per character (avatar cell spanning five\n rows of name, system, station, ship, ship name) inside a table inside a\n table. Rendered as-is the portrait floated over the name and the eye and\n ship icons drifted down the middle. The table skeleton stays (tracking.js\n clones it); its rows are flattened and each character is laid out as a\n card: portrait, status and controls in a narrow left column, the five\n text lines stacked beside it. */\n#login #content #logoutTable { border-collapse: separate; border-spacing: 0; }\n#login #content #logoutTable > tbody > tr > td { vertical-align: top; padding: 0 12px; }\n#login #content #logoutTable > tbody > tr > td:first-child { padding-left: 0; }\n#login #content #logoutTable > tbody > tr > td:last-child { padding-right: 0; }\n#login #content #track, #login #content #account { min-width: 260px; }\n#login #content #track th, #login #content #account th { text-align: left; padding: 0 0 6px; }\n#login #content #tracking { display: flex; flex-direction: column; gap: 6px; padding: 0; }\n\n#login #content #track .tracking-clone,\n#login #content #track .tracking-clone > tbody { display: block; }\n#login #content #track .tracking-clone > tbody > tr { display: contents; }\n#login #content #track .tracking-clone > tbody {\n\tdisplay: grid;\n\tgrid-template-columns: 44px minmax(0, 1fr);\n\tgrid-template-rows: repeat(5, auto);\n\tcolumn-gap: 10px; row-gap: 1px;\n\tpadding: 8px 10px;\n}\n#login #content #track .tracking-clone td { padding: 0; border: 0; line-height: 1.3; }\n#login #content #track .tracking-clone td.avatar {\n\tgrid-column: 1; grid-row: 1 / span 5;\n\tdisplay: flex; flex-direction: column; align-items: center; gap: 4px;\n}\n#login #content #track .tracking-clone td.avatar img.avatar { display: block; }\n#login #content #track .tracking-clone td.avatar hr.bar { width: 36px; margin: 0; height: 3px; border: 0; border-radius: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group { display: flex; gap: 6px; margin-top: 2px; }\n#login #content #track .tracking-clone td.avatar .control-group i { font-size: 14px; color: var(--muted-foreground); cursor: pointer; }\n#login #content #track .tracking-clone td.avatar .control-group i.active,\n#login #content #track .tracking-clone td.avatar .control-group i:hover { color: var(--primary); }\n#login #content #track .tracking-clone td.name { grid-column: 2; grid-row: 1; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.system { grid-column: 2; grid-row: 2; }\n#login #content #track .tracking-clone td.station { grid-column: 2; grid-row: 3; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.ship { grid-column: 2; grid-row: 4; }\n#login #content #track .tracking-clone td.shipname { grid-column: 2; grid-row: 5; color: var(--muted-foreground); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n#login #content #track .tracking-clone td.text:empty::before,\n#login #content #track .tracking-clone td.text:has(> :empty):not(:has(*))::before { content: none; }\n#login #content #track .tracking-clone i.alert { grid-column: 2; grid-row: 1; justify-self: end; }\n\n/* The signed-in character: portrait beside name and corporation. */\n#login #content #account, #login #content #account > tbody { display: block; }\n#login #content #account > tbody { display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: 12px; align-items: start; }\n#login #content #account > tbody > tr { display: contents; }\n#login #content #account th { grid-column: 1 / -1; }\n#login #content #account td { padding: 0; border: 0; }\n#login #content #account td#avatar { grid-column: 1; grid-row: 2 / span 2; }\n#login #content #account td#characterName { grid-column: 2; grid-row: 2; font-weight: 600; padding-top: 4px; }\n#login #content #account td.text:not(#characterName) { grid-column: 2; grid-row: 3; color: var(--muted-foreground); }\n#login #content #account td:empty { display: none; }\n\n/* Buttons row. */\n#login #content #logoutTable > tbody > tr:last-child > td { padding-top: 12px; }\n#login #content #logoutTable > tbody > tr:last-child > td:last-child { text-align: right; }\n\n/* ── The mask menu: a popover, in the capsule's language ──────────────\n Was orange links stacked with a stray glyph each. Rows: the same source\n dot the capsule wears, the label, and a tick on the one you are in.\n Manage and admin sit under a rule in the quiet register. */\n#topbar #mask-menu {\n\tmin-width: 176px; padding: 4px 0;\n\tbackground: var(--popover); border: 1px solid var(--border); border-radius: 4px;\n\tbox-shadow: 0 8px 24px rgba(0,0,0,.45);\n}\n#topbar #mask-menu .triangle { display: none; }\n#topbar #mask-menu a {\n\tdisplay: flex; align-items: center; gap: 8px;\n\tpadding: 6px 12px; margin: 0;\n\tcolor: var(--foreground); font-size: var(--fs-sm); font-weight: 500; text-decoration: none;\n\tline-height: 1.2;\n}\n#topbar #mask-menu a:hover { background: var(--muted); color: var(--foreground); }\n#topbar #mask-menu a .mask { display: inline-flex; align-items: center; gap: 8px; color: inherit; font-size: inherit; }\n#topbar #mask-menu a .mask i[data-icon] {\n\twidth: 8px; height: 8px; border-radius: 50%; padding: 0; margin: 0; flex: 0 0 auto;\n\tdisplay: inline-block; transform: none; background: var(--muted-foreground);\n}\n#topbar #mask-menu a .mask i[data-icon]::before { content: none; }\n#topbar #mask-menu a .mask i.global { background: var(--muted-foreground); }\n#topbar #mask-menu a .mask i.personal,\n#topbar #mask-menu a .mask i.character { background: var(--data-good); }\n#topbar #mask-menu a .mask i.corporate { background: var(--primary); }\n#topbar #mask-menu a .mask i.alliance { background: var(--data-info); }\n#topbar #mask .mask i.personal { background: var(--data-good); }\n#topbar #mask-menu a.active::after {\n\tcontent: \"\\2713\"; margin-left: auto; color: var(--primary); font-size: 12px; font-weight: 700;\n}\n#topbar #mask-menu hr.bar { height: 1px; border: 0; margin: 4px 0; background: var(--border); }\n#topbar #mask-menu #mask-link, #topbar #mask-menu #admin {\n\tcolor: var(--muted-foreground); font-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n}\n#topbar #mask-menu #mask-link:hover, #topbar #mask-menu #admin:hover { color: var(--foreground); }\n\n/* The eye and ship toggles sit in a row under the portrait. */\n#login #content #track .tracking-clone td.avatar .control-group { width: auto; min-width: 36px; justify-content: center; }\n\n/* ── The ship, under the name ─────────────────────────────────────────── */\n#topbar .hdr-line2 { display: flex; align-items: center; gap: 8px; }\n#topbar .hdr-ship {\n\tfont-family: var(--font-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; line-height: 18px;\n}\n#topbar .hdr-ship.hidden { display: none; }\n\n/* ── Phone header: the mask dot is a dot, and the name gives way ───────\n The coarse-pointer rule makes every #topbar i a 44px target; the mask\n capsule's source dot is an i too, and became a 44px orange disc beside\n the avatar. And the system name did not shrink, so the pilot block sat\n on top of it. */\n@media (pointer: coarse) {\n\t#topbar #mask .mask i[data-icon], #topbar #mask-menu a .mask i[data-icon] {\n\t\tmin-width: 0; min-height: 0; width: 7px; height: 7px; padding: 0;\n\t}\n}\n@media (max-width: 767px), (max-height: 599px) {\n\t#topbar > .align-left { min-width: 0; }\n\t#topbar #hdr-system { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\t#topbar > .align-right { flex-shrink: 0; }\n\t#topbar #login h3 > a#user { gap: 6px; }\n}\n\n/* ── Install tip (phones) ─────────────────────────────────────────────── */\n#install-tip {\n\tdisplay: flex; align-items: center; gap: 10px;\n\tpadding: 8px 12px;\n\tbackground: color-mix(in oklab, var(--primary) 14%, var(--card));\n\tborder-bottom: 1px solid var(--border);\n\tfont-size: var(--fs-sm); color: var(--foreground);\n}\n#install-tip .tip-text { flex: 1 1 auto; min-width: 0; }\n#install-tip button { min-height: 32px; border-radius: 4px; font: inherit; cursor: pointer; }\n#install-tip .tip-install { background: var(--primary); color: #1b1207; border: 0; padding: 0 12px; font-weight: 600; }\n#install-tip .tip-close { background: none; border: 0; color: var(--muted-foreground); font-size: 18px; line-height: 1; padding: 0 6px; }\n\n/* ── The top row: smaller by default, and it does not follow the system ──\n 40vh unless a visited system needed more (system-fit.js remembers the\n largest, per window height). The chain gets the rest. */\n@media (min-width: 960px) {\n\t.gridster > ul { grid-template-rows: minmax(240px, var(--top-row, 40vh)) 1fr; }\n}\n\n/* ── Range in the header, links beside the legend ─────────────────────── */\n#infoWidget > .controls .bar-right #sys-range {\n\tdisplay: inline-flex; align-items: center; gap: 2px; margin-right: 6px;\n\tpadding-right: 8px; border-right: 1px solid var(--border-soft);\n}\n#infoWidget > .controls .bar-right #sys-range a {\n\tdisplay: inline-flex; align-items: center; height: 22px; padding: 0 6px;\n\tborder-radius: 3px; text-decoration: none;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .16em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#infoWidget > .controls .bar-right #sys-range a:hover { color: var(--foreground); background: var(--muted); }\n#infoWidget > .controls .bar-right #sys-range a.active { color: var(--primary); background: var(--muted); }\n#activityGraphControls { flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-3); }\n#activityGraphControls #infoLinks.in-legend-row { margin: 0 0 0 auto; padding: 0; border: 0; }\n#activityGraphControls #activityLegend { margin-right: 0; }\n\n/* Legend and links on one row: short chip labels, tighter tracking. */\n#activityLegend { gap: 2px 4px; }\n#activityLegend .legend-chip { padding: 0 5px 0 4px; letter-spacing: .06em; gap: 5px; }\n#activityGraphControls #infoLinks.in-legend-row { gap: 8px; }\n#activityGraphControls #infoLinks.in-legend-row a { letter-spacing: .12em; padding: 0; }\n\n/* ── Brand packs ─────────────────────────────────────────────────────────\n A pack without a logo image shows the product name in the display face. */\n#topbar #logo .logo-text { font-family: var(--font-display); font-weight: 700; font-size: 22px; letter-spacing: .02em; color: var(--foreground); line-height: 64px; }\n\n/* ── Typographic lockup: a small line, the name, a small line ───────────\n Set in the page's own fonts (an SVG cannot reach them). The name\n takes the brand face and the accent; the small lines the label register;\n optional rule-and-star flourishes either side of the name. */\n#topbar #logo .logo-lockup { display: inline-flex; flex-direction: column; align-items: center; gap: 3px; line-height: 1; padding: 6px 0; }\n#topbar #logo .lockup-small {\n\tfont-family: var(--font-mono); font-size: 8.5px; font-weight: 500; letter-spacing: .26em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#topbar #logo .lockup-main {\n\tdisplay: inline-flex; align-items: center; gap: 10px;\n\tfont-family: var(--font-brand, var(--font-display)); font-size: 19px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;\n\tcolor: var(--primary); padding-left: .2em; /* balances the trailing tracking */\n}\n#topbar #logo .lockup-main.has-flourish::before,\n#topbar #logo .lockup-main.has-flourish::after {\n\tcontent: \"\"; width: 44px; height: 2px; background: var(--primary); flex: 0 0 auto;\n\t-webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px) ; mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px);\n}\n#topbar #logo .lockup-main.has-flourish::before { -webkit-mask: linear-gradient(90deg, #000 0 26px, transparent 26px 30px, #000 30px); }\n\n/* ── Signature dialog: compact, sides labelled in the gutter ──────────────\n Upstream's dialog was tighter and named each wormhole side with a\n vertical label down the left; the rebuild had replaced those with three\n horizontal headings (WORMHOLE, SIDE, OTHER SIDE) and looser\n rows, and grew a third taller. Back to the gutter, minus the headings. */\n#dialog-signature #wormhole::before,\n#dialog-signature #wormhole .side + .side::before { content: none; }\n#dialog-signature #wormhole { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature #wormhole .side { position: relative; padding-left: 20px; min-height: 0; }\n#dialog-signature #wormhole .side + .side { margin-top: 4px; padding-top: 8px; border-top: 1px solid var(--border); }\n#dialog-signature .sideLabel {\n\tposition: absolute; left: 0; top: 0; bottom: 5px; width: 14px;\n\tmargin: 0; padding: 0; border: 0;\n\tdisplay: flex; align-items: center; justify-content: center;\n\twriting-mode: vertical-rl; transform: rotate(180deg);\n\tfont-family: var(--font-mono); font-size: 9.5px; font-weight: 500; letter-spacing: .18em; text-transform: uppercase;\n\tcolor: var(--muted-foreground); white-space: nowrap; text-align: center;\n}\n#dialog-signature #wormhole .side + .side .sideLabel { top: 8px; }\n#dialog-signature .row { margin: 0 0 5px; gap: 6px; }\n#dialog-signature .row > .label:first-child { flex: 0 0 50px; }\n#dialog-signature #wormhole .row > .label:first-child { flex-basis: 44px; }\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button { min-height: 26px; }\n#dialog-signature .mini-selector + label { min-height: 24px; padding-top: 0; padding-bottom: 0; }\n/* signatures.css sizes the two labels by position (90px / 135px wide, one\n hung 70px below its side) with an id-heavier selector; match it. */\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel {\n\twidth: 14px; bottom: 5px; text-align: center; transform-origin: 50% 50%;\n}\n#dialog-signature #wormhole .side:last-child .sideLabel { top: 8px; }\n/* Fields read as fields: the name inputs had the dialog's own ground and a\n border one step from it, so they were invisible until focused. And the\n nine class chips plus divider fit the row. */\n#dialog-signature input[type=\"text\"] { background: var(--input); border-color: var(--border); }\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); }\n#dialog-signature .quickSelectBar { gap: 3px; }\n#dialog-signature .quickSelectBar button { min-width: 24px; padding: 0 4px; }\n\n/* ══ Signature dialog: the design pass ═══════════════════════════════════\n One label column across the whole form; the side gutter is a column of\n its own, so the top rows are indented to match the wormhole rows. Life\n and Mass are connected segmented controls, the class chips two even\n groups, type and leads each one control with its menu button attached.\n ─────────────────────────────────────────────────────────────────────── */\n.ui-dialog:has(#dialog-signature) { width: min(392px, calc(100vw - 2rem)) !important; }\n#dialog-signature #form-signature > .row,\n#dialog-signature #site > .row { padding-left: 20px; }\n\n#dialog-signature .row { margin: 0 0 6px; gap: 6px; align-items: center; }\n#dialog-signature .row > .label:first-child,\n#dialog-signature #wormhole .row > .label:first-child {\n\tflex: 0 0 54px; text-align: right;\n\tfont-family: var(--font-mono); font-size: 10px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase;\n\tcolor: var(--muted-foreground);\n}\n#dialog-signature .row > .label:not(:first-child) { font-family: var(--font-mono); color: var(--muted-foreground); }\n\n/* Fields: one height, one ground, one edge. Ids and hull types in the mono. */\n#dialog-signature input[type=\"text\"], #dialog-signature select,\n#dialog-signature .ui-selectmenu-button {\n\tmin-height: 26px; height: 26px; box-sizing: border-box;\n\tbackground: var(--input); border: 1px solid var(--border); border-radius: 3px;\n\tfont-size: 12px; color: var(--foreground);\n}\n#dialog-signature input[type=\"text\"]:focus { border-color: var(--primary); outline: 0; box-shadow: 0 0 0 2px color-mix(in oklab, var(--primary) 30%, transparent); }\n#dialog-signature .signatureID { width: 46px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature .wormholeType { width: 58px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; }\n#dialog-signature [name=\"signatureName\"], #dialog-signature [name=\"wormholeName\"] { flex: 1 1 auto; min-width: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button { min-width: 112px; display: inline-flex; align-items: center; }\n\n/* Comboboxes: the input and its menu button are one control. */\n#dialog-signature .custom-combobox { display: inline-flex; align-items: stretch; }\n#dialog-signature .custom-combobox input { border-top-right-radius: 0; border-bottom-right-radius: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle {\n\tposition: static; margin: 0 0 0 -1px; width: 24px; height: 26px; padding: 0;\n\tborder: 1px solid var(--border); border-radius: 0 3px 3px 0; background: var(--muted); color: var(--muted-foreground);\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .custom-combobox .custom-combobox-toggle:hover { color: var(--foreground); border-color: var(--border-strong); }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { flex: 1 1 auto; display: inline-flex; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] .custom-combobox { flex: 1 1 auto; }\n#dialog-signature .leadsTo { width: auto; flex: 1 1 auto; min-width: 0; }\n\n/* Lifetime: one boxed control, numbers in the mono. */\n#dialog-signature .duration-picker { height: 26px; padding: 0 8px; gap: 4px; border-color: var(--border); background: var(--input); }\n#dialog-signature .duration-picker input { width: 22px; text-align: center; font-family: var(--font-mono); font-size: 12px; height: auto; min-height: 0; border: 0; background: transparent; }\n#dialog-signature .duration-picker span, #dialog-signature .duration-picker label { font-family: var(--font-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-foreground); }\n\n/* Life and Mass: segmented. The chosen state is filled in its colour. */\n#dialog-signature .mini-selector + label {\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n\tmin-height: 26px; height: 26px; padding: 0 12px; margin: 0 0 0 -1px;\n\tborder: 1px solid var(--border); border-radius: 0; background: var(--input);\n\tfont-size: 12px; font-weight: 500; color: var(--muted-foreground); line-height: 1;\n}\n#dialog-signature .mini-selector:first-of-type + label { border-radius: 3px 0 0 3px; margin-left: 0; }\n#dialog-signature .row > .mini-selector + label:last-child { border-radius: 0 3px 3px 0; }\n#dialog-signature .mini-selector + label:hover { color: var(--foreground); background: var(--muted); border-color: var(--border); }\n#dialog-signature .mini-selector:checked + label { position: relative; z-index: 1; border-color: transparent; }\n#dialog-signature .mini-selector:checked + label.stable { background: var(--data-good); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.destab { background: var(--data-warn); color: #12100e; }\n#dialog-signature .mini-selector:checked + label.critical { background: var(--data-critical); color: #ffffff; }\n\n/* Class and hull chips: two even groups, the text divider gone. */\n#dialog-signature .quickSelectBar { display: inline-flex; flex-wrap: nowrap; gap: 3px; font-size: 0; margin: 0; }\n#dialog-signature .row > .quickSelectBar { flex-basis: 100%; margin-left: 60px; }\n#dialog-signature .quickSelectBar button {\n\tmin-width: 26px; height: 22px; padding: 0 5px; border: 1px solid var(--border); border-radius: 3px;\n\tbackground: var(--input); font-family: var(--font-mono); font-size: 10px; font-weight: 600; letter-spacing: .04em; line-height: 1;\n\tdisplay: inline-flex; align-items: center; justify-content: center;\n}\n#dialog-signature .quickSelectBar button:hover { border-color: var(--border-strong); background: var(--muted); }\n#dialog-signature #leadsToQuickBar button[value=\"High-Sec\"] { margin-left: 8px; }\n#dialog-signature .wormholeTypeQuickSelect { margin-left: 0; flex-basis: auto; }\n#dialog-signature .wormholeTypeQuickSelect:empty { display: none; }\n\n/* The side gutter, one column wide, the labels centred in it. */\n#dialog-signature #wormhole .side { padding-left: 20px; }\n#dialog-signature .sideLabel,\n#dialog-signature #wormhole .side:first-child .sideLabel,\n#dialog-signature #wormhole .side:last-child .sideLabel { width: 14px; left: 0; font-size: 9px; letter-spacing: .2em; }\n\n/* A missing required field: the edge in the danger colour, no halo. */\n#dialog-signature .sig-missing, #dialog-signature .sig-missing:focus { border-color: var(--destructive); box-shadow: none; }\n/* Combobox menu button: its sprite icon was absolutely positioned against\n the wrapper, so it landed inside the input. The button is the positioned\n box, the sprite is gone, and a chevron is drawn in the current colour. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { position: relative; text-indent: 0; overflow: hidden; }\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-icon,\n#dialog-signature .custom-combobox .custom-combobox-toggle .ui-button-icon-space { display: none; }\n#dialog-signature .custom-combobox .custom-combobox-toggle::after {\n\tcontent: \"\"; width: 6px; height: 6px; margin-top: -3px;\n\tborder-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg);\n}\n/* The type menu: text first, chevron at the right edge. */\n#dialog-signature #signatureType .ui-selectmenu-button { display: inline-flex; align-items: center; gap: 6px; padding: 0 8px; width: auto !important; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-text { flex: 1 1 auto; margin: 0; }\n#dialog-signature #signatureType .ui-selectmenu-button .ui-selectmenu-icon { order: 2; margin: 0; position: static; }\n/* Lifetime: the duration picker's blocks in one boxed control, numbers in the mono. */\n#dialog-signature .bdp-input {\n\tdisplay: inline-flex; align-items: center; gap: 12px; height: 26px; padding: 0 10px;\n\tborder: 1px solid var(--border); border-radius: 3px; background: var(--input);\n}\n#dialog-signature .bdp-block { display: inline-flex; align-items: baseline; gap: 4px; }\n#dialog-signature .bdp-block br { display: none; }\n#dialog-signature .bdp-block a { text-decoration: none; }\n#dialog-signature .bdp-block a span { font-family: var(--font-mono); font-size: 13px !important; font-weight: 500; color: var(--foreground); line-height: 1; }\n#dialog-signature .bdp-block a:hover span { color: var(--primary); }\n#dialog-signature .bdp-block .bdp-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-foreground); }\n/* The picker's seconds block is hidden by class; keep it that way. The\n control then fits the LENGTH row. */\n#dialog-signature .bdp-block.hidden { display: none !important; }\n#dialog-signature .bdp-input { gap: 10px; padding: 0 8px; }\n/* Combobox: input and button touch, and the pair never outgrows the row. */\n#dialog-signature .custom-combobox { gap: 0; max-width: 100%; }\n#dialog-signature .custom-combobox > * { margin: 0; }\n#dialog-signature .custom-combobox .custom-combobox-toggle { margin-left: -1px; flex: 0 0 24px; }\n#dialog-signature .custom-combobox input.leadsTo { flex: 1 1 0; width: 0; min-width: 0; }\n#dialog-signature [data-autocomplete=\"sigSystems\"] { max-width: 100%; }\n/* signatures.css offsets the toggle with right:-20px for its absolute\n layout; on a relative box that is a 20px shove. */\n#dialog-signature .custom-combobox .custom-combobox-toggle { right: auto; left: auto; top: auto; bottom: auto; width: 24px; }\n\n/* Phone: the panel bar has no room for the range control beside the\n panel buttons -- the close button was wrapping onto a second line. The\n graph still shows the last 24h. */\n@media (max-width: 767px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n}\n\n/* ══ Feedback round (first corp feedback, 2026-09-04) ════════════════════ */\n\n/* ── 1. Chain nodes: the same card, half the height ──────────────────────\n The class chip sat on its own line above the name and the statics hung\n half below the card; at zoom 1.2 that was 173x70 with an 84px row pitch\n against upstream's 30px pill. Two lines: chip + name + pips, then hull or\n sig id + statics inline. About 120x40 at zoom 1. Security reads at full\n strength on the left edge and in the chip, in both rooms. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, 1fr) auto;\n\tgrid-template-areas: \"class name pips\" \"type type statics\";\n\talign-items: center; column-gap: 5px; row-gap: 2px;\n\twidth: 120px; min-height: 0; height: auto !important;\n\tpadding: 4px 7px 4px 6px; margin: 0;\n\tborder-left: 3px solid var(--node-edge);\n\tbox-shadow: 0 2px 8px rgba(0, 0, 0, .35);\n\toverflow: visible;\n}\n#chainMap div.node > .nodeClass { grid-area: class; margin: 0; order: 0; }\n#chainMap div.node > .nodeSystem { grid-area: name; margin: 0; padding: 0; order: 0; font-size: 12px; line-height: 16px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; margin: 0; order: 0; gap: 2px; font-size: 8px; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; order: 0; min-height: 0; font-size: 10px; line-height: 14px; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: .04em; }\n#chainMap div.node > .statics { grid-area: statics; position: static; transform: none; margin: 0; gap: 3px; justify-content: flex-end; order: 0; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 14px; min-width: 18px; padding: 0 5px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > .nodeClass > span { height: 15px; padding: 0 5px; font-size: 10px; }\n#chainMap div.node > .nodeIcons { top: 2px; right: 4px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name pips\"; }\n#chainMap div.loop { width: 120px; padding: 4px 7px; }\n\n/* Security and class on the edge, full strength; tokens carry both rooms. */\n#chainMap div.greenNode.node { border-left-color: var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--data-critical); }\n#chainMap div.node:has(> .nodeClass .wh),\n#chainMap div.node:has(> .nodeClass .class-1), #chainMap div.node:has(> .nodeClass .class-2), #chainMap div.node:has(> .nodeClass .class-3) { border-left-color: var(--data-info); }\n#chainMap div.node:has(> .nodeClass .class-4), #chainMap div.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap div.node:has(> .nodeClass .class-12) { border-left-color: var(--data-loot-gold); }\n#chainMap div.node:has(> .nodeClass .class-15), #chainMap div.node:has(> .nodeClass .class-16), #chainMap div.node:has(> .nodeClass .class-17) { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The class tint stays but reads as a ground, not a wash. */\n#chainMap div.redNode.node { background-color: color-mix(in oklab, var(--data-critical) 10%, var(--node-surface)); }\n#chainMap div.yellowNode.node { background-color: color-mix(in oklab, var(--data-loot-orange) 10%, var(--node-surface)); }\n#chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--data-good) 10%, var(--node-surface)); }\n\n/* ── 4. The chain pans with the wheel again ───────────────────────────────\n #chainParent is the widget's .content, so the panel rule that hides\n overflow outranked its own overflow: auto. Drag-to-pan (dragscroll) had\n kept working, which is why it felt like drag became the only way. */\n#chainWidget > #chainParent.content { overflow: auto; }\n\n/* ── 5. Signature columns: header and cells share one alignment ──────────\n The cells carry the per-column alignment classes from Settings; the\n header now wears the same classes (sig-align.js), so the two agree. */\n#sigTable th, #sigTable td { text-align: left; }\n#sigTable .centerAlign { text-align: center; }\n#sigTable .rightAlign { text-align: right; }\n#sigTable .leftAlign { text-align: left; }\n\n/* ── 7. Three columns from 960px; what gives at the narrow end ─────────── */\n@media (min-width: 960px) and (max-width: 1099px) {\n\t#infoWidget > .controls .bar-right #sys-range { display: none; }\n\t#sigTable th:nth-child(5), #sigTable td:nth-child(5),\n\t#sigTable th:nth-child(6), #sigTable td:nth-child(6) { width: 3.2rem; padding-left: 2px; padding-right: 4px; }\n\t#sigTable th:nth-child(2), #sigTable td:nth-child(2) { width: 4.6rem; }\n}\n\n/* ── 6. Phone: a signature is two lines, nothing hidden ─────────────────── */\n@media (max-width: 767px) {\n\t#sigTable thead { display: none; }\n\t#sigTable tbody tr {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto minmax(0, 1fr) auto auto;\n\t\tgrid-template-areas: \"id type type age\" \"leads leads life mass\";\n\t\tcolumn-gap: 10px; row-gap: 2px;\n\t\tpadding: 7px 10px;\n\t}\n\t#sigTable tbody td { display: block; width: auto !important; padding: 0 !important; height: auto; line-height: 18px; text-align: left !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n\t#sigTable tbody td:nth-child(1) { grid-area: id; font-weight: 600; }\n\t#sigTable tbody td:nth-child(2) { grid-area: type; }\n\t#sigTable tbody td:nth-child(3) { grid-area: age; text-align: right !important; }\n\t#sigTable tbody td:nth-child(4) { grid-area: leads; }\n\t#sigTable tbody td:nth-child(5) { grid-area: life; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:nth-child(6) { grid-area: mass; text-align: right !important; font-size: var(--fs-xs); color: var(--muted-foreground); }\n\t#sigTable tbody td:empty { display: none; }\n}\n/* Older per-column rules (an id and a pseudo-class) outranked the shared\n alignment classes on the header; match them with the section in the\n selector. And the phone block had hidden Life and Mass outright. */\n#sigTable thead th.leftAlign, #sigTable tbody td.leftAlign { text-align: left; }\n#sigTable thead th.centerAlign, #sigTable tbody td.centerAlign { text-align: center; }\n#sigTable thead th.rightAlign, #sigTable tbody td.rightAlign { text-align: right; }\n@media (max-width: 767px) {\n\t#sigTable tbody tr > td:nth-child(5), #sigTable tbody tr > td:nth-child(6) { display: block !important; }\n\t#sigTable tbody tr > td:empty { display: none !important; }\n}\n/* The name was being cut to one letter: the pips' non-breaking spaces and\n an old right padding on the name ate the column. The card sizes to its\n name between 118 and 168px, as upstream's pill did; the pips are dots. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: auto; min-width: 118px; max-width: 168px; }\n#chainMap div.node > .nodeSystem { padding-right: 0; overflow: visible; text-overflow: clip; }\n#chainMap div.node > .nodeActivity { font-size: 0; gap: 3px; }\n#chainMap div.node > .nodeActivity > span { font-size: 8px; line-height: 8px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.loop { width: auto; min-width: 118px; }\n/* The name column: sized to the name (the card grows to 168px), and the\n older h4 rule that ellipsised it is matched at its own specificity. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto auto minmax(0, auto); }\n#chainMap div.node > h4.nodeSystem { padding-right: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 120px; height: auto; line-height: 16px; }\n/* k-space security on the edge, both rooms, from the same tokens the chips use. */\n#chainMap div.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* The name track sizes to the name (max-content), so the card grows with\n it up to its cap; overflow on the h4 had made its automatic minimum 0. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-columns: auto max-content auto; }\n/* Flares (a colour a pilot sets on a node from its menu) are not security:\n they tint the ground and the top edge; the left edge stays security. */\n#chainMap div.greenNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-good); }\n#chainMap div.yellowNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-loot-orange); }\n#chainMap div.redNode.node { border-left-color: var(--node-edge); border-top: 2px solid var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .hisec), #chainMap div.yellowNode.node:has(> .nodeClass .hisec), #chainMap div.redNode.node:has(> .nodeClass .hisec) { border-left-color: var(--data-good); }\n#chainMap div.greenNode.node:has(> .nodeClass .lowsec), #chainMap div.yellowNode.node:has(> .nodeClass .lowsec), #chainMap div.redNode.node:has(> .nodeClass .lowsec) { border-left-color: var(--data-loot-orange); }\n#chainMap div.greenNode.node:has(> .nodeClass .nullsec), #chainMap div.yellowNode.node:has(> .nodeClass .nullsec), #chainMap div.redNode.node:has(> .nodeClass .nullsec) { border-left-color: var(--data-critical); }\n#chainMap div.greenNode.node:has(> .nodeClass .wh), #chainMap div.yellowNode.node:has(> .nodeClass .wh), #chainMap div.redNode.node:has(> .nodeClass .wh) { border-left-color: var(--data-info); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-4), #chainMap div.greenNode.node:has(> .nodeClass .class-5),\n#chainMap div.yellowNode.node:has(> .nodeClass .class-4), #chainMap div.yellowNode.node:has(> .nodeClass .class-5),\n#chainMap div.redNode.node:has(> .nodeClass .class-4), #chainMap div.redNode.node:has(> .nodeClass .class-5) { border-left-color: var(--data-loot-purple); }\n#chainMap div.greenNode.node:has(> .nodeClass .class-6), #chainMap div.yellowNode.node:has(> .nodeClass .class-6), #chainMap div.redNode.node:has(> .nodeClass .class-6) { border-left-color: var(--data-loot-pink); }\n#chainMap .currentNode > div.node { border-left-color: var(--primary); }\n/* Security on the left edge from classes the node now carries itself\n (sec-hisec / sec-lowsec / sec-nullsec / sec-wh + cls-N), so no :has()\n is needed and the build cannot drop it. The card shrink-wraps its name. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { width: fit-content; margin: 0 auto; }\n#chainMap div.node.sec-hisec, #chainMap div.greenNode.node.sec-hisec, #chainMap div.yellowNode.node.sec-hisec, #chainMap div.redNode.node.sec-hisec { border-left-color: var(--data-good); }\n#chainMap div.node.sec-lowsec, #chainMap div.greenNode.node.sec-lowsec, #chainMap div.yellowNode.node.sec-lowsec, #chainMap div.redNode.node.sec-lowsec { border-left-color: var(--data-loot-orange); }\n#chainMap div.node.sec-nullsec, #chainMap div.greenNode.node.sec-nullsec, #chainMap div.yellowNode.node.sec-nullsec, #chainMap div.redNode.node.sec-nullsec { border-left-color: var(--data-critical); }\n#chainMap div.node.sec-triglavian, #chainMap div.greenNode.node.sec-triglavian, #chainMap div.yellowNode.node.sec-triglavian, #chainMap div.redNode.node.sec-triglavian { border-left-color: var(--data-loot-red); }\n#chainMap div.node.sec-wh, #chainMap div.greenNode.node.sec-wh, #chainMap div.yellowNode.node.sec-wh, #chainMap div.redNode.node.sec-wh { border-left-color: var(--data-info); }\n#chainMap div.node.cls-4, #chainMap div.node.cls-5, #chainMap div.greenNode.node.cls-4, #chainMap div.greenNode.node.cls-5, #chainMap div.yellowNode.node.cls-4, #chainMap div.yellowNode.node.cls-5, #chainMap div.redNode.node.cls-4, #chainMap div.redNode.node.cls-5 { border-left-color: var(--data-loot-purple); }\n#chainMap div.node.cls-6, #chainMap div.greenNode.node.cls-6, #chainMap div.yellowNode.node.cls-6, #chainMap div.redNode.node.cls-6 { border-left-color: var(--data-loot-pink); }\n#chainMap div.node.cls-12, #chainMap div.greenNode.node.cls-12, #chainMap div.yellowNode.node.cls-12, #chainMap div.redNode.node.cls-12 { border-left-color: var(--data-loot-gold); }\n#chainMap div.node.cls-15, #chainMap div.node.cls-16, #chainMap div.node.cls-17 { border-left-color: var(--data-loot-red); }\n#chainMap .currentNode > div.node, #chainMap .currentNode > div.node.sec-hisec, #chainMap .currentNode > div.node.sec-wh { border-left-color: var(--primary); }\n/* Chrome trimmed so the width is the name's, not the card's. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { column-gap: 4px; padding: 3px 6px 3px 5px; min-width: 104px; }\n#chainMap div.node > .nodeClass > span { padding: 0 4px; height: 14px; }\n#chainMap div.node > .nodeActivity { gap: 2px; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n/* Leads To is the column that takes the table's slack; centred text in it\n drifts away from Age. Upstream pinned it left whatever the setting. */\n#sigTable thead th:nth-child(4), #sigTable tbody td:nth-child(4),\n#sigTable thead th:nth-child(4).centerAlign, #sigTable tbody td:nth-child(4).centerAlign,\n#sigTable thead th:nth-child(4).rightAlign, #sigTable tbody td:nth-child(4).rightAlign { text-align: left; }\n/* The class chip, top-left, filled in its class colour with white text --\n hisec green, lowsec orange, nullsec red, C1-3 blue, C4-5 purple, C6 pink,\n Thera gold, drifter red -- as upstream coloured its nodes. A later rule\n had been greying the chip's currentColor. Same tokens in both rooms. */\n#chainMap div.node > h4.nodeClass > span {\n\tbackground: var(--node-edge); color: #fff; -webkit-text-fill-color: #fff;\n\tfont-weight: 700; letter-spacing: .04em;\n}\n#chainMap div.node > h4.nodeClass > span.hisec { background: var(--data-good); }\n#chainMap div.node > h4.nodeClass > span.lowsec { background: var(--data-loot-orange); }\n#chainMap div.node > h4.nodeClass > span.nullsec { background: var(--data-critical); }\n#chainMap div.node > h4.nodeClass > span.triglavian { background: var(--data-loot-red); }\n#chainMap div.node > h4.nodeClass > span.wh { background: var(--data-info); }\n#chainMap div.node > h4.nodeClass > span.class-4, #chainMap div.node > h4.nodeClass > span.class-5 { background: var(--data-loot-purple); }\n#chainMap div.node > h4.nodeClass > span.class-6 { background: var(--data-loot-pink); }\n#chainMap div.node > h4.nodeClass > span.class-12 { background: var(--data-loot-gold); color: #1b1b1b; -webkit-text-fill-color: #1b1b1b; }\n#chainMap div.node > h4.nodeClass > span.class-15, #chainMap div.node > h4.nodeClass > span.class-16, #chainMap div.node > h4.nodeClass > span.class-17 { background: var(--data-loot-red); }\n\n/* ── Statics span the second row and wrap; three capsules no longer run\n off the edge (they sat in the column the activity pips size). ───────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { grid-template-areas: \"class name pips\" \"type statics statics\"; }\n#chainMap div.node > .nodeType { white-space: nowrap; }\n#chainMap div.node > .statics { flex-wrap: wrap; justify-content: flex-end; row-gap: 2px; min-width: 0; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name pips\" \"statics statics statics\"; }\n\n/* ── Flares breathe. ──────────────────────────────────────────────────────\n As Aperture's underglow: a blurred pad in the flare colour behind the\n card, scaling 0.96 -> 1.06 and 28% -> 80% opacity on a 1.4s cycle. The\n card itself keeps its security edge and a faint tint; the top edge is\n gone. Still under reduced-motion. */\n@keyframes flare-glow {\n\t0%, 100% { opacity: .28; transform: scale(.96); }\n\t50% { opacity: .8; transform: scale(1.06); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { position: relative; z-index: 0; border-top-width: 1px; border-top-color: var(--node-edge); }\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before {\n\tcontent: \"\"; position: absolute; inset: -3px; z-index: -1; border-radius: inherit;\n\tbackground: var(--flare, transparent); filter: blur(9px);\n\tanimation: flare-glow 1400ms ease-in-out infinite; pointer-events: none;\n}\n#chainMap div.redNode.node { --flare: var(--data-critical); }\n#chainMap div.yellowNode.node { --flare: var(--data-loot-orange); }\n#chainMap div.greenNode.node { --flare: var(--data-good); }\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { background-color: color-mix(in oklab, var(--flare) 8%, var(--node-surface)); }\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { animation: none; opacity: .55; }\n}\n\n/* ── Three lines, narrow: chains grow sideways, so width is the currency.\n Line 1 chip + name, line 2 hull or sig id with the pips at the right,\n line 3 the statics (J-space only; k-space cards are two lines). About\n 100 wide and 52 tall at zoom 1, against upstream's ~100 x 30. ─────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-columns: auto minmax(0, max-content);\n\tgrid-template-areas: \"class name\" \"type pips\" \"statics statics\";\n\tcolumn-gap: 4px; row-gap: 1px;\n\tmin-width: 92px; max-width: 140px; padding: 3px 6px 3px 5px;\n}\n#chainMap div.node > .nodeType { grid-area: type; }\n#chainMap div.node > .nodeActivity { grid-area: pips; justify-self: end; }\n#chainMap div.node > .statics { grid-area: statics; justify-content: flex-start; margin-top: 1px; }\n#chainMap div.node > h4.nodeSystem { max-width: 104px; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name\" \"statics statics\"; }\n#chainMap div.node:has(> .nodeType:empty):not(:has(> .statics span)) { grid-template-areas: \"class name\"; }\n#chainMap div.node:not(:has(> .statics span)) { grid-template-areas: \"class name\" \"type pips\"; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { grid-area: name; justify-self: end; }\n#chainMap div.node > .nodeIcons { top: auto; bottom: 3px; right: 5px; }\n#chainMap div.node > .nodeIcons > div { gap: 3px; }\n\n/* ── Upstream's skeleton: a 32px box. Name, then the hull or sig id under\n it; the class chip rides the top-left corner; statics hang off the\n bottom edge as capsules; pips are dots at the bottom right. About\n 100 x 32 at zoom 1 (upstream: ~100 x 30). ────────────────────────────── */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: block; position: relative; overflow: visible;\n\twidth: fit-content; min-width: 96px; max-width: 150px; height: auto !important;\n\tpadding: 3px 10px 3px 10px; margin: 6px auto 8px;\n\ttext-align: center;\n}\n#chainMap div.node > h4.nodeSystem { display: block; margin: 0; padding: 0 10px 0 0; font-size: 12px; line-height: 14px; max-width: none; }\n#chainMap div.node > .nodeType { display: block; margin: 0; font-size: 9.5px; line-height: 11px; letter-spacing: .04em; min-height: 0; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .nodeClass {\n\tposition: absolute; top: -7px; left: -5px; margin: 0; line-height: 1; z-index: 2;\n}\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 6px; right: 6px; bottom: -7px; margin: 0; z-index: 2;\n\tdisplay: flex; justify-content: center; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeActivity { position: absolute; right: 4px; bottom: 3px; top: auto; margin: 0; gap: 2px; z-index: 1; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeIcons { position: absolute; top: -6px; right: -4px; bottom: auto; left: auto; }\n#chainMap div.node > .nodeIcons > div { gap: 2px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; font-size: 9px; padding: 0 4px; }\n#chainMap div.node.frig-chain { border-width: 1px; }\n#chainMap div.loop { width: fit-content; min-width: 0; padding: 3px 10px; margin: 6px auto 8px; }\n/* The glow is a halo around and behind the box, not a wash across it: an\n animated shadow instead of a pad inside the card's own stacking layer. */\n#chainMap div.redNode.node::before, #chainMap div.yellowNode.node::before, #chainMap div.greenNode.node::before { content: none; animation: none; }\n@keyframes flare-halo {\n\t0%, 100% { box-shadow: 0 0 6px 1px color-mix(in oklab, var(--flare) 45%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n\t50% { box-shadow: 0 0 16px 5px color-mix(in oklab, var(--flare) 85%, transparent), 0 2px 8px rgba(0, 0, 0, .35); }\n}\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tz-index: auto; border-color: color-mix(in oklab, var(--flare) 60%, var(--node-edge));\n\tanimation: flare-halo 1400ms ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n\t#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { animation: none; box-shadow: 0 0 12px 3px color-mix(in oklab, var(--flare) 70%, transparent); }\n}\n/* The chip sits inline before the name (it was covering the first letter\n from the corner); the type line gets room above the hanging capsules. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: auto max-content; grid-template-areas: \"class name\" \"type type\";\n\talign-items: center; column-gap: 4px; row-gap: 0;\n\tmin-width: 92px; max-width: 160px; padding: 3px 8px 9px 6px; margin: 4px auto 9px; text-align: left;\n}\n#chainMap div.node > .nodeClass { position: static; grid-area: class; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; padding: 0; line-height: 15px; max-width: 110px; }\n#chainMap div.node > .nodeType { grid-area: type; text-align: left; padding-right: 24px; line-height: 11px; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { padding-bottom: 3px; grid-template-areas: \"class name\"; }\n#chainMap div.node:has(> .nodeType:empty):has(> .statics span) { padding-bottom: 8px; }\n#chainMap div.node > .statics { bottom: -7px; left: 4px; right: 4px; justify-content: flex-start; }\n#chainMap div.node > .nodeActivity { right: 5px; bottom: 9px; }\n#chainMap div.node:has(> .nodeType:empty) > .nodeActivity { bottom: 4px; }\n#chainMap div.node > .nodeIcons { top: -5px; right: -3px; }\n\n/* ══ Chain node, settled ═══════════════════════════════════════════════════\n Everything in flow on one grid, so nothing can land on anything else at\n any zoom. Row 1: class chip, name, effect / occupant icons, activity\n pips. Row 2: hull or sig id. Statics hang off the bottom edge into space\n the card reserves below itself. 34px tall with a type line, 22 without;\n about 100 wide for a J-name. Upstream: ~100 x 30 with its tabs below. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-areas: \"class name icons pips\" \"type type type type\";\n\talign-items: center; column-gap: 4px; row-gap: 1px;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 3px 7px 4px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: left;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-areas: \"class name icons pips\"; padding-bottom: 3px; }\n#chainMap div.node > .nodeClass { grid-area: class; position: static; margin: 0; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 4px; font-size: 9px; box-shadow: none; }\n#chainMap div.node > h4.nodeSystem { grid-area: name; margin: 0; padding: 0; line-height: 15px; font-size: 12px; max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeIcons { grid-area: icons; position: static; display: flex; align-items: center; gap: 3px; width: auto; height: auto; margin: 0; top: auto; right: auto; left: auto; bottom: auto; }\n#chainMap div.node > .nodeIcons:empty { display: none; }\n#chainMap div.node > .nodeIcons > div { float: none; display: flex; align-items: center; gap: 3px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 9px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainMap div.node > .nodeActivity { grid-area: pips; position: static; justify-self: end; display: flex; align-items: center; gap: 2px; width: auto; height: auto; margin: 0; font-size: 0; }\n#chainMap div.node > .nodeActivity > span { font-size: 6px; line-height: 6px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .nodeType { grid-area: type; margin: 0; padding: 0; text-align: left; font-family: var(--font-mono); font-size: 9.5px; line-height: 11px; letter-spacing: .04em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node > .statics {\n\tposition: absolute; left: 5px; right: 5px; top: 100%; bottom: auto; margin: -4px 0 0; transform: none; z-index: 2;\n\tdisplay: flex; justify-content: flex-start; gap: 3px; flex-wrap: nowrap;\n}\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 12px; min-width: 16px; padding: 0 4px; font-size: 8.5px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 3px 8px; margin: 3px auto 12px; }\n/* Placement by line numbers, not area names: the minifier had reordered\n the named areas and the icons fell into an implicit fourth row. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-areas: none;\n\tgrid-template-columns: auto minmax(0, max-content) auto auto;\n\tgrid-template-rows: auto auto;\n\tgrid-auto-rows: 0;\n}\n#chainMap div.node > .nodeClass { grid-area: auto; grid-column: 1; grid-row: 1; }\n#chainMap div.node > h4.nodeSystem { grid-area: auto; grid-column: 2; grid-row: 1; }\n#chainMap div.node > .nodeIcons { grid-area: auto; grid-column: 3; grid-row: 1; }\n#chainMap div.node > .nodeActivity { grid-area: auto; grid-column: 4; grid-row: 1; }\n#chainMap div.node > .nodeType { grid-area: auto; grid-column: 1 / 5; grid-row: 2; }\n#chainMap div.node > .statics { grid-area: auto; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n/* The name's own text is its minimum: overflow: clip is not a scroll\n container, so the grid and the org-chart cell size to the name instead of\n collapsing it to \"P.\" at their minimum. Still ellipsises past 110px. */\n#chainMap div.node > h4.nodeSystem { overflow: clip; text-overflow: ellipsis; min-width: min-content; }\n#chainMap div.node > h4.nodeSystem a { white-space: nowrap; }\n\n/* ══ Chain node: the original's layout, in our clothes ═════════════════════\n Three centred lines -- class chip with the effect beside it, the name,\n the hull or sig id -- the statics hanging off the bottom edge into the\n space between rows, activity dots on the edge, the occupant badge on the\n top-right corner. About 100 x 46 at zoom 1, which is what the original\n measured once its three lines were in it. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tdisplay: grid; grid-template-columns: minmax(0, max-content); grid-template-rows: auto auto auto; grid-auto-rows: 0;\n\tjustify-items: center; align-items: center; row-gap: 0; column-gap: 0;\n\twidth: fit-content; min-width: 96px; max-width: 176px; height: auto !important;\n\tpadding: 4px 10px 5px; margin: 3px auto 12px;\n\tposition: relative; overflow: visible; text-align: center;\n}\n#chainMap div.node > .nodeClass { grid-column: 1; grid-row: 1; position: static; margin: 0; display: inline-flex; align-items: center; gap: 4px; line-height: 1; }\n#chainMap div.node > .nodeClass > span { height: 13px; padding: 0 5px; font-size: 9px; }\n#chainMap div.node > h4.nodeSystem { grid-column: 1; grid-row: 2; margin: 0; padding: 0; line-height: 16px; font-size: 12.5px; font-weight: 600; max-width: 150px; min-width: min-content; overflow: clip; text-overflow: ellipsis; white-space: nowrap; }\n#chainMap div.node > .nodeType { grid-column: 1; grid-row: 3; margin: 0; padding: 0; text-align: center; font-family: var(--font-mono); font-size: 10px; line-height: 12px; letter-spacing: .06em; text-transform: uppercase; min-height: 0; white-space: nowrap; }\n#chainMap div.node > .nodeType:empty { display: none; }\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto auto; }\n/* The effect sits beside the class, in flow; the occupant badge rides the corner. */\n#chainMap div.node > .nodeIcons { grid-column: 1; grid-row: 1; position: static; display: contents; }\n#chainMap div.node > .nodeIcons > div { float: none; display: contents; }\n#chainMap div.node > .nodeIcons > div:first-child { display: inline-flex; align-items: center; position: absolute; top: 4px; right: 8px; gap: 2px; }\n#chainMap div.node > .nodeIcons > div:last-child { display: inline-flex; align-items: center; position: absolute; top: -6px; right: -6px; gap: 2px; }\n#chainMap div.node > .nodeIcons .invisible { display: none; }\n#chainMap div.node > .nodeIcons .badge { height: 13px; padding: 0 5px; font-size: 9px; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n/* Dots on the bottom edge, left; statics hanging from the edge, right of them. */\n#chainMap div.node > .nodeActivity { position: absolute; left: 8px; bottom: -3px; top: auto; right: auto; margin: 0; width: auto; height: auto; display: flex; gap: 3px; font-size: 0; z-index: 2; }\n#chainMap div.node > .nodeActivity > span { font-size: 7px; line-height: 7px; }\n#chainMap div.node > .nodeActivity > span.invisible { display: none; }\n#chainMap div.node > .statics { position: absolute; left: auto; right: 6px; top: 100%; bottom: auto; margin: -5px 0 0; transform: none; display: flex; justify-content: flex-end; gap: 3px; flex-wrap: nowrap; z-index: 2; }\n#chainMap div.node > .statics:empty { display: none; }\n#chainMap div.node > .statics span, #chainMap div.node > .statics span:nth-child(2) { height: 13px; min-width: 17px; padding: 0 5px; font-size: 9px; line-height: 1; box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.loop { display: block; width: fit-content; min-width: 0; padding: 4px 10px; margin: 3px auto 12px; }\n/* The class / security capsule hangs off the top-left corner, the effect\n off the top-right; the box holds name and sig; statics and dots hang off\n the bottom. The gaps between rows carry the capsules, as the original's\n tabs did. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node {\n\tgrid-template-rows: auto auto; padding: 7px 10px 6px; margin: 9px auto 12px; min-width: 92px;\n}\n#chainMap div.node:has(> .nodeType:empty) { grid-template-rows: auto; }\n#chainMap div.node > .nodeClass { position: absolute; top: -7px; left: -5px; margin: 0; z-index: 3; }\n#chainMap div.node > .nodeClass > span { box-shadow: 0 0 0 2px var(--background); }\n#chainMap div.node > h4.nodeSystem { grid-row: 1; }\n#chainMap div.node > .nodeType { grid-row: 2; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -7px; right: 6px; }\n#chainMap div.node > .nodeIcons > div:last-child { top: -7px; right: -6px; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 12px; text-shadow: 0 0 3px var(--background); }\n#chainMap div.node > .nodeActivity { bottom: -4px; left: 7px; }\n#chainMap div.node > .statics { margin-top: -6px; right: 5px; }\n/* Tooltips appended inside the chain panel position against it, not the\n page: the panel is the containing block. */\n#chainWidget > #chainParent.content { position: relative; }\n/* The corner chip straddles the top edge in the box's own top padding; the\n name starts below it. Mirrors the statics on the bottom edge. */\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { padding-top: 14px; padding-bottom: 7px; margin-top: 10px; }\n#chainMap div.node > .nodeClass { top: -7px; left: -5px; }\n#chainMap div.node > .nodeClass > span { height: 14px; }\n/* The desktop layout pins every panel's .content static with !important;\n the chain panel must be the containing block for its tooltips. */\n#chainWidget > #chainParent.content { position: relative !important; }\n/* An absolutely positioned child of a grid is placed against its grid\n area when it has one; the chip and the dots must be placed against the\n box, so they get no area. And the rows sit 5px closer. */\n#chainMap div.node > .nodeClass, #chainMap div.node > .nodeActivity, #chainMap div.node > .statics,\n#chainMap div.node > .nodeIcons > div { grid-area: auto; grid-row: auto; grid-column: auto; }\n#chainMap div.node,\n#chainMap div.redNode.node, #chainMap div.yellowNode.node, #chainMap div.greenNode.node { margin-top: 8px; margin-bottom: 9px; }\n/* Keep the pilot icon and count wholly inside the top-right corner. Negative\n offsets put both controls directly over the node's top and right borders. */\n#chainMap div.node > .nodeIcons > div:last-child { top: 2px; right: 3px; gap: 1px; }\n#chainMap div.node > .nodeIcons > div:first-child { top: -6px; right: 22px; }\n#chainMap div.node > .nodeIcons .badge { height: 12px; padding: 0 4px; font-size: 8.5px; box-shadow: none; }\n#chainMap div.node > .nodeIcons [data-icon]::before { font-size: 11px; }\n#chainMap div.node > .nodeIcons [data-icon=\"user\"] { padding: 0; }\n#chainWidget > #chainParent.content { padding-top: 12px !important; }\n/* The pilot count is centred in its capsule (it is a flex box, which does\n not centre on its own), with a round minimum so \"1\" and \"12\" both sit true. */\n#chainMap div.node > .nodeIcons .badge { justify-content: center; min-width: 14px; padding: 0 4px; box-sizing: border-box; text-align: center; }\n"]} \ No newline at end of file From e7abdb001a511ab88455a6f0d6ad39b66d12c57b Mon Sep 17 00:00:00 2001 From: cvweiss Date: Mon, 14 Sep 2026 15:10:54 -0400 Subject: [PATCH 4/4] better modal positioning --- app/js/dialogs/signature-dialog.js | 34 +++++++++++++++++++++++++----- e2e/signatures.spec.js | 17 +++++++++++++++ public/js/app.min.js | 2 +- public/js/app.min.js.map | 2 +- 4 files changed, 48 insertions(+), 7 deletions(-) diff --git a/app/js/dialogs/signature-dialog.js b/app/js/dialogs/signature-dialog.js index c33d3635..6ff06e60 100644 --- a/app/js/dialogs/signature-dialog.js +++ b/app/js/dialogs/signature-dialog.js @@ -1,6 +1,18 @@ const sigDialog = {}; const sigDialogVM = {}; +sigDialog.positionInViewport = function() { + const dialog = $("#dialog-signature"); + if (!dialog.hasClass("ui-dialog-content") || !dialog.dialog("isOpen")) return; + + dialog.dialog("option", "position", { + my: "center", + at: "center", + of: window, + collision: "fit" + }); +}; + sigDialog.openSignatureDialog = function(e) { if(e.preventDefault) { e.preventDefault(); } // Allow calls with fake event-like objects too sigDialogVM.mode = e.data.mode; @@ -31,7 +43,7 @@ sigDialog.openSignatureDialog = function(e) { autoOpen: true, resizable: false, dialogClass: "dialog-noeffect ui-dialog-shadow", - position: {my: "center", at: "center", of: $("#signaturesWidget")}, + position: {my: "center", at: "center", of: window, collision: "fit"}, buttons: { Delete: function() { const d = $(this); @@ -203,11 +215,21 @@ sigDialog.openSignatureDialog = function(e) { // Toggle between wormhole and regular signatures $("#dialog-signature").on("selectmenuchange", "[name='signatureType']", function() { if (this.value == "wormhole") { - $("#dialog-signature #site").slideUp(200, function() { $(this).hide(0); }); - $("#dialog-signature #wormhole").slideDown(200, function() { $(this).show(200); }); + $("#dialog-signature #site").slideUp(200, function() { + $(this).hide(0); + sigDialog.positionInViewport(); + }); + $("#dialog-signature #wormhole").slideDown(200, function() { + $(this).show(200, sigDialog.positionInViewport); + }); } else { - $("#dialog-signature #site").slideDown(200, function() { $(this).show(200); }); - $("#dialog-signature #wormhole").slideUp(200, function() { $(this).hide(0); }); + $("#dialog-signature #site").slideDown(200, function() { + $(this).show(200, sigDialog.positionInViewport); + }); + $("#dialog-signature #wormhole").slideUp(200, function() { + $(this).hide(0); + sigDialog.positionInViewport(); + }); } ValidationTooltips.close(); @@ -494,6 +516,8 @@ sigDialog.openSignatureDialog = function(e) { $("#dialog-signature #wormhole").show(); } } + + sigDialog.positionInViewport(); }, close: function() { ValidationTooltips.close(); diff --git a/e2e/signatures.spec.js b/e2e/signatures.spec.js index c198e0c4..1c0863bf 100644 --- a/e2e/signatures.spec.js +++ b/e2e/signatures.spec.js @@ -111,6 +111,23 @@ test.describe("the traps", () => { test.beforeEach(async ({ page }) => { await login(page, SYSTEM); await removeSigsByPrefix(page, PREFIX); }); test.afterEach(async ({ page }) => { await removeSigsByPrefix(page, PREFIX).catch(() => {}); }); + test("the signature dialog remains inside the viewport when it expands", async ({ page }) => { + const viewport = { width: 800, height: 600 }; + await page.setViewportSize(viewport); + await page.click("#add-signature"); + await chooseType(page, "Wormhole"); + + const dialog = page.locator(".ui-dialog:visible"); + await expect(dialog.locator("#wormhole")).toBeVisible(); + await page.waitForFunction(() => !$("#dialog-signature #site, #dialog-signature #wormhole").is(":animated")); + const bounds = await dialog.boundingBox(); + + expect(bounds.x).toBeGreaterThanOrEqual(0); + expect(bounds.y).toBeGreaterThanOrEqual(0); + expect(bounds.x + bounds.width).toBeLessThanOrEqual(viewport.width + 1); + expect(bounds.y + bounds.height).toBeLessThanOrEqual(viewport.height + 1); + }); + test("typing the id then Tab does not skip the numeric half", async ({ page }) => { await page.click("#add-signature"); await page.locator("#dialog-signature input[name=signatureID_Alpha]").click(); diff --git a/public/js/app.min.js b/public/js/app.min.js index 8d9c861e..93eb6800 100644 --- a/public/js/app.min.js +++ b/public/js/app.min.js @@ -77,5 +77,5 @@ $(".options").click(function(o){if(o.preventDefault(),$(this).hasClass("disabled const sendPing=function(t,e){if(""===$("#ping-text").val().trim()&&!confirm("You are sending a ping with no text. Are you sure you want to do that?\n\nIf not, press Cancel and enter some text and try again."))return;const n=t;var i={systemName:n.systemName,systemText:n.systemText,message:$("#ping-text").val(),pingType:e};$.ajax({url:"ping.php",type:"POST",data:i,dataType:"text"}).done(function(t){$(n).dialog("close")}).fail(function(t,e,n){console.log(e,n)})};$("#dialog-ping").dialog({autoOpen:!1,height:"auto",width:350,dialogClass:"dialog-noeffect ui-dialog-shadow",buttons:{Send:function(){sendPing(this)},"@here":function(){sendPing(this,"here")},"@everyone":function(){sendPing(this,"everyone")},Cancel:function(){$(this).dialog("close")}},open:function(){const t=$(this).data("id"),e=$(this).data("systemID"),n=tripwire.client.wormholes[t],i=n?tripwire.client.signatures[n.initialID]:{name:null};this.systemName=tripwire.systems[e].name,this.systemText=this.systemName+(null!==i.name&&i.name.length?" ("+i.name+")":""),$("#dialog-ping").dialog("option","title","Ping about "+this.systemText),$("#ping-text").val(""),$("#ping-text").focus()}}); function openDeleteDialog(e,t){openDeleteDialog.deleteDialogVM=e,$("#dialog-deleteSig").hasClass("ui-dialog-content")?$("#dialog-deleteSig").dialog("isOpen")||$("#dialog-deleteSig").dialog("open"):$("#dialog-deleteSig").dialog({resizable:!1,minHeight:0,dialogClass:"dialog-noeffect ui-dialog-shadow",buttons:{Delete:function(){$("#dialog-deleteSig").parent().find(":button:contains('Delete')").button("enable");var e={signatures:{remove:[]},systemID:viewingSystemID},i=[],n=$.map(openDeleteDialog.deleteDialogVM.signatures,function(e){if("wormhole"!=e.type)return i.push(e),e.id;var t=$.map(tripwire.client.wormholes,function(t){if(t.initialID==e.id||t.secondaryID==e.id)return t})[0];return i.push({wormhole:t,signatures:[tripwire.client.signatures[t.initialID],tripwire.client.signatures[t.secondaryID]]}),t});e.signatures.remove=n;tripwire.refresh("refresh",e,function(e){e.resultSet&&1==e.resultSet[0].result&&($("#dialog-deleteSig").dialog("close"),t&&t(),$("#undo").removeClass("disabled"),viewingSystemID in tripwire.signatures.undo?tripwire.signatures.undo[viewingSystemID].push({action:"remove",signatures:i}):tripwire.signatures.undo[viewingSystemID]=[{action:"remove",signatures:i}],sessionStorage.setItem("tripwire_undo",JSON.stringify(tripwire.signatures.undo)))},function(e){$("#dialog-deleteSig").parent().find(":button:contains('Delete')").button("enable")})},Cancel:function(){$(this).dialog("close")}},open:function(){const e=openDeleteDialog.deleteDialogVM.signatures;$("#dialog-deleteSig").dialog("option","title",1==e.length?"Delete Signature "+formatSignatureID(e[0].signatureID):"Delete Multiple Signatures"),document.getElementById("deleteSigText").innerText=1==e.length?"The "+e[0].type+" signature "+formatSignatureID(e[0].signatureID):"The signatures "+e.map(e=>formatSignatureID(e.signatureID)).join(", "),document.getElementById("deleteSigSystem").innerHTML=systemRendering.renderSystem(systemAnalysis.analyse(e[0].systemID)),$("#dialog-deleteSig").parent().find(".ui-dialog-buttonset button:eq(0)").focus()},close:function(){$("#sigTable tr.selected").removeClass("selected")}})}$("#signaturesWidget").on("click","#delete-signature",function(e){return e.preventDefault(),!$(this).closest("tr").attr("disabled")&&(0!=$("#sigTable tr.selected").length&&($("#dialog-sigEdit").hasClass("ui-dialog-content")&&$("#dialog-sigEdit").dialog("isOpen")?($("#dialog-sigEdit").parent().effect("shake",300),!1):void openDeleteDialog({signatures:$.map($("#sigTable tr.selected"),function(e){return tripwire.client.signatures[$(e).data("id")]})})))}); !function(){var i="#dialog-signature";function t(){var t=["signatureID_Alpha"];return"wormhole"===$(i+" [name='signatureType']").val()&&t.push("wormholeType","leadsTo"),t.map(function(t){return $(i+" [name='"+t+"']").filter(":visible").first()}).filter(function(i){return i.length>0})}function n(){$(i+" .sig-missing").removeClass("sig-missing"),t().forEach(function(i){$.trim(i.val()||"")||i.addClass("sig-missing")})}function e(){var i=function(i){var t=tripwire.client&&tripwire.client.signatures,n=tripwire.client&&tripwire.client.wormholes||{};if(!t)return null;for(var e=sigDialogVM.viewingSystemID,r=Object.keys(t).filter(function(n){var r=t[n];return r&&r.systemID==e&&"wormhole"===r.type&&n!=i}).sort(),o=0;o0||$(i.target).is("textarea, button")||(i.preventDefault(),i.ctrlKey||i.metaKey?e():$("#form-signature").trigger("submit")))});var r=!1;$(document).on("input change","#form-signature",function(){r&&n()}),$(document).on("focusout","#form-signature",function(i){var n=$(i.target);n.is("input")&&(t().some(function(i){return i[0]===n[0]})&&!$.trim(n.val()||"")?n.addClass("sig-missing"):n.removeClass("sig-missing"))}),$(document).on("submit","#form-signature",function(){r=!0,n()}),$(document).on("click",".ui-dialog-buttonpane button",function(){$(this).closest(".ui-dialog").find(i).length&&"Cancel"!==$(this).text().trim()&&(r=!0,n())}),$(document).on("dialogopen",".ui-dialog",function(){$(this).find(i).length&&setTimeout(function(){r=!1,$(i+" .sig-missing").removeClass("sig-missing"),function(){for(var n=t(),e=0;ee.dialog("close"))},Save:function(){$("#form-signature").submit()},Add:function(){$("#form-signature").submit()},Cancel:function(){$(this).dialog("close")}},create:function(){var e=Object.assign({},appData.wormholes,wormholeAnalysis.dummyWormholes,{K162:{}});function i(){return $("#dialog-signature .leadsTo:visible").val()}function t(e){return function(){const t=wormholeAnalysis.eligibleWormholeTypes(sigDialogVM.viewingSystemID,wormholeAnalysis.targetSystemID(i(),void 0));return e(t)}}$("#dialog-signature [name='signatureType'], #dialog-signature [name='signatureLife']").selectmenu({width:100}),$("#dialog-signature [data-autocomplete='sigSystems']").inlinecomplete({source:tripwire.aSigSystems,renderer:"system",select_item_mapper:function(e){return e.concat(appData.genericSystemTypes).map(function(e){return Object.assign({name:e},systemAnalysis.analyse(e))})},extraMatch:(e,i)=>e.toUpperCase()===i.systemTypeName,maxSize:10,delay:0});const a=t(function(e){return e.from}),n=t(function(e){return e.to});function s(e,i){e.innerHTML="";const t=i();t.length<4&&t.forEach(i=>{const t=document.createElement("button");t.className="quick-select",i.jump<=5e6&&(t.className+=" frig"),t.textContent=i.key,t.value=i.key,t.type="button",t.tabIndex=-1,e.appendChild(t)})}$("#dialog-signature [data-autocomplete='sigTypeFrom']").inlinecomplete({source:e,renderer:function(e){return wormholeRendering.renderWormholeType(e,e.key,sigDialogVM.viewingSystem.name,i())},maxSize:10,delay:0,customDropdown:a}),$("#dialog-signature [data-autocomplete='sigTypeTo']").inlinecomplete({source:e,renderer:function(e){return wormholeRendering.renderWormholeType(e,e.key,i(),sigDialogVM.viewingSystem.name)},maxSize:10,delay:0,customDropdown:n}),$("#wormholeTypeQuickSelectFrom").on("click",e=>$("#dialog-signature input[name='wormholeType']").val(e.target.value).change()),$("#wormholeTypeQuickSelectTo").on("click",e=>$("#dialog-signature input[name='wormholeType2']").val(e.target.value).change()),$("#dialog-signature #durationPicker").durationPicker(),$("#dialog-signature #durationPicker").on("change",function(){this.value<0&&(this.value=0,$(this).change())}),$("#dialog-signature [name='signatureID_Alpha'], #dialog-signature [name='signatureID2_Alpha']").on("input",function(){var e=/^([a-zA-Z?]{3})-?([0-9?]{1,3})/.exec(this.value);if(e){var i="signatureID_Alpha"===this.name?"signatureID_Numeric":"signatureID2_Numeric";return this.value=e[1],void $("#dialog-signature [name='"+i+"']").val(e[2]).trigger("focus")}for(;!/^[a-zA-Z?]*$/g.test(this.value);)this.value=this.value.substring(0,this.value.length-1)});var o=0;$("#dialog-signature [name='signatureID_Alpha']").on("input",function(){3===this.value.length&&(o=Date.now(),$("#dialog-signature [name='signatureID_Numeric']").select())}),$("#dialog-signature [name='signatureID_Numeric']").on("keydown",function(e){"Tab"===e.key&&!e.shiftKey&&""===this.value&&Date.now()-o<1500&&e.preventDefault()}),$("#dialog-signature [name='signatureID2_Alpha']").on("input",function(){3===this.value.length&&$("#dialog-signature [name='signatureID2_Numeric']").select()}),$("#dialog-signature [name='signatureID_Numeric'], #dialog-signature [name='signatureID2_Numeric']").on("input",function(){for(;!/^[0-9?]*$/g.test(this.value);)this.value=this.value.substring(0,this.value.length-1)}),$("#dialog-signature").parent().find("button:contains('Delete')").css({position:"absolute",left:"30px"}),$("#dialog-signature .signatureID, #dialog-signature .wormholeType").on("click",function(){$(this).select()}),$("#dialog-signature [name='leadsTo']").on("change",function(){s(document.getElementById("wormholeTypeQuickSelectFrom"),a),s(document.getElementById("wormholeTypeQuickSelectTo"),n)}),$("#leadsToQuickBar").on("click",e=>{let i=e.target;for(;"BUTTON"!==i.tagName;)i=i.parentElement;$("#dialog-signature [name='leadsTo']").val(i.value).change()}),$("#dialog-signature .wormholeType").on("input, change",function(){this.value.length>0&&-1!=e[this.value.toUpperCase()]&&"K162"!=this.value.toUpperCase()?($("#dialog-signature .wormholeType").not(this).val("K162"),appData.wormholes[this.value.toUpperCase()]&&$("#dialog-signature #durationPicker").val(60*appData.wormholes[this.value.toUpperCase()].life.substring(0,2)*60).change()):"K162"===this.value.toUpperCase()?(e[$("#dialog-signature .wormholeType").not(this).val().toUpperCase()]||"K162"===$("#dialog-signature .wormholeType").not(this).val().toUpperCase())&&$("#dialog-signature .wormholeType").not(this).val("????"):"????"==this.value&&$("#dialog-signature .wormholeType").not(this).val("K162")}),$("#dialog-signature").on("selectmenuchange","[name='signatureType']",function(){"wormhole"==this.value?($("#dialog-signature #site").slideUp(200,function(){$(this).hide(0)}),$("#dialog-signature #wormhole").slideDown(200,function(){$(this).show(200)})):($("#dialog-signature #site").slideDown(200,function(){$(this).show(200)}),$("#dialog-signature #wormhole").slideUp(200,function(){$(this).hide(0)})),ValidationTooltips.close()}),$("#form-signature").submit(function(i){i.preventDefault();var t=$(this).serializeObject(),a=!0;if(ValidationTooltips.close(),$.each($("#dialog-signature .signatureID:visible"),function(){if(this.value.length>0&&this.value.length<3)return ValidationTooltips.open({target:$(this)}).setContent("Must be 3 characters in length!"),$(this).select(),a=!1,!1}),!a)return!1;if(3===t.signatureID_Alpha.length&&3===t.signatureID_Numeric.length)for(var n in tripwire.client.signatures){const e=tripwire.client.signatures[n];if(e.id!=sigDialogVM.sigId&&e.signatureID==t.signatureID_Alpha.toLowerCase()+t.signatureID_Numeric&&e.systemID==sigDialogVM.viewingSystemID)return ValidationTooltips.open({target:$("#dialog-signature .signatureID:first")}).setContent("Signature ID already exists! "),$("#overwrite").focus(),a=!1,!1}if(!a)return!1;if($.each($("#dialog-signature .wormholeType:visible"),function(){if(this.value.length>0&&!e[this.value.toUpperCase()]&&"????"!=this.value)return ValidationTooltips.open({target:$(this)}).setContent("Must be a valid wormhole type!"),$(this).select(),a=!1,!1}),!a)return!1;if($.each($("#dialog-signature .leadsTo:visible"),function(){if(this.value.length>0&&-1==appData.genericSystemTypes.findIndex(e=>this.value.toLowerCase()===e.toLowerCase())&&!findSystemID(this.value))return ValidationTooltips.open({target:$(this)}).setContent("Must be a valid leads to system!"),$(this).select(),a=!1,!1}),!a)return!1;if($.each($("#dialog-signature .leadsTo:visible"),function(){if(this.value.length>0&&this.value.toLowerCase()===sigDialogVM.viewingSystem.name.toLowerCase())return ValidationTooltips.open({target:$(this)}).setContent("Wormhole cannot lead to the same system it comes from!"),$(this).select(),a=!1,!1}),!a)return!1;var s={},o=[];if("wormhole"===t.signatureType){var r={signatureID:t.signatureID_Alpha+t.signatureID_Numeric,systemID:sigDialogVM.viewingSystemID,type:"wormhole",name:t.wormholeName,lifeLength:t.signatureLength},l=wormholeAnalysis.targetSystemID(t.leadsTo,t.wormholeType),g={signatureID:t.signatureID2_Alpha+t.signatureID2_Numeric,systemID:l,type:"wormhole",name:t.wormholeName2,lifeLength:t.signatureLength},u=null,d=null;t.wormholeType.length>0&&e[t.wormholeType.toUpperCase()]&&"K162"!=t.wormholeType.toUpperCase()?(d="initial",u=t.wormholeType.toUpperCase()):t.wormholeType2.length>0&&e[t.wormholeType2.toUpperCase()]&&"K162"!=t.wormholeType2.toUpperCase()?(d="secondary",u=t.wormholeType2.toUpperCase()):"K162"==t.wormholeType.toUpperCase()?(d="secondary",u="????"):"K162"==t.wormholeType2.toUpperCase()&&(d="initial",u="????");var p={type:u,parent:d,life:t.wormholeLife,mass:t.wormholeMass};"update"==sigDialogVM.mode?(r.id=$("#dialog-signature").data("signatureid"),g.id=$("#dialog-signature").data("signature2id"),p.id=$("#dialog-signature").data("wormholeid"),tripwire.client.wormholes[p.id]&&(t.wormholeType.length>0&&e[t.wormholeType.toUpperCase()]&&"K162"!=t.wormholeType.toUpperCase()?(p.parent=tripwire.client.wormholes[p.id].initialID==r.id?"initial":"secondary",p.type=t.wormholeType.toUpperCase()):t.wormholeType2.length>0&&e[t.wormholeType2.toUpperCase()]&&"K162"!=t.wormholeType2.toUpperCase()?(p.parent=tripwire.client.wormholes[p.id].initialID==r.id?"secondary":"initial",p.type=t.wormholeType2.toUpperCase()):"K162"==t.wormholeType.toUpperCase()?(p.parent=tripwire.client.wormholes[p.id].initialID==r.id?"secondary":"initial",p.type="????"):"K162"==t.wormholeType2.toUpperCase()&&(p.parent=tripwire.client.wormholes[p.id].initialID==r.id?"initial":"secondary",p.type="????")),s=tripwire.signaturePayload.wormholeUpdatePayload(p,r,g),o.push(tripwire.signaturePayload.undoEntryFor(r.id))):s={signatures:{add:[{wormhole:p,signatures:[r,g]}]}}}else if("update"==sigDialogVM.mode){r={id:$("#dialog-signature").data("signatureid"),signatureID:t.signatureID_Alpha+t.signatureID_Numeric,systemID:sigDialogVM.viewingSystemID,type:t.signatureType,name:t.signatureName,lifeLength:t.signatureLength};s=tripwire.signaturePayload.signatureUpdatePayload(r),o.push(tripwire.signaturePayload.undoEntryFor(r.id))}else{s={signatures:{add:[r={signatureID:t.signatureID_Alpha+t.signatureID_Numeric,systemID:sigDialogVM.viewingSystemID,type:t.signatureType,name:t.signatureName,lifeLength:t.signatureLength}]}}}$("#dialog-signature").parent().find(":button:contains('Save')").button("disable");tripwire.refresh("refresh",s,function(e){e.resultSet&&1==e.resultSet[0].result&&($("#dialog-signature").dialog("close"),$("#undo").removeClass("disabled"),"add"==sigDialogVM.mode&&(o=e.results),sigDialogVM.viewingSystemID in tripwire.signatures.undo?tripwire.signatures.undo[sigDialogVM.viewingSystemID].push({action:sigDialogVM.mode,signatures:o}):tripwire.signatures.undo[sigDialogVM.viewingSystemID]=[{action:sigDialogVM.mode,signatures:o}],sessionStorage.setItem("tripwire_undo",JSON.stringify(tripwire.signatures.undo)))},function(){$("#sigEditForm input[type=submit]").removeAttr("disabled"),$("#dialog-signature").parent().find(":button:contains('Save')").button("enable")})})},open:function(){$("#dialog-signature").data("signatureid",""),$("#dialog-signature").data("signature2id",""),$("#dialog-signature").data("wormholeid",""),$("#dialog-signature input[type!='radio']").val(""),$("#dialog-signature [name='signatureType']").val("unknown").selectmenu("refresh"),$("#dialog-signature [name='wormholeLife'][value='stable']").prop("checked",!0),$("#dialog-signature [name='wormholeMass'][value='stable']").prop("checked",!0),$("#dialog-signature #site").show(),$("#dialog-signature #wormhole").hide(),$("#dialog-signature .sideLabel:first").text(sigDialogVM.viewingSystem.name+" Side"),$("#dialog-signature .sideLabel:last").text("Other Side"),$("#dialog-signature #durationPicker").val(60*options.signatures.pasteLife*60).change();var e=sigDialogVM.sigId;if("update"==sigDialogVM.mode&&e&&tripwire.client.signatures[e]){var i=tripwire.client.signatures[e];if($("#dialog-signature").data("signatureid",e),$("#dialog-signature").parent().find("button:contains('Add')").hide(),$("#dialog-signature").parent().find("button:contains('Save')").show(),$("#dialog-signature").parent().find("button:contains('Delete')").show(),$("#dialog-signature").dialog("option","title","Edit Signature"),"wormhole"==i.type){var t=$.map(tripwire.client.wormholes,function(i){if(i.initialID==e||i.secondaryID==e)return i})[0],a=e==t.initialID?tripwire.client.signatures[t.secondaryID]:tripwire.client.signatures[t.initialID];$("#dialog-signature").data("signature2id",a.id),$("#dialog-signature").data("wormholeid",t.id);const n=i.signatureID?i.signatureID.substr(0,3):"???";$("#dialog-signature input[name='signatureID_Alpha']").val(n),$("#dialog-signature input[name='signatureID_Numeric']").val(i.signatureID?i.signatureID.substr(3,5):""),$("#dialog-signature [name='signatureType']").val(i.type).selectmenu("refresh").trigger("selectmenuchange"),$("#dialog-signature [name='wormholeName']").val(i.name),$("#dialog-signature [name='leadsTo']").val(tripwire.systems[a.systemID]?tripwire.systems[a.systemID].name:appData.genericSystemTypes[a.systemID]?appData.genericSystemTypes[a.systemID]:""),$("#dialog-signature input[name='signatureID2_Alpha']").val(a.signatureID?a.signatureID.substr(0,3):"???"),$("#dialog-signature input[name='signatureID2_Numeric']").val(a.signatureID?a.signatureID.substr(3,5):""),$("#dialog-signature [name='wormholeName2']").val(a.name),$("#dialog-signature [name='wormholeLife'][value='"+t.life+"']").prop("checked",!0),$("#dialog-signature [name='wormholeMass'][value='"+t.mass+"']").prop("checked",!0),t[t.parent+"ID"]==i.id?$("#dialog-signature input[name='wormholeType']").val(t.type).change():t[t.parent+"ID"]==a.id&&$("#dialog-signature input[name='wormholeType2']").val(t.type).change(),$("#dialog-signature #durationPicker").val(i.lifeLength).change(),"???"!=n?$("#dialog-signature input[name='wormholeName']").select():$("#dialog-signature input[name='signatureID_Alpha']").select(),$("#dialog-signature [name='leadsTo']").change()}else $("#dialog-signature input[name='signatureID_Alpha']").val(i.signatureID?i.signatureID.substr(0,3):"???"),$("#dialog-signature input[name='signatureID_Numeric']").val(i.signatureID?i.signatureID.substr(3,5):""),$("#dialog-signature [name='signatureType']").val(i.type).selectmenu("refresh").trigger("selectmenuchange"),$("#dialog-signature [name='signatureName']").val(i.name),$("#dialog-signature #durationPicker").val(i.lifeLength).change(),$("#dialog-signature input[name='signatureID_Alpha']").select()}else $("#dialog-signature").parent().find("button:contains('Add')").show(),$("#dialog-signature").parent().find("button:contains('Delete')").hide(),$("#dialog-signature").parent().find("button:contains('Save')").hide(),$("#dialog-signature").dialog("option","title","Add Signature"),$("#dialog-signature [name='signatureType']").val(options.signatures.editType||"unknown").selectmenu("refresh"),"wormhole"===$("#dialog-signature [name='signatureType']").val()&&($("#dialog-signature #site").hide(),$("#dialog-signature #wormhole").show())},close:function(){ValidationTooltips.close(),$("#sigTable tr.selected").removeClass("selected"),$("#dialog-signature").data("signatureid",""),$("#dialog-signature").data("signature2id",""),$("#dialog-signature").data("wormholeid","")}})},$("#sigTable tbody").on("dblclick","tr",{mode:"update",source:"sig-row"},sigDialog.openSignatureDialog),$("#edit-signature").on("click",{mode:"update",source:"edit-sig"},sigDialog.openSignatureDialog),$("#add-signature").click({mode:"add"},sigDialog.openSignatureDialog),sigDialog.overwriteSignature=function(e,i,t){var a={signatures:{remove:[]},systemID:viewingSystemID},n=[],s=tripwire.client.signatures[e];if("wormhole"!=s.type)n.push(s),a.signatures.remove.push(s.id);else{var o=$.map(tripwire.client.wormholes,function(e){if(e.initialID==s.id||e.secondaryID==s.id)return e})[0];n.push({wormhole:o,signatures:[tripwire.client.signatures[o.initialID],tripwire.client.signatures[o.secondaryID]]}),a.signatures.remove.push(o)}tripwire.refresh("refresh",a,function(e){$("#undo").removeClass("disabled"),viewingSystemID in tripwire.signatures.undo?tripwire.signatures.undo[viewingSystemID].push({action:"remove",signatures:n}):tripwire.signatures.undo[viewingSystemID]=[{action:"remove",signatures:n}],sessionStorage.setItem("tripwire_undo",JSON.stringify(tripwire.signatures.undo)),i(e)},t)},sigDialog.delegateSave=function(e){e.resultSet&&1==e.resultSet[0].result&&(ValidationTooltips.close(),$("#dialog-signature").parent().find(":button:contains('Save')")?$("#dialog-signature").parent().find(":button:contains('Save')").click():$("#dialog-signature").parent().find(":button:contains('Add')").click())},$(document).on("click","#overwrite",function(){$("#overwrite").attr("disable",!0),sigDialog.overwriteSignature($(this).data("id"),sigDialog.delegateSave,function(){$("#overwrite").removeAttr("disable")})}); +const sigDialog={},sigDialogVM={};sigDialog.positionInViewport=function(){const e=$("#dialog-signature");e.hasClass("ui-dialog-content")&&e.dialog("isOpen")&&e.dialog("option","position",{my:"center",at:"center",of:window,collision:"fit"})},sigDialog.openSignatureDialog=function(e){switch(e.preventDefault&&e.preventDefault(),sigDialogVM.mode=e.data.mode,sigDialogVM.mode){case"update":if("sig-row"==e.data.source)$("#sigTable tr.selected").removeClass("selected"),$(this).closest("tr").addClass("selected"),sigDialogVM.sigId=$(this).data("id");else if("edit-sig"==e.data.source){var i=$("#sigTable tbody tr.selected");if(1!==i.length)return!1;sigDialogVM.sigId=$(i[0]).data("id")}else sigDialogVM.sigId=e.data.signature;break;default:delete sigDialogVM.sigId}sigDialogVM.viewingSystemID=sigDialogVM.sigId?tripwire.client.signatures[sigDialogVM.sigId].systemID:viewingSystemID,sigDialogVM.viewingSystem=tripwire.systems[sigDialogVM.viewingSystemID],$("#dialog-signature").hasClass("ui-dialog-content")?$("#dialog-signature").dialog("isOpen")||$("#dialog-signature").dialog("open"):$("#dialog-signature").dialog({autoOpen:!0,resizable:!1,dialogClass:"dialog-noeffect ui-dialog-shadow",position:{my:"center",at:"center",of:window,collision:"fit"},buttons:{Delete:function(){const e=$(this);openDeleteDialog({signatures:[tripwire.client.signatures[sigDialogVM.sigId]]},()=>e.dialog("close"))},Save:function(){$("#form-signature").submit()},Add:function(){$("#form-signature").submit()},Cancel:function(){$(this).dialog("close")}},create:function(){var e=Object.assign({},appData.wormholes,wormholeAnalysis.dummyWormholes,{K162:{}});function i(){return $("#dialog-signature .leadsTo:visible").val()}function t(e){return function(){const t=wormholeAnalysis.eligibleWormholeTypes(sigDialogVM.viewingSystemID,wormholeAnalysis.targetSystemID(i(),void 0));return e(t)}}$("#dialog-signature [name='signatureType'], #dialog-signature [name='signatureLife']").selectmenu({width:100}),$("#dialog-signature [data-autocomplete='sigSystems']").inlinecomplete({source:tripwire.aSigSystems,renderer:"system",select_item_mapper:function(e){return e.concat(appData.genericSystemTypes).map(function(e){return Object.assign({name:e},systemAnalysis.analyse(e))})},extraMatch:(e,i)=>e.toUpperCase()===i.systemTypeName,maxSize:10,delay:0});const a=t(function(e){return e.from}),n=t(function(e){return e.to});function s(e,i){e.innerHTML="";const t=i();t.length<4&&t.forEach(i=>{const t=document.createElement("button");t.className="quick-select",i.jump<=5e6&&(t.className+=" frig"),t.textContent=i.key,t.value=i.key,t.type="button",t.tabIndex=-1,e.appendChild(t)})}$("#dialog-signature [data-autocomplete='sigTypeFrom']").inlinecomplete({source:e,renderer:function(e){return wormholeRendering.renderWormholeType(e,e.key,sigDialogVM.viewingSystem.name,i())},maxSize:10,delay:0,customDropdown:a}),$("#dialog-signature [data-autocomplete='sigTypeTo']").inlinecomplete({source:e,renderer:function(e){return wormholeRendering.renderWormholeType(e,e.key,i(),sigDialogVM.viewingSystem.name)},maxSize:10,delay:0,customDropdown:n}),$("#wormholeTypeQuickSelectFrom").on("click",e=>$("#dialog-signature input[name='wormholeType']").val(e.target.value).change()),$("#wormholeTypeQuickSelectTo").on("click",e=>$("#dialog-signature input[name='wormholeType2']").val(e.target.value).change()),$("#dialog-signature #durationPicker").durationPicker(),$("#dialog-signature #durationPicker").on("change",function(){this.value<0&&(this.value=0,$(this).change())}),$("#dialog-signature [name='signatureID_Alpha'], #dialog-signature [name='signatureID2_Alpha']").on("input",function(){var e=/^([a-zA-Z?]{3})-?([0-9?]{1,3})/.exec(this.value);if(e){var i="signatureID_Alpha"===this.name?"signatureID_Numeric":"signatureID2_Numeric";return this.value=e[1],void $("#dialog-signature [name='"+i+"']").val(e[2]).trigger("focus")}for(;!/^[a-zA-Z?]*$/g.test(this.value);)this.value=this.value.substring(0,this.value.length-1)});var o=0;$("#dialog-signature [name='signatureID_Alpha']").on("input",function(){3===this.value.length&&(o=Date.now(),$("#dialog-signature [name='signatureID_Numeric']").select())}),$("#dialog-signature [name='signatureID_Numeric']").on("keydown",function(e){"Tab"===e.key&&!e.shiftKey&&""===this.value&&Date.now()-o<1500&&e.preventDefault()}),$("#dialog-signature [name='signatureID2_Alpha']").on("input",function(){3===this.value.length&&$("#dialog-signature [name='signatureID2_Numeric']").select()}),$("#dialog-signature [name='signatureID_Numeric'], #dialog-signature [name='signatureID2_Numeric']").on("input",function(){for(;!/^[0-9?]*$/g.test(this.value);)this.value=this.value.substring(0,this.value.length-1)}),$("#dialog-signature").parent().find("button:contains('Delete')").css({position:"absolute",left:"30px"}),$("#dialog-signature .signatureID, #dialog-signature .wormholeType").on("click",function(){$(this).select()}),$("#dialog-signature [name='leadsTo']").on("change",function(){s(document.getElementById("wormholeTypeQuickSelectFrom"),a),s(document.getElementById("wormholeTypeQuickSelectTo"),n)}),$("#leadsToQuickBar").on("click",e=>{let i=e.target;for(;"BUTTON"!==i.tagName;)i=i.parentElement;$("#dialog-signature [name='leadsTo']").val(i.value).change()}),$("#dialog-signature .wormholeType").on("input, change",function(){this.value.length>0&&-1!=e[this.value.toUpperCase()]&&"K162"!=this.value.toUpperCase()?($("#dialog-signature .wormholeType").not(this).val("K162"),appData.wormholes[this.value.toUpperCase()]&&$("#dialog-signature #durationPicker").val(60*appData.wormholes[this.value.toUpperCase()].life.substring(0,2)*60).change()):"K162"===this.value.toUpperCase()?(e[$("#dialog-signature .wormholeType").not(this).val().toUpperCase()]||"K162"===$("#dialog-signature .wormholeType").not(this).val().toUpperCase())&&$("#dialog-signature .wormholeType").not(this).val("????"):"????"==this.value&&$("#dialog-signature .wormholeType").not(this).val("K162")}),$("#dialog-signature").on("selectmenuchange","[name='signatureType']",function(){"wormhole"==this.value?($("#dialog-signature #site").slideUp(200,function(){$(this).hide(0),sigDialog.positionInViewport()}),$("#dialog-signature #wormhole").slideDown(200,function(){$(this).show(200,sigDialog.positionInViewport)})):($("#dialog-signature #site").slideDown(200,function(){$(this).show(200,sigDialog.positionInViewport)}),$("#dialog-signature #wormhole").slideUp(200,function(){$(this).hide(0),sigDialog.positionInViewport()})),ValidationTooltips.close()}),$("#form-signature").submit(function(i){i.preventDefault();var t=$(this).serializeObject(),a=!0;if(ValidationTooltips.close(),$.each($("#dialog-signature .signatureID:visible"),function(){if(this.value.length>0&&this.value.length<3)return ValidationTooltips.open({target:$(this)}).setContent("Must be 3 characters in length!"),$(this).select(),a=!1,!1}),!a)return!1;if(3===t.signatureID_Alpha.length&&3===t.signatureID_Numeric.length)for(var n in tripwire.client.signatures){const e=tripwire.client.signatures[n];if(e.id!=sigDialogVM.sigId&&e.signatureID==t.signatureID_Alpha.toLowerCase()+t.signatureID_Numeric&&e.systemID==sigDialogVM.viewingSystemID)return ValidationTooltips.open({target:$("#dialog-signature .signatureID:first")}).setContent("Signature ID already exists! "),$("#overwrite").focus(),a=!1,!1}if(!a)return!1;if($.each($("#dialog-signature .wormholeType:visible"),function(){if(this.value.length>0&&!e[this.value.toUpperCase()]&&"????"!=this.value)return ValidationTooltips.open({target:$(this)}).setContent("Must be a valid wormhole type!"),$(this).select(),a=!1,!1}),!a)return!1;if($.each($("#dialog-signature .leadsTo:visible"),function(){if(this.value.length>0&&-1==appData.genericSystemTypes.findIndex(e=>this.value.toLowerCase()===e.toLowerCase())&&!findSystemID(this.value))return ValidationTooltips.open({target:$(this)}).setContent("Must be a valid leads to system!"),$(this).select(),a=!1,!1}),!a)return!1;if($.each($("#dialog-signature .leadsTo:visible"),function(){if(this.value.length>0&&this.value.toLowerCase()===sigDialogVM.viewingSystem.name.toLowerCase())return ValidationTooltips.open({target:$(this)}).setContent("Wormhole cannot lead to the same system it comes from!"),$(this).select(),a=!1,!1}),!a)return!1;var s={},o=[];if("wormhole"===t.signatureType){var r={signatureID:t.signatureID_Alpha+t.signatureID_Numeric,systemID:sigDialogVM.viewingSystemID,type:"wormhole",name:t.wormholeName,lifeLength:t.signatureLength},l=wormholeAnalysis.targetSystemID(t.leadsTo,t.wormholeType),g={signatureID:t.signatureID2_Alpha+t.signatureID2_Numeric,systemID:l,type:"wormhole",name:t.wormholeName2,lifeLength:t.signatureLength},u=null,d=null;t.wormholeType.length>0&&e[t.wormholeType.toUpperCase()]&&"K162"!=t.wormholeType.toUpperCase()?(d="initial",u=t.wormholeType.toUpperCase()):t.wormholeType2.length>0&&e[t.wormholeType2.toUpperCase()]&&"K162"!=t.wormholeType2.toUpperCase()?(d="secondary",u=t.wormholeType2.toUpperCase()):"K162"==t.wormholeType.toUpperCase()?(d="secondary",u="????"):"K162"==t.wormholeType2.toUpperCase()&&(d="initial",u="????");var p={type:u,parent:d,life:t.wormholeLife,mass:t.wormholeMass};"update"==sigDialogVM.mode?(r.id=$("#dialog-signature").data("signatureid"),g.id=$("#dialog-signature").data("signature2id"),p.id=$("#dialog-signature").data("wormholeid"),tripwire.client.wormholes[p.id]&&(t.wormholeType.length>0&&e[t.wormholeType.toUpperCase()]&&"K162"!=t.wormholeType.toUpperCase()?(p.parent=tripwire.client.wormholes[p.id].initialID==r.id?"initial":"secondary",p.type=t.wormholeType.toUpperCase()):t.wormholeType2.length>0&&e[t.wormholeType2.toUpperCase()]&&"K162"!=t.wormholeType2.toUpperCase()?(p.parent=tripwire.client.wormholes[p.id].initialID==r.id?"secondary":"initial",p.type=t.wormholeType2.toUpperCase()):"K162"==t.wormholeType.toUpperCase()?(p.parent=tripwire.client.wormholes[p.id].initialID==r.id?"secondary":"initial",p.type="????"):"K162"==t.wormholeType2.toUpperCase()&&(p.parent=tripwire.client.wormholes[p.id].initialID==r.id?"initial":"secondary",p.type="????")),s=tripwire.signaturePayload.wormholeUpdatePayload(p,r,g),o.push(tripwire.signaturePayload.undoEntryFor(r.id))):s={signatures:{add:[{wormhole:p,signatures:[r,g]}]}}}else if("update"==sigDialogVM.mode){r={id:$("#dialog-signature").data("signatureid"),signatureID:t.signatureID_Alpha+t.signatureID_Numeric,systemID:sigDialogVM.viewingSystemID,type:t.signatureType,name:t.signatureName,lifeLength:t.signatureLength};s=tripwire.signaturePayload.signatureUpdatePayload(r),o.push(tripwire.signaturePayload.undoEntryFor(r.id))}else{s={signatures:{add:[r={signatureID:t.signatureID_Alpha+t.signatureID_Numeric,systemID:sigDialogVM.viewingSystemID,type:t.signatureType,name:t.signatureName,lifeLength:t.signatureLength}]}}}$("#dialog-signature").parent().find(":button:contains('Save')").button("disable");tripwire.refresh("refresh",s,function(e){e.resultSet&&1==e.resultSet[0].result&&($("#dialog-signature").dialog("close"),$("#undo").removeClass("disabled"),"add"==sigDialogVM.mode&&(o=e.results),sigDialogVM.viewingSystemID in tripwire.signatures.undo?tripwire.signatures.undo[sigDialogVM.viewingSystemID].push({action:sigDialogVM.mode,signatures:o}):tripwire.signatures.undo[sigDialogVM.viewingSystemID]=[{action:sigDialogVM.mode,signatures:o}],sessionStorage.setItem("tripwire_undo",JSON.stringify(tripwire.signatures.undo)))},function(){$("#sigEditForm input[type=submit]").removeAttr("disabled"),$("#dialog-signature").parent().find(":button:contains('Save')").button("enable")})})},open:function(){$("#dialog-signature").data("signatureid",""),$("#dialog-signature").data("signature2id",""),$("#dialog-signature").data("wormholeid",""),$("#dialog-signature input[type!='radio']").val(""),$("#dialog-signature [name='signatureType']").val("unknown").selectmenu("refresh"),$("#dialog-signature [name='wormholeLife'][value='stable']").prop("checked",!0),$("#dialog-signature [name='wormholeMass'][value='stable']").prop("checked",!0),$("#dialog-signature #site").show(),$("#dialog-signature #wormhole").hide(),$("#dialog-signature .sideLabel:first").text(sigDialogVM.viewingSystem.name+" Side"),$("#dialog-signature .sideLabel:last").text("Other Side"),$("#dialog-signature #durationPicker").val(60*options.signatures.pasteLife*60).change();var e=sigDialogVM.sigId;if("update"==sigDialogVM.mode&&e&&tripwire.client.signatures[e]){var i=tripwire.client.signatures[e];if($("#dialog-signature").data("signatureid",e),$("#dialog-signature").parent().find("button:contains('Add')").hide(),$("#dialog-signature").parent().find("button:contains('Save')").show(),$("#dialog-signature").parent().find("button:contains('Delete')").show(),$("#dialog-signature").dialog("option","title","Edit Signature"),"wormhole"==i.type){var t=$.map(tripwire.client.wormholes,function(i){if(i.initialID==e||i.secondaryID==e)return i})[0],a=e==t.initialID?tripwire.client.signatures[t.secondaryID]:tripwire.client.signatures[t.initialID];$("#dialog-signature").data("signature2id",a.id),$("#dialog-signature").data("wormholeid",t.id);const n=i.signatureID?i.signatureID.substr(0,3):"???";$("#dialog-signature input[name='signatureID_Alpha']").val(n),$("#dialog-signature input[name='signatureID_Numeric']").val(i.signatureID?i.signatureID.substr(3,5):""),$("#dialog-signature [name='signatureType']").val(i.type).selectmenu("refresh").trigger("selectmenuchange"),$("#dialog-signature [name='wormholeName']").val(i.name),$("#dialog-signature [name='leadsTo']").val(tripwire.systems[a.systemID]?tripwire.systems[a.systemID].name:appData.genericSystemTypes[a.systemID]?appData.genericSystemTypes[a.systemID]:""),$("#dialog-signature input[name='signatureID2_Alpha']").val(a.signatureID?a.signatureID.substr(0,3):"???"),$("#dialog-signature input[name='signatureID2_Numeric']").val(a.signatureID?a.signatureID.substr(3,5):""),$("#dialog-signature [name='wormholeName2']").val(a.name),$("#dialog-signature [name='wormholeLife'][value='"+t.life+"']").prop("checked",!0),$("#dialog-signature [name='wormholeMass'][value='"+t.mass+"']").prop("checked",!0),t[t.parent+"ID"]==i.id?$("#dialog-signature input[name='wormholeType']").val(t.type).change():t[t.parent+"ID"]==a.id&&$("#dialog-signature input[name='wormholeType2']").val(t.type).change(),$("#dialog-signature #durationPicker").val(i.lifeLength).change(),"???"!=n?$("#dialog-signature input[name='wormholeName']").select():$("#dialog-signature input[name='signatureID_Alpha']").select(),$("#dialog-signature [name='leadsTo']").change()}else $("#dialog-signature input[name='signatureID_Alpha']").val(i.signatureID?i.signatureID.substr(0,3):"???"),$("#dialog-signature input[name='signatureID_Numeric']").val(i.signatureID?i.signatureID.substr(3,5):""),$("#dialog-signature [name='signatureType']").val(i.type).selectmenu("refresh").trigger("selectmenuchange"),$("#dialog-signature [name='signatureName']").val(i.name),$("#dialog-signature #durationPicker").val(i.lifeLength).change(),$("#dialog-signature input[name='signatureID_Alpha']").select()}else $("#dialog-signature").parent().find("button:contains('Add')").show(),$("#dialog-signature").parent().find("button:contains('Delete')").hide(),$("#dialog-signature").parent().find("button:contains('Save')").hide(),$("#dialog-signature").dialog("option","title","Add Signature"),$("#dialog-signature [name='signatureType']").val(options.signatures.editType||"unknown").selectmenu("refresh"),"wormhole"===$("#dialog-signature [name='signatureType']").val()&&($("#dialog-signature #site").hide(),$("#dialog-signature #wormhole").show());sigDialog.positionInViewport()},close:function(){ValidationTooltips.close(),$("#sigTable tr.selected").removeClass("selected"),$("#dialog-signature").data("signatureid",""),$("#dialog-signature").data("signature2id",""),$("#dialog-signature").data("wormholeid","")}})},$("#sigTable tbody").on("dblclick","tr",{mode:"update",source:"sig-row"},sigDialog.openSignatureDialog),$("#edit-signature").on("click",{mode:"update",source:"edit-sig"},sigDialog.openSignatureDialog),$("#add-signature").click({mode:"add"},sigDialog.openSignatureDialog),sigDialog.overwriteSignature=function(e,i,t){var a={signatures:{remove:[]},systemID:viewingSystemID},n=[],s=tripwire.client.signatures[e];if("wormhole"!=s.type)n.push(s),a.signatures.remove.push(s.id);else{var o=$.map(tripwire.client.wormholes,function(e){if(e.initialID==s.id||e.secondaryID==s.id)return e})[0];n.push({wormhole:o,signatures:[tripwire.client.signatures[o.initialID],tripwire.client.signatures[o.secondaryID]]}),a.signatures.remove.push(o)}tripwire.refresh("refresh",a,function(e){$("#undo").removeClass("disabled"),viewingSystemID in tripwire.signatures.undo?tripwire.signatures.undo[viewingSystemID].push({action:"remove",signatures:n}):tripwire.signatures.undo[viewingSystemID]=[{action:"remove",signatures:n}],sessionStorage.setItem("tripwire_undo",JSON.stringify(tripwire.signatures.undo)),i(e)},t)},sigDialog.delegateSave=function(e){e.resultSet&&1==e.resultSet[0].result&&(ValidationTooltips.close(),$("#dialog-signature").parent().find(":button:contains('Save')")?$("#dialog-signature").parent().find(":button:contains('Save')").click():$("#dialog-signature").parent().find(":button:contains('Add')").click())},$(document).on("click","#overwrite",function(){$("#overwrite").attr("disable",!0),sigDialog.overwriteSignature($(this).data("id"),sigDialog.delegateSave,function(){$("#overwrite").removeAttr("disable")})}); //# sourceMappingURL=app.min.js.map diff --git a/public/js/app.min.js.map b/public/js/app.min.js.map index 2237dfa2..864f8897 100644 --- a/public/js/app.min.js.map +++ b/public/js/app.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["helpers.js","_registry.js","eve-scout.js","init.js","options.js","layout.js","tripwire.js","global-hooks.js","wormholeRendering.js","widget-inlinecomplete.js","systemAnalysis.js","favourite.js","invasions.js","guidance.js","systemRendering.js","chain-map-renderer-base.js","chain-map-renderer-orgchart-side.js","chain-map-renderer-orgchart-top.js","chain-map-renderer-orgchart.js","chain-map-renderer-radial.js","chain-map.js","guidance_profiles.js","systemPanel.js","active.js","addSignature.js","api.js","automapper.js","comments.js","deleteSignature.js","editSignature.js","esi.js","eve.js","genericSystemTypes.js","parse.js","paste.js","redo.js","serverStatus.js","signature-payload.js","sync.js","systemChange.js","tutorials.js","undo.js","activity-graph.js","command-palette.js","dialog-polish.js","editor.js","firefox-jquery-css-zoom.js","fw.js","header-ship.js","header.js","inline-wormhole-edit.js","keyboard-actions.js","mask-menu-dismiss.js","maskRendering.js","mass.js","panel-menu.js","panels.js","paste-button.js","pwa.js","sanitise-html.js","settings-characters.js","settings-panels.js","sig-align.js","signature-filter.js","system-compact.js","system-fit.js","theme-toggle.js","tracking.js","visibility-refresh.js","wormholeAnalysis.js","dialogs/admin-dialog.js","dialogs/base-dialog.js","dialogs/mask-dialog.js","dialogs/mass-dialog.js","dialogs/options-dialog.js","dialogs/ping-dialog.js","dialogs/signature-delete-dialog.js","dialogs/signature-dialog-keyboard.js","dialogs/signature-dialog.js"],"names":["Object","sort","obj","prop","swapped","prev","i","Number","tmp","index","val","cs","key","toLowerCase","find","$","fn","serializeObject","self","this","json","push_counters","patterns","validate","push","fixed","named","build","base","value","push_counter","undefined","each","serializeArray","test","name","k","keys","match","merge","reverse_key","pop","replace","RegExp","extend","jQuery","letterToNumbers","string","toUpperCase","letters","sum","length","Math","pow","indexOf","substr","positionRelativeTo","elem","ancestor","elemPos","getBoundingClientRect","ancestorPos","ancestorZoom","window","getComputedStyle","getPropertyValue","left","scrollLeft","top","scrollTop","lookupMultiple","map","propertyName","lookupString","suppress","values","split","results","v","r","join","originalAddClassMethod","addClass","originalRemoveClassMethod","removeClass","className","result","apply","arguments","trigger","mapDataSuppliers","suppliers","register","supplier","findLinks","Error","all","slice","eveScout","_EveScoutSignatureConnection","_this","links","active","options","chain","tabs","evescout","nodeNameSuffix","systemID","ids","ti","eveScoutLink","eveScoutID","id","nodeDefaults","life","remaining_hours","mass","out_system_id","assign","parent","parentID","signatureID","in_signature","type","wh_exits_outward","wh_type","child","nextChildID","in_system_id","out_signature","refresh","ajax","url","dataType","done","data","status","xhr","_","isEqual","console","info","redraw","fail","error","warn","setInterval","setTimeout","findSystemID","systemName","appData","systems","viewingSystem","attr","viewingSystemID","server","app_name","version","stop","location","init","masks","tripwire","maskRendering","update","saveTimer","localOverrides","localOptions","JSON","parse","localStorage","getItem","userID","character","characterID","characterName","background","uiscale","favorites","grid","tracking","characterOptions","corporationID","gridlines","aura","lineWeight","scrollWithoutCtrl","node-reference","zoom","sigNameLocation","routingLimit","routeSecurity","routeIgnore","enabled","renderer","nodeSpacing","x","y","signatures","editType","copySeparator","pasteLife","alignment","sigID","sigType","sigAge","leadsTo","sigLife","sigMass","buttons","follow","chainWidget","viewing","signaturesWidget","autoMapper","saveDelay","delay","clearTimeout","save","stringify","get","setItem","mode","load","set","set_tracking_text","local","constructor","reset","defaults","hasOwnProperty","oog","data-col","col","data-row","row","data-sizex","size_x","data-sizey","size_y","css","width","height","favorite","parseInt","home","kspace","inArray","chainZoomButton","a","href","hostname","pathname","search","html","filter","text","$tab","clone","append","guidance","clearCache","gridster","widget_selector","avoid_overlapped_widgets","widget_base_dimensions","widget_margins","autogrow_cols","helper","draggable","start","e","ui","resize","handle_class","min_size","$widget","serialize_params","$w","wgd","disable","disable_resize","visibility","click","hasClass","serialize","enable","enable_resize","timer","client","wormholes","list","undo","sessionStorage","redo","serverSignatureCount","activity","esi","refreshRate","refreshRateHidden","connected","ageFormat","instance","Date","getTime","sync","setAgeFormat","format","countdown","cookies","getCookie","c_name","c_value","document","cookie","c_start","c_end","unescape","substring","setCookie","exdays","exdate","setDate","getDate","escape","toUTCString","protocol","serverTime","time","chainMap","draw","pastEOL","since","layout","whTooltip","sig","item","tooltip","sig2Type","whType","Intl","NumberFormat","jump","ageTooltip","date","lifeTime","getMonth","getHours","getMinutes","createdByName","modifiedTime","modifiedByName","successCallback","alwaysCallback","getSystemIDsByNames","systemNames","parseFloat","toggleClass","abs","on","preventDefault","system","systemChange","source","target","previousElementSibling","navigator","clipboard","writeText","innerText","ctrlKey","originalEvent","wheelDelta","keydown","activeElement","is","metaKey","keyCode","getSelection","toString","output","signature","wormhole","initialID","secondaryID","otherSignature","genericSystemTypes","lifeLength","lifeLeft","focus","select","Notify","splice","getElementById","style","display","innerHTML","f","systemInfo","systemAnalysis","analyse","systemRendering","renderSystem","toggle","EVE","show","hide","isInPanel","content","color","stick","jBox","offset","animation","autoClose","ValidationTooltips","fade","Tooltips","attach","getContent","position","outside","SystemActivityToolTips","appendTo","reposition","repositionOnOpen","createOnInit","onOpen","targetPos","tooltipWidth","closest","container","offsetHeight","WormholeRouteToolTips","WormholeTypeToolTips","adjustDistance","responsiveWidth","OccupiedToolTips","pointer","minWidth","repositionOnContent","offsetWidth","setContent","cache","occupants","chars","b","shipTypeName","formatSignatureID","linkSig","sigName","sortable","items","axis","tolerance","containment","newTabs","setActiveTab","stopPropagation","dialog","Remove Tab","remove","l","Cancel","resizable","minHeight","dialogClass","OK","submit","open","close","create","inlinecomplete","aSigSystems","maxSize","thera","checked","eq","contextmenu","delegate","menu","event","my","at","of","children","colName","cmd","beforeOpen","effect","duration","nodeElem","showInfo","setDestination","characterId","characters","collapsed","collapse","existingTabIndex","newTab","wormholeID","class","existingTab","menuElem","moogle","prototype","setFlare","flare","flares","removeFlare","tablesorter","sortReset","widgets","textExtraction","2","node","shiftKey","nextUntil","addBack","add","autoOpen","Ok","easing","wormholeRendering","formatEndTypes","types","override","Array","isArray","overrideSystem","eligibleTypes","genericSystemType","systemTypeClass","systemTypeName","renderWormholeType","from","renderMass","trunc","widget","autocomplete","_create","_coerceSource","element","_selectInit","_super","_value","originalReturn","_superApply","change","_suggest","bind","_initSource","request","response","matcher","escapeRegex","term","dataSource","extraMatchFunction","extraMatch","label","_renderItem","ul","renderResult","renderers","_close","input_source","addToSelect","select_added_value","select_source","unshift","removeFromSelect","wrapper","selectItemMapper","select_item_mapper","trim","toArray","_createShowAllButton","that","wasOpen","button","icons","primary","customDropdown","_search","wormholeType","mutators","classForTypeName","addMutator","m","leadsToPointer","nodeClass","nodeSecurity","nodeFaction","security","factionID","getDummySystem","baseSecurity","pathSymbol","systemTypeModifiers","forEach","mutate","effectClass","mutator_favourite","_FavouriteMutator","invasions","_Invasions","pathSymbolMap","stellar_reconnaissance","triglavian_minor_victory","escalating_liminality","final_liminality","edencom_minor_victory","redoubt","bulwark","fortress","textMap","keyBy","system_id","derived_security_status","updated_at","system_name","system_security","system_sovereignty","systemInvasion","tip","sorter","adjustCostForOptions","mapCost","toSystem","adjustJumpCost","to","cost","Guidance","jumpCostModifiers","reduce","modifier","findPaths","end","limit","endsInStart","costs","0","predecessors","addToOpen","vertex","bucket","shift","currentCost","adjacentNodes","vertexText","totalCost","vertexCost","extractShortest","nodes","u","predecessor","reverse","kSpaceCache","findShortestPath","cacheKey","cachedPath","connections","closed","renderPath","path","systemMarkup","s","securityClass","sec","secText","isFinite","toFixed","String","renderEffect","tag","ChainMapRendererBase","owner","ready","drawing","switchTo","newDiv","createElement","appendChild","switchFrom","div","parentNode","removeChild","mapData","updateCollapsed","drawInner","lines","arcFactor","level","calcMinArc","maps","nodesById","ri","rows","inNode","c","mapNode","minArc","newMap","circles","arc","circle","connection","styles","concat","markup","requestedSize","measureNode","mi","ci","ni","minForNode","mapDiv","innerContainer","firstChild","range","initialRads","bounds","makeDivsForRing","radRange","min","max","domNode","chainParent","previousScroll","rootNode","rootSystemID","rootChanged","lastCentredSystemID","finalPositions","w","h","cx","cy","centringOptions","parentWidth","parentHeight","outerContainer","canvas","getElementsByTagName","ctx","getContext","scale","translate","maxCi","drawGridlines","lineWeightFactor","drawConnections","lineWidth","auraColor","propertyFromCssClass","shadowBlur","shadowColor","strokeStyle","ai","stroke","restore","setLineDash","dashed","scrollIntoView","block","inline","drawFunction","beginPath","moveTo","drawConnection","minRad","maxRad","parentCollapsed","rads_per_arc","acc","rad_offset","getNodeRadialPosition","dr","rad_centre","alignment_delta","adjustAlignmentDelta","skipLevels","frag","createRange","createContextualFragment","dblclick","nodeRadialPosition","setPosition","excess","nextBounds","PI","lineTo","root_node","property","cssText","body","ChainMapRendererOrgchartSide","GRID_SIZE","project","rad","cp1","cp2","bezierCurveTo","fillStyle","font","fillText","ChainMapRendererOrgchartTop","arcFromSize","endpoint_y","ChainMapRendererOrgchart","google","visualization","OrgChart","allowHtml","allowCollapse","size","events","addListener","collapseHandler","DataView","DataTable","cols","charts","setOnLoadCallback","newView","nodeId","nodeVal","updateLines","drawNodeLine","addModes","jquerySelector","prefixes","doModeClasses","removeModes","classFunc","prefix","$node","nodeIndex","ceil","cellIndex","$connector","$parent","nodeCol","connectorCell","colSpan","parentIndex","newparentIndex","checkSystem","$connecte","me","tempCol","breaker","skip","lastLineData","getCollapsedNodes","collapsedSystems","ChainMapRendererRadial","CIRCLE_SIZE","first_ring_delta","ringX","ringY","radToCartesian","sin","theta","cos","skipped","radPosition","ellipse","view","orgChart","orgChartTop","orgChartSide","radial","useRenderer","elements","querySelectorAll","getAttribute","shipJumps","podKills","shipKills","npcKills","getElementsByClassName","jumps","setAttribute","pods","ships","npcs","attachedElements","detach","occupied","count","next","topLevel","tab","makeSystemNode","whId","inSigId","nodeTypeMarkup","additionalClasses","systemType","systemNameText","chainNode","statics","shortCodeMap","High-Sec","Low-Sec","Null-Sec","Triglavian","Class-1","Class-2","Class-3","Class-4","Class-5","Class-6","classMap","H","L","N","▼","formatStatics","makeCalcChildNode","childID","targetSystem","shortest","calcNode","calculated","nth","chainList","connectedTo","addCalcChildNodes","chainLinks","regionID","chainData","usedLinks","sig1","sig2","sig1Type","parentType","childType","floor","random","sigIndex","supplierNodes","supplierNode","thirdParty","systemsInChainMap","sigText","modifiers","connectionWormhole","wormholeAnalysis","wormholeFromTypePair","likelyWormhole","parentModifiers","chainModifiers","p","cm","parentPathHome","pathHome","exits","newIndex","rawMap","drawRetryTimer","systemPanel","expires","universeJumps","getResponseHeader","ship_jumps","then","universeKills","pod_kills","ship_kills","npc_kills","guidance_profiles","blueLootSystems","chainExits","renderRoute","targets","addPathHome","cssClass","categoryText","inChain","exitSystem","n","editSigs","editComments","editSig","editComment","$row","hidden","animate","backgroundColor","fadeIn","fadeOut","makeSigInfo","wh","wormholeTypeText","formattedType","lifeText","critical","stable","addSig","option","disabled","returnLinkText","sigInfo","leadsToText","tr","until","moment","utc","toDate","onExpiry","alwaysExpire","compact","serverSync","wrapInner","slideDown","$set","replaceWith","contents","setReturnSig","sigToRemoveId","sigToUpdate","returnSig","sigToRemove","sigDialog","overwriteSignature","payload","API","indicator","APIrefresh","expire","periodsToSeconds","onTick","t","automapState","pendingDecision","wormholesForJump","toType","toClass","holeTargetTypeName","holeClasses","log","noMapSystems","stationID","shipTypeID","initial","secondary","automap","title","signature2","resultSet","formatSystem","empty","trElem","action","comments","sanitise","sanitiseHtml","modified","$comment","comment","err","message","sticky","commentID","before","created","deleteSig","removeRow","slideUp","edit","locationTimer","shipTimer","onlineTimer","baseUrl","userAgent","oauth","subject","accessToken","isExpired","tokenExpire","subtract","isBefore","updateTracking","stationName","shipID","shipName","massOptions","expired","param","token","user_agent","jqXHR","locationDate","solar_system_id","station_id","stationLookup","always","reference","ship","shipDate","ship_item_id","resetMassOptions","ship_name","ship_type_id","typeLookup","online","characterStatus","typeID","destinationID","clear_waypoints","beginning","destination_id","clear_other_waypoints","add_to_beginning","headers","Authorization","X-User-Agent","targetID","target_id","eveStatus","idLookup","eveIDs","contentType","processData","characterLookup","eveID","async","corporationLookup","allianceLookup","searchString","categories","strict","fullLookup","promise","Deferred","category","characterData","corporation_id","corporationData","corporation","alliance_id","allianceData","alliance","resolve","parseOauth","_data","$clone","removeAttr","characterChange","updateSignatureTable","newSigsInSystem","mask","column","editing","sigEditing","currentSystem","signatureCount","updateReturnStatus","wormholeId","returnSigId","needReturn","pasteSignatures","processing","rowParse","scanner","columns","validScanGroups","validTypes","Combat Site","Data Site","Gas Site","Ore Site","Relic Site","Wormhole","Site de combat","Site de données","Site de collecte de gaz","Site de minerai","Site de reliques","Trou de ver","Kampfgebiet","Datengebiet","Gasgebiet","Mineraliengebiet","Reliktgebiet","Wurmloch","戦闘サイト","データサイト","ガスサイト","鉱石サイト","遺物サイト","ワームホール","전투 사이트","데이터 사이트","가스 사이트","채광 사이트","유물 사이트","웜홀","Боевой район","Информационный район","Газовый район","Астероидный район","Археологический район","Червоточина","scanGroup","parsePaste","paste","pasteIDs","removes","scan","clipboardData","getData","blur","lastIndex","redoItem","serverStatus","players","times","updateServerTime","signaturePayload","signatureRecord","wormholeRecord","wormholeForSignature","sigId","holes","wormholeUpdatePayload","sigA","sigB","undoEntryFor","signatureUpdatePayload","recordUndo","entries","changeWormhole","changes","maxTimeByProperty","maxTime","maxTimeString","sentAction","forceFullSync","signatureTime","flareCount","flareTime","last_modified","commentCount","commentTime","o","wormholeInitialIDs","wormholeSecondaryIDs","notify","discord_integration","history","replaceState","effects","bad","whClass","securityText","HS","LS","NS","Trig","fw","factionMarkup","fi","encodeURIComponent","regions","tutorial","introJs","setOptions","showStepNumbers","steps","querySelector","intro","exitOnEsc","exitOnOverlayClick","skipLabel","onchange","_currentStep","previousMask","stepFunc","_options","setOption","exiting","exit","goToStep","off","onexit","undoItem","graph","span","role","calc","d","getValue","sourceColumn","short","setColumns","withData","some","$g","clearChart","sparse","tokens","systemFit","graphHeight","chartArea","right","bottom","legend","renderLegend","toggleSeries","$bar","$legend","prependTo","colours","podkills","pod","shipkills","npckills","npc","createTextNode","selectHandler","selections","documentElement","line","axisLine","buildOptions","fontName","fontSize","isStacked","colors","areaOpacity","pointSize","series","1","3","interpolateNulls","hAxis","textStyle","showTextEvery","baselineColor","vAxis","viewWindowMode","viewWindow","maxValue","minorGridlines","showColorCode","focusTarget","crosshair","orientation","opacity","AreaChart","retheme","keep","every","$palette","$input","$list","$help","cursor","render","query","q","keyboard","actions","selectionActions","chainTabActions","maskActions","panelActions","group","systemActions","candidates","destructive","move","delta","run","perform","isOpen","bindings","does","isTyping","altKey","commentSortHandler","sortOrder","sortElem","containerElem","nextSort","flexDirection","removeAllRanges","editor","inst","$this","same","modifiedDate","createdDate","destroy","Delete","PRIMARY","DESTRUCTIVE","QUIET","instances","TOOLS","sep","COLOURS","$host","$wrap","prompt","execCommand","colour","$area","cb","after","onReady","parts","host","wrap","area","discard","cssNumber","cssHooks","computed","extra","$e","clientWidth","clientHeight","transform","transformOrigin","bot","marginBottom","marginRight","_FactionWarfare","listeners","SamanuniAthounonGateOpen","occupier_faction_id","factions","contested","victory_points","victory_points_threshold","$el","MutationObserver","opts","childList","subtree","attributes","observe","FIELDS","5","6","$td","field","$pop","opt","current","built","round","innerWidth","outerWidth","$tr","pending","control","selector","panels","isVisible","$m","$rows","whs","out","$t","renderMask","global","personal","corporate","ownerType","newActive","activeMask","joined","joinedBy","addEventListener","maskFunctions","updateActiveMask","higgs","$btn","$menu","PANELS","defaultVisible","store","saved","call","def","order","known","setVisible","$controls","first","prepend","dir","j","__tripwirePasteIngest","ingest","fallback","readText","SCAN","KEY","deferred","standalone","matchMedia","matches","dismiss","dismissed","$tip","userChoice","serviceWorker","catch","MSStream","tripwireInstallTip","removeItem","ALLOWED_TAGS","em","strong","strike","sub","sup","br","hr","pre","blockquote","h1","h2","h3","h4","h5","h6","ol","li","table","thead","tbody","td","th","img","ALLOWED_ATTRS","*","rel","face","colspan","rowspan","src","alt","SAFE_URL","UNSAFE_CSS","cleanNode","nodeType","tagName","permitted","cleanStyle","removeAttribute","childNodes","insertBefore","doc","DOMParser","parseFromString","settingsCharacters","isActive","$meta","$acts","exec","esiDelete","settingsPanels","defs","movable","$sw","COLS","sigAlign","sigFilter","$stats","STORE","GROUPS","ACTIVITY","combat","relic","gas","ore","state","raw","groups","isScanned","wormholeFor","sigs","total","unscanned","scanned","groupOk","scanOk","cycleScan","$wrapper","$chips","g","$ranges","$links","ROW","ROW_CAP","appliedRow","rowKey","innerHeight","storedRow","panel","px","others","paddingTop","paddingBottom","gap","rowGap","visible","ks","marginTop","fitRow","need","wanted","storeRow","setProperty","box","drawn","rest","over","avail","classList","contains","schedule","requestAnimationFrame","remembered","ResizeObserver","ro","themeToggle","media","effective","theme","paint","dark","aria-label","charOptions","defaultCharacterOptions","showShip","textContent","dataset","characterid","wasActive","delete","objAndKey","targetSystemID","systemText","lookupText","findIndex","eligibleWormholeTypes","sourceDef","targetDef","coerce","possibleSystems","exclusions","genericTypes","genericType","systemTypeMatch","wt","notFrom","notLeadsTo","dummyWormholes","GATE","SML","dummy","MED","LRG","XLG","type1","type2","system1","system2","class1","class2","isHighClass","classes","isKSpace","inferKSpace","refreshTimer","$total","$ajax","refreshWindow","abort","$col","modal","Close","$menuItem","sortList","parentElement","getMasks","iconBar","optional","admin","afterFunction","maskChange","Save","joinMask","maskID","completeFunction","Confirm","makeAccessListNode","extraAttributes","maskElem","send","Create","selectmenu","Add","getMassClass","jumpMass","parseMassData","totalMass","smallMass","mediumMass","largeMass","xlMass","shipData","originalMass","shipFlagsText","shipType","shipFlags","massClass","typeName","toID","fromSystem","massData","massMarkup","slider","Reset","stats","system_visits","account","logins","lastLogin","username","setUpSlider","step","slide","direction","sendPing","pingType","confirm","Send","@here","@everyone","fromSignature","openDeleteDialog","vm","successFunction","deleteDialogVM","SIG","requiredFields","names","$f","markMissing","saveAndNext","afterId","sigDialogVM","hole","nextUnfinished","openSignatureDialog","attempted","$r","fields","$name","focusFirstUnfilled","aSigWormholes","K162","getTargetName","sigTypeDropdownFiller","extractor","eligible","sigTypeFromFiller","sigTypeToFiller","updateQuickSelect","filler","tabIndex","durationPicker","numeric","autoAdvancedAt","now","not","form","valid","signatureID_Alpha","signatureID_Numeric","sigKey","existing","signatureType","wormholeName","signatureLength","signatureID2_Alpha","signatureID2_Numeric","wormholeName2","wormholeType2","wormholeLife","wormholeMass","signatureName","sigAlpha","delegateSave"],"mappings":"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","file":"app.min.js","sourcesContent":["Object.sort = function(obj, prop) {\n\tvar swapped, prev;\n\tdo {\n\t\tswapped = false, prev = null;\n\t\tfor (var i in obj) {\n\t\t\tif (prev && Number(obj[i][prop]) < Number(obj[prev][prop])) {\n\t\t\t\tvar tmp = obj[i];\n\t\t\t\tobj[i] = obj[prev];\n\t\t\t\tobj[prev] = tmp;\n\t\t\t\tswapped = true;\n\t\t\t}\n\t\t\tprev = i;\n\t\t}\n\t} while (swapped);\n}\n\nObject.index = function(obj, prop, val, cs) {\n\tfor (var key in obj) {\n\t\tif (!cs && obj[key][prop] == val) {\n\t\t\treturn key;\n\t\t} else if (obj[key][prop] && obj[key][prop].toLowerCase() == val.toLowerCase()) {\n\t\t\treturn key;\n\t\t}\n\t}\n}\n\nObject.find = function(obj, prop, val, cs) {\n\tfor (var key in obj) {\n\t\tif (!cs && obj[key][prop] == val) {\n\t\t\treturn obj[key];\n\t\t} else if (obj[key][prop] && obj[key][prop].toLowerCase && obj[key][prop].toLowerCase() == val.toLowerCase()) {\n\t\t\treturn obj[key];\n\t\t}\n\t}\n\n\treturn false;\n};\n\n(function($){\n $.fn.serializeObject = function(){\n\n var self = this,\n json = {},\n push_counters = {},\n patterns = {\n \"validate\": /^[a-zA-Z][a-zA-Z0-9_]*(?:\\[(?:\\d*|[a-zA-Z0-9_]+)\\])*$/,\n \"key\": /[a-zA-Z0-9_]+|(?=\\[\\])/g,\n \"push\": /^$/,\n \"fixed\": /^\\d+$/,\n \"named\": /^[a-zA-Z0-9_]+$/\n };\n\n\n this.build = function(base, key, value){\n base[key] = value;\n return base;\n };\n\n this.push_counter = function(key){\n if(push_counters[key] === undefined){\n push_counters[key] = 0;\n }\n return push_counters[key]++;\n };\n\n $.each($(this).serializeArray(), function(){\n\n // skip invalid keys\n if(!patterns.validate.test(this.name)){\n return;\n }\n\n var k,\n keys = this.name.match(patterns.key),\n merge = this.value,\n reverse_key = this.name;\n\n while((k = keys.pop()) !== undefined){\n\n // adjust reverse_key\n reverse_key = reverse_key.replace(new RegExp(\"\\\\[\" + k + \"\\\\]$\"), '');\n\n // push\n if(k.match(patterns.push)){\n merge = self.build([], self.push_counter(reverse_key), merge);\n }\n\n // fixed\n else if(k.match(patterns.fixed)){\n merge = self.build([], k, merge);\n }\n\n // named\n else if(k.match(patterns.named)){\n merge = self.build({}, k, merge);\n }\n }\n\n json = $.extend(true, json, merge);\n });\n\n return json;\n };\n})(jQuery);\n\nvar letterToNumbers = function(string) {\n string = string.toUpperCase();\n var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', sum = 0, i;\n for (i = 0; i < string.length; i++) {\n sum += Math.pow(letters.length, i) * (letters.indexOf(string.substr(((i + 1) * -1), 1)) + 1);\n }\n return sum;\n};\n\n/** Find the relative position of one element within the hierarchy tree of another.\nThe client position should be in the coordinate space of the ancestor, i.e. top/left values for a position:absolute overlay */\nfunction positionRelativeTo(elem, ancestor) {\n\tconst elemPos = elem.getBoundingClientRect(),\n\t\tancestorPos = ancestor.getBoundingClientRect(),\n\t\tancestorZoom = 1 * (window.getComputedStyle(ancestor).getPropertyValue('zoom') || '1');\n\treturn { \n\t\tleft: ((elemPos.left - ancestorPos.left) / ancestorZoom) + ancestor.scrollLeft,\n\t\ttop: ((elemPos.top - ancestorPos.top) / ancestorZoom) + ancestor.scrollTop\n\t};\n}\n\n/** Look up one or more values in a comma separated string as keys in a data map, and return a property from the results in a new comma separated string.\nConvenience function for UI mapping.\nWill throw a failure message, unless suppress=true in which case it will return undefined, if \nany of the lookups fail to resolve. */\nfunction lookupMultiple(map, propertyName, lookupString, suppress) {\n\tconst values = lookupString.split(',');\n\tconst results = [];\n\tfor(var i = 0; i < values.length; i++) {\n\t\tconst v = values[i];\n\t\tconst r = map[v];\n\t\tif(!r) { \n\t\t\tif(suppress) { return undefined;}\n\t\t\telse { throw 'Value ' + v + ' did not match anything in ' + map; }\n\t\t}\n\t\tresults.push(r[propertyName]);\n\t}\n\treturn results.join(',');\n}\n\n// Global CSS class change event\n(function($) {\n var originalAddClassMethod = $.fn.addClass;\n\tvar originalRemoveClassMethod = $.fn.removeClass;\n\n $.fn.addClass = function(className) {\n // Execute the original method.\n var result = originalAddClassMethod.apply(this, arguments);\n\n // trigger a custom event\n this.trigger('classchange', className);\n\n // return the original result\n return result;\n }\n\n\t$.fn.removeClass = function(className) {\n // Execute the original method.\n var result = originalRemoveClassMethod.apply(this, arguments);\n\n // trigger a custom event\n this.trigger('classchange', className);\n\n // return the original result\n return result;\n }\n})(jQuery);\n\n","// Registry of third-party map data suppliers.\n//\n// The directory name always implied a set, but chain-map.js hard-coded\n// `thirdPartySuppliers = [ eveScout ]`, so adding a source meant editing core.\n// A supplier now registers itself and the chain map asks the registry, which\n// is what lets a corp-specific intel feed or a second scout source be added as\n// one file.\n//\n// Deliberately a bare global rather than a property of `tripwire`: the build\n// loads app/js/map-data-suppliers/*.js before app/js/tripwire.js, so that\n// object does not exist yet. Same reason eveScout itself is a bare const.\n\nvar mapDataSuppliers = (function() {\n\tvar suppliers = [];\n\n\treturn {\n\t\t// A supplier must implement findLinks(systemID, ids) -> array of\n\t\t// connections; ids carries a parent id and a child id to increment per\n\t\t// connection. active() is optional and defaults to always on.\n\t\tregister: function(supplier) {\n\t\t\tif (!supplier || typeof supplier.findLinks !== \"function\") {\n\t\t\t\tthrow new Error(\"Map data supplier must implement findLinks(systemID, ids)\");\n\t\t\t}\n\t\t\tsuppliers.push(supplier);\n\t\t\treturn supplier;\n\t\t},\n\n\t\tall: function() { return suppliers.slice(); }\n\t};\n})();\n","const eveScout = mapDataSuppliers.register(new _EveScoutSignatureConnection());\n\nfunction _EveScoutSignatureConnection() {\n\tconst _this = this;\n\t\n\tthis.links = [];\n\t\n\tthis.active = function() {\n\t\treturn 'undefined' !== typeof options && options.chain.tabs[options.chain.active] && options.chain.tabs[options.chain.active].evescout;\n\t}\n\t\n\tthis.nodeNameSuffix = 'eve-scout';\n\t\n\tthis.findLinks = function(systemID, ids) {\n\t\tif(!this.active()) { return []; }\n\t\t\n\t\tconst r = [];\n\t\tfor(var ti = 0; ti < this.links.length; ti++) {\n\t\t\tconst eveScoutLink = this.links[ti];\n\t\t\tconst eveScoutID = 'ES-' + eveScoutLink.id;\n\t\t\t\n\t\t\tconst nodeDefaults = {\n\t\t\t\tlife: eveScoutLink.remaining_hours >= 4 ? 'stable' : 'critical',\n\t\t\t\tmass: 'stable',\t// they no longer attempt to track mass\n\t\t\t\tid: eveScoutID,\n\t\t\t};\n\t\t\t\n\t\t\tif(eveScoutLink.out_system_id == systemID) {\t// Connection from this hole\n\t\t\t\tr.push(Object.assign({\n\t\t\t\t\t\n\t\t\t\t\tparent: {\n\t\t\t\t\t\tid: ids.parentID,\n\t\t\t\t\t\tsystemID: systemID,\n\t\t\t\t\t\tsignatureID: eveScoutLink.in_signature,\n\t\t\t\t\t\ttype: eveScoutLink.wh_exits_outward ? eveScoutLink.wh_type : 'K162'\n\t\t\t\t\t},\tchild: {\n\t\t\t\t\t\tid: ids.nextChildID++,\n\t\t\t\t\t\tsystemID: eveScoutLink.in_system_id,\n\t\t\t\t\t\tsignatureID: eveScoutLink.out_signature,\n\t\t\t\t\t\ttype: eveScoutLink.wh_exits_outward ? 'K162' : eveScoutLink.wh_type\n\t\t\t\t\t}\n\t\t\t\t}, nodeDefaults));\n\t\t\t} else if(eveScoutLink.in_system_id == systemID) { // Connection to this hole\n\t\t\t\tr.push(Object.assign({\n\t\t\t\t\tparent: {\n\t\t\t\t\t\tid: ids.parentID,\n\t\t\t\t\t\tsystemID: systemID,\n\t\t\t\t\t\tsignatureID: eveScoutLink.out_signature,\n\t\t\t\t\t\ttype: eveScoutLink.wh_exits_outward ? 'K162' : eveScoutLink.wh_type\n\t\t\t\t\t},\tchild: {\n\t\t\t\t\t\tid: ids.nextChildID++,\n\t\t\t\t\t\tsystemID: eveScoutLink.out_system_id,\n\t\t\t\t\t\tsignatureID: eveScoutLink.in_signature,\n\t\t\t\t\t\ttype: eveScoutLink.wh_exits_outward ? eveScoutLink.wh_type : 'K162'\n\t\t\t\t\t}\n\t\t\t\t}, nodeDefaults));\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn r;\n\t}\n\t\n\t/** Refresh the signature data from the public Eve-Scout API */\n\tthis.refresh = function() {\n\t\tif(!_this.active()) {\n\t\t\treturn;\t// only look for Thera data if on a tab with the option selected\n\t\t}\n\t\t\n\t\t$.ajax({\n\t\t\turl: 'cached_third_party.php?key=eve-scout-signatures',\n\t\t\ttype: \"GET\",\n\t\t\tdataType: \"JSON\"\n\t\t}).done(function(data, status, xhr) {\t\n\t\t\tif(!_.isEqual(data, _this.links)) {\n\t\t\t\tconsole.info('Updating map for EvE Scout update');\n\t\t\t\t_this.links = data;\n\t\t\t\tchain.redraw();\n\t\t\t}\n\t\t}).fail(function(xhr, status, error) {\n\t\t\tconsole.warn('Failed to fetch signatures from eve-scout.com: ' + status, error);\n\t\t});\n\t};\n\t\n\tsetInterval(this.refresh, 60000);\n\tsetTimeout(this.refresh, 0);\n}","function findSystemID(systemName) {\n\tfor(let k in appData.systems) {\n\t\tif(appData.systems[k].name.toUpperCase() === systemName.toUpperCase()) return k; \n\t}\n\treturn undefined;\n}\n\nvar viewingSystem = $(\"meta[name=system]\").attr(\"content\");\nvar viewingSystemID = findSystemID(viewingSystem);\nvar server = $(\"meta[name=server]\").attr(\"content\");\nvar app_name = $(\"meta[name=app_name]\").attr(\"content\");\nvar version = $(\"meta[name=version]\").attr(\"content\");\n\n// Reload with default system if it was invalid\nif(!viewingSystemID) { window.stop(); window.location = '?system=Jita'; }\n\n// Use this to test performance of javascript code lines\n// var startTime = window.performance.now();\n// console.log(\"stint: \"+ (window.performance.now() - startTime));\n\nif(init.masks) {\n\tsetTimeout(() => {\n\t\ttripwire.masks = init.masks;\n\t\tmaskRendering.update(tripwire.masks);\n\t}, 0);\t// so maskRendering exists when it gets called\n}\n","var options = new function() {\n\tvar localOverrides = [\"grid\"];\n\tvar localOptions = JSON.parse(localStorage.getItem(\"tripwire_options\"));\n\tvar saveTimer;\n\n\tthis.userID = init.userID;\n\tthis.character = {id: init.characterID, name: init.characterName};\n\tthis.background = null;\n\tthis.uiscale = 1.0;\n\tthis.favorites = [];\n\tthis.grid = {};\n\tthis.tracking = {active: \"new\", characterOptions: {}};\n\tthis.masks = {active: init.corporationID + \".2\"};\n\tthis.chain = {gridlines: true, aura: true, lineWeight: 1.0, scrollWithoutCtrl: false, active: 0, tabs: [], \"node-reference\": \"type\", zoom: 1.0, sigNameLocation: 'name', routingLimit: 15, routeSecurity: 'shortest', routeIgnore: { enabled: false, systems: [ 'Tama', 'Rancer' ] }, renderer: 'radial', nodeSpacing: { x: 1.0, y: 1.0 } };\n\tthis.signatures = {editType: \"unknown\", copySeparator: \",\", pasteLife: 72, alignment: {sigID: \"leftAlign\", sigType: \"leftAlign\", sigAge: \"leftAlign\", leadsTo: \"leftAlign\", sigLife: \"rightAlign\", sigMass: \"rightAlign\"}};\n\tthis.buttons = {follow: false, chainWidget: {viewing: false, favorites: false}, signaturesWidget: {autoMapper: false}};\n\n\tthis.saveDelay = function(delay) {\n\t\tif (saveTimer) clearTimeout(saveTimer);\n\n\t\tsaveTimer = setTimeout(\"options.save()\", delay);\n\t};\n\n\t// Saves options in both cookie and database\n\tthis.save = function() {\n\t\tvar options = JSON.stringify(window.options.get());\n\n\t\tlocalStorage.setItem(\"tripwire_options\", options);\n\n\t\treturn $.ajax({\n\t\t\turl: \"options.php\",\n\t\t\tdata: {mode: \"set\", options: options},\n\t\t\ttype: \"POST\",\n\t\t\tdataType: \"JSON\"\n\t\t});\n\t};\n\n\t// Loads options via passed object else cookie\n\tthis.load = function(data) {\n\t\tif (data && typeof(data) != \"undefined\") {\n\t\t\tthis.set(this, data);\n\t\t} else if (localOptions) {\n\t\t\tthis.set(this, localOptions);\n\t\t}\n\n\t\tthis.apply();\n\t\tif(tripwire) { set_tracking_text(); }\n\t};\n\n\t// Gets options from this by exluding types == function\n\tthis.get = function() {\n\t\tvar data = {};\n\n\t\tfor (var x in this) {\n\t\t\tif (typeof(this[x]) != \"function\") {\n\t\t\t\tdata[x] = this[x];\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t};\n\n\t// Sets this from passed object\n\tthis.set = function(local, data) {\n\t\tfor (var prop in data) {\n\t\t\tif (data[prop] && data[prop].constructor && data[prop].constructor === Object) {\n\t\t\t\tif (local) {\n\t\t\t\t\tif(typeof(local[prop]) === 'undefined') { local[prop] = {}; }\n\t\t\t\t\tthis.set(local[prop], data[prop]);\n\t\t\t\t}\n\t\t\t} else if (local) {\n\t\t\t\tlocal[prop] = data[prop];\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.reset = function() {\n\t\tfor (var x in this) {\n\t\t\tif (typeof(this[x]) != \"function\") {\n\t\t\t\tthis[x] = JSON.parse(JSON.stringify(this.reset.defaults[x]));\n\t\t\t}\n\t\t}\n\t};\n\n\t// Applies settings\n\tthis.apply = function() {\n\t\t// Local browser overrides\n\t\tif (localOptions) {\n for (key in localOverrides) {\n this[localOverrides[key]] = localOptions[localOverrides[key]];\n\t\t\t}\n\t\t}\n\n\t\t// Grid layout (detect old IGB setting options)\n\t\tif (this.grid.hasOwnProperty(\"oog\") && Object.keys(this.grid.oog||{}).length) {\n\t\t\t$.each(this.grid.oog, function() {\n\t\t\t\t$(\"#\"+this.id).attr({\"data-col\": this.col, \"data-row\": this.row, \"data-sizex\": this.size_x, \"data-sizey\": this.size_y})\n\t\t\t\t\t.css({width: this.width, height: this.height});\n\t\t\t});\n\t\t} else if (Object.keys(this.grid||{}).length) {\n\t\t\t$.each(this.grid, function() {\n\t\t\t\t$(\"#\"+this.id).attr({\"data-col\": this.col, \"data-row\": this.row, \"data-sizex\": this.size_x, \"data-sizey\": this.size_y})\n\t\t\t\t\t.css({width: this.width, height: this.height});\n\t\t\t});\n\t\t}\n\n\t\t// Make sure favorites are all ints and not strings\n\t\tthis.favorites = $.map(this.favorites, function(favorite) {\n\t\t\treturn parseInt(favorite);\n\t\t});\n\n\t\t// Buttons\n\t\tif (this.buttons.follow) $(\"#follow\").addClass(\"active\");\n\t\tif (this.buttons.chainWidget.home) $(\"#home\").addClass(\"active\");\n\t\tif (this.buttons.chainWidget.kspace) $(\"#k-space\").addClass(\"active\");\n\t\tif (this.buttons.chainWidget.viewing) $(\"#show-viewing\").addClass(\"active\");\n\t\tif (this.buttons.chainWidget.favorites) $(\"#show-favorite\").addClass(\"active\");\n\t\tif (this.buttons.chainWidget.evescout) $(\"#eve-scout\").addClass(\"active\");\n\t\tif ($.inArray(parseInt(viewingSystemID), this.favorites) !== -1) $(\"#system-favorite\").attr(\"data-icon\", \"star\").addClass(\"active\");\n\t\tif (this.buttons.signaturesWidget.autoMapper) $(\"#toggle-automapper\").addClass(\"active\");\n\n\t\t// UI Scale\n\t\tif (this.uiscale) {\n\t\t\t$(\"body\").css(\"zoom\", this.uiscale);\n\t\t}\n\n\t\t// Chain zoom\n\t\tif (this.chain.zoom) {\n\t\t\t$(\"#chainParent\").css(\"zoom\", this.chain.zoom);\n\t\t\tif (window.chainZoomButton) { chainZoomButton(); }\n\t\t}\n\n\t\t// Background\n\t\tif (this.background) {\n\t\t\tvar a = $('', { href:this.background } )[0];\n\t\t\t$(\"#wrapper\").attr(\"style\", \"background-image: url(https://\" + a.hostname + a.pathname + a.search + \");\");\n\t\t} else {\n\t\t\t$(\"#wrapper\").attr(\"style\", \"\");\n\t\t}\n\n\t\t// Characters in Options\n\t\t$(\"#dialog-options #characters\").html(\"\");\n\n\t\t// Active mask\n\t\t$(\"#dialog-options input[name='mask']\").filter(\"[value='\"+this.masks.active+\"']\").attr(\"checked\", true);\n\n\t\t// Chain tabs\n\t\t$(\"#chainTabs\").text(\"\");\n\t\tfor (var x in this.chain.tabs) {\n\t\t\tif (this.chain.tabs[x]) {\n\t\t\t\tvar $tab = $(\"#chainTab .tab\").clone();\n\n\t\t\t\t$tab.attr(\"id\", x).find(\".name\").data(\"tab\", this.chain.tabs[x].systemID).text(this.chain.tabs[x].name);\n\t\t\t\tif (x == this.chain.active) { $tab.addClass(\"current\"); }\n\n\t\t\t\t$(\"#chainTabs\").append($tab);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Reset routing cache in case routing options changed\n\t\tif(guidance) { guidance.clearCache(); }\n\n\t\t// Draw chain if Tripwire is initialized\n\t\tif (typeof(tripwire) !== \"undefined\") {\n\t\t\tchain.redraw();\n\t\t}\n\t};\n\n\tthis.reset.defaults = JSON.parse(JSON.stringify(this.get()));\n\tthis.load(init && init.options ? init.options : null);\n}\n","var grid = $(\".gridster ul\").gridster({\n\twidget_selector: \"li.gridWidget\",\n\tavoid_overlapped_widgets: false,\n\twidget_base_dimensions: [50, 50],\n\twidget_margins: [5, 5],\n\tautogrow_cols: true,\n\thelper: \"clone\",\n\tdraggable: {\n\t\tstart: function(e, ui) {\n\t\t\t$(\"div.gridster\").width($(\"div.gridster ul\").width());\n\t\t}\n\t},\n\tresize: {\n \tenabled: true,\n \thandle_class: \"grid-resize\",\n \tmin_size: [4, 4],\n \tstart: function(e) {\n \t\t$(\"div.gridster\").width($(\"div.gridster ul\").width());\n \t},\n \tstop: function(e, ui, $widget) {\n \t\t//var width = parseInt($(\".gridster\").css(\"margin-left\")) + this.container_width;\n \t\t//$(\"#wrapper\").css({width: width + \"px\"})\n \t\tswitch ($widget.attr(\"id\")) {\n \t\t\tcase \"infoWidget\":\n \t\t\t\tsetTimeout(\"activity.redraw();\", 300);\n \t\t\t\tbreak;\n \t\t}\n \t}\n\t},\n\tserialize_params: function($w, wgd) {\n\t\treturn {\n\t\t\tid: $w.attr(\"id\"),\n\t\t\tcol: wgd.col,\n\t\t\trow: wgd.row,\n\t\t\tsize_x: wgd.size_x,\n\t\t\tsize_y: wgd.size_y,\n\t\t\twidth: $w.width(),\n\t\t\theight: $w.height()\n\t\t}\n\t}\n}).data(\"gridster\").disable();\n\ngrid.disable_resize();\n$(\".grid-resize\").addClass(\"hidden\").attr(\"data-icon\", \"resize\");\n\n$(\".gridster\").css({visibility: \"visible\"});\n$(\".gridster > *\").addClass(\"gridster-transition\");\n\n$(\"#layout\").click(function() {\n\tif (!$(this).hasClass(\"active\")) {\n\t\tgrid.enable();\n\t\tgrid.enable_resize();\n\t\t$(\".grid-resize\").removeClass(\"hidden\");\n\n\t\t$(this).addClass(\"active\");\n\t} else {\n\t\tgrid.disable();\n\t\tgrid.disable_resize();\n\t\t$(\".grid-resize\").addClass(\"hidden\");\n\n\t\t$(this).removeClass(\"active\");\n\n\t\toptions.grid = grid.serialize();\n\n\t\toptions.save();\n\t}\n});\n","var tripwire = new function() {\n this.timer, this.xhr;\n\tthis.version = version;\n\tthis.client = {signatures: {}, wormholes: {}};\n\tthis.server = {signatures: {}, wormholes: {}};\n\tthis.signatures = {list: {}, undo: JSON.parse(sessionStorage.getItem(\"tripwire_undo\")) || {}, redo: JSON.parse(sessionStorage.getItem(\"tripwire_redo\")) || {}};\n\tthis.serverSignatureCount = 0;\n\tthis.activity = {};\n\tthis.data = {tracking: {}, esi: {}};\n\tthis.refreshRate = 5000;\n\t// Used while document.hidden. Long enough to stop the traffic, short enough\n\t// that a tab surfaced by a notification is not minutes out of date.\n\tthis.refreshRateHidden = 60000;\n\tthis.connected = true;\n\tthis.ageFormat = \"HM\";\n\tthis.instance = window.name ? window.name : (new Date().getTime() / 1000, window.name = new Date().getTime() / 1000);\n\n\t// Reference to `this` that can be used inside of functions\n\tvar _this = this\n\n // Command to start/stop tripwire updates\n\t// ToDo: Include API and Server timers\n\tthis.stop = function() {\n\t\tclearTimeout(this.timer);\n\t\treturn this.timer;\n\t};\n\n\tthis.start = function() {\n\t\treturn this.sync();\n\t}\n\n // Command to change Age format\n\t// ToDo: Cookie change to keep\n\tthis.setAgeFormat = function(format) {\n\t\tvar format = typeof(format) !== 'undefined' ? format : this.ageFormat;\n\n\t\t$(\"span[data-age]\").each(function() {\n\t\t\t$(this).countdown(\"option\", {format: format});\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tthis.cookies = {\n\t\tgetCookie: function(c_name) {\n\t\t\tvar c_value = document.cookie;\n\n\t\t\tvar c_start = c_value.indexOf(\" \" + c_name + \"=\");\n\t\t\tif (c_start == -1) {\n\t\t\t\tc_start = c_value.indexOf(c_name + \"=\");\n\t\t\t}\n\n\t\t\tif (c_start == -1) {\n\t\t\t\tc_value = null;\n\t\t\t} else {\n\t\t\t\tc_start = c_value.indexOf(\"=\", c_start) + 1;\n\t\t\t\tvar c_end = c_value.indexOf(\";\", c_start);\n\n\t\t\t\tif (c_end == -1) {\n\t\t\t\t\tc_end = c_value.length;\n\t\t\t\t}\n\n\t\t\t\tc_value = unescape(c_value.substring(c_start, c_end));\n\t\t\t}\n\n\t\t\treturn c_value;\n\t\t},\n\n\t\tsetCookie: function(c_name, value, exdays) {\n\t\t\tvar exdate = new Date();\n\t\t\texdate.setDate(exdate.getDate() + exdays);\n\t\t\tvar c_value = escape(value) + ((exdays == null) ? \"\" : \"; expires=\"+exdate.toUTCString());\n\n\t\t\tdocument.cookie = c_name + \"=\" + c_value + \";\" + (document.location.protocol == \"https:\" ? \"secure;\" : \"\");\n\t\t}\n\t};\n\n this.serverTime = function() {\n\t\tthis.time;\n\n\t\tthis.serverTime.getTime = function() {\n\t\t\treturn tripwire.serverTime.time;\n\t\t}\n\t}\n this.serverTime();\n\n // Handles putting chain together\n\tthis.chainMap = function() {\n\t\tthis.chainMap.parse = function(data) {\n\t\t\tchain.draw(data);\n\t\t}\n\t}\n this.chainMap();\n\n this.pastEOL = function() {\n\t\tvar options = {since: $(this).countdown('option', 'until'), format: \"HM\", layout: \"-{hnn}{sep}{mnn} \"};\n\t\t$(this).countdown(\"option\", options);\n\t}\n\n // Handles WH Type hover-over tooltip\n\t// ToDo: Use native JS\n\tthis.whTooltip = function(sig) {\n\t\tif (viewingSystemID == sig.systemID) {\n\t\t\tif ($.inArray(sig.type, $.map(appData.wormholes, function(item, index) { return index;})) >= 0) {\n\t\t\t\tvar type = sig.type;\n\t\t\t\tvar tooltip = '';\n\t\t\t} else {\n\t\t\t\tvar type = sig.sig2Type;\n\t\t\t\tvar tooltip = \"Type: \"+(type || 'Unknown')+\"
\";\n\t\t\t}\n\t\t} else {\n\t\t\tif ($.inArray(sig.sig2Type, $.map(appData.wormholes, function(item, index) { return index;})) >= 0) {\n\t\t\t\tvar type = sig.sig2Type;\n\t\t\t\tvar tooltip = '';\n\t\t\t} else {\n\t\t\t\tvar type = sig.type;\n\t\t\t\tvar tooltip = \"Type: \"+(type || 'Unknown')+\"
\";\n\t\t\t}\n\t\t}\n\n\t\tif ($.inArray(type, $.map(appData.wormholes, function(item, index) { return index;})) >= 0) {\n\t\t\tvar whType = true;\n\t\t} else {\n\t\t\tvar whType = false;\n\t\t}\n\n\t\ttooltip += \"Life: \"+(whType?appData.wormholes[type].life:\"Unknown\")+\"
\";\n\n\t\tif (whType) {\n\t\t\tswitch (appData.wormholes[type].leadsTo.split(\"-\")[0]) {\n\t\t\t\tcase 'High':\n\t\t\t\t\ttooltip += \"Leads To: \"+appData.wormholes[type].leadsTo+\"
\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Low':\n\t\t\t\t\ttooltip += \"Leads To: \"+appData.wormholes[type].leadsTo+\"
\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Null':\n\t\t\t\t\ttooltip += \"Leads To: \"+appData.wormholes[type].leadsTo+\"
\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Class':\n\t\t\t\t\ttooltip += \"Leads To: \"+appData.wormholes[type].leadsTo+\"
\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\ttooltip += \"Leads To: \"+appData.wormholes[type].leadsTo+\"
\";\n\t\t\t}\n\n\t\t\ttooltip += \"Max Mass: \"+(Intl.NumberFormat().format(tripwire.wormholes[type].mass))+\" Kg
\";\n\n\t\t\ttooltip += \"Max Jumpable: \"+(Intl.NumberFormat().format(tripwire.wormholes[type].jump))+\" Kg
\";\n\t\t}\n\n\t\treturn tooltip;\n\t}\n\n\t// Handles Age hover-over tooltip\n\t// ToDo: Use native JS\n\tthis.ageTooltip = function(sig) {\n\t\t// var date = new Date(sig.lifeTime);\n\t\t// var localOffset = date.getTimezoneOffset() * 60000;\n\t\t// date = new Date(date.getTime() + localOffset);\n var date = new Date(sig.lifeTime);\n\n\t\tvar tooltip = \"\"\n + \"\"\n + \"\"\n + \"\";\n\n\t\tif (sig.lifeTime != sig.modifiedTime) {\n\t\t\tdate = new Date(sig.modifiedTime);\n\t\t\t// localOffset = date.getTimezoneOffset() * 60000;\n\t\t\t// date = new Date(date.getTime() + localOffset);\n \n\t\t\ttooltip += \"\"\n + \"\"\n + \"\";\n\t\t}\n\n\t\ttooltip += \"
Created:\"+(date.getMonth()+1)+\"/\"+date.getDate()+\" \"+(date.getHours() < 10?'0':'')+date.getHours()+\":\"+(date.getMinutes() < 10?'0':'')+date.getMinutes()+\"\"+sig.createdByName.replace(/'/g, ''').replace(/\"/g, '"')+\"
Last Modified:\"+(date.getMonth()+1)+\"/\"+date.getDate()+\" \"+(date.getHours() < 10?'0':'')+date.getHours()+\":\"+(date.getMinutes() < 10?'0':'')+date.getMinutes()+\"\"+sig.modifiedByName.replace(/'/g, ''').replace(/\"/g, '"')+\"
\";\n\n\t\treturn tooltip;\n\t}\n\n this.refresh = function(mode, data, successCallback, alwaysCallback) {\n\t\tvar mode = mode || 'refresh';\n\n\t\tthis.sync(mode, data, successCallback, alwaysCallback);\n\t}\n\n\t// getSystemIDsByNames performs a case-insensitive search of the internal\n\t// list of systems looking for matches on each system name in the given\n\t// comma-separated list of names. A comma-separated list of system IDs is\n\t// returned if all systems are found, otherwise the empty string is returned.\n\tthis.getSystemIDsByNames = function(systemNames) {\n\t\tif (!_this.systems) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst values = systemNames.split(\",\");\n\t\tconst systems = [];\n\t\tfor(var i = 0; i < values.length; i++) {\n\t\t\tfor (systemID in _this.systems) {\n\t\t\t\tconst system = _this.systems[systemID];\n\t\t\t\tif (system.name.toLowerCase() == values[i].toLowerCase()) {\n\t\t\t\t\tsystems.push(systemID);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (values.length != systems.length) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn systems.join(\",\");\n\t}\n}\n","$(\"body\").on(\"click\", \"a[href^='.?system=']\", function(e) {\n\te.preventDefault();\n\n\tvar system = $(this).attr(\"href\").replace(\".?system=\", \"\");\n\tvar systemID = Object.index(tripwire.systems, \"name\", system);\n\n\ttripwire.systemChange(systemID);\n});\n\n$(\"body\").on(\"submit\", \"#systemSearch\", function(e) {\n\te.preventDefault();\n\n\tvar system = $(this).find(\"[name='system']\").val();\n\tvar systemID = Object.index(tripwire.systems, \"name\", system, true) || false;\n\n\tif (systemID !== false) {\n\t\ttripwire.systemChange(systemID);\n\t\t$(this).find(\"[name='system']\").val(\"\");\n\t\t$(\"#search\").click();\n\t}\n});\n\n$(\"body\").on(\"click\", \"#undo:not(.disabled)\", function() {\n\ttripwire.undo();\n});\n\n$(\"body\").on(\"click\", \"#redo:not(.disabled)\", function() {\n\ttripwire.redo();\n});\n\n// Bind class=copy to copy the text of the previous element\n$(\".copy\").on('click', function(e) {\n\te.preventDefault();\n\tconst source = e.target.previousElementSibling;\n\tif(source) { navigator.clipboard.writeText(source.innerText); }\n\telse { console.warn('Copy event couldn\\'t find a source', e); }\n});\n\n// Chain map zooming (Gets funky if you push things too far)\n$(\"#chainParent\").on(\"wheel\", function(e) {\n\tif(!(options.chain.scrollWithoutCtrl || e.ctrlKey)) { return; }\n\te.preventDefault();\n\tvar zoom = parseFloat($(\"#chainParent\").css(\"zoom\")) || 1.0;\n\tvar min = 0.6;\n\tvar max = 2.0;\n\n if (e.originalEvent.wheelDelta / 120 > 0 && zoom < max) {\n\t\t$(\"#chainParent\").css(\"zoom\", zoom + 0.1);\n } else if (e.originalEvent.wheelDelta / 120 < 0 && zoom > min) {\n\t\t$(\"#chainParent\").css(\"zoom\", zoom - 0.1);\n }\n\n\t// Save options\n\toptions.chain.zoom = parseFloat($(\"#chainParent\").css(\"zoom\"));\n\toptions.saveDelay(2000);\n\tchainZoomButton();\n});\n\n// Reset zoom is visible whenever the map is not at 1.0 -- including a zoom\n// restored from the account at load. It used to fade in on the wheel and\n// fade out three seconds later, so a saved zoom had no way back.\nfunction chainZoomButton() {\n\tvar zoom = parseFloat($(\"#chainParent\").css(\"zoom\")) || 1.0;\n\t$(\"#chain-zoom-reset\").toggleClass(\"hidden\", Math.abs(zoom - 1) < 0.01).css(\"display\", \"\");\n}\n$(function() { setTimeout(chainZoomButton, 500); });\n\n$(\"#chain-zoom-reset\").on(\"click\", function() {\n\t$(\"#chainParent\").css(\"zoom\", 1);\n\toptions.chain.zoom = 1;\n\toptions.saveDelay(2000);\n\tchainZoomButton();\n});\n\n$(document).keydown(function(e)\t{\n\t//Abort - user is in input or textarea\n\tif ($(document.activeElement).is(\"textarea, input\")) return;\n\n\t// Ctrl key hooks\n\tif (e.metaKey || e.ctrlKey) {\n\n\t\tif (e.keyCode === 89 && !$(\"#redo\").hasClass(\"disabled\")) {\n\t\t\t// Ctrl-y redo hook\n\t\t\te.preventDefault();\n\t\t\t$(\"#redo\").click();\n\t\t\tNotify.trigger(\"Redoing last undo\");\n\t\t} else if (e.keyCode === 90 && !$(\"#undo\").hasClass(\"disabled\")) {\n\t\t\t// Ctrl-z undo hook\n\t\t\te.preventDefault();\n\t\t\t$(\"#undo\").click();\n\t\t\tNotify.trigger(\"Undoing last action\");\n\t\t} else if (e.keyCode === 65) {\n\t\t\t// Ctrl-a select all (signatures) hook\n\t\t\te.preventDefault();\n\t\t\t$(\"#sigTable tbody tr\").addClass(\"selected\");\n\t\t\t$(\"#signaturesWidget #delete-signature\").trigger(\"delete:refresh\");\n\t\t} else if (e.keyCode === 67) {\n\t\t\t// Ctrl-c copy selected signatures hook\n\t\t\tif (window.getSelection().toString() === \"\") {\n\t\t\t\tvar output = \"\";\n\t\t\t\t$(\"#sigTable tbody tr.selected\").each(function(row) {\n\t\t\t\t\tvar signature = tripwire.client.signatures[$(this).data(\"id\")];\n\t\t\t\t\tvar row = [];\n\n\t\t\t\t\tif (signature.signatureID) {\n\t\t\t\t\t\trow.push(signature.signatureID.substring(0, 3).toUpperCase() + \"-\" + (signature.signatureID.substring(3, 6) || \"###\"));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trow.push(\"null\");\n\t\t\t\t\t}\n\n\t\t\t\t\trow.push(signature.type);\n\t\t\t\t\tif (signature.type === \"wormhole\") {\n\t\t\t\t\t\tvar wormhole = $.map(tripwire.client.wormholes, function(wormhole) { if (wormhole.initialID == signature.id || wormhole.secondaryID == signature.id) return wormhole; })[0];\n\t\t\t\t\t\tvar otherSignature = signature.id == wormhole.initialID ? tripwire.client.signatures[wormhole.secondaryID] : tripwire.client.signatures[wormhole.initialID];\n\t\t\t\t\t\trow.push(wormhole.type || \"null\" );\n\t\t\t\t\t\trow.push(tripwire.systems[signature.systemID] ? tripwire.systems[signature.systemID].name : appData.genericSystemTypes[signature.systemID]);\n\t\t\t\t\t\trow.push(tripwire.systems[otherSignature.systemID] ? tripwire.systems[otherSignature.systemID].name : appData.genericSystemTypes[otherSignature.systemID]);\n\t\t\t\t\t\trow.push(wormhole.life);\n\t\t\t\t\t\trow.push(wormhole.mass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trow.push(signature.name);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.push(signature.createdByName);\n\t\t\t\t\trow.push(signature.lifeTime);\n\t\t\t\t\trow.push(signature.lifeLength);\n\t\t\t\t\trow.push(signature.lifeLeft);\n\t\t\t\t\trow.push(signature.modifiedByName);\n\t\t\t\t\trow.push(signature.modifiedTime);\n\t\t\t\t\toutput += row.join(options.signatures.copySeparator) + \"\\r\\n\";\n\t\t\t\t});\n\t\t\t\t$(\"#clipboard\").text(output);\n\t\t\t\t$(\"#clipboard\").focus();\n\t\t\t\t$(\"#clipboard\").select();\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// delete key keyhooks\n\t\tif (e.keyCode == 46 && $(\"#sigTable tr.selected\").length > 0) {\n\t\t\t$(\"#delete-signature\").click();\n\t\t}\n\t}\n});\n\n// $(\"#APIclock\").knob({angleArc: 359.9, height: 20, width: 20, max: 60, readOnly: true, displayInput: false, fgColor: \"#CCC\", bgColor: \"#666\"});\n\n$(\"#follow\").click(function(e) {\n\te.preventDefault();\n\n\tif ($(this).hasClass(\"active\"))\n\t\t$(this).removeClass(\"active\");\n\telse\n\t\t$(this).addClass(\"active\");\n\n\toptions.buttons.follow = $(this).hasClass(\"active\");\n\toptions.save();\n})\n\n$(\"#show-viewing\").click(function() {\n\tif ($(this).hasClass(\"active\"))\n\t\t$(this).removeClass(\"active\");\n\telse\n\t\t$(this).addClass(\"active\");\n\n\tchain.redraw();\n\n\toptions.buttons.chainWidget.viewing = $(this).hasClass(\"active\");\n\toptions.save();\n});\n\n$(\"#show-favorite\").click(function() {\n\tif ($(this).hasClass(\"active\"))\n\t\t$(this).removeClass(\"active\");\n\telse\n\t\t$(this).addClass(\"active\");\n\n\tchain.redraw();\n\n\toptions.buttons.chainWidget.favorites = $(this).hasClass(\"active\");\n\toptions.save();\n});\n\n$(\"#system-favorite\").click(function() {\n\tif ($(this).hasClass(\"active\")) {\n\t\t$(this).removeClass(\"active\").attr(\"data-icon\", \"star-empty\");\n\n\t\toptions.favorites.splice(options.favorites.indexOf(parseInt(viewingSystemID)), 1);\n\t} else {\n\t\t$(this).attr(\"data-icon\", \"star\").addClass(\"active\");\n\n\t\toptions.favorites.push(parseInt(viewingSystemID));\n\t}\n\n\tif ($(\"#show-favorite\").hasClass(\"active\"))\n\t\tchain.redraw();\n\n\toptions.save();\n});\n\n$('#favorite-dropdown-toggle').click(function() {\n\tconst target = document.getElementById('favorite-panel');\n\tif(target.style.display === 'none') {\n\t\tconst listWrapper = document.getElementById('favorite-panel-wrapper');\n\t\tlistWrapper.innerHTML = options.favorites.length == 0 ? '

You have no favourites. Use the star to add a system.

'\n\t\t\t: options.favorites.map(function(f) {\n\t\t\t\tconst systemInfo = systemAnalysis.analyse(f);\n\t\t\t\treturn '

' + systemRendering.renderSystem(systemInfo) + '

';\n\t\t\t}).join('\\n');\n\t\ttarget.style.display = '';\n\t} else { target.style.display = 'none'; }\n});\n\n$(\"#search\").click(function(e) {\n\t$(\"#searchSpan\").toggle();\n\n\tif ($(this).hasClass(\"active\")) {\n\t\t$(this).removeClass(\"active\");\n\t\tif (tripwire.client.EVE && tripwire.client.EVE.systemName)\n\t\t\t$(\"#currentSpan\").show();\n\t} else {\n\t\t$(this).addClass(\"active\");\n\t\t$(\"#currentSpan\").hide();\n\n\t\t$(\"#searchSpan input[name=system]\").focus().select();\n\t}\n});\n\n$(\"#toggle-automapper\").click(function(e) {\n\te.preventDefault();\n\n\tif ($(this).hasClass(\"active\")) {\n\t\t$(this).removeClass(\"active\");\n\t} else {\n\t\t$(this).addClass(\"active\");\n\t}\n\n\toptions.buttons.signaturesWidget.autoMapper = $(this).hasClass(\"active\");\n\toptions.save();\n});\n\n$(\"#user\").click(function(e) {\n\te.preventDefault();\n\n\tif ($(this).hasClass(\"active\")) {\n\t\t$(this).removeClass(\"active\");\n\n\t\t$(\"#login > #panel\").css({display: \"none\"});\n\n\t\t//$(\"#wrapper\").unbind(\"click\");\n\t} else {\n\t\t$(this).addClass(\"active\");\n\n\t\t$(\"#login > #panel\").css({display: \"inline\"});\n\t\t$(\"#loginForm input[name=username]\").focus().select();\n\t}\n});\n$(\"#wrapper\").click(function(e) { // Click outside closes\n\tif(!(e.originalEvent && e.originalEvent.isInPanel)) {\n\t\t$(\"#login > #panel\").css({display: \"none\"});\n\t\t$(\"#user\").removeClass(\"active\");\n\t}\n});\n$(\"#login\").click(function(e) { // click inside doesn't\n\te.originalEvent.isInPanel = true;\n})\n\n\n$(\"#logout\").click(function() {\n\twindow.location = \"logout.php\";\n});\n\nvar Notify = new function() {\n\tthis.trigger = function(content, color, stick, id) {\n\t\tvar color = typeof(color) !== \"undefined\" ? color : \"blue\";\n\t\tvar stick = typeof(stick) !== \"undefined\" ? stick : 10000;\n\t\tvar id = typeof(id) !== \"undefined\" ? id : null;\n\n\t\tnew jBox(\"Notice\", {\n\t\t\tid: id,\n\t\t\tcontent: content,\n\t\t\toffset: {y: 35},\n\t\t\tanimation: \"flip\",\n\t\t\tcolor: color,\n\t\t\tautoClose: stick\n\t\t});\n\t}\n}\n\n// Init valdiation tooltips\nvar ValidationTooltips = new jBox(\"Tooltip\", {\n\ttrigger: null,\n\taddClass: \"validation-tooltip\",\n\tanimation: \"flip\",\n\tfade: 0\n});\n\nvar Tooltips = new jBox(\"Tooltip\", {\n\tattach: $(\"[data-tooltip]\"),\n\tgetContent: \"data-tooltip\",\n\tposition: {x: \"right\", y: \"center\"},\n\toutside: \"x\"\n});\n\nvar SystemActivityToolTips = new jBox(\"Tooltip\", {\n\tgetContent: \"data-tooltip\",\n\tposition: {y: \"bottom\"},\n\tappendTo: $(\"#chainParent\"),\n\treposition: true,\n\trepositionOnOpen: true,\n\tcreateOnInit: true,\n\tonOpen: function() {\n\t\tvar targetPos = positionRelativeTo(this.target[0], document.getElementById('chainParent'));\n\t\tvar nodePos = this.source.closest(\"[data-nodeid]\").position();\n\t\tvar parentPos = this.source.closest(\".nodeActivity\").position();\n\t\tvar nodeHeight = this.source.closest(\"[data-nodeid]\").height();\n\t\t// var nodeWidth = this.source.closest(\"[data-nodeid]\").width();\n\t\tvar tooltipWidth = this.container.parent().width();\n\t\t// var tooltipHeight = this.container.parent().height();\n\n\t\tthis.options.position = {x: targetPos.left + 3 - tooltipWidth /2 , y: targetPos.top + this.target[0].offsetHeight};\n\t}\n});\n\nvar WormholeRouteToolTips = new jBox(\"Tooltip\", {\n\tgetContent: \"data-tooltip\",\n\tposition: {y: \"bottom\"},\n\tappendTo: $(\"#chainParent\"),\n\treposition: true,\n\trepositionOnOpen: true,\n\tcreateOnInit: true,\n\tonOpen: function() {\n\t\tvar targetPos = positionRelativeTo(this.target[0], document.getElementById('chainParent'));\n\t\tvar nodeHeight = this.source.closest(\"[data-nodeid]\").height();\n\t\t// var nodeWidth = this.source.closest(\"[data-nodeid]\").width();\n\t\tvar tooltipWidth = this.container.parent().width();\n\t\t// var tooltipHeight = this.container.parent().height();\n\t\t\n\t\tthis.options.position = {x: targetPos.left + 3 - tooltipWidth /2 , y: targetPos.top + this.target[0].offsetHeight};\n\t}\n});\n\nvar WormholeTypeToolTips = new jBox(\"Tooltip\", {\n\tattach: $(\"#chainMap .whEffect[data-icon]\"),\n\tgetContent: \"data-tooltip\",\n\tposition: {x: \"left\", y: \"center\"},\n\tappendTo: $(\"#chainParent\"),\n\toutside: \"x\",\n\tadjustDistance: 100,\n\tresponsiveWidth: false,\n\treposition: true,\n\trepositionOnOpen: true,\n\tcreateOnInit: true,\n\tonOpen: function() {\n\t\tvar targetPos = positionRelativeTo(this.target[0], document.getElementById('chainParent'));\n\t\tvar tooltipWidth = this.container.parent().width();\n\n\t\tthis.options.position = {x: targetPos.left - tooltipWidth - 10, y: targetPos.top - 3};\n\t}\n});\n\nvar OccupiedToolTips = new jBox(\"Tooltip\", {\n\tpointer: \"top:-3\",\n\tposition: {x: \"right\", y: \"center\"},\n\tappendTo: $(\"#chainParent\"),\n\toutside: \"x\",\n\tminWidth: 100,\n\tanimation: \"move\",\n\tadjustDistance: 100,\n\tresponsiveWidth: false,\n\treposition: true,\n\trepositionOnOpen: true,\n\trepositionOnContent: true,\n\tcreateOnInit: true,\n\tonOpen: function() {\n\t\tvar tooltip = this;\n\t\tconst nodeElemJ = this.source.closest(\"[data-nodeid]\");\n\t\tvar systemID = nodeElemJ.data(\"nodeid\");\n\t\tvar targetPos = positionRelativeTo(this.target[0], document.getElementById('chainParent'));\n\n\t\tthis.options.position = {x: targetPos.left + this.target[0].offsetWidth, y: targetPos.top - 3};\n\n\t\ttooltip.setContent(\" \");\n\n\t\t$.ajax({\n\t\t\turl: \"occupants.php\",\n\t\t\tdataType: \"JSON\",\n\t\t\tdata: \"systemID=\"+systemID,\n\t\t\tcache: false\n\t\t}).done(function(data) {\n\t\t\tif (data && data.occupants) {\n\t\t\t\tvar chars = \"\";\n\n\t\t\t\t// Sort by characterName\n\t\t\t\tdata.occupants.sort(function(a, b) {\n\t\t\t\t\tif (a.characterName.toLowerCase() < b.characterName.toLowerCase()) return -1;\n\t\t\t\t\tif (a.characterName.toLowerCase() > b.characterName.toLowerCase()) return 1;\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\tfor (var x in data.occupants) {\n\t\t\t\t\tchars += \"\";\n\t\t\t\t}\n\n\t\t\t\tchars += \"
\"+data.occupants[x].characterName+\"\"+(data.occupants[x].shipTypeName?data.occupants[x].shipTypeName:\"\")+\"
\";\n\t\t\t\ttooltip.setContent(chars);\n\t\t\t}\n\t\t});\n\t}\n});\n\n$(\"#chainTabs\").sortable({\n\titems: \"> .tab\",\n\taxis: \"x\",\n\tdelay: 150,\n\ttolerance: \"pointer\",\n\tcontainment: \"parent\",\n\tupdate: function(e, ui) {\n\t\tvar result = $(\"#chainTabs\").sortable(\"toArray\");\n\t\tvar newTabs = [];\n\n\t\tfor (var x in result) {\n\t\t\tnewTabs.push(options.chain.tabs[result[x]]);\n\t\t\t$(\"#chainTabs .tab:eq(\"+x+\")\").attr(\"id\", x);\n\t\t}\n\n\t\toptions.chain.active = $(\".tab.current\").index();\n\t\toptions.chain.tabs = newTabs;\n\t\toptions.save();\n\t}\n});\n\n$(\"#chainTabs\").on(\"click\", \".tab\", function(e) {\n\te.preventDefault();\n\t// Clicking the selected tab again deselects it: the map then roots at\n\t// whichever system you are viewing (\"Following you\" in the strip).\n\tchain.setActiveTab($(this).hasClass(\"current\") ? null : $(this).index())\n});\n$(\"#chainTabs\").attr(\"title\", \"Click a tab to root the map there. Click the selected tab again to follow the system you are viewing.\");\n\n$(\"#chainTabs\").on(\"click\", \".closeTab\", function(e) {\n\te.stopPropagation();\n\tvar $tab = $(this).closest(\".tab\");\n\n\t$(\"#dialog-confirm #msg\").text(\"This tab will be removed, are you sure?\");\n\t$(\"#dialog-confirm\").dialog(\"option\", {\n\t\tbuttons: {\n\t\t\t\"Remove Tab\": function() {\n\t\t\t\tvar i = $tab.index();\n\n\t\t\t\toptions.chain.active = $(\".tab.current\").index();\n\t\t\t\toptions.chain.tabs.splice(i, 1);\n\t\t\t\toptions.save();\n\n\t\t\t\t$tab.remove();\n\t\t\t\tif ($(\"#chainTabs .tab.current\").length == 0) {\n\t\t\t\t\t$(\"#chainTabs .tab:last\").click();\n\t\t\t\t}\n\n\t\t\t\tfor (var x = 0, l = $(\"#chainTabs .tab\").length; x < l; x++) {\n\t\t\t\t\t$(\"#chainTabs .tab:eq(\"+x+\")\").attr(\"id\", x);\n\t\t\t\t}\n\n\t\t\t\t$(this).dialog(\"close\");\n\t\t\t},\n\t\t\tCancel: function() {\n\t\t\t\t$(this).dialog(\"close\");\n\t\t\t}\n\t\t}\n\t}).dialog(\"open\");\n});\n\n$(\"#newTab\").on(\"click\", function() {\n\t// check if dialog is open\n\tif (!$(\"#dialog-newTab\").hasClass(\"ui-dialog-content\")) {\n\t\t$(\"#dialog-newTab\").dialog({\n\t\t\tresizable: false,\n\t\t\tminHeight: 0,\n\t\t\tdialogClass: \"dialog-noeffect ui-dialog-shadow\",\n\t\t\tbuttons: {\n\t\t\t\tOK: function() {\n\t\t\t\t\t$(\"#newTab_form\").submit();\n\t\t\t\t},\n\t\t\t\tCancel: function() {\n\t\t\t\t\t$(this).dialog(\"close\");\n\t\t\t\t}\n\t\t\t},\n\t\t\topen: function() {\n\t\t\t\t$(\"#dialog-newTab .name\").val(viewingSystem).focus();\n\t\t\t\t$(\"#dialog-newTab .sigSystemsAutocomplete\").val(viewingSystem);\n\t\t\t},\n\t\t\tclose: function() {\n\t\t\t\tValidationTooltips.close();\n\t\t\t},\n\t\t\tcreate: function() {\n\t\t\t\t$(\"#dialog-newTab .sigSystemsAutocomplete\").inlinecomplete({source: tripwire.aSigSystems, maxSize: 10, delay: 0, renderer: 'system'});\n\n\t\t\t\t$(\"#newTab_form\").submit(function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar $tab = $(\"#chainTab .tab\").clone();\n\t\t\t\t\tvar name = $(\"#dialog-newTab .name\").val();\n\t\t\t\t\tvar systemID = tripwire.getSystemIDsByNames($(\"#dialog-newTab .sigSystemsAutocomplete\").val());\n\t\t\t\t\tvar thera = $(\"#tabThera\")[0].checked ? true : false;\n\n\t\t\t\t\tif (!name) {\n\t\t\t\t\t\tValidationTooltips.open({target: $(\"#dialog-newTab .name\")}).setContent(\"Must have a name!\");\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (!systemID && $(\"#tabType1\")[0].checked) {\n\t\t\t\t\t\tValidationTooltips.open({target: $(\"#dialog-newTab .sigSystemsAutocomplete\")}).setContent(\"Must have valid systems (comma separated if multiple)!\");\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if ($(\"#tabType2\")[0].checked) {\n\t\t\t\t\t\tsystemID = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t$tab.attr(\"id\", $(\"#chainTabs .tab\").length).find(\".name\").data(\"tab\", systemID).text(name);\n\t\t\t\t\toptions.chain.tabs.push({systemID: systemID, name: name, evescout: thera});\n\t\t\t\t\toptions.save();\n\n\t\t\t\t\t$(\"#chainTabs\").append($tab);\n\n\t\t\t\t\t$(\"#dialog-newTab\").dialog(\"close\");\n\t\t\t\t});\n\n\t\t\t\t$(\"#dialog-newTab .sigSystemsAutocomplete\").click(function(e) {\n\t\t\t\t\t$(\"#dialog-newTab #tabType1\").click();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t} else if (!$(\"#dialog-newTab\").dialog(\"isOpen\")) {\n\t\t$(\"#dialog-newTab\").dialog(\"open\");\n\t}\n});\n\n$(\"#chainTabs\").on(\"click\", \".editTab\", function(e) {\n\te.stopPropagation();\n\n\t// check if dialog is open\n\tif (!$(\"#dialog-editTab\").hasClass(\"ui-dialog-content\")) {\n\t\t$(\"#dialog-editTab\").dialog({\n\t\t\tresizable: false,\n\t\t\tminHeight: 0,\n\t\t\tdialogClass: \"dialog-noeffect ui-dialog-shadow\",\n\t\t\tbuttons: {\n\t\t\t\tOK: function() {\n\t\t\t\t\t$(\"#editTab_form\").submit();\n\t\t\t\t},\n\t\t\t\tCancel: function() {\n\t\t\t\t\t$(this).dialog(\"close\");\n\t\t\t\t}\n\t\t\t},\n\t\t\topen: function() {\n\t\t\t\t$(\"#dialog-editTab .name\").val(options.chain.tabs[options.chain.active].name).focus();\n\t\t\t\t$(\"#dialog-editTab .sigSystemsAutocomplete\").val(options.chain.tabs[options.chain.active].systemID != 0 ? lookupMultiple(tripwire.systems, 'name', options.chain.tabs[options.chain.active].systemID) : \"\");\n\t\t\t\toptions.chain.tabs[options.chain.active].systemID != 0 ? $(\"#dialog-editTab #editTabType1\")[0].checked = true : $(\"#dialog-editTab #editTabType2\")[0].checked = true;\n\t\t\t\t$(\"#dialog-editTab #editTabThera\")[0].checked = options.chain.tabs[options.chain.active].evescout;\n\t\t\t},\n\t\t\tclose: function() {\n\t\t\t\tValidationTooltips.close();\n\t\t\t},\n\t\t\tcreate: function() {\n\t\t\t\t$(\"#dialog-editTab .sigSystemsAutocomplete\").inlinecomplete({source: tripwire.aSigSystems, renderer: 'system', maxSize: 10, delay: 0});\n\n\t\t\t\t$(\"#editTab_form\").submit(function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar $tab = $(\"#chainTabs .tab\").eq([options.chain.active]);\n\t\t\t\t\tvar name = $(\"#dialog-editTab .name\").val();\n\t\t\t\t\tvar systemID = tripwire.getSystemIDsByNames($(\"#dialog-editTab .sigSystemsAutocomplete\").val());\n\t\t\t\t\tvar thera = $(\"#editTabThera\")[0].checked ? true : false;\n\n\t\t\t\t\tif (!name) {\n\t\t\t\t\t\tValidationTooltips.open({target: $(\"#dialog-editTab .name\")}).setContent(\"Must have a name!\");\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (!systemID && $(\"#editTabType1\")[0].checked) {\n\t\t\t\t\t\tValidationTooltips.open({target: $(\"#dialog-editTab .sigSystemsAutocomplete\")}).setContent(\"Must have valid systems (comma separated if multiple)!\");\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if ($(\"#editTabType2\")[0].checked) {\n\t\t\t\t\t\tsystemID = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t$tab.attr(\"id\", $(\"#chainTabs .tab\").length).find(\".name\").data(\"tab\", systemID).text(name);\n\t\t\t\t\toptions.chain.tabs[options.chain.active] = {systemID: systemID, name: name, evescout: thera};\n\t\t\t\t\toptions.save();\n\t\t\t\t\tchain.redraw();\n\n\t\t\t\t\ttripwire.parse(tripwire.client, \"refresh\");\n\n\t\t\t\t\t//$(\"#chainTabs\").append($tab);\n\n\t\t\t\t\t$(\"#dialog-editTab\").dialog(\"close\");\n\t\t\t\t});\n\n\t\t\t\t$(\"#dialog-editTab .sigSystemsAutocomplete\").click(function(e) {\n\t\t\t\t\t$(\"#dialog-editTab #editTabType1\").click();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t} else if (!$(\"#dialog-editTab\").dialog(\"isOpen\")) {\n\t\t$(\"#dialog-editTab\").dialog(\"open\");\n\t}\n});\n\n// Signature column context menu\n$(\"#signaturesWidget #sigTable thead\").contextmenu({\n\tdelegate: \"th.sortable\",\n\tmenu: \"#signatureColumnMenu\",\n\tposition: function(event, ui) {\n return {my: \"left top\", at: \"center\", of: ui.target};\n },\n\tselect: function(e, ui) {\n\t\tvar col = $(ui.target).parent().parent().children().index($(ui.target).parent()) + 1;\n\n\t\tswitch(col) {\n\t\t\tcase 1:\n\t\t\t\tcolName = \"sigID\";\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tcolName = \"sigType\";\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tcolName = \"sigAge\";\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tcolName = \"leadsTo\";\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tcolName = \"sigLife\";\n\t\t\t\tbreak;\n\t\t\tcase 6:\n\t\t\t\tcolName = \"sigMass\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\tswitch(ui.cmd) {\n\t\t\tcase \"leftAlign\":\n\t\t\t\t$(\"#signaturesWidget #sigTable tbody td:nth-child(\"+ col +\")\").removeClass(\"centerAlign rightAlign\").addClass(\"leftAlign\");\n\t\t\t\toptions.signatures.alignment[colName] = \"leftAlign\";\n\t\t\t\tbreak;\n\t\t\tcase \"centerAlign\":\n\t\t\t\t$(\"#signaturesWidget #sigTable tbody td:nth-child(\"+ col +\")\").removeClass(\"leftAlign rightAlign\").addClass(\"centerAlign\");\n\t\t\t\toptions.signatures.alignment[colName] = \"centerAlign\";\n\t\t\t\tbreak;\n\t\t\tcase \"rightAlign\":\n\t\t\t\t$(\"#signaturesWidget #sigTable tbody td:nth-child(\"+ col +\")\").removeClass(\"centerAlign leftAlign\").addClass(\"rightAlign\");\n\t\t\t\toptions.signatures.alignment[colName] = \"rightAlign\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\toptions.save();\n\t},\n\tbeforeOpen: function(e, ui) {\n\t\tvar col = $(ui.target).parent().parent().children().index($(ui.target).parent()) + 1;\n\n\t\tswitch(col) {\n\t\t\tcase 1:\n\t\t\t\tcolName = \"sigID\";\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tcolName = \"sigType\";\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tcolName = \"sigAge\";\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tcolName = \"leadsTo\";\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tcolName = \"sigLife\";\n\t\t\t\tbreak;\n\t\t\tcase 6:\n\t\t\t\tcolName = \"sigMass\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\t$(this).contextmenu(\"enableEntry\", \"leftAlign\", true);\n\t\t$(this).contextmenu(\"enableEntry\", \"centerAlign\", true);\n\t\t$(this).contextmenu(\"enableEntry\", \"rightAlign\", true);\n\n\t\t$(this).contextmenu(\"enableEntry\", options.signatures.alignment[colName], false);\n\t}\n});\n\n// Chain Map Context Menu\n$(\"#chainParent\").contextmenu({\n\tdelegate: \".nodeSystem a\",\n\tposition: function(event, ui) {\n return {my: \"left top-1\", at: \"right top\", of: ui.target};\n },\n\tmenu: \"#chainMenu\",\n\tshow: {effect: \"slideDown\", duration: 150},\n\tselect: function(e, ui) {\n\t\tconst nodeElem = $(ui.target[0]).closest(\"[data-nodeid]\");\n\t\tvar id = nodeElem.data(\"nodeid\");\n\t\tvar row = nodeElem.attr(\"id\").replace(\"node\", \"\") -1;\n\n\t\tswitch(ui.cmd) {\n\t\t\tcase \"showInfo\":\n\t\t\t\ttripwire.esi.showInfo(id, options.tracking.active);\n\t\t\t\tbreak;\n\t\t\tcase \"setDest\":\n\t\t\t\ttripwire.esi.setDestination(id, options.tracking.active, true);\n\t\t\t\tbreak;\n\t\t\tcase \"addWay\":\n\t\t\t\ttripwire.esi.setDestination(id, options.tracking.active, false);\n\t\t\t\tbreak;\n\t\t\tcase \"setDestAll\":\n\t\t\tcase \"addWayAll\":\n\t\t\t\tfor(const characterId in tripwire.esi.characters) {\n\t\t\t\t\ttripwire.esi.setDestination(id, characterId, ui.cmd == \"setDestAll\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"showMap\":\n\t\t\t\t// CCPEVE.showMap(id);\n\t\t\t\tbreak;\n\t\t\tcase \"red\":\n\t\t\t\tnodeElem.hasClass(\"redNode\") ? $(this).contextmenu(\"removeFlare\", id, ui) : $(this).contextmenu(\"setFlare\", id, ui.cmd, ui);\n\t\t\t\tbreak;\n\t\t\tcase \"yellow\":\n\t\t\t\tnodeElem.hasClass(\"yellowNode\") ? $(this).contextmenu(\"removeFlare\", id, ui) : $(this).contextmenu(\"setFlare\", id, ui.cmd, ui);\n\t\t\t\tbreak;\n\t\t\tcase \"green\":\n\t\t\t\tnodeElem.hasClass(\"greenNode\") ? $(this).contextmenu(\"removeFlare\", id, ui) : $(this).contextmenu(\"setFlare\", id, ui.cmd, ui);\n\t\t\t\tbreak;\n\t\t\tcase \"mass\":\n\t\t\t\t$(\"#dialog-mass\").data(\"id\", nodeElem.data(\"sigid\")).data(\"systemID\", id).dialog(\"open\");\n\t\t\t\tbreak;\n\t\t\tcase \"ping\":\n\t\t\t\t$(\"#dialog-ping\").data(\"id\", nodeElem.data(\"sigid\") || null).data(\"systemID\", id).dialog(\"open\");\n\t\t\t\tbreak;\n\t\t\tcase \"collapse\":\n\t\t\t\tvar toggle = options.chain.tabs[options.chain.active] ? ($.inArray(id, options.chain.tabs[options.chain.active].collapsed) == -1 ? true : false) : true;\n\t\t\t\tchain.renderer.collapse(id, toggle);\n\t\t\t\tbreak;\n\t\t\tcase \"copySystemName\": \n\t\t\t\tconst systemName = tripwire.systems[id].name;\n\t\t\t\tnavigator.clipboard.writeText(systemName); \n\t\t\t\tbreak;\n\t\t\tcase \"makeTab\":\n\t\t\t\tconst existingTabIndex = Object.index(options.chain.tabs, 'systemID', '' + id, false);\n\t\t\t\tif(undefined !== existingTabIndex) {\n\t\t\t\t\tchain.setActiveTab(existingTabIndex);\n\t\t\t\t} else {\n\t\t\t\t\tconst systemName = tripwire.systems[id].name;\n\t\t\t\t\toptions.chain.tabs.push({systemID: '' + id, name: systemName});\n\t\t\t\t\tvar newTab = $(\"#chainTab .tab\").clone();\n\t\t\t\t\tnewTab.attr('id', options.chain.tabs.length - 1).find(\".name\").data(\"tab\", id).text(systemName);\n\t\t\t\t\t$(\"#chainTabs\").append(newTab);\n\t\t\t\t\tchain.setActiveTab(options.chain.tabs.length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tbeforeOpen: function(e, ui) {\n\t\tvar wormholeID = $(ui.target[0]).closest(\"[data-nodeid]\").data(\"sigid\") || null;\n\t\tvar systemID = $(ui.target[0]).closest(\"[data-nodeid]\").data(\"nodeid\");\n\t\tconst systemName = tripwire.systems[systemID].name;\n\n\t\t// Add check for k-space\n\t\tif (tripwire.systems[systemID].class || !tripwire.esi.characters[options.tracking.active]) {\n\t\t\t$(this).contextmenu(\"enableEntry\", \"setDest\", false);\n\t\t\t$(this).contextmenu(\"enableEntry\", \"addWay\", false);\n\t\t\t$(this).contextmenu(\"enableEntry\", \"setDestAll\", false);\n\t\t\t$(this).contextmenu(\"enableEntry\", \"addWayAll\", false);\n\t\t\t$(this).contextmenu(\"enableEntry\", \"showMap\", false);\n\t\t} else {\n\t\t\t$(this).contextmenu(\"enableEntry\", \"setDest\", true);\n\t\t\t$(this).contextmenu(\"enableEntry\", \"addWay\", true);\n\t\t\t$(this).contextmenu(\"enableEntry\", \"setDestAll\", true);\n\t\t\t$(this).contextmenu(\"enableEntry\", \"addWayAll\", true);\n\t\t\t$(this).contextmenu(\"enableEntry\", \"showMap\", false);\n\t\t}\n\t\t\n\t\t// Add check for in-sig\n\t\tif (wormholeID) {\n\t\t\t$(this).contextmenu(\"enableEntry\", \"mass\", true);\n\t\t} else {\n\t\t\t$(this).contextmenu(\"enableEntry\", \"mass\", false);\n\t\t}\n\t\t\n\t\t// Add check for tab validity\n\t\tconst existingTab = Object.find(options.chain.tabs, 'systemID', '' + systemID, false);\n\t\t$('#makeTabMenuItem').text((existingTab ? 'View Tab' : 'Make Tab') + ' for ' + systemName );\n\t\t$('#copySystemNameMenuItem').text('Copy \"' + systemName + '\"');\n\t},\n\tcreate: function(e, ui) {\n\t\t// Fix some bad CSS from jQuery Position\n\t\tconst menuElem = document.getElementById('chainMenu');\n\t\t$(menuElem).css(\"width\", \"auto\");\n\t\t$(menuElem).find(\".ui-front\").css(\"width\", \"auto\");\n\t\t$(menuElem).find(\".ui-front\").css(\"position\", \"\");\n\n\t\t$.moogle.contextmenu.prototype.setFlare = function(systemID, flare, ui) {\n\t\t\tvar data = {\"systemID\": systemID, \"flare\": flare};\n\n\t\t\t$.ajax({\n\t\t\t\turl: \"flares.php\",\n\t\t\t\ttype: \"POST\",\n\t\t\t\tdata: data,\n\t\t\t\tdataType: \"JSON\"\n\t\t\t}).done(function(data) {\n\t\t\t\tif (data && data.result) {\n\t\t\t\t\t// $(ui.target[0]).closest(\"td\").removeClass(\"redNode yellowNode greenNode\").addClass(flare+\"Node\");\n\n\t\t\t\t\tchain.data.flares.flares.push({systemID: systemID, flare: flare, time: null});\n\t\t\t\t\tchain.flares(chain.data.flares);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t$.moogle.contextmenu.prototype.removeFlare = function(systemID, ui) {\n\t\t\tvar data = {\"systemID\": systemID};\n\n\t\t\t$.ajax({\n\t\t\t\turl: \"flares.php\",\n\t\t\t\ttype: \"POST\",\n\t\t\t\tdata: data,\n\t\t\t\tdataType: \"JSON\"\n\t\t\t}).done(function(data) {\n\t\t\t\tif (data && data.result) {\n\t\t\t\t\t// $(ui.target[0]).closest(\"td\").removeClass(\"redNode yellowNode greenNode\");\n\n\t\t\t\t\tchain.data.flares.flares.splice(Object.index(chain.data.flares.flares, \"systemID\", systemID), 1);\n\t\t\t\t\tchain.flares(chain.data.flares);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n});\n\n/** Format a signature ID like abc123 as ABC-123 for user display */\nfunction formatSignatureID(signatureID) {\n\treturn (!signatureID) ? '???-###' :\n\t\t(signatureID.length >= 3 ? signatureID.substring(0, 3).toUpperCase() : '') + \"-\" + (signatureID.length == 6 ? signatureID.substring(3, 6) : \"###\");\n}\n\n// Used to generate eve-survival guide link\nfunction linkSig(sigName) {\n\tvar wormholeSignatures = [\n\t\t// Ore sites\n\t\t\"Average Frontier Deposit\",\n\t\t\"Unexceptional Frontier Deposit\",\n\t\t\"Common Perimeter Deposit\",\n\t\t\"Exceptional Core Deposit\",\n\t\t\"Infrequent Core Deposit\",\n\t\t\"Unusual Core Deposit\",\n\t\t\"Rarified Core Deposit\",\n\t\t\"Isolated Core Deposit\",\n\t\t\"Ordinary Permiter Deposit\",\n\t\t\"Uncommon Core Deposit\",\n\n\t\t// Gas Sites\n\t\t\"Barren Perimeter Reservoir\",\n\t\t\"Minor Perimeter Reservoir\",\n\t\t\"Ordinary Perimeter Reservoir\",\n\t\t\"Sizeable Perimeter Reservoir\",\n\t\t\"Token Perimeter Reservoir\",\n\t\t\"Bountiful Frontier Reservoir\",\n\t\t\"Vast Frontier Reservoir\",\n\t\t\"Instrumental Core Reservoir\",\n\t\t\"Vital Core Reservoir\",\n\n\t\t// Class 1\n\t\t\"Perimeter Ambush Point\",\n\t\t\"Perimeter Camp\",\n\t\t\"Phase Catalyst Node\",\n\t\t\"The Line\",\n\t\t\"Forgotten Perimeter Coronation Platform\",\n\t\t\"Forgotten Perimeter Power Array\",\n\t\t\"Unsecured Perimeter Amplifier\",\n\t\t\"Unsecured Perimeter Information Center\",\n\n\t\t// Class 2\n\t\t\"Perimeter Checkpoint\",\n\t\t\"Perimeter Hangar\",\n\t\t\"The Ruins of Enclave Cohort 27\",\n\t\t\"Sleeper Data Sanctuary\",\n\t\t\"Forgotten Perimeter Gateway\",\n\t\t\"Forgotten Perimeter Habitation Coils\",\n\t\t\"Unsecured Perimeter Comms Relay\",\n\t\t\"Unsecured Perimeter Transponder Farm\",\n\n\t\t// Class 3\n\t\t\"Fortification Frontier Stronghold\",\n\t\t\"Outpost Frontier Stronghold\",\n\t\t\"Solar Cell\",\n\t\t\"The Oruze Construct\",\n\t\t\"Forgotten Frontier Quarantine Outpost\",\n\t\t\"Forgotten Frontier Recursive Depot\",\n\t\t\"Unsecured Frontier Database\",\n\t\t\"Unsecured Frontier Receiver\",\n\n\t\t// Class 4\n\t\t\"Frontier Barracks\",\n\t\t\"Frontier Command Post\",\n\t\t\"Integrated Terminus\",\n\t\t\"Sleeper Information Sanctum\",\n\t\t\"Forgotten Frontier Conversion Module\",\n\t\t\"Forgotten Frontier Evacuation Center\",\n\t\t\"Unsecured Frontier Digital Nexus\",\n\t\t\"Unsecured Frontier Trinary Hub\",\n\n\t\t// Class 5\n\t\t\"Core Garrison\",\n\t\t\"Core Stronghold\",\n\t\t\"Oruze Osobnyk\",\n\t\t\"Quarantine Area\",\n\t\t\"Forgotten Core Data Field\",\n\t\t\"Forgotten Core Information Pen\",\n\t\t\"Unsecured Frontier Enclave Relay\",\n\t\t\"Unsecured Frontier Server Bank\",\n\n\t\t// Class 6\n\t\t\"Core Citadel\",\n\t\t\"Core Bastion\",\n\t\t\"Strange Energy Readings\",\n\t\t\"The Mirror\",\n\t\t\"Forgotten Core Assembly Hall\",\n\t\t\"Forgotten Core Circuitry Disassembler\",\n\t\t\"Unsecured Core Backup Array\",\n\t\t\"Unsecured Core Emergence\"\n\t];\n\n\tif (wormholeSignatures.indexOf(sigName) > -1) {\n\t\treturn '
'+sigName+'';\n\t}\n\n\treturn sigName;\n}\n\n// Initialize tablesorter plugin on signaturesWidget table\n$(\"#sigTable\").tablesorter({\n\tsortReset: true,\n\twidgets: ['saveSort'],\n\ttextExtraction: {\n\t\t2: function(node) { return $(node).find(\"span\").data(\"age\"); }\n\t}\n});\n\n// Highlight signaturesWidget tr on click\n$(\"#sigTable tbody\").on(\"click\", \"tr\", function(e) {\n\tif (e.metaKey || e.ctrlKey) {\n\t\t// ctrl or cmd key\n\t\t$(this).toggleClass(\"selected\");\n\t} else if (e.shiftKey) {\n\t\t// shift key\n\t\t$(this).addClass(\"selected\");\n\t\t$(\"#sigTable tbody tr.selected:first\").nextUntil(\"#sigTable tbody tr.selected:last\").addBack().add(\"#sigTable tbody tr.selected:last\").addClass(\"selected\");\n\t} else {\n\t\t$(\"#sigTable tbody tr.selected\").removeClass(\"selected\");\n\t\t$(this).addClass(\"selected\");\n\t}\n});\n\n// Un-Highlight signaturesWidget tr on clicking outside\n$(document).click(function(e) {\n if(!$(e.target).closest('#sigTable tbody').length && !$(e.target).closest('#edit-signature').length && !$(e.target).closest('#delete-signature').length) {\n\t\t$(\"#sigTable tbody tr.selected\").removeClass(\"selected\");\n }\n});\n\n// Monitor custom 'classchange' event\n$(\"#sigTable tbody\").on(\"classchange\", \"tr\", function(e, className) {\n\t// Trigger signaturesWidget selected row change custom event\n\tif (className === \"selected\") {\n\t\t$(\"#signaturesWidget\").trigger(\"selected:change\");\n\t}\n});\n\n// Update signaturesWidget based on .selected rows change\n$(\"#signaturesWidget\").on(\"selected:change\", function() {\n\t// Enable/Disable delete icon\n\tif ($(\"#sigTable tr.selected\").length === 0) {\n\t\t$(\"#signaturesWidget #delete-signature\").addClass(\"disabled\");\n\t} else {\n\t\t$(\"#signaturesWidget #delete-signature\").removeClass(\"disabled\");\n\t}\n\n\t// Enable/Disable edit icon\n\tif ($(\"#sigTable tr.selected\").length === 1) {\n\t\t$(\"#signaturesWidget #edit-signature\").removeClass(\"disabled\");\n\t} else {\n\t\t$(\"#signaturesWidget #edit-signature\").addClass(\"disabled\");\n\t}\n})\n\n$(\"#dialog-error\").dialog({\n\tautoOpen: false,\n\tresizable: false,\n\tminHeight: 0,\n\tdialogClass: \"ui-dialog-shadow dialog-noeffect dialog-modal\",\n\tbuttons: {\n\t\tOk: function() {\n\t\t\t$(this).dialog(\"close\");\n\t\t}\n\t},\n\tcreate: function() {\n\t\t$(this).dialog(\"option\", \"show\", {effect: \"shake\", duration: 150, easing: \"easeOutElastic\"});\n\t}\n});\n\n$(\"#dialog-msg\").dialog({\n\tautoOpen: false,\n\tresizable: false,\n\tminHeight: 0,\n\tdialogClass: \"ui-dialog-shadow dialog-noeffect dialog-modal\",\n\tbuttons: {\n\t\tOk: function() {\n\t\t\t$(this).dialog(\"close\");\n\t\t}\n\t}\n});\n\n$(\"#dialog-confirm\").dialog({\n\tautoOpen: false,\n\tresizable: false,\n\tminHeight: 0,\n\tdialogClass: \"ui-dialog-shadow dialog-noeffect dialog-modal\",\n\tbuttons: {\n\t\tCancel: function() {\n\t\t\t$(this).dialog(\"close\");\n\t\t}\n\t}\n});\n\nif (window.location.href.indexOf(\"galileo\") != -1) {\n\tNotify.trigger(\"This is the test version of Tripwire.
Please use Tripwire\")\n}\n","/** Functions for rendering things relating to wormholes */\nconst wormholeRendering = new function() { \n\t/** Render a wormhole type (from appData.wormholes).\n\t* @param type The type object e.g. appData.wormholes.B274\n\t* @param key The wormhole type e.g. 'B274'\n\t* @param from What system, or type of system e.g. 'Class-2' the wormhole comes from. If omitted, the type object will be used\n\t* @param target As above but for the target of the wormhole\n\t*/\n\tthis.renderWormholeType = function(type, key, from, target) {\n\t\treturn ((key || type.key) ? '' + (key || type.key || '') + ': ' : '') +\n\t\t\tformatEndTypes(type.from, from) + '➔' + formatEndTypes(type.leadsTo, target) +\n\t\t\t(type.jump ? ' (' + this.renderMass(type.jump) + ')' : '')\n\t\t\t;\n\t};\n\t\n\t/** Render a mass number. */\n\tthis.renderMass = function(mass) { return Math.trunc(mass / 1e6) + 'kt'; }\n\t\n\tfunction formatEndTypes(types, override) {\n\t\tif(!types) { return '?'; }\n\t\ttypes = Array.isArray(types) ? types : [ types ];\n\t\t\n\t\tif(override) {\n\t\t\tconst overrideSystem = override.name ? override :\n\t\t\t\tsystemAnalysis.analyse(Object.index(appData.systems, \"name\", override, true) || override);\t// look up real system ID first\n\t\t\t\n\t\t\tconst eligibleTypes = types.filter(function(type) {\n\t\t\t\treturn overrideSystem.name == type || overrideSystem.genericSystemType == type;\n\t\t\t});\n\t\t\t\n\t\t\tif(eligibleTypes.length) { types = eligibleTypes; }\n\t\t}\n\t\t\n\t\treturn types.map(function(type) {\n\t\t\tconst systemID = Object.index(appData.systems, \"name\", type, true) || type;\t// look up real system ID first\n\t\t\tconst system = systemAnalysis.analyse(systemID);\n\t\t\treturn system ? '' + (system.name || system.systemTypeName) + '' : undefined }\n\t\t).filter(function(x) { return x !== undefined; }).join(',');\n\t};\n}","// Custom inlinecomplete + dropdown input\n$.widget(\"custom.inlinecomplete\", $.ui.autocomplete, {\n\t_create: function() {\n\t\tthis.options.source = this._coerceSource(this.options.source);\n\t\t\n\t\tif (!this.element.is(\"input\")) {\n\t\t\tthis._selectInit();\n\t\t}\n\n\t\t// Invoke the parent function\n\t\treturn this._super();\n\t},\n\t_value: function() {\n\t\t// Invoke the parent function\n\t\tvar originalReturn = this._superApply(arguments);\n\n\t\tthis.element.change();\n\n\t\treturn originalReturn;\n\t},\n\t_suggest: function(items) {\n\t\t// if (this.element.val() != items[0].value) {\n\t\t\t// this.element.val(items[0].value.substr(0, this.element.val().length));\n\t\t// }\n\n\t\t// Invoke the parent function\n\t\treturn this._super(items);\n\t},\n\t_coerceSource: function(source) {\n\t\t// Allow an object source like tripwire.systems - coerce it to an array\n\t\treturn $.isArray(source) ? source :\n\t\t\tObject.keys(source).map(function(k) { return Object.assign({ key: k }, source[k]); }.bind(this) );\n\t},\n\t_initSource: function() {\n\t\tthis.source = function(request, response) {\n\t\t\tvar matcher = new RegExp(\"^\" + $.ui.autocomplete.escapeRegex(request.term), \"i\");\n\t\t\tvar results = new Array(); // results array\n\t\t\tconst dataSource = this.options.source;\n\t\t\tvar maxSize = this.options.maxSize || 25; // maximum result size\n\t\t\t// simple loop for the options\n\t\t\tconst extraMatchFunction = typeof this.options.extraMatch === 'function' ? this.options.extraMatch : function(x) { return false; }\n\t\t\tfor (var i = 0, l = dataSource.length; i < l; i++) {\n\t\t\t\tconst value = dataSource[i];\n\t\t\t\tconst target = value.name || value.key || value;\n\t\t\t\tif (matcher.test(target) || extraMatchFunction(request.term, value)) {\n\t\t\t\t\tresults.push( { value: target, label: target, content: typeof value === 'object' ? value : undefined });\n\n\t\t\t\t\tif (maxSize && request.term !== '' && results.length > maxSize) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t // send response\n\t\t\t response(results);\n\t\t}\n\t},\t\n\t_renderItem: function( ul, item ) {\n\t\tif(item.content && this.options.renderer) {\n\t\t\tconst renderFunction = typeof this.options.renderer === 'function' ? this.options.renderer : renderers[this.options.renderer];\n\t\t\tconst renderResult = renderFunction(item.content);\n\t\t\treturn $( \"
  • \" )\n\t\t\t.html( '' + renderResult + '')\n\t\t\t.appendTo( ul );\n\t\t} else return this._super(ul, item);\n\t},\n\t_close: function(event) {\n\t\tthis.options.source = this.options.input_source ? this.options.input_source : this.options.source;\n\n\t\t// Invoke the parent function\n\t\treturn this._super(event);\n\t},\n\taddToSelect: function(value) {\n\t\tthis.options.select_added_value = value;\n\t\tthis.options.select_source.unshift(value);\n\t},\n\tremoveFromSelect: function(value) {\n\t\tif (value) {\n\t\t\tthis.options.select_source.splice(value, 1);\n\t\t} else if (this.options.select_added_value) {\n\t\t\tthis.options.select_source.splice(this.options.select_added_value, 1);\n\t\t}\n\t\tthis.options.select_added_value = null;\n\t},\n\t_selectInit: function() {\n\t\tthis.element.addClass(\"custom-combobox\");\n\t\tthis.wrapper = this.element;\n\t\tthis.element = this.wrapper.find(\"input:first\") || this.element;\n\t\tthis.select = this.wrapper.find(\"select:first\").remove();\n\n\t\tthis.options.input_source = this.options.source;\n\t\tconst selectItemMapper = this.options.select_item_mapper || function(x) { return x; };\n\t\tthis.options.select_source = selectItemMapper(this.select.children(\"option[value!='']\").map(function() { return $.trim(this.text); }).toArray());\n\n\t\tthis._createShowAllButton();\n\t},\n\t_createShowAllButton: function() {\n var that = this,\n wasOpen = false;\n\n $(\"\")\n\t\t\t.attr(\"tabIndex\", that.element.prop(\"tabindex\"))\n\t\t\t.attr(\"title\", \"\")\n\t\t\t.appendTo(that.wrapper)\n\t\t\t.button({icons: {primary: \"ui-icon-triangle-1-s\"}, text: false})\n\t\t\t.removeClass(\"ui-corner-all\")\n\t\t\t.addClass(\"custom-combobox-toggle ui-corner-right\")\n\t\t\t.on(\"mousedown\", function() {\n\t\t\t\twasOpen = that.widget().is(\":visible\");\n\t\t\t})\n\t\t\t.on(\"click\", function() {\n\t\t\t\tthat.element.trigger(\"focus\");\n\n\t\t\t\t// Close if already visible\n\t\t\t\tif (wasOpen) {\n\t\t\t\t return;\n\t\t\t\t}\n\n\t\t\t\t// Pass empty string as value to search for, displaying all results\n\t\t\t\tif(that.options.customDropdown) {\n\t\t\t\t\tthat.options.select_source = that._coerceSource(that.options.customDropdown())\n\t\t\t\t}\n\t\t\t\tthat.options.source = that.options.select_source;\n\t\t\t\tthat._search(\"\");\n\t\t\t});\n\t},\n});\n\nconst renderers = {\n\tsystem: function(system) {\n\t\treturn systemRendering.renderSystem(systemAnalysis.analyse(undefined, system), 'span');\n\t},\n\twormholeType: wormholeRendering.renderWormholeType\n};\n","const systemAnalysis = new function() {\n\tconst mutators = [];\n\tthis.addMutator = function(m) { mutators.push(m); }\n\t\n\t/** Extract attributes of the system, and allow mutators to add/modify them.\n\t\tOptionally, pass in a system object */\n\tthis.analyse = function(systemID, system) {\n\t\tif(!system) { system = appData.systems[systemID]; }\n\t\tif(!system) { system = getDummySystem(systemID); }\n\t\tif(!systemID) { systemID = system.systemID; }\n\t\tconst r = Object.assign({}, system);\n\t\t\n\t\t// Defaults or saved original values\n\t\tr.baseSecurity = 1 * system.security;\n\t\tr.pathSymbol = '■';\n\t\tr.systemTypeModifiers = [];\t\t\n\t\tr.systemID = systemID;\n\t\t\n\t\tmutators.forEach(function(m) { m.mutate(r, systemID); });\n\t\t\n\t\t// Calculated final values\n\t\tr.class = (!r.class || Array.isArray(r.class)) ? r.class : [1 * r.class];\n\t\tr.systemTypeClass = r.class ? 'wh class-' + r.class[0] :\n\t\t\tr.factionID == 500026 ? 'triglavian' :\n\t\t\tr.security >= 0.45 ? 'hisec' :\n\t\t\tr.security > 0.0 ? 'lowsec' :\n\t\t\tr.security <= 0.0 ? 'nullsec' :\n\t\t\t'unknown';\n\t\tr.systemTypeName = r.class ? 'C' + r.class.join('/') :\n\t\t\tr.factionID == 500026 ? 'Trig' :\n\t\t\tr.baseSecurity >= 0.45 ? 'HS' :\n\t\t\tr.baseSecurity > 0.0 ? 'LS' :\n\t\t\tr.baseSecurity <= 0.0 ? 'NS' :\n\t\t\t' ';\n\t\tr.genericSystemType = r.class ? r.class.map(x => 'Class-' + x) :\n\t\t\tr.factionID == 500026 ? ['Triglavian'] :\n\t\t\tr.baseSecurity >= 0.45 ? ['High-Sec'] :\n\t\t\tr.baseSecurity > 0.0 ? ['Low-Sec'] :\n\t\t\tr.baseSecurity <= 0.0 ? ['Null-Sec'] :\n\t\t\tundefined;\n\t\tr.effectClass = \n\t\t\tr.effect === 'Black Hole' ? 'blackhole' :\n\t\t\tr.effect === 'Cataclysmic Variable' ? 'cataclysmic-variable' :\n\t\t\tr.effect === 'Magnetar' ? 'magnetar' :\n\t\t\tr.effect === 'Pulsar' ? 'pulsar' :\n\t\t\tr.effect === 'Red Giant' ? 'red-giant' :\n\t\t\tr.effect === 'Wolf-Rayet Star' ? 'wolf-rayet' :\n\t\t\tundefined;\n\t\t\t\n\t\treturn r;\n\t};\n\t\n\t/** Get the classes possible for a 'leads to' text e.g. 'Class-2', 'Dangerous', 'Triglavian' */\n\tfunction classForTypeName(leadsTo) {\n\t\treturn leadsTo && leadsTo.substring(0, 6) == 'Class-' ? [1 * leadsTo.substring(6)] :\n\t\t\t'Dangerous' == leadsTo ? [4,5] :\n\t\t\t'Unknown' == leadsTo ? [2,3] :\n\t\t\t'Unknown (small)' == leadsTo ? [1,2,3,13] :\n\t\t\tundefined;\n\t};\n\tthis.classForTypeName = classForTypeName;\t// expose public\n\t\n\t/** Create a dummy system object for fake IDs like 'Null-Sec', 'Class-5' etc */\n\tfunction getDummySystem(systemID) {\n\t\tconst leadsToPointer = typeof(systemID) === \"string\" && systemID.indexOf(\"|\") >= 0 ? appData.genericSystemTypes[systemID.substring(0, systemID.indexOf(\"|\"))]\n\t\t: appData.genericSystemTypes.indexOf(systemID) >= 0 ? systemID\n\t\t: appData.genericSystemTypes[systemID];\n\t\tconst nodeClass = classForTypeName(leadsToPointer);\n\t\tconst nodeSecurity = \n\t\t\tleadsToPointer == \"High-Sec\" ? 0.8 :\n\t\t\tleadsToPointer == \"Low-Sec\" ? 0.4 :\n\t\t\tleadsToPointer == \"Null-Sec\" ? -0.1 :\n\t\t\tundefined;\n\t\tconst nodeFaction = \n\t\t\tleadsToPointer == \"Triglavian\" ? 500026 :\n\t\t\tundefined;\n\t\t\n\t\treturn { security: nodeSecurity, class: nodeClass, factionID: nodeFaction };\n\t}\n}","const mutator_favourite = new _FavouriteMutator();\nsystemAnalysis.addMutator(mutator_favourite);\n\nfunction _FavouriteMutator() {\n\tconst _this = this;\n\n\tthis.mutate = function(system, systemID) {\n\t\tif(options.favorites.indexOf(systemID * 1) >= 0) {\n\t\t\tsystem.pathSymbol = '★';\n\t\t\tsystem.systemTypeModifiers.push('');\t\t// star added by CSS\n\t\t}\n\t}\n}","const invasions = new _Invasions();\nsystemAnalysis.addMutator(invasions);\n\nfunction _Invasions() {\n\tconst _this = this;\n\tconst pathSymbolMap = {\n\t\tstellar_reconnaissance: '◆',\n\t\t\n\t\ttriglavian_minor_victory: '▽',\n\t\tescalating_liminality: '▽',\n\t\tfinal_liminality: '▼',\n\t\t\n\t\tedencom_minor_victory: '△',\n\t\tredoubt: '△', bulwark: '△',\n\t\tfortress: '▲',\n\t};\n\tconst textMap = {\n\t\tstellar_reconnaissance: 'Stellar Reconnaissance',\n\t\t\n\t\ttriglavian_minor_victory: 'Triglavian Minor Victory',\n\t\tescalating_liminality: 'Escalating Liminality',\n\t\tfinal_liminality: 'Final Liminality',\n\t\t\n\t\tedencom_minor_victory: 'EDENCOM Minor Victory',\n\t\tredoubt: 'Redoubt',\n\t\tbulwark: 'Bulwark',\n\t\tfortress: 'EDENCOM Fortress',\n\t}\n\tconst data = [{\"system_id\":30003088,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-10-04T12:29:02.888Z\",\"system_name\":\"Oyonata\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003894,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-10-01T18:28:09.852Z\",\"system_name\":\"Sabusi\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004302,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-30T15:36:50.977Z\",\"system_name\":\"Omigiav\",\"system_security\":\"0.2\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003539,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-09-30T14:11:30.759Z\",\"system_name\":\"Miakie\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005074,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-30T14:02:33.042Z\",\"system_name\":\"Daran\",\"system_security\":\"0.2\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003570,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-30T13:47:01.992Z\",\"system_name\":\"Elore\",\"system_security\":\"0.2\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30003573,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-09-28T15:38:24.368Z\",\"system_name\":\"Pertnineere\",\"system_security\":\"0.4\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30003463,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-28T15:38:14.299Z\",\"system_name\":\"Erlendur\",\"system_security\":\"0.5\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30002079,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.4\",\"updated_at\":\"2020-09-28T15:37:20.058Z\",\"system_name\":\"Krirald\",\"system_security\":\"0.2\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30002652,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.4\",\"updated_at\":\"2020-09-28T15:36:53.719Z\",\"system_name\":\"Ala\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30045331,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-28T15:36:28.616Z\",\"system_name\":\"Vaaralen\",\"system_security\":\"0.3\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003788,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-26T12:44:03.049Z\",\"system_name\":\"Intaki\",\"system_security\":\"0.1\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30002724,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-25T00:51:28.251Z\",\"system_name\":\"Assiettes\",\"system_security\":\"0.6\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30002999,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-24T12:03:23.037Z\",\"system_name\":\"Shastal\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000102,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-23T22:22:21.093Z\",\"system_name\":\"Dysa\",\"system_security\":\"0.2\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003919,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-22T10:22:11.970Z\",\"system_name\":\"Ashkoo\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004978,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-22T10:21:30.195Z\",\"system_name\":\"Pemene\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30004287,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-20T11:25:28.863Z\",\"system_name\":\"Esubara\",\"system_security\":\"0.2\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002051,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-20T11:25:09.478Z\",\"system_name\":\"Anher\",\"system_security\":\"0.5\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30003823,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-20T11:24:54.777Z\",\"system_name\":\"Kenninck\",\"system_security\":\"0.1\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30001400,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-18T14:03:33.048Z\",\"system_name\":\"Litiura\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30005251,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-09-18T09:42:27.550Z\",\"system_name\":\"Asanot\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005267,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-17T11:18:57.960Z\",\"system_name\":\"Bherdasopt\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002411,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.3\",\"updated_at\":\"2020-09-17T00:30:42.544Z\",\"system_name\":\"Skarkon\",\"system_security\":\"0.1\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30003587,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-15T01:16:50.021Z\",\"system_name\":\"Harner\",\"system_security\":\"0.1\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30003904,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-14T16:54:07.359Z\",\"system_name\":\"Col\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005209,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-14T16:53:54.556Z\",\"system_name\":\"Sibe\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004103,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-09-14T13:40:36.727Z\",\"system_name\":\"Kothe\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005219,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-13T09:34:00.331Z\",\"system_name\":\"Sigga\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002755,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-12T20:51:38.354Z\",\"system_name\":\"Usi\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003824,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-11T08:28:52.435Z\",\"system_name\":\"Archavoinet\",\"system_security\":\"0.6\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30002239,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-11T08:28:42.669Z\",\"system_name\":\"Rammi\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005005,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.5\",\"updated_at\":\"2020-09-10T21:09:12.196Z\",\"system_name\":\"Ignebaener\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30000021,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.8\",\"updated_at\":\"2020-09-09T21:16:25.577Z\",\"system_name\":\"Kuharah\",\"system_security\":\"0.2\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000118,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-09-09T08:08:17.988Z\",\"system_name\":\"Uanzin\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003794,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-07T23:26:42.297Z\",\"system_name\":\"Stacmon\",\"system_security\":\"0.6\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30003927,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-07T22:18:47.862Z\",\"system_name\":\"Zahefeus\",\"system_security\":\"0.2\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000109,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-07T20:54:30.351Z\",\"system_name\":\"Berta\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002797,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.9\",\"updated_at\":\"2020-09-06T13:33:29.649Z\",\"system_name\":\"Kaunokka\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30031392,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.4\",\"updated_at\":\"2020-09-06T13:33:15.544Z\",\"system_name\":\"Komo\",\"system_security\":\"0.8\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30004090,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-09-06T06:22:50.377Z\",\"system_name\":\"Aband\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000060,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-06T01:54:13.794Z\",\"system_name\":\"Janus\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003548,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-09-05T17:05:22.429Z\",\"system_name\":\"Barira\",\"system_security\":\"0.8\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000160,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-04T23:48:55.626Z\",\"system_name\":\"Reisen\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30004999,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-04T15:38:27.450Z\",\"system_name\":\"Ladistier\",\"system_security\":\"0.3\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30000113,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-09-04T07:07:27.574Z\",\"system_name\":\"Astabih\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004295,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-09-02T18:09:55.446Z\",\"system_name\":\"Keba\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30001413,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.2\",\"updated_at\":\"2020-09-02T08:11:42.869Z\",\"system_name\":\"Nani\",\"system_security\":\"0.8\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30002386,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-09-01T08:04:35.922Z\",\"system_name\":\"Gelfiven\",\"system_security\":\"0.6\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30004973,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-31T21:17:02.227Z\",\"system_name\":\"Caslemon\",\"system_security\":\"0.6\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30004231,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-31T20:32:52.884Z\",\"system_name\":\"Shakasi\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004284,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-31T20:32:43.772Z\",\"system_name\":\"Defsunun\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002266,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-31T10:38:02.368Z\",\"system_name\":\"Ahmak\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003932,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-29T23:12:29.549Z\",\"system_name\":\"Timudan\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004254,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-28T16:43:28.986Z\",\"system_name\":\"Fihrneh\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004244,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-28T07:55:35.187Z\",\"system_name\":\"Onanam\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002513,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-27T20:59:21.817Z\",\"system_name\":\"Dammalin\",\"system_security\":\"0.5\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30000206,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.5\",\"updated_at\":\"2020-08-27T14:06:44.066Z\",\"system_name\":\"Wirashoda\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30002048,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-27T11:14:57.970Z\",\"system_name\":\"Bei\",\"system_security\":\"0.6\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30003090,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-26T23:04:35.948Z\",\"system_name\":\"Saidusairos\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003478,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-26T00:06:02.331Z\",\"system_name\":\"Basan\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004289,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-25T11:33:32.949Z\",\"system_name\":\"Vaini\",\"system_security\":\"0.2\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30045345,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-24T21:16:26.292Z\",\"system_name\":\"Hirri\",\"system_security\":\"0.3\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30001358,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-24T08:44:18.165Z\",\"system_name\":\"Ossa\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003061,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-24T07:23:55.183Z\",\"system_name\":\"Mormelot\",\"system_security\":\"0.2\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30040141,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.4\",\"updated_at\":\"2020-08-23T11:05:21.929Z\",\"system_name\":\"Urhinichi\",\"system_security\":\"0.8\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003078,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-22T18:47:39.976Z\",\"system_name\":\"Erkinen\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002530,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-22T15:09:00.523Z\",\"system_name\":\"Avesber\",\"system_security\":\"0.8\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30003900,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-22T07:50:34.044Z\",\"system_name\":\"Ham\",\"system_security\":\"0.2\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002644,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-21T08:26:40.788Z\",\"system_name\":\"Ambeke\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30001401,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-21T00:44:17.584Z\",\"system_name\":\"Nonni\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30045328,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.7\",\"updated_at\":\"2020-08-20T14:35:34.268Z\",\"system_name\":\"Ahtila\",\"system_security\":\"0.6\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003480,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-20T11:19:04.711Z\",\"system_name\":\"Amod\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004141,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-20T01:50:23.539Z\",\"system_name\":\"Hiremir\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002770,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.1\",\"updated_at\":\"2020-08-18T14:53:00.972Z\",\"system_name\":\"Tunudan\",\"system_security\":\"0.4\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003504,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.7\",\"updated_at\":\"2020-08-18T14:46:27.787Z\",\"system_name\":\"Niarja\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002253,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-18T09:31:28.183Z\",\"system_name\":\"Arshat\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002737,\"status\":\"final_liminality\",\"derived_security_status\":\"0.0\",\"updated_at\":\"2020-08-16T21:29:53.121Z\",\"system_name\":\"Konola\",\"system_security\":\"0.7\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003398,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-16T17:38:55.577Z\",\"system_name\":\"Anbald\",\"system_security\":\"0.7\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30003490,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-15T20:27:08.919Z\",\"system_name\":\"Khopa\",\"system_security\":\"0.8\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30001696,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-14T06:57:31.468Z\",\"system_name\":\"Iro\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000192,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.3\",\"updated_at\":\"2020-08-14T01:51:38.839Z\",\"system_name\":\"Otanuomi\",\"system_security\":\"0.4\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30002772,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-13T11:24:31.714Z\",\"system_name\":\"Rairomon\",\"system_security\":\"0.6\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30005284,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-13T11:24:24.229Z\",\"system_name\":\"Promised Land\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30045354,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-13T07:37:02.262Z\",\"system_name\":\"Reitsato\",\"system_security\":\"0.2\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30005222,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-12T17:58:16.210Z\",\"system_name\":\"Serren\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003556,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-10T23:13:52.643Z\",\"system_name\":\"Arton\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005086,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-10T06:50:08.222Z\",\"system_name\":\"Arza\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000157,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.3\",\"updated_at\":\"2020-08-10T06:49:46.743Z\",\"system_name\":\"Otela\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003918,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-09T15:49:15.024Z\",\"system_name\":\"Hakana\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002385,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-09T00:34:34.831Z\",\"system_name\":\"Teonusude\",\"system_security\":\"0.6\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30002704,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-07T22:29:26.455Z\",\"system_name\":\"Adrallezoen\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30001372,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.9\",\"updated_at\":\"2020-08-07T19:29:54.183Z\",\"system_name\":\"Kino\",\"system_security\":\"0.7\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003908,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-07T07:00:48.775Z\",\"system_name\":\"Bashyam\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000012,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-06T09:30:28.248Z\",\"system_name\":\"Asabona\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005058,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-05T21:45:44.898Z\",\"system_name\":\"Neesher\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004305,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-05T21:24:35.293Z\",\"system_name\":\"Esaeel\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003883,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-05T20:44:57.150Z\",\"system_name\":\"Keberz\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003481,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-05T07:41:10.729Z\",\"system_name\":\"Unefsih\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003397,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-04T16:45:17.206Z\",\"system_name\":\"Bongveber\",\"system_security\":\"0.9\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30002702,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.4\",\"updated_at\":\"2020-08-04T11:15:48.842Z\",\"system_name\":\"Archee\",\"system_security\":\"0.4\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30003460,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-03T22:03:14.542Z\",\"system_name\":\"Offikatlin\",\"system_security\":\"0.4\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30004084,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-02T17:58:04.736Z\",\"system_name\":\"Ghesis\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003574,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-01T20:28:35.755Z\",\"system_name\":\"Boystin\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30005213,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-01T20:20:33.816Z\",\"system_name\":\"Hesarid\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005308,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-08-01T10:42:51.414Z\",\"system_name\":\"Jufvitte\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30002665,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-01T02:12:09.248Z\",\"system_name\":\"Misneden\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30000188,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-08-01T02:11:39.811Z\",\"system_name\":\"Hentogaira\",\"system_security\":\"0.6\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30002557,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-31T18:00:06.264Z\",\"system_name\":\"Atgur\",\"system_security\":\"0.5\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30003058,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-29T09:14:47.194Z\",\"system_name\":\"Olide\",\"system_security\":\"0.7\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30005334,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-28T23:28:39.525Z\",\"system_name\":\"Tierijev\",\"system_security\":\"0.8\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30003046,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.5\",\"updated_at\":\"2020-07-28T14:20:51.847Z\",\"system_name\":\"Angymonne\",\"system_security\":\"0.6\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30003514,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-07-27T18:47:08.094Z\",\"system_name\":\"Yeeramoun\",\"system_security\":\"0.8\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002760,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-26T11:44:38.056Z\",\"system_name\":\"Manjonakko\",\"system_security\":\"0.3\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30002506,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-23T18:07:27.688Z\",\"system_name\":\"Osoggur\",\"system_security\":\"0.5\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30005052,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-07-21T17:37:44.002Z\",\"system_name\":\"Soumi\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003931,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-20T16:54:45.398Z\",\"system_name\":\"Sassecho\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005255,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-20T09:34:48.342Z\",\"system_name\":\"Saphthar\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30020141,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.9\",\"updated_at\":\"2020-07-19T11:16:57.684Z\",\"system_name\":\"Senda\",\"system_security\":\"0.9\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30002795,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-18T01:59:01.724Z\",\"system_name\":\"Oshaima\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30000004,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-07-17T22:26:00.294Z\",\"system_name\":\"Jark\",\"system_security\":\"0.8\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004263,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-15T21:20:01.593Z\",\"system_name\":\"Feshur\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000062,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-15T15:49:03.146Z\",\"system_name\":\"Iosantin\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002241,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-13T01:22:41.989Z\",\"system_name\":\"Rimbah\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004981,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-12T11:24:07.265Z\",\"system_name\":\"Actee\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30002242,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-07-10T19:06:05.853Z\",\"system_name\":\"Mamenkhanar\",\"system_security\":\"0.7\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003558,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-10T13:51:31.889Z\",\"system_name\":\"Madimal\",\"system_security\":\"0.7\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30001376,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-09T16:04:24.621Z\",\"system_name\":\"Nourvukaiken\",\"system_security\":\"0.8\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30045329,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.4\",\"updated_at\":\"2020-07-08T10:41:47.622Z\",\"system_name\":\"Ichoriya\",\"system_security\":\"0.6\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30005252,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-07-07T23:49:41.522Z\",\"system_name\":\"Anzalaisio\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004257,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-07T17:15:51.416Z\",\"system_name\":\"Hakatiz\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004108,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-05T01:56:57.535Z\",\"system_name\":\"Chaneya\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000048,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-03T15:11:36.506Z\",\"system_name\":\"Ihal\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003482,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-02T20:56:41.226Z\",\"system_name\":\"Mista\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002225,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.8\",\"updated_at\":\"2020-07-01T14:11:27.451Z\",\"system_name\":\"Harva\",\"system_security\":\"0.8\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005263,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-01T13:43:12.530Z\",\"system_name\":\"Mozzidit\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005066,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-07-01T06:43:25.457Z\",\"system_name\":\"Kerying\",\"system_security\":\"0.2\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002986,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-28T17:43:41.096Z\",\"system_name\":\"Mendori\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30001381,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.1\",\"updated_at\":\"2020-06-27T00:02:01.315Z\",\"system_name\":\"Arvasaras\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30001447,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-25T02:19:25.407Z\",\"system_name\":\"Taisy\",\"system_security\":\"0.3\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30002700,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-24T13:40:05.882Z\",\"system_name\":\"Bawilan\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30001390,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-24T09:42:32.895Z\",\"system_name\":\"Pakkonen\",\"system_security\":\"0.4\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003076,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-23T09:02:12.462Z\",\"system_name\":\"Gammel\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003050,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-23T06:32:08.087Z\",\"system_name\":\"Odixie\",\"system_security\":\"0.6\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30000163,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-22T19:28:52.910Z\",\"system_name\":\"Akora\",\"system_security\":\"0.3\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003073,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-21T07:12:31.404Z\",\"system_name\":\"Netsalakka\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30001391,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-20T21:12:20.299Z\",\"system_name\":\"Piekura\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30002771,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-20T00:41:47.611Z\",\"system_name\":\"Kulelen\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30000005,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-19T14:36:55.956Z\",\"system_name\":\"Sasta\",\"system_security\":\"0.8\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005330,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-19T13:21:23.145Z\",\"system_name\":\"Arraron\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30000205,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-18T22:06:13.302Z\",\"system_name\":\"Obe\",\"system_security\":\"0.3\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003856,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-18T12:10:11.496Z\",\"system_name\":\"Athounon\",\"system_security\":\"0.1\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30004250,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-17T11:42:53.830Z\",\"system_name\":\"Chibi\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004268,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-17T08:56:42.286Z\",\"system_name\":\"Shenda\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005236,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-17T07:25:26.811Z\",\"system_name\":\"Noranim\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003829,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-16T22:17:39.177Z\",\"system_name\":\"Renarelle\",\"system_security\":\"0.3\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30005034,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-16T21:32:34.651Z\",\"system_name\":\"Bridi\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003074,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-16T21:31:28.344Z\",\"system_name\":\"Sasiekko\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003392,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-15T19:26:39.709Z\",\"system_name\":\"Eygfe\",\"system_security\":\"0.7\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30001445,\"status\":\"final_liminality\",\"derived_security_status\":\"0.0\",\"updated_at\":\"2020-06-15T03:38:02.163Z\",\"system_name\":\"Nalvula\",\"system_security\":\"0.4\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30010141,\"status\":\"final_liminality\",\"derived_security_status\":\"-0.2\",\"updated_at\":\"2020-06-14T01:12:53.428Z\",\"system_name\":\"Sakenta\",\"system_security\":\"1.0\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003809,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-13T20:25:21.879Z\",\"system_name\":\"Brellystier\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30001718,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-13T05:28:45.485Z\",\"system_name\":\"Paye\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004256,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-11T13:37:54.195Z\",\"system_name\":\"Edilkam\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002645,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-11T00:28:57.560Z\",\"system_name\":\"Carrou\",\"system_security\":\"0.4\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30045338,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-10T22:28:25.084Z\",\"system_name\":\"Hikkoken\",\"system_security\":\"0.3\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30004301,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-10T16:44:37.396Z\",\"system_name\":\"Anath\",\"system_security\":\"0.1\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002575,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-10T05:41:23.824Z\",\"system_name\":\"Sotrenzur\",\"system_security\":\"0.3\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30003515,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-08T06:49:36.637Z\",\"system_name\":\"Anila\",\"system_security\":\"0.7\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004100,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-08T03:04:19.196Z\",\"system_name\":\"Halibai\",\"system_security\":\"0.7\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002397,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-08T01:10:38.296Z\",\"system_name\":\"Horaka\",\"system_security\":\"0.6\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30002662,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-07T11:22:11.884Z\",\"system_name\":\"Pulin\",\"system_security\":\"0.5\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30001383,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-07T06:16:44.145Z\",\"system_name\":\"Vaajaita\",\"system_security\":\"0.5\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003854,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-06T19:17:57.398Z\",\"system_name\":\"Alamel\",\"system_security\":\"0.2\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30003464,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-06T19:16:59.888Z\",\"system_name\":\"Aldik\",\"system_security\":\"0.7\",\"system_sovereignty\":\"minmatar\"},{\"system_id\":30000182,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-06T19:04:22.126Z\",\"system_name\":\"Inaya\",\"system_security\":\"0.6\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30001660,\"status\":\"edencom_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-06T17:38:27.602Z\",\"system_name\":\"Dabrid\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30001685,\"status\":\"triglavian_minor_victory\",\"derived_security_status\":null,\"updated_at\":\"2020-06-06T17:34:50.620Z\",\"system_name\":\"Ordat\",\"system_security\":\"0.3\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005029,\"status\":\"final_liminality\",\"derived_security_status\":\"-1.0\",\"updated_at\":\"2020-06-06T15:44:51.914Z\",\"system_name\":\"Vale\",\"system_security\":\"0.7\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30045322,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-06T01:44:55.204Z\",\"system_name\":\"Samanuni\",\"system_security\":\"0.7\",\"system_sovereignty\":\"caldari\"},{\"system_id\":30003885,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-05T17:09:39.066Z\",\"system_name\":\"Arzanni\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004248,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-05T00:49:40.255Z\",\"system_name\":\"Haimeh\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003495,\"status\":\"final_liminality\",\"derived_security_status\":\"-1.0\",\"updated_at\":\"2020-06-04T23:08:13.644Z\",\"system_name\":\"Raravoss\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003541,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-03T16:55:17.838Z\",\"system_name\":\"Faswiba\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002651,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-03T15:38:07.592Z\",\"system_name\":\"Fasse\",\"system_security\":\"0.4\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30004150,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-03T04:02:40.650Z\",\"system_name\":\"Shaggoth\",\"system_security\":\"0.7\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30002251,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-03T04:02:40.650Z\",\"system_name\":\"Sadye\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30005260,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-03T04:02:40.650Z\",\"system_name\":\"Keri\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30000105,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-03T04:02:40.650Z\",\"system_name\":\"Abha\",\"system_security\":\"0.4\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30004992,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-03T04:02:40.650Z\",\"system_name\":\"Palmon\",\"system_security\":\"0.4\",\"system_sovereignty\":\"gallente\"},{\"system_id\":30002243,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-03T04:02:40.650Z\",\"system_name\":\"Seiradih\",\"system_security\":\"0.6\",\"system_sovereignty\":\"amarr\"},{\"system_id\":30003553,\"status\":\"fortress\",\"derived_security_status\":null,\"updated_at\":\"2020-06-03T04:02:40.650Z\",\"system_name\":\"Warouh\",\"system_security\":\"0.5\",\"system_sovereignty\":\"amarr\"}];\n\t\n\tthis.invasions = _.keyBy(data, function(x) { return x.system_id; });\n\t\n\t/** Update the system */\n\tthis.mutate = function(system, systemID) {\n\t\tconst systemInvasion = this.invasions[systemID];\n\t\tif(systemInvasion) {\n\t\t\tif(systemInvasion.derived_security_status) { system.security = 1 * systemInvasion.derived_security_status; }\n\t\t\tsystem.pathSymbol = pathSymbolMap[systemInvasion.status];\n\t\t\tconst tip = textMap[systemInvasion.status] +\n\t\t\t\t(systemInvasion.derived_security_status ? '
    Effective security lowered to ' + systemInvasion.derived_security_status : '');\n\t\t\tsystem.systemTypeModifiers.push('' + system.pathSymbol + '');\n\t\t}\n\t}\n}","var guidance = (function (undefined) {\n\t\n\n\tvar sorter = function (a, b) {\n\t\treturn parseFloat (a) - parseFloat (b);\n\t}\n\n\tfunction adjustCostForOptions(mapCost, toSystem) {\t\t\n\t\tvar system = systemAnalysis.analyse(30000000 + 1 * toSystem);\n\t\tif(!system) { return mapCost; }\n\t\tif(options.chain.routeIgnore.enabled && options.chain.routeIgnore.systems.indexOf(system.name) >= 0) {\n\t\t\tmapCost += 100;\t// Penalty for an avoided system\n\t\t}\n\t\tif(system.name == 'Zarzakh') { mapCost += 100; } // Always avoid Zarzakh for its 6h wait\n\t\tswitch(options.chain.routeSecurity) {\n\t\t\tcase 'highsec': return mapCost + (system.security < 0.45 ? 100 : 0);\n\t\t\tcase 'avoid-high': return mapCost + (system.security >= 0.45 ? 100 : 0);\n\t\t\tcase 'avoid-null': return mapCost + (system.security <= 0.0 ? 100 : 0);\n\t\t\tdefault: return mapCost;\t// in case of some invalid option, default to shortest\n\t\t}\t\n\t}\n\t\n\tfunction adjustJumpCost(from, to, cost) {\n\t\treturn Guidance.jumpCostModifiers.reduce((cost, modifier) => modifier(from, to, cost), cost);\n\t}\n\n\t/** Find a path between the start and end nodes (which may be arrays), up to the path length limit */\n\tvar findPaths = function (map, start, end, limit) {\n\t\tif(!Array.isArray(start)) { start = [start]; } \n\t\tif(!Array.isArray(end)) { end = [end]; } \n\t\t\n\t\tstart = start.filter(function(x) { return map[x]; });\n\t\tend = end.filter(function(x) { return map[x]; });\n\t\t\n\t\tconst endsInStart = end.filter(function(x) { return start.indexOf(x) >= 0; });\n\t\tif(endsInStart.length) { return [endsInStart[0]]; }\n\t\t\n\t\tif(!(start.length && end.length)) { return null; }\t// both ends of path must be in network somewhere\n\n\t\tvar costs = {},\n\t\t open = {'0': []},\n\t\t predecessors = {},\n\t\t keys;\n\t\t\n\t\tstart.forEach(function(x) { costs[x] = 0; open[0].push(x); });\n\n\t\tvar addToOpen = function (cost, vertex) {\n\t\t\tvar key = \"\" + cost;\n\t\t\tif (!open[key]) open[key] = [];\n\t\t\topen[key].push(vertex);\n\t\t}\n\n\t\twhile ((keys = Object.keys(open)).length) {\n\t\t\tkeys.sort(sorter);\n\n\t\t\tvar key = keys[0],\n\t\t\t bucket = open[key],\n\t\t\t node = bucket.shift(),\n\t\t\t currentCost = parseFloat(key),\n\t\t\t adjacentNodes = map[node] || {};\n\n\t\t\tif (!bucket.length) delete open[key];\n\t\t\tif(currentCost >= limit) { break; }\n\n\t\t\tfor (var vertexText in adjacentNodes) {\n\t\t\t\tconst vertex = 1 * vertexText;\n\t\t\t if (adjacentNodes[vertex] !== undefined) {\n\t\t\t\t\tvar cost = 1 + adjustCostForOptions(adjacentNodes[vertex], vertex),\n\t\t\t\t\t totalCost = cost + currentCost,\n\t\t\t\t\t vertexCost = costs[vertex];\n\t\t\t\t\t\n\t\t\t\t\tcost = adjustJumpCost(node, vertex, cost);\n\n\t\t\t\t\tif ((cost > 0) && (vertexCost === undefined) || (vertexCost > totalCost)) {\n\t\t\t\t\t\tcosts[vertex] = totalCost;\n\t\t\t\t\t\taddToOpen(totalCost, vertex);\n\t\t\t\t\t\tpredecessors[vertex] = node;\n\t\t\t\t\t\tif(end.indexOf(vertex) >= 0) {\n\t\t\t\t\t\t\treturn extractShortest(predecessors, vertex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn null;\t// never hit any end node\n\t}\n\n\tvar extractShortest = function (predecessors, end) {\n\t\tvar nodes = [],\n\t\t u = end;\n\n\t\twhile (u) {\n\t\t\tnodes.push(u);\n\t\t\tpredecessor = predecessors[u];\n\t\t\tu = predecessors[u];\n\t\t}\n\n\t\tnodes.reverse();\n\t\treturn nodes;\n\t}\n\n\t/** Find the best path that connects the given nodes, in that order. The limit will be applied to each path segment, not the path as a whole. */\n\tvar findMultiNodePath = function (map, nodes, limit) {\n\t\tvar start = nodes.shift(),\n\t\t end,\n\t\t predecessors,\n\t\t path = [],\n\t\t shortest;\n\n\t\twhile (nodes.length) {\n\t\t\tend = nodes.shift();\n\t\t\tshortest = findPaths(map, start, end, limit);\n\n\t\t\tif (shortest) {\n\t\t\t\tif (nodes.length) {\n\t\t\t\t\tpath.push.apply(path, shortest.slice(0, -1));\n\t\t\t\t} else {\n\t\t\t\t\treturn path.concat(shortest);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tstart = end;\n\t\t}\n\t}\n\t\n\tvar Guidance = { kSpaceCache: {}, jumpCostModifiers: [] };\n\tGuidance.clearCache = function() { Guidance.kSpaceCache = {}; }\n\t\n\t/** Find the shortest path between start and end nodes on the given map.\n\tThe map should be a dictionary of node IDs where each entry is a dictionary of connected nodes and costs (see appData.map.shortest). An additional cost of 1 per jump will be added.\n\tYou may also specify a maximum path length limit, if no path under this length is found then no path will be returned, even if a longer one is available.\n\tStart and end nodes may be a single ID or an array of IDs. If arrays are used then a single shortest path between any combination of nodes will be returned */\n\tGuidance.findShortestPath = function (map, start, end, limit) {\n\t\tif(start > 30000000) { start -= 30000000; }\n\t\tif(end > 30000000) { end -= 30000000; }\n\t\t\n\t\tconst nodes = [start, end];\n\n\t\tconst cacheKey = nodes.join(',') + (limit ? '-' + limit : '');\n\t\tconst cachedPath = Guidance.kSpaceCache[cacheKey];\n\t\tif(cachedPath === undefined) {\n\t\t\treturn Guidance.kSpaceCache[cacheKey] = findPaths(map, start, end, limit);\n\t\t} else {\n\t\t\treturn cachedPath;\n\t\t}\n\t}\n\t\n\t/** Find the systems directly connected to this one. System IDs are in normal (+ 30000000) domain. */\n\tGuidance.connections = function(map, start) {\n\t\tif(start > 30000000) { start -= 30000000; }\n\t\treturn Object.keys(map[start] || {})\n\t\t\t.map(k => (k * 1))\n\t\t\t.map(k => {\n\t\t\t\tconst r = { systemID: k + 30000000 };\n\t\t\t\tif(0 > adjustJumpCost(start, k, 1)) { r.closed = true; }\n\t\t\t\treturn r;\n\t\t\t});\n\t}\n\n\treturn Guidance;\n})();\n","/** Functions for rendering things relating to systems or parts of the chain */\nconst systemRendering = new function() { \n\t/** Render a path, as returned from guidance.findShortestPath */\n\tthis.renderPath = function(path) {\n\t\tif(path.length <= 1 || path.length > options.chain.routingLimit) { return '' + path.length - 1; }\n\t\telse {\n\t\t\tvar systemMarkup = path\n\t\t\t.slice(0, path.length - 1).reverse()\n\t\t\t.map(function(s) {\n\t\t\t\tconst systemID = 30000000 + 1 * s;\n\t\t\t\tconst system = systemAnalysis.analyse(systemID);\n\t\t\t\tconst securityClass = system.systemTypeClass;\n\t\t\t\t// The tooltip showed the raw true-sec (0.4345345). The game shows\n\t\t\t\t// one decimal, and that is the number a pilot recognises.\n\t\t\t\tconst sec = Number(system.security);\n\t\t\t\tconst secText = isFinite(sec) ? sec.toFixed(1) : String(system.security);\n\t\t\t\treturn '' + system.pathSymbol + '';\n\t\t\t});\n\t\t\tvar r = '';\n\t\t\tfor(var i = 0; i < systemMarkup.length; i++) {\n\t\t\t\tif(i > 0 && 0 == i % 5) { r += '|'; }\n\t\t\t\t\n\t\t\t\tr += systemMarkup[i];\t\t\t\t \n\t\t\t}\n\t\t\treturn r + '';\n\t\t}\n\t}\n\t\n\tthis.renderEffect = function(system, tag) {\n\t\treturn system.effectClass ? \"<\" + tag + \" class='whEffect' data-icon='\"+system.effectClass+\"' data-tooltip='\"+system.effect+\"'>\" : '';\n\t}\n\t\n\tthis.renderSystem = function(systemInfo, tag) {\n\t\ttag = tag || 'a';\n\t\tconst text = systemInfo.name || systemInfo.genericSystemType;\n\t\treturn '<' + tag + (tag === 'a' ? ' href=\".?system=' + systemInfo.name + '\"' : '') + '>' + text + ' (' + this.renderEffect(systemInfo, 'span') + '' + systemInfo.systemTypeName + ')';\n\t}\n};","const ChainMapRendererBase = function(owner) {\n\t/** Is this renderer ready to accept draw calls? */\n\tthis.ready = function() { return !this.drawing; }\n\t\n\t/** Switch to this renderer. The renderer can be in a blank state; draw() will be called after */\n\tthis.switchTo = function() {\n\t\tif(!document.getElementById('map-container')) {\n\t\t\tconst newDiv = document.createElement('div');\n\t\t\tnewDiv.id = 'map-container';\n\t\t\tnewDiv.className = 'radial-map';\n\t\t\tdocument.getElementById('chainMap').appendChild(newDiv);\n\t\t}\n\t\tthis.container = document.getElementById('map-container');\n\t\tthis.container.style.display = '';\n\t}\n\t\n\t/** Switch away from this renderer. All node divs should be removed from the DOM */\n\tthis.switchFrom = function() {\n\t\tconst div = document.getElementById('map-container');\n\t\tif(div) { div.parentNode.removeChild(div); }\n\t\tthis.container = null;\n\t}\n\t\n\tthis.collapse = function(systemID, collapse) {\n\t\tif(collapse) { this.mapData.collapsed.push(systemID); }\n\t\telse { this.mapData.collapsed = this.mapData.collapsed.filter(x => x != systemID); }\n\t\towner.updateCollapsed(this.mapData.collapsed);\n\t\tdrawInner(this.mapData.map, this.mapData.lines, this.mapData.collapsed);\n\t}\n\t\n\t/** Redraw the map, based on the given node set, line overrides and list of collapsed systems */\n\tthis.draw = function(map, lines, collapsed) {\n\t\tthis.drawing = true;\n\t\tthis.mapData = {map: map, lines: lines, collapsed: collapsed};\n\t\t\n\t\t// Clear the map for a new one\n\t\t//this.switchFrom(); this.switchTo();\n\n\t\ttry { drawInner(map, lines, collapsed); }\n\t\tfinally { this.drawing = false; }\n\t}\n\t\n\t/** Get the factor by which the 'arc' (or coverage if linear) for the current level reduces.\n\tE.g. for a circle, the 3rd ring is 3/4 the size of the 4th so arcFactor(3) should return 3/4.\n\tBy default, all levels are the same 'size' */\n\tthis.arcFactor = function(level) { return 1; }\n\t\n\t/** Calculate the minimum arc for this node, for example taking into account text size */\n\tthis.calcMinArc = function(node) { return 1; }\n\n\tconst _this = this;\n\tconst drawInner = function(map, lines, collapsed) {\n\t\tconst maps = [];\n\t\tconst nodesById = {};\n\t\t\n\t\t// First pass: arrange nodes into rings\n\t\tfor(var ri = 0; ri < map.rows.length; ri++) {\n\t\t\tconst item = map.rows[ri];\n\t\t\tconst inNode = item.c[0], id = inNode.v, parent = item.c[1].v;\n\t\t\t\n\t\t\tconst mapNode = { id: id, children: [], systemID: inNode.systemID, minArc: 0 };\n\t\t\t\n\t\t\tif(parent == null) {\n\t\t\t\tconst newMap = { circles: [ { arc: 0, nodes: [ mapNode ] } ] };\n\t\t\t\tmapNode.map = newMap;\n\t\t\t\tmapNode.circle = 0;\n\t\t\t\tmaps.push(newMap);\n\t\t\t} else {\n\t\t\t\tconst parentNode = nodesById[parent];\n\t\t\t\tif(!parentNode) { throw 'Parent id ' + parent + ' not on map yet'; }\n\t\t\t\tparentNode.children.push(mapNode);\n\t\t\t\tmapNode.parent = parentNode;\n\t\t\t\tmapNode.connection = lines.filter(function(l) { return l[0] == id; })[0] || [id, parent, [], '?'];\n\t\t\t\tmapNode.styles = ['connection'].concat(mapNode.connection[2]);\n\t\t\t\tmapNode.map = parentNode.map;\n\t\t\t\tmapNode.circle = parentNode.circle + 1;\n\t\t\t\tif(mapNode.map.circles.length <= mapNode.circle) {\n\t\t\t\t\tmapNode.map.circles.push({ arc: 0, nodes:[mapNode] });\n\t\t\t\t} else { mapNode.map.circles[mapNode.circle].nodes.push(mapNode); }\n\t\t\t}\n\t\t\tnodesById[id] = mapNode;\n\t\t\tmapNode.markup = inNode.f;\n\t\t\tmapNode.requestedSize = measureNode(mapNode.markup);\n\t\t}\n\n\t\t// Second pass - for each map, find the allocation of arc needed for each node\n\t\tfor(var mi = 0; mi < maps.length; mi++) {\n\t\t\tconst map = maps[mi];\n\t\t\tfor(var ci = map.circles.length - 1; ci >= 1; ci--) {\t// don't need to calculate ring 0\n\t\t\t\tfor(var ni = 0; ni < map.circles[ci].nodes.length; ni++) {\n\t\t\t\t\tconst node = map.circles[ci].nodes[ni];\n\t\t\t\t\tnode.minArc *= _this.arcFactor(ci);\n\t\t\t\t\tconst minForNode = _this.calcMinArc(node);\n\t\t\t\t\tif(node.minArc < minForNode || collapsed.indexOf(node.systemID * 1) >= 0) {\n\t\t\t\t\t\tnode.minArc = minForNode;\n\t\t\t\t\t}\n\t\t\t\t\tnode.parent.minArc += node.minArc;\n\t\t\t\t\tmap.circles[ci].arc += node.minArc;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Third pass - lay out each ring based on the arc values\n\t\tfor(var mi = 0; mi < maps.length; mi++) {\n\t\t\tconst map = maps[mi];\n\t\t\tvar mapDiv = document.getElementById(\"map\" + mi);\n\t\t\tif(!mapDiv) {\n\t\t\t\tmapDiv = document.createElement('div');\n\t\t\t\tmapDiv.id = \"map\" + mi;\n\t\t\t\tmapDiv.className = \"map-chain-wrapper\";\n\t\t\t}\n\t\t\tmapDiv.innerHTML = '
    ';\n\t\t\tconst innerContainer = mapDiv.firstChild.firstChild;\n\t\t\tdocument.getElementById('map-container').appendChild(mapDiv);\n\n\t\t\tconst range = _this.initialRads(map.circles[0].nodes[0].minArc);\n\t\t\tmap.bounds = makeDivsForRing(innerContainer, 0, map.circles[0].nodes, -range, range, collapsed);\n\t\t\tmap.radRange = { min: -range, max: range };\n\t\t\tmap.domNode = mapDiv;\n\t\t\tmap.innerContainer = innerContainer;\n\t\t}\n\n\t\t// Fourth pass: update div and canvas bounds, and draw rings/links\n\t\t// Remember the scroll on the outer container so we can reset it if the map didn't change a lot\n\t\tconst chainParent = document.getElementById('chainParent');\n\t\tconst previousScroll = { x: chainParent.scrollLeft, y: chainParent.scrollTop };\n\t\t// Which system the map is rooted on. When that changes the old scroll\n\t\t// position is meaningless -- on a chain wider than the viewport it\n\t\t// leaves you looking at empty grid several screens from the system you\n\t\t// just opened, with no indication of which way to drag.\n\t\tconst rootNode = maps.length && maps[0].circles.length && maps[0].circles[0].nodes.length\n\t\t\t? maps[0].circles[0].nodes[0] : null;\n\t\tconst rootSystemID = rootNode ? 1 * rootNode.systemID : null;\n\t\tconst rootChanged = rootSystemID !== null && rootSystemID !== _this.lastCentredSystemID;\n\t\tconst CANVAS_SCALE = 1;\n\t\tfor(var mi = 0; mi < maps.length; mi++) {\n\t\t\tconst map = maps[mi];\n\t\t\t// Reset the width overrides so previous expansions aren't persisted if not needed any more\n\t\t\tmap.domNode.style.width = null;\n\t\t\tmap.domNode.style.height = null;\n\t\t\tconst finalPositions = {\n\t\t\t\tw: 200 + map.bounds.x[1] - map.bounds.x[0],\n\t\t\t\th: 100 + map.bounds.y[1] - map.bounds.y[0],\n\t\t\t\tcx: 100 - map.bounds.x[0],\n\t\t\t\tcy: 50 - map.bounds.y[0]\n\t\t\t}\n\t\t\t\n\t\t\t// Fill the space available, if we didn't already\n\t\t\tconst centringOptions = _this.centringOptions;\n\t\t\tif(centringOptions.x && maps.length == 1) {\t// only centre in X if it's the only map, otherwise let them flow\t\n\t\t\t\tconst parentWidth = -38 + _this.container.offsetWidth;\t// 20px for map margins, 18 for scrollbar\n\t\t\t\tif(finalPositions.w < parentWidth) {\n\t\t\t\t\tfinalPositions.cx += 0.5 * (parentWidth - finalPositions.w);\n\t\t\t\t\tfinalPositions.w = parentWidth;\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t\tif(centringOptions.y) {\n\t\t\t\tconst parentHeight = chainParent.offsetHeight;\n\t\t\t\tif(finalPositions.h < parentHeight) {\n\t\t\t\t\tfinalPositions.cy += 0.5 * (parentHeight - finalPositions.h);\n\t\t\t\t\tfinalPositions.h = parentHeight;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// If there's enough space to centre the top level node now, do it\n\t\t\tif(centringOptions.y && centringOptions.rootNode && finalPositions.h >= 2 * (map.bounds.y[1] > -map.bounds.y[0] ? map.bounds.y[1] : -map.bounds.y[0])) {\n\t\t\t\tfinalPositions.cy = finalPositions.h / 2;\n\t\t\t}\n\t\t\tif(centringOptions.x && centringOptions.rootNode && finalPositions.w >= 2 * (map.bounds.x[1] > -map.bounds.x[0] ? map.bounds.x[1] : -map.bounds.x[0])) {\n\t\t\t\tfinalPositions.cx = finalPositions.w / 2;\n\t\t\t}\t\t\t\n\t\t\tmap.domNode.style.width = finalPositions.w + 'px';\n\t\t\tmap.domNode.style.height = finalPositions.h + 'px';\n\t\t\tconst outerContainer = map.domNode.firstChild;\n\t\t\touterContainer.style.left = finalPositions.cx + 'px';\n\t\t\touterContainer.style.top = finalPositions.cy + 'px';\n\t\t\tconst canvas = outerContainer.getElementsByTagName('canvas')[0];\n\t\t\tcanvas.width = CANVAS_SCALE * finalPositions.w;\n\t\t\tcanvas.style.width = finalPositions.w + 'px';\n\t\t\tcanvas.height = CANVAS_SCALE * finalPositions.h;\n\t\t\tcanvas.style.height = finalPositions.h + 'px';\n\t\t\tcanvas.style.left = -finalPositions.cx + 'px';\n\t\t\tcanvas.style.top = -finalPositions.cy + 'px';\n\t\t\tconst ctx = canvas.getContext('2d');\n\t\t\tctx.scale(CANVAS_SCALE, CANVAS_SCALE);\n\t\t\tctx.translate(finalPositions.cx, finalPositions.cy);\n\t\t\t\n\t\t\tfor(var ci = map.bounds.maxCi; ci >= 1; ci--) {\t// don't need to draw ring 0\n\t\t\t\tif(options.chain.gridlines) {\n\t\t\t\t\t_this.drawGridlines(ctx, ci, map.radRange);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst lineWeightFactor = options.chain.lineWeight || 1.0;\n\t\t\tfor(var ci = map.bounds.maxCi; ci >= 1; ci--) {\n\t\t\t\tif(ci >= map.circles.length) { continue; }\n\t\t\t\t\n\t\t\t\tctx.save();\n\t\t\t\tif(options.chain.aura) { // draw aura first\n\t\t\t\t\tdrawConnections(ctx, map.circles[ci].nodes, function(node) {\n\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\tctx.lineWidth = lineWeightFactor;\n\t\t\t\t\t\tconst auraColor = propertyFromCssClass(node.styles, 'color');\n\t\t\t\t\t\tctx.shadowBlur = 11 * lineWeightFactor;\n\t\t\t\t\t\tctx.shadowColor = auraColor;\n\t\t\t\t\t\tctx.strokeStyle = 'black';\n\t\t\t\t\t\tfor(let ai = 0; ai < 8; ai++)\n\t\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t\tctx.restore();\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdrawConnections(ctx, map.circles[ci].nodes, function(node) {\t\t\n\t\t\t\t\tctx.lineWidth = lineWeightFactor * parseInt(propertyFromCssClass(node.styles, 'border-width')) || 2;\n\t\t\t\t\tctx.strokeStyle = propertyFromCssClass(node.styles, 'border-top-color');\n\t\t\t\t\tctx.setLineDash ({ dashed: [5, 3] }[propertyFromCssClass(node.styles, 'border-top-style')] || []);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t});\t\t\t\t\t\n\n\t\t\t\tctx.restore();\n\t\t\t}\t\n\t\t}\n\t\t\n\t\t// Remove any maps which aren't in use any more\n\t\tfor(var mi = maps.length; ; mi++) {\n\t\t\tconst div = document.getElementById('map' + mi);\n\t\t\tif(div) { div.parentNode.removeChild(div); }\n\t\t\telse { break; }\n\t\t}\n\t\t\n\t\t// A refresh of the same chain must not yank the view around, so the\n\t\t// scroll is restored -- but a new root system is centred, because\n\t\t// keeping the old offset is the thing that loses you.\n\t\tif (rootChanged && rootNode && rootNode.domNode) {\n\t\t\t_this.lastCentredSystemID = rootSystemID;\n\t\t\t// scrollIntoView rather than arithmetic on offsets: #chainParent\n\t\t\t// carries a CSS zoom, and the browser accounts for it correctly\n\t\t\t// where hand-rolled offset maths does not.\n\t\t\trootNode.domNode.scrollIntoView({block: \"center\", inline: \"center\"});\n\t\t} else {\n\t\t\tchainParent.scrollLeft = previousScroll.x;\n\t\t\tchainParent.scrollTop = previousScroll.y;\n\t\t}\n\t}\n\t\n\tfunction drawConnections(ctx, nodes, drawFunction) {\n\t\tfor(var ni = 0; ni < nodes.length; ni++) {\n\t\t\tconst node = nodes[ni];\n\t\t\tif(!node.position) { continue; }\t// not drawn on map\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(node.position.x, node.position.y);\n\t\t\t_this.drawConnection(ctx, node);\n\t\t\tdrawFunction(node);\n\t\t}\t\t\n\t}\n\t\n\t/** The coordinate space for the full range. May be based on the total requested arc */\n\tthis.initialRads = function(minArc) { return Math.PI; }\n\t\n\t/** How many levels to skip to allow more space for the nodes. Only makes sense if each level is \"wider\" than the previous so it will have more space. */\n\tthis.skipLevels = function(ci, nodes, minRad, maxRad, parentCollapsed) { return 0; }\n\t\n\t/** Set the position of this node based on its level and radial position within the level\n\tA \"position\" property with x and y must be set. Other values used in drawConnection may also be set */\n\tthis.setPosition = function(node, ci, rad_centre) { throw 'must define setPosition'; }\n\t\n\t/** Draw the connection from this node to its parent. The current point will be the node's position. By default, draws a line */\n\tthis.drawConnection = function(ctx, node) {\n\t\tctx.lineTo(node.parent.position.x, node.parent.position.y);\t\t\t\n\t}\n\n\t/** Draw grid lines for this level */\n\tthis.drawGridlines = function(ctx, ci, radRange) { }\n\t\n\tthis.adjustAlignmentDelta = function(ci, rad_centre) { return 0; }\n\t\n\t/** Override to not centre the map and centre node */\n\tthis.centringOptions = { x: true, y: true, root_node: true };\n\t\n\t/** Add the nodes for this ring/level and all further rings to the container, and return the bounds of the space used by it\n\tCalled recursively for chain sub-sections\n\t@param ci The index of the current level\n\t@param nodes The node data (see chain-map) for nodes within this level\n\t@param minRad The minimum radial coordinate for this section of chain\n\t@param maxRad The maximum radial coordinate for this section of chain\n\t@param collapsed The list of systems which have been collapsed \n\t*/\n\tfunction makeDivsForRing(innerContainer, ci, nodes, minRad, maxRad, collapsed) {\n\t\tconst bounds = { x: [0, 0], y: [0, 0], maxCi: ci };\n\t\tif(!nodes.length) { return bounds; }\n\t\tconst parentCollapsed = collapsed.indexOf(1 * (nodes[0].parent || {}).systemID) >= 0;\n\t\tconst totalArc = parentCollapsed ? nodes.length : nodes.reduce(function(acc, x) { return acc + x.minArc; }, 0);\n\t\tconst rads_per_arc = (maxRad - minRad) / totalArc;\n\t\tvar rad_offset = minRad;\n\t\tfunction getNodeRadialPosition(node) {\n\t\t\tconst dr = (parentCollapsed ? 1 : node.minArc) * rads_per_arc,\n\t\t\t\trad_centre = rad_offset + (dr / 2);\n\t\t\treturn { dr: dr, rad_centre: rad_centre };\n\t\t}\n\t\tvar alignment_delta = _this.adjustAlignmentDelta(ci, getNodeRadialPosition(nodes[0]).rad_centre);\n\t\t\n\t\tci += _this.skipLevels(ci, nodes, minRad, maxRad, parentCollapsed);\n\n\t\t\n\t\tfor(var ni = 0; ni < nodes.length; ni++) {\n\t\t\tconst node = nodes[ni];\t\n\t\t\t\n\t\t\t// Make the node\n\t\t\tconst frag = document.createRange().createContextualFragment('
    ' + node.markup + '
    ');\n\t\t\tnode.domNode = frag.firstChild;\n\t\t\tinnerContainer.appendChild(node.domNode);\n\t\t\tconst systemID = 1 * node.systemID;\n\t\t\t$(node.domNode).dblclick(() => _this.collapse(systemID, collapsed.indexOf(systemID) < 0));\n\t\t\t\n\t\t\t// Position the node\n\t\t\tconst nodeRadialPosition = getNodeRadialPosition(node);\n\t\t\t\n\t\t\t_this.setPosition(node, ci, nodeRadialPosition.rad_centre + alignment_delta);\n\t\t\t\n\t\t\tif(node.position.x < bounds.x[0]) { bounds.x[0] = node.position.x; }\n\t\t\tif(node.position.x > bounds.x[1]) { bounds.x[1] = node.position.x; }\n\t\t\tif(node.position.y < bounds.y[0]) { bounds.y[0] = node.position.y; }\n\t\t\tif(node.position.y > bounds.y[1]) { bounds.y[1] = node.position.y; }\n\t\t\t\n\t\t\tnode.domNode.style.left = node.position.x + 'px';\n\t\t\tnode.domNode.style.top = node.position.y + 'px';\n\t\t\t\n\t\t\tif(parentCollapsed) {\n\t\t\t\tnode.domNode.style.display = 'none';\n\t\t\t} else {\t\t\t\t\n\t\t\t\t// Do the segment of the next circle\n\t\t\t\tconst excess = (ci > 0 && nodeRadialPosition.dr > node.minArc * ci) ? nodeRadialPosition.dr - node.minArc * ci : 0;\n\t\t\t\tif(node.children.length) {\n\t\t\t\t\tconst nextBounds = makeDivsForRing(innerContainer, ci + 1, node.children, rad_offset + (0.5 * excess) + alignment_delta, rad_offset - (0.5 * excess) + alignment_delta + nodeRadialPosition.dr, collapsed);\n\t\t\t\t\tif(nextBounds.x[0] < bounds.x[0]) { bounds.x[0] = nextBounds.x[0]; }\n\t\t\t\t\tif(nextBounds.x[1] > bounds.x[1]) { bounds.x[1] = nextBounds.x[1]; }\n\t\t\t\t\tif(nextBounds.y[0] < bounds.y[0]) { bounds.y[0] = nextBounds.y[0]; }\n\t\t\t\t\tif(nextBounds.y[1] > bounds.y[1]) { bounds.y[1] = nextBounds.y[1]; }\n\t\t\t\t\tif(nextBounds.maxCi > bounds.maxCi) { bounds.maxCi = nextBounds.maxCi; }\n\t\t\t\t}\n\t\t\t}\n\t\t\trad_offset += nodeRadialPosition.dr;\n\t\t}\n\t\t\n\t\treturn bounds;\n\t}\n};\n\n/** https://stackoverflow.com/questions/40978050 */\nfunction propertyFromCssClass(className, property) {\n\tif(Array.isArray(className)) { className = className.join(' '); }\n\tvar elem = document.getElementById('temp-div-' + className);\n\tif(!elem) {\n\t elem = document.createElement(\"div\");\n\t elem.id = 'temp-div-' + className;\n\t elem.style.cssText = \"position:fixed;left:-100px;top:-100px;width:1px;height:1px;\";\n\t elem.className = className + ' temp';\n\t document.body.appendChild(elem); // required in some browsers\n\t }\n const prop = getComputedStyle(elem).getPropertyValue(property);\n return prop;\n}\t\n\n/** https://stackoverflow.com/questions/118241\nUsing the DOM approach because we have a fully styled node, not just text */\nfunction measureNode(markup) {\n\tvar elem = document.getElementById('temp-div-node-width');\n\tif(!elem) {\n\t elem = document.createElement(\"div\");\n\t elem.id = 'temp-div-node-width';\n\t elem.style.cssText = \"position:fixed;left:-100px;top:-100px;\";\n\t elem.className = 'node-wrapper';\n\t document.body.appendChild(elem); // required in some browsers\n }\n elem.innerHTML = markup;\n return elem.firstChild.getBoundingClientRect();\n}","const ChainMapRendererOrgchartSide = function(owner) {\n\tChainMapRendererBase.apply(this, arguments);\n\t\n\tconst GRID_SIZE = { x: 70, y: 45 };\n\t\n\tthis.initialRads = function(minArc) { return minArc * 0.5; }\n\tthis.centringOptions = { y: true };\n\t\n\tfunction project(rad, ci) { return {\n\t\tx: ((ci == 0 ? -0.3 : 0) + ci) * GRID_SIZE.x * options.chain.nodeSpacing.x,\t// root is larger so give some extra space\n\t\ty: rad * GRID_SIZE.y * options.chain.nodeSpacing.y\t\n\t}; }\n\t\n\tthis.setPosition = function(node, ci, rad_centre) {\n\t\tnode.position = project(rad_centre, ci);\n\t}\n\t\n\tthis.drawConnection = function(ctx, node) {\n\t\tconst ave_x = 0.5 * (node.position.x + node.parent.position.x);\n\t\tconst cp1 = { x: node.parent.position.x, y: node.position.y };\n\t\tconst cp2 = { x: node.parent.position.x, y: node.position.y };\n\t\t\n\t\tctx.bezierCurveTo(cp2.x, cp2.y, cp1.x, cp1.y, node.parent.position.x, node.parent.position.y);\n\t}\n\t\n\tthis.drawGridlines = function(ctx, ci, radRange) {\n\t\tctx.beginPath();\n\t\tconst start = project(radRange.min, ci), end = project(radRange.max, ci);\n\t\tctx.moveTo(start.x, start.y);\n\t\tctx.lineTo(end.x, end.y);\n\t\t\n\t\tctx.strokeStyle = propertyFromCssClass('grid-default', 'color');\n\t\tctx.stroke();\t\t\n\t\t\n\t\tctx.fillStyle = propertyFromCssClass('grid-default', 'color');\n\t\tctx.font = '10px Sans-serif';\n\t\tctx.fillText(ci, start.x + 5, start.y);\n\t}\t\t\n};\n\nChainMapRendererOrgchartSide.prototype = new ChainMapRendererBase();","const ChainMapRendererOrgchartTop = function(owner) {\n\tChainMapRendererBase.apply(this, arguments);\n\t\n\tconst GRID_SIZE = { x: 55, y: 45 };\n\t\n\tthis.initialRads = function(minArc) { return minArc * 0.5; }\n\tthis.centringOptions = { x: true };\n\t\n\tfunction project(rad, ci) { return {\n\t\tx: rad * GRID_SIZE.x * options.chain.nodeSpacing.x,\n\t\ty: ((ci == 0 ? -0.3 : 0) + ci) * GRID_SIZE.y * options.chain.nodeSpacing.y\t// root is larger so give some extra space\n\t}; }\n\t\n\tthis.setPosition = function(node, ci, rad_centre) {\n\t\tnode.position = project(rad_centre, ci);\n\t\tnode.rad_centre = rad_centre;\n\t}\n\t\n\tthis.calcMinArc = function(node) {\n\t\tconst arcFromSize = 0.2 + node.requestedSize.width / (1.0 * GRID_SIZE.x * options.chain.nodeSpacing.x); // 0.2 to leave a gap between adjacent nodes\n\t\treturn Math.max(arcFromSize, 1);\n\t}\n\t\n\tthis.drawConnection = function(ctx, node) {\n\t\tconst endpoint_y = node.parent.position.y; // + 10 * (3 - Math.abs(node.rad_centre - node.parent.rad_centre));\n\t\tconst ave_y = 0.5 * (node.position.y + endpoint_y);\n\t\tconst cp1 = { x: node.position.x, y: endpoint_y };\n\t\tconst cp2 = { x: node.position.x, y: endpoint_y };\n\t\t\n\t\tctx.bezierCurveTo(cp2.x, cp2.y, cp1.x, cp1.y, node.parent.position.x, endpoint_y);\n\t}\n\t\n\tthis.drawGridlines = function(ctx, ci, radRange) {\n\t\tctx.beginPath();\n\t\tconst start = project(radRange.min, ci), end = project(radRange.max, ci);\n\t\tctx.moveTo(start.x, start.y);\n\t\tctx.lineTo(end.x, end.y);\n\t\t\n\t\tctx.strokeStyle = propertyFromCssClass('grid-default', 'color');\n\t\tctx.stroke();\t\t\n\t\t\n\t\tctx.fillStyle = propertyFromCssClass('grid-default', 'color');\n\t\tctx.font = '10px Sans-serif';\n\t\tctx.fillText(ci, start.x, start.y + 12);\n\t}\t\t\n};\n\nChainMapRendererOrgchartTop.prototype = new ChainMapRendererBase();","const ChainMapRendererOrgchart = function(owner) {\n\tconst _this = this;\n\t\n\t/** Initialiser - callback from chart onload */\n\tthis.init = function() {\n\t\t_this.map = new google.visualization.OrgChart(document.getElementById(\"chainMap\"));\n\t\t_this.options = {allowHtml: true, allowCollapse: true, size: \"medium\", nodeClass: \"node\"};\n\n\t\tgoogle.visualization.events.addListener(_this.map, \"collapse\", _this.collapseHandler);\n\n\t\t_this.map.draw(new google.visualization.DataView(new google.visualization.DataTable({cols:[{label: \"System\", type: \"string\"}, {label: \"Parent\", type: \"string\"}]})), _this.options);\n\t}\n\t\n\t/** Is this renderer ready to accept draw calls? */\n\tthis.ready = function() { return !this.drawing && !!this.map; }\n\t\n\t/** Switch to this renderer. The renderer can be in a blank state; draw() will be called after */\n\tthis.switchTo = function() {\n\t\tdocument.getElementById('chainGrid').style.display = '';\n\t\tif(!_this.map) { google.charts.setOnLoadCallback(this.init); }\n\t}\n\t\n\t/** Switch away from this renderer. All node divs should be removed from the DOM */\n\tthis.switchFrom = function() {\n\t\tdocument.getElementById('chainGrid').style.display = 'none';\n\t\t_this.map.draw(new google.visualization.DataView(new google.visualization.DataTable({cols:[{label: \"System\", type: \"string\"}, {label: \"Parent\", type: \"string\"}]})), _this.options);\t\t\n\t}\n\t\n\t/** Redraw the map, based on the given node set, line overrides and list of collapsed systems */\n\tthis.draw = function(map, lines, collapsed) {\n\t\tthis.drawing = true;\n\t\tthis.map.draw(newView(map), this.options); \n\t\t\n\t\tfor (var x in collapsed) {\n\t\t\tconst s = collapsed[x];\n\t\t\tconst nodeId = $(\"#chainMap [data-nodeid='\"+s+\"']\").attr(\"id\");\n\t\t\tif (nodeId) {\n\t\t\t\tconst nodeVal = nodeId.split(\"node\")[1];\n\t\t\t\tthis.map.collapse(nodeVal - 1, true);\n\t\t\t}\n\t\t}\n\t\t\n\t\tupdateLines(map, lines);\n\t\tthis.drawing = false;\n\t};\n\t\n\tconst newView = function(json) {\n\t\tconst view = new google.visualization.DataView(new google.visualization.DataTable(json));\n\t\treturn view;\n\t};\n\t\n\tconst updateLines = function(map, lines) {\n\t\t_this.lastLineData = { map: map, lines: lines };\n\t\tfunction drawNodeLine(system, parent, mode, signatureID) {\n\t\t\t/*\tfunction for drawing colored lines */\n\t\t\tif(typeof mode == 'string') { mode = [mode]; }\n\n\t\t\tfunction addModes(jquerySelector, prefixes) { return doModeClasses(jquerySelector, prefixes, function(s, c) { s.addClass(c); }); }\n\t\t\tfunction removeModes(jquerySelector, prefixes) { return doModeClasses(jquerySelector, prefixes, function(s, c) { s.removeClass(c); }); }\n\t\t\tfunction doModeClasses(jquerySelector, prefixes, classFunc) {\n\t\t\t\tprefixes = prefixes || [];\n\t\t\t\tprefixes.push('');\n\t\t\t\tprefixes.forEach(function(prefix) { \n\t\t\t\t\tmode.forEach( function(mode) { classFunc(jquerySelector, (prefix.length ? prefix + '-' : '') + mode); });\n\t\t\t\t});\n\t\t\t\treturn jquerySelector;\n\t\t\t}\n\n\t\t\t// Find node in chainmap\n\t\t\t//var $node = $(\"#chainMap [data-nodeid='\"+system+\"']\").parent();\n\t\t\tvar $node = $(\"#chainMap #node\"+system).parent();\n\n\t\t\tif ($node.length == 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Get node # in this line\n\t\t\tvar nodeIndex = Math.ceil(($node[0].cellIndex + 1) / 2 - 1);\n\n\t\t\t// applly to my top line\n\t\t\tvar $connector = addModes($($node.parent().prev().children(\"td.google-visualization-orgchart-lineleft, td.google-visualization-orgchart-lineright\")[nodeIndex]), [ 'left', 'right' ]);\n\n\t\t\t// Find parent node\n\t\t\t//var $parent = $(\"#chainMap [data-nodeid='\"+parent+\"']\").parent();\n\t\t\tvar $parent = $(\"#chainMap #node\"+parent).parent();\n\n\t\t\tif ($parent.length == 0 || $connector.length == 0)\n\t\t\t\treturn false;\n\n\t\t\t// Find the col of my top line\n\t\t\tvar nodeCol = 0, connectorCell = $connector[0].cellIndex;\n\t\t\t$node.parent().prev().find(\"td\").each(function(index) {\n\t\t\t\tnodeCol += this.colSpan;\n\n\t\t\t\tif (index == connectorCell) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Get node # in this line\n\t\t\tvar parentIndex = Math.ceil(($parent[0].cellIndex + 1) / 2 - 1);\n\n\t\t\t// Compensate for non-parent nodes (slight performance hit ~10ms)\n\t\t\tvar newparentIndex = parentIndex;\n\t\t\tfor (var i = 0; i <= parentIndex; i++) {\n\t\t\t\tvar checkSystem = 0;//$node.parent().prev().prev().prev().find(\"td:has([data-nodeid]):eq(\"+i+\")\").find(\"[data-nodeid]\").data(\"nodeid\");\n\t\t\t\t$node.parent().prev().prev().prev().find(\"td > [data-nodeid]\").each(function(index) {\n\t\t\t\t\tif (index == i) {\n\t\t\t\t\t\tcheckSystem = $(this).attr(\"id\").replace(\"node\", \"\");//$(this).data(\"nodeid\");\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif ($.map(map.rows, function(node) { return node.c[1].v == checkSystem ? node : null; }).length <= 0) {\n\t\t\t\t\tnewparentIndex--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentIndex = newparentIndex;\n\n\t\t\t// Apply to parent bottom line\n\t\t\tvar $connecte = addModes($($node.parent().prev().prev().children(\"td.google-visualization-orgchart-lineleft, td.google-visualization-orgchart-lineright\")[parentIndex]), [ 'left', 'right'] );\n\n\t\t\t// the beans\n\t\t\tvar col = 0, parent = false, me = false;\n\t\t\t$node.parent().prev().prev().find(\"td\").each(function(index, value) {\n\t\t\t\tcol += this.colSpan;\n\n\t\t\t\tif (me && parent) {\n\t\t\t\t\t// All done - get outta here\n\t\t\t\t\treturn false;\n\t\t\t\t} else if (typeof($connecte[0]) != \"undefined\" && $connecte[0].cellIndex == index) {\n\t\t\t\t\tparent = true;\n\n\t\t\t\t\taddModes($(this), ['left']);\n\n\t\t\t\t\t// remove bottom border that points to the right\n\t\t\t\t\tif (!me && col != nodeCol) {\n\t\t\t\t\t\taddModes($(this), ['bottom']);\n\t\t\t\t\t}\n\n\t\t\t\t\t// parent and node are same - we are done\n\t\t\t\t\tif (nodeCol == col) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} else if (col == nodeCol) {\n\t\t\t\t\tme = true;\n\n\t\t\t\t\taddModes($(this), [ 'bottom' ]);\n\t\t\t\t} else if (me || parent) {\n\t\t\t\t\tvar tempCol = 0, breaker = false, skip = false;\n\n\t\t\t\t\t$node.parent().prev().find(\"td\").each(function(index) {\n\t\t\t\t\t\ttempCol += this.colSpan;\n\n\t\t\t\t\t\tif (tempCol == col && ($(this).hasClass(\"google-visualization-orgchart-lineleft\") || $(this).hasClass(\"google-visualization-orgchart-lineright\"))) {\n\t\t\t\t\t\t\tif (parent == false) {\n\t\t\t\t\t\t\t\t// Stop looking cuz there is another node between us and parent\n\t\t\t\t\t\t\t\tbreaker = true;\n\t\t\t\t\t\t\t\tremoveModes($connecte, [ 'left', 'right' ]);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t} else if (parent == true) {\n\t\t\t\t\t\t\t\t// Lets make sure there isnt a node between the parent and me\n\t\t\t\t\t\t\t\tremoveModes($connecte, [ 'left', 'right' ]);\n\n\t\t\t\t\t\t\t\t$node.parent().prev().prev().find(\"td\").each(function(index) {\n\t\t\t\t\t\t\t\t\tif (index >= $connecte[0].cellIndex) {\n\t\t\t\t\t\t\t\t\t\t// there is a node after parent but before me\n\t\t\t\t\t\t\t\t\t\tremoveModes($(this), [ 'bottom' ]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tskip = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (breaker) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!skip) {\n\t\t\t\t\t\taddModes($(this), ['bottom'] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfor (var x in lines) {\n\t\t\tdrawNodeLine(lines[x][0], lines[x][1], lines[x][2].concat(['connection']), lines[x][3]);\n\t\t}\n\t};\n\n\tthis.collapseHandler = function() {\t\t\n\t\tif(_this.drawing) { return; }\n\t\t\n\t\tconst collapsed = _this.map.getCollapsedNodes();\n\t\tconst collapsedSystems = [];\n\t\tfor (x in collapsed) {\n\t\t\tvar systemID = $(\"#chainMap #node\"+(collapsed[x] +1)).data(\"nodeid\");\n\t\t\tcollapsedSystems.push(systemID);\n\t\t}\n\t\towner.updateCollapsed(collapsedSystems);\n\t\t\n\t\tif(_this.lastLineData) { updateLines(_this.lastLineData.map, _this.lastLineData.lines); }\n\t}\n\n\n};","const ChainMapRendererRadial = function(owner) {\n\tChainMapRendererBase.apply(this, arguments);\n\t\n\tconst CIRCLE_SIZE = { x: 70, y: 60, first_ring_delta: 0.3,\n\t\tringX: function(ci) { return ci == 0 ? 0 : (ci + this.first_ring_delta) * this.x * options.chain.nodeSpacing.x},\n\t\tringY: function(ci) { return ci == 0 ? 0 : (ci + this.first_ring_delta) * this.y * options.chain.nodeSpacing.y},\n\t };\n\t\n\tthis.arcFactor = function(ci) { return ci / (ci + 1.0); }\n\t\n\tthis.skipLevels = function(ci, nodes, minRad, maxRad, parentCollapsed) { \n\t\tconst max_nodes_per_rad = 1.4;\n\t\tlet skipped = 0;\n\t\tif(ci > 0 && !parentCollapsed) {\n\t\t\twhile(nodes.length > max_nodes_per_rad * ci * (maxRad - minRad) && ++skipped < 1) { }\n\t\t}\n\t\treturn skipped; \n\t}\n\t\n\tthis.setPosition = function(node, ci, rad_centre) {\n\t\tnode.radPosition = { r: ci, theta: rad_centre };\n\t\tnode.position = radToCartesian(node.radPosition);\t\t\n\t}\n\t\n\tthis.drawConnection = function(ctx, node) {\n\t\tconst cp1 = radToCartesian({ r: node.radPosition.r - 0.5, theta: (node.radPosition.theta + 2 * node.parent.radPosition.theta) / 3.0 });\n\t\tconst cp2 = radToCartesian({ r: node.radPosition.r - 0.5, theta: (2 * node.radPosition.theta + node.parent.radPosition.theta) / 3.0 });\n\t\t\n\t\tif(node.circle > 1) {\t\t\t\t\n\t\t\tctx.bezierCurveTo(cp2.x, cp2.y, cp1.x, cp1.y, node.parent.position.x, node.parent.position.y);\n\t\t} else {\n\t\t\tctx.lineTo(node.parent.position.x, node.parent.position.y);\t\t\t\n\t\t}\n\t}\n\t\n\tthis.adjustAlignmentDelta = function(ci, rad_centre) {\n\t\treturn ci == 1 ? -rad_centre\t// First node on first ring should be axis aligned\n\t\t: 0;\n\t}\n\t\n\tthis.drawGridlines = function(ctx, ci) {\n\t\tctx.beginPath();\n\t\tif(ctx.ellipse) {\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.setLineDash([]);\n\t\t\tctx.ellipse(0, 0, CIRCLE_SIZE.ringX(ci), CIRCLE_SIZE.ringY(ci), 0, 0, Math.PI * 2);\n\t\t}\n\t\tctx.strokeStyle = propertyFromCssClass('grid-default', 'color');\n\t\tctx.stroke();\t\t\n\t}\t\t\n\t\n\tfunction radToCartesian(rad) {\n\t\treturn { \n\t\t\tx: CIRCLE_SIZE.ringX(rad.r) * Math.sin(rad.theta), \n\t\t\ty: CIRCLE_SIZE.ringY(rad.r) * Math.cos(rad.theta)\n\t\t};\n\n\t}\n};\n\nChainMapRendererRadial.prototype = new ChainMapRendererBase();","var chain = new function() {\n\tvar chain = this;\n\tthis.map, this.view, this.drawing, this.data = {};\n\t\n\t// Third party suppliers should have:\n\t// findLinks(systemId, ids) - Find links from the given system coming from the third party. ids contain a parent and a child ID; the child ID should be incremented for every new connection\n\t\n\t// Suppliers register themselves; see app/js/map-data-suppliers/_registry.js\n\n\t// Renderer should have:\n\t// ready() - Whether the renderer is initialised and can accept draw calls\n\t// switchTo() - Make this renderer active. The renderer can be in a blank state; draw() will be called after\n\t// switchFrom() - Switch away from this renderer. All node divs should be removed from the DOM, other items can be removed or made invisible\n\t// draw(map, lines, collapsedSystems) - Redraw the map, based on the given node set, line overrides and list of collapsed systems \n\t// collapse(systemID, toggle) - marks the system as collapsed/not collapsed\n\t// If the renderer allows collapsing of nodes then it will call updateCollapsed on the owner (the chain) with a list of collapsed systems in the current tab\n\t\n\tconst renderers = { \n\t\torgChart: new ChainMapRendererOrgchart(this),\n\t\torgChartTop: new ChainMapRendererOrgchartTop(this),\n\t\torgChartSide: new ChainMapRendererOrgchartSide(this),\n\t\tradial: new ChainMapRendererRadial(this)\n\t};\n\t\n\tthis.renderer = renderers[options.chain.renderer];\n\tthis.renderer.switchTo();\n\t\n\tthis.useRenderer = function(name) {\n\t\tif(!renderers[name]) { throw 'Unknown renderer ' + name; }\n\t\tif(chain.renderer != renderers[name]) {\n\t\t\tchain.renderer.switchFrom();\n\t\t\tchain.renderer = renderers[name];\n\t\t\tchain.renderer.switchTo();\n\t\t\tchain.redraw();\n\t\t}\n\t}\n\n\tthis.activity = function(data) {\n\t\t/*\tfunction for adding recent activity to chain map nodes\t*/\n\t\t//var data = typeof(data) !== \"undefined\" ? data : this.data.activity;\n\n\t\t// Hide all activity colored dots instead of checking each one\n\t\tvar elements = document.querySelectorAll(\"#chainMap .nodeActivity span\");\n\t\tfor (var i = 0, l = elements.length; i < l; ++i) {\n\t\t elements[i].className = elements[i].className + \" invisible\";\n\t\t}\n\n\t\t// Loop through passed data and show dots by system\n\t\tvar elements = document.querySelectorAll(\"#chainMap [data-nodeid]\");\n\t\tfor (var i = 0, l = elements.length; i < l; ++i) {\n\t\t var systemID = elements[i].getAttribute(\"data-nodeid\");\n\t\t if (data[systemID]) {\n\t\t\t var shipJumps = data[systemID].shipJumps;\n\t\t\t var podKills = data[systemID].podKills;\n\t\t\t var shipKills = data[systemID].shipKills;\n\t\t\t var npcKills = data[systemID].npcKills;\n\t\t\t var node = elements[i].getElementsByClassName(\"nodeActivity\")[0];\n\n\t\t\t if (shipJumps > 0) {\n\t\t\t\t var jumps = node.getElementsByClassName(\"jumps\")[0];\n\t\t\t\t jumps.className = jumps.className.replace(/invisible/g, \"\");\n\t\t\t\t jumps.setAttribute(\"data-tooltip\", shipJumps + \" Jumps\");\n\t\t\t }\n\n\t\t\t if (podKills > 0) {\n\t\t\t\t var pods = node.getElementsByClassName(\"pods\")[0];\n\t\t\t\t pods.className = pods.className.replace(/invisible/g, \"\");\n\t\t\t\t pods.setAttribute(\"data-tooltip\", podKills + \" Pod Kills\");\n\t\t\t }\n\n\t\t\t if (shipKills > 0) {\n\t\t\t\t var ships = node.getElementsByClassName(\"ships\")[0];\n\t\t\t\t ships.className = ships.className.replace(/invisible/g, \"\");\n\t\t\t\t ships.setAttribute(\"data-tooltip\", shipKills + \" Ship Kills\");\n\t\t\t }\n\n\t\t\t if (npcKills > 0) {\n\t\t\t\t var npcs = node.getElementsByClassName(\"npcs\")[0];\n\t\t\t\t npcs.className = npcs.className.replace(/invisible/g, \"\");\n\t\t\t\t npcs.setAttribute(\"data-tooltip\", npcKills + \" NPC Kills\");\n\t\t\t }\n\t\t }\n\t\t}\n\n\t\tif (SystemActivityToolTips.attachedElements && SystemActivityToolTips.attachedElements.length > 0) {\n\t\t\tSystemActivityToolTips.detach($(\"#chainMap .whEffect\"));\n\t\t}\n\t\tSystemActivityToolTips.attach($(\"#chainMap .nodeActivity > span[data-tooltip]:not(.invisible)\"));\n\n\t\treturn data;\n\t}\n\n\tthis.occupied = function(data) {\n\t\t/*\tfunction for showing occupied icon */\n\n\t\t// Hide all icons instead of checking each one\n\t\t$(\"#chainMap [data-icon='user'], #chainMap [data-icon='user'] + .badge\").addClass(\"invisible\");\n\n\t\t// Loop through passed data and show icons\n\t\tfor (var x in data) {\n\t\t\t$(\"#chainMap [data-nodeid='\"+data[x].systemID+\"'] [data-icon='user']\").removeClass(\"invisible\");\n\t\t\t$(\"#chainMap [data-nodeid='\"+data[x].systemID+\"'] [data-icon='user'] + .badge\").removeClass(\"invisible\").text(data[x].count);\n\t\t}\n\n\t\tOccupiedToolTips.attach($(\"#chainMap [data-icon='user']:not(.invisible)\"));\n\n\t\treturn data;\n\t}\n\n\tthis.flares = function(data) {\n\t\t/*\tfunction for coloring chain map nodes via flares */\n\t\t//var data = typeof(data) !== \"undefined\" ? data : this.data.flares;\n\n\t\t// Remove all current node coloring instead of checking each one\n\t\t$(\"#chainMap div.node\").removeClass(\"redNode yellowNode greenNode\");\n\n\t\t// Remove all coloring from chain grid\n\t\t$(\"#chainGrid tr\").removeClass(\"red yellow green\");\n\n\t\t// Loop through passed data and add classes by system\n\t\tif (data) {\n\t\t\tfor (var x in data.flares) {\n\t\t\t\tvar systemID = data.flares[x].systemID;\n\t\t\t\tvar flare = data.flares[x].flare;\n\n\t\t\t\tvar row = ($(\"#chainMap [data-nodeid=\"+systemID+\"]\").addClass(flare+\"Node\").parent().index() - 1) / 3 * 2;\n\n\t\t\t\tif (row > 0) {\n\t\t\t\t\t$(\"#chainGrid tr:eq(\"+row+\")\").addClass(flare).next().addClass(flare);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tthis.grid = function() {\n\t\t/* function for showing/hiding grid lines */\n\t\t// This is an optional feature\n\t\tif (options.chain.gridlines == false) {\n\t\t\t$(\"#chainGrid tr\").addClass(\"hidden\");\n\t\t\treturn false;\n\t\t}\n\n\t\t$(\"#chainGrid tr\").removeClass(\"hidden\");\n\t\t//$(\"#chainGrid\").css(\"width\", \"100%\");\n\n\t\t// Calculate how many rows have systems, max 0 hack to prevent negative numbers, and rows above this number get hidden\n\t\tvar rows = Math.max(0, $(\".google-visualization-orgchart-table tr:has(.node)\").length * 2 - 1);\n\t\t$(\"#chainGrid tr:gt(\"+rows+\")\").addClass(\"hidden\");\n\t}\n\n\tthis.nodes = function(map) {\n\t\tvar chain = {cols: [{label: \"System\", type: \"string\"}, {label: \"Parent\", type: \"string\"}], rows: []};\n\t\tvar frigTypes = [\"Q003\", \"E004\", \"L005\", \"Z006\", \"M001\", \"C008\", \"G008\", \"A009\", \"SML\" ];\n\t\tvar connections = [];\n\t\tvar chainMap = this;\n\n\t\tfunction formatStatics(statics) {\n\t\t\tif(!statics) { return ''; }\n\t\t\telse if(statics.length > 4) { return '+'; }\n\t\t\t\n\t\t\tconst shortCodeMap = { 'High-Sec': 'H', 'Low-Sec': 'L', 'Null-Sec': 'N', 'Triglavian':'▼',\n\t\t\t\t'Class-1': '1', 'Class-2': '2', 'Class-3': '3', 'Class-4': '4', 'Class-5' : 5, 'Class-6': 6\n\t\t\t};\n\t\t\tconst classMap = { H: 'hisec', L: 'lowsec', N: 'nullsec', '▼': 'triglavian' };\n\t\t\treturn statics.map(function(s) {\n\t\t\t\tconst text = shortCodeMap[appData.wormholes[s].leadsTo];\n\t\t\t\tconst className = classMap[text] || 'class-' + text;\n\t\t\t\tconst tip = appData.wormholes[s].leadsTo + ' via ' + s;\n\t\t\t\treturn '' + text + '';\n\t\t\t}).join('');\n\t\t}\n\n\t\tfunction topLevel(systemID, id) {\n\t\t\tif (!systemID || !tripwire.systems[systemID])\n\t\t\t\treturn false;\n\t\t\tconst tab = options.chain.tabs[options.chain.active];\n\t\t\tconst tabName = tab && tab.systemID != 0 && 0 > tab.systemID.indexOf(',') ? options.chain.tabs[options.chain.active].name : undefined;\n\t\t\treturn makeSystemNode(systemID, id, null, null, tabName, ' ', ['top-level']);\n\t\t}\n\n\t\tfunction makeSystemNode(systemID, id, whId, inSigId, systemName, nodeTypeMarkup, additionalClasses) {\n\t\t\t// System type switch\n\t\t\tconst system = systemAnalysis.analyse(systemID);\n\t\t\tvar systemType = \"\" + system.systemTypeName + system.systemTypeModifiers.join('') + \"\";\n\t\t\t\n\t\t\tsystemName = _.escape(systemName);\n\t\t\tconst systemNameText = \n\t\t\t\toptions.chain.sigNameLocation == 'name' ? (systemName ? systemName : system.name ? system.name : ' ') :\n\t\t\t\toptions.chain.sigNameLocation == 'name_prefix' ?\n\t\t\t\t\t(systemName ? systemName + (system.name ? ' - ' + system.name : '') : (system.name ? system.name : ' ')) :\n\t\t\t\t(system.name ? system.name : ' ');\t\n\n\t\t\tvar node = {v: id, systemID: systemID };\n\t\t\tvar chainNode = \"
    \"\n\t\t\t\t\t\t\t+\t\"
    \"\n\t\t\t\t\t\t\t+\t\t\"
    \"\n\t\t\t\t\t\t\t+ systemRendering.renderEffect(system, 'i')\n\t\t\t\t\t\t\t+\t\t\"
    \"\n\t\t\t\t\t\t\t+\t\t\"
    \"\n\t\t\t\t\t\t\t+\t\t\t\"\"\n\t\t\t\t\t\t\t+\t\t\t\"\"\n\t\t\t\t\t\t\t+\t\t\"
    \"\n\t\t\t\t\t\t\t+\t\"
    \"\n\t\t\t\t\t\t\t+\t\"

    \"+systemType+\"

    \"\n\t\t\t\t\t\t\t+\t\"

    \"\n\t\t\t\t\t\t\t+\t\t(system.name ? \"\"+systemNameText+\"\" : systemNameText)\n\t\t\t\t\t\t\t+\t\"

    \"\n\t\t\t\t\t\t\t+\t\"

    \" + nodeTypeMarkup + \"

    \"\n\t\t\t\t\t\t\t+\t\"
    \"\n\t\t\t\t\t\t\t+ formatStatics(system.name ? system.statics : [])\n\t\t\t\t\t\t\t+\t\"
    \"\n\t\t\t\t\t\t\t+\t\"
    \"\n\t\t\t\t\t\t\t+\t\t\"    \"\n\t\t\t\t\t\t\t+\t\"
    \"\n\t\t\t\t\t\t\t+\"
    \";\n\n\t\t\tnode.f = chainNode;\n\n\t\t\treturn node;\n\t\t}\n\t\t\n\t\tfunction makeCalcChildNode(childID, node, targetSystem) {\n\t\t\tvar path = guidance.findShortestPath(tripwire.map.shortest, targetSystem - 30000000, node.child.systemID - 30000000);\n\t\t\tif(!path) { return null; }\n\t\t\t\n\t\t\tvar calcNode = { calculated: true};\n\t\t\tcalcNode.life = \"Gate\";\n\t\t\tcalcNode.parent = {};\n\t\t\tcalcNode.parent.id = node.child.id;\n\t\t\tcalcNode.parent.systemID = node.child.systemID;\n\t\t\tcalcNode.parent.name = node.child.name;\n\t\t\tcalcNode.parent.type = node.child.type;\n\t\t\tcalcNode.parent.nth = node.child.nth;\n\n\t\t\tcalcNode.child = {};\n\t\t\tcalcNode.child.id = ++childID;\n\t\t\tcalcNode.child.systemID = targetSystem;\n\t\t\tcalcNode.child.name = tripwire.systems[targetSystem].name;\n\t\t\tcalcNode.child.path = path;\n\t\t\tcalcNode.child.jumps = path.length - 1;\n\t\t\tcalcNode.child.nth = null;\t\t\t\n\t\t\t\n\t\t\treturn { childID, calcNode };\n\t\t}\n\n\t\tfunction findLinks(system) {\n\t\t\tif (system[0] <= 0) return false;\n\n\t\t\tvar parentID = parseInt(system[1]), childID = chainList.length;\n\t\t\tconst connectedTo = [];\t// Local cache, in addition to usedLinks, for extra link sources\n\n\t\t\t/** Add the 'current' and 'favourite' calculated nodes if appropriate */\n\t\t\tconst addCalcChildNodes = function(node) {\n\t\t\t\tif ($(\"#show-viewing\").hasClass(\"active\") && tripwire.systems[node.child.systemID] && !tripwire.systems[viewingSystemID].class && !tripwire.systems[node.child.systemID].class && viewingSystemID != node.child.systemID ) {\n\t\t\t\t\tvar calcNode = makeCalcChildNode(childID, node, viewingSystemID);\n\t\t\t\t\tif(calcNode) {\n\t\t\t\t\t\tchildID = calcNode.childID;\n\n\t\t\t\t\t\tchainLinks.push(calcNode.calcNode);\n\t\t\t\t\t\tchainList.push([0, childID]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ($(\"#show-favorite\").hasClass(\"active\") && tripwire.systems[node.child.systemID] && !tripwire.systems[node.child.systemID].class) {\n\t\t\t\t\tfor (var x in options.favorites) {\n\t\t\t\t\t\tif (tripwire.systems[options.favorites[x]].regionID >= 11000000 || tripwire.systems[node.child.systemID].regionID >= 11000000 || options.favorites[x] == node.child.systemID)\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\tvar calcNode = makeCalcChildNode(childID, node, options.favorites[x]);\n\t\t\t\t\t\tif(calcNode) {\n\t\t\t\t\t\t\tchildID = calcNode.childID;\n\n\t\t\t\t\t\t\tchainLinks.push(calcNode.calcNode);\n\t\t\t\t\t\t\tchainList.push([0, childID]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\t\t\t\t\n\t\t\t};\n\n\t\t\tfor (var x in chainData) {\n\t\t\t\tvar wormhole = chainData[x];\t\t\t\t\n\t\t\t\tif ($.inArray(wormhole.id, usedLinks) == -1) {\n\t\t\t\t\tvar sig1, sig2, sig1Type, sig2Type,\n\t\t\t\t\t\tparent, child, parentType, childType;\n\t\t\t\t\tif (wormhole.parent == \"secondary\") {\n\t\t\t\t\t\tsig1 = tripwire.client.signatures[wormhole.secondaryID];\n\t\t\t\t\t\tsig2 = tripwire.client.signatures[wormhole.initialID];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsig1 = tripwire.client.signatures[wormhole.initialID];\n\t\t\t\t\t\tsig2 = tripwire.client.signatures[wormhole.secondaryID];\n\t\t\t\t\t}\n\t\t\t\t\tsig1Type = wormhole.type; sig2Type = 'K162';\n\t\t\t\t\t\n\t\t\t\t\tif (sig1 && sig1.systemID == system[0]) {\n\t\t\t\t\t\tparent = sig1; child = sig2;\n\t\t\t\t\t\tparentType = sig2Type; childType = sig1Type;\n\t\t\t\t\t} else if(sig2 && sig2.systemID == system[0]) {\n\t\t\t\t\t\tparent = sig2; child = sig1;\n\t\t\t\t\t\tchildType = sig2Type; parentType = sig1Type;\n\t\t\t\t\t} else { continue; }\n\t\t\t\t\t\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tnode.id = wormhole.id;\n\t\t\t\t\tnode.life = wormhole.life;\n\t\t\t\t\tnode.mass = wormhole.mass;\n\t\t\t\t\tnode.time = parent.modifiedTime;\n\n\t\t\t\t\tnode.parent = {};\n\t\t\t\t\tnode.parent.id = parentID;\n\t\t\t\t\tnode.parent.systemID = tripwire.systems[parent.systemID] ? parent.systemID : parent.systemID + \"|\" + Math.floor(Math.random() * Math.floor(10000));\n\t\t\t\t\tnode.parent.name = child.name;\n\t\t\t\t\tnode.parent.type = parentType;\n\t\t\t\t\tnode.parent.nth = null;\n\t\t\t\t\tnode.parent.signatureID = child.signatureID;\n\t\t\t\t\tnode.parent.sigIndex = child.id;\n\n\t\t\t\t\tnode.child = {};\n\t\t\t\t\tnode.child.id = ++childID;\n\t\t\t\t\tnode.child.systemID = tripwire.systems[child.systemID] ? child.systemID : child.systemID + \"|\" + Math.floor(Math.random() * Math.floor(10000));\n\t\t\t\t\tnode.child.name = parent.name;\n\t\t\t\t\tnode.child.type = childType;\n\t\t\t\t\tnode.child.nth = null;\n\t\t\t\t\tnode.child.signatureID = parent.signatureID;\n\t\t\t\t\tnode.child.sigIndex = parent.id;\n\n\t\t\t\t\tchainLinks.push(node);\n\t\t\t\t\tchainList.push([node.child.systemID, node.child.id, system[2]]);\n\t\t\t\t\tusedLinks.push(node.id);\n\t\t\t\t\tif(tripwire.systems[child.systemID]) { connectedTo.push(1 * child.systemID); }\t// cast to number - sigs have the system as a string\n\t\t\t\t\t// usedLinks[system[2]].push(node.id);\n\t\t\t\t\t\n\t\t\t\t\taddCalcChildNodes(node);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmapDataSuppliers.all().forEach(function(supplier) {\t\t\t\t\n\t\t\t\tconst ids = { parentID: parentID, nextChildID: ++childID };\n\t\t\t\tconst supplierNodes = supplier.findLinks(1 * system[0], ids);\n\t\t\t\tif(!supplierNodes) { return; }\n\t\t\t\tchildID = ids.nextChildID - 1;\n\n\t\t\t\tfor(var ti = 0; ti < supplierNodes.length; ti++) {\n\t\t\t\t\tvar supplierNode = supplierNodes[ti];\n\t\t\t\t\tif(0 > usedLinks.indexOf(supplierNode.id)) {\n\t\t\t\t\t\tif(0 > connectedTo.indexOf(supplierNode.child.systemID)) { // not in our map already\n\t\t\t\t\t\t\tsupplierNode.thirdParty = supplier.nodeNameSuffix;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tchainLinks.push(supplierNode);\n\t\t\t\t\t\t\tchainList.push([supplierNode.child.systemID, supplierNode.child.id, system[2]]);\n\t\t\t\t\t\t\tconnectedTo.push(supplierNode.child.systemID);\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\taddCalcChildNodes(supplierNode);\t\t\n\t\t\t\t\t\t}\t\t\t\t\t\t\t\n\t\t\t\t\t\t// Always want to do this, even if we didn't add it, because in that case the link is overridden by one on this mask, so it is 'used' even if not made visible\n\t\t\t\t\t\tusedLinks.push(supplierNode.id);\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif ($(\"#chainTabs .current\").length > 0) {\n\t\t\tvar systems = $(\"#chainTabs .current .name\").data(\"tab\").toString().split(\",\");\n\t\t\tvar chainList = [];\n\t\t\tvar chainData = map;\n\t\t\tvar chainLinks = [];\n\t\t\tvar usedLinks = [];\n\n\t\t\tif (systems == 0) {\n let i = 0;\n Object.keys(map).slice()/*.reverse()*/.forEach(x => {\n\t\t\t\t const parent = tripwire.client.signatures[map[x].initialID];\n\t\t\t\t const child = tripwire.client.signatures[map[x].secondaryID];\n if (parent && tripwire.systems[parent.systemID] && typeof(tripwire.systems[parent.systemID].class) == \"undefined\") {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\t// usedLinks[parent.systemID] = [];\n\t\t\t\t\t\tchain.rows.push({c: [topLevel(parent.systemID, i), {v: null}]});\n\t\t\t\t\t\tchainList.push([parent.systemID, i, parent.systemID]);\n } else if (child && tripwire.systems[child.systemID] && typeof(tripwire.systems[child.systemID].class) == \"undefined\") {\n\t\t\t\t \t i++;\n\t\t\t\t \t\t// usedLinks[child.systemID] = [];\n\t\t\t\t\t\tchain.rows.push({c: [topLevel(child.systemID, i), {v: null}]});\n\t\t\t\t\t\tchainList.push([child.systemID, i, child.systemID]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tfor (var x in systems) {\n\t\t\t\t\t// usedLinks[systems[x]] = [];\n\t\t\t\t\tchain.rows.push({c: [topLevel(systems[x], parseInt(x) + 1), {v: null}]});\n\t\t\t\t\tchainList.push([systems[x], parseInt(x) + 1, systems[x]]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < chainList.length; i++) {\n\t\t\t\tfindLinks(chainList[i]);\n\t\t\t}\n\t\t} else {\n\t\t\t$(\"#chainError\").hide();\n\n\t\t\tvar row = {c: []};\n\t\t\tvar systemID = viewingSystemID;\n\n\t\t\trow.c.push(topLevel(systemID, 1), {v: null});\n\n\t\t\tchain.rows.push(row);\n\n\t\t\tvar chainList = [[systemID, 1]];\n\t\t\tvar chainData = map;\n\t\t\tvar chainLinks = [];\n\t\t\tvar usedLinks = [];\n\n\t\t\tfor (var i = 0; i < chainList.length; ++i) {\n\t\t\t\tfindLinks(chainList[i]);\n\t\t\t}\n\t\t}\n\n\t\tconst systemsInChainMap = {};\n\t\t\n\t\tfor (var x in chainLinks) {\n\t\t\tvar node = chainLinks[x];\n\t\t\tvar row = {c: []};\n\t\t\t\n\t\t\tconst sigText = options.chain[\"node-reference\"] == \"id\" ? (node.child.signatureID ? node.child.signatureID.substring(0, 3) : \"???\") :\n\t\t\t\t\t(node.child.type || \"(?)\");\n\t\t\tconst nodeTypeMarkup = node.child.path ? \n\t\t\t\tsystemRendering.renderPath(node.child.path) :\n\t\t\t\t(node.child.sigIndex ? \"\" : '') + _.escape(\n\t\t\t\t\tnode.child.name && options.chain.sigNameLocation == 'ref' ? node.child.name :\n\t\t\t\t\tnode.child.name && options.chain.sigNameLocation == 'ref_prefix' ? node.child.name + ' - ' + sigText :\n\t\t\t\t\tsigText\n\t\t\t\t) + (node.child.sigIndex ? '' : '');\n\t\t\tconst additionalClasses = node.calculated ? ['calc'] : systemsInChainMap[node.child.systemID] ? [ 'loop' ] : [];\n\t\t\tif(node.thirdParty) { additionalClasses.push('third-party', 'third-party-' + node.thirdParty); }\n\n\t\t\t// Connection modifiers\n\t\t\tvar modifiers = [];\t\t\t\n\t\t\tif (node.life == \"critical\") { modifiers.push('eol'); }\n\t\t\tif (node.mass == \"critical\") { modifiers.push('critical'); }\n\t\t\telse if (node.mass == \"destab\") { modifiers.push('destab'); }\n\t\t\t\n\t\t\tconst connectionWormhole = wormholeAnalysis.wormholeFromTypePair(node.parent.type, node.child.type) || \n\t\t\t\twormholeAnalysis.likelyWormhole(node.parent.systemID, node.child.systemID);\n\t\t\tif(connectionWormhole.jump) { \n\t\t\t\tmodifiers.push('jm-' + (connectionWormhole.jump / 1e6) + 'kt'); \n\t\t\t\tif(connectionWormhole.jump == 5000000) { modifiers.push('frig'); }\n\t\t\t}\n\t\t\t\n\t\t\tconst parentModifiers = (systemsInChainMap[node.parent.systemID] || { chainModifiers:[]}).chainModifiers;\n\t\t\trow.chainModifiers = modifiers.concat(parentModifiers.filter(function(p) { return modifiers.indexOf(p) < 0; }));\n\t\t\t\n\t\t\trow.chainModifiers.forEach(function(cm) { modifiers.push(cm + '-chain')});\n\t\t\t\n\t\t\t// Update result set (rows/connections)\n\t\t\tconst child = makeSystemNode(node.child.systemID, node.child.id, node.id, node.child.sigIndex, node.child.name, nodeTypeMarkup, additionalClasses.concat(modifiers));\n\n\t\t\tvar parent = {v: node.parent.id};\n\n\t\t\trow.c.push(child, parent);\n\t\t\tchain.rows.push(row);\n\t\t\tconnections.push(Array(child.v, parent.v, modifiers, node.id));\n\t\t\t\n\t\t\tconst parentPathHome = (systemsInChainMap[node.parent.systemID] || { pathHome:[]}).pathHome;\n\t\t\trow.pathHome = parentPathHome.concat(node.child);\n\t\t\t\n\t\t\tif(!node.calculated) { \n\t\t\t\tsystemsInChainMap[node.child.systemID] = row; // store for loops/chain modifiers\n\t\t\t}\t\n\t\t}\n\n\t\t// Apply critical/destab line colors\n\t\tconnections.reverse(); // so we apply to outer systems first\n\n\t\tconst exits = Object.keys(systemsInChainMap).filter(function(x) { return x < 31000000; });\n\t\treturn {map: chain, lines: connections, systemsInChainMap: systemsInChainMap, exits: exits};\n\t}\n\n\n\tthis.setActiveTab = function(newIndex) {\n\t\t$(\"#chainTabs .tab\").removeClass(\"current\");\n\t\toptions.chain.active = newIndex;\n\t\tif(newIndex != null) {\n\t\t\t$(\"#chainTabs .tab\").eq(newIndex).addClass('current');\n\t\t}\n\t\t\n\t\toptions.save();\n\t\tchain.redraw();\n\t\ttripwire.parse(tripwire.client, \"refresh\");\n\t}\n\n\tthis.redraw = function() {\n\t\tthis.useRenderer(options.chain.renderer);\n\t\t\n\t\tvar data = $.extend(true, {}, this.data);\n\t\tdata.map = $.extend(true, {}, data.rawMap);\n\n\t\tthis.draw(data);\n\t}\n\t\n\tvar drawRetryTimer = null;\n\n\tthis.draw = function(data) {\n\t\tvar data = typeof(data) !== \"undefined\" ? data : {};\n\t\tclearTimeout(drawRetryTimer);\n\n\t\t// We need to make sure Google chart is ready and we have signature data for this system before we begin, otherwise delay\n\t\tif (!this.renderer.ready() || (Object.keys(data.map||{}).length && !tripwire.client.signatures)) {\n\t\t\tdrawRetryTimer = setTimeout(function() { chain.draw(data) }, 100);\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.map) {\n\t\t\tthis.drawing = true;\n\n\t\t\tthis.data.rawMap = $.extend(true, {}, data.map);\n\n\t\t\t// if (options.chain.active == null || (options.chain.tabs[options.chain.active] && options.chain.tabs[options.chain.active].evescout == false)) {\n\t\t\t// \tif (options.masks.active != \"273.0\") {\n\t\t\t// \t\tfor (var i in data.map) {\n\t\t\t// \t\t\tif (data.map[i].mask == \"273.0\") {\n\t\t\t// \t\t\t\tdelete data.map[i];\n\t\t\t// \t\t\t}\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// }\n\n\t\t\t// Sort so we keep the chain map order the same\n\t\t\tObject.sort(data.map, \"id\");\n\n\t\t\t$.extend(data, this.nodes(data.map)); // 250ms -> <100ms\n\t\t\t$.extend(this.data, data);\n\t\t\t\n\t\t\tconst collapsedSystems = options.chain.tabs[options.chain.active] ? (options.chain.tabs[options.chain.active].collapsed || []) : [];\n\n\t\t\tthis.renderer.draw(data.map, data.lines, collapsedSystems); // 150ms\n\t\t\t//this.map.draw(this.newView(data.map), this.options); // 150ms\n\n//\t\t\tthis.renderer.lines(data); // 300ms\n\t\t\tthis.grid(); // 4ms\n\n\t\t\t// Apply current system style\n\t\t\t$(\"#chainMap [data-nodeid='\"+viewingSystemID+\"']\").parent().addClass(\"currentNode\"); // 0.1ms\n\n\t\t\t// Remove old system effect tooltips and add current ones\n\t\t\tif (WormholeTypeToolTips.attachedElements && WormholeTypeToolTips.attachedElements.length > 0) {\n\t\t\t\tWormholeTypeToolTips.detach($(\"#chainMap .whEffect\"));\n\t\t\t}\n\t\t\tWormholeTypeToolTips.attach($(\"#chainMap .whEffect[data-icon]\")); // 0.30ms\n\t\t\tWormholeRouteToolTips.attach($(\"#chainMap .path span[data-tooltip]\"));\n\t\t\tSystemActivityToolTips.attach($(\"#chainMap .nodeClass span[data-tooltip]\"));\n\t\t\t\n\t\t\tthis.drawing = false;\n\t\t\t\n\t\t\tsystemPanel.update();\n\t\t}\n\n\t\t// Gather latest system activity\n\t\tif (!this.data.activity || new Date() > this.data.activity.expires) {\n\t\t\tdata.activity = {};\n\t\t\ttripwire.esi.universeJumps()\n\t\t\t\t.done(function(results, status, request) {\n\t\t\t\t\tdata.activity.expires = new Date(request.getResponseHeader(\"expires\"));\n\t\t\t\t\t$.each(results, function(x) {\n\t\t\t\t\t\tdata.activity[results[x].system_id] = {\n\t\t\t\t\t\t\tsystemID: results[x].system_id,\n\t\t\t\t\t\t\tshipJumps: results[x].ship_jumps\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.then(function() {\n\t\t\t\t\t return tripwire.esi.universeKills()\n\t\t\t\t\t\t.done(function(results) {\n\t\t\t\t\t\t\t$.each(results, function(x) {\n\t\t\t\t\t\t\t\tif (data.activity[results[x].system_id]) {\n\t\t\t\t\t\t\t\t\tdata.activity[results[x].system_id].podKills = results[x].pod_kills;\n\t\t\t\t\t\t\t\t\tdata.activity[results[x].system_id].shipKills = results[x].ship_kills;\n\t\t\t\t\t\t\t\t\tdata.activity[results[x].system_id].npcKills = results[x].npc_kills;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdata.activity[results[x].system_id] = {\n\t\t\t\t\t\t\t\t\t\tsystemID: results[x].system_id,\n\t\t\t\t\t\t\t\t\t\tpodKills: results[x].pod_kills,\n\t\t\t\t\t\t\t\t\t\tshipKills: results[x].ship_kills,\n\t\t\t\t\t\t\t\t\t\tnpcKills: results[x].npc_kills,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.then(function() {\n\t\t\t\t\tchain.data.activity = chain.activity(data.activity);\n\t\t\t\t});\n\t\t} else if (data.map) {\n\t\t\tchain.activity(this.data.activity);\n\t\t}\n\n\t\tif (data.occupied) { // 3ms\n\t\t\tthis.data.occupied = this.occupied(data.occupied);\n\t\t}\n\n\t\tif (data.flares) { // 20ms\n\t\t\tthis.data.flares = this.flares(data.flares);\n\t\t}\n\t}\n\n\tthis.updateCollapsed = function(collapsedSystems) {\n\t\tif (options.chain.tabs[options.chain.active]) {\n\t\t\toptions.chain.tabs[options.chain.active].collapsed = collapsedSystems;\n\t\t}\n\t\t\n\t\t// Apply current system style\n\t\t$(\"#chainMap [data-nodeid='\"+viewingSystemID+\"']\").parent().addClass(\"currentNode\");\n\n\t\tif (WormholeTypeToolTips.attachedElements && WormholeTypeToolTips.attachedElements.length > 0) {\n\t\t\tWormholeTypeToolTips.detach($(\"#chainMap .whEffect\"));\n\t\t}\n\t\tWormholeTypeToolTips.attach($(\"#chainMap .whEffect[data-icon]\"));\n\n\t\tchain.activity(chain.data.activity);\n\n\t\tchain.occupied(chain.data.occupied);\n\n\t\tchain.flares(chain.data.flares);\n\n\t\tchain.grid();\n\n\t\toptions.save();\n\t}\n\n}\n","var guidance_profiles = {\n\tblueLootSystems: [17,40,41,55,72,53,74,160,162,163,196,197,164,181,187,133,159,903,905,1002,1013,1021,1026,1032,1038,1045,1290,1359,1390,1361,1397,1395,1391,1676,1679,1677,1840,1842,1847,1848,1852,1854,1855,1858,1866,1868,1873,1874,1881,1883,1894,1896,1897,1901,1902,1907,1914,1918,1922,1931,1932,1938,1946,1951,1952,1958,1959,1961,1939,1978,2415,2418,2414,2558,2559,2560,2568,2569,2571,2572,2769,2815,2816,2771,2800,2975,2977,2980,2988,2993,2992,3017,3018,3024,3030,3048,3055,3025,3029,3053,3271,3275,3279,3280,3281,3283,3284,3287,3305,3307,3312,3317,3318,3321,3322,3324,3329,3333,3335,3338,3339,3342,3344,3361,3363,2058,2065,2067,3394,3404,3412,3447,3449,3467,3469,3389,3402,3413,3409,2059,2190,2252,3553,3554,3555,3556,2191,2193,2187,4077,4078,4079,4084,4111,4112,4114,4083,4239,4240,4241,4288,4291,4296,4621,4623,5010,5011,5020,5009,5018,5017,5030,5031,5034,5035,5039,5040,5043,5052,5054,5276,5275],\n\tchainExits: []\n}","const systemPanel = new function() {\n\tthis.update = function() {\n\t\t// Update dependent controls: Path to chain/home\n\t\tconst exits = chain.data.exits;\n\t\tvar html = [\n\t\t\trenderRoute((exits || []).map(function(x) { return x - 30000000; }), true, 'chain', 'To chain'), \n\t\t\trenderRoute(guidance_profiles.blueLootSystems, false, 'blue-loot', 'Blue loot buyer')\n\t\t].filter(function(x) { return x; }).join('');\n\t\t$(\"#infoExtra\").html(html);\n\t\tTooltips.attach($(\"#infoExtra [data-tooltip]\"));\n\t};\n\t\n\tfunction renderRoute(targets, addPathHome, cssClass, categoryText) {\n\t\tconst path = targets ? guidance.findShortestPath(tripwire.map.shortest, viewingSystemID - 30000000, targets) : null;\n\t\tif(path) {\n\t\t\tconst inChain = path.length <= 1;\n\t\t\tconst exitSystem = path[path.length - 1] + 30000000;\n\t\t\tconst prefixText = inChain ? 'In chain: ' : (path.length - 1) + 'j from ' ;\n\t\t\tconst pathHomeText = addPathHome ? chain.data.systemsInChainMap[exitSystem].pathHome.slice().reverse()\n\t\t\t\t.map(function(n) { return '' + (n.name || tripwire.systems[n.systemID].name || '???') + ''; })\n\t\t\t\t.join(' > ') : '' + tripwire.systems[exitSystem].name + '';\n\t\t\t\tconst pathToChainText = inChain ? '' : '
    ' + systemRendering.renderPath(path.slice().reverse());\n\t\t\t\treturn '
    ' + categoryText + ': ' + prefixText + pathHomeText + pathToChainText + '
    ';\n\t\t} else { return null; }\n\t}\n\n}();","tripwire.active = function(data) {\n var editSigs = [];\n var editComments = [];\n\n for (var x in data) {\n var activity = JSON.parse(data[x].activity);\n editSigs.push(parseInt(activity.editSig));\n editComments.push(parseInt(activity.editComment));\n\n if (activity.editSig) {\n var $row = $(\"#sigTable tr[data-id='\"+activity.editSig+\"']\");\n\n // Only animate when the row is newly marked. This runs on every\n // refresh, so animating unconditionally queued one more 1s\n // animation per poll for as long as somebody kept the signature\n // open -- and the queue only drains while the tab is visible.\n if (!$row.hasClass(\"editing\")) {\n $row.addClass(\"editing\");\n if (!document.hidden) {\n $row.find(\"td\").stop(true, true)\n .animate({backgroundColor: \"#001b47\"}, 1000); //35240A - Yellow\n }\n }\n }\n\n if (activity.editComment && $(\"#commentWrapper .comment[data-id='\"+activity.editComment+\"'] .cke\").length > 0) {\n $(\"#commentWrapper .comment[data-id='\"+activity.editComment+\"']\")\n .addClass(\"editing\")\n .find(\".commentStatus\").text(data[x].characterName + \" is editing\").fadeIn();\n }\n }\n\n $(\"#sigTable tr.editing\").each(function() {\n if ($.inArray($(this).data(\"id\"), editSigs) == -1) {\n $(\"#sigTable tr[data-id='\"+$(this).data(\"id\")+\"']\")\n //.attr('data-tooltip', '')\n //.removeAttr(\"title\")\n .removeClass(\"editing\")\n .find(\"td\")\n .stop(true, true)\n .animate({backgroundColor: \"#111\"}, document.hidden ? 0 : 1000, null, function() {$(this).css({backgroundColor: \"\"});});\n }\n });\n\n $(\"#commentWrapper .editing\").each(function() {\n if ($.inArray($(this).data(\"id\"), editComments) == -1) {\n $(\"#commentWrapper .editing[data-id='\"+$(this).data(\"id\")+\"']\")\n .removeClass(\"editing\")\n .find(\".commentStatus\").fadeOut(function() {$(this).text(\"\")});\n }\n });\n}\n","// Hanldes adding to Signatures section\n// ToDo: Use native JS\ntripwire.makeSigInfo = function(sig, wormhole) {\n\twormhole = wormhole ||\t// allow to be passed in to save this lookup\n\t\tObject.values(tripwire.client.wormholes).find(function (wh) { return wh.initialID == sig.id || wh.secondaryID == sig.id});\n\tif (!wormhole) return false;\n\tvar otherSignature = sig.id == wormhole.initialID ? tripwire.client.signatures[wormhole.secondaryID] : tripwire.client.signatures[wormhole.initialID];\n\tif (!otherSignature) return false;\n\n\tlet leadsTo;\n\tif (sig.name) {\n\t leadsTo = tripwire.systems[otherSignature.systemID] ?\n\t\t\"\"+_.escape(sig.name)+\" – \" + systemRendering.renderSystem(systemAnalysis.analyse(otherSignature.systemID), 'a') : \n\t\t_.escape(sig.name);\n\t} else if (appData.genericSystemTypes[otherSignature.systemID]) {\n\t\tleadsTo = appData.genericSystemTypes[otherSignature.systemID];\n\t} else if (tripwire.systems[otherSignature.systemID]) {\n\t\tleadsTo = systemRendering.renderSystem(systemAnalysis.analyse(otherSignature.systemID), 'a');\n\t} else {\n\t\tleadsTo = \"\";\n\t}\n\n\tconst wormholeTypeText = wormhole.type || \"???\";\n\treturn {\n\t\tid: sig.id,\n\t\tleadsTo: leadsTo,\n\t\twormhole: wormhole,\n\t\tformattedType: (wormhole[wormhole.parent+\"ID\"] == sig.id ? wormholeTypeText : (wormhole.parent ? \"[\" + wormholeTypeText + \"]\" : \"\")),\n\t\tlifeText: { critical: 'EOL', stable: 'Stable' }[wormhole.life] || wormhole.life,\n\t}\n}\n\ntripwire.addSig = function(add, option, disabled) {\n var option = option || {};\n var animate = typeof(option.animate) !== 'undefined' ? option.animate : true;\n var disabled = disabled || false;\n var wormhole = {};\n\n\tconst returnLinkText = add.signatureID ? '>> Set ' + \n\t\t\t\tadd.signatureID.substring(0, 3).toUpperCase() + '-' + add.signatureID.substring(3) +\n\t\t\t\t' as return'\n\t\t\t\t: '';\n\n if (add.type == \"wormhole\") {\n\t\tconst sigInfo = tripwire.makeSigInfo(add);\n\t\tif(!sigInfo) return false;\n\t\t\n\t\twormhole = sigInfo.wormhole;\n\t\t\n\t\tconst leadsToText = sigInfo.leadsTo ? sigInfo.leadsTo : \n\t\t\tadd.signatureID && add.signatureID.length && add.signatureID[0] != '?' ? returnLinkText\n\t\t\t: '';\t\n\n var row = \"\"\n + \"\"+formatSignatureID(add.signatureID)+\"\"\n + \"\"+sigInfo.formattedType+\"\"\n + \"\"\n + \"\"+leadsToText+\"\"\n + \"\"+sigInfo.lifeText+\"\"\n + \"\"+wormhole.mass+\"\"\n + \"\";\n\n var tr = $(row);\n } else {\n\t\tconst leadsToText = add.type === 'unknown' ? returnLinkText : \n\t\t\t(add.name ? linkSig(add.name) : '');\n var row = \"\"\n + \"\"+formatSignatureID(add.signatureID)+\"\"\n + \"\"+add.type+\"\"\n + \"\"\n + \"\"+leadsToText+\"\"\n + \"\";\n\n var tr = $(row);\n }\n\n Tooltips.attach($(tr).find(\"[data-tooltip]\"));\n\n $(\"#sigTable\").append(tr);\n\n // Add counter\n if (wormhole.life == \"critical\") {\n $(tr).find('span[data-age]').countdown({until: moment.utc(add.lifeLeft).toDate(), onExpiry: this.pastEOL, alwaysExpire: true, compact: true, format: this.ageFormat, serverSync: this.serverTime.getTime})\n // .countdown('pause')\n .addClass('critical')\n // .countdown('resume');\n } else {\n $(tr).find('span[data-age]').countdown({since: moment.utc(add.lifeTime).toDate(), compact: true, format: this.ageFormat, serverSync: this.serverTime.getTime});\n }\n\n // Same reasoning as deleteSig: the wrapper is only unwrapped by the\n // slideDown callback, so animating in a hidden tab leaves the new row\n // invisible until the backlog drains. Show it outright instead.\n if (animate && !document.hidden) {\n $(tr)\n .find('td')\n .wrapInner('
    ')\n .parent()\n .find('td > div')\n .slideDown(700, function(){\n $set = $(this);\n $set.replaceWith($set.contents());\n });\n\n $(tr).find(\"td\").animate({backgroundColor: \"#004D16\"}, 1000).delay(1000).animate({backgroundColor: \"#111\"}, 1000, null, function() {$(this).css({backgroundColor: \"\"});});\n }\n}\n\ntripwire.setReturnSig = function(event, sigToRemoveId) {\n\tevent.preventDefault();\n\tconst sigToUpdate = tripwire.signatures.returnSig;\n\tconst sigToRemove = tripwire.client.signatures[sigToRemoveId];\n\t\n\tif(!(sigToUpdate && sigToRemove)) { return; }\n\t\n\tsigDialog.overwriteSignature(sigToRemoveId, function(data) {\n\t\tsigToUpdate.signatureID = sigToRemove.signatureID;\n\t\t// we need the wormhole part to make refresh.php not think the sig isn't a wormhole any more\n\t\tconst payload = {\"signatures\": {\"update\": [ { wormhole: 'dummy', signatures: [ sigToUpdate ] } ] }};\n\t\ttripwire.refresh('refresh', payload);\n\t});\n}","// Handles API updates\ntripwire.API = function() {\n this.indicator;\n this.APIrefresh;\n\n this.API.expire = function() {\n var options = {since: tripwire.API.APIrefresh, until: null, format: \"MS\", layout: \"-{mnn}{sep}{snn}\"};\n $(\"#APItimer\").countdown(\"option\", options);\n }\n\n this.API.refresh = function() {\n $.ajax({\n url: \"api_update.php\",\n cache: false,\n dataType: \"JSON\",\n data: \"indicator=\"+tripwire.API.indicator\n }).done(function(data) {\n if (data && data.APIrefresh) {\n tripwire.API.indicator = data.indicator;\n tripwire.API.APIrefresh = new Date(data.APIrefresh);\n activity.refresh(); //Refresh graph\n\n var options = {until: tripwire.API.APIrefresh, since: null, layout: \"{mnn}{sep}{snn}\"};\n $(\"#APItimer\").countdown(\"option\", options);\n setTimeout(\"tripwire.API.refresh();\", $.countdown.periodsToSeconds($(\"#APItimer\").countdown('getTimes')) - 30);\n } else if ($(\"#APItimer\").countdown(\"option\", \"layout\") !== \"-{mnn}{sep}{snn}\" && $.countdown.periodsToSeconds($(\"#APItimer\").countdown('getTimes')) > 120) {\n setTimeout(\"tripwire.API.refresh();\", ($.countdown.periodsToSeconds($(\"#APItimer\").countdown('getTimes')) - 30) * 1000);\n } else {\n setTimeout(\"tripwire.API.refresh();\", 15000);\n }\n });\n }\n\n this.API.init = function() {\n $.ajax({\n url: \"api_update.php\",\n cache: true,\n dataType: \"JSON\",\n data: \"init=true\"\n }).done(function(data) {\n tripwire.API.indicator = data.indicator;\n tripwire.API.APIrefresh = new Date(data.APIrefresh);\n\n $(\"#APItimer\").countdown({until: tripwire.API.APIrefresh, onExpiry: tripwire.API.expire, alwaysExpire: true, compact: true, format: \"MS\", serverSync: tripwire.serverTime.getTime, onTick: function(t) { $(\"#APIclock\").val(t[5] + 1).trigger(\"change\"); }})\n var timer = $(\"#APItimer\").countdown(\"option\", \"layout\") === \"-{mnn}{sep}{snn}\" ? 15 : $.countdown.periodsToSeconds($(\"#APItimer\").countdown('getTimes')) - 30;\n setTimeout(\"tripwire.API.refresh();\", timer * 1000);\n });\n }\n\n this.API.init();\n}\n// tripwire.API();\n","const automapState = {\n\tpendingDecision: false\n};\n\ntripwire.autoMapper = function(from, to) {\n\tconsole.log('Automapper: Jump from ' + from + ' to ' + to);\n\t\n var pods = [33328, 670];\n var undo = [];\n\n // Make sure the automapper is turned on & not disabled\n if (!$(\"#toggle-automapper\").hasClass(\"active\") || $(\"#toggle-automapper\").hasClass(\"disabled\"))\n return false;\n\n\t// Not waiting on a decision for the previous jump\n\tif(automapState.pendingDecision) {\n\t\tconsole.info('Not automapping because there is an automap dialog up');\n\t\treturn false;\n\t}\n\n // Make sure from and to are valid systems\n if (!tripwire.systems[from] || !tripwire.systems[to])\n return false;\n\n // Make sure from and to are not the same system\n if (from == to)\n return false;\n\t\n\t// Not into a special region e.g. abyssal space\n\tif(tripwire.systems[from].regionID > 12000000 || tripwire.systems[to].regionID > 12000000) {\n\t\tconsole.info('Not automapping into abyssal or other special space');\n\t\treturn false;\n\t}\n\t\n\t// Not into a special system\n\tconst noMapSystems = [30000142, 30002187];\t// Jita/Amarr\n\tif(noMapSystems.indexOf(from) >= 0 || noMapSystems.indexOf(to) >= 0) {\t\n\t\tconsole.info('Not automapping into likely pod-out destination');\n\t\treturn false;\n\t}\n\n // Is pilot in a station?\n if (tripwire.client.EVE && tripwire.client.EVE.stationID) {\n\t\tconsole.log('Automapper: Not recording because you are in a station');\n return false;\n\t}\n\t\n // Is pilot in a pod?\n if (tripwire.client.EVE && tripwire.client.EVE.shipTypeID && $.inArray(parseInt(tripwire.client.EVE.shipTypeID), pods) >= 0) {\n \tconsole.log('Automapper: Not recording because you are in a pod');\n\t\treturn false;\n\t}\n\t\n // Is this a gate?\n if (typeof(tripwire.map.shortest[from - 30000000]) != \"undefined\" && typeof(tripwire.map.shortest[from - 30000000][to - 30000000]) != \"undefined\") {\n\t\tconsole.log('Automapper: Not recording because this jump is a stargate');\n return false;\n\t}\n\n // Is this an existing connection?\n if ($.map(tripwire.client.wormholes,\n function(wormhole) {\n const initial = tripwire.client.signatures[wormhole.initialID];\n const secondary = tripwire.client.signatures[wormhole.secondaryID];\n return initial && secondary &&\n ((initial.systemID == from && secondary.systemID == to) ||\n (initial.systemID == to && secondary.systemID == from)) ? wormhole : null;\n }).length > 0) {\n\t\tconsole.log('Automapper: Not recording because the connection exists');\n return false;\n }\n\t \n\t // Are both systems already in chain? Loops do happen but it's much more likely ESI missed a jump\n\t function inChain(systemID) { return chain.data.map.rows.filter(r => r.c[0].systemID == systemID).length > 0; }\n\tif(inChain(from) && inChain(to)) {\n\t\tconsole.info('Not automapping because both systems are already in chain');\n\t\treturn false;\n\t}\t \n\n var payload = {\"signatures\": {\"add\": [], \"update\": []}, \"automap\": { \"character\": tripwire.client.EVE.characterID } };\n\n var wormholes = wormholesForJump(from, to, tripwire.client.wormholes, tripwire.client.signatures);\n\t\n if (wormholes.length) {\n if (wormholes.length > 1) {\n\t\t\tconsole.log('Automapper: Multiple sigs matched, asking which one to update');\n $(\"#dialog-select-signature\").dialog({\n autoOpen: true,\n title: \"Which Signature?\",\n width: 390,\n buttons: {\n Cancel: function() {\n $(this).dialog(\"close\");\n },\n Ok: function() {\n var i = $(\"#dialog-select-signature [name=sig]:checked\").val();\n var wormhole = wormholes[i];\n var signature = tripwire.client.signatures[wormhole.initialID];\n var signature2 = tripwire.client.signatures[wormhole.secondaryID];\n\n payload.signatures.update.push({\n \"wormhole\": {\n \"id\": wormhole.id\n },\n \"signatures\": [\n {\n \"id\": signature.id\n },\n {\n \"id\": signature2.id,\n \"systemID\": to\n }\n ]\n });\n\n var success = function(data) {\n if (data.resultSet && data.resultSet[0].result == true) {\n undo.push({\"wormhole\": wormhole, \"signatures\": [signature, signature2]});\n $(\"#dialog-select-signature\").dialog(\"close\");\n }\n }\n\n tripwire.refresh('refresh', payload, success);\n }\n },\n open: function() {\n\t\t\t\t\tautomapState.pendingDecision = true;\n $(\"#dialog-select-signature .optionsTable tbody\").empty();\n\t\t\t\t\t\n\t\t\t\t\tfunction formatSystem(systemID) {\n\t\t\t\t\t\tconst system = systemAnalysis.analyse(systemID);\n\t\t\t\t\t\treturn systemRendering.renderSystem(system);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdocument.getElementById('select-sig-from').innerHTML = formatSystem(from);\n\t\t\t\t\tdocument.getElementById('select-sig-to').innerHTML = formatSystem(to);\n\n $.each(wormholes, function(i) {\n const signature = tripwire.client.signatures[wormholes[i].initialID];\n\t\t\t\t\t\tconst sigInfo = tripwire.makeSigInfo(signature, wormholes[i]);\n\t\t\t\t\t\t\n const tr = \"\"\n + \"\"\n\t\t\t\t\t\t + \"\" + formatSignatureID(signature.signatureID) + \"\"\n\t\t\t\t\t\t + \"\" + sigInfo.formattedType + \"\"\n\t\t\t\t\t\t + \"\" + sigInfo.leadsTo + \"\"\n\t\t\t\t\t\t + \"\" + sigInfo.lifeText + \"\"\n\t\t\t\t\t\t + \"\" + wormholes[i].mass + \"\"\n + \"\";\n\t\t\t\t\t\t \n\t\t\t\t\t\tconst trElem = $(tr);\n $(trElem).find('td').wrapInner(\"
  • No matching command
  • ');\n return;\n }\n $list.html(items.map(function(a, i) {\n var off = a.enabled && !a.enabled();\n return '
  • ' +\n '' + a.label + '' +\n '' + a.group + '' +\n (a.keys ? '' + a.keys + '' : '') +\n '
  • ';\n }).join(\"\"));\n }\n\n function move(delta) {\n if (!items.length) { return; }\n cursor = (cursor + delta + items.length) % items.length;\n $list.children().removeClass(\"sel\").attr(\"aria-selected\", \"false\")\n .eq(cursor).addClass(\"sel\").attr(\"aria-selected\", \"true\")[0]\n .scrollIntoView({block: \"nearest\"});\n }\n\n function run(i) {\n var a = items[i];\n if (!a) { return; }\n if (a.enabled && !a.enabled()) { return; } // listed but unavailable\n close();\n a.perform();\n }\n\n function open() {\n $help.addClass(\"hidden\");\n $palette.removeClass(\"hidden\");\n $input.val(\"\");\n render(\"\");\n $input.focus();\n }\n\n function close() {\n $palette.addClass(\"hidden\");\n $input.blur();\n }\n\n function isOpen() { return $palette && !$palette.hasClass(\"hidden\"); }\n\n $(function() {\n build();\n\n // Keys inside the palette. Bound to the input so they never reach the\n // global handler below.\n $input.on(\"keydown\", function(e) {\n if (e.key === \"Escape\") { e.preventDefault(); close(); }\n else if (e.key === \"ArrowDown\") { e.preventDefault(); move(1); }\n else if (e.key === \"ArrowUp\") { e.preventDefault(); move(-1); }\n else if (e.key === \"Enter\") { e.preventDefault(); run(cursor); }\n });\n\n // Global layer. Stands down whenever the keystroke belongs to a field\n // or an open dialog, which is what makes it safe to use bare keys.\n $(document).on(\"keydown.cmdPalette\", function(e) {\n // Escape closes whatever is open, wherever focus happens to be --\n // the input's own handler covers the normal case, this covers focus\n // having moved elsewhere.\n if (e.key === \"Escape\") {\n if (!$help.hasClass(\"hidden\")) { $help.addClass(\"hidden\"); return; }\n if (isOpen()) { close(); return; }\n }\n if (isOpen() || tripwire.keyboard.isTyping(e.target)) { return; }\n\n if ((e.ctrlKey || e.metaKey) && (e.key === \"k\" || e.key === \"K\")) {\n e.preventDefault();\n open();\n } else if (!e.ctrlKey && !e.metaKey && !e.altKey && e.key === \"/\") {\n e.preventDefault();\n open();\n } else if (!e.ctrlKey && !e.metaKey && !e.altKey && e.key === \"?\") {\n e.preventDefault();\n $help.toggleClass(\"hidden\");\n }\n });\n });\n})();\n","// Tags dialog buttons by role so CSS can style them as roles rather than by\n// position. The previous rule used :last-child, which made \"Close\" the primary\n// action in Settings -- Save sits first there and Close last.\n//\n// Hooks dialogopen from outside, so no dialog source is touched.\n\n(function() {\n\tvar PRIMARY = [\"save\", \"add\", \"ok\", \"apply\", \"create\", \"confirm\", \"send\", \"search\", \"login\"];\n\tvar DESTRUCTIVE = [\"delete\", \"remove\", \"reset\"];\n\tvar QUIET = [\"cancel\", \"close\"];\n\n\t// Three roles. Everything else is an ordinary secondary action and sits\n\t// between the quiet action and the primary. The CSS orders by role, so a\n\t// dialog whose config lists Cancel first still renders it beside Save.\n\tfunction tag() {\n\t\t$(\".ui-dialog-buttonpane button\").each(function() {\n\t\t\tvar label = $.trim($(this).text()).toLowerCase();\n\t\t\t$(this).toggleClass(\"is-primary\", PRIMARY.indexOf(label) > -1)\n\t\t\t .toggleClass(\"is-destructive\", DESTRUCTIVE.indexOf(label) > -1)\n\t\t\t .toggleClass(\"is-quiet\", QUIET.indexOf(label) > -1);\n\t\t});\n\t}\n\n\t// Every dialog gets the same skin class, whatever its own config asked\n\t// for. Done at the prototype so no dialog source is touched.\n\tif ($.ui && $.ui.dialog) {\n\t\tvar base = $.ui.dialog.prototype.options.dialogClass || \"\";\n\t\t$.ui.dialog.prototype.options.dialogClass = $.trim(base + \" tw-dialog\");\n\t}\n\n\t$(function() {\n\t\t$(document).on(\"dialogopen\", \".ui-dialog\", function() { setTimeout(tag, 0); });\n\t\t// Buttons are shown/hidden per mode (Add vs Save), so retag on change too.\n\t\t$(document).on(\"click\", \".ui-dialog-buttonpane button\", function() { setTimeout(tag, 0); });\n\t});\n})();\n","// Minimal rich-text editor for system notes.\n//\n// Replaces CKEditor 4, which reached end of life in June 2023 -- its security\n// fixes are commercial-only now -- and shipped 1.3MB for a toolbar of eight\n// buttons.\n//\n// The API deliberately mirrors the three CKEditor calls comments.js actually\n// used (replace, getData, destroy), so the integration barely changes.\n//\n// Output is constrained to the tags app/js/sanitise-html.js allows, so what an\n// author writes is what survives rendering. Nothing here trusts that by\n// itself: content is still sanitised on the way back out.\n\ntripwire.editor = (function() {\n\tvar instances = {};\n\n\t// execCommand is formally deprecated but is the only broadly supported way\n\t// to do this without a large dependency, which is the thing being removed.\n\t// Every command below is one of the stable, universally implemented set.\n\tvar TOOLS = [\n\t\t{cmd: \"bold\", label: \"B\", title: \"Bold\", style: \"font-weight:700\"},\n\t\t{cmd: \"italic\", label: \"I\", title: \"Italic\", style: \"font-style:italic\"},\n\t\t{cmd: \"underline\", label: \"U\", title: \"Underline\", style: \"text-decoration:underline\"},\n\t\t{cmd: \"strikeThrough\", label: \"S\", title: \"Strikethrough\", style: \"text-decoration:line-through\"},\n\t\t{sep: true},\n\t\t{cmd: \"insertUnorderedList\", label: \"•\", title: \"Bulleted list\"},\n\t\t{cmd: \"insertOrderedList\", label: \"1.\", title: \"Numbered list\"},\n\t\t{sep: true},\n\t\t{cmd: \"createLink\", label: \"🔗\", title: \"Link\"},\n\t\t{cmd: \"unlink\", label: \"⛓\", title: \"Remove link\"}\n\t];\n\n\t// The colours notes actually use: the brand accent and the data semantics,\n\t// so a note can mark something critical in the same red the map uses.\n\tvar COLOURS = [\"--foreground\", \"--primary\", \"--data-critical\", \"--data-warn\", \"--data-good\", \"--data-info\"];\n\n\tfunction resolve(token) {\n\t\treturn getComputedStyle(document.documentElement).getPropertyValue(token).trim();\n\t}\n\n\tfunction build($host, id) {\n\t\tvar $wrap = $('
    ');\n\t\tvar $bar = $('
    ').appendTo($wrap);\n\n\t\tTOOLS.forEach(function(t) {\n\t\t\tif (t.sep) { $('').appendTo($bar); return; }\n\t\t\t$('')\n\t\t\t\t.attr(\"title\", t.title)\n\t\t\t\t.attr(\"data-cmd\", t.cmd)\n\t\t\t\t.attr(\"style\", t.style || \"\")\n\t\t\t\t.text(t.label)\n\t\t\t\t// mousedown, not click: the selection is still live before focus moves.\n\t\t\t\t.on(\"mousedown\", function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tif (t.cmd === \"createLink\") {\n\t\t\t\t\t\tvar url = window.prompt(\"Link URL\");\n\t\t\t\t\t\tif (!url) { return; }\n\t\t\t\t\t\tif (!/^(https?:|mailto:|\\/|#)/i.test(url)) { url = \"https://\" + url; }\n\t\t\t\t\t\tdocument.execCommand(\"createLink\", false, url);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.execCommand(t.cmd, false, null);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.appendTo($bar);\n\t\t});\n\n\t\t$('').appendTo($bar);\n\t\tCOLOURS.forEach(function(token) {\n\t\t\tvar colour = resolve(token) || \"#ccc\";\n\t\t\t$('')\n\t\t\t\t.attr(\"title\", \"Text colour\")\n\t\t\t\t.css(\"background\", colour)\n\t\t\t\t.on(\"mousedown\", function(e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tdocument.execCommand(\"foreColor\", false, colour);\n\t\t\t\t})\n\t\t\t\t.appendTo($bar);\n\t\t});\n\n\t\tvar $area = $('
    ')\n\t\t\t.attr(\"id\", id + \"-rte\")\n\t\t\t.html($host.html());\n\n\t\t// Paste as text unless it is already ours: pasting from a browser drags\n\t\t// in spans, classes and inline styles that the sanitiser would strip\n\t\t// anyway, leaving surprising gaps.\n\t\t$area.on(\"paste\", function(e) {\n\t\t\tvar cb = e.originalEvent && e.originalEvent.clipboardData;\n\t\t\tif (!cb) { return; }\n\t\t\te.preventDefault();\n\t\t\tdocument.execCommand(\"insertText\", false, cb.getData(\"text/plain\"));\n\t\t});\n\n\t\t$wrap.append($area);\n\t\t$host.after($wrap).hide();\n\t\treturn {$wrap: $wrap, $area: $area};\n\t}\n\n\treturn {\n\t\t// CKEDITOR.replace(id, config) -> tripwire.editor.replace(id)\n\t\treplace: function(id, onReady) {\n\t\t\tvar $host = $(\"#\" + id);\n\t\t\tif (!$host.length) { return null; }\n\t\t\tvar parts = build($host, id);\n\t\t\tinstances[id] = {\n\t\t\t\thost: $host,\n\t\t\t\twrap: parts.$wrap,\n\t\t\t\tarea: parts.$area,\n\t\t\t\tgetData: function() { return parts.$area.html(); },\n\t\t\t\tfocus: function() { parts.$area.trigger(\"focus\"); }\n\t\t\t};\n\t\t\tif (typeof onReady === \"function\") { setTimeout(function() { onReady(instances[id]); }, 0); }\n\t\t\treturn instances[id];\n\t\t},\n\n\t\tinstances: instances,\n\n\t\tget: function(id) { return instances[id]; },\n\n\t\t// CKEditor's destroy(true) discards edits; destroy(false) keeps them.\n\t\tdestroy: function(id, discard) {\n\t\t\tvar inst = instances[id];\n\t\t\tif (!inst) { return; }\n\t\t\tif (!discard) { inst.host.html(inst.getData()); }\n\t\t\tinst.wrap.remove();\n\t\t\tinst.host.show();\n\t\t\tdelete instances[id];\n\t\t}\n\t};\n})();\n","// Firefox (and some other browsers) don't support 'zoom' CSS\n// This snippet hooks up a variant using transform(scale) to JQuery\n// See e.g. https://medium.com/@sai_prasanna/simulating-css-zoom-with-css3-transform-scale-461d1b9762d6\nif (document.createElement(\"detect\").style.zoom != \"\"){\n\t$.cssNumber.zoom = true;\n $.cssHooks.zoom = {\n get: function(elem, computed, extra) {\n var value = $(elem).data('zoom');\n return value != null ? value : 1;\n },\n set: function(elem, scale) {\n var $e = $(elem);\n var e = $e[0];\n var data = $e.data('zoom');\n if (data == null) {\n $e.data('origWidth', e.clientWidth);\n $e.data('origHeight', e.clientHeight);\n }\n $e.data('zoom', scale);\n const width = $e.data('origWidth');\n const height = $e.data('origHeight');\n e.style.transform = 'scale(' + scale + ')';\n e.style.transformOrigin = '0 0';\n const bot = (height/scale - height);\n const right = (width/scale - width);\n e.style.marginBottom = (-bot) + 'px';\n e.style.marginRight = (-right) + 'px';\n }\n };\n}","const fw = new _FactionWarfare();\n\nfunction _FactionWarfare() {\n\tconst _this = this;\n\tthis.listeners = [];\n\tthis.data = null;\n\tthis.systems = {};\n\tthis.SamanuniAthounonGateOpen = true;\n\t\n\t/** Refresh the FW data from the public ESI endpoint */\n\tthis.refresh = function() {\n\t\t$.ajax({\n\t\t\turl: 'cached_third_party.php?key=fw',\n\t\t\ttype: \"GET\",\n\t\t\tdataType: \"JSON\"\n\t\t}).done(function(data, status, xhr) {\t\n\t\t\tif(!_.isEqual(data, _this.data)) {\n\t\t\t\tconsole.info('Updating faction warfare status');\n\t\t\t\t_this.data = data;\n\t\t\t\t_this.parse(data);\n\t\t\t\ttripwire.systemChange(viewingSystemID);\n\t\t\t\tguidance.clearCache();\n\t\t\t}\n\t\t}).fail(function(xhr, status, error) {\n\t\t\tconsole.warn('Failed to fetch FW data from ESI: ' + status, error);\n\t\t});\n\t};\t\n\t\n\tthis.parse = function(data) {\n\t\tthis.systems = {};\n\t\tfor(var i = 0; i < data.length; i++) { this.systems[data[i].solar_system_id] = data[i]; }\n\t\tthis.SamanuniAthounonGateOpen = this.systems[30003856].occupier_faction_id == 500001;\n\t}\n\t\n\t// Guidance plugin\n\tthis.adjustJumpCost = function(from, to, cost) {\n\t\tconst gateOpen = this.SamanuniAthounonGateOpen || !((from == 3856 && to == 45322) || (to == 3856 && from == 45322));\n\t\treturn gateOpen ? cost : -1;\n\t}.bind(this);\t// because it's called from outside\n\tguidance.jumpCostModifiers.push(this.adjustJumpCost);\n\t\n\t/** Gets the markup for faction text for a system. If it's in FW, it will show contested status; if not it will just show the faction */\n\tthis.factionMarkup = function(system) {\n\t\treturn system.factionID ? (\n\t\t\t_this.systems[system.systemID] ? \n\t\t\t\tappData.factions[_this.systems[system.systemID].occupier_faction_id].name + ' (FW: ' + \n\t\t\t\t\t(_this.systems[system.systemID].contested == 'uncontested' ? 'uncontested' : \n\t\t\t\t\t\tMath.floor(100 * _this.systems[system.systemID].victory_points / _this.systems[system.systemID].victory_points_threshold) + '% contested') + ')'\n\t\t\t\t: appData.factions[system.factionID].name\n\t\t) : \" \";\n\t};\n\t\n\tsetInterval(this.refresh, 3600000);\n\tthis.refresh();\t\n}","// The ship under the pilot's name. ESI already polls the tracked character's\n// ship every five seconds and writes it into the tracking dropdown; this\n// mirrors the active character's hull into the letterhead, and clears it when nothing is tracked.\n(function() {\n\tfunction sync() {\n\t\tvar $el = $(\"#hdr-ship\");\n\t\tif (!$el.length) return;\n\t\tvar chars = window.tripwire && tripwire.esi && tripwire.esi.characters;\n\t\tvar c = chars && window.options && options.tracking ? chars[options.tracking.active] : null;\n\t\tvar type = c && c.shipTypeName;\n\t\tif (!type) { $el.addClass(\"hidden\").empty(); return; }\n\t\t// The hull only. What the pilot named the ship is theirs, not a fact\n\t\t// the desk needs.\n\t\t$el.text(type).removeClass(\"hidden\");\n\t}\n\t$(function() {\n\t\tsync();\n\t\tif (!window.MutationObserver) return;\n\t\t// esi.js writes hull and name into the dropdown rows; set_tracking_text\n\t\t// flips the tracked-name span when the active character changes.\n\t\tvar opts = {childList: true, characterData: true, subtree: true, attributes: true};\n\t\t[\"tracking\", \"user-track\"].forEach(function(id) {\n\t\t\tvar t = document.getElementById(id);\n\t\t\tif (t) new MutationObserver(sync).observe(t, opts);\n\t\t});\n\t});\n})();\n","// The header names the system you are viewing. The panels already do, but the\n// header is where the eye goes for \"where am I\", and until now it answered\n// with the character's location -- a different fact. #infoSystem is the\n// source of truth the system panel keeps current; this mirrors it.\n(function() {\n\tfunction sync() {\n\t\tvar name = $(\"#infoSystem\").text().trim();\n\t\tif (name) { $(\"#hdr-system\").text(name); }\n\t}\n\t$(function() {\n\t\tsync();\n\t\tvar target = document.getElementById(\"infoSystem\");\n\t\tif (target && window.MutationObserver) {\n\t\t\tnew MutationObserver(sync).observe(target, {childList: true, characterData: true, subtree: true});\n\t\t}\n\t\t$(\"#hdr-system\").on(\"click\", function(e) { e.preventDefault(); $(\"#search\").trigger(\"click\"); });\n\t});\n})();\n","// Life and mass, edited on the row.\n//\n// These are the two wormhole fields that change during a session -- a hole\n// goes end-of-life, mass goes critical -- and until now each change meant\n// double-click, wait for the dialog, change one field, save. On a tablet the\n// dialog is the whole workflow. Click the cell, pick from a chip set, done.\n//\n// The payload and the undo entry come from tripwire.signaturePayload, the\n// same module the dialog uses, built from the records the client already\n// holds with one field changed. Nothing here knows the shape of an update.\n//\n// Leads-to is not edited here: it needs the system autocomplete and the\n// wormhole-type inference the dialog does, and that stays in the dialog.\n\n(function() {\n\tvar FIELDS = {\n\t\t5: {key: \"life\", options: [\n\t\t\t{value: \"stable\", label: \"Stable\"},\n\t\t\t{value: \"critical\", label: \"EOL\"}\n\t\t]},\n\t\t6: {key: \"mass\", options: [\n\t\t\t{value: \"stable\", label: \"Stable\"},\n\t\t\t{value: \"destab\", label: \"Destab\"},\n\t\t\t{value: \"critical\", label: \"Critical\"}\n\t\t]}\n\t};\n\n\tfunction close() {\n\t\t$(\"#inline-edit\").remove();\n\t\t$(document).off(\"mousedown.inlineEdit keydown.inlineEdit\");\n\t}\n\n\tfunction open($td, field, wormhole) {\n\t\tclose();\n\n\t\tvar $pop = $('
    ')\n\t\t\t.attr(\"aria-label\", \"Set \" + field.key);\n\n\t\tfield.options.forEach(function(opt) {\n\t\t\tvar current = wormhole[field.key] === opt.value;\n\t\t\t$('')\n\t\t\t\t.addClass(\"inline-chip \" + opt.value)\n\t\t\t\t.attr(\"aria-selected\", current ? \"true\" : \"false\")\n\t\t\t\t.text(opt.label)\n\t\t\t\t.on(\"click\", function(e) {\n\t\t\t\t\te.preventDefault(); e.stopPropagation();\n\t\t\t\t\tif (!current) { apply(wormhole.id, field.key, opt.value, $td); }\n\t\t\t\t\tclose();\n\t\t\t\t})\n\t\t\t\t.appendTo($pop);\n\t\t});\n\n\t\t$(\"body\").append($pop);\n\n\t\tvar r = $td[0].getBoundingClientRect();\n\t\t$pop.css({\n\t\t\ttop: Math.round(r.bottom + 4) + \"px\",\n\t\t\tleft: Math.round(Math.min(r.left, window.innerWidth - $pop.outerWidth() - 8)) + \"px\"\n\t\t});\n\t\t$pop.find(\"[aria-selected=true]\").trigger(\"focus\");\n\n\t\tsetTimeout(function() {\n\t\t\t$(document).on(\"mousedown.inlineEdit\", function(e) {\n\t\t\t\tif (!$(e.target).closest(\"#inline-edit\").length) { close(); }\n\t\t\t});\n\t\t\t$(document).on(\"keydown.inlineEdit\", function(e) {\n\t\t\t\tif (e.key === \"Escape\") { close(); }\n\t\t\t});\n\t\t}, 0);\n\t}\n\n\tfunction apply(wormholeId, key, value, $td) {\n\t\tvar changes = {}; changes[key] = value;\n\t\tvar built = tripwire.signaturePayload.changeWormhole(wormholeId, changes);\n\t\tif (!built) { return; }\n\n\t\t$td.addClass(\"is-saving\");\n\t\tvar systemID = viewingSystemID;\n\n\t\tvar success = function(data) {\n\t\t\tif (data.resultSet && data.resultSet[0].result == true) {\n\t\t\t\ttripwire.signaturePayload.recordUndo(systemID, \"update\", built.undo);\n\t\t\t}\n\t\t};\n\t\tvar always = function() { $td.removeClass(\"is-saving\"); };\n\n\t\ttripwire.refresh(\"refresh\", built.payload, success, always);\n\t}\n\n\t$(function() {\n\t\t// Delegated: rows are re-rendered by the refresh cycle.\n\t\t$(\"#sigTable\").on(\"click\", \"tbody tr[data-id] > td:nth-child(5), tbody tr[data-id] > td:nth-child(6)\", function(e) {\n\t\t\tvar $td = $(this), $tr = $td.closest(\"tr\");\n\t\t\t// Non-wormhole rows span leads-to across these columns and have no 5th cell.\n\t\t\tif ($tr.children(\"td\").length < 6) { return; }\n\t\t\tvar sig = tripwire.client.signatures[$tr.data(\"id\")];\n\t\t\tif (!sig || sig.type !== \"wormhole\") { return; }\n\t\t\tvar wh = tripwire.signaturePayload.wormholeForSignature(sig.id);\n\t\t\tif (!wh) { return; }\n\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation(); // a click here is an edit, not a row selection\n\t\t\topen($td, FIELDS[$td.index() + 1], wh);\n\t\t});\n\n\t\t// Mark the cells so they read as editable.\n\t\tvar tag = function() {\n\t\t\t$(\"#sigTable tbody tr[data-id]\").each(function() {\n\t\t\t\tvar $tr = $(this);\n\t\t\t\tif ($tr.children(\"td\").length >= 6) {\n\t\t\t\t\t$tr.children(\"td\").slice(4, 6).addClass(\"inline-editable\");\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\ttag();\n\t\tvar target = document.getElementById(\"sigTable\");\n\t\tif (target && window.MutationObserver) {\n\t\t\tvar pending = null;\n\t\t\tnew MutationObserver(function() { clearTimeout(pending); pending = setTimeout(tag, 60); })\n\t\t\t\t.observe(target, {childList: true, subtree: true});\n\t\t}\n\t});\n})();\n","// The single source of truth for what the keyboard can do.\n//\n// Both the command palette and the bare-key handler render from this file, and\n// so does the \"?\" overlay, so bindings and their documentation cannot drift\n// apart. Every action dispatches the control the mouse would have used -- this\n// layer adds ways to invoke behaviour, never new behaviour.\n\ntripwire.keyboard = (function() {\n // A control counts as unavailable when it is missing, hidden, or carries\n // the app's own .disabled marker (undo/redo/automapper use it).\n function control(selector) {\n var $el = $(selector);\n return $el.length && !$el.hasClass(\"disabled\") && $el.is(\":visible\") ? $el : null;\n }\n\n function click(selector) {\n return {\n enabled: function() { return !!control(selector); },\n perform: function() {\n var $el = control(selector);\n if ($el) { $el.click(); }\n }\n };\n }\n\n // id, label and group are what the palette lists; keys is what the bare-key\n // handler binds and what the \"?\" overlay prints.\n var ACTIONS = [\n {id: \"add-signature\", label: \"Add signature\", group: \"Signatures\", keys: null, target: \"#add-signature\"},\n {id: \"edit-signature\", label: \"Edit selected signature\", group: \"Signatures\", keys: null, target: \"#edit-signature\"},\n {id: \"delete-signature\", label: \"Delete selected signature\", group: \"Signatures\", keys: null, target: \"#delete-signature\", destructive: true},\n {id: \"undo\", label: \"Undo last signature change\", group: \"Signatures\", keys: \"Ctrl+Z\", target: \"#undo\"},\n {id: \"redo\", label: \"Redo signature change\", group: \"Signatures\", keys: \"Ctrl+Y\", target: \"#redo\"},\n\n {id: \"toggle-automapper\", label: \"Toggle auto-mapper\", group: \"Chain\", keys: null, target: \"#toggle-automapper\"},\n {id: \"show-viewing\", label: \"Add current system to chain\", group: \"Chain\", keys: null, target: \"#show-viewing\"},\n {id: \"show-favorite\", label: \"Add favourites to chain\", group: \"Chain\", keys: null, target: \"#show-favorite\"},\n {id: \"new-tab\", label: \"New chain tab\", group: \"Chain\", keys: null, target: \"#newTab\"},\n\n {id: \"search\", label: \"Toggle system search\", group: \"Navigate\", keys: null, target: \"#search\"},\n {id: \"follow\", label: \"Follow my in-game system\", group: \"Navigate\", keys: null, target: \"#follow\"},\n {id: \"favorite\", label: \"Add or remove favourite\", group: \"Navigate\", keys: null, target: \"#system-favorite\"},\n {id: \"favorites\", label: \"Show all favourites\", group: \"Navigate\", keys: null, target: \"#favorite-dropdown-toggle\"},\n\n {id: \"add-comment\", label: \"Add comment\", group: \"Comments\", keys: null, target: \"#add-comment\"},\n {id: \"sort-comments\", label: \"Sort comments by date\", group: \"Comments\", keys: null, target: \"#comment-sort\"},\n\n {id: \"settings\", label: \"Settings\", group: \"App\", keys: null, target: \"#settings\"},\n {id: \"mask\", label: \"Switch mask\", group: \"App\", keys: null, target: \"#mask-menu-link\"}\n ].map(function(a) { return $.extend(a, click(a.target)); });\n\n // Bare-key bindings. Deliberately no destructive key: a stray press must\n // never delete a signature, so deletion is reachable only from the palette,\n // where invoking it is a two-step. Matches the same rule in Aperture.\n var KEY_BINDINGS = [\n {keys: \"/\", does: \"Open the command palette\"},\n {keys: \"Ctrl+K\", does: \"Open the command palette\"},\n {keys: \"?\", does: \"Show this list\"},\n {keys: \"Esc\", does: \"Close the palette or this list\"},\n {keys: \"Ctrl+Z\", does: \"Undo last signature change\"},\n {keys: \"Ctrl+Y\", does: \"Redo signature change\"},\n {keys: \"Ctrl+A\", does: \"Select all signatures\"},\n {keys: \"Ctrl+C\", does: \"Copy selected signatures\"}\n ];\n\n // Jumping to a system is generated rather than declared -- one entry per\n // known system, resolved lazily so the palette does not build ~8000 rows\n // until someone actually types.\n function systemActions(query) {\n if (!query || query.length < 2 || !tripwire.systems) { return []; }\n var q = query.toLowerCase(), out = [];\n for (var id in tripwire.systems) {\n var name = tripwire.systems[id] && tripwire.systems[id].name;\n if (!name) { continue; }\n if (name.toLowerCase().indexOf(q) === 0) {\n out.push({\n id: \"jump-\" + id,\n label: name,\n group: \"Jump to system\",\n enabled: function() { return true; },\n perform: (function(n) {\n return function() { window.location = \"?system=\" + encodeURIComponent(n); };\n })(name)\n });\n if (out.length >= 8) { break; }\n }\n }\n return out;\n }\n\n // True when a keystroke belongs to something else: a field being typed in,\n // or an open dialog. The dialog test cannot be a tag test -- jQuery UI's\n // dialogs put focus on plain containers, so match the role/class instead.\n function isTyping(target) {\n var $t = $(target);\n return $t.is(\"input, textarea, select, [contenteditable=true]\") ||\n $t.closest(\"[role='dialog'], .ui-dialog, .cke\").length > 0;\n }\n\n // Panel show/hide, generated from the panel registry rather than declared\n // here, so adding a panel adds its command for free. Resolved lazily\n // because panels.js loads after this file.\n function panelActions() {\n if (!tripwire.panels) { return []; }\n return tripwire.panels.all().map(function(p) {\n return {\n id: \"panel-\" + p.id,\n label: (tripwire.panels.isVisible(p.id) ? \"Hide \" : \"Show \") + p.title + \" panel\",\n group: \"Panels\",\n enabled: function() { return true; },\n perform: function() { tripwire.panels.toggle(p.id); }\n };\n });\n }\n\n // Jump to a chain tab by name.\n function chainTabActions() {\n return $(\"#chainTabs .tab\").map(function(i, t) {\n var name = $(t).find(\".name\").text().trim();\n return {\n id: \"chain-tab-\" + i, label: \"Chain: \" + name, group: \"Chain\",\n enabled: function() { return true; },\n perform: function() { if (window.chain && chain.setActiveTab) { chain.setActiveTab(i); } }\n };\n }).get();\n }\n\n // Switch mask by name.\n function maskActions() {\n return $(\"#mask-menu-mask-list a\").map(function(i, a) {\n var $m = $(a).find(\".mask\"), name = $m.text().trim();\n return {\n id: \"mask-\" + $m.data(\"mask\"), label: \"Mask: \" + name, group: \"App\",\n enabled: function() { return !$(a).hasClass(\"active\"); },\n perform: function() { $(a).trigger(\"click\"); }\n };\n }).get();\n }\n\n // Life and mass on the selected wormhole rows, without the dialog.\n function selectionActions() {\n var $rows = $(\"#sigTable tbody tr.selected\");\n if (!$rows.length || !tripwire.signaturePayload) { return []; }\n var whs = $rows.map(function() { var w = tripwire.signaturePayload.wormholeForSignature($(this).data(\"id\")); return w ? w.id : null; }).get();\n if (!whs.length) { return []; }\n var set = function(field, value, label) {\n return {\n id: \"sel-\" + field + \"-\" + value, label: label + (whs.length > 1 ? \" (\" + whs.length + \" wormholes)\" : \"\"), group: \"Selected wormhole\",\n enabled: function() { return true; },\n // The same sequence as the inline editor: build the payload, send\n // it, and record the undo entry only once the server accepts it.\n perform: function() {\n var systemID = viewingSystemID;\n whs.forEach(function(id) {\n var c = {}; c[field] = value;\n var built = tripwire.signaturePayload.changeWormhole(id, c);\n if (!built) { return; }\n tripwire.refresh(\"refresh\", built.payload, function(data) {\n if (data && data.resultSet && data.resultSet[0] && data.resultSet[0].result == true) {\n tripwire.signaturePayload.recordUndo(systemID, \"update\", built.undo);\n }\n });\n });\n }\n };\n };\n return [set(\"life\", \"stable\", \"Life: stable\"), set(\"life\", \"critical\", \"Life: end of life\"),\n set(\"mass\", \"stable\", \"Mass: stable\"), set(\"mass\", \"destab\", \"Mass: destabilised\"), set(\"mass\", \"critical\", \"Mass: critical\")];\n }\n\n return {\n actions: ACTIONS,\n panelActions: panelActions,\n chainTabActions: chainTabActions,\n maskActions: maskActions,\n selectionActions: selectionActions,\n bindings: KEY_BINDINGS,\n systemActions: systemActions,\n isTyping: isTyping\n };\n})();\n","// The mask menu closes when you click anywhere else, or press Escape.\n$(document).on(\"click\", function(e) {\n\tvar menu = document.getElementById(\"mask-menu\");\n\tif (!menu || menu.style.display === \"none\") return;\n\tif ($(e.target).closest(\"#mask-menu, #mask-menu-link\").length) return;\n\tmenu.style.display = \"none\";\n});\n$(document).on(\"keydown\", function(e) {\n\tif (e.key === \"Escape\") {\n\t\tvar menu = document.getElementById(\"mask-menu\");\n\t\tif (menu && menu.style.display !== \"none\") menu.style.display = \"none\";\n\t}\n});\n","/** Functions for rendering things relating to masks */\nconst maskRendering = new function() { \n\t/** Render a mask, as returned from masks.php */\n\tthis.renderMask = function(mask) {\n\t\tconst icons = { global: 'eye', character: 'user', personal: 'user', corporate: 'star', alliance: 'star' };\n\n\t\treturn ''\n\t\t\t+ ''\n\t\t\t+ mask.label\n\t\t\t+ '';\n\t}\n\t\n\tthis.update = function(masks, newActive) {\n\t\tconst activeMask = masks.find(x => newActive !== undefined ? x.mask === newActive : x.active);\n\t\tdocument.getElementById('mask').innerHTML = maskRendering.renderMask(activeMask);\n\t\tconst list = document.getElementById('mask-menu-mask-list');\n\t\tlist.innerHTML = '';\n\t\tmasks.filter(m => m.owner || (m.joined || m.joinedBy == 'alliance') || m == activeMask).map(m => {\n\t\t\tconst a = document.createElement('a');\n\t\t\ta.href = '#';\n\t\t\ta.innerHTML = this.renderMask(m);\n\t\t\tif(m === activeMask) { a.className = 'active'; }\n\t\t\ta.addEventListener('click', e => {\n\t\t\t\tmaskFunctions.updateActiveMask(m.mask, () => document.getElementById('mask-menu').style.display = 'none');\n\t\t\t});\n\t\t\tlist.appendChild(a);\n\t\t});\n\t}\n};","// Model and data binding for mass related UI\ntripwire.massOptions = {\n\thiggs: false,\n\tprop: false\n}\n\t\ntripwire.resetMassOptions = function() {\n\t$(\"#hot-jump\").removeClass(\"active\");\n\ttripwire.massOptions.prop = false;\t\t\n\t$(\"#higgs-jump\").removeClass(\"active\");\n\ttripwire.massOptions.higgs = false;\n};\n\n$(\"#hot-jump\").click(function() {\n\tif ($(this).hasClass(\"active\")) {\t\t\n\t\t$(this).removeClass(\"active\");\n\t\ttripwire.massOptions.prop = false;\n\t} else {\n\t\t$(this).addClass(\"active\");\n\t\ttripwire.massOptions.prop = true;\n\t}\n});\n\n$(\"#higgs-jump\").click(function() {\n\tif ($(this).hasClass(\"active\")) {\n\t\t$(this).removeClass(\"active\");\n\t\ttripwire.massOptions.higgs = false;\n\t} else {\n\t\t$(this).addClass(\"active\");\n\t\ttripwire.massOptions.higgs = true;\n\t}\n});\n","// Panel visibility menu, on the topbar's layout control.\n//\n// That control used to arm gridster's drag-and-resize. The desktop layout is a\n// CSS grid now, so there is nothing to drag -- but \"which panels do I want\" is\n// still a real question, and the panel registry already answers it. The\n// control opens that instead of doing nothing.\n\n(function() {\n\tfunction close() { $(\"#panel-menu\").remove(); $(document).off(\"mousedown.panelMenu\"); }\n\n\tfunction open($btn) {\n\t\tclose();\n\t\tif (!tripwire.panels) { return; }\n\n\t\tvar $menu = $('
    ');\n\n\t\ttripwire.panels.all().forEach(function(p) {\n\t\t\tvar on = tripwire.panels.isVisible(p.id);\n\t\t\t$('')\n\t\t\t\t.attr(\"aria-checked\", on ? \"true\" : \"false\")\n\t\t\t\t.append($('').text(on ? \"✓\" : \"\"))\n\t\t\t\t.append($(\"\").text(p.title))\n\t\t\t\t.on(\"click\", function(e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\ttripwire.panels.toggle(p.id);\n\t\t\t\t\topen($btn); // re-render so the ticks follow\n\t\t\t\t})\n\t\t\t\t.appendTo($menu);\n\t\t});\n\n\t\t$(\"body\").append($menu);\n\n\t\tvar r = $btn[0].getBoundingClientRect();\n\t\t$menu.css({\n\t\t\ttop: Math.round(r.bottom + 4) + \"px\",\n\t\t\t// keep it on screen when the control sits near the right edge\n\t\t\tleft: Math.round(Math.min(r.left, window.innerWidth - $menu.outerWidth() - 8)) + \"px\"\n\t\t});\n\n\t\tsetTimeout(function() {\n\t\t\t$(document).on(\"mousedown.panelMenu\", function(e) {\n\t\t\t\tif (!$(e.target).closest(\"#panel-menu, #layout\").length) { close(); }\n\t\t\t});\n\t\t}, 0);\n\t}\n\n\t$(function() {\n\t\t$(\"#layout\").attr(\"data-tooltip\", \"Show or hide panels\").on(\"click\", function(e) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tif ($(\"#panel-menu\").length) { close(); } else { open($(this)); }\n\t\t});\n\t});\n})();\n","// The panel registry.\n//\n// Tripwire's four panels were declared only by their markup in tripwire.php,\n// and the layout code found them by hard-coded id. This is the one place that\n// says what panels exist, so adding one is a row here plus its markup, and the\n// palette, the titles and the show/hide controls all follow from it.\n//\n// The grid itself already worked: gridster drags, resizes, serialises into\n// options.grid and is restored in options.js before init. What was missing was\n// a declaration, a way to hide a panel you don't use, and any visible sign\n// that these are cards at all.\n\ntripwire.panels = (function() {\n var PANELS = [\n {id: \"infoWidget\", title: \"System\", defaultVisible: true},\n {id: \"signaturesWidget\", title: \"Signatures\", defaultVisible: true},\n {id: \"notesWidget\", title: \"Notes\", defaultVisible: true},\n {id: \"chainWidget\", title: \"Chain\", defaultVisible: true}\n ];\n\n function def(id) {\n for (var i = 0; i < PANELS.length; i++) {\n if (PANELS[i].id === id) { return PANELS[i]; }\n }\n return null;\n }\n\n function store() {\n if (!options.panels) { options.panels = {}; }\n return options.panels;\n }\n\n function isVisible(id) {\n var saved = store();\n if (Object.prototype.hasOwnProperty.call(saved, id)) { return !!saved[id]; }\n var p = def(id);\n return !p || p.defaultVisible !== false;\n }\n\n // Order among the top row. The chain spans the full width of the second\n // grid row (grid-column: 1 / -1), so it always sorts last; the other three\n // take the saved order, or declaration order if none. CSS grid honours\n // `order` on its items, so no markup moves.\n function order() {\n var saved = store().order;\n var ids = PANELS.map(function(p) { return p.id; });\n if (!Array.isArray(saved)) { return ids; }\n var known = saved.filter(function(id) { return ids.indexOf(id) > -1; });\n ids.forEach(function(id) { if (known.indexOf(id) < 0) { known.push(id); } });\n return known;\n }\n\n function move(id, dir) {\n var ids = order().filter(function(x) { return x !== \"chainWidget\"; });\n var i = ids.indexOf(id);\n var j = i + dir;\n if (i < 0 || j < 0 || j >= ids.length) { return; }\n ids.splice(i, 1); ids.splice(j, 0, id);\n ids.push(\"chainWidget\");\n store().order = ids;\n apply();\n options.save();\n }\n\n function apply() {\n var ids = order();\n PANELS.forEach(function(p) {\n var $w = $(\"#\" + p.id);\n $w.toggleClass(\"panel-hidden\", !isVisible(p.id));\n $w.css(\"order\", p.id === \"chainWidget\" ? 99 : ids.indexOf(p.id));\n });\n }\n\n function setVisible(id, on) {\n store()[id] = !!on;\n apply();\n options.save();\n }\n\n function toggle(id) { setVisible(id, !isVisible(id)); }\n\n // Give each panel a titled header so it reads as a card rather than an\n // unlabelled box, and a control to put it away. Runs once; the title is\n // prepended into the existing .controls bar so no markup moves.\n function decorate() {\n PANELS.forEach(function(p) {\n var $w = $(\"#\" + p.id);\n if (!$w.length) { return; }\n var $controls = $w.children(\".controls\").first();\n if (!$controls.length || $controls.children(\".panel-title\").length) { return; }\n\n $controls.prepend($('').text(p.title));\n\n $('×')\n .on(\"click keydown\", function(e) {\n if (e.type === \"keydown\" && e.key !== \"Enter\" && e.key !== \" \") { return; }\n e.preventDefault();\n setVisible(p.id, false);\n })\n .appendTo($controls);\n });\n }\n\n $(function() {\n decorate();\n apply();\n });\n\n return {\n all: function() { return PANELS.slice(); },\n isVisible: isVisible,\n setVisible: setVisible,\n toggle: toggle,\n order: order,\n move: move,\n apply: apply\n };\n})();\n","// A visible way in for the tool's main loop.\n//\n// Pasting probe-scanner results has always been the primary way signatures\n// get into Tripwire, and it has never had a control on screen -- Ctrl-V with\n// nothing focused. New corp members find it in the tutorial or not at all,\n// and on a tablet there is no Ctrl-V to find.\n//\n// The button reads the clipboard directly where the browser allows it (a\n// user gesture is enough in Chromium; Firefox and Safari prompt or refuse),\n// and otherwise falls back to the existing hidden textarea and asks for the\n// keystroke. Either way the text ends up in the same parsePaste path the\n// keystroke uses, so the two routes cannot drift.\n\nvar __tripwirePasteIngest;\n(function() {\n\tfunction ingest(text) {\n\t\tif (!text || !text.trim()) {\n\t\t\tNotify.trigger(\"Nothing on the clipboard looked like scanner results.\");\n\t\t\treturn;\n\t\t}\n\t\tNotify.trigger(\"Paste detected
    (Click to delete missing sigs)\");\n\t\t$(\"#fullPaste\").data(\"paste\", text);\n\t\ttripwire.pasteSignatures.parsePaste(text);\n\t}\n\n\t__tripwirePasteIngest = ingest;\n\n\tfunction fallback() {\n\t\t$(\"#clipboard\").focus();\n\t\tNotify.trigger(\"Press Ctrl-V (or ⌘V) now to paste your scan results.\");\n\t}\n\n\t$(function() {\n\t\t$(document).on(\"click\", \"#paste-signatures\", function(e) {\n\t\t\te.preventDefault();\n\t\t\tif (navigator.clipboard && navigator.clipboard.readText) {\n\t\t\t\tnavigator.clipboard.readText().then(ingest, fallback);\n\t\t\t} else {\n\t\t\t\tfallback();\n\t\t\t}\n\t\t});\n\t});\n})();\n\n// Paste from anywhere.\n//\n// paste.js only listens on a hidden textarea it focuses when Ctrl-V is\n// pressed with nothing else focused. Click the system name (which opens\n// search), or the palette, or any field, and focus is in an input -- so the\n// keystroke pastes there and the scan never reaches the parser. That is\n// \"I can't paste sigs\" from the user's side of the screen.\n//\n// If what is being pasted looks like probe-scanner output -- tab-separated\n// rows starting with a signature id -- it is a scan wherever it lands. The\n// exceptions are places where a person is genuinely editing text: the\n// signature dialog, the notes editor, and settings.\n(function() {\n\tvar SCAN = /^[A-Z]{3}-\\d{3}\\t/m;\n\tdocument.addEventListener(\"paste\", function(e) {\n\t\tvar t = e.target;\n\t\tif (t && t.closest && t.closest(\"#dialog-signature, .rte, #dialog-options, #clipboard\")) { return; }\n\t\tvar cb = e.clipboardData; if (!cb) { return; }\n\t\tvar text = cb.getData(\"text/plain\") || \"\";\n\t\tif (!SCAN.test(text)) { return; }\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tif (t && t.blur) { t.blur(); }\n\t\t__tripwirePasteIngest(text);\n\t}, true);\n})();\n","// Install on a phone. Chrome and Edge raise beforeinstallprompt when the\n// manifest and service worker are in place; iOS Safari never does, so there\n// the tip says where Add to Home Screen lives. The tip appears only on a\n// phone-width screen, only outside an installed app, and only until it is\n// dismissed once.\n(function() {\n\tvar KEY = \"tripwire.install.dismissed\";\n\tvar deferred = null;\n\n\tif (\"serviceWorker\" in navigator) {\n\t\tnavigator.serviceWorker.register(\"/sw.js\").catch(function(err) {\n\t\t\t// Installability depends on this; a silent failure would look like\n\t\t\t// a phone that simply never offers to install.\n\t\t\tconsole.warn(\"Tripwire: service worker not registered -\", err && err.message);\n\t\t});\n\t}\n\n\tfunction standalone() {\n\t\treturn (window.matchMedia && matchMedia(\"(display-mode: standalone)\").matches) || navigator.standalone === true;\n\t}\n\tfunction phone() { return window.matchMedia && matchMedia(\"(max-width: 767px)\").matches; }\n\tfunction dismissed() { try { return localStorage.getItem(KEY) === \"1\"; } catch (e) { return false; } }\n\tfunction dismiss() { try { localStorage.setItem(KEY, \"1\"); } catch (e) {} $(\"#install-tip\").remove(); }\n\tfunction ios() { return /iP(hone|ad|od)/.test(navigator.userAgent) && !window.MSStream; }\n\n\tfunction show(mode) {\n\t\tif ($(\"#install-tip\").length || standalone() || dismissed() || !phone()) return;\n\t\tvar text = mode === \"prompt\"\n\t\t\t? \"Install Tripwire on this phone\"\n\t\t\t: \"Install: tap Share, then Add to Home Screen\";\n\t\tvar $tip = $('
    ');\n\t\t$tip.find(\".tip-text\").text(text);\n\t\tif (mode === \"prompt\") {\n\t\t\t$('').on(\"click\", function() {\n\t\t\t\tif (!deferred) return;\n\t\t\t\tdeferred.prompt();\n\t\t\t\tdeferred.userChoice.then(function() { deferred = null; dismiss(); });\n\t\t\t}).appendTo($tip);\n\t\t}\n\t\t$('').on(\"click\", dismiss).appendTo($tip);\n\t\t$(\"#topbar\").after($tip);\n\t}\n\n\twindow.addEventListener(\"beforeinstallprompt\", function(e) {\n\t\te.preventDefault();\n\t\tdeferred = e;\n\t\tshow(\"prompt\");\n\t});\n\twindow.addEventListener(\"appinstalled\", dismiss);\n\n\t$(function() {\n\t\tif (ios() && !standalone()) show(\"ios\");\n\t});\n\n\t// For checking the tip without a phone: tripwireInstallTip(\"prompt\"|\"ios\").\n\twindow.tripwireInstallTip = function(mode) { $(\"#install-tip\").remove(); try { localStorage.removeItem(KEY); } catch (e) {} show(mode || \"ios\"); };\n})();\n","// HTML sanitiser for user-authored content (system notes).\n//\n// Replaces a regex-based filter that was bypassable. The old one stripped\n// disallowed tags and rewrote `on\\w+=` to neutralise handlers, but the pattern\n// required the equals sign to touch the attribute name -- so\n//\n// \n//\n// passed through untouched and executed on render, with no click, in the\n// session of every corp member who opened the system. `javascript:` in an href\n// was not filtered at all.\n//\n// Regexes cannot sanitise HTML: the parser accepts whitespace, newlines and\n// entity encodings the pattern does not anticipate. This parses the input with\n// the browser's own parser -- in an inert document, so nothing loads or\n// executes while inspecting it -- then keeps only allowlisted elements and\n// attributes and rebuilds the markup.\n\nvar sanitiseHtml = (function() {\n\t// Formatting CKEditor produces, and nothing that can navigate or execute.\n\tvar ALLOWED_TAGS = {\n\t\tb:1, i:1, em:1, strong:1, u:1, s:1, strike:1, sub:1, sup:1,\n\t\tfont:1, span:1, p:1, br:1, hr:1, div:1, pre:1, blockquote:1,\n\t\th1:1, h2:1, h3:1, h4:1, h5:1, h6:1,\n\t\tul:1, ol:1, li:1,\n\t\ttable:1, thead:1, tbody:1, tr:1, td:1, th:1,\n\t\ta:1, img:1\n\t};\n\n\t// Per-tag attribute allowlist. Anything not named here is dropped, which is\n\t// what makes an unanticipated handler (onerror, onpointerover, on-anything)\n\t// impossible rather than merely unmatched.\n\tvar ALLOWED_ATTRS = {\n\t\t'*': {style: 1, title: 1, dir: 1},\n\t\ta: {href: 1, target: 1, rel: 1},\n\t\tfont:{color: 1, size: 1, face: 1},\n\t\ttd: {colspan: 1, rowspan: 1},\n\t\tth: {colspan: 1, rowspan: 1},\n\t\t// img was in the previous allowlist, so it stays -- dropping it would\n\t\t// silently strip pictures out of notes people already wrote. Worth\n\t\t// knowing: an image from an arbitrary host reveals the viewer's IP to\n\t\t// that host every time the note is opened. If that matters to the corp,\n\t\t// remove img here and the concern goes with it.\n\t\timg: {src: 1, alt: 1, width: 1, height: 1}\n\t};\n\n\t// Schemes a link may use. Relative URLs are allowed and everything else --\n\t// javascript:, data:, vbscript: -- is not.\n\tvar SAFE_URL = /^(?:https?:|mailto:|\\/|#|\\.{0,2}\\/)/i;\n\n\t// style is kept because notes use colour, but anything that can fetch or\n\t// execute from within CSS is removed.\n\tvar UNSAFE_CSS = /(?:expression|javascript:|vbscript:|url\\s*\\(|@import|behaviou?r\\s*:|-moz-binding)/i;\n\n\tfunction cleanStyle(value) {\n\t\treturn UNSAFE_CSS.test(value) ? null : value;\n\t}\n\n\tfunction cleanNode(node) {\n\t\t// Comments can hide conditional markup; drop them.\n\t\tif (node.nodeType === 8) { node.remove(); return; }\n\t\tif (node.nodeType !== 1) { return; }\n\n\t\tvar tag = node.tagName.toLowerCase();\n\n\t\tif (!ALLOWED_TAGS[tag]) {\n\t\t\t// Keep the text, lose the element -- so stripping