:root{
  --bg:#04050d; --panel:rgba(12,14,30,.82); --panel2:rgba(22,25,52,.9); --line:rgba(255,255,255,.1);
  --text:#eef1ff; --muted:#a6aed0; --gold:#ffcc4d; --gold2:#ff9f1c; --cyan:#5ee7ff; --violet:#a68bff; --pink:#ff6fae; --green:#5cf2a0;
  --r:18px; --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
}
@font-face{font-family:"Space Grotesk";src:url(/fonts/space-grotesk.woff2) format("woff2");font-weight:300 700;font-display:swap}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans",sans-serif;-webkit-font-smoothing:antialiased;overflow:hidden;overscroll-behavior:none}
button{font:inherit;color:inherit;cursor:pointer}
a{color:var(--gold)}
h1,h2,h3,.display{font-family:"Space Grotesk",system-ui,sans-serif;letter-spacing:-.01em}
h2{margin:.1em 0 .4em;font-size:1.35rem}
h3{margin:1.2em 0 .5em;font-size:1.05rem}
.muted{color:var(--muted)}
:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;border-radius:8px}
[hidden]{display:none!important}

#app{position:fixed;inset:0;overflow:hidden}
#stage{position:absolute;inset:0;background:radial-gradient(120% 80% at 50% 40%,#0b1030 0%,#05060f 55%,#020208 100%)}
#stars{position:absolute;inset:0;width:100%;height:100%}
.layer{position:absolute;inset:0;will-change:transform,opacity}
#map{background:transparent}
#map.off,#map.off *{visibility:hidden!important}
#glow{position:absolute;left:50%;top:50%;width:1000px;height:1000px;margin:-500px 0 0 -500px;transform-origin:50% 50%;will-change:transform,opacity;contain:strict;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(80,140,255,0) 46%,rgba(80,140,255,.38) 50%,rgba(60,100,255,.12) 58%,rgba(40,60,200,0) 70%);transition:opacity .4s}
#glow.off{opacity:0}
.maplibregl-canvas{outline:none}
.maplibregl-ctrl-attrib{font-size:10px;background:rgba(8,10,24,.55)!important;color:#c9cfe8}
.maplibregl-ctrl-attrib a{color:#c9cfe8}
.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right{bottom:calc(132px + var(--safe-b))}

/* ---------- top ---------- */
.top{position:absolute;left:10px;right:10px;top:calc(8px + var(--safe-t));display:flex;flex-direction:column;gap:6px;pointer-events:none;z-index:5}
.brand{display:flex;align-items:center;gap:9px;pointer-events:auto;align-self:flex-start;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:4px 14px 4px 5px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.brand img{width:30px;height:30px;object-fit:contain;filter:drop-shadow(0 0 6px rgba(166,139,255,.45))}
.brand h1{margin:0;font-size:1.25rem;line-height:1.05;background:linear-gradient(90deg,#fff 0%,#ffe08a 60%,#ffb347 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.tagline{margin:0;font-size:.74rem;color:var(--muted)}
.stats{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;pointer-events:auto;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
.stats::-webkit-scrollbar{display:none}
.stat{flex:none;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:.78rem;color:var(--muted);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);white-space:nowrap}
.stat b{color:var(--text);font-weight:700}
.stat small{font-size:.74rem}

/* ---------- search ---------- */
.search{position:absolute;left:10px;right:10px;top:calc(92px + var(--safe-t));z-index:6;display:flex;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:14px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 8px 30px rgba(0,0,0,.35)}
.search-icon{padding:0 4px 0 12px;opacity:.8}
.search input{flex:1;min-width:0;background:none;border:0;color:var(--text);padding:12px 6px;font-size:16px;outline:none}
.search input::placeholder{color:#8a92b8}
.icon-btn{background:none;border:0;padding:10px 12px;font-size:1.05rem}
.search-results{position:absolute;left:0;right:0;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;background:var(--panel2);border:1px solid var(--line);border-radius:14px;max-height:50vh;overflow:auto;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.search-results li button{display:block;width:100%;text-align:left;background:none;border:0;padding:9px 10px;border-radius:10px}
.search-results li button:focus-visible,.search-results li button:active{background:rgba(255,255,255,.07)}@media (hover:hover) and (pointer:fine){.search-results li button:hover{background:rgba(255,255,255,.07)}}
.search-results b{display:block;font-size:.95rem}
.search-results span{display:block;font-size:.8rem;color:var(--muted)}

.where{position:absolute;left:12px;top:calc(146px + var(--safe-t));z-index:4;font-size:.78rem;color:#dfe4ff;background:rgba(8,10,24,.55);border:1px solid var(--line);padding:3px 10px;border-radius:999px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);max-width:calc(100% - 90px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.where:empty{display:none}

/* ---------- rail ---------- */
.rail{position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:5;display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:5px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.rail button{display:flex;flex-direction:column;align-items:center;gap:0;background:none;border:0;border-radius:11px;padding:5px 4px;min-width:46px;color:var(--muted)}
.rail button span{font-size:1.1rem;line-height:1.2}
.rail button small{font-size:.58rem;letter-spacing:.02em}
.rail button.on{background:linear-gradient(180deg,rgba(255,204,77,.25),rgba(255,159,28,.12));color:#fff;box-shadow:inset 0 0 0 1px rgba(255,204,77,.45)}

.map-tools{position:absolute;left:10px;bottom:calc(186px + var(--safe-b));z-index:4}
.seg{display:flex;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:3px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.seg button{background:none;border:0;padding:6px 10px;border-radius:9px;font-size:.78rem;color:var(--muted)}
.seg button.on{background:rgba(255,255,255,.12);color:#fff}
.space-chip{position:absolute;left:50%;transform:translateX(-50%);top:calc(150px + var(--safe-t));z-index:4;background:linear-gradient(90deg,#3b2bff,#a68bff);border:0;border-radius:999px;padding:8px 14px;font-weight:700;font-size:.85rem;box-shadow:0 6px 24px rgba(110,80,255,.5);animation:float 3s ease-in-out infinite}
@keyframes float{50%{transform:translateX(-50%) translateY(-3px)}}
.moons{position:absolute;left:10px;right:70px;top:calc(176px + var(--safe-t));z-index:4;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.moons button{flex:none;display:flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:4px 10px 4px 4px;font-size:.8rem}
.moons img{width:22px;height:22px}

/* ---------- bottom ---------- */
.bottom{position:absolute;left:0;right:0;bottom:0;z-index:6;padding:0 10px calc(8px + var(--safe-b));display:flex;flex-direction:column;gap:8px;pointer-events:none}
.bottom>*{pointer-events:auto}
.cta{align-self:center;border:0;border-radius:999px;padding:13px 26px;font-family:"Space Grotesk",sans-serif;font-weight:700;font-size:1.05rem;color:#2a1700;background:linear-gradient(180deg,#ffe17a,#ffb02e 60%,#ff9f1c);box-shadow:0 8px 30px rgba(255,170,40,.45),inset 0 1px 0 rgba(255,255,255,.6);position:relative;overflow:hidden}
.cta::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);transform:translateX(-120%);animation:shine 4s ease-in-out infinite 2s}
@keyframes shine{30%,100%{transform:translateX(120%)}}
.dock{display:flex;justify-content:space-between;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:5px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 10px 40px rgba(0,0,0,.45)}
.dock button{flex:1;display:flex;flex-direction:column;align-items:center;background:none;border:0;padding:6px 2px;border-radius:14px;font-size:.7rem;color:var(--muted);gap:1px}
.dock button span{font-size:1.25rem;line-height:1.1}
.dock button.on,.dock button:active{background:rgba(255,255,255,.08);color:#fff}@media (hover:hover) and (pointer:fine){.dock button:hover{background:rgba(255,255,255,.08);color:#fff}}

/* ---------- placer ---------- */
#placer{position:absolute;inset:0;z-index:8;pointer-events:none}
.placer-hint{position:absolute;left:12px;right:12px;top:calc(146px + var(--safe-t));margin:auto;max-width:460px;background:rgba(10,12,30,.9);border:1px solid rgba(255,204,77,.4);border-radius:14px;padding:10px 12px;text-align:center;font-size:.9rem;pointer-events:auto}
.placer-pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center}
.pp-head{width:52px;height:52px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:linear-gradient(135deg,#ffe17a,#ff9f1c);display:grid;place-items:center;box-shadow:0 8px 20px rgba(0,0,0,.5),0 0 0 4px rgba(255,255,255,.85);animation:bob 1.4s ease-in-out infinite;font-size:24px}
.pp-head>*{transform:rotate(45deg)}
.pp-shadow{width:18px;height:6px;border-radius:50%;background:rgba(0,0,0,.45);margin-top:8px}
@keyframes bob{50%{translate:0 -6px}}
.placer-bar{position:absolute;left:10px;right:10px;bottom:calc(14px + var(--safe-b));display:flex;gap:10px;justify-content:center;pointer-events:auto}
.placer-bar .btn{flex:1;max-width:220px}
.placing .bottom,.placing .rail,.placing .map-tools,.placing .space-chip,.placing .moons{display:none!important}

/* ---------- buttons, fields ---------- */
.btn{border:0;border-radius:14px;padding:12px 16px;font-weight:700;font-size:.95rem;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;color:#fff;background:rgba(255,255,255,.1)}
.btn.gold{color:#2a1700;background:linear-gradient(180deg,#ffe17a,#ff9f1c);box-shadow:0 6px 20px rgba(255,170,40,.35)}
.btn.ghost{background:rgba(10,12,30,.85);border:1px solid var(--line)}
.btn.wa{background:#1fa855}
.btn.violet{background:linear-gradient(180deg,#8e75ff,#5b3cff)}
.btn:disabled{opacity:.55;cursor:default}
.btn.small{padding:7px 11px;font-size:.82rem;border-radius:11px}
.field{width:100%;background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:12px;padding:12px;color:var(--text);font-size:16px;outline:none}
.field:focus{border-color:rgba(255,204,77,.6)}
label.lbl{display:block;font-size:.82rem;color:var(--muted);margin:10px 0 5px}
.row{display:flex;gap:8px;flex-wrap:wrap}
.row>.btn{flex:1}

/* ---------- sheets ---------- */
.backdrop{position:absolute;inset:0;z-index:9;background:rgba(2,3,10,.45);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.sheet{position:absolute;left:0;right:0;bottom:0;z-index:10;max-height:86%;display:flex;flex-direction:column;background:linear-gradient(180deg,rgba(20,22,48,.97),rgba(9,10,24,.98));border:1px solid var(--line);border-bottom:0;border-radius:24px 24px 0 0;box-shadow:0 -20px 60px rgba(0,0,0,.6);animation:up .32s cubic-bezier(.2,.9,.2,1)}
@media(min-width:760px){.sheet{left:auto;right:16px;bottom:16px;width:420px;border-radius:24px;border-bottom:1px solid var(--line);max-height:calc(100% - 32px)}}
@keyframes up{from{transform:translateY(40px);opacity:0}}
.grab{width:42px;height:5px;border-radius:9px;background:rgba(255,255,255,.25);margin:9px auto 0}
.close{position:absolute;right:10px;top:8px;width:36px;height:36px;border-radius:50%;border:0;background:rgba(255,255,255,.08);font-size:.95rem}
.sheet-body{overflow:auto;padding:6px 16px calc(18px + var(--safe-b));-webkit-overflow-scrolling:touch}
.chips{display:flex;gap:6px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:none}
.chips button{flex:none;display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:999px;padding:5px 11px 5px 6px;font-size:.82rem;color:var(--muted)}
.chips button img{width:20px;height:20px}
.chips button.on{color:#fff;border-color:rgba(255,204,77,.6);background:rgba(255,204,77,.12)}
.tabs{display:flex;gap:4px;overflow-x:auto;margin:2px 0 10px;scrollbar-width:none}
.tabs button{flex:none;background:none;border:0;border-bottom:2px solid transparent;padding:7px 9px;font-size:.84rem;color:var(--muted)}
.tabs button.on{color:#fff;border-color:var(--gold)}
.list{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.item{display:flex;align-items:center;gap:11px;background:#1a1b30;-webkit-tap-highlight-color:transparent;border:1px solid var(--line);border-radius:14px;padding:10px 11px;text-align:left;width:100%}
/* Nov 1 9:12 PM (owner): every row in every list has the SAME solid background; nothing lights up on tap, hover, focus or scroll. */
button.item,button.item:active,button.item:hover,button.item:focus,button.item:focus-visible{background:#1a1b30}button.item:focus:not(:focus-visible){outline:none}
.item .ico{font-size:1.5rem;width:34px;text-align:center;flex:none}
.item .ico img{width:34px;height:34px}
.item .main{flex:1;min-width:0}
.item .main b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .main span{display:block;font-size:.8rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .side{font-size:.8rem;color:var(--muted);text-align:right;flex:none}
.badge{display:inline-block;font-size:.68rem;font-weight:700;padding:2px 7px;border-radius:999px;background:rgba(255,255,255,.1);vertical-align:middle}
.badge.live{background:rgba(255,80,110,.2);color:#ff8fa8}
.badge.soon{background:rgba(94,231,255,.15);color:var(--cyan)}
.badge.built{background:rgba(92,242,160,.15);color:var(--green)}
.bar{height:8px;border-radius:9px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:6px}
.bar i{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,#ff6fae,#ffcc4d)}
.empty{padding:18px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:14px}

/* claim */
.style-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.style-pick label{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.04);font-size:.78rem;text-align:center;cursor:pointer}
.style-pick input{position:absolute;opacity:0;pointer-events:none}
.style-pick label span{font-size:1.5rem}
.style-pick input:checked+label{border-color:var(--gold);background:rgba(255,204,77,.12)}
.spot{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:14px;background:rgba(94,231,255,.08);border:1px solid rgba(94,231,255,.25);font-size:.9rem}
.rules{font-size:.86rem;color:var(--muted);background:rgba(255,255,255,.04);border-radius:14px;padding:10px 12px;margin-top:12px}
.rules b{color:var(--text)}
.crown-card{position:relative;text-align:center;padding:22px 14px 16px;border-radius:20px;background:radial-gradient(120% 90% at 50% 0%,rgba(255,204,77,.28),rgba(166,139,255,.12) 50%,rgba(255,255,255,.03));border:1px solid rgba(255,204,77,.35);overflow:hidden}
.crown-card .big{font-size:3rem;line-height:1;filter:drop-shadow(0 6px 16px rgba(255,190,60,.6));animation:pop .7s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{from{transform:scale(.2) rotate(-20deg);opacity:0}}
.crown-card .you{color:var(--muted);font-size:.85rem;margin-top:8px}
.crown-card .title{font-family:"Space Grotesk",sans-serif;font-size:1.55rem;font-weight:700;line-height:1.15;margin:4px 0;background:linear-gradient(90deg,#fff,#ffe08a);-webkit-background-clip:text;background-clip:text;color:transparent}
.crown-card .where2{font-size:.85rem;color:#dfe4ff}
.share-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}

/* worlds */
.world-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:9px;margin-top:8px}
.wcard{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px 10px;border-radius:16px;background:rgba(255,255,255,.04);border:1px solid var(--line);text-align:center}
.wcard img{width:62px;height:62px;object-fit:contain;transition:transform .4s}
@media (hover:hover) and (pointer:fine){.wcard:hover img{transform:scale(1.08) rotate(6deg)}}
.wcard b{font-size:.86rem}
.wcard span{font-size:.72rem;color:var(--muted)}
.wcard .round{width:62px;height:62px;border-radius:50%;object-fit:cover}

/* daily */
.daily-map{position:relative;width:100%;aspect-ratio:1/1;max-height:46vh;border-radius:18px;overflow:hidden;background:#1a2433;border:1px solid var(--line)}
.daily-map .tiles{position:absolute;left:50%;top:50%}
.daily-map img{position:absolute;width:256px;height:256px;user-select:none;-webkit-user-drag:none}
.daily-map .ring{position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:3px solid #ff3d6e;box-shadow:0 0 0 4px rgba(255,61,110,.25)}
.daily-map .zoomtag{position:absolute;left:8px;bottom:8px;background:rgba(0,0,0,.6);font-size:.72rem;padding:2px 8px;border-radius:999px}
.guess-wrap{position:relative;margin-top:10px}
.guess-sugg{position:absolute;left:0;right:0;bottom:calc(100% + 4px);margin:0;padding:4px;list-style:none;background:var(--panel2);border:1px solid var(--line);border-radius:12px;max-height:200px;overflow:auto;z-index:2}
.guess-sugg button{display:block;width:100%;text-align:left;background:none;border:0;padding:8px;border-radius:8px}
.guess-sugg button:active{background:rgba(255,255,255,.08)}@media (hover:hover) and (pointer:fine){.guess-sugg button:hover{background:rgba(255,255,255,.08)}}
.guesses{display:flex;flex-direction:column;gap:5px;margin-top:10px}
.guess{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;background:rgba(255,255,255,.05);border-radius:10px;padding:7px 10px;font-size:.86rem}
.guess.win{background:rgba(92,242,160,.18)}
.hints{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.hints span{font-size:.78rem;background:rgba(94,231,255,.1);border:1px solid rgba(94,231,255,.25);padding:3px 9px;border-radius:999px}

/* events / timeline */
.timeline{position:relative;margin:8px 0 0 8px;padding-left:16px;border-left:2px solid rgba(255,255,255,.12);display:flex;flex-direction:column;gap:10px}
.tl{position:relative;font-size:.88rem}
.tl::before{content:"";position:absolute;left:-23px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--violet);box-shadow:0 0 0 3px rgba(166,139,255,.25)}
.tl.live::before{background:#ff5a7e}.tl.built::before{background:var(--green)}.tl.soon::before{background:var(--cyan)}
.tl small{color:var(--muted);display:block}
.replay{display:flex;align-items:center;gap:10px;margin-top:8px}
.replay input{flex:1;accent-color:var(--gold)}
.follow{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.follow a{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid var(--line);text-decoration:none;color:var(--text);font-size:.82rem}
.follow a span{font-size:1.4rem}
.credits{font-size:.74rem;color:var(--muted)}
.credits p{margin:.35em 0}

/* popups */
.maplibregl-popup-content{background:rgba(14,16,36,.96);color:var(--text);border:1px solid var(--line);border-radius:16px;padding:12px 14px;box-shadow:0 12px 40px rgba(0,0,0,.5);min-width:200px}
.maplibregl-popup-tip{border-top-color:rgba(14,16,36,.96)!important;border-bottom-color:rgba(14,16,36,.96)!important}
.maplibregl-popup-close-button{color:#fff;font-size:18px;right:4px;top:2px}
.pop .t{font-family:"Space Grotesk",sans-serif;font-weight:700;font-size:1.05rem;color:var(--gold)}
.pop .n{font-weight:700;font-size:1rem}
.pop .p{font-size:.8rem;color:var(--muted);margin:2px 0 8px}
.pop .first{display:inline-block;font-size:.7rem;background:rgba(94,231,255,.15);color:var(--cyan);padding:1px 7px;border-radius:999px;margin-bottom:4px}

/* ---------- space scenes ---------- */
#space{overflow:hidden}
.scene{position:absolute;inset:0;touch-action:none}
.solar-plane{position:absolute;inset:0;isolation:isolate}
.body{position:absolute;transform:translate(-50%,-50%);border:0;background:none;padding:0;display:flex;flex-direction:column;align-items:center}
.body img{display:block;width:100%;height:auto;filter:drop-shadow(0 0 8px rgba(255,255,255,.12))}
.body .lbl{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.66rem;color:#dfe4ff;white-space:nowrap;text-shadow:0 1px 3px #000;pointer-events:none}
.body .cnt{position:absolute;right:-6px;top:-6px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--gold);color:#2a1700;font-size:.62rem;font-weight:800;display:grid;place-items:center}
.body.sun img{filter:none;border-radius:50%;box-shadow:0 0 28px 6px rgba(255,170,60,.75),0 0 70px 18px rgba(255,120,30,.35)}
.orbit{position:absolute;border:1px solid rgba(160,180,255,.13);border-radius:50%;pointer-events:none}
.scene-title{position:absolute;left:0;right:0;top:calc(186px + var(--safe-t));text-align:center;pointer-events:none}
.scene-title h2{margin:0;font-size:1.3rem;text-shadow:0 2px 12px #000}
.scene-title p{margin:2px 0 0;color:var(--muted);font-size:.82rem}
.gal-wrap{position:absolute;left:50%;top:54%;transform:translate(-50%,-50%)}
.gal-wrap>img.mw{width:100%;height:100%;border-radius:50%;object-fit:cover;-webkit-mask-image:radial-gradient(circle,#000 52%,transparent 71%);mask-image:radial-gradient(circle,#000 52%,transparent 71%);animation:breathe 12s ease-in-out infinite}
@keyframes breathe{50%{transform:scale(1.03)}}
.hot{position:absolute;transform:translate(-50%,-50%);background:none;border:0;padding:0;display:flex;flex-direction:column;align-items:center}
.hot .dot{width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.18),0 0 14px 4px rgba(166,139,255,.9)}
.hot .thumb{width:40px;height:40px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,255,255,.7);box-shadow:0 0 18px rgba(166,139,255,.8)}
.hot .lbl{margin-top:2px;font-size:.62rem;max-width:110px;white-space:normal!important;text-align:center;line-height:1.15;white-space:nowrap;text-shadow:0 1px 3px #000;color:#eef1ff}
.hot.sunhere .dot{background:#ffcc4d;box-shadow:0 0 0 4px rgba(255,204,77,.3),0 0 18px 6px rgba(255,190,60,.9);animation:pulse 2s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 9px rgba(255,204,77,0),0 0 18px 6px rgba(255,190,60,.9)}}
.galaxy-obj{position:absolute;transform:translate(-50%,-50%);background:none;border:0;padding:0;display:flex;flex-direction:column;align-items:center}
.galaxy-obj img{border-radius:50%;object-fit:cover;-webkit-mask-image:radial-gradient(circle,#000 45%,transparent 70%);mask-image:radial-gradient(circle,#000 45%,transparent 70%)}
.galaxy-obj .lbl{font-size:.68rem;margin-top:-4px;text-shadow:0 1px 3px #000;white-space:nowrap}
.star-plot{position:absolute;width:5px;height:5px;margin:-2.5px;border-radius:50%;background:#ffe17a;box-shadow:0 0 6px 2px rgba(255,210,90,.9);pointer-events:none}
.obj-card{position:absolute;left:12px;right:12px;bottom:calc(140px + var(--safe-b));margin:auto;max-width:420px;z-index:7;background:rgba(14,16,36,.95);border:1px solid var(--line);border-radius:18px;padding:12px;display:flex;gap:12px;align-items:center;animation:up .3s}
.obj-card img{width:74px;height:74px;border-radius:14px;object-fit:cover;flex:none}
.obj-card b{display:block;font-family:"Space Grotesk",sans-serif}
.obj-card span{display:block;font-size:.8rem;color:var(--muted)}
.obj-card .row{margin-top:8px}

/* toast + intro */
.toast{position:absolute;left:50%;top:calc(12px + var(--safe-t));transform:translate(-50%,-150%);z-index:20;background:rgba(14,16,36,.96);border:1px solid var(--line);padding:10px 16px;border-radius:999px;font-size:.88rem;transition:transform .35s;max-width:90%;text-align:center}
.toast.show{transform:translate(-50%,0)}
#intro{position:absolute;inset:0;z-index:30;display:grid;place-items:center;background:radial-gradient(80% 60% at 50% 45%,#141a4a 0%,#04050d 70%);transition:opacity .9s ease,visibility .9s}
#intro.gone{opacity:0;visibility:hidden}
.intro-inner{text-align:center;animation:rise 1s ease}
@keyframes rise{from{opacity:0;transform:translateY(14px) scale(.96)}}
.intro-name{font-family:"Space Grotesk",sans-serif;font-weight:700;font-size:2.3rem;margin-top:10px;background:linear-gradient(90deg,#fff,#ffe08a,#ffb347);-webkit-background-clip:text;background-clip:text;color:transparent}
.intro-tag{color:var(--muted)}
.intro-bar{width:160px;height:3px;border-radius:3px;background:rgba(255,255,255,.12);margin:18px auto 0;overflow:hidden}
.intro-bar i{display:block;height:100%;width:40%;background:linear-gradient(90deg,var(--violet),var(--gold));animation:load 1.1s ease-in-out infinite}
@keyframes load{from{transform:translateX(-100%)}to{transform:translateX(260%)}}
.noscript{position:absolute;inset:auto 0 50%;text-align:center}

@media (min-width:760px){
  .top{flex-direction:row;align-items:center;justify-content:space-between;right:auto;left:16px;top:14px;gap:16px}
  .search{left:auto;right:16px;width:380px;top:14px}
  .where{top:70px;left:16px}
  .placer-hint{top:72px}
  .scene-title{top:80px}
  .space-chip{top:76px}
  .moons{top:100px;left:16px}
  .bottom{left:50%;right:auto;transform:translateX(-50%);width:560px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- Part 1: accounts ---------- */
.acct-btn{position:absolute;right:0;top:0;pointer-events:auto;display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 13px 0 8px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--text);font-weight:700;font-size:.85rem;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);max-width:46vw}
.acct-btn span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av{border-radius:50%;object-fit:cover;flex:none;border:1px solid rgba(255,255,255,.25)}
.av-letter{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#8e75ff,#ff6fae);color:#fff;font-weight:800;font-size:.8rem}
.acct-card{background:linear-gradient(135deg,rgba(142,117,255,.16),rgba(255,204,77,.08));border:1px solid rgba(166,139,255,.35);border-radius:18px;padding:14px;margin:6px 0 12px}
.acct-top{display:flex;gap:12px;align-items:center}
.acct-name{font-size:1.05rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.role-pill{color:var(--gold);font-weight:700}
.chip-btn{background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:5px 10px;font-size:.78rem;margin:2px 0}
.gbtn{min-height:44px;display:flex;justify-content:center;color-scheme:normal}
.signin-gate{text-align:center;padding:10px 6px 4px}
.claim-as{display:flex;align-items:center;gap:8px;font-size:.84rem;color:var(--muted);background:rgba(92,242,160,.08);border:1px solid rgba(92,242,160,.25);border-radius:12px;padding:7px 10px;margin-top:8px}
.claim-as b{color:var(--text);overflow:hidden;text-overflow:ellipsis}

/* ---------- Part 1: sponsors on the map ---------- */
.sp-marker{display:flex;align-items:center;gap:8px;padding:4px 12px 4px 4px;border-radius:999px;cursor:pointer;color:#fff;font:inherit;
  background:linear-gradient(rgba(14,14,32,.94),rgba(14,14,32,.94)) padding-box,linear-gradient(135deg,#ffe17a,#ff9f1c 45%,#ff6fae) border-box;
  border:2px solid transparent;box-shadow:0 8px 24px rgba(0,0,0,.55),0 0 18px rgba(255,190,60,.35);position:relative;max-width:220px;transition:transform .15s}
.sp-marker::after{content:"";position:absolute;left:50%;bottom:-8px;transform:translateX(-50%);border:7px solid transparent;border-top-color:#ffb02e;border-bottom:0}
.sp-marker:active{transform:scale(.96)}
.sp-logo{width:34px;height:34px;border-radius:50%;background:#fff;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;flex:none;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.sp-logo img{width:100%;height:100%;object-fit:contain}
.sp-logo b{color:#2a1700;font-family:"Space Grotesk",sans-serif;font-size:1rem}
.sp-logo.big{width:52px;height:52px}
.sp-text{display:flex;flex-direction:column;min-width:0;text-align:left;line-height:1.1}
.sp-name{font-weight:800;font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-tag{font-size:.64rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#ffd36b;white-space:nowrap}
#map.sp-compact .sp-marker{padding:3px}
#map.sp-compact .sp-text{display:none}
#map.sp-compact .sp-logo{width:26px;height:26px}
body.placing .sp-marker{opacity:.35;pointer-events:none}
.sp-pop-head{display:flex;gap:12px;align-items:center;margin-bottom:6px}
.sp-badge{display:inline-block;font-size:.64rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#2a1700;background:linear-gradient(90deg,#ffe17a,#ff9f1c);padding:2px 8px;border-radius:999px;margin-bottom:3px}
.sp-list{display:flex;flex-direction:column;gap:8px}
.sp-chip{display:flex;align-items:center;gap:10px;text-align:left;background:rgba(255,255,255,.05);border:1px solid rgba(255,190,60,.3);border-radius:14px;padding:8px 10px;color:var(--text);font:inherit}
.sp-chip small{display:block;color:var(--muted);font-size:.76rem}

@media (min-width:760px){
  .top{max-width:calc(100% - 560px)}
  .acct-btn{position:fixed;right:406px;top:14px;height:46px;max-width:130px}
}
.acct-btn[hidden]{display:none}
.inapp-tip{font-size:.8rem;line-height:1.4;color:#ffe2a3;background:rgba(255,176,46,.12);border:1px solid rgba(255,176,46,.35);border-radius:12px;padding:8px 10px;margin:10px 0 0;text-align:left}

/* Oct 25: invites, Invite Battle, country leaderboard */
.invite-card{margin-top:12px;background:rgba(94,231,255,.07);border:1px solid rgba(94,231,255,.28);border-radius:14px;padding:12px}
.invite-card .share-row{margin-top:8px}
.inv-link{font-family:ui-monospace,Menlo,monospace;font-size:.82rem;background:rgba(0,0,0,.3);border-radius:10px;padding:8px 10px;margin-top:6px;word-break:break-all;color:var(--cyan)}
.inv-count{font-size:.82rem;color:var(--muted);margin-top:8px}
.my-battles{margin-top:10px}
.battle-line{background:rgba(255,111,174,.08);border:1px solid rgba(255,111,174,.3);border-radius:14px;padding:10px 12px;margin-top:8px;font-size:.88rem}
.bscore{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.85rem;margin-top:4px}
.bscore b{color:var(--gold);font-size:1.05rem}
.bs-vs{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.battle-pop{margin:8px 0 2px;padding:8px 10px;border-radius:12px;background:rgba(255,111,174,.1);border:1px solid rgba(255,111,174,.35)}
.battle-pop .bp-h{font-size:.78rem;font-weight:700;color:var(--pink)}
.pop .won{font-size:.78rem;color:var(--gold);margin-top:4px}
.btn.challenge{width:100%;margin:8px 0 2px;background:linear-gradient(135deg,#ff6fae,#a68bff);border:0;color:#fff;font-weight:700}
.battle-target{display:flex;gap:12px;align-items:center;background:rgba(255,255,255,.05);border-radius:14px;padding:12px;margin:6px 0 4px}
.battle-target .bt-ico{font-size:2rem}
.steps{padding-left:20px;font-size:.9rem;line-height:1.5}
.steps li{margin:4px 0}
.err-line{color:#ff9db4;min-height:1.2em;margin:8px 0 0;font-size:.88rem}
.item.lb .lb-rank{font-size:1.35rem}
.item.lb .lb-rank small{font-size:.95rem;color:var(--muted);font-weight:700}
.item.lb .bar{margin-top:6px}
.item.lb.me{border-color:rgba(255,204,77,.6)}
.ref-banner{position:fixed;left:50%;transform:translateX(-50%);top:calc(var(--safe-t) + 118px);z-index:60;width:min(420px,calc(100% - 24px));
  background:linear-gradient(135deg,rgba(40,30,90,.97),rgba(20,22,50,.97));border:1px solid rgba(255,204,77,.5);border-radius:16px;padding:12px 40px 12px 14px;
  font-size:.9rem;box-shadow:0 12px 40px rgba(0,0,0,.5);animation:rbIn .4s ease}
.ref-banner .rb-go{display:block;margin-top:10px}
.ref-banner .rb-x{position:absolute;right:8px;top:8px;background:none;border:0;color:var(--muted);font-size:1rem;padding:4px}
@keyframes rbIn{from{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%,0)}}
.item .main .bscore{display:flex}
.item .main .bscore span{display:inline}
.item .main .bscore b{display:inline;font-size:1.05rem}

/* ===== Oct 26 build ===== */
.shim{display:inline-block;width:28px;height:.8em;border-radius:6px;vertical-align:-1px;background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(255,255,255,.25),rgba(255,255,255,.08));background-size:200% 100%;animation:shim 1.1s linear infinite}
@keyframes shim{from{background-position:200% 0}to{background-position:-200% 0}}
.intro-line{position:absolute;left:0;right:0;top:128px;margin:0;pointer-events:none;font-size:.78rem;line-height:1.35;color:#dfe4ff;background:rgba(6,8,24,.62);border:1px solid var(--line);border-radius:12px;padding:6px 10px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);text-align:center}
body.returning .intro-line,body.placing .intro-line{display:none}
@media(min-width:760px){.intro-line{right:auto;max-width:430px;top:132px;text-align:left}}
.fabs{position:absolute;right:10px;bottom:calc(100% + 10px);display:flex;flex-direction:column;gap:8px;pointer-events:auto}
.fab{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:var(--panel);color:#fff;font-size:1.1rem;font-weight:700;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 6px 20px rgba(0,0,0,.4)}
.bottom{position:absolute}
body.placing .fabs{display:none}
.cta{font-size:1.15rem;padding:15px 30px;box-shadow:0 0 0 3px rgba(255,214,90,.25),0 8px 30px rgba(255,170,40,.55)}
.ebadge{display:inline-block;margin:3px 0 2px;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:700;color:#3a2400;background:linear-gradient(180deg,#fff2b0,#ffcf4a 55%,#f0a920);box-shadow:0 0 10px rgba(255,200,60,.65),inset 0 0 0 1px rgba(255,255,255,.55);white-space:nowrap;vertical-align:middle}
.ebadge.big{font-size:.95rem;padding:5px 14px;animation:glowb 2.4s ease-in-out infinite}
@keyframes glowb{50%{box-shadow:0 0 22px rgba(255,210,80,.95),inset 0 0 0 1px rgba(255,255,255,.7)}}
.item .main .ebadge{margin:2px 0}
.tiny{font-size:.75rem;margin:6px 0 0}
.name-locked{background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:12px;padding:9px 12px}
.name-locked b{display:block}.name-locked small{color:var(--muted);font-size:.75rem}
.style-pick.g3,.style-pick.p2{display:grid;gap:6px}
.style-pick.g3{grid-template-columns:repeat(3,1fr)}.style-pick.p2{grid-template-columns:repeat(2,1fr)}
.style-pick.g3 label,.style-pick.p2 label{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;padding:9px 4px;font-size:.8rem}
.style-pick label small{font-size:.66rem;color:var(--muted);line-height:1.2}
.my-homes{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.my-home{background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:12px;padding:8px;display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.tiny-sel{font-size:.8rem;color:var(--muted)}.tiny-sel select{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:4px 6px;font-size:.8rem}
.link-btn{background:none;border:0;padding:2px 0;font-size:.78rem;color:var(--muted);text-decoration:underline}.link-btn.danger{color:#ff9db4}
.share-modal{position:fixed;inset:0;z-index:60;background:rgba(2,3,12,.6);display:flex;align-items:flex-end;justify-content:center;backdrop-filter:blur(3px)}
.share-modal[hidden]{display:none}
.sm-card{position:relative;width:min(460px,100%);background:var(--panel2,#0d1030);border:1px solid var(--line);border-radius:22px 22px 0 0;padding:16px 14px calc(16px + var(--safe-b));max-height:90vh;overflow:auto}
@media(min-width:760px){.share-modal{align-items:center}.sm-card{border-radius:22px}}
.sm-card h3{margin:0 0 10px}
.sm-card .close{position:absolute;right:10px;top:10px;background:none;border:0;color:var(--muted);font-size:1.1rem}
.sm-wide{width:100%;margin-bottom:8px;display:flex;flex-direction:column;align-items:center}
.sm-wide small{font-weight:400;font-size:.72rem;opacity:.85}
.sm-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sm-grid .btn{text-decoration:none;text-align:center;font-size:.86rem;padding:11px 6px}
.sm-tip{margin-top:10px;background:rgba(166,139,255,.12);border:1px solid rgba(166,139,255,.35);border-radius:12px;padding:10px 12px;font-size:.85rem}
.sm-tip ol{margin:6px 0 0 18px;padding:0}
.sm-link{font-size:.72rem;text-align:center;margin:10px 0 0;word-break:break-all}
.chat-tabs{flex-wrap:nowrap;overflow-x:auto}
.chat-list{height:min(46vh,420px);overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:6px 2px;margin:8px 0}
.cm{position:relative;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:12px;padding:6px 10px;max-width:92%}
.cm.me{align-self:flex-end;background:rgba(255,200,80,.1);border-color:rgba(255,200,80,.3)}
.cm-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.78rem}
.cm-name{font-size:.8rem}.cm-t{color:var(--muted);font-size:.7rem;margin-left:auto}
.cm-more{background:none;border:0;color:var(--muted);font-size:1rem;padding:0 4px}
.cm-text{font-size:.92rem;word-wrap:break-word;overflow-wrap:anywhere}
.cm-menu{position:absolute;right:6px;top:26px;z-index:3;background:var(--panel2,#0d1030);border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;box-shadow:0 8px 24px rgba(0,0,0,.5)}
.cm-menu button{background:none;border:0;padding:9px 12px;text-align:left;font-size:.84rem;color:var(--text)}
.chat-form{display:flex;gap:8px}.chat-form .field{flex:1}
.chat-gate{background:rgba(255,255,255,.05);border:1px dashed var(--line);border-radius:12px;padding:12px;text-align:center;font-size:.88rem}
.chat-empty{text-align:center;margin:auto}
.guide{position:fixed;inset:0;z-index:70;background:transparent}
.guide-hl{box-shadow:0 0 0 4px #ffd54a,0 0 30px rgba(255,213,74,.8),0 0 0 200vmax rgba(2,3,12,.62)!important}
.top:has(.guide-hl),.bottom:has(.guide-hl),.search.guide-hl{z-index:65}
.bottom:has(.guide-hl) .dock{opacity:.35}
.guide-card{position:fixed;left:50%;transform:translateX(-50%);width:min(360px,calc(100% - 24px));background:var(--panel2,#0d1030);border:1px solid rgba(255,213,74,.5);border-radius:18px;padding:14px 16px;box-shadow:0 14px 40px rgba(0,0,0,.6);z-index:73}
.guide-card b{font-size:1.15rem;display:block}.guide-card p{margin:6px 0 12px;color:#dfe4ff;font-size:.95rem}
.guide-btns{display:flex;gap:8px}.guide-btns .btn{flex:1;padding:12px;font-size:1rem}
.guide-steps{display:flex;gap:5px;margin-bottom:8px}.guide-steps i{width:22px;height:5px;border-radius:3px;background:rgba(255,255,255,.2)}.guide-steps i.on{background:#ffd54a}
.guide-never{display:flex;gap:6px;align-items:center;margin-top:10px;font-size:.8rem;color:var(--muted)}
.noscript{position:fixed;inset:0;z-index:99;background:#04050d;color:#fff;padding:24px;font-size:1rem;line-height:1.5}
.noscript a{color:#ffd54a}
.take-house{margin-top:10px;font-size:.85rem}.take-house summary{cursor:pointer;color:var(--muted)}

/* ===== Oct 27 speed build: smooth on cheap phones ===== */
/* Phones/tablets: no live blur behind panels (blur over a moving WebGL map is the #1 cause of jank). */
@media (hover:none),(pointer:coarse){
  *{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  :root{--panel:rgba(12,14,30,.92);--panel2:rgba(22,25,52,.97)}
  .backdrop{background:rgba(2,3,10,.55)}
}
.sheet{contain:layout paint style}
.sheet[hidden]{display:none!important}
.sheet:not([hidden]){animation-duration:.18s}
.layer{will-change:auto}
#map.layer{will-change:auto}
/* Lite mode (low graphics) and Reduce animations */
html.lite *{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
html.lite .cta::after,html.lite .shim,html.lite .ebadge.big,html.lite .space-chip,html.lite .hot.sunhere .dot,html.lite .placer-pin .pp-head,html.lite .intro-bar i{animation:none!important}
html.lite .cta,html.lite .btn.gold,html.lite .maplibregl-popup-content,html.lite .dock,html.lite .sp-marker,html.lite .toast{box-shadow:none!important}
html.lite .brand img,html.lite .crown-card .big,html.lite .body img{filter:none!important}
html.lite #glow{display:none}
html.reduce *,html.reduce *::before,html.reduce *::after{animation:none!important;transition:none!important}
.sheet .close,.dock button,.btn,.fab,.cta,.icon-btn,.seg button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}

/* ===== Oct 27: clean UI, quick chips, settings, quiz, sponsor tiers, Tab credit, light theme ===== */
.gear-btn{position:absolute;right:0;top:0;pointer-events:auto;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--panel);font-size:1.15rem;display:grid;place-items:center;padding:0}
.acct-btn{right:48px}
@media (min-width:760px){.gear-btn{position:fixed;right:406px;top:14px;width:46px;height:46px}.acct-btn{right:460px}}
/* only essentials on phones: stats + intro tucked away (tap the logo to show the counters) */
@media (max-width:759px){
  .stats{display:none}
  body.stats-open .stats{display:flex}
  .brand{cursor:pointer}
  .search{top:calc(56px + var(--safe-t))}
  .where{top:calc(108px + var(--safe-t))}
  body.stats-open .search{top:calc(92px + var(--safe-t))}
  body.stats-open .where{top:calc(146px + var(--safe-t))}
  .intro-line{top:calc(104px + var(--safe-t))}
  body.stats-open .intro-line{top:128px}
}
.quick{position:absolute;right:10px;top:calc(108px + var(--safe-t));z-index:6;display:flex;gap:6px;align-items:flex-start;flex-wrap:wrap;justify-content:flex-end;max-width:60%}
body.stats-open .quick{top:calc(146px + var(--safe-t))}
@media (min-width:760px){.quick{top:70px;right:16px}}
.qchip{display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 11px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:.8rem;font-weight:700}
.qchip.icon{width:32px;padding:0;justify-content:center;font-size:.95rem}
.qchip[hidden]{display:none}
.style-pop{position:absolute;right:0;top:38px;background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:5px;display:flex;flex-direction:column;min-width:150px;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.style-pop button{display:flex;align-items:center;gap:8px;border:0;background:none;padding:9px 10px;border-radius:10px;text-align:left;font-size:.88rem;color:var(--text)}
.style-pop button.on{background:rgba(255,204,77,.18);color:var(--gold)}
.style-pop button span{width:22px;text-align:center}
.show-ui{position:absolute;right:12px;bottom:calc(16px + var(--safe-b));z-index:12;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:999px;padding:10px 16px;font-weight:700}
body.hide-ui .top,body.hide-ui .search,body.hide-ui .where,body.hide-ui .rail,body.hide-ui .bottom,body.hide-ui .quick,body.hide-ui .space-chip,body.hide-ui .moons,body.hide-ui .intro-line,body.hide-ui .ticker{display:none!important}
/* Oct 27 fix: Tab credit lives inside the ⓘ map credits (first line) + Credits list */
html.no-tabcredit .cv-tabattr{display:none!important}
.maplibregl-ctrl-attrib a.cv-tabattr{font-weight:700}
.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib{margin-left:8px}
body.placing .quick{display:none}
/* settings */
.seg2{display:flex;gap:4px;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:12px;padding:3px;margin:4px 0}
.seg2 button{flex:1;border:0;background:none;border-radius:9px;padding:8px 4px;font-size:.82rem;font-weight:700;color:var(--muted)}
.seg2 button.on{background:linear-gradient(180deg,rgba(255,204,77,.28),rgba(255,159,28,.16));color:var(--text);box-shadow:inset 0 0 0 1px rgba(255,204,77,.45)}
.switch{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:.9rem;cursor:pointer}
.switch input{width:20px;height:20px;accent-color:#ffb02e;flex:none}
.tiny{font-size:.75rem;margin:4px 0 0}
.prof-head{display:flex;gap:10px;align-items:center;margin-bottom:6px}
.prof-big{font-size:2rem;line-height:1}
.prof-u{font-size:1.1rem}
.at{font-weight:800;color:var(--muted)}
.hist{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:12px}
.hist div{background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:12px;padding:8px 6px;text-align:center}
.hist b{display:block;font-size:.95rem}.hist small{color:var(--muted);font-size:.7rem}
.staff-note{font-size:.82rem;background:rgba(94,231,255,.08);border:1px solid rgba(94,231,255,.3);border-radius:12px;padding:8px 10px;margin-bottom:10px}
small.dn{font-weight:500;color:var(--muted);font-size:.78em}
.cm-name.staff{color:var(--cyan)}
/* quiz */
.qz-stats{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 10px;font-size:.82rem;color:var(--muted)}
.qz-stats span{background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:999px;padding:4px 10px}
.qz{border:1px solid var(--line);border-radius:16px;padding:12px;margin:10px 0;background:rgba(255,255,255,.03)}
.qz.ok{border-color:rgba(92,242,160,.5)}.qz.bad{border-color:rgba(255,111,140,.45)}
.qz-cat{font-size:.72rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.qz-q{font-weight:700;margin:4px 0 10px;font-size:1rem}
.qz-opts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.qz-opts button{border:1px solid var(--line);background:rgba(255,255,255,.06);border-radius:12px;padding:11px 8px;font-weight:600;font-size:.88rem;color:var(--text);min-height:46px}
.qz-opts button.right{background:rgba(92,242,160,.22);border-color:#5cf2a0}
.qz-opts button.wrong{background:rgba(255,111,140,.2);border-color:#ff6f8c}
.qz-opts button[disabled]{opacity:.85}
.qz-fact{font-size:.84rem;margin-top:8px;color:var(--text)}
.qz-done{text-align:center;font-weight:700;margin:12px 0 8px}
/* sponsor tiers: bigger tier = bigger, brighter marker */
.sp-marker{--s:1;transform-origin:50% 100%;scale:var(--s)}
.sp-marker.t1{--s:1.35;border-color:#bff6ff!important;background:linear-gradient(135deg,#e9fdff,#7fe3ff 45%,#b8a8ff)!important;color:#0b2030!important}
.sp-marker.t2{--s:1.28;border-color:#ffe17a!important;background:linear-gradient(135deg,#fff3b0,#ffc531 50%,#b07cff)!important;color:#2a1700!important}
.sp-marker.t3{--s:1.22;border-color:#f2f4ff!important;background:linear-gradient(135deg,#ffffff,#cfd6e6 50%,#9aa6c2)!important;color:#1a2033!important}
.sp-marker.t4{--s:1.17;border-color:#ff8fa6!important;background:linear-gradient(135deg,#ff6b88,#c2133b)!important;color:#fff!important}
.sp-marker.t5{--s:1.12;border-color:#ffe08a!important;background:linear-gradient(135deg,#ffe17a,#e6a514)!important;color:#2a1700!important}
.sp-marker.t6{--s:1.07;border-color:#eef1f7!important;background:linear-gradient(135deg,#f4f6fb,#aeb6c6)!important;color:#1b2030!important}
.sp-marker.t7{--s:1.03;border-color:#f0b98a!important;background:linear-gradient(135deg,#f1b07a,#a8642c)!important;color:#fff!important}
.sp-marker.t8{--s:1;border-color:#8ff0b8!important;background:linear-gradient(135deg,#5ee39a,#118a52)!important;color:#fff!important}
.sp-marker.t9{--s:.96;border-color:#9cc3ff!important;background:linear-gradient(135deg,#5b9bff,#1c3fae)!important;color:#fff!important}
.sp-marker.t10{--s:.92;border-color:#ffe9a8!important;background:linear-gradient(135deg,#3a3f66,#22264a)!important;color:#ffe9a8!important}
.sp-marker .sp-tag{opacity:.9;font-weight:800}
.tbadge{display:inline-block;font-size:.72rem;font-weight:800;padding:2px 8px;border-radius:999px;margin-bottom:3px;background:rgba(255,255,255,.1)}
.tbadge.t1{background:linear-gradient(90deg,#e9fdff,#7fe3ff);color:#0b2030}.tbadge.t2{background:linear-gradient(90deg,#fff3b0,#ffc531);color:#2a1700}
.tbadge.t3{background:#e6e9f2;color:#1a2033}.tbadge.t4{background:#e0294f;color:#fff}.tbadge.t5{background:#f5c33b;color:#2a1700}
.tbadge.t6{background:#cfd5e0;color:#1b2030}.tbadge.t7{background:#c47f45;color:#fff}.tbadge.t8{background:#22b56c;color:#fff}.tbadge.t9{background:#2f62d8;color:#fff}.tbadge.t10{background:#2c3158;color:#ffe9a8}
/* ===== Light theme ===== */
html.light{--bg:#eef2ff;--panel:rgba(255,255,255,.94);--panel2:rgba(255,255,255,.98);--line:rgba(20,30,70,.14);--text:#141a33;--muted:#5a6488;--gold:#b77600;--cyan:#0a7f9c;--violet:#5b45d6}
html.light body,html.light{background:var(--bg);color:var(--text)}
html.light #stage{background:radial-gradient(120% 80% at 50% 40%,#dfe7ff 0%,#c9d5f7 55%,#b7c5ef 100%)}
html.light #stars{opacity:.25}
html.light .sheet{background:linear-gradient(180deg,rgba(255,255,255,.99),rgba(243,246,255,.99))!important;color:var(--text)}
html.light .maplibregl-popup-content,html.light .toast,html.light .obj-card,html.light .guide-card,html.light .sm-card,html.light .cm-menu,html.light .search-results{background:#fff!important;color:var(--text)!important}
html.light .maplibregl-popup-tip{border-top-color:#fff!important;border-bottom-color:#fff!important}
html.light .where,html.light .intro-line,html.light .maplibregl-ctrl-attrib{background:rgba(255,255,255,.85)!important;color:#2a3150!important}
html.light .maplibregl-ctrl-attrib a{color:#2a3150}
html.light .btn.ghost,html.light .item,html.light .field,html.light .qz-opts button{color:var(--text)}
html.light .field{background:#fff;border-color:var(--line)}
html.light .dock button,html.light .rail button{color:#2a3150}
html.light .acct-card{background:linear-gradient(135deg,rgba(91,69,214,.08),rgba(183,118,0,.06))}
html.light .muted{color:var(--muted)}
html.light .backdrop{background:rgba(40,50,90,.25)}

@media (max-width:759px){.intro-line{top:calc(146px + var(--safe-t))!important}body.stats-open .intro-line{top:calc(184px + var(--safe-t))!important}}
html.light .brand h1,html.light .brand-text h1{color:#141a33}
html.light .tagline{color:#5a6488}
html.light .fab,html.light .gear-btn,html.light .qchip,html.light .acct-btn{color:var(--text)}
html.light .stat{color:var(--muted)}html.light .stat b{color:var(--text)}

#map{isolation:isolate}

/* Attribution and credit live beside one another; neither overlaps the dock. */
.maplibregl-ctrl-bottom-left{bottom:calc(162px + var(--safe-b))!important;left:12px!important}
.maplibregl-ctrl-bottom-left .maplibregl-ctrl{margin:0!important}
.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib{background:rgba(8,10,24,.55)!important;color:#c9cfe8!important;border-radius:6px;font-size:10px}
.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib a{color:#c9cfe8!important}
@media (min-width:760px){.maplibregl-ctrl-bottom-left{bottom:27px!important}}

/* ===== Oct 27 fix: phone top bar (no overlap) + counter chips wrap (no clipping) ===== */
.kc-short{display:none}
@media (max-width:759px){
  .brand{min-width:0;max-width:calc(100% - 158px);padding-right:12px}
  body.signed-in .brand{max-width:calc(100% - 166px)}
  .brand-text{min-width:0;overflow:hidden}
  .brand h1,.brand .tagline{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .acct-btn{max-width:104px;padding:0 11px 0 8px}
  .stats{flex-wrap:wrap;overflow:visible;-webkit-mask-image:none;mask-image:none;row-gap:5px}
  .stats .stat{flex:none}
  .kc-long{display:none}.kc-short{display:inline}
  body.stats-open .search{top:calc(56px + var(--stats-h,36px) + var(--safe-t))}
  body.stats-open .where{top:calc(108px + var(--stats-h,36px) + var(--safe-t))}
  body.stats-open .quick{top:calc(108px + var(--stats-h,36px) + var(--safe-t))}
  body.stats-open .intro-line{top:calc(146px + var(--stats-h,36px) + var(--safe-t))!important}
}
@media (max-width:420px){
  body.signed-in .acct-btn{width:40px;padding:0;justify-content:center}
  body.signed-in .acct-btn span:last-child:not(.av){display:none}
  body.signed-in .brand{max-width:calc(100% - 104px)}
}
body.in-space .intro-line{display:none!important}
@media (max-width:759px){
  .intro-line{top:calc(214px + var(--safe-t))!important}
  body.stats-open .intro-line{top:calc(214px + var(--stats-h,36px) - 36px + var(--safe-t))!important}
}
@media (max-width:759px){body.stats-open .moons{top:calc(176px + var(--stats-h,36px) - 36px + var(--safe-t))}}
.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib.maplibregl-compact-show{max-width:calc(100vw - 76px)}
@media (min-width:760px){.top{max-width:calc(100% - 610px)}.brand{flex:none}.tagline{white-space:nowrap}}
@media (min-width:760px){.brand{flex:0 1 auto;min-width:0;max-width:100%}.brand-text{min-width:0;overflow:hidden}.brand h1,.brand .tagline{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stats{min-width:0}}
@media (min-width:760px){.brand{flex:0 0 auto;max-width:100%}.stats{flex:1 1 0}}
@media (min-width:760px) and (max-width:1099px){.top .stats{display:none}}

/* Oct 28: banner for all visitors + team inbox */
#cvBanner{position:fixed;left:50%;transform:translateX(-50%);top:calc(env(safe-area-inset-top,0px) + 6px);z-index:60;max-width:min(560px,calc(100% - 20px));
  display:flex;align-items:center;gap:8px;padding:7px 8px 7px 13px;border-radius:999px;background:linear-gradient(135deg,#ffcc4d,#ff9f43);color:#1d1300;
  font-weight:600;font-size:.86rem;box-shadow:0 6px 22px rgba(0,0,0,.35)}
#cvBanner .cvb-t{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
#cvBanner .cvb-x{flex:none;width:30px;height:30px;border-radius:50%;border:0;background:rgba(0,0,0,.14);color:#1d1300;font-size:.9rem;cursor:pointer}

.cvi-ov{position:fixed;inset:0;z-index:90;background:rgba(3,4,14,.66);display:flex;align-items:center;justify-content:center;padding:16px}
.cvi-box{width:min(440px,100%);max-height:80vh;overflow:auto;background:#141634;border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:16px;color:#eef1ff}
.cvi-box h3{margin:0 0 10px;font-size:1.05rem}
.cvi-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.cvi-msg{padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.06);line-height:1.4}
.cvi-msg.warn{background:rgba(255,107,139,.12);border:1px solid rgba(255,107,139,.4)}
.cvi-msg.new{box-shadow:0 0 0 2px rgba(255,204,77,.5)}
.cvi-k{font-size:.75rem;opacity:.75;margin-bottom:3px}
.cvi-ok{width:100%}

/* Oct 28: chat unread dot + "you" tag, 🎬 Latest video pill */
.dock button.has-dot,.chat-tabs button.has-dot{position:relative}
.dock button.has-dot::after,.chat-tabs button.has-dot::after{content:"";position:absolute;top:4px;right:calc(50% - 16px);width:9px;height:9px;border-radius:50%;background:#ff4d6d;box-shadow:0 0 0 2px var(--panel,#0b0e2a)}
.chat-tabs button.has-dot::after{top:2px;right:2px}
.cm-you{font-size:.66rem;color:var(--gold,#ffcc4d);border:1px solid rgba(255,204,77,.45);border-radius:6px;padding:0 5px;line-height:1.4}
.vid-pill{position:absolute;left:44px;bottom:calc(100% + 10px);pointer-events:auto;display:flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:18px;border:1px solid var(--line);background:var(--panel);color:#fff;font-size:.82rem;font-weight:700;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 6px 20px rgba(0,0,0,.4);cursor:pointer}
.vid-new{font-style:normal;font-size:.6rem;background:#ff4d6d;color:#fff;border-radius:6px;padding:1px 5px;letter-spacing:.04em}
.vid-pop{position:absolute;left:44px;bottom:calc(100% + 54px);z-index:30;pointer-events:auto;width:min(250px,calc(100% - 80px));background:var(--panel2,#0d1030);border:1px solid var(--line);border-radius:14px;padding:10px;box-shadow:0 10px 30px rgba(0,0,0,.55)}
.vid-pop-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:.9rem}
.vid-x{background:none;border:0;color:var(--muted);font-size:1rem;width:30px;height:30px;cursor:pointer}
.vid-links{display:flex;flex-direction:column;gap:6px}
.vid-link{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:10px;background:rgba(255,255,255,.07);color:#fff;text-decoration:none;font-weight:700;font-size:.9rem}
.vid-link:active{transform:scale(.98)}
.vl-ig{background:linear-gradient(90deg,rgba(225,48,108,.35),rgba(253,140,0,.25))}.vl-yt{background:rgba(255,0,0,.28)}.vl-x{background:rgba(255,255,255,.12)}.vl-tt{background:rgba(37,244,238,.18)}
html.light .vid-pill{color:var(--text)}html.light .vid-pop{background:#fff!important;color:var(--text)}html.light .vid-link{color:var(--text)}
body.placing .vid-pill,body.placing .vid-pop{display:none}

/* ===== 🎁 Points + rewards (Oct 28) ===== */
.pts-pill{position:absolute;left:44px;bottom:calc(100% + 10px);pointer-events:auto;display:flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:18px;border:1px solid rgba(255,204,77,.55);background:linear-gradient(180deg,rgba(255,204,77,.28),rgba(255,159,28,.18)),var(--panel);color:#fff;font-size:.82rem;font-weight:700;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 6px 20px rgba(0,0,0,.4);cursor:pointer;touch-action:manipulation}
.pts-pill b{color:var(--gold)}
body.has-vid .pts-pill{bottom:calc(100% + 54px)}
body.has-vid .vid-pop{bottom:calc(100% + 98px)}
body.placing .pts-pill,body.placing .pts-tip,body.hide-ui .pts-pill,body.hide-ui .pts-tip{display:none}
.pts-tip{position:absolute;left:10px;right:10px;bottom:calc(100% + 56px);z-index:31;pointer-events:auto;max-width:340px;display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:14px;background:var(--panel2);border:1px solid rgba(255,204,77,.55);box-shadow:0 10px 30px rgba(0,0,0,.55);font-size:.86rem}
body.has-vid .pts-tip{bottom:calc(100% + 100px)}
.pts-tip::after{content:"";position:absolute;left:58px;bottom:-7px;width:12px;height:12px;background:var(--panel2);border-right:1px solid rgba(255,204,77,.55);border-bottom:1px solid rgba(255,204,77,.55);transform:rotate(45deg)}
.pts-bal{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:14px;background:linear-gradient(135deg,rgba(255,204,77,.18),rgba(166,139,255,.14));border:1px solid rgba(255,204,77,.35);margin:6px 0 10px}
.pts-bal.pts-out{flex-direction:column}
.pts-num{font-family:"Space Grotesk",sans-serif;font-size:1.5rem}.pts-num b{color:var(--gold)}.pts-num small{font-size:.85rem;color:var(--muted)}
.pts-held{font-size:.78rem;color:var(--muted)}
.pts-seg{margin:0 0 6px}
.pts-soc,.pts-ch,.pts-shop{display:flex;flex-direction:column;gap:8px}
.pts-sc,.pts-row,.pts-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--text);text-align:left;width:100%;font:inherit}
button.pts-sc{cursor:pointer}button.pts-sc:active{transform:scale(.99)}
.pts-sc.go{border-color:rgba(255,204,77,.45)}
.pts-sc.wait{align-items:flex-start;border-color:rgba(94,231,255,.4)}
.pts-sc.ok,.pts-row.done,.pts-item.owned{opacity:.85;border-color:rgba(92,242,160,.4)}
.pts-ic{font-size:1.35rem;width:30px;text-align:center;flex:none}.pts-ic.big{font-size:1.6rem}
.pts-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.pts-tx b{font-size:.9rem}.pts-tx small{font-size:.76rem;color:var(--muted);line-height:1.35}
.pts-plus{font-weight:800;color:var(--gold);white-space:nowrap;font-size:.9rem}
.pts-ok{white-space:nowrap;font-size:.85rem}
.pts-code{display:flex;align-items:center;gap:8px;margin:6px 0;flex-wrap:wrap}.pts-code span{font-size:.72rem;color:var(--muted)}
.pts-code b{font-family:"Space Grotesk",ui-monospace,monospace;font-size:1.35rem;letter-spacing:.08em;color:var(--gold);background:rgba(0,0,0,.25);padding:3px 10px;border-radius:8px;border:1px dashed rgba(255,204,77,.6)}
.pts-hf{display:flex;gap:6px;margin-top:6px}.pts-hf .field{flex:1;min-width:0;padding:7px 9px;font-size:.8rem}
.pts-colors{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.pts-col{width:30px;height:30px;border-radius:50%;border:2px solid rgba(255,255,255,.35);cursor:pointer}.pts-col.on{border-color:#fff;box-shadow:0 0 0 3px var(--gold)}
.pts-sw{display:flex;align-items:center;gap:5px;font-size:.8rem;white-space:nowrap}
.pts-wait{color:var(--cyan)}
.pts-board{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.pts-board li{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid var(--line)}
.pts-board li.me{border-color:var(--gold);background:rgba(255,204,77,.1)}
.pb-n{width:26px;text-align:center;font-weight:800}.pb-u{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pb-p{color:var(--gold)}
.pts-log{margin-top:12px;font-size:.82rem}.pts-log summary{cursor:pointer;font-weight:700;padding:6px 0}
.pts-lr{display:flex;gap:8px;align-items:baseline;padding:5px 0;border-bottom:1px solid var(--line)}.pts-lr span:nth-child(2){flex:1;min-width:0}.pts-lr small{color:var(--muted);white-space:nowrap}
.pts-lr .pos{color:var(--green);font-weight:800;min-width:44px}.pts-lr .neg{color:#ff9db4;font-weight:800;min-width:44px}
.star-b{font-size:.85em}
html.light .pts-pill{color:var(--text)}html.light .pts-code b{background:rgba(255,204,77,.15)}

/* Oct 29: first-screen welcome card */
.welcome{position:fixed;inset:0;z-index:72;display:flex;align-items:flex-end;justify-content:center;background:linear-gradient(180deg,rgba(2,3,12,.05) 0%,rgba(2,3,12,.55) 55%,rgba(2,3,12,.85) 100%);padding:12px 12px calc(12px + env(safe-area-inset-bottom));animation:welIn .35s ease-out}
@keyframes welIn{from{opacity:0}to{opacity:1}}
.wel-card{position:relative;width:min(440px,100%);background:rgba(13,16,48,.94);border:1px solid rgba(255,213,74,.45);border-radius:22px;padding:20px 18px 14px;box-shadow:0 18px 50px rgba(0,0,0,.6);text-align:center;color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.wel-x{position:absolute;top:8px;right:8px;width:36px;height:36px;border-radius:50%;border:0;background:rgba(255,255,255,.08);color:#fff;font-size:1rem;cursor:pointer}
.wel-h{font-size:clamp(1.35rem,5.6vw,1.75rem);line-height:1.18;margin:4px 22px 10px;font-weight:800;letter-spacing:-.01em}
.wel-h span{color:#ffd54a}
.wel-live{display:inline-flex;align-items:center;gap:6px;font-size:.88rem;color:#dfe4ff;background:rgba(255,255,255,.06);border-radius:999px;padding:5px 12px;margin-bottom:12px}
.wel-live i{width:8px;height:8px;border-radius:50%;background:#3ddc84;box-shadow:0 0 0 0 rgba(61,220,132,.7);animation:welPulse 1.6s infinite}
.wel-live b{color:#fff}
@keyframes welPulse{70%{box-shadow:0 0 0 8px rgba(61,220,132,0)}100%{box-shadow:0 0 0 0 rgba(61,220,132,0)}}
.wel-steps{list-style:none;display:flex;gap:6px;padding:0;margin:0 0 12px;counter-reset:ws}
.wel-steps li{flex:1;counter-increment:ws;font-size:.78rem;line-height:1.2;color:#dfe4ff;background:rgba(255,255,255,.05);border-radius:12px;padding:8px 4px}
.wel-steps li span{display:block;font-size:1.25rem;margin-bottom:3px}
.wel-steps li::before{content:counter(ws);display:block;font-weight:800;color:#ffd54a;font-size:.72rem}
.wel-search{display:flex;gap:6px;margin-bottom:10px}
.wel-search input{flex:1;min-width:0;font-size:16px;padding:12px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.07);color:#fff}
.wel-search .btn{padding:0 16px;border-radius:14px}
.wel-cta{width:100%;font-size:1.15rem;padding:15px;border-radius:16px;font-weight:800}
.pub-line{font-size:.74rem;color:var(--muted,#aab);margin:10px 0 0;line-height:1.4}
.pub-line a{color:#ffd54a}
.wel-skip{background:none;border:0;color:#aab3e6;font-size:.85rem;margin-top:8px;padding:8px;cursor:pointer;text-decoration:underline}
@media (min-width:760px){.welcome{align-items:center}}
html.light .wel-card{background:#fff!important;color:var(--text)!important}html.light .wel-steps li,html.light .wel-live{color:var(--text);background:rgba(0,0,0,.05)}html.light .wel-live b{color:var(--text)}html.light .wel-search input{color:var(--text);background:#f4f5fb;border-color:#ccd}
@media (prefers-reduced-motion:reduce){.welcome,.wel-live i{animation:none}}
body.has-welcome .intro-line{display:none}

/* Oct 30: comment reservation note */
.rsv-note{margin:6px 0;padding:7px 9px;border-radius:10px;background:rgba(255,206,84,.14);border:1px solid rgba(255,206,84,.45);font-size:.8rem;line-height:1.35}.rsv-note small{opacity:.85}
.job-line{font-size:.8rem;margin:2px 0;opacity:.95}
.tm{font-size:.74rem;margin:1px 0 3px;opacity:.9}.tm summary{cursor:pointer;list-style:none;color:#ffe9a8}.tm summary::-webkit-details-marker{display:none}

/* ===== Oct 31: banner BELOW the header (never covers the logo), one line on phones, ✕ closes, 📢 reopens ===== */
#cvBanner{position:absolute;left:10px;right:10px;top:var(--bn-top,52px);transform:none;max-width:none;z-index:7;display:flex;align-items:center;gap:6px;
  padding:3px 4px 3px 4px;border-radius:14px;background:linear-gradient(135deg,#ffcc4d,#ff9f43);color:#1d1300;font-weight:600;font-size:.8rem;box-shadow:0 4px 16px rgba(0,0,0,.35);flex-wrap:wrap}
#cvBanner .cvb-t{flex:1;min-width:0;display:flex;align-items:center;gap:6px;background:none;border:0;color:inherit;font:inherit;text-align:left;padding:3px 4px;cursor:pointer;-webkit-line-clamp:unset}
#cvBanner .cvb-txt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#cvBanner.open .cvb-txt{white-space:normal}
#cvBanner .cvb-ic{flex:none}
#cvBanner .cvb-race{flex:none;background:rgba(0,0,0,.16);border-radius:999px;padding:1px 7px;font-weight:800;font-size:.76rem}
#cvBanner .cvb-sep{opacity:.6}
#cvBanner .cvb-x{flex:none;width:26px;height:26px;border-radius:50%;border:0;background:rgba(0,0,0,.14);color:#1d1300;font-size:.8rem;cursor:pointer}
#cvBanner .cvb-more{flex-basis:100%;padding:2px 4px 4px}
.banner-reopen{pointer-events:auto;position:absolute;right:46px;top:0;width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:var(--panel);font-size:.95rem;cursor:pointer;z-index:6}
body.has-banner .search,body.has-banner .where,body.has-banner .quick,body.has-banner .moons,body.has-banner .space-chip,body.has-banner .intro-line{margin-top:var(--bn-h,34px)}
@media (min-width:760px){#cvBanner{left:50%;right:auto;transform:translateX(-50%);width:min(620px,calc(100% - 440px));top:var(--bn-top,64px)}body.has-banner .search,body.has-banner .quick{margin-top:0}.banner-reopen{position:static;margin-left:4px}}
/* Moon entry chip */
.moons button.moon-new{border-color:rgba(255,204,77,.8);background:linear-gradient(135deg,rgba(255,204,77,.28),rgba(120,90,255,.25)),var(--panel);box-shadow:0 0 0 0 rgba(255,204,77,.6);animation:mnPulse 2.4s ease-out 3}
.moons .mn-tag{font-size:.7rem;font-weight:800;color:#ffd75e}
@keyframes mnPulse{0%{box-shadow:0 0 0 0 rgba(255,204,77,.55)}100%{box-shadow:0 0 0 12px rgba(255,204,77,0)}}
html.reduce .moons button.moon-new{animation:none}
/* Moon plot card */
.moon-card{position:fixed;left:8px;right:8px;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:40;max-width:440px;margin:0 auto;background:var(--panel2,#11142a);border:1px solid var(--line);border-radius:18px;padding:14px 14px 12px;box-shadow:0 12px 40px rgba(0,0,0,.55);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);color:#fff}
.moon-card h3{margin:0 30px 6px 0;font-size:1.02rem}
.moon-card .mc-x,.wallet-box .mc-x{position:absolute;right:10px;top:10px;width:30px;height:30px;border-radius:50%;border:0;background:rgba(255,255,255,.1);color:#fff;cursor:pointer}
.mc-sizes,.mc-pay{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:4px 0}
.mc-sizes button,.mc-pay button{border:1px solid var(--line);background:rgba(255,255,255,.06);color:#fff;border-radius:999px;padding:5px 11px;font-size:.82rem;cursor:pointer}
.mc-sizes button.on,.mc-pay button.on{background:var(--gold,#ffcc4d);color:#1d1300;border-color:transparent;font-weight:700}
.mc-price{font-size:.95rem;margin:6px 0 0}
.mc-wallet{font-size:.82rem;margin:6px 0;color:#dfe4ff}
.mc-note{margin:8px 0 0;font-size:.86rem;color:#dfe4ff}
.mc-lock{margin-top:8px;padding:10px;border-radius:12px;background:rgba(255,255,255,.06);border:1px solid var(--line)}
.mc-lock b{display:block;font-size:.88rem;margin-bottom:6px}
.mc-lock small{display:block;color:#bfc6e8;font-size:.76rem;margin-top:4px}
body.on-moon .moon-card:not([hidden]) ~ .bottom .cta{visibility:hidden}
/* Wallet */
.wallet-line{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:6px;background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:12px;padding:6px 10px;color:#fff;font:inherit;font-size:.86rem;cursor:pointer;width:100%;text-align:left}
.wallet-line .wl-go{margin-left:auto;color:var(--gold,#ffcc4d);font-weight:700}
.wallet-box{position:relative;max-width:420px}
.wb-bal{display:flex;gap:8px;justify-content:space-between;margin:6px 0}
.wb-bal>div{flex:1;text-align:center;background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:12px;padding:8px 4px}
.wb-bal b{display:block;font-size:1.1rem;margin-top:4px}.wb-bal small{display:block;color:#bfc6e8}
.wb-row{display:flex;align-items:center;gap:8px;margin:6px 0}
.wb-row .wb-pair{display:inline-flex;align-items:center;justify-content:center;gap:4px;flex:none;width:74px;white-space:nowrap;font-size:1rem;color:#bfc6e8}
.wb-pair .wb-arr{width:14px;height:14px;flex:none}
.wb-row input{width:64px;min-width:0;height:44px;box-sizing:border-box;flex:none;padding:6px 8px;border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.08);color:#fff;font:inherit;text-align:center}
.wb-row .btn{flex:1 1 auto;min-width:0;min-height:44px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wb-msg{background:rgba(77,255,154,.12);border:1px solid rgba(77,255,154,.35);border-radius:10px;padding:6px 10px;font-size:.84rem}
.wb-log{max-height:150px;overflow:auto;font-size:.8rem}.wb-log div{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid var(--line)}
.install-box{margin:12px 0 4px}

/* ===== Oct 31 3 AM build: take-your-home pill, inbox reactions, help box, battle score parts ===== */
.take-pill{position:absolute;left:44px;bottom:calc(100% + 54px);pointer-events:auto;display:flex;align-items:center;gap:5px;height:36px;padding:0 11px;border-radius:18px;border:1px solid rgba(120,220,160,.6);background:linear-gradient(180deg,rgba(80,200,120,.32),rgba(40,150,90,.2)),var(--panel);color:#fff;font-size:.8rem;font-weight:700;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 6px 20px rgba(0,0,0,.4);cursor:pointer;white-space:nowrap;touch-action:manipulation}
html.light .take-pill{color:var(--text)}
body.placing .take-pill{display:none}
.cvi-re{display:flex;gap:4px;margin-top:6px}
.cvi-re button{border:1px solid var(--line);background:rgba(255,255,255,.06);border-radius:14px;min-width:36px;height:30px;font-size:1rem;cursor:pointer;opacity:.7;padding:0 6px}
.cvi-re button.on{opacity:1;border-color:var(--gold,#ffcc4d);background:rgba(255,204,77,.18);transform:scale(1.06)}
.cvi-help{width:100%;margin:0 0 8px}
.help-types{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px;font-size:.86rem}
.help-types label{display:flex;align-items:center;gap:6px;padding:8px;border:1px solid var(--line);border-radius:10px;cursor:pointer}
#helpText,#takeHomeIg,#takeHomeCode{width:100%;box-sizing:border-box;border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.06);color:inherit;padding:10px;font:inherit}
.help-shot{display:block;margin-top:8px;font-size:.85rem}
.help-shot input{display:block;margin-top:4px;max-width:100%;font-size:.8rem}
.help-reply{margin-top:4px;padding:6px 8px;border-left:3px solid var(--gold,#ffcc4d);font-size:.86rem;opacity:.9}
.help-mine{max-height:200px;overflow:auto}
.bs-sub{display:block;font-size:.66rem;opacity:.7;font-weight:400}
.pts-lr.pend{opacity:.75;font-style:italic}

/* ===== Oct 31: 3D street + Walk / Drive ===== */
#cv3dUi{position:absolute;inset:0;pointer-events:none;z-index:6}
.rail #c3Toggle.on{color:var(--gold,#ffcc4d);background:rgba(255,204,77,.16)}
.rail [hidden]{display:none!important}
#cv3dUi .c3-walkbar{position:absolute;top:calc(env(safe-area-inset-top,0px) + 70px);right:10px;display:flex;gap:8px;pointer-events:auto}
#cv3dUi .c3-joy{position:absolute;left:22px;bottom:calc(env(safe-area-inset-bottom,0px) + 34px);width:118px;height:118px;border-radius:50%;background:rgba(10,14,40,.45);border:2px solid rgba(255,255,255,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);pointer-events:auto;touch-action:none;display:grid;place-items:center}
#cv3dUi .c3-joy i{width:50px;height:50px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#ffd36b 45%,#ff9f1c);box-shadow:0 4px 14px rgba(0,0,0,.45);transition:transform .05s linear}
#cv3dUi [hidden]{display:none!important}
.cv-walker{display:flex;flex-direction:column;align-items:center;pointer-events:none}
.cv-walker span{font-size:38px;line-height:1;filter:drop-shadow(0 3px 3px rgba(0,0,0,.45))}
.cv-walker i{width:26px;height:8px;border-radius:50%;background:rgba(0,0,0,.35);margin-top:-4px}
body.walking .bottom,body.walking .dock,body.walking #introLine,body.walking #moonChips,body.walking #searchBox,body.walking .search,body.walking .rail,body.walking #quickTools,body.walking #whereChip,body.walking #cvBanner,body.walking #bannerReopen{display:none!important}

body.has-vid .take-pill{bottom:calc(100% + 98px)}

#cv3dUi .c3-walkpill{position:absolute;left:44px;bottom:calc(env(safe-area-inset-bottom,0px) + 150px);pointer-events:auto;height:40px;padding:0 16px;border-radius:20px;border:1px solid rgba(255,204,77,.6);background:linear-gradient(180deg,rgba(255,204,77,.35),rgba(255,159,28,.25)),var(--panel);color:#fff;font-weight:800;font-size:.9rem;box-shadow:0 6px 20px rgba(0,0,0,.4)}
html.light #cv3dUi .c3-walkpill{color:var(--text)}
body.cv3d .pts-pill,body.cv3d .vid-pill,body.cv3d .take-pill,body.cv3d .vid-pop,body.cv3d #introLine{display:none!important}
@media (max-height:680px){.rail button{padding:3px 4px}.rail button small{font-size:.54rem}}

/* Oct 31 public places: one small card + a walk-up chip */
.cvp-card{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(84px + env(safe-area-inset-bottom));z-index:30;width:min(340px,calc(100vw - 20px));background:var(--panel,#1b1640);color:var(--text,#fff);border:1px solid var(--line,rgba(255,255,255,.15));border-radius:18px;padding:12px;box-shadow:0 10px 30px rgba(0,0,0,.35);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.cvp-card[hidden],.cvp-near[hidden]{display:none!important}
.cvp-x{position:absolute;right:8px;top:6px;background:none;border:0;color:var(--muted,#aaa);font-size:1rem;padding:4px 6px}
.cvp-head{display:flex;gap:10px;align-items:center;padding-right:22px}
.cvp-ic{flex:0 0 44px;height:44px;border-radius:50%;background:#fff;border:3px solid;display:grid;place-items:center;font-size:1.45rem}
.cvp-head b{display:block;font-size:1rem;line-height:1.2}
.cvp-head small{display:block;color:var(--muted,#bbb);font-size:.78rem}
.cvp-head em{display:block;font-style:normal;color:var(--muted,#bbb);font-size:.74rem;margin-top:2px}
.cvp-btns{display:flex;gap:8px;margin-top:10px}
.cvp-ring-m{pointer-events:none}.cvp-ring{display:block;width:34px;height:34px;box-sizing:border-box;border-radius:50%;border:3px solid #ffcc4d;box-shadow:0 0 0 0 rgba(255,204,77,.7);animation:cvpRing 1.4s ease-out infinite;pointer-events:none}@keyframes cvpRing{0%{transform:scale(.6);box-shadow:0 0 0 0 rgba(255,204,77,.7)}70%{transform:scale(1.15);box-shadow:0 0 0 14px rgba(255,204,77,0)}100%{transform:scale(1.15);box-shadow:0 0 0 0 rgba(255,204,77,0)}}html.reduce-motion .cvp-ring,html.lite .cvp-ring{animation:none}
.cvp-btns .btn{flex:1;text-align:center;justify-content:center;text-decoration:none;white-space:nowrap}
.cvp-near{position:absolute;left:50%;transform:translateX(-50%);top:calc(120px + env(safe-area-inset-top));z-index:25;max-width:calc(100vw - 30px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--panel,#1b1640);color:var(--text,#fff);border:1px solid rgba(255,204,77,.55);border-radius:999px;padding:7px 14px;font-size:.85rem;box-shadow:0 6px 18px rgba(0,0,0,.3)}
.cvp-near small{color:var(--muted,#bbb)}
html.light .cvp-card,html.light .cvp-near{color:#2a3150}
body.walking .cvp-card{bottom:calc(166px + env(safe-area-inset-bottom))}


/* Oct 31: on phones toasts sit below the search bar (never over the logo/header) */
@media (max-width:759px){.toast{top:calc(112px + var(--safe-t));left:10px;max-width:none;box-sizing:border-box;border-radius:16px;transform:translateY(-6px);opacity:0;pointer-events:none;transition:transform .25s,opacity .2s}.toast.show{transform:none;opacity:1;pointer-events:auto;transition:transform .25s,opacity .2s,top .25s}}
/* Oct 31: sheets fully opaque (no ghost text / dots from the map or buttons behind them) */
.sheet{background:linear-gradient(180deg,#141630,#090a18)}
html.light .sheet{background:linear-gradient(180deg,#fff,#f3f6ff)!important}
/* Oct 31: tips never cover the planets in Solar / Galaxy / Universe (they come back on the map) */
body.in-space #ptsTip{display:none!important}

/* Oct 31 UI fix: in space views (Universe/Galaxy/Solar) the bottom pills hide so they never cover planets; they come back on the map */
body.on-moon .take-pill,body.in-space .take-pill,body.in-space .pts-pill,body.in-space .vid-pill,body.in-space .vid-pop,body.in-space .pts-tip{display:none!important}
/* Oct 31 UI fix: on phones the place chip (e.g. "Royapuram › Chennai") never runs under the Game/sound/eye chips — it stops before them (width from --quick-w, set in app.js) and wraps to 2 lines max */
@media (max-width:759px){
  .where{max-width:calc(100% - 34px - var(--quick-w,0px));white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;border-radius:12px;line-height:1.3;overflow-wrap:anywhere;padding:3px 9px}
  .where:empty{display:none}
}

/* ---------- Oct 31: one icon set (Lucide, ISC) instead of emoji for UI controls ---------- */
.ic{width:1.1em;height:1.1em;flex:none;vertical-align:-.17em;stroke-width:2}
.ic.h{color:var(--gold);width:1em;height:1em;vertical-align:-.12em;margin-right:2px}
.stat .ic{color:var(--gold);width:13px;height:13px;vertical-align:-2px}
.dock button .ic{width:22px;height:22px;stroke-width:1.9;margin:1px 0 2px;color:var(--muted)}
.dock button.on .ic,.dock button:active .ic{color:var(--gold)}@media (hover:hover) and (pointer:fine){.dock button:hover .ic{color:var(--gold)}}
.dock button.on{color:var(--gold)}
.rail button span .ic{width:20px;height:20px;stroke-width:1.9;display:block;margin:1px auto 2px}
.rail button.on span .ic{color:var(--gold)}
.cta .ic{width:20px;height:20px;stroke-width:2.2;vertical-align:-4px}
.gear-btn .ic{width:20px;height:20px;color:var(--text)}
.qchip .ic{width:16px;height:16px}
.qchip.icon .ic{width:17px;height:17px}
#styleIcon .ic,.style-pop span .ic{color:var(--gold)}
.fab .ic{width:19px;height:19px}
.icon-btn .ic{width:18px;height:18px;color:var(--gold)}
.search-icon .ic{width:16px;height:16px;color:var(--muted)}
.seg2 button .ic{width:15px;height:15px;vertical-align:-3px}
.seg2 button.on .ic{color:var(--gold)}
.switch span .ic{color:var(--violet);width:17px;height:17px;vertical-align:-3px;margin-right:2px}
.space-chip .ic,.show-ui .ic{width:16px;height:16px;vertical-align:-3px}
html.light .ic.h,html.light .stat .ic,html.light .dock button.on .ic,html.light .rail button.on span .ic{color:#c98a00}
.take-pill .ic,.vid-pill .ic,.pts-pill .ic{width:16px;height:16px;vertical-align:-3px;color:var(--gold)}
.acct-btn .ic{width:17px;height:17px;color:var(--gold)}
img.flag{display:inline-block;width:1.25em;height:.94em;object-fit:cover;border-radius:2px;vertical-align:-.12em;box-shadow:0 0 0 .5px rgba(0,0,0,.35)}
.prof-big img.flag{width:44px;height:33px;border-radius:4px}
.ico img.flag{width:24px;height:18px}
.tabs button .ic{width:15px;height:15px;vertical-align:-3px;color:var(--gold)}
.mn-tag .ic{width:13px;height:13px;vertical-align:-2px}

/* ---------- Oct 31 (live swap, part 2): brand logos, medals, logo mark, globe view, banner button ---------- */
.bi{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em;fill:currentColor}
.bi[data-b=instagram]{color:#E4405F}.bi[data-b=youtube]{color:#FF0000}.bi[data-b=facebook]{color:#1877F2}.bi[data-b=whatsapp]{color:#25D366}.bi[data-b=telegram]{color:#26A5E4}.bi[data-b=x],.bi[data-b=tiktok]{color:#fff}
html.light .bi[data-b=x],html.light .bi[data-b=tiktok]{color:#111}
.btn.wa .bi[data-b=whatsapp]{color:#fff}
.ic[data-m="1"]{color:#ffcc33}.ic[data-m="2"]{color:#cfd6e6}.ic[data-m="3"]{color:#e0955a}
.brand .logo-mark{width:30px;height:30px;flex:none;filter:drop-shadow(0 0 6px rgba(166,139,255,.45))}
html.lite .brand .logo-mark{filter:none}
.intro-inner .logo-mark{width:84px;height:84px}
.crown-card .big .ic,.bt-ico .ic{width:1em;height:1em;color:var(--gold)}
.item .ico .ic{width:22px;height:22px;color:var(--gold)}
.wel-steps span .ic{width:18px;height:18px;color:var(--gold)}
.pub-line .ic,.cvi-k .ic{color:var(--gold)}
.sheet h2 .ic,.sheet h3 .ic,.vid-pop-h .ic,.sm-sheet h3 .ic{color:var(--gold);vertical-align:-.15em}
.close .ic,.vid-x .ic,.rb-x .ic{width:18px;height:18px}
.pp-head .ic{width:22px;height:22px;color:#fff;vertical-align:middle}
/* whole planet visible: nothing covers the globe (side pills + intro line hide, back when zoomed in) */
body.globe-far .intro-line,body.globe-far .take-pill,body.globe-far .pts-pill,body.globe-far .vid-pill,body.globe-far .vid-pop,body.globe-far .pts-tip,body.globe-far #ptsTip{display:none!important}
/* phones: the intro line ends before the zoom rail */
@media (max-width:759px){.intro-line{right:62px!important;max-width:none}}
/* phones: the points tip sits above all three pills and ends before the zoom rail */
@media (max-width:759px){.pts-tip{right:72px;max-width:none}body.has-vid .pts-tip{bottom:calc(100% + 144px)}.pts-tip{bottom:calc(100% + 100px)}.pts-tip::after{display:none}}
body:has(#ptsTip) .intro-line{display:none!important}
#space{touch-action:none}
@media (max-width:759px){.scene-title{right:72px;left:8px;top:calc(104px + var(--safe-t))}}
.cvp-ic .ic{width:24px;height:24px}
.cv-walker span .ic{width:22px;height:22px}
.btn.sm-wide{flex-direction:row;justify-content:center;gap:8px}

/* Oct 31 (NO-OVERLAP): while a public-place card is open, the small pills and round buttons behind it step aside */
body:has(#cvpCard:not([hidden])) .take-pill,body:has(#cvpCard:not([hidden])) .pts-pill,body:has(#cvpCard:not([hidden])) .vid-pill,body:has(#cvpCard:not([hidden])) .vid-pop,body:has(#cvpCard:not([hidden])) .fabs,body:has(#cvpCard:not([hidden])) .walk-cta,body:has(#cvpCard:not([hidden])) .maplibregl-ctrl-bottom-left,body:has(#cvpCard:not([hidden])) #claimBtn{visibility:hidden!important}

/* Nov 1 launch QA: zoom bar shrinks to one button at street zoom on phones (tap to open) so places under it can be tapped */
@media (max-width:759px){body.rail-mini:not(.rail-open) .rail button:not(.on){display:none}body.rail-mini:not(.rail-open) .rail{padding:3px}}
#space .scene{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
@media (max-width:759px){body.stats-open .stats{flex-wrap:nowrap;overflow-x:auto;-webkit-mask-image:none;mask-image:none}.stats .stat[title="Your time"],.stats .stat[title="Worlds with settlers"]{display:none}body.stats-open .scene-title{top:calc(104px + var(--stats-h,36px) + var(--safe-t))}}
@media (max-width:759px){.rail.compact button small{display:none}.rail.compact button{padding:4px 4px;min-width:40px}.rail.compact{gap:2px;padding:3px}}
@media (max-width:759px){body.stats-open .space-chip{display:none!important}}
@media (max-width:759px){body.stats-open .placer-hint{top:calc(146px + var(--stats-h,36px) + var(--safe-t))}}
.cvi-re button{opacity:1;color:rgba(255,255,255,.72);display:inline-flex;align-items:center;justify-content:center}.cvi-re button .ic{width:17px;height:17px}.cvi-re button.on{color:var(--gold,#ffcc4d)}
.cm-top{flex-wrap:nowrap;min-width:0}.cm-top>*{min-width:0}.cm-top .cm-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cm-top .cm-t,.cm-top .cm-more,.cm-top .cm-you{flex:none}
.cm-top .ebadge{flex:none}@media (max-width:380px){.cm-top .ebadge .ebw{display:none}}
.body .cnt{right:auto;top:auto;left:50%;bottom:100%;transform:translate(-50%,-1px)}

/* Nov 1: small, short Lite note; taps go through it */
.toast.tiny{font-size:.76rem;padding:6px 12px;width:auto!important;max-width:230px;pointer-events:none!important}

/* ===================== Oct 31 night: UI polish pass (map + solar system) =====================
   1) every button can be tapped easily (44px tap area), 2) phone held sideways gets a tidy layout even while the
   owner's landscapeOn switch is OFF (class cv-sl), 3) the welcome card always fits, 4) space screens stay clean. */
/* --- 44px tap areas. Small chips keep their look; an invisible ring makes the tap area 44px. --- */
.qchip,.moons button,#cvBanner .cvb-x,.wel-skip{position:relative}
.qchip::after,.moons button::after,#cvBanner .cvb-x::after,.take-pill::after,.pts-pill::after,.vid-pill::after,.space-chip::after,.wel-skip::after{content:"";position:absolute;left:50%;top:50%;width:100%;height:100%;min-width:44px;min-height:44px;transform:translate(-50%,-50%);border-radius:inherit}
.body::after{content:"";position:absolute;left:50%;top:50%;width:100%;height:100%;min-width:44px;min-height:44px;transform:translate(-50%,-50%);border-radius:50%}
.rail button{min-height:44px;min-width:46px;justify-content:center}
.rail.compact button{min-height:44px;min-width:44px}
.fab{width:44px;height:44px}
.gear-btn{width:44px;height:44px}
.acct-btn{height:44px}
@media (max-width:759px){.acct-btn{right:52px}}
.search input{min-height:44px;box-sizing:border-box}
.search .icon-btn{min-width:44px;min-height:44px}
.style-pop button{min-height:44px}
.wel-x{width:44px;height:44px;top:6px;right:6px}
.sheet .close{min-width:44px;min-height:44px}
.sheet-body>h2:first-child{margin-right:52px}
/* --- words fit the device: "Tap / Pinch" on phones, "Click / Scroll" on computers --- */
.t-mouse{display:none}
@media (hover:hover) and (pointer:fine){.t-touch{display:none}.t-mouse{display:inline}}
/* --- space screens: map-only things never float over the planets --- */
body.in-space .space-chip,body.in-space .moons,body.in-space .where,body.in-space .quick,body.in-space .style-pop{display:none!important}
/* --- welcome card: always fits the screen, scrolls inside if the phone is short --- */
.welcome{overflow-y:auto;-webkit-overflow-scrolling:touch}
.wel-card{max-height:calc(100% - 4px);overflow-y:auto;overscroll-behavior:contain}
@media (max-height:520px){
  .welcome{align-items:center;padding:60px 12px 10px}
  .wel-card{width:min(520px,100%);padding:14px 16px 10px;border-radius:18px}
  .wel-h{font-size:1.2rem;margin:2px 44px 8px}
  .wel-live{margin-bottom:8px;padding:4px 10px;font-size:.8rem}
  .wel-steps{margin-bottom:8px}
  .wel-steps li{padding:5px 4px;display:flex;align-items:center;justify-content:center;gap:5px;font-size:.76rem}
  .wel-steps li::before{display:inline;margin-right:2px}
  .wel-steps li span{display:inline;font-size:1rem;margin:0}
  .wel-search{margin-bottom:8px}
  .wel-search input{padding:10px 12px}
  .wel-cta{padding:11px;font-size:1.05rem}
  .pub-line{margin-top:6px}
  .wel-skip{margin-top:2px;padding:6px}
}
/* --- phone held sideways (short screen) while the landscapeOn switch is OFF: one tidy top row, one bottom row --- */
html.cv-sl{--slx:max(8px,env(safe-area-inset-left,0px));--slr:max(8px,env(safe-area-inset-right,0px));--slt:calc(6px + var(--safe-t,0px))}
html.cv-sl .top{left:var(--slx)!important;right:auto!important;top:var(--slt)!important;flex-direction:row!important;align-items:center!important;gap:8px!important}
html.cv-sl .brand{height:44px;box-sizing:border-box;padding:3px 14px 3px 5px!important;max-width:none!important}
html.cv-sl .brand .logo-mark{width:30px!important;height:30px!important}
html.cv-sl .brand h1{font-size:1.05rem!important}
html.cv-sl .brand .tagline,html.cv-sl .stats,html.cv-sl .intro-line,html.cv-sl .ticker{display:none!important}
html.cv-sl .gear-btn{position:fixed!important;top:var(--slt)!important;right:var(--slr)!important}
html.cv-sl .acct-btn{position:fixed!important;top:var(--slt)!important;right:calc(var(--slr) + 52px)!important;max-width:28vw}
html.cv-sl .search{top:var(--slt)!important;left:var(--sl-sl,180px)!important;right:auto!important;width:var(--sl-sw,300px)!important;margin-top:0!important}
html.cv-sl .search input{padding-top:0;padding-bottom:0}
html.cv-sl #cvBanner{position:absolute!important;top:calc(var(--slt) + 50px)!important;left:var(--slx)!important;right:auto!important;transform:none!important;width:var(--sl-bw,360px)!important;max-width:none!important;margin-top:0!important}
html.cv-sl .quick{top:calc(var(--slt) + 50px)!important;right:calc(var(--slr) + 62px)!important;max-width:none!important;flex-wrap:nowrap!important;margin-top:0!important}
html.cv-sl .where,html.cv-sl .moons,html.cv-sl .space-chip{margin-top:0!important;left:var(--slx)!important;right:auto!important;transform:none!important;max-width:var(--sl-bw,360px)!important}
html.cv-sl .rail{right:var(--slr)!important}
html.cv-sl .bottom{flex-direction:row!important;align-items:flex-end!important;justify-content:center!important;gap:8px!important;padding:0 var(--slr) calc(6px + var(--safe-b,0px)) var(--slx)!important}
html.cv-sl .dock{order:1;flex:0 1 auto!important;min-width:0;width:auto!important;padding:3px!important;gap:2px}
html.cv-sl .dock button{flex:0 0 auto!important;min-width:46px;min-height:48px;padding:4px 4px!important;font-size:.64rem!important;justify-content:center}
html.cv-sl .dock button .ic{width:20px;height:20px}
html.cv-sl .cta{order:2;align-self:flex-end!important;height:52px;padding:0 18px!important;font-size:1rem!important;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;flex:none}
html.cv-sl .fabs{order:3;position:static!important;flex-direction:row!important;gap:6px!important;align-self:flex-end;margin-bottom:4px;flex:none}
html.cv-sl .take-pill,html.cv-sl .pts-pill,html.cv-sl .vid-pill{left:var(--slx)!important}
html.cv-sl .scene-title{top:calc(var(--slt) + 50px + var(--sl-bnh,0px))!important;left:var(--sl-stl,8px)!important;right:70px!important}
html.cv-sl .scene-title h2{font-size:1.1rem}
html.cv-sl .scene-title p{font-size:.76rem}

/* tight phones: the zoom bar shows only the current level until tapped (same as street zoom) */
body.rail-tight:not(.rail-open) .rail button:not(.on){display:none}
body.rail-tight:not(.rail-open) .rail{padding:3px}
/* the news banner line is a 44px tap row */
#cvBanner .cvb-t{position:relative}
#cvBanner .cvb-t::after{content:"";position:absolute;left:0;right:0;top:50%;min-height:44px;transform:translateY(-50%)}
/* computer: the space title sits under the news banner, never under it */
@media (min-width:760px){body.has-banner .scene-title{top:calc(var(--bn-top,64px) + var(--bn-h,40px) + 8px)}}
html.cv-sl .bottom{left:0!important;right:0!important;width:auto!important;max-width:none!important;transform:none!important}
html.cv-sl .dock{flex:none!important}
html.cv-sl .cta{flex:0 1 auto!important;min-width:0;overflow:hidden;text-overflow:ellipsis}
html.cv-sl .cta #claimLabel{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
html.cv-sl .dock button{padding:4px 3px!important}
html.cv-sl .cta{padding:0 16px!important}
@media (max-width:359px){.brand .tagline{display:none}}
/* panels: every choice is an easy 44px tap */
.sheet .tabs button,.sheet .seg button,.sheet .chips button,.sheet .btn.small{min-height:44px}
.sheet .seg button,.sheet .chips button{display:inline-flex;align-items:center;justify-content:center}
.sheet input[type=range]{min-height:44px}
.sheet input[type=checkbox]{min-width:22px;min-height:22px}
.sheet .tabs{gap:2px}
.sheet .seg2 button{min-height:44px}
.quick:has(#stylePop:not([hidden])){z-index:40}

/* Nov 1: Install app (PWA). Button at the top of Settings and in More; hidden when already installed (opened as an app). */
.install-box{margin:6px 0 12px}
.install-btn{width:100%;min-height:48px;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:700}
.install-btn .ic{width:20px;height:20px}
.install-tip{margin:8px 2px 0}
.ios-install{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(2,3,10,.72);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.ios-card{width:100%;max-width:360px;max-height:calc(100% - 8px);overflow:auto;background:var(--panel2);border:1px solid var(--line);border-radius:20px;padding:16px 16px 14px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.ios-card h3{margin:0 0 10px;font-size:1.15rem;text-align:center}
.ios-card .ios-pic{display:block;width:100%;height:auto;max-height:42vh;margin:0 auto 6px}
.ios-card ol{margin:6px 0 12px;padding-left:22px;line-height:1.5}
.ios-card ol li{margin:4px 0}
.ios-card ol svg{vertical-align:-5px}
.ios-card .ios-ok{width:100%;min-height:48px}
@media (max-height:520px) and (orientation:landscape){.ios-card{max-width:560px;display:grid;grid-template-columns:1fr 1fr;gap:4px 14px;align-items:center}.ios-card h3{grid-column:1/-1}.ios-card .ios-pic{max-height:52vh}.ios-card ol{margin:0}.ios-card .ios-ok{grid-column:1/-1}}
/* Nov 1: History link at the bottom of Settings (opens /history, its own page like the admin page). Off switch: Game rule historyOn. */
.set-history{display:flex;align-items:center;gap:12px;min-height:56px;margin:16px 0 4px;padding:8px 14px;border-radius:14px;background:rgba(255,204,77,.08);border:1px solid rgba(255,204,77,.28);color:var(--text);text-decoration:none}
@media (hover:hover) and (pointer:fine){.set-history:hover{background:rgba(255,204,77,.14)}}
.set-history>.ic:first-child{width:24px;height:24px;color:var(--gold);flex:none}
.set-history span{flex:1;display:flex;flex-direction:column;font-weight:600;line-height:1.25}
.set-history small{font-weight:400;color:var(--muted);font-size:.82rem}
.set-history .chev{width:20px;height:20px;flex:none;color:var(--muted)}

/* Nov 1: Quests sheet (dock button where Quiz was). The daily quiz is a small side item at the bottom. */
#questsBody .btn{min-height:44px;min-width:56px}
.q-side{display:flex;align-items:center;gap:10px;margin:14px 0 4px;padding:8px 10px 8px 12px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}
.q-side .pts-tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.q-side .pts-tx b{font-size:.92rem}
.q-side .pts-tx small{color:var(--muted);font-size:.78rem}
/* Nov 1: Quests in 3 tabs (Daily, Class, Events) */
.q-seg{margin:0 0 8px}
.q-seg button{position:relative}
.q-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ff5a7e;vertical-align:2px;margin-left:2px}
.q-sub{margin:0 0 10px;font-size:.86rem}
.q-label{margin:2px 0 4px;font-size:.74rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--gold)}
.q-first{margin-bottom:10px}
.q-hint{display:block;margin:0 0 10px;padding:8px 10px;border-radius:12px;background:rgba(255,204,77,.1);border:1px solid rgba(255,204,77,.3);font-size:.84rem;line-height:1.35}
.q-hint .ic{vertical-align:-3px;color:var(--gold)}
.q-hint .link-btn{display:inline-block;min-height:44px;min-width:44px;padding:0 8px;vertical-align:middle;font-size:.84rem;color:var(--text)}
.q-lock{display:flex;align-items:center;gap:10px;padding:12px;border-radius:14px;background:rgba(255,255,255,.05);border:1px dashed rgba(255,255,255,.18)}
.q-lock .pts-tx,.q-ev-top .pts-tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.q-lock .pts-tx small,.q-ev-top .pts-tx small{color:var(--muted);font-size:.8rem}
.q-ev{padding:12px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,90,126,.35);margin:0 0 10px}
.q-ev-top{display:flex;align-items:center;gap:10px}
.q-ev-top .badge{flex:none}
.q-ev-body{margin-top:8px;font-size:.88rem;line-height:1.4;overflow-wrap:anywhere}
.q-ev-body p{margin:0 0 6px}
#questsBody .q-ev-body b,#questsBody .q-hint b{display:inline}
.tl .link-btn[data-qevent]{display:block;min-height:44px;text-align:left;padding:0}

/* Nov 1: phone alerts (push.js) */
.pn-box{margin:10px 0 12px;padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.03)}
.pn-box h4{margin:0 0 6px;font-size:1rem}
.pn-btn{width:100%;min-height:48px;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:700;margin-top:8px}
.pn-btn .ic{width:20px;height:20px}
.pn-row{display:flex;gap:8px;flex-wrap:wrap}.pn-row .pn-btn{flex:1 1 140px}
.pn-on{margin:0 0 6px;font-weight:700}
.pn-note{margin:4px 0;font-size:.9rem;line-height:1.4}
.pn-why{margin:0 0 6px;line-height:1.45;text-align:center}
.pn-types{display:flex;flex-direction:column;gap:2px}
.pn-type{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:2px 0;cursor:pointer}
.pn-type span{flex:1;font-size:.92rem;line-height:1.3}
.pn-type input{width:24px;height:24px;flex:0 0 24px;accent-color:#ffb43a}
.ios-card.pn-card{display:block}
@media (max-height:520px) and (orientation:landscape){.ios-card.pn-card{display:block;max-width:520px}}

/* Nov 1: NPC Ruler / Duke / Lord popup — their own day (no invite / quiz words) + preview-only "tap a country" hint */
.npc-pp .npc-life{margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.12);display:grid;gap:4px;font-size:.8rem;line-height:1.3}
.npc-pp .npc-life b{color:var(--gold,#f2b200);font-weight:700;margin-right:4px}
.npc-pp .npc-ask{margin-top:2px}
.npc-pp .npc-ask small{color:var(--muted,#9aa3b5);font-size:.72rem}
.npc-pp .title{color:#ffe9a8;font-weight:800}
.npc-pp .where2{color:#d7ddef}
html.light .npc-pp .title{color:#7a5200}
html.light .npc-pp .where2{color:#2a3150}
html.light .npc-pp .npc-life{border-top-color:rgba(0,0,0,.12)}
.npc-hint{position:fixed;left:50%;top:calc(132px + var(--safe-t,0px));transform:translateX(-50%);z-index:19;background:rgba(14,16,36,.94);color:#ffe9a8;border:1px solid rgba(242,178,0,.55);padding:10px 16px;border-radius:999px;font-size:.88rem;font-weight:600;pointer-events:none;max-width:90%;text-align:center;box-shadow:0 8px 30px rgba(0,0,0,.4);transition:opacity .6s}
.npc-hint.fade{opacity:0}
html.cv-sl .npc-hint{top:auto;bottom:calc(76px + var(--safe-b,0px))}
body.walking .npc-hint{display:none}
.kfilt{display:flex;gap:6px;margin:4px 0 8px}
.kfilt button{flex:1;min-height:44px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:inherit;font-size:.8rem;font-weight:600;padding:6px 8px}
.kfilt button.on{background:rgba(242,178,0,.18);border-color:rgba(242,178,0,.6);color:#ffe9a8}
html.light .kfilt button.on{color:#7a5200}
.who-tag{display:inline-block;font-size:.66rem;font-weight:800;letter-spacing:.03em;text-transform:uppercase;border-radius:6px;padding:1px 6px;margin-right:4px;vertical-align:1px}
.who-tag.p{background:#22a35a;color:#fff}
.who-tag.n{background:#5b6380;color:#fff}
.tsel{display:flex;align-items:center;gap:8px;margin:2px 0 6px;font-size:.85rem}
.tsel select{flex:1;min-height:44px}

/* Nov 1: name + (Player)/(NPC) bracket tag; long names truncate, tag stays visible */
.nmt{display:inline-flex;align-items:baseline;max-width:100%;min-width:0;vertical-align:bottom;gap:.3em}
.nmt-n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.nmt-t{flex:0 0 auto;white-space:nowrap;font-weight:700;font-size:.86em}
.nmt-t.p{color:#4fd18b}.nmt-t.n{color:#a9b0cc}
html.light .nmt-t.p{color:#16834a}html.light .nmt-t.n{color:#5b6380}
.nmrow{display:flex!important;align-items:baseline;gap:.3em;min-width:0;overflow:hidden;white-space:nowrap}
.nmrow>.nmt{flex:0 1 auto;min-width:0}
.nmt-x{flex:0 0 auto;white-space:nowrap}
.npc-nm .nmt{max-width:100%}
.item .main .nmt{display:inline-flex;font-size:inherit;color:inherit;overflow:visible}
.item .main .nmt-n{display:block;font-size:inherit;color:inherit}
.item .main .nmt-t{display:inline;overflow:visible;text-overflow:clip;font-size:.86em}
.item .main .nmt-t.p{color:#4fd18b}.item .main .nmt-t.n{color:#a9b0cc}
html.light .item .main .nmt-t.p{color:#16834a}html.light .item .main .nmt-t.n{color:#5b6380}
.item .main span.nmrow{display:flex}
.item .main .nmt-x{display:inline;overflow:visible}
body:has(.sheet:not([hidden])) .npc-hint{display:none}
/* Nov 1 5:53 PM: no (NPC)/(Player) tags; an NPC name carries its grade on a smaller line under it */
.nmt.nmt2{display:inline-flex;flex-direction:column;align-items:flex-start;vertical-align:top;gap:0;line-height:1.15}
.nmt-g{display:block;font-size:.74em;font-weight:800;letter-spacing:.02em;line-height:1.2;white-space:nowrap}
.item .main .nmt.nmt2{display:inline-flex;flex-direction:column}
.item .main .nmt-g{display:block;font-size:.74em}
html.light .nmt-g{filter:brightness(.62) saturate(1.4)}

/* Nov 1 (owner): a phone held sideways places the toast itself (placeToast sets left/top/width), so no centring shift
   (it was cut off at the left) and it fades out in place (it used to stay on screen). Text wraps inside the screen. */
html.cv-sl .toast{transform:translateY(-6px);opacity:0;pointer-events:none;max-width:calc(100vw - 20px);box-sizing:border-box;border-radius:16px;white-space:normal;overflow-wrap:anywhere;transition:transform .25s,opacity .2s}
html.cv-sl .toast.show{transform:none;opacity:1;pointer-events:auto;transition:transform .25s,opacity .2s,top .25s}

/* Nov 1 Titles v2: Renown bar + Top 100 (owner switch titlesV2On) */
.rn-slot:empty{display:none}
.rn-card{display:flex;flex-direction:column;gap:8px;padding:12px 14px;margin:10px 0;border-radius:14px;background:linear-gradient(135deg,rgba(255,204,77,.14),rgba(166,139,255,.12));border:1px solid rgba(255,204,77,.35);min-width:0}
.rn-top{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;min-width:0}
.rn-rank{display:inline-flex;align-items:center;gap:6px;font-family:"Space Grotesk",sans-serif;font-size:1.1rem;font-weight:700;color:var(--gold)}
.rn-rank .ic{width:20px;height:20px}
.rn-pts{font-size:.9rem;color:var(--muted)}.rn-pts b{color:var(--text);font-size:1.05rem}
.rn-bar{height:12px;border-radius:999px;background:rgba(255,255,255,.1);overflow:hidden;border:1px solid rgba(255,255,255,.12)}
.rn-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#ffcc4d,#ffb020);min-width:4px}
.rn-next{margin:0;font-size:.86rem;line-height:1.35}
.rn-ladder{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 2px;font-size:.74rem;color:var(--muted)}
.rn-ladder li{padding:3px 8px;border-radius:999px;border:1px solid rgba(255,255,255,.14)}
.rn-ladder li.past{color:var(--text);border-color:rgba(255,204,77,.3)}
.rn-ladder li.on{color:#1a1300;background:var(--gold);border-color:var(--gold);font-weight:700}
.rn-open{min-height:44px;align-self:flex-start}
.rn-hint{margin:0}
.rn-hint .link-btn{min-height:44px;padding:0 10px}
.rn-q .btn{min-height:44px}
.rn-rules{margin:10px 0 0}
.rn-top100{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
.rn-top100 li{display:grid;grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;gap:8px;min-height:44px;padding:4px 10px;border-radius:12px;background:rgba(255,255,255,.04);font-size:.86rem}
.rn-top100 li.me{background:rgba(255,204,77,.16);border:1px solid rgba(255,204,77,.4)}
.rn-n{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}
.rn-u{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.rn-r{color:var(--muted);font-size:.78rem}
.rn-v{color:var(--gold);font-variant-numeric:tabular-nums;min-width:42px;text-align:right}
html.light .rn-bar{background:rgba(0,0,0,.08)}html.light .rn-ladder li.on{color:#1a1300}

/* Nov 1: the intro line shows once (8 s) then hides; its text stays in the page for search engines */
body.introline-off .intro-line{display:none!important}

/* Nov 1 Fame: the one-line plain explanation wherever Fame shows */
.rn-why{margin:0;font-size:.8rem;line-height:1.35;opacity:.86;overflow-wrap:anywhere}
.q-side.rn-q small{white-space:normal}
/* Nov 1 (owner 4:36 PM): coin icons, round metal coins with a letter (Copper C, Silver S, Gold G). CSS only, crisp at any size. */
.cvc{display:inline-flex;align-items:center;justify-content:center;width:1.2em;height:1.2em;border-radius:50%;vertical-align:-.24em;margin-right:.25em;flex:none;position:relative;
  box-shadow:inset 0 0 0 .07em rgba(255,255,255,.55),inset 0 0 0 .13em rgba(0,0,0,.28),0 .05em .12em rgba(0,0,0,.45)}
.cvc b{font:800 .66em/1 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;letter-spacing:0;text-shadow:0 .06em 0 rgba(255,255,255,.45)}
.cvc-c{background:radial-gradient(circle at 34% 28%,#ffd2ae 0,#e38b52 30%,#b8602a 62%,#7d3b13 100%);color:#4a1d04}
.cvc-s{background:radial-gradient(circle at 34% 28%,#ffffff 0,#dfe3ea 30%,#aab2c0 62%,#6c7484 100%);color:#2b3140}
.cvc-g{background:radial-gradient(circle at 34% 28%,#fff6c2 0,#ffd54a 30%,#e0a512 62%,#946405 100%);color:#5a3a00}
.cva{white-space:nowrap}
.pts-pill .cvc{margin-right:.2em}
.wallet-line{min-height:44px}
/* Nov 1 title requests (switch titleRequestsOn) */
.tq-box{display:flex;flex-direction:column;gap:8px;padding:12px 14px;margin:10px 0;border-radius:14px;background:rgba(255,204,77,.08);border:1px solid rgba(255,204,77,.35)}
.tq-box p{margin:0}
.tq-box .btn{min-height:44px}
.tq-req{align-self:flex-start;min-height:48px;padding:0 20px;border:0;border-radius:999px;font-weight:700;color:#2a1700;background:linear-gradient(180deg,#ffe17a,#ffb02e 60%,#ff9f1c)}
.tq-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 0;border-top:1px solid var(--line)}
.tq-row:first-of-type{border-top:0}
.tq-tx{flex:1 1 180px;margin:0}
.tq-btns{display:flex;gap:8px;flex:0 0 auto}
.tq-btns .btn{min-width:96px}
.tq-demo{align-self:flex-start}
.tq-note{margin:6px 0}

/* Nov 1 night fixes (owner "fix all the broken and unlogical things") */
img.flag[src$="/np.svg"]{object-fit:contain;box-shadow:none;border-radius:0;filter:drop-shadow(0 0 .6px rgba(0,0,0,.55))} /* Nepal: two pennants, not a rectangle */
.rsv-t{display:inline-block;margin-left:4px;padding:0 5px;border-radius:6px;font-size:.66rem;font-weight:600;color:var(--muted);border:1px solid var(--line);vertical-align:1px}
.job-t{margin-left:4px;font-size:.7rem;color:var(--muted);font-weight:500}
.kcount{margin:0 0 8px;font-size:.88rem}
button.item{-webkit-tap-highlight-color:transparent}
.rail.two-col{display:grid;grid-template-columns:repeat(2,44px);gap:2px;padding:3px}
.rail.two-col button{min-width:44px;padding:4px 0}.rail.two-col button small{display:none}
body.rail-mini .rail button,body.rail-tight .rail button{display:flex!important}

/* Nov 1 9:24 PM fix: the coin chip shows round C/S/G coins with their names (no star/medal) */
.pts-pill .pp-c{display:inline-flex;align-items:center;white-space:nowrap}
.pts-pill .pp-c small{margin-left:.28em;font-size:.72rem;font-weight:600;color:inherit;opacity:.88}
.pts-pill .pp-dot{font-style:normal;opacity:.55}
.pts-pill{max-width:calc(100vw - 56px);white-space:nowrap}
@media (max-width:380px){.pts-pill.pp-wide .pp-c small{display:none}}
.pts-num .cvc,.wallet-line .cvc{margin-right:.3em}
.wb-bal .cvc{font-size:1.9rem;margin:0}
/* Nov 1 10:32 PM fix: wallet coins are always perfect circles (never stretched by a parent rule) */
.wallet-box .cvc{width:1.2em;height:1.2em;min-width:1.2em;min-height:1.2em;max-width:1.2em;max-height:1.2em;aspect-ratio:1/1;padding:0;box-sizing:border-box;flex:none}
.wb-pair .cvc{font-size:1.15rem;margin:0}
.wallet-box .mc-x{width:44px;height:44px;right:6px;top:6px}
.wallet-box h3{padding-right:48px}
.wallet-box p .cvc,.wb-log .cvc{font-size:12.5px;margin:0 .12em;vertical-align:-.22em}
.wb-log .cva .cvc{margin:0 .25em 0 .1em;vertical-align:-.16em}

/* Nov 1 (owner): Profile / Settings / More split. Touch targets at least 44px in all three sheets. */
#sheet-profile .prof-top{display:flex;gap:12px;align-items:center}
#sheet-profile .prof-u-line{display:flex;align-items:center;gap:6px;margin-top:2px;min-width:0}
#sheet-profile .prof-u-line .prof-u{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#sheet-profile .prof-lv{display:flex;align-items:center;gap:5px;margin-top:4px;font-size:.84rem;color:var(--gold,#e8b94a)}
#sheet-profile .prof-lv .ic{width:14px;height:14px}
#sheet-profile h3.prof-h{margin:16px 0 8px}
#sheet-profile .prof-coins{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px;margin:8px 0}
#sheet-profile .prof-coins .pc{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 6px;border-radius:12px;background:rgba(127,127,127,.12);min-height:44px}
#sheet-profile .prof-coins .pc b{font-size:1rem}
#sheet-profile .prof-coins .pc small{font-size:.72rem;opacity:.75}
#sheet-profile .prof-actions{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
#sheet-profile .prof-actions .btn{flex:1 1 140px}
#sheet-profile .my-home{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
#sheet-settings .set-acct{margin-top:4px}
:is(#sheet-profile,#sheet-settings,#sheet-more) .btn,
:is(#sheet-profile,#sheet-settings,#sheet-more) .chip-btn,
:is(#sheet-profile,#sheet-settings,#sheet-more) .link-btn,
:is(#sheet-profile,#sheet-settings,#sheet-more) select,
:is(#sheet-profile,#sheet-settings,#sheet-more) input.field{min-height:44px}
:is(#sheet-profile,#sheet-settings,#sheet-more) .link-btn{display:inline-flex;align-items:center;gap:4px}
:is(#sheet-profile,#sheet-settings,#sheet-more) label.switch{min-height:44px;display:flex;align-items:center}
:is(#sheet-profile,#sheet-settings,#sheet-more) details > summary{min-height:44px;display:flex;align-items:center;gap:6px;cursor:pointer}
:is(#sheet-profile,#sheet-settings,#sheet-more) .tiny-sel select{min-height:44px}
:is(#sheet-profile,#sheet-settings,#sheet-more) .follow a{min-height:44px}
#sheet-profile .prof-coins .pc .cvc{font-size:1.15em;margin:0 0 2px}

/* Nov 1 never-down: soft busy note (server over its daily limit or down; map shows the last good copy) */
.cv-busy{position:fixed;left:10px;right:10px;margin:0 auto;width:fit-content;top:calc(env(safe-area-inset-top,0px) + 10px);z-index:9999;display:flex;align-items:center;gap:10px;max-width:560px;box-sizing:border-box;padding:8px 8px 8px 14px;border-radius:14px;background:rgba(20,24,36,.94);color:#f4efe2;border:1px solid rgba(232,196,104,.55);box-shadow:0 6px 24px rgba(0,0,0,.35);font-size:13px;line-height:1.35}
.cv-busy span{flex:1;min-width:0}
.cv-busy button{flex:none;min-width:44px;min-height:44px;padding:0 12px;border-radius:10px;border:0;background:#e8c468;color:#1b1b1b;font-weight:700;font-size:14px;cursor:pointer}

/* ===================== Nov 2: touch-target fix (display only, no behaviour change) =====================
   Every tap area is at least 44x44 CSS px where there is room, and no tap ring ever reaches over another button.
   1) Earth / Moon / Moon Visit chips: their invisible 44px ring was cut off by the scrolling row. The ring now
      hangs below the chip (the row has 12px of invisible room underneath). On phones held upright the row sits
      6px lower so the Game / Sound / Hide rings above never touch it.
   2) Game / Sound / Hide chips: 12px between chips on touch screens so each 44px ring fits without touching the next.
   3) News banner: the line was cutting off its own ring; now the line and the X get a 44px tall tap area that grows
      into the free space (upwards on phones held upright, downwards when held sideways), never over the search box.
   4) Welcome card on short (sideways) screens: search box + Search button 44px tall (4px less space under them).
   5) Privacy / Terms links in More: invisible padding (layout unchanged). */
.moons{padding-bottom:12px}
.moons button::after{top:0;height:44px;min-height:44px;transform:translateX(-50%)}
@media (pointer:coarse) and (orientation:portrait) and (max-width:759px){.moons{translate:0 6px}}
@media (pointer:coarse){.quick{gap:12px}}
#cvBanner .cvb-t{overflow:visible}
#cvBanner .cvb-t::after{top:-5px;bottom:-5px;min-height:0;transform:none}
#cvBanner .cvb-x::after{left:-4px;right:-14px;top:-5px;bottom:-5px;width:auto;height:auto;min-width:0;min-height:0;transform:none;border-radius:14px}
@media (pointer:coarse) and (orientation:portrait) and (max-width:759px){#cvBanner .cvb-t::after,#cvBanner .cvb-x::after{top:-14px}}
@media (pointer:coarse) and (orientation:landscape) and (max-height:520px){#cvBanner .cvb-t::after,#cvBanner .cvb-x::after{bottom:-14px}}
@media (max-height:520px){.wel-search{margin-bottom:4px}.wel-search input,.wel-search .btn{min-height:44px;box-sizing:border-box}}
.credits p a[href="/privacy"]{display:inline-block;padding:16px 4px 16px 6px;margin:-16px -4px -16px -6px}
.credits p a[href="/terms"]{display:inline-block;padding:16px 7px 16px 4px;margin:-16px -7px -16px -4px}
button,a[href],[role=button],summary{touch-action:manipulation}

/* Nov 3 fixes: bug 1 (open search list sits above the placing hint and stays tappable), bug 6 (quiz: space kept for the answer line) */
body.searching .search{z-index:12}
body.searching #placer .placer-hint{visibility:hidden}
.qz-fact{min-height:4.4em}
.qz-fact.qz-wait{visibility:hidden}
