metis-desk/apps/web/src/global.css

648 lines
13 KiB
CSS
Raw Normal View History

@import "@repo/shadcn-ui/globals.css";
@source "../../../modules";
@source "../../../packages/shadcn-ui/src/components";
body {
margin: 0;
font-family: ui-sans-serif, system-ui, sans-serif;
}
/* Tokens del shell aislados de los colores semánticos de shadcn/ui. */
:root {
--desk-app-background: #000;
--desk-content-background: #f7f9fb;
--desk-sidebar-background: #0e282c;
--desk-sidebar-top: #0c252a;
--desk-sidebar-bottom: #102c30;
--desk-sidebar-text: #f4f7f7;
--desk-sidebar-muted: rgb(255 255 255 / 82%);
--desk-accent: #00d2c1;
--desk-active-start: rgb(0 188 177 / 40%);
--desk-active-end: rgb(0 128 130 / 45%);
--desk-navy: #0c2850;
--desk-muted-navy: #607895;
--desk-border: #d1d9e2;
--desk-radius-sm: 8px;
--desk-radius-md: 10px;
--desk-radius-shell: 20px;
--desk-sidebar-width: 228px;
--desk-header-height: 88px;
--desk-search-height: 41px;
--desk-nav-height: 48px;
--desk-avatar-size: 35px;
}
.desk-app {
min-height: 100dvh;
background: var(--desk-content-background);
}
.desk-login-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px 30px;
}
.desk-language {
margin-top: 16px;
}
.desk-login-header .desk-language {
margin-top: 0;
}
.desk-workspace {
display: flex;
height: 100dvh;
overflow: hidden;
border-radius: var(--desk-radius-shell);
background: var(--desk-app-background);
}
body:has(.desk-workspace) {
background: var(--desk-app-background);
}
.desk-sidebar {
width: var(--desk-sidebar-width);
flex: 0 0 var(--desk-sidebar-width);
overflow-y: auto;
background: linear-gradient(
180deg,
var(--desk-sidebar-top),
var(--desk-sidebar-background) 45%,
var(--desk-sidebar-bottom)
);
color: var(--desk-sidebar-text);
}
.desk-brand {
display: flex;
align-items: center;
gap: 13px;
padding: 31px 0 0 30px;
white-space: nowrap;
font-size: 21px;
font-weight: 650;
line-height: 30px;
letter-spacing: -0.5px;
}
.desk-brand svg {
width: 32px;
height: 30px;
color: var(--desk-accent);
flex-shrink: 0;
}
.desk-company-rail {
display: flex;
flex-direction: column;
gap: 2px;
padding: 28px 13px 24px 26px;
}
.desk-space-button {
width: 100%;
min-height: var(--desk-nav-height);
height: var(--desk-nav-height);
flex-shrink: 0;
justify-content: flex-start;
gap: 19px;
padding: 0 12px 0 14px;
border: 0;
border-left: 2px solid transparent;
border-radius: var(--desk-radius-sm);
color: var(--desk-sidebar-text);
font-size: 16px;
font-weight: 400;
background: transparent;
box-shadow: none;
}
.desk-space-button > svg {
width: 24px;
height: 24px;
stroke-width: 1.6;
flex-shrink: 0;
}
.desk-space-button > span {
overflow: hidden;
text-overflow: ellipsis;
}
.desk-space-button > .desk-nav-chevron {
margin-left: auto;
width: 18px;
height: 18px;
}
.desk-space-button:hover {
background: rgb(255 255 255 / 6%);
color: white;
}
.desk-space-button[aria-pressed="true"] {
color: white;
border-left-color: var(--desk-accent);
background: linear-gradient(90deg, var(--desk-active-start), var(--desk-active-end));
}
.desk-rail-separator {
height: 1px;
background: rgb(255 255 255 / 12%);
margin: 26px -3px 25px -5px;
flex-shrink: 0;
}
.desk-catalog-navigation {
display: grid;
padding-left: 18px;
}
.desk-catalog-navigation > button {
height: auto;
min-height: 38px;
justify-content: flex-start;
white-space: normal;
text-align: left;
color: var(--desk-sidebar-muted);
}
.desk-catalog-navigation > button[aria-pressed="true"] {
background: rgb(255 255 255 / 8%);
color: white;
}
.desk-workspace-content {
flex: 1;
min-width: 0;
overflow-y: auto;
background: var(--desk-content-background);
}
.desk-global-header {
display: flex;
align-items: center;
gap: 28px;
min-height: var(--desk-header-height);
padding: 31px 30px 16px 17px;
color: var(--desk-navy);
}
.desk-search {
position: relative;
flex: 1;
min-width: 0;
}
.desk-search > svg {
position: absolute;
left: 14px;
top: 11px;
width: 19px;
height: 19px;
color: #1d3e6e;
pointer-events: none;
}
.desk-search > input {
height: var(--desk-search-height);
padding-left: 43px;
border-radius: var(--desk-radius-sm);
border-color: var(--desk-border);
background: rgb(255 255 255 / 65%);
box-shadow: none;
font-size: 14px;
color: var(--desk-navy);
}
.desk-search > input::placeholder {
color: var(--desk-muted-navy);
}
.desk-search-results,
.desk-profile-menu {
position: absolute;
top: calc(100% + 8px);
z-index: 30;
padding: 12px;
border: 1px solid var(--desk-border);
border-radius: var(--desk-radius-md);
background: var(--desk-content-background);
box-shadow: 0 3px 12px rgb(12 40 80 / 8%);
}
.desk-search-results {
left: 0;
right: 0;
max-height: 320px;
overflow-y: auto;
display: grid;
}
.desk-search-results > button {
justify-content: flex-start;
}
.desk-search-results p {
font-size: 12px;
color: var(--desk-muted-navy);
padding: 8px;
}
.desk-notifications {
display: flex;
flex: 0 0 24px;
}
.desk-notifications svg {
width: 24px;
height: 24px;
stroke-width: 1.6;
}
.desk-profile {
position: relative;
flex-shrink: 0;
}
.desk-profile summary {
display: flex;
align-items: center;
gap: 13px;
cursor: pointer;
list-style: none;
}
.desk-profile summary::-webkit-details-marker {
display: none;
}
.desk-profile summary > svg {
width: 16px;
height: 16px;
margin-left: 2px;
}
.desk-avatar {
display: flex;
align-items: center;
justify-content: center;
width: var(--desk-avatar-size);
height: var(--desk-avatar-size);
border-radius: 50%;
background: #d9e8e9;
color: #0e282c;
font-size: 12px;
font-weight: 600;
}
.desk-profile-copy {
display: flex;
flex-direction: column;
line-height: 1.25;
max-width: 150px;
}
.desk-profile-copy strong {
font-size: 14px;
font-weight: 650;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.desk-profile-copy > span {
font-size: 12px;
color: var(--desk-muted-navy);
}
.desk-profile-menu {
right: 0;
width: 300px;
}
.desk-profile summary:focus-visible,
.desk-space-button:focus-visible {
outline: 2px solid var(--desk-accent);
outline-offset: 3px;
}
.desk-main-content {
padding: 24px;
min-width: 0;
}
.company-space {
display: grid;
grid-template-columns: 240px minmax(0, 1fr);
grid-template-rows: auto 1fr auto;
grid-template-areas: "heading main" "navigation main" "account main";
min-height: calc(100dvh - var(--desk-header-height));
background: var(--sidebar);
}
.company-space-heading {
grid-area: heading;
padding: 20px 16px;
border-bottom: 1px solid var(--border);
}
.company-space-heading h1 {
font-size: 1rem;
overflow-wrap: anywhere;
}
.company-space-heading > button {
margin-top: 16px;
width: 100%;
}
.company-space-navigation {
grid-area: navigation;
display: flex;
flex-direction: column;
gap: 4px;
padding: 16px 10px;
}
.company-space-navigation > button {
justify-content: flex-start;
white-space: normal;
height: auto;
min-height: 40px;
text-align: left;
}
.company-space-navigation > button[aria-pressed="true"] {
background: var(--accent);
color: var(--accent-foreground);
}
.company-space-account {
grid-area: account;
padding: 16px 10px;
border-top: 1px solid var(--border);
}
.company-space-main {
grid-area: main;
padding: 24px;
min-width: 0;
background: var(--background);
border-left: 1px solid var(--border);
}
.company-space-breadcrumb {
padding-bottom: 16px;
margin-bottom: 24px;
border-bottom: 1px solid var(--border);
font-size: 0.875rem;
color: var(--muted-foreground);
}
.dashboard-page {
max-width: 1440px;
}
.dashboard-kpis {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 16px;
}
.dashboard-kpi,
.dashboard-panel {
border: 1px solid var(--border);
border-radius: 12px;
background: var(--card);
box-shadow: 0 1px 2px color-mix(in srgb, var(--foreground) 5%, transparent);
}
.dashboard-kpi {
min-height: 144px;
padding: 20px;
text-align: left;
display: grid;
gap: 6px;
color: var(--muted-foreground);
}
.dashboard-kpi:not(:disabled):hover {
border-color: var(--primary);
}
.dashboard-kpi strong {
color: var(--foreground);
font-size: 2rem;
line-height: 1;
}
.dashboard-kpi-icon {
color: var(--primary);
}
.dashboard-kpi-icon svg {
width: 20px;
height: 20px;
}
.dashboard-panel {
padding: 20px;
}
.dashboard-panel h2 {
font-size: 1rem;
font-weight: 600;
}
.dashboard-panel table {
width: 100%;
border-collapse: collapse;
font-size: 0.8125rem;
}
.dashboard-panel th,
.dashboard-panel td {
padding: 10px 8px;
text-align: left;
border-bottom: 1px solid var(--border);
vertical-align: top;
}
.dashboard-panel th {
color: var(--muted-foreground);
font-weight: 500;
}
.dashboard-link {
color: var(--primary);
font-weight: 600;
text-align: left;
}
.dashboard-link:hover {
text-decoration: underline;
}
.dashboard-link:focus-visible,
.dashboard-alert:focus-visible {
outline: 2px solid var(--ring);
outline-offset: 3px;
}
.dashboard-alert {
display: flex;
align-items: center;
gap: 16px;
width: 100%;
padding: 16px 0;
text-align: left;
font-size: 0.875rem;
}
.dashboard-alert strong {
font-size: 1.25rem;
}
.dashboard-alert > span {
flex: 1;
}
.dashboard-badge {
display: inline-block;
border-radius: 999px;
background: var(--muted);
padding: 3px 10px;
white-space: nowrap;
font-size: 0.75rem;
font-weight: 600;
}
.dashboard-badge[data-state="urgent"],
.dashboard-badge[data-state="high"] {
background: color-mix(in srgb, var(--destructive) 12%, var(--card));
color: var(--destructive);
}
.dashboard-badge[data-state="in_progress"] {
background: color-mix(in srgb, var(--primary) 12%, var(--card));
color: var(--primary);
}
.dashboard-timeline {
display: grid;
gap: 20px;
}
.dashboard-timeline li {
display: grid;
grid-template-columns: 110px 24px minmax(0, 1fr);
gap: 12px;
align-items: start;
font-size: 0.875rem;
}
@media (max-width: 767px) {
.dashboard-timeline li {
grid-template-columns: 24px minmax(0, 1fr);
}
.dashboard-timeline time {
grid-column: 1 / -1;
}
}
@media (max-width: 1199px) {
.dashboard-kpis {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
.inventory-layout {
display: grid;
grid-template-columns: minmax(0, 1fr) 280px;
gap: 24px;
align-items: start;
}
.inventory-list {
min-width: 0;
}
.inventory-layout[data-detail-open="false"] {
grid-template-columns: minmax(0, 1fr);
}
.asset-side-panel {
display: grid;
2026-10-07 15:27:23 +00:00
grid-template-columns: minmax(0, 1fr);
overflow-wrap: anywhere;
gap: 24px;
padding: 20px;
min-width: 0;
background: var(--muted);
border: 1px solid var(--border);
border-radius: 12px;
}
.inventory-asset-row {
padding-inline: 12px;
border-radius: 8px;
}
.inventory-asset-selected,
.inventory-asset-selected [data-pinned="right"] {
background: var(--accent);
}
.inventory-asset-name {
text-align: left;
overflow-wrap: anywhere;
cursor: pointer;
}
.inventory-asset-name:hover {
text-decoration: underline;
}
.inventory-asset-name:focus-visible {
outline: 2px solid var(--ring);
outline-offset: 4px;
border-radius: 4px;
}
.asset-mobile-action {
display: none;
}
@media (max-width: 1099px) {
.inventory-layout {
grid-template-columns: minmax(0, 1fr);
}
.asset-side-panel,
.asset-desktop-action {
display: none;
}
.asset-mobile-action {
display: inline-flex;
}
}
@media (max-width: 767px) {
.dashboard-kpis {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
}
.dashboard-kpi,
.dashboard-panel {
padding: 16px;
}
.desk-workspace {
height: auto;
min-height: 100dvh;
flex-direction: column;
border-radius: 0;
}
.desk-sidebar {
width: 100%;
flex-basis: auto;
}
.desk-brand {
padding: 20px;
}
.desk-company-rail {
flex-direction: row;
flex-wrap: wrap;
gap: 6px;
padding: 0 16px 16px;
}
.desk-space-button {
width: auto;
min-height: 42px;
height: 42px;
padding: 0 10px;
gap: 8px;
font-size: 14px;
}
.desk-space-button > svg {
width: 20px;
height: 20px;
}
.desk-rail-separator {
flex-basis: 100%;
margin: 6px 0;
}
.desk-catalog-navigation {
flex-basis: 100%;
padding: 0;
}
.desk-global-header {
gap: 14px;
min-height: 72px;
padding: 16px;
}
.desk-profile-copy {
display: none;
}
.desk-profile summary {
gap: 6px;
}
.desk-profile-menu {
width: min(300px, calc(100vw - 32px));
}
.desk-main-content {
padding: 16px;
}
.company-space {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: auto auto 1fr auto;
grid-template-areas: "heading" "navigation" "main" "account";
min-height: calc(100dvh - 140px);
}
.company-space-heading {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 12px;
}
.company-space-heading > button {
margin-top: 0;
width: auto;
}
.company-space-navigation {
flex-direction: row;
flex-wrap: wrap;
padding: 10px;
gap: 6px;
}
.company-space-navigation > button {
font-size: 0.8125rem;
min-height: 40px;
}
.company-space-main {
padding: 16px;
border-left: 0;
border-top: 1px solid var(--border);
}
.company-space-breadcrumb {
margin-bottom: 16px;
}
.company-space-account {
padding: 12px;
}
}