/* added 2026-09-29: home hub, meteors page, phone tab bar */
.hub{padding-top:6px}
.hubgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media (max-width:900px){.hubgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.hubgrid{grid-template-columns:1fr}}
.hubcard{display:flex;flex-direction:column;gap:6px;text-decoration:none;padding:18px;border-radius:16px;background:var(--panel);border:1px solid var(--line);transition:border-color .15s,transform .15s;min-height:190px}
.hubcard:hover{border-color:var(--sun);transform:translateY(-1px)}
.hubcard h3{margin:0;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);font-weight:600}
.hubbig{margin:0;font-family:var(--display);font-weight:700;font-size:1.45rem;line-height:1.15}
.hubscore{font-size:1rem;color:var(--sun);white-space:nowrap}
.hubtx{margin:0;color:var(--dim);font-size:.92rem;line-height:1.45}
.hubcd{margin:0;color:var(--sun);font-weight:600;font-variant-numeric:tabular-nums}
.hubmore{margin-top:auto;color:var(--ion);font-size:.9rem;font-weight:600}
.hubmore:after{content:" \203A"}
.hubbars{display:flex;align-items:flex-end;gap:5px;height:44px;margin-top:4px}
.hubbars i{flex:1;background:var(--panel2);border-radius:4px;min-height:4px}
.hubbars i.on{background:var(--sun)}

.metnext{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:22px;display:flex;flex-direction:column;gap:14px;max-width:720px}
.metkick{margin:0;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--sun);font-weight:600}
.metname{margin:0;font-family:var(--display);font-weight:700;font-size:clamp(2rem,6vw,2.8rem);line-height:1}
.metnow{margin:0;font-family:var(--display);font-size:1.3rem;color:var(--ion);font-weight:650}
.metcd{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:420px}
.metcd div{background:var(--panel2);border-radius:12px;padding:12px 8px;text-align:center}
.metcd b{display:block;font-family:var(--display);font-size:1.9rem;color:var(--sun);font-variant-numeric:tabular-nums;line-height:1.1}
.metcd span{font-size:.8rem;color:var(--dim)}
.metnext .btn{align-self:flex-start;text-decoration:none;display:inline-block}
.metlist{list-style:none;margin:10px 0 18px;padding:0;max-width:720px}
.metlist li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.metlist .sub2{display:block;color:var(--dim);font-size:.88rem}
.metlist .rel{color:var(--sun);font-size:.88rem;white-space:nowrap}
.howbox{max-width:720px}

.tabbar,.tabsheet{display:none}
@media (max-width:700px){
  body.has-tabbar{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  .tabbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--panel);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px))}
  .tabbar a,.tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;background:none;border:0;padding:0;color:var(--dim);font-size:.72rem;text-decoration:none;line-height:1.1}
  .tabbar [aria-current=page],.tabbar [aria-expanded=true]{color:var(--sun);font-weight:700}
  .tabsheet:not([hidden]){display:flex;position:fixed;inset:0;z-index:70;background:#05081c99;align-items:flex-end}
  .tsbox{width:100%;max-height:80vh;overflow:auto;background:var(--bg);border-top:1px solid var(--line);border-radius:18px 18px 0 0;padding:16px 16px calc(20px + env(safe-area-inset-bottom,0px))}
  .tshead{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-family:var(--display);font-size:1.15rem}
  .tslinks{display:flex;flex-direction:column}
  .tslinks a{padding:14px 4px;border-top:1px solid var(--line);text-decoration:none;font-size:1.05rem;color:var(--ink)}
  .tslinks a[aria-current=page]{color:var(--sun);font-weight:700}
  body.tabsheet-on{overflow:hidden}
  body.sky-full .tabbar,body.ar-open .tabbar,body.photo-open .tabbar{display:none}
}

/* sky map: docked tap card, quick times, layer switches */
.skystage .skytip.docked{position:static;max-width:none;min-width:0;margin:8px 4px 0;box-shadow:none}
.skytip .sttop{display:flex;justify-content:space-between;align-items:center;gap:8px}
.skytip .sttop small{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:#ffd27a;font-weight:600}
.skytip .stx{background:none;border:0;color:#c9d0ff;font-size:1rem;min-width:44px;min-height:36px;margin:-8px -8px -8px 0}
.skystage .skywhen{display:block;margin:10px 4px 6px;font-family:var(--display);font-size:1.05rem;color:#eceaff;text-align:center;font-variant-numeric:tabular-nums}
.skychips,.skylayers{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:0 4px 8px}
.skychips button,.skylayers button{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:transparent;color:#eceaff;font-size:.9rem}
.skychips button[aria-pressed=true]{background:#ffd27a;border-color:#ffd27a;color:#1a1200;font-weight:700}
.skylayers{margin-top:10px}
.skylayers button{font-size:.82rem;min-height:36px}
.skylayers button:before{content:"";display:inline-block;width:10px;height:10px;border-radius:3px;border:1.5px solid currentColor;margin-right:7px;vertical-align:-1px}
.skylayers button[aria-pressed=true]:before{background:#5fd6c8;border-color:#5fd6c8}
.skystage #skyReset{display:none}
.skystage .sliderrow{grid-template-columns:auto 1fr}

/* news desk */
.nd-edition{margin:0 0 6px;color:var(--dim);font-size:.9rem}
.nd-edition a{color:var(--ion)}
.nd-list{display:flex;flex-direction:column;gap:16px;margin-top:14px}
.nd-card{display:grid;grid-template-columns:72px minmax(0,1fr);gap:16px;padding:18px;border-radius:16px;background:var(--panel);border:1px solid var(--line)}
@media (max-width:560px){.nd-card{grid-template-columns:1fr;gap:8px;padding:16px}.nd-art svg{width:48px;height:48px}}
.nd-art{color:var(--dim)}
.nd-body h3{margin:4px 0 8px;font-family:var(--display);font-weight:650;font-size:1.22rem;line-height:1.25;letter-spacing:-.01em}
.nd-body>p{margin:0 0 10px;line-height:1.6}
.nd-meta{margin:0!important;color:var(--dim);font-size:.82rem;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.nd-rank{display:inline-grid;place-items:center;min-width:26px;height:26px;border-radius:999px;background:var(--sun);color:#1a1200;font-weight:800;font-size:.85rem}
.nd-src{margin:10px 0 0!important;font-size:.85rem}
.nd-src a{color:var(--ion);text-decoration:none}
.nd-src a:hover{text-decoration:underline}
.nd-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:12px 0 4px}
.nd-stats div{background:var(--panel2);border-radius:12px;padding:10px 12px;animation:ndUp .6s ease-out both}
.nd-stats div:nth-child(2){animation-delay:.12s}.nd-stats div:nth-child(3){animation-delay:.24s}
.nd-stats b{display:block;font-family:var(--display);font-size:1.3rem;color:var(--sun);font-variant-numeric:tabular-nums;line-height:1.15}
.nd-stats span{font-size:.8rem;color:var(--dim);line-height:1.3;display:block}
.nd-tl{list-style:none;margin:12px 0 4px;padding:0 0 0 18px;position:relative}
.nd-tl:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.nd-tl li{position:relative;padding:4px 0;animation:ndUp .5s ease-out both;animation-delay:calc(var(--i)*.15s)}
.nd-tl li:before{content:"";position:absolute;left:-17px;top:11px;width:10px;height:10px;border-radius:50%;background:var(--sun)}
.nd-tl b{font-variant-numeric:tabular-nums;margin-right:8px}
.nd-tl span{color:var(--dim);font-size:.92rem}
.nd-bars{display:flex;flex-direction:column;gap:8px;margin:12px 0 4px}
.nd-bar{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;gap:10px;align-items:center;font-size:.85rem}
@media (max-width:560px){.nd-bar{grid-template-columns:1fr auto}.nd-bt{grid-column:1 / -1;grid-row:2}}
.nd-bl{color:var(--dim)}
.nd-bt{height:10px;background:var(--panel2);border-radius:5px;overflow:hidden}
.nd-bt i{display:block;height:100%;background:var(--sun);border-radius:5px;transform-origin:left;animation:ndGrow 1s ease-out both;animation-delay:calc(var(--i)*.12s)}
.nd-bar b{font-variant-numeric:tabular-nums;white-space:nowrap}
.nd-steps{width:100%;max-width:420px;height:auto;margin:10px 0 0;color:var(--ion);overflow:visible}
.nd-steps .nd-draw{stroke-dasharray:1;stroke-dashoffset:1;animation:ndDraw 1.6s ease-out .2s forwards}
.nd-sv{font:700 12px var(--body);fill:var(--ink)}
.nd-sx{font:500 10px var(--body);fill:var(--dim)}
.nd-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
.nd-tabs button{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--panel);font-size:.9rem}
.nd-tabs button[aria-selected=true]{background:var(--sun);border-color:var(--sun);color:#1a1200;font-weight:700}
.nd-ch{margin:14px 0 0;font-family:var(--display);font-size:1.3rem}
.nd-js .nd-country:not(.on){display:none}
.nd-country{display:flex;flex-direction:column;gap:16px}
.nd-teaser{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin:10px 0 18px}
.nd-tk{margin:0 0 6px;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--sun);font-weight:700}
.nd-teaser ol{margin:0 0 10px;padding-left:20px}
.nd-teaser li{margin:6px 0}
.nd-teaser li a{text-decoration:none}
.nd-teaser li a:hover{text-decoration:underline}
@keyframes ndUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes ndGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes ndDraw{to{stroke-dashoffset:0}}
/* icon motion */
.nd-art svg{overflow:visible}
.i-spin{animation:ndSpin 6s linear infinite}.i-spin.slow{animation-duration:14s}
.i-lift{animation:ndLift 2.4s ease-in-out infinite}
.i-flame{transform-origin:32px 42px;animation:ndFlick .25s ease-in-out infinite alternate}
.i-tw{animation:ndTw 2.2s ease-in-out infinite}.i-tw.d2{animation-delay:.7s}.i-tw.d3{animation-delay:1.4s}
.i-drift{animation:ndDrift 6s linear infinite}
.i-ecl{animation:ndEcl 6s ease-in-out infinite}
.i-pulse{transform-origin:32px 32px;animation:ndPulse 2.4s ease-out infinite}.i-pulse.d2{animation-delay:.8s}.i-pulse.d3{animation-delay:1.6s}
.i-bars rect{transform-box:fill-box;transform-origin:bottom;animation:ndBar 2.4s ease-in-out infinite alternate}
.i-bars rect:nth-child(2){animation-delay:.3s}.i-bars rect:nth-child(3){animation-delay:.6s}
@keyframes ndSpin{to{transform:rotate(360deg)}}
@keyframes ndLift{50%{transform:translateY(-3px)}}
@keyframes ndFlick{from{transform:scaleY(.75)}to{transform:scaleY(1.15)}}
@keyframes ndTw{50%{opacity:.25}}
@keyframes ndDrift{to{transform:translateX(-22px)}}
@keyframes ndEcl{0%,100%{transform:translateX(-30px)}50%{transform:translateX(30px)}}
@keyframes ndPulse{from{transform:scale(.6);opacity:1}to{transform:scale(3);opacity:0}}
@keyframes ndBar{from{transform:scaleY(.6)}to{transform:scaleY(1)}}
@media (prefers-reduced-motion:reduce){.nd-art *,.nd-stats div,.nd-tl li,.nd-bt i,.nd-steps .nd-draw{animation:none!important}.nd-steps .nd-draw{stroke-dashoffset:0}}
.skytip:not([hidden]) ~ .skyhint{display:none}

/* sky map compass */
.skycomp{position:absolute;left:12px;top:12px;z-index:2;display:flex;align-items:center;gap:6px;height:40px;padding:0 14px 0 10px;border-radius:999px;border:1px solid rgba(255,255,255,.28);background:rgba(6,10,30,.7);color:#eceaff;font-size:.9rem}
.skycomp[aria-pressed=true]{background:#5fd6c8;border-color:#5fd6c8;color:#06201d;font-weight:700}
.skycomp[aria-pressed=true] svg{animation:ndSpin 3s linear infinite}
.skyhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 10px;margin:56px 4px 4px;text-align:center;font-size:.85rem;color:#c9d0ff;position:relative;z-index:1}
.skyhead strong{color:#5fd6c8;font-family:var(--display);font-size:1rem}
.skyhead span{flex-basis:100%}
.skyhead .btn{padding:6px 14px;font-size:.85rem;color:#eceaff;border-color:rgba(255,255,255,.3)}
.skystage.full canvas{touch-action:none}
@media (prefers-reduced-motion:reduce){.skycomp svg{animation:none!important}}
