Squashed commit of the following: commit 25bc026dc5e0177cd3aa81c11cdace091eb68f36 Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Jun 17 08:16:56 2013 +0100 bump version for new release commit d4042f6e8db42c7a85df4dcf9690fec72ad2db69 Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 18:27:52 2013 +0100 Job Queue page play/pause/refresh controls commit b6c9152516d7800409b7a73c5d0cdce6dd405492 Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 17:50:06 2013 +0100 limit size of job queue table commit ac9e5feb8b774071fcf4423dd862dced74dee9e6 Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 17:47:55 2013 +0100 update bugs link commit 9c0fb0e9aedc6297f4462c3cf88343f6d0df40b6 Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 17:41:29 2013 +0100 update MANIFEST commit 7aaa2fff91ed2b1839bdbb79081d90ad3e144f47 Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 17:40:35 2013 +0100 Fix Plack middleware config for Expiry commit 313e2cf014cf0da7cf85074e390ad394b28bf42d Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 17:23:00 2013 +0100 Support for delegated authentication with REMOTE_USER and X-REMOTE_USER commit 85e21f2bf296c4a5ca6b5afb5091694e56e3031f Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 14:24:08 2013 +0100 Add tooltip showing the job queue item logged status message commit 9b14f53ebed51eb46ea278807cfe8a2fbd28743c Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 13:43:26 2013 +0100 Increase default frequency of job queue polling to 2 seconds commit 6ba46818d8ab2100c652c8eb8e98bc6f5a54e273 Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 12:57:43 2013 +0100 workaround for https://github.com/PerlDancer/Dancer/issues/935 commit c7a2d8a9d45716959bedbbb8db4cdd82a5950642 Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 16 11:54:18 2013 +0100 Fix hyperlinks when running behind reverse proxy on custom path commit 0620efa404bc25cb0a9ada5aa6f1b092d5c4d482 Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 15 18:31:19 2013 +0100 update deploy docs commit 857b1c7aa0fe832f8948349eda5211eb38ba3099 Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 15 18:16:50 2013 +0100 add note about compiler dependency commit 02a2ad6b2c52db9fbc1e24bc8888f658dc7084ad Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 15 17:44:29 2013 +0100 sort vlans, macs, ips in device port view commit 097bad77310728a98b261a2cfca4de7ab50be94b Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 15 16:32:20 2013 +0100 hint when calling web in fg without starman commit 6425d89ddb2b56129c610482134482d8f9455d40 Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 15 15:53:26 2013 +0100 macwalk and arpwalk refactored commit d527b9d05addc82fb38c84f6fea1aa5818fc68d5 Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Jun 13 22:27:34 2013 +0100 implement is_macsuckable and is_arpnipable commit 7af10ed313e25f5d99a22b53ba438225c2259069 Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Jun 13 22:17:39 2013 +0100 version bump commit 8ace3bf8fa48cf3e14bdf86fad5a4862aad50a4b Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Jun 13 22:14:05 2013 +0100 tidy up user menu commit e6eef605c248471dbfe7ec62cd04d73d653523ca Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Jun 13 22:02:52 2013 +0100 Add discoverall, macwalk, arpwalk items to the Admin Tasks menu commit 2631fabd1eccd8a3971e4762eebe57f406623bee Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Jun 13 21:21:50 2013 +0100 remove length() which only became sane in 5.12 commit a7b7169070a58685cacde26a3b6d462e74be9928 Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Jun 13 19:07:56 2013 +0100 Use DBIx::Class new collapsed query support when we can commit 77cddab8ba7033ccb1ecae257bafa4eef8f99f47 Author: Oliver Gorwits <oliver@cpan.org> Date: Wed Jun 12 17:26:47 2013 +0100 Database config simplified to only four essential settings commit 6ed0802bf2ab0fd898ce6945451b8ca6566ae551 Author: Oliver Gorwits <oliver@cpan.org> Date: Wed Jun 12 13:03:20 2013 +0100 Ask to set up guest user for Admin/Port Control rights in deploy script
		
			
				
	
	
		
			516 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
			
		
		
	
	
			516 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* style common to all pages in the site */
 | |
| 
 | |
| /* for the fixed navbar make sure content stops short of page top*/
 | |
| body {
 | |
|   padding-top: 50px;
 | |
| }
 | |
| 
 | |
| /* magnifying glass icon for search box */
 | |
| .nd_navbar-icon {
 | |
|   vertical-align: sub;
 | |
|   cursor: pointer;
 | |
| }
 | |
| 
 | |
| /* for the "logged in as..." text */
 | |
| .nd_navbar-text {
 | |
|   color: #666;
 | |
|   padding-top: 11px;
 | |
| }
 | |
| 
 | |
| /* on both main content and sidebar, default is hidden */
 | |
| .tab-content {
 | |
|   overflow: visible;
 | |
| }
 | |
| 
 | |
| /* ajax results should fill all available */
 | |
| .tab-content table {
 | |
|   width: 100%;
 | |
| }
 | |
| 
 | |
| /* jquery ui autocomplete scrollable */
 | |
| .ui-autocomplete {
 | |
|   max-height: 200px;
 | |
|   overflow-y: auto;
 | |
|   overflow-x: hidden;
 | |
| }
 | |
| 
 | |
| /* fake looks for form submit buttons embedded in bootstrap dropdowns */
 | |
| .nd_btn-link {
 | |
|   display: block;
 | |
|   padding: 2px 20px;
 | |
|   clear: both;
 | |
|   font-weight: normal;
 | |
|   line-height: 18px;
 | |
|   color: #333333;
 | |
|   white-space: nowrap;
 | |
|   text-decoration: none;
 | |
|   margin-top: 0px !important;
 | |
|   width: 100%;
 | |
|   text-align: left;
 | |
|   margin-left: -1px;
 | |
| }
 | |
| 
 | |
| .nd_btn-link:hover, .nd_btn-link:focus {
 | |
|   text-decoration: none;
 | |
|   color: #ffffff;
 | |
|   background-color: #0081c2;
 | |
|   background-repeat: repeat-x;
 | |
|   text-shadow: none;
 | |
| }
 | |
| 
 | |
| /* to be added to qtip-bootstrap class */
 | |
| .nd_qtip-unconstrained {
 | |
|   min-width: none;
 | |
|   max-width: none;
 | |
| }
 | |
| 
 | |
| .qtip-content {
 | |
|   padding-bottom: 0px;
 | |
|   line-height: 8px;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* styles to adjust the hero box used for homepage + login */
 | |
| 
 | |
| /* space between hero box and navbar */
 | |
| .nd_hero-row {
 | |
|   margin-top: 50px;
 | |
| }
 | |
| 
 | |
| /* alter proportions of hero unit to make it "tighter" on content */
 | |
| .hero-unit {
 | |
|   padding: 30px 60px 40px 90px;
 | |
| }
 | |
| 
 | |
| /* push user/pass/login form down+away from the Netdisco banner text */
 | |
| .nd_login-form {
 | |
|   margin-top: 15px;
 | |
|   margin-bottom: 0px;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* styles for device inventory */
 | |
| 
 | |
| .nd_inventory-table-head {
 | |
|   text-align: center;
 | |
|   color: lightSlateGray;
 | |
|   margin-top: 6px;
 | |
|   margin-bottom: 3px;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* styles for links in results tables */
 | |
| 
 | |
| /* make the whole cell become a hyperlink in results table */
 | |
| .nd_linkcell {
 | |
|   display: block;
 | |
|   padding: 0px;
 | |
|   height: 100%;
 | |
| }
 | |
| 
 | |
| /* still a link, but styled like normal text */
 | |
| .nd_stealth-link {
 | |
|   text-decoration: none !important;
 | |
|   color: #404040;
 | |
| }
 | |
| 
 | |
| /* nudge cell content to the right when port_control controls are enabled */
 | |
| .nd_editable-cell > .nd_this-port-only {
 | |
|   margin-left: 18px;
 | |
| }
 | |
| .nd_editable-cell > .nd_editable-cell-content {
 | |
|   margin-left: 18px;
 | |
| }
 | |
| .table .nd_nudge-for-icon {
 | |
|   padding-left: 25px;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* styles to position table cell content */
 | |
| 
 | |
| .table td {
 | |
|   vertical-align: baseline;
 | |
| }
 | |
| 
 | |
| .table .nd_center-cell {
 | |
|   text-align: center;
 | |
| }
 | |
| 
 | |
| /* fix layout of form fields inside the (topology) table */
 | |
| td div.input-append {
 | |
|   margin-bottom: 0px;
 | |
| }
 | |
| 
 | |
| /* admin buttons in the device details view */
 | |
| td > form.nd_inline-form {
 | |
|   margin-bottom: 2px;
 | |
| }
 | |
| 
 | |
| /* fix layout of form fields inside the (pseudo devices) table */
 | |
| .nd_center-cell input {
 | |
|   margin-bottom: 0px;
 | |
| }
 | |
| 
 | |
| /* with two forms inside one cell, make the submit buttons side-by-side */
 | |
| .nd_inline-form {
 | |
|   display: inline;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* styles for "tabs" and surrounding content */
 | |
| 
 | |
| 
 | |
| /* add a small bottom margin (gutter) below all pages */
 | |
| #nd_search-results {
 | |
|   margin-bottom: 10px;
 | |
| }
 | |
| 
 | |
| /* for any label which we want to appear alongside tabs, floated to the right */
 | |
| #nd_device-name {
 | |
|   float: right;
 | |
|   margin-bottom: 0px;
 | |
|   margin-top: 9px;
 | |
|   font-weight: bold;
 | |
|   color: #6D5720;
 | |
| }
 | |
| 
 | |
| /* for the job control admin page play/pause links */
 | |
| #nd_countdown-refresh:hover, #nd_countdown-control:hover {
 | |
|   text-decoration: none;
 | |
| }
 | |
| 
 | |
| /* when there's only one tab (report, task etc) change the text color */
 | |
| .nd_single-tab {
 | |
|   color: rgb(187,112,0) !important;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* style for port_control controls */
 | |
| 
 | |
| /* edit icon in details tab is in the label (not content) cell so nudge to RHS*/
 | |
| .nd_device-details-edit {
 | |
|   float: right !important;
 | |
|   font-size: 14px;
 | |
| }
 | |
| 
 | |
| /* port admin up/down control */
 | |
| .nd_edit-icon, .nd_hand-icon {
 | |
|   cursor: pointer;
 | |
|   float: left;
 | |
|   display: none;
 | |
|   margin-top: 3px;
 | |
| }
 | |
| 
 | |
| /* port power control */
 | |
| .nd_power-icon {
 | |
|   cursor: pointer;
 | |
| }
 | |
| 
 | |
| /* the port power icon, whether it's on or off */
 | |
| .icon-off {
 | |
|   vertical-align: middle;
 | |
|   color: darkRed;
 | |
| }
 | |
| 
 | |
| /* change color of icon from default of red (which is OK for power-off) */
 | |
| .nd_power-on {
 | |
|   color: darkGreen;
 | |
| }
 | |
| 
 | |
| /* style of editable content in any table - yellow background */
 | |
| [contenteditable]:focus {
 | |
|   background: #FFFFD3 !important;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* styles for collapsing lists - sidebar or main table cell content */
 | |
| 
 | |
| /* sidebar collapser is clickable and deep grey */
 | |
| .nd_collapser {
 | |
|   cursor: pointer;
 | |
|   color: #0088CC;
 | |
| }
 | |
| 
 | |
| /* vlans collapser also clickable and deep grey but with no link styling */
 | |
| .nd_collapse-vlans {
 | |
|   cursor: pointer;
 | |
|   color: #0088CC;
 | |
|   text-decoration: none !important;
 | |
| }
 | |
| 
 | |
| /* set default state of collapsible lists as collapsed (hidden) */
 | |
| .nd_collapse-pre-hidden {
 | |
|   display: none;
 | |
| }
 | |
| 
 | |
| /* for the tagged vlans total when hiding the full list */
 | |
| .nd_vlan-total {
 | |
|   float: right;
 | |
| }
 | |
| 
 | |
| /* little up/down chevron to the right of some collapsed list */
 | |
| .nd_arrow-up-down-right {
 | |
|   float: right;
 | |
|   margin-top: 1px;
 | |
|   margin-right: 1px;
 | |
|   color: #555;
 | |
| }
 | |
| 
 | |
| /* little up arrow to the left of a label for collapsed list */
 | |
| .nd_arrow-up-down-left {
 | |
|   float: left;
 | |
|   margin-right: 6px;
 | |
|   color: #555;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* styles for sidebar placement and sizing */
 | |
| 
 | |
| /* make the sidebar fixed on the screen */
 | |
| .container-fluid > .nd_sidebar {
 | |
|   position: absolute;
 | |
|   right: 20px;
 | |
|   width: 200px;
 | |
|   left: auto;
 | |
| }
 | |
| 
 | |
| /* nudge content in the sidebar closer to the left */
 | |
| .nd_sidebar-form {
 | |
|   padding-left: 0px;
 | |
|   margin-top: -9px;
 | |
|   margin-bottom: 0px;
 | |
| }
 | |
| 
 | |
| /* reduce padding at the bottom of the sidebar content */
 | |
| .container-fluid > .nd_sidebar > .well {
 | |
|   padding-bottom: 15px;
 | |
| }
 | |
| 
 | |
| /* pull tab content away from the sidebar */
 | |
| .container-fluid > .content {
 | |
|   margin-right: 215px;
 | |
|   margin-left: 0px;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* styles for sidebar position controls (collapse, pin) */
 | |
| 
 | |
| .nd_sidebar-pinned {
 | |
|   position: fixed !important;
 | |
| }
 | |
| 
 | |
| .nd_sidebar-pin-clicked {
 | |
|   color: rgba(255,0,0,0.8) !important;
 | |
| }
 | |
| 
 | |
| .nd_sidebar-pin {
 | |
|   float: left;
 | |
|   margin-top: 6px;
 | |
|   margin-left: -16px;
 | |
|   font-size: 15px;
 | |
|   color: #555;
 | |
|   cursor: pointer;
 | |
| }
 | |
| 
 | |
| #nd_sidebar-toggle-img-in {
 | |
|   float: left;
 | |
|   margin-top: -9px;
 | |
|   margin-left: -16px;
 | |
|   font-size: 15px;
 | |
|   color: #555;
 | |
|   cursor: pointer;
 | |
| }
 | |
| 
 | |
| #nd_sidebar-toggle-img-out {
 | |
|   position: fixed;
 | |
|   top: 60px;
 | |
|   right: 7px;
 | |
|   z-index: 1;
 | |
|   color: #555;
 | |
|   cursor: pointer;
 | |
|   display: none;
 | |
| }
 | |
| 
 | |
| /* question mark image with popover for netmap instructions */
 | |
| #nd_netmap-help {
 | |
|   position: fixed;
 | |
|   top: 160px;
 | |
|   right: 7px;
 | |
|   z-index: 1;
 | |
|   color: #555;
 | |
|   font-size: 20px;
 | |
|   cursor: pointer;
 | |
|   display: none;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* style customization for many items which appear in the sidebar */
 | |
| 
 | |
| .nd_sidebar-title {
 | |
|   margin-left: 10px;
 | |
|   margin-top: 6px;
 | |
|   margin-bottom: 12px;
 | |
| }
 | |
| 
 | |
| /* fixup for prepended checkbox in sidebar */
 | |
| .nd_searchcheckbox {
 | |
|   width: 123px;
 | |
|   padding-left: 8px;
 | |
|   cursor: pointer;
 | |
| }
 | |
| 
 | |
| /* fixup for prepended checkbox in sidebar */
 | |
| .nd_sidebar .input-prepend {
 | |
|   margin-left: -2px;
 | |
|   margin-bottom: 0px;
 | |
| }
 | |
| 
 | |
| /* for some reason bootstrap 2.1.0 displays add-on as block - no check supprt? */
 | |
| .nd_checkboxlabel {
 | |
|   display: inline;
 | |
| }
 | |
| 
 | |
| /* fixup for placing the Archived "A" inside the prepended checkbox */
 | |
| .nd_legendlabel {
 | |
|   float: right;
 | |
|   line-height: 1.2;
 | |
| }
 | |
| 
 | |
| /* placement of form field in sidebar */
 | |
| .nd_side-input {
 | |
|   margin-left: -3px;
 | |
|   width: 152px;
 | |
| }
 | |
| 
 | |
| /* placement of form field in sidebar */
 | |
| .nd_side-select {
 | |
|   margin-left: -3px;
 | |
|   width: 165px;
 | |
| }
 | |
| 
 | |
| /* nudge the port name/vlan filter over a little (as compared to nd_side-select) */
 | |
| #nd_port-query {
 | |
|   margin-left: 5px !important;
 | |
|   width: 152px;
 | |
| }
 | |
| 
 | |
| /* set the day/mon/year drop-down width */
 | |
| #nd_days-select {
 | |
|   margin-top: 4px;
 | |
|   width: 56px;
 | |
| }
 | |
| 
 | |
| /* set the day/mon/year drop-down width */
 | |
| #nd_age-select {
 | |
|   margin-top: 4px;
 | |
|   width: 95px;
 | |
| }
 | |
| 
 | |
| /* set the MAC format drop-down width */
 | |
| #nd_mac-format {
 | |
|   margin-top: 4px;
 | |
|   width: 154px;
 | |
| }
 | |
| 
 | |
| /* set the MAC format drop-down width */
 | |
| #nd_node-mac-format {
 | |
|   margin-left: -2px;
 | |
|   margin-top: 4px;
 | |
|   width: 165px;
 | |
| }
 | |
| 
 | |
| /* sidebar submit button width and spacing */
 | |
| .nd_sidebar button {
 | |
|   margin-top: 9px;
 | |
|   margin-left: -3px;
 | |
|   width: 165px;
 | |
| }
 | |
| 
 | |
| /* little icon inside of search input fields */
 | |
| .nd_field-clear-icon, .nd_field-copy-icon {
 | |
|   position: absolute;
 | |
|   margin-left: 140px;
 | |
|   margin-top: 5px;
 | |
|   z-index: 1;
 | |
|   padding: 0px;
 | |
|   cursor: pointer;
 | |
| }
 | |
| 
 | |
| /* little icon inside of search input fields */
 | |
| .nd_field-copy-icon {
 | |
|   color: #999;
 | |
| }
 | |
| 
 | |
| /* little icon inside of search input fields */
 | |
| .nd_field-clear-icon {
 | |
|   background-color: #A9DBA9;
 | |
|   color: #3A87AD;
 | |
| }
 | |
| 
 | |
|  /* same for the ports form, but the positioning is slightly different */
 | |
| #ports_form .nd_field-clear-icon {
 | |
|   margin-left: 149px;
 | |
|   margin-top: 5px;
 | |
| }
 | |
| 
 | |
| /* change bg color for form fields which are being used in a search */
 | |
| form .clearfix.success select {
 | |
|   background-color: #A9DBA9;
 | |
| }
 | |
| form .clearfix.success input {
 | |
|   background-color: #A9DBA9;
 | |
| }
 | |
| 
 | |
| /* when we use font-awesome icons, override the size */
 | |
| #nd_legend i {
 | |
|   width: 9px;
 | |
| }
 | |
| .table i {
 | |
|   width: 9px;
 | |
| }
 | |
| 
 | |
| /* bring sidebar items closer together */
 | |
| .nd_inputs-list label {
 | |
|   margin-bottom: 1px;
 | |
| }
 | |
| 
 | |
| /* compact icons for the sidebar legend */
 | |
| .nd_inputs-list i {
 | |
|   margin-right: 5px;
 | |
|   margin-left: 2px;
 | |
| }
 | |
| 
 | |
| /* nudge content closer to the header labels in the sidebar */
 | |
| .nd_inputs-list li:first-child {
 | |
|   padding-top: 3px !important;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 | |
| /* D3 SVG */
 | |
| 
 | |
| .node circle {
 | |
|   fill: #fff;
 | |
|   stroke: steelblue;
 | |
|   stroke-width: 1.5px;
 | |
| }
 | |
| 
 | |
| .node {
 | |
|   font: 10px sans-serif;
 | |
| }
 | |
| 
 | |
| .link {
 | |
|   fill: none;
 | |
|   stroke: #eee;
 | |
|   stroke-width: 1.5px;
 | |
| }
 | |
| 
 | |
| .neighbor {
 | |
|   fill: none;
 | |
|   stroke: #aaa;
 | |
|   stroke-width: 2px;
 | |
|   display: none;
 | |
| }
 | |
| 
 | |
| /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 |