html,
body {
padding: 0;
margin: 0;
height: 100vh;
width: 100vw;
font-family: var(--font);
user-select: none;
overflow: hidden;
}
*::-webkit-scrollbar {
width: 5px;
}
*::-webkit-scrollbar-track {
background: var(--white-1);
border-radius: 5px;
}
*::-webkit-scrollbar-thumb {
background: white;
border-radius: 5px;
}
.background {
display: none;
height: 100vh;
width: 100vw;
background: var(--panel-9);
align-items: center;
justify-content: center;
}
.background.is-open {
display: flex;
}
.container {
display: flex;
align-items: stretch;
justify-content: space-between;
height: 766px;
}
.garage-card {
position: relative;
display: flex;
flex-direction: column;
width: 300px;
height: 766px;
border-radius: 4px;
box-shadow: 0 0 0 1px var(--white-1);
background: var(--black-5);
padding: 20px 35px 0;
box-sizing: border-box;
flex-shrink: 0;
overflow: hidden;
}
.garage-grid {
--grid-cols: 4;
--grid-card-w: 250px;
--grid-gap: 15px;
--scrollbar-w: 8px;
--grid-width: calc(
(var(--grid-card-w) * var(--grid-cols)) +
(var(--grid-gap) * (var(--grid-cols) - 1))
);
display: flex;
flex-direction: column;
justify-content: flex-start;
margin-left: 35px;
height: 766px;
width: calc(var(--grid-width) + var(--scrollbar-w));
max-width: calc(92vw - 335px);
box-sizing: border-box;
}
.garage-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
margin-bottom: 20px;
width: var(--grid-width);
max-width: 100%;
box-sizing: border-box;
}
.garage-header-left {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
}
.garage-name {
color: var(--white);
font-size: 20px;
font-weight: 700;
margin: 0;
white-space: nowrap;
}
.icon-back {
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 32px;
padding: 7px 8px;
border-radius: 5px;
background: var(--accent);
box-sizing: border-box;
flex-shrink: 0;
}
.garage-tabs {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 8px;
flex: 1;
min-width: 0;
flex-wrap: nowrap;
overflow: hidden;
}
.garage-tab {
all: unset;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
padding: 10px;
border-radius: 3px;
background: var(--black-5);
color: var(--white-4);
font-size: 13px;
font-weight: 700;
text-transform: uppercase;
transition: all 0.2s ease;
box-sizing: border-box;
}
.garage-tab:hover:not(.active):not(.is-disabled) {
color: var(--white-6);
}
.garage-tab.active {
background: var(--accent);
color: var(--white);
}
.garage-tab.is-disabled {
opacity: 0.35;
pointer-events: none;
}
.grid-cards {
display: grid;
width: 100%;
box-sizing: border-box;
overflow-x: hidden;
overflow-y: scroll;
flex: 1;
min-height: 0;
align-content: start;
grid-template-columns: repeat(var(--grid-cols), var(--grid-card-w));
gap: var(--grid-gap);
padding-right: 0;
justify-content: start;
scrollbar-width: thin;
scrollbar-color: var(--white-9) var(--white-1);
}
.grid-cards::-webkit-scrollbar {
width: 5px;
}
.grid-cards::-webkit-scrollbar-track {
background: var(--white-1);
border-radius: 5px;
}
.grid-cards::-webkit-scrollbar-thumb {
background: white;
border-radius: 5px;
}
.grid-card-container {
background: var(--black-5);
border-radius: 4px;
width: 250px;
height: 200px;
box-sizing: border-box;
position: relative;
overflow: hidden;
box-shadow: inset 0 0 0 1px var(--white-2);
}
.grid-card-container.is-vehicle {
cursor: pointer;
}
.grid-card-container.is-selected {
box-shadow: inset 0 0 0 1px var(--accent);
}
.grid-card-container.is-empty {
display: flex;
align-items: center;
justify-content: center;
background: var(--black-3);
}
.grid-card-container.is-empty.is-blocked {
background: var(--black-5);
}
.grid-card-container.is-empty .empty-slot {
color: var(--white-4);
font-size: 13px;
font-weight: 700;
text-transform: uppercase;
}
.grid-card {
height: 100%;
padding: 10px;
box-sizing: border-box;
position: relative;
display: flex;
flex-direction: column;
}
.grid-card.is-dimmed {
opacity: 0.45;
}
.grid-card.is-dimmed .title,
.grid-card.is-dimmed .subtitle {
color: var(--white-4);
}
.grid-card .title {
color: var(--white);
font-weight: 800;
font-size: 15px;
height: 20px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
flex-shrink: 0;
}
.grid-card .subtitle {
color: var(--white-7);
font-size: 10px;
margin-top: 2px;
flex-shrink: 0;
}
.grid-card .car {
position: relative;
width: 150px;
height: 85px;
transform: scale(3);
z-index: 0;
margin: auto;
display: block;
object-fit: contain;
pointer-events: none;
}
.grid-card .car[src*="no_vehicle"] {
width: 87px;
height: 87px;
transform: scale(1);
}
.ribbon {
position: absolute;
top: 16px;
right: -30px;
width: 110px;
padding: 4px 0;
background: var(--accent);
color: var(--white);
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
text-align: center;
transform: rotate(45deg);
z-index: 2;
pointer-events: none;
}
.favorite {
position: absolute;
right: 10px;
top: 31px;
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
width: 15px;
height: 14px;
cursor: pointer;
}
.favorite svg path {
fill: var(--white-5);
}
.car-name {
display: flex;
width: 100%;
height: 34px;
min-height: 34px;
justify-content: center;
align-items: center;
gap: 10px;
border-radius: 4px;
background: var(--accent);
color: var(--white);
font-size: 14px;
font-weight: 700;
letter-spacing: 1.5px;
text-transform: uppercase;
box-sizing: border-box;
padding: 10px;
flex-shrink: 0;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.car-image {
width: 200px;
height: 113px;
display: flex;
align-items: center;
justify-content: center;
margin: 23px auto;
flex-shrink: 0;
overflow: visible;
}
.car-image img {
width: 300px;
height: 300px;
object-fit: contain;
pointer-events: none;
}
.car-image img[src*="no_vehicle"] {
width: 100px;
height: 100px;
}
.badges-row {
display: flex;
gap: 5px;
align-items: center;
margin-bottom: 28px;
flex-shrink: 0;
}
.badge {
height: 21px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 3px;
border-radius: 5px;
padding: 4px 9px;
color: var(--white);
font-weight: 700;
font-size: 11px;
box-sizing: border-box;
}
.badge-primary {
text-transform: uppercase;
background: var(--accent);
padding: 4px 12px;
}
.badge-ghost {
background: var(--white-4);
min-width: 25px;
padding: 4px 9px;
}
.badge-chest {
background: var(--accent);
padding: 4px 5px;
margin-left: auto;
}
.badge-chest .chest-count {
font-weight: 700;
font-size: 11px;
}
.stats {
display: flex;
flex-direction: column;
gap: 16px;
margin-bottom: 30px;
flex-shrink: 0;
}
.stat-row {
display: flex;
align-items: center;
justify-content: space-between;
height: 14px;
}
.stat-percentage-container {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 2px;
width: 124px;
}
.stat-label {
color: var(--white);
font-weight: 600;
font-size: 14px;
letter-spacing: 2.24px;
text-transform: uppercase;
}
.stat-bar {
width: 100%;
height: 5px;
background: var(--white-1);
border-radius: 5px;
position: relative;
overflow: hidden;
}
.stat-fill {
display: block;
height: 5px;
background: var(--accent);
border-radius: 5px;
}
.stat-percent {
color: var(--white-5);
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
}
.buttons {
display: flex;
flex-direction: column;
gap: 8px;
margin: 0;
flex-shrink: 0;
width: 100%;
}
.btn {
all: unset;
font-family: var(--font);
width: 100%;
height: 40px;
border-radius: 6px;
box-shadow: 0 0 0 1px var(--white-1);
background: var(--white-1);
color: var(--white-4);
font-size: 12px;
font-weight: 700;
text-transform: uppercase;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
cursor: pointer;
transition: all 0.2s ease;
box-sizing: border-box;
}
.btn:not(.btn-primary):not(.is-disabled):hover {
background: var(--white-1);
color: var(--white-6);
}
.btn-primary:not(.is-disabled):hover {
background: var(--accent-10);
}
.btn-primary {
background: var(--accent);
color: var(--white);
box-shadow: 0 0 15px var(--accent-2);
}
.btn-primary:not(.is-disabled) svg path {
fill: var(--white);
fill-opacity: 1;
stroke: var(--white);
stroke-opacity: 1;
}
.btn.is-disabled {
opacity: 0.35;
pointer-events: none;
cursor: inherit;
background: var(--white-1);
color: var(--white-4);
box-shadow: 0 0 0 1px var(--white-1);
}
.expiry-note {
position: relative;
flex-shrink: 0;
margin-top: 16px;
min-height: 8px;
line-height: 8px;
text-align: center;
font-family: var(--font);
font-weight: 400;
font-size: 11px;
color: var(--white-7);
text-transform: uppercase;
white-space: nowrap;
visibility: hidden;
}
.expiry-note.is-visible {
visibility: visible;
}
@media (max-width: 1400px) {
.container {
zoom: 0.6;
}
}
/* ---------------------------------------------------------------------------
GARAGEM BLINDADA :: MODAL DE GERENCIAMENTO DE ACESSO
--------------------------------------------------------------------------- */
.btn-manage svg {
flex-shrink: 0;
}
.manage-overlay {
display: none;
position: absolute;
inset: 0;
background: var(--black-8);
z-index: 50;
align-items: center;
justify-content: center;
}
.manage-overlay.is-open {
display: flex;
}
.manage-modal {
width: 460px;
max-height: 82vh;
display: flex;
flex-direction: column;
background: var(--panel-10);
border-radius: 6px;
padding: 22px;
box-sizing: border-box;
box-shadow:
0 0 0 1px var(--white-2),
0 20px 60px var(--black-8);
}
.manage-head {
display: flex;
align-items: flex-start;
justify-content: space-between;
}
.manage-title {
margin: 0;
font-size: 16px;
font-weight: 700;
color: var(--white);
letter-spacing: 0.5px;
}
.manage-subtitle {
margin: 4px 0 0;
font-size: 11px;
color: var(--white-6);
text-transform: uppercase;
letter-spacing: 1px;
}
.manage-close {
cursor: pointer;
color: var(--white-7);
font-size: 16px;
line-height: 1;
padding: 4px;
transition: color 0.15s ease;
}
.manage-close:hover {
color: var(--white);
}
.manage-instructions {
margin: 16px 0 0;
font-size: 12px;
line-height: 1.5;
color: var(--white-8);
}
.manage-instructions b {
color: var(--white);
}
.manage-capacity {
margin-top: 14px;
font-size: 12px;
color: var(--white-9);
background: var(--white-1);
padding: 8px 12px;
border-radius: 4px;
}
.manage-capacity span {
color: var(--white);
font-weight: 700;
}
.manage-search-wrap {
position: relative;
margin-top: 16px;
}
.manage-input {
width: 100%;
box-sizing: border-box;
background: var(--white-1);
border: none;
border-radius: 4px;
padding: 11px 14px;
color: var(--white);
font-family: var(--font);
font-size: 13px;
outline: none;
box-shadow: 0 0 0 1px var(--white-2);
}
.manage-input::placeholder {
color: var(--white-5);
}
.manage-results {
display: none;
position: absolute;
top: calc(100% + 6px);
left: 0;
width: 100%;
max-height: 240px;
overflow-y: scroll;
overflow-x: hidden;
background: var(--bg-4);
border-radius: 4px;
z-index: 5;
box-shadow: 0 0 0 1px var(--white-2);
scrollbar-width: thin;
scrollbar-color: var(--white-9) var(--white-1);
}
.manage-results::-webkit-scrollbar {
width: 5px;
}
.manage-results::-webkit-scrollbar-track {
background: var(--white-1);
border-radius: 5px;
}
.manage-results::-webkit-scrollbar-thumb {
background: white;
border-radius: 5px;
}
.manage-results.is-open {
display: block;
}
.manage-result,
.manage-row {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 12px;
}
.manage-result {
cursor: pointer;
transition: background 0.15s ease;
}
.manage-result:hover {
background: var(--white-1);
}
.manage-avatar {
width: 40px;
height: 40px;
border-radius: 50%;
object-fit: cover;
flex-shrink: 0;
background: var(--white-2);
display: flex;
align-items: center;
justify-content: center;
color: var(--white);
font-weight: 700;
font-size: 15px;
}
.manage-avatar.is-empty {
background: var(--white-2);
}
.manage-row-info {
flex: 1;
min-width: 0;
}
.manage-row-name {
font-size: 13px;
color: var(--white);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.manage-row-id {
font-size: 11px;
color: var(--white-6);
margin-top: 2px;
}
.manage-add,
.manage-remove {
cursor: pointer;
font-size: 10px;
font-weight: 700;
letter-spacing: 0.5px;
padding: 6px 10px;
border-radius: 4px;
flex-shrink: 0;
transition: background 0.15s ease, color 0.15s ease;
}
.manage-add {
background: var(--success-3);
color: var(--text-4);
}
.manage-add:hover {
background: var(--success-5);
}
.manage-remove {
background: var(--accent-2);
color: var(--text-4);
}
.manage-remove:hover {
background: var(--accent-5);
}
.manage-section-title {
margin: 20px 0 10px;
font-size: 11px;
letter-spacing: 1px;
color: var(--white-6);
text-transform: uppercase;
}
.manage-allowed {
--manage-row-size: 60px;
--manage-row-gap: 6px;
--manage-visible-rows: 3;
--manage-list-height: calc(
var(--manage-row-size) * var(--manage-visible-rows) +
var(--manage-row-gap) * (var(--manage-visible-rows) - 1)
);
min-height: var(--manage-list-height);
max-height: var(--manage-list-height);
overflow-y: scroll;
overflow-x: hidden;
display: flex;
flex-direction: column;
gap: var(--manage-row-gap);
padding-right: 6px;
scrollbar-width: thin;
scrollbar-color: var(--white-9) var(--white-1);
}
.manage-allowed::-webkit-scrollbar {
width: 5px;
}
.manage-allowed::-webkit-scrollbar-track {
background: var(--white-1);
border-radius: 5px;
}
.manage-allowed::-webkit-scrollbar-thumb {
background: white;
border-radius: 5px;
}
.manage-allowed::-webkit-scrollbar-thumb:hover {
background: var(--white-9);
}
.manage-row {
background: var(--white-1);
border-radius: 4px;
flex-shrink: 0;
}
.manage-row.is-manager {
background: var(--warning-2);
box-shadow: 0 0 0 1px var(--warning-4);
}
.manage-badge {
color: var(--warning-10);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.4px;
}
.manage-crown {
flex-shrink: 0;
filter: drop-shadow(0 0 4px var(--warning-6));
}
.manage-empty {
font-size: 12px;
color: var(--white-6);
padding: 14px;
text-align: center;
flex: 1;
display: flex;
align-items: center;
justify-content: center;
}