[data-page-app=page-app] {
    top: 0px;
    left: 0px;
    right: 0px;

    & > [data-container] {
        top: 0px;
        left: 0px;
        width: 100%;
        bottom: 0px;
        transition: left 0.3s ease-out;
    }

    @media screen {
        & {
            position: absolute;
            overflow: hidden;
        
            & > [data-container] {
                position: absolute;
                overflow: hidden;
            }
        }
    }
    
    &[data-drawer=visible] {

        & > [data-container] {
            left: 80%;
        }

        & > [data-drawer-page] {
            left: 0px;
        }
    }
    
    & [data-drawer-page=drawer-page] {
        position: absolute;
        top: 0px;
        left: -80%;
        width: 80%;
        height: 100%;
        overflow: hidden;
        transition: left 0.3s ease-out;
    }

}


[data-base-page=base-page] {
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    contain: content;
    transition: transform 0.3s ease-out;
    display: grid;
    grid-template-rows: 40px auto 1fr auto;
    grid-template-columns: auto 1fr auto;
    transform: translate(100%,0);

    @media screen {
        & {
            position: absolute;
            overflow: hidden;
        }   
    }

    & > [data-icon-button=icon-button] {
        padding: 5px;
    }
    
    & > [data-page-element=action-bar] {
        z-index: 11;
        grid-row-start: 1;
        grid-column-start: 1;
        grid-column-end: span 3;
        background-color: var(--accent-color, lightgray); 
    }
    
    & > [data-page-element=icon] {
        font-size: 20px;
        z-index: 14;
        padding: 10px;
        text-align: center;
        align-self: center;
        justify-self: center;
        grid-row-start: 1;
        grid-column-start: 1;
        color: var(--accent-text-color, black); 
        width: 40px;
    }
    
    & > [data-page-element=title] {
        font-size: 20px;
        z-index: 14;
        padding: 5px;
        align-self: center;
        justify-self: stretch;
        grid-row-start: 1;
        grid-column-start: 2;
        color: var(--accent-text-color, black); 
    }
    
    & > [data-page-element=action] {
        font-size: 20px;
        z-index: 14;
        padding: 10px;
        grid-row-start: 1;
        grid-column-start: 3;
        min-width: 40px;
        color: var(--accent-text-color, black); 

        & button {
            width: 30px;
            border: none;
            outline: none;
            background: transparent;
            font-size: inherit; 
        }
    }
    
    & > button[data-page-element=action] {
        min-width: 40px;
        border: none;
        outline: none;
        background: transparent; 
    }
    
    & > [data-page-element=header] {
        z-index: 12;
        padding: 5px;
        grid-row-start: 2;
        grid-column-start: 1;
        grid-column-end: span 3;
        background-color: #c0c0c030; 
    }
    
    & > [data-page-element=pull-to-refresh] {
        grid-row-start: 3;
        grid-column-start: 1;
        grid-column-end: span 3;
        padding: 5px;
        margin: 10px;
        z-index: 9;
        align-self: start;
        justify-self: center; 

        & .pull-icon {
            transition: all 0.3s ease-out; 
        }
        
        &[data-mode=up] .pull-icon {
            transform: rotate(180deg); 
        }
        
        &[data-mode=loading] .pull-icon {
            display: none; 
        }
        
        &:not([data-mode=down]) .down {
            display: none; 
        }
        
        &:not([data-mode=up]) .up {
            display: none; 
        }
        
        &:not([data-mode=loading]) .loading {
            display: none; 
        }
    }
        
    & > [data-page-element=content] {
        grid-row-start: 3;
        grid-column-start: 1;
        grid-column-end: span 3;
        padding: 5px;
        position: relative;
        overflow-x: hidden;
        overflow-y: auto;
        z-index: 10;
        scrollbar-width: 5px;
        scrollbar-color: var(--accent-color, #ffa500) transparent;

        &::-webkit-scrollbar {
            width: 5px; 
        }
        
        &::-webkit-scrollbar-thumb {
            background-color: white;
            border-radius: 20px;
            border: 3px solid var(--accent-color, #ffa500);
        }
        
    }
        
    & > [data-page-element=footer] {
        grid-row-start: 4;
        grid-column-start: 1;
        grid-column-end: span 3;
        z-index: 11;
        padding: 5px; 
    }
    
    &[data-page-state=ready] {
        transform: translate(0,0); 
    }
    
    &[data-page-state=hidden] {
        transform: translate(-100%,0); 
    }

    &[data-page-removed] {
        display: none;
        z-index: -1000;
    }

    &[data-hide-drawer=true] {
        & drawer-menu, & [data-drwaer-page] {
            display: none;
        }
    }

    &[data-hide-toolbar=true] {

        & [data-page-element=status-bar] {
            display: none;
        }

        & > [data-page-element=icon] {
            display: none; 
        }
        
        & > [data-page-element=title] {
            display: none; 
        }
        
        & > [data-page-element=action-bar] {
            display: none; 
        }
        
        & > [data-page-element=action] {
            display: none;    
        }

        & > [data-page-element=header] {
            grid-row: 1;
        }

        & > [data-page-element=content] {
            grid-row: 2 / span 3;
        }
    }
}

@media screen {
    body {
        overflow: hidden;
        & > [data-page-app=page-app] {
            height: 100vh;

        }
    }
}

@supports (height: 100dvh) {
    body {
        & > [data-page-app=page-app] {
            height: 100dvh;
        }
    }
}
