:root{--bg:#070b14;--bg2:#0d1424;--fg:#e8edf7;--muted:#8a97b3;--line:#1e2a44;--accent:#7fd4ff;--accent2:#ffd166;--danger:#ff5f7a;--ok:#5ee6a8;--r:12px;--font:system-ui,-apple-system,"Segoe UI",Roboto,Inter,sans-serif}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 var(--font)}
a{color:var(--accent)}
b{font-weight:600}
.muted{color:var(--muted)}.small{font-size:13px}.big{font-size:19px}
.center{text-align:center}
button{font:inherit}
.btn{display:inline-block;border:1px solid var(--line);background:var(--bg2);color:var(--fg);padding:9px 16px;border-radius:999px;cursor:pointer;text-decoration:none;letter-spacing:.04em;font-weight:600;font-size:13px;transition:.15s}
.btn:hover{border-color:var(--accent);color:#fff}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#04101f}
.btn.primary:hover{background:#a6e3ff}
.btn.ghost{background:transparent}
.btn.danger{background:transparent;border-color:var(--danger);color:var(--danger)}
.btn.big{width:100%;padding:14px;font-size:15px;margin-top:6px}
.btn:disabled{opacity:.6;cursor:wait}
.link{background:none;border:0;color:var(--accent);cursor:pointer;padding:0;text-decoration:underline}

/* ---- globe page ---- */
body.globe-page{overflow:hidden;height:100vh}
#globe{position:fixed;inset:0;z-index:0}
#globe{direction:ltr}   /* globe.gl offsets its HTML marker layer by the full width under an RTL root */
#globe.picking{cursor:crosshair}#globe.picking .marker *{pointer-events:none}
.top{position:fixed;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;gap:22px;padding:14px 22px;background:linear-gradient(to bottom,rgba(7,11,20,.9),rgba(7,11,20,0));pointer-events:none}
.top>*{pointer-events:auto}
.brand{font-weight:800;font-size:20px;letter-spacing:-.02em;color:#fff;text-decoration:none}.brand span{color:var(--accent)}
.years a{color:var(--muted);text-decoration:none;margin-right:10px;font-weight:600;font-size:13px;padding:4px 8px;border-radius:8px}
.years a.on{color:#fff;background:rgba(255,255,255,.08)}
.stats{display:flex;gap:18px;font-size:13px;color:var(--muted)}.stats b{color:#fff}
.actions{display:flex;gap:10px}.actions.icons{margin-left:auto}
/* language: a globe icon + code; the real <select> sits invisibly on top so a tap still opens the native picker */
.langbtn{position:relative;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.langbtn b{font-size:11px;letter-spacing:.06em}
.langbtn select.lang{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;background:none}
/* active hashtag filter */
.tagbar{position:fixed;left:50%;top:70px;transform:translateX(-50%);z-index:6;display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:center;max-width:94vw;padding:6px 10px;border-radius:999px;background:rgba(10,15,28,.85);backdrop-filter:blur(8px);border:1px solid var(--line);font-size:13px}
.tagbar .n{color:var(--muted);padding:0 4px}
.tagbar .link{color:var(--muted);text-decoration:none;font-size:12px;padding:0 4px}
@media (max-width:720px){.tagbar{top:112px}}
.foot{position:fixed;bottom:0;left:0;right:0;z-index:5;padding:10px 22px;font-size:12px;color:var(--muted);background:linear-gradient(to top,rgba(7,11,20,.8),rgba(7,11,20,0));pointer-events:none}
.foot a{pointer-events:auto;color:var(--muted)}
.hint{position:fixed;left:50%;top:76px;transform:translateX(-50%);z-index:6;background:rgba(13,20,36,.95);border:1px solid var(--accent);padding:10px 18px;border-radius:999px;font-size:14px}
.hint .link{margin-left:10px;color:var(--muted)}
.flash{position:fixed;left:50%;top:76px;transform:translateX(-50%);z-index:7;background:var(--bg2);border:1px solid var(--line);padding:12px 44px 12px 18px;border-radius:var(--r);max-width:90vw}
.flash.error{border-color:var(--danger)}.flash.ok{border-color:var(--ok)}
.flash .x{position:absolute;right:8px;top:6px;background:none;border:0;color:var(--muted);font-size:20px;cursor:pointer}
.flash.static{position:static;transform:none;margin:0 0 16px}

.panel{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:100vw;z-index:8;background:rgba(10,15,28,.96);backdrop-filter:blur(10px);border-left:1px solid var(--line);padding:26px 26px 40px;overflow-y:auto}
.panel .close{position:absolute;right:14px;top:10px;background:none;border:0;color:var(--muted);font-size:28px;cursor:pointer;line-height:1}
.panel h2{margin:4px 0 8px;font-size:24px;letter-spacing:-.01em}
.panel h3{margin:22px 0 8px;font-size:15px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
@media (max-width:720px){
  .panel{top:auto;left:0;width:100%;max-height:82vh;border-left:0;border-top:1px solid var(--line);border-radius:18px 18px 0 0}
  .top{gap:8px;padding:10px 14px;flex-wrap:wrap}.stats{display:none}
  .actions.icons{gap:6px}.actions.main{width:100%;gap:8px}.actions.main .btn.primary{flex:1;letter-spacing:.02em}
  .top .btn{white-space:nowrap;padding:9px 12px}
  .langbtn b{display:none}
  .years a{margin-right:2px}
}

.zoom{position:fixed;right:22px;bottom:42px;z-index:5;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:rgba(10,15,28,.85);backdrop-filter:blur(6px)}
.zoom button{width:40px;height:40px;border:0;background:transparent;color:var(--fg);font-size:22px;line-height:1;cursor:pointer}
.zoom button:first-child{border-bottom:1px solid var(--line)}
.zoom button:hover{background:rgba(255,255,255,.08)}
@media (max-width:720px){.zoom{right:12px;bottom:56px}}
body.light .zoom{background:rgba(247,241,227,.9)}
/* globe markers */
/* navigation pin: one continuous white shape (badge + tail) with a soft shadow, no outline.
   Tail tip at the anchor (0,0), badge above it, label above the badge; all scaled about the anchor. */
.marker{width:0;height:0;pointer-events:none;--ih:28px;--tail:8px;--gap:4px}
.marker .tier-top{--ih:34px}.marker .tier-ten{--ih:42px}
.mk-img,.mk-lbl,.mk-tail,.mk-more{position:absolute;left:0;top:0;transform-origin:0 0;pointer-events:auto;cursor:pointer;user-select:none}
.mk-tail{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:var(--tail) solid #fff;transform:scale(var(--mk,1)) translate(-50%,-100%);filter:drop-shadow(0 2px 2px rgba(0,0,0,.35))}
.mk-img{width:var(--ih);height:var(--ih);border-radius:30%;object-fit:contain;padding:2px;box-sizing:border-box;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,.35);transform:scale(var(--mk,1)) translate(-50%,calc(-100% - var(--tail) + 2px))}
.mk-none{display:block;background:#fff}
.mk-lbl{font-size:11px;font-weight:600;line-height:1;color:#fff;white-space:nowrap;max-width:150px;overflow:hidden;text-overflow:ellipsis;padding:4px 9px;border-radius:999px;background:rgba(8,12,24,.62);backdrop-filter:blur(6px);transform:scale(var(--mk,1)) translate(-50%,calc(-100% - var(--tail) - var(--ih) - var(--gap) + 2px))}
.mk-lbl.tier-ten{color:var(--accent2)}
.mk-more{box-sizing:border-box;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:rgba(255,255,255,.6);backdrop-filter:blur(8px) saturate(1.4);color:#111;font:700 9.5px/1 var(--font);display:flex;align-items:center;justify-content:center;box-shadow:0 1px 5px rgba(0,0,0,.25),inset 0 0 0 .5px rgba(255,255,255,.7);transform:scale(var(--mk,1)) translate(calc(var(--ih) / 2 - 50%),calc(-1 * var(--tail) + 2px - 50%))}
/* hashtag colour (--th = hue set per marker): tinted label pill + thin ring around the badge */
.tagged .mk-lbl{background:hsla(var(--th),62%,34%,.9);color:#fff}
.tagged .mk-img{box-shadow:0 0 0 2px hsl(var(--th),70%,58%),0 4px 12px rgba(0,0,0,.35)}
body.light .tagged .mk-lbl{background:hsla(var(--th),60%,36%,.92);color:#fff}
/* crowns for the year's top 3: glyph inside the label, coloured ring around the badge */
.crown{display:inline-block;width:13px;height:11px;vertical-align:-1px;margin-right:4px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 20'%3E%3Cpath d='M2 17h20v3H2zM2 15L1 4l6 5 5-8 5 8 6-5-1 11z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 20'%3E%3Cpath d='M2 17h20v3H2zM2 15L1 4l6 5 5-8 5 8 6-5-1 11z'/%3E%3C/svg%3E") center/contain no-repeat}
.crown.c1{color:#ffd166}.crown.c2{color:#d9dfea}.crown.c3{color:#e59a6a}
.mk-lbl .crown{width:12px;height:10px;margin-right:5px}
.mk-img.c1{box-shadow:0 0 0 2.5px #ffd166,0 4px 14px rgba(0,0,0,.4)}
.mk-img.c2{box-shadow:0 0 0 2.5px #d9dfea,0 4px 14px rgba(0,0,0,.4)}
.mk-img.c3{box-shadow:0 0 0 2.5px #e59a6a,0 4px 14px rgba(0,0,0,.4)}
/* draft marker shown at the picked spot while the form is being filled */
.mk-img.draft{box-shadow:0 0 0 2.5px #ff5f7a,0 0 18px rgba(255,95,122,.7);animation:pulse-ring 1.4s ease-in-out infinite}
@keyframes pulse-ring{50%{box-shadow:0 0 0 2.5px #ff5f7a,0 0 30px rgba(255,95,122,1)}}
/* the spot the user just picked */
.mk-tail.pick{border-top-color:#ff5f7a;pointer-events:none}
.mk-pick{display:block;width:22px;height:22px;border-radius:50%;background:#ff5f7a;border:2.5px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.5),0 0 14px rgba(255,95,122,.8);pointer-events:none;transform:scale(var(--mk,1)) translate(-50%,calc(-100% - var(--tail) + 3px));animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{50%{box-shadow:0 0 0 1px rgba(0,0,0,.5),0 0 26px rgba(255,95,122,1)}}
.gl-tip{background:rgba(10,15,28,.95);border:1px solid var(--line);padding:6px 10px;border-radius:8px;color:#fff;font-size:12px}

/* forms */
.form label{display:block;margin:14px 0 0;font-size:13px;color:var(--muted)}
.form label .cnt{float:right;font-size:11px}
.form input:not([type=checkbox]),.form textarea,.form select{display:block;width:100%;margin-top:5px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg2);color:var(--fg);font:inherit}
.form input:focus,.form textarea:focus{outline:none;border-color:var(--accent)}
.form small{display:block;margin-top:4px;font-size:12px;color:var(--muted)}
.form .check{display:flex;gap:8px;align-items:flex-start;color:var(--fg);font-size:13px;margin-top:16px}.form .check input{margin-top:3px}
.form input[type=file]{padding:8px}
.form button[type=submit]{margin-top:16px}
.form.inline{display:inline-flex;gap:6px;align-items:center}
.form.inline input{margin:0;width:220px;padding:7px 10px}
.form .biz{border:1px solid var(--line);border-radius:var(--r);padding:0 12px 12px;margin:8px 0 0}.form .biz label:first-child{margin-top:8px}
.form .notice{margin:14px 0 0;padding:10px 12px;border-radius:10px;border:1px solid var(--accent2);background:rgba(255,209,102,.1);font-size:13px}
.coords{font-size:13px;color:var(--muted);margin-bottom:6px}.coords .link{margin-left:6px}

/* live preview of the mark inside the create form (same marker markup as on the globe) */
.preview{position:relative;height:118px;margin:12px 0 4px;border-radius:var(--r);border:1px solid var(--line);background:radial-gradient(ellipse at 50% 120%,#1d3a6b 0%,#0e1a33 55%,#070b14 100%);overflow:hidden}
.preview .marker{position:absolute;left:50%;top:96px}
.preview .mk-img,.preview .mk-lbl,.preview .mk-tail{pointer-events:none;cursor:default}
.preview small{position:absolute;left:10px;bottom:6px;font-size:11px;color:var(--muted)}
body.light .preview{background:radial-gradient(ellipse at 50% 120%,#bcd3e8 0%,#dfe8f0 60%,#e6dcc6 100%)}
/* hashtags */
.tags{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0 0}
.tags.suggest{margin:8px 0 0}.tags.suggest .tag-chip{padding:3px 9px;font-size:12px}.tag-chip small{display:inline;font-size:10px;opacity:.7;margin-left:3px}
.tag-chip,.tagbar .chip{border:1px solid hsla(var(--th,200),75%,62%,.55);background:hsla(var(--th,200),60%,40%,.18);color:hsl(var(--th,200),80%,70%);border-radius:999px;padding:4px 10px;font-size:13px;cursor:pointer;font:inherit;text-decoration:none}
.tag-chip:hover,.tagbar .chip:hover{border-color:hsl(var(--th,200),75%,62%)}
.tag-chip.on{background:hsl(var(--th,200),65%,45%);border-color:transparent;color:#fff}
body.light .tag-chip,body.light .tagbar .chip{color:hsl(var(--th,200),70%,32%);background:hsla(var(--th,200),60%,45%,.14)}
.panel .search{display:block;width:100%;margin:10px 0 14px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg2);color:var(--fg);font:inherit}
.panel .search:focus{outline:none;border-color:var(--accent)}
.cloud{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline;justify-content:center;line-height:1.25;padding:6px 0}
.cloud button{background:none;border:0;color:hsl(var(--th,200),80%,68%);cursor:pointer;font:inherit;font-weight:600;padding:2px 6px;border-radius:8px;letter-spacing:-.01em}
.cloud button:hover{background:hsla(var(--th,200),60%,50%,.18)}.cloud button.on{background:hsl(var(--th,200),65%,45%);color:#fff}.cloud button.on small{color:rgba(255,255,255,.8)}
body.light .cloud button{color:hsl(var(--th,200),70%,34%)}
.cloud button small{font-size:11px;color:var(--muted);font-weight:500;margin-left:3px}
.cloud .none{color:var(--muted);font-size:14px}
/* pin detail */
.pin-head{display:flex;gap:14px;align-items:center;margin-top:8px}
.pin-img{width:72px;height:72px;border-radius:14px;object-fit:cover;background:#000;border:1px solid var(--line)}
.pin-head h2{margin:0}
.rank{color:var(--accent2)}
.pin-nums{display:flex;gap:10px;margin:18px 0}
.pin-nums div{flex:1;background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);padding:10px;text-align:center}
.pin-nums b{display:block;font-size:17px}.pin-nums span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.pin-text{font-size:16px;line-height:1.55}
.links{display:flex;gap:8px;flex-wrap:wrap}
.amounts{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.amounts .chip{border:1px solid var(--line);background:var(--bg2);color:var(--fg);border-radius:999px;padding:7px 12px;cursor:pointer;font-size:13px}
.amounts .chip.on{border-color:var(--accent);color:var(--accent)}
.amounts input{width:110px!important;display:inline-block!important;margin:0!important}
.boosters{list-style:none;padding:0;margin:0}.boosters li{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}
.share{margin-top:22px;font-size:13px;color:var(--muted)}
.report{margin-top:14px;font-size:12px}.report a{color:var(--muted)}
.top50{list-style:none;padding:0;margin:14px 0}
.top50 li a{display:flex;align-items:center;gap:10px;padding:8px 6px;border-bottom:1px solid var(--line);color:var(--fg);text-decoration:none;border-radius:8px}
.top50 li a:hover{background:rgba(255,255,255,.05)}
.top50 .rank{width:38px;color:var(--muted);font-size:13px}.top50 li:nth-child(-n+10) .rank{color:var(--accent2)}
.top50 img{width:28px;height:28px;border-radius:7px;object-fit:cover;background:#000}
.top50 .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top50 .val{font-size:13px;color:var(--muted)}

/* documents */
.doc{max-width:820px;margin:0 auto;padding:60px 22px 80px;line-height:1.65}
.doc.narrow{max-width:600px}
.doc h1{font-size:34px;letter-spacing:-.02em;margin:0 0 14px}
.doc h2{font-size:20px;margin:36px 0 10px}.doc h3{font-size:16px;margin:22px 0 6px}
.doc ul,.doc ol{padding-left:22px}
.share-card{margin:26px auto;max-width:420px;background:linear-gradient(135deg,#0d1424,#152342);border:1px solid var(--line);border-radius:18px;padding:26px;text-align:center}
.sc-title{font-size:22px;font-weight:700;letter-spacing:-.01em}.sc-sub{color:var(--accent);margin-top:8px;font-size:14px}

/* admin */
body.admin{background:#0b0f1a}
.admin-top{display:flex;align-items:center;gap:26px;padding:14px 26px;border-bottom:1px solid var(--line)}
.admin-top nav a{color:var(--muted);text-decoration:none;margin-right:18px;font-size:14px}.admin-top nav b{background:var(--accent);color:#000;border-radius:999px;padding:0 7px;font-size:12px;margin-left:4px}
.admin-main{max-width:1100px;margin:0 auto;padding:26px}
.card{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:16px}
.pin-card{display:flex;gap:18px}.pc-img img{width:120px;height:120px;object-fit:cover;border-radius:10px;background:#000}
.pc-body{flex:1;min-width:0}.pc-body h3{margin:0 0 6px}.pc-body p{margin:6px 0}
.pc-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;align-items:center}
.pc-actions form{display:flex;gap:6px;align-items:center;margin:0}
.pc-actions input{padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--fg);width:240px}
.tag{font-size:11px;padding:2px 8px;border-radius:999px;background:#223;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;vertical-align:middle}
.tag.published{background:#123d2c;color:var(--ok)}.tag.pending_review{background:#3a2f0e;color:var(--accent2)}.tag.rejected,.tag.removed{background:#3d1520;color:var(--danger)}
.filters{display:flex;gap:8px;margin-bottom:18px}.filters select{padding:8px;border-radius:8px;border:1px solid var(--line);background:var(--bg2);color:var(--fg)}
blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line);color:#cdd6ea;white-space:pre-wrap}

.devbar{position:fixed;bottom:0;right:0;z-index:99;background:#b8860b;color:#000;font:600 11px/1 var(--font);padding:5px 10px;border-radius:8px 0 0 0;letter-spacing:.05em}

/* theme switcher */
.btn.icon{padding:7px 12px;font-size:16px;line-height:1}
select.lang{appearance:none;-webkit-appearance:none;font:inherit;font-size:13px;font-weight:600;letter-spacing:.04em;padding:9px 30px 9px 14px;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23aab'/%3E%3C/svg%3E") no-repeat right 12px center}
select.lang option{background:#0d1424;color:#fff}
.doc select.lang{float:right;margin:-10px 0 0 12px;border:1px solid var(--line);border-radius:999px;color:var(--fg);cursor:pointer}
[dir=rtl] .doc select.lang{float:left;margin:-10px 12px 0 0}
[dir=rtl] select.lang{padding:9px 14px 9px 30px;background-position:left 12px center}
#themes[hidden]{display:none}
#themes{position:fixed;top:64px;right:22px;z-index:9;background:rgba(10,15,28,.97);border:1px solid var(--line);border-radius:14px;padding:8px;display:grid;gap:2px;min-width:180px}
#themes button{display:flex;align-items:center;gap:10px;background:none;border:0;color:var(--fg);padding:8px 10px;border-radius:8px;cursor:pointer;text-align:left;font-size:14px}
#themes button:hover{background:rgba(255,255,255,.07)}#themes button.on{background:rgba(255,255,255,.12)}
#themes i{width:12px;height:12px;border-radius:50%;display:inline-block}
@media (max-width:720px){#themes{right:10px;top:100px}}
/* light UI for light globes (Paper Map) */
body.light{--bg:#e6dcc6;--bg2:#f7f1e3;--fg:#1d1a16;--muted:#6b655b;--line:#cfc4ae}
body.light .top{background:linear-gradient(to bottom,rgba(230,220,198,.95),rgba(230,220,198,0))}
body.light .foot{background:linear-gradient(to top,rgba(230,220,198,.9),rgba(230,220,198,0))}
body.light .brand,body.light .stats b,body.light .years a.on{color:#1d1a16}
body.light .years a.on{background:rgba(0,0,0,.08)}
body.light .panel,body.light #themes,body.light .hint,body.light .flash{background:rgba(247,241,227,.97)}
body.light .btn.primary{color:#fff}
body.light .mk-lbl{color:#1d1a16;background:rgba(247,241,227,.9);border-color:rgba(0,0,0,.12)}
body.light .gl-tip{background:rgba(247,241,227,.97);color:#1d1a16}

/* Share kit, crawlable globe directory and acquisition report. */
.share-kit{max-width:1000px}.share-preview{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:16px;margin:24px 0}.share-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}.share-kit textarea{width:100%;resize:vertical}.table-scroll{overflow-x:auto}.growth-table{width:100%;border-collapse:collapse}.growth-table th,.growth-table td{text-align:left;padding:12px;border-bottom:1px solid var(--line);white-space:nowrap}.earth-directory{position:fixed;left:22px;bottom:45px;z-index:5;font-size:12px;max-width:min(400px,90vw);background:rgba(7,11,20,.92);border:1px solid var(--line);border-radius:12px}.earth-directory summary{padding:9px 13px;cursor:pointer;color:var(--muted)}.earth-directory>div{padding:0 16px 16px;max-height:50vh;overflow:auto}.earth-directory h1{font-size:18px}.earth-directory li{margin:8px 0}.pin-detail h1{font-size:24px}.pin-detail .pin-img{max-width:110px}
.admin-main:has(.growth-table){max-width:1500px}.growth-table{font-size:13px}.growth-table th,.growth-table td{padding:10px 8px}
