742 lines
13 KiB
CSS
742 lines
13 KiB
CSS
@import "tailwindcss";
|
|
|
|
@font-face {
|
|
font-family: 'Minecraft';
|
|
src: url('../font/MinecraftRegular-Bmg3.otf') format('opentype');
|
|
font-weight: normal;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
|
|
@layer base {
|
|
#particles-js {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100vw;
|
|
height: 100vh;
|
|
z-index: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
#particles-js canvas {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
html {
|
|
@apply h-full;
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
*,
|
|
*:before,
|
|
*:after {
|
|
box-sizing: inherit;
|
|
}
|
|
|
|
body {
|
|
@apply min-h-full flex flex-col text-white;
|
|
font-family: 'Roboto', 'Verdana', sans-serif;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
h5,
|
|
h6 {
|
|
@apply font-[Minecraft] text-white;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
.xterm {
|
|
width: 100%;
|
|
height: 100%;
|
|
padding: 8px;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.xterm .xterm-viewport {
|
|
overflow-y: auto;
|
|
scrollbar-width: thin;
|
|
scrollbar-color: #4b5563 #1f2937;
|
|
}
|
|
|
|
.xterm .xterm-viewport::-webkit-scrollbar {
|
|
width: 8px;
|
|
}
|
|
|
|
.xterm .xterm-viewport::-webkit-scrollbar-track {
|
|
background: #1f2937;
|
|
}
|
|
|
|
.xterm .xterm-viewport::-webkit-scrollbar-thumb {
|
|
background: #4b5563;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.xterm .xterm-viewport::-webkit-scrollbar-thumb:hover {
|
|
background: #6b7280;
|
|
}
|
|
|
|
.xterm .xterm-screen {
|
|
width: 100% !important;
|
|
height: 100% !important;
|
|
}
|
|
|
|
.xterm .xterm-char {
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.xterm .xterm-rows {
|
|
overflow: hidden;
|
|
white-space: pre-wrap;
|
|
}
|
|
|
|
#app {
|
|
@apply flex-grow;
|
|
}
|
|
|
|
main {
|
|
@apply flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-6;
|
|
}
|
|
|
|
footer {
|
|
@apply bg-gray-800 py-4 text-center;
|
|
}
|
|
|
|
canvas {
|
|
@apply w-full max-w-[150px] h-auto;
|
|
aspect-ratio: 1/1;
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
@apply bg-gray-800;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
@apply bg-blue-600 rounded;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
@apply bg-blue-700;
|
|
}
|
|
}
|
|
|
|
@layer components {
|
|
.section-bg {
|
|
@apply bg-gray-800 p-6 rounded-lg shadow-lg mb-6 w-full max-w-full;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
.modal {
|
|
@apply fixed inset-0 bg-black/30 flex items-center justify-center z-[1000] backdrop-blur-sm;
|
|
}
|
|
|
|
.modal-content {
|
|
@apply bg-gray-800/60 p-6 rounded-2xl w-full max-w-xl relative max-h-[80vh] overflow-y-auto;
|
|
backdrop-filter: blur(12px);
|
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
|
|
scrollbar-width: thin;
|
|
scrollbar-color: #4B5563 #1F2937;
|
|
}
|
|
|
|
.modal-content input,
|
|
.modal-content textarea,
|
|
.modal-content select {
|
|
@apply bg-gray-800/50 text-white p-2 rounded-lg w-full;
|
|
backdrop-filter: blur(8px);
|
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.modal-content input:focus,
|
|
.modal-content textarea:focus,
|
|
.modal-content select:focus {
|
|
@apply outline-none border-blue-400;
|
|
box-shadow: 0 0 8px rgba(59, 130, 246, 0.5);
|
|
}
|
|
|
|
.modal-content input::placeholder,
|
|
.modal-content textarea::placeholder {
|
|
@apply text-gray-300 opacity-70;
|
|
}
|
|
|
|
.modal-content .item-entry input {
|
|
@apply bg-gray-800/50 text-white p-2 rounded-lg w-full sm:w-auto;
|
|
backdrop-filter: blur(8px);
|
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
}
|
|
|
|
.modal-content::-webkit-scrollbar {
|
|
@apply w-2;
|
|
}
|
|
|
|
.modal-content::-webkit-scrollbar-track {
|
|
@apply bg-gray-800/40;
|
|
}
|
|
|
|
.modal-content::-webkit-scrollbar-thumb {
|
|
@apply bg-gray-600 rounded;
|
|
}
|
|
|
|
.modal-content::-webkit-scrollbar-thumb:hover {
|
|
@apply bg-gray-500;
|
|
}
|
|
|
|
.modal-close {
|
|
@apply absolute top-2 right-2 bg-transparent border-none text-white text-xl cursor-pointer hover:text-gray-300 transition-colors;
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.holesail-output-mobile-hidden {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.control-btn {
|
|
@apply text-white font-medium px-4 py-2 rounded transition duration-200;
|
|
}
|
|
|
|
.spinner {
|
|
@apply border-4 border-gray-700 border-t-blue-600 rounded-full w-6 h-6 animate-spin inline-block;
|
|
}
|
|
|
|
@keyframes spin {
|
|
0% {
|
|
transform: rotate(0deg);
|
|
}
|
|
|
|
100% {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
#notificationContainer {
|
|
@apply fixed bottom-4 right-4 z-[1000] flex flex-col-reverse gap-3;
|
|
}
|
|
|
|
.notification {
|
|
@apply bg-gray-800/70 text-white p-3 rounded-lg flex items-center gap-2 shadow-lg;
|
|
backdrop-filter: blur(12px);
|
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
|
|
max-width: min(90%, 400px);
|
|
min-height: 48px;
|
|
max-height: 200px;
|
|
overflow-y: auto;
|
|
white-space: normal;
|
|
word-break: break-word;
|
|
font-size: 0.875rem;
|
|
animation: slideIn 0.3s ease-out;
|
|
transition: transform 0.2s ease, opacity 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.notification:hover {
|
|
@apply transform scale-105;
|
|
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.notification.success {
|
|
@apply bg-green-600/20;
|
|
border: 1px solid rgba(34, 197, 94, 0.2);
|
|
backdrop-filter: blur(12px);
|
|
}
|
|
|
|
.notification.error {
|
|
@apply bg-red-600/20;
|
|
border: 1px solid rgba(239, 68, 68, 0.2);
|
|
backdrop-filter: blur(12px);
|
|
}
|
|
|
|
.notification::-webkit-scrollbar {
|
|
width: 6px;
|
|
}
|
|
|
|
.notification::-webkit-scrollbar-track {
|
|
@apply bg-gray-800/40;
|
|
}
|
|
|
|
.notification::-webkit-scrollbar-thumb {
|
|
@apply bg-gray-600 rounded;
|
|
}
|
|
|
|
.notification::-webkit-scrollbar-thumb:hover {
|
|
@apply bg-gray-500;
|
|
}
|
|
|
|
@keyframes slideIn {
|
|
from {
|
|
transform: translateX(100%);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translateX(0);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
#dockerLogsTerminal {
|
|
@apply bg-gray-900 p-4 rounded-lg w-full max-w-full box-border;
|
|
height: 300px;
|
|
overflow-y: hidden;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
.xterm .xterm-viewport {
|
|
@apply overflow-y-auto;
|
|
height: 300px;
|
|
scrollbar-width: thin;
|
|
scrollbar-color: #3b82f6 #1f2937;
|
|
}
|
|
|
|
.xterm .xterm-viewport::-webkit-scrollbar {
|
|
width: 8px;
|
|
}
|
|
|
|
.xterm .xterm-viewport::-webkit-scrollbar-track {
|
|
@apply bg-gray-800;
|
|
}
|
|
|
|
.xterm .xterm-viewport::-webkit-scrollbar-thumb {
|
|
@apply bg-blue-600 rounded;
|
|
}
|
|
|
|
.xterm .xterm-viewport::-webkit-scrollbar-thumb:hover {
|
|
@apply bg-blue-700;
|
|
}
|
|
|
|
.xterm .xterm-screen {
|
|
@apply w-full;
|
|
}
|
|
|
|
.item-entry {
|
|
@apply flex items-center gap-2 mb-2 w-full flex-wrap;
|
|
}
|
|
|
|
.item-entry input {
|
|
@apply bg-gray-700 p-2 rounded text-white w-full sm:w-auto;
|
|
}
|
|
|
|
.item-entry .item-amount {
|
|
@apply w-16 sm:w-12;
|
|
}
|
|
|
|
[role="switch"] {
|
|
@apply inline-block relative w-10 h-6 cursor-pointer;
|
|
}
|
|
|
|
[role="switch"]>div:first-child {
|
|
@apply block w-full h-full rounded-full bg-gray-600 transition-colors duration-200;
|
|
}
|
|
|
|
[role="switch"]>div:last-child {
|
|
@apply absolute w-4 h-4 rounded-full bg-white top-1 left-1 transition-all duration-200 shadow-sm;
|
|
}
|
|
|
|
[role="switch"][aria-checked="true"]>div:first-child {
|
|
@apply bg-gradient-to-r from-blue-600 to-blue-800;
|
|
}
|
|
|
|
[role="switch"][aria-checked="true"]>div:last-child {
|
|
@apply left-5;
|
|
}
|
|
|
|
[role="switch"][aria-checked="false"]>div:first-child {
|
|
@apply bg-gray-600;
|
|
}
|
|
|
|
[role="switch"][aria-checked="false"]>div:last-child {
|
|
@apply left-1;
|
|
}
|
|
|
|
[role="switch"]:hover:not([aria-disabled="true"])>div:first-child {
|
|
@apply bg-gradient-to-r from-blue-700 to-blue-900;
|
|
}
|
|
|
|
[role="switch"][aria-disabled="true"]>div:first-child {
|
|
@apply bg-gray-600 cursor-not-allowed opacity-50;
|
|
}
|
|
|
|
#sftpIframe {
|
|
@apply w-full rounded;
|
|
height: 70vh;
|
|
min-height: 350px;
|
|
}
|
|
|
|
#propertiesSearch {
|
|
@apply bg-gray-700 p-2 rounded text-white w-full;
|
|
}
|
|
|
|
#propertiesList {
|
|
@apply space-y-2;
|
|
}
|
|
|
|
.nav-btn {
|
|
@apply bg-blue-600 text-white font-medium px-3 py-1 rounded transition duration-200 text-sm;
|
|
}
|
|
|
|
.nav-btn2 {
|
|
@apply bg-blue-600 text-white font-medium px-3 py-1 rounded transition duration-200 text-sm;
|
|
}
|
|
|
|
.nav-btn:hover:not(.disabled) {
|
|
@apply bg-blue-700;
|
|
}
|
|
|
|
.nav-btn.current {
|
|
@apply bg-blue-800 border-2 border-blue-400 font-bold;
|
|
}
|
|
|
|
.nav-btn.disabled {
|
|
@apply bg-gray-600 cursor-not-allowed opacity-50;
|
|
}
|
|
|
|
.pagination-container {
|
|
@apply flex justify-center items-center gap-1 mt-4;
|
|
}
|
|
|
|
.pagination-container .nav-btn {
|
|
@apply px-2 py-0.5 text-xs rounded-sm;
|
|
}
|
|
|
|
.pagination-container .nav-btn.current {
|
|
@apply bg-blue-800 border-1 border-blue-400 font-bold;
|
|
}
|
|
|
|
.pagination-container .nav-btn.disabled {
|
|
@apply bg-gray-600 cursor-not-allowed opacity-50;
|
|
}
|
|
}
|
|
|
|
.hamburger {
|
|
@apply md:hidden flex flex-col justify-center items-center w-10 h-10 fixed top-4 right-4 z-[99999];
|
|
}
|
|
|
|
.hamburger .bar {
|
|
@apply w-6 h-0.5 bg-blue-400 mb-1.5 transition-all duration-300;
|
|
}
|
|
|
|
.hamburger.active .bar:nth-child(1) {
|
|
@apply translate-y-2 rotate-45;
|
|
}
|
|
|
|
.hamburger.active .bar:nth-child(2) {
|
|
@apply opacity-0;
|
|
}
|
|
|
|
.hamburger.active .bar:nth-child(3) {
|
|
@apply -translate-y-2 -rotate-45;
|
|
}
|
|
|
|
.mobile-nav-container {
|
|
@apply hidden fixed inset-0 flex-col items-center justify-center bg-gray-900 z-[99998] p-4;
|
|
transition: opacity 0.3s ease, visibility 0.3s ease;
|
|
}
|
|
|
|
.mobile-nav-container.active {
|
|
@apply flex opacity-100 visible;
|
|
}
|
|
|
|
.mobile-nav-container ul li a,
|
|
.mobile-nav-container ul li button {
|
|
@apply block px-4 py-2 rounded text-lg text-white bg-blue-600 hover:bg-blue-700 mb-4;
|
|
}
|
|
|
|
.control-btn {
|
|
@apply text-white font-medium px-4 py-2 rounded transition duration-200;
|
|
}
|
|
|
|
#startBtn {
|
|
@apply bg-green-600 hover:bg-green-700;
|
|
}
|
|
|
|
#stopBtn {
|
|
@apply bg-red-600 hover:bg-red-700;
|
|
}
|
|
|
|
#restartBtn {
|
|
@apply bg-yellow-500 hover:bg-yellow-600 text-black;
|
|
}
|
|
|
|
.disabled-btn {
|
|
@apply pointer-events-none cursor-not-allowed opacity-50;
|
|
}
|
|
|
|
.disabled-btn:hover {
|
|
@apply cursor-not-allowed;
|
|
}
|
|
|
|
.copy-key-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0.25rem;
|
|
background-color: #374151;
|
|
border-radius: 0.25rem;
|
|
color: #ffffff;
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.copy-key-btn:hover {
|
|
background-color: #4b5563;
|
|
}
|
|
|
|
.copy-key-btn svg {
|
|
width: 1rem;
|
|
height: 1rem;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.section-bg {
|
|
@apply p-4;
|
|
}
|
|
|
|
.modal-content {
|
|
@apply p-4 max-w-[95%] rounded-xl;
|
|
}
|
|
|
|
.modal-content input,
|
|
.modal-content textarea,
|
|
.modal-content select {
|
|
@apply p-2 text-sm;
|
|
}
|
|
|
|
.section-bg .grid {
|
|
@apply grid-cols-1;
|
|
}
|
|
|
|
.section-bg .flex {
|
|
@apply flex-col gap-2;
|
|
}
|
|
|
|
canvas {
|
|
@apply max-w-[120px];
|
|
}
|
|
|
|
.section-bg input,
|
|
.section-bg textarea,
|
|
.section-bg select {
|
|
@apply p-2 text-sm;
|
|
}
|
|
|
|
.section-bg pre {
|
|
@apply text-sm;
|
|
}
|
|
|
|
#sftpIframe {
|
|
@apply h-[40vh] min-h-[400px];
|
|
}
|
|
|
|
#consoleOutput {
|
|
@apply h-32 text-sm;
|
|
}
|
|
|
|
.notification {
|
|
@apply p-2 text-sm max-w-[80%] min-h-[40px] max-h-[180px];
|
|
}
|
|
|
|
h1 {
|
|
@apply text-3xl;
|
|
}
|
|
|
|
h2 {
|
|
@apply text-xl;
|
|
}
|
|
|
|
h3 {
|
|
@apply text-base;
|
|
}
|
|
|
|
p,
|
|
span,
|
|
a {
|
|
@apply text-sm;
|
|
}
|
|
|
|
.nav-btn {
|
|
@apply hidden;
|
|
}
|
|
|
|
.hamburger {
|
|
@apply flex;
|
|
}
|
|
|
|
.control-btn {
|
|
@apply px-3 py-1 text-sm;
|
|
}
|
|
|
|
.item-entry {
|
|
@apply flex-col gap-1;
|
|
}
|
|
|
|
.item-entry .item-amount {
|
|
@apply w-full;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.section-bg {
|
|
@apply p-3;
|
|
}
|
|
|
|
.modal-content {
|
|
@apply p-3 max-w-[95%] rounded-xl;
|
|
}
|
|
|
|
.modal-content input,
|
|
.modal-content textarea,
|
|
.modal-content select {
|
|
@apply p-1 text-xs;
|
|
}
|
|
|
|
canvas {
|
|
@apply max-w-[100px];
|
|
}
|
|
|
|
.section-bg input,
|
|
.section-bg textarea,
|
|
.section-bg select {
|
|
@apply p-1 text-xs;
|
|
}
|
|
|
|
.section-bg pre {
|
|
@apply text-xs;
|
|
}
|
|
|
|
#sftpIframe {
|
|
@apply h-[35vh] min-h-[250px];
|
|
}
|
|
|
|
#consoleOutput {
|
|
@apply h-28 text-xs;
|
|
}
|
|
|
|
.notification {
|
|
@apply p-2 text-xs max-w-[85%] min-h-[36px] max-h-[160px];
|
|
}
|
|
|
|
h1 {
|
|
@apply text-2xl;
|
|
}
|
|
|
|
h2 {
|
|
@apply text-lg;
|
|
}
|
|
|
|
h3 {
|
|
@apply text-sm;
|
|
}
|
|
|
|
p,
|
|
span,
|
|
a {
|
|
@apply text-xs;
|
|
}
|
|
|
|
.control-btn {
|
|
@apply px-2 py-1 text-xs;
|
|
}
|
|
}
|
|
|
|
.bg-gray-700 {
|
|
background-color: #151d31;
|
|
}
|
|
|
|
|
|
|
|
@media (max-width: 480px) {
|
|
.section-bg {
|
|
@apply p-2;
|
|
}
|
|
|
|
.modal-content {
|
|
@apply p-2 max-w-[98%] rounded-xl;
|
|
}
|
|
|
|
.modal-content input,
|
|
.modal-content textarea,
|
|
.modal-content select {
|
|
@apply p-1 text-xs;
|
|
}
|
|
|
|
canvas {
|
|
@apply max-w-[80px];
|
|
}
|
|
|
|
.section-bg input,
|
|
.section-bg textarea,
|
|
.section-bg select {
|
|
@apply p-1 text-xs;
|
|
}
|
|
|
|
.section-bg pre {
|
|
@apply text-xs;
|
|
}
|
|
|
|
#sftpIframe {
|
|
@apply h-[30vh] min-h-[200px];
|
|
}
|
|
|
|
#consoleOutput {
|
|
@apply h-24 text-xs;
|
|
}
|
|
|
|
.notification {
|
|
@apply p-1.5 text-xs max-w-[90%] min-h-[32px] max-h-[140px];
|
|
}
|
|
|
|
h1 {
|
|
@apply text-xl;
|
|
}
|
|
|
|
h2 {
|
|
@apply text-base;
|
|
}
|
|
|
|
h3 {
|
|
@apply text-xs;
|
|
}
|
|
|
|
p,
|
|
span,
|
|
a {
|
|
@apply text-xs;
|
|
}
|
|
|
|
.control-btn {
|
|
@apply px-2 py-1 text-xs;
|
|
}
|
|
|
|
#particles-js {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100vw;
|
|
height: 100vh;
|
|
z-index: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
#particles-js canvas {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
} |