﻿
@layer layout {

  a[target="_blank"]:not(.no-ext,.pre-ext,.tbc)::after,
  a[target="_new"]:not(.no-ext,.pre-ext,.tbc)::after,
  .ext:not(.pre-ext,.tbc)::after,
  .external-link:not(.pre-ext,.tbc)::after {
    content: "\f08e";
    font-family: 'FontAwesome','Font Awesome 5 Pro';
    font-size: .65em;
    vertical-align: top;
    align-self: flex-start;
    margin: 3px;
  }
    
  a[target="_blank"].pre-ext:not(.no-ext)::before,
  a[target="_new"].pre-ext:not(.no-ext)::before,
  ext.pre-ext::before,
  .external-link.pre-ext::before,
  a[target="_blank"].tbc:not(.no-ext)::before,
  a[target="_new"].tbc:not(.no-ext)::before,
  .ext.tbc::before,
  .external-link.tbc::before {
    content: "\f08e";
    font-family: 'FontAwesome','Font Awesome 5 Pro';
    font-size: .65em;
    vertical-align: top;
    align-self: flex-start;
    margin: 3px;
    float: right;
  }

  select,
  ::picker(select) {
    appearance: base-select;
  }

  select::picker-icon,
  ::picker-icon {
    color: #888;
  }

  ::picker(select) {
    color: var(--control-text-color);
    background-color: var(--control-bg-color);
    border: var(--control-focus-border);
  }

  ::checkmark {
    color: var(--control-selected-text-color);;
    background: var(--control-selected-bg-color);
    border-radius: 2em;
    width: 20px;
    text-align: center;
    font-weight: bold;
  }

  select {
    color: var(--control-text-color);
    background-color: var(--control-bg-color);
    border: 1px solid var(--control-grid-color);
    border-radius: 4px;
    display: flex;
    transition: box-shadow var(--transpeed) ease, border var(--transpeed) ease;

    &:open {
      border-bottom-left-radius: 0;
      border-bottom-right-radius: 0;
      box-shadow: var(--control-focus-shadow);
      border: var(--control-focus-border);
    }

    &:hover {
      border: var(--control-focus-border);
    }

    &:focus {
      border: var(--control-focus-border);
      box-shadow: var(--control-focus-shadow);
    }

    option {
      padding: 0 2px;

      &:has(::checkmark) {
        background: red;
      }
      &:hover {
        color: var(--control-hover-text-color);
        background-color: var(--control-hover-bg-color);
        outline: none;
      }
      &:focus {
        color: var(--control-focus-text-color);
        background-color: var(--control-focus-bg-color);
        outline: none;
      }
    }
  }

  input:not(:is(.k-widget input,[type="checkbox"],[type="radio"])),
  textarea {
    color: var(--control-text-color);
    background-color: var(--control-bg-color);
    border: 1px solid var(--control-grid-color);
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    transition: box-shadow var(--transpeed) ease, border var(--transpeed) ease;

    &:hover {
      border: var(--control-focus-border);
    }

    &:focus {
      border: var(--control-focus-border);
      box-shadow: var(--control-focus-shadow);
    }

    &::placeholder {
      color: #767676;
      font-style: italic;
    }
  }

  .attached-controls {
    display: inline-flex;

    > .attached {
      border-radius: 4px;
    }

    > .attached + .attached {
      border-top-left-radius: 0;
      border-bottom-left-radius: 0;
      border-left: none;
    }

    > .attached:has(+ .attached) {
      border-top-right-radius: 0;
      border-bottom-right-radius: 0;
      border-right: none;
    }
  }

  input:is([type="checkbox"],[type="radio"]) {
    color: var(--primary-text-color);
    background-color: var(--primary-color);
    accent-color: var(--primary-color);
    border: 1px solid var(--primary-color);
    border-radius: 4px;
    outline-color: black;
    outline-offset: 1px;
    margin: 0px;
    width: 1.2rem;
    height: 1.2rem;

    &:is(:disabled,[disabled],.disabled) {
      color: var(--control-disabled-contrast);
      background-color: var(--control-disabled-color);
      accent-color: var(--control-disabled-color);
    }
  }

  label:has(> input:is([type="checkbox"],[type="radio"])) {
    font-family: var(--ts-ff-body);
    font-weight: normal;
    display: flex;
    align-items: flex-start;
    column-gap: 5px;
    width: fit-content;
  }

  label:has(> input[type="checkbox"]:is(:disabled,[disabled],.disabled)),
  label:has(> input[type="radio"]:is(:disabled,[disabled],.disabled)) {
    color: var(--control-disabled-color);
    font-style: italic;
  }

  label.control-label {
    font-family: var(--ts-ff-labels);
    font-size: var(--ts-fs-sm);
    font-weight: bold;
    margin: 0;
    display: block;
    &.inline {
      display: inline-block;
    }
  }

  label.form-label {
    display: block;
    margin-bottom: 0;
    font-size: var(--ts-fs-sm);
  }
  input:is([type="checkbox"],[type="radio"]) ~ label.form-label {
    display: inline-block;
    cursor: pointer;
  }

  label.form-label:has(> input:is([type="checkbox"],[type="radio"])) {
    display: flex;
    align-items: center;
    justify-content: start;
    cursor: pointer;
  }

  .form-control {
    box-shadow: none;
  }
  
  .btn-default {
    text-shadow: none !important;
  }

  .btn {
    color: var(--btn-text-color);
    background: linear-gradient(to bottom,color-mix(in srgb, var(--btn-bg-color), #fff 25%) 10%,var(--btn-bg-color) 50%);
    background: var(--btn-bg-color);
    border: 1px solid var(--btn-bg-color);

    &:hover,
    &:focus {
      background: var(--btn-focus-color);
      border-color: var(--btn-focus-color);
    }
  }
  
  .btn:not(.attached,.-link,.-text,.btn-link,.btn-text) {
    border-radius: 1.5em;
    box-shadow: black 4px 4px 8px -4px;
    min-width: 100px;
    &:active {
      transform: translate(1px, 1px);
      box-shadow: black 4px 4px 8px -8px;
    }
  }

  .btn {
    color: var(--btn-text-color);
    background-color: var(--btn-bg-color);
    border: 1px solid var(--btn-bg-color);
    text-decoration: none;
    user-select: none;

    &.-flat,
    &.-tool,
    &.-icon {
      box-shadow: none !important;
    }

    &.-sub {
      color: var(--btn-sub-text-color);
      background-color: var(--btn-sub-bg-color);
      border-color: var(--btn-sub-text-color);
    }
    
    &.-rounded,
    &.-tool,
    &.-icon {
      border-radius: 4px;
    }

    &.-thin,
    &.-icon {
      font-size: 0.857rem;
      padding: 4px 10px;
      min-width: 0;
      min-height: 28px;
    }

    &:hover,
    &:focus {
      color: var(--btn-text-color);
      background-color: var(--btn-focus-color);
      border-color: var(--btn-focus-color);
    }
    
    &.-link {
      color: var(--link-color);
      background-color: var(--link-bg);
      border: none;
      padding: 0;
      text-decoration: none;
      cursor: pointer;
      box-shadow: none;
      outline-offset: -1px;

      &:hover {
        color: var(--link-hover);
        background-color: var(--link-bg);
        text-decoration: underline;
        box-shadow: none;
      }
      &:active,
      &:focus {
        color: var(--link-focus);
        background-color: var(--link-bg);
        text-decoration: underline;
        box-shadow: none;
      }
    }

    &.-wa, &.-w-auto { min-width: auto; }
    &.-sm, &.-w-sm { min-width: 90px; }
    &.-md, &.-w-md { min-width: 130px; }
    &.-lg, &.-w-lg { min-width: 180px; }
    &.-xl, &.-w-xl { min-width: 230px; }
  }

  .btn:is([disabled],[readonly],.disabled) {
    box-shadow: none;
    &,
    &:active,
    &:hover,
    &:focus {
      color: var(--disabled-text-color) !important;
      background: var(--disabled-bg-color) !important;
      border-color: var(--disabled-border-color) !important;
      transform: none !important;
      box-shadow: none !important;
    }
  }

  input[type="checkbox"]:has(+ label.btn),
  input[type="checkbox"]:has(+ input[type="hidden"] + label.btn) {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    + label.btn::after,
    + input[type="hidden"] + label.btn::after {
      /*content: "\2610";*/
      /*content: "\2715";*/
      content: "\2716";
      margin-left: 8px;
    }
    &:checked + label.btn::after,
    &:checked + input[type="hidden"] + label.btn::after {
      /*content: "\2713";*/
      content: "\2714";
    }
    &:focus-visible + label.btn,
    &:focus-visible + input[type="hidden"] + label.btn {
      outline: var(--outline);
      outline-offset: -3px;
    }
  }
  

  .attachable {
    border-radius: 4px !important;
    &.btn {
      box-shadow: none;
    }
    &:has(+ .attachable),
    &:has(+ * > .attachable) {
      border-right: none !important;
      border-top-right-radius: 0px !important;
      border-bottom-right-radius: 0px !important;
    }
    + .attachable,
    + * > .attachable{
      border-left: none !important;
      border-top-left-radius: 0px !important;
      border-bottom-left-radius: 0px !important;
    }
  }

  .btn.-grouped:not(.hidden) {
    min-height: 28px;
    &:has(+ .-grouped:not(.hidden,.-first)) {
      &:not(.-sub) {
        border-bottom-color: var(--btn-text-color);
      }
      border-top-right-radius: 0;
      border-bottom-right-radius: 0;
    }
    + .-grouped:not(.hidden,.-first) {
      &:not(.-sub) {
        border-top-color: var(--btn-text-color);
      }
      border-top-left-radius: 0;
      border-bottom-left-radius: 0;
      margin-left: -1px;
    }
  }
    
  .btn.-vgrouped:not(.hidden) {
    min-width: 54px;
    &:has(+ .-vgrouped:not(.hidden,.-first)) {
      &:not(.-sub) {
        border-bottom-color: var(--btn-text-color);
      }
      border-bottom-left-radius: 0;
      border-bottom-right-radius: 0;
    }
    + .-vgrouped:not(.hidden,.-first) {
      &:not(.-sub) {
        border-top-color: var(--btn-text-color);
      }
      border-top-left-radius: 0;
      border-top-right-radius: 0;
      margin-left: -1px;
    }
  }

  .group {
    &:has(+.group > .btn.-grouped:not(.hidden,.-first)) > .btn.-grouped:not(.hidden) {
      &:not(.-sub) {
        border-right-color: var(--btn-text-color);
      }
      border-top-right-radius: 0;
      border-bottom-right-radius: 0;
    }
    +.group > .btn.-grouped:not(.hidden,.-first) {
      &:not(.-sub) {
        border-left-color: var(--btn-text-color);
      }
      border-top-left-radius: 0;
      border-bottom-left-radius: 0;
      margin-left: -1px;
    }
    &:has(+.group > .btn.-vgrouped:not(.hidden,.-first)) > .btn.-vgrouped:not(.hidden) {
      &:not(.-sub) {
        border-bottom-color: var(--btn-text-color);
      }
      border-bottom-left-radius: 0;
      border-bottom-right-radius: 0;
    }
    +.group > .btn.-vgrouped:not(.hidden,.-first) {
      &:not(.-sub) {
        border-top-color: var(--btn-text-color);
      }
      border-top-left-radius: 0;
      border-top-right-radius: 0;
      margin-top: -1px;
    }
  }

  @media (max-width: 700px) {
    .btn.-grouped-xs:not(.hidden) {
      &:has(+ .-grouped-xs:not(.hidden,.-first)) {
        &:not(.-sub) {
          border-bottom-color: var(--btn-text-color);
        }
        border-top-right-radius: 0;
        border-bottom-right-radius: 0;
      }
      + .-grouped-xs:not(.hidden,.-first) {
        &:not(.-sub) {
          border-top-color: var(--btn-text-color);
        }
        border-top-left-radius: 0;
        border-bottom-left-radius: 0;
        margin-left: -1px;
      }
    }
    
    .btn.-vgrouped-xs:not(.hidden) {
      &:has(+ .-vgrouped-xs:not(.hidden,.-first)) {
        &:not(.-sub) {
          border-bottom-color: var(--btn-text-color);
        }
        border-bottom-left-radius: 0;
        border-bottom-right-radius: 0;
      }
      + .-vgrouped-xs:not(.hidden,.-first) {
        &:not(.-sub) {
          border-top-color: var(--btn-text-color);
        }
        border-top-left-radius: 0;
        border-top-right-radius: 0;
        margin-left: -1px;
      }
    }

    .group {
      &:has(+.group > .btn.-grouped-xs:not(.hidden,.-first)) > .btn.-grouped-xs:not(.hidden) {
        &:not(.-sub) {
          border-right-color: var(--btn-text-color);
        }
        border-top-right-radius: 0;
        border-bottom-right-radius: 0;
      }
      +.group > .btn.-grouped-xs:not(.hidden,.-first) {
        &:not(.-sub) {
          border-left-color: var(--btn-text-color);
        }
        border-top-left-radius: 0;
        border-bottom-left-radius: 0;
        margin-left: -1px;
      }
      &:has(+.group > .btn.-vgrouped-xs:not(.hidden,.-first)) > .btn.-vgrouped-xs:not(.hidden) {
        &:not(.-sub) {
          border-bottom-color: var(--btn-text-color);
        }
        border-bottom-left-radius: 0;
        border-bottom-right-radius: 0;
      }
      +.group > .btn.-vgrouped-xs:not(.hidden,.-first) {
        &:not(.-sub) {
          border-top-color: var(--btn-text-color);
        }
        border-top-left-radius: 0;
        border-top-right-radius: 0;
        margin-top: -1px;
      }
    }
  }

  .btn + .btn,
  .btn-group + .btn,
  .btn + .btn-group,
  .btn-group + .btn-group {
    margin-left: 8px;
  }
  
  .btn.-link,
  button.link {
    color: var(--link-color);
    background-color: var(--link-bg);
    border: none;
    padding: 0;
    text-decoration: none;
    cursor: pointer;
    box-shadow: none;
    outline-offset: -1px;

    &:hover {
      color: var(--link-hover);
      background-color: var(--link-bg);
      text-decoration: underline;
      box-shadow: none;
    }
    &:active,
    &:focus {
      color: var(--link-focus);
      background-color: var(--link-bg);
      text-decoration: underline;
      box-shadow: none;
    }
  }

  ul.btn-container {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: end;
    list-style: none;
    padding-left: 0;
    margin: 0;
    gap: 8px;
  }

  select:is(.disabled,[disabled]) {
    color: var(--disabled-text-color);
    background: var(--disabled-bg-color);
    border-color: var(--disabled-border-color);
  }

  .card {
    border-radius: 10px;
    box-shadow: 0 0 4px -2px #000;

    .card-body {
      position: relative;
      padding: 20px 30px;
    }
  }

  a.dark-link {
    color: white !important;
  }

}
