:root{
  --bg:#080d18; --bg2:#0d1424; --bg3:#121b2e;
  --glass:rgba(255,255,255,0.045); --glass2:rgba(255,255,255,0.08); --glass3:rgba(255,255,255,0.12);
  --teal:#4dd9c0; --teal2:rgba(77,217,192,0.18); --teal3:rgba(77,217,192,0.08);
  --gold:#e8b86d; --gold2:rgba(232,184,109,0.18);
  --sky:#7abaef; --sky2:rgba(122,186,239,0.15);
  --coral:#f07878;
  --text:#dde3f0; --muted:#7a88a4; --dim:#3a4560;
  --border:rgba(255,255,255,0.07); --border2:rgba(255,255,255,0.12);
  --r:20px; --rs:14px; --rxs:9px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
body{font-family:'Outfit',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;display:flex;justify-content:center;}
.app{width:100%;max-width:430px;min-height:100vh;background:var(--bg);position:relative;overflow-x:hidden;}

/* AMBIENT ORBS */
.orb{position:fixed;border-radius:50%;pointer-events:none;z-index:0;}
.orb1{width:320px;height:320px;background:radial-gradient(circle,rgba(77,217,192,0.10) 0%,transparent 68%);top:-80px;left:-80px;}
.orb2{width:280px;height:280px;background:radial-gradient(circle,rgba(232,184,109,0.08) 0%,transparent 68%);top:160px;right:-100px;}
.orb3{width:220px;height:220px;background:radial-gradient(circle,rgba(122,186,239,0.07) 0%,transparent 68%);bottom:120px;left:-40px;}

.content{position:relative;z-index:1;padding-bottom:120px;}

/* LOADER */
.loader{position:fixed;inset:0;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:400;transition:opacity .6s ease;}
.loader.gone{opacity:0;pointer-events:none;}
.l-ring{width:52px;height:52px;border-radius:50%;border:1.5px solid var(--border2);border-top-color:var(--teal);animation:spin 1s linear infinite;margin-bottom:20px;}
@keyframes spin{to{transform:rotate(360deg)}}
.l-name{font-family:'Cormorant Garamond',serif;font-size:28px;font-weight:300;color:var(--text);letter-spacing:0.06em;}
.l-status{font-size:12px;color:var(--muted);margin-top:10px;letter-spacing:0.07em;text-transform:uppercase;min-height:18px;}

/* HEADER */
.header{padding:58px 20px 16px;}

/* SEARCH */
.swrap{position:relative;margin-bottom:16px;}
.sinput{width:100%;padding:13px 46px 13px 18px;background:var(--glass2);border:1px solid var(--border2);border-radius:60px;font-family:'Outfit',sans-serif;font-size:14px;font-weight:400;color:var(--text);outline:none;transition:border-color .2s,background .2s;-webkit-appearance:none;}
.sinput::placeholder{color:var(--muted);}
.sinput:focus{border-color:rgba(77,217,192,0.4);background:var(--glass3);}
.sbtn{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:36px;height:36px;border-radius:50%;background:var(--teal2);border:1px solid rgba(77,217,192,0.3);cursor:pointer;color:var(--teal);font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .15s;}
.sbtn:active{transform:translateY(-50%) scale(.9);}
.sres{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:80;background:var(--bg3);border:1px solid var(--border2);border-radius:var(--rs);box-shadow:0 12px 40px rgba(0,0,0,.5);overflow:hidden;}
.sri{padding:13px 18px;font-size:14px;color:var(--text);cursor:pointer;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;transition:background .1s;}
.sri:last-child{border-bottom:none;}
.sri:active{background:var(--glass2);}
.sri-pin{color:var(--teal);font-size:12px;}

/* LOC ROW */
.loc-row{display:flex;align-items:center;gap:8px;}
.loc-name{font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:300;color:var(--text);}
.loc-cc{font-size:12px;color:var(--muted);font-weight:500;letter-spacing:0.05em;}
.gps-btn{margin-left:auto;padding:6px 12px;background:var(--glass);border:1px solid var(--border2);border-radius:60px;font-family:'Outfit',sans-serif;font-size:11px;font-weight:500;color:var(--muted);cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .15s;white-space:nowrap;}
.gps-btn:active{transform:scale(.94);}
.gps-icon{color:var(--teal);font-size:10px;}

/* HERO CARD — SPLIT */
.hero{margin:0 16px;background:linear-gradient(135deg,var(--teal2) 0%,var(--sky2) 50%,var(--glass) 100%);border:1px solid rgba(77,217,192,0.2);border-radius:var(--r);padding:22px 20px 20px;position:relative;overflow:hidden;animation:fadeUp .5s ease both;}
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.hero::before{content:'';position:absolute;top:-40px;right:-40px;width:180px;height:180px;background:radial-gradient(circle,rgba(77,217,192,0.12) 0%,transparent 68%);pointer-events:none;}
.hero-split{display:flex;gap:0;align-items:stretch;}
.hero-half{flex:1;display:flex;flex-direction:column;min-width:0;}
.hero-half-right{padding-left:16px;}
.hero-split-divider{width:1px;background:var(--border);margin:0 4px;flex-shrink:0;}
.hero-eyebrow{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--teal);font-weight:600;display:flex;align-items:center;gap:6px;}
.hero-eyebrow::before{content:'';width:14px;height:1px;background:currentColor;opacity:.6;}
.hero-temp{font-family:'Cormorant Garamond',serif;font-size:64px;font-weight:300;line-height:1;color:#fff;}
.hero-unit{font-family:'Cormorant Garamond',serif;font-size:22px;font-weight:300;color:var(--muted);margin-top:8px;}
.hero-icon-sm{font-size:20px;line-height:1;}
.hero-cond{font-size:13px;font-weight:300;color:var(--text);}
.hero-divider{margin:14px 0 10px;height:1px;background:var(--border);}
.hero-mini-stats{display:flex;flex-direction:column;gap:6px;}
.mini-stat{}
.stat-label{font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:2px;}
.stat-val{font-size:12px;font-weight:500;}
.stat-val.teal{color:var(--teal);}
.stat-val.gold{color:var(--gold);}
.stat-val.sky{color:var(--sky);}

/* SECTION HEADER */
.sec{display:flex;align-items:center;gap:14px;padding:24px 20px 12px;animation:fadeUp .5s ease both;}
.sec-title{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:500;white-space:nowrap;}
.sec-line{flex:1;height:1px;background:var(--border);}

/* HOURLY STRIP */
.hscroll{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;padding-top:16px;padding-bottom:6px;padding-left:16px;padding-right:16px;scroll-snap-type:x mandatory;}
.hscroll::-webkit-scrollbar{display:none;}

.hr-card{
  flex:0 0 100px;scroll-snap-align:start;
  border-radius:var(--rs);padding:14px 10px 12px;
  display:flex;flex-direction:column;align-items:center;gap:0;
  position:relative;border:1px solid var(--border);background:var(--glass);
  transition:transform .15s;
}
.hr-card:active{transform:scale(.96);}

/* Past hours */
.hr-card.past{background:rgba(220,100,160,0.07);border-color:rgba(220,100,160,0.2);}
/* Now */
.hr-card.now{background:linear-gradient(160deg,rgba(232,184,109,0.18),rgba(232,184,109,0.06));border-color:rgba(232,184,109,0.4);}
/* Future */
.hr-card.future{background:var(--glass);border-color:var(--border);opacity:.65;}

.now-pip{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--gold);color:#5a3200;font-size:9px;font-weight:700;letter-spacing:.05em;padding:3px 11px;border-radius:60px;white-space:nowrap;box-shadow:0 2px 8px rgba(232,184,109,0.35);}
.hscroll-wrap{padding:0;}

.hr-time{font-size:10px;font-weight:500;color:var(--muted);margin-bottom:10px;letter-spacing:.04em;}
.hr-icon{font-size:22px;margin-bottom:8px;}
.hr-temp{font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:400;color:var(--text);line-height:1;}
.hr-unit{font-size:11px;color:var(--muted);margin-top:1px;}

/* actual vs forecast tag */
.hr-tag{font-size:8px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:60px;margin-top:8px;}
.hr-tag.actual{background:rgba(77,217,192,0.15);color:var(--teal);}
.hr-tag.forecast{background:rgba(122,186,239,0.12);color:var(--sky);}
.hr-tag.now-tag{background:rgba(232,184,109,0.2);color:var(--gold);}

.hr-pop{font-size:10px;color:var(--sky);margin-top:5px;font-weight:500;}

/* comparison row inside card for past hours */
.hr-compare{width:100%;margin-top:8px;padding-top:8px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:3px;}
.hr-cmp-row{display:flex;justify-content:space-between;align-items:center;}
.hr-cmp-label{font-size:8px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);}
.hr-cmp-val{font-size:11px;font-weight:500;}
.hr-cmp-val.a{color:var(--teal);}
.hr-cmp-val.f{color:var(--sky);}

/* FORECAST vs ACTUAL CHART */
.chart-outer{margin:10px 16px 0;animation:fadeUp .5s ease both;animation-delay:.08s;}
.chart-card{background:var(--glass);border:1px solid var(--border);border-radius:var(--rs);padding:14px 14px 10px;overflow:hidden;}
.chart-legend{display:flex;align-items:center;gap:16px;margin-bottom:12px;}
.cleg{display:flex;align-items:center;gap:6px;font-size:9px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:500;}
.cleg-swatch{width:22px;height:0;border-radius:1px;}
.chart-svg{display:block;width:100%;overflow:hidden;}
.chart-loading{font-size:10px;color:var(--muted);text-align:center;padding:14px 0;letter-spacing:.05em;}
.chart-note{font-size:9px;color:var(--dim);text-align:center;margin-top:8px;letter-spacing:.03em;}

/* PRECIP CHART */
.precip-outer{margin:10px 16px 0;animation:fadeUp .5s ease both;animation-delay:.1s;}
.precip-legend{display:flex;align-items:center;gap:16px;margin-bottom:10px;}
.precip-bar-actual{width:10px;height:10px;border-radius:2px;background:#4dd9c0;flex-shrink:0;}
.precip-bar-gfs{width:10px;height:10px;border-radius:2px;border:1.5px solid rgba(220,100,160,0.8);flex-shrink:0;}

/* INFO BUTTON */
.info-btn{width:18px;height:18px;border-radius:50%;background:var(--glass2);border:1px solid var(--border2);color:var(--muted);font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;font-style:normal;}
.info-btn:active{background:var(--glass3);color:var(--text);}

/* INFO MODAL */
.info-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:200;opacity:0;pointer-events:none;transition:opacity .25s;}
.info-backdrop.open{opacity:1;pointer-events:all;}
.info-sheet{position:fixed;bottom:0;left:50%;transform:translateX(-50%) translateY(100%);width:100%;max-width:430px;background:var(--bg3);border:1px solid var(--border2);border-bottom:none;border-radius:24px 24px 0 0;padding:28px 24px 48px;z-index:201;transition:transform .3s cubic-bezier(.32,.72,0,1);}
.info-sheet.open{transform:translateX(-50%) translateY(0);}
.info-handle{width:36px;height:3px;background:var(--dim);border-radius:2px;margin:0 auto 20px;}
.info-title{font-family:'Cormorant Garamond',serif;font-size:22px;font-weight:300;color:var(--text);margin-bottom:18px;}
.info-row{display:flex;gap:12px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border);}
.info-row:last-of-type{border-bottom:none;margin-bottom:0;padding-bottom:0;}
.info-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:5px;}
.info-dot.pink{background:rgba(220,100,160,0.8);}
.info-dot.gold{background:var(--gold);}
.info-dot.sky{background:var(--sky);}
.info-dot.teal{background:var(--teal);}
.info-row-body{}
.info-row-title{font-size:13px;font-weight:500;color:var(--text);margin-bottom:4px;}
.info-row-desc{font-size:12px;color:var(--muted);line-height:1.6;}
.info-close{margin-top:24px;width:100%;padding:13px;background:var(--glass2);border:1px solid var(--border2);border-radius:60px;font-family:'Outfit',sans-serif;font-size:13px;color:var(--text);cursor:pointer;}

/* PAST 7 */
.pscroll{padding:14px 16px 4px;display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;scroll-padding-left:16px;}
.pscroll::-webkit-scrollbar{display:none;}
.past-card{flex:0 0 110px;background:var(--glass);border:1px solid var(--border);border-radius:var(--rs);padding:14px 10px 12px;text-align:center;position:relative;transition:transform .15s;}
.past-card:active{transform:scale(.96);}
.past-card.hl{background:rgba(77,217,192,0.08);border-color:rgba(77,217,192,0.25);}
.yb{position:absolute;top:-10px;left:50%;transform:translateX(-50%);background:var(--teal);color:#032e26;font-size:8px;font-weight:600;padding:2px 9px;border-radius:60px;white-space:nowrap;letter-spacing:.04em;}
.past-day{font-size:9px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;}
.past-icon{font-size:26px;margin-bottom:7px;}
.past-avg{font-family:'Cormorant Garamond',serif;font-size:24px;font-weight:400;color:var(--text);}
.past-range{font-size:10px;color:var(--muted);margin-top:3px;}
.past-pr{font-size:10px;color:var(--sky);margin-top:5px;}

/* FORECAST LIST */
.fc-list{padding:0 16px;display:flex;flex-direction:column;gap:9px;}
.fc-row{background:var(--glass);border:1px solid var(--border);border-radius:var(--rs);padding:14px 16px;display:flex;align-items:center;gap:12px;transition:transform .15s;}
.fc-row.tod{background:var(--gold2);border-color:rgba(232,184,109,0.3);}
.fc-row:active{transform:scale(.98);}
.fc-dc{width:42px;}
.fc-dn{font-size:13px;font-weight:500;color:var(--text);}
.fc-dn.t{color:var(--gold);}
.fc-dt{font-size:10px;color:var(--muted);}
.fc-ic{font-size:24px;width:30px;text-align:center;}
.fc-ds{flex:1;font-size:12px;color:var(--muted);}
.fc-pop{font-size:11px;color:var(--sky);min-width:34px;text-align:center;}
.fc-tc{text-align:right;}
.fc-hi{font-family:'Cormorant Garamond',serif;font-size:20px;font-weight:400;color:var(--text);}
.fc-lo{font-size:11px;color:var(--muted);}

/* APP BRAND HEADER */
.brand-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;}
.brand-name{font-family:'Cormorant Garamond',serif;font-size:20px;font-weight:300;color:var(--text);letter-spacing:.04em;}
.brand-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--teal);margin-right:7px;vertical-align:middle;animation:pu 3s ease-in-out infinite;}
.unit-toggle{display:flex;align-items:center;background:var(--glass2);border:1px solid var(--border2);border-radius:60px;overflow:hidden;cursor:pointer;}
.unit-opt{padding:6px 13px;font-size:12px;font-weight:500;color:var(--muted);transition:all .2s;white-space:nowrap;}
.unit-opt.active{background:rgba(77,217,192,0.18);color:var(--teal);}
.updated-ts{font-size:10px;color:var(--dim);margin-top:6px;text-align:right;letter-spacing:.04em;}

/* FAB hidden — unit toggle moved to header */
.ufab{display:none;}

/* ERROR */
.err-wrap{margin:24px 16px;background:rgba(240,120,120,0.08);border:1px solid rgba(240,120,120,0.25);border-radius:var(--rs);padding:28px;text-align:center;}
.err-i{font-size:40px;margin-bottom:12px;}
.err-t{font-family:'Cormorant Garamond',serif;font-size:24px;font-weight:300;color:var(--coral);margin-bottom:8px;}
.err-m{font-size:13px;color:var(--muted);line-height:1.6;}
.err-btn{margin-top:18px;padding:11px 28px;background:var(--glass2);border:1px solid var(--border2);border-radius:60px;font-family:'Outfit',sans-serif;font-size:13px;color:var(--text);cursor:pointer;}
/* FOG MONSTER */
.fog-monster{
  position:fixed;bottom:60px;left:0;width:100%;z-index:500;
  pointer-events:none;
  animation:fogRoll 20s linear forwards;
}
.fog-monster.dismissing{animation:fogExit .6s ease forwards;}
.fog-monster-inner{
  position:relative;width:260px;
  pointer-events:all;cursor:pointer;
  animation:fogBob 3s ease-in-out infinite;
}
@keyframes fogRoll{
  0%{transform:translateX(110vw);}
  100%{transform:translateX(-300px);}
}
@keyframes fogExit{
  to{transform:translateY(200px);opacity:0;}
}
@keyframes fogBob{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-10px);}
}
.fog-tap-hint{
  display:block;text-align:center;margin-top:6px;
  font-size:12px;color:rgba(255,255,255,0.5);white-space:nowrap;
  letter-spacing:.05em;font-family:'Outfit',sans-serif;
  animation:hintFade 2s ease 4s forwards;opacity:1;
}
@keyframes hintFade{to{opacity:0;}}
.fog-error-badge{
  position:absolute;top:-28px;left:50%;transform:translateX(-50%);
  background:rgba(240,120,120,0.85);color:#fff;
  font-size:11px;font-weight:600;padding:4px 10px;border-radius:60px;
  font-family:'Outfit',sans-serif;letter-spacing:.04em;white-space:nowrap;
}
