@charset "UTF-8";
:root {
  --airtool-space-1: 0.25rem;
  --airtool-space-2: 0.5rem;
  --airtool-space-3: 0.75rem;
  --airtool-space-4: 1rem;
  --airtool-space-5: 1.5rem;
  --airtool-radius: 0.25rem;
  --airtool-radius-sm: 0.2rem;
  --airtool-radius-lg: 0.375rem;
  --airtool-font-size-body: 0.9375rem;
  --airtool-font-size-tree-title: 1rem;
  --airtool-font-size-meta: 0.8125rem;
  --airtool-font-size-table-header: 0.75rem;
  --airtool-font-size-page-title: 1.75rem;
  --airtool-font-size-section-title: 1.125rem;
  --airtool-table-header-bg: rgba(31, 41, 55, 0.055);
  --airtool-table-stripe-bg: rgba(31, 41, 55, 0.028);
  --airtool-table-hover-bg: rgba(31, 41, 55, 0.05);
  --airtool-shadow-card: 0 1px 2px rgba(15, 23, 42, 0.04);
  --bs-primary: #e00713;
  --bs-primary-rgb: 224, 7, 19;
  --bs-link-color: #e00713;
  --bs-link-hover-color: #b30610;
  --bs-body-color: #1f2937;
  --bs-body-bg: #f4f6f9;
  --bs-tertiary-bg: #ffffff;
  --bs-secondary-bg: #eef2f6;
  --bs-border-color: #dde4ec;
  --bs-border-color-translucent: rgba(31, 41, 55, 0.08);
  --bs-border-radius: var(--airtool-radius);
  --bs-border-radius-sm: var(--airtool-radius-sm);
  --bs-border-radius-lg: var(--airtool-radius-lg);
  --bs-focus-ring-color: rgba(224, 7, 19, 0.25);
}

.card {
  border-color: var(--bs-border-color-translucent);
  border-radius: var(--airtool-radius-lg);
  box-shadow: var(--airtool-shadow-card);
}

.card.shadow-sm {
  box-shadow: var(--airtool-shadow-card) !important;
}

.btn {
  --bs-btn-padding-x: 0.875rem;
  --bs-btn-padding-y: 0.5rem;
  --bs-btn-font-weight: 500;
  border-radius: var(--airtool-radius);
  line-height: 1.25;
}

.btn-sm {
  --bs-btn-padding-x: 0.65rem;
  --bs-btn-padding-y: 0.375rem;
  --bs-btn-font-size: var(--airtool-font-size-meta);
}

.btn i {
  line-height: 1;
}

.btn-primary {
  --bs-btn-color: #fff;
  --bs-btn-bg: #e00713;
  --bs-btn-border-color: #e00713;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #b30610;
  --bs-btn-hover-border-color: #a9050f;
  --bs-btn-focus-shadow-rgb: 224, 7, 19;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #a9050f;
  --bs-btn-active-border-color: #9c0510;
}

.btn-outline-primary {
  --bs-btn-color: #e00713;
  --bs-btn-border-color: #e00713;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #e00713;
  --bs-btn-hover-border-color: #e00713;
  --bs-btn-focus-shadow-rgb: 224, 7, 19;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #b30610;
  --bs-btn-active-border-color: #a9050f;
}

.form-control,
.form-select,
.select2-container--default .select2-selection--single {
  background-color: #fff;
  border: 1px solid #aaa;
  border-radius: var(--airtool-radius);
  font-size: var(--airtool-font-size-body);
  line-height: 1.35;
  min-height: 2.375rem;
}

.form-control,
.select2-container--default .select2-selection--single {
  padding: 0.45rem 0.75rem;
}

.form-select {
  padding: 0.45rem 2.25rem 0.45rem 0.75rem;
}

.form-control:disabled,
.form-select:disabled,
.select2-container--disabled .select2-selection--single {
  background-color: var(--bs-secondary-bg, #eef2f6);
}

.form-control:focus,
.form-select:focus,
.select2-container--focus .select2-selection--single,
.select2-container--open .select2-selection--single,
.btn:focus {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 0.25rem var(--bs-focus-ring-color);
}

a {
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
}

body {
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg);
  font-family: sans-serif;
  font-size: var(--airtool-font-size-body);
  line-height: 1.45;
  margin: 0;
}

.site-wrapper {
  min-height: 100vh;
}

.nav-and-language,
.site-footer,
main,
section {
  padding: 1rem;
}

.site-brand-link {
  flex: 0 0 auto;
}

.site-brand-logo {
  display: block;
  width: 180px;
  max-width: 100%;
  height: auto;
  max-height: 48px;
  -o-object-fit: contain;
     object-fit: contain;
}

.site-footer {
  background-color: #6f8194;
}

.site-footer a {
  color: inherit;
}

.site-header {
  background-color: var(--bs-body-bg);
}

.site-header__user-control {
  align-items: stretch;
  display: flex;
  max-width: 100%;
  overflow: hidden;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--airtool-radius);
  background-color: var(--bs-secondary-bg);
}

.site-header__user-identity {
  min-width: 0;
  padding: var(--airtool-space-2) var(--airtool-space-3);
  line-height: 1.2;
}

.site-header__user-name {
  display: block;
  font-weight: 500;
}

.site-header__logout-form {
  display: flex;
}

.site-header__logout {
  align-items: center;
  background-color: transparent;
  border: 0;
  border-left: 1px solid var(--bs-border-color);
  color: var(--bs-secondary-color);
  display: inline-flex;
  justify-content: center;
  padding: var(--airtool-space-2);
}

.site-header__logout:hover,
.site-header__logout:focus-visible {
  background-color: var(--bs-tertiary-bg);
  color: var(--bs-emphasis-color);
}

.global-ajax-indicator {
  align-items: center;
  background-color: rgba(20, 29, 38, 0.48);
  display: flex;
  inset: 0;
  justify-content: center;
  position: fixed;
  z-index: 1040;
}

.global-ajax-indicator[hidden] {
  display: none !important;
}

.global-ajax-indicator__content {
  align-items: center;
  background-color: rgba(255, 255, 255, 0.96);
  border: 1px solid rgba(255, 255, 255, 0.8);
  border-radius: var(--airtool-radius);
  box-shadow: 0 0.75rem 2rem rgba(0, 0, 0, 0.2);
  display: flex;
  flex-direction: column;
  gap: var(--airtool-space-3);
  justify-content: center;
  box-sizing: border-box;
  width: min(21rem, 100vw - 2rem);
  padding: var(--airtool-space-5) var(--airtool-space-6);
}

.global-ajax-indicator__label {
  color: var(--bs-emphasis-color);
  font-weight: 500;
}

.ajax-logo-wave {
  --ajax-logo-wave-amplitude: 9px;
  --ajax-logo-wave-amplitude-soft: 6.3px;
  --ajax-logo-wave-amplitude-negative: -9px;
  --ajax-logo-wave-amplitude-negative-soft: -6.3px;
  --ajax-logo-wave-duration: 2s;
  aspect-ratio: 172/39;
  display: flex;
  height: auto;
  overflow: visible;
  padding-block: var(--ajax-logo-wave-amplitude);
  position: relative;
  width: min(18rem, 78vw);
}

.ajax-logo-wave__slice {
  flex: 0 0 4.1666666667%;
  height: 100%;
  overflow: hidden;
  position: relative;
}

.ajax-logo-wave__slice img {
  height: 100%;
  left: 0;
  max-width: none;
  position: absolute;
  top: 0;
  width: 2400%;
}

.global-ajax-indicator[aria-hidden=false] .ajax-logo-wave__slice {
  animation: global-ajax-logo-sine-wave var(--ajax-logo-wave-duration) linear infinite;
}

@keyframes global-ajax-logo-sine-wave {
  0%, 100% {
    transform: translateY(0);
  }
  12.5% {
    transform: translateY(var(--ajax-logo-wave-amplitude-negative-soft));
  }
  25% {
    transform: translateY(var(--ajax-logo-wave-amplitude-negative));
  }
  37.5% {
    transform: translateY(var(--ajax-logo-wave-amplitude-negative-soft));
  }
  50% {
    transform: translateY(0);
  }
  62.5% {
    transform: translateY(var(--ajax-logo-wave-amplitude-soft));
  }
  75% {
    transform: translateY(var(--ajax-logo-wave-amplitude));
  }
  87.5% {
    transform: translateY(var(--ajax-logo-wave-amplitude-soft));
  }
}
.ajax-logo-wave__slice:nth-child(1) {
  animation-delay: -2s;
}
.ajax-logo-wave__slice:nth-child(1) img {
  left: 0%;
}

.ajax-logo-wave__slice:nth-child(2) {
  animation-delay: -1.9130434783s;
}
.ajax-logo-wave__slice:nth-child(2) img {
  left: -100%;
}

.ajax-logo-wave__slice:nth-child(3) {
  animation-delay: -1.8260869565s;
}
.ajax-logo-wave__slice:nth-child(3) img {
  left: -200%;
}

.ajax-logo-wave__slice:nth-child(4) {
  animation-delay: -1.7391304348s;
}
.ajax-logo-wave__slice:nth-child(4) img {
  left: -300%;
}

.ajax-logo-wave__slice:nth-child(5) {
  animation-delay: -1.652173913s;
}
.ajax-logo-wave__slice:nth-child(5) img {
  left: -400%;
}

.ajax-logo-wave__slice:nth-child(6) {
  animation-delay: -1.5652173913s;
}
.ajax-logo-wave__slice:nth-child(6) img {
  left: -500%;
}

.ajax-logo-wave__slice:nth-child(7) {
  animation-delay: -1.4782608696s;
}
.ajax-logo-wave__slice:nth-child(7) img {
  left: -600%;
}

.ajax-logo-wave__slice:nth-child(8) {
  animation-delay: -1.3913043478s;
}
.ajax-logo-wave__slice:nth-child(8) img {
  left: -700%;
}

.ajax-logo-wave__slice:nth-child(9) {
  animation-delay: -1.3043478261s;
}
.ajax-logo-wave__slice:nth-child(9) img {
  left: -800%;
}

.ajax-logo-wave__slice:nth-child(10) {
  animation-delay: -1.2173913043s;
}
.ajax-logo-wave__slice:nth-child(10) img {
  left: -900%;
}

.ajax-logo-wave__slice:nth-child(11) {
  animation-delay: -1.1304347826s;
}
.ajax-logo-wave__slice:nth-child(11) img {
  left: -1000%;
}

.ajax-logo-wave__slice:nth-child(12) {
  animation-delay: -1.0434782609s;
}
.ajax-logo-wave__slice:nth-child(12) img {
  left: -1100%;
}

.ajax-logo-wave__slice:nth-child(13) {
  animation-delay: -0.9565217391s;
}
.ajax-logo-wave__slice:nth-child(13) img {
  left: -1200%;
}

.ajax-logo-wave__slice:nth-child(14) {
  animation-delay: -0.8695652174s;
}
.ajax-logo-wave__slice:nth-child(14) img {
  left: -1300%;
}

.ajax-logo-wave__slice:nth-child(15) {
  animation-delay: -0.7826086957s;
}
.ajax-logo-wave__slice:nth-child(15) img {
  left: -1400%;
}

.ajax-logo-wave__slice:nth-child(16) {
  animation-delay: -0.6956521739s;
}
.ajax-logo-wave__slice:nth-child(16) img {
  left: -1500%;
}

.ajax-logo-wave__slice:nth-child(17) {
  animation-delay: -0.6086956522s;
}
.ajax-logo-wave__slice:nth-child(17) img {
  left: -1600%;
}

.ajax-logo-wave__slice:nth-child(18) {
  animation-delay: -0.5217391304s;
}
.ajax-logo-wave__slice:nth-child(18) img {
  left: -1700%;
}

.ajax-logo-wave__slice:nth-child(19) {
  animation-delay: -0.4347826087s;
}
.ajax-logo-wave__slice:nth-child(19) img {
  left: -1800%;
}

.ajax-logo-wave__slice:nth-child(20) {
  animation-delay: -0.347826087s;
}
.ajax-logo-wave__slice:nth-child(20) img {
  left: -1900%;
}

.ajax-logo-wave__slice:nth-child(21) {
  animation-delay: -0.2608695652s;
}
.ajax-logo-wave__slice:nth-child(21) img {
  left: -2000%;
}

.ajax-logo-wave__slice:nth-child(22) {
  animation-delay: -0.1739130435s;
}
.ajax-logo-wave__slice:nth-child(22) img {
  left: -2100%;
}

.ajax-logo-wave__slice:nth-child(23) {
  animation-delay: -0.0869565217s;
}
.ajax-logo-wave__slice:nth-child(23) img {
  left: -2200%;
}

.ajax-logo-wave__slice:nth-child(24) {
  animation-delay: 0s;
}
.ajax-logo-wave__slice:nth-child(24) img {
  left: -2300%;
}

@media (prefers-reduced-motion: reduce) {
  .global-ajax-indicator[aria-hidden=false] .ajax-logo-wave__slice {
    animation: none;
  }
}
@media (max-width: 575.98px) {
  .ajax-logo-wave {
    --ajax-logo-wave-amplitude: 5px;
    --ajax-logo-wave-amplitude-soft: 3.5px;
    --ajax-logo-wave-amplitude-negative: -5px;
    --ajax-logo-wave-amplitude-negative-soft: -3.5px;
  }
}
.airtool-detail {
  gap: var(--airtool-space-5);
}

form > .card + .card {
  margin-top: var(--airtool-space-5);
}

form .card-body > .card + .card {
  margin-top: var(--airtool-space-3);
}

form > .card > .card-body > .card + .card {
  margin-top: var(--airtool-space-5);
}

form > .airtool-form-section {
  margin-top: var(--airtool-space-5);
  padding-block: 0;
  padding-inline: 0;
}

.airtool-form-section > h2 {
  margin-bottom: var(--airtool-space-3);
  margin-top: 0;
}

form > .links {
  align-items: center;
  justify-content: flex-end;
  display: flex;
  flex-wrap: wrap;
  gap: var(--airtool-space-2);
}

.airtool-detail__header {
  gap: var(--airtool-space-4);
}

.airtool-detail__title {
  color: var(--bs-emphasis-color);
  font-size: var(--airtool-font-size-page-title);
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.2;
}

.airtool-detail__actions {
  flex-shrink: 0;
}

.airtool-detail__actions .btn {
  align-items: center;
  display: inline-flex;
  gap: var(--airtool-space-2);
  padding-inline: 0.75rem;
  white-space: nowrap;
}

.airtool-detail__actions .btn-outline-danger {
  --bs-btn-padding-x: 0.65rem;
  --bs-btn-padding-y: 0.375rem;
  --bs-btn-font-size: var(--airtool-font-size-meta);
  padding-inline: 0.65rem;
}

.airtool-project-summary {
  border-color: var(--bs-border-color-translucent);
}
.airtool-project-summary .card-body {
  padding: var(--airtool-space-4) var(--airtool-space-5);
}

.airtool-project-summary__grid {
  display: grid;
  gap: var(--airtool-space-4) var(--airtool-space-5);
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
}

.airtool-project-summary__item {
  min-width: 0;
}

.airtool-project-summary__label {
  color: var(--bs-secondary-color);
  font-size: var(--airtool-font-size-meta);
  font-weight: 600;
  line-height: 1.35;
  margin-bottom: var(--airtool-space-1);
}

.airtool-project-summary__value {
  color: var(--bs-emphasis-color);
  font-size: var(--airtool-font-size-body);
  font-weight: 500;
  line-height: 1.45;
  min-width: 0;
  overflow-wrap: anywhere;
}

.airtool-tree-card {
  border-color: var(--bs-border-color-translucent);
}
.airtool-tree-card .card-body {
  gap: var(--airtool-space-4);
  padding: var(--airtool-space-4) var(--airtool-space-5);
}

.airtool-tree-card__header {
  gap: var(--airtool-space-3);
}

.airtool-tree-card__title {
  color: var(--bs-emphasis-color);
  font-size: var(--airtool-font-size-section-title);
  font-weight: 600;
  line-height: 1.3;
}

.airtool-tree {
  --airtool-tree-indent: 0.5rem;
  --airtool-tree-line-color: rgba(var(--bs-secondary-color-rgb), 0.24);
  --airtool-tree-row-gap: 0.2rem;
  --airtool-tree-node-padding-y: 0.1rem;
  --airtool-tree-node-radius: var(--airtool-radius);
  --airtool-tree-supply-bg: #f5f9fe;
  --airtool-tree-supply-border: rgba(33, 99, 201, 0.18);
  --airtool-tree-supply-color: #1d4ed8;
  --airtool-tree-supply-color-rgb: 29, 78, 216;
  --airtool-tree-extract-bg: #fff7f7;
  --airtool-tree-extract-border: rgba(193, 18, 31, 0.18);
  --airtool-tree-extract-color: #b91c1c;
  --airtool-tree-extract-color-rgb: 185, 28, 28;
  --airtool-tree-fresh-air-bg: #f5fbf7;
  --airtool-tree-fresh-air-border: rgba(21, 128, 61, 0.18);
  --airtool-tree-fresh-air-color: #15803d;
  --airtool-tree-fresh-air-color-rgb: 21, 128, 61;
  --airtool-tree-exhaust-air-bg: #fcf8f2;
  --airtool-tree-exhaust-air-border: rgba(138, 79, 27, 0.2);
  --airtool-tree-exhaust-air-color: #8a4f1b;
  --airtool-tree-exhaust-air-color-rgb: 138, 79, 27;
  --airtool-tree-context-color-rgb: var(--bs-secondary-color-rgb);
  list-style: none;
  margin: 0;
  min-width: 0;
  padding: 0;
  width: 100%;
}

.airtool-tree__item {
  box-sizing: border-box;
  list-style: none;
  margin: 0;
  min-width: 0;
  padding: 0;
  width: 100%;
}

.airtool-tree__details {
  box-sizing: border-box;
  display: block;
  min-width: 0;
  width: 100%;
}

.airtool-tree__details > .airtool-tree__body {
  padding-left: 0;
}

.airtool-tree__details > .airtool-tree__children,
.airtool-tree__details > .airtool-tree__body {
  margin-left: 0.5rem;
  min-width: 0;
}

.airtool-tree__details > .airtool-tree__body--tube-content {
  margin-left: var(--airtool-space-3);
}

.airtool-tree__details > summary {
  list-style: none;
}

.airtool-tree__details > summary::-webkit-details-marker {
  display: none;
}

.airtool-tree__summary {
  align-items: center;
  border-radius: var(--airtool-radius);
  box-sizing: border-box;
  display: flex;
  gap: var(--airtool-space-2);
  cursor: pointer;
  width: 100%;
  min-width: 0;
  padding: 0.35rem 0.4rem;
  transition: background-color 0.15s ease, box-shadow 0.15s ease;
}

.airtool-tree__summary:hover,
.airtool-tree__summary:focus-within {
  background-color: transparent;
  box-shadow: none;
}

.airtool-tree__summary:hover .airtool-tree__label,
.airtool-tree__summary:focus-within .airtool-tree__label {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.12em;
}

.airtool-tree__summary:focus-visible {
  outline: 2px solid rgba(var(--bs-primary-rgb), 0.22);
  outline-offset: 2px;
}

.airtool-tree__summary-main {
  align-items: center;
  display: inline-flex;
  flex: 1 1 auto;
  gap: var(--airtool-space-2);
  min-width: 0;
}

.airtool-tree__summary-actions {
  align-items: center;
  display: inline-flex;
  flex: 0 1 auto;
  flex-wrap: wrap;
  gap: var(--airtool-space-2);
  margin-left: auto;
  min-width: 0;
  padding-right: var(--airtool-space-3);
}

.airtool-tree__toggle {
  align-items: center;
  background-color: var(--bs-body-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: 0.2rem;
  color: var(--bs-secondary-color);
  display: inline-flex;
  flex: 0 0 auto;
  font-size: 0.75rem;
  font-weight: 700;
  height: 1rem;
  justify-content: center;
  line-height: 1;
  width: 1rem;
}

.airtool-tree__toggle::before {
  content: "+";
}

.airtool-tree__details[open] > summary .airtool-tree__toggle::before {
  content: "−";
}

.airtool-tree__icon {
  align-items: center;
  color: var(--airtool-tree-icon-color, var(--bs-primary));
  display: inline-flex;
  flex: 0 0 auto;
  font-size: var(--airtool-font-size-body);
  justify-content: center;
  line-height: 1;
  min-height: 1rem;
  min-width: 1rem;
}

.airtool-tree__icon::before {
  content: "";
}

.airtool-tree__icon--unit {
  --airtool-tree-icon-color: #2163c9;
}

.airtool-tree__icon--unit::before {
  background-color: currentColor;
  border-radius: 50%;
  height: 0.7rem;
  width: 0.7rem;
}

.airtool-tree__icon--supply {
  --airtool-tree-icon-color: #2163c9;
  font-weight: 600;
}

.airtool-tree__icon--supply::before {
  content: "≋";
  font-size: 0.95rem;
  line-height: 1;
}

.airtool-tree__icon--extract {
  --airtool-tree-icon-color: #dc3545;
  font-weight: 600;
}

.airtool-tree__icon--extract::before {
  content: "≋";
  font-size: 0.95rem;
  line-height: 1;
}

.airtool-tree__node {
  background-color: transparent;
  border-radius: var(--airtool-tree-node-radius);
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
  min-width: 0;
  padding: var(--airtool-tree-node-padding-y) 0;
  position: relative;
}

.airtool-tree__node--branch-flow {
  justify-content: center;
}

.airtool-tree__branch-main {
  align-items: center;
  display: flex;
  gap: 0.45rem;
  min-width: 0;
}

.airtool-tree__branch-subtitle {
  margin-left: 2.35rem;
}

.airtool-tree__children {
  list-style: none;
  margin: var(--airtool-tree-row-gap) 0 0;
  padding: 0 0 0 var(--airtool-tree-indent);
}

.airtool-tree__children > .airtool-tree__item > .airtool-tree__node {
  min-height: 1.9rem;
}

.airtool-tree__label {
  --airtool-tree-label-accent: var(--bs-secondary-color);
  --airtool-tree-label-accent-rgb: var(--bs-secondary-color-rgb);
  color: var(--bs-emphasis-color);
  display: inline-flex;
  align-items: center;
  gap: var(--airtool-space-2);
  font-size: var(--airtool-font-size-body);
  font-weight: 500;
  line-height: 1.35;
  min-width: 0;
  padding: 0.12rem 0.3rem;
  border-radius: var(--airtool-radius-sm);
  text-decoration: none;
  transition: background-color 0.15s ease, color 0.15s ease;
  width: -moz-fit-content;
  width: fit-content;
}
.airtool-tree__label:hover, .airtool-tree__label:focus-visible {
  background-color: rgba(var(--bs-primary-rgb), 0.08);
  color: var(--bs-emphasis-color);
  text-decoration: none;
}

.airtool-tree__label--unit {
  font-size: var(--airtool-font-size-section-title);
  font-weight: 600;
}

.airtool-tree__label--side {
  font-size: 1.05rem;
  font-weight: 600;
}

.airtool-tree__label--group {
  color: var(--bs-secondary-color);
  font-size: var(--airtool-font-size-body);
  font-weight: 600;
  text-decoration: none;
}

.airtool-tree__item--section > .airtool-tree__details > .airtool-tree__summary .airtool-tree__label--group {
  font-size: var(--airtool-font-size-section-title);
}

.airtool-tree__label--supply {
  color: var(--airtool-tree-supply-color);
}

.airtool-tree__label--extract {
  color: var(--airtool-tree-extract-color);
}

.airtool-tree__label--fresh_air {
  color: var(--airtool-tree-fresh-air-color);
}

.airtool-tree__label--exhaust_air {
  color: var(--airtool-tree-exhaust-air-color);
}

.airtool-tree__jump {
  color: var(--bs-secondary-color);
  display: inline-flex;
  flex: 0 0 auto;
  font-size: 1.2rem;
  font-weight: 500;
  line-height: 1;
  margin-left: auto;
  text-decoration: none;
  transition: color 0.15s ease, transform 0.15s ease;
}

.airtool-tree__jump:hover,
.airtool-tree__jump:focus-visible {
  color: var(--bs-primary);
  transform: translateX(1px);
}

.airtool-tree__group-action {
  align-items: center;
  border-radius: var(--airtool-radius);
  display: inline-flex;
  gap: var(--airtool-space-1);
  font-size: var(--airtool-font-size-meta);
  line-height: 1.1;
  padding: 0.3rem 0.6rem;
  white-space: nowrap;
}

.airtool-tree__item--unit {
  background-color: #f7f8fa;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: var(--airtool-radius-lg);
  padding: 0.25rem 0.65rem 0.25rem 0.25rem;
}

.airtool-tree__item--unit > .airtool-tree__details > .airtool-tree__summary {
  padding-right: 0.75rem;
}

.airtool-tree__item--group.airtool-tree__item--supply > .airtool-tree__details .airtool-tree__group-action,
.airtool-tree__item--side.airtool-tree__item--supply > .airtool-tree__details .airtool-tree__group-action {
  --bs-btn-color: #1d4ed8;
  --bs-btn-bg: #dbeafe;
  --bs-btn-border-color: #93c5fd;
  --bs-btn-hover-color: #1e3a8a;
  --bs-btn-hover-bg: #bfdbfe;
  --bs-btn-hover-border-color: #60a5fa;
  --bs-btn-focus-shadow-rgb: 59, 130, 246;
  --bs-btn-active-color: #1e3a8a;
  --bs-btn-active-bg: #bfdbfe;
  --bs-btn-active-border-color: #3b82f6;
}

.airtool-tree__item--group.airtool-tree__item--extract > .airtool-tree__details .airtool-tree__group-action,
.airtool-tree__item--side.airtool-tree__item--extract > .airtool-tree__details .airtool-tree__group-action {
  --bs-btn-color: #b91c1c;
  --bs-btn-bg: #fee2e2;
  --bs-btn-border-color: #fca5a5;
  --bs-btn-hover-color: #7f1d1d;
  --bs-btn-hover-bg: #fecaca;
  --bs-btn-hover-border-color: #f87171;
  --bs-btn-focus-shadow-rgb: 239, 68, 68;
  --bs-btn-active-color: #7f1d1d;
  --bs-btn-active-bg: #fecaca;
  --bs-btn-active-border-color: #ef4444;
}

.airtool-tree__item--group.airtool-tree__item--fresh-air > .airtool-tree__details .airtool-tree__group-action,
.airtool-tree__item--side.airtool-tree__item--fresh-air > .airtool-tree__details .airtool-tree__group-action {
  --bs-btn-color: #15803d;
  --bs-btn-bg: #dcfce7;
  --bs-btn-border-color: #86efac;
  --bs-btn-hover-color: #14532d;
  --bs-btn-hover-bg: #bbf7d0;
  --bs-btn-hover-border-color: #4ade80;
  --bs-btn-focus-shadow-rgb: 34, 197, 94;
  --bs-btn-active-color: #14532d;
  --bs-btn-active-bg: #bbf7d0;
  --bs-btn-active-border-color: #22c55e;
}

.airtool-tree__item--group.airtool-tree__item--exhaust-air > .airtool-tree__details .airtool-tree__group-action,
.airtool-tree__item--side.airtool-tree__item--exhaust-air > .airtool-tree__details .airtool-tree__group-action {
  --bs-btn-color: #8a4f1b;
  --bs-btn-bg: #fef3c7;
  --bs-btn-border-color: #f5c26b;
  --bs-btn-hover-color: #6b3d14;
  --bs-btn-hover-bg: #fde68a;
  --bs-btn-hover-border-color: #f59e0b;
  --bs-btn-focus-shadow-rgb: 245, 158, 11;
  --bs-btn-active-color: #6b3d14;
  --bs-btn-active-bg: #fde68a;
  --bs-btn-active-border-color: #d97706;
}

.airtool-tree__item--group.airtool-tree__item--supply > .airtool-tree__details,
.airtool-tree__item--group.airtool-tree__item--extract > .airtool-tree__details,
.airtool-tree__item--group.airtool-tree__item--fresh-air > .airtool-tree__details,
.airtool-tree__item--group.airtool-tree__item--exhaust-air > .airtool-tree__details {
  border: 1px solid transparent;
  border-radius: var(--airtool-radius);
  overflow: hidden;
}

.airtool-tree__item--group.airtool-tree__item--supply > .airtool-tree__details {
  --airtool-tree-context-color-rgb: var(--airtool-tree-supply-color-rgb);
  background-color: var(--airtool-tree-supply-bg);
  border-color: var(--airtool-tree-supply-border);
}

.airtool-tree__item--group.airtool-tree__item--extract > .airtool-tree__details {
  --airtool-tree-context-color-rgb: var(--airtool-tree-extract-color-rgb);
  background-color: var(--airtool-tree-extract-bg);
  border-color: var(--airtool-tree-extract-border);
}

.airtool-tree__item--group.airtool-tree__item--fresh-air > .airtool-tree__details {
  --airtool-tree-context-color-rgb: var(--airtool-tree-fresh-air-color-rgb);
  background-color: var(--airtool-tree-fresh-air-bg);
  border-color: var(--airtool-tree-fresh-air-border);
}

.airtool-tree__item--group.airtool-tree__item--exhaust-air > .airtool-tree__details {
  --airtool-tree-context-color-rgb: var(--airtool-tree-exhaust-air-color-rgb);
  background-color: var(--airtool-tree-exhaust-air-bg);
  border-color: var(--airtool-tree-exhaust-air-border);
}

.airtool-tree__item--group.airtool-tree__item--supply > .airtool-tree__details .airtool-tree__icon--supply,
.airtool-tree__item--group.airtool-tree__item--supply > .airtool-tree__details .airtool-tree__label--group,
.airtool-tree__item--group.airtool-tree__item--supply > .airtool-tree__details .airtool-tree__label--supply {
  color: var(--airtool-tree-supply-color);
}

.airtool-tree__item--group.airtool-tree__item--extract > .airtool-tree__details .airtool-tree__icon--extract,
.airtool-tree__item--group.airtool-tree__item--extract > .airtool-tree__details .airtool-tree__label--group,
.airtool-tree__item--group.airtool-tree__item--extract > .airtool-tree__details .airtool-tree__label--extract {
  color: var(--airtool-tree-extract-color);
}

.airtool-tree__item--group.airtool-tree__item--fresh-air > .airtool-tree__details .airtool-tree__icon--fresh_air,
.airtool-tree__item--group.airtool-tree__item--fresh-air > .airtool-tree__details .airtool-tree__label--group,
.airtool-tree__item--group.airtool-tree__item--fresh-air > .airtool-tree__details .airtool-tree__label--fresh_air {
  color: var(--airtool-tree-fresh-air-color);
}

.airtool-tree__item--group.airtool-tree__item--exhaust-air > .airtool-tree__details .airtool-tree__icon--exhaust_air,
.airtool-tree__item--group.airtool-tree__item--exhaust-air > .airtool-tree__details .airtool-tree__label--group,
.airtool-tree__item--group.airtool-tree__item--exhaust-air > .airtool-tree__details .airtool-tree__label--exhaust_air {
  color: var(--airtool-tree-exhaust-air-color);
}

.airtool-tree__item--side {
  box-sizing: border-box;
  padding-right: 0.75rem;
}

.airtool-tree__meta {
  font-size: var(--airtool-font-size-meta);
  line-height: 1.35;
  margin-left: 0.5rem;
}

.airtool-tree__equipment {
  border-bottom: 1px solid rgba(var(--airtool-tree-context-color-rgb), 0.14);
}

.airtool-tree__equipment-body {
  padding: var(--airtool-space-2) var(--airtool-space-2) var(--airtool-space-3);
}

.airtool-tree__equipment-summary {
  border-bottom: 1px solid rgba(var(--airtool-tree-context-color-rgb), 0.14);
  padding: 0 var(--airtool-space-2) var(--airtool-space-2);
}

.airtool-tree__dbox-title {
  color: var(--bs-emphasis-color);
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.3;
}

.airtool-tree__context-table,
.airtool-tree__context-table-mobile {
  --bs-table-bg: transparent;
  --bs-table-color: var(--bs-body-color);
  --airtool-tree-table-border-color: var(--bs-border-color-translucent);
  background-color: transparent;
  border-color: var(--airtool-tree-table-border-color);
  font-size: 0.9rem;
}

.airtool-tree__context-table {
  table-layout: fixed;
  width: 100%;
}

.airtool-tree__context-room-group {
  align-items: flex-start;
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 0;
}

.airtool-tree__context-add-outlet {
  font-size: 85%;
  max-width: 100%;
  overflow-wrap: anywhere;
  padding: 2px 7px;
  white-space: normal;
}

.airtool-tree__context-column--branch,
.airtool-tree__context-column--pressure-loss {
  width: 20%;
}

.airtool-tree__context-column--balancing {
  width: 30%;
}

.airtool-tree__context-table > :not(caption) > * > * {
  background-color: transparent;
  border-bottom-color: var(--airtool-tree-table-border-color);
  padding: 0.4rem 0.45rem;
}

.airtool-tree__context-table > thead > tr > th {
  background-color: rgba(var(--airtool-tree-context-color-rgb), 0.045);
  border-bottom-color: var(--bs-border-color);
}

.airtool-tree__context-balancing {
  align-items: center;
  display: inline-flex;
  gap: var(--airtool-space-2);
  min-width: 0;
}

.airtool-tree__context-balancing-text {
  font-size: 0.8em;
}

.airtool-tree__branch-report-link {
  align-items: center;
  border-radius: var(--airtool-radius-sm);
  color: var(--bs-secondary-color);
  display: inline-flex;
  flex: 0 0 1.25rem;
  font-size: 1.125rem;
  justify-content: center;
  line-height: 1;
  min-height: 1.25rem;
  text-decoration: none;
}

.airtool-tree__branch-report-link:hover,
.airtool-tree__branch-report-link:focus-visible {
  color: var(--bs-primary);
}

.airtool-tree__branch-report-link:focus-visible {
  outline: 2px solid rgba(var(--bs-primary-rgb), 0.22);
  outline-offset: 2px;
}

.airtool-tree__context-table-mobile {
  --bs-list-group-bg: transparent;
  --bs-list-group-border-color: var(--airtool-tree-table-border-color);
  --bs-list-group-color: var(--bs-body-color);
}

.airtool-tree__context-table-mobile .list-group-item {
  background-color: transparent;
  border-color: var(--airtool-tree-table-border-color);
}

.airtool-tree__title,
.airtool-tree__side-title,
.airtool-tree__branch-title {
  line-height: 1.3;
}

.airtool-tree__node--unit {
  padding-top: 0.125rem;
}

.airtool-tree__node--group {
  padding-top: 0.5rem;
}

.airtool-tree__node--placeholder,
.airtool-tree__node--empty {
  color: var(--bs-secondary-color);
  font-style: italic;
}

.airtool-tree__item--group > .airtool-tree__node {
  padding-bottom: 0.125rem;
}

.airtool-tree__item--group + .airtool-tree__item--group {
  margin-top: var(--airtool-space-3);
}

.airtool-tree__item--side + .airtool-tree__item--side {
  margin-top: 0.25rem;
}

.airtool-tree--project > .airtool-tree__item + .airtool-tree__item {
  margin-top: var(--airtool-space-4);
}

@media (max-width: 767.98px) {
  .airtool-detail__actions {
    width: 100%;
  }
  .airtool-detail__actions .btn {
    flex: 1 1 auto;
  }
  .airtool-project-summary .card-body,
  .airtool-tree-card .card-body {
    padding: var(--airtool-space-4);
  }
  .airtool-project-summary__grid {
    gap: 0.875rem;
    grid-template-columns: minmax(0, 1fr);
  }
  .airtool-tree__details > .airtool-tree__children,
  .airtool-tree__details > .airtool-tree__body {
    margin-left: 0.5rem;
  }
  .airtool-tree__details > .airtool-tree__body--tube-content {
    margin-left: var(--airtool-space-2);
  }
  .airtool-tree {
    --airtool-tree-indent: 0.5rem;
  }
  .airtool-tree__label {
    gap: 0.4rem;
    padding-inline: 0.45rem;
    margin-inline: -0.45rem;
  }
  .airtool-tree__group-action {
    padding-inline: 0.6rem;
  }
}
html {
  box-sizing: border-box;
}

*,
*::before,
*::after {
  box-sizing: inherit;
}

.form-label.required::after {
  content: " *";
  color: var(--bs-danger);
}

.form-label {
  color: var(--bs-emphasis-color);
  font-size: var(--airtool-font-size-meta);
  font-weight: 600;
  line-height: 1.35;
  margin-bottom: var(--airtool-space-1);
}

.form-text,
.invalid-feedback {
  font-size: var(--airtool-font-size-meta);
  line-height: 1.35;
}

.iommi-table-container {
  max-width: 100%;
  overflow-x: auto;
  padding-bottom: 0.75rem;
  -webkit-overflow-scrolling: touch;
}

.iommi-table-container > table {
  margin-bottom: 0;
}

.iommi-table-container table[data-new-row-endpoint] > tbody > tr > td {
  vertical-align: middle;
}

.iommi-table-container table[data-new-row-endpoint] > tbody > tr > td > .col.mb-3 {
  margin-bottom: 0 !important;
}

.airtool-list-toolbar {
  gap: var(--airtool-space-4);
  margin-bottom: var(--airtool-space-4) !important;
}

.airtool-list-toolbar__actions {
  flex-shrink: 0;
}

h1:has(+ .airtool-list-toolbar) {
  color: var(--bs-emphasis-color);
  font-size: var(--airtool-font-size-page-title);
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.2;
  margin-bottom: var(--airtool-space-2);
}

@media (min-width: 768px) {
  .container:has(> h1 + .airtool-list-toolbar) {
    -moz-column-gap: var(--airtool-space-4);
         column-gap: var(--airtool-space-4);
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    row-gap: var(--airtool-space-4);
  }
  .container:has(> h1 + .airtool-list-toolbar) > h1 {
    align-self: center;
    margin-bottom: 0;
  }
  .container:has(> h1 + .airtool-list-toolbar) > .airtool-list-toolbar {
    align-self: center;
    grid-column: 2;
    grid-row: 1;
    margin-bottom: 0 !important;
  }
  .container:has(> h1 + .airtool-list-toolbar) > .iommi-table-container {
    grid-column: 1/-1;
  }
}
.table {
  font-size: var(--airtool-font-size-body);
  line-height: 1.35;
}

.table:not(.airtool-tree__context-table) {
  --airtool-table-border-color: var(--bs-border-color-translucent);
  border-color: var(--airtool-table-border-color);
}

.table:not(.airtool-tree__context-table) > :not(caption) > * > * {
  border-bottom-color: var(--airtool-table-border-color);
  padding: 0.3rem 0.625rem;
}

.table:not(.airtool-tree__context-table) > thead > tr > th {
  background-color: var(--airtool-table-header-bg);
  border-bottom-color: var(--bs-border-color);
  color: var(--bs-emphasis-color);
  font-size: var(--airtool-font-size-table-header);
  font-weight: 600;
  line-height: 1.3;
  padding-bottom: 0.5rem;
  padding-top: 0.5rem;
}

.table:not(.airtool-tree__context-table) > thead > tr > th a {
  color: inherit;
  font-weight: inherit;
}

.table:not(.airtool-tree__context-table) > thead > tr > th.airtool-table-boolean,
.table:not(.airtool-tree__context-table) > tbody > tr > td.airtool-table-boolean {
  text-align: center;
  vertical-align: middle;
}

.table:not(.airtool-tree__context-table) > tbody > tr > td.airtool-table-date,
.table:not(.airtool-tree__context-table) > tbody > tr > td.airtool-table-datetime {
  font-size: var(--airtool-font-size-meta);
}

.table:not(.airtool-tree__context-table) > tbody > tr:nth-of-type(even) > * {
  background-color: var(--airtool-table-stripe-bg);
}

.table:not(.airtool-tree__context-table) > tbody > tr:hover > * {
  background-color: var(--airtool-table-hover-bg);
}

.table:not(.airtool-tree__context-table) > tbody .bi-check-lg.fs-3 {
  color: var(--bs-secondary-color);
  font-size: var(--airtool-font-size-body);
}

.airtool-navigation-sections {
  display: flex;
  flex-direction: column;
  gap: var(--airtool-space-5);
}

.airtool-navigation-section {
  display: flex;
  flex-direction: column;
  gap: var(--airtool-space-3);
}

.airtool-navigation-section__title {
  color: var(--bs-emphasis-color);
  font-size: var(--airtool-font-size-section-title);
  font-weight: 600;
  line-height: 1.3;
  margin: 0;
}

.airtool-navigation-grid {
  display: grid;
  gap: var(--airtool-space-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
}

.airtool-navigation-tile {
  align-items: flex-start;
  background-color: var(--bs-tertiary-bg);
  border: 1px solid var(--bs-border-color-translucent);
  border-radius: var(--airtool-radius);
  color: var(--bs-body-color);
  display: flex;
  gap: var(--airtool-space-3);
  height: 100%;
  padding: var(--airtool-space-4);
}

.airtool-navigation-tile:hover {
  background-color: var(--bs-secondary-bg);
  border-color: var(--bs-border-color);
  color: var(--bs-emphasis-color);
}

.airtool-navigation-tile:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: 2px;
}

.airtool-navigation-tile__icon {
  color: var(--bs-secondary-color);
  flex: 0 0 1.75rem;
  height: 1.75rem;
  width: 1.75rem;
}

.airtool-navigation-tile__body {
  display: flex;
  flex-direction: column;
  gap: var(--airtool-space-1);
  min-width: 0;
}

.airtool-navigation-tile__title {
  color: inherit;
  font-size: var(--airtool-font-size-body);
  font-weight: 600;
  line-height: 1.35;
}

.airtool-navigation-tile__description {
  color: var(--bs-secondary-color);
  font-size: var(--airtool-font-size-meta);
  line-height: 1.4;
}

.login-card input,
.login-card button {
  box-sizing: border-box;
  display: block;
  width: 100%;
}