OneBot: Leantime 改造版源码(BOM/Univer 表格/AI 接管/品牌替换等)

This commit is contained in:
wangruiguo
2026-09-03 18:49:20 +08:00
commit d647428529
3501 changed files with 1988906 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,63 @@
/**
* Accessibility Enhancement Styles
* Provides support for user preferences and assistive technologies
*/
/* High contrast mode support for Windows High Contrast users */
@media (prefers-contrast: high) {
a {
text-decoration: underline;
font-weight: var(--font-weight-medium);
}
a:focus-visible {
outline-width: 3px;
outline-offset: 4px;
}
.latest-todos a,
.sortableTicketList a {
font-weight: var(--font-weight-semibold);
}
button,
.btn {
border-width: 2px;
}
}
/* Reduced motion for users with vestibular disorders */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
/* Forced colors mode - respects user's color overrides (Windows High Contrast) */
@media (forced-colors: active) {
a:focus-visible {
outline: 2px solid currentColor;
outline-offset: 2px;
}
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
outline: 2px solid currentColor;
}
}
/* Increased line height for dyslexic users using specific fonts */
.font-atkinson,
.font-shantell,
[style*="font-family: 'Atkinson"],
[style*="font-family: 'Shantell"] {
line-height: var(--line-height-relaxed);
letter-spacing: 0.02em;
}

View File

@@ -0,0 +1,457 @@
.day-selector {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.day-button {
border:none;
background:var(--secondary-background);
box-shadow: var(--min-shadow);
}
.day-button.today {
background-color: var(--interactive-icon-color);
}
.day-button:hover {
background-color: var(--interactive-icon-color);
}
.day-button.active {
background-color: var(--main-action-bg);
color: var(--main-action-hover-color);
}
/*#calendar {*/
/* padding-top: 10px;*/
/* position: relative;*/
/* z-index: 5;*/
/* flex: 1;*/
/* min-height: 0;*/
/* display: flex;*/
/* flex-direction: column;*/
/* height: calc(100% - 40px);*/
/* display: flex;*/
/* flex-direction: column;*/
/*}*/
/*.fc {*/
/* height: calc(100% - 40px);*/
/* display: flex;*/
/* flex-direction: column;*/
/*}*/
/*.fc-view > .fc-scrollgrid > tbody {*/
/* height:100%;*/
/* display:flex;*/
/* flex-direction: column;*/
/* overflow-y: auto;*/
/*}*/
/*.fc-view > .fc-scrollgrid > tbody .fc-scrollgrid-section-body:last-child {*/
/* height:100%;*/
/*}*/
/*.fc .fc-view-harness {*/
/* flex: 1 1 auto !important;*/
/* min-height: 0 !important;*/
/*}*/
/*.fc-scrollgrid {*/
/* display: flex !important;*/
/* flex-direction: column !important;*/
/* height: 100% !important;*/
/*}*/
/*.fc .fc-toolbar-title {*/
/* font-size: var(--font-size-xl);*/
/*}*/
/*.fc .fc-multimonth {*/
/* height:100%;*/
/*}*/
/*.fc .fc-multimonth,*/
/*.fc-theme-standard td, .fc-theme-standard th{*/
/* border:none;*/
/*}*/
/*.fc .fc-daygrid-day-top {*/
/* flex-direction: column;*/
/* text-align:center;*/
/*}*/
/*.fc .fc-daygrid-day-bottom {*/
/* text-align:center;*/
/* margin-top:-10px !important;*/
/*}*/
/*.fc .fc-daygrid-more-link {*/
/* font-size:0px;*/
/* float:none;*/
/*}*/
/*.fc .fc-daygrid-more-link:after {*/
/* content: "•";*/
/* font-size:30px;*/
/*}*/
/*.fc .fc-multimonth-title {*/
/* padding:0px 0px 10px 0px;*/
/* text-align:left;*/
/* font-size: var(--font-size-xl);*/
/* font-weight:normal;*/
/* display:none;*/
/*}*/
/*.fc .fc-multimonth-singlecol .fc-multimonth-header {*/
/* background:none;*/
/*}*/
/*.fc-theme-standard th.fc-col-header-cell:first-child {*/
/* border-radius:10px 0px 0px 0px;*/
/*}*/
/*.fc-theme-standard th.fc-col-header-cell:last-child {*/
/* border-radius:0px 10px 0px 0px;*/
/*}*/
/*.fc-theme-standard .fc-popover {*/
/* border-radius:var(--box-radius);*/
/* max-width: 60%;*/
/*}*/
/*.fc-popover-body .fc-h-event .fc-event-title-container {*/
/* padding-left:5px;*/
/*}*/
/*.fc-popover-body .fc-event {*/
/* margin-bottom:2px;*/
/* margin-left:0px !important;*/
/*}*/
/*.fc-popover-body .fc-daygrid-event {*/
/* border-radius:0px !important;*/
/*}*/
/*.fc .fc-daygrid-day.fc-day-today {*/
/* border-radius:var(--element-radius);*/
/*}*/
/*.fc .fc-multimonth-daygrid {*/
/* background:var(--layered-background);*/
/*}*/
/*.fc-multimonth-daygrid-table .fc-daygrid-day-events .fc-daygrid-event-harness {*/
/*}*/
/*.fc-scrollgrid-section-body > td {*/
/* height: 100% !important;*/
/*}*/
/*.fc-scroller {*/
/* height: auto !important;*/
/*}*/
/*.fc-scrollgrid-section-header {*/
/* position: sticky;*/
/* top: 0;*/
/* z-index: 2;*/
/* box-shadow:0px 2px 2px var(--neutral);*/
/*}*/
/*.maincontent .fc .fc-timegrid-col.fc-day-today,*/
/*.maincontent .fc .fc-daygrid-day.fc-day-today,*/
/*.maincontent .fc .fc-button-primary {*/
/* background-color: var(--col-title-bg);*/
/* color:var(--primary-font-color);*/
/* border-radius: var(--element-radius) !important;*/
/*}*/
/*.maincontent .fc .fc-day-today .fc-daygrid-day-number {*/
/* color:var(--main-action-color);*/
/* background:var(--accent1);*/
/* border-radius: var(--element-radius) !important;*/
/*}*/
/*.maincontent .fc .fc-button-primary:focus,*/
/*.maincontent .fc .fc-button-primary:active {*/
/* box-shadow: none;*/
/*}*/
/*.maincontent .fc .fc-button-primary:not(:disabled).fc-button-active,*/
/*.maincontent .fc .fc-button-primary:not(:disabled):active,*/
/*.maincontent .fc .fc-button-primary:not(:disabled):hover {*/
/* background:var(--secondary-action-hover-bg);*/
/* color:var(--secondary-action-hover-color);*/
/*}*/
/*.maincontent .fc-multimonth-header-table .fc-col-header-cell {*/
/* padding:5px;*/
/*}*/
/*.maincontent .fc-list-event {*/
/* background:var(--secondary-background);*/
/*}*/
/*.maincontent .fc-list-event td {*/
/* padding:5px;*/
/*}*/
/*.maincontent .fc-list-event td.fc-list-event-time {*/
/* padding-left:15px;*/
/*}*/
/*.maincontent .fc-v-event {*/
/* border:none;*/
/* border-left:5px solid var(--fc-event-border-color);*/
/*}*/
/*.maincontent .fc-v-event .fc-event-main-frame {*/
/* padding-left:5px;*/
/*}*/
/*.fc-v-event .fc-event-main-frame {*/
/*}*/
/*.maincontent .fc-timegrid-event {*/
/* border-radius: 8px;*/
/*}*/
/*.maincontent .fc-timegrid-event-harness-inset .fc-timegrid-event,*/
/*.maincontent .fc-timegrid-event.fc-event-mirror,*/
/*.fc-h-event .fc-event-main {*/
/* font-weight:normal;*/
/*}*/
/*.maincontent .fc-timegrid-event .fc-event-main {*/
/* padding: 3px 1px 0px;*/
/*}*/
/*.maincontent .fc-event.locked:after {*/
/* content: "🔒";*/
/* background:var(--layered-background);*/
/* padding: 1px 4px;*/
/* top: 2px;*/
/* border-radius: 50%;*/
/* position: absolute;*/
/* right: 2px;*/
/*}*/
/*.maincontent tr.fc-event {*/
/* position:relative;*/
/*}*/
/*.fc-list-event,*/
/*.fc .fc-multimonth-daygrid,*/
/*.fc-view,*/
/*.fc .fc-scrollgrid-section-sticky > *,*/
/*.fc-timegrid-slot-label,*/
/*.fc .fc-timegrid-col.fc-day-today,*/
/*.fc .fc-daygrid-day.fc-day-today,*/
/*.fc .fc-button-primary,*/
/*table.fc-col-header th {*/
/* background:transparent !important;*/
/*}*/
/*.fc-view,*/
/*.fc .fc-scrollgrid {*/
/* border:none;*/
/* height:100%*/
/*}*/
/*.fc-col-header {*/
/* border-top-right-radius: var(--element-radius);*/
/* border-top-left-radius: var(--element-radius);*/
/* background:var(--secondary-background);*/
/*}*/
/*.maincontentinner .fc .fc-scrollgrid {*/
/* border:none;*/
/*}*/
/*.maincontentinner table.fc-scrollgrid td,*/
/*.maincontentinner table.fc-scrollgrid th{*/
/* padding:0px;*/
/*}*/
/*.maincontentinner table.fc-scrollgrid th.fc-col-header-cell {*/
/* background: var(--col-title-bg);*/
/* overflow:hidden;*/
/*}*/
/*.maincontentinner table.fc-scrollgrid th.fc-col-header-cell:first-child {*/
/* border-top-left-radius:var(--box-radius);*/
/*}*/
/*.maincontentinner table.fc-scrollgrid th.fc-col-header-cell:last-child {*/
/* border-top-right-radius:var(--box-radius);*/
/*}*/
/*.maincontentinner table.fc-scrollgrid th {*/
/* padding:0px;*/
/* border-radius: 5px 5px 0px 0px;*/
/*}*/
/*.maincontentinner table.fc-scrollgrid th .fc-scrollgrid-sync-inner {*/
/* padding:5px 0px;*/
/*}*/
:root {
--fc-small-font-size: .85em;
--fc-page-bg-color: var(--secondary-background);
--fc-neutral-bg-color: var(--layered-background);
--fc-neutral-text-color: var(--neutral);
--fc-border-color: var(--main-border-color);
--fc-button-text-color: var(--secondary-background);
--fc-button-bg-color: #2c3e50;
--fc-button-border-color: #2c3e50;
--fc-button-hover-bg-color: #1e2b37;
--fc-button-hover-border-color: #1a252f;
--fc-button-active-bg-color: #1a252f;
--fc-button-active-border-color: #151e27;
--fc-event-bg-color: var(--accent1);
--fc-event-border-color: var(--accent1);
--fc-event-text-color:var(--main-action-color);
--fc-event-selected-overlay-color: rgba(0, 0, 0, .25);
--fc-more-link-bg-color: #d0d0d0;
--fc-more-link-text-color: inherit;
--fc-event-resizer-thickness: 8px;
--fc-event-resizer-dot-total-width: 8px;
--fc-event-resizer-dot-border-width: 1px;
--fc-non-business-color: hsla(0, 0%, 84%, .3);
--fc-bg-event-color: var(--accent2);
--fc-bg-event-opacity: 0.3;
--fc-highlight-color: rgba(188, 232, 241, .3);
--fc-today-bg-color: var(--dropdown-link-hover-bg);
--fc-now-indicator-color: var(--dark-red);
}
/* Resetting styles from tables */
.maincontentinner .fc td,
.maincontentinner .fc th {
padding: 0px;
vertical-align: top;
}
.maincontentinner .fc-theme-standard td {
border-color:var(--fc-border-color);
}
.maincontentinner .fc-theme-standard td,
.maincontentinner .fc-theme-standard th {
}
.maincontentinner .fc th .fc-scroller {
padding:5px;
}
.fc .fc-col-header-cell-cushion {
color:var(--primary-font-color);
}
.maincontentinner .fc-theme-standard .fc-scrollgrid {
border:0px;
}
.fc .fc-view-harness {
overflow:hidden;
border-radius:var(--box-radius);
}
.fc-timegrid-event,
.fc-timegrid-more-link {
border-radius: 5px;
font-size: var(--fc-small-font-size);
}
.fc-timegrid-event .fc-event-main {
padding:2px 4px 0px;
}
.fc-v-event {
border:0px;
}
.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > * {
box-shadow:var(--regular-shadow);
}
.fc .fc-timegrid-now-indicator-line {
border:2px 0px 0px;
}
.fc .fc-timegrid-now-indicator-line::before {
content: " ";
position: absolute;
top: -5px;
/* bottom: -2px; */
left: -5px;
right: 0;
background: var(--fc-now-indicator-color);
width: 10px;
border-radius: 5px;
height: 10px;
}
.fc .fc-timegrid-slot-minor {
border:none;
}
.maincontentinner .fc-list-event td {
padding: 5px 10px;
}
.maincontentinner .fc-theme-standard .fc-list {
border:none;
}
.maincontentinner .fc-theme-standard .fc-list-day-cushion {
background-color: var(--fc-neutral-bg-color);
box-shadow: var(--regular-shadow);
}
.maincontentinner .fc-theme-standard .fc-list-day-cushion a {
color: var(--primary-font-color);
}
.maincontentinner .widgetContent .fc .fc-timegrid-col.fc-day-today,
.maincontentinner .widgetContent .fc .fc-scrollgrid-section-sticky > *,
.maincontentinner .widgetContent .fc td, .maincontentinner .widgetContent .fc th{
background:none;
}
.maincontentinner .widgetContent .fc-scroller table {
}
.maincontentinner .fc-theme-standard td,
.maincontentinner .fc-theme-standard th {
border-left: 0px;
}
.maincontentinner .fc-theme-standard th {
border-top:0px;
}
.maincontentinner .fc-daygrid-body table td {
border-bottom:0px;
}
.maincontentinner .fc-timegrid-divider {
border-bottom:0px;
}
.fc-scrollgrid .fc-scrollgrid-section:first-child .fc-scroller-harness {
box-shadow: var(--regular-shadow);
}

View File

@@ -0,0 +1,706 @@
/* Ticket Labelled dropdowns */
.dropdown-menu {
margin-top: 0;
border-radius: var(--box-radius);
border:0px;
padding: 8px 0;
box-shadow: var(--regular-shadow);
background:var(--secondary-background);
}
.bigMenu ul li {
list-style-type: none;
}
.dropdown-menu > li > a,
.bigMenu ul li a,
.dropdown-menu > li > .dropdown-item-wrapper {
font-size: var(--base-font-size);
color:var(--primary-font-color);
margin: 0;
padding: 5px 10px;
border-radius: 0px;
}
.pagetitle .dropdown-menu > li > a {
color:var(--primary-font-color);
text-decoration:none;
}
.dropdown-menu>.active>a,
.dropdown-menu>.active>a:hover,
.dropdown-menu>.active>a:focus {
color: var(--dropdown-link-hover-color);
background:var(--dropdown-link-hover-bg);
}
.dropdownTabs {
padding:5px;
display: flex;
flex-direction: row;
justify-content: space-around;
flex-wrap: wrap;
align-content: space-between;
border-bottom:1px solid var(--main-border-color);
}
.dropdownTabs a {
}
.dropdownTabs a:hover {
text-decoration: none;
}
.maincontentinner .viewDropDown .dropdown-menu > li > a:hover .muted,
body .maincontentinner .viewDropDown .dropdown-menu li a.active,
.dropdown-menu > li > a.active,
.dropdown ul li.active a{
color: var(--dropdown-link-hover-color);
background:var(--dropdown-link-hover-bg);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus,
.dropdown-submenu:hover > a,
.dropdown-submenu:focus > a,
.bigMenu ul li a,
.bigMenu ul li a:hover,
.bigMenu ul li a:focus {
color: var(--dropdown-link-hover-color) !important;
background:var(--dropdown-link-hover-bg) !important;
}
.dropdown-menu > li > a:hover small,
.dropdown-menu > li > a:focus small,
.dropdown-submenu:hover > a small,
.dropdown-submenu:focus > a small,
.bigMenu ul li a small,
.bigMenu ul li a:hover small,
.bigMenu ul li a:focus small {
color: var(--dropdown-link-hover-color) !important;
}
.dropdown-menu .nav-header {
padding-left: 10px;
padding-right: 10px;
padding-top:10px;
padding-bottom:5px;
font-size:var(--font-size-m);
color:var(--interactive-icon-color);
text-transform:none;
}
.ticketDropdown.show {
display:inline-block;
}
.ticketDropdown {
font-size:var(--font-size-m);
}
.ticketDropdown ul,
.ticketDropdown ul li a{
top: 22px;
font-size:var(--font-size-m);
}
.ticketDropdown.userDropdown {
margin-top:-2px;
}
.ticketDropdown.userDropdown ul {
top: 33px;
left: 6px;
}
.dropRight ul,
.ticketDropdown.userDropdown.dropRight ul{
right:0px;
left:auto;
}
.maincontent .ticketDropdown > a,
.maincontent .ticketDropdown > a:link,
.nyroModalCont .ticketDropdown > a,
.nyroModalCont .ticketDropdown > a:link{
color:#fff;
padding:0px 10px;
white-space: nowrap;
border-radius:var(--box-radius-large);
margin-left:0px;
box-shadow:var(--min-shadow);
}
.maincontent .ticketDropdown.userDropdown > a,
.maincontent .ticketDropdown.userDropdown > a:link,
.nyroModalCont .ticketDropdown.userDropdown > a,
.nyroModalCont .ticketDropdown.userDropdown > a:link {
padding-left:0px;
}
.maincontent .ticketDropdown.firstDropdown > a {
margin-left:0px;
}
.maincontent .ticketDropdown.lastDropdown > a {
padding-right:0px;
}
.maincontent .ticketDropdown > a:hover,
.maincontent .ticketDropdown > a:focus {
text-decoration: none;
}
.maincontent .ticketDropdown.colorized li a,
.nyroModalCont .ticketDropdown.colorized li a{
color:#fff;
}
.maincontent .ticketDropdown.noBg {
background:transparent;
}
.maincontent .ticketDropdown.noBg a {
box-shadow: none;
}
.maincontent .ticketDropdown.noBg >a img {
margin-top:-1px;
}
.maincontent .dropdown img {
width:23px;
border-radius: 12px;
border: 1px solid var(--neutral);
margin-top:1px;
padding:1px;
}
.maincontent .ticketDropdown.noBg >a:hover {
color:#000;
}
.maincontent .ticketDropdown.noBg >a:hover img {
border-color:var(--dropdown-link-hover-bg) !important
}
.maincontent .ticketDropdown ul li a[class*="label-"],
.nyroModalCont .ticketDropdown ul li a[class*="label-"] {
padding: 5px 10px;
display:block;
}
.chosen-results li[class*=" label-"] {
color:#fff;
}
.chosen-results li[class*=" label-"]:hover {
color:#555;
}
.chosen-results li.label-warning,
.maincontent .ticketDropdown a.label-warning,
.nyroModalCont .ticketDropdown a.label-warning,
.label-warning,
.label-yellow{
background:var(--yellow);
color:var(--yellow-text-color);
}
.chosen-results li.label-info,
.maincontent .ticketDropdown a.label-info,
.nyroModalCont .ticketDropdown a.label-info{
background:var(--dark-blue);
color:var(--dark-blue-text-color);
}
.chosen-results li.label-important,
.maincontent .ticketDropdown a.label-important,
.nyroModalCont .ticketDropdown a.label-important,
.label-important{
background:var(--red);
color:var(--red-text-color);
}
.chosen-results li.label-danger,
.maincontent .ticketDropdown a.label-danger,
.nyroModalCont .ticketDropdown a.label-danger,
.label-danger,
.label-red{
background:var(--dark-red);
color:var(--dark-red-text-color);
}
.chosen-results li.label-success,
.maincontent .ticketDropdown a.label-success,
.nyroModalCont .ticketDropdown a.label-success,
.label-success,
.label-green {
background:var(--green);
color:var(--green-text-color);
}
.chosen-results li.label-default,
.maincontent .ticketDropdown a.label-default,
.nyroModalCont .ticketDropdown a.label-default,
.label-default{
background: var(--grey);
color:var(--grey-text-color);
}
.chosen-results li.label-default.milestone,
.maincontent .ticketDropdown a.label-default.milestone,
.nyroModalCont .ticketDropdown a.label-default.milestone {
color:var(--blue-text-color);
}
.chosen-results li.label-purple,
.maincontent .ticketDropdown a.label-purple,
.nyroModalCont .ticketDropdown a.label-purple{
background:var(--purple);
color:var(--purple-text-color);
}
.chosen-results li.label-pink,
.maincontent .ticketDropdown a.label-pink,
.nyroModalCont .ticketDropdown a.label-pink{
background:var(--pink);
color:var(--pink-text-color);
}
.chosen-results li.label-brown,
.maincontent .ticketDropdown a.label-brown,
.nyroModalCont .ticketDropdown a.label-brown{
background:var(--brown);
color:var(--brown-text-color);
}
.chosen-results li.label-blue,
.maincontent .ticketDropdown a.label-blue,
.nyroModalCont .ticketDropdown a.label-blue{
background:var(--blue);
color:var(--blue-text-color);
}
.chosen-results li.label-dark-blue,
.maincontent .ticketDropdown a.label-dark-blue,
.nyroModalCont .ticketDropdown a.label-dark-blue{
background:var(--dark-blue);
color:var(--dark-blue-text-color);
}
.chosen-results li.label-darker-blue,
.maincontent .ticketDropdown a.label-darker-blue,
.nyroModalCont .ticketDropdown a.label-darker-blue{
background:var(--darker-blue);
color:var(--darker-blue-text-color);
}
.chosen-results li.label-green,
.maincontent .ticketDropdown a.label-green,
.nyroModalCont .ticketDropdown a.label-green{
background:var(--green);
color:var(--green-text-color);
}
.chosen-results li.label-dark-green,
.maincontent .ticketDropdown a.label-dark-green,
.nyroModalCont .ticketDropdown a.label-dark-green{
background:var(--dark-green);
color:var(--dark-green-text-color);
}
.chosen-results li.label-red,
.maincontent .ticketDropdown a.label-red,
.nyroModalCont .ticketDropdown a.label-red{
background:var(--red);
color:var(--red-text-color);
}
.chosen-results li.label-dark-red,
.maincontent .ticketDropdown a.label-dark-red,
.nyroModalCont .ticketDropdown a.label-dark-red{
background:var(--dark-red);
color:var(--dark-red-text-color);
}
.chosen-results li.label-grey,
.maincontent .ticketDropdown a.label-grey,
.nyroModalCont .ticketDropdown a.label-grey{
background:var(--grey);
color:var(--grey-text-color);
}
.maincontent .ticketDropdown a.label-default.effort,
.nyroModalCont .ticketDropdown a.label-default.effort{
background:var(--secondary-background);
color:var(--primary-font-color);
}
.maincontent .ticketDropdown ul li,
.nyroModalCont .ticketDropdown ul li {
margin-bottom:1px;
padding:0px 10px;
}
.maincontent .ticketDropdown.milestoneDropdown li a:hover{
background: var(--dropdown-link-hover-bg) !important;
color: var(--dropdown-link-hover-color) !important;
}
.maincontent .accordionTitle {
font-size: var(--font-size-l);
color: var(--primary-font-color);
margin-bottom: 10px;
font-weight:bold;
margin-left:0px;
border-radius: var(--accordion-header-radius);
padding: 5px 0px;
}
.maincontent .noBackground .accordionTitle {
color: var(--main-titles-color);
}
.maincontent .accordionTitle i {
display:inline-block;
width:15px;
text-align:center;
margin-right:5px;
border-radius:5px;
}
.maincontent .accordionTitle:hover i,
.maincontent .accordionTitle i:hover {
background:var(--col-hover-bg);
color:var(--interactive-icon-color);
}
.maincontent .accordionTitle[class*="label-"] {
margin-left:0px;
border-radius: var(--accordion-header-radius);
padding: 5px 0px;
background: none;
}
.maincontent .accordionTitle.label-warning a{
background:none;
color:var(--yellow);
}
.maincontent .accordionTitle.label-important a {
background:none;
color:var(--red);
}
.maincontent .accordionTitle.label-info a {
background:none;
color:var(--dark-blue);
}
.maincontent .accordionTitle.label-danger a {
background:none;
color:var(--dark-red);
}
.maincontent .accordionTitle.label-success a {
background:none;
color:var(--green);
}
.maincontent .accordionTitle.label-default a {
background:none;
color:var(--grey);
}
.simpleAccordionContainer {
margin-bottom:15px;
padding-left: 20px;
}
.simpleAccordionContainer.kanban {
padding-left:0px;
}
.maincontent .accordionTitle .accordion-toggle i.fa:first-child {
width: 15px;
margin-top: 0px;
margin-right: 5px;
height: 15px;
line-height: 15px;
text-align: center;
border-radius: var(--element-radius);
font-size: var(--font-size-m);
}
.maincontent .accordionTitle .accordion-toggle i.fa:first-child:hover {
background: var(--main-menu-link-active-bg);
}
.ticketDropdown ul::after {
position: absolute;
top:-6px;
left: 10px;
transform: rotate(0deg);
display: inline-block;
border-right: 7px solid transparent;
border-bottom: 7px solid white;
border-left: 7px solid transparent;
content: '';
}
.dropdown-menu.pull-right::after {
right: 10px;
left:auto;
}
.tabbedwidget .dropdown-menu.pull-left,
.mainwrapper .dropdown-menu.pull-left {
left: 10px;
right:auto;
}
.viewDropDown .dropdown-menu {
right:0px;
left:auto;
}
.viewDropDown .dropdown-menu li a.active{
}
.viewDropDown .dropdown-menu li a.active:hover {
color:#fff;
}
.dropdown-menu span.radio input[type="radio"] {
float:left;
vertical-align: middle;
margin-top: 9px;
margin-right:5px;
}
.dropdown-menu span.radio {
display:block;
font-size: 12px;
color: var(--main-menu-link-color);
margin: 0px;
padding: 5px 10px;
}
.dropdown-menu span.radio:hover {
color: var(--dropdown-link-hover-color);
background:var(--dropdown-link-hover-bg);
}
.dropdown-menu span.radio label {
display:inline-block;
width:100%;
}
.wikiSelect {
margin-bottom:5px;
}
.dropdown-menu.iconpicker-container,
.iconpicker-popover.popover {
width:215px;
min-width:215px;
}
.iconpicker-popover .popover-title {
display:none;
}
.btn-group .btn.titleIconPicker {
font-size: var(--font-size-xl);
line-height: 21px;
padding: 5px 6px;
color: var(--primary-font-color);
background-color: var(--secondary-background);
border: 1px solid var(--secondary-background);
border-radius: 3px;
}
.btn-group .btn.titleIconPicker:hover {
border: 1px solid var(--main-border-color);
}
.btn-group .btn.titleIconPicker .caret,
.btn-group .btn.titleIconPicker .caret,
.btn-group .btn.titleIconPicker:last-child .caret,
.btn-group >.btn.titleIconPicker.dropdown-toggle .caret {
border-top-color: var(--primary-font-color);
}
.btn-group .btn.titleIconPicker:hover .caret,
.btn-group .btn.titleIconPicker:hover .caret,
.btn-group .btn.titleIconPicker:last-child:hover .caret,
.btn-group >.btn.titleIconPicker.dropdown-toggle:hover .caret {
border-top-color: var(--secondary-action-hover-color);
}
.inlineDropDownContainerLeft {
float:left;
display:inline-block;
}
/* Subject switcher toggle — a subtle pill on the white header card (was
underlined white text, which is near-invisible since the header became a
light card). Dark text, soft pill background, caret. */
.pagetitle .header-title-dropdown {
display:inline-flex;
align-items:center;
gap:6px;
width:auto;
color: var(--primary-font-color);
text-decoration:none;
background: rgba(0, 0, 0, 0.05);
border: 1px solid transparent;
padding: 3px 12px;
border-radius: 100px;
transition: background .12s, border-color .12s;
}
.pagetitle .header-title-dropdown .fa {
padding-left:4px;
font-size:.8em;
opacity:.55;
}
.pagetitle .header-title-dropdown:hover {
background: rgba(0, 0, 0, 0.09);
border-color: transparent;
}
/* Meta/metrics line under the title (subjectSwitcher subline slot). */
.pagetitle .subjectSwitcher-subline {
font-size: var(--font-size-s);
color: var(--main-titles-color-subtle, var(--primary-font-color));
opacity: .6;
margin-top: 4px;
}
.dropdownWrapper {
position:relative;
}
.dropdownWrapper .border {
border-top:1px solid var(--neutral);
}
.headerEditDropdown {
float:right;
padding-top:20px;
}
/* Header action ⋮ — plain dark icon on the white header card (no circle,
was a bordered white button that read as an empty circle on the light box). */
.pagetitle .btn-transparent {
background:transparent;
color:var(--primary-font-color);
border:none;
font-size:var(--font-size-l);
}
.pagetitle .btn-transparent:hover {
color:var(--accent1);
background:rgba(0, 0, 0, 0.05);
border-radius:6px;
}
.headerEditDropdown .dropdown-toggle {
padding:4px 13px;
}
.editCanvasDropdown {
right:0px;
left:auto;
}
.dropdown-menu>.active>a,
.dropdown-menu>.active>a:hover,
.dropdown-menu>.active>a:focus {
background:var(--main-menu-link-active-bg);
color:var(--main-menu-link-active-color);
}
.dropdown-menu .scroll-wrapper {
height:700px;
overflow:scroll;
}
.inlineDropDownContainer {
float:right;
position:relative;
}
.inlineDropDownContainer > a {
color: #aaa;
width: 24px;
line-height: 20px;
text-align: center;
padding-top: 1px;
border-radius: 5px;
}
.inlineDropDownContainer > a.btn {
width:auto;
}
.inlineDropDownContainer > a:last-child {
margin-right:-5px;
}
.inlineDropDownContainer > a:hover {
color: var(--accent1);
background: var(--col-hover-bg);
}
.inlineDropDownContainer .ticketDropDown {
float:right;
font-size: var(--font-size-xl);
color: var(--interactive-icon-color);
margin-right:-5px;
}
.inlineDropDownContainer .dropdown-menu {
right:0px;
left:auto;
}
.inlineDropDownContainer.dropright .dropdown-menu {
left:-5px;
}
.inlineDropDownContainer .dropdown-menu .border {
border-top:1px solid var(--neutral);
}
.inlineDropDownContainer .dropdown-menu li>span {
padding-left:15px;
}
.grid-stack-item-content .inlineDropDownContainer .ticketDropDown,
.grid-stack-item-content .grid-handler-top{
color:var(--main-action-color);
}
.grid-stack-item-content.maincontentinner .inlineDropDownContainer .ticketDropDown,
.grid-stack-item-content.maincontentinner .grid-handler-top {
color: var(--interactive-icon-color);
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,116 @@
body .gantt-container {
font-size: var(--base-font-size);
overflow-x:visible;
height:calc(100vh - 375px);
height:calc(100dvh - 375px);
}
.gantt-wrapper {
margin-top:10px;
border-radius: var(--box-radius);
overflow: auto;
}
.gantt .bar-label {
text-anchor: start;
}
body .gantt .bar-label,
body .gantt .lower-text,
body .gantt .upper-text {
font-size: var(--base-font-size);
}
body .gantt .upper-text {
fill:var(--kanban-col-title-color);
opacity:var(--opacity-subdued);
}
body .gantt .lower-text,
body .gantt .upper-text {
font-weight:var(--font-weight-bold);
}
body .gantt #details .details-container p {
font-size: var(--base-font-size);
}
body .gantt #details .details-container {
border-radius:var(--box-radius);
}
.gantt-container .popup-wrapper {
background-color:var(--secondary-background);
padding:16px;
box-shadow:var(--regular-shadow);
margin-left: -10px;
opacity:0;
min-width:100px;
max-width:300px;
border-radius:var(--box-radius);
}
.gantt-container .bar-wrapper {
outline:none;
}
.gantt .bar-wrapper.active .bar {
fill:var(--main-action-hover-bg);
}
.gantt .bar-wrapper.active .bar-label {
fill:var(--main-action-hover-color);
}
.gantt-container .popup-wrapper .pointer {
margin:10px 0 0 -12px;
height:10px;
border: 10px solid transparent;
border-top-color:var(--secondary-background);
}
.gantt .grid-header {
fill:var(--col-title-bg) !important;
stroke:none;
filter: drop-shadow(var(--regular-shadow));
}
.gantt .grid-header-line {
fill:var(--neutral) !important;
filter: drop-shadow(var(--regular-shadow));
}
.gantt .grid-row:nth-child(even) {
fill:var(--col-row-striped);
}
.gantt .handle {
fill:var(--col-title-bg);
width:10px;
}
.gantt .handle.progress {
display:none;
}
.gantt .today-highlight {
fill:var(--accent1);
}
.today-highlight-label-bg {
fill:var(--main-action-bg);
opacity: 1;
}
.today-highlight-label {
fill:var(--main-action-color);
font-size:var(--font-size-s);
text-anchor: middle;
}
.gantt .grid-row {
fill: transparent;
}

View File

@@ -0,0 +1,32 @@
/* ── Glass Utility Classes ────────────────────────────────────────────
Frosted-glass surfaces for the Leantime design system. All values
come from CSS custom properties defined in the theme files
(default/minimal × light/dark).
──────────────────────────────────────────────────────────────────── */
/* Full glass surface */
.lt-glass {
background: var(--glass-bg);
backdrop-filter: var(--glass-blur);
-webkit-backdrop-filter: var(--glass-blur);
border: 1px solid var(--glass-border);
box-shadow: var(--glass-inset), var(--shadow-sm);
}
/* Subtle glass surface (less blur, more opaque) */
.lt-glass-subtle {
background: var(--glass-bg-subtle);
backdrop-filter: var(--glass-blur-subtle);
-webkit-backdrop-filter: var(--glass-blur-subtle);
border: 1px solid var(--glass-border);
}
/* Fallback for browsers without backdrop-filter (prefixed or unprefixed) */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
.lt-glass,
.lt-glass-subtle {
background: var(--color-bg-card);
backdrop-filter: none;
-webkit-backdrop-filter: none;
}
}

View File

@@ -0,0 +1 @@
<html><body></body></html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,33 @@
#ideaMason .ticketBox {
width: 250px;
cursor:move;
position:absolute;
}
#ideaMason .ticketBox .ticketBox {
position:relative;
width:auto;
cursor:auto;
}
#ideaMason .ticketBox:hover {
background:var(--kanban-card-hover);
}
.packery-drop-placeholder {
background: var(--main-border-color);
opacity:var(--opacity-faint);
border: 2px dotted var(--main-border-color);
visibility:visible;
}
#ideaMason .sortableTicketList .ticketBox {
cursor: default;
}
.mainIdeaContent {
padding-top:10px;
}

View File

@@ -0,0 +1,150 @@
.mediamgr {
position: relative;
min-height: 400px;
}
.mediamgr .mediamgr_right {
position: absolute;
width: 250px;
top: 62px;
right: 0;
}
.mediamgr .mediamgr_rightinner {
margin: 20px 0;
padding-left: 20px;
}
.mediamgr .mediamgr_rightinner h4 {
font-size: var(--base-font-size);
text-transform: uppercase;
padding: 10px;
background: var(--primary-color);
color: var(--primary-background);
}
.mediamgr_head {
padding: 10px;
background: var(--secondary-background);
border: 1px solid var(--main-border-color);
overflow: visible;
margin-bottom: 20px;
}
.mediamgr_menu {
list-style: none;
position: relative;
overflow: hidden;
}
.mediamgr_menu li {
display: inline-block;
float: left;
}
.mediamgr_menu li.right {
float: right;
}
.mediamgr_menu li a {
margin-bottom: 0;
}
.mediamgr_menu li a:hover {
cursor: pointer;
text-decoration: none;
}
.mediamgr_menu li a.prev {
border-right: 0;
}
.mediamgr_menu li a.prev_disabled {
opacity: var(--opacity-muted);
}
.mediamgr_menu li a.preview_disabled {
opacity: var(--opacity-muted);
}
.mediamgr_menu form input.filekeyword {
padding: 4px 8px;
width: 200px;
background: var(--primary-background);
color: var(--secondary-font-color);
margin: 0;
font-style: italic;
}
.mediamgr_content {
padding: 20px 0;
margin-right: 250px;
}
.mediamgr_category {
padding: 10px 0;
border-bottom: 1px dashed var(--main-border-color);
}
.mediamgr_category ul {
list-style: none;
}
.mediamgr_category ul li {
display: inline-block;
margin-right: 4px;
}
.mediamgr_category ul li.right {
float: right;
}
.mediamgr_category ul li a {
display: block;
padding: 4px 10px;
color: var(--secondary-font-color);
}
.mediamgr_category ul li a:hover, .mediamgr_category ul li.current a {
background: var(--primary-font-color);
color: var(--primary-background);
text-decoration: none;
}
.mediamgr_category ul li .pagenuminfo {
display: inline-block;
margin-top: 4px;
}
.mediamgr_menu li a.newfilebutton {
display: block;
padding: 4px 10px 4px 10px;
text-align: center;
border: 1px solid var(--accent1);
background: var(--accent1);
color: var(--primary-background);
font-weight: var(--font-weight-bold);
font-size: var(--base-font-size);
-moz-box-shadow: inset 0 1px 0 rgba(250, 250, 250, 0.3);
-webkit-box-shadow: inset 0 1px 0 rgba(250, 250, 250, 0.3);
box-shadow: inset 0 1px 0 rgba(250, 250, 250, 0.3);
}
.mediamgr_menu li a.newfilebutton:hover {
background: var(--primary-color);
border: 1px solid var(--primary-color);
}
.mediamgr_category {
width: 100%;
}
#mediafilter {
right: 0 !important;
left: auto !important;
}
.mediamgr_category ul li {
display: block !important;
}

View File

@@ -0,0 +1,39 @@
/* Mermaid diagram styling for Copilot */
.mermaid-diagram {
margin: 16px 0;
padding: 10px;
background-color: var(--color-bg-muted);
border-radius: var(--box-radius-large);
overflow: auto;
}
.mermaid {
font-family: inherit;
text-align: center;
}
/* Make sure SVG diagrams are responsive */
.mermaid svg {
max-width: 100%;
height: auto !important;
}
/* Improve visibility of diagram elements */
.mermaid .node rect,
.mermaid .node circle,
.mermaid .node ellipse,
.mermaid .node polygon,
.mermaid .node path {
fill: var(--primary-background);
stroke: var(--accent1);
stroke-width: 1px;
}
.mermaid .edgePath .path {
stroke: var(--primary-font-color);
stroke-width: 1.5px;
}
.mermaid .label {
color: var(--primary-font-color);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,177 @@
.nyroModalCont, .nyroModalBg {
z-index: 100;
overflow-x: hidden !important;
padding: 34px 40px 20px 35px
}
.nyroModalBg {
position: fixed;
overflow: auto;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(3px);
}
.nmReposition {
position: absolute;
}
.nyroModalCloseButton:hover {
}
.nyroModalLink, .nyroModalDom, .nyroModalForm, .nyroModalFormFile {
}
.nyroModalTitle {
top: -26px;
left: 0;
margin: 0;
font-size: 1.1em;
color: #ddd;
}
.nyroModalCont {
position: relative;
/*box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.3);*/
background: var(--secondary-background);
border-radius:20px;
margin-bottom:50px;
}
.nyroModalCont iframe {
}
.nyroModalError {
border: 4px solid var(--red);
color: var(--red);
width: 250px;
height: 250px;
}
.nyroModalError div {
min-width: 0;
min-height: 0;
padding: 10px;
}
.nyroModalLink, .nyroModalDom, .nyroModalForm, .nyroModalFormFile {
position: relative;
min-height: 100px;
min-width: 250px;
}
.nyroModalImage, .nyroModalSwf, .nyroModalIframe, .nyroModalIframeForm {
position: relative;
overflow: hidden;
}
.nyroModalImage img {
vertical-align: top;
}
.nyroModalHidden {
left: -9999em;
top: -9999em;
}
.nyroModalLoad {
position: absolute;
width: 100px;
height: 100px;
background: transparent url(../../images/svg/loading-animation.svg) no-repeat center;
padding: 0;
background-size: 100px 100px;
}
.nyroModalPrev, .nyroModalNext {
outline: none;
position: absolute;
top: 0;
height: 60%;
width: 150px;
min-height: 50px;
max-height: 300px;
cursor: pointer;
text-indent: -9999em;
background: transparent url('data:image/gif;base64,AAAA') left 20% no-repeat;
}
.nyroModalImage .nyroModalPrev, .nyroModalImage .nyroModalNext {
height: 100%;
width: 40%;
max-height: none;
}
.nyroModalPrev {
left: 0;
}
.nyroModalPrev:hover {
}
.nyroModalNext {
right: 0;
}
.nyroModalNext:hover {
}
.nyroModalCont textarea,
.nyroModalCont input[type="text"],
.nyroModalCont select {
/*width:100%;*/
}
.nyroModalCont select {
max-width:100%;
}
.nyroModalLink, .nyroModalDom, .nyroModalForm, .nyroModalFormFile {
}
.nyroModalCont h1 {
font-size:var(--font-size-xxl);
color:var(--primary-font-color);
margin-bottom:20px;
}
.nyroModalCont .row .regLeft {
display:none;
}
.nyroModalCont .row .regRight {
min-width:500px;
}
.modal-icons {
float:right;
margin-top:1px;
margin-right:30px;
}
.nyroModalCont .modal-icons a {
display:inline-block;
line-height:23px;
border:0px solid var(--main-border-color);
border-radius:var(--box-radius-small);
width: 25px;
text-align: center;
color:var(--primary-font-color);
font-size: var(--font-size-m);
}
.nyroModalCloseButton {
border:0px solid var(--main-border-color);
font-size: var(--font-size-xl);
text-indent: 0;
color: var(--primary-font-color) !important;
border-radius:var(--box-radius-small);
height: 25px;
line-height: 25px;
right: 40px;
text-align: center;
top: 35px;
width: 25px;
z-index: 1000010;
}
.nyroModalCloseButton:hover,
.modal-icons a:hover {
text-decoration: none;
background:var(--main-border-color-hover) !important;
color:var(--primary-font-color);
}

View File

@@ -0,0 +1,412 @@
/* login */
.inputwrapper button { background: var(--main-action-bg); border-color: var(--main-border-color) }
.inputwrapper button:hover { background: var(--main-action-hover-bg); border-color: var(--main-border-color) }
/* background */
.leftmenu .nav-tabs.nav-stacked > li.active > a,
.leftmenu .nav-tabs.nav-stacked > li.active > a:hover,
.shortcuts li a,
.widgettitle,
.mediamgr .mediamgr_rightinner h4,
.messagemenu, .msglist li.selected,
.wizard .hormenu li a.done,
.wizard .hormenu li a.selected,
.actionBar a:hover, .actionBar a:hover,
.wizard .tabbedmenu, .nav-tabs > .active > a:focus,
.tabbable > .nav-tabs,
.nav-tabs > li > a:hover,
.nav-tabs > li > a:focus,
.nav-pills > .active > a,
.nav-pills > .active > a:hover,
.nav-pills > .active > a:focus,
.tabs-right .nav-tabs,
.tabs-right > .nav-tabs > li > a,
.tabs-left .nav-tabs,
.tabs-left > .nav-tabs > li > a,
.progress-primary .bar,
.ui-datepicker-calendar td.ui-datepicker-today a,
.nav-tabs > .active > a,
.nav-tabs > .active > a:hover,
.nav-tabs > .active > a:focus,
.nav-list > .active > a,
.nav-list > .active > a:hover,
.nav-list > .active > a:focus,
.fc-widget-header, .fc-widget-header.fc-agenda-gutter.fc-last, .chosen-container-multi .chosen-choices .search-choice,
div.tagsinput span.tag, .chosen-container .chosen-results .highlighted
{ background-color: var(--primary-color) }
.loginpanelinner,
.leftpanel .leftmenu .nav-tabs ul.projectselector li.active a{
background-color: var(--primary-color) !important;
color:var(--main-action-color);
}
.header .logo {
}
.boxedHighlight{
background:var(--accent1);
}
/* color */
a,a:hover,a:link,a:active,a:focus,
.userlist li .uinfo h5,
.messagemenu ul li.active a,
.msglist li h4,
.actionBar a,
.actionBar a.buttonDisabled,
.wizard .tabbedmenu li a.selected,
.wizard .tabbedmenu li a.done,
.tabbable > .nav-tabs > li.active > a,
.btn-circle.btn-primary, .btn-circle.btn-primary:hover, .btn-circle.btn-primary:focus,
.btn-circle.btn-primary:active, .btn-circle.btn-primary.active,
.btn-circle.btn-primary.disabled, .btn-circle.btn-primary[disabled],
.tabs-right > .nav-tabs .active > a,
.tabs-right > .nav-tabs .active > a:hover,
.tabs-right > .nav-tabs .active > a:focus,
.tabs-left > .nav-tabs .active > a,
.tabs-left > .nav-tabs .active > a:hover,
.tabs-left > .nav-tabs .active > a:focus,
.ticketBox a.userPopover:hover,
.primaryColor,
.optionLink,
.inlineDropDownContainer .ticketDropDown:hover,
.leftpanel .leftmenu .nav-tabs ul.projectselector li.intro a,
.maincontentinner .ticketDropdown.noBg >a,
.maincontentinner .ticketDropdown.noBg >a:link,
.viewDropDown .dropdown-menu li a.active
{ color: var(--primary-color); }
input[type='submit'],
button
{ background-color: var(--main-action-bg); }
input[type='submit']:hover,
button:hover {
background-color: var(--main-action-hover-bg);
color:#fff;
}
.chosen-container-multi .chosen-choices .search-choice {
color:#fff;
}
.btn-white {
background:#fff;
}
span.btn-white:hover{
background:#fff;
}
/* border color */
.widgetcontent,
.messagemenu ul li.active,
.messageleft,
.messageright,
.messagesearch,
.msgreply,
.wizard .hormenu li a,
.wizard .hormenu li:first-child a,
.stepContainer,
.actionBar,
.actionBar a,
.actionBar a.buttonDisabled,
.tabbable > .nav-tabs,
.tabbable > .tab-content,
.nav-tabs.nav-stacked > li > a:focus,
.btn-circle.btn-primary, .btn-circle.btn-primary:hover, .btn-circle.btn-primary:focus,
.btn-circle.btn-primary:active, .btn-circle.btn-primary.active,
.btn-circle.btn-primary.disabled, .btn-circle.btn-primary[disabled],
.nav-tabs,
.nav-tabs > li > a:hover, .nav-tabs > li > a:focus,
.tabs-below .tab-content,
.tabs-below > .nav-tabs > li.active > a,
.tabs-right,
.tabs-left,
.tab-primary.ui-tabs,
.nav-tabs.nav-stacked > li > a,
.nav-tabs.nav-stacked > li > a:hover,
.nav-tabs.nav-stacked > li > a:hover,
.nav-tabs.nav-stacked > li > a:focus,
.nav-tabs > .active > a,
.nav-tabs > .active > a:hover,
.nav-tabs > .active > a:focus,
div.tagsinput span.tag
{ border-color: var(--main-border-color) }
.ui-datepicker-header { background-color: var(--primary-color) !important; }
.ui-datepicker { border-color: var(--main-border-color) !important; }
/* extras */
.tabs-below > .nav-tabs > li.active > a { border-bottom: 1px solid var(--main-border-color) !important; }
.nav-list > li > a { color: #666; }
.tabs-left > .nav-tabs > li,
.tabs-right > .nav-tabs > li { border-color: var(--main-border-color); }
.leftmenu .nav-tabs.nav-stacked > li > a { border-color: var(--main-border-color) !important; }
.leftmenu .nav-tabs.nav-stacked > li.active > a { border-color: var(--main-border-color) !important; }
@media screen and (max-width: 480px) {
.userloggedinfo ul li a:hover { background-color: var(--primary-color); }
.userloggedinfo .userinfo,
.wizard .hormenu li,
.messageright { border-color: var(--main-border-color); }
}
.timesheetTable {
}
.timesheetTable input {
width:70%;
}
.week-picker {
width:100px;
}
.timesheetTable select {
width:90%;
}
.ui-weekpicker td a.ui-state-hover{
background:#eee;
}
.ui-weekpicker td a.ui-state-highlight {
background-color: var(--primary-color);
}
.ui-state-highlight {
background:#eee;
}
.companyProject,
.companyProject a{
color:#999;
font-weight:normal
}
.filterBar {
border:0px solid var(--main-border-color);
padding:10px;
margin-bottom:5px;
padding-top:5px;
margin-top: 10px;
background:var(--secondary-background);
border-radius:var(--box-radius);
z-index: 10;
position: absolute;
left: 0px;
box-shadow: var(--large-shadow);
}
.filterBar label {
font-weight:normal;
}
.headtitle {
background:var(--kanban-col-bg);
border:0px solid var(--main-border-color);
border-radius:var(--box-radius);
}
.filterBar .filterBoxLeft {
float:left;
margin-right:15px;
min-width:50px;
}
.filterBar .filterBoxLeft input,
.filterBar .filterBoxLeft select {
float:left;
}
label.inline {
float:left;
margin-right:5px;
padding-top:6px;
}
.loading {
position:absolute;
width:100%;
height:40px;
}
body .widgettitle.title-light {
color:var(--primary-color);
padding-left:0px;
background-color: transparent !important;
border-left:0px !important;
border-top:0px !important;
border-right:0px !important;
border-bottom:0px solid #ccc;
margin-bottom:15px;
font-size:var(--font-size-l);
box-shadow: none;
}
.nyroModalCont .widgettitle.title-light {
padding-top: 5px;
font-size:var(--font-size-l);
}
div.tagsinput {
border:1px solid var(--main-border-color);
}
body .tox .tox-edit-area__iframe,
body .tox .tox-toolbar-overlord{
background-color:transparent;
}
.ui-datepicker-next {
cursor: pointer;
position: absolute;
top: 8px;
right: 5px;
background: url(~images/calarrow.png) no-repeat 3px 1px;
}
.ui-datepicker-prev {
cursor: pointer;
position: absolute;
top: 8px;
left: 5px;
background: url(~images/calarrow.png) no-repeat 3px -39px;
}
.ui-datepicker-header {
position: relative;
text-align: center;
padding: 5px;
color: #fff;
background: var(--primary-color);
text-transform: uppercase;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.ui-datepicker {
border-radius:5px;
}
div.growl,
div.growl.growl-default,
div.growl div.growl-closer {
background:var(--secondary-background);
color:var(--primary-font-color);
padding:20px;
font-size:var(--base-font-size);
width:250px;
opacity:1;
border-radius:var(--box-radius);
box-shadow: var(--regular-shadow);
border:0px;
}
div.growl growl-close {
color:var(--primary-font-color);
font-size:var(--base-font-size);
}
div.growl.growl-default,
div.growl.growl-success{
border-left:5px solid var(--green);
}
div.growl.growl-notice {
border-left:5px solid var(--blue);
}
div.growl.growl-error {
border-left:5px solid var(--dark-red);
}
div.growl .growl-title {
font-size: 18px;
line-height: 24px;
display:none;
}
div.growl .growl-message {
font-size: var(--base-font-size);
line-height: 18px;
font-family: var(--primary-font-family);
}
div.growl.growl-medium {
width: 250px;
padding: 20px;
margin: 10px;
}
/* Playing with header */
:not(pre)>code[class*=language-], pre[class*=language-] {
}
code[class*=language-], pre[class*=language-] {
text-shadow:0px 1px var(--secondary-background);
}
element.style {
margin-top: 5px;
margin-bottom: 15px;
}
body hr {
margin: 20px 0;
border: 0;
border-bottom: 1px solid var(--main-border-color);
}
/* tippy overrides
*/
.tippy-content {
font-size:var(--font-size-s);
color: var(--secondary-action-hover-color);
}
.tippy-box {
background: var(--secondary-action-hover-bg);
}
.tippy-arrow {
color:var(--secondary-action-hover-bg);
}
.ui-resizable-se {
opaciy:0.5
}
#freshworks-container,
#freshworks-container #launcher-frame{
z-index:90 !important;
}

View File

@@ -0,0 +1,159 @@
@media print {
@page {
size:landscape;
}
* {
-webkit-print-color-adjust:exact;
overflow:hidden;
}
html, body {
width:100%;
mso-page-orientation: landscape;
}
.mainwrapper.menuopen .rightpanel {
margin-left:0px;
padding-top:0px;
width: 100%;
}
.dropdown .fa-caret-down {
display:none;
}
.dropdown a {
text-decoration:none !important;
}
.btn-group {
display:none;
}
a[href]:after {
content: '' !important;
}
.maincontent {
padding:0px;
}
.maincontentinner {
padding-top:0px;
}
.sortableTicketList .row-fluid {
overflow:hidden !important;
}
.column {
min-width:auto !important;
}
.header-title-dropdown {
vertical-align:middle;
}
.btn {
display:none !important;
}
.popup-wrapper {
display:none !important;
}
.footer {
position: fixed;
right: 10px;
padding: 0px !important;
bottom: 10px;
}
/*
* When a modal (e.g. a single to-do) is open, print only the modal's
* content instead of the underlying page. nyroModal appends .nyroModalBg
* (overlay) and .nyroModalCont (content) to the body, so we can hide the
* rest of the app and let the modal flow onto the page.
*/
body:has(.nyroModalCont) .mainwrapper,
body:has(.nyroModalCont) .nyroModalBg,
.nyroModalCont .nyroModalClose,
.nyroModalCont .modalCloseButton {
display: none !important;
}
body:has(.nyroModalCont) .nyroModalCont {
position: static !important;
width: 100% !important;
max-width: 100% !important;
height: auto !important;
margin: 0 !important;
padding: 0 !important;
box-shadow: none !important;
overflow: visible !important;
page-break-inside: avoid;
}
body:has(.nyroModalCont) .nyroModalCont * {
overflow: visible !important;
}
}
/*
* Report screens (project / plan / strategy): keep board-packet output clean.
*/
@media print {
.periodPicker .btn-group,
.periodPicker .periodPickerCustom,
.hideOnPrint {
display: none !important;
}
.reportMilestone,
.reportStatusUpdate,
.reportGoalTable tr,
.reportNeedsAttention,
.reportSlippage,
.programMatrixTable tr {
page-break-inside: avoid;
}
/* Expand drill-down task lists so the packet is complete on paper. */
.reportKeyTasks {
display: block;
}
.reportKeyTasks[open] summary,
.reportKeyTasks summary {
list-style: none;
}
.reportKeyTasks > ul {
display: block !important;
}
/* Status colors must survive printer color handling. */
.reportStatusPill span,
.reportStatusNarrative .reportStatusUpdate,
.reportNeedsAttention {
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
}
/* Milestone links read as text in the packet. */
.hideLinkOnPrint {
color: inherit !important;
text-decoration: none !important;
}
}
@media print {
/* Chromium hides closed <details> content via content-visibility. */
.reportKeyTasks::details-content {
content-visibility: visible !important;
display: block !important;
}
}

View File

@@ -0,0 +1,698 @@
.progress {
height: 16px;
}
.progress .bar {
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.progress-primary .bar {
background: var(--element-gradient);
}
.progress-info .bar {
background: var(--element-gradient);
}
.progress-success .bar {
background: var(--element-gradient);
}
.progress-warnng .bar {
background: var(--element-gradient);
}
.progress {
height: 16px;
margin-bottom: 0px;
border-radius: var(--element-radius);
overflow: hidden;
background-color: var(--layered-background);
box-shadow: var(--input-shadow);
}
.progress-wrapper .percent-label {
font-size:var(--font-size-s);
}
.progress-bar {
float: left;
width: 0;
height: 100%;
font-size: var(--base-font-size);
color: var(--accent1-color);
text-align: center;
background-color: var(--accent1);
-webkit-box-shadow: var(--min-shadow);
box-shadow: var(--min-shadow);
-webkit-transition: width 0.6s ease;
transition: width 0.6s ease;
}
.progress-striped .progress-bar {
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-size: 40px 40px;
}
.progress.active .progress-bar {
-webkit-animation: progress-bar-stripes 2s linear infinite;
-moz-animation: progress-bar-stripes 2s linear infinite;
-ms-animation: progress-bar-stripes 2s linear infinite;
-o-animation: progress-bar-stripes 2s linear infinite;
animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
background: var(--element-gradient);
}
.progress-striped .progress-bar-success {
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
background-color: var(--blue);
}
.progress-striped .progress-bar-info {
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
background-color: var(--yellow);
}
.progress-striped .progress-bar-warning {
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
background-color: var(--red);
}
.progress-striped .progress-bar-danger {
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progressWrapper {
position:relative;
height: 44px;
}
.progressWrapper .step {
position: absolute;
display: block;
top: -10px;
margin-left: -16px;
}
.progressWrapper .step .innerCircle {
display:block;
width: 30px;
height: 30px;
border: 5px solid var(--layered-background);
border-radius: 20px;
background: var(--solid-neutral);
margin-top: 4px;
}
.progressWrapper .step .title {
margin-left:calc(-50% + 36px);
padding-top: 4px;
display: inline-block;
color:var(--primary-font-color);
opacity:var(--opacity-disabled);
font-size:var(--font-size-m);
}
.progressWrapper .step .title:hover {
color:var(--primary-font-color) !important;
}
@-webkit-keyframes breathing {
0% {
-webkit-transform: scale(0.9);
transform: scale(0.9);
}
25% {
-webkit-transform: scale(1);
transform: scale(1);
}
50% {
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
75% {
-webkit-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(0.9);
transform: scale(0.9);
}
}
@keyframes breathing {
0% {
-webkit-transform: scale(0.9);
-ms-transform: scale(0.9);
transform: scale(0.9);
}
25% {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
50% {
-webkit-transform: scale(1.2);
-ms-transform: scale(1.2);
transform: scale(1.2);
}
75% {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
100% {
-webkit-transform: scale(0.9);
-ms-transform: scale(0.9);
transform: scale(0.9);
}
}
.progressWrapper .step.complete .innerCircle {
background:var(--accent1);
color:var(--accent1);
}
.progressWrapper .step.complete .title{
color:var(--accent1);
opacity:1;
}
.progressWrapper .step.current .innerCircle {
-webkit-animation: breathing 2s ease-out infinite normal;
animation: breathing 2s ease-out infinite normal;
background:var(--accent2);
}
.progressWrapper .step.current .title{
color:var(--accent1);
font-weight:var(--font-weight-bold);
opacity:1;
}
.progressWrapper .step .dropdown-menu {
padding:10px;
min-width:360px;
}
.progressWrapper .step .dropdown-menu li {
display:block;
clear:both;
padding:0px 10px 4px 10px;
border-color:var(--accent1);
border:1px solid var(--accent1);
border-radius:var(--box-radius);
margin-bottom:4px;
}
.progressWrapper .step .dropdown-menu li label {
color:var(--accent1);
}
.progressWrapper .step .dropdown-menu li.done {
opacity:var(--opacity-muted);
}
.progressWrapper .step .dropdown-menu li:hover {
background:var(--main-menu-link-hover-bg);
}
.progressWrapper .step .dropdown-menu li.done label{
text-decoration: line-through;
color:var(--primary-font-color);
}
.progressWrapper .step .dropdown-menu li input {
float:left;
margin-right:4px;
}
.progressWrapper .step li.checklistDescription {
padding:4px;
font-style:italic;
border:none;
}
.progressWrapper .step li .taskDescription {
font-size: var(--font-size-s);
}
.full-width-loader {
opacity: 0;
position: fixed;
z-index: var(--zlayer-7);
top: 0px;
left: 0px;
height: 4px;
width: 100%;
background-color: transparent;
overflow: hidden;
}
.full-width-loader .indeterminate {
position: relative;
width: 100%;
background-color: transparent;
height: 4px;
}
.full-width-loader .indeterminate::before {
content: '';
position: absolute;
height: 100%;
background: var(--element-gradient);
animation: indeterminate 1.5s infinite ease-in-out;
width: 70%;
left: -70%;
box-shadow: var(--regular-shadow);
}
@keyframes indeterminate {
0% {
left: -70%;
}
100% {
left: 100%;
}
}
.full-width-loader.htmx-request {
display: block;
opacity: 1;
}
/* Singleton top-of-page HTMX progress bar (driven by leantime.htmxProgress in app.js).
One fixed element for the whole app; position:fixed means it never affects layout. */
#lt-htmx-progress {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 3px;
z-index: var(--zlayer-9, 9999);
pointer-events: none;
opacity: 0;
transition: opacity 150ms ease;
overflow: hidden;
}
#lt-htmx-progress.active {
opacity: 1;
}
#lt-htmx-progress .bar {
position: absolute;
top: 0;
bottom: 0;
width: 40%;
left: -40%;
background: var(--element-gradient, var(--accent1, #006d9f));
animation: lt-htmx-progress-slide 1.1s infinite ease-in-out;
}
@keyframes lt-htmx-progress-slide {
0% { left: -40%; width: 40%; }
50% { left: 30%; width: 55%; }
100% { left: 100%; width: 40%; }
}
/* ----------------------------------------------
* Generated by Animista on 2025-3-4 12:23:18
* Licensed under FreeBSD License.
* See http://animista.net/license for more info.
* w: http://animista.net, t: @cssanimista
* ---------------------------------------------- */
/**
* ----------------------------------------
* animation color-change-2x
* ----------------------------------------
*/
@-webkit-keyframes color-change-2x {
0% {
color: var(--accent1);
}
50% {
color: var(--accent2);
}
100% {
color: var(--accent1);
}
}
@keyframes color-change-2x {
0% {
color: var(--accent1);
}
50% {
color: var(--accent2);
}
100% {
color: var(--accent1);
}
}
@keyframes pulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}
@keyframes circle-pulse {
0%{
transform: rotate(0deg);
border-color: var(--accent1);
} 100% {
transform: rotate(360deg);
border-color: var(--accent2);
}
}
/* Animations */
@keyframes startPulse {
0% { transform: scale(1); }
50% { transform: scale(0.95); }
75% { transform: scale(1.05); }
100% { transform: scale(1); }
}
@keyframes rippleOut {
0% { transform: translate(-50%, -50%) scale(0); opacity: 1; }
100% { transform: translate(-50%, -50%) scale(1.5); opacity: 0; }
}
@keyframes glowIn {
0% { opacity: 0; }
100% { opacity: 1; }
}
/* Animations */
@keyframes completePulse {
0% { transform: scale(1); }
50% { transform: scale(1.1); }
100% { transform: scale(1); }
}
@keyframes glowPulse {
0% { transform: translate(-50%, -50%) scale(0.8); opacity: 0.8; }
50% { opacity: 0.6; }
100% { transform: translate(-50%, -50%) scale(2.5); opacity: 0; }
}
@keyframes fadeInCheck {
0% { opacity: 0; transform: scale(0.8); }
100% { opacity: 1; transform: scale(1); }
}
@keyframes circleAppear {
0% { transform: translate(-50%, -50%) scale(0); opacity: 0; }
100% { transform: translate(-50%, -50%) scale(1); opacity: 1; }
}
/* Particle animations - each one goes in a different direction */
@keyframes particleAnimation1 {
0% { transform: translate(0, 0); opacity: 1; }
100% { transform: translate(-30px, -30px); opacity: 0; }
}
@keyframes particleAnimation2 {
0% { transform: translate(0, 0); opacity: 1; }
100% { transform: translate(30px, -30px); opacity: 0; }
}
@keyframes particleAnimation3 {
0% { transform: translate(0, 0); opacity: 1; }
100% { transform: translate(40px, 0); opacity: 0; }
}
@keyframes particleAnimation4 {
0% { transform: translate(0, 0); opacity: 1; }
100% { transform: translate(30px, 30px); opacity: 0; }
}
@keyframes particleAnimation5 {
0% { transform: translate(0, 0); opacity: 1; }
100% { transform: translate(-30px, 30px); opacity: 0; }
}
@keyframes particleAnimation6 {
0% { transform: translate(0, 0); opacity: 1; }
100% { transform: translate(-40px, 0); opacity: 0; }
}
@keyframes particleAnimation7 {
0% { transform: translate(0, 0); opacity: 1; }
100% { transform: translate(-20px, -40px); opacity: 0; }
}
@keyframes particleAnimation8 {
0% { transform: translate(0, 0); opacity: 1; }
100% { transform: translate(20px, 40px); opacity: 0; }
}
.pulse {
-webkit-animation: pulse 1s infinite linear both;
animation: pulse 1s infinite linear both;
}
.color-change-2x {
-webkit-animation: color-change-2x 1s infinite linear both;
animation: color-change-2x 1s infinite linear both;
}
.pulse-click.starting {
animation: startPulse 0.5s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.pulse-click.starting::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: 100%;
background-color: rgba(82, 113, 255, 0.3);
border-radius: 50%;
transform: translate(-50%, -50%) scale(0);
animation: rippleOut 0.5s ease-out;
}
.pulse-click.starting::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: 20px;
box-shadow: inset 0 0 10px rgba(255, 255, 255, 0.5);
opacity: 0;
animation: glowIn 0.4s ease-out forwards;
}
.circle-pulse {
-webkit-animation: circle-pulse 1s infinite linear both;
animation: circle-pulse 1s infinite linear both;
}
.timerContainer.stopped {
animation: pulse 0.4s ease-out;
}
.timerContainer .stopped::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
background-image: radial-gradient(circle, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.0) 70%);
border-radius: 50%;
opacity: 0;
animation: burst 0.8s ease-out forwards;
}
/* Stopped state with celebrations */
.timerContainer .stopped {
animation: completePulse 0.4s ease-out;
}
/* Glow effect behind the button */
.timerContainer .stopped::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
background: radial-gradient(circle, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.0) 70%);
border-radius: 50%;
z-index: -1;
opacity: 0;
animation: glowPulse 0.8s ease-out forwards;
}
/* Checkmark that appears */
.timerContainer .stopped::after {
content: '✓';
color: white;
font-size: var(--font-size-xxl);
position: absolute;
z-index: var(--zlayer-2);
opacity: 0;
animation: fadeInCheck 0.3s 0.2s ease-out forwards;
}
/* Success circle that appears */
.timerContainer .success-circle {
position: absolute;
display:none;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(0);
width: 40px;
height: 40px;
border-color: var(--grey);
border-width: 1px;
border-style: solid;
border-radius: 50%;
z-index: var(--zlayer-1);
opacity: 0;
}
.timerContainer .stopped .success-circle {
display:block;
animation: circleAppear 0.3s 0.1s ease-out forwards;
}
/* Container for all the particles */
.particles-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
pointer-events: none;
}
/* Individual particles with different colors */
.particle {
position: absolute;
top: 50%;
left: 50%;
width: 8px;
height: 8px;
border-radius: 50%;
opacity: 0;
}
.timerContainer .stopped .particle-1 {
background-color: var(--accent1);
animation: particleAnimation1 0.8s ease-out;
}
.timerContainer .stopped .particle-2 {
background-color: var(--accent2);
animation: particleAnimation2 0.8s ease-out;
}
.timerContainer .stopped .particle-3 {
background-color: var(--accent4);
animation: particleAnimation3 0.8s ease-out;
}
.timerContainer .stopped .particle-4 {
background-color: var(--accent1);
animation: particleAnimation4 0.8s ease-out;
}
.timerContainer .stopped .particle-5 {
background-color: var(--accent2);
animation: particleAnimation5 0.8s ease-out;
}
.timerContainer .stopped .particle-6 {
background-color: var(--accent4);
animation: particleAnimation6 0.8s ease-out;
}
.timerContainer .stopped .particle-7 {
background-color: var(--accent1);
animation: particleAnimation7 0.8s ease-out;
}
.timerContainer .stopped .particle-8 {
background-color: var(--accent2);
animation: particleAnimation8 0.8s ease-out;
}
@keyframes rotate {
from {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}

View File

@@ -0,0 +1,196 @@
/* Quick-add form styles */
.quickaddContainer {
margin-bottom: 10px;
width: 100%;
box-sizing: border-box;
&.quickaddContainer--empty {
padding: 6px;
}
}
.quickAddLink {
display: flex;
align-items: center;
gap: 6px;
color: var(--main-action-color);
text-decoration: none;
padding: 8px;
border-radius: var(--box-radius);
transition: color 0.2s ease;
font-size: var(--font-size-s);
&:hover {
color: var(--accent1);
}
&.empty-state {
justify-content: flex-start;
padding: 10px;
color: var(--primary-font-color);
opacity: 0.7;
&:hover {
color: var(--accent1);
opacity: 1;
}
}
i {
font-size: 14px;
}
}
form.quickAddForm {
position: relative;
display: block;
width: 100%;
padding: 12px;
box-sizing: border-box;
margin: 0;
&.active {
animation: fadeIn 0.2s ease;
}
.quickaddContainer--empty & {
padding: 12px;
}
}
.quickAddForm .form-group {
position: relative;
margin-bottom: 0;
width: 100%;
box-sizing: border-box;
}
/* Help icon positioned in top-right corner of form */
.quickAddHelp {
position: absolute;
top: 8px;
right: 8px;
font-size: 14px;
color: var(--primary-font-color);
opacity: 0.4;
cursor: help;
transition: opacity 0.2s ease, color 0.2s ease;
padding: 4px;
z-index: 5;
&:hover,
&:focus {
opacity: 1;
color: var(--accent1);
outline: none;
}
&:focus-visible {
outline: 2px solid var(--accent1);
outline-offset: 2px;
border-radius: 50%;
opacity: 1;
}
}
.quickAddInput {
width: 100%;
max-width: 100%;
height: 36px;
border: 1px solid var(--main-border-color);
border-radius: var(--box-radius);
padding: 8px 12px;
font-family: var(--primary-font-family);
font-size: var(--font-size-s);
color: var(--primary-font-color);
background: var(--main-bg);
line-height: 1.4;
display: block;
box-sizing: border-box;
&:focus {
border-color: var(--accent1);
outline: none;
box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent1) 15%, transparent);
}
&.error {
border-color: var(--red);
}
&::placeholder {
color: var(--primary-font-color);
opacity: 0.5;
}
}
.error-message {
color: var(--red);
font-size: var(--font-size-s);
margin-top: 4px;
padding: 4px 8px;
background: color-mix(in srgb, var(--red) 10%, transparent);
border-radius: var(--box-radius);
}
.formButtonContainer {
display: flex;
align-items: center;
gap: 8px;
margin-top: 10px;
.btn {
padding: 6px 14px;
font-size: var(--font-size-s);
}
.btn-primary {
flex-shrink: 0;
}
.btn-secondary {
flex-shrink: 0;
}
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(-5px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
.quickAddForm {
animation: none;
}
@keyframes fadeIn {
from {
opacity: 1;
transform: translateY(0);
}
to {
opacity: 1;
transform: translateY(0);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,242 @@
/*
* Report screens (project / plan / strategy).
* Quiet, packet-like: card surfaces, muted labels, tabular numbers. The only loud
* elements are the status dots and the needs-attention accent border.
*/
/* ── stat tiles ─────────────────────────────────────────────────────── */
.reportStatTiles {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
gap: 12px;
margin-bottom: 24px;
}
.reportStatTile {
background: var(--card-bg, var(--secondary-background));
border: 1px solid var(--card-border, var(--main-border-color));
border-radius: var(--card-radius, var(--box-radius));
padding: 14px 16px;
}
.reportStatTile .tileLabel {
display: block;
font-size: var(--font-size-s);
color: var(--secondary-font-color);
margin-bottom: 4px;
}
.reportStatTile .tileValue {
display: block;
font-size: var(--font-size-xxxl);
font-weight: 600;
line-height: 1.15;
color: var(--primary-font-color);
}
.reportStatTile .tileValue.tileValueDanger {
color: var(--red);
}
.reportStatTile .tileDelta {
display: block;
font-size: var(--font-size-s);
color: var(--secondary-font-color);
margin-top: 4px;
}
.reportStatTile .tileDelta.deltaGood { color: var(--green); }
.reportStatTile .tileDelta.deltaBad { color: var(--red); }
/* ── sections ───────────────────────────────────────────────────────── */
.reportSection {
margin-bottom: 32px;
}
.reportSection h5.subtitle {
display: flex;
align-items: baseline;
gap: 8px;
padding-bottom: 6px;
margin-bottom: 12px;
border-bottom: 1px solid var(--main-border-color);
}
.reportSection h5.subtitle .sectionCount {
font-size: var(--font-size-s);
font-weight: normal;
color: var(--secondary-font-color);
}
/* ── needs attention ────────────────────────────────────────────────── */
.reportNeedsAttention {
background: var(--card-bg, var(--secondary-background));
border: 1px solid var(--card-border, var(--main-border-color));
border-left: 3px solid var(--red);
border-radius: var(--card-radius, var(--box-radius));
padding: 14px 16px;
margin-bottom: 24px;
}
.reportNeedsAttention h5.subtitle {
border-bottom: 0;
padding-bottom: 0;
margin-bottom: 8px;
}
.reportNeedsAttention ul li {
padding: 3px 0;
font-size: var(--font-size-m);
}
/* ── milestone list ─────────────────────────────────────────────────── */
.reportMilestoneList {
list-style: none;
padding: 0;
margin: 0;
}
.reportMilestoneList .reportMilestone {
background: var(--card-bg, var(--secondary-background));
border: 1px solid var(--card-border, var(--main-border-color));
border-radius: var(--card-radius, var(--box-radius));
padding: 10px 14px;
margin: 0 0 8px 0;
}
.reportMilestone .milestoneTitleRow {
display: flex;
align-items: baseline;
gap: 8px;
flex-wrap: wrap;
}
.reportMilestone .milestoneProject {
font-size: var(--font-size-s);
color: var(--secondary-font-color);
}
.reportMilestone .milestoneMeta {
margin-left: auto;
font-size: var(--font-size-s);
color: var(--secondary-font-color);
white-space: nowrap;
font-variant-numeric: tabular-nums;
}
.reportMilestone .milestoneOutcome .outcomeText {
margin-top: 4px;
font-size: var(--font-size-m);
}
.reportMilestone .reportKeyTasks summary {
font-size: var(--font-size-s);
color: var(--secondary-font-color);
cursor: pointer;
margin-top: 4px;
}
.reportMilestone .progress {
height: 6px;
margin: 0;
flex: 1;
}
/* ── tables ─────────────────────────────────────────────────────────── */
.reportTable {
width: 100%;
border-collapse: collapse;
}
.reportTable thead th {
font-size: var(--font-size-s);
font-weight: 600;
color: var(--secondary-font-color);
text-align: left;
padding: 6px 12px;
border-bottom: 1px solid var(--main-border-color);
white-space: nowrap;
}
.reportTable tbody td {
padding: 10px 12px;
border-bottom: 1px solid var(--main-border-color);
vertical-align: top;
font-size: var(--font-size-m);
}
.reportTable tbody tr:last-child td {
border-bottom: 0;
}
.reportTable th.numCol,
.reportTable td.numCol {
text-align: right;
white-space: nowrap;
font-variant-numeric: tabular-nums;
}
.reportTable td .cellNote {
display: block;
font-size: var(--font-size-s);
color: var(--secondary-font-color);
margin-top: 2px;
}
.reportTable .table-group-row td {
font-weight: 600;
color: var(--secondary-font-color);
font-size: var(--font-size-s);
padding-top: 14px;
border-bottom: 0;
}
/* ── narrative & slippage ───────────────────────────────────────────── */
.reportStatusUpdate {
padding: 6px 0 6px 12px;
}
.reportSlippage {
border: 1px dashed var(--main-border-color);
border-radius: var(--card-radius, var(--box-radius));
padding: 10px 14px;
margin-top: 12px;
font-size: var(--font-size-s);
color: var(--secondary-font-color);
}
.reportSlippage strong {
color: var(--primary-font-color);
}
/* ── period picker & header band ────────────────────────────────────── */
.reportHeaderBand {
display: flex;
align-items: center;
gap: 20px;
flex-wrap: wrap;
margin-bottom: 16px;
font-size: var(--font-size-m);
}
.reportStatusPill {
display: inline-flex;
align-items: center;
gap: 6px;
white-space: nowrap;
}
.statusDot {
display: inline-block;
width: 9px;
height: 9px;
border-radius: 50%;
flex: none;
}

View File

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,956 @@
/*
* Reverse wizard + intercept modal + review + source-chip styles.
*
* Consumed by the StrategyPro plugin's reverse-engineering flow, but loaded
* from the CORE bundle (imported via main.less, like report-deck.css) because
* the wizard never renders on "its own page": the intercept modal is echoed by
* a register.php hook onto arbitrary pages, the stage screens arrive as HTMX
* swaps, and the source-chip is procedurally rendered by the board hook —
* so the styles must already be in the head everywhere.
*
* Extracted from per-template <style> blocks (plugins PR #79 cleanup); CSS
* lives in CSS files, never in blade templates.
*
* Scopes: .reverse-modal (intercept), .rev-wiz (stages; .rev-wiz--outcomes /
* .rev-wiz--step carry the four per-stage divergences), .rev-review (review),
* .sp-source-chip (colors computed per program stay inline).
*/
/* Scoped design tokens — derived from the global theme tokens so the
* light/dark CSS swap re-skins the wizard automatically (nyroModal pattern).
* Literals below have no global equivalent; the [data-theme="dark"]/.dark
* block (tiptap pattern) retunes them when a theme attribute is stamped.
* The source-chip's computed per-program colors are self-contained tinted
* pills (AA inside the pill) and deliberately theme-independent. */
.reverse-modal, .rev-wiz, .rev-review {
--rw-panel: var(--secondary-background);
--rw-text: var(--primary-font-color);
--rw-text-2: #5a6a72;
--rw-muted: #8996a0;
--rw-faint: #b3bdc4;
--rw-border: var(--main-border-color);
--rw-border-soft: #f0f3f4;
--rw-accent: var(--accent2);
--rw-accent-deep: #008062;
--rw-primary: var(--primary-color);
--rw-tgt: #8E6AAD;
}
[data-theme="dark"] .reverse-modal, .dark .reverse-modal,
[data-theme="dark"] .rev-wiz, .dark .rev-wiz,
[data-theme="dark"] .rev-review, .dark .rev-review {
--rw-text-2: #b6bec4;
--rw-muted: #97a1a8;
--rw-faint: #6a747c;
--rw-border-soft: #3a3f44;
--rw-accent-deep: #57b598;
--rw-tgt: #b79ad1;
}
/* ── Intercept modal ─────────────────────────────────────────────── */
/* Scoped to the intercept modal — reverse-* prefix so nothing collides
with the canvas view CSS underneath. */
.reverse-modal-backdrop {
position:fixed;
inset:0;
background:rgba(24,40,49,0.45);
backdrop-filter:blur(3px);
z-index:var(--zlayer-9, 9999);
display:flex;
align-items:center;
justify-content:center;
padding:28px;
overflow:hidden;
}
/* Modal itself scrolls internally when the step content is taller than
the viewport. Without this, long steps (Activities with two altitudes
+ textarea + helper hint) push the Continue/Cancel foot below the
viewport with no way to reach it. */
.reverse-modal {
width:100%;
max-width:720px;
max-height:calc(100vh - 56px);
background:var(--rw-panel);
border-radius:18px;
box-shadow:0 20px 56px rgba(20,40,50,.18);
overflow-y:auto;
overflow-x:hidden;
font-family:'Hanken Grotesk',sans-serif;
color:var(--rw-text);
-webkit-overflow-scrolling:touch;
}
.reverse-modal .rm-hd {
padding:24px 28px 6px;
text-align:center;
}
.reverse-modal .rm-hd .ic {
width:52px;
height:52px;
border-radius:14px;
background:#eef4f3;
color:var(--rw-primary);
display:flex;
align-items:center;
justify-content:center;
font-size:22px;
margin:0 auto 14px;
}
.reverse-modal .rm-hd h1 {
font-size:22px;
font-weight:600;
letter-spacing:-.3px;
margin:0;
}
.reverse-modal .rm-hd p {
font-size:13.5px;
color:#7a8791;
margin-top:6px;
max-width:440px;
margin-left:auto;
margin-right:auto;
line-height:1.5;
}
.reverse-modal .rm-found {
margin:0 28px 20px;
padding:11px 15px;
background:#f6f8f7;
border-radius:11px;
font-size:12.5px;
color:#4a5a63;
display:flex;
align-items:center;
gap:9px;
line-height:1.4;
}
.reverse-modal .rm-found i {
color:var(--rw-accent);
}
.reverse-modal .rm-found b {
color:var(--rw-text);
}
.reverse-modal .rm-body {
padding:16px 28px 26px;
display:flex;
flex-direction:column;
gap:11px;
}
.reverse-modal .rm-opt {
display:flex;
align-items:center;
gap:15px;
padding:16px 18px;
border:1.5px solid #e3e8ea;
border-radius:14px;
cursor:pointer;
transition:all .15s;
text-decoration:none;
color:inherit;
background:var(--rw-panel);
}
.reverse-modal .rm-opt:hover {
border-color:var(--rw-accent);
background:#f8fbfa;
}
.reverse-modal .rm-opt.primary {
border-color:#bfe0d4;
background:#f4fbf8;
}
.reverse-modal .rm-opt .oic {
width:42px;
height:42px;
border-radius:11px;
display:flex;
align-items:center;
justify-content:center;
font-size:17px;
color:#fff;
flex:none;
}
.reverse-modal .rm-opt .ot {
font-size:15px;
font-weight:600;
display:flex;
align-items:center;
gap:9px;
line-height:1.3;
}
.reverse-modal .rm-opt .obadge {
font-size:10px;
font-weight:600;
background:#e7f5ee;
color:#1a7d52;
border-radius:20px;
padding:2px 9px;
}
.reverse-modal .rm-opt .od {
font-size:12.5px;
color:#7a8791;
margin-top:2px;
line-height:1.45;
}
.reverse-modal .rm-opt .arr {
margin-left:auto;
color:#aab4bb;
font-size:15px;
}
.reverse-modal .rm-opt.is-loading {
opacity:.6;
pointer-events:none;
}
.reverse-modal .htmx-indicator {
display:none;
}
.reverse-modal .htmx-request .htmx-indicator {
display:inline-block;
}
/* When the intercept is up, hide the underlying stage flow so the modal
reads as a takeover, not an overlay on active work. */
body.reverse-intercept-open .lmCanvas-stages, body.reverse-intercept-open .lm-stages, body.reverse-intercept-open [data-lm-stages] {
visibility:hidden;
}
/* ── Wizard stages: shared chrome (outcomes + step) ─────────────── */
.rev-wiz {
font-family:'Hanken Grotesk',sans-serif;
color:var(--rw-text);
}
.rev-wiz .rw-hd {
padding:26px 30px 0;
text-align:center;
}
.rev-wiz .rw-hd .ey {
font-size:11px;
font-weight:600;
letter-spacing:1.4px;
text-transform:uppercase;
color:var(--rw-accent);
margin-bottom:8px;
}
.rev-wiz .rw-hd h1 {
font-size:21px;
font-weight:600;
letter-spacing:-.3px;
margin:0;
}
.rev-wiz .rw-hd p {
font-size:13.5px;
color:var(--rw-muted);
margin-top:7px;
max-width:470px;
margin-left:auto;
margin-right:auto;
line-height:1.5;
}
.rev-wiz .rw-rail {
display:flex;
align-items:flex-start;
justify-content:center;
padding:20px 30px 30px;
}
.rev-wiz .rw-node {
display:flex;
align-items:center;
}
.rev-wiz .rw-dot {
width:9px;
height:9px;
border-radius:50%;
background:var(--rw-border);
position:relative;
}
.rev-wiz .rw-node.done .rw-dot {
background:var(--rw-accent);
}
.rev-wiz .rw-node.on .rw-dot {
background:var(--rw-tgt);
box-shadow:0 0 0 4px #f2edf8;
}
.rev-wiz .rw-seg {
width:36px;
height:2px;
background:var(--rw-border);
}
.rev-wiz .rw-seg.done {
background:var(--rw-accent);
}
.rev-wiz .rw-lab {
position:absolute;
top:15px;
left:50%;
transform:translateX(-50%);
font-size:10.5px;
white-space:nowrap;
color:var(--rw-tgt);
font-weight:600;
}
.rev-wiz .rw-scope {
display:flex;
align-items:center;
gap:9px;
margin:0 30px 18px;
padding:11px 15px;
background:#f7f9f9;
border-radius:12px;
font-size:12.5px;
color:var(--rw-text-2);
}
.rev-wiz .rw-scope i.si {
color:var(--rw-primary);
opacity:.7;
}
.rev-wiz .rw-scope b {
color:var(--rw-text);
font-weight:600;
}
.rev-wiz .rw-body {
padding:0 30px 6px;
}
.rev-wiz .rw-row {
display:flex;
align-items:center;
gap:14px;
padding:15px 16px;
border:1px solid var(--rw-border-soft);
border-radius:14px;
margin-bottom:9px;
cursor:pointer;
transition:border-color .15s,background .15s;
background:var(--rw-panel);
}
.rev-wiz .rw-row:hover {
border-color:#d6e3de;
background:#fbfdfc;
}
.rev-wiz .rw-row.is-sel {
border-color:#bfe3d6;
background:#f5fbf9;
}
.rev-wiz .rw-ck {
width:20px;
height:20px;
border-radius:6px;
border:1.5px solid var(--rw-border);
display:flex;
align-items:center;
justify-content:center;
flex:none;
color:#fff;
font-size:10px;
transition:.15s;
background:var(--rw-panel);
}
.rev-wiz .rw-row.is-sel .rw-ck {
background:var(--rw-accent);
border-color:var(--rw-accent);
}
.rev-wiz .rw-main {
min-width:0;
flex:1;
}
.rev-wiz .rw-name {
font-size:14px;
font-weight:600;
line-height:1.3;
color:var(--rw-text);
}
.rev-wiz .rw-meta .dot {
margin:0 6px;
opacity:.5;
}
.rev-wiz .rw-reveal {
display:flex;
align-items:center;
gap:10px;
width:100%;
padding:13px 16px;
margin-top:4px;
background:none;
border:1px dashed var(--rw-border);
border-radius:14px;
cursor:pointer;
font-family:inherit;
font-size:12.5px;
color:var(--rw-text-2);
}
.rev-wiz .rw-reveal:hover {
border-color:#cdd6db;
background:#fafbfb;
}
.rev-wiz .rw-reveal i.lead {
color:var(--rw-faint);
}
.rev-wiz .rw-reveal .rc {
margin-left:auto;
color:var(--rw-faint);
font-size:11px;
}
.rev-wiz .rw-hidden {
display:none;
}
.rev-wiz .rw-hidden.open {
display:block;
margin-top:9px;
}
.rev-wiz .rw-prov {
font-size:11.5px;
color:var(--rw-faint);
margin:14px 2px 4px;
display:flex;
align-items:center;
gap:7px;
}
.rev-wiz .rw-foot {
display:flex;
align-items:center;
gap:12px;
padding:18px 30px 22px;
border-top:1px solid var(--rw-border-soft);
margin-top:12px;
}
.rev-wiz .rw-foot .cnt {
font-size:12.5px;
color:var(--rw-muted);
}
.rev-wiz .rw-foot .cnt b {
color:var(--rw-text);
}
.rev-wiz .rw-foot .sp {
margin-left:auto;
}
.rev-wiz .rw-btn-skip {
border:none;
background:none;
color:var(--rw-muted);
}
/* ── Outcomes-stage specifics ────────────────────────────────────── */
.rev-wiz.rev-wiz--outcomes .rw-seclab {
font-size:12px;
color:var(--rw-muted);
margin:0 2px 11px;
}
.rev-wiz.rev-wiz--outcomes .rw-meta {
font-size:11.5px;
color:var(--rw-muted);
margin-top:5px;
display:flex;
align-items:center;
flex-wrap:wrap;
gap:2px;
}
.rev-wiz.rev-wiz--outcomes .rw-btn {
font-family:inherit;
font-size:13px;
font-weight:500;
border-radius:22px;
padding:10px 17px;
cursor:pointer;
border:1px solid var(--rw-border);
background:var(--rw-panel);
color:var(--rw-text-2);
}
.rev-wiz.rev-wiz--outcomes .rw-btn-next {
background:var(--rw-primary);
color:#fff;
border-color:var(--rw-primary);
font-weight:600;
display:inline-flex;
align-items:center;
gap:8px;
}
.rev-wiz .rw-meta .tgt {
color:var(--rw-tgt);
font-weight:600;
}
.rev-wiz .rw-source-note {
font-size:12px;
color:#54636b;
margin:16px 2px 2px;
padding-top:13px;
border-top:1px dashed var(--rw-border-soft);
display:flex;
align-items:flex-start;
gap:8px;
line-height:1.55;
}
.rev-wiz .rw-source-note i {
color:var(--rw-accent-deep);
margin-top:2px;
flex:none;
font-size:11px;
}
.rev-wiz .rw-btn-next[disabled] {
opacity:.5;
cursor:not-allowed;
}
/* ── Step-stage specifics ────────────────────────────────────────── */
.rev-wiz.rev-wiz--step .rw-seclab {
font-size:12px;
color:var(--rw-muted);
margin:14px 2px 11px;
text-transform:uppercase;
letter-spacing:.5px;
font-weight:600;
}
.rev-wiz.rev-wiz--step .rw-meta {
font-size:11.5px;
color:var(--rw-muted);
margin-top:3px;
}
.rev-wiz.rev-wiz--step .rw-btn {
font-family:inherit;
font-size:13px;
font-weight:500;
border-radius:22px;
padding:10px 17px;
cursor:pointer;
border:1px solid var(--rw-border);
background:var(--rw-panel);
color:var(--rw-text-2);
text-decoration:none;
display:inline-flex;
align-items:center;
gap:8px;
}
.rev-wiz.rev-wiz--step .rw-btn-next {
background:var(--rw-primary);
color:#fff;
border-color:var(--rw-primary);
font-weight:600;
}
.rev-wiz .rw-seclab:first-child {
margin-top:0;
}
.rev-wiz .rw-grouplab {
font-size:12.5px;
color:var(--rw-text-2);
margin:12px 2px 8px;
font-weight:600;
}
.rev-wiz .rw-groupmeta {
font-size:11.5px;
color:var(--rw-muted);
font-weight:400;
margin-left:6px;
font-style:italic;
}
.rev-wiz .rw-tail {
font-size:11.5px;
color:var(--rw-muted);
margin:6px 2px;
font-style:italic;
}
.rev-wiz .rw-guide {
padding:0 4px 8px;
}
.rev-wiz .rw-guide h2 {
font-size:16px;
font-weight:600;
color:var(--rw-text);
margin:0 0 6px;
letter-spacing:-.1px;
}
.rev-wiz .rw-guide p {
font-size:14px;
color:var(--rw-text-2);
line-height:1.55;
margin:0 0 14px;
}
.rev-wiz .rw-guide .rw-guide-sub {
margin-top:8px;
color:var(--rw-muted);
font-size:12.5px;
}
.rev-wiz .rw-guide .rw-guide-lbl {
display:block;
font-size:11px;
font-weight:600;
letter-spacing:.5px;
text-transform:uppercase;
color:var(--rw-muted);
margin:16px 2px 8px;
}
.rev-wiz .rw-guide textarea {
width:100%;
padding:14px 16px;
border:1.5px solid var(--rw-border);
border-radius:14px;
font-family:inherit;
font-size:14.5px;
line-height:1.6;
color:var(--rw-text);
resize:vertical;
min-height:140px;
box-sizing:border-box;
}
.rev-wiz .rw-guide textarea:focus {
outline:none;
border-color:var(--rw-accent);
box-shadow:0 0 0 3px rgba(0,184,147,.08);
}
.rev-wiz .rw-guide textarea::placeholder {
color:var(--rw-faint);
font-style:normal;
}
/* ── Review screen ───────────────────────────────────────────────── */
.rev-review {
font-family:'Hanken Grotesk',sans-serif;
color:var(--rw-text);
}
.rev-review .rr-hd {
padding:26px 30px 6px;
text-align:center;
}
.rev-review .rr-hd .ey {
font-size:11px;
font-weight:600;
letter-spacing:1.4px;
text-transform:uppercase;
color:var(--rw-accent);
margin-bottom:8px;
}
.rev-review .rr-hd h1 {
font-size:21px;
font-weight:600;
letter-spacing:-.3px;
margin:0;
}
.rev-review .rr-hd p {
font-size:13.5px;
color:var(--rw-muted);
margin-top:7px;
max-width:470px;
margin-left:auto;
margin-right:auto;
line-height:1.5;
}
.rev-review .rr-body {
padding:14px 30px 6px;
}
.rev-review .rr-stage {
border:1px solid var(--rw-border-soft);
border-radius:14px;
margin-bottom:9px;
background:var(--rw-panel);
overflow:hidden;
}
.rev-review .rr-stage.is-empty {
background:#fafbfc;
border-color:#f4f6f7;
}
.rev-review .rr-stage summary {
padding:13px 16px;
cursor:pointer;
display:flex;
align-items:center;
gap:14px;
list-style:none;
user-select:none;
}
.rev-review .rr-stage summary::-webkit-details-marker {
display:none;
}
.rev-review .rr-stage summary:hover {
background:#fbfdfc;
}
.rev-review .rr-stage .rr-icon {
width:28px;
height:28px;
border-radius:8px;
background:#f3f5f6;
color:var(--rw-text-2);
display:inline-flex;
align-items:center;
justify-content:center;
font-size:13px;
flex:none;
}
.rev-review .rr-stage[data-count="0"] .rr-icon {
background:#f7f9f9;
color:var(--rw-faint);
}
.rev-review .rr-stage .rr-title {
font-size:14px;
font-weight:600;
color:var(--rw-text);
flex:1;
min-width:0;
}
.rev-review .rr-stage .rr-count {
font-size:12px;
font-weight:500;
color:var(--rw-text-2);
background:var(--rw-border-soft);
border-radius:20px;
padding:3px 10px;
}
.rev-review .rr-stage[data-count="0"] .rr-count {
background:#f7f9f9;
color:var(--rw-faint);
font-style:italic;
}
.rev-review .rr-stage .rr-badge {
font-size:10px;
font-weight:600;
text-transform:uppercase;
letter-spacing:.5px;
padding:2px 8px;
border-radius:20px;
}
.rev-review .rr-stage .rr-badge.seeded {
background:#e7f5ee;
color:#1a7d52;
}
.rev-review .rr-stage .rr-badge.authored {
background:#fdf2e6;
color:#9A6A11;
}
.rev-review .rr-stage .rr-badge.mixed {
background:#eef2f8;
color:#3F5D80;
}
.rev-review .rr-details .rr-source {
color:var(--rw-faint);
font-size:11px;
font-weight:500;
text-transform:uppercase;
letter-spacing:.4px;
margin-left:6px;
font-style:normal;
}
.rev-review .rr-stage summary .arr {
margin-left:8px;
color:var(--rw-faint);
font-size:12px;
transition:transform .15s;
}
.rev-review .rr-stage[open] summary .arr {
transform:rotate(90deg);
}
.rev-review .rr-details {
padding:2px 16px 14px 60px;
}
.rev-review .rr-details ul {
margin:0;
padding:0;
list-style:none;
font-size:13px;
color:var(--rw-text);
line-height:1.65;
}
.rev-review .rr-details li {
padding:2px 0;
}
.rev-review .rr-details li::before {
content:"·";
color:var(--rw-faint);
margin-right:8px;
}
.rev-review .rr-details .empty {
font-style:italic;
color:var(--rw-muted);
font-size:12.5px;
}
.rev-review .rr-details .impact-text {
background:#fdf9f2;
border-left:2px solid #d4a44c;
padding:10px 12px;
border-radius:8px;
font-size:14px;
color:var(--rw-text);
line-height:1.55;
font-weight:500;
}
.rev-review .rr-emptyall {
background:#fdf6e3;
border:1px solid #f2e5b5;
color:#5a4a10;
padding:14px 18px;
border-radius:12px;
font-size:13px;
margin:14px 0;
}
.rev-review .rr-foot {
display:flex;
align-items:center;
gap:12px;
padding:18px 30px 22px;
border-top:1px solid var(--rw-border-soft);
margin-top:14px;
}
.rev-review .rr-note {
font-size:12.5px;
color:var(--rw-muted);
line-height:1.5;
flex:1;
}
.rev-review .rr-note b {
color:var(--rw-text);
}
.rev-review .rr-btn {
font-family:inherit;
font-size:13px;
font-weight:500;
border-radius:22px;
padding:10px 17px;
cursor:pointer;
border:1px solid var(--rw-border);
background:var(--rw-panel);
color:var(--rw-text-2);
text-decoration:none;
display:inline-flex;
align-items:center;
gap:8px;
}
.rev-review .rr-btn-primary {
background:var(--rw-primary);
color:#fff;
border-color:var(--rw-primary);
font-weight:600;
}
.rev-review .rr-btn-primary[disabled] {
opacity:.5;
cursor:not-allowed;
}
/* ── Source/altitude chip (colors are computed per program inline) ── */
.sp-source-chip {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 11px;
font-weight: 600;
line-height: 1.4;
border-radius: 20px;
padding: 2px 9px;
border: 1px solid;
}
.sp-source-chip i {
font-size: 9px;
opacity: .85;
}

View File

@@ -0,0 +1,261 @@
/* Sortable list styles */
.sortable-list {
border: 0px solid transparent;
background: transparent;
overflow: visible;
min-height: 0px;
}
.sortable-item {
cursor: grab;
position: relative;
padding-top: 0;
padding-bottom: 0;
margin-bottom: 0;
}
.sortable-item .sortable-list {
padding-top: 4px;
padding-bottom: 4px;
}
.sortable-list .sortable-item:last-child {
padding-top: 0;
padding-bottom: 0;
margin-bottom: 0;
}
.sortable-list .sortable-item .sortable-list {
margin-left: 40px;
position: relative;
}
.sortable-list .sortable-item .sortable-list:has(.sortable-list) {
padding-bottom:0px;
}
.sortable-list .sortable-item .sortable-list .sortable-item:first-child {
margin-top:4px;
}
.sortable-item .ticketBox {
margin-bottom:0px;
}
/* Connection lines for hierarchy */
.sortable-list .sortable-list::before {
content: '';
position: absolute;
left: -20px;
top: 0px;
bottom: 0;
width: 2px;
background-color: var(--interactive-icon-color);
height: calc(100% - 45px);
}
.sortable-item:has(.accordion-toggle .fa-angle-right) {
margin-bottom:10px;
}
.sortable-list .sortable-list .sortable-list::before {
height: calc(100% - 50px);
}
/* Horizontal connector line from vertical line to each item */
.sortable-list .sortable-list > .sortable-item::before {
content: '';
position: absolute;
left: -10px;
top: 30px;
width: 10px;
height: 2px;
background-color: var(--interactive-icon-color);
}
/* Rounded corner for the connection */
.sortable-list .sortable-list > .sortable-item::after {
content: '';
position: absolute;
left: -20px;
top: 32px;
width: 10px;
height: 10px;
border-bottom-left-radius: 10px;
border: 0 solid transparent;
border-bottom: 2px solid var(--interactive-icon-color);
border-left: 2px solid var(--interactive-icon-color);
background-color: transparent;
transform: translate(0, -10px);
}
/* Highlight styles for drop targets */
.highlight-drop {
position: relative;
&::after {
content: '';
position: absolute;
top: 4px;
left: 0;
right: 0;
bottom: 0;
background: hsla(var(--accent2-hsl), 0.1);
border: 2px dashed hsla(var(--accent2-hsl), 0.3);
pointer-events: none;
border-radius: var(--box-radius-small);
}
min-height: 62px !important;
}
.highlight-drop-error {
position: relative;
&::after {
content: '';
position: absolute;
top: 4px;
left: 0;
right: 0;
bottom: 0;
background: hsla(0, 100%, 50%, 0.1);
border: 2px dashed hsla(0, 100%, 50%, 0.3);
pointer-events: none;
border-radius: var(--box-radius-small);
}
min-height: 62px !important;
}
.sortable-ghost {
opacity: var(--opacity-subdued);
box-shadow: 0 0 8px hsla(var(--accent2-hsl), 0.3);
}
.sortable-ghost .sortable-list:empty {
background: transparent;
min-height: 0px;
}
.sortable-item.sortable-chosen {
cursor: grabbing;
}
.ui-sortable-helper {
z-index: 99999 !important;
}
/* Placeholder styling */
.sortable-placeholder {
background: rgba(0, 0, 0, 0.05);
border: 1px dashed rgba(0, 0, 0, 0.1);
border-radius: var(--box-radius-small);
margin-bottom: 4px;
height: 60px;
position: relative;
}
/* Task collapse toggle styles */
.task-collapse-toggle {
position: absolute;
left: -24px;
top: 20px;
width: 20px;
height: 20px;
cursor: pointer;
z-index: var(--zlayer-4);
text-align: center;
border-radius: 50%;
background: var(--secondary-background);
}
.milestone-box .task-collapse-toggle {
top:24px;
}
.sortable-list .sortable-list .task-collapse-toggle {
left: -32px;
top: 18px;
}
.task-collapse-toggle:hover {
background-color: var(--neutral);
}
.task-collapse-toggle i {
}
.ticketBox.has-children {
position: relative;
}
/* Collapsed children styles */
.task-children.closed {
display: none;
}
.task-children.open {
display: block;
}
.task-collapse-toggle i.fa-chevron-right {
color: var(--neutral);
}
/* Quick Add Form Styles */
.add-task-button {
display: inline-block;
margin-left: 10px;
color: var(--primary-font-color);
}
.add-task-button:hover {
opacity: 1;
color: var(--accent1);
}
.quickAddForm {
background: var(--secondary-background);
border-radius: var(--box-radius);
padding: 16px;
margin-top: 10px;
box-shadow: var(--regular-shadow);
}
.main-title-input {
width: 100%;
padding: 8px;
border-radius: var(--element-radius);
border: 1px solid var(--main-border-color);
margin-bottom: 10px;
}
/* Milestone box styling for My Work dashboard */
.milestone-box {
background-color: var(--secondary-background);
border-left: 0px;
border-right:0px;
border-radius: var(--box-radius);
padding: 16px;
margin-bottom: 10px;
box-shadow: var(--regular-shadow);
}
.milestone-box .tw-flex {
/*color: var(--main-titles-color);*/
}
.milestone-box .progress-wrapper .percent-label {
font-size: var(--base-font-size);
/*color: var(--main-titles-color);*/
}
.milestone-box h4 {
font-weight: var(--font-weight-bold);
color: var(--primary-font-color);
margin-top: 0;
}

View File

@@ -0,0 +1,630 @@
/***** RESET BROWSER STYLE *****/
/*******************************/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
background: transparent;
border: 0;
margin: 0;
padding: 0;
vertical-align: baseline;
line-height: 1.5;
outline: none;
}
html {
-webkit-box-sizing: border-box;
box-sizing: border-box;
-ms-overflow-style: scrollbar
}
body {
color:var(--primary-font-color);
}
*, ::after, ::before {
-webkit-box-sizing: inherit;
box-sizing: inherit
}
.container {
position: relative;
margin-left: auto;
margin-right: auto;
padding-right: 15px;
padding-left: 15px
}
.container-fluid {
position: relative;
margin-left: auto;
margin-right: auto;
padding-right: 15px;
padding-left: 15px
}
.row {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -5px;
margin-left: -5px
}
.no-gutters {
margin-right: 0;
margin-left: 0
}
.no-gutters > .col, .no-gutters > [class*=col-] {
padding-right: 0;
padding-left: 0
}
.col, .col-1, .col-10, .col-11, .col-12, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-lg, .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xl, .col-xl-1, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9 {
position: relative;
width: 100%;
min-height: 1px;
padding-right: 10px;
padding-left: 10px;
}
.col {
-webkit-flex-basis: 0;
flex-basis: 200px;
-webkit-box-flex: 1;
-webkit-flex-grow: 1;
flex-grow: 1;
max-width: 100%
}
.col-auto {
-webkit-box-flex: 0;
-webkit-flex: 0 0 auto;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto
}
.col-1 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 8.555555%;
-ms-flex: 0 0 8.555555%;
flex: 0 0 8.555555%;
max-width: 8.555555%
}
.col-2 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 16.666667%;
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%
}
.col-3 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 25%;
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%
}
.col-4 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 33.555555%;
-ms-flex: 0 0 33.555555%;
flex: 0 0 33.555555%;
max-width: 33.555555%
}
.col-5 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 41.666667%;
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%
}
.col-6 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 50%;
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%
}
.col-7 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 58.555555%;
-ms-flex: 0 0 58.555555%;
flex: 0 0 58.555555%;
max-width: 58.555555%
}
.col-8 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 66.666667%;
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%
}
.col-9 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 75%;
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%
}
.col-10 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 83.555555%;
-ms-flex: 0 0 83.555555%;
flex: 0 0 83.555555%;
max-width: 83.555555%
}
.col-11 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 91.666667%;
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%
}
.col-12 {
-webkit-box-flex: 0;
-webkit-flex: 0 0 100%;
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%
}
.pull-0 {
right: auto
}
.pull-1 {
right: 8.555555%
}
.pull-2 {
right: 16.666667%
}
.pull-3 {
right: 25%
}
.pull-4 {
right: 33.555555%
}
.pull-5 {
right: 41.666667%
}
.pull-6 {
right: 50%
}
.pull-7 {
right: 58.555555%
}
.pull-8 {
right: 66.666667%
}
.pull-9 {
right: 75%
}
.pull-10 {
right: 83.555555%
}
.pull-11 {
right: 91.666667%
}
.pull-12 {
right: 100%
}
.push-0 {
left: auto
}
.push-1 {
left: 8.555555%
}
.push-2 {
left: 16.666667%
}
.push-3 {
left: 25%
}
.push-4 {
left: 33.555555%
}
.push-5 {
left: 41.666667%
}
.push-6 {
left: 50%
}
.push-7 {
left: 58.555555%
}
.push-8 {
left: 66.666667%
}
.push-9 {
left: 75%
}
.push-10 {
left: 83.555555%
}
.push-11 {
left: 91.666667%
}
.push-12 {
left: 100%
}
.offset-1 {
margin-left: 8.555555%
}
.offset-2 {
margin-left: 16.666667%
}
.offset-3 {
margin-left: 25%
}
.offset-4 {
margin-left: 33.555555%
}
.offset-5 {
margin-left: 41.666667%
}
.offset-6 {
margin-left: 50%
}
.offset-7 {
margin-left: 58.555555%
}
.offset-8 {
margin-left: 66.666667%
}
.offset-9 {
margin-left: 75%
}
.offset-10 {
margin-left: 83.555555%
}
.offset-11 {
margin-left: 91.666667%
}
.mainwrapper {
background:var(--header-gradient);
background-size: 100vw 100vh;
background-attachment: fixed;
}
.rightpanel {
background-size: contain;
background-position: bottom;
min-height: 100vh;
}
.rightpanel:before {
position: absolute;
height: calc(100% + 50px);
width: 100%;
left: 0;
top: -50px;
content: " ";
opacity: .5;
mix-blend-mode: multiply;
background-size:cover;
background-image:url(/dist/images/backgrounds/bg5.png);
background-repeat:no-repeat;
background-position:center;
background-attachment: fixed;
pointer-events: none !important;
}
.rightpanel.personal:before {
}
.rightpanel.project:before {
}
.rightpanel.company:before {
}
.rightpanel {
padding-top:50px;
}
.rightpanel::after {
clear: both;
content: '';
display: block;
pointer-events: none !important;
}
.overlay::after {
pointer-events: none !important;
}
.primaryContent {
min-height:calc(100vh - 50px);
padding-top:10px;
padding-bottom:10px;
position: relative;
overflow-x: hidden;
}
.leftpanel {
width: 240px;
color: #fff;
float: left;
clear: both;
background:var(--left-panel-bg);
position:sticky;
height:calc(100vh - 70px);
z-index: 9;
display: flex;
flex-direction: column;
top:70px;
margin-top:20px;
left:10px;
border-radius: var(--box-radius-large);
overflow:hidden;
}
.header {
clear: both;
height: 50px;
position: fixed;
top:0px;
z-index: 15;
width: 100%;
box-shadow: var(--large-shadow);
backdrop-filter: var(--glass-blur);
/*background:var(--header-bg-color);*/
}
/* Pageheader is a glass card matching the content card below it, floating on
the app's gradient background (which lives on .rightpanel, untouched). The
old design used a 150px invisible cushion + a -95px content overlap to make
the header float transparently on the gradient; that's replaced by a proper
boxed header. Applied globally so every page's header is consistent. */
.pageheader {
display: flex;
align-items: center;
/* Allow the right cluster (meta/summary + actions) to wrap below the title
on narrow viewports instead of forcing horizontal overflow — mobile.css
only adjusts padding/min-height, not the flex behavior. */
flex-wrap: wrap;
gap: 12px;
padding: 8px 18px;
height: auto;
line-height: 1.3;
position: relative;
/* Above the nav bar (z-index 11) so the breadcrumb + sprint ⋮ dropdowns,
which open downward into the nav bar's area, render on top of it. */
z-index: 12;
/* Match the content card exactly (same bg, NO backdrop blur) so the header
and content read as one cohesive surface, not mismatched cards. */
background: var(--glass-background);
border: var(--glass-border);
border-radius: var(--box-radius);
box-shadow: var(--large-shadow);
/* Horizontal margin matches .maincontent's 15px padding so the header card
lines up with the content card below it (was full-width → stuck out
wider, which read as a box-inside-a-box). No bottom margin: the gap to the
next block comes solely from .maincontent's 10px padding-top, so the
vertical rhythm (top-nav→header, header→nav/content) is an even 10px
everywhere (was 8px margin + 10px padding = an uneven 18px). */
margin: 0 15px 0 15px;
}
.pageheader .pagetitle {
flex: 1 1 auto;
min-width: 0;
/* Must be visible, not hidden — the breadcrumb switcher's dropdown menu
lives inside here and overflow:hidden would clip it shut. */
overflow: visible;
}
/* Header content must be able to shrink so it never forces the card wider than
the viewport (flex children need min-width:0 to shrink below content size). */
.pageheader .pagetitle > * {
min-width: 0;
}
/* Right cluster on the header: secondary metadata (board stats, "updated …")
plus optional actions (the sprint ⋮ menu), on ONE line with the title — so
the header stays compact instead of adding a sub-line row. Shared by Tasks +
the report header. */
.pageheader-right {
flex: 0 0 auto;
margin-left: auto;
display: flex;
align-items: center;
gap: 12px;
padding-left: 16px;
}
.pageheader-meta {
font-size: var(--font-size-s);
color: var(--primary-font-color);
/* .75 (was .6): review feedback — the meta text was hard to read. */
opacity: .75;
}
/* Muted crumb separator — the "/" between orientation segments in a page
title ("Resources / Plan", "Docs / Default"), matching the report header.
Opacity (not --secondary-font-color, which is #000 in the default theme)
so it reads as muted on every theme. */
.pagetitle h1 .crumb-sep,
.subjectSwitcher-sep {
color: var(--primary-font-color);
opacity: .45;
}
/* Sprint edit/delete ⋮ menu — a subtle icon button inline in the right cluster
(only rendered for a real sprint view). */
.pageheader-right .headerEditDropdown {
padding: 0;
line-height: 1;
}
.pageheader-right .headerEditDropdown > .btn-transparent {
color: var(--primary-font-color);
opacity: .5;
border: none;
background: transparent;
padding: 4px 8px;
box-shadow: none;
}
.pageheader-right .headerEditDropdown > .btn-transparent:hover {
opacity: .9;
}
.maincontent {
float: left;
width: 100%;
padding: 10px 15px;
margin-top: 0;
position:relative;
z-index:5;
}
.maincontentinner {
border-radius:var(--box-radius);
background:var(--glass-background);
position:relative;
padding:14px; /* account for 1px border */
margin-bottom:10px;
box-shadow: var(--large-shadow);
border: var(--glass-border);
}
.footer {
border-radius:var(--box-radius);
background: var(--glass-background);
backdrop-filter: var(--glass-blur);
-webkit-backdrop-filter: var(--glass-blur);
position:relative;
margin-bottom:20px;
box-shadow: var(--large-shadow);
border: var(--glass-border);
font-size: var(--font-size-s);
color: var(--primary-font-color);
padding:10px 20px;
overflow: hidden;
clear: both;
margin: 10px 15px;
margin-bottom:40px;
}
.footer .footer-left {
float: left;
}
.footer .footer-right {
float: right;
}
.announcementBanner{
background:linear-gradient(170deg, var(--accent1) 20%,var(--accent2) 90%);
height:40px;
width:100%;
text-align:center;
line-height:40px;
color:var(--main-action-color);
position: fixed;
bottom:0px;
z-index: 100;
}
.announcementBanner:before {
}
/* ── Document-page mode ──────────────────────────────────────────────
body.lt-doc-page: for pages whose content card renders its OWN doc-shell
header (the stakeholder reports' .rd-hdr — see report-deck.css). The shared
teal pageheader collapses (kept in the DOM so its lifecycle hooks still
fire) and the content shell goes flush/transparent so the document card IS
the page. ONE implementation for every doc-shell page — never re-create
this per page in a template. Specificity (body + class) outranks the plain
.pageheader/.maincontentinner base rules, so no !important is needed.
(RA's body.ra-page-active predates this mode and should converge onto it
in the tab-component rollout follow-ups.) */
body.lt-doc-page .pageheader {
display: none;
}
body.lt-doc-page .maincontent {
margin-top: 0;
padding-top: 14px;
}
body.lt-doc-page .maincontentinner {
background: transparent;
border: none;
box-shadow: none;
border-radius: 0;
padding: 0;
backdrop-filter: none;
-webkit-backdrop-filter: none;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,307 @@
/*
* Shared tab-group (x-global::navigation.tabs) — the ONE tablist skin.
*
* Consolidates the four hand-rolled copies of the same visual (board tabs in
* nav.css, report deck .rd-tabs, goal-dialog .gv-tabs, Resource Allocation
* .ra-tabs) into a single component stylesheet. Two variants:
*
* .lt-tabs--attached gradient accent band + translucent framed segment
* group + white active pill (board/report look). Uses
* the theme accents with the conditional --nav-scrim
* (0 for dark accents; raised per-theme where white
* controls would fail WCAG AA on light accents).
* .lt-tabs--floating free-floating fully-rounded glass pills (Resource
* Allocation look); .lt-tabs--dark for dark headers.
*
* Behavior (ARIA, keyboard, persistence) lives in the component's script.
*/
/* ── Shared structure ─────────────────────────────────────────────── */
.lt-tabs {
display: flex;
align-items: center;
}
.lt-tabs-group {
display: inline-flex;
align-items: center;
flex-wrap: wrap;
}
.lt-tabs-actions {
margin-left: auto;
display: flex;
align-items: center;
gap: 6px;
}
.lt-tab {
font-family: inherit;
font-size: 13px;
font-weight: 500;
color: rgba(255, 255, 255, 0.9);
cursor: pointer;
border: none;
background: transparent;
display: inline-flex;
align-items: center;
gap: 8px;
white-space: nowrap;
transition: all .14s ease;
letter-spacing: .1px;
}
.lt-tab i {
font-size: 12px;
opacity: .9;
}
.lt-tab:hover:not(.on) {
color: #fff;
background: rgba(255, 255, 255, 0.14);
}
.lt-tab:focus-visible {
outline: 2px solid #fff;
outline-offset: -2px;
}
.lt-tab.on {
color: var(--primary-font-color);
background: #fff;
font-weight: 600;
}
.lt-tab.on i {
color: var(--accent1);
opacity: 1;
}
.lt-tab.on:focus-visible {
outline: 2px solid var(--accent1);
outline-offset: -2px;
}
/* Count badge */
.lt-tab .ct {
font-size: 11px;
font-weight: 600;
background: rgba(255, 255, 255, 0.2);
color: #fff;
border-radius: 100px;
padding: 1px 8px;
line-height: 1.5;
}
.lt-tab.on .ct {
background: rgba(0, 0, 0, 0.08);
color: var(--accent1);
}
/* ── Attached variant: gradient band (board/report family) ────────── */
.lt-tabs--attached {
padding: 7px 10px;
margin-bottom: 10px;
border-radius: 14px;
background:
linear-gradient(rgba(0, 0, 0, var(--nav-scrim, 0)), rgba(0, 0, 0, var(--nav-scrim, 0))),
linear-gradient(90deg, var(--accent1), var(--accent2));
/* Flat, no shadow — the bar must read as one system with the content
below it, not a separate floating element (Marcel, nav redesign). */
box-shadow: none;
}
.lt-tabs--attached .lt-tabs-group {
background: rgba(255, 255, 255, 0.14);
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: 11px;
padding: 3px;
gap: 2px;
}
.lt-tabs--attached .lt-tab {
padding: 7px 14px;
border-radius: 9px;
}
/* Action-less pages hug the band to its tabs (compact nav, not an empty bar). */
.lt-tabs--attached:not(:has(.lt-tabs-actions)) {
width: fit-content;
}
/* ── Floating variant: glass pills (Resource Allocation family) — THE
standard look for horizontal tab navs (design call 2026-08-03). The
glass container lives on the GROUP so page-level actions (period
pickers, New/Filter/Group By) sit inline on the same row, borderless,
on the page background. ─────────────────────────────────────────── */
.lt-tabs--floating {
display: flex;
align-items: center;
margin: 0 0 8px;
position: relative;
}
.lt-tabs--floating .lt-tabs-group {
gap: 2px;
padding: 4px;
background: rgba(255, 255, 255, 0.14);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 100px;
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
}
.lt-tabs--floating .lt-tab {
padding: 8px 16px;
border-radius: 100px;
}
.lt-tabs--floating .lt-tab.on,
.lt-tabs--floating .lt-tab.is-active {
box-shadow: 0 2px 6px rgba(20, 40, 50, .12);
}
/* Link flavor — server-side-active nav tabs (board/timeline views): same
pills, <ul><li class="active"><a> structure. */
.lt-tabs--links .lt-tabs-group ul {
list-style: none;
margin: 0;
padding: 0;
display: inline-flex;
align-items: center;
gap: 2px;
}
.lt-tabs--links .lt-tabs-group li {
list-style: none;
margin: 0;
}
.lt-tabs--links .lt-tabs-group li a {
font-family: inherit;
font-size: 13px;
font-weight: 500;
color: rgba(255, 255, 255, 0.9);
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 8px;
white-space: nowrap;
transition: all .14s ease;
letter-spacing: .1px;
padding: 8px 16px;
border-radius: 100px;
}
.lt-tabs--links .lt-tabs-group li:not(.active) a:hover {
color: #fff;
background: rgba(255, 255, 255, 0.14);
}
.lt-tabs--links .lt-tabs-group li a:focus-visible {
outline: 2px solid #fff;
outline-offset: -2px;
}
.lt-tabs--links .lt-tabs-group li.active a {
color: var(--primary-font-color);
background: #fff;
font-weight: 600;
box-shadow: 0 2px 6px rgba(20, 40, 50, .12);
}
.lt-tabs--links .lt-tabs-group li.active a:focus-visible {
outline: 2px solid var(--accent1);
outline-offset: -2px;
}
/* Light-surface flavor — floating pills inside white cards/modals (goal
dialog): same shape, ink adapted so the glass doesn't vanish on white. */
.lt-tabs--onlight .lt-tabs-group {
background: rgba(0, 0, 0, 0.05);
border-color: rgba(0, 0, 0, 0.08);
backdrop-filter: none;
-webkit-backdrop-filter: none;
}
.lt-tabs--onlight .lt-tab {
color: var(--primary-font-color);
opacity: .75;
}
.lt-tabs--onlight .lt-tab:hover:not(.on):not(.is-active) {
color: var(--primary-font-color);
opacity: 1;
background: rgba(0, 0, 0, 0.05);
}
.lt-tabs--onlight .lt-tab.on,
.lt-tabs--onlight .lt-tab.is-active {
color: var(--accent1);
opacity: 1;
background: #fff;
}
.lt-tabs--onlight .lt-tab:focus-visible {
outline-color: var(--accent1);
}
/* Inline actions (right cluster) — borderless on the page background.
Ported from the retired band (.maincontentinner.tabs .tabs-actions). */
.lt-tabs-actions .btn {
line-height: 1.2;
height: auto;
min-height: 0;
margin: 0;
font-size: 13px;
display: inline-flex;
align-items: center;
gap: 6px;
}
.lt-tabs-actions .btn .badge {
line-height: 1;
padding: 3px 6px;
font-size: 10px;
height: auto;
align-self: center;
}
/* Filter / Group By match the report period-picker: white pill, dark text
(design call 2026-08-03 — one filter style everywhere). Three classes so
this outranks forms.css `body .btn.btn-link` (0-2-1), which otherwise
flattens the pill back to transparent text. */
.lt-tabs .lt-tabs-actions .btn-link {
color: var(--primary-font-color);
opacity: 1;
background: #fff;
border: 1px solid var(--main-border-color);
border-radius: 22px;
padding: 7px 14px;
box-shadow: 0 1px 3px rgba(20, 40, 50, .06);
transition: border-color .12s ease;
}
.lt-tabs .lt-tabs-actions .btn-link:hover {
border-color: var(--accent1);
background: #fff;
color: var(--primary-font-color);
}
.lt-tabs .lt-tabs-actions .btn-link:focus-visible {
outline: 2px solid var(--accent1);
outline-offset: 2px;
}
.lt-tabs-actions .btn:focus-visible {
outline: 2px solid #fff;
outline-offset: 2px;
}
.lt-tabs-actions form {
display: inline-flex;
align-items: center;
margin: 0;
}
.lt-tabs-actions .filterWrapper {
margin-bottom: 0 !important;
display: inline-flex;
align-items: center;
}
/* Right-edge actions: panels/menus open LEFTWARD or they fall off screen. */
.lt-tabs-actions .filterBar,
.lt-tabs-actions .dropdown-menu {
left: auto !important;
right: 0;
}
.lt-tabs-actions .btn-group {
float: none;
margin: 0 !important;
display: inline-flex;
align-items: center;
}
/* Floating on a dark header (server-stamped by the caller) */
.lt-tabs--dark {
background: rgba(255, 255, 255, 0.1);
border-color: rgba(255, 255, 255, 0.16);
}
.lt-tabs--dark .lt-tab.on {
color: #182831;
}
/* ── Print: tabs are navigation, not content ──────────────────────── */
@media print {
.lt-tabs {
display: none;
}
}

View File

@@ -0,0 +1,582 @@
.table thead th.right, .table tr td.right {
text-align: right;
}
.table th {
font-weight: normal;
text-transform: uppercase;
font-size: var(--font-size-s);
border-top: 0;
color: var(--kanban-col-title-color);
background:var(--col-content-bg);
}
.table th.centeralign, .table td.centeralign {
text-align: center;
}
.table.table-bordered th {
border-color: var(--neutral);
}
.table .con0 {
}
.table .con1 {
}
.table tr.even {
background:var(--col-row-striped);
}
.table-bordered th,
.table-bordered td {
border-right: 0px solid var(--neutral);
border-left:0px;
box-shadow: 0px 1px 1px var(--neutral);
}
.table-bordered th:last-child,
.table-bordered td:last-child {
border-right: 0px solid var(--neutral);
}
.dataTable {
margin-bottom: 0;
}
.dataTable th,
.dataTable td {
font-size: var(--base-font-size);
}
.dataTables_wrapper {
position: relative;
padding-bottom: 20px;
}
.simpleAccordionContainer .dataTables_wrapper{
padding-bottom:20px
}
.dataTables_length, .dataTables_info {
padding: 10px;
font-size: var(--font-size-s);
border: 0px solid var(--neutral);
}
.dataTables_length {
border-bottom: 0;
padding-bottom: 20px;
}
.dataTables_info {
border-top: 0;
}
.dataTables_filter {
position: absolute;
margin-top: -45px;
right: 10px;
}
.dataTables_filter input {
width: 150px;
margin: 0 0 0 10px;
}
.dataTables_paginate {
position: absolute;
bottom: 10px;
right: 10px;
}
.dataTables_paginate .first, .dataTables_paginate .previous, .dataTables_paginate .paginate_active,
.dataTables_paginate .paginate_button, .dataTables_paginate .next, .dataTables_paginate .last {
padding: 5px 10px;
border: 0px solid var(--neutral);
font-size: var(--font-size-s);
cursor: pointer;
}
.dataTables_paginate span:hover {
background-color: var(--secondary-action-hover-bg);
}
.dataTables_paginate .first {
border-left: 0px solid var(--neutral);
}
.dataTables_paginate .paginate_active,
.paginate_button.current {
background-color: var(--col-title-bg);
font-weight:bold;
}
.dataTables_paginate .paginate_button:hover {
background: var(--kanban-col-title-bg);
}
.dataTables_paginate .paginate_button_disabled {
cursor: default;
color: var(--neutral);
background: var(--kanban-col-title-bg);
}
.dataTables_paginate a {
color: var(--primary-font-color);
font-size:var(--font-size-s);
}
.dataTables_paginate a:hover {
text-decoration: none;
}
.dataTables_length select {
width: auto !important;
margin: 0;
}
.dataTables_scrollHead {
background: var(--primary-font-color);
}
.dataTables_scrollHead table {
border-bottom: 0;
}
.dataTable thead th.sorting,
.dataTable thead th.sorting_asc,
.dataTable thead th.sorting_desc {
cursor: pointer;
}
.dataTable thead th.sorting:hover,
.dataTable thead th.sorting_asc:hover,
.dataTable thead th.sorting_desc:hover {
background: var(--dropdown-link-hover-bg);
color:var(--dropdown-link-hover-color);
}
.dataTable thead th.sorting:after {
font-family: FontAwesome;
content: "\00a0\00a0\f0dc";
font-size:var(--font-size-s);
}
.dataTable thead th.sorting_asc:after {
font-family: FontAwesome;
content: "\00a0\00a0\f0de";
}
.dataTable thead th.sorting_desc:after {
font-family: FontAwesome;
content: "\00a0\00a0\f0dd";
}
.maincontentinner .table,
.maincontentinner table{
border:1px solid var(--col-content-bg);
}
.table-bordered {
border-top-left-radius:var(--box-radius);
border-top-right-radius:var(--box-radius);
}
.maincontentinner .table th,
.maincontentinner table th,
.maincontentinner table thead td,
.maincontentinner .table.table-bordered th,
.maincontentinner .table tr.dtrg-group td{
font-weight: normal;
text-transform:none;
font-size: var(--base-font-size);
border-top: 0;
font-weight: normal;
text-rendering: optimizelegibility;
padding: 7px 10px 5px 10px;
border:0px;
border-right:0px solid var(--neutral);
border-color:var(--neutral);
line-height: 17px;
color: var(--kanban-col-title-color);
background:var(--secondary-background);
}
.maincontentinner .table th,
.maincontentinner table thead td,
.maincontentinner .table.table-bordered th,
.maincontentinner table th {
background:var(--col-title-bg);
padding: 10px 10px;
font-weight:bold;
}
.table-bordered colgroup+thead tr:first-child th:first-child {
border-top-left-radius:var(--box-radius);
}
.table-bordered colgroup+thead tr:last-child th:last-child {
border-top-right-radius:var(--box-radius);
}
.maincontentinner .table th:last-child,
.maincontentinner .table.table-bordered th:last-child {
border-right:0px;
}
.maincontentinner .table th.sorting_desc,
.maincontentinner .table th.sorting_asc {
}
.maincontentinner .table tr.dtrg-group td {
color: var(--kanban-col-title-color);
padding: 5px 10px;
padding-top:25px;
font-weight: bold;
}
.maincontentinner .table {
margin-top:10px;
}
.maincontentinner .table td,
.maincontentinner table td{
padding:5px 10px 3px 10px;
vertical-align: middle;
min-height:17px;
border-right:1px solid var(--secondary-background);
}
.maincontentinner .listStyleTable td {
border-right:0px;
}
.dataTable tr:hover {
box-shadow:var(--regular-shadow);
}
.dataTable tr:hover td {
background:var(--col-title-bg);
}
.maincontentinner .table td .small-input {
width:40px;
}
.maincontentinner .dataTables_wrapper .bottom {
position:relative;
border: 0px solid var(--main-border-color);
border-top:0px;
height:30px;
}
.maincontentinner .dataTables_wrapper .dataTables_info {
position:absolute;
left:0px;
top:10px;
border:0px;
font-size:12px;
}
.maincontentinner .dataTables_wrapper .dataTables_length{
position:absolute;
left:50%;
top:10px;
margin-left:-65px;
border:0px;
padding:5px;
font-size:var(--font-size-s);
}
.maincontentinner .dataTables_wrapper .dataTables_length label,
.maincontentinner .dataTables_wrapper .dataTables_length select {
font-size:var(--font-size-s);
}
.maincontentinner .dataTables_wrapper .dataTables_paginate{
position:absolute;
right:0px;
bottom:10px;
border:0px;
padding:10px 10px;
font-size:12px;
}
.maincontentinner .table tr.dt-rowReorder-moving {
outline:2px solid var(--neutral);
}
.maincontentinner .dt-buttons .dt-button-collection {
position:absolute;
z-index:3;
float: left;
padding: 5px 0;
margin: 2px 0 0;
list-style: none;
background-color: var(--secondary-background);
margin-top: 10px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
border: 0px;
-webkit-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4);
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4);
}
.maincontentinner .dt-buttons .dt-button-collection button {
display:block;
width:100%;
margin:0px;
background:var(--secondary-background);
color: var(--main-menu-link-color);
padding: 5px 10px;
border:0px;
text-align:left;
}
.maincontentinner .dt-buttons .dt-button-collection button:before {
font-family: "Font Awesome 6 Free";
content: "\f204";
margin-right:5px;
}
.maincontentinner .dt-buttons .dt-button-collection button. dt-button-active{
text-decoration: none;
}
.maincontentinner .dt-buttons .dt-button-collection button.dt-button-active:before {
font-family: "Font Awesome 6 Free";
content: "\f205";
color:var(--accent1);
}
.maincontentinner .dt-buttons .dt-button-collection button:hover,
.maincontentinner .dt-buttons .dt-button-collection button.active:hover{
color: var(--dropdown-link-hover-color);
background:var(--dropdown-link-hover-bg);
}
.maincontentinner .dt-buttons>.dt-button {
display: inline-block;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
border-color: var(--neutral);
border: 1px solid var(--secondary-action-bg);
margin: 0 0 9px;
padding: 4px 14px;
line-height: 21px;
text-align: center;
vertical-align: baseline;
cursor: pointer;
color: var(--secondary-action-color);
background: var(--secondary-action-bg);
text-shadow: none;
}
.maincontentinner .dt-buttons>.dt-button span {
}
.maincontentinner .dt-buttons>.dt-button:hover {
background:var(--secondary-action-hover-bg);
color:var(--secondary-action-hover-color);
}
.maincontentinner .dt-buttons .dt-button-collection button {
border-radius:0px;
}
.maincontentinner .dt-buttons .dt-button-collection button:hover {
background:var(--main-menu-link-hover-bg);
color:var(--main-menu-link-hover-color);
}
.timesheetTable td.active,
.timesheetTable th.active{
background:var(--col-title-bg);
}
.maincontentinner .timesheetTable td input {
margin-bottom:5px;
}
.maincontentinner .timesheetTable tfoot td {
padding:10px;
}
.maincontentinner .headtitle table,
.maincontentinner .headtitle .table th,
.maincontentinner .headtitle .table td{
border:none;
margin-top:0px;
}
.table th,
.table td,
table td{
border-top:1px solid var(--col-title-bg);
}
.articleBody table thead td{
background:var(--neutral);
}
.articleBody table td {
border:1px solid var(--neutral);
}
/*fake height to allow divs in tds to fill out space */
.table tr {
height:1px;
}
.table td.dropdown-cell {
padding:0px;
font-weight: 400;
height: inherit;
}
.table td.dropdown-cell .dropdown {
width:100%;
height:100%;
border-radius:0px !important;
display:block;
}
.table td.dropdown-cell .dropdown > a {
width:100%;
height:100%;
border-radius:0px !important;
padding: 5px 10px 3px 10px !important;
line-height: 32px;
font-size:var(--base-font-size);
box-shadow:none;
display:inline-block;
}
.table td.dropdown-cell .dropdown > a .text {
}
.table td.dropdown-cell .dropdown > a i {
float:right;
line-height:31px;
}
.table td.dropdown-cell .dropdown.ticketDropdown ul {
top:35px;
}
.listStyleTable td {
}
.maincontentinner .table.listStyleTable {
border:0px;
}
.maincontentinner .table.listStyleTable td {
padding:5px 10px 5px 10px;
}
.maincontentinner .table.listStyleTable td.dropdown-cell {
padding:0px;
}
.maincontentinner .table.listStyleTable td.dropdown-cell .dropdown > a {
padding:0px 10px 0px 10px !important;
}
.maincontentinner .table.listStyleTable .dtrg-group td {
border:0px;
}
.maincontentinner .table.listStyleTable tr:hover {
box-shadow: none;
cursor:pointer;
}
.maincontentinner .table.listStyleTable tr.active td {
background: var(--col-title-bg);
}
.maincontentinner .table.listStyleTable td.roundStatusBtn .statusDropdown > a {
border-radius: 15px;
padding: 0px;
width: 30px;
height: 30px;
display: inline-block;
line-height: 30px;
text-align: center;
}
.maincontentinner .dataTables_wrapper .center .dataTables_paginate {
left: auto;
right: auto;
text-align: center;
width: 100%;
}
.maincontentinner .table.listStyleTable td.roundStatusBtn .f-left {
float:none !important;
}
.maincontentinner .table.listStyleTable .dtrg-start:first-child td{
padding-top:0px
}
.maincontentinner .table tfoot td,
.maincontentinner table tfoot td {
font-weight: bold;
border-top: 1px solid var(--neutral);
/* text-align: center; */
/* min-height: 41px; */
padding: 8px 5px 8px 20px;
}
.ticketTable .ticketModal {
font-weight:bold;
}
.dt-button-down-arrow {
font-size:0px;
}
.dt-button-down-arrow:before {
font-family: "Font Awesome 6 Free";
content: "\f0d7";
font-size: var(--font-size-m);
margin-left: 5px;
}
table.fc-multimonth-header-table {
border:0px;
}
.dataTable .progress-wrapper {
display:none;
}

View File

@@ -0,0 +1,197 @@
/* Base link styles - outline removed for mouse interaction only */
a, a:hover, a:link, a:active {
outline: none;
color: var(--primary-color);
text-decoration: none;
}
/* Accessible keyboard focus indicator - WCAG 2.1 AA compliant */
a:focus {
color: var(--primary-color);
text-decoration: none;
}
a:focus-visible {
outline: 2px solid var(--primary-color);
outline-offset: 2px;
border-radius: var(--element-radius);
}
body a:hover {
text-decoration: underline;
text-decoration-thickness: 2px;
text-underline-offset: 2px;
color: var(--primary-font-color);
}
/* Focus styles for interactive elements */
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[role="button"]:focus-visible,
[tabindex]:focus-visible {
outline: 2px solid var(--primary-color);
outline-offset: 2px;
}
label, input, textarea, select, button {
font-size: var(--base-font-size);
}
h1, h2, h3, h4, h5 {
font-weight: var(--font-weight-body);
line-height: normal;
}
h1 { font-size:var(--font-size-xxl);}
h2 { font-size:var(--font-size-xl);}
h3 { font-size:var(--font-size-xl); font-weight:var(--font-weight-bold);}
h4 { font-size:var(--base-font-size); font-weight:var(--font-weight-bold);}
h5 { font-size:var(--base-font-size); font-weight:var(--font-weight-bold);}
h1 small {
font-size: var(--font-size-s);
color:var(--primary-font-color);
}
.label-default {
background: var(--neutral);
color:var(--primary-font-color);
}
.label-important, .label-warning,
.label-success, .label-info, .label-inverse,
.label-default, .label-primary, .label-danger {
padding: 2px 8px;
color: #fff;
margin-left: 4px;
border-radius: var(--element-radius);
}
.dropdown [class*="label-"]:hover {
background: var(--dropdown-link-hover-bg) !important;
color:var(--dropdown-link-hover-color) !important;
}
a .label:after,
a .label-important:after, a .label-warning:after,
a .label-success:after, a .label-info:after, .label-inverse:after,
a .label-default:after, a .label-primary:after {
display: inline-block;
width: 0;
height: 0;
vertical-align: middle;
border-top: 4px solid #fff;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
content: "";
margin-left: 2px;
}
a .label.feature-label {
background: var(--element-gradient);
margin-top: 4px;
display: block;
position:absolute;
top:4px;
right:0px;
border-radius: var(--element-radius);
padding: 1px 4px;
color:var(--main-action-color);
}
a .label.feature-label:after {
border:none;
margin:0px;
}
.nav .label.feature-label {
}
.pagetitle {
}
.pagetitle h1 {
font-size: var(--font-size-xl);
/* Dark text now that the header is a white/glass card (was white on the
gradient). --primary-font-color adapts in dark mode. */
color: var(--primary-font-color);
line-height: 1.2;
/* Reset the Bootstrap default h1 margin (0.67em 0); the auto-height header
card owns the vertical rhythm via its own padding. */
margin: 0;
}
.pagetitle h1 a {
color: var(--primary-font-color);
text-decoration:underline;
}
.pagetitle h5 {
text-transform: uppercase;
font-size: var(--font-size-xs);
color: var(--secondary-font-color);
/* Reset the Bootstrap default heading margin so the subtitle sits tight
under the title inside the auto-height header card. */
margin: 0;
}
.maincontentinner .subtitle,
.stickyHeader .subtitle {
font-size: var(--font-size-xl);
color: var(--primary-font-color);
font-weight: var(--font-weight-medium);
}
.maincontentinner .subtitle {
margin-bottom: 10px;
}
.grid-stack-item-content .stickyHeader .subtitle {
margin: 0;
}
.subtitle {
font-size: var(--base-font-size);
color: var(--secondary-font-color);
margin-bottom: 4px;
}
.subtitle2 {
font-size: var(--base-font-size);
text-transform: uppercase;
color: var(--primary-font-color);
margin-bottom: 4px;
}
blockquote {
font-family: 'PT Serif', Georgia, "Times New Roman", Times, serif;
font-style: italic;
padding-left: 40px;
}
blockquote p {
margin: 0 !important;
}
blockquote.pull-right {
background-position: right 5px;
padding: 0 40px 0 0;
border-right: 0;
}
.maincontent > h2 {
color:var(--main-action-color);
}
a.danger,
a.delete {
color:var(--red) !important;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,107 @@
/* Toast Notifications */
.toast-notification {
position: fixed;
top: 1.5rem;
right: 1.5rem;
z-index: 9999;
display: flex;
align-items: flex-start;
gap: 0.75rem;
padding: 0.875rem 1rem;
min-width: 300px;
max-width: 500px;
background: var(--main-bg);
border: 1px solid var(--main-border-color);
border-radius: var(--box-radius);
box-shadow: var(--large-shadow);
opacity: 0;
transform: translateY(-10px);
transition: opacity 0.3s ease, transform 0.3s ease;
}
.toast-notification.toast-visible {
opacity: 1;
transform: translateY(0);
}
.toast-notification--success {
border-left: 4px solid var(--accent1);
}
.toast-notification--error {
border-left: 4px solid var(--red);
}
.toast-notification--info {
border-left: 4px solid var(--blue);
}
.toast-notification__content {
display: flex;
align-items: flex-start;
gap: 0.5rem;
flex: 1;
}
.toast-notification__icon {
flex-shrink: 0;
color: var(--accent1);
}
.toast-notification--error .toast-notification__icon {
color: var(--red);
}
.toast-notification--info .toast-notification__icon {
color: var(--blue);
}
.toast-notification__message {
margin: 0;
flex: 1;
font-size: var(--font-size-s);
color: var(--primary-font-color);
line-height: 1.5;
}
.toast-notification__dismiss {
background: none;
border: none;
font-size: 24px;
line-height: 1;
color: var(--primary-font-color);
cursor: pointer;
padding: 0 0.5rem;
margin-left: 0.5rem;
opacity: 0.5;
flex-shrink: 0;
min-width: 44px;
min-height: 44px;
display: flex;
align-items: center;
justify-content: center;
}
.toast-notification__dismiss:hover {
opacity: 1;
}
.toast-notification__dismiss:focus-visible {
outline: 2px solid var(--accent1);
outline-offset: 2px;
opacity: 1;
}
/* Hide animation */
.toast-notification--hiding {
opacity: 0;
transform: translateY(-10px);
}
/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
.toast-notification,
.toast-notification--hiding {
transition: none;
}
}

View File

@@ -0,0 +1,77 @@
.shepherd-header,
.shepherd-content {
background:var(--secondary-background);
padding: 0px;
}
.shepherd-element,
.shepherd-content {
border-radius:var(--box-radius);
}
.shepherd-element.shepherd-has-title[data-popper-placement^=bottom]>.shepherd-arrow:before,
.shepherd-element.shepherd-has-title[data-popper-placement^=top]>.shepherd-arrow:before,
.shepherd-element.shepherd-has-title[data-popper-placement^=left]>.shepherd-arrow:before,
.shepherd-element.shepherd-has-title[data-popper-placement^=right]>.shepherd-arrow:before,
.shepherd-arrow:before {
background:var(--secondary-background);
}
.shepherd-title,
.shepherd-text {
font-size: var(--font-size-l);
line-height: var(--line-height-normal);
padding:16px;
color:var(--primary-font-color);
}
.shepherd-title {
font-size:var(--font-size-l);
font-weight:var(--font-weight-bold);
color:var(--main-action-color);
}
.shepherd-has-title .shepherd-content .shepherd-header {
padding:0px;
background:var(--element-gradient);
border-top-left-radius: var(--box-radius);
border-top-right-radius: var(--box-radius);
}
.shepherd-button {
background:var(--main-action-bg);
color:var(--main-action-color);
border-radius: var(--input-radius);
padding: 4px 12px;
font-weight:var(--font-weight-bold);
line-height:20px;
border: 1px solid var(--main-action-bg);
}
.shepherd-button.shepherd-button-secondary {
border-radius: var(--input-radius);
border:1px solid var(--secondary-action-bg);
}
.shepherd-enabled.shepherd-element {
box-shadow:var(--large-shadow);
-webkit-filter: drop-shadow(0 0px 15px rgba(0, 0, 0, 0.4));
filter: drop-shadow(0 0px 15px rgba(0, 0, 0, 0.4));
}
.shepherd-button:not(:disabled):hover {
background:var(--main-action-hover-bg);
color:var(--main-action-hover-color);
}
.shepherd-has-title .shepherd-content .shepherd-cancel-icon {
color:var(--main-action-color);
width:16px;
margin-right: 10px;
}
.shepherd-has-title .shepherd-content .shepherd-cancel-icon:hover {
background: none;
opacity:var(--opacity-subtle);
}

View File

@@ -0,0 +1,48 @@
body .jstree-default .jstree-wholerow-hovered,
body .jstree-default .jstree-wholerow-clicked{
background:var(--main-menu-overlayed-link-hover-bg);
border-radius: var(--box-radius);
}
body .jstree-default .jstree-clicked {
color:var(--main-menu-link-hover-color);
}
.jstree-default .jstree-node {
line-height:34px;
min-height:34px;
}
body .jstree-default .jstree-node a{
padding-top:4px;
padding-bottom:4px;
}
body .jstree-default .jstree-node .jstree-wholerow {
height:34px;
}
#article-toc-wrapper {
}
body .jstree-default > .jstree-no-dots .jstree-closed > .jstree-ocl {
background-position: -9px 1px;
}
.jstree-default > .jstree-no-dots .jstree-open > .jstree-ocl {
background-position: -40px 1px;
}
.jstree-default .jstree-icon:empty {
width:20px;
padding-right:4px;
opacity: var(--opacity-muted);
}
.jstree-wholerow-ul {
max-width:100%;
overflow:hidden;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
<html><body></body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1 @@
<html><body></body></html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,394 @@
.animate0 {
-webkit-animation-duration: .8s;
-webkit-animation-delay: 0s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 0s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 0s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 0s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate1{
-webkit-animation-duration: .8s;
-webkit-animation-delay: .2s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: .2s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: .2s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: .2s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate2{
-webkit-animation-duration: .8s;
-webkit-animation-delay: .4s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: .4s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: .4s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: .4s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate3{
-webkit-animation-duration: .8s;
-webkit-animation-delay: .6s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: .6s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: .6s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: .6s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate4{
-webkit-animation-duration: .8s;
-webkit-animation-delay: .8s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: .8s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: .8s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: .8s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate5{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 1s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 1s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 1s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 1s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate6{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 1.2s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 1.2s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 1.2s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 1.2s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate7{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 1.4s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 1.4s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 1.4s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 1.4s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate8{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 1.8s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 1.8s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 1.8s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 1.8s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate9{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 1.8s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 1.8s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 1.8s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 1.8s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate10{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 2.0s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 2.0s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 2.0s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 2.0s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate11{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 2.2s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 2.2s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 2.2s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 2.2s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate12{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 2.4s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 2.4s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 2.4s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 2.4s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate13{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 2.8s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 2.8s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 2.8s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 2.8s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate14{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 2.8s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 2.8s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 2.8s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 2.8s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate15{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 3.0s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 3.0s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 3.0s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 3.0s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate16{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 3.2s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 3.2s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 3.2s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 3.2s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate17{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 3.4s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 3.4s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 3.4s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 3.4s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate18{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 3.6s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 3.6s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 3.6s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 3.6s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate19{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 3.8s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 3.8s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 3.8s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 3.8s;
animation-timing-function: ease;
animation-fill-mode: both;
}
.animate20{
-webkit-animation-duration: .8s;
-webkit-animation-delay: 4.0s;
-webkit-animation-timing-function: ease;
-webkit-animation-fill-mode: both;
-moz-animation-duration: .8s;
-moz-animation-delay: 4.0s;
-moz-animation-timing-function: ease;
-moz-animation-fill-mode: both;
-ms-animation-duration: .8s;
-ms-animation-delay: 4.0s;
-ms-animation-timing-function: ease;
-ms-animation-fill-mode: both;
animation-duration: .8s;
animation-delay: 4.0s;
animation-timing-function: ease;
animation-fill-mode: both;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,39 @@
@font-face {
font-family: 'Atkinson Hyperlegible';
src: url('~fonts/atkinson/Atkinson-Hyperlegible-Regular-102.ttf') format('truetype'),
url('~fonts/atkinson/Atkinson-Hyperlegible-Regular-102a.woff2') format('woff2');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Atkinson Hyperlegible';
src: url('~fonts/atkinson/Atkinson-Hyperlegible-BoldItalic-102.ttf') format('truetype'),
url('~fonts/atkinson/Atkinson-Hyperlegible-BoldItalic-102a.woff2') format('woff2');
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: 'Atkinson Hyperlegible';
src: url('~fonts/atkinson/Atkinson-Hyperlegible-Bold-102.ttf') format('truetype'),
url('~fonts/atkinson/Atkinson-Hyperlegible-Bold-102a.woff2') format('woff2');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'Atkinson Hyperlegible';
src: url('~fonts/atkinson/Atkinson-Hyperlegible-Italic-102.ttf') format('truetype'),
url('~fonts/atkinson/Atkinson-Hyperlegible-Italic-102a.woff2') format('woff2');
font-weight: normal;
font-style: italic;
}

View File

@@ -0,0 +1,31 @@
/*!
* Bootstrap v2.3.0-j4
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world by @mdo and @fat, extended by @ArnoldDaniels.
*/
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
.clearfix:after{clear:both;}
.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
.btn-file{overflow:hidden;position:relative;vertical-align:middle;}.btn-file>input{position:absolute;top:0;right:0;margin:0;opacity:0;filter:alpha(opacity=0);transform:translate(-300px, 0) scale(4);font-size:23px;direction:ltr;cursor:pointer;}
.fileupload{margin-bottom:9px;}.fileupload .uneditable-input{display:inline-block;margin-bottom:0px;vertical-align:middle;cursor:text;}
.fileupload .thumbnail{overflow:hidden;display:inline-block;margin-bottom:5px;vertical-align:middle;text-align:center;}.fileupload .thumbnail>img{display:inline-block;vertical-align:middle;max-height:100%;}
.fileupload .btn{vertical-align:middle;}
.fileupload-exists .fileupload-new,.fileupload-new .fileupload-exists{display:none;}
.fileupload-inline .fileupload-controls{display:inline;}
.fileupload-new .input-append .btn-file{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
.thumbnail-borderless .thumbnail{border:none;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.fileupload-new.thumbnail-borderless .thumbnail{border:1px solid #ddd;}
.control-group.warning .fileupload .uneditable-input{color:#a47e3c;border-color:#a47e3c;}
.control-group.warning .fileupload .fileupload-preview{color:#a47e3c;}
.control-group.warning .fileupload .thumbnail{border-color:#a47e3c;}
.control-group.error .fileupload .uneditable-input{color:#b94a48;border-color:#b94a48;}
.control-group.error .fileupload .fileupload-preview{color:#b94a48;}
.control-group.error .fileupload .thumbnail{border-color:#b94a48;}
.control-group.success .fileupload .uneditable-input{color:#468847;border-color:#468847;}
.control-group.success .fileupload .fileupload-preview{color:#468847;}
.control-group.success .fileupload .thumbnail{border-color:#468847;}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
/*!
* Timepicker Component for Twitter Bootstrap
*
* Copyright 2013 Joris de Wit
*
* Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/.bootstrap-timepicker{position:relative}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu{left:auto;right:0}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before{left:auto;right:12px}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after{left:auto;right:13px}.bootstrap-timepicker .add-on{cursor:pointer}.bootstrap-timepicker .add-on i{display:inline-block;width:16px;height:16px}.bootstrap-timepicker-widget.dropdown-menu{padding:2px 3px 2px 2px}.bootstrap-timepicker-widget.dropdown-menu.open{display:inline-block}.bootstrap-timepicker-widget.dropdown-menu:before{border-bottom:7px solid rgba(0,0,0,0.2);border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;left:9px;position:absolute;top:-7px}.bootstrap-timepicker-widget.dropdown-menu:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;left:10px;position:absolute;top:-6px}.bootstrap-timepicker-widget a.btn,.bootstrap-timepicker-widget input{border-radius:4px}.bootstrap-timepicker-widget table{width:100%;margin:0}.bootstrap-timepicker-widget table td{text-align:center;height:30px;margin:0;padding:2px}.bootstrap-timepicker-widget table td:not(.separator){min-width:30px}.bootstrap-timepicker-widget table td span{width:100%}.bootstrap-timepicker-widget table td a{border:1px transparent solid;width:100%;display:inline-block;margin:0;padding:8px 0;outline:0;color:#333}.bootstrap-timepicker-widget table td a:hover{text-decoration:none;background-color:#eee;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border-color:#ddd}.bootstrap-timepicker-widget table td a i{margin-top:2px}.bootstrap-timepicker-widget table td input{width:25px;margin:0;text-align:center}.bootstrap-timepicker-widget .modal-content{padding:4px}@media(min-width:767px){.bootstrap-timepicker-widget.modal{width:200px;margin-left:-100px}}@media(max-width:767px){.bootstrap-timepicker{width:100%}.bootstrap-timepicker .dropdown-menu{width:100%}}

6782
public/assets/css/libs/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

873
public/assets/css/libs/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

View File

@@ -0,0 +1,250 @@
.croppie-container {
width: 100%;
height: 100%;
}
.croppie-container .cr-image {
z-index: -1;
position: absolute;
top: 0;
left: 0;
transform-origin: 0 0;
max-height: none;
max-width: none;
}
.croppie-container .cr-boundary {
position: relative;
overflow: hidden;
margin: 0 auto;
z-index: 1;
width: 100%;
height: 100%;
}
.croppie-container .cr-viewport,
.croppie-container .cr-resizer {
position: absolute;
border: 2px solid #fff;
margin: auto;
top: 0;
bottom: 0;
right: 0;
left: 0;
box-shadow: 0 0 2000px 2000px rgba(0, 0, 0, 0.5);
z-index: 0;
}
.croppie-container .cr-resizer {
z-index: 2;
box-shadow: none;
pointer-events: none;
}
.croppie-container .cr-resizer-vertical,
.croppie-container .cr-resizer-horisontal {
position: absolute;
pointer-events: all;
}
.croppie-container .cr-resizer-vertical::after,
.croppie-container .cr-resizer-horisontal::after {
display: block;
position: absolute;
box-sizing: border-box;
border: 1px solid black;
background: #fff;
width: 10px;
height: 10px;
content: '';
}
.croppie-container .cr-resizer-vertical {
bottom: -5px;
cursor: row-resize;
width: 100%;
height: 10px;
}
.croppie-container .cr-resizer-vertical::after {
left: 50%;
margin-left: -5px;
}
.croppie-container .cr-resizer-horisontal {
right: -5px;
cursor: col-resize;
width: 10px;
height: 100%;
}
.croppie-container .cr-resizer-horisontal::after {
top: 50%;
margin-top: -5px;
}
.croppie-container .cr-original-image {
display: none;
}
.croppie-container .cr-vp-circle {
border-radius: 50%;
}
.croppie-container .cr-overlay {
z-index: 1;
position: absolute;
cursor: move;
touch-action: none;
}
.croppie-container .cr-slider-wrap {
width: 75%;
margin: 15px auto;
text-align: center;
}
.croppie-result {
position: relative;
overflow: hidden;
}
.croppie-result img {
position: absolute;
}
.croppie-container .cr-image,
.croppie-container .cr-overlay,
.croppie-container .cr-viewport {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
}
/*************************************/
/***** STYLING RANGE INPUT ***********/
/*************************************/
/*http://brennaobrien.com/blog/2014/05/style-input-type-range-in-every-browser.html */
/*************************************/
.cr-slider {
-webkit-appearance: none;
/*removes default webkit styles*/
/*border: 1px solid white; *//*fix for FF unable to apply focus style bug */
width: 300px;
/*required for proper track sizing in FF*/
max-width: 100%;
padding-top: 8px;
padding-bottom: 8px;
background-color: transparent;
}
.cr-slider::-webkit-slider-runnable-track {
width: 100%;
height: 3px;
background: rgba(0, 0, 0, 0.5);
border: 0;
border-radius: 3px;
}
.cr-slider::-webkit-slider-thumb {
-webkit-appearance: none;
border: none;
height: 16px;
width: 16px;
border-radius: 50%;
background: #ddd;
margin-top: -6px;
}
.cr-slider:focus {
outline: none;
}
/*
.cr-slider:focus::-webkit-slider-runnable-track {
background: #ccc;
}
*/
.cr-slider::-moz-range-track {
width: 100%;
height: 3px;
background: rgba(0, 0, 0, 0.5);
border: 0;
border-radius: 3px;
}
.cr-slider::-moz-range-thumb {
border: none;
height: 16px;
width: 16px;
border-radius: 50%;
background: #ddd;
margin-top: -6px;
}
/*hide the outline behind the border*/
.cr-slider:-moz-focusring {
outline: 1px solid white;
outline-offset: -1px;
}
.cr-slider::-ms-track {
width: 100%;
height: 5px;
background: transparent;
/*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */
border-color: transparent;/*leave room for the larger thumb to overflow with a transparent border */
border-width: 6px 0;
color: transparent;/*remove default tick marks*/
}
.cr-slider::-ms-fill-lower {
background: rgba(0, 0, 0, 0.5);
border-radius: 10px;
}
.cr-slider::-ms-fill-upper {
background: rgba(0, 0, 0, 0.5);
border-radius: 10px;
}
.cr-slider::-ms-thumb {
border: none;
height: 16px;
width: 16px;
border-radius: 50%;
background: #ddd;
margin-top:1px;
}
.cr-slider:focus::-ms-fill-lower {
background: rgba(0, 0, 0, 0.5);
}
.cr-slider:focus::-ms-fill-upper {
background: rgba(0, 0, 0, 0.5);
}
/*******************************************/
/***********************************/
/* Rotation Tools */
/***********************************/
.cr-rotate-controls {
position: absolute;
bottom: 5px;
left: 5px;
z-index: 1;
}
.cr-rotate-controls button {
border: 0;
background: none;
}
.cr-rotate-controls i:before {
display: inline-block;
font-style: normal;
font-weight: 900;
font-size: 22px;
}
.cr-rotate-l i:before {
content: '↺';
}
.cr-rotate-r i:before {
content: '↻';
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,19 @@
.emojione {
/* Emoji Sizing */
font-size: inherit;
height: 3ex;
width: 3.1ex;
min-height: 20px;
min-width: 20px;
/* Inline alignment adjust the margins */
display: inline-block;
margin: -.2ex .15em .2ex;
line-height: normal;
vertical-align: middle;
}
img.emojione {
/* prevent img stretch */
width: auto;
}

View File

@@ -0,0 +1 @@
.emojione{font-size:inherit;height:3ex;width:3.1ex;min-height:20px;min-width:20px;display:inline-block;margin:-.2ex .15em .2ex;line-height:normal;vertical-align:middle}img.emojione{width:auto}

View File

@@ -0,0 +1,165 @@
Fonticons, Inc. (https://fontawesome.com)
--------------------------------------------------------------------------------
Font Awesome Free License
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
--------------------------------------------------------------------------------
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
The Font Awesome Free download is licensed under a Creative Commons
Attribution 4.0 International License and applies to all icons packaged
as SVG and JS file types.
--------------------------------------------------------------------------------
# Fonts: SIL OFL 1.1 License
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
Copyright (c) 2022 Fonticons, Inc. (https://fontawesome.com)
with Reserved Font Name: "Font Awesome".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
SIL OPEN FONT LICENSE
Version 1.1 - 26 February 2007
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting — in part or in whole — any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
--------------------------------------------------------------------------------
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
Copyright 2022 Fonticons, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in the
Software without restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
--------------------------------------------------------------------------------
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**

View File

@@ -0,0 +1,4 @@
console.log(`Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
Copyright 2022 Fonticons, Inc.
`)

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,19 @@
/*!
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
:root, :host {
--fa-style-family-classic: 'Font Awesome 6 Free';
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
@font-face {
font-family: 'Font Awesome 6 Free';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
.far,
.fa-regular {
font-weight: 400; }

View File

@@ -0,0 +1,6 @@
/*!
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}

View File

@@ -0,0 +1,19 @@
/*!
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
:root, :host {
--fa-style-family-classic: 'Font Awesome 6 Free';
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
@font-face {
font-family: 'Font Awesome 6 Free';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
.fas,
.fa-solid {
font-weight: 900; }

View File

@@ -0,0 +1,6 @@
/*!
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}

View File

@@ -0,0 +1,635 @@
/*!
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
:root, :host {
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid';
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular';
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Light';
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin';
--fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
overflow: visible;
box-sizing: content-box; }
.svg-inline--fa {
display: var(--fa-display, inline-block);
height: 1em;
overflow: visible;
vertical-align: -.125em; }
.svg-inline--fa.fa-2xs {
vertical-align: 0.1em; }
.svg-inline--fa.fa-xs {
vertical-align: 0em; }
.svg-inline--fa.fa-sm {
vertical-align: -0.07143em; }
.svg-inline--fa.fa-lg {
vertical-align: -0.2em; }
.svg-inline--fa.fa-xl {
vertical-align: -0.25em; }
.svg-inline--fa.fa-2xl {
vertical-align: -0.3125em; }
.svg-inline--fa.fa-pull-left {
margin-right: var(--fa-pull-margin, 0.3em);
width: auto; }
.svg-inline--fa.fa-pull-right {
margin-left: var(--fa-pull-margin, 0.3em);
width: auto; }
.svg-inline--fa.fa-li {
width: var(--fa-li-width, 2em);
top: 0.25em; }
.svg-inline--fa.fa-fw {
width: var(--fa-fw-width, 1.25em); }
.fa-layers svg.svg-inline--fa {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.fa-layers-text, .fa-layers-counter {
display: inline-block;
position: absolute;
text-align: center; }
.fa-layers {
display: inline-block;
height: 1em;
position: relative;
text-align: center;
vertical-align: -.125em;
width: 1em; }
.fa-layers svg.svg-inline--fa {
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-text {
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-counter {
background-color: var(--fa-counter-background-color, #ff253a);
border-radius: var(--fa-counter-border-radius, 1em);
box-sizing: border-box;
color: var(--fa-inverse, #fff);
line-height: var(--fa-counter-line-height, 1);
max-width: var(--fa-counter-max-width, 5em);
min-width: var(--fa-counter-min-width, 1.5em);
overflow: hidden;
padding: var(--fa-counter-padding, 0.25em 0.5em);
right: var(--fa-right, 0);
text-overflow: ellipsis;
top: var(--fa-top, 0);
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
transform: scale(var(--fa-counter-scale, 0.25));
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-bottom-right {
bottom: var(--fa-bottom, 0);
right: var(--fa-right, 0);
top: auto;
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
transform: scale(var(--fa-layers-scale, 0.25));
-webkit-transform-origin: bottom right;
transform-origin: bottom right; }
.fa-layers-bottom-left {
bottom: var(--fa-bottom, 0);
left: var(--fa-left, 0);
right: auto;
top: auto;
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
transform: scale(var(--fa-layers-scale, 0.25));
-webkit-transform-origin: bottom left;
transform-origin: bottom left; }
.fa-layers-top-right {
top: var(--fa-top, 0);
right: var(--fa-right, 0);
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
transform: scale(var(--fa-layers-scale, 0.25));
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-top-left {
left: var(--fa-left, 0);
right: auto;
top: var(--fa-top, 0);
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
transform: scale(var(--fa-layers-scale, 0.25));
-webkit-transform-origin: top left;
transform-origin: top left; }
.fa-1x {
font-size: 1em; }
.fa-2x {
font-size: 2em; }
.fa-3x {
font-size: 3em; }
.fa-4x {
font-size: 4em; }
.fa-5x {
font-size: 5em; }
.fa-6x {
font-size: 6em; }
.fa-7x {
font-size: 7em; }
.fa-8x {
font-size: 8em; }
.fa-9x {
font-size: 9em; }
.fa-10x {
font-size: 10em; }
.fa-2xs {
font-size: 0.625em;
line-height: 0.1em;
vertical-align: 0.225em; }
.fa-xs {
font-size: 0.75em;
line-height: 0.08333em;
vertical-align: 0.125em; }
.fa-sm {
font-size: 0.875em;
line-height: 0.07143em;
vertical-align: 0.05357em; }
.fa-lg {
font-size: 1.25em;
line-height: 0.05em;
vertical-align: -0.075em; }
.fa-xl {
font-size: 1.5em;
line-height: 0.04167em;
vertical-align: -0.125em; }
.fa-2xl {
font-size: 2em;
line-height: 0.03125em;
vertical-align: -0.1875em; }
.fa-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: var(--fa-li-margin, 2.5em);
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: calc(var(--fa-li-width, 2em) * -1);
position: absolute;
text-align: center;
width: var(--fa-li-width, 2em);
line-height: inherit; }
.fa-border {
border-color: var(--fa-border-color, #eee);
border-radius: var(--fa-border-radius, 0.1em);
border-style: var(--fa-border-style, solid);
border-width: var(--fa-border-width, 0.08em);
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
.fa-pull-left {
float: left;
margin-right: var(--fa-pull-margin, 0.3em); }
.fa-pull-right {
float: right;
margin-left: var(--fa-pull-margin, 0.3em); }
.fa-beat {
-webkit-animation-name: fa-beat;
animation-name: fa-beat;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
.fa-bounce {
-webkit-animation-name: fa-bounce;
animation-name: fa-bounce;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
.fa-fade {
-webkit-animation-name: fa-fade;
animation-name: fa-fade;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
.fa-beat-fade {
-webkit-animation-name: fa-beat-fade;
animation-name: fa-beat-fade;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
.fa-flip {
-webkit-animation-name: fa-flip;
animation-name: fa-flip;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
.fa-shake {
-webkit-animation-name: fa-shake;
animation-name: fa-shake;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
animation-timing-function: var(--fa-animation-timing, linear); }
.fa-spin {
-webkit-animation-name: fa-spin;
animation-name: fa-spin;
-webkit-animation-delay: var(--fa-animation-delay, 0s);
animation-delay: var(--fa-animation-delay, 0s);
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 2s);
animation-duration: var(--fa-animation-duration, 2s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
animation-timing-function: var(--fa-animation-timing, linear); }
.fa-spin-reverse {
--fa-animation-direction: reverse; }
.fa-pulse,
.fa-spin-pulse {
-webkit-animation-name: fa-spin;
animation-name: fa-spin;
-webkit-animation-direction: var(--fa-animation-direction, normal);
animation-direction: var(--fa-animation-direction, normal);
-webkit-animation-duration: var(--fa-animation-duration, 1s);
animation-duration: var(--fa-animation-duration, 1s);
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
animation-timing-function: var(--fa-animation-timing, steps(8)); }
@media (prefers-reduced-motion: reduce) {
.fa-beat,
.fa-bounce,
.fa-fade,
.fa-beat-fade,
.fa-flip,
.fa-pulse,
.fa-shake,
.fa-spin,
.fa-spin-pulse {
-webkit-animation-delay: -1ms;
animation-delay: -1ms;
-webkit-animation-duration: 1ms;
animation-duration: 1ms;
-webkit-animation-iteration-count: 1;
animation-iteration-count: 1;
transition-delay: 0s;
transition-duration: 0s; } }
@-webkit-keyframes fa-beat {
0%, 90% {
-webkit-transform: scale(1);
transform: scale(1); }
45% {
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
transform: scale(var(--fa-beat-scale, 1.25)); } }
@keyframes fa-beat {
0%, 90% {
-webkit-transform: scale(1);
transform: scale(1); }
45% {
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
transform: scale(var(--fa-beat-scale, 1.25)); } }
@-webkit-keyframes fa-bounce {
0% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); }
10% {
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
30% {
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
50% {
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
57% {
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
64% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); }
100% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); } }
@keyframes fa-bounce {
0% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); }
10% {
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
30% {
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
50% {
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
57% {
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
64% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); }
100% {
-webkit-transform: scale(1, 1) translateY(0);
transform: scale(1, 1) translateY(0); } }
@-webkit-keyframes fa-fade {
50% {
opacity: var(--fa-fade-opacity, 0.4); } }
@keyframes fa-fade {
50% {
opacity: var(--fa-fade-opacity, 0.4); } }
@-webkit-keyframes fa-beat-fade {
0%, 100% {
opacity: var(--fa-beat-fade-opacity, 0.4);
-webkit-transform: scale(1);
transform: scale(1); }
50% {
opacity: 1;
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
@keyframes fa-beat-fade {
0%, 100% {
opacity: var(--fa-beat-fade-opacity, 0.4);
-webkit-transform: scale(1);
transform: scale(1); }
50% {
opacity: 1;
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
@-webkit-keyframes fa-flip {
50% {
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
@keyframes fa-flip {
50% {
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
@-webkit-keyframes fa-shake {
0% {
-webkit-transform: rotate(-15deg);
transform: rotate(-15deg); }
4% {
-webkit-transform: rotate(15deg);
transform: rotate(15deg); }
8%, 24% {
-webkit-transform: rotate(-18deg);
transform: rotate(-18deg); }
12%, 28% {
-webkit-transform: rotate(18deg);
transform: rotate(18deg); }
16% {
-webkit-transform: rotate(-22deg);
transform: rotate(-22deg); }
20% {
-webkit-transform: rotate(22deg);
transform: rotate(22deg); }
32% {
-webkit-transform: rotate(-12deg);
transform: rotate(-12deg); }
36% {
-webkit-transform: rotate(12deg);
transform: rotate(12deg); }
40%, 100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); } }
@keyframes fa-shake {
0% {
-webkit-transform: rotate(-15deg);
transform: rotate(-15deg); }
4% {
-webkit-transform: rotate(15deg);
transform: rotate(15deg); }
8%, 24% {
-webkit-transform: rotate(-18deg);
transform: rotate(-18deg); }
12%, 28% {
-webkit-transform: rotate(18deg);
transform: rotate(18deg); }
16% {
-webkit-transform: rotate(-22deg);
transform: rotate(-22deg); }
20% {
-webkit-transform: rotate(22deg);
transform: rotate(22deg); }
32% {
-webkit-transform: rotate(-12deg);
transform: rotate(-12deg); }
36% {
-webkit-transform: rotate(12deg);
transform: rotate(12deg); }
40%, 100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); } }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both,
.fa-flip-horizontal.fa-flip-vertical {
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
.fa-rotate-by {
-webkit-transform: rotate(var(--fa-rotate-angle, none));
transform: rotate(var(--fa-rotate-angle, none)); }
.fa-stack {
display: inline-block;
vertical-align: middle;
height: 2em;
position: relative;
width: 2.5em; }
.fa-stack-1x,
.fa-stack-2x {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
z-index: var(--fa-stack-z-index, auto); }
.svg-inline--fa.fa-stack-1x {
height: 1em;
width: 1.25em; }
.svg-inline--fa.fa-stack-2x {
height: 2em;
width: 2.5em; }
.fa-inverse {
color: var(--fa-inverse, #fff); }
.sr-only,
.fa-sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0; }
.sr-only-focusable:not(:focus),
.fa-sr-only-focusable:not(:focus) {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0; }
.svg-inline--fa .fa-primary {
fill: var(--fa-primary-color, currentColor);
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa .fa-secondary {
fill: var(--fa-secondary-color, currentColor);
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-primary {
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-secondary {
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa mask .fa-primary,
.svg-inline--fa mask .fa-secondary {
fill: black; }
.fad.fa-inverse,
.fa-duotone.fa-inverse {
color: var(--fa-inverse, #fff); }

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,26 @@
/*!
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
@font-face {
font-family: 'FontAwesome';
font-display: block;
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
@font-face {
font-family: 'FontAwesome';
font-display: block;
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
@font-face {
font-family: 'FontAwesome';
font-display: block;
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
@font-face {
font-family: 'FontAwesome';
font-display: block;
src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }

View File

@@ -0,0 +1,6 @@
/*!
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,22 @@
/*!
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
@font-face {
font-family: 'Font Awesome 5 Brands';
font-display: block;
font-weight: 400;
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
@font-face {
font-family: 'Font Awesome 5 Free';
font-display: block;
font-weight: 900;
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
@font-face {
font-family: 'Font Awesome 5 Free';
font-display: block;
font-weight: 400;
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }

View File

@@ -0,0 +1,6 @@
/*!
* Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More