/* Visual theme for the lot-management application. */
body.terreno-theme {
    --terreno-ink: #20523b;
    --terreno-menu: #24583e;
    --terreno-hover: #e1f1e4;
    --terreno-active: #d5eadb;
    --terreno-border: #c9dfce;
    --terreno-bg: #eef7ef;
    background-color: var(--terreno-bg);
    background-image: url('../images/terrenos-pattern.svg');
    background-size: 640px 480px;
    background-attachment: fixed;
}

.terreno-theme #wrapper,
.terreno-theme #main-content { background: transparent; }

.terreno-theme .app-header,
.terreno-theme .app-sidebar,
.terreno-theme .app-mobile-sidebar {
    --bs-app-sidebar-menu-item-color: var(--terreno-menu);
    --bs-app-sidebar-menu-item-hover-color: var(--terreno-ink);
    --bs-app-sidebar-menu-item-active-color: var(--terreno-ink);
    --bs-app-sidebar-border-color: var(--terreno-border);
    border-color: var(--terreno-border);
}

.terreno-theme .app-sidebar .side-menu__item,
.terreno-theme .app-mobile-sidebar .side-menu__item {
    transition: background-color .16s ease, border-color .16s ease;
}

.terreno-theme .app-sidebar .side-menu__item.active,
.terreno-theme .app-mobile-sidebar .side-menu__item.active,
.terreno-theme .app-sidebar .slide-menu .side-menu__item.active,
.terreno-theme .app-mobile-sidebar .slide-menu .side-menu__item.active {
    background-color: var(--terreno-active);
    border-bottom-color: #83af91;
}

.terreno-theme .app-sidebar .side-menu__item:hover,
.terreno-theme .app-sidebar .side-menu__item:focus-visible,
.terreno-theme .app-mobile-sidebar .side-menu__item:hover,
.terreno-theme .app-mobile-sidebar .side-menu__item:focus-visible,
.terreno-theme .app-sidebar .slide-menu .side-menu__item:hover,
.terreno-theme .app-sidebar .slide-menu .side-menu__item:focus-visible,
.terreno-theme .app-mobile-sidebar .slide-menu .side-menu__item:hover,
.terreno-theme .app-mobile-sidebar .slide-menu .side-menu__item:focus-visible {
    background-color: var(--terreno-hover);
    border-radius: .75rem;
}

.terreno-theme .app-sidebar .side-menu__item:focus-visible,
.terreno-theme .app-mobile-sidebar .side-menu__item:focus-visible {
    outline: 2px solid #629a73;
    outline-offset: -2px;
}

.terreno-theme .app-header .header-right .icon-btn {
    --bs-btn-color: var(--terreno-menu);
    --bs-btn-hover-color: var(--terreno-ink);
    --bs-btn-active-color: var(--terreno-ink);
    color: var(--terreno-menu);
}

.terreno-theme .app-header .dropdown-item { color: var(--terreno-menu); }
.terreno-theme .app-header .dropdown-item:hover,
.terreno-theme .app-header .dropdown-item:focus,
.terreno-theme .app-header .dropdown-item.active {
    color: var(--terreno-ink);
    background-color: var(--terreno-hover);
}
.terreno-theme .app-mobile-sidebar .btn-close { filter: none; opacity: .7; }

.terreno-theme #preloader {
    background: radial-gradient(ellipse at center, #f9fcf6 0, var(--terreno-bg) 72%);
    align-items: center;
    justify-content: center;
}

.terreno-loader {
    width: 166px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    color: var(--terreno-ink, #20523b);
}
.terreno-loader svg { display: block; width: 166px; height: 133px; }
.terreno-loader__label { font-size: 13px; font-weight: 500; letter-spacing: .015em; }
.terreno-loader__foundation { animation: terreno-foundation 2s ease-in-out infinite; }
.terreno-loader__walls { transform-origin: 100px 123px; animation: terreno-walls 2s ease-in-out infinite; }
.terreno-loader__roof { animation: terreno-roof 2s ease-in-out infinite; }
.terreno-loader__details { animation: terreno-details 2s ease-in-out infinite; }

@keyframes terreno-foundation {
    0% { opacity: .25; }
    15%, 92% { opacity: 1; }
    100% { opacity: .25; }
}
@keyframes terreno-walls {
    0%, 14% { opacity: 0; transform: translateY(5px) scaleY(.2); }
    38%, 92% { opacity: 1; transform: translateY(0) scaleY(1); }
    100% { opacity: 0; transform: translateY(0) scaleY(1); }
}
@keyframes terreno-roof {
    0%, 30% { opacity: 0; transform: translateY(-9px); }
    51%, 92% { opacity: 1; transform: translateY(0); }
    100% { opacity: 0; transform: translateY(0); }
}
@keyframes terreno-details {
    0%, 48% { opacity: 0; }
    62%, 92% { opacity: 1; }
    100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
    .terreno-loader__foundation,
    .terreno-loader__walls,
    .terreno-loader__roof,
    .terreno-loader__details { animation: none; opacity: 1; transform: none; }
    .terreno-theme .app-sidebar .side-menu__item,
    .terreno-theme .app-mobile-sidebar .side-menu__item { transition: none; }
}

@media print {
    body.terreno-theme { background: #fff; }
    .terreno-theme #preloader { display: none; }
}
