@tailwind base; @tailwind components; @tailwind utilities; @layer base { @define-mixin light-vars { --color-base-1: 36 36 36; --color-base-2: 66 66 66; --color-base-3: 97 97 97; --color-base-4: 199 199 199; --color-base-5: 209 209 209; --color-base-6: 245 245 245; --color-base-7: 255 255 255; } @define-mixin dark-vars { --color-base-1: 255 255 255; --color-base-2: 245 245 245; --color-base-3: 209 209 209; --color-base-4: 199 199 199; --color-base-5: 97 97 97; --color-base-6: 66 66 66; --color-base-7: 36 36 36; } :root { @mixin light-vars; --sidenav-width: 300px; --header-height: 3.5rem; --spacing-1: 0.25rem; --spacing-2: 0.5rem; --spacing-3: 0.75rem; --spacing-4: 1rem; --z-index-scroll-link: 10; --z-index-mobile-bar: 20; --z-index-sidenav: 30; --z-index-modal-overlay: 40; --z-index-modal: 50; --z-index-dropdown: 60; --z-index-context-menu: 70; } @media (prefers-color-scheme: dark) { :root { @mixin dark-vars; } } :root[data-theme="light"] { @mixin light-vars; } :root[data-theme="dark"] { @mixin dark-vars; } body { @apply text-base-2; @apply bg-base-7; } p { @apply mb-4; } a { @apply text-primary underline; } } .loading-indicator { display: flex; min-height: 100vh; svg { @apply fill-base-2; margin: auto; animation: loading-indicator 0.45s infinite linear; @keyframes loading-indicator { 0% { transform: rotate(0deg); } 100% { transform: rotate(359deg); } } } } .sidenav { display: flex; flex-direction: column; grid-area: sidenav; position: fixed; z-index: var(--z-index-sidenav); inset: 0; visibility: hidden; transition-property: visibility; @apply border-r; } .sidenav-background { position: absolute; inset: 0; transition-property: opacity; transform: translateZ(0); opacity: 0; background: rgb(0 0 0 / 50%); } .sidenav-sections { display: flex; flex-direction: column; flex: 1; max-height: 100vh; position: absolute; top: 0; bottom: 0; left: 0; width: var(--sidenav-width); transition-property: transform; transform: translate3d(-100%, 0, 0); overflow-y: auto; @apply bg-base-7 p-4; } body { &.sidebar-is-opened { overflow: hidden; .sidenav { visibility: visible; } .sidenav-background { opacity: 1; } .sidenav-sections { transform: translate3d(0, 0, 0); } } } .app { display: grid; grid-template: "main" 1fr auto / 100%; min-height: 100vh; } .main { grid-area: main; padding: calc(var(--spacing-4) + var(--header-height)) var(--spacing-4) var(--spacing-4); @apply bg-base-7; } .mobile-bar { top: 0; left: 0; height: var(--header-height); width: 100%; z-index: var(--z-index-mobile-bar); align-items: center; overflow: hidden; @apply bg-base-7; & > button { position: absolute; padding: var(--spacing-3); background: transparent; border: none; cursor: pointer; &:focus { outline: 0; } } } @media (min-width: theme("screens.lg")) { body.sidebar-is-opened { overflow: initial; } .app { grid-template-columns: var(--sidenav-width) calc( 100% - var(--sidenav-width) ); grid-template-areas: "sidenav main"; } .sidenav { position: relative; visibility: visible; } .sidenav-background { opacity: 0; display: none; } .sidenav-sections { position: sticky; transform: none; transition-duration: none; top: 0; bottom: initial; left: initial; width: auto; transition-property: initial; } .main { padding: var(--spacing-4); } } .simple-table { @apply table-auto text-left mb-4; thead { tr { th { @apply bg-base-6; @apply first:rounded-l last:rounded-r; @apply px-4 py-4 text-base-2 font-normal whitespace-nowrap; &[type="button"] { @apply cursor-pointer select-none; } } } } tbody { tr { &:hover { @apply bg-base-6; } td { @apply px-4 py-3 align-top; } } } }