Files
matrix/build/WebContent/css/matrix-shell-v2.css

374 lines
8.3 KiB
CSS

.matrix-shell {
min-height: 100vh;
background: var(--matrix-color-surface-muted);
}
.matrix-shell__header {
min-height: 38px;
padding: 0;
color: var(--matrix-color-text);
background: #f8fafc;
border-bottom: 1px solid #9aa8b6;
}
.matrix-shell__header .container-fluid,
.matrix-shell__header-inner {
min-height: 38px;
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: var(--matrix-space-3);
}
.matrix-shell__header-inner {
width: 100%;
padding: 0 14px;
}
.matrix-shell__brand {
display: inline-flex;
align-items: center;
gap: var(--matrix-space-2);
margin: 0;
padding: 0;
color: var(--matrix-color-text);
font-size: 14px;
font-weight: 700;
}
.matrix-shell__brand:hover,
.matrix-shell__brand:focus {
color: var(--matrix-color-text);
}
.matrix-shell__context {
min-width: 0;
display: flex;
justify-content: flex-end;
align-items: center;
gap: var(--matrix-space-3);
overflow: hidden;
white-space: nowrap;
font-size: 12px;
font-weight: 400 !important;
}
.matrix-shell__header .btn-close,
.matrix-shell__close {
display: none !important;
}
.matrix-shell__company,
.matrix-shell__user {
overflow: hidden;
text-overflow: ellipsis;
font-weight: 400 !important;
}
.matrix-shell__navigation {
position: relative;
z-index: 1020;
min-height: 31px;
background: #ffffff;
border-bottom: 1px solid var(--matrix-color-border);
box-shadow: 0 1px 3px rgba(31, 41, 51, 0.08);
width: 100%;
margin-bottom: 14px;
}
.matrix-shell #MenuBar {
display: block !important;
width: 100% !important;
min-height: 30px;
position: relative;
z-index: 2000;
overflow: visible !important;
margin: 0 0 14px !important;
background: #ffffff !important;
border-bottom: 1px solid var(--matrix-color-border);
box-shadow: 0 1px 3px rgba(31, 41, 51, 0.08);
}
.matrix-shell #MenuForm {
display: block;
width: 100%;
margin: 0;
}
/* Semantic pages wrap the generated menu in nav. In that structure the nav
owns the separator, shadow and content gap; applying them to both elements
produced the extra white strip seen on admin pages. */
.matrix-shell .matrix-shell__navigation #MenuBar {
margin-bottom: 0 !important;
border-bottom: 0 !important;
box-shadow: none !important;
}
/* Legacy pages used z-index:-1 to keep content below the old menu. The modern
menu has its own stacking context, so negative content layers only suppress
pointer events and make visible controls appear broken. */
.matrix-shell #formcontainer {
z-index: 1 !important;
}
.matrix-shell .matrix-reporting-workspace {
position: relative !important;
inset: auto !important;
width: calc(100% - 16px) !important;
max-width: 1600px;
margin: 12px auto 24px !important;
}
.matrix-shell .linkbutton,
.matrix-shell [onclick] {
pointer-events: auto;
}
.matrix-shell .linkbutton {
position: relative;
z-index: 2;
cursor: pointer;
}
.matrix-shell ul#master_0,
.matrix-shell ul#master_0 ul {
margin: 0;
padding: 0;
list-style: none;
}
.matrix-shell ul#master_0 ul:empty {
display: none !important;
}
.matrix-shell ul#master_0 {
width: 100% !important;
display: flex;
align-items: stretch;
min-height: 30px;
padding-inline: var(--matrix-space-2);
background: #ffffff;
}
.matrix-shell ul#master_0 li {
position: relative;
}
.matrix-shell ul#master_0 ul > li {
width: 100% !important;
min-width: 0 !important;
display: block !important;
flex: 0 0 auto !important;
float: none !important;
}
.matrix-shell ul#master_0 a {
min-height: 30px;
display: flex;
align-items: center;
padding: 4px 9px;
color: var(--matrix-color-text);
background: #ffffff;
border: 0;
cursor: pointer;
font-size: 12px;
font-weight: 600;
line-height: 1.2;
text-decoration: none;
white-space: nowrap;
}
.matrix-shell ul#master_0 > li > a:hover,
.matrix-shell ul#master_0 > li > a:focus-visible,
.matrix-shell ul#master_0 > li.matrix-menu-open > a {
color: #ffffff;
background: var(--matrix-color-primary);
outline: none;
}
.matrix-shell ul#master_0 ul {
width: 210px !important;
min-width: 210px;
display: none !important;
flex-direction: column !important;
align-items: stretch !important;
flex-wrap: nowrap !important;
position: absolute;
z-index: 2010;
top: 100%;
left: 0;
padding: 3px 0;
background: #ffffff;
border: 1px solid var(--matrix-color-border);
border-radius: 0 0 var(--matrix-radius-sm) var(--matrix-radius-sm);
box-shadow: 0 6px 16px rgba(31, 41, 51, 0.16);
}
.matrix-shell ul#master_0 ul ul {
top: -4px;
left: 100%;
}
.matrix-shell ul#master_0 li:hover > ul,
.matrix-shell ul#master_0 li:focus-within > ul,
.matrix-shell ul#master_0 li.matrix-menu-open > ul {
display: flex !important;
}
.matrix-shell ul#master_0 ul a {
width: 100%;
min-height: 27px;
display: flex !important;
float: none !important;
padding: 4px 10px;
font-weight: 400;
}
.matrix-shell ul#master_0 ul a:hover,
.matrix-shell ul#master_0 ul a:focus-visible {
color: #ffffff;
background: var(--matrix-color-primary);
outline: none;
}
.matrix-shell ul#master_0 li:has(> ul > li) > a::after {
content: "";
width: 0;
height: 0;
margin-left: var(--matrix-space-2);
border: 4px solid transparent;
border-top-color: currentColor;
transform: translateY(2px);
}
.matrix-shell ul#master_0 ul li:has(> ul > li) > a::after {
margin-left: auto;
border-top-color: transparent;
border-left-color: currentColor;
transform: translate(2px, 0);
}
.matrix-shell__content {
padding: var(--matrix-space-4);
}
/* Uniform session identity bar for JSPs that still emit the legacy title
structure. It intentionally matches the semantic header used by home/admin. */
.matrix-shell #PageFrame > .title {
display: flex !important;
min-height: 38px;
align-items: center;
gap: 8px;
padding: 0 12px !important;
color: var(--matrix-color-text) !important;
border: 0 !important;
border-bottom: 1px solid #9aa8b6 !important;
background: #f8fafc !important;
font-size: 12px !important;
font-weight: 600;
line-height: 1.2;
}
.matrix-shell #PageFrame > .title > img.matrix-title-icon {
order: 1;
width: 16px;
height: 16px;
object-fit: contain;
}
.matrix-shell #PageFrame > .title > span {
min-width: 0;
order: 2;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.matrix-shell #PageFrame > .title > .matrix-shell__legacy-title {
display: flex;
flex: 1 1 auto;
align-items: center;
gap: 14px;
}
.matrix-shell__legacy-brand {
flex: 0 0 auto;
font-size: 14px;
font-weight: 700;
}
.matrix-shell__legacy-page {
min-width: 0;
overflow: hidden;
color: var(--matrix-color-text-muted);
text-overflow: ellipsis;
white-space: nowrap;
}
.matrix-shell__legacy-context {
display: flex;
min-width: 0;
align-items: center;
gap: 14px;
margin-left: auto;
font-weight: 400 !important;
white-space: nowrap;
}
.matrix-shell__legacy-company,
.matrix-shell__legacy-user {
overflow: hidden;
text-overflow: ellipsis;
font-weight: 400 !important;
}
.matrix-shell #PageFrame > .title > img#close {
display: none !important;
}
.matrix-shell__welcome {
max-width: 680px;
margin: clamp(32px, 10vh, 96px) auto 0;
padding: 20px;
text-align: center;
background: #ffffff;
border: 1px solid var(--matrix-color-border);
border-radius: var(--matrix-radius-md);
}
.matrix-shell__welcome h1 {
margin: 0 0 var(--matrix-space-2);
font-size: 18px;
}
.matrix-shell__welcome p {
margin: 0;
color: var(--matrix-color-text-muted);
}
@media (max-width: 720px) {
.matrix-shell__header .container-fluid {
grid-template-columns: minmax(0, 1fr) auto;
}
.matrix-shell__context {
grid-column: 1 / -1;
grid-row: 2;
justify-content: flex-start;
padding-bottom: var(--matrix-space-1);
}
.matrix-shell ul#master_0 {
overflow-x: auto;
}
.matrix-shell__legacy-context {
gap: 8px;
}
.matrix-shell__legacy-page,
.matrix-shell__legacy-company {
display: none;
}
}