:root{
  --bg:#050a06; --panel:rgba(14,22,14,.72); --panel2:rgba(20,30,18,.9); --line:rgba(124,255,79,.24); --line2:rgba(124,255,79,.42);
  --yee:#7cff4f; --yee2:#5be02a; --cream:#f4efe0; --yellow:#ffe14d; --mut:#8a9a83; --ink:#0d1408;
  --disp:'Bungee',cursive; --round:'Baloo 2',sans-serif;
}
*{ box-sizing:border-box; margin:0; padding:0; -webkit-tap-highlight-color:transparent; }
html,body{ height:100%; overflow:hidden; }
body{ font-family:'Space Grotesk',system-ui,sans-serif; color:var(--cream); background:var(--bg); user-select:none; }
#globe{ position:fixed; inset:0; } #globe canvas{ display:block; }
.hidden{ display:none !important; }
button{ font-family:inherit; cursor:pointer; border:none; color:inherit; }
input{ font-family:inherit; }

.btn{ font-family:var(--round); font-weight:800; font-size:14px; letter-spacing:.5px; padding:11px 18px; border-radius:14px; background:var(--yee); color:var(--ink); border:2px solid #0d1408; box-shadow:0 4px 0 #2c5a1a; transition:transform .1s, filter .12s; }
.btn:hover{ filter:brightness(1.06); } .btn:active{ transform:translateY(3px); box-shadow:0 1px 0 #2c5a1a; }
.btn.ghost{ background:transparent; color:var(--yee); border-color:var(--line2); box-shadow:none; } .btn.ghost:hover{ background:rgba(124,255,79,.1); }
.btn.big{ font-size:16px; padding:14px 24px; } .btn.wide{ width:100%; }
.x{ position:absolute; top:10px; right:12px; width:32px; height:32px; border-radius:9px; background:var(--panel2); color:var(--cream); font-weight:800; border:1px solid var(--line); z-index:2; }

/* loader + intro */
#loader{ position:fixed; inset:0; z-index:60; display:grid; place-items:center; grid-auto-flow:row; gap:12px; background:radial-gradient(120% 90% at 50% 30%,#0c2410,var(--bg)); }
#loadYee,#introYee{ animation:bob 1.4s ease-in-out infinite; filter:drop-shadow(0 10px 24px rgba(124,255,79,.4)); }
@keyframes bob{ 0%,100%{ transform:translateY(0) rotate(-3deg) } 50%{ transform:translateY(-10px) rotate(3deg) } }
.l-title{ font-family:var(--disp); font-size:32px; color:var(--yee); letter-spacing:2px; } .l-sub{ color:var(--mut); font-weight:600; }
#intro{ position:fixed; inset:0; z-index:55; display:grid; place-items:center; grid-auto-flow:row; gap:6px; text-align:center; padding:20px; background:radial-gradient(130% 90% at 50% 14%,#0f2a12 0,transparent 55%),rgba(5,10,6,.5); animation:fade .5s; }
@keyframes fade{ from{ opacity:0 } to{ opacity:1 } }
.i-title{ font-family:var(--disp); font-size:clamp(44px,13vw,110px); line-height:.9; color:var(--cream); letter-spacing:3px; text-shadow:0 5px 0 #204a12,0 0 40px rgba(124,255,79,.3); }
.i-tag{ font-family:var(--disp); font-size:clamp(13px,3.4vw,24px); color:var(--yee); letter-spacing:clamp(2px,1.2vw,8px); }
.i-sub{ color:var(--mut); font-weight:600; margin:10px 0 20px; }
.i-btns{ display:flex; gap:12px; flex-wrap:wrap; justify-content:center; }
.i-foot{ margin-top:20px; display:flex; gap:14px; align-items:center; justify-content:center; flex-wrap:wrap; font-weight:700; font-size:13px; }
.i-foot a{ color:var(--yee); } .i-foot a:hover{ text-decoration:underline; } .i-foot .ca{ color:var(--mut); font-family:monospace; font-size:11px; cursor:pointer; }

/* HUD */
#hud{ position:fixed; inset:0; z-index:20; pointer-events:none; } #hud>*{ pointer-events:auto; }
.topnav{ position:absolute; top:12px; left:12px; right:12px; display:flex; align-items:center; gap:14px; background:var(--panel); backdrop-filter:blur(10px); border:1px solid var(--line); border-radius:16px; padding:8px 12px; }
.logo{ font-family:var(--disp); font-size:18px; color:var(--cream); cursor:pointer; } .logo span{ color:var(--yee); }
.nav-mid{ display:flex; gap:4px; margin:0 auto; }
.nav-item{ font-family:var(--round); font-weight:700; font-size:13px; letter-spacing:1px; color:var(--mut); background:transparent; padding:8px 14px; border-radius:10px; }
.nav-item:hover{ color:var(--cream); background:rgba(124,255,79,.08); } .nav-item.active{ color:var(--ink); background:var(--yee); }
.join{ font-size:13px; padding:10px 16px; }
@media(max-width:820px){ .topnav .nav-mid,.topnav .join{ display:none; } .topnav{ right:auto; } }

#counters{ position:absolute; top:66px; left:12px; display:flex; flex-direction:column; gap:8px; align-items:flex-start; }
.counter{ background:var(--panel); border:1px solid var(--line); backdrop-filter:blur(8px); padding:7px 12px; border-radius:12px; font-weight:600; font-size:13px; color:var(--mut); white-space:nowrap; }
.counter b{ color:var(--cream); font-family:var(--round); font-size:16px; margin-right:3px; } .counter span{ margin-right:6px; }
.counter.online b{ color:var(--yee); } .dot{ display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--yee); box-shadow:0 0 8px var(--yee); animation:pulse 1.8s infinite; margin-right:6px; }
@keyframes pulse{ 0%{ box-shadow:0 0 0 0 rgba(124,255,79,.5) } 70%{ box-shadow:0 0 0 8px rgba(124,255,79,0) } }
@media(max-width:820px){ #counters{ top:66px; flex-direction:row; flex-wrap:wrap; max-width:60vw; } }

#clabel{ position:fixed; z-index:9; transform:translate(-50%,-120%); background:var(--panel2); border:1px solid var(--line); backdrop-filter:blur(8px); padding:7px 14px; border-radius:12px; text-align:center; pointer-events:none; }
#clabel b{ display:block; font-family:var(--round); font-weight:800; font-size:15px; } #clabel span{ color:var(--yellow); font-size:12px; font-weight:700; }

.tools{ position:absolute; right:12px; bottom:46px; display:flex; flex-direction:column; gap:8px; }
.tbtn{ width:44px; height:44px; border-radius:12px; font-size:20px; background:var(--panel); backdrop-filter:blur(8px); border:1px solid var(--line); color:var(--cream); } .tbtn:active{ transform:scale(.92); } .tbtn.on{ color:var(--yee); border-color:var(--yee); }
@media(max-width:820px){ .tools{ bottom:112px; } }

/* floating YEE mascot */
#yeeMascot{ position:absolute; z-index:21; left:14px; bottom:90px; width:92px; height:92px; border-radius:20px; overflow:visible; cursor:pointer; animation:bob 3.2s ease-in-out infinite; }
#yeeMascot img{ width:100%; height:100%; object-fit:cover; border-radius:20px; border:2px solid var(--line2); box-shadow:0 0 26px -6px var(--yee); background:#1a2416; }
#yeeMascot .ym-bubble{ position:absolute; top:-16px; right:-10px; background:var(--yee); color:var(--ink); font-family:var(--disp); font-size:12px; padding:3px 9px; border-radius:10px; opacity:0; transform:scale(.5); transition:.15s; pointer-events:none; }
#yeeMascot.yell .ym-bubble{ opacity:1; transform:scale(1); }
#yeeMascot:active{ transform:scale(.94); }
#yeeMascot.pop img{ animation:ymPop .32s ease; }
@keyframes ymPop{ 0%{ transform:scale(1) } 40%{ transform:scale(1.18) rotate(-6deg) } 70%{ transform:scale(.96) rotate(4deg) } 100%{ transform:scale(1) } }
.yee-particle{ position:fixed; z-index:44; font-family:var(--disp); font-weight:800; pointer-events:none; transform:translate(-50%,-50%); animation:yeefloat .95s ease-out forwards; text-shadow:0 0 8px rgba(124,255,79,.5); }
@keyframes yeefloat{ from{ opacity:1; transform:translate(-50%,-50%) scale(1) rotate(0) } to{ opacity:0; transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.4) rotate(var(--rot)) } }
@media(max-width:820px){ #yeeMascot{ width:58px; height:58px; left:10px; bottom:150px; } }

/* $YEE ticker */
#ticker{ position:absolute; left:0; right:0; bottom:0; height:30px; overflow:hidden; white-space:nowrap; background:rgba(13,20,8,.9); border-top:1px solid var(--line); z-index:22; }
#ticker .tk{ display:inline-block; padding:7px 0; animation:tick 26s linear infinite; }
#ticker .tk span{ font-family:var(--disp); font-size:13px; color:var(--yee); text-shadow:0 0 10px rgba(124,255,79,.5); padding:0 20px; }
@keyframes tick{ from{ transform:translateX(0) } to{ transform:translateX(-50%) } }
.botnav{ bottom:38px !important; }

.botnav{ position:absolute; left:8px; right:8px; bottom:8px; display:none; align-items:center; justify-content:space-around; background:var(--panel2); backdrop-filter:blur(12px); border:1px solid var(--line); border-radius:18px; padding:6px; }
.bn{ background:transparent; color:var(--mut); font-size:19px; display:flex; flex-direction:column; align-items:center; gap:2px; padding:6px 10px; border-radius:12px; } .bn span{ font-size:10px; font-weight:700; } .bn.active{ color:var(--yee); } .bn.join{ color:var(--ink); background:var(--yee); font-weight:800; }
@media(max-width:820px){ .botnav{ display:flex; } }
.hudfoot{ position:absolute; left:120px; bottom:40px; margin:0; justify-content:flex-start; }
@media(max-width:820px){ .hudfoot{ display:none; } }

/* passport card */
#pcard{ position:fixed; z-index:24; left:50%; bottom:44px; transform:translateX(-50%); width:min(90vw,360px); background:linear-gradient(160deg,#17331a,#0f1a10); border:2px solid var(--line2); border-radius:22px; padding:20px; box-shadow:0 26px 60px -20px #000,0 0 46px -20px rgba(124,255,79,.5); overflow:hidden; animation:cardIn .3s cubic-bezier(.2,.9,.25,1.3); }
@keyframes cardIn{ from{ opacity:0; transform:translateX(-50%) translateY(14px) scale(.96) } to{ opacity:1; transform:translateX(-50%) } }
#pcard::before{ content:''; position:absolute; inset:0; background:repeating-linear-gradient(45deg,rgba(124,255,79,.03) 0 12px,transparent 12px 24px); pointer-events:none; }
.pp-top{ display:flex; justify-content:space-between; align-items:center; border-bottom:1px dashed var(--line2); padding-bottom:10px; }
.pp-brand{ font-family:var(--disp); font-size:15px; color:var(--yee); } .pp-id{ font-family:monospace; font-size:12px; color:var(--yellow); letter-spacing:1px; }
.pp-body{ display:flex; gap:14px; margin-top:14px; }
.pp-avatar{ width:78px; height:78px; border-radius:14px; overflow:hidden; flex:none; background:var(--panel2); border:2px solid var(--line2); display:grid; place-items:center; }
.pp-avatar img{ width:100%; height:100%; object-fit:cover; } .pp-avatar canvas{ width:100%; height:100%; }
.pp-user{ font-family:var(--disp); font-size:22px; color:var(--cream); line-height:1; } .pp-display{ color:var(--yee); font-weight:700; font-size:14px; margin:2px 0 8px; }
.pp-row{ display:flex; justify-content:space-between; font-size:12px; padding:3px 0; border-bottom:1px dashed rgba(124,255,79,.14); } .pp-row span{ color:var(--mut); font-weight:700; } .pp-row b{ color:var(--cream); }
.pp-bio{ margin-top:14px; font-style:italic; color:var(--cream); font-size:15px; } .pp-phrase{ margin-top:6px; color:var(--yellow); font-weight:700; }
.pp-actions{ display:flex; gap:8px; margin-top:16px; } .pp-actions .btn{ flex:1; font-size:12px; padding:10px; }

/* list */
#listPanel{ position:fixed; z-index:24; right:12px; top:150px; width:min(88vw,300px); max-height:60vh; display:flex; flex-direction:column; background:var(--panel2); border:1px solid var(--line2); border-radius:18px; overflow:hidden; animation:cardIn .3s ease; backdrop-filter:blur(12px); }
@media(max-width:820px){ #listPanel{ left:50%; right:auto; transform:translateX(-50%); top:auto; bottom:78px; } }
.lp-head{ display:flex; justify-content:space-between; align-items:center; padding:12px 14px; border-bottom:1px solid var(--line); } .lp-head b{ font-family:var(--round); font-weight:800; } .lp-head button{ background:transparent; color:var(--mut); font-weight:800; }
.lp-tools{ padding:8px 10px; } .lp-tools input{ width:100%; background:#0c140b; border:1px solid var(--line); border-radius:10px; color:var(--cream); padding:8px 10px; font-size:13px; outline:none; }
.lp-body{ overflow-y:auto; padding:6px; }
.lp-item{ display:flex; align-items:center; gap:10px; padding:8px; border-radius:11px; cursor:pointer; } .lp-item:hover{ background:rgba(124,255,79,.12); }
.lp-av{ width:36px; height:36px; border-radius:10px; overflow:hidden; flex:none; background:var(--panel); display:grid; place-items:center; } .lp-av img{ width:100%; height:100%; object-fit:cover; }
.lp-name{ font-family:var(--round); font-weight:800; font-size:14px; } .lp-loc{ font-size:11px; color:var(--yee); font-weight:700; }
.lp-zoom{ margin:8px; font-family:var(--round); font-weight:800; font-size:13px; padding:10px; border-radius:12px; color:var(--ink); background:var(--yee); }

/* screens / join / archive */
.screen{ position:fixed; inset:0; z-index:30; display:grid; place-items:center; padding:16px; background:rgba(5,9,6,.72); backdrop-filter:blur(7px); animation:fade .25s; overflow-y:auto; }
.sheet{ position:relative; width:min(440px,100%); background:var(--panel2); border:1px solid var(--line2); border-radius:22px; padding:24px; animation:cardIn .3s ease; }
.sheet-title{ font-family:var(--disp); font-size:24px; } .sheet-title span{ color:var(--yee); } .sheet-sub{ color:var(--mut); font-weight:600; margin:6px 0 14px; font-size:14px; }
.lbl{ display:block; font-family:var(--round); font-weight:700; font-size:12px; text-transform:uppercase; color:var(--mut); margin:12px 0 6px; }
.fld{ width:100%; background:#0c140b; border:2px solid var(--line); border-radius:12px; color:var(--cream); font-size:16px; font-weight:600; padding:11px 14px; outline:none; } .fld:focus{ border-color:var(--yee); }
.jrow{ display:flex; gap:14px; align-items:flex-start; } .jgrow{ flex:1; } .jpfp{ display:flex; flex-direction:column; align-items:center; gap:6px; }
#jPreview{ width:80px; height:80px; border-radius:14px; background:#0c140b; border:2px solid var(--line); } .upl{ font-family:var(--round); font-weight:700; font-size:16px; color:var(--yee); background:var(--panel); padding:5px 12px; border-radius:10px; cursor:pointer; }
.ac{ position:relative; } .ac-list{ position:absolute; left:0; right:0; top:calc(100% + 6px); z-index:5; background:var(--panel2); border:1px solid var(--line2); border-radius:12px; overflow:hidden; max-height:200px; overflow-y:auto; }
.ac-item{ padding:10px 13px; font-weight:600; cursor:pointer; border-bottom:1px solid rgba(255,255,255,.05); } .ac-item:hover{ background:rgba(124,255,79,.12); } .ac-item small{ display:block; color:var(--mut); font-size:12px; }
.m-note{ text-align:center; color:var(--mut); font-weight:600; font-size:13px; margin-top:10px; min-height:16px; } .m-note.err{ color:#ff7a7a; }
.arch-wrap{ position:relative; width:min(720px,100%); max-height:90vh; overflow-y:auto; background:var(--panel2); border:1px solid var(--line2); border-radius:22px; padding:26px; animation:cardIn .3s ease; }
.arch-tag{ font-family:var(--round); font-weight:800; font-size:11px; letter-spacing:2px; color:var(--yee); } .arch-head h2{ font-family:var(--disp); font-size:clamp(24px,5vw,36px); margin:4px 0; } .arch-head p{ color:var(--mut); font-weight:600; }
.arch-line{ margin-top:18px; display:flex; flex-direction:column; gap:12px; }
.exhibit{ border:1px solid var(--line); border-radius:16px; background:#0c140b; overflow:hidden; cursor:pointer; } .exhibit:hover{ border-color:var(--line2); }
.ex-head{ display:flex; align-items:center; gap:14px; padding:16px 18px; } .ex-year{ font-family:var(--disp); font-size:24px; color:var(--yee); min-width:100px; } .ex-title{ font-family:var(--round); font-weight:800; font-size:18px; } .ex-plus{ margin-left:auto; color:var(--mut); font-size:20px; transition:transform .2s; } .exhibit.open .ex-plus{ transform:rotate(45deg); color:var(--yee); }
.ex-body{ max-height:0; overflow:hidden; transition:max-height .3s; } .exhibit.open .ex-body{ max-height:200px; } .ex-body p{ padding:0 18px 18px; font-size:15px; line-height:1.55; }

#toast{ position:fixed; left:50%; bottom:88px; transform:translateX(-50%) translateY(16px); z-index:45; background:var(--panel2); border:1px solid var(--line2); font-family:var(--round); font-weight:800; padding:12px 18px; border-radius:13px; opacity:0; transition:.25s; box-shadow:0 16px 40px -14px #000; max-width:90vw; text-align:center; pointer-events:none; } #toast.show{ opacity:1; transform:translateX(-50%) translateY(0); } #toast .y{ color:var(--yee); }
@media(prefers-reduced-motion:reduce){ *{ animation-duration:.001ms !important; } }
