226 lines
5.3 KiB
CSS
226 lines
5.3 KiB
CSS
html {
|
|
font-size: 16px;
|
|
}
|
|
|
|
body {
|
|
@apply m-0 p-0 w-dvw h-dvh min-w-dvw min-h-dvh bg-gray-100 font-sans antialiased;
|
|
|
|
&#app {
|
|
@apply grid;
|
|
grid-template-columns: 5rem auto;
|
|
grid-template-rows: 1fr 0;
|
|
}
|
|
|
|
&#auth {
|
|
@apply flex items-center justify-center;
|
|
|
|
header {
|
|
@apply flex flex-row items-center justify-between px-6 fixed top-0 left-0 h-20;
|
|
|
|
a {
|
|
@apply inline-flex items-center gap-2;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* primary app navigation on the left */
|
|
> nav {
|
|
@apply w-20 flex flex-col items-center justify-between;
|
|
|
|
/* top items */
|
|
.top {
|
|
@apply flex flex-col items-center pt-6 2xl:pt-8 mt-2px;
|
|
}
|
|
|
|
/* bottom items */
|
|
|
|
.bottom {
|
|
@apply pb-6 2xl:pb-8;
|
|
}
|
|
|
|
/* app buttons */
|
|
menu {
|
|
@apply flex flex-col gap-1 items-center mt-6;
|
|
|
|
li.app-button {
|
|
|
|
a {
|
|
@apply flex items-center justify-center p-3 bg-transparent text-black;
|
|
transition: background-color 100ms ease-in-out;
|
|
border-radius: 70% 50% 70% 30% / 60% 60% 60% 40%; /* blob 1 */
|
|
|
|
&:hover {
|
|
@apply bg-gray-200;
|
|
}
|
|
|
|
&.is-active {
|
|
@apply bg-cyan-400;
|
|
|
|
&:hover {
|
|
@apply bg-cyan-500;
|
|
}
|
|
}
|
|
}
|
|
|
|
&:nth-child(2) a {
|
|
border-radius: 70% 30% 30% 70% / 60% 40% 60% 40%; /* blob 2 */
|
|
}
|
|
|
|
&:nth-child(3) a {
|
|
border-radius: 80% 65% 90% 50% / 90% 80% 75% 75%; /* blob 3 */
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* primary content window defaults
|
|
*
|
|
* main
|
|
* aside (optional left bar, must include h1 page title)
|
|
* article (content pane; if no aside, header includes h1)
|
|
* header
|
|
* section
|
|
*/
|
|
main {
|
|
@apply overflow-hidden rounded-lg;
|
|
max-height: calc(100dvh - 1rem);
|
|
|
|
/* app */
|
|
body#app & {
|
|
@apply grid grid-cols-1 m-2 ml-0;
|
|
|
|
/* if there's an aside, set the cols */
|
|
&:has(aside) {
|
|
grid-template-columns: minmax(20rem, 20dvw) auto;
|
|
}
|
|
}
|
|
|
|
/* auth screens */
|
|
body#auth & {
|
|
@apply bg-white border-md border-primary shadow-drop w-1/2 mx-auto p-8 rounded-xl;
|
|
min-width: 16rem;
|
|
max-width: 40rem;
|
|
}
|
|
|
|
/* left column */
|
|
aside {
|
|
@apply bg-white flex flex-col col-span-1 pb-8 h-full rounded-l-lg;
|
|
@apply overflow-y-auto;
|
|
|
|
> h1 {
|
|
@apply flex items-center h-20 min-h-20 px-6 2xl:px-8;
|
|
@apply backdrop-blur-xs sticky top-0 z-1 shrink-0;
|
|
background-color: rgba(255, 255, 255, 0.9);
|
|
}
|
|
|
|
> .aside-inset {
|
|
@apply px-6 2xl:px-8;
|
|
}
|
|
|
|
.content {
|
|
@apply grow;
|
|
}
|
|
|
|
.drawers {
|
|
@apply grow flex flex-col gap-6 pt-1;
|
|
}
|
|
|
|
.pagelinks {
|
|
@apply flex flex-col gap-2px -mx-3;
|
|
width: calc(100% + 1.5rem);
|
|
|
|
a {
|
|
@apply flex flex-row gap-2 items-center justify-start px-3 h-9 rounded-md;
|
|
transition: background-color 100ms ease-in-out;
|
|
|
|
&:hover {
|
|
@apply bg-cyan-200;
|
|
}
|
|
|
|
&.is-active {
|
|
@apply bg-cyan-400;
|
|
|
|
&:hover {
|
|
@apply bg-cyan-500;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* main content wrapper */
|
|
article {
|
|
@apply bg-white grid grid-cols-1 w-full pl-3 2xl:pl-4 pr-6 2xl:pr-8 rounded-r-lg;
|
|
@apply overflow-y-auto;
|
|
grid-template-rows: 5rem auto;
|
|
|
|
/* main content title and actions */
|
|
> header {
|
|
@apply flex flex-row items-center justify-between w-full;
|
|
@apply bg-white sticky top-0;
|
|
|
|
/* if h1 exists it means there's no aside, so force the width from that */
|
|
h1 {
|
|
@apply relative flex items-center pl-6 2xl:pl-8;
|
|
width: minmax(20rem, 20dvw);
|
|
}
|
|
|
|
h2 {
|
|
@apply flex flex-row gap-1 items-center justify-start relative top-2px;
|
|
|
|
> span {
|
|
@apply text-gray-700;
|
|
}
|
|
}
|
|
|
|
menu {
|
|
@apply flex flex-row items-center justify-end gap-4;
|
|
}
|
|
}
|
|
|
|
/* sections with max width content */
|
|
&.readable {
|
|
grid-template-columns: repeat(4, 1fr);
|
|
|
|
> header {
|
|
@apply col-span-4;
|
|
}
|
|
|
|
> .content {
|
|
@apply col-span-4 2xl:col-span-3;
|
|
}
|
|
}
|
|
|
|
/* section specific */
|
|
&#calendar {
|
|
/* */
|
|
}
|
|
&#settings {
|
|
/* */
|
|
}
|
|
}
|
|
}
|
|
@media (width >= 96rem) { /* 2xl */
|
|
main {
|
|
aside {
|
|
> h1 {
|
|
@apply h-22;
|
|
}
|
|
}
|
|
article {
|
|
grid-template-rows: 5.5rem auto;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* app logo */
|
|
.logo {
|
|
@apply w-10 h-10 flex;
|
|
|
|
.overlay {
|
|
fill: var(--color-cyan-500);
|
|
}
|
|
}
|