
:root{
  --bg:#02080c;
  --surface:#071117;
  --surface-2:#0a151b;
  --gold:#dda03a;
  --gold-bright:#f5bd54;
  --cream:#fff8ed;
  --muted:#bcb3a6;
  --line:rgba(221,160,58,.42);
  --shadow:0 22px 65px rgba(0,0,0,.50);
}
*{box-sizing:border-box}
html{background:#000;scroll-behavior:smooth}
body{margin:0;background:#000;color:var(--cream);font-family:Arial,Helvetica,sans-serif}
button,input{font:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
.app-shell{
  width:min(100%,1080px);min-height:100vh;margin:auto;overflow:hidden;
  background:
    radial-gradient(circle at 50% 7%,rgba(16,39,48,.88),transparent 30%),
    linear-gradient(180deg,#030b10,#02070b);
}
.hero{height:845px;position:relative;overflow:hidden}
.hero-photo{
  position:absolute;inset:-3%;
  background:url("../assets/images/gramofono-rignac.jpg") center 44%/cover no-repeat;
  filter:contrast(1.12) saturate(1.12) brightness(.76);
  animation:heroBreath 18s ease-in-out infinite alternate;
  will-change:transform,filter;
}
.hero-vignette{
  position:absolute;inset:0;
  background:
    linear-gradient(90deg,rgba(0,4,7,.55),rgba(0,0,0,.05) 50%,rgba(0,4,7,.25)),
    linear-gradient(180deg,rgba(0,3,6,.12),rgba(0,3,6,.08) 52%,rgba(2,8,12,.84) 82%,#02080c 100%);
}
.hero-light{
  position:absolute;inset:0;
  background:radial-gradient(circle at 78% 29%,rgba(232,141,50,.18),transparent 33%);
  animation:lightPulse 8s ease-in-out infinite alternate;
}
@keyframes heroBreath{
  from{transform:scale(1.035) translate3d(0,0,0);filter:contrast(1.12) saturate(1.12) brightness(.74)}
  to{transform:scale(1.085) translate3d(-.8%,.5%,0);filter:contrast(1.15) saturate(1.18) brightness(.80)}
}
@keyframes lightPulse{from{opacity:.62}to{opacity:1}}
.back-button{
  position:absolute;top:35px;left:35px;width:75px;height:75px;border-radius:50%;
  border:2px solid var(--gold);background:rgba(2,8,12,.62);color:var(--gold-bright);
  display:grid;place-items:center;font-size:41px;backdrop-filter:blur(12px)
}
.brand{position:absolute;top:28px;left:50%;transform:translateX(-50%);text-align:center;text-shadow:0 5px 20px #000}
.brand-lily{font-size:78px;line-height:.85;color:var(--gold-bright);filter:drop-shadow(0 0 10px rgba(245,189,84,.24))}
.brand-name{font-family:Georgia,serif;font-size:48px;letter-spacing:8px;margin-top:9px}
.brand-caption{font-family:Georgia,serif;color:var(--gold-bright);font-size:15px;line-height:1.45;letter-spacing:1.2px;margin-top:6px}


/* =========================================================
   COMPONENTE REUTILIZABLE: CLOCK WIDGET
   Jerarquía: hora > período > fecha > clima
   ========================================================= */
.clock-widget{
  position:absolute;
  top:34px;
  right:35px;
  width:224px;
  min-height:190px;
  padding:20px 22px 18px;
  border:2px solid var(--gold);
  border-radius:28px;
  background:rgba(3,9,13,.82);
  color:var(--cream);
  text-align:left;
  backdrop-filter:blur(16px);
  box-shadow:var(--shadow);
  overflow:hidden;
}

.clock-widget::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(145deg,rgba(255,255,255,.035),transparent 40%);
}

.clock-widget__time-row{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:36px 1fr;
  align-items:start;
  column-gap:14px;
}

.clock-widget__icon{
  display:grid;
  place-items:center;
  width:36px;
  height:36px;
  margin-top:9px;
  color:var(--gold-bright);
  font-size:31px;
  line-height:1;
}

.clock-widget__time-block{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  min-width:0;
}

.clock-widget__time-block strong{
  display:block;
  color:#fff;
  font-size:56px;
  font-weight:500;
  line-height:.95;
  letter-spacing:1px;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}

.clock-widget__period{
  display:block;
  margin-top:6px;
  color:rgba(255,255,255,.88);
  font-size:21px;
  line-height:1;
  letter-spacing:.6px;
}

.clock-widget__date{
  position:relative;
  z-index:1;
  margin-top:18px;
  color:var(--gold-bright);
  font-size:16px;
  line-height:1.25;
  text-align:center;
  text-transform:lowercase;
  white-space:nowrap;
}

.clock-widget__divider{
  position:relative;
  z-index:1;
  height:1px;
  margin:14px 0 13px;
  background:linear-gradient(90deg,transparent,var(--line),transparent);
}

.clock-widget__weather{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:13px;
}

.clock-widget__weather-icon{
  color:var(--gold-bright);
  font-size:28px;
  line-height:1;
}

.clock-widget__temperature{
  color:var(--gold-bright);
  font-size:28px;
  font-weight:500;
  line-height:1;
  font-variant-numeric:tabular-nums;
}

.clock-widget__time-block,
.clock-widget__date,
.clock-widget__weather{
  transition:opacity .18s ease;
}

.clock-widget.is-updating .clock-widget__time-block,
.clock-widget.is-updating .clock-widget__date{
  opacity:.45;
}

.hero-heading{
  position:absolute;left:42px;right:42px;bottom:105px;display:grid;grid-template-columns:132px 1fr;gap:25px;align-items:center
}
.sound-icon{
  width:132px;height:132px;border:2px solid var(--gold);border-radius:50%;background:rgba(2,8,12,.72);
  display:flex;align-items:center;justify-content:center;gap:7px
}
.sound-icon i{width:8px;border-radius:8px;background:var(--gold-bright)}
.sound-icon i:nth-child(1),.sound-icon i:nth-child(5){height:36px}
.sound-icon i:nth-child(2),.sound-icon i:nth-child(4){height:64px}
.sound-icon i:nth-child(3){height:87px}
.hero-heading h1{font-family:Georgia,serif;font-size:69px;font-weight:400;letter-spacing:.5px;line-height:.96;margin:0;text-shadow:0 4px 22px #000}
.hero-heading p{font-family:Georgia,serif;font-size:26px;margin:12px 0 0;color:#f1e9df}
.divider,.footer-divider{position:absolute;left:42px;right:42px;bottom:34px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;color:var(--gold-bright)}
.divider span,.footer-divider span{height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent)}
.divider b,.footer-divider b{font-size:38px}
.library{padding:0 35px 20px}
.search-row{display:grid;grid-template-columns:1fr 218px;gap:15px}
.search-box,.filter-button{
  height:73px;border:1px solid var(--line);border-radius:20px;background:rgba(7,17,23,.97);color:var(--cream);
  display:flex;align-items:center;box-shadow:0 12px 28px rgba(0,0,0,.25)
}
.search-box{padding:0 24px;gap:16px}.search-box>span{color:var(--gold-bright);font-size:35px}
.search-box input{width:100%;background:transparent;border:0;outline:0;color:#fff;font-size:21px}
.filter-button{justify-content:space-around;color:var(--gold-bright);font-size:22px;padding:0 17px}.filter-button b{color:#fff;font-weight:400}.filter-button i{font-style:normal}
.category-chips{display:flex;flex-wrap:wrap;gap:10px;padding:14px 0 16px}
.category-chip{
  border:1px solid var(--line);border-radius:999px;padding:12px 18px;background:#071117;color:#ede5d9;font-size:15px
}
.category-chip.active{background:linear-gradient(180deg,#f5c564,#d28e27);color:#15100a;font-weight:700}
.section-title{display:flex;align-items:flex-end;justify-content:space-between;margin:11px 5px 15px}
.section-title h2{font-family:Georgia,serif;font-size:36px;font-weight:400;margin:0}
.section-title span{color:var(--gold-bright);font-size:17px}
.track-list{display:grid;gap:13px}
.track-row{
  min-height:125px;border:1px solid rgba(221,160,58,.28);border-radius:20px;background:linear-gradient(145deg,rgba(10,21,27,.98),rgba(4,10,14,.98));
  display:grid;grid-template-columns:105px 1fr 70px 26px;align-items:center;gap:16px;padding:14px 18px;color:#fff;text-align:left;
  box-shadow:0 15px 35px rgba(0,0,0,.28)
}
.track-row.active{border-color:var(--gold);box-shadow:0 0 0 2px rgba(221,160,58,.10),0 18px 42px rgba(0,0,0,.4)}
.track-thumb{
  width:105px;height:92px;border-radius:14px;overflow:hidden;position:relative;border:1px solid rgba(221,160,58,.35);
  background:url("../assets/images/gramofono-rignac.jpg") center 44%/cover no-repeat
}
.track-thumb::after{content:"⚜";position:absolute;inset:0;display:grid;place-items:center;color:var(--gold-bright);font-size:38px;text-shadow:0 3px 12px #000;background:rgba(0,0,0,.12)}
.track-copy{min-width:0}.track-copy small{color:var(--gold-bright);font-size:12px;letter-spacing:1.8px}
.track-copy h3{font-family:Georgia,serif;font-size:27px;font-weight:400;margin:8px 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.track-copy p{margin:0;color:var(--muted);font-size:15px}
.row-play{
  width:55px;height:55px;border-radius:50%;border:2px solid var(--gold);background:transparent;color:var(--gold-bright);
  display:grid;place-items:center;padding:0
}
.row-play .triangle{
  width:0;height:0;border-top:9px solid transparent;border-bottom:9px solid transparent;border-left:15px solid currentColor;
  transform:translateX(2px)
}
.row-play .pause-mini{display:flex;gap:5px}.row-play .pause-mini i{width:5px;height:19px;background:currentColor;border-radius:3px}
.row-menu{font-size:26px;color:var(--gold-bright)}
.empty-state{padding:42px;border:1px dashed var(--line);border-radius:20px;text-align:center;color:var(--muted)}
.player-card{
  margin:0 35px 18px;padding:20px 26px 25px;border:2px solid var(--gold);border-radius:22px;
  background:linear-gradient(145deg,rgba(7,18,24,.99),rgba(2,9,13,.99));box-shadow:var(--shadow)
}
.now-playing{display:grid;grid-template-columns:118px 1fr 72px;gap:24px;align-items:center}
.track-cover{
  width:118px;height:110px;border-radius:16px;border:1px solid var(--line);position:relative;overflow:hidden;
  background:url("../assets/images/gramofono-rignac.jpg") center 44%/cover no-repeat
}
.animated-cover::before{
  content:"";position:absolute;inset:-12%;background:inherit;
  animation:coverLoop 12s ease-in-out infinite alternate;filter:saturate(1.10) brightness(.88)
}
.animated-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 20%,rgba(245,189,84,.18) 48%,transparent 72%);transform:translateX(-120%);animation:coverShine 7s ease-in-out infinite}
.cover-lily{position:absolute;z-index:2;inset:0;display:grid;place-items:center;color:var(--gold-bright);font-size:42px;text-shadow:0 3px 14px #000}
@keyframes coverLoop{from{transform:scale(1.03) translate(-1%,-1%)}to{transform:scale(1.16) translate(2%,1%)}}
@keyframes coverShine{0%,30%{transform:translateX(-130%)}70%,100%{transform:translateX(130%)}}
.now-copy{min-width:0}.now-copy small{color:var(--gold-bright);font-size:13px;letter-spacing:1.8px}
.now-copy h3{font-family:Georgia,serif;font-size:31px;font-weight:400;margin:8px 0 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.now-copy p{margin:0;color:var(--muted);font-size:17px}
.favorite-button{border:0;background:transparent;color:var(--gold-bright);font-size:57px;line-height:1}.favorite-button.active{filter:drop-shadow(0 0 10px rgba(245,189,84,.6))}
.progress-row{display:grid;grid-template-columns:60px 1fr 60px;align-items:center;gap:16px;margin:19px 0 8px;font-size:17px}
input[type=range]{width:100%;accent-color:var(--gold-bright)}
.playback-controls{display:flex;align-items:center;justify-content:center;gap:42px;margin:8px 0 17px}
.playback-controls>button:not(.primary-control){width:57px;height:57px;border:0;background:transparent;color:var(--gold-bright);font-size:29px}
.playback-controls>button.enabled{border:1px solid var(--gold);border-radius:50%;background:rgba(221,160,58,.13)}
.primary-control{
  width:106px;height:106px;border-radius:50%;border:2px solid #ffcf71;background:linear-gradient(180deg,#f7c260,#d99329);
  color:#111;display:grid;place-items:center;padding:0;box-shadow:0 0 0 8px rgba(221,160,58,.09),0 0 27px rgba(245,189,84,.25)
}
.play-symbol{display:block;font-size:0;line-height:1}
.play-symbol.play{
  width:0;height:0;border-top:17px solid transparent;border-bottom:17px solid transparent;border-left:27px solid #111;
  transform:translateX(3px)
}
.play-symbol.pause{width:35px;height:40px;display:flex;justify-content:space-between;align-items:center}
.play-symbol.pause::before,.play-symbol.pause::after{content:"";width:11px;height:40px;background:#111;border-radius:4px}
.volume-row{display:grid;grid-template-columns:48px 1fr 38px;align-items:center;gap:15px}
.volume-row button{border:0;background:transparent;color:#fff;font-size:24px}
.bottom-navigation{
  margin:0 35px 20px;min-height:89px;border:1px solid rgba(221,160,58,.34);border-radius:21px;
  display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden;background:rgba(7,17,23,.98)
}
.bottom-navigation button{border:0;border-right:1px solid rgba(221,160,58,.18);background:transparent;color:#eee4d7;font-family:Georgia,serif;font-size:18px}
.bottom-navigation button:last-child{border:0}.bottom-navigation span{color:var(--gold-bright);font-family:Arial;font-size:30px;margin-right:11px}.bottom-navigation .active{color:var(--gold-bright)}
.footer-divider{position:static;margin:0 36px 22px}
dialog{width:min(92%,700px);border:1px solid var(--gold);border-radius:22px;background:#071117;color:#fff;padding:22px;box-shadow:0 35px 100px #000}
dialog::backdrop{background:rgba(0,0,0,.78);backdrop-filter:blur(7px)}
dialog header{display:flex;justify-content:space-between;align-items:center}dialog h2{font-family:Georgia,serif;font-size:30px;margin:0}dialog header button{border:0;background:transparent;color:var(--gold-bright);font-size:40px}
.history-item{padding:14px 0;border-bottom:1px solid rgba(221,160,58,.18)}.history-item b{display:block}.history-item span{color:var(--muted)}
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,30px);opacity:0;pointer-events:none;background:#101b20;border:1px solid var(--gold);color:#fff;padding:12px 20px;border-radius:999px;transition:.25s;z-index:20}
.toast.visible{opacity:1;transform:translate(-50%,0)}
@media(max-width:720px){

  .clock-widget{
    top:18px;
    right:15px;
    width:158px;
    min-height:134px;
    padding:12px 13px 11px;
    border-radius:20px;
  }
  .clock-widget__time-row{
    grid-template-columns:26px 1fr;
    column-gap:8px;
  }
  .clock-widget__icon{
    width:26px;
    height:26px;
    margin-top:5px;
    font-size:23px;
  }
  .clock-widget__time-block strong{
    font-size:36px;
  }
  .clock-widget__period{
    margin-top:3px;
    font-size:13px;
  }
  .clock-widget__date{
    margin-top:10px;
    font-size:10px;
  }
  .clock-widget__divider{
    margin:8px 0 8px;
  }
  .clock-widget__weather{
    gap:8px;
  }
  .clock-widget__weather-icon,
  .clock-widget__temperature{
    font-size:19px;
  }

  .hero{height:640px}.back-button{top:20px;left:16px;width:55px;height:55px;font-size:29px}.brand{top:16px}.brand-lily{font-size:54px}.brand-name{font-size:33px;letter-spacing:5px}.brand-caption{font-size:9px}
  
  .hero-heading{left:17px;right:17px;bottom:78px;grid-template-columns:79px 1fr;gap:14px}.sound-icon{width:79px;height:79px}.sound-icon i{width:5px}.sound-icon i:nth-child(1),.sound-icon i:nth-child(5){height:23px}.sound-icon i:nth-child(2),.sound-icon i:nth-child(4){height:39px}.sound-icon i:nth-child(3){height:55px}
  .hero-heading h1{font-size:40px}.hero-heading p{font-size:15px;margin-top:7px}.divider{left:17px;right:17px;bottom:25px}
  .library{padding:0 15px 15px}.search-row{grid-template-columns:1fr 112px;gap:8px}.search-box,.filter-button{height:59px;border-radius:15px}.search-box{padding:0 14px}.search-box input{font-size:15px}.filter-button b{display:none}
  .category-chip{padding:9px 12px;font-size:12px}.section-title h2{font-size:29px}.section-title span{font-size:13px}
  .track-row{grid-template-columns:73px 1fr 49px 16px;gap:10px;min-height:98px;padding:10px}.track-thumb{width:73px;height:72px}.track-thumb::after{font-size:28px}.track-copy h3{font-size:19px}.track-copy small{font-size:9px}.track-copy p{font-size:12px}.row-play{width:43px;height:43px}.row-menu{font-size:20px}
  .player-card{margin:0 15px 14px;padding:15px 15px 19px}.now-playing{grid-template-columns:75px 1fr 45px;gap:12px}.track-cover{width:75px;height:75px}.cover-lily{font-size:31px}.now-copy h3{font-size:21px}.now-copy small{font-size:9px}.now-copy p{font-size:13px}.favorite-button{font-size:39px}
  .progress-row{grid-template-columns:42px 1fr 42px;gap:8px;font-size:12px}.playback-controls{gap:12px}.playback-controls>button:not(.primary-control){width:42px;height:42px;font-size:22px}.primary-control{width:78px;height:78px}.play-symbol.play{border-top-width:13px;border-bottom-width:13px;border-left-width:21px}.play-symbol.pause{width:26px;height:31px}.play-symbol.pause::before,.play-symbol.pause::after{width:8px;height:31px}
  .bottom-navigation{margin:0 15px 16px;min-height:69px}.bottom-navigation b{display:none}.bottom-navigation span{margin:0;font-size:27px}.footer-divider{margin:0 16px 16px}
}
@media(prefers-reduced-motion:reduce){
  .hero-photo,.hero-light,.animated-cover::before,.animated-cover::after{animation:none!important}
}


/* =========================================================
   AJUSTE FINAL SEGÚN REFERENCIA VISUAL OBLIGATORIA
   ========================================================= */
.hero{
  height:820px;
}
.hero-photo{
  background-position:center 44%;
  filter:contrast(1.14) saturate(1.08) brightness(.72);
}
.hero-vignette{
  background:
    linear-gradient(90deg,rgba(0,4,7,.50),rgba(0,0,0,.04) 50%,rgba(0,4,7,.19)),
    linear-gradient(180deg,rgba(0,3,6,.10),rgba(0,3,6,.05) 52%,rgba(2,8,12,.82) 82%,#02080c 100%);
}
.brand{
  top:26px;
}
.hero-heading{
  bottom:102px;
}
.hero-heading h1{
  font-size:66px;
}
.library{
  padding-top:2px;
}
.track-list{
  gap:10px;
}
.track-row{
  min-height:112px;
}
.player-card{
  padding-top:18px;
}
.favorite-button{
  font-size:53px;
}
.bottom-navigation{
  grid-template-columns:repeat(5,1fr);
}
@media(max-width:720px){
  .hero{height:620px}
  .hero-heading h1{font-size:38px}
  .track-row{min-height:92px}
  .bottom-navigation{grid-template-columns:repeat(5,1fr)}
}
