<!-- From Vibecodingex -->
<div class="device-case">
<input type="radio" name="mode" id="app1" class="inputs" checked="" />
<input type="radio" name="mode" id="app2" class="inputs" />
<input type="radio" name="mode" id="app3" class="inputs" />
<input type="radio" name="mode" id="app4" class="inputs" />
<div class="speaker-grille"></div>
<div class="screen-window">
<div class="glass-glare"></div>
<div class="freq-needle"></div>
<div class="tuner-band">
<div class="panel panel-1">
<div class="label">Tape Deck</div>
<div style="text-align:center;">
<div class="counter-box">0 4 2</div>
</div>
<div class="tape-mechanism">
<div class="spool"></div>
<div class="spool"></div>
</div>
<div class="freq-display">
<span>AM</span>
<span>54</span>
<span>60</span>
<span>70</span>
<span>80</span>
</div>
</div>
<div class="panel panel-2">
<div class="label">Signal Monitor</div>
<div class="waveform">
<div class="wave-bar" style="animation-delay: 0.1s"></div>
<div class="wave-bar" style="animation-delay: 0.3s"></div>
<div class="wave-bar" style="animation-delay: 0.5s"></div>
<div class="wave-bar" style="animation-delay: 0.2s"></div>
<div class="wave-bar" style="animation-delay: 0.4s"></div>
<div class="wave-bar" style="animation-delay: 0.6s"></div>
<div class="wave-bar" style="animation-delay: 0.1s"></div>
<div class="wave-bar" style="animation-delay: 0.3s"></div>
</div>
<div
style="margin-top: 20px; font-size: 2rem; font-weight: 800; text-align: center;"
>
98.6 <span style="font-size: 1rem; color: #888;">MHz</span>
</div>
<div class="freq-display">
<span>FM</span>
<span>88</span>
<span>92</span>
<span>96</span>
<span>100</span>
</div>
</div>
<div class="panel panel-3">
<div class="label">System Config</div>
<div class="switch-row">
<div class="toggle">
<span>Power</span>
<div
class="toggle-graphic"
style="background:var(--accent-orange);"
>
<div
style="position:absolute; right:2px; top:2px; width:16px; height:16px; background:#fff; border-radius:50%;"
></div>
</div>
</div>
<div class="toggle">
<span>Dolby NR</span>
<div class="toggle-graphic"></div>
</div>
<div class="toggle">
<span>Filter</span>
<div class="toggle-graphic"></div>
</div>
</div>
<div class="freq-display">
<span>SW</span>
<span>4</span>
<span>6</span>
<span>8</span>
<span>10</span>
</div>
</div>
<div class="panel panel-4">
<div class="label">Battery Check</div>
<div
style="width: 100%; height: 30px; border: 1px solid #999; border-radius: 4px; padding: 2px; margin-top: 30px;"
>
<div
style="width: 75%; height: 100%; background: var(--text-dark);"
></div>
</div>
<div style="margin-top: 10px; font-size: 0.8rem; text-align: right;">
DC 12V
</div>
<div class="freq-display">
<span>LW</span>
<span>150</span>
<span>200</span>
<span>250</span>
<span>300</span>
</div>
</div>
</div>
</div>
<div class="controls-strip">
<label for="app1" class="push-btn"
><span class="btn-label">Play</span></label
>
<label for="app2" class="push-btn"
><span class="btn-label">Tuner</span></label
>
<label for="app3" class="push-btn"
><span class="btn-label">Set</span></label
>
<label for="app4" class="push-btn"
><span class="btn-label">Batt</span></label
>
</div>
</div>
/* From Uiverse.io by chase2k25 */
.device-case {
--case: #e6e6e2;
--text-dark: #2a2a2a;
--accent-orange: #f04e30;
--accent-green: #4a6fa5;
--grid-lines: #c0c0bc;
width: 360px;
height: 450px;
background-color: var(--case);
border-radius: 12px;
font-family: "Inter", sans-serif;
box-shadow:
15px 15px 30px rgba(0, 0, 0, 0.1),
-5px -5px 15px rgba(255, 255, 255, 0.8);
padding: 25px;
display: flex;
flex-direction: column;
position: relative;
}
.inputs {
display: none;
}
.speaker-grille {
width: 100%;
height: 50px;
background-image: radial-gradient(#aaa 1.5px, transparent 1.5px);
background-size: 6px 6px;
margin-bottom: 15px;
opacity: 0.6;
}
.screen-window {
width: 100%;
height: 270px;
background: #f0f0f0;
border: 1px solid #d0d0d0;
border-radius: 4px;
position: relative;
overflow: hidden;
box-shadow: inset 2px 2px 5px rgba(0, 0, 0, 0.05);
margin-bottom: 10px;
}
.glass-glare {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(
120deg,
rgba(255, 255, 255, 0) 40%,
rgba(255, 255, 255, 0.4) 50%,
rgba(255, 255, 255, 0) 60%
);
z-index: 10;
pointer-events: none;
}
.tuner-band {
display: flex;
width: 400%;
height: 100%;
transition: transform 0.8s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.panel {
width: 25%;
height: 100%;
padding: 20px;
position: relative;
border-right: 1px solid var(--grid-lines);
background: linear-gradient(90deg, transparent 95%, var(--grid-lines) 95%),
linear-gradient(transparent 95%, var(--grid-lines) 95%);
background-size: 20px 20px;
}
.label {
font-weight: 800;
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 10px;
color: #666;
}
.freq-display {
position: absolute;
bottom: 20px;
left: 0;
width: 100%;
height: 40px;
border-top: 2px solid var(--text-dark);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 10px;
font-family: monospace;
font-size: 0.9rem;
}
.freq-needle {
position: absolute;
bottom: 0;
left: 50%;
width: 2px;
height: 100%;
background: var(--accent-orange);
z-index: 5;
}
.tape-mechanism {
display: flex;
justify-content: center;
gap: 30px;
margin-top: 40px;
}
.spool {
width: 60px;
height: 60px;
border-radius: 50%;
background: #ddd;
position: relative;
border: 1px solid #bbb;
overflow: hidden;
}
.spool::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: conic-gradient(
#333 0deg,
#333 120deg,
transparent 120deg,
transparent 180deg,
#333 180deg,
#333 300deg,
transparent 300deg
);
border-radius: 50%;
}
.counter-box {
background: #222;
color: #fff;
padding: 5px 10px;
font-family: monospace;
border-radius: 2px;
display: inline-block;
letter-spacing: 4px;
margin-top: 20px;
}
.waveform {
width: 100%;
height: 80px;
display: flex;
align-items: center;
gap: 2px;
margin-top: 20px;
}
.wave-bar {
flex: 1;
background: var(--text-dark);
height: 10px;
animation: equalize 1s ease-in-out infinite;
}
@keyframes equalize {
0%,
100% {
height: 10px;
}
50% {
height: 60px;
}
}
.switch-row {
display: flex;
flex-direction: column;
gap: 15px;
margin-top: 20px;
}
.toggle {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 0.9rem;
font-weight: 600;
}
.toggle-graphic {
width: 40px;
height: 20px;
background: #ccc;
border-radius: 10px;
position: relative;
}
.toggle-graphic::after {
content: "";
position: absolute;
top: 2px;
left: 2px;
width: 16px;
height: 16px;
background: #fff;
border-radius: 50%;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
}
.controls-strip {
margin-top: auto;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 5px;
margin-bottom: 10px;
}
.push-btn {
width: 50px;
height: 50px;
border-radius: 50%;
background: #f5f5f5;
border: 1px solid #ddd;
box-shadow:
inset 0 0 5px rgba(255, 255, 255, 1),
3px 3px 6px rgba(0, 0, 0, 0.1);
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
transition: all 0.1s;
position: relative;
}
.push-btn::after {
content: "";
width: 20px;
height: 20px;
border-radius: 50%;
background: #e0e0e0;
box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.1);
}
.push-btn:active {
box-shadow:
inset 2px 2px 5px rgba(0, 0, 0, 0.1),
1px 1px 2px rgba(0, 0, 0, 0.1);
transform: translateY(1px);
}
.push-btn:active::after {
background: var(--accent-orange);
}
.btn-label {
position: absolute;
bottom: -25px;
font-size: 0.65rem;
font-weight: 600;
color: #888;
text-transform: uppercase;
}
#app1:checked ~ .screen-window .tuner-band {
transform: translateX(0%);
}
#app2:checked ~ .screen-window .tuner-band {
transform: translateX(-25%);
}
#app3:checked ~ .screen-window .tuner-band {
transform: translateX(-50%);
}
#app4:checked ~ .screen-window .tuner-band {
transform: translateX(-75%);
}
#app1:checked ~ .controls-strip label[for="app1"]::after {
background: var(--accent-green);
}
#app2:checked ~ .controls-strip label[for="app2"]::after {
background: var(--accent-green);
}
#app3:checked ~ .controls-strip label[for="app3"]::after {
background: var(--accent-green);
}
#app4:checked ~ .controls-strip label[for="app4"]::after {
background: var(--accent-green);
}
#app1:checked ~ .screen-window .tuner-band .panel-1 .tape-mechanism .spool {
animation: spin 4s linear infinite;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}