*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;background:#000}
#top{position:fixed;top:0;left:0;right:0;z-index:1000;display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:8px 12px;background:#111c;color:#eee;font-size:14px}
#top b{color:#ffd54a}#top button{margin-left:auto;background:#333;color:#eee;border:1px solid #555;border-radius:4px}
#map{position:absolute;top:0;bottom:0;left:0;right:0}
#panel{position:fixed;z-index:1000;right:10px;top:56px;width:330px;max-height:calc(100% - 70px);overflow:auto;background:#fff;border-radius:8px;padding:12px;box-shadow:0 4px 20px #0008;font-size:14px}
#panel.hidden{display:none}#panel h3{margin:0 0 6px}#panel table{width:100%;border-collapse:collapse}#panel td{padding:3px 0;border-bottom:1px solid #eee}
#panel button{margin:4px 4px 0 0;padding:6px 10px;border:0;border-radius:4px;background:#1565c0;color:#fff;cursor:pointer}#panel button.sec{background:#666}
#panel input{width:90px}.fee{color:#a15c00;font-size:12px}.close{float:right;background:#999!important}
#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:1001;background:#222;color:#fff;padding:8px 14px;border-radius:6px;display:none}
.lockl{background:#000a;color:#fff;border:0;font-size:12px}
@media(max-width:600px){#panel{left:0;right:0;top:auto;bottom:0;width:auto;max-height:55%;border-radius:12px 12px 0 0}#top{font-size:12px;gap:8px}}
.leaflet-top{top:40px}@media(max-width:600px){.leaflet-top{top:64px}}
.tb{margin-left:auto;display:flex;gap:6px}#top .tb button{margin:0;background:#333;color:#eee;border:1px solid #555;border-radius:4px;padding:3px 8px;cursor:pointer}
#side{position:fixed;z-index:1000;left:10px;top:56px;width:320px;max-height:calc(100% - 70px);display:flex;flex-direction:column;background:#fff;border-radius:8px;padding:12px;box-shadow:0 4px 20px #0008;font-size:14px}
#side.hidden,#auth.hidden,.hidden{display:none!important}#side .msgs{flex:1;overflow:auto;min-height:200px;max-height:55vh;border:1px solid #eee;padding:6px;margin:6px 0}
#side .m{margin:3px 0}#side .m b{color:#1565c0}#side input{width:100%;padding:6px}#side button{padding:6px 10px;border:0;border-radius:4px;background:#1565c0;color:#fff;margin-top:4px}
.n{border-bottom:1px solid #eee;padding:4px 0}.n.unread{background:#fff8e1}
#auth{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;background:#000a}
#auth .card{background:#fff;border-radius:12px;padding:22px;width:340px;max-width:92vw;font-size:14px;box-shadow:0 10px 40px #000}
#auth h2{margin:0;color:#1565c0;letter-spacing:3px}.sub{color:#555}#auth input,#auth select{display:block;width:100%;padding:8px;margin:6px 0;border:1px solid #ccc;border-radius:6px}
#auth label{display:block;margin-top:4px}#aGo{width:100%;padding:10px;border:0;border-radius:6px;background:#1565c0;color:#fff;font-size:15px;margin-top:6px}
.tabs{display:flex;gap:6px;margin:10px 0}.tabs button{flex:1;padding:6px;border:1px solid #1565c0;background:#fff;color:#1565c0;border-radius:6px}.tabs button.on{background:#1565c0;color:#fff}
.offer{border:1px solid #ddd;border-radius:6px;padding:6px;margin:4px 0}.offer input{width:80px}
@media(max-width:600px){#side{left:0;right:0;top:auto;bottom:0;width:auto;max-height:60%;border-radius:12px 12px 0 0}}

#who{cursor:pointer}#side{overflow:auto}a.pl{color:#1565c0;font-weight:600;text-decoration:none}a.pl:hover{text-decoration:underline}#top a.pl{color:#ffd54a}
.av{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;color:#fff;font-weight:700;flex:none;object-fit:cover}.av.big{width:56px;height:56px;font-size:24px}
.rl .rr{display:flex;align-items:center;gap:8px;padding:6px 2px;border-bottom:1px solid #eee}.rr.me{background:#e3f2fd}.rr .rk{width:34px;font-weight:700;color:#555}.rr .nm{flex:1;min-width:0}.rr b{color:#2e7d32}
.up{color:#2e7d32;font-size:11px}.dn{color:#c62828;font-size:11px}
.prof{display:flex;gap:12px;align-items:center}.prof h3{margin:0}.bio{white-space:pre-wrap;background:#f6f6f6;border-radius:6px;padding:6px}
.pt{width:100%;border-collapse:collapse;margin:6px 0}.pt td{padding:3px 0;border-bottom:1px solid #eee}.pt td:first-child{color:#666}
.plist{display:flex;flex-direction:column;gap:4px}#side .pi{text-align:left;background:#f1f8e9;color:#222;border:1px solid #c5e1a5}
.edit textarea{width:100%;padding:6px;font:inherit}.edit label{display:block;margin:4px 0}#side h4{margin:10px 0 4px}#side button.sec{background:#666}
.nw{display:flex;gap:8px;padding:6px 0;border-bottom:1px solid #eee}.ni{font-size:20px}a.np{color:#6a1b9a}
.badge{background:#e53935;color:#fff;border-radius:8px;padding:0 5px;font-size:11px}.badge:empty{display:none}
@media(max-width:600px){#top .lbl{display:none}#side{max-height:70%}}

.av.sm{width:20px;height:20px;font-size:11px;margin-right:4px;vertical-align:middle}.ni{display:flex;gap:4px;align-items:flex-start}
.st{color:#f9a825;letter-spacing:1px}.tag{font-size:11px;border-radius:8px;padding:1px 6px;margin-left:4px}.tag.good{background:#e8f5e9;color:#2e7d32}.tag.bad{background:#ffebee;color:#c62828}
.rep summary,.edit summary{cursor:pointer;color:#1565c0;margin:6px 0}.rt{border-bottom:1px solid #eee;padding:4px 0}
.avup{margin:8px 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}label.btn{background:#1565c0;color:#fff;border-radius:4px;padding:6px 10px;cursor:pointer}
.rd{border:1px solid #ffe082;background:#fffde7;border-radius:6px;padding:6px;margin:4px 0}#side .star{background:none;color:#f9a825;font-size:22px;padding:0 2px;margin:0}
#side .rd .rc{width:100%;margin:4px 0}

.rtabs{display:flex;gap:4px;margin:6px 0;flex-wrap:wrap}#side .rf{background:#eee;color:#333}#side .rf.on{background:#1565c0;color:#fff}
.rep-card{border:1px solid #ddd;border-left:4px solid #f9a825;border-radius:6px;padding:8px;margin:6px 0}.rep-card.st-actioned{border-left-color:#c62828}.rep-card.st-dismissed{border-left-color:#9e9e9e}
.rh{display:flex;gap:6px;align-items:center}.rh .tag{margin-left:auto}.why{margin:6px 0;white-space:pre-wrap}.rep-card blockquote{margin:4px 0;padding:4px 8px;background:#f6f6f6;border-left:3px solid #ccc}
.rep-card textarea{width:100%;font:inherit;padding:4px}.mute{display:block;font-size:12px;margin:2px 0}#side .mute input{width:auto}.note{background:#fff8e1;padding:4px;border-radius:4px}
a.flag{color:#999;text-decoration:none;font-size:12px}a.flag:hover{color:#c62828}

/* 018 deals */
.deal{border-bottom:1px solid #333;padding:7px 0}.deal button{margin:4px 4px 0 0}.tabs{margin-bottom:6px}.tabs button{margin-right:4px}.tabs button.on{font-weight:bold;outline:2px solid #4a8}.dealbox{margin-top:6px}

/* r3 start-point picker */
#picker{position:fixed;z-index:1500;left:10px;top:56px;width:340px;max-width:calc(100% - 20px);background:#fff;border-radius:10px;padding:14px;box-shadow:0 6px 30px #000a;font-size:14px}
#picker h3{margin:0 0 4px}#picker input{width:100%;padding:8px;border:1px solid #ccc;border-radius:6px}#pkR{display:flex;flex-direction:column;gap:3px;margin:4px 0;max-height:220px;overflow:auto}
#picker .pk{text-align:left;background:#f1f8e9;border:1px solid #c5e1a5;border-radius:5px;padding:6px;cursor:pointer}#picker .pk small{color:#666}
#pkGo{width:100%;padding:10px;border:0;border-radius:6px;background:#2e7d32;color:#fff;font-size:15px;margin-top:8px}#pkGo:disabled{background:#999}
@media(max-width:600px){#picker{left:0;right:0;top:auto;bottom:0;width:auto;max-width:none;border-radius:12px 12px 0 0}}

/* r3 games */
#games{position:fixed;inset:0;z-index:1800;background:#0b1220f2;color:#eee;overflow:auto;font-size:15px}
.gwrap{max-width:560px;margin:0 auto;padding:12px 12px 40px}.ghead{display:flex;align-items:center;gap:10px}.ghead h2{margin:6px 0;flex:1;font-size:20px}
.gx{background:#333;color:#fff;border:0;border-radius:50%;width:36px;height:36px;font-size:18px;cursor:pointer}.gsc{font-weight:700;color:#ffd54a}
.gsub{color:#9fb0c8;font-size:13px}.glist{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.gcard{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;background:#16233a;color:#eee;border:1px solid #2b3d5c;border-radius:12px;padding:12px;cursor:pointer}
.gcard:hover{border-color:#ffd54a}.gcard .gi{font-size:30px}.gcard small{color:#9fb0c8}.gcard em{color:#8bc34a;font-style:normal;font-size:13px}
.gbar{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.gbar button,.gdone button{flex:1;padding:10px;border:0;border-radius:8px;background:#1e88e5;color:#fff;font-size:15px;cursor:pointer}
.gbar button.sec,.gdone button.sec{background:#455a64}.gbar button:disabled{opacity:.5}.gbar.big button{font-size:18px;padding:14px}.gbar .sell{background:#e53935}
.gdone{background:#16233a;border:2px solid #ffd54a;border-radius:12px;padding:14px;margin:12px 0;text-align:center}.gdone h3{margin:0;font-size:24px;color:#ffd54a}
.nm{display:grid;gap:4px}.nm button{aspect-ratio:1;border:0;border-radius:6px;background:#22314d;color:#fff;font-size:20px;font-weight:700;cursor:pointer}
.nm button.x{background:#111a2b;color:transparent}.nm button.s{background:#ffd54a;color:#000}.nm button.h{outline:3px solid #8bc34a}
.ws{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin:16px 0}.tube{display:flex;flex-direction:column;width:46px;padding:4px;gap:2px;background:#ffffff14;border:2px solid #9fb0c8;border-radius:0 0 22px 22px;cursor:pointer;transition:transform .15s}
.tube i{height:34px;border-radius:3px;display:block}.tube i:last-child{border-radius:0 0 18px 18px}.tube.s{transform:translateY(-14px);border-color:#ffd54a}
.cw{display:grid;gap:3px;max-width:330px;margin:10px auto}.cw button{position:relative;aspect-ratio:1;border:0;border-radius:4px;background:#fff;color:#000;font-size:26px;font-weight:700;cursor:pointer}
.cw button.h{background:#cfe8ff}.cw button.s{background:#ffd54a}.cw sup{position:absolute;left:3px;top:1px;font-size:10px;color:#555}
.clue{background:#16233a;border-radius:8px;padding:8px;margin:6px 0}.kb{display:grid;grid-template-columns:repeat(10,1fr);gap:4px}
.kb button{padding:10px 0;border:0;border-radius:5px;background:#2b3d5c;color:#fff;font-weight:700;cursor:pointer}.kb .wide{grid-column:span 3}
.snc{display:block;margin:8px auto;border-radius:8px;touch-action:none;max-width:100%}.pad{display:grid;grid-template-columns:repeat(3,60px);grid-template-rows:repeat(2,48px);gap:6px;justify-content:center}
.pad button{border:0;border-radius:8px;background:#2b3d5c;color:#fff;font-size:20px}.pad [data-d="0,-1"]{grid-column:2}.pad [data-d="-1,0"]{grid-column:1;grid-row:2}.pad [data-d="1,0"]{grid-column:3;grid-row:2}.pad [data-d="0,1"]{grid-column:2;grid-row:2}
.ck{display:grid;grid-template-columns:repeat(8,1fr);max-width:420px;margin:8px auto;border:3px solid #5d4037}.ck button{aspect-ratio:1;border:0;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer}
.ck .l{background:#f0d9b5}.ck .d{background:#8b5a2b}.ck .s{background:#c79a00}.ck .t{background:#4caf50}.ck .m{box-shadow:inset 0 0 0 3px #ffd54a}
.ck i{width:78%;height:78%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-style:normal;color:#ffd54a;font-size:18px;box-shadow:0 3px 0 #0006}.ck .pr{background:#d32f2f}.ck .pb{background:#212121}
.mtc{display:block;width:100%;border-radius:8px;margin:8px 0}.mtinfo{font-size:14px}.mtinfo .up{color:#8bc34a}.mtinfo .dn{color:#ef5350}
@media(max-width:420px){.glist{grid-template-columns:1fr}}
#farm{position:fixed;inset:0;z-index:1800;background:linear-gradient(#8fd3ff,#c9f0a8 40%);color:#1d2b12;overflow:auto;font-size:15px}
.fwrap{max-width:560px;margin:0 auto;padding:12px 12px 40px}.fwrap h3{margin:14px 0 6px;font-size:16px}.fsub{color:#3c5226;font-size:13px;margin:6px 0}
.fcash{display:flex;gap:8px}.fcash div{flex:1;background:#fff;border-radius:14px;padding:10px;box-shadow:0 2px 0 #6aa84f}.fcash small{display:block;color:#5b6d48;font-size:12px}.fcash b{font-size:22px;color:#2e7d32}
.fscene{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0;background:#7cc95a;border-radius:16px;padding:8px}
.ft{background:#a5714a;border-radius:10px;padding:6px 2px;text-align:center;color:#fff}.ft span{font-size:28px;display:block}.ft small{font-size:11px}.ft.off{opacity:.35;filter:grayscale(1)}
.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.fz{display:flex;flex-direction:column;align-items:center;background:#fff;border:0;border-radius:12px;padding:8px 4px;box-shadow:0 2px 0 #f9a825;cursor:pointer;color:#1d2b12}
.fz span{font-size:26px}.fz b{font-size:12px;text-align:center}.fz em{font-style:normal;color:#2e7d32;font-weight:700}.fz:disabled{opacity:.5;cursor:default}
.fbar{display:flex;align-items:center;gap:8px}.fbar button,.fco button{background:#ffb300;border:0;border-radius:10px;padding:10px 14px;font-weight:700;font-size:15px;cursor:pointer}.fbar button:disabled,.fco button:disabled{background:#ccc}
.fco{background:#fff;border-radius:14px;padding:8px 10px}.fco p{margin:4px 0 8px;font-size:14px}
#fplay{position:fixed;inset:0;z-index:1900;background:#7cc95a;touch-action:none;user-select:none}
#fpCv{position:absolute;inset:0;width:100%;height:100%;display:block}
.fphud{position:absolute;top:8px;left:8px;right:8px;display:flex;align-items:center;gap:8px;pointer-events:none}
.fphud>*{pointer-events:auto}.fphud button{width:42px;height:42px;border-radius:50%;border:0;background:#fff;font-size:20px;box-shadow:0 2px 0 #0003}
.fphud div{flex:1;background:#fff;border-radius:14px;padding:4px 12px;box-shadow:0 2px 0 #6aa84f}.fphud b{font-size:20px;color:#2e7d32;display:block}.fphud small{color:#5b6d48;font-size:12px}
.fpups{position:absolute;top:60px;right:8px;display:flex;flex-direction:column;gap:6px}.fpups button{background:#fff;border:0;border-radius:12px;padding:8px 12px;font-size:13px;box-shadow:0 2px 0 #f9a825}.fpups button:disabled{opacity:.5}
.fphelp{position:absolute;bottom:4px;left:8px;right:8px;margin:0;font-size:11px;color:#1d2b12aa;text-align:center;pointer-events:none}
.fplaybtn{width:100%;margin:8px 0;padding:14px;border:0;border-radius:14px;background:#43a047;color:#fff;font-size:18px;font-weight:800;box-shadow:0 3px 0 #2e7d32;cursor:pointer}
.fphud{max-width:560px;margin:0 auto}
/* guide (031) */
#gModal{position:fixed;inset:0;background:#0009;z-index:3000;display:flex;align-items:center;justify-content:center;padding:16px}
#gModal .gcard{background:#1d2633;color:#eef;border-radius:14px;max-width:360px;width:100%;padding:20px;box-shadow:0 8px 40px #000a;border:2px solid #ffd54a}
#gModal h3{margin:0 0 8px;font-size:20px}#gModal p{line-height:1.45}#gModal .grew{background:#ffd54a22;padding:6px 10px;border-radius:8px}
#gModal button{width:100%;margin-top:8px;padding:12px;font-size:16px;border-radius:10px}
#gRing{position:fixed;z-index:2500;border:3px solid #ffd54a;border-radius:12px;pointer-events:none;box-shadow:0 0 0 4000px #0005;animation:gpulse 1.2s infinite}
@keyframes gpulse{50%{border-color:#fff;transform:scale(1.04)}}
#gHint{position:fixed;left:50%;transform:translateX(-50%);bottom:70px;z-index:2600;background:#ffd54a;color:#222;padding:8px 12px;border-radius:10px;max-width:90vw;font-size:14px;box-shadow:0 4px 16px #0008}
#gHint .gx{background:none;border:0;color:#222;margin-left:6px;cursor:pointer}
#gChip{position:fixed;left:10px;bottom:28px;z-index:1200;background:#1d2633ee;color:#fff;border:1px solid #ffd54a;border-radius:20px;padding:7px 12px;font-size:13px;max-width:70vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
#gChip.ready{background:#3a3010ee;animation:gpulse 1.6s infinite}
#gTip{position:fixed;right:10px;bottom:28px;z-index:2700;background:#263445;color:#fff;border-left:4px solid #7fd3ff;border-radius:10px;padding:10px 12px;max-width:min(340px,90vw);box-shadow:0 4px 16px #0008;font-size:14px}
#gTip button{margin-left:8px}
.goal{padding:6px 0;border-bottom:1px solid #fff1}.goal.ok{opacity:.75}.goal button{float:right}.gstep{background:#ffd54a18;padding:8px;border-radius:8px;margin:6px 0}
