:root{
  --fg:#fff;
  --bg:#000;
  --muted:rgba(255,255,255,0.55); /* darker */
  --line:rgba(255,255,255,0.14);
}

*{box-sizing:border-box;}

html,body{
  width:100%;
  height:100%;
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  cursor:none;
  user-select:none;
  overflow:hidden; /* Chrome: stop inventing scrollbars */
}

#layout{
  height:100%;
  display:flex;
  flex-direction:column;
  padding:3vh 3vw;
  padding-bottom:16vh; /* room for fixed tickers */
}

#top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:3vw;
}

#center{flex:1 1 auto;} /* sacred blank middle */

#bottom{
  position:fixed;
  left:0; right:0; bottom:0;
  width:100vw;
  display:grid;
  gap:1.2vh;
  padding:0 0 2.2vh 0;
}

.panel{max-width:44vw;}

.clockDate{
  font-size:clamp(16px,2.6vw,44px);
  font-weight:650;
  line-height:1.05;
}
.clockTime{
  font-size:clamp(28px,4.0vw,70px);
  font-weight:760;
  line-height:1.0;
  margin-top:.35rem;
}

.dim{color:var(--muted);}

.muted{
  font-size:clamp(12px,1.1vw,14px);
  color:var(--muted);
  text-align:right;
}

.weatherList{
  margin-top:.8rem;
  display:grid;
  gap:.35rem;
  text-align:right;
}
.weatherRow{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:.8rem;
  align-items:baseline;
  font-size:clamp(12px,1.15vw,16px);
  line-height:1.2;
}
.weatherRow .mid{color:var(--muted);}
.weatherRow .right{font-weight:700;}

.tickerWrap{
  width:100vw;
  padding:0 3vw;
  border-top:1px solid var(--line);
  padding-top:.6vh;
}

.ticker{
  width:100%;
  overflow:hidden;
  white-space:nowrap;
}

.tickerTrack{
  display:flex;
  width:max-content;
  will-change:transform;
  animation:tickerScroll linear infinite;
  animation-duration:var(--duration,60s);
  transform:translate3d(0,0,0);
}

.tickerContent{
  display:inline-flex;
  flex:0 0 auto;
  align-items:center;
  padding-right:3rem;
  font-size:clamp(12px,1.35vw,18px);
  font-weight:650;
}

@keyframes tickerScroll{
  from{transform:translate3d(0,0,0);}
  to{transform:translate3d(-50%,0,0);}
}

@media (prefers-reduced-motion: reduce){
  .tickerTrack{animation:none;}
}

/* modal */
.modal{
  position:fixed;
  inset:0;
  display:grid;
  place-items:center;
  background:rgba(0,0,0,0.85);
}
.modal.hidden{display:none;}
.modalCard{
  width:min(520px,92vw);
  border:1px solid rgba(255,255,255,0.15);
  border-radius:14px;
  padding:18px 16px;
  background:rgba(0,0,0,0.92);
}
.modalTitle{font-size:20px;font-weight:800;margin-bottom:6px;}
.modalHint{color:var(--muted);font-size:14px;margin-bottom:12px;}
#locationForm{display:grid;grid-template-columns:1fr auto;gap:10px;}
#locationInput{
  padding:10px 12px;border-radius:10px;
  border:1px solid rgba(255,255,255,0.22);
  background:#050505;color:#fff;font-size:16px;outline:none;
}
#locationForm button{
  padding:10px 12px;border-radius:10px;
  border:1px solid rgba(255,255,255,0.22);
  background:#101010;color:#fff;font-weight:800;
}
.error{margin-top:10px;color:#ffb3b3;font-size:13px;}
