/**/
/* default side padding for items (mainmenu, blocks etc.) */
html {
  -ms-overflow-style: scrollbar;
}
/* Hide Alpine-cloaked elements until Alpine initialises them (no Focus plugin bundled). */
[x-cloak] {
  display: none !important;
}
body {
  margin: 0;
  padding: 0;
  width: 100%;
  font-family: Arial, "Arial", "Helvetica", sans-serif;
  font-size: 14px;
  word-wrap: break-word;
  position: relative;
  overflow: auto !important;
}
#body-wrapper {
  width: 100%;
  float: left;
  box-sizing: border-box;
  padding: 0 15px 0 15px;
}
#body-wrapper #main-col {
  float: left;
}
div.ramec {
  position: relative;
}
div.max-edu-width {
  max-width: 1600px;
  margin: 0 auto 0 auto;
}
/**
 Styles for font styles - italic, bold, underline...
 */
.italic {
  font-style: italic;
}
.bold {
  font-weight: bold !important;
}
.nobold {
  font-weight: normal !important;
}
a,
a:visited,
.hyperlink {
  text-decoration: none;
  outline: none;
}
a:hover,
.hyperlink:hover {
  text-decoration: underline;
}
a.no-underline,
a.no-underline:visited,
a.no-underline:hover,
a.no-underline:focus {
  text-decoration: none;
}
a:focus,
.hyperlink:focus {
  text-decoration: underline;
}
h1 {
  font-size: 20px;
  font-weight: normal;
  margin-bottom: 8px;
}
.cursorPointer,
.hyperlink {
  cursor: pointer;
}
.cursorDefault {
  cursor: default !important;
}
.cursorNResize {
  cursor: n-resize;
}
.positionRelative {
  position: relative;
}
.positionAbsolute {
  position: absolute;
}
.borderBox {
  box-sizing: border-box !important;
}
.borderSpacing0 {
  border-spacing: 0 !important;
}
.contentBox {
  box-sizing: content-box !important;
}
.floatLeft {
  float: left !important;
}
.floatRight {
  float: right !important;
}
.floatNone {
  float: none !important;
}
.left {
  text-align: left;
}
.leftImportant {
  text-align: left !important;
}
.right {
  text-align: right;
}
.alignLeftTable tr th,
.alignLeftTable tr td {
  text-align: left;
}
.center {
  text-align: center !important;
}
.outlineNone:focus {
  outline: none;
}
.displayNone {
  display: none;
}
.displayNoneImportant {
  display: none !important;
}
.displayBlock {
  display: block !important;
}
.displayInline {
  display: inline;
}
.displayInlineBlock {
  display: inline-block;
}
.displayTable {
  display: table;
}
.displayTableCell {
  display: table-cell;
}
.noListStyle,
.noListStyle li {
  list-style-type: none;
}
.borderNone {
  border: none !important;
}
.fontSmall {
  font-size: 11px;
}
.fontLarge {
  font-size: 30px;
}
.fontSize10 {
  font-size: 10px !important;
}
.fontSize11 {
  font-size: 11px !important;
}
.fontSize12 {
  font-size: 12px !important;
}
.fontSize16 {
  font-size: 16px !important;
}
.fontSize17 {
  font-size: 17px !important;
}
.fontSize18 {
  font-size: 18px !important;
}
.fontSize20 {
  font-size: 20px !important;
}
.fontSize24 {
  font-size: 24px !important;
}
.fontSize30 {
  font-size: 30px !important;
}
.fontSize60 {
  font-size: 60px !important;
}
.verticalMiddle {
  vertical-align: middle !important;
}
.verticalTop {
  vertical-align: top !important;
}
/* Background-color for buttons */
.red-button {
  background-color: #DD0000 !important;
  border: 1px solid #DD0000 !important;
}
.orange-button {
  background-color: #FF9900 !important;
  border: 1px solid #FF9900 !important;
}
.green-button {
  background-color: #00b050 !important;
  border: 1px solid #00b050 !important;
}
.red-button,
.orange-button,
.green-button {
  color: #FFF !important;
}
/* Font colors */
.red-text {
  color: #DD0000 !important;
}
.orange-text {
  color: #FF9900 !important;
}
.green-text {
  color: #008f41 !important;
}
.light-green-text {
  color: #58b50d !important;
}
.yellow-text {
  color: #ffcf37 !important;
}
.gray-text {
  color: #888888 !important;
}
.blue-text {
  color: #3d8af7 !important;
}
.dark-blue-text {
  color: #0754a6 !important;
}
.pink-text {
  color: #ff8a84 !important;
}
.purple-text {
  color: #A805BB !important;
}
.black-text {
  color: #000 !important;
}
.white-text {
  color: #FFF !important;
}
/** border colors */
.red-checkbox .checkbox-image {
  border-color: #DD0000 !important;
}
.red-checkbox input:checked ~ .checkbox-image {
  background-color: #DD0000 !important;
}
.red-background {
  background-color: #DD0000 !important;
}
.green-background {
  background-color: #008f41 !important;
}
.backgroundNone {
  background: none !important;
}
/**
  Automatic generate position styles
 */
.top0 {
  top: 0px !important;
}
.top40 {
  top: 40px !important;
}
/**
  Automatic generate Margin styles
 */
.noMargin,
.margin0 {
  margin: 0 !important;
}
/**
  Automatic generate Margin for all sides
 */
.margin0 {
  margin: 0px !important;
}
.margin10 {
  margin: 10px !important;
}
.margin15 {
  margin: 15px !important;
}
.marginTop0 {
  margin-top: 0px !important;
}
.marginTop1 {
  margin-top: 1px !important;
}
.marginTop2 {
  margin-top: 2px !important;
}
.marginTop3 {
  margin-top: 3px !important;
}
.marginTop5 {
  margin-top: 5px !important;
}
.marginTop6 {
  margin-top: 6px !important;
}
.marginTop7 {
  margin-top: 7px !important;
}
.marginTop8 {
  margin-top: 8px !important;
}
.marginTop9 {
  margin-top: 9px !important;
}
.marginTop10 {
  margin-top: 10px !important;
}
.marginTop12 {
  margin-top: 12px !important;
}
.marginTop13 {
  margin-top: 13px !important;
}
.marginTop15 {
  margin-top: 15px !important;
}
.marginTop20 {
  margin-top: 20px !important;
}
.marginTop28 {
  margin-top: 28px !important;
}
.marginTop40 {
  margin-top: 40px !important;
}
.marginBottom0 {
  margin-bottom: 0px !important;
}
.marginBottom5 {
  margin-bottom: 5px !important;
}
.marginBottom6 {
  margin-bottom: 6px !important;
}
.marginBottom7 {
  margin-bottom: 7px !important;
}
.marginBottom8 {
  margin-bottom: 8px !important;
}
.marginBottom10 {
  margin-bottom: 10px !important;
}
.marginBottom15 {
  margin-bottom: 15px !important;
}
.marginBottom20 {
  margin-bottom: 20px !important;
}
.marginBottom28 {
  margin-bottom: 28px !important;
}
.marginBottom30 {
  margin-bottom: 30px !important;
}
.marginBottom60 {
  margin-bottom: 60px !important;
}
.marginRight0 {
  margin-right: 0px !important;
}
.marginRight2 {
  margin-right: 2px !important;
}
.marginRight3 {
  margin-right: 3px !important;
}
.marginRight4 {
  margin-right: 4px !important;
}
.marginRight5 {
  margin-right: 5px !important;
}
.marginRight7 {
  margin-right: 7px !important;
}
.marginRight10 {
  margin-right: 10px !important;
}
.marginRight15 {
  margin-right: 15px !important;
}
.marginLeft0 {
  margin-left: 0px !important;
}
.marginLeft5 {
  margin-left: 5px !important;
}
.marginLeft8 {
  margin-left: 8px !important;
}
.marginLeft10 {
  margin-left: 10px !important;
}
.marginLeft12 {
  margin-left: 12px !important;
}
.marginLeft15 {
  margin-left: 15px !important;
}
.marginLeft20 {
  margin-left: 20px !important;
}
.marginLeft28 {
  margin-left: 28px !important;
}
/**
  Automatic generate Padding styles
 */
.noPadding {
  padding: 0 !important;
}
/**
  Automatic generate Padding for all sides
 */
.padding0 {
  padding: 0px !important;
}
.padding10 {
  padding: 10px !important;
}
.padding15 {
  padding: 15px !important;
}
.paddingTop0 {
  padding-top: 0px !important;
}
.paddingTop3 {
  padding-top: 3px !important;
}
.paddingTop5 {
  padding-top: 5px !important;
}
.paddingTop6 {
  padding-top: 6px !important;
}
.paddingTop7 {
  padding-top: 7px !important;
}
.paddingTop10 {
  padding-top: 10px !important;
}
.paddingTop15 {
  padding-top: 15px !important;
}
.paddingTop17 {
  padding-top: 17px !important;
}
.paddingTop20 {
  padding-top: 20px !important;
}
.paddingBottom0 {
  padding-bottom: 0px !important;
}
.paddingBottom3 {
  padding-bottom: 3px !important;
}
.paddingBottom5 {
  padding-bottom: 5px !important;
}
.paddingBottom10 {
  padding-bottom: 10px !important;
}
.paddingBottom15 {
  padding-bottom: 15px !important;
}
.paddingBottom17 {
  padding-bottom: 17px !important;
}
.paddingBottom20 {
  padding-bottom: 20px !important;
}
.paddingRight0 {
  padding-right: 0px !important;
}
.paddingRight7 {
  padding-right: 7px !important;
}
.paddingRight15 {
  padding-right: 15px !important;
}
.paddingLeft0 {
  padding-left: 0px !important;
}
.paddingLeft8 {
  padding-left: 8px !important;
}
.paddingLeft10 {
  padding-left: 10px !important;
}
.paddingLeft15 {
  padding-left: 15px !important;
}
.paddingLeft20 {
  padding-left: 20px !important;
}
.paddingLeft25 {
  padding-left: 25px !important;
}
.paddingLeft30 {
  padding-left: 30px !important;
}
.paddingLeft60 {
  padding-left: 60px !important;
}
/**
  Automatic generate Padding both sides
 */
.paddingSide0 {
  padding-left: 0px !important;
  padding-right: 0px !important;
}
.paddingSide5 {
  padding-left: 5px !important;
  padding-right: 5px !important;
}
.paddingSide10 {
  padding-left: 10px !important;
  padding-right: 10px !important;
}
.paddingSide15 {
  padding-left: 15px !important;
  padding-right: 15px !important;
}
/**
  Automatic generate Width style in percentage
 */
.width25 {
  width: 25% !important;
  box-sizing: border-box;
}
.width33 {
  width: 33% !important;
  box-sizing: border-box;
}
.width40 {
  width: 40% !important;
  box-sizing: border-box;
}
.width50 {
  width: 50% !important;
  box-sizing: border-box;
}
.width60 {
  width: 60% !important;
  box-sizing: border-box;
}
.width75 {
  width: 75% !important;
  box-sizing: border-box;
}
.width80 {
  width: 80% !important;
  box-sizing: border-box;
}
.width90 {
  width: 90% !important;
  box-sizing: border-box;
}
.width100 {
  width: 100% !important;
  box-sizing: border-box;
}
/**
  Automatic generate Width style in pixels
 */
.width12p {
  width: 12px !important;
  box-sizing: border-box;
}
.width16p {
  width: 16px !important;
  box-sizing: border-box;
}
.width20p {
  width: 20px !important;
  box-sizing: border-box;
}
.width22p {
  width: 22px !important;
  box-sizing: border-box;
}
.width24p {
  width: 24px !important;
  box-sizing: border-box;
}
.width25p {
  width: 25px !important;
  box-sizing: border-box;
}
.width30p {
  width: 30px !important;
  box-sizing: border-box;
}
.width36p {
  width: 36px !important;
  box-sizing: border-box;
}
.width40p {
  width: 40px !important;
  box-sizing: border-box;
}
.width50p {
  width: 50px !important;
  box-sizing: border-box;
}
.width52p {
  width: 52px !important;
  box-sizing: border-box;
}
.width55p {
  width: 55px !important;
  box-sizing: border-box;
}
.width60p {
  width: 60px !important;
  box-sizing: border-box;
}
.width66p {
  width: 66px !important;
  box-sizing: border-box;
}
.width70p {
  width: 70px !important;
  box-sizing: border-box;
}
.width80p {
  width: 80px !important;
  box-sizing: border-box;
}
.width90p {
  width: 90px !important;
  box-sizing: border-box;
}
.width95p {
  width: 95px !important;
  box-sizing: border-box;
}
.width100p {
  width: 100px !important;
  box-sizing: border-box;
}
.width105p {
  width: 105px !important;
  box-sizing: border-box;
}
.width110p {
  width: 110px !important;
  box-sizing: border-box;
}
.width120p {
  width: 120px !important;
  box-sizing: border-box;
}
.width130p {
  width: 130px !important;
  box-sizing: border-box;
}
.width135p {
  width: 135px !important;
  box-sizing: border-box;
}
.width140p {
  width: 140px !important;
  box-sizing: border-box;
}
.width150p {
  width: 150px !important;
  box-sizing: border-box;
}
.width155p {
  width: 155px !important;
  box-sizing: border-box;
}
.width160p {
  width: 160px !important;
  box-sizing: border-box;
}
.width170p {
  width: 170px !important;
  box-sizing: border-box;
}
.width180p {
  width: 180px !important;
  box-sizing: border-box;
}
.width190p {
  width: 190px !important;
  box-sizing: border-box;
}
.width200p {
  width: 200px !important;
  box-sizing: border-box;
}
.width210p {
  width: 210px !important;
  box-sizing: border-box;
}
.width250p {
  width: 250px !important;
  box-sizing: border-box;
}
.width260p {
  width: 260px !important;
  box-sizing: border-box;
}
.width300p {
  width: 300px !important;
  box-sizing: border-box;
}
.width340p {
  width: 340px !important;
  box-sizing: border-box;
}
.width350p {
  width: 350px !important;
  box-sizing: border-box;
}
.width400p {
  width: 400px !important;
  box-sizing: border-box;
}
.width450p {
  width: 450px !important;
  box-sizing: border-box;
}
.width500p {
  width: 500px !important;
  box-sizing: border-box;
}
.width620p {
  width: 620px !important;
  box-sizing: border-box;
}
.width980p {
  width: 980px !important;
  box-sizing: border-box;
}
/**
  Automatic generate Width style in pixels
 */
.minWidth50 {
  min-width: 50% !important;
  box-sizing: border-box;
}
.minWidth51 {
  min-width: 51% !important;
  box-sizing: border-box;
}
/**
  Automatic generate Width style in pixels
 */
.maxWidth50 {
  max-width: 50% !important;
  box-sizing: border-box;
}
.maxWidth100 {
  max-width: 100% !important;
  box-sizing: border-box;
}
/**
  Automatic generate min-width style in pixels
 */
.minWidth24p {
  min-width: 24px !important;
  box-sizing: border-box;
}
.minWidth50p {
  min-width: 50px !important;
  box-sizing: border-box;
}
.minWidth100p {
  min-width: 100px !important;
  box-sizing: border-box;
}
.minWidth160p {
  min-width: 160px !important;
  box-sizing: border-box;
}
/*
  .minWidth1000p is body-only and coupled to the responsive main-menu breakpoint (etapa 1).
  Below 768px the navigation collapses into a hamburger, so forcing a 1000px min-width on the
  body would only create horizontal scroll on phones. Pulled out of the @minWidthPixels loop so
  the 1000px floor applies on desktop (>= 769px) only — the exact complement of the
  `@media (max-width: 768px)` hamburger block.
 */
.minWidth1000p {
  box-sizing: border-box;
}
@media (min-width: 769px) {
  .minWidth1000p {
    min-width: 1000px !important;
  }
}
/**
  Automatic generate max-width style in pixels
 */
.maxWidth18p {
  max-width: 18px !important;
  box-sizing: border-box;
}
.maxWidth20p {
  max-width: 20px !important;
  box-sizing: border-box;
}
.maxWidth24p {
  max-width: 24px !important;
  box-sizing: border-box;
}
.maxWidth50p {
  max-width: 50px !important;
  box-sizing: border-box;
}
.maxWidth150p {
  max-width: 150px !important;
  box-sizing: border-box;
}
.maxWidth200p {
  max-width: 200px !important;
  box-sizing: border-box;
}
.maxWidth250p {
  max-width: 250px !important;
  box-sizing: border-box;
}
.maxWidth300p {
  max-width: 300px !important;
  box-sizing: border-box;
}
.maxWidth400p {
  max-width: 400px !important;
  box-sizing: border-box;
}
/**
  Automatic generate Height style in pixels
 */
.height15p {
  height: 15px !important;
  box-sizing: border-box;
}
.height20p {
  height: 20px !important;
  box-sizing: border-box;
}
.height22p {
  height: 22px !important;
  box-sizing: border-box;
}
.height28p {
  height: 28px !important;
  box-sizing: border-box;
}
.height30p {
  height: 30px !important;
  box-sizing: border-box;
}
.height36p {
  height: 36px !important;
  box-sizing: border-box;
}
.height37p {
  height: 37px !important;
  box-sizing: border-box;
}
.height40p {
  height: 40px !important;
  box-sizing: border-box;
}
.height42p {
  height: 42px !important;
  box-sizing: border-box;
}
.height50p {
  height: 50px !important;
  box-sizing: border-box;
}
.height60p {
  height: 60px !important;
  box-sizing: border-box;
}
.height80p {
  height: 80px !important;
  box-sizing: border-box;
}
.height100p {
  height: 100px !important;
  box-sizing: border-box;
}
.height120p {
  height: 120px !important;
  box-sizing: border-box;
}
.height150p {
  height: 150px !important;
  box-sizing: border-box;
}
.height200p {
  height: 200px !important;
  box-sizing: border-box;
}
.height240p {
  height: 240px !important;
  box-sizing: border-box;
}
.height300p {
  height: 300px !important;
  box-sizing: border-box;
}
.height400p {
  height: 400px !important;
  box-sizing: border-box;
}
.height500p {
  height: 500px !important;
  box-sizing: border-box;
}
/**
  Automatic generate max-height style in pixels
 */
.maxHeight18p {
  max-height: 18px !important;
  box-sizing: border-box;
}
.maxHeight20p {
  max-height: 20px !important;
  box-sizing: border-box;
}
.maxHeight24p {
  max-height: 24px !important;
  box-sizing: border-box;
}
.maxHeight50p {
  max-height: 50px !important;
  box-sizing: border-box;
}
.maxHeight100p {
  max-height: 100px !important;
  box-sizing: border-box;
}
.maxHeight150p {
  max-height: 150px !important;
  box-sizing: border-box;
}
.maxHeight400p {
  max-height: 400px !important;
  box-sizing: border-box;
}
/**
  Automatic generate Line-Height style in pixels
 */
.lineHeight20 {
  line-height: 20px !important;
}
.lineHeight22 {
  line-height: 22px !important;
}
.lineHeight24 {
  line-height: 24px !important;
}
.lineHeight28 {
  line-height: 28px !important;
}
.lineHeight30 {
  line-height: 30px !important;
}
.lineHeight32 {
  line-height: 32px !important;
}
.lineHeight36 {
  line-height: 36px !important;
}
.lineHeight50 {
  line-height: 50px !important;
}
.lineHeight60 {
  line-height: 60px !important;
}
/**
  Hidden wrapper for default values in forms.
 */
.forms-wrapper {
  display: none;
}
/**
  Mainmenu cascade styles
  MainMenu
 */
div#mainmenu-panel {
  min-width: 100%;
  margin: 0;
  padding: 0 15px 0 15px;
  box-sizing: border-box;
  float: left;
  height: 60px;
}
#mainmenu-left,
#mainmenu-right {
  padding: 0;
  margin: 7px 0 0 0;
  float: left;
  font-family: Arial, "Arial", "Helvetica", sans-serif;
  width: auto;
}
#mainmenu-right {
  float: right;
}
#mainmenu-left li,
#mainmenu-right li {
  float: left;
  height: 46px;
  line-height: 46px;
  border-radius: 4px;
  font-size: 14px;
  list-style-type: none;
  padding: 0 15px 0 15px;
  margin-right: 5px;
}
/* Hamburger toggle — present in the DOM on every page but hidden above the mobile breakpoint. */
#mainmenu-toggle {
  display: none;
  height: 60px;
  width: 46px;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font-size: 14px;
}
/* Menu items carry both an icon (.menu-ico) and a text label (.menu-text). The original
   (desktop) menu shows only one of them, reproducing the legacy look: onlyIco items show the
   icon, all other items show the text. The hamburger menu (mobile) shows both — see @media. */
#mainmenu-left li.menu-onlyico .menu-text,
#mainmenu-right li.menu-onlyico .menu-text {
  display: none;
}
#mainmenu-left li:not(.menu-onlyico) .menu-ico,
#mainmenu-right li:not(.menu-onlyico) .menu-ico {
  display: none;
}
/* The eager nested submenu (responsive submenu, variant 2) is consumed only by the mobile hamburger.
   On desktop the horizontal main menu must never show the nested list or its chevron — desktop keeps
   its separate submenu bar. Hidden by default at every width; revealed only inside the open hamburger
   (see the @media block below). */
.mainmenu-submenu,
.submenu-arrow {
  display: none;
}
/*
  Responsive main menu (etapa 1). Below 768px the navigation collapses into a hamburger:
  the bar shows only the hamburger toggle (left) and the Edunio logo (right); everything else
  folds into a full-screen, scrollable panel. Desktop (>= 768px) is untouched.
 */
@media (max-width: 768px) {
  /* Fix the bar (with its themed background) to the top so it stays put on scroll — like the
     hamburger/logo pinned on it. The wrapper reserves the 60px the now-fixed bar vacated, so the
     page content below doesn't slide up underneath the bar. */
  #mainmenu-wrapper {
    height: 60px;
  }
  div#mainmenu-panel {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 60px;
    z-index: 1001;
  }
  /* Show the hamburger and pin it to the left of the bar. */
  #mainmenu-toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    position: fixed;
    top: 0;
    left: 15px;
    z-index: 1002;
  }
  /* Login / empty menu: the left list has no items (MAINMENU_EMPTY). There is nothing to
     collapse, so drop the hamburger and surface the language selector directly in the bar
     (where the hamburger would sit); the logo, if any, stays pinned on the right. `:has()`
     is live, so once the user logs in and the left menu fills, the hamburger returns. */
  #mainmenu-panel:has(#mainmenu-left:empty) #mainmenu-toggle {
    display: none;
  }
  #mainmenu-panel:has(#mainmenu-left:empty) #mainmenu-right li:has(.SumoSelect) {
    display: flex;
    align-items: center;
    position: fixed;
    top: 0;
    left: 15px;
    height: 60px;
    margin: 0;
    padding: 0;
    float: none;
    z-index: 1002;
  }
  /* Hide the left navigation when the panel is closed. */
  #mainmenu-left {
    display: none;
  }
  /* Right list keeps only the logo visible in the bar; all other icons fold into the panel. */
  #mainmenu-right {
    float: none;
    margin: 0;
  }
  #mainmenu-right li {
    display: none;
  }
  /* The logo (img.edunio-logo) always stays pinned to the right of the bar. */
  #mainmenu-right li:has(img.edunio-logo) {
    display: flex;
    align-items: center;
    position: fixed;
    top: 0;
    right: 15px;
    height: 60px;
    float: none;
    margin: 0;
    padding: 0;
    z-index: 1002;
  }
  /* OPEN state: the themed panel expands to a full-screen, scrollable overlay.
     z-index stays below the sumoselect options wrapper (fixed, z-index 1000, appended to body)
     so the language flag list renders ABOVE the panel; the fixed bar (hamburger + logo, 1002)
     stays above both. */
  #mainmenu-panel.menu-open {
    position: fixed;
    inset: 0;
    height: 100%;
    overflow-y: auto;
    z-index: 999;
  }
  #mainmenu-panel.menu-open #mainmenu-nav {
    /* Leave room for the fixed bar (hamburger + logo) and fade the panel in. */
    padding-top: 60px;
    animation: edu-menu-fade 0.18s ease-out;
  }
  #mainmenu-panel.menu-open #mainmenu-left,
  #mainmenu-panel.menu-open #mainmenu-right {
    display: block;
    float: none;
    width: 100%;
    margin: 0;
  }
  #mainmenu-panel.menu-open #mainmenu-left li,
  #mainmenu-panel.menu-open #mainmenu-right li {
    display: block;
    float: none;
    width: 100%;
    height: auto;
    line-height: normal;
    margin: 0 0 4px 0;
    padding: 14px 15px;
    box-sizing: border-box;
  }
  /* The close affordance (✕) STAYS pinned LEFT in the open panel. The hamburger toggle is a single button
     (fa-bars when closed, fa-times when open) and is NOT relocated on open, so the ✕ sits exactly where the
     closed-state hamburger sat (left, from the #mainmenu-toggle rule above). The open panel's header thus
     mirrors the closed bar — ✕ left, logo right — and the close icon does not jump across the bar. */
  /* Keep the logo pinned to the RIGHT of the bar while the panel is open — the same spot as in the closed
     bar (it does not move to the left). The display/width/height/padding overrides cancel the generic
     open-state row rule above (#mainmenu-panel.menu-open #mainmenu-right li), which would otherwise stretch
     the logo into a full-width block. */
  #mainmenu-panel.menu-open #mainmenu-right li:has(img.edunio-logo) {
    display: flex;
    width: auto;
    height: 60px;
    padding: 0;
    right: 15px;
    left: auto;
  }
  /* Hamburger items show BOTH icon (left) and text (right). */
  #mainmenu-panel.menu-open #mainmenu-left li .menu-ico,
  #mainmenu-panel.menu-open #mainmenu-right li .menu-ico {
    display: inline-block;
    width: 24px;
    margin-right: 12px;
    text-align: center;
    vertical-align: middle;
  }
  #mainmenu-panel.menu-open #mainmenu-left li .menu-text,
  #mainmenu-panel.menu-open #mainmenu-right li .menu-text {
    display: inline;
    vertical-align: middle;
  }
  /* Bigger gap between the left-menu group and the right-menu group. */
  #mainmenu-panel.menu-open #mainmenu-right {
    margin-top: 30px;
  }
  /* Variant 2 — eager nested submenu inside the open hamburger. Selectors include #mainmenu-left so
     they out-specify the generic `#mainmenu-panel.menu-open #mainmenu-left li` row rule above. The
     nested list shows only when its section carries the `expanded` class (toggled by the accordion). */
  #mainmenu-panel.menu-open #mainmenu-left .has-submenu {
    position: relative;
  }
  #mainmenu-panel.menu-open #mainmenu-left .has-submenu > .submenu-arrow {
    display: block;
    position: absolute;
    top: 18px;
    right: 15px;
    transition: transform 0.18s ease;
  }
  #mainmenu-panel.menu-open #mainmenu-left .has-submenu.expanded > .submenu-arrow {
    transform: rotate(180deg);
  }
  #mainmenu-panel.menu-open #mainmenu-left .has-submenu > .mainmenu-submenu {
    display: none;
    margin: 0;
    padding: 0;
  }
  #mainmenu-panel.menu-open #mainmenu-left .has-submenu.expanded > .mainmenu-submenu {
    display: block;
    /* Keep the section header at its own full row height — push the nested list clearly below it so the
       header reads as a row of its own (like the collapsed items), not crammed against the first sub-item. */
    margin-top: 14px;
  }
  #mainmenu-panel.menu-open #mainmenu-left .mainmenu-submenu-item {
    display: block;
    width: 100%;
    box-sizing: border-box;
    /* Indent past the parent icon so the nesting reads clearly (per the mockup submenu-mainmenu.png). */
    padding: 12px 15px 12px 15px;
    margin: 0;
    line-height: normal;
  }
  /* Dot indicator before each nested item. */
  #mainmenu-panel.menu-open #mainmenu-left .mainmenu-submenu-item::before {
    content: "";
    display: inline-block;
    width: 7px;
    height: 7px;
    margin-right: 12px;
    border-radius: 50%;
    background: currentColor;
    opacity: 0.35;
    vertical-align: middle;
  }
  /* Active sub-item (the current page) — marked with bold only. The section's selected background stays on
     the header; the sub-item itself gets no background, just the bold weight. */
  #mainmenu-panel.menu-open #mainmenu-left .mainmenu-submenu-item.submenu-active {
    font-weight: bold;
  }
  /* Responsive footer (etapa 4). Hide the page footer on mobile — but ONLY when a hamburger exists (the left
     menu has items). On login / empty menu there is no hamburger to host the footer, so it stays in the body
     (FT9). `:has(#mainmenu-left li)` keys off real <li> presence (the skeleton's empty <ul> carries only
     whitespace, so :empty would be unreliable). */
  body:has(#mainmenu-left li) #footer-wrapper {
    display: none;
  }
  /* Show the relocated footer at the very bottom of the OPEN hamburger, under the navigation. It inherits the
     panel's themed background (#mainmenu-panel.custom-background); margin-top separates it from the menu. */
  #mainmenu-panel.menu-open #mainmenu-footer {
    display: block;
    width: 100%;
    box-sizing: border-box;
    margin-top: 30px;
    padding: 14px 15px;
    font-size: 12px;
    opacity: 0.7;
    text-align: center;
  }
  /* Footer hyperlinks (the GDPR .hyperlink span + any <a>, e.g. the Zentiva prevent.cz link) sit on the
     themed panel background where the default link color blends in. Render them in the surrounding text
     color, but keep a permanent underline so they still read as links (per Martin's request). */
  #mainmenu-footer a,
  #mainmenu-footer .hyperlink {
    color: inherit;
    text-decoration: underline;
  }
  /*
    Responsive login (etapa 5). Below 768px the fixed-width auth blocks (#login-block 460px,
    #sign-in-block 500px) overflow narrow viewports. Keep each block at its natural width and let the
    desktop `margin: 0 auto` keep centring it — only CAP the width with max-width so that once the
    viewport gets narrower than the block, it shrinks instead of overflowing, always leaving
    @defaultSidePadding (15px) clear on both sides. Do NOT set `width: auto` here — that would stretch
    the block to fill the row and it would stop reading as a centred box on mid-size screens (e.g. 700px).
    The inner horizontal padding is reduced to @defaultSidePadding so the form fields have room on a
    phone. Vertical centring is untouched — it stays driven by LoginFacadeComponent.updateCSS().
    #sign-in-block lives on the public event/quiz sign-in pages (not the login page) but shares the
    same fixed-width pattern, so it gets the same treatment for consistency. The SignUp and
    LostPassword screens are modals, handled by the modal responsive CSS, not here. SSO buttons are
    content-width inline-blocks centred in .center, so they do not overflow and need no rule.
  */
  #login-block,
  #sign-in-block {
    max-width: calc(100% - (15px * 2));
    padding-left: 15px;
    padding-right: 15px;
  }
}
@keyframes edu-menu-fade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*
  Shared responsive filter overlay (variant 4). SINGLE definition reused by BOTH the app submenu bar
  (#submenu-panel, x-data="filterOverlay()") and the admin list toolbar (.list-toolbar,
  x-data="filterOverlay('.list-toolbar-filters')"). All selectors below are class-based so a change here
  applies to both consumers (the submenu markup carries .filter-panel/.filter-toggle/.filter-overlay/
  .filter-source/.filter-overlay-* alongside its ids; the list toolbar carries the same classes). On filter
  pages the bar stays on mobile: the inline (desktop) filter controls (.filter-source) are hidden and a
  fa-filter button (.filter-toggle) opens a full-screen overlay (.filter-overlay) that HOSTS those controls
  plus an Apply button. Everything here is hidden/untouched on desktop (>= 768px) — desktop keeps the filters
  inline. The submenu-only bar geometry (position:fixed, top:60px) stays in submenu.css.less.
 */
.filter-toggle {
  display: none;
  height: 22px;
  width: 22px;
  margin: 19px 0 0 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font-size: 14px;
  line-height: 22px;
  text-align: center;
  cursor: pointer;
}
/* When a filter is active the rich-toggle pages mark their (desktop) collapse arrow icon with `.red-text`
   (ListItemsComponent). Mirror that on the mobile funnel: if the panel holds a red-text arrow, the fa-filter
   funnel goes red too — same active-filter cue as the non-responsive design. */
.list-toolbar:has(#toggle-filter-list i.red-text) .filter-toggle {
  color: #DD0000;
}
/* Overlay is desktop-hidden; only the @media block below reveals it (x-cloak hides it until Alpine inits). */
.filter-overlay {
  display: none;
}
@media (max-width: 768px) {
  /* Hide the inline filter controls WHILE they sit in the panel/bar; the fa-filter button replaces them.
     Scoped to .filter-panel so that once the controls are relocated INTO .filter-overlay (no longer a
     descendant of .filter-panel) they show again. */
  .filter-panel .filter-source {
    display: none;
  }
  /* Show the fa-filter button only on pages that actually have filter controls. */
  .filter-panel:has(.filter-source > *) .filter-toggle {
    display: block;
    float: right;
  }
  /* Full-screen themed overlay hosting the relocated filters. The overlay is a SIBLING of the panel (so it
     escapes the bar's fixed stacking context); .filter-overlay only exists in the overlay markup, so a flat
     class selector reveals it for both consumers. */
  .filter-overlay {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 1003;
    overflow-y: auto;
    padding: 60px 15px 76px 15px;
    box-sizing: border-box;
    animation: edu-menu-fade 0.18s ease-out;
  }
  /* Lay the relocated filter controls out as a left-aligned column: every control on its own row, with its
     label on its own line ABOVE the input. Targets the filter structure wrappers (.filter-source plus up to
     two nested div levels — covers the single-level pages and the MyCourses grouped wrapper). The SumoSelect
     internals are deeper and untouched; selects keep their own width, just left-aligned. */
  .filter-overlay .filter-source,
  .filter-overlay .filter-source > div,
  .filter-overlay .filter-source > div > div {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    float: none;
    width: 100%;
    margin: 0;
    line-height: normal;
    text-align: left;
  }
  /* Vertical gap between the stacked controls. */
  .filter-overlay .filter-source > div > div,
  .filter-overlay .filter-source > div:only-child {
    margin-bottom: 20px;
  }
  /* Each input/select sits just below its label. */
  .filter-overlay .filter-source .SumoSelect,
  .filter-overlay .filter-source input,
  .filter-overlay .filter-source select {
    margin-top: 6px;
    float: none;
  }
  /* Full-width, left-aligned selectboxes/inputs in the overlay column (the desktop SumoSelect keeps a fixed
     px width + float that otherwise leaves e.g. the language row's control hanging on the right). */
  .filter-overlay .filter-source .SumoSelect,
  .filter-overlay .filter-source select,
  .filter-overlay .filter-source input[type="text"] {
    width: 100% !important;
    float: none !important;
    margin-left: 0 !important;
  }
  .filter-overlay .filter-source .filter-table > tbody > tr > th,
  .filter-overlay .filter-source .filter-table > tbody > tr > td {
    text-align: left !important;
    float: none !important;
    /* Clear preceding floats (e.g. the org-structure picker in the row above) so each stacked label/control
       starts on its own line instead of flowing to the right of a float. */
    clear: both;
  }
  /* Rich-toggle admin pages relocate their collapsible filter block into the overlay; that block carries
     `admin-list-filter-hidden` (height:0 + opacity:0) when the page's own desktop toggle is closed. Inside
     the overlay it must always be fully expanded regardless of that toggle state. */
  .filter-overlay .admin-list-filter-hidden {
    opacity: 1;
    transform: none;
    pointer-events: auto;
    height: auto !important;
  }
  /* Rich-toggle filter blocks are desktop multi-column `filter-table` grids (fixed `width160p`/`width210p`
     columns). In the narrow overlay reflow them to a single vertical column: each label (th) on its own row
     above its controls (td), full width. Empty spacer cells are dropped. */
  .filter-overlay .filter-source .filter-table,
  .filter-overlay .filter-source .filter-table > tbody,
  .filter-overlay .filter-source .filter-table > tbody > tr,
  .filter-overlay .filter-source .filter-table > tbody > tr > th,
  .filter-overlay .filter-source .filter-table > tbody > tr > td {
    display: block;
    width: 100% !important;
    max-width: 100%;
    text-align: left;
    box-sizing: border-box;
  }
  .filter-overlay .filter-source .filter-table > tbody > tr > th:empty,
  .filter-overlay .filter-source .filter-table > tbody > tr > td:empty {
    display: none;
  }
  .filter-overlay .filter-source .filter-table > tbody > tr > th {
    margin-top: 14px;
    font-weight: bold;
  }
  .filter-overlay .filter-source .filter-table > tbody > tr > td {
    padding: 4px 0 !important;
  }
  /* The clickable option cells (filter-table-items) stay a contiguous segmented control exactly like
     desktop — a single full-width fixed-layout table row, cells adjacent with shared 1px borders and NO
     gaps between them. The desktop base rules (`table-layout:fixed; width:100%` + `border-right-width:0`
     on non-last cells) already produce this, so we must NOT reflow them into spaced inline-block pills;
     just ensure the table fills the (now stacked) row width. */
  .filter-overlay .filter-source .filter-table-items {
    width: 100% !important;
  }
  /* Chip colours on the (blue) overlay: inactive = transparent fill so the blue shows through, with a white
     border + white text; only ACTIVE (`.selected`) chips get a solid white fill with dark text. */
  .filter-overlay .filter-source .filter-table table.filter-table-items td {
    background-color: transparent;
    border-color: #FFF;
    color: #FFF;
  }
  .filter-overlay .filter-source .filter-table table.filter-table-items td.selected {
    background-color: #FFF !important;
    color: #0754A6;
    border-color: #FFF !important;
  }
  /* Header of the filter overlay mirrors the closed top panel: a decorative filter icon pinned top-LEFT
     (a visual echo of the funnel that opened the overlay, like ☰ in the bar) and the Edunio logo pinned
     top-RIGHT (where the logo sits in the top panel). There is no close (✕) affordance here — the overlay
     closes via the bottom Apply/"Zavřít" button, Esc, or a resize back to desktop. */
  .filter-overlay-ico {
    position: fixed;
    top: 0;
    left: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 60px;
    width: 46px;
    color: inherit;
    z-index: 1004;
  }
  .filter-overlay-logo {
    position: fixed;
    top: 0;
    right: 15px;
    display: flex;
    align-items: center;
    height: 60px;
    z-index: 1004;
  }
  /* Apply button pinned full-width to the bottom. */
  .filter-overlay-apply {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    height: 56px;
    padding: 0;
    border: 0;
    border-top: 1px solid rgba(127, 127, 127, 0.25);
    background: transparent;
    /* A <button> does not inherit color by default (UA sets it black); inherit the overlay's themed
       `.custom-background` text colour (fontColorOnCustomColor — white in this admin) so the Apply label
       matches the instance's colour scheme instead of rendering black. */
    color: inherit;
    font-size: 14px;
    font-weight: bold;
    cursor: pointer;
    z-index: 1004;
  }
}
/**
  Logo in submenu.
 */
#submenuLogoDiv {
  width: 350px;
  height: 60px;
  display: flex;
  align-items: center;
  justify-content: right;
  align-content: center;
}
#submenuLogoDiv img {
  flex-grow: 0;
  flex-shrink: 0;
}
/**
  Footer cascade styles
 */
div#footer-panel {
  float: left;
  width: 100%;
  height: 40px;
  font-size: 12px;
  margin-top: 40px;
  opacity: 0.7;
  text-align: center;
}
/* Responsive footer (etapa 4) — the footer copy embedded at the bottom of the hamburger (mainMenu.hbs) is
   hidden by default; it is revealed only inside the open panel below 768px (see the @media block above). */
#mainmenu-footer {
  display: none;
}
/**
  Login form.
 */
#login-panel,
#sign-in-panel {
  min-height: 280px;
  width: 100%;
  text-align: center;
}
#sign-in-block {
  width: 500px;
  padding: 26px 15px 0 15px;
  min-height: 280px;
  box-sizing: border-box;
  margin: 0 auto;
  text-align: center;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
}
#login-block {
  width: 460px;
  padding: 26px 58px 0 58px;
  min-height: 280px;
  box-sizing: border-box;
  margin: 0 auto;
  text-align: center;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
}
#login-block div,
#sign-in-block div {
  padding: 6px 0 0 0;
}
#login-block .login-caption {
  font-family: Arial, "Arial", "Helvetica", sans-serif;
  font-size: 20px;
  text-align: left;
  padding: 6px 0 0 0;
}
#sign-in-block div.input,
#login-block div.input,
#login-block div.links {
  padding: 2px 0 0 0;
}
#login-block div.input i {
  position: absolute;
  left: 5px;
  top: 10px;
  width: 28px;
  height: 20px;
  line-height: 20px;
  z-index: 1;
}
/*
  Style of default table in modal.
*/
.default-table,
.default-table tr td,
.default-table th {
  border-spacing: 0;
  border: 0;
  border-collapse: collapse;
  line-height: 36px;
  padding: 3px 0;
  vertical-align: top;
}
/*
  Style for error (403, 404) page.
 */
#page-error {
  padding: 50px 15px 100px 15px;
  text-align: center;
  float: left;
}
#page-error .center-wrapper {
  margin: 0 auto 0 auto;
  text-align: left;
  max-width: 1000px;
}
#page-error .ico-wrapper {
  float: left;
  font-size: 120px;
  margin-right: 30px;
}
#page-error .text-wrapper {
  mrgin-top: 20px;
  float: left;
}
/*
  Style for admin dashboard.
 */
#adminDashboardTable tr td,
.verticalTop {
  vertical-align: top;
}
#adminDashboardTable h3 {
  margin: 0;
  font-size: 14px;
}
#adminDashboardTiles div.infoBox {
  width: 50%;
  float: left;
  margin-bottom: 12px;
  box-sizing: border-box;
  transition: all 0.2s linear;
  cursor: pointer;
}
#adminDashboardTiles div.infoBox h4 {
  font-size: 18px;
  margin: 58px auto 32px 10px;
}
#adminDashboardTiles div.infoBox span,
#adminDashboardTiles div.infoBox a,
#adminDashboardTiles div.infoBox a:visited {
  margin: auto auto 10px 10px;
  float: left;
}
#adminDashboardTiles div.infoBox div {
  float: left;
  max-width: 344px;
}
#adminDashboardTiles div.infoBox div.num {
  background-color: #666;
  width: 80px;
  float: right;
  height: 140px;
  line-height: 140px;
  color: #FFF;
  font-size: 40px;
  text-align: center;
}
#adminDashboardTiles div.infoBox div.percentage {
  margin-top: -140px;
  width: 80px;
  text-align: center;
  height: 140px;
  line-height: 140px;
}
#adminDashboardTiles .statusbar {
  margin: 0;
  padding: 0;
  float: left;
  width: 80px;
  background-color: #06b025;
}
#adminDashboardTiles .statusbarRed {
  margin: 0;
  padding: 0;
  float: left;
  width: 80px;
  background-color: #CC0000;
}
/**
  Style for rotating information in admin submenu.
 */
#information-list {
  position: relative;
}
#information-list li {
  position: absolute;
  text-align: right;
  width: 335px;
  top: 0;
  right: 0;
  color: #999;
}
/**
  Default table in main body
 */
.default-table-body,
.default-table-list {
  margin-bottom: 20px;
  border-spacing: 0;
  table-layout: fixed;
}
.default-table-body > tbody > tr,
.default-table-list > tbody > tr {
  padding: 0;
}
.default-table-body > tbody > tr > td,
.default-table-body > tbody > tr > th {
  line-height: 36px;
  vertical-align: top;
  padding: 0 0 7px 0;
}
.default-table-body > tbody > tr > th,
.default-table-body > tr > th {
  font-weight: normal;
  line-height: 20px;
  padding-top: 8px;
  padding-bottom: 15px;
  text-align: left;
  padding-right: 15px;
}
.default-table-list > tbody > tr > td,
.default-table-list > tbody > tr > th {
  line-height: 22px;
  vertical-align: top;
  padding: 0;
  text-align: left;
}
/**
  Page with default table with list of item.
*/
.default-list-table {
  border-collapse: collapse;
  table-layout: fixed;
}
.default-list-table > tbody > tr > th,
.default-list-table > tbody > tr > td {
  padding: 10px 15px 10px 0;
  text-align: left;
  font-weight: normal;
  line-height: 22px;
  vertical-align: top;
}
.default-list-table > tbody > tr > th:first-child,
.default-list-table > tbody > tr > td:first-child,
.default-list-table > tbody > tr > td:first-child .td-link {
  padding: 10px 15px 10px 15px;
}
.default-list-table > tbody > tr > td .td-link {
  line-height: 22px;
  padding: 10px 15px 10px 0;
}
.wrapTdContent {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tableAuto {
  table-layout: auto !important;
}
.tableFixed {
  table-layout: fixed !important;
}
/**
 ul/li in table style
 */
.tableList {
  list-style-type: none;
  margin: 0;
  padding: 0;
  width: 100%;
  float: left;
}
.tableList li {
  width: 100%;
  float: left;
  padding: 0;
  margin: 0;
}
.tableList li > div > div {
  padding: 10px 15px 10px 0;
  line-height: 22px;
}
.tableList li > div > div:first-child {
  padding: 10px 15px;
}
/**
  Menu v tabulce, většinou vpravo
 */
.table-menu {
  margin: 0;
  padding: 0;
  height: 22px;
  line-height: 22px;
}
.table-menu li,
.button-right-help {
  margin: 0 2px 0 0;
  text-align: center;
  width: 22px !important;
  height: 22px !important;
  box-sizing: border-box;
  float: left;
  padding: 0;
  cursor: pointer;
  list-style-type: none;
  line-height: 21px;
  -webkit-border-radius: 2px;
  -moz-border-radius: 2px;
  border-radius: 2px;
}
.table-menu li.fa .tooltip-temp {
  font-family: Arial, "Arial", "Helvetica", sans-serif;
  font-weight: normal;
}
.table-menu li.fa {
  line-height: 17px;
}
.table-menu li i,
.button-right-help i {
  color: #C0C0C0;
  font-size: 14px;
  line-height: 20px;
  width: 100%;
}
/*
  Responsive list tables (etapa 6). Below 768px a list table opts into a card layout by carrying the
  `mobile-cards` class on the <table>. Opt-in (not a blanket `.default-list-table` rule) keeps in-modal
  and in-form tables — which do NOT add the class — untouched, and makes desktop regression impossible
  unless the class is present. Each data <tr> becomes a card: a leading slot (checkbox|icon, absolute
  top-left), a bold title, label:value meta rows (label from `data-label`), and the right-column actions
  fold into a 3-dot dropdown (absolute top-right). The column-header <tr> is hidden (cards carry their own
  labels). Desktop (>= 769px) is untouched. The `.table-menu-kebab` trigger and `.table-menu-mobile-label`
  text live here too — both are display:none on desktop so the inline icon row is unchanged above 768px.
 */
.table-menu-kebab {
  display: none;
}
.table-menu-mobile-label {
  display: none;
}
/* Mobile-card-only inline fragment (e.g. firstname appended into the lastname title cell) — hidden on
   desktop, where the firstname keeps its own column. */
.mobile-only-inline {
  display: none;
}
/* The wrapper around the action <ul> generates no box on desktop, so the inline icon row (and every
   non-card usage of the tableMenu partial — modals, in-form lists) is byte-for-byte unchanged. */
.table-menu-wrap {
  display: contents;
}
@media (max-width: 768px) {
  /* Table, its tbodies and rows collapse to blocks; drop the fixed layout and any desktop min-width. */
  table.mobile-cards,
  table.mobile-cards > tbody {
    display: block;
    width: 100%;
    min-width: 0 !important;
    table-layout: auto !important;
  }
  /* Hide the column-header row (the bare <tr> of <th>); cards label their own fields. !important beats
     the equal-specificity `> tbody > tr { display: block }` card rule below regardless of source order. */
  table.mobile-cards tr:has(> th) {
    display: none !important;
  }
  /* Each data row becomes a card. Right padding reserves space for the kebab; left padding is added
     only when a leading slot is present (see :has rule below). */
  table.mobile-cards > tbody > tr {
    /* A flex column lets the title/subtitle be hoisted to the top via `order` regardless of their
       source column position (some lists put a date/owner column before the name), and — being a flex
       container — it is also its own block formatting context, isolated from uncleared page floats
       above the table (e.g. the Users paging bar) that otherwise pushed the first card's content down. */
    display: flex;
    flex-direction: column;
    position: relative;
    margin: 0 0 10px 0;
    padding: 12px 44px 12px 12px;
    border: 1px solid rgba(127, 127, 127, 0.14);
    border-radius: 12px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
    box-sizing: border-box;
  }
  /* Make room on the left for the leading slot only when the card actually has one. */
  table.mobile-cards > tbody > tr:has(.mobile-lead) {
    padding-left: 64px;
  }
  /* Cells become block; strip table padding/width, allow wrapping so nothing forces horizontal scroll.
     `!important` on the border beats the higher-specificity theme rule
     (`.admin-lightmode-color table.default-list-table > tbody > tr > td { border-top/bottom }`) that
     would otherwise draw stray horizontal lines inside each card. */
  table.mobile-cards > tbody > tr > td {
    display: block;
    width: auto !important;
    min-width: 0 !important;
    padding: 1px 0 !important;
    border: 0 !important;
    line-height: 1.4;
    white-space: normal;
    overflow-wrap: anywhere;
    vertical-align: baseline;
  }
  /* label:value — the label comes from data-label (injected from the matching <th>, XSS-safe). Title,
     subtitle and the leading slot are excluded (they render label-less). */
  table.mobile-cards > tbody > tr > td[data-label]:not(:empty):not(.mobile-title):not(.mobile-subtitle):not(.mobile-lead)::before {
    content: attr(data-label) ": ";
    opacity: 0.6;
  }
  /* A leading-slot cell (icon/checkbox/type tile) never shows a "label:" prefix. */
  table.mobile-cards .mobile-lead[data-label]::before {
    content: none !important;
  }
  /* Inner desktop wrappers (the `width100 floatLeft` <a>/<div> inside many cells) must not float or
     span the full row in card mode, or the title words would stack and meta would mis-wrap. */
  table.mobile-cards > tbody > tr > td a,
  table.mobile-cards > tbody > tr > td > div {
    float: none !important;
    width: auto !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: 1.4;
    /* some desktop cells center their value (e.g. the Test/Certifikát check icon via `.center`); in a
       card the value must sit right after its label, left-aligned. */
    text-align: left !important;
  }
  /* Role classes the templates (or the JS injector) apply. Title is inline-block so multi-column titles
     (e.g. Users lastname + firstname) sit on one line separated by the markup whitespace. The inner <a>
     (invisibleHyperlink) must inherit the bold weight and size or the title reads like body text. */
  /* Title is hoisted to the very top of the card via order (works no matter where the name column sits
     in the source). The inner <a> renders inline and wrapping so a combined name (Users lastname +
     firstname in one cell) reads as one heading and a long name wraps instead of forcing scroll. */
  table.mobile-cards .mobile-title {
    order: -2;
    font-weight: 700 !important;
    font-size: 16px;
    line-height: 1.3;
  }
  table.mobile-cards .mobile-title a,
  table.mobile-cards .mobile-title .mobile-only-inline {
    display: inline;
    font-weight: 700 !important;
    font-size: 16px;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    overflow-wrap: anywhere;
  }
  /* Subtitle sits right under the title, above the label:value meta rows. */
  table.mobile-cards .mobile-subtitle {
    order: -1;
  }
  /* Shown only inside a card (e.g. the firstname appended into the lastname title cell on mobile). */
  table.mobile-cards .mobile-only-inline {
    display: inline;
  }
  table.mobile-cards .mobile-title[data-label]::before,
  table.mobile-cards .mobile-subtitle[data-label]::before {
    content: none;
  }
  table.mobile-cards .mobile-subtitle {
    opacity: 0.6;
    font-size: 13px;
  }
  table.mobile-cards .mobile-hidden {
    display: none !important;
  }
  /* Leading slot (checkbox|icon) pinned top-left of the card — a subtle tinted rounded square so the icon
     reads as an avatar/affordance (works on both light and dark themes via the translucent tint). */
  table.mobile-cards .mobile-lead {
    position: absolute;
    top: 12px;
    left: 12px;
    width: 40px;
    height: 40px;
    margin: 0 !important;
    padding: 0 !important;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(127, 127, 127, 0.1);
    border-radius: 9px;
  }
  /* A checkbox lead needs no tile background — keep just the control. */
  table.mobile-cards .mobile-lead-input {
    background: transparent;
  }
  table.mobile-cards .mobile-lead i {
    font-size: 18px;
  }
  /* R-01: when a row has a selection checkbox AND an icon, the checkbox wins the leading slot. */
  table.mobile-cards > tbody > tr:has(.mobile-lead-input) .mobile-lead-ico {
    display: none;
  }
  /* 3-dot dropdown. The kebab trigger sits absolute top-right of the card; the action <ul> is hidden
     until Alpine toggles `.table-menu-open`, then it drops as a panel. Each <li> becomes a full-width
     icon+text row. */
  table.mobile-cards .table-menu-kebab {
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 6px;
    right: 6px;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
    z-index: 2;
  }
  table.mobile-cards .table-menu-kebab i {
    font-size: 18px;
    opacity: 0.6;
  }
  table.mobile-cards .table-menu {
    display: none;
    position: absolute;
    top: 42px;
    right: 6px;
    z-index: 5;
    min-width: 180px;
    /* never let an open dropdown near the right edge push the page into horizontal scroll */
    max-width: calc(100vw - 24px);
    height: auto;
    margin: 0;
    padding: 0;
    background: inherit;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
  }
  table.mobile-cards .table-menu.table-menu-open {
    display: block;
  }
  table.mobile-cards .table-menu > li {
    display: flex !important;
    align-items: center;
    gap: 10px;
    width: 100% !important;
    min-width: 0;
    height: auto !important;
    margin: 0;
    padding: 10px 14px;
    float: none;
    text-align: left;
    overflow: hidden;
    box-sizing: border-box;
    /* The per-item box border (theme-colored, used as the icon frame on desktop) would double up
       between stacked rows here — A's bottom + B's top = a 2px line. Keep only a single bottom
       divider; width-only override preserves the theme border-color. */
    border-top: 0;
    border-left: 0;
    border-right: 0;
    border-radius: 0;
  }
  table.mobile-cards .table-menu > li:last-child {
    border-bottom: 0;
  }
  /* The desktop tooltip wrapper is width:100% — inside the dropdown it must shrink to the icon so the
     icon + text label sit on one row and the <li> never outgrows the dropdown panel. */
  table.mobile-cards .table-menu > li .tooltip-block {
    width: auto !important;
    flex: 0 0 auto;
  }
  table.mobile-cards .table-menu > li i {
    width: 16px;
    font-size: 15px;
  }
  table.mobile-cards .table-menu-mobile-label {
    flex: 1 1 auto;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  /* Spacer/empty action items carry no action — drop them from the dropdown. */
  table.mobile-cards .table-menu > li.empty {
    display: none;
  }
  table.mobile-cards .table-menu-mobile-label {
    display: inline;
  }
  /* Loader and "no records" rows use :colspan in table mode; in card mode show them as a full-width
     centered block instead of a stray cell. */
  table.mobile-cards > tbody[id$="-loader"] > tr > td,
  table.mobile-cards > tbody[id$="-no-records"] > tr > td {
    display: block;
    width: 100% !important;
    padding: 16px !important;
    text-align: center;
  }
}
/**
  Tabs in form.
 */
.form-caption {
  min-height: 30px;
  line-height: 30px;
  font-size: 26px;
  float: left;
  padding: 0 15px 0 15px;
  margin: 20px 0 20px 0;
}
.tab-ul {
  margin: 0;
  padding: 0;
  float: left;
  width: 100%;
  box-sizing: border-box;
  height: 44px;
}
.tab-ul li {
  outline-width: 0;
  list-style: none;
  float: left;
  position: relative;
  margin: 3px 0 0 2px;
  padding: 0;
  white-space: nowrap;
  cursor: pointer;
  line-height: 41px;
  padding: 0 15px 0 15px;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
}
.tab-child {
  width: 100%;
  float: left;
  padding: 15px;
  box-sizing: border-box;
}
/**
  Ico in list
 */
.folderIco {
  height: 18px;
  float: left;
  font-size: 18px;
  line-height: 22px;
}
/**
  Arrow in path in Library or OS
 */
.libPathArrow {
  line-height: 22px;
  padding: 0 10px 0 10px;
  float: left;
  display: inline;
}
/**
  Gridstack in admin
 */
.dashboard-grid-item .grid-stack-item-content {
  text-align: center;
  cursor: pointer;
}
.dashboard-grid-item .grid-stack-item-content {
  line-height: 50px;
}
.dashboard-grid-item[gs-h="2"] .grid-stack-item-content {
  line-height: 110px;
}
.dashboard-grid-item[gs-h="3"] .grid-stack-item-content {
  line-height: 170px;
}
.dashboard-grid-item[gs-h="4"] .grid-stack-item-content {
  line-height: 230px;
}
/**
  Styles for block with organizational structure
 */
.organizational-structure-pick-user-list {
  border-radius: 4px;
  max-height: 150px;
  overflow-y: auto;
  box-sizing: border-box;
  padding: 0;
}
.organizational-structure-pick-user-list-table {
  margin: 0;
  padding: 0;
  border-spacing: 0;
  border-collapse: collapse;
}
.organizational-structure-pick-user-list-table tr td {
  border-spacing: 0;
  border-collapse: collapse;
  padding: 9px 7px;
  font-size: 14px;
}
.organizational-structure-pick-user-list-table td:nth-child(2) {
  width: 10px;
  text-align: right;
}
.organizational-structure-ico {
  height: 20px;
  font-size: 20px;
  line-height: 22px;
  float: left;
  margin-top: 1px !important;
  margin-right: 10px;
}
.organizational-structure-table-selected {
  table-layout: fixed;
  border-collapse: collapse;
  border-spacing: 0;
}
.organizational-structure-table-selected > tbody > tr > td {
  vertical-align: top;
  width: 33%;
  border: 0;
  border-style: solid;
}
.organizational-structure-table-selected > tbody > tr > td {
  border-right-width: 1px;
}
.organizational-structure-table-selected > tbody > tr > td:last-child {
  border: 0 !important;
}
.overflow-y-auto {
  overflow-y: auto;
}
.overflow-x-auto {
  overflow-x: auto;
}
.overflow-y-hidden {
  overflow-y: hidden;
}
.overflow-x-hidden {
  overflow-x: hidden;
}
.overflow-hidden {
  overflow: hidden;
  white-space: nowrap;
}
/* Button for open/hide filter in list with users and courses */
.toggle-filter-list,
#toggle-filter-list {
  box-sizing: border-box;
  line-height: 36px;
  width: 36px;
  height: 36px;
  margin-left: 12px;
  text-align: center;
  font-size: 24px;
  border-radius: 4px;
  transition: all 0.2s linear !important;
}
/* Table for filters in user's and course's list */
.filter-table {
  table-layout: fixed;
  width: 100%;
  box-sizing: border-box;
  border-spacing: 0;
  border-collapse: collapse;
}
.filter-table > tbody > tr > td,
.filter-table > tbody > tr > th {
  text-align: left;
  border-spacing: 0;
  font-weight: normal;
  line-height: 40px;
}
.filter-table > tbody > tr > th {
  width: 150px;
}
.filter-table > tbody > tr > td:last-child {
  width: 230px;
}
.filter-table table.filter-table-items {
  table-layout: fixed;
  width: 100%;
  box-sizing: border-box;
  line-height: 36px;
  border-spacing: 0;
  border-radius: 4px;
}
.filter-table table.filter-table-items td {
  border-spacing: 0;
  cursor: pointer;
  border-right-width: 0 !important;
  text-align: center;
}
.filter-table table.filter-table-items td:first-child {
  border-bottom-left-radius: 4px;
  border-top-left-radius: 4px;
}
.filter-table table.filter-table-items td:last-child {
  border-bottom-right-radius: 4px;
  border-top-right-radius: 4px;
  border-right-width: 1px !important;
}
.filter-table table.filter-table-items td[data-filter-type="lastname"]:first-child {
  width: 50px;
}
.invisibleHyperlink:hover,
.invisibleHyperlink:focus {
  text-decoration: none;
}
.course-score-stars {
  font-size: 20px;
}
/* date picker styles */
.ui-datepicker {
  -webkit-box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.2);
  -moz-box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.2);
  box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.2);
  width: 280px !important;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
  background: none;
  cursor: pointer;
}
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span {
  background: none;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
  line-height: 1.8em;
}
.ui-datepicker .ui-datepicker-prev:before {
  font-family: "Font Awesome 5 Pro";
  content: "\f33a";
  font-weight: 400;
  font-size: 18px;
}
.ui-datepicker .ui-datepicker-next:before {
  font-family: "Font Awesome 5 Pro";
  content: "\f33b";
  font-weight: 400;
  font-size: 18px;
}
/** Iframe with certificate in course form. */
#certificate-iframe {
  border: 0;
  height: 1250px;
}
/** Iframe with DIS. */
#dis-form-iframe {
  border: 0;
  height: 400px;
  min-height: 400px !important;
}
/** Iframe with GDPR text bottom and top. */
#gdpr-top-text-iframe {
  border: 0;
  height: 275px;
  min-height: 275px !important;
}
#gdpr-bottom-text-iframe {
  border: 0;
  height: 275px;
  min-height: 275px !important;
}
.catalog-list-type,
.my-courses-list-type {
  height: 36px;
  line-height: 34px;
  border-radius: 4px;
  width: 36px;
  text-align: center;
  margin: auto 0 auto 10px;
  display: inline-block;
  box-sizing: border-box;
  position: relative;
  cursor: pointer;
  outline: none;
  vertical-align: middle;
}
/* dlaždice s kurzy u uživatele */
/* pomocný div pod kterým bude tabulka */
.tileOverlay {
  background: rgba(0, 0, 0, 0.2);
  height: 218px;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 1;
  text-align: center;
  transition: visibility 0s, opacity 0.3s linear;
  opacity: 0;
  cursor: pointer;
}
.userCourseTilesDiv .tileOverlay:hover {
  opacity: 1;
}
.tileOverlay .playButton {
  width: 185px;
  margin: 55px auto 0 auto;
  line-height: 40px;
  height: 40px;
  font-size: 14px;
}
.userCourseTilesDiv {
  margin: 0 0 15px 0;
  min-width: 280px;
  height: 280px;
  position: relative;
  float: left;
}
.userCourseTilesDiv div.caption {
  max-height: 72px;
  height: 72px;
  margin-top: 6px;
  padding: 0 10px 0 10px;
  display: flex;
  align-items: center;
  align-content: center;
}
.userCourseTilesDiv div.caption-child {
  line-height: 24px;
  font-size: 16px;
  max-height: 72px;
  font-weight: bold;
  width: 100%;
  /*max-width:280px;*/
  overflow: hidden;
  text-overflow: ellipsis;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  display: -webkit-box;
  -webkit-box-orient: vertical;
}
.userCourseBottomTable {
  float: left;
  width: 200px;
  margin: 10px 0 10px 10px;
}
.userCourseBottomTable th {
  font-weight: normal;
  color: #888;
}
.userCourseBottomTable th,
.userCourseBottomTable td {
  vertical-align: top;
}
.userCourseInfoButton {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  color: #FFF;
  float: right;
  line-height: 42px;
  padding: 0;
  margin: 10px 10px 0 0;
  text-align: center;
  font-size: 18px;
  transition: 0.2s linear all;
}
.userCourseInfoButtonDashboard {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  line-height: 28px;
  padding: 0;
  margin: 2px auto 0 0;
  text-align: center;
  font-size: 13px;
  transition: 0.2s linear all;
  float: right;
}
.userCourseInfoButton:hover,
.userCourseInfoButton:focus,
.userCourseInfoButtonLines:hover,
.userCourseInfoButtonLines:focus {
  cursor: pointer;
}
.userCourseInfoButton:focus,
.userCourseInfoButtonLines:focus {
  outline: none;
}
.userCourseInfoButtonLines {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  color: #FFF;
  line-height: 32px;
  padding: 0;
  margin: 1px auto 0 0;
  text-align: center;
  font-size: 15px;
  transition: 0.2s linear all;
}
.courseImgPreview {
  width: 280px;
  text-align: center;
  height: 130px;
  justify-content: center;
  padding: 0;
  display: table;
  margin: 0 auto;
}
.courseImgPreview div {
  vertical-align: middle;
  display: table-cell;
}
.courseImgPreview img {
  margin: auto;
  display: inline-block;
  vertical-align: middle;
  float: none;
}
.courseImgPreview i.coursePreview,
.courseIcoPreview i.coursePreview {
  font-size: 7em;
  line-height: 110px;
  color: #E6E6E6;
}
div.lectionsList {
  z-index: 10;
  overflow: hidden;
  position: relative;
}
div.lectionsList:before {
  font-family: 'Font Awesome 5 Pro';
  left: -45px;
  position: absolute;
  bottom: -45px;
  font-size: 200px;
  z-index: -1;
  display: block;
  color: rgba(0, 0, 0, 0.1);
  font-weight: 300;
  content: "\f05a";
}
table.lectionsList {
  border-collapse: collapse;
}
table.lectionsList th,
table.lectionsList td {
  padding: 5px 0;
  line-height: 18px;
}
.userCourseTableList,
.userSurveyTableList,
.userKPITableList,
.userTrainingEventsTableList {
  border-collapse: separate;
  border-spacing: 0 12px;
}
.userCourseTableList td,
.userSurveyTableList td,
.userKPITableList td,
.userTrainingEventsTableList td {
  line-height: 20px;
  vertical-align: middle;
}
/** course player menu */
.course-lessons-main-ul {
  margin: 10px 0;
}
.course-lessons-main-ul ul {
  margin: 0;
}
.course-lessons-main-ul,
.course-lessons-main-ul ul {
  padding: 0;
  width: 100%;
  box-sizing: border-box;
  list-style-type: none;
  line-height: 20px;
}
#study-reports-tasks-table table.task > tbody > tr > td {
  padding: 13px;
}
#study-reports-tasks-table tr td {
  vertical-align: top;
}
/** Icons in help modal CB,TB and DIS */
.cbHelpButton {
  width: 40px;
  height: 40px;
  line-height: 17px;
  text-align: center;
  margin-bottom: 6px;
  float: left;
  box-sizing: border-box;
  padding: 11px 0 0 0;
  border: 1px solid;
}
.cbHelpButton i {
  font-size: 17px;
}
.fc-toolbar h2 {
  font-size: 14px;
  font-weight: normal;
}
.fc-icsButton-button.fc-state-default:hover {
  background-image: none !important;
}
/* FullCalendar v6 overrides. The lib injects its own stylesheet into <head> at
   runtime (after these static <link>s), so plain `.fc-*` rules lose the cascade.
   Scope under `.fc` to raise specificity above the lib defaults. These rules are
   theme-independent (layout / weight / decoration); colors live in the *-color.php
   theme files. */
.fc .fc-toolbar-title {
  font-size: 14px;
  /* v3 title was bold with a small left inset; cs locale yields a lowercase month
     ("květen 2026") so capitalize the first letter back to "Květen 2026". */
  font-weight: bold;
  text-transform: capitalize;
  padding-left: 10px;
}
/* v6 leaves a large 1.5em gap below the toolbar; v3 sat the grid right under it.
   FC's own `.fc .fc-toolbar` rule has equal specificity and is injected later, so
   !important is needed to win the cascade. */
.fc .fc-header-toolbar.fc-toolbar {
  margin-bottom: 0px !important;
}
/* v6 default button border is dark navy (#2C3E50); v3 used a light gray outline. */
.fc .fc-button {
  border: none;
  border-radius: 0;
  height: 42px;
  width: 40px;
}
.fc .fc-button:focus {
  box-shadow: none !important;
}
/* The prev/next/today buttons carry v6's own `.fc-icon` span (fcicons font), which
   is CSP-blocked (data: font) and renders as an empty "tofu" box. We inject FA icons
   instead, so hide v6's span — on navigation FC re-adds it next to our injected <i>. */
.fc .fc-icon {
  display: none;
}
/* Day-of-week header + day-number are <a> elements in v6 and would inherit the
   themed link color — strip the link look so they read like plain labels. */
.fc .fc-col-header-cell-cushion,
.fc .fc-daygrid-day-number {
  text-decoration: none;
  font-weight: normal;
}
/* v3 placed the day number top-RIGHT of the cell — keep v6's row-reverse so the
   number sits on the right, with a small inset so it isn't glued to the cell edge
   (noticeable in the rightmost column). */
.fc .fc-daygrid-day-top {
  flex-direction: row-reverse;
  padding-right: 4px;
}
/* v3 showed the event icon top-LEFT, on the same row as the number (number right,
   icon left) — not stacked below it. The event area normally flows under the
   day-top; pull it into the top-left corner so the icon shares the number's row. */
.fc .fc-daygrid-day-events {
  position: absolute !important;
  top: 12px;
  left: 4px;
  right: auto;
  width: auto;
  margin: 0 !important;
  min-height: 0 !important;
}
/* No "today" background highlight (matches the v3 look). */
.fc .fc-day-today {
  background-color: transparent !important;
}
/* v3 showed calendar events as a bare colored icon, not v6's filled event bar.
   Strip the block-event background/border so only the injected icon shows; its
   color comes from the *-text class on the <i> (green-text / red-text / …). */
.fc .fc-daygrid-event,
.fc .fc-daygrid-event:hover {
  background: transparent;
  border: none;
  box-shadow: none;
}
.fc .fc-daygrid-event .fc-event-main {
  color: inherit;
}
.fc-icsButton-button.fc-button-primary:hover {
  background-image: none !important;
}
.adminDashboard3block {
  width: calc(33%);
  box-sizing: border-box;
}
.adminDashboard2block {
  width: calc(50% - 7px);
  box-sizing: border-box;
}
.displayFlex {
  display: flex;
}
.flexJustifyBetween {
  justify-content: space-between;
}
/* AdminDashboard top blocks — doughnut chart + legend (replaces the former 3-circle layout). */
.adminDashboardDonut {
  clear: both;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  /* Centre content per line. While the doughnut + legend sit side by side the legend's auto margins
     absorb the free space (overriding justify-content), so the doughnut stays at the start (heading-
     aligned). Once the legend wraps onto its own line the doughnut is alone on its line with no auto
     margin, so justify-content centres it. */
  justify-content: center;
  /* row-gap only — adds vertical space above the legend once it wraps under the doughnut; no column-gap
     so the legend's auto margins control the horizontal spacing. */
  gap: 15px 0;
  /* aligns the doughnut's left edge with the block heading (block padding, no negative margin). */
  margin-top: 15px;
}
.adminDashboardDonutChartWrap {
  position: relative;
  width: 100px;
  height: 100px;
  flex: 0 0 auto;
}
.adminDashboardDonutChartWrap canvas {
  display: block;
  max-width: 100%;
}
.adminDashboardDonutCenter {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  font-weight: normal;
  pointer-events: none;
}
.adminDashboardLegend {
  /* shrink to content and let the auto margins centre the legend in the space beside the doughnut
     (and centre it on its own line once it wraps below). */
  flex: 0 1 auto;
  min-width: 0;
  margin: 0 auto;
  padding: 0;
  list-style: none;
}
.adminDashboardLegend li {
  display: flex;
  align-items: center;
  margin-bottom: 12px;
  line-height: 28px;
  white-space: nowrap;
}
.adminDashboardLegend li:last-child {
  margin-bottom: 0;
}
.adminDashboardLegendBadge {
  display: inline-block;
  box-sizing: border-box;
  flex: 0 0 auto;
  min-width: 28px;
  height: 28px;
  margin-right: 8px;
  padding: 0 7px;
  border-radius: 14px;
  line-height: 28px;
  text-align: center;
  font-weight: bold;
  color: #fff;
}
.adminDashboardLegendBadge.green {
  background-color: #58b50d;
}
.adminDashboardLegendBadge.yellow {
  background-color: #f2d94c;
}
.adminDashboardLegendBadge.red {
  background-color: #dd0000;
}
/* Below the app-wide 768px responsive breakpoint stack the dashboard top blocks vertically so the
   doughnut + legend of each block get the full row width (avoids the cramped 3-up row and the
   clipped last block). Matches the hamburger/minWidth1000p breakpoint used elsewhere. */
@media (max-width: 768px) {
  #admin-dashboard-top {
    flex-wrap: wrap;
  }
  #admin-dashboard-top .adminDashboard2block,
  #admin-dashboard-top .adminDashboard3block {
    width: 100%;
    /* !important is required to override the inline `.marginRight15 { ... !important }` utility on
       the non-last blocks. Without it those blocks keep their 15px right margin and stop short of
       the right edge, while the last (margin-less) block reaches it — the uneven right alignment. */
    margin-right: 0 !important;
    margin-bottom: 15px;
  }
  /* The last block in each row drops its bottom margin so it does not stack on top of the next
     row's `marginTop15`, which otherwise doubled the vertical gap between the donut row and the
     chart/news row below it (30px instead of the uniform 15px between stacked blocks). */
  #admin-dashboard-top .adminDashboard2block:last-child,
  #admin-dashboard-top .adminDashboard3block:last-child {
    margin-bottom: 0;
  }
  /* ...except the page's final block (news, in the SECOND #admin-dashboard-top row — the one
     preceded by another #admin-dashboard-top): it has no row below to supply a `marginTop15` gap,
     so it keeps a bottom margin and is not glued to the viewport bottom. The higher-specificity
     sibling selector re-adds it only to that block; the donut row's last block stays at 0. */
  #admin-dashboard-top ~ #admin-dashboard-top .adminDashboard2block:last-child,
  #admin-dashboard-top ~ #admin-dashboard-top .adminDashboard3block:last-child {
    margin-bottom: 15px;
  }
  /* The quick-link buttons (floated) wrap onto several rows on narrow viewports; without a bottom
     margin the wrapped rows are vertically glued together. Add a 10px gap — scoped to this media
     query AND to #admin-dashboard-quicklinks so the desktop single-row layout (min-width:1000px keeps
     the buttons on one line) and the `.addButton`/`.icoButton` used elsewhere are unaffected. */
  #admin-dashboard-quicklinks .addButton,
  #admin-dashboard-quicklinks .icoButton {
    margin-bottom: 10px;
  }
}
.flexColumn {
  flex-direction: column;
}
.flexColumn > div {
  flex: 1;
  display: flex;
  align-items: center;
  width: 100%;
  justify-content: space-between;
}
.flexColumn > div:not(:first-child) {
  margin-top: 10px;
}
.flexDirectionRow {
  flex-direction: row;
}
.flexDirectionColumn {
  flex-direction: column;
}
/**
 * Line with superadmin nickname and disable user's interface
 */
div#sa-wrapper {
  min-width: 100%;
  margin: 0;
  padding: 0 15px 0 15px;
  box-sizing: border-box;
  float: left;
  height: 50px;
  line-height: 50px;
  text-align: center;
  color: #333;
  background-color: #AAA;
  border-bottom: 1px solid #888;
  z-index: 100;
}
.preview-player-iframe {
  border: none;
}
.preview-player-td-menu {
  border-right: 1px solid #999;
}
/**
styles for div with full size in TD
 */
.fullTdSize {
  position: relative;
}
.fullTdSize > div {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
}
/**
 * Hidden certificate tab for reload.
 */
.hiddenCertificateTab {
  left: -500px;
  top: -500px;
  height: 0;
  position: absolute;
  width: 0;
  padding: 0 !important;
}
.removeIcon {
  font-size: 18px;
  padding: 2px 5px 3px 5px;
  color: #FFF;
  background-color: #DD0000;
  margin-right: 8px;
}
.wordBreak {
  word-break: break-word;
}
.admin-list-filter-1-rows {
  height: 60px;
}
.admin-list-filter-2-rows {
  height: 100px;
}
.admin-list-filter-4-rows {
  height: 190px;
}
.admin-list-filter-1-rows,
.admin-list-filter-2-rows,
.admin-list-filter-4-rows {
  transition: all 2s;
  opacity: 1;
  transform: translateY(0);
  margin: initial;
  overflow: hidden;
  transition: opacity 0.3s, transform 0.3s, height 0.3s;
}
.admin-list-filter-hidden {
  opacity: 0;
  transform: translateY(-50px);
  pointer-events: none;
  height: 0 !important;
  transition: opacity 0.3s, transform 0.3s, height 0.3s;
}
