

@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap');


html {
   box-sizing: border-box;
   font-size: 16px;
}

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

body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
ol,
ul {
   margin: 0;
   padding: 0;
   font-weight: normal;
   line-height: 1.5;
}

body {
   font-family: 'IBM Plex Sans', sans-serif;
   font-size: 14px;
   background-color: #FFF;
   line-height: 1.5;
}

h1,
h2,
h3,
h4,
h5,
h6 {
   font-family: "IBM Plex Mono", monospace;
   vertical-align: middle;
}


img {
   max-width: 100%;
   height: auto;
   display: block;

}

.visible {
   visibility: hidden;
}

h1 {
   font-size: 24px;
   /* letter-spacing: 0.15em; */
   vertical-align: middle;
}

h2 {
   font-size: 21px;
   /* letter-spacing: 0.12em; */
   margin-bottom: 16px;
}

h3 {
   font-size: 18px;
   margin-bottom: 16px;
}

/* used in frames */
h4 {
   font-size: 16px;
   font-weight: 350;
   margin-bottom: 16px !important;
   padding-top: 4px !important;
   
}

p{
   line-height: 1.4;
}

.textTitle {
   font-family: "IBM Plex Mono", monospace;
   font-size: 16px;
   font-weight: 350;
}

p.caption {
   margin-top: 0;
   font-family: "IBM Plex Mono", monospace;
   font-size: 13px;
   font-weight: 350;
   margin-top: -32px;
}

.hljs {
   background: #EEE !important;
}

#sidebar {
   position: fixed;
   left: 0;
   top: 0;
   width: 240px;
   background-color: white;
   height: 100%;
   padding: 16px;
   border-right: 1px solid black;
   overflow-y: auto;
   transition: transform 0.3s ease;
   z-index: 100;
}


/* topBar button styles */
#topBar {
   display: flex;
   transform: translateY(-100%);
   position: fixed;
   flex-direction: row;
   align-items: flex-start;
   align-items: center;

   top: 0px;
   left: 0px;
   height: 44px;
   width: 100%;
   border-bottom: 1px solid black;
   background-color: white;
   padding: 0 16px;
   z-index: 1000;
   transition: transform 0.3s ease;
}

#main {
   margin-left: 240px;
   overflow: hidden;
   transition: margin 0.3s ease;
}

#menuBtn {
   cursor: pointer;
}

#menuBtn div {
   width: 24px;
   height: 3px;
   background-color: #333;
   margin: 5px 0;
}

#topBar h1 {
   margin-left: 24px;
   display: inline-block;
   font-size: 16px;

}

#sidebar h1 {
   font-size: 21px;
   margin: 8px 0 16px 0;
}

nav {
   margin: 16px 0;
}

nav li {
   font-family: "IBM Plex Mono", monospace;
   font-size: 16px;
   margin-bottom: 8px;
   
   cursor: pointer;
}

nav li.selected {
   text-decoration: underline;
}


div.spacer{
   height: 20px;
   width: 100%;
}


section {
   padding: 48px;
   max-width: 768px;
}

section>* {
   margin: 16px 0 32px 0;
}

section>h3 {
   margin-top: 0px !important;
}

.blockLink{
   text-decoration: none;
  color: inherit;
  display: block;
  /* padding: 8px; */
}
/* .blockLink:hover{
   background: #EEE;
} */

.utoBanner {
   height: 75vh;
   overflow: hidden;
   display: flex;
   justify-content: center;
   align-items: center;
   position: relative;
}

/* TICKER */
#tickerContainer {
   position: absolute;
   bottom: 0;
   left: 0;
   width: 100%;
}

#bannerTicker {
   position: absolute;
   bottom: 80px;
   left: 40px;
   font-family: "IBM Plex Mono", monospace;
   font-weight: 350;
   font-size: 24px;
   padding: 4px 8px;
   max-width: calc(100% - 80px);
   display: flex;
   flex-wrap: wrap;
}

.word {
   color: #333;
   background-color: #FFF;
   display: inline-block;
   padding: 2px 8px 2px 8px;
   white-space: nowrap;
   /* Ensure words don't break */
}

.line-break {
   flex-basis: 100%;
   height: 0;
}


.hljs {
   white-space: pre-wrap;
   /* Wrap lines */
   word-break: break-word;
   /* Break long words if necessary */
}

/* ////////////////////////////////////////// */


.two-column {
   display: grid;
   grid-template-columns: 1fr 1fr;
   gap: 16px;
}

.three-column {
   display: grid;
   grid-template-columns: 1fr 1fr 1fr;
   gap: 16px;
}

.four-column {
   display: grid;
   grid-template-columns: 1fr 1fr 1fr 1fr;
   gap: 16px;
}

.fullwidth {
   width: 100%;
   min-height: 200px;
}

.frame {
   background-color: #EEE;
   padding: 12px !important;
}

.darkFrame {
   background-color: #333;
   padding: 12px;
}

.utoEditor {
   background-color: #333;
   display: grid;
   grid-template-columns: 1fr 1fr;
   /* Two columns with equal width */
   height: 340px;
   width: 100%;
   overflow: hidden;
   position: relative;
}

.utoEditor>div {
   width: 100%;
   height: 100%;
   overflow: auto;
   box-sizing: border-box;

}

.codeEdit {
   position: relative;
   z-index: 10;
   background: transparent;
   min-height: 256px;
}

.ace_editor * {
   z-index: auto !important;
}

.utoEditor .utoViewer {
   display: flex;
   width: 100%;
   height: 100%;
   justify-content: center;
   align-items: center;
   background-color: #000;
   overflow: scroll;

}

.utoBtn {
   width: 24px;
   height: 24px;
   padding: 4px;
   background: transparent;
   border-radius: 2px;
   position: absolute;
   bottom: 8px;
   left: 8px;
   z-index: 10;
   display: block;
}

.utoBtn:active {
   background-color: #999;
}

.pixelated {
   image-rendering: optimizeSpeed;
   /* Older versions of FF */
   image-rendering: -moz-crisp-edges;
   /* FF 6.0+ */
   image-rendering: -webkit-optimize-contrast;
   /* Safari */
   image-rendering: -o-crisp-edges;
   /* Opera */
   image-rendering: pixelated;
   /* Chrome, FF 41+, Edge */
   image-rendering: crisp-edges;
   /* Non-standard name, kept for compatibility */
}

.exampleGrid>div{
   cursor: pointer;
}


#footer {
   display: flex;
   flex-wrap: wrap;
   justify-content: space-around;
   margin-top: 64px;
   border-top: 1px solid #999;
   flex-shrink: 0;
   padding: 64px 5% 64px calc(5% + 16px);
   background-color: #f8f8f8;
}


.footer-section {
   flex: 1;
   margin: 10px;
}

.footer-links p {
   display: flex;
   flex-wrap: wrap;
   gap: 16px; /* Spacing between links */
}

.footer-links a {
   text-decoration: none;
   color: #000;
}

.footer-links a:hover {
   text-decoration: underline;
}



.centerCont {
   display: flex;
   /* flex-direction: column; */
   align-items: center;
   justify-content: center;
}

.image-item img {
   width: 100%;
   height: auto;
   display: block;
}

.label {
   margin-top: 8px;
   font-size: 14px;
   width: 100%;
   /* text-align: center; */
}



@media (max-width: 768px) {
   #sidebar {
      transform: translateX(-100%);
   }

   #sidebar.full {
      width: 100%;
   }

   #sidebar.open {
      transform: translateX(0);
   }

   #main {
      margin-left: 0;
   }

   #topBar {
      transform: translateY(0);
   }

   #main {
      margin-left: 0 !important;
   }

   #sidebar h1 {
      visibility: hidden;
   }

   nav li {
      font-size: 21px;
   }

   #main>section {
      padding: 48px 16px;
   }

   section .halfCol {
      width: 100%;
      clear: both;
   }



   section>h3 {
      margin-top: 8px !important;
   }

   #footer{
      flex-direction: column;
   }

}

@media (max-width: 500px) {

   .two-column {
      grid-template-columns: 1fr;
      /* Single column layout on mobile */
   }

   /* .image-item {
      flex: 1 1 calc(100% - 16px);
   } */

}



/* ///////////////////////////////////////// */

/* single pages are simpler, with no side menu */
.singlePage {
   padding: 16px;
   margin: 0 5% 0 5%;
}

.singlePage>section {
   margin: 20px 0;
   padding: 0;
}

.singlePage h1 {
   padding: 2ch 0;
}

.singlePage h2,
.singlePage h3,
.singlePage h4 {
   /* margin-top: 20px; */
   padding: 20px 0 0 0;
   /* border-top: 1px solid #999; */
}

.singlePage p {
   margin: 5px 0 20px 0;
}



ul{
   padding-left: 1.5em;
   
}

/* Minimalist List Style */
.singlePage ul,
#sidebar ul {
   list-style: none;
   padding-left: 1.5em;   
   line-height: 1.7;
}

/* Minimalist List Style */
.singlePage ol{
   padding-left: 1.5em;
   line-height: 1.7;
}


#sidebar ul {
   line-height: 2;
}



.singlePage ol li {
   /* counter-increment: list-counter; */
   /* Increment the counter */
   position: relative;
   margin-bottom: 0.5em;
}

/* .singlePage ol li::before {
   content: counter(list-counter) ". ";
   position: absolute;
   left: -1.5em;
   color: #000;
} */

.singlePage ul li {
   position: relative;
   margin-bottom: 0.5em;
}

.singlePage ul li::before {
   content: "- ";
   /* Add dash for unordered list */
   position: absolute;
   left: -1.5em;
   /* Adjust position to match padding */
   color: #000;
   /* Set color */
}

#scrollToTopBtn {
   position: fixed;
   right: 8px;
   top: 8px;
   width: 40px;
   height: 40px;
   background-color: transparent;
   border: none;
   border-radius: 4px;
   cursor: pointer;
   display: none;
   align-items: center;
   justify-content: center;
}

#scrollToTopBtn:hover {
   background-color: #EEE;
}

#scrollToTopBtn svg {
   fill: white;
   width: 24px;
   height: 24px;
}

/* ///////////////////////////////////////// */





.responsive-iframe-container {
   position: relative;
   width: 100%;
   padding-bottom: 56.25%;
   /* 16:9 aspect ratio */
   height: 0;
   overflow: hidden;
}

.responsive-iframe-container iframe {
   position: absolute;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   border: 0;
}




.inner>p::-webkit-scrollbar-track {
   -webkit-box-shadow: none;
   background: none;
   border-left: 1px solid #333;
}

.inner>p::-webkit-scrollbar {
   width: 12px;
   background: none;
}

.inner>p::-webkit-scrollbar-thumb {
   background: none;
   border: 1px solid #333;
   border-right: none;
}




.node circle {
   fill: #000;
   stroke: #000;
   stroke-width: 1px;
}

.link {
   fill: none;
   stroke: #000;
   stroke-width: 1px;
}





.loader {
   height: 100%;
   width: 100%;
   display: -ms-flexbox;
   display: -webkit-box;
   display: flex;
   -ms-flex-align: center;
   -ms-flex-pack: center;
   -webkit-box-align: center;
   align-items: center;
   -webkit-box-pack: center;
   justify-content: center;
}

.loader {
   position: fixed;
   top: 0;
   left: 0;
   width: 100%;
   background-color: #FFF;
}

img {
   display: block;
   width: 100%;
   height: auto;
}

.disapper {
   animation: vanish 0s forwards;
}

@keyframes vanish {
   100% {
      opacity: 0;
      visibility: hidden;
   }
}


[data-tooltip] {
   position: relative;
}

[data-tooltip]:before {
   font-size: 11px;
   content: attr(data-tooltip);
   position: absolute;
   opacity: 0;
   z-index: 1000;
   pointer-events: none;
   top: 0px;
   left: 50%;
   transform: translateX(-50%);
   transition: 256ms all ease;
   padding: 4px 6px;
   color: #333;
}

[data-tooltip]:hover:before {
   opacity: 1;
   background: #EEE;
   border: 1px solid #CCC;
   top: -30px;
}