@charset "UTF-8";
/**
 * uaplus.css version 0.2.0
 */
/**
 * 1. Different box model
 * 
 * We use the traditional box model, where the padding and border 
 * of the element is drawn inside and not outside the specified 
 * width and height. That makes combining relative and absolute 
 * units in properties like <code>inline-size</code> and 
 * <code>block-size</code> easier.
 * 
 * See https://en.wikipedia.org/wiki/CSS_box_model
 */
*,
*::after,
*::before {
  box-sizing: border-box;
}

/**
 * 2. Improve focus styles
 *
 * Add spacing between content and its focus outline.
 */
:where(:focus-visible) {
  outline-offset: 3px;
}

/**
 * 3. Disable text size adjustment
 * 
 * To improve readability on non-mobile optimized websites, browsers
 * like mobile Safari increase the default font size when you switch
 * a website from portrait to landscape. We don't want that for our 
 * optimized sites.
 *
 * See https://kilianvalkhof.com/2022/css-html/your-css-reset-needs-text-size-adjust-probably/
 */
:where(html) {
  -webkit-text-size-adjust: none;
  text-size-adjust: none;
}

/**
 * 4. Increase line height
 *
 * Long paragraphs are easier to read if the line height is higher.
 */
:where(html) {
  line-height: 1.5;
}

/**
 * 5. Add scrollbar gutter
 *
 * Prevent the page from “jumping” when switching from a long to a short page.
 *
 */
:where(html) {
  scrollbar-gutter: stable;
}

/**
 * 6. Remove UA styles for h1s nested in sectioning content
 *
 * Nesting h1s in section, articles, etc., shouldn't influence the 
 * styling of the heading since nesting doesn't influence 
 * semantics either.
 * 
 * See https://github.com/whatwg/html/issues/7867#issuecomment-2632395167
 * See https://github.com/whatwg/html/pull/11102
 * See https://html.spec.whatwg.org/#sections-and-headings
 */
:where(h1) {
  font-size: 2em;
  margin-block: 0.67em;
}

/**
 * 7. Improve abbreviations with titles
 * 
 * The abbr element with the title isn't helpful regarding 
 * accessibility because support is inconsistent, and it's only 
 * accessible to some users. Still, it's commonly used. 
 * This rule shows a dotted underline on abbreviations in all 
 * browsers (there's a bug in Safari) and changes the cursor.
 * 
 * See https://adrianroselli.com/2024/01/using-abbr-element-with-title-attribute.html
 */
:where(abbr[title]) {
  cursor: help;
  text-decoration-line: underline;
  text-decoration-style: dotted;
}

/**
 * 8. Optimize mark element in Forced Colors Mode
 *
 * The colors of the mark element don't change in Forced Colors Mode,
 * which can be problematic. Use system colors instead.
 * 
 * See https://adrianroselli.com/2017/12/tweaking-text-level-styles.html#MarkWHCM
 */
@media (forced-colors: active) {
  :where(mark) {
    color: HighlightText;
    background-color: Highlight;
  }
}
/**
 * 9. Avoid overflow caused by embedded content
 * 
 * Ensure that embedded content (audio, video, images, etc.) 
 * doesn't overflow its container.
 */
:where(audio, iframe, img, svg, video) {
  max-block-size: 100%;
  max-inline-size: 100%;
}

/**
 * 10. Prevent fieldsets from causing overflow
 *
 * Reset the default `min-inline-size: min-content` to prevent
 * children from stretching fieldsets
 *
 * See https://github.com/twbs/bootstrap/issues/12359
 * and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
 */
:where(fieldset) {
  min-inline-size: 0;
}

/**
 * 11. Turn labels into block elements
 * 
 * Labels for inputs, selects, and textarea should be block 
 * elements.
 */
:where(label):has(+ :where(input:not([type=radio], [type=checkbox]), select, textarea)) {
  display: block;
}

/**
 * 12. Increase the block-size of textareas
 *
 * The default height of textareas is small. We increase it a bit.
 */
:where(textarea:not([rows])) {
  min-block-size: 6em;
}

/**
 * 13. Inherit font styling in form elements
 * 
 * buttons, inputs, selects, and textarea should have the same font
 * family and size as the rest of the page.
 */
:where(button, input, select, textarea) {
  font-family: inherit;
  font-size: inherit;
}

/**
 * 14. Normalize search input styles
 *  
 * Remove the rounded corners of search inputs on macOS and IOS 
 * and normalize the background color
 */
:where([type=search]) {
  -webkit-appearance: textfield;
}

/* iOS only */
@supports (-webkit-touch-callout: none) {
  :where([type=search]) {
    border: 1px solid -apple-system-secondary-label;
    background-color: canvas;
  }
}
/**
 * 15. Maintain direction in some input types
 * 
 * Some input types should remain left-aligned in right-to-left
 * languages,but only if the value isn't empty because the 
 * placeholder should be right-aligned.
 *
 * See https://rtlstyling.com/posts/rtl-styling#form-inputs
 */
:where(input):where([type=tel], [type=url], [type=email], [type=number]):not(:placeholder-shown) {
  direction: ltr;
}

/**
 * 16. Improve table styling
 *  
 * With the default styling, tables are hard to scan. These rules 
 * add padding and collapsed borders.
 */
:where(table) {
  border-collapse: collapse;
  border: 1px solid;
}

:where(th, td) {
  border: 1px solid;
  padding: 0.25em 0.5em;
  vertical-align: top;
}

/**
 * 17. Fading dialogs
 *  
 * Add fade in and fade out transitions for the dialog element
 * and backdrops
 */
:where(dialog)::backdrop {
  background: oklch(0% 0 0/0.3);
}

:where(dialog, [popover]),
:where(dialog)::backdrop {
  opacity: 0;
  transition: opacity 150ms ease-out, display 150ms allow-discrete, overlay 150ms allow-discrete;
}

:where(dialog[open], :popover-open),
:where(dialog[open])::backdrop {
  opacity: 1;
}

@starting-style {
  :where(dialog[open], :popover-open),
:where(dialog[open])::backdrop {
    opacity: 0;
  }
}
/**
 * 18. Increase specificity of [hidden]
 *  
 * Make it harder to accidentally unhide elements with the 
 * [hidden] attribute while still maintaining the until-found 
 * functionality.
 */
[hidden]:not([hidden=until-found]) {
  display: none !important;
}

/**
 * 19. Turn images into block elements
 */
:where(img) {
  display: block;
}

/**
 * 20. Change cursor of <summary>
 *
 * By default, only the ::marker inside the summary uses the 
 * default cursor.
 */
:where(summary) {
  cursor: default;
}

/**
 * 21. Remove the default border from iframes
 */
:where(iframe) {
  border: none;
}

html {
  padding: 0;
  margin: 0;
}

body {
  padding: 0;
  margin: 0;
}

a {
  text-decoration: none;
}

* {
  box-sizing: border-box;
}
*:focus {
  outline: none;
}

input {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  border: none;
  outline: none;
  background: none;
  margin: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  box-shadow: none;
  border-radius: 0;
}

button {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  border: none;
  outline: none;
  background: none;
  margin: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  text-align: inherit;
  box-shadow: none;
  border-radius: 0;
  cursor: pointer;
  transition: all 0.201s;
}
button:focus, button:active {
  outline: none;
}

html {
  height: 100%;
  width: 100%;
  overflow: hidden;
}

body {
  height: 100%;
  width: 100%;
  overflow: hidden;
  font-family: Roboto, sans-serif;
}

html::-webkit-scrollbar,
body::-webkit-scrollbar {
  display: none;
  width: 0;
}

textarea {
  field-sizing: content;
  color: inherit;
}

.page-container {
  display: grid;
  grid-template-columns: minmax(200px, 1fr) 3fr;
  grid-template-rows: 64px 1fr 148px 32px;
  gap: 0.3rem;
  grid-template-areas: "header header" "leftnav content" "chatinput chatinput" "footer footer";
  overflow-y: hidden;
  height: 100%;
  width: 100%;
}
.page-container .page-leftnav {
  grid-area: leftnav;
  display: flex;
  flex-direction: column;
  flex: 0 1 auto;
  border: #7b1822 solid 1px;
  min-height: 0;
  overflow-y: hidden;
}
.page-container .page-leftnav .page-leftnav-item {
  display: block;
}
.page-container .page-header {
  grid-area: header;
  display: flex;
  flex-direction: row;
  padding: 0 16px 0 0;
  border: #7b1822 solid 1px;
  justify-content: center;
  justify-items: center;
}
.page-container .page-content {
  grid-area: content;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  width: 99.999%;
  padding: 0;
  margin-right: 1px;
  border: #7b1822 solid 1px;
  overflow-y: scroll;
  overflow-x: hidden;
}
.page-container .chatinput-container {
  grid-area: chatinput;
  border: #7b1822 solid 1px;
  overflow-y: scroll;
}
.page-container .page-footer {
  grid-area: footer;
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  padding: 0 16px;
  border: #7b1822 solid 1px;
}

body {
  background-color: #f1f2ff;
  color: #15181b;
}

a {
  color: inherit;
  text-decoration: underline;
}

.page-header-content {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  height: 100%;
  width: 100%;
  padding: 0;
}

.page-header-title {
  display: flex;
  flex-flow: row wrap;
  flex: 1 1 auto;
  align-items: center;
  justify-content: flex-start;
  font-size: 150%;
  font-weight: bold;
  padding: 0 16px;
}

textarea,
.chat-response {
  display: flex;
  flex-flow: column wrap;
  flex: 1 1 auto;
  align-items: flex-start;
  justify-content: flex-start;
  border: #8e8f97 solid 1px;
  background-color: #aeaeae;
}

.button {
  display: flex;
  flex-flow: row nowrap;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  padding: 1px 16px;
  color: #f1f2ff;
  background-color: #55545e;
  border: #8e8f97 solid 1px;
  border-radius: 16px;
  cursor: pointer;
  transition: 0.2s;
}
.button:hover {
  background-color: #313136;
}
.button.table-action {
  padding-top: 0;
  padding-bottom: 0;
  height: 20px;
  margin: 4px 0;
}
.button.table-action:first-of-type {
  margin-right: 0.5rem;
}

.vert-spacer {
  display: flex;
  flex: 0 1 auto;
  height: 16px;
}

.page-leftnav .page-leftnav-menu {
  display: flex;
  flex-flow: column wrap;
}

.leftnav-item {
  display: flex;
  justify-content: flex-start;
  border-radius: 0;
  border: none;
  background-color: #f1f2ff;
  color: #15181b;
}
.leftnav-item:hover {
  background-color: #e7e9ff;
}
.leftnav-item.current {
  background-color: #d8daff;
}
.leftnav-item.level-0 {
  margin: 4px 0 4px 0;
}
.leftnav-item.level-2 {
  margin: 4px 0 4px 16px;
}
.leftnav-item.level-2.current {
  background-color: #c0c0cb;
}

.menu-section {
  padding: 0 4px 0 8px;
  margin-left: 16px;
}

div.current-topmenu {
  padding: 8px;
  margin-left: 16px;
}

button.current-topmenu,
.button.current-topmenu {
  background-color: #1d212b;
  border-color: #be993b;
}

input,
textarea {
  display: flex;
  border: #8e8f97 solid 1px;
  border-radius: 4px;
  cursor: auto;
  background-color: #e7e9ff;
  transition: 0.2s;
}
input:hover,
textarea:hover {
  background-color: #dddfff;
}
input[type=file],
textarea[type=file] {
  cursor: pointer;
}

.chatsession-output-container,
.chatsession-history-container {
  display: flex;
  flex: 0 1 auto;
  flex-direction: column;
  gap: 16px;
  max-width: 1200px;
  width: 98%;
  margin: 0 1%;
}

.chatsession-stream p {
  margin: 0;
}

.chatesession-section-header {
  display: flex;
  flex-flow: row nowrap;
  border-bottom: #ad0876 solid 1px;
  font-weight: bold;
  font-size: 150%;
}

.chatsession-history-message {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  width: 100%;
  border: #8e8f97 solid 1px;
  padding: 8px;
  border-radius: 4px;
  gap: 8px;
}
.chatsession-history-message p {
  margin: 0;
}
.chatsession-history-message.user {
  border-color: #007c00;
}

.chatsession-user-message {
  display: flex;
  flex-flow: column;
  flex: 1 1 auto;
  justify-content: flex-start;
  width: 100%;
  padding: 8px;
  margin: 8px 0;
  background-color: #e7e9ff;
  border: #007c00 solid 1px;
  border-radius: 4px;
}

.chatesession-role-label {
  display: flex;
  flex-flow: row nowrap;
  border-bottom: #ad0876 solid 1px;
}

.chatsession-history {
  display: flex;
  flex-flow: column nowrap;
  flex: 1 1 auto;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 8px;
  padding: 8px 0;
  margin: 8px 0;
}

.chatsession-output {
  display: flex;
  flex-flow: column nowrap;
  flex: 1 1 auto;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 0;
  padding: 0;
  margin: 0;
}

.chatinput-content {
  display: flex;
  flex-flow: row nowrap;
  flex: 1 1 auto;
  align-items: flex-start;
  justify-content: flex-start;
}

.chatinput-button-box {
  display: flex;
  flex: 0 1 auto;
  flex-direction: column;
  justify-content: flex-start;
  align-items: center;
  padding: 0 16px;
  gap: 8px;
}
.chatinput-button-box .button {
  display: flex;
  flex: 0 0 auto;
  white-space: nowrap;
}

#copy-stream-btn:disabled,
#abort-stream-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.chatinput-tabs-container {
  display: flex;
  flex-flow: row nowrap;
  flex: 1 1 auto;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 0 16px;
  height: 48px;
}
.chatinput-tabs-container .button.icon {
  display: flex;
  justify-self: center;
  align-items: center;
  border-radius: unset;
  padding: 0;
  border: none;
  background: none;
  width: 48px;
  height: 48px;
}
.chatinput-tabs-container .button.icon:hover {
  background-color: #e7e9ff;
}
.chatinput-tabs-container .button.icon svg {
  display: flex;
  width: 48px;
  height: 48px;
  fill: #15181b;
  margin: 0;
}

.chatinput-file-upload-container {
  display: flex;
  flex-flow: row wrap;
  flex: 0 1 auto;
  align-items: flex-start;
  justify-content: flex-start;
  padding: 0 2px;
  width: 25%;
}

.chatsession-list-container-wrapper {
  display: flex;
  flex-flow: column;
  flex: 0 1 100%;
  align-items: stretch;
  justify-content: flex-start;
  min-height: 0;
  overflow-y: scroll;
}

.chatsession-list-container {
  display: flex;
  flex-flow: column;
  flex: 1 0 auto;
  align-items: stretch;
  justify-content: flex-start;
  padding: 8px;
  gap: 4px;
}

.chatsession-list-button-box {
  display: flex;
  flex-flow: row nowrap;
  flex: 0 1 auto;
}

.chatsession-list-button-wrapper {
  display: flex;
  flex-direction: column;
  flex: 0 1 auto;
  justify-content: center;
  align-items: flex-start;
  height: 100%;
}

.chatsession-list-button-wrapper2 {
  display: flex;
  flex-flow: column nowrap;
  flex: 0 1 auto;
}

button.chatsession-list {
  display: flex;
  flex-flow: row wrap;
  margin-top: 0;
  height: 100%;
}
button.chatsession-list.select {
  border-radius: 16px 0 0 16px;
  border-right: none;
  background-color: #f1f2ff;
  color: #15181b;
}
button.chatsession-list.select:hover {
  background-color: #e7e9ff;
}
button.chatsession-list.delete {
  border-radius: 0 16px 16px 0;
  background-color: #aeb0b9;
  border-left: none;
}
button.chatsession-list.delete:hover {
  background-color: #a0a3ad;
}

.chatsession-delete-container {
  display: flex;
  flex-flow: column nowrap;
  gap: 16px;
  justify-content: center;
  align-items: center;
  margin: 64px auto;
  padding: 64px;
  border: #f527c8 solid 5px;
}

.chatsession-output-container {
  display: flex;
  flex-flow: row nowrap;
  gap: 16px;
  width: 98%;
  margin: 0 1%;
  padding: 8px;
  border: #8e8f97 solid 1px;
  border-radius: 4px;
}

.chatsession-output {
  display: flex;
  flex: 0 0 auto;
  flex-direction: column;
  gap: 16px;
  width: 100%;
}

.chatsession-status-container {
  display: flex;
  flex-flow: row nowrap;
  padding: 0 16px;
  border: #8e8f97 solid 1px;
  border-radius: 4px;
}

.chatsession-status {
  display: flex;
  flex-direction: column;
  min-height: 32px;
}

.chatsession-stream {
  display: flex;
  flex-direction: column;
  min-height: 32px;
}

.object-info-box-outer {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 8px;
  border: #8e8f97 solid 1px;
  border-radius: 4px;
}

.object-info-box-row {
  display: flex;
  flex-direction: row;
  gap: 8px;
}

think {
  margin-bottom: 32px;
  font-style: italic;
}

:root {
  --chat-bg: #f7f7f8;
  --chat-panel-bg: #ffffff;
  --chat-border: #e5e7eb;
  --chat-text: #111827;
  --chat-muted: #6b7280;
  --user-bg: #2563eb;
  --user-text: #ffffff;
  --assistant-bg: #ffffff;
  --assistant-text: #111827;
  --code-bg: #f3f4f6;
  --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.08);
  --shadow-md: 0 8px 24px rgba(15, 23, 42, 0.08);
}

.chat-history {
  background: var(--chat-bg);
  padding: 24px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.chat-message {
  display: flex;
  gap: 12px;
  max-width: min(900px, 100%);
  animation: chatMessageIn 140ms ease-out;
}

.chat-message--user {
  align-self: flex-end;
  flex-direction: row-reverse;
}

.chat-message--assistant {
  align-self: flex-start;
}

.chat-message__avatar {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  border-radius: 100px;
  display: grid;
  place-items: center;
  font-size: 1rem;
  font-weight: 700;
  box-shadow: var(--shadow-sm);
}

.chat-message--user .chat-message__avatar {
  background: #1d4ed8;
  color: #ffffff;
}

.chat-message--assistant .chat-message__avatar {
  background: #10b981;
  color: #ffffff;
}

.chat-message__body {
  min-width: 0;
  max-width: 760px;
}

.chat-message__meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
}

.chat-message--user .chat-message__meta {
  justify-content: flex-end;
}

.chat-message__role {
  color: var(--chat-muted);
  font-size: 0.88rem;
  font-weight: 600;
}

.chat-message__copy {
  border: 1px solid var(--chat-border);
  background: transparent;
  color: #374151;
  border-radius: 8px;
  width: 30px;
  height: 30px;
  display: inline-grid;
  place-items: center;
  cursor: pointer;
  opacity: 0;
  transform: translateY(5px);
  transition: opacity 200ms ease, background-color 200ms ease, border-color 200ms ease, transform 200ms ease;
}

.chat-message:hover .chat-message__copy,
.chat-message__copy:focus-visible {
  opacity: 1;
}

.chat-message__copy:hover {
  background: #f9fafb;
  border-color: #cbd5e1;
  transform: translateY(0);
}

.chat-message__copy.is-copied {
  color: #059669;
  border-color: #86efac;
  background: #ecfdf5;
}

.chat-message__content {
  border-radius: 18px;
  padding: 14px 16px;
  line-height: 1.55;
  font-size: 0.96rem;
  box-shadow: var(--shadow-sm);
  overflow-wrap: anywhere;
}

.chat-message--user .chat-message__content {
  background: var(--user-bg);
  color: var(--user-text);
  border-top-right-radius: 6px;
}

.chat-message--assistant .chat-message__content {
  background: var(--assistant-bg);
  color: var(--assistant-text);
  border: 1px solid var(--chat-border);
  border-top-left-radius: 6px;
}

/* Markdown content polishing */
.chat-message__content > :first-child {
  margin-top: 0;
}

.chat-message__content > :last-child {
  margin-bottom: 0;
}

.chat-message__content p {
  margin: 0 0 0.85em;
}

.chat-message__content ul,
.chat-message__content ol {
  margin: 0.75em 0;
  padding-left: 1.4em;
}

.chat-message__content li {
  margin: 0.25em 0;
}

.chat-message__content blockquote {
  margin: 0.9em 0;
  padding: 0.2em 0 0.2em 1em;
  border-left: 3px solid #cbd5e1;
  color: #4b5563;
}

.chat-message__content code {
  background: rgba(15, 23, 42, 0.08);
  border-radius: 5px;
  padding: 0.12em 0.32em;
  font-size: 0.9em;
}

.chat-message--user .chat-message__content code {
  background: rgba(255, 255, 255, 0.18);
}

.chat-message__content pre {
  background: #111827;
  color: #f9fafb;
  padding: 14px;
  border-radius: 12px;
  overflow-x: auto;
  margin: 1em 0;
}

.chat-message__content pre code {
  background: transparent;
  padding: 0;
  color: inherit;
}

.chat-message__content table {
  border-collapse: collapse;
  width: 100%;
  margin: 1em 0;
  font-size: 0.92rem;
}

.chat-message__content th,
.chat-message__content td {
  border: 1px solid #d1d5db;
  padding: 8px 10px;
  text-align: left;
}

.chat-message__content th {
  background: #f3f4f6;
}

@keyframes chatMessageIn {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (max-width: 720px) {
  .chat-history {
    padding: 14px;
  }
  .chat-message {
    max-width: 100%;
  }
  .chat-message__body {
    max-width: calc(100vw - 88px);
  }
  .chat-message__content {
    font-size: 0.93rem;
  }
  .chat-message__copy {
    opacity: 1;
  }
}
.login-container {
  display: flex;
  flex-flow: column wrap;
  align-items: center;
  flex-grow: 0;
  font-family: Arial, sans-serif;
  color: #15181b;
  margin: 4rem auto;
  padding: 1rem;
  background: #f7f7f7;
  border-radius: 12px;
}
.login-container .card {
  display: flex;
  flex-flow: column wrap;
  align-items: flex-start;
  justify-content: flex-start;
  background: white;
  border-radius: 12px;
  padding: 2rem;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
}
.login-container label {
  display: block;
  margin-top: 1rem;
  margin-bottom: 0.4rem;
  font-weight: 600;
}
.login-container input {
  width: 100%;
  padding: 0.8rem;
  border: 1px solid #cccccc;
  border-radius: 8px;
  box-sizing: border-box;
  color: #15181b;
}
.login-container button.login {
  margin-top: 1.5rem;
  width: 100%;
  padding: 0.9rem;
  border: none;
  border-radius: 8px;
  background: #2563eb;
  color: white;
  font-size: 1rem;
  cursor: pointer;
}
.login-container .error {
  background: #fee2e2;
  color: #991b1b;
  padding: 0.75rem;
  border-radius: 8px;
  margin-bottom: 1rem;
}

.table-container {
  display: flex;
  flex-flow: column;
  border: #313136 solid 1px;
}

.css-table {
  display: table;
}
.css-table.item-table {
  width: 100%;
}
.css-table.item-table .css-th, .css-table.item-table .css-td {
  border: #8e8f97 solid 1px;
}
.css-table.item-table .css-th {
  background-color: #8e8f97;
}
.css-table .css-thead {
  display: table-header-group;
}
.css-table .css-thead .css-trh {
  display: table-row;
}
.css-table .css-tbody {
  display: table-row-group;
}
.css-table .css-tbody .css-tr {
  display: table-row;
}
.css-table .css-tbody .css-tr.disabled {
  background-color: #c38a8a;
}
.css-table .css-tfoot {
  display: table-footer-group;
}
.css-table .css-col {
  display: table-column;
}
.css-table .css-colgroup {
  display: table-column-group;
}
.css-table .css-th, .css-table .css-td {
  display: table-cell;
  white-space: nowrap;
  padding: 0 8px;
}
.css-table .css-th {
  font-weight: bold;
}
.css-table .css-caption {
  display: table-caption;
}

.css-table.lined {
  border-collapse: collapse;
}
.css-table.lined .css-th, .css-table.lined .css-td {
  border: #8e8f97 solid 1px;
}

.css-table.striped .css-tr:nth-of-type(even) {
  background-color: #d6d7e4;
}
.css-table.striped .css-tr:nth-of-type(even):hover {
  background-color: #cdcede;
}
.css-table.striped .css-tr:nth-of-type(even).disabled {
  background-color: #ffc5b7 !important;
}
.css-table.striped .css-tr:nth-of-type(odd) {
  background-color: #f1f2ff;
}
.css-table.striped .css-tr:nth-of-type(odd):hover {
  background-color: #e2e4ff;
}
.css-table.striped .css-tr:nth-of-type(odd).disabled {
  background-color: #ffc5b7 !important;
}

.css-table.row-hover .css-tr {
  transition: 0.2s;
}
.css-table.row-hover .css-tr:hover {
  background-color: #d6d7e4;
}

button.icon-button {
  all: unset;
}
button.icon-button:hover {
  all: unset;
}

button.icon-button {
  background: none;
  border: none;
  padding: 0;
}
button.icon-button:hover {
  background: none;
  cursor: pointer;
}
button.icon-button svg.icon48 {
  width: 24px;
  height: 24px;
}
button.icon-button svg.icon48 .path {
  transition: 0.2s;
}
button.icon-button svg.icon48:hover .path {
  stroke: #000000;
  stroke-width: 3px;
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
.msg-column {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: center;
  z-index: 1000;
  margin: 0;
  padding: 0;
}
.msg-column .msg-content {
  display: flex;
  flex-flow: row nowrap;
  justify-content: flex-start;
  align-items: center;
  width: 100%;
  height: 100%;
  max-width: 1200px;
  margin: 0 0 32px 0;
  padding: 16px 16px 16px 0;
  border-color: transparent;
  border-width: 1px 1px 1px 8px;
  border-style: solid;
  border-radius: 8px;
}
.msg-column .msg-content .msg-header {
  display: flex;
  flex-flow: row nowrap;
  flex: 0 1 auto;
  justify-content: flex-start;
  align-items: center;
  height: 100%;
  padding: 0 8px;
  background-color: transparent;
  font-size: 90%;
  font-weight: bold;
}
.msg-column .msg-content .msg-text {
  display: flex;
  flex-flow: row nowrap;
  flex: 1 1 auto;
  justify-content: flex-start;
  align-items: center;
  padding-left: 4px;
  height: 100%;
  font-size: 90%;
}
.msg-column .msg-content.warning, .msg-column .msg-content.warn {
  animation: fadeIn ease 0.7s;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
  background-color: #fff1e5;
  border-color: #ff9437;
}
.msg-column .msg-content.warning .msg-button, .msg-column .msg-content.warn .msg-button {
  fill: #ff9437;
}
.msg-column .msg-content.success {
  animation: fadeIn ease 0.7s;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
  background-color: #d9f1f2;
  border-color: #0097a7;
}
.msg-column .msg-content.success .msg-button {
  fill: #0097a7;
}
.msg-column .msg-content.info {
  animation: fadeIn ease 0.7s;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
  background-color: #e3f2fd;
  border-color: #1e88e5;
}
.msg-column .msg-content.info .msg-button {
  fill: #1e88e5;
}
.msg-column .msg-content.error {
  animation: fadeIn ease 0.7s;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
  background-color: #ffebee;
  border-color: #f44336;
}
.msg-column .msg-content.error .msg-button {
  fill: #f44336;
}

.streaming-status {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

.streaming-spinner {
  display: inline-block;
  width: 0.95rem;
  height: 0.95rem;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: streamingSpin 0.75s linear infinite;
  transform-origin: center;
}

@keyframes streamingSpin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.form-container-outer {
  display: flex;
  flex-flow: row;
  flex: 0 1 auto;
  justify-content: flex-start;
  align-items: flex-start;
  max-width: 1200px;
  width: 100%;
  padding: 0 16px 0 16px;
}

.form-container-inner {
  display: flex;
  flex-flow: column;
  flex: 1 1 auto;
  justify-content: flex-start;
  align-items: flex-start;
}

.form-element-group {
  display: flex;
  flex-flow: column;
  flex: 0 1 auto;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
  padding: 8px 4px 4px 4px;
  margin-top: 8px;
}
.form-element-group.missing {
  border: 2px solid #ff0000;
}
.form-element-group.missing .field-error {
  color: #ff0000;
}

.form-button-group-outer {
  display: flex;
  flex-flow: row nowrap;
  flex: 0 1 auto;
  justify-content: flex-start;
  align-items: center;
  width: 100%;
  padding: 16px 0 0 0;
}
.form-button-group-outer.right {
  justify-content: flex-end;
}

.form-button-group-inner {
  display: flex;
  flex-flow: row nowrap;
  gap: 16px;
  flex: 0 1 auto;
  justify-content: flex-start;
  align-items: center;
}

textarea,
input[type=password],
input[type=email],
input[type=text] {
  display: flex;
  flex-flow: column nowrap;
  flex: 1 0 100%;
  width: 100%;
  border: 1px solid #cccccc;
  padding: 5px;
  margin: 0;
}

.input-checkbox {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  max-width: 40px;
  max-height: 40px;
  border-radius: 4px;
  background-color: #e7e9ff;
}
.input-checkbox:before {
  content: "X";
  color: transparent;
}
.input-checkbox:checked {
  background-color: #5dffad;
}
.input-checkbox:checked:before {
  content: "X";
  font-size: 32px;
  color: black;
}

.view-text {
  display: flex;
  flex-flow: column nowrap;
  flex: 1 0 100%;
  width: 100%;
  min-height: 40px;
  border: 1px solid #cccccc;
  padding: 5px;
  margin: 0;
}
