
/* Drupal Layout Builder wrapper around the taxonomy visualization block.
   Scope this to the wrapper that contains this block so other _none layouts are unaffected. */
body ._none:has(.block-ictv-d3-taxonomy-visualization) {
   /* Center the widened wrapper relative to the viewport instead of the narrower parent column. */
   margin-left: 50%;
   transform: translateX(-50%);

   /* Make the wrapper wider than its parent, but keep it inside the browser viewport. */
   box-sizing: border-box;
   max-width: 96vw;
   width: calc(100% + 12rem);

   /* Put the visible border on this outer wrapper. */
   border: 2px solid black !important;
   border-left: 2px solid black !important;
   border-radius: 10px !important;
   box-shadow: none !important;
   padding: 0.0rem 1rem 0.75rem 1rem !important;
}

/* Let each Drupal/Layout Builder wrapper inside the widened parent fill the available width. */
body ._none:has(.block-ictv-d3-taxonomy-visualization) > .w-100,
body ._none:has(.block-ictv-d3-taxonomy-visualization) .layout-builder__layout,
body ._none:has(.block-ictv-d3-taxonomy-visualization) .col-12,
body ._none:has(.block-ictv-d3-taxonomy-visualization) .block-ictv-d3-taxonomy-visualization,
body ._none:has(.block-ictv-d3-taxonomy-visualization) .block-ictv-d3-taxonomy-visualization > .content {
   max-width: none;
   width: 100%;
}

/* The module container fills the bordered Drupal wrapper; the border is intentionally not here. */
#d3_taxonomy_vis_container {
   height: 100%;
   overflow: hidden;
   width: 100%;
}

/* Allow the module container to grow vertically when script.js expands tall initial trees. */
#d3_taxonomy_vis_container.taxonomy-panel-auto-height {
   height: auto;
   overflow: visible;
}

#d3_taxonomy_vis_container {

   /* Colors */
   --border-focus-color: #80bdff;
   --text-control-border-color: #ccc;

   /* Font sizes */
   --default-font-size: 0.9rem;

   /* Padding */
   --button-padding: 4px 12px;
   --text-control-padding: 4px 6px;
}

/*---------------------------------------------------------------------------------------------------------------- 
  The header panel 
----------------------------------------------------------------------------------------------------------------*/
#d3_taxonomy_vis_container .header-panel {
   align-items: center;
   box-sizing: border-box;
   display: flex;
   flex-flow: row wrap;
   gap: 0.5rem 0.9rem;
   justify-content: flex-start;
   margin-left: 0;
   width: 100%;
}

#d3_taxonomy_vis_container .header-panel .label {
   margin-right: 0.25rem;
   white-space: nowrap;
}

/* The MSL release control */
#d3_taxonomy_vis_container .header-panel .release-ctrl {
   border: 1px solid var(--text-control-border-color);
   border-radius: 4px;
   font-size: var(--default-font-size);
   max-width: 140px;
   padding: var(--text-control-padding); /*4px;*/
}
#d3_taxonomy_vis_container .header-panel .release-ctrl:focus {
   color: #495057;
   border-color: var(--border-focus-color);
   box-shadow: none;
   outline: 0;
}

#d3_taxonomy_vis_container .header-panel .font-size-panel {
   align-items: center;
   display: flex;
   flex: 1 1 36rem;
   flex-flow: row wrap;
   gap: 0.4rem 0.75rem;
   justify-content: flex-start;
   margin-left: 0;
   min-width: 0;
}
#d3_taxonomy_vis_container .font-size-panel.hide {
   display: none;
}
#d3_taxonomy_vis_container .font-size-panel.show {
   display: contents;
}

#d3_taxonomy_vis_container .header-panel .font-size-panel .control-group,
#d3_taxonomy_vis_container .header-panel .font-size-panel .button-group {
   align-items: center;
   display: flex;
   min-width: 0;
}

#d3_taxonomy_vis_container .header-panel .font-size-panel .control-group {
   flex: 0 1 12rem;
   flex-flow: row nowrap;
   gap: 0.25rem;
}

#d3_taxonomy_vis_container .header-panel .font-size-panel .button-group {
   flex: 0 1 auto;
   flex-flow: row wrap;
   gap: 0.3rem;
}

#d3_taxonomy_vis_container .header-panel .font-size-panel .button-group .screenshot-button,
#d3_taxonomy_vis_container .header-panel .font-size-panel .button-group .selectFormat {
   border-radius: 4px;
}

#d3_taxonomy_vis_container .header-panel .font-size-panel .button-group .expand-to-fit-btn,
#d3_taxonomy_vis_container .header-panel .font-size-panel .button-group .reset-view-btn {
   margin-right: 0;
}

#d3_taxonomy_vis_container .header-panel .paginate-toggle {
   align-items: center;
   cursor: pointer;
   display: inline-flex;
   gap: 0.35rem;
   margin-left: 1rem;
   white-space: nowrap;
}

#d3_taxonomy_vis_container .header-panel .paginate-ctrl {
   margin: 0;
}


/*----------------------------------------------------------------------------------------------------------------
  Sliders
----------------------------------------------------------------------------------------------------------------*/
#d3_taxonomy_vis_container .slider {
   margin: 0;
   max-width: 110px;
   width: 110px;
}

/*  slider track */
#d3_taxonomy_vis_container .slider::-webkit-slider-runnable-track {
   background-color: #d3d3d3;
   height: 5px;
   border-style: solid;
   border-width: 1px;
   border-color: gray;
   border-radius: 10px;
}

#d3_taxonomy_vis_container .slider::-moz-range-track {
   background-color: #d3d3d3;
   border-style: solid;
   border-width: 1px;
   border-color: gray;
   border-radius: 10px;
   height: 5px;
}

/*  Slider circle */
#d3_taxonomy_vis_container .slider::-webkit-slider-thumb {
   -webkit-appearance: none;
   appearance: none;
   background-color: #0062cc;
   border: none;
   cursor: pointer;
   height: 12px;
   position: relative;
   top: -6px;
   width: 12px;
}

#d3_taxonomy_vis_container .slider::-moz-range-thumb {
   background-color: #0062cc;
   border: none;
   cursor: pointer;
   height: 14px;
   position: relative;
   top: -6px;
   width: 14px;
}

#d3_taxonomy_vis_container .taxonomy-pan-slider {
   accent-color: #0062cc;
   margin: 0;
   opacity: 0.8;
   position: absolute;
   z-index: 5;
}

#d3_taxonomy_vis_container .taxonomy-pan-slider:disabled {
   opacity: 0.35;
}

#d3_taxonomy_vis_container .taxonomy-pan-slider-x {
   left: 24px;
   max-width: none;
   right: 44px;
   top: 8px;
   width: auto;
}

#d3_taxonomy_vis_container .taxonomy-pan-slider-y {
   bottom: 24px;
   height: auto;
   max-width: none;
   right: 8px;
   top: 40px;
   width: 16px;
   writing-mode: vertical-lr;
}


/*----------------------------------------------------------------------------------------------------------------
  The screenshot button and format list 
----------------------------------------------------------------------------------------------------------------*/
#d3_taxonomy_vis_container .screenshot-button {
   background-color: #0062cc;
   border-color: #005cbf;
   border-radius: 4px 0 0 4px;
   border: 1px solid transparent;
   color: #fff;
   cursor: pointer;
   display: inline-block;
   font-size: var(--default-font-size);
   padding: var(--button-padding);
   text-align: center;
   user-select: none;
   vertical-align: middle;
   white-space: nowrap;
   -webkit-user-select: none;
   -moz-user-select: none;
   -ms-user-select: none;
}
#d3_taxonomy_vis_container .reset-view-btn {
   border-radius: 4px;
}

#d3_taxonomy_vis_container .header-panel > .reset-view-btn {
   align-self: flex-start;
   background-color: #b42318;
   border-color: #991b1b;
   margin: 16px 0 0 auto;
}

#d3_taxonomy_vis_container .header-panel > .reset-view-btn:hover,
#d3_taxonomy_vis_container .header-panel > .reset-view-btn:focus {
   background-color: #991b1b;
   border-color: #7f1d1d;
   outline: 0;
}
#d3_taxonomy_vis_container .expand-to-fit-btn {
   margin-right: 5px;
   border-radius: 5px;
}
#d3_taxonomy_vis_container .screenshot-button i {
   margin-right: 0.1rem;
}
#d3_taxonomy_vis_container .selectFormat {
   border: 1px solid var(--text-control-border-color);
   border-radius: 0 4px 4px 0;
   font-size: var(--default-font-size);
   padding: 4px;
   width: 70px;
}
#d3_taxonomy_vis_container .selectFormat:focus {
   color: #495057;
   border-color: var(--border-focus-color);
   box-shadow: none;
   outline: 0;
}

/*----------------------------------------------------------------------------------------------------------------
  The search panel (searchPanel.js)
----------------------------------------------------------------------------------------------------------------*/
#d3_taxonomy_vis_container .header-panel .search-panel {
   flex: 0 1 22rem;
   margin-left: 0;
   min-width: 0;
   position: relative;
   top: 16px;
}

/* The search text, search button, and clear button */
#d3_taxonomy_vis_container .search-panel .search-controls {
   align-content: flex-start;
   border-collapse: separate;
   display: flex;
   flex-flow: row nowrap;
   justify-content: flex-start;
   margin: 0;
   min-width: 0;
}

#d3_taxonomy_vis_container .search-panel .search-input-wrapper {
   display: flex;
   flex: 1 1 12rem;
   min-width: 9rem;
   position: relative;
}

#d3_taxonomy_vis_container .search-panel .search-controls .search-text {
   background-color: #fff;
   background-image: none;
   border: 1px solid var(--text-control-border-color);
   border-radius: 4px 0 0 4px;
   /*box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);*/
   color: #555;
   flex: 1 1 auto;
   font-size: var(--default-font-size);
   margin: 0;
   min-width: 0;
   padding: 4px 2rem 4px 6px;
   vertical-align: middle;
   width: 100%;
}
#d3_taxonomy_vis_container .search-panel .search-text:focus {
   color: #495057;
   border-color: var(--border-focus-color);
   box-shadow: none;
   outline: 0;
}

#d3_taxonomy_vis_container .search-panel i {
   margin-right: 5px;
}

#d3_taxonomy_vis_container .search-panel button {
   border: 1px solid transparent;
   cursor: pointer;
   display: inline-block;
   font-size: var(--default-font-size); 
   padding: var(--button-padding);
   text-align: center;
   user-select: none;
   vertical-align: middle;
   white-space: nowrap;
   -webkit-user-select: none;
   -moz-user-select: none;
   -ms-user-select: none;
}

#d3_taxonomy_vis_container .search-panel .search-button {
   background-color: #0062cc;
   border-collapse: separate;
   border-color: #005cbf;
   border-radius: 0 4px 4px 0;
   color: #fff;
}

#d3_taxonomy_vis_container .search-panel .search-button i {
   margin-right: 5px;
}

#d3_taxonomy_vis_container .search-panel .clear-button {
   align-items: center;
   background-color: transparent;
   border: 0;
   border-radius: 50%;
   color: #555;
   display: inline-flex;
   height: 1.5rem;
   justify-content: center;
   line-height: 1;
   padding: 0;
   position: absolute;
   right: 0.3rem;
   top: 50%;
   transform: translateY(-50%);
   width: 1.5rem;
}

#d3_taxonomy_vis_container .search-panel .clear-button:hover,
#d3_taxonomy_vis_container .search-panel .clear-button:focus {
   background-color: #e9ecef;
   color: #222;
   outline: 0;
}

#d3_taxonomy_vis_container .search-panel .clear-button i {
   margin-right: 0;
}

#d3_taxonomy_vis_container .search-panel .clear-button:disabled {
   cursor: default;
   opacity: 0.45;
}

#d3_taxonomy_vis_container .search-panel .all-releases-row {
   align-items: center;
   display: flex;
   flex-flow: row nowrap;
   justify-content: flex-start;
   margin: 0.5rem 0 0 0;
}

#d3_taxonomy_vis_container .search-panel .all-releases-row .include-all-releases {
   height: 1.0rem;
   margin: 0 0.25rem 0 0;
   width: 1.0rem;
}

#d3_taxonomy_vis_container .search-panel .all-releases-row label {
   font-size: 0.9rem;
   font-weight: normal;
   margin-bottom: 0 !important;
}


/* Search results */
#d3_taxonomy_vis_container .search-results-panel {
   margin: 15px 0 15px 0;
}
#d3_taxonomy_vis_container .search-results-table {
   margin: 15px 0 0 0;
}

#d3_taxonomy_vis_container .search-results-table tr.header-row {
   background-color: #757575 !important;
}
#d3_taxonomy_vis_container .search-results-table tr.header-row th {
   background-color: #757575 !important;
   border-left-width: 0 !important;
   border-right-width: 0 !important;
   color: #fff !important;
   font-size: 0.9rem !important;
   text-align: left !important;
}


#d3_taxonomy_vis_container .search-results-table .result-alt-row {
   background-color: #fff;
}
#d3_taxonomy_vis_container .search-results-table .result-row {
   background-color: #eee;
}
#d3_taxonomy_vis_container .search-results-table tr:hover[data-id] {
   background-color: #ffc90e;
   cursor: pointer;
}

#d3_taxonomy_vis_container .search-results-table tr td.controls-column {
   align-items: center;
   display: flex;
   justify-content: space-around;
   padding: 4px;
}
#d3_taxonomy_vis_container .search-results-table .controls-column button {
   border: 1px solid rgba(0, 0, 0, .075);
   border-radius: 4px;
   box-sizing: border-box;
   cursor: pointer;
   display: inline-block;
   font-size: 0.75rem;
   font-weight: 400;
   line-height: 1.5;
   margin: 0;
   max-width: 60px;
   padding: 2px 10px;
   text-align: center;
   user-select: none;
   vertical-align: middle;
   white-space: nowrap;
   width: 60px;
   -webkit-user-select: none;
   -moz-user-select: none;
   -ms-user-select: none;
}
#d3_taxonomy_vis_container .search-results-table .controls-column button:hover {
   background-color: #0062cc;
   border-collapse: separate;
   border-color: #005cbf;
   color: #fff;


   /*color: #495057;*/
   border-color: var(--border-focus-color);
   box-shadow: none;
   outline: 0;
}

#d3_taxonomy_vis_container .search-results-table td {
   font-size: 0.9rem;
   padding: 7px;
}
#d3_taxonomy_vis_container .search-results-table .release-name {
   text-align: left;
   width: 70px;
}

#d3_taxonomy_vis_container .search-results-table .level-name {
   text-align: left;
   text-transform: capitalize;
   width: 56px;
}

#d3_taxonomy_vis_container .search-term-result {
   background-color: #ffc90e;
}


/*----------------------------------------------------------------------------------------------------------------
  The spinner icon and message 
----------------------------------------------------------------------------------------------------------------*/
#d3_taxonomy_vis_container .search-results-panel .spinner-icon {
   font-size: 1.5rem;
   margin-left: 0.5rem;
}

#d3_taxonomy_vis_container .search-results-panel .spinner-message {
   font-size: 1.0rem;
}


@media (max-width: 1150px) {
   #d3_taxonomy_vis_container .header-panel {
      align-items: flex-start;
   }

   #d3_taxonomy_vis_container .font-size-panel.show {
      display: flex;
   }

   #d3_taxonomy_vis_container .header-panel .font-size-panel {
      flex-basis: 100%;
   }

   #d3_taxonomy_vis_container .header-panel .search-panel {
      margin-left: 0;
      top: 0;
   }

   #d3_taxonomy_vis_container .header-panel .paginate-toggle {
      margin-left: 0;
   }

   #d3_taxonomy_vis_container .header-panel > .reset-view-btn {
      margin-top: 0;
   }
}

@media (max-width: 720px) {
   #d3_taxonomy_vis_container .header-panel .release-ctrl,
   #d3_taxonomy_vis_container .header-panel .search-panel,
   #d3_taxonomy_vis_container .header-panel .font-size-panel,
   #d3_taxonomy_vis_container .header-panel .font-size-panel .control-group,
   #d3_taxonomy_vis_container .header-panel .font-size-panel .button-group {
      flex-basis: 100%;
   }

   #d3_taxonomy_vis_container .header-panel .font-size-panel .control-group {
      justify-content: space-between;
   }

   #d3_taxonomy_vis_container .header-panel .font-size-panel .control-group .slider {
      flex: 1 1 8rem;
      max-width: none;
      min-width: 8rem;
      width: auto;
   }

   #d3_taxonomy_vis_container .search-panel .search-controls {
      flex-flow: row wrap;
      gap: 0.3rem;
   }

   #d3_taxonomy_vis_container .search-panel .search-input-wrapper {
      flex-basis: 100%;
      min-width: 0;
      width: 100%;
   }

   #d3_taxonomy_vis_container .search-panel .search-controls .search-text {
      border-radius: 4px;
   }

   #d3_taxonomy_vis_container .search-panel .search-button,
   #d3_taxonomy_vis_container .selectFormat {
      border-radius: 4px;
   }
}

/*---------------------------------------------------------------------------------------------------------------- 
  The body panel 
----------------------------------------------------------------------------------------------------------------*/
#d3_taxonomy_vis_container .body-panel {
   align-items: flex-start;
   display: flex;
   flex: 1 0 auto;
   flex-flow: row nowrap;
   height: 78vh;
   justify-content: flex-start;
   margin-top: 1.2rem;
   width: 100%;
}

#d3_taxonomy_vis_container .taxonomy-panel {
   height: 100%;
   overflow: hidden;
   position: relative;
   /* width: 82vw; */
   width: 100%;
}

#d3_taxonomy_vis_container .node {
   cursor: pointer;
}

#d3_taxonomy_vis_container .node circle {
   display: flex;
   justify-content: center;
   align-items: center;
}

#d3_taxonomy_vis_container .node-text {
   font-weight: bold;
   font-style: italic;
   text-align: right;
}

#d3_taxonomy_vis_container .unassigned-text {
   color: #999;
   text-align: right;
}

#d3_taxonomy_vis_container text.legend-node-text {
   color: #999; /* dmd test 043024 */
   font-size: 1.5rem;
   font-style: normal;
   text-align: center;
   text-transform: capitalize;
   transform: rotate(-45deg);
   transform-origin: left left;
}


/*----------------------------------------------------------------------------------------------------------------
  The tippy tooltip 
----------------------------------------------------------------------------------------------------------------*/
.ictv-tax-viz-tooltip .rank-and-name {
   align-items: baseline;
   border-color: #ccc;
   border-style: solid;
   border-width: 0 0 1px 0;
   display: flex;
   flex-flow: row nowrap;
   font-size: 1.0rem;
   padding-bottom: 0.20rem;
}

.ictv-tax-viz-tooltip .history {
   margin-top: 0.5rem;
}

.ictv-tax-viz-tooltip .child-count {
   display: flex;
   flex-flow: row nowrap;
   margin-top: 0.25rem;
}

.tippy-box[data-theme~='ICTV-Tooltip'] {
   background-color: #eee;
   color: #000;
}

.tippy-box[data-theme~='ICTV-Tooltip'] .tippy-arrow {
   color: #eee;
}


/*----------------------------------------------------------------------------------------------------------------
  The species panel 
----------------------------------------------------------------------------------------------------------------*/
#d3_taxonomy_vis_container .species-panel {
   background-color: #efefef;
   height: 100%;
   overflow-y: auto;
   width: 17vw;
}

#d3_taxonomy_vis_container .species-panel .parent-rank {
   text-transform: capitalize;
}

#d3_taxonomy_vis_container .species-panel .parent-name {
   font-size: 1.0rem;
   font-weight: bold;
   text-align: center;
   margin-bottom: 1.0rem;
   margin-left: 0.5rem;
   margin-right: 0.5rem;
   word-break: normal;
}

#d3_taxonomy_vis_container .species-panel .parent-name:not(:empty) {
   border-bottom-style: solid;
}

#d3_taxonomy_vis_container .species-panel .species-list {
   align-items: flex-start;
   display: flex;
   font-size: .90rem;
   font-style: italic;
   flex-flow: column nowrap;
   justify-content: flex-start;
}

#d3_taxonomy_vis_container .species-panel .species-row {
   color: blue;
   margin-bottom: 0.5rem;
   margin-left: 0.5rem;
   margin-right: 0.5rem;
   word-break: normal;
}

#d3_taxonomy_vis_container .species-panel .species-row:hover {
   cursor: pointer;
   text-decoration: underline;
}



/*----------------------------------------------------------------------------------------------------------------
  Overriding DataTable CSS
----------------------------------------------------------------------------------------------------------------*/
/* The "Show ___ entries" row above the table */
#d3_taxonomy_vis_container .dataTables_length {
   margin-bottom: 1.0rem;
   margin-left: 0.75rem;
}
#d3_taxonomy_vis_container .dataTables_length label {
   align-items: center;
   font-weight: normal;
   display: flex !important;
   flex-flow: row nowrap !important;
   justify-content: flex-start;
}
#d3_taxonomy_vis_container .dataTables_length select {
   background-color: transparent;
   border: 1px solid #aaa;
   border-radius: 3px;
   font-size: var(--default-font-size);
   padding: 0 5px !important;
   margin: 0 0.25rem;
   min-width: 4rem;
   text-align: left;
}
#d3_taxonomy_vis_container .dataTables_info {
   margin-left: 0.75rem;
}

/* Table TH and TD */
#d3_taxonomy_vis_container table.dataTable thead th {
   font-size: var(--table-header-font-size);
}
#d3_taxonomy_vis_container table.dataTable.compact thead th,
#d3_taxonomy_vis_container table.dataTable.compact thead td {
   padding: 0.5rem 0.5rem 0.5rem 0.5rem !important;
}

#d3_taxonomy_vis_container table.dataTable.compact thead th {
   text-align: left !important;
}
