@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-header-background: #fff; --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-sidebar-inset: 20px; --desk-sidebar-collapsed-width: 72px; --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 { display: flex; flex-direction: column; min-height: 0; width: var(--desk-sidebar-width); flex: 0 0 var(--desk-sidebar-width); overflow: hidden; background: linear-gradient( 180deg, var(--desk-sidebar-top), var(--desk-sidebar-background) 45%, var(--desk-sidebar-bottom) ); color: var(--desk-sidebar-text); } .desk-brand { flex-shrink: 0; 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 { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; padding: 28px var(--desk-sidebar-inset) 24px; } .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 0 25px; 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-sidebar-footer { flex-shrink: 0; display: grid; gap: 2px; padding: 12px var(--desk-sidebar-inset) 20px; border-top: 1px solid rgb(255 255 255 / 12%); } .desk-sidebar-toggle[aria-expanded="true"] > svg { transform: rotate(180deg); } .desk-catalog-navigation > button { gap: 10px; } .desk-catalog-navigation > button > svg { width: 18px; height: 18px; flex-shrink: 0; } @media (min-width: 768px) { .desk-sidebar[data-collapsed="true"] { width: var(--desk-sidebar-collapsed-width); flex-basis: var(--desk-sidebar-collapsed-width); } .desk-sidebar[data-collapsed="true"] .desk-brand { justify-content: center; padding-left: 0; } .desk-sidebar[data-collapsed="true"] .desk-brand > span, .desk-sidebar[data-collapsed="true"] .desk-space-button > span, .desk-sidebar[data-collapsed="true"] .desk-nav-chevron, .desk-sidebar[data-collapsed="true"] .desk-catalog-navigation > button > span { display: none; } .desk-sidebar[data-collapsed="true"] .desk-company-rail { padding: 28px 12px 12px; } .desk-sidebar[data-collapsed="true"] .desk-sidebar-footer { padding: 12px 12px 20px; } .desk-sidebar[data-collapsed="true"] .desk-space-button { justify-content: center; gap: 0; padding: 0; } .desk-sidebar[data-collapsed="true"] .desk-catalog-navigation { padding-left: 0; } .desk-sidebar[data-collapsed="true"] .desk-catalog-navigation > button { justify-content: center; padding-inline: 0; } } .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: 15px 30px 15px 17px; background: var(--desk-header-background); border-bottom: 1px solid var(--desk-border); 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; 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: 2px; } .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; } } @media (max-width: 767px) { .desk-company-rail { flex: none; overflow-y: visible; } .desk-sidebar-footer { padding: 10px 16px; } .desk-sidebar-toggle { display: none; } }