body { background-color: #145b5d; font-family: 'Courier New', Courier, monospace; display: flex; flex-direction: column; align-items: center; height: 100vh; margin: 0; } .timer-top { font-size: 24px; color: #00ffaa; background-color: #222; padding: 10px 30px; border: 3px solid #00ffaa; margin-top: 20px; letter-spacing: 3px; font-family: 'Courier New', Courier, monospace; /* Dijital font stili */ background-color: #222;/ padding: 10px 30px; border: 3px solid #00ffaa; border-radius: 8px; box-shadow: 0 0 10px #00ffaa; /* Hafif parıltı efekti */ letter-spacing: 0.1em; display: inline-block; user-select: none; /* Kopyalamayı engelle */ text-align: center; } .panel { background-color: #b7b287; border: 5px solid #888; padding: 20px; border-radius: 10px; display: flex; gap: 20px; box-shadow: 0 0 10px #000; margin-top: 20px; } .keypad { background-color: #3f3f3f; padding: 10px; display: grid; grid-template-columns: repeat(9, 40px); gap: 8px; border: 2px solid #222; } .keypad button { background-color: #d0d8c0; border: none; width: 40px; height: 40px; font-size: 14px; font-weight: bold; box-shadow: inset -2px -2px 2px #999; cursor: pointer; } .keypad button.button2 { width: 36px; } .right-panel { display: flex; flex-direction: column; } .display { background-color: #325c52; color: #00ffaa; font-size: 24px; padding: 10px; margin-bottom: 10px; text-align: center; letter-spacing: 10px; border: 4px inset #222; height: 40px; transition: background-color 0.3s, color 0.3s; } .label { background-color: white; padding: 5px; margin: 10px 0; font-size: 14px; font-weight: bold; border: 1px solid #444; display: flex; justify-content: center; align-items: center; gap: 5px; } .progress-container { width: 100%; background-color: #ddd; border: 1px solid #555; height: 20px; margin-top: 10px; border-radius: 5px; overflow: hidden; } .progress-bar { height: 100%; width: 0%; background-color: #00cc00; color: white; text-align: center; font-size: 14px; line-height: 20px; transition: width 0.3s ease-in-out; } .controls { display: flex; justify-content: center; gap: 20px; margin-top: 15px; } .controls button { width: 80px; height: 40px; font-size: 16px; font-weight: bold; background-color: #444; color: #fff; border: none; border-radius: 5px; cursor: pointer; } .keypad { grid-template-columns: repeat(10, 1fr); /* artık 10 sütun */ } .keypad button.button2 { width: 100%; /* grid otomatik ayarlar */ } .keypad button { width: 40px; /* harfler için genişlik sabit */ } #win-message { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: #222; color: #0f0; padding: 20px 30px; font-size: 24px; border-radius: 10px; z-index: 1000; display: none; } #win-message.show { display: block; } #toggleMusic { position: absolute; top: 25px; /* timer-top ile hizalı */ right: 30px; /* sağ üst köşeye yakın */ background-color: #222; color: #00ffaa; border: 2px solid #00ffaa; padding: 6px 12px; font-size: 20px; border-radius: 5px; cursor: pointer; z-index: 1000; transition: background-color 0.3s ease; } #toggleMusic:hover { background-color: #00ffaa; color: #222; } .overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.35); /* %35 karanlık */ display: flex; justify-content: center; align-items: center; z-index: 999; } /* Merkezi içeriği (mesaj + buton) */ .end-screen { background: white; padding: 30px 40px; border-radius: 12px; text-align: center; box-shadow: 0 0 20px rgba(0,0,0,0.4); animation: fadeIn 0.5s ease forwards; } /* Mesaj */ .message { font-size: 24px; margin-bottom: 20px; } /* Buton */ #restart-button { padding: 12px 24px; font-size: 18px; cursor: pointer; border: none; background-color: #28a745; color: white; border-radius: 6px; transition: background-color 0.3s; } #restart-button:hover { background-color: #218838; } /* Gizleme ve gösterme */ .hidden { display: none; } /* Basit fade-in animasyonu */ @keyframes fadeIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } .end-overlay { position: absolute; top: 0; left: 0; width: 460px; /* klavye genişliğinde ayarla */ height: 360px; /* yeterli yükseklik */ background-color: #000; display: flex; justify-content: center; align-items: center; z-index: 10000; border-radius: 8px; flex-direction: column; padding: 20px; } .end-content { text-align: center; } .blink-text { font-size: 32px; font-weight: bold; margin-bottom: 20px; animation: blink 1s step-start infinite; } #restartBtn { padding: 10px 20px; font-size: 18px; background-color: #444; color: white; border: none; border-radius: 8px; cursor: pointer; } #restartBtn:hover { background-color: #666; } @keyframes blink { 50% { opacity: 0; } } .hidden { display: none; } .main { display: flex; flex-direction: column; align-items: center; justify-content: center; row-gap: 1.25em; } .buttons { display: flex; flex-direction: column; row-gap: 1.5em; } .button_pair { display: flex; column-gap: 1.5em; } .button_pair1 { display: flex; flex-direction: column; row-gap: 0.9em; } .btn { display: flex; align-items: center; justify-content: center; width: 5em; height: 5em; background-color: #171717; border-radius: 5px; } .button1 { width: 5.7em; height: 5.7em; border-radius: 10px; border: none; outline: none; background-color: #c7c3c0; box-shadow: rgba(0, 0, 0, 0.377) 10px 10px 8px, #ffffff 1.5px 1.5px 2px 0px inset, #c7c3c0 -3.2px -3.2px 8px 0px inset; cursor: pointer; font-family: Montserrat; transition: 0.1s ease-in-out; } .button2 { width: 5.7em; height: 5.7em; border-radius: 10px; border: none; outline: none; background-color: #c7c3c0; box-shadow: rgba(0, 0, 0, 0.377) 10px 10px 8px, #ffffff 1.5px 1.5px 2px 0px inset, #c7c3c0 -3.2px -3.2px 8px 0px inset; cursor: pointer; transition: 0.1s ease-in-out; } .svg1 { fill: #5f5f5f; width: 25px; height: 25px; transition: 0.1s ease-in-out; } .svg2 { fill: #5f5f5f; width: 25px; height: 25px; transition: 0.1s ease-in-out; } .button3 { display: flex; align-items: flex-start; justify-content: center; width: 5.7em; height: 5.7em; border-radius: 10px; border: none; outline: none; box-shadow: rgba(0, 0, 0, 0.377) 10px 10px 8px, #fb702c 2px 2px 10px 0px inset, #d42a02 -4px -4px 1px 0px inset; cursor: pointer; transition: 0.1s ease-in-out; } .button4 { display: flex; align-items: flex-start; justify-content: center; width: 5.7em; height: 5.7em; border-radius: 10px; border: none; outline: none; background-color: #545251; box-shadow: rgba(0, 0, 0, 0.377) 10px 10px 8px, #a8a6a4 1.5px 1.5px 1px 0px inset, #545251 -3.2px -3.2px 8px 0px inset; cursor: pointer; font-family: Montserrat; transition: 0.1s ease-in-out; } .button_text { color: white; padding-top: 0.9em; letter-spacing: 0.075em; font-size: 0.85em; transition: 0.1s ease-in-out; } .text { font-family: Montserrat; text-align: center; font-size: 0.65em; } .button1:active, .button2:active { box-shadow: rgba(0, 0, 0, 0.377) 0px 0px 0px, inset 0.5px 0.5px 4px #000000, #c7c3c0 -3.2px -3.2px 8px 0px inset; } .button1:active .svg1, .button2:active .svg2 { scale: 0.95; } .button3:active { box-shadow: rgba(0, 0, 0, 0.377) 0px 0px 0px, inset 0.5px 0.5px 4px #000000, #d42a02 -3.2px -3.2px 8px 0px inset; } .button3:active .button_text { transform: translateY(0.5px); } .button4:active { box-shadow: rgba(0, 0, 0, 0.377) 0px 0px 0px, inset 0.5px 0.5px 4px #000000, #545251 -3.2px -3.2px 8px 0px inset; } .button4:active .button_text { transform: translateY(0.5px); } @font-face { font-family: 'LCD AT&T Phne Time/Date'; src: url('https://merchedev.github.io/codepen-assets/assets/fonts/lcdat.woff') format('woff'); font-weight: normal; font-style: normal; } @mixin shadow($x, $y, $blur){ filter: drop-shadow($x $y $blur rgba(0,0,0, 0.4)); } :root{ --font: 'LCD AT&T Phne Time/Date', sans-serif; } body{ width: 100vw; height: 100vh; display: flex; justify-content: center; align-items: center; font-size: 1vw; background: radial-gradient(black 15%, transparent 16%) 0 0, radial-gradient(black 15%, transparent 16%) 8px 8px, radial-gradient(rgba(255,255,255,.1) 15%, transparent 20%) 0 1px, radial-gradient(rgba(255,255,255,.1) 15%, transparent 20%) 8px 9px; background-color:#282828; background-size:16px 16px; } .bomb{ font-size: 1.1vw; display:flex; justify-content: center; align-items: center; flex-direction: column; position:relative; filter: drop-shadow(1em 1em 0.3em rgba(0,0,0,0.5)); &--explosion{ animation: bomb 0.4s ease-out; } &__dynamite{ width: 52em; height: 9em; background: linear-gradient(#3A0101 0%, #A00202 50%, #3A0101 100%); position:relative; filter: drop-shadow(0em 0.2em 0.1em rgba(0, 0, 0, 0.5)) drop-shadow(0em -0.2em 0.1em rgba(0, 0, 0, 0.5)); &:before, &:after{ content: ''; position: absolute; width: 2em; height: 100%; top:0; background: linear-gradient(#3A0101 0%, #A00202 50%, #3A0101 100%); } &:before{ left:-1.9em; border-radius: 50% 0 0 50%; } &:after{ right:-1.9em; border-radius: 0 50% 50% 0; } &--center{ width:54em; z-index:1; } &--first{ transform: translateY(2em); } &--last{ transform: translateY(-2em); } } &__tape{ width: 3em; height: 23em; position:absolute; z-index: 2; top:calc(50% - 11.5em); left: 8em; border-radius: 50% 0 0 50% ; box-shadow: -1em 0 0 0 black, -2em 0 0 0 black, -3em 0 0 0 black, -4em 0 0 0 black; @include shadow(0em, 0em, 0.3em); &--right{ left:unset; right: 8em; border-radius: 0 50% 50% 0; box-shadow: 1em 0 0 0 black, 2em 0 0 0 black, 3em 0 0 0 black, 4em 0 0 0 black; } } &__circuit{ position:absolute; top: calc(50% - 8em); left: calc(50% - 12em); z-index: 2; } } .circuit{ font-size: 1em; background-color: #08422A; width:24em; height:16em; box-shadow: 0.1em 0.1em 0.1em rgba(0, 0, 0, 0.4), -0.1em -0.1em 0.1em rgba(0, 0, 0, 0.4), -0.1em 0.1em 0.1em rgba(0, 0, 0, 0.4), 0.1em -0.1em 0.1em rgba(0, 0, 0, 0.4), 0.3em 0.3em 0.3em rgba(0, 0, 0, 0.5); &:after{ content: ''; position: absolute; width: 1em; height: 1em; background: #3A0101; border-radius: 50%; top: 0.5em; left: 0.5em; box-shadow: 22em 0 #3A0101, 22em 14em #3A0101, 0 14em #3A0101; } &__multiplexers{ display: flex; padding: 2em 2.5em; padding-bottom: 1em; justify-content: space-between; } &__lcd-container{ display:flex; align-items: center; } &__led{ margin: 0 0.55em; width: 0.7em; height: 0.7em; border-radius:50%; border: 0.15em solid #541828; background:radial-gradient(#A33B3B 8%, #942A2A 21%, #541828 100%); @include shadow(0.4em, 0.3em, 0.2em); transition: all 0.2s ease-in-out; &--on{ border: 0.15em solid #8F2844; background:radial-gradient(#ED1818 8%, #E00505 21%, #0e0306 100%); box-shadow: 0 0 0.5em #ED1818, 0 0 0.1em #ED1818, inset 0 0 0.5em #ED1818; } } &__buttons-container{ display:flex; align-items: center; padding-left: 1.6em; padding-top: 0.4em; } &__buzzing{ width: 2em; height: 2em; border-radius: 50%; background: radial-gradient(#7F7F82 15%, #000000 20%, #000000 48%, #232326 55%, #525252 60%, #A8A8AB 63%, #525252 66%, #A8A8AB 69%, #525252 72%); box-shadow: 0.2em 0.3em 0.4em rgba(0,0,0,0.5); } &__red-button{ font-size: 1em; width: 2.3em; height: 2.3em; border-radius: 50%; margin: 0 0.4em; box-shadow: 0.1em 0.1em 0.2em rgba(0,0,0,0.4); background: radial-gradient(#C41B2B 30%, #DB3E3E 47%, #8F2844 50%, #232326 55%, #525252 65%, #525252 67%, #232326 70%); outline:none; border:none; cursor:pointer; } } .multiplexer{ font-size: 1em; background-color: #232326; border: 0.1em solid #000000; width:8.5em; height: 2.5em; position:relative; box-shadow: 0.1em 0.1em 0.6em rgba(0,0,0,0.7); &:before, &:after{ content: ''; position: absolute; height: 0.6em; top: calc(50% - 0.3em); } &:before{ width: 0.4em; background-color: black; border-radius: 0 50% 50% 0; left: -0.14em; } &:after{ width: 0.6em; border-radius: 50%; left: -0.3em; box-shadow: 1.5em 0 black, 7em 0 black; } &__text{ margin-left:auto; margin-right: 4em; color: #565547; font-family: Arial, Helvetica, sans-serif; font-size: 0.6em; max-width: 13ch; line-height: 1em; text-align: right; &--bold{ font-weight: 600; } } } .pin{ position:absolute; width:0.3em; height:0.3em; border-radius: 50%; background-color: #000000; z-index:-1; font-size: 1em; &:before{ content: ''; position: absolute; width: 0.8em; height: 0.3em; background: linear-gradient(to top, #AFAFB2 66%, #403C3A 100%); top: 0.2em; left: -0.25em; z-index:3; } &:after{ content: ''; position: absolute; width: 0.6em; height: 0.2em; top:0.1em; left:-0.15em; z-index: -1; background: linear-gradient(to top, #403C3A 54%, #AFAFB2 72%, #403C3A 100%); } } .lcd{ width: 19.5em; height:7em; background:black; position:relative; filter: drop-shadow(0.05em 0.05em 0em rgba(0, 0, 0, 0.4)) drop-shadow(-0.05em -0.05em 0em rgba(0, 0, 0, 0.4)) drop-shadow(0.4em 0.4em 0.3em rgba(0, 0, 0, 0.5)); font-size: 1em; &__background, &__time{ position:absolute; font-family: var(--font); font-size: 8em; text-align: right; right: 0.1em; top: 0.02em; } &__background{ color: rgba(255, 255, 255, 0.1); } &__time{ color: #E00505; text-shadow: 0 0 0.5em #E00505, 0 0 0.1em #E00505; .text{ width:100%; } } } .square-button{ font-size: 1em; border:none; outline:none; padding:0; width: 1.5em; max-width: 1.5em; height: 1.5em; background: linear-gradient(#616161 0%, #A8A8AB 20%, #616161 100%); border-radius: 0.15em; position: relative; display:flex; justify-content: center; align-items: center; margin: 0 1em; box-shadow: 0.3em 0.3em 0.2em rgba(0,0,0,0.3); cursor:pointer; &:after{ content:''; position:absolute; width: 0.9em; height:0.9em; border-radius: 50%; background: radial-gradient( #000000 0%, #000000 55%, #403C3A 70%); } &__pin{ font-size: 0.6em; } &__rivet{ position:absolute; width: 0.35em; height: 0.35em; border-radius: 50%; background: radial-gradient(#403C3A 0%, #000000 100%); } } @for $i from 1 through 16 { .multiplexer__pin:nth-child(#{1+$i}) { $width: 0.8em; $margin:0.22em; @if($i <= 8){ top: -0.5em; left:calc((#{$width} + #{$margin}) * (#{$i} - 0.5)); } @if($i > 8){ top: 2.7em; transform: scaleY(-1); left:calc( (#{$width} + #{$margin}) * (#{$i} - 0.5) - 8.2em); } } } @for $i from 1 through 4 { .square-button__pin:nth-child(#{$i}) { $width: 0.8em; $margin:0.28em; @if($i <= 2){ top: -0.4em; left:calc((#{$width} + #{$margin}) * (#{$i} - 0.5)); } @if($i > 2){ top: 2.6em; transform: scaleY(-1); left:calc( (#{$width} + #{$margin}) * (#{$i} - 0.5) - 2.1em); } } } @for $i from 1 through 4 { .square-button__rivet:nth-child(#{4 + $i}) { $width: 0.35em; $margin:0.35em; @if($i == 1 ){ left: 0.1em; } @else if($i == 3){ left: 0.1em; } @else{ left:1.1em; } @if($i <= 2){ top: 0.1em; } @if($i > 2){ top: 1.1em; } } } #wires{ font-size: 1em; position:absolute; right:-6.2em; top:2em; width: 24em; z-index:4; filter:drop-shadow(0.5em 0.5em 0.2em rgba(0,0,0,0.3)); } .wire{ stroke:blue; stroke-miterlimit:10; fill:none; stroke-width:0.7em; &--yellow{ stroke:#848110; } &--green{ stroke: #086023; } &--red{ stroke:#820B0B; } &--copper{ stroke:#93500C; stroke-width:0.2em; } } .tin{ position:absolute; border-radius:50%; width: 0.4em; height: 0.4em; background:radial-gradient( #AFAFB2 20%, #403C3A 45%, #AFAFB2 55%, #403C3A 80%,); z-index:5; top:9.6em; right:16.2em; &--2{ top:10.8em; } &--3{ top:12em; } } .confetti{ position:absolute; z-index:6; left:40vw; top:calc(50vh + 10em); opacity: 0; transform: scale(1) rotate(0deg); width:1em; height:1em; border-radius:50%; } @keyframes bomb{ 0%{ transform: translateX(0) translateX(0) rotate(0)} 14%{ transform: translateX(20em) translateY(0) rotate(0)} 42%{ transform: translateX(20em) translateY(-10em) rotate(40deg)} 56%{ transform: translateX(10em) translateY(0) rotate(-30deg)} 70%{ transform: translateX(5em) translateY(5em) rotate(15deg)} 84%{ transform: translateX(0) translateY(0) rotate(-10deg)} 100%{ transform: translateX(0) translateY(0) rotate(0deg)} }