:root {
    --purple-300: #620c8a;
    --blue-500: #4f46e5;
    --black-600: #0f172a;
    --black-glass: #1d2d39cb;
    --white-950: #fff;

    --border-outline-width: 1px;

    --accent-alt: var(--blue-500);
}

html, body {
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    background-color: var(--black-600);
    color: var(--white-950);
}

a {
    color: pink;
}

table, tr, th, td {
    border: 1px solid;
}

input[type="text"], input[type="password"], input[type="checkbox"], input[type="button"], input[type="submit"], input[type="reset"], button {
    min-height: 0.8cm;
}

input[type="button"], input[type="submit"], input[type="reset"], button {
    border-radius: 8px;
    padding: 0.25rem 0.5rem;
    background-color: var(--accent-alt);
    border: var(--border-outline-width) solid var(--border-color-primary);
    align-self: flex-start;
    color: white;
}

.layout > .logo {
    text-align: center;
}

html.login .content-outer {
    position: fixed;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
}

@media screen and (max-height: 420px) {
    html.login .content-outer {
        position: unset;
    }
}

html.login .user-form {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    height: 100%;
}

html.login .user-form form {
    border-radius: 8px;
    margin-top: 10px;
    margin-bottom: 10px;
    min-width: 500px;
}

html.login footer {
    position: fixed;
    left: 0px;
    bottom: 0px;
}

.menu-tree > .menu-root {
    list-style-type: none;
    padding: 0;
}

.layout .form {
    background-color: var(--black-glass);
    margin: 20px;
    padding: 40px;
}

.layout .form h2 {
    margin: 0;
    margin-bottom: 15px;
}

.user-block {
    display: flex;
    justify-content: flex-end;
}

form {
    border: 1px solid;
    padding: 4px;
}

form .field {
    border: 1px solid;
    padding: 4px;
    margin: 4px;
}

form .field input, form .field textarea {
    background-color: var(--black-glass);
    color: var(--white-950);
    border: 2px solid lightslategray;
    width: 100%;
    box-sizing: border-box;
}

form .field input[type="checkbox"] {
    width: initial;
}

form .caption {
    margin: 0;
}

form .field textarea {
    height: 150px;
}

.roles-list .edit-role-link {
    list-style-type: none;
}

.notify {
    margin: 4px;
    font-size: 10pt;
    padding: 2px;
    border: 1px solid;
}
.notify.notify-info {
    background-color: darkslateblue;
}
.notify.notify-error {
    background-color: darkred;
}

.data-pairs {
    font-size: 9pt;
    padding: 4px;
    border: 1px solid;
}

.data-pairs .data-pair {
    margin: 2px;
    padding: 4px;
    border: 1px solid;
}

.content-outer .page {
    margin: 10px;
}

.actions div {
    margin: 4px;
    padding: 4px;
    text-align: center;
    border: 2px outset;
    background-color: azure;
    color: #000;
}
.actions div a {
    text-decoration: none;
    color: #000;
    display: block;
    width: 100%;
}
.actions .status a span, .ticket-status .status div span {
    display: flex;
    align-items: center;
    justify-self: center;
}
.ticket-status .status div span {
    justify-self: start;
    border: 1px solid;
    padding: 4px;
    border-radius: 8px;
    margin-top: 8px;
}
.ticket-status .status div span::before, .tickets-list .ticket a span::before {
    filter: invert(100%);
}

.status * span::before, .icon span::before {
    background-repeat: no-repeat;
    background-position-y: 2px;
    background-size: 24px;
    content: ' ';
    display: inline-block;
    width: 24px;
    padding: 2px;
    aspect-ratio: 1;
}
.status.const-STATUS_NEW * span::before {
    background-image: url('/images/svg/new.svg');
}
.status.const-STATUS_TAKEN * span::before {
    background-image: url('/images/svg/plus.svg');
}
.status.const-STATUS_PROCESSING * span::before {
    background-image: url('/images/svg/work.svg');
}
.status.const-STATUS_COMPLETED * span::before {
    background-image: url('/images/svg/complete.svg');
}
.status.const-STATUS_DECLINED * span::before {
    background-image: url('/images/svg/decline.svg');
}

.ticket header h3 {
    margin: 0px;
    display: inline-block;
}
.ticket header .ticket-status {
    margin-bottom: 1em;
}

.ticket .description {
    font-size: 10pt;
}

.ticket .confirmation {
    border: 1px solid;
    margin: 10px;
    padding: 10px;
    border-radius: 8px;
}

.action-bar {
    display: flex;
    align-items: center;
}
.back-link span::before {
    background-image: url('/images/svg/back.svg');
    filter: invert(100%);
}

.tickets-list .ticket a span {
    display: flex;
    align-items: center;
}

.tickets-list .ticket a {
    border: 2px solid;
    display: block;
    padding: 0.5em;
    border-radius: 8px;
    color: var(--white-950);
    text-decoration: none;
    margin: 2px;
}

.tickets-list hr {
    border-style: dashed;
    border-bottom: transparent;
}

.tickets-list .ticket.status.const-STATUS_NEW a {
    border-color: darkseagreen;
}
.tickets-list .ticket.status.const-STATUS_TAKEN a {
    border-color: orange;
}
.tickets-list .ticket.status.status.const-STATUS_PROCESSING a {
    border-color: green;
}
.tickets-list .ticket.status.status.status.const-STATUS_DECLINED a {
    border-color: darkred;
    text-decoration: line-through;
}
.tickets-list .ticket.status.status.status.status.const-STATUS_COMPLETED a {
    border-color: gray;
    text-decoration: line-through;
}

.ticket-page.commenting form button, .user-profile form button {
    display: block;
    width: 100%;
}