*{ box-sizing: border-box; } html, body{ height: 100%; } #nui{ display: none; } #nui.nui--visible{ display: block; } body{ display: none; margin: 0; font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, "Apple Color Emoji", "Segoe UI Emoji"; background: var(--bg-1); overflow: hidden; user-select: none; color: var(--white); font-family: var(--font); } .map{ position: absolute; inset: 0; z-index: 0; background: radial-gradient(1200px 700px at 50% 55%, var(--white-1), var(--transparent) 60%), linear-gradient(180deg, var(--black-3), var(--black-5)), url("https://cdn.villagg.com.br/spawn/gtamap.webp"); background-position: center; background-size: cover; background-repeat: no-repeat; filter: saturate(1.05) contrast(1.05); } .map-contrast{ position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, var(--black-4), var(--black-1) 55%, var(--black-6)); pointer-events: none; } /* Header */ .hdr{ position: absolute; top: 0; left: 50%; transform: translateX(-50%); padding: 32px; display: flex; align-items: flex-start; justify-content: space-between; z-index: 50; pointer-events: none; } .brand{ display: flex; flex-direction: column; align-items: center; gap: 4px; } .brand__title{ font-size: 36px; font-weight: 900; letter-spacing: .2em; text-shadow: 0 0 10px var(--white-4); } .brand__bar{ width: 128px; height: 2px; background: linear-gradient(90deg, transparent, var(--accent), transparent); } .ftr{ position: absolute; bottom: 0; left: 0; padding: 32px; z-index: 50; pointer-events: none; } .playerCard{ display: flex; align-items: end; gap: 12px; background: var(--black-6); border: 1px solid var(--white-1); padding: 14px; border-radius: 6px; } .playerCard__avatar{ width: 40px; height: 40px; border-radius: 999px; background: linear-gradient(135deg, var(--accent), var(--accent-8)); border: 1px solid var(--white-2); display: flex; align-items: center; justify-content: center; color: var(--white); } .playerCard__avatar svg{ width: 22px; height: 22px; } .playerCard__name{ font-size: 14px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; } .playerCard__welcome { margin: 0; font-size: 10px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; color: var(--text-4); } .playerCard__meta { display: flex; flex-direction: column; gap: 8px; } .quickSpawn{ position: absolute; right: 32px; bottom: 32px; z-index: 55; pointer-events: auto; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px; padding: 10px 20px; border: 0; border-radius: 8px; cursor: pointer; color: var(--white); background: linear-gradient(90deg, var(--accent-10), var(--accent-10)); transition: transform .15s ease, filter .15s ease; } .quickSpawn:hover{ transform: translateY(-1px); filter: brightness(1.03); } .quickSpawn:active{ transform: translateY(0); filter: brightness(.98); } .quickSpawn:focus-visible{ outline: 2px solid var(--white-8); outline-offset: 3px; } .quickSpawn__ico{ display: inline-flex; color: var(--white-10); } .quickSpawn__txt{ display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 6px; line-height: 1.05; } .quickSpawn__kicker{ font-size: 12px; font-weight: 900; letter-spacing: .06em; opacity: .92; text-transform: uppercase; } .quickSpawn__title{ margin-top: 2px; font-size: 13px; font-weight: 1000; letter-spacing: .04em; text-transform: uppercase; } .quickSpawn__chev{ width: 20px; height: 20px; display: inline-flex; color: var(--white-9); transition: transform .15s ease; } .quickSpawn:hover .quickSpawn__chev{ transform: translateX(2px); } .quickSpawn__chev svg{ width: 100%; height: 100%; } .quickSpawn.is-disabled, .quickSpawn:disabled{ cursor: not-allowed; pointer-events: none; opacity: .5; transform: none; } .quickSpawn.is-disabled:hover, .quickSpawn:disabled:hover{ transform: none; } /* Interactive layer */ .layer{ position: absolute; inset: 0; z-index: 10; } .markers{ position: absolute; inset: 0; } /* Marker */ .marker{ position: absolute; transform: translate(-50%, -50%); cursor: pointer; pointer-events: auto; z-index: 2; } .marker__wrap{ position: relative; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; } .marker__ring{ position: absolute; width: 32px; height: 32px; border-radius: 999px; border: 1px solid var(--accent-7); animation: ring 2s infinite ease-in-out; } .marker__ring--b{ border-color: var(--accent-5); animation-duration: 2.5s; animation-delay: .5s; } @keyframes ring{ 0%{ transform: scale(1); opacity: .5; } 50%{ transform: scale(2.4); opacity: 0; } 100%{ transform: scale(1); opacity: .5; } } .marker__dot{ width: 16px; height: 16px; border-radius: 999px; border: 2px solid var(--white-4); background: var(--accent); box-shadow: 0 0 15px var(--accent-7); transition: transform .15s ease, background-color .15s ease; z-index: 2; } .marker.is-hover .marker__dot, .marker.is-selected .marker__dot{ transform: scale(1.2); background: var(--accent-10); } .marker__label{ position: absolute; top: 38px; left: 50%; transform: translateX(-50%); white-space: nowrap; pointer-events: none; opacity: 0; translate: 0 10px; transition: opacity .15s ease, translate .15s ease; } .marker.is-hover .marker__label, .marker.is-selected .marker__label{ opacity: 1; translate: 0 0; } .marker__pill{ display: flex; align-items: center; justify-content: center; padding: 6px; background: var(--black-9); border: 1px solid var(--accent-7); border-radius: 9px; } .marker__pill span{ font-size: 10px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; color: var(--white); } .previewDock{ position: absolute; inset: 0; display: flex; align-items: center; justify-content: flex-end; padding: 40px; pointer-events: none; } .previewDock:not(:empty){ pointer-events: auto; } .preview__backdrop{ position: absolute; inset: 0; cursor: pointer; z-index: 1; } .preview{ width: 320px; pointer-events: auto; position: relative; z-index: 2; animation: previewIn .18s ease-out; } @keyframes previewIn{ from { opacity: 0; transform: translateX(50px) scale(.92); } to { opacity: 1; transform: translateX(0) scale(1); } } .preview__card{ background: var(--black-9); border-radius: 12px; overflow: hidden; } .preview__hero{ position: relative; height: 242px; width: 100%; background: var(--panel-10); } .preview__hero img{ width: 100%; height: 100%; object-fit: cover; filter: grayscale(.5); transition: filter .7s ease; } .preview__hero:hover img{ filter: grayscale(0); } .preview__hero::after{ content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent, var(--black)); opacity: .8; } .preview__heroMeta{ position: absolute; left: 16px; right: 16px; bottom: 16px; z-index: 2; } .preview__title{ font-size: 20px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; margin: 0 0 6px 0; } .preview__chips{ display: flex; gap: 8px; } .chip{ font-size: 8px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; padding: 4px 8px; border-radius: 6px; } .chip--accent{ background: var(--accent); color: var(--white); } .chip--muted{ background: var(--bg-7); color: var(--text-4); } .preview__body{ padding: 24px; } .preview__desc{ margin: 0 0 18px 0; color: var(--text-4); font-size: 12px; font-weight: 600; line-height: 1.6; } .preview__actions{ display: grid; gap: 12px; } .btn{ width: 100%; border: 0; border-radius: 6px; padding: 10px 16px; cursor: pointer; font-weight: 900; letter-spacing: .18em; text-transform: uppercase; font-size: 12px; } .btn--primary{ background: var(--accent); color: var(--white); display: flex; align-items: center; justify-content: space-between; transition: transform .15s ease; } .btn--primary:hover{ transform: translateX(5px); } .btn--ghost{ background: transparent; color: var(--text-5); font-size: 10px; padding: 6px 10px; border-radius: 10px; transition: color .15s ease; } .btn--ghost:hover{ color: var(--white); } .btn__ico{ width: 18px; height: 18px; display: inline-flex; } .btn__ico svg{ width: 100%; height: 100%; transition: transform .2s ease; } .btn--primary:hover .btn__ico svg{ transform: rotate(45deg); } /* Tactical accents */ .preview__accents{ position: absolute; top: 8px; right: 8px; display: flex; gap: 4px; z-index: 3; } .accentBar{ width: 4px; height: 16px; background: var(--accent-7); } .accentBar--solid{ background: var(--accent-10); }