Files
BreakEscape/css/lockpicking.css

515 lines
9.7 KiB
CSS
Raw Normal View History

/* 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%;
}