* {
    box-sizing: border-box;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    /* background: var(--background-color); */
}

:root {
    --vis-padding: 0.3em;
    --td-font-size: 1.5em;
    --kmp-failure-suffix-color: var(--correct);
    /* #66cdaa; */
    --kmp-failure-prefix-color: var(--correct);
    --kmp-failure-overlap-top: 20%;
    --kmp-failure-overlap-bottom: calc(100% - var(--kmp-failure-overlap-top));
    --background-color: white;
     /* #d5c9df ; */
    --correct: #00ff00;
    --incorrect: #ff0000;
    --btn-color: #4f46e5;
    --selected-btn-color: #ff69b4;
    --pseudocode-highlighted: #fec746;
    --vis-control-btn-color: #5e548e;
}


body {
    margin: 0 auto 2em auto;
    background: var(--background-color);
    color: #333;
    line-height: 1;
    display: grid;
    justify-content: center; /* Horizontal centering */
    align-items: center;     /* Vertical centering */
    transform-origin: top;
    transform: scale(1.5);
    width:60vw;
}

.btn-container {
    padding: 0px;
    border-radius: 0px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
    margin: 0 auto 25px auto;
    width:50vw;
}



.vis-container {
    padding: 0px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
    margin: 0 auto 25px auto;
    overflow-x:hidden;
    overflow-y:hidden;
    width: 50vw;
    /* max-width: 1000px; */
}

.scrollable-div {
    overflow-x: scroll;
    max-height:35vh;
    display: block;
}

.btn-container input[type="text"] {
    padding: 8px 10px;
    margin: 6px 8px;
    border-radius: 6px;
    border: 1px solid #ccc;
    min-width: 260px;
}

.btn-container input[type="text"]:focus {
    outline: none;
    border-color: #4f46e5;
    box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.15);
}

.btn {
    padding: 10px 16px;
    margin: 8px 6px;
    border-radius: 8px;
    border: none;
    cursor: pointer;
    font-weight: 500;
    color: white;
    transition: background 0.2s, transform 0.1s, box-shadow 0.1s;
}

.btn-unselected {
    background: var(--btn-color);
}

.btn-selected {
    background: var(--selected-btn-color);
}

.btn-vis-control {
    background: var(--vis-control-btn-color);

}

.btn:hover:not(:disabled) {
    /* background: #4338ca; */
    filter: brightness(0.75);
    transform: translateY(-1px);
    box-shadow: 0 4px 10px rgba(79, 70, 229, 0.25);
}

.btn:disabled {
    background: #c7c7c7;
    cursor: not-allowed;
}

.green-btn:not(:disabled) {
    background: #10b981;
}

.green-btn:hover:not(:disabled) {
    background: #059669;
}

td {
  /* border-collapse: collapse; */
  /* border: 1px solid black; */
  text-align: center;
  width:fit-content;
  padding: var(--vis-padding);
  font-family: monospace;
  font-size: var(--td-font-size);
}

th {
    position:sticky;
    top: 0;
    text-align: left;
    width:fit-content;
    padding: var(--vis-padding);
    font-family: monospace;
    font-size: var(--td-font-size);
    background: var(--background-color);
    z-index: 1000;
}

.pseudocode-td {
    text-align: left;
    padding: 0;
    font-size:1em;
    background:#ccc;
}

.pseudocode-highlighted-td {
    text-align: left;
    padding: 0;
    font-size:1em;
    background: var(--pseudocode-highlighted);
}

.suffix-array-td {
    padding-left: calc(var(--vis-padding)/2);
    padding-right: calc(var(--vis-padding)/2);
    padding-top: calc(var(--vis-padding)/4);
    padding-bottom: calc(var(--vis-padding)/4);
}

.info-text {
    text-align: left;
    font-size:1.3em;
}

.zw-td {
    max-width: 0pt;
    padding: 0px;
    overflow: visible;
}

.full-color-prefix-td {
    background-color: var(--kmp-failure-prefix-color);
}
.full-color-suffix-td {
    background-color: var(--kmp-failure-suffix-color);
}

.half-color-prefix-td {
  background-image: linear-gradient(to bottom, var(--kmp-failure-prefix-color) var(--kmp-failure-overlap-top), transparent var(--kmp-failure-overlap-top));
}
.half-color-suffix-td {
  background-image: linear-gradient(to bottom, transparent var(--kmp-failure-overlap-bottom), var(--kmp-failure-suffix-color) var(--kmp-failure-overlap-bottom));
}

.half-color-overlap-td {
  background-image: linear-gradient(to bottom, var(--kmp-failure-prefix-color) 0% var(--kmp-failure-overlap-top), transparent var(--kmp-failure-overlap-top) var(--kmp-failure-overlap-bottom), var(--kmp-failure-suffix-color) var(--kmp-failure-overlap-bottom));
}


.half-color-overlap-correct-prefix-td {
  background-image: linear-gradient(to bottom, var(--correct) 0% var(--kmp-failure-overlap-top), transparent var(--kmp-failure-overlap-top) var(--kmp-failure-overlap-bottom), var(--kmp-failure-suffix-color) var(--kmp-failure-overlap-bottom));
}

.half-color-overlap-incorrect-prefix-td {
  background-image: linear-gradient(to bottom, var(--incorrect) 0% var(--kmp-failure-overlap-top), transparent var(--kmp-failure-overlap-top) var(--kmp-failure-overlap-bottom), var(--kmp-failure-suffix-color) var(--kmp-failure-overlap-bottom));
}
.half-color-correct-suffix-td {
  background-image: linear-gradient(to bottom, transparent var(--kmp-failure-overlap-bottom), var(--correct) var(--kmp-failure-overlap-bottom));
}

.half-color-incorrect-suffix-td {
  background-image: linear-gradient(to bottom, transparent var(--kmp-failure-overlap-bottom), var(--incorrect) var(--kmp-failure-overlap-bottom));
}
.half-color-correct-prefix-td {
  background-image: linear-gradient(to bottom, var(--correct) var(--kmp-failure-overlap-top), transparent var(--kmp-failure-overlap-top));
}

.half-color-incorrect-prefix-td {
  background-image: linear-gradient(to bottom, var(--incorrect) var(--kmp-failure-overlap-top), transparent var(--kmp-failure-overlap-top));
}

.incorrect-td {
    background-color: var(--incorrect) ;
    color: #ffffff;
}

.correct-td {
    background-color: var(--correct);
}

table.suffix-table td {
    text-align: left;
}

#pad-ed {
    height: 200px;
}
