@font-face { font-family: 'Minecraft'; src: url('../font/MinecraftRegular-Bmg3.otf') format('opentype'); font-weight: normal; font-style: normal; font-display: swap; } @import "tailwindcss"; @layer base { /* Sticky footer base styles */ html { height: 100%; } body { min-height: 100%; display: flex; flex-direction: column; } h1, h2, h3, h4, h5, h6 { font-family: 'Minecraft', sans-serif; /* Apply Minecraft font to headers */ } #app { flex: 1 0 auto; /* Make #app grow to fill available space */ display: flex; flex-direction: column; } main { flex-grow: 1; /* Ensure main grows within #app */ } footer { flex-shrink: 0; /* Prevent footer from shrinking */ } } @layer components { .spinner { border: 4px solid rgba(255, 225, 225, 0.3); border-top: 4px solid #ffffff; border-radius: 50%; width: 24px; height: 24px; animation: spin 1s linear infinite; display: inline-block; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } #notificationContainer { position: fixed; bottom: 20px; right: 20px; z-index: 1000; display: flex; flex-direction: column-reverse; gap: 8px; } .notification { background-color: #1f2937; color: white; padding: 16px; border-radius: 8px; display: flex; align-items: center; gap: 12px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); transition: opacity 0.3s ease; } .notification.success { background-color: #158106; } .notification.error { background-color: #b91c1c; } #dockerLogsTerminal { background-color: #1f2937; padding: 1rem; border-radius: 0.5rem; max-height: 12rem; width: 100%; } .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; } .control-btn { padding: 0.5rem 1rem; font-size: 0.875rem; line-height: 1.25rem; transition: all 0.2s ease; min-width: 80px; text-align: center; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .control-btn:hover:not(.disabled-btn) { transform: translateY(-1px); } .control-btn:active:not(.disabled-btn) { transform: translateY(0); } /* Existing player button styles */ .tell-player { @apply bg-blue-600 hover:bg-blue-700 px-2 py-1 rounded text-sm; font-family: 'Minecraft', sans-serif; transition: all 0.2s ease; } .give-player { @apply bg-green-600 hover:bg-green-700 px-2 py-1 rounded text-sm; font-family: 'Minecraft', sans-serif; transition: all 0.2s ease; } .op-player, .deop-player { @apply bg-purple-600 hover:bg-purple-700 px-2 py-1 rounded text-sm; font-family: 'Minecraft', sans-serif; transition: all 0.2s ease; } .kick-player, .ban-player { @apply bg-red-600 hover:bg-red-700 px-2 py-1 rounded text-sm; font-family: 'Minecraft', sans-serif; transition: all 0.2s ease; } /* New player button styles */ .teleport-player { @apply bg-cyan-600 hover:bg-cyan-700 px-2 py-1 rounded text-sm; font-family: 'Minecraft', sans-serif; transition: all 0.2s ease; } .teleport-player:hover:not(.disabled-btn) { transform: translateY(-1px); } .teleport-player:active:not(.disabled-btn) { transform: translateY(0); } .effect-player { @apply bg-teal-600 hover:bg-teal-700 px-2 py-1 rounded text-sm; font-family: 'Minecraft', sans-serif; transition: all 0.2s ease; } .effect-player:hover:not(.disabled-btn) { transform: translateY(-1px); } .effect-player:active:not(.disabled-btn) { transform: translateY(0); } .modal { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.75); display: flex; align-items: center; justify-content: center; z-index: 1000; } .modal-content { background: #1f2937; padding: 1.5rem; border-radius: 0.5rem; width: 100%; max-width: 600px; position: relative; max-height: 80vh; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #4b5563 #1f2937; } .modal-content::-webkit-scrollbar { width: 8px; } .modal-content::-webkit-scrollbar-track { background: #1f2937; } .modal-content::-webkit-scrollbar-thumb { background: #4b5563; border-radius: 4px; } .modal-content::-webkit-scrollbar-thumb:hover { background: #6b7280; } .modal-close { position: absolute; top: 0.5rem; right: 0.5rem; background: none; border: none; color: white; font-size: 1.25rem; cursor: pointer; } .disabled-btn { opacity: 0.5; cursor: not-allowed; pointer-events: none; } .disabled-btn:hover { cursor: not-allowed; } } @layer utilities { /* Add any custom utilities if needed */ } /* Media queries */ @media (max-width: 640px) { .bg-gray-800.p-6.rounded-lg.shadow-lg .grid { grid-template-columns: 1fr; } .bg-gray-800.p-6.rounded-lg.shadow-lg p { display: flex; flex-direction: column; gap: 0.5rem; word-break: break-all; } .bg-gray-800.p-6.rounded-lg.shadow-lg a, .bg-gray-800.p-6.rounded-lg.shadow-lg span { word-break: break-all; overflow-wrap: anywhere; white-space: normal; } .bg-gray-800.p-6.rounded-lg.shadow-lg button { width: 100%; margin-top: 0.5rem; } /* Ensure player buttons stack nicely on mobile */ .tell-player, .give-player, .teleport-player, .effect-player, .op-player, .deop-player, .kick-player, .ban-player { width: 100%; text-align: center; margin-top: 0.25rem; } } /* Additional styles */ .bg-gray-800.p-6.rounded-lg.shadow-lg .grid { overflow-x: hidden; } .bg-gray-800.p-6.rounded-lg.shadow p { max-width: 100%; }