/* Minigames Styles */ /* Lockpicking Game */ .lockpick-container { width: 350px; height: 300px; background: #8A5A3C; border-radius: 10px; position: relative; margin: 20px auto; box-shadow: 0 0 20px rgba(0, 0, 0, 0.5); border: 2px solid #887722; } .pin { width: 30px; height: 110px; position: relative; background: transparent; border-radius: 4px 4px 0 0; overflow: visible; cursor: pointer; transition: transform 0.1s; margin: 0 5px; } .pin:hover { opacity: 0.9; } .shear-line { position: absolute; width: 100%; height: 2px; background: #aa8833; bottom: 50px; z-index: 5; } .key-pin { position: absolute; bottom: 0; width: 100%; height: 0px; background: #dd3333; /* Red for key pins */ transition: height 0.05s; border-radius: 0 0 0 0; clip-path: polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%); /* Pointed bottom */ } .driver-pin { position: absolute; width: 100%; height: 50px; background: #3388dd; /* Blue for driver pins */ transition: bottom 0.05s; bottom: 50px; border-radius: 0 0 0 0; } .spring { position: absolute; bottom: 100px; width: 100%; height: 25px; background: linear-gradient(to bottom, #cccccc 0%, #cccccc 20%, #999999 20%, #999999 25%, #cccccc 25%, #cccccc 40%, #999999 40%, #999999 45%, #cccccc 45%, #cccccc 60%, #999999 60%, #999999 65%, #cccccc 65%, #cccccc 80%, #999999 80%, #999999 85%, #cccccc 85%, #cccccc 100% ); transition: height 0.05s; } .pin.binding { box-shadow: 0 0 8px 2px #ffcc00; } .pin.set .driver-pin { bottom: 52px; /* Just above shear line */ background: #22aa22; /* Green to indicate set */ } .pin.set .key-pin { height: 49px; /* Just below shear line */ background: #22aa22; /* Green to indicate set */ clip-path: polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%); } .cylinder { display: flex; justify-content: center; align-items: center; width: 100%; height: 30px; background: #ddbb77; border-radius: 5px; margin-top: 5px; position: relative; z-index: 0; border: 2px solid #887722; } .cylinder-inner { width: 80%; height: 20px; background: #ccaa66; border-radius: 3px; transform-origin: center; transition: transform 0.3s; } .cylinder.rotated .cylinder-inner { transform: rotate(15deg); } .lockpick-feedback { padding: 15px; background: #333; border-radius: 5px; text-align: center; min-height: 30px; margin-top: 20px; font-size: 16px; } /* Minigame Framework Styles */ .minigame-container { position: fixed; top: 2vh; left: 2vw; width: 96vw; height: 96vh; background: rgba(0, 0, 0, 0.95); z-index: 2000; display: flex; flex-direction: column; justify-content: center; align-items: center; font-family: 'Press Start 2P', monospace; color: white; border-radius: 10px; border: 2px solid #444; box-shadow: 0 0 30px rgba(0, 0, 0, 0.8); } .minigame-header { width: 100%; text-align: center; font-size: 18px; margin-bottom: 20px; color: #3498db; } .minigame-game-container { width: 80%; max-width: 600px; height: 60%; margin: 20px auto; background: #1a1a1a; border-radius: 5px; box-shadow: 0 0 15px rgba(0, 0, 0, 0.5) inset; position: relative; overflow: hidden; } .minigame-message-container { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1000; } .minigame-success-message { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(46, 204, 113, 0.9); color: white; padding: 20px; border-radius: 10px; text-align: center; z-index: 10001; font-size: 14px; border: 2px solid #27ae60; box-shadow: 0 0 20px rgba(46, 204, 113, 0.5); } .minigame-failure-message { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(231, 76, 60, 0.9); color: white; padding: 20px; border-radius: 10px; text-align: center; z-index: 10001; font-size: 14px; border: 2px solid #c0392b; box-shadow: 0 0 20px rgba(231, 76, 60, 0.5); } .minigame-controls { display: flex; justify-content: center; gap: 10px; margin-top: 20px; } .minigame-button { background: #3498db; color: white; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; font-family: 'Press Start 2P', monospace; font-size: 10px; transition: background 0.3s; } .minigame-button:hover { background: #2980b9; } .minigame-button:active { background: #21618c; } .minigame-progress-container { width: 100%; height: 20px; background: #333; border-radius: 10px; overflow: hidden; margin: 10px 0; } .minigame-progress-bar { height: 100%; background: #2ecc71; width: 0%; transition: width 0.3s; } /* Advanced Lockpicking specific styles */ .lock-visual { display: flex; justify-content: space-evenly; align-items: center; gap: 15px; height: 200px; background: #f0e6a6; border-radius: 5px; padding: 20px; position: relative; margin: 20px; border: 2px solid #887722; } .pin { width: 30px; height: 150px; position: relative; background: transparent; border-radius: 4px 4px 0 0; overflow: visible; cursor: pointer; transition: transform 0.1s; } .pin:hover { transform: scale(1.05); } .shear-line { position: absolute; width: 100%; height: 2px; background: #aa8833; top: 60px; z-index: 5; } .key-pin { position: absolute; bottom: 0; width: 100%; height: 0px; background: #dd3333; transition: height 0.1s; border-radius: 0 0 4px 4px; } .driver-pin { position: absolute; width: 100%; height: 40px; background: #3388dd; transition: bottom 0.1s; bottom: 60px; border-radius: 4px 4px 0 0; } .spring { position: absolute; bottom: 100px; width: 100%; height: 20px; background: repeating-linear-gradient( to bottom, #cccccc 0px, #cccccc 2px, #999999 2px, #999999 4px ); transition: height 0.1s; } .pin.binding { box-shadow: 0 0 10px 2px #ffcc00; } .pin.set .driver-pin { bottom: 62px; background: #22aa22; } .pin.set .key-pin { height: 59px; background: #22aa22; } .tension-control { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 10px; } .tension-wrench { width: 60px; height: 20px; background: #888; border-radius: 3px; cursor: pointer; transition: transform 0.2s; } .tension-wrench.active { transform: rotate(15deg); background: #ffcc00; } .instructions { text-align: center; margin-bottom: 10px; font-size: 12px; color: #ccc; } .lockpick-feedback { position: absolute; bottom: 60px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: white; padding: 10px; border-radius: 5px; text-align: center; font-size: 11px; min-width: 200px; } /* Dusting Minigame */ .dusting-container { width: 75% !important; height: 75% !important; padding: 20px; } .dusting-game-container { width: 100%; height: 60%; margin: 0 auto 20px auto; background: #1a1a1a; border-radius: 5px; box-shadow: 0 0 15px rgba(0, 0, 0, 0.5) inset; position: relative; overflow: hidden; border: 2px solid #333; } .dusting-grid-background { width: 100%; height: 100%; position: absolute; top: 0; left: 0; background-size: 20px 20px; background-repeat: repeat; z-index: 1; } .dusting-tools-container { position: absolute; top: 10px; right: 10px; display: flex; flex-direction: column; gap: 5px; z-index: 3; } .dusting-tool-button { padding: 8px 12px; border: none; border-radius: 3px; cursor: pointer; font-size: 12px; font-weight: bold; color: white; transition: opacity 0.2s, transform 0.1s; opacity: 0.7; } .dusting-tool-button:hover { opacity: 0.9; transform: scale(1.05); } .dusting-tool-button.active { opacity: 1; box-shadow: 0 0 8px rgba(255, 255, 255, 0.3); } .dusting-tool-fine { background-color: #3498db; } .dusting-tool-medium { background-color: #2ecc71; } .dusting-tool-wide { background-color: #e67e22; } .dusting-particle-container { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 2; } .dusting-particle { position: absolute; width: 3px; height: 3px; border-radius: 50%; pointer-events: none; z-index: 2; } .dusting-progress-container { position: absolute; bottom: 10px; left: 10px; right: 10px; background: rgba(0, 0, 0, 0.8); padding: 10px; border-radius: 3px; color: white; font-family: 'VT323', monospace; font-size: 14px; z-index: 3; } .dusting-grid-cell { position: absolute; background: #000; border: 1px solid #222; cursor: crosshair; } .dusting-cell-clean { background: black !important; box-shadow: none !important; } .dusting-cell-light-dust { background: #444 !important; box-shadow: inset 0 0 3px rgba(255,255,255,0.2) !important; } .dusting-cell-fingerprint { background: #0f0 !important; box-shadow: inset 0 0 5px rgba(0,255,0,0.5), 0 0 5px rgba(0,255,0,0.3) !important; } .dusting-cell-medium-dust { background: #888 !important; box-shadow: inset 0 0 4px rgba(255,255,255,0.3) !important; } .dusting-cell-heavy-dust { background: #ccc !important; box-shadow: inset 0 0 5px rgba(255,255,255,0.5) !important; } .dusting-progress-found { color: #2ecc71; } .dusting-progress-over-dusted { color: #e74c3c; } .dusting-progress-normal { color: #fff; } /* Lockpicking Game Success/Failure Messages */ .lockpicking-success-message { font-weight: bold; font-size: 18px; margin-bottom: 10px; color: #2ecc71; } .lockpicking-success-subtitle { font-size: 14px; margin-bottom: 15px; color: #fff; } .lockpicking-success-details { font-size: 12px; color: #aaa; } .lockpicking-failure-message { font-weight: bold; margin-bottom: 10px; color: #e74c3c; } .lockpicking-failure-subtitle { font-size: 16px; margin-top: 5px; color: #fff; } /* Dusting Game Success/Failure Messages */ .dusting-success-message { font-weight: bold; font-size: 24px; margin-bottom: 10px; color: #2ecc71; } .dusting-success-quality { font-size: 18px; margin-bottom: 15px; color: #fff; } .dusting-success-details { font-size: 14px; color: #aaa; } .dusting-failure-message { font-weight: bold; margin-bottom: 10px; color: #e74c3c; } .dusting-failure-subtitle { font-size: 16px; margin-top: 5px; color: #fff; } /* Minigame disabled state */ .minigame-disabled { pointer-events: none !important; } /* Biometric scanner visual feedback */ .biometric-scanner-success { border: 2px solid #00ff00 !important; } /* Close button for minigames */ .minigame-close-button { position: absolute; top: 15px; right: 15px; width: 30px; height: 30px; background: #e74c3c; color: white; border: none; border-radius: 50%; cursor: pointer; font-size: 18px; font-weight: bold; z-index: 10000; display: flex; align-items: center; justify-content: center; transition: background-color 0.3s ease; } .minigame-close-button:hover { background: #c0392b; } .minigame-close-button:active { background: #a93226; } /* Progress bar styling for dusting minigame */ .minigame-progress-container { width: 100%; height: 10px; background: #333; border-radius: 5px; overflow: hidden; margin-top: 5px; } .minigame-progress-bar { height: 100%; background: linear-gradient(90deg, #2ecc71, #27ae60); transition: width 0.3s ease; border-radius: 5px; }