* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
	height: 100%;
	width: 100%;
	
	font-family: Helvetica,Arial,sans-serif;
    font-size: 14px;
    letter-spacing: 1px;
	line-height: 20px;
    
    color: #444;
    box-sizing: border-box;
}

body {
	height: 100%;
	background-color: #eee;
}

/* thin, quiet scrollbars - Chrome/Edge 121+, Firefox; older WebKit (Safari) below */
* {
    scrollbar-width: thin;
    scrollbar-color: #c8c8c8 transparent;
}
@supports not (scrollbar-width: thin) {
    ::-webkit-scrollbar { width: 8px; height: 8px; }
    ::-webkit-scrollbar-track { background: transparent; }
    ::-webkit-scrollbar-thumb { background: #c8c8c8; border-radius: 4px; }
    ::-webkit-scrollbar-thumb:hover { background: #aaa; }
}

h1 {
	font-size: 30px;
}
h2 {
    font-size: 18px;
}
h3 {
    font-size: 16px;
}
h4 {
}
h5 {
}
h6 {
}

/*****************************************************/

a {
    text-decoration: none;
    color: #17f;
}
a:hover {
	color: #59f;
}

a.white {
    color: #fff;
}
a.white:hover {
    color: #ccf;
}
a.gray {
    color: #aaa;
}
a.gray:hover {
    color: #59f;
}


.fr {
	float: right;
}

.ib {
    display: inline-block;
    vertical-align: top;
}

.t-center {
	text-align: center;
}

.t-right {
	text-align: right;
}

.txt-s {
    font-size: 13px;
    line-height: 15px;
}

.hide {
    display: none !important;
}

div.ib {
	display: inline-block;
	vertical-align: top;
}

#toast {
    position: fixed;
    top: 60%; width: 100%;
    text-align: center;
    z-index: 9999;
}
#toast b {
    background-color: rgba(0,0,0,0.6);
    border-radius: 5px;
    padding: 10px 20px;
    font-size: 14px;
    color: #fff;
}
#toast b.e {
    background-color: rgba(200,0,0,0.6);
}
/********************************* Header */

header {
	position: relative;
	
	padding: 50px 0;

    text-align: center;
}

header a.bot-logo img {
	width: 80%;
}

/********************************* Footer */

footer {
	padding: 20px;
	min-height: 100px;
    text-align: center;
    background-color: #333;
}

footer a {
    margin: 0 20px;
}



/********************************* Section */

section {
	padding: 10px;
}
section.min-600 {
    min-height: 760px;
}
ul {
    margin-left: 10px;
}

section h2 {
	margin-top: 0;
}

hr {
	border: 0 none;
	border-bottom: 1px solid #ccc;
	
	margin: 10px 0;
}

/* VFA *************************************************************************************/

body.uic-vfa a {
    color: #cc0000;
}
body.uic-vfa a:hover {
    color: #ee0000;
}
body.uic-vfa a.white {
    color: #fff;
}
body.uic-vfa a.white:hover {
    color: #fdd;
}
body.uic-vfa a.gray {
    color: #aaa;
}
body.uic-vfa a.gray:hover {
    color: #cc0000;
}



/** Mobile ********************************************************************************/

@media (max-width: 800px) {

html {
    letter-spacing: 0.5px;
}

section {
	padding: 5px;
}


}



/******************************** Menu Title */

.menu-title {
    padding: 10px 10px;         /* 10 + 25 + 10 = 45px inside - the tab line sits on the bottom edge */
    font-size: 16px;            /* = the title items - a bigger font here moved their baseline (bar 1-2px higher) */
    font-weight: bold;
    background: #fff;
    border-bottom: 1px solid #d4d4d4;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
    line-height: 25px;

    /* stays visible while <main> scrolls - below dialogs (200) and menus (300) */
    position: sticky;
    top: 0;
    z-index: 100;
}

/* one title size on every page (list and detail pages) - long app / shop / device names fit next to the buttons */
.menu-title > span,
.menu-title > a {
    padding: 0 10px;
    font-size: 16px;
}
.menu-title > span {
    cursor: default;
}


/* header buttons (right): centred on the title line whatever their size, 8px apart */
.menu-title .menu-right {
    display: flex;
    align-items: center;
    gap: 8px;
    height: 25px;               /* = the title line */
}
/* all header buttons small (like button.s) - the title stays the strongest element; set here, not per page */
.menu-title .menu-right button {
    font-size: 13px;
    padding: 5px 10px;
}

/* page title as tabs - on every page; a single title is one tab (cur = "you are here")
 * siblings (App | App Data, Users | User logs | System logs ..):
 *   <span class="mt-tab cur">Campaign Planner</span><a class="mt-tab" href="/aris/planner_devices">Devices</a>
 * current: dark + a blue line at the bottom edge of the bar (bar padding 10px); others grey links.
 * parent > child (device page, app sub-pages): <a class="mt-tab">App</a><span class="mt-sep">&rsaquo;</span><span class="mt-tab cur">Device</span> */
/* top-aligned, not on the baseline: mixed sizes (the 13px note) made the line box taller than 25px */
.menu-title > .mt-tab,
.menu-title > .mt-sep,
.menu-title > .mt-note {
    vertical-align: top;
}
/* a small button in the title line (app page: Simulator) is ~27px - kept inside the 25px line, or the bar grows */
.menu-title > button {
    vertical-align: top;
    margin-top: -1px;
    margin-bottom: -1px;
}
.menu-title > .mt-tab {
    display: inline-block;      /* 25px high (line-height) - the line below sits exactly on the bar's edge */
    position: relative;
    color: #888;
    text-decoration: none;
}
.menu-title > a.mt-tab:hover {
    color: #17f;
}
.menu-title > .mt-tab.cur {
    color: #222;
}
.menu-title > .mt-tab.cur::after {
    content: '';
    position: absolute;
    left: 10px;
    right: 10px;
    bottom: -10px;              /* = the bar's padding */
    height: 3px;
    border-radius: 3px 3px 0 0;
    background: #17f;
}
.menu-title > .mt-sep {
    color: #bbb;
    font-weight: normal;
    padding: 0 2px;
}
.menu-title > .mt-note {         /* e.g. device page: Shop: <a>name</a> */
    font-size: 13px;
    font-weight: normal;
    color: #888;
}
.menu-title > .mt-note a { font-weight: bold; }



/******************************** Dialog */
div.dialog-bg,
div.dialog-bg-noclick {
	display: block;
	
	position: fixed;
	background-color: rgba(0,0,0,0.5);
	text-align: center;
	
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;

	z-index: 200;
}

div.dialog {
	display: inline-block;
	position: relative;		/* the × sits on its top-right corner */
	text-align: left;

	margin-top: 6vh;
	max-width: 90vw;				/* 5vw left + right - border-box (* above): the padding is inside */
	max-height: 88vh;				/* 6vh above + below - a dialog that should scroll inside sets overflow-y: auto
									   on the page (e.g. App Edit) */
	padding: 20px;
	background-color: #eee;

	border-radius: 10px;
}



div.dialog h3 {
    line-height: 30px;
}

/* × close - added to every div.dialog-bg by Base.load: outside the dialog's top-right corner, on the
   backdrop, so the header Save keeps the dialog edge; acts like a click outside (the page's guards run) */
.dialog-x {
    position: absolute;
    top: -30px;
    right: -30px;
    width: 28px;
    height: 28px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: #222;
    font-size: 0;           /* the &times; text is hidden - drawn as 2 lines below, exactly centered in every browser
                               (the glyph sat lower in Firefox than in Chrome) */
    cursor: pointer;
}
.dialog-x::before,
.dialog-x::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    width: 18px;
    height: 2px;
    border-radius: 1px;
    background: currentColor;
    transform: translate(-50%, -50%) rotate(45deg);
}
.dialog-x::after {
    transform: translate(-50%, -50%) rotate(-45deg);
}
.dialog-x:hover {
    background: rgba(255,255,255,.35);
    color: #000;
}
/* dialog as wide as the screen (phone): above its corner instead of beside it */
@media (max-width: 700px) {
    .dialog-x { right: 0; }
}

div.dialog input[name='key'],
div.dialog input[name='key2'] {
	font-weight: bold;
	letter-spacing: 2px;
}

div.dialog-load {
    display: inline-block;

    margin-top: 100px;
    width: 100px;
    height: 140px;
    color: #fff;
}


/* Loading *********************************************/

.load {
    background-position: center center;
    background-repeat: no-repeat;
    background-size: 80% 80%;
    background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32" fill="%230a78ff"><path opacity=".5" d="M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"/><path d="M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z"><animateTransform attributeName="transform" type="rotate" from="0 16 16" to="360 16 16" dur="0.8s" repeatCount="indefinite" /></path></svg>');
}

.load.over {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.5);
}

/* Aris div data ***********************************/

div.div-data {
    background-color: #fff;
    border: 3px solid #eee;
    margin-bottom: 10px;
    display: flex;
    border-radius: 10px;
}
div.div-data .left {
    padding: 10px;
    flex: 2;
}
div.div-data .right {
    flex: 1;
}

div.div-data label {
	width: 140px;
	display: inline-block;
	color: #888;
}

div.div-data input[readonly] {
    font-weight: bold;
    letter-spacing: 2px;
}

div.div-data .d-filter {
    margin-top: 20px;
}

/*********************************************** filter panel */




/******************************************************** table at-list */

table.at-list {
    width: 100%;
    border-radius: 10px;
    overflow: hidden;
    border-collapse: collapse;
}

table.at-list th,
table.at-list td {
    text-align: left;
    padding: 10px 10px;
    cursor: default;
}

table.at-list th {
    background-color: #cdf;
    text-transform: uppercase;
    font-size: 11px;
}
table.at-list th:hover {
    color: #17f;
}
table.at-list td {
    background-color: #fff;
}
table.at-list tr:nth-child(odd) td {
    background-color: #f6f6ff;
}

table.at-list .w1 {
    width: 1%;
    font-size: 80%;
    color: #aaa;
}
table.at-list .w2 {
    width: 2%;
}
table.at-list .w3 {
    width: 3%;
}
table.at-list .w4 {
    width: 4%;
}
table.at-list .w5 {
    width: 5%;
}
table.at-list .w7 {
    width: 7%;
}
table.at-list .w10 {
    width: 10%;
}
table.at-list .w15 {
    width: 15%;
}
table.at-list .w20 {
    width: 20%;
}
table.at-list .w25 {
    width: 25%;
}



/********************************************** Last connection */

b.con {
    display: inline-block;
    vertical-align: middle;
    width: 12px;
    height: 12px;
    border-radius: 20px;
    font-size: 0;
}
b.con.red {
    background-color: #c00;
}
b.con.orange {
    background-color: #fc0;
}
b.con.green {
    background-color: #0c0;
}
b.con.false {
    background-color: #c00;
}
b.con.true {
    background-color: #0c0;
}

/*
b.con.uninst {
    background-color: #666;
}
*/

/*
.ar-list .item span b.con {
    float: right;
}
*/

/* Charts *************************************************************/

div.click-charts {
    background-color: #fff;
    padding: 10px;
    margin-bottom: 10px;
    position: relative;
    border-radius: 10px;
}

div.click-charts .clicks {
    display: inline-block;
    vertical-align: top;
    width: 50%;
    height: 200px;
    text-align: center;
}

div.click-charts .load {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0; left: 0;
    background-size: 20% 20%;
    background-color: rgba(255,255,255,0.8);
}


/* Custom range */

#bc-cust-range {
    position: absolute;
    top: 35px;
    right: 0;
    background-color: #fff;
    z-index: 2;
    box-shadow: 0 0 5px #000;
    border-radius: 5px;
}

#bc-cust-range input {
    width: 50px;
    margin: 0;
    padding: 5px 5px;
    font-size: 12px;
}
#bc-cust-range input#bc-cust-1,
#bc-cust-range input#bc-cust-4 {
    width: 60px;
}


/** UI User **************************************************/

body.uiu-adm b.con.hide {
    display: inline-block !important;
}




/** Mobile ********************************************************************************/

@media (max-width: 800px) {


}


/********************************* ARIS */

header.aris {
	padding: 20px;
	background-image: none;
	background-color: #203864;

    display: flex;
}

header.aris div.logo {
}

header.aris h1 {
	font-size: 30px;
	font-weight: normal;
	margin: 0;
}

header.aris h6 {
	color: rgba(255,255,255,0.6);
	font-size: 11px;
	line-height: 12px;
    letter-spacing: 1.5px;
	margin-top: 5px;
	margin-bottom: 0;
}


header.aris .center {
    flex: 1;
    margin-right: 75px;
}
header.aris .center a {
    font-size: 20px;
    padding: 0 15px;
    position: relative;
    top: 20px;
}

header.aris .account {
	position: absolute;
	top: 0;
	right: 10px;
}
header.aris .account b {
	font-weight: normal;
	margin-right: 10px;
    color: #ccc;
}



/** UI Customer - VFA ************************************************************************************/

body.uic-vfa header {
    background-color: #cc0000;
}



/** Mobile ********************************************************************************/

@media (max-width: 800px) {

header.aris div.logo {
	width: 100%;
}
header.aris h6 {
	display: none;
}


header.aris h2 {
	width: 100%;
}
header.aris h2 a {
	width: 50%;
	margin-top: 15px;
}


}


/******************************** Button */

button, a.b {
    display: inline-block;

    background-color: #17f;
    color: #fff;
    border: 1px solid #17f;

    border-radius: 5px;
    padding: 8px 20px;

    font-size: 14px;
    font-weight: normal;
    line-height: initial;
    letter-spacing: 1px;

    vertical-align: middle;
    cursor: pointer;
}

button.s, a.b.s {
    padding: 5px 10px;
    font-size: 13px;
}

button.xs, a.b.xs {
    padding: 2px 5px;
    font-size: 12px;
    letter-spacing: 0;
}

button.white, a.b.white {
    background-color: #fff;
    color: #17f;
}

button.gray, a.b.gray {
    background-color: #fff;
    color: #aaa;
    border-color: #aaa;
}
button.gray:hover, a.b.gray:hover {
    color: #17f;
    border-color: #17f;
}

button.disabled, a.b.disabled {
    background-color: #fff;
    color: #aaa;
    border-color: #aaa;
}

/* light gray, filled - quiet row actions (combine with xs) */
button.gray2, a.b.gray2 {
    background-color: #f3f3f3;
    color: #888;
    border-color: #ddd;
}
button.gray2:hover, a.b.gray2:hover {
    color: #17f;
    border-color: #17f;
}

button.gray-red, a.b.gray-red {
    background-color: #fff;
    color: #a44;
    border-color: #aaa;
}
button.gray-red:hover, a.b.gray-red:hover {
    color: #a00;
    border-color: #a00;
}

/* Delete / Copy in an Edit dialog: grey icons, quieter than Save next to them.
 * The Delete confirm dialog keeps the worded red button.
 *   <button class='s icon-del' title='Delete'>&#128465;</button>  <button class='s icon-copy' title='Copy'>&#10697;</button> */
button.icon-del, a.b.icon-del,
button.icon-copy, a.b.icon-copy {
    background-color: transparent;
    border-color: #ddd;
    color: #999;
    font-size: 16px;
    line-height: 16px;
    padding: 4px 8px;
}
button.icon-del:hover, a.b.icon-del:hover {
    color: #a00;
    background-color: #fbeaea;
    border-color: #a00;
}
button.icon-copy:hover, a.b.icon-copy:hover {
    color: #17f;
    border-color: #17f;
}

button.red, a.b.red {
    background-color: #a44;
    color: #fff;
    border-color: #a44;
}

button.trans, a.b.trans {
    background: transparent;
    border: none;
}
button.trans:hover, a.b.trans:hover {
    color: #17f;
}

button.close {
    background-color: transparent;
    border: 0 none;
    color: #aaa;
    padding: 0;
    font-size: 40px;
    height: 30px;
    line-height: 30px;
    vertical-align: bottom;
    position: relative;
    top: -3px;
}
button.close:hover {
    color: #17f;
}

/* Button Group *****************************************************************/

span.button-group {
    font-size: 14px;
}
span.button-group.xs {
    font-size: 12px;
}
span.button-group.s {
    font-size: 13px;
}

span.button-group b {
    border-style: solid;
    border-width: 1px;
    border-right-width: 0;
    cursor: default;

    color: #444;
    background-color: #fff;
    border-color: #444;

    font-weight: normal;
    padding: 6px 12px;      /* same top / bottom - text centred vertically */
}
span.button-group b:hover {
    color: #17f;
}

span.button-group b:first-child {
    border-radius: 5px 0 0 5px;
}
span.button-group b:last-child {
    border-radius: 0 5px 5px 0;
    border-right-width: 1px;
}
span.button-group b:first-child:last-child {
    border-radius: 5px;
}

span.button-group.xs b {
    font-weight: normal;
    padding: 3px 6px;
}

span.button-group.s b {
    font-weight: normal;
    padding: 4px 8px;
}

span.button-group b.sel {
    background-color: #17f;
    color: #fff;
}

/* Reload ******************************************/

a.reload {
    font-weight: bold;
    font-size: 20px;
    vertical-align: middle;
    display: inline-block;
}



/******************************** Form input */

input, textarea, select {
	background-color: #fff;
	border: 1px solid #ccc;
	border-radius: 4px;
	/*margin: 5px 0;*/

	padding: 5px 10px;
	font-size: 14px;
	font-family: inherit;
	color: #444;
}

textarea {
	font-size: 13px;
}

input:disabled, textarea:disabled, select:disabled {
	background-color: #ddd;
	color: #888;
}
input[readonly] {
}

input[type='submit'] {
	background-color: #17f;
	color: #fff;
	font-weight: bold;
}


/* Width ******************************************/


.w10 {
    width: 10%;
}
.w20 {
    width: 20%;
}
.w30 {
    width: 30%;
}
.w40 {
    width: 40%;
}
.w50 {
    width: 50%;
}
.w60 {
    width: 60%;
}
.w70 {
    width: 70%;
}
.w80 {
    width: 80%;
}
.w90 {
    width: 90%;
}
.w100 {
    width: 100%;
}


/* Flex ******************************************/

.display-flex {
    display: flex;
}

.flex-70 {
    flex: 0 0 70%;
}
.flex-50 {
    flex: 0 0 50%;
}
.flex-30 {
    flex: 0 0 30%;
}

.flex-1 {
    flex: 1;
}
.flex-2 {
    flex: 2;
}
.flex-3 {
    flex: 3;
}
.flex-4 {
    flex: 4;
}
.flex-5 {
    flex: 5;
}
.flex-6 {
    flex: 6;
}
.flex-7 {
    flex: 7;
}




