:root{
  --wood1:#5a3620; --wood2:#3d2415; --wood3:#7a4a2c;
  --amber:#ffb347; --amber-glow:#ffcc66;
  --cream:#f5e9d0; --burnt:#c2410c; --red:#dc2626;
  --screen:#1a2416; --screen-glow:#8fd14f;
}

*{box-sizing:border-box; margin:0; padding:0;}

body{
  font-family:'Vazirmatn',sans-serif;
  background:
    radial-gradient(ellipse at top, #4a2c18 0%, #2a1810 55%, #180d07 100%);
  min-height:100vh;
  color:var(--cream);
  overflow-x:hidden;
}

.grain{
  pointer-events:none; position:fixed; inset:0; z-index:999; opacity:.06;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.app-wrap{max-width:1100px; margin:0 auto; padding:24px 16px 60px;}

/* ---- Hero ---- */
.hero{text-align:center; margin-bottom:28px;}
.app-title{
  font-weight:900; font-size:clamp(2rem,6vw,3.4rem);
  letter-spacing:-1px;
  color:var(--amber-glow);
  text-shadow:0 2px 0 #7a4a2c, 0 0 24px rgba(255,179,71,.4);
  animation:glowPulse 4s ease-in-out infinite;
}
.app-tag{color:#d8b98a; font-weight:300; margin-top:6px; font-size:clamp(.9rem,3vw,1.1rem);}
@keyframes glowPulse{0%,100%{filter:brightness(1)} 50%{filter:brightness(1.15)}}

/* ---- Radio ---- */
.radio-body{
  background:
    repeating-linear-gradient(90deg, var(--wood1) 0px, var(--wood3) 3px, var(--wood2) 6px, var(--wood1) 12px);
  border-radius:26px;
  padding:22px 22px 26px;
  box-shadow:
    0 20px 50px rgba(0,0,0,.6),
    inset 0 2px 6px rgba(255,220,180,.25),
    inset 0 -6px 16px rgba(0,0,0,.5);
  border:3px solid #2a1810;
  position:relative;
  margin-bottom:26px;
}
.radio-brand{
  text-align:center; font-family:'Share Tech Mono',monospace;
  color:#e8c9a0; letter-spacing:4px; font-size:.75rem;
  opacity:.7; margin-bottom:14px; direction:ltr;
}
.radio-top{display:flex; gap:16px; align-items:stretch; flex-wrap:wrap;}

/* Display screen */
.display-screen{
  flex:1; min-width:220px;
  background:radial-gradient(ellipse at center, #22301c, var(--screen));
  border-radius:14px;
  border:4px solid #10160c;
  padding:14px 18px; position:relative; overflow:hidden;
  box-shadow:inset 0 0 30px rgba(0,0,0,.8), inset 0 0 18px var(--screen-glow);
  direction:ltr; text-align:center;
}
.freq-num{
  font-family:'Share Tech Mono',monospace;
  font-size:clamp(2.2rem,8vw,3.4rem); font-weight:700;
  color:var(--screen-glow);
  text-shadow:0 0 12px var(--screen-glow), 0 0 24px rgba(143,209,79,.5);
  letter-spacing:2px;
}
.freq-mhz{font-family:'Share Tech Mono',monospace; color:#5a8a3a; font-size:.7rem; letter-spacing:3px;}
.display-decade{
  font-family:'Vazirmatn'; direction:rtl; color:#bfe89a;
  font-weight:700; font-size:1.1rem; margin-top:8px;
  text-shadow:0 0 8px rgba(143,209,79,.4);
}
.static-overlay{
  position:absolute; inset:0; pointer-events:none; opacity:0;
  background:repeating-linear-gradient(0deg, rgba(255,255,255,.15) 0, rgba(0,0,0,.15) 2px, transparent 3px, transparent 4px);
}
.display-screen.tuning .static-overlay{opacity:1; animation:flick .08s steps(2) infinite;}
.display-screen.tuning .freq-num{animation:flick .12s steps(2) infinite;}
@keyframes flick{0%{opacity:.3}100%{opacity:1}}

/* Knobs */
.knobs{display:flex; flex-direction:column; gap:12px; justify-content:center;}
.knob{
  width:56px; height:56px; border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #6b4326, #2a1810);
  border:3px solid #1a0e07;
  box-shadow:0 4px 10px rgba(0,0,0,.5), inset 0 2px 4px rgba(255,200,150,.3);
  position:relative; cursor:pointer; transition:transform .3s;
}
.knob.small{width:40px; height:40px;}
.knob span{
  position:absolute; top:6px; left:50%; width:4px; height:16px;
  background:var(--amber); border-radius:2px; transform:translateX(-50%);
}
.knob:hover{transform:rotate(30deg);}
.knob.spin{animation:knobspin .65s linear;}
@keyframes knobspin{from{transform:rotate(0)}to{transform:rotate(360deg)}}

/* Dial track */
.dial-wrap{margin-top:18px; padding:0 6px;}
.dial-track{
  position:relative; height:40px;
  background:linear-gradient(#0d0805,#1a1008);
  border-radius:8px; border:2px solid #100a05;
  display:flex; align-items:flex-end; padding:4px 8px 0;
  box-shadow:inset 0 3px 8px rgba(0,0,0,.7);
  overflow:hidden;
}
.tick{flex:1; height:8px; width:1px; background:#6b5a3a; margin:0 auto; opacity:.5;}
.tick.major{height:18px; background:#c9a45a; opacity:.9;}
.needle{
  position:absolute; top:2px; bottom:2px; width:4px;
  background:linear-gradient(var(--red),#ff5555);
  border-radius:2px; box-shadow:0 0 10px var(--red), 0 0 4px #fff;
  transition:right .65s cubic-bezier(.68,-0.3,.32,1.3);
}

/* Presets */
.presets{display:flex; gap:8px; margin-top:16px; flex-wrap:wrap; justify-content:center;}
.preset{
  flex:1; min-width:70px;
  background:linear-gradient(#3a2415,#241408);
  border:2px solid #1a0e07; border-radius:8px;
  padding:8px 6px; cursor:pointer; color:#c9a45a;
  font-family:'Vazirmatn'; transition:all .2s;
  box-shadow:0 3px 0 #1a0e07, inset 0 1px 2px rgba(255,200,150,.15);
  display:flex; flex-direction:column; align-items:center; gap:2px;
}
.preset:hover{color:var(--amber); transform:translateY(-1px);}
.preset.active{
  background:linear-gradient(#c2410c,#7a2508);
  color:#fff; box-shadow:0 0 16px rgba(194,65,12,.6), inset 0 2px 4px rgba(0,0,0,.3);
  transform:translateY(2px);
}
.preset-label{font-weight:700; font-size:.95rem;}
.preset-sub{font-family:'Share Tech Mono'; font-size:.6rem; opacity:.7; direction:ltr;}

.speaker-grille{
  margin-top:16px; height:26px; border-radius:8px;
  background:radial-gradient(circle, #2a1810 1px, transparent 1.5px);
  background-size:8px 8px;
  border:2px solid #1a0e07; opacity:.6;
}

/* ---- Control bar ---- */
.control-bar{display:flex; gap:10px; flex-wrap:wrap; justify-content:center; margin-bottom:22px;}
.control-bar button{
  font-family:'Vazirmatn'; font-weight:500; cursor:pointer;
  padding:10px 18px; border-radius:30px; border:2px solid #3a2415;
  background:rgba(58,36,21,.5); color:var(--cream);
  transition:all .2s; font-size:.9rem;
}
.control-bar button:hover{background:rgba(90,54,32,.7); transform:translateY(-2px);}
.scan-btn{background:linear-gradient(#c2410c,#7a2508)!important; border-color:#7a2508!important; color:#fff!important;}
.scan-btn:hover{box-shadow:0 0 18px rgba(194,65,12,.6);}
.vol-btn.on{background:linear-gradient(#4a7a3a,#2a5020)!important; color:#fff!important;}
.fav-toggle.active{background:linear-gradient(#b91c1c,#7a1010)!important; color:#fff!important; border-color:#7a1010!important;}

/* ---- Tabs ---- */
.tabs{display:flex; gap:8px; justify-content:center; margin-bottom:26px; flex-wrap:wrap;}
.tab{
  font-family:'Vazirmatn'; font-weight:700; cursor:pointer;
  padding:10px 22px; border-radius:10px 10px 0 0;
  border:2px solid #3a2415; border-bottom:none;
  background:rgba(40,24,14,.6); color:#c9a45a; transition:all .2s;
  position:relative; font-size:1rem;
}
.tab:hover{color:var(--amber);}
.tab.active{
  background:linear-gradient(#5a3620,#3d2415); color:var(--amber-glow);
  box-shadow:0 -4px 20px rgba(255,179,71,.35);
  text-shadow:0 0 10px rgba(255,204,102,.6);
}
.tab.active::after{
  content:""; position:absolute; bottom:-3px; left:10%; right:10%; height:3px;
  background:var(--amber); box-shadow:0 0 12px var(--amber);
}

/* ---- Grid & Cards ---- */
.grid{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:24px;
}
.nostalgia-card{
  perspective:1200px; cursor:pointer; height:360px;
  transform:rotate(var(--rot,0));
  animation:cardIn .6s cubic-bezier(.2,.8,.3,1.2) both;
}
@keyframes cardIn{from{opacity:0; transform:translateY(30px) rotate(var(--rot,0)) scale(.9)} to{opacity:1;}}
.card-inner{
  position:relative; width:100%; height:100%;
  transform-style:preserve-3d; transition:transform .6s;
}
.card-inner.flipped{transform:rotateY(180deg);}
.card-face{
  position:absolute; inset:0; backface-visibility:hidden;
  border-radius:6px; overflow:hidden;
  background:#efe2c8; color:#2a1810;
  box-shadow:0 12px 28px rgba(0,0,0,.5);
  border:1px solid #d8c8a0;
}
.card-front{
  padding:12px 12px 0;
  background:
    linear-gradient(#f7ecd4,#e6d5b0);
  display:flex; flex-direction:column;
}
.cover-wrap{position:relative; width:100%; aspect-ratio:1; border-radius:4px; overflow:hidden; background:#c9b48a;}
.cover-img{width:100%; height:100%; object-fit:cover; transition:opacity .5s; filter:sepia(.25) saturate(1.1);}
.cover-skel{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-size:.75rem; color:#6b5a3a; text-align:center; padding:10px;
  background:repeating-linear-gradient(45deg,#d8c8a0,#d8c8a0 8px,#c9b48a 8px,#c9b48a 16px);
  animation:pulse 1.2s infinite;
}
@keyframes pulse{0%,100%{opacity:.7}50%{opacity:1}}
.fav-btn{
  position:absolute; top:8px; left:8px;
  width:34px; height:34px; border-radius:50%; border:none;
  background:rgba(0,0,0,.45); color:#fff; font-size:1.2rem; cursor:pointer;
  display:flex; align-items:center; justify-content:center; transition:all .2s;
}
.fav-btn:hover{transform:scale(1.15);}
.fav-btn.active{background:var(--red); color:#fff;}
.card-body{padding:12px 6px; text-align:center; flex:1; display:flex; flex-direction:column;}
.card-title{font-weight:900; font-size:1.15rem; color:#3d2415; line-height:1.2;}
.card-artist{font-weight:300; font-size:.9rem; color:#6b4a2c; margin-top:3px;}
.card-year{
  font-family:'Share Tech Mono'; direction:ltr; font-size:.8rem;
  color:#a8501c; margin-top:6px; letter-spacing:1px;
}
.flip-hint{margin-top:auto; font-size:.7rem; color:#9a8560; padding-bottom:8px;}

.card-back{
  transform:rotateY(180deg);
  background:linear-gradient(140deg,#5a3620,#2a1810);
  color:var(--cream); padding:24px 20px;
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
}
.back-quote{font-size:3rem; color:var(--amber); opacity:.5; line-height:.5;}
.back-title{font-weight:900; font-size:1.3rem; color:var(--amber-glow); margin:10px 0;}
.back-fact{font-weight:300; line-height:1.9; font-size:.95rem; color:#e8d5b8;}
.card-back .flip-hint{color:#c9a45a;}

.tuning-msg{
  text-align:center; padding:60px 20px; font-size:1.3rem; color:var(--amber);
  font-weight:700; animation:flick .3s steps(2) infinite; letter-spacing:1px;
}
.empty-favs{
  grid-column:1/-1; text-align:center; padding:50px 20px;
  color:#c9a45a; font-size:1.1rem; font-weight:300;
}

/* ---- Footer ---- */
.footer{
  margin-top:50px; text-align:center; padding-top:24px;
  border-top:1px solid rgba(201,164,90,.2);
  color:#a8895f; font-size:.85rem; font-weight:300;
  display:flex; flex-direction:column; gap:8px; align-items:center;
}
.remix-link{
  color:var(--amber); text-decoration:none; font-weight:700;
  border:1px solid var(--amber); padding:6px 16px; border-radius:20px;
  transition:all .2s;
}
.remix-link:hover{background:var(--amber); color:#2a1810;}

@media(max-width:520px){
  .radio-top{flex-direction:column;}
  .knobs{flex-direction:row; justify-content:center;}
  .nostalgia-card{height:340px;}
}