/* Lockpicking Minigame Styles */ /* Override header positioning for lockpicking */ .minigame-header { position: relative !important; background: rgba(34, 34, 34, 0.95); padding: 10px 20px; margin-bottom: 20px; border-radius: 5px; } .minigame-header h3 { font-family: 'Press Start 2P', monospace; font-size: 16px; margin: 0 0 10px 0; } .minigame-header p { font-family: 'VT323', monospace; font-size: 18px; margin: 0; } .lock-visual { display: flex; justify-content: space-evenly; align-items: center; gap: 20px; height: 300px; /* Taller for better visibility */ background: #f0e6a6; /* Light yellow/beige background */ border-radius: 5px; padding: 25px; position: relative; margin: 20px auto; /* Center and add margins */ border: 2px solid #887722; max-width: 800px; /* Reasonable maximum width */ width: 90%; /* Responsive width */ } .pin { width: 40px; height: 200px; /* Taller to match container */ position: relative; background: transparent; border-radius: 4px 4px 0 0; overflow: visible; cursor: pointer; transition: transform 0.1s; margin: 0 15px; } .pin:hover { opacity: 0.9; } .shear-line { position: absolute; width: 100%; height: 2px; background: #aa8833; bottom: 60px; /* Match driver pin starting position */ z-index: 5; } .key-pin { position: absolute; bottom: 0; width: 100%; height: 0px; /* Start at 0px, grows dynamically via JavaScript */ background: #dd3333; /* Red for key pins */ border-radius: 0 0 0 0; clip-path: polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%); /* Pointed bottom */ transition: height 0.1s ease; /* Smooth height animation */ } .driver-pin { position: absolute; width: 100%; height: 40px; /* Smaller height for better proportion */ background: #3388dd; /* Blue for driver pins */ bottom: 60px; /* Start at shear line level */ border-radius: 4px 4px 0 0; transition: bottom 0.1s ease, background-color 0.3s; } .spring { position: absolute; bottom: 100px; /* Positioned above driver pin */ width: 100%; height: 30px; background: repeating-linear-gradient( to bottom, #cccccc 0px, #cccccc 2px, #999999 2px, #999999 4px ); transition: transform 0.1s ease; } .pin.binding { box-shadow: 0 0 8px 2px #ffcc00; } /* Keep driver pin (blue) above the shear line when set */ .pin.set .driver-pin { background: #22aa22; /* Green to indicate set */ } /* Key pin turns green when set */ .pin.set .key-pin { background: #22aa22; /* Green to indicate set */ } .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-family: 'VT323', monospace; font-size: 18px; } .tension-control { display: grid; grid-template-columns: auto 1fr; gap: 20px; align-items: center; background: #333; padding: 20px; border-radius: 5px; margin-top: 20px; } .tension-wrench-container { display: flex; flex-direction: column; align-items: center; gap: 10px; position: relative; width: 150px; height: 60px; } .tension-track { width: 100%; height: 10px; background: #444; border-radius: 5px; position: relative; overflow: hidden; } .tension-progress { position: absolute; height: 100%; width: 0%; background: linear-gradient(to right, #666, #2196F3); transition: width 0.3s; } .tension-status { font-size: 16px; text-align: left; padding-left: 10px; } .tension-wrench { width: 60px; height: 40px; background: #666; border-radius: 4px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: transform 0.3s, background-color 0.3s; position: absolute; left: 0; top: 20px; z-index: 2; box-shadow: 0 2px 5px rgba(0,0,0,0.3); } .tension-wrench:hover { background: #777; } .tension-wrench.active { background: #2196F3; } .wrench-handle { width: 60%; height: 10px; background: #999; position: absolute; } .wrench-tip { width: 20px; height: 30px; background: #999; position: absolute; left: 5px; } .instructions { text-align: center; margin-bottom: 10px; font-size: 12px; color: #ccc; } /* General success/failure message styles */ .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; } .tension-control { display: grid; grid-template-columns: auto 1fr; gap: 20px; align-items: center; background: #333; padding: 20px; border-radius: 5px; margin-top: 20px; } .tension-wrench-container { display: flex; flex-direction: column; align-items: center; gap: 10px; position: relative; width: 150px; height: 60px; } .tension-track { width: 100%; height: 10px; background: #444; border-radius: 5px; position: relative; overflow: hidden; } .tension-progress { position: absolute; height: 100%; width: 0%; background: linear-gradient(to right, #666, #2196F3); transition: width 0.3s; } .tension-status { font-size: 16px; text-align: left; padding-left: 10px; } .tension-wrench { width: 60px; height: 40px; background: #666; border-radius: 4px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: transform 0.3s, background-color 0.3s; position: absolute; left: 0; top: 20px; z-index: 2; box-shadow: 0 2px 5px rgba(0,0,0,0.3); } .tension-wrench:hover { background: #777; } .tension-wrench.active { background: #2196F3; } .wrench-handle { width: 60%; height: 10px; background: #999; position: absolute; } .wrench-tip { width: 20px; height: 30px; background: #999; position: absolute; left: 5px; } .cylinder { height: 20px; margin-top: -5px; } .lock-visual { display: flex; justify-content: space-evenly; align-items: center; gap: 10px; height: 160px; background: #f0e6a6; /* Light yellow/beige background */ border-radius: 5px; padding: 15px; position: relative; margin-bottom: 10px; 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-family: 'VT323', monospace; font-size: 18px; } /* Phaser-specific styles */ .phaser-game-container { width: 100%; height: 400px; background: #1a1a1a; border-radius: 5px; margin: 20px 0; display: flex; justify-content: center; align-items: center; border: 2px solid #444; } .phaser-game-container canvas { border-radius: 5px; max-width: 100%; max-height: 100%; }