/* RIPWORLD theme — v0.15.1 dark pixel panels over the pixel town (was "village": white rounded panels, orange / cyan / navy accents,
   top pill nav, quest rail right, collection strip bottom-left. Loaded after style.css; overrides tokens
   and components, keeps every selector/ID the app already uses. The pixel town stays behind. */
:root{
  /* ONE token file, two surfaces (v0.15.1):
     PANELS + TOP BAR = light frosted (owner ref design-refs/panel-ui-reference-jobboard-2026-10-01.webp)
     IN-PLAY HUD      = dark navy bevelled pixel panels (owner ref design-refs/duel-ui-reference-2026-10-01.webp) */
  /* light panels */
  --panel:#FFFFFF; --panel-frost:rgba(246,248,252,.94); --panel2:#F3F6FA; --panel3:#EAEFF6; --line:#E3E8F0; --line2:#D2D9E5; --drop:rgba(15,20,30,.10);
  --text:#141a2e; --muted:#667085;
  --gold:#FF6A1F; --gold-d:#E4570E; --gold-l:#FF9A5C;
  --accent:linear-gradient(180deg,#ff9a4a 0%,#ff6a1f 55%,#ee560e 100%); --accent-solid:#FF6A1F; --accent-edge:#ffb27a;
  --mint:#12B76A; --mint-d:#0E9455; --coral:#F04438; --coral-d:#C7352B; --cyan:#22C3F5; --navy:#141a2e; --navy2:#1b2340;
  --good-bg:#E6F7EE; --bad-bg:#FDECEA; --warm-bg:#FFF1EA; --blue-bg:#E8F2FF; --violet:#6A3FD1; --violet-bg:#F3ECFF;
  --cream:#FFFFFF; --brown:#141a2e; --slab-a:#F4F6FA; --slab-b:#E9EDF4;
  --h:'Rubik',system-ui,sans-serif; --b:'Rubik',system-ui,sans-serif; --cond:'Barlow Condensed','Rubik',system-ui,sans-serif;
  --r:14px; --r-panel:20px; --sh:0 8px 24px rgba(15,20,30,.14), 0 1px 0 rgba(15,20,30,.06);
  --sh-panel:0 30px 70px rgba(8,12,28,.35),0 2px 6px rgba(8,12,28,.12);
  /* dark in-play HUD */
  --hud:#141a2e; --hud-2:#1b2340; --hud-3:#252f56; --hud-glass:rgba(16,21,40,.92);
  --line-gold:#d4a544; --line-blue:#4a93ff; --line-red:#ef4a3c; --line-hud:#2d3866; --line-dark:#070a14;
  --ink:#f4f6ff; --ink-dim:#aeb8d8; --ink-faint:#8892b6; --good:#45e08f; --bad:#ff7a6e;
  --bevel:inset 0 2px 0 rgba(255,255,255,.07),inset 0 -3px 0 rgba(0,0,0,.32);
  --pix:var(--bevel),0 0 0 2px var(--line-dark),0 5px 0 1px rgba(0,0,0,.4);
  --outline:0 2px 0 #070a14,1px 0 0 #070a14,-1px 0 0 #070a14,0 -1px 0 #070a14;
}
body{font-family:var(--b);font-size:16px;color:var(--text);background:#0E1015}
.addr,.demo,.link-form input,.lb .who{font-family:var(--b)}
.app:not([data-screen="town"]) .world{filter:brightness(.55) saturate(.9) blur(2px)}

/* ---------- top bar: white pill bar, brand · nav pills · usdc + bell + gear ---------- */
.topbar{margin:calc(10px + env(safe-area-inset-top)) 14px 10px;padding:8px 10px 8px 14px;background:var(--panel);border-radius:18px;box-shadow:var(--sh);gap:14px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text)}
.brand img{height:40px;filter:none}
.brand .bn{font-weight:800;font-size:22px;letter-spacing:.02em;text-transform:uppercase;line-height:1}
.brand .bn small{display:block;font-size:11px;letter-spacing:.14em;color:var(--muted);font-weight:700}
.topnav{display:flex;gap:4px;background:var(--panel2);border-radius:999px;padding:4px}
.topnav a{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;text-decoration:none;color:var(--text);font-weight:700;font-size:15px}
.topnav a img{height:20px;width:20px;object-fit:contain}
.topnav a.on{background:var(--gold);color:#fff}
.topnav a.on img{filter:brightness(0) invert(1)}
.status{align-items:center}
.chip{background:var(--panel2);border:0;box-shadow:none;border-radius:999px;padding:8px 14px;font-weight:700;font-size:14px;letter-spacing:0}
.chip-usdc{background:var(--navy);color:#fff;padding:6px 6px 6px 14px;gap:8px}
.chip-usdc .plus{width:26px;height:26px;border-radius:50%;background:var(--gold);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;line-height:1;cursor:pointer}
.chip .vtag{border-color:var(--gold);color:var(--gold)}
.iconbtn{width:40px;height:40px;border-radius:12px;border:0;background:var(--panel2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text)}
.iconbtn svg{width:20px;height:20px}
.iconbtn.dot{position:relative}.iconbtn.dot:after{content:"";position:absolute;top:9px;right:9px;width:7px;height:7px;border-radius:50%;background:var(--gold)}

/* ---------- panels, type, tags, buttons ---------- */
.panel{background:var(--panel);border:0;box-shadow:var(--sh);border-radius:var(--r);padding:16px}
.panel2,.podium-box,.bounty-box{background:var(--panel2);border:0;border-radius:12px}
.h1{font-weight:800;font-size:26px;letter-spacing:.01em;text-shadow:none;text-transform:uppercase}
h2{font-weight:800;font-size:16px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:10px}
.sub{font-size:15px}
.tag{border:0;background:var(--panel2);color:var(--text);border-radius:999px;padding:4px 10px;font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.tag-gold{background:var(--gold);color:#fff}
.tag-mint{background:var(--good-bg);color:var(--mint-d)}
.tag-coral{background:var(--bad-bg);color:var(--coral-d)}
.vtag{border-radius:999px;font-size:11px;padding:1px 7px}
.btn{border:0;border-radius:12px;background:var(--panel2);color:var(--text);font-family:var(--b);font-weight:700;font-size:15px;letter-spacing:.02em;text-transform:none;box-shadow:none;min-height:46px;padding:8px 18px}
.btn:hover{background:var(--panel3);border-color:transparent}
.btn:active{transform:translateY(1px);box-shadow:none}
.btn-gold{background:var(--gold);color:#fff;border:0;box-shadow:0 6px 16px rgba(255,106,31,.35)}
.btn-gold:hover{background:var(--gold-d)}
.btn-green{background:var(--mint);color:#fff;border:0}
.btn-green:hover{background:var(--mint-d)}
.btn-coral{background:var(--coral);color:#fff;border:0}
.btn-phantom{background:#5B4BFF;color:#fff}
#d-sell small{color:rgba(255,255,255,.85)}
.btn[disabled]{opacity:.5;filter:none}
.ico{width:20px;height:20px}
.chip-btn{border:0;background:var(--panel2);color:var(--text);border-radius:999px;padding:7px 14px;font-weight:700;font-size:13px;letter-spacing:.04em;text-transform:uppercase;box-shadow:none}
.chip-btn.on{background:var(--gold);color:#fff;border:0}
.chip-btn.locked{border:1px dashed var(--line2);background:transparent;color:var(--muted)}
.chip-gone{border:1px solid var(--coral)}
.form-msg{font-size:14px}
input,select,.link-form input,.vault-tools input,.vault-tools select,.bounty-box input,.comp-panel input{border:1px solid var(--line2)!important;background:var(--panel)!important;color:var(--text)!important;border-radius:10px!important;font-size:15px!important}
.link-form input:focus{border-color:var(--gold)!important;outline:none}
.divider{border-top:1px dashed var(--line2)}
.demo{border:1px solid var(--line2);background:var(--panel);border-radius:999px;box-shadow:none;font-size:14px}
.demo b{color:var(--gold)}
.card-row{border:0;background:var(--panel2);border-radius:12px;box-shadow:none}
.card-row b{font-weight:800;font-size:15px;text-transform:uppercase;letter-spacing:.04em}
.card-row small{font-size:13px}
.link-result{border-top:1px dashed var(--line2)}
.link-complete{font-weight:800;font-size:34px;color:var(--gold);text-shadow:none;letter-spacing:.02em}
.wire{background:repeating-linear-gradient(90deg,var(--cyan) 0 12px,#8fe0fb 12px 20px);border:0;border-radius:4px}
.kv{border-bottom:1px solid var(--line);font-size:14px}
.close{border:0;background:var(--panel2);border-radius:10px}

/* ---------- town: rail right, collection bottom-left ---------- */
.screen-town{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-template-rows:1fr auto;gap:14px;align-items:end;min-height:calc(100dvh - 190px);padding:0 14px 14px}
.town-actors{grid-column:1;grid-row:1;align-self:end;justify-content:center}
.town-panel{grid-column:1;grid-row:2;max-width:560px;margin:0;justify-self:start}
.town-rail{grid-column:2;grid-row:1/3;align-self:start;display:flex;flex-direction:column;gap:12px;position:sticky;top:12px}
.bubble{background:#fff;color:var(--text);border:0;box-shadow:var(--sh);border-radius:12px;font-weight:600;font-size:15px}
.bubble:after{border-top-color:#fff}
.bubble .cursor{color:var(--gold)}
.pulls-head h2{font-size:15px}
.pulls-head a{color:var(--gold);font-size:13px;text-transform:uppercase;letter-spacing:.06em}
.pull{border:0;background:var(--panel2);border-radius:10px;flex-basis:104px;width:104px}
.pull .ph{background:#fff;border-radius:6px}
.pull .nm{font-size:13px}.pull .gl{font-size:11px}.pull .val{font-size:14px}
.pull.add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:2px dashed var(--line2);background:transparent;color:var(--muted);font-weight:700;font-size:13px;text-align:center;cursor:pointer}
.pull.add .plus{width:34px;height:34px;border-radius:50%;background:var(--panel2);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:var(--text)}
.town-actions{grid-template-columns:1fr 1fr 1fr;gap:8px}
.town-actions .btn{font-size:13px;padding:8px 10px;min-height:42px}
.town-strip{font-size:12px;letter-spacing:.04em;text-transform:uppercase}
.town-strip b{color:var(--gold)}
/* quest rail */
.rail-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.rail-head h2{margin:0;display:flex;align-items:center;gap:8px}
.rail-head a{font-size:12px;font-weight:700;color:var(--muted);text-decoration:none;text-transform:uppercase;letter-spacing:.06em}
.qcard{display:grid;grid-template-columns:56px 1fr 18px;gap:10px;align-items:center;background:var(--panel2);border-radius:12px;padding:10px;margin-bottom:8px;cursor:pointer}
.qcard .qi{width:56px;height:56px;border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}
.qcard .qi img{width:40px;height:40px;object-fit:contain}
.qcard b{display:block;font-size:14px;line-height:1.15}
.qcard small{display:block;font-size:12px;color:var(--muted);line-height:1.2;margin:2px 0 6px}
.qcard .qm{display:flex;align-items:center;gap:8px}
.qcard .meter{height:8px;flex:1;border:0;background:#fff;border-radius:999px}
.qcard .meter i{background:var(--cyan);border-radius:999px;transition:none}
.qcard.done .meter i{background:var(--mint)}
.qcard .qp{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.qcard .qr{display:inline-flex;align-items:center;gap:4px;font-weight:800;font-size:13px;color:var(--text)}
.qcard .qr .coin{width:16px;height:16px}
.qcard .arrow{color:var(--muted);font-size:18px;text-align:right}
.event{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;background:var(--navy);color:#fff;border-radius:12px;padding:12px 14px;cursor:pointer;text-decoration:none}
.event small{display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);font-weight:800}
.event b{display:block;font-size:17px;font-weight:800;text-transform:uppercase;margin:2px 0}
.event span{font-size:12px;color:var(--ink-dim)}
.event img{height:52px;width:auto}

/* ---------- vault ---------- */
.slabcard{border:0;background:var(--panel);border-radius:12px;box-shadow:0 2px 10px rgba(15,20,30,.08)}
.slabcard:hover{box-shadow:0 6px 18px rgba(15,20,30,.14)}
.slabcard.sel{box-shadow:0 0 0 3px var(--gold),0 6px 18px rgba(255,106,31,.25)}
.slab{background:var(--panel2);border:0;border-radius:8px}
.slab img{background:#fff;border-radius:6px}
.grade{border:0;background:var(--warm-bg);color:var(--gold-d);border-radius:999px;font-size:12px;padding:2px 8px}
.slabcard .nm{font-size:15px}.slabcard .set{font-size:12px}.slabcard .val{font-size:16px}
.flag{border-radius:999px;font-size:11px}
.flag.big{background:var(--gold);color:#fff;border:0}
.flag.ros{background:#fff;color:var(--gold);border:1px solid var(--gold)}
.flag.gonef{background:var(--coral);border:0}
.slabcard.gone{border:1px dashed var(--line2);opacity:.75}
.detail-meta h2{text-transform:none;letter-spacing:0;font-size:20px}
.value{font-size:24px}
.actions .btn{font-size:14px}
.vault-tools input,.vault-tools select{padding:9px 12px}

/* ---------- arena / board ---------- */
.arena-head .h1{display:flex;align-items:center}
.cards-word{color:var(--cyan);text-shadow:none}
.cards-mark{filter:none}
.slot{border:2px dashed var(--line2);background:var(--panel2);border-radius:10px;font-size:12px}
.slot.filled{border:0;background:var(--panel2)}
.slot .sv{background:rgba(255,255,255,.92);color:var(--mint-d);border-radius:0 0 8px 8px}
.slot .rm{border:2px solid #fff;border-radius:50%;background:var(--coral);color:#fff}
.meter{border:0;background:var(--panel3);border-radius:999px;height:12px}
.meter i{background:var(--gold);border-radius:999px}
.meter.over i{background:var(--coral)}
.score-big b{font-weight:800;font-size:48px;color:var(--gold);text-shadow:none}
.bar{font-size:13px}.bar .meter{height:10px}
.lb li{border:0;background:var(--panel2);border-radius:12px;font-size:15px;padding:8px 12px}
.lb li.me{background:var(--warm-bg);box-shadow:inset 0 0 0 2px var(--gold)}
.lb li.me .who{color:var(--gold-d)}
.lb .rk{font-weight:800;font-size:18px;color:var(--muted)}
.lb li:nth-child(-n+3) .rk{color:var(--gold)}
.lb .sc{font-weight:800;font-size:20px;color:var(--gold)}
.lb small{font-size:12px}
.thumbs img{background:#fff;border:1px solid var(--line);border-radius:3px}
.rules{font-size:13px}
.cmp .them i{background:var(--coral)}.cmp .me i{background:var(--gold)}
.rival-cards .rc{border:0;background:var(--panel2);border-radius:10px}
.rival-cards .rc img{border:0;border-radius:6px;background:#fff}

/* ---------- jobs / league ---------- */
.job{border:0;background:var(--panel2);border-radius:12px}
.job b{font-weight:800;font-size:14px;letter-spacing:.06em}
.job .jt{font-size:13px}
.job:hover{box-shadow:inset 0 0 0 2px var(--gold)}
.job.checked{border:1px dashed var(--line2)}
.job .pts{border:0;background:var(--gold);color:#fff;border-radius:999px;font-size:11px;padding:2px 8px}
.done-row{border:0;background:var(--panel2);border-radius:10px;font-size:13px}
.bounty{border:0;background:var(--panel2);border-radius:10px;font-size:13px}
.quests li{border-bottom:1px solid var(--line);font-size:14px}
.quests .box{border-radius:6px;border:2px solid var(--line2);background:#fff}
.quests li.done .box{background:var(--mint);border-color:var(--mint);color:#fff}
.quests .pp{border:0;background:var(--panel3);color:var(--text);border-radius:999px;font-size:12px}
.quests li.done .pp{background:var(--gold);color:#fff}
.podium li{border-bottom:1px solid var(--line)}
.podium .rk,.podium .sc{color:var(--gold);font-weight:800}
.podium li.me{outline:2px solid var(--gold);border-radius:8px;padding-left:6px;padding-right:6px}
.league-me{font-size:15px}

/* ---------- tab bar (phone) & toast ---------- */
.tabbar{background:var(--panel);border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(15,20,30,.08)}
.tabbar a{color:var(--muted);border-right:0;font-size:11px;letter-spacing:.06em}
.tabbar a img{height:26px;opacity:.7}
.tabbar a.on{color:var(--gold);background:none}
.tabbar a.on:before{background:var(--gold);top:0;height:3px;border-radius:0 0 3px 3px}
.toast{background:var(--navy);color:#fff;border:0;border-radius:12px;box-shadow:var(--sh);font-size:14px}
.overlay{background:rgba(15,20,30,.55);backdrop-filter:blur(3px)}
.comp-card{border:0;background:var(--panel2);border-radius:10px}
.comp-panel label,.bounty-box label{font-size:11px}

/* ---------- responsive ---------- */
@media (min-width:1001px){.tabbar{display:none}.app{padding-bottom:0}.toast{bottom:24px}}
@media (max-width:1000px){
  .topnav{display:none}
  .screen-town{display:flex;flex-direction:column;justify-content:flex-end;gap:10px}
  .town-panel{max-width:none;width:100%}
  .town-rail{position:static;width:100%;order:3}
  .town-rail .rail-quests .qcard:nth-child(n+3){display:none}
}
@media (max-width:760px){
  body{font-size:15px}
  .topbar{margin:calc(8px + env(safe-area-inset-top)) 10px 8px;padding:6px 8px 6px 12px}
  .brand .bn{font-size:18px}.brand .bn small{display:none}
  .brand img{height:32px}
  .chip{font-size:12px;padding:6px 10px}
  .iconbtn{width:36px;height:36px}
  .h1{font-size:20px}
  .town-actions{grid-template-columns:1fr 1fr}
  .town-actions .btn:first-child{grid-column:1/-1}
  .score-big b{font-size:40px}
  .pull{flex-basis:92px;width:92px}
}

/* fit pass */
.topbar{gap:10px}
.topnav a{padding:8px 12px;font-size:14px;white-space:nowrap}
.status{flex-wrap:nowrap;gap:6px}
.chip{white-space:nowrap}
.town-panel{max-width:600px}
.town-actions .btn{white-space:nowrap;font-size:12px;padding:8px 8px;gap:6px}
.town-actions .ico,.town-actions .cards-mark-sm{width:18px;height:18px}
@media (max-width:1400px){.brand .bn small{display:none}.brand .bn{font-size:19px}}
@media (max-width:1180px){.topnav a img{display:none}.topnav a{padding:8px 10px;font-size:13px}}

/* phone header: brand + usdc + bell only */
@media (max-width:760px){
  #btn-gear{display:inline-flex}
  .status{gap:6px}
  .chip-usdc{padding:5px 5px 5px 10px;font-size:12px}
  .chip-usdc .plus{width:22px;height:22px;font-size:15px}
  .iconbtn{width:34px;height:34px}
  .brand .bn{font-size:17px}
}

/* card book */
.book-tools{flex-wrap:wrap}
.book-tools input{flex:2 1 260px}
.book-tools select{flex:1 1 140px}
.book-tools .chip-btn{align-self:center}
.slabcard .pk{font-size:12px;color:var(--muted);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slabcard .odds{font-size:12px;font-weight:700;color:var(--cyan)}
.flag.own{top:12px;left:12px;background:var(--mint);color:#fff;border:0}
.tier{display:inline-block;border-radius:999px;padding:1px 7px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;background:var(--panel3);color:var(--muted)}
.tier.epic{background:var(--warm-bg);color:var(--gold-d)}.tier.rare{background:var(--blue-bg);color:#0E8FB8}.tier.uncommon{background:var(--good-bg);color:var(--mint-d)}
.book-panel{width:min(760px,96vw);max-height:92vh;overflow:auto}
.book-detail{display:grid;grid-template-columns:240px 1fr;gap:16px;align-items:start}
.book-detail img{width:100%;aspect-ratio:677/1136;object-fit:contain;background:var(--panel2);border-radius:10px}
.book-detail h2{text-transform:none;letter-spacing:0;font-size:18px;margin:0 0 6px}
.book-detail .t{font-size:13px;color:var(--muted);margin-bottom:10px;line-height:1.25}
.book-detail .big{font-size:26px;font-weight:800;color:var(--mint)}
.book-detail .kv b{text-align:right}
.book-detail .btn{margin-top:12px}
@media (max-width:760px){.book-detail{grid-template-columns:1fr}.book-detail img{max-width:220px;margin:0 auto}.tabbar{grid-template-columns:repeat(6,1fr)}.tabbar a{font-size:10px}}
.tabbar{grid-template-columns:repeat(6,1fr)}

.book-tools select{min-width:0;max-width:100%;flex:1 1 140px}
#book-pack{flex:2 1 220px;max-width:100%;text-overflow:ellipsis}
.vault-tools{max-width:100%}

.topbar{min-width:0;overflow:hidden}
.topnav{min-width:0;overflow-x:auto;scrollbar-width:none}
.status{flex:none}
@media (max-width:1320px){.topnav a{padding:8px 10px;font-size:13px}.topnav a img{display:none}.brand .bn small{display:none}}

.flag.chain{top:12px;left:12px;background:var(--cyan);color:#fff;border:0}

/* send */
.send-panel{width:min(520px,96vw)}
.send-card{display:grid;grid-template-columns:70px 1fr;gap:10px;align-items:center;background:var(--panel2);border-radius:10px;padding:8px;margin-bottom:8px}
.send-card img{width:70px;aspect-ratio:677/1136;object-fit:contain;background:#fff;border-radius:6px}
.send-card b{display:block;font-size:14px;line-height:1.15}
.send-card small{display:block;color:var(--muted);font-size:12px}
.send-panel label{display:block;font-size:11px;letter-spacing:.08em;color:var(--muted);margin:8px 0 3px}
.send-panel input{width:100%;padding:10px 12px}
.send-panel .btn{margin-top:12px}
.send-panel .btn img{image-rendering:auto}
#send-result a{color:var(--gold-d);font-weight:700}

/* jobs v2 */
.jobs-scout .job,.jobs-grader .job,.jobs-hunt .job{grid-template-columns:64px 1fr}
.job.done{opacity:.55;cursor:default}
.job.done:hover{box-shadow:none}
.job .st{display:inline-block;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.job .st.ok{background:var(--good-bg);color:var(--mint-d)}.job .st.miss{background:var(--bad-bg);color:var(--coral-d)}.job .st.lock{background:var(--panel3);color:var(--muted)}
.job .thumbs{display:flex;gap:3px;margin-top:4px}
.job .thumbs img{width:22px;aspect-ratio:677/1136;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:2px}
.job-panel{width:min(620px,96vw);max-height:92vh;overflow:auto}
.job-head{display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:start;margin-bottom:10px}
.job-head img{width:110px;aspect-ratio:677/1136;object-fit:contain;background:var(--panel2);border-radius:8px}
.job-head h2{text-transform:none;letter-spacing:0;font-size:17px;margin:0 0 4px}
.job-head .t{font-size:13px;color:var(--muted);line-height:1.25}
.opts{display:grid;gap:8px}
.opt{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;border:2px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--panel);cursor:pointer;text-align:left;font:inherit;color:var(--text)}
.opt:hover{border-color:var(--gold)}
.opt b{display:block;font-size:14px}.opt small{color:var(--muted);font-size:12px}
.opt .o{font-weight:800;color:var(--cyan);white-space:nowrap}
.opt.best{border-color:var(--mint);background:var(--good-bg)}.opt.bad{border-color:var(--coral);background:var(--bad-bg)}
.job-panel label{display:block;font-size:11px;letter-spacing:.08em;color:var(--muted);margin:8px 0 3px}
.job-panel input,.job-panel select{width:100%;padding:10px 12px}
.job-panel .btn{margin-top:12px}
.job-big{width:100%;max-height:60vh;object-fit:contain;background:var(--panel2);border-radius:10px}
.leads{margin-top:8px}
.lead{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;background:var(--panel2);border-radius:10px;padding:8px 10px;font-size:13px;margin-bottom:6px}

/* ---------- pixel town game (game.js, v0.9.0): canvas behind the HUD, overlays follow the world ---------- */
#game{position:fixed;inset:0;width:100%;height:100%;z-index:-1;display:block;opacity:0;transition:opacity .35s,filter .25s;background:#1d3a22}
.app.game-on #game{opacity:1}
.app.game-on .world{visibility:hidden}
.app.game-on:not([data-screen="town"]) #game{filter:brightness(.55) saturate(.9) blur(2px)}
html.g-lock,html.g-lock body{overflow:hidden;overscroll-behavior:none}
.app.game-on[data-screen="town"],.app.game-on[data-screen="town"] .screens{touch-action:none;-webkit-user-select:none;user-select:none}
.app.game-on[data-screen="town"] .screen-town{pointer-events:none}
.app.game-on[data-screen="town"] .town-panel,.app.game-on[data-screen="town"] .town-rail{pointer-events:auto}
/* the old static actors give way to sprites; the owl's bubble floats over the owl */
.app.game-on .town-actors{position:fixed;inset:0;width:100%;height:100%;align-self:stretch;justify-self:stretch;margin:0;min-height:0;display:block;pointer-events:none;z-index:7}
.app.game-on .town-actors .kid,.app.game-on .town-actors .owl{display:none}
.app.game-on .owl-wrap{position:absolute;left:0;top:0;will-change:transform;transition:opacity .2s}
.app.game-on .owl-wrap.hide,.app:not([data-screen="town"]) .owl-wrap{opacity:0;visibility:hidden}
.app.game-on .bubble{margin:0 0 14px;font-size:14px;max-width:min(300px,70vw);padding:9px 13px}
.app.game-on .bubble:after{left:var(--tail,34px)}
/* collection panel can fold to its header so the town shows */
.pulls-toggle{display:none}
.app.game-on .pulls-toggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:10px;background:var(--panel2);color:var(--text);font-size:16px;cursor:pointer;flex:0 0 auto;margin-left:auto}
.app.game-on .pulls-head{align-items:center}
.app.game-on .town-panel.min{padding:10px 12px 10px 16px}
.app.game-on .town-panel.min .pulls-head{margin:0}
.app.game-on .town-panel.min .pulls-head h2{font-size:16px}
.app.game-on .town-panel.min .pulls,.app.game-on .town-panel.min .town-actions,.app.game-on .town-panel.min .town-strip{display:none}
@media (max-width:1000px){
  .app.game-on .town-rail{display:none}
  .app.game-on .screen-town{min-height:calc(100dvh - 140px)}
}
/* overlays */
.g-ui{position:fixed;inset:0;pointer-events:none;z-index:8}
.g-prompt{position:absolute;left:0;top:0;pointer-events:auto;border:0;border-radius:999px;background:var(--gold);color:#fff;font:800 14px/1 var(--b);letter-spacing:.04em;padding:12px 18px;min-height:44px;white-space:nowrap;box-shadow:0 6px 18px rgba(15,20,30,.3),0 2px 0 var(--gold-d);cursor:pointer;animation:gbob 1.2s ease-in-out infinite}
.g-prompt:hover{background:var(--gold-d)}
.g-sign{position:absolute;left:0;top:0;background:#fff;color:var(--text);font:800 11px/1 var(--b);letter-spacing:.08em;padding:6px 10px;border-radius:8px;box-shadow:var(--sh);white-space:nowrap}
@keyframes gbob{0%,100%{margin-top:0}50%{margin-top:-4px}}
.g-joy{position:absolute;left:22px;bottom:calc(var(--tab) + env(safe-area-inset-bottom) + 86px);width:118px;height:118px;border-radius:50%;border:3px solid rgba(255,255,255,.75);background:rgba(21,24,31,.22);pointer-events:auto;touch-action:none;display:flex;align-items:center;justify-content:center}
.g-knob{width:50px;height:50px;border-radius:50%;background:rgba(255,255,255,.92);box-shadow:0 4px 12px rgba(15,20,30,.3);pointer-events:none}
.g-hint{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);background:rgba(21,24,31,.78);color:#fff;font:700 12px/1 var(--b);letter-spacing:.06em;padding:10px 14px;border-radius:999px;white-space:nowrap;transition:opacity .6s}
.g-hint.gone{opacity:0}
.app:not([data-screen="town"]) .g-ui>.g-prompt,.app:not([data-screen="town"]) .g-sign,.app:not([data-screen="town"]) .g-joy,.app:not([data-screen="town"]) .g-hint,
.app.battle-on .g-prompt,.app.battle-on .g-sign,.app.battle-on .g-joy,.app.battle-on .g-hint{display:none}
.g-joy[hidden],.g-hint[hidden],.g-prompt[hidden],.g-sign[hidden],.g-battle[hidden],.g-end[hidden],.g-skip[hidden]{display:none}
/* arena battle: full-screen on the canvas; HUD steps aside */
.app.battle-on .topbar,.app.battle-on .tabbar,.app.battle-on .screen-town,.app.battle-on .back-town{visibility:hidden}
.g-battle{position:absolute;inset:0;pointer-events:none}
.g-skip,.g-sound{position:absolute;right:14px;pointer-events:auto;border:0;border-radius:999px;background:rgba(21,24,31,.82);color:#fff;font:800 12px/1 var(--b);letter-spacing:.06em;padding:11px 14px;min-height:40px;cursor:pointer}
.g-skip{top:calc(16px + env(safe-area-inset-top))}
.g-sound{top:calc(64px + env(safe-area-inset-top));font-weight:700;font-size:11px;background:rgba(21,24,31,.6)}
.g-end{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(440px,calc(100vw - 32px));pointer-events:auto;text-align:center;padding:22px 20px 18px;animation:gpop .35s cubic-bezier(.2,1.4,.4,1)}
.g-end-k{font:800 30px/1.1 var(--b);letter-spacing:.02em;color:var(--gold)}
.g-end-s{font:700 19px/1.4 var(--b);margin:10px 0 8px}
.g-end-s b{font-weight:800}
.g-end-n{font-size:12.5px;color:var(--muted);line-height:1.45;margin-bottom:16px}
.g-end-b{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.g-end-b .btn{min-height:46px;font-size:13px;padding:8px 6px}
@keyframes gpop{from{transform:translate(-50%,-50%) scale(.8);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}
.back-town{position:fixed;left:14px;bottom:calc(var(--tab) + 14px + env(safe-area-inset-bottom));z-index:14;border:0;border-radius:999px;background:var(--navy);color:#fff;font:800 13px/1 var(--b);letter-spacing:.04em;padding:12px 16px;min-height:44px;box-shadow:var(--sh);cursor:pointer}
.back-town[hidden]{display:none}
@media (min-width:1001px){.back-town{bottom:20px;left:20px}}
@media (prefers-reduced-motion: reduce){.g-prompt,.g-end{animation:none}}


/* how to play */
.g-help{position:absolute;right:14px;bottom:calc(20px + env(safe-area-inset-bottom));width:44px;height:44px;border-radius:50%;border:0;background:var(--navy);color:#fff;font:800 20px/1 var(--b);cursor:pointer;pointer-events:auto;box-shadow:var(--sh)}
.app:not([data-screen="town"]) .g-help,.app.battle-on .g-help{display:none}
.help-panel{width:min(560px,94vw);max-height:90vh;overflow:auto}
.help-rows{display:grid;gap:10px;margin:6px 0 12px}
.help-row{display:grid;grid-template-columns:132px 1fr;gap:12px;align-items:center;background:var(--panel2);border-radius:12px;padding:10px 12px}
.help-row b{display:block;font-size:15px}
.help-row small{display:block;font-size:13px;color:var(--muted);line-height:1.3}
.help-ico{display:flex;align-items:center;justify-content:center;min-height:64px}
.help-ico.keys{flex-direction:column;gap:4px}
.help-ico.keys>span{display:flex;gap:4px}
kbd{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 8px;border-radius:8px;background:#fff;border:1px solid var(--line2);box-shadow:0 3px 0 var(--line2);font:800 14px/1 var(--b);color:var(--text)}
kbd.wide{min-width:64px;font-size:11px;letter-spacing:.06em}
.joy-demo{display:block;width:56px;height:56px;border-radius:50%;border:2px solid var(--line2);background:#fff;position:relative}
.joy-demo i{position:absolute;left:24px;top:12px;width:24px;height:24px;border-radius:50%;background:var(--muted)}
.prompt-demo{background:var(--gold);color:#fff;font:800 12px/1 var(--b);letter-spacing:.06em;padding:9px 12px;border-radius:999px;white-space:nowrap}
.help-ico .spr{display:block;width:37px;height:64px;background:url(assets/sprites/villagers.png) 0 0/74px 192px no-repeat;image-rendering:pixelated}
.help-doors{background:var(--panel2);border-radius:12px;padding:10px 12px;font-size:13px;color:var(--muted);display:grid;gap:4px;margin-bottom:12px}
.help-doors b{color:var(--text);font-size:11px;letter-spacing:.08em}
.help-doors span{display:inline-block;min-width:118px;font-weight:800;color:var(--text);font-size:12px;letter-spacing:.04em}
@media (max-width:1000px){.g-help{bottom:calc(var(--tab) + env(safe-area-inset-bottom) + 76px)}}
@media (max-width:520px){.help-row{grid-template-columns:96px 1fr}.help-doors span{min-width:104px}}

/* music toggle (town) */
.g-music{position:absolute;right:66px;bottom:calc(20px + env(safe-area-inset-bottom));width:44px;height:44px;border-radius:50%;border:0;background:var(--navy);color:#fff;font:800 20px/1 var(--b);cursor:pointer;pointer-events:auto;box-shadow:var(--sh)}
.g-music.off{background:var(--panel);color:var(--muted);text-decoration:line-through}
.app:not([data-screen="town"]) .g-music{display:none}
.app.battle-on .g-music{display:none}
@media (max-width:1000px){.g-music{bottom:calc(var(--tab) + env(safe-area-inset-bottom) + 76px)}}

.overlay .close.show{display:block}

/* ---------- walk-in maps (v0.10.0): fade between maps; the town HUD steps aside indoors ---------- */
.g-fade{position:absolute;inset:0;background:#07080c;opacity:0;pointer-events:none;transition:opacity .25s ease}
.g-fade.on{opacity:1;pointer-events:auto}
.app.g-inside .town-panel,.app.g-inside .town-rail{display:none}

/* ---------- the Link sequence (v0.11.0): HTML UI over the canvas; the slabs fly on the canvas ---------- */
.g-link{position:absolute;inset:0;pointer-events:auto}
.g-link[hidden]{display:none}
.app.link-on .town-panel,.app.link-on .town-rail,.app.link-on .g-joy,.app.link-on .g-hint,.app.link-on .g-help,.app.link-on .g-music,.app.link-on .back-town{visibility:hidden}
.g-term{position:absolute;left:0;top:0;width:min(280px,calc(100vw - 20px));background:#15181F;color:#fff;border-radius:14px;padding:12px 14px 12px;box-shadow:0 10px 30px rgba(0,0,0,.45),0 0 0 2px rgba(255,106,31,.9);animation:gterm-in .35s cubic-bezier(.2,1.3,.4,1),gglow 1.1s ease-in-out infinite;transition:opacity .35s,transform .05s linear}
.g-term.dock{box-shadow:0 10px 30px rgba(0,0,0,.45),0 0 0 2px rgba(34,195,245,.95);animation:gterm-in .35s cubic-bezier(.2,1.3,.4,1),gglow-c 1.1s ease-in-out infinite}
.g-term.out{opacity:0}
.g-term-h{font:800 10px/1 var(--b);letter-spacing:.14em;color:var(--ink-faint);margin-bottom:8px}
.g-term-w{font:600 18px/1.2 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.02em;min-height:22px}
.g-caret{display:inline-block;width:9px;height:17px;background:#FF6A1F;margin-left:3px;vertical-align:-2px;animation:blink 1s steps(1) infinite}
.g-term.dock .g-caret{background:#22C3F5}
.g-term-bar{height:5px;border-radius:3px;background:rgba(255,255,255,.12);margin:10px 0 8px;overflow:hidden}
.g-term-bar i{display:block;height:100%;width:0;background:#FF6A1F;border-radius:3px}
.g-term.dock .g-term-bar i{background:#22C3F5}
.g-term-l{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font:700 11px/1 var(--b);letter-spacing:.08em;color:var(--ink-dim)}
.g-term-l b{font:800 20px/1 'Jersey 15',Handjet,monospace;letter-spacing:.02em;color:#fff}
@keyframes gterm-in{from{opacity:0;margin-top:24px}to{opacity:1;margin-top:0}}
@keyframes gglow{0%,100%{box-shadow:0 10px 30px rgba(0,0,0,.45),0 0 0 2px rgba(255,106,31,.9),0 0 0 0 rgba(255,106,31,.0)}50%{box-shadow:0 10px 30px rgba(0,0,0,.45),0 0 0 2px rgba(255,106,31,.9),0 0 22px 6px rgba(255,106,31,.45)}}
@keyframes gglow-c{0%,100%{box-shadow:0 10px 30px rgba(0,0,0,.45),0 0 0 2px rgba(34,195,245,.95),0 0 0 0 rgba(34,195,245,0)}50%{box-shadow:0 10px 30px rgba(0,0,0,.45),0 0 0 2px rgba(34,195,245,.95),0 0 24px 7px rgba(34,195,245,.5)}}
.g-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.g-flash.on{animation:gflash .45s ease-out}
@keyframes gflash{0%{opacity:.85}100%{opacity:0}}
.g-lc{position:absolute;left:50%;top:22%;transform:translate(-50%,-50%) scale(.6);opacity:0;font:400 clamp(44px,9vw,84px)/1 'Jersey 15',Handjet,monospace;letter-spacing:.03em;color:#FF6A1F;white-space:nowrap;text-shadow:0 4px 0 #15181F,3px 0 0 #15181F,-3px 0 0 #15181F,0 -3px 0 #15181F,0 8px 22px rgba(0,0,0,.4);pointer-events:none}
.g-lc.on{animation:glc .5s cubic-bezier(.2,1.5,.4,1) forwards}
@keyframes glc{to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.g-coins{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none}
.g-coins img{position:absolute;left:-18px;top:-18px;width:36px;height:36px;image-rendering:pixelated;animation:gcoin 1.1s cubic-bezier(.15,.8,.3,1) var(--d) forwards;opacity:0}
@keyframes gcoin{0%{opacity:1;transform:translate(0,0) scale(.5)}70%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1)}}
.g-sum{position:absolute;left:50%;top:auto;bottom:28px;transform:translate(-50%,0);width:min(400px,calc(100vw - 32px));text-align:center;padding:18px 18px 16px;animation:gpop2 .3s cubic-bezier(.2,1.4,.4,1)}
.g-sum[hidden]{display:none}
.g-sum-k{font:700 13px/1 var(--b);color:var(--muted);letter-spacing:.04em;margin-bottom:10px}
.g-sum-s{font:600 18px/1.4 var(--b)}
.g-sum-s b{font-weight:800}
.g-sum-n{font-size:13px;color:var(--muted);margin-top:6px}
.g-sum-b{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.g-sum-b.one{grid-template-columns:1fr}
.g-sum-b .btn{min-height:46px;font-size:13px}
@keyframes gpop2{from{opacity:0;transform:translate(-50%,12px) scale(.94)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
#town-pulls .pull.g-slide{animation:gslide .45s cubic-bezier(.2,1,.4,1) backwards}
@keyframes gslide{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){.g-term,.g-term.dock,.g-lc.on,.g-sum,#town-pulls .pull.g-slide{animation:none}.g-lc.on{opacity:1;transform:translate(-50%,-50%)}.g-caret{animation:none}}
@media (max-width:1000px){.g-sum{bottom:calc(var(--tab) + 16px + env(safe-area-inset-bottom))}}

/* ---------- battle presentation (v0.12.0) ---------- */
.g-vs{position:absolute;left:0;top:0;margin:-34px 0 0 -44px;width:88px;height:68px;display:flex;align-items:center;justify-content:center;font:400 58px/1 'Jersey 15',Handjet,monospace;color:#FFC83D;text-shadow:0 4px 0 #15181F,3px 0 0 #15181F,-3px 0 0 #15181F,0 -3px 0 #15181F;opacity:0;scale:.4;transition:opacity .2s,scale .35s cubic-bezier(.2,1.6,.4,1);pointer-events:none}
.g-vs.on{opacity:1;scale:1}
.g-bflash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.g-bflash.on{animation:gflash .5s ease-out}
.g-bcoins{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none}
.g-bcoins img{position:absolute;left:-17px;top:-17px;width:34px;height:34px;image-rendering:pixelated;opacity:0;animation:gcoin 1.2s cubic-bezier(.15,.8,.3,1) var(--d) forwards}
.g-ko{position:absolute;left:0;top:0;margin:-30px 0 0 -52px;width:104px;text-align:center;font:400 54px/1 'Jersey 15',Handjet,monospace;color:#F04438;text-shadow:0 4px 0 #15181F,3px 0 0 #15181F,-3px 0 0 #15181F,0 -3px 0 #15181F;pointer-events:none;animation:gko 1s cubic-bezier(.2,1.5,.4,1) forwards}
@keyframes gko{0%{opacity:0;scale:2.2;rotate:-14deg}18%{opacity:1;scale:1;rotate:-8deg}75%{opacity:1}100%{opacity:0;scale:1;rotate:-8deg}}
@media (prefers-reduced-motion: reduce){.g-vs{transition:none}.g-bflash.on{animation-duration:.2s}.g-ko{animation:gko-r .9s linear forwards}@keyframes gko-r{0%,80%{opacity:1}100%{opacity:0}}}

/* ---------- Jobs v2 polish (v0.13.0) ---------- */
.job-panel{width:min(560px,100%);max-height:calc(100dvh - 32px);overflow:auto}
.opt .cost{display:block;margin-top:2px;color:var(--text)}
.opt.best{border-color:var(--mint);background:var(--good-bg)}.opt.bad{border-color:var(--coral);background:var(--bad-bg)}
.opt[disabled]{cursor:default}
.job-big{display:block;width:min(260px,70vw);aspect-ratio:677/1136;object-fit:contain;margin:6px auto 10px;background:var(--panel2);border-radius:10px}
#job-body label{display:block;font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--muted);margin:10px 0 4px}
#job-body input,#job-body select{width:100%;min-height:44px;font:inherit;font-size:16px;border:2px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--panel);color:var(--text)}
#job-body .btn{margin-top:10px}
.leads{background:var(--warm-bg);border-radius:12px;padding:10px 12px;margin-bottom:10px}
.leads>b{display:block;font-size:11px;letter-spacing:.1em;color:var(--gold-d);margin-bottom:6px}
.lead{display:flex;gap:10px;justify-content:space-between;align-items:center;padding:6px 0;border-top:1px solid var(--line);font-size:13px}
.lead:first-of-type{border-top:0}.lead .btn{min-height:36px;font-size:12px;padding:6px 12px;flex:0 0 auto}
@media (max-width:760px){.job-head{grid-template-columns:84px 1fr}.job-head img{width:84px}}
.job-head h2{padding-right:40px}
.g-fast{position:absolute;top:calc(16px + env(safe-area-inset-top));right:118px;pointer-events:auto;border:0;border-radius:999px;background:rgba(21,24,31,.6);color:#fff;font:800 12px/1 var(--b);letter-spacing:.06em;padding:11px 14px;min-height:40px;cursor:pointer}
.g-fast.on{background:var(--gold);color:#fff}
.g-fast[hidden]{display:none}

/* ---------- pure game HUD (v0.13.0): no section nav while playing; MAP + ♪ + ? instead ---------- */
.g-hud{display:none}
.app.game-on:not(.quicknav) .topnav{display:none}
.app.game-on:not(.quicknav) .g-hud{display:flex}
.g-map{pointer-events:auto;border:0;border-radius:999px;background:var(--navy);color:#fff;font:800 13px/1 var(--b);letter-spacing:.08em;padding:0 18px;height:44px;cursor:pointer;box-shadow:var(--sh)}
.g-hud{position:absolute;right:118px;bottom:calc(20px + env(safe-area-inset-bottom));pointer-events:none}
.app.battle-on .g-hud,.app.link-on .g-hud{display:none!important}
@media (min-width:1001px){.app:not([data-screen="town"]) .g-hud{right:14px}}
.g-mapo{position:absolute;inset:0;background:rgba(15,20,30,.45);display:flex;align-items:center;justify-content:center;padding:16px;pointer-events:auto;z-index:2}
.g-mapo[hidden]{display:none}
.g-mapo-p{width:min(380px,100%);padding:14px}
.g-mapo-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.g-mapo-h b{font-size:12px;letter-spacing:.12em;color:var(--muted)}
.g-mapo-h .close{position:static;display:block}
.g-mapo-l{display:grid;gap:6px}
.g-mapo-i{display:grid;grid-template-columns:1fr auto;align-items:center;text-align:left;border:0;border-radius:12px;background:var(--panel2);padding:11px 14px;font:inherit;color:var(--text);cursor:pointer;min-height:48px}
.g-mapo-i b{font-size:14px;font-weight:800;letter-spacing:.03em}
.g-mapo-i small{grid-column:1;color:var(--muted);font-size:12px}
.g-mapo-i span{grid-column:2;grid-row:1/3;font-size:22px;color:var(--gold)}
.g-mapo-i:hover{background:var(--panel3)}
.quicknav-set{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;margin-top:14px;padding:10px 12px;border-radius:12px;background:var(--panel2);cursor:pointer}
.quicknav-set input{width:20px;height:20px;margin-top:2px;accent-color:var(--gold)}
.quicknav-set b{display:block;font-size:14px}.quicknav-set small{display:block;color:var(--muted);font-size:12px;line-height:1.35}
@media (max-width:1000px){
  /* the bottom tab bar becomes one slim HUD row */
  .app.game-on:not(.quicknav){--tab:62px}
  .app.game-on:not(.quicknav) .tabbar{display:none}
  .app.game-on:not(.quicknav) .g-hud{left:0;right:0;bottom:0;height:calc(62px + env(safe-area-inset-bottom));padding:9px 12px calc(9px + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(15,20,30,.08);align-items:center;pointer-events:auto;z-index:1}
  .app.game-on:not(.quicknav) .g-map{height:44px;padding:0 22px}
  .app.game-on:not(.quicknav) .g-help,.app.game-on:not(.quicknav) .g-music{bottom:calc(9px + env(safe-area-inset-bottom));z-index:2;box-shadow:none}
  .app.game-on:not(.quicknav) .g-music{background:var(--panel2);color:var(--text)}
  .app.game-on:not(.quicknav) .g-music.off{color:var(--muted)}
  .app.game-on:not(.quicknav):not([data-screen="town"]) .g-help,.app.game-on:not(.quicknav):not([data-screen="town"]) .g-music{display:block}
}

/* ---------- pack-rip moment (v0.13.0) ---------- */
.g-rflash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.g-rflash.on{animation:gflash .45s ease-out}
.g-rip-coins{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none}
.g-rip-coins img{position:absolute;left:-17px;top:-17px;width:34px;height:34px;image-rendering:pixelated;opacity:0;animation:gcoin 1.2s cubic-bezier(.15,.8,.3,1) var(--d) forwards}
.g-rip-l{position:absolute;left:0;top:0;width:min(340px,calc(100vw - 32px));background:var(--panel);color:var(--text);border-radius:14px;box-shadow:var(--sh);padding:10px 14px;text-align:center;pointer-events:none;animation:gpop2 .3s cubic-bezier(.2,1.4,.4,1)}
.g-rip-l[hidden]{display:none}
.g-rip-l small{display:block;font:800 10px/1.2 var(--b);letter-spacing:.12em;color:var(--gold);margin-bottom:4px}
.g-rip-l>b{display:block;font:800 16px/1.25 var(--b)}
.g-rip-l span{font-size:13px;color:var(--muted)}.g-rip-l span b{color:var(--text)}.g-rip-l i{font-style:normal;color:var(--gold);font-weight:800}
#chip-cards.g-tick{animation:gtick .6s cubic-bezier(.2,1.6,.4,1)}
@keyframes gtick{0%{transform:scale(1)}35%{transform:scale(1.18);background:var(--gold);color:#fff}100%{transform:scale(1)}}
.app.rip-on .g-joy,.app.rip-on .g-hint,.app.rip-on .town-panel,.app.rip-on .town-rail,.app.rip-on .g-hud,.app.rip-on .g-help,.app.rip-on .g-music,.app.rip-on .owl-wrap{visibility:hidden}

/* ---------- v0.14.0: guest binder, duels, gym leaders, badges ---------- */
.btn-guest{margin-top:8px;background:var(--panel2);color:var(--text)}
.owl-guest{display:block;margin:8px 0 0;pointer-events:auto;border:0;border-radius:999px;background:var(--gold);color:#fff;font:800 12px/1 var(--b);letter-spacing:.06em;padding:9px 14px;cursor:pointer}
.owl-guest[hidden]{display:none}
.app.game-on .owl-wrap .owl-guest{pointer-events:auto}
.guest-note{color:var(--gold-d);font-weight:700}
.vtag.champ{border-color:#C25BD6;color:#C25BD6}
.g-badges{display:inline-flex;gap:3px;align-items:center;padding:4px 6px;border-radius:999px;background:var(--panel2);cursor:pointer}
.g-badge{display:inline-block;width:22px;height:25px;background:url(assets/sprites/badges.png) 0 0/400% 100% no-repeat;filter:grayscale(1);opacity:.28;image-rendering:pixelated}
.g-badge.on{filter:none;opacity:1}
.g-badges.stand-in .g-badge{background:url(assets/coin.webp) center/contain no-repeat!important}
@media (max-width:420px){.g-badges{padding:3px 4px;gap:1px}.g-badge{width:16px;height:18px}}
.g-chips{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.g-el{position:absolute;left:0;top:0;display:inline-block;background:var(--c);color:#fff;font:800 9px/1 var(--b);letter-spacing:.08em;padding:3px 7px;border-radius:999px;box-shadow:0 1px 0 rgba(0,0,0,.35);white-space:nowrap;transform-origin:50% 0}
.g-duel{position:absolute;inset:0;pointer-events:none}
.g-duel[hidden]{display:none}
.g-forfeit{position:absolute;top:calc(16px + env(safe-area-inset-top));right:14px;pointer-events:auto;border:0;border-radius:999px;background:rgba(21,24,31,.75);color:#fff;font:800 11px/1 var(--b);letter-spacing:.08em;padding:11px 14px;min-height:40px;cursor:pointer}
.g-duelbar{position:absolute;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(560px,calc(100vw - 20px));pointer-events:auto}
.g-turn{text-align:center;font:400 26px/1 'Jersey 15',Handjet,monospace;letter-spacing:.04em;color:#fff;text-shadow:0 3px 0 #15181F,2px 0 0 #15181F,-2px 0 0 #15181F,0 -2px 0 #15181F;margin-bottom:8px;min-height:26px}
.g-acts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.g-acts[hidden],.g-swaprow[hidden]{display:none}
.g-act{border:0;border-radius:14px;background:var(--panel);color:var(--text);min-height:62px;padding:8px 6px;cursor:pointer;box-shadow:0 4px 0 rgba(15,20,30,.25),var(--sh);font:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
.g-act b{font:800 16px/1 var(--b);letter-spacing:.06em}
.g-act small{font-size:10.5px;color:var(--muted);line-height:1.15;text-align:center}
.g-act small.strong,.g-swap small.strong{color:var(--mint-d);font-weight:800}.g-act small.weak,.g-swap small.weak{color:var(--coral-d);font-weight:800}
.g-act[data-m="power"]{background:var(--warm-bg)}.g-act[data-m="guard"]{background:var(--blue-bg)}
.g-act:active{transform:translateY(2px)}
.g-act[disabled]{opacity:.45;cursor:default}
.g-swaprow{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px}
.g-swap{position:relative;border:0;border-radius:12px;background:var(--panel);padding:6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;font:inherit;color:var(--text);box-shadow:var(--sh)}
.g-swap img{width:48px;aspect-ratio:3/5;object-fit:contain}
.g-swap .g-el{position:static}
.g-swap b{font-size:11px;line-height:1.1;text-align:center}.g-swap small{font-size:10px;color:var(--muted);text-align:center}
.g-swap.back{justify-content:center;min-height:60px;background:var(--panel2)}
@media (max-width:520px){.g-acts{grid-template-columns:1fr 1fr}.g-act{min-height:56px}}
.g-choice{position:absolute;inset:0;background:rgba(15,20,30,.45);display:flex;align-items:center;justify-content:center;padding:16px;pointer-events:auto;z-index:3}
.g-choice[hidden]{display:none}
.g-choice-p{width:min(420px,100%);padding:14px}
.g-choice-i{display:block;width:100%;text-align:left;border:0;border-radius:12px;background:var(--panel2);padding:12px 14px;margin-top:8px;font:inherit;color:var(--text);cursor:pointer}
.g-choice-i b{display:block;font-size:15px;font-weight:800;letter-spacing:.05em}.g-choice-i small{color:var(--muted);font-size:12.5px;line-height:1.35}
.g-choice-i[data-c="duel"]{background:var(--warm-bg)}
.g-case{display:grid;gap:6px;margin:6px 0 8px}
.g-case-i{display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;align-items:center;background:var(--panel2);border-radius:12px;padding:8px 12px}
.g-case-i .g-badge{grid-row:1/3;width:34px;height:38px}
.g-case-i b{font-size:14px}.g-case-i small{grid-column:2;color:var(--muted);font-size:12px}.g-case-i span{grid-row:1/3;grid-column:3;font:800 11px/1 var(--b);letter-spacing:.08em;color:var(--muted)}
.g-case-i.on span{color:var(--mint-d)}
.g-say{position:absolute;left:0;top:0;max-width:min(300px,80vw);background:#fff;color:var(--text);border-radius:12px;box-shadow:var(--sh);padding:9px 12px;font:600 13px/1.35 var(--b);pointer-events:none;z-index:2}
.g-say[hidden]{display:none}
.g-end-badge{display:flex;justify-content:center;margin-bottom:6px}.g-end-badge .g-badge{width:64px;height:72px;filter:none;opacity:1}
.g-end-q{font-size:13px;font-style:italic;color:var(--text);margin:-2px 0 8px}
.g-end-b .btn[data-a="gym"]{white-space:nowrap}
.help-duels{background:var(--panel2);border-radius:12px;padding:10px 12px;margin:10px 0;font-size:13px;line-height:1.45;display:grid;gap:6px}
.help-duels>b{font-size:11px;letter-spacing:.12em;color:var(--muted)}
.help-wheel i{font-style:normal;font-weight:800;font-size:11px;color:#fff;background:var(--c);border-radius:999px;padding:1px 6px}
.app.duel-on .g-skip,.app.duel-on .g-fast{display:none}
@media (max-width:760px){.g-badges{padding:3px 4px;gap:0}.g-badge{width:14px;height:16px}.chip-usdc #chip-usdc{font-size:11px}}

/* ---------- v0.15.0: daily quests + streak ---------- */
.g-qchip{border:0;border-radius:999px;background:var(--panel2);color:var(--text);font:700 12px/1 var(--b);letter-spacing:.04em;padding:8px 12px;cursor:pointer;white-space:nowrap}
.g-qchip[hidden]{display:none}
.g-qchip b{font-weight:800;color:var(--gold)}
.g-qchip .lbl{color:var(--muted);font-size:10.5px;letter-spacing:.08em}.g-qchip .sep{margin:0 5px;color:var(--line2)}
.g-qchip.g-tick{animation:gtick .6s cubic-bezier(.2,1.6,.4,1)}
@media (max-width:760px){.g-qchip{padding:6px 8px;font-size:11px}.g-qchip .lbl{display:none}}
.g-quests{width:min(440px,100%)}
.g-q-streak{display:grid;grid-template-columns:auto 1fr;gap:0 10px;align-items:center;background:var(--warm-bg);border-radius:12px;padding:10px 12px;margin:6px 0 10px}
.g-q-streak b{grid-row:1/3;font:400 44px/1 'Jersey 15',Handjet,monospace;color:var(--gold)}
.g-q-streak span{font:800 12px/1 var(--b);letter-spacing:.1em}.g-q-streak small{color:var(--muted);font-size:11.5px;line-height:1.3}
.g-q{position:relative;background:var(--panel2);border-radius:12px;padding:10px 12px;margin-bottom:6px;overflow:hidden}
.g-q-t{font-weight:700;font-size:14px;padding-right:64px}
.g-q-m{display:flex;gap:10px;align-items:center;margin-top:6px}.g-q-m .meter{flex:1}.g-q-n{font:700 12px/1 var(--b);color:var(--muted)}
.g-q.done{background:var(--good-bg)}
.g-q-stamp{position:absolute;right:10px;top:50%;transform:translateY(-50%) rotate(-12deg);border:3px solid var(--mint-d);color:var(--mint-d);border-radius:8px;padding:3px 8px;font:400 22px/1 'Jersey 15',Handjet,monospace;letter-spacing:.08em;animation:gstamp .35s cubic-bezier(.2,1.6,.4,1)}
@keyframes gstamp{from{transform:translateY(-50%) rotate(-12deg) scale(2);opacity:0}to{transform:translateY(-50%) rotate(-12deg) scale(1);opacity:1}}
.g-q.done .g-q-t,.g-q.done .g-q-m{padding-right:78px}
/* card specials (v0.15.0) */
.g-acts{grid-template-columns:repeat(5,1fr)}
.g-act-sp{background:var(--violet-bg)}.g-act-sp b{font-size:13px;letter-spacing:.04em;color:var(--violet)}
.g-act-sp.used{background:var(--panel2)}.g-act-sp.used b{color:var(--muted)}
.g-swap small.sp{color:var(--violet);font-weight:800;font-size:9.5px;letter-spacing:.04em}
@media (max-width:520px){.g-acts{grid-template-columns:1fr 1fr}.g-act-sp{grid-column:1/-1;min-height:46px}}
@media (max-width:520px){.g-act-sp{order:5}}
/* PvP (v0.15.0) */
.g-pvp{position:absolute;left:50%;top:calc(76px + env(safe-area-inset-top));transform:translateX(-50%);display:flex;gap:10px;align-items:center;background:#15181F;color:#fff;border-radius:999px;padding:6px 6px 6px 16px;box-shadow:var(--sh);pointer-events:auto;cursor:pointer;font:700 12px/1 var(--b);letter-spacing:.06em;z-index:3}
.g-pvp[hidden]{display:none}
.g-pvp span{color:var(--gold);font-weight:800}
.g-pvp button{border:0;border-radius:999px;background:rgba(255,255,255,.14);color:#fff;font:800 11px/1 var(--b);letter-spacing:.06em;padding:8px 12px;cursor:pointer}
.league-grid-3:has(.pvp-box:not([hidden])){grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:1101px){.league-grid-3:has(.pvp-box:not([hidden])){grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:760px){.league-grid-3:has(.pvp-box:not([hidden])){grid-template-columns:1fr}}
#pvp-ladder li.dim{display:block;padding:10px 4px;line-height:1.4}

/* ---------- v0.15.0: connect wallet + profile (owner: "I don't see an obvious connect wallet") ---------- */
.btn-connect{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:0;border-radius:999px;background:var(--gold);color:#fff;font:800 13px/1 var(--b);letter-spacing:.06em;cursor:pointer;white-space:nowrap;box-shadow:0 3px 0 var(--gold-d),0 6px 16px rgba(255,106,31,.3);flex:0 0 auto}
.btn-connect:hover{background:var(--gold-d)}
.btn-connect img{width:22px;height:22px;border-radius:6px}
.btn-connect .sm{display:none}
.btn-profile{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border:2px solid var(--line2);border-radius:999px;background:var(--panel);color:var(--text);font:800 13px/1 var(--b);cursor:pointer;white-space:nowrap;flex:0 0 auto}
.btn-profile .pf-w{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700}
.btn-profile .pf-v{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--mint);color:#fff;font-size:11px}

.app.game-on:not(.quicknav) .status{gap:6px}
.owl-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;pointer-events:auto}
.owl-acts[hidden]{display:none}
.owl-acts .owl-guest{margin:0}
.owl-connect{border:0;border-radius:999px;background:var(--gold);color:#fff;font:800 12px/1 var(--b);letter-spacing:.06em;padding:9px 14px;cursor:pointer}
.owl-acts .owl-guest{background:var(--panel2);color:var(--text)}
.btn-phantom-big{min-height:58px;font-size:16px;letter-spacing:.04em}
.btn-phantom-big img{width:28px;height:28px}
.profile-panel{width:min(980px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:18px}
.pf-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;padding-right:44px}
.pf-head small{font:800 11px/1 var(--b);letter-spacing:.12em;color:var(--muted)}
.pf-head h2{margin:4px 0 0;font-size:22px;display:flex;align-items:center;gap:8px}
.pf-head .addr{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.pf-copy{border:0;border-radius:8px;background:var(--panel2);font:800 10px/1 var(--b);letter-spacing:.08em;padding:7px 9px;cursor:pointer;color:var(--text)}
.pf-stats{display:flex;gap:6px;flex-wrap:wrap}
.pf-stat{border-radius:999px;background:var(--panel2);font:800 11px/1 var(--b);letter-spacing:.06em;padding:8px 11px;border:0;color:var(--text)}
.pf-stat.good{background:var(--good-bg);color:var(--mint-d)}.pf-stat.link{background:var(--violet-bg);color:var(--violet);cursor:pointer}
.pf-badges{display:flex;gap:6px;margin:10px 0 0}.pf-badges .g-badge{width:30px;height:34px}
.pf-colhead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:16px 0 10px;flex-wrap:wrap}
.pf-colhead h3{margin:0;font-size:15px;letter-spacing:.04em}
.pf-colhead select{min-height:40px;border:2px solid var(--line);border-radius:10px;padding:0 10px;font:inherit;background:var(--panel)}
.pf-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.pf-card .flag.cust{background:var(--panel3);color:var(--muted)}
.pf-tags{display:flex;gap:4px;flex-wrap:wrap}
.pf-el{background:var(--c);color:#fff;font:800 9px/1 var(--b);letter-spacing:.08em;padding:3px 7px;border-radius:999px}
.pf-ab{background:var(--violet-bg);color:var(--violet);font:800 9px/1 var(--b);letter-spacing:.05em;padding:3px 7px;border-radius:999px}
.pf-empty{background:var(--panel2);border-radius:12px;padding:14px 16px;line-height:1.45}
.pf-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.pf-actions .btn{flex:1 1 160px}
@media (max-width:520px){.pf-grid{grid-template-columns:1fr 1fr}.profile-panel{padding:14px}}
#chip-cards[hidden]{display:none}
/* wallet reading / nothing found (v0.15.0) */
.wallet-reading{position:fixed;left:50%;top:calc(76px + env(safe-area-inset-top));transform:translateX(-50%);z-index:60;display:flex;gap:12px;align-items:center;background:#15181F;color:#fff;border-radius:14px;padding:12px 16px;box-shadow:var(--sh);width:max-content;max-width:calc(100vw - 24px)}
.wallet-reading[hidden]{display:none}
.wallet-reading b{display:block;font-size:14px}.wallet-reading small{display:block;color:var(--ink-dim);font-size:12px;margin-top:2px}
.wallet-reading .spin{width:20px;height:20px;border-radius:50%;border:3px solid rgba(255,255,255,.25);border-top-color:var(--gold);animation:wspin .8s linear infinite;flex:0 0 auto}
@keyframes wspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion: reduce){.wallet-reading .spin{animation:none}}
.wallet-empty{text-align:left;font-size:13.5px;line-height:1.45;background:var(--panel2);border-radius:12px;padding:12px 14px}
.wallet-empty>b{display:block;font-size:15px;margin-bottom:6px}
.we-addr{display:flex;gap:8px;align-items:center;background:var(--panel);border-radius:10px;padding:8px 10px;margin:4px 0 8px}
.we-addr code{flex:1;font-size:12px;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.wallet-empty ol{margin:0;padding-left:20px;display:grid;gap:6px}
.we-actions{display:flex;gap:8px;margin-top:10px}.we-actions .btn{flex:1;min-height:44px}
.g-sum.g-sum-empty{top:auto;bottom:16px;max-height:calc(100dvh - 120px);overflow:auto;width:min(480px,calc(100vw - 24px))}
@media (max-width:1000px){.g-sum.g-sum-empty{bottom:calc(var(--tab) + 10px + env(safe-area-inset-bottom))}}
#link-summary .wallet-empty{margin-top:8px}

/* ---------- v0.15.0 top bar: one clear wallet block; words for everything else in a second row ---------- */
.status{align-items:center;gap:8px}
.btn-connect .lg{display:inline}
.btn-profile{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:4px 10px 4px 5px;border:2px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text);cursor:pointer;flex:0 0 auto;text-align:left}
.btn-profile:hover{border-color:var(--gold)}
.btn-profile .pf-av{width:30px;height:30px;border-radius:50%;background:var(--panel2);object-fit:contain}
.btn-profile .pf-txt{display:flex;flex-direction:column;line-height:1.1}
.btn-profile .pf-txt b{font:800 13px/1.15 var(--b);display:flex;align-items:center;gap:4px}
.btn-profile .pf-txt small{font:700 10.5px/1.2 var(--b);letter-spacing:.04em;color:var(--muted)}
.btn-profile .pf-v{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:var(--mint);color:#fff;font-size:9px;font-style:normal}
.btn-profile .pf-chev{font-size:22px;line-height:1;color:var(--gold);margin-left:2px}
#chip-cards{display:inline-flex;flex-direction:column;align-items:flex-start;justify-content:center;line-height:1.1;min-height:44px;border-radius:14px;padding:4px 12px;font-size:11px}
#chip-cards b{font-weight:800;font-size:12px;letter-spacing:.06em}
.subbar{display:flex;align-items:center;gap:6px;margin:-4px 14px 8px;overflow-x:auto;scrollbar-width:none;position:relative;z-index:5;padding:2px 0}
.subbar::-webkit-scrollbar{display:none}
.subbar-l{display:contents}
.sb-chip{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;border:0;border-radius:999px;background:var(--panel);box-shadow:0 2px 8px rgba(15,20,30,.12);color:var(--text);font:700 11px/1 var(--b);letter-spacing:.06em;padding:8px 11px;cursor:pointer;white-space:nowrap}
.sb-chip b{color:var(--gold);font-weight:800}
.sb-chip .coin{width:14px;height:14px}
.subbar .g-qchip{display:contents;background:none;padding:0}
.subbar .g-badges{gap:2px;padding:5px 9px}
.subbar .g-badge{width:16px;height:18px}
.sb-hint{margin-left:auto;flex:0 0 auto;font:800 11px/1 var(--b);letter-spacing:.04em;color:#fff;background:var(--gold);border-radius:999px;padding:7px 11px;white-space:nowrap}
.sb-hint[hidden]{display:none}
.app.battle-on .subbar,.app.link-on .subbar,.app.rip-on .subbar{visibility:hidden}
.screen-town{min-height:calc(100dvh - 226px)}
@media (max-width:1000px){.app.game-on .screen-town{min-height:calc(100dvh - 176px)}}
@media (max-width:760px){
  .topbar .brand .bn{display:none}
  .topbar{gap:8px}
  .status{gap:6px}
  .btn-connect{padding:0 12px;font-size:12.5px;letter-spacing:.04em;gap:6px}
  .btn-connect img{width:20px;height:20px}
  .iconbtn{width:36px;height:36px}
  .subbar{margin:-2px 10px 6px;gap:5px}
  .sb-chip{padding:7px 9px;font-size:10.5px;letter-spacing:.04em}
  .sb-hint{font-size:10.5px;padding:7px 9px}
  #chip-cards{padding:4px 9px}
}
/* profile panel v2 */
.pf-head{display:block;padding-right:44px}
.pf-addr{display:flex;align-items:center;gap:8px;margin:6px 0}
.pf-addr code{font:700 13px/1.3 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;word-break:break-all}
.pf-status{font-size:13.5px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pf-ok{color:var(--mint-d);font-weight:800}
.pf-verify{border:0;border-radius:999px;background:var(--violet-bg);color:var(--violet);font:800 11px/1 var(--b);letter-spacing:.06em;padding:8px 11px;cursor:pointer}
.pf-stats{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 8px}
.pf-st{background:var(--panel2);border-radius:12px;padding:8px 12px;min-width:84px}
.pf-st small{display:block;font:800 10px/1 var(--b);letter-spacing:.1em;color:var(--muted)}
.pf-st b{display:block;font:800 18px/1.2 var(--b);margin-top:4px}.pf-st b small{font-size:11px;color:var(--muted);font-weight:700}
.pf-actions{margin-top:6px}
.pf-colhead h3 small{font-weight:700;letter-spacing:0}
.pf-sort{display:inline-flex;align-items:center;gap:6px;font:800 11px/1 var(--b);letter-spacing:.1em;color:var(--muted)}
.pf-tabs{display:flex;gap:6px;flex-wrap:wrap}
.pf-tab{border:0;border-radius:999px;background:var(--panel2);color:var(--text);font:800 11.5px/1 var(--b);letter-spacing:.05em;padding:9px 12px;cursor:pointer}
.pf-tab.on{background:var(--navy);color:#fff}
.pf-legend{font-size:12.5px;color:var(--muted);margin:8px 0 10px}
.pf-card .flag.cust{background:#EEF1F6;color:#4B5563}
@media (max-width:520px){.pf-actions .btn{flex:1 1 30%;font-size:11px;padding:8px 6px;min-height:44px}.pf-st{min-width:0;flex:1 1 40%}}
#chip-cards[hidden]{display:none!important}
@media (max-width:760px){
  .subbar{flex-wrap:wrap;overflow:visible;row-gap:5px}
  .sb-chip{padding:6px 8px;font-size:10px;letter-spacing:.03em;gap:4px}
  .subbar .g-badges{padding:4px 7px}.subbar .g-badge{width:14px;height:16px}
  .sb-hint{margin-left:0}
}
.we-actions .btn:not(.btn-gold){background:var(--panel);border:2px solid var(--line2)}

/* =====================================================================================================================
   v0.15.1 — TWO SURFACES, ONE TOKEN SET (tokens at the top of this file)
   1) PANELS + TOP BAR: light frosted cards over the blurred room (owner ref: panel-ui-reference-jobboard).
   2) IN-PLAY HUD: dark navy bevelled pixel panels (owner ref: duel-ui-reference) — see the duel / HUD blocks below.
   ===================================================================================================================== */
/* ---------- 1) light panels ---------- */
.app.game-on:not([data-screen="town"]) #game{filter:brightness(.82) saturate(1) blur(3px)}
.app:not([data-screen="town"]) .world{filter:brightness(.82) blur(3px)}
.screens>.screen:not(.screen-town) .panel,.overlay .panel:not(.g-hudpanel){background:var(--panel-frost);-webkit-backdrop-filter:blur(14px) saturate(1.1);backdrop-filter:blur(14px) saturate(1.1);border:1px solid rgba(255,255,255,.7);border-radius:var(--r-panel);box-shadow:var(--sh-panel);padding:22px}
.screens>.screen:not(.screen-town) .panel .panel2,.screens>.screen:not(.screen-town) .panel .podium-box{background:rgba(255,255,255,.72);border:1px solid var(--line);border-radius:14px}
.h1{font-weight:800;letter-spacing:.01em}
/* panel header: icon tile · title + two-line description · status chips */
.phd{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center;margin:0 0 18px}
.ph-ico{width:64px;height:64px;border-radius:16px;background:linear-gradient(180deg,#fff,#eef2f8);border:1px solid var(--line);box-shadow:0 4px 10px rgba(15,20,30,.08);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.ph-ico img{width:44px;height:44px;object-fit:contain}
.phd .h1{margin:0;font-size:32px;line-height:1;color:var(--text);text-shadow:none}
.phd p{margin:6px 0 0;color:var(--muted);font-size:14px;line-height:1.4;max-width:62ch}
.ph-chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;align-self:start}
.pc{display:inline-flex;align-items:center;gap:6px;min-height:32px;border:1px solid var(--line2);background:rgba(255,255,255,.8);border-radius:999px;padding:6px 12px;font:800 11px/1 var(--b);letter-spacing:.06em;text-transform:uppercase;color:var(--text);white-space:nowrap}
.pc.on{background:var(--accent);border-color:transparent;color:#fff;box-shadow:0 4px 12px rgba(255,106,31,.3)}
.pc img,.pc .coin{width:16px;height:16px}
@media (max-width:760px){.phd{grid-template-columns:auto minmax(0,1fr)}.ph-chips{grid-column:1/-1;justify-content:flex-start}.ph-ico{width:52px;height:52px;border-radius:14px}.ph-ico img{width:36px;height:36px}.phd .h1{font-size:24px}.phd p{font-size:13px}}
/* body: list left (~62%), side column right; one column on phones */
.pcols{display:grid;grid-template-columns:minmax(0,62fr) minmax(0,38fr);gap:16px;align-items:start}
@media (max-width:900px){.pcols{grid-template-columns:minmax(0,1fr)}}
.psec{background:rgba(255,255,255,.55);border:1px solid var(--line);border-radius:16px;padding:12px}
.psec+.psec{margin-top:12px}
.psec-h{display:flex;align-items:center;gap:8px;margin:2px 4px 10px}
.psec-h .dot{width:10px;height:10px;border-radius:50%;background:var(--c,var(--gold));flex:0 0 auto}
.psec-h b{font:800 13px/1 var(--b);letter-spacing:.08em;text-transform:uppercase;color:var(--text)}
.psec-h .cnt{margin-left:auto;border:1px solid var(--line2);background:rgba(255,255,255,.85);border-radius:8px;padding:5px 9px;font:800 10.5px/1 var(--b);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.prow{display:grid;grid-template-columns:56px minmax(0,1fr) auto 18px;gap:14px;align-items:center;width:100%;min-height:64px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 14px 10px 10px;text-align:left;font:inherit;color:var(--text);cursor:pointer;transition:border-color .15s,box-shadow .15s}
.prow+.prow,.prow+.pdrawer+.prow{margin-top:8px}
.prow:hover{border-color:var(--line2);box-shadow:0 4px 14px rgba(15,20,30,.07)}
.prow.sel{border-color:var(--gold);box-shadow:0 0 0 3px rgba(255,106,31,.14),0 8px 22px rgba(255,106,31,.16)}
.prow .ti{width:56px;height:56px;border-radius:12px;background:var(--panel2);display:flex;align-items:center;justify-content:center;overflow:hidden}
.prow .ti img{width:40px;height:40px;object-fit:contain}
.prow b{display:block;font:800 16px/1.1 var(--b);letter-spacing:.02em;text-transform:uppercase}
.prow small{display:block;color:var(--muted);font-size:13px;line-height:1.3;margin-top:3px}
.prow .chev{color:#98a2b3;font-size:24px;line-height:1;text-align:center}
.prow.open .chev{transform:rotate(90deg)}
.ppill{display:inline-flex;align-items:center;gap:6px;background:var(--warm-bg);color:var(--gold-d);border-radius:10px;padding:8px 12px;font:800 17px/1 var(--b);white-space:nowrap}
.ppill .coin{width:20px;height:20px}
.ppill.grey{background:var(--panel2);color:var(--muted);font-size:13px}
.pdrawer{margin:8px 0 0;padding:4px 0 2px}
.pdrawer[hidden]{display:none}
.pempty{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;min-height:56px;background:rgba(243,246,250,.8);border:1px dashed var(--line2);border-radius:12px;padding:12px 14px;color:var(--muted)}
.pempty b{display:block;font-size:14px;color:#475467;font-weight:700}.pempty small{display:block;font-size:12.5px}
.pempty .lk{font-size:20px;opacity:.55}
.pside{display:grid;gap:12px;align-content:start}
.pcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px}
.pcard-h{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:center;margin-bottom:12px}
.pcard-h img{grid-row:1/3;width:30px;height:30px;object-fit:contain}
.pcard-h b{font:800 15px/1.1 var(--b);letter-spacing:.04em;text-transform:uppercase}
.pcard-h small{color:var(--muted);font-size:12.5px}
.pcard label{display:block;font:800 10.5px/1 var(--b);letter-spacing:.1em;color:var(--muted);margin:10px 0 5px}
.pcard input{width:100%;min-height:44px;padding:9px 12px}
.pcard .btn-gold{margin-top:14px;min-height:50px;font-size:15px;letter-spacing:.06em}
.pnote{display:grid;grid-template-columns:18px 1fr;gap:8px;align-items:start;background:var(--blue-bg);border-radius:10px;padding:10px 12px;margin-top:12px;font-size:12.5px;line-height:1.4;color:#3c4a66}
.pnote i{font-style:normal;font-weight:800;color:#3b6fd8}
.plink{display:grid;grid-template-columns:30px minmax(0,1fr) 18px;gap:12px;align-items:center;min-height:60px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 14px;text-align:left;width:100%;font:inherit;color:var(--text);cursor:pointer}
.plink img{width:26px;height:26px;object-fit:contain}
.plink b{display:block;font:800 14px/1.15 var(--b);letter-spacing:.04em;text-transform:uppercase}
.plink small{display:block;color:var(--muted);font-size:12.5px;margin-top:2px}
.plink .chev{color:#98a2b3;font-size:22px}
.plink-body{margin-top:8px}
.plink-body[hidden]{display:none}
/* jobs drawers keep the existing job cards, lightened */
.pdrawer .job{background:#fff;border:1px solid var(--line);border-radius:12px}
.pdrawer .jobs{display:grid;gap:8px}
.screen-jobs .panel.wide{max-width:1120px;margin-left:auto;margin-right:auto}
/* top bar per the light reference: one white rounded bar, grey pills, one navy USDC pill, plain bell + gear */
.topbar{background:rgba(255,255,255,.96);border-radius:16px;box-shadow:0 8px 24px rgba(8,12,28,.18)}
.brand .bn{font-weight:900;letter-spacing:.03em}
.brand .bn small{color:var(--muted);font-weight:800;letter-spacing:.14em}
@media (min-width:761px){.brand .bn small{display:block!important;font-size:10.5px;margin-top:2px}}
.status .sb-chip,.status .g-badges{min-height:38px;border-radius:999px;background:var(--panel2);box-shadow:none;border:0;color:var(--text);font:800 12px/1 var(--b);letter-spacing:.05em}
.status #usdc-plus{background:var(--navy);color:#fff;padding:0 16px 0 8px;gap:8px}
.status #usdc-plus .coin{width:22px;height:22px}
.iconbtn{background:transparent;border:0;color:#344054}
.iconbtn:hover{background:var(--panel2)}

/* ---------- 2) in-play HUD (dark navy, bevelled): owl bubble · door labels · prompt · map/♪/? · ◀ TOWN · toasts ---------- */
.bubble,.app.game-on .bubble{background:var(--hud);color:var(--ink);border:2px solid var(--line-gold);border-radius:10px;box-shadow:var(--pix)}
.bubble:after{border-top-color:var(--line-gold)}
.bubble .cursor{color:#ffc84a}
.owl-acts .owl-guest{background:var(--hud-3);border:2px solid var(--line-hud);color:var(--ink)}
.owl-connect,.owl-guest{border-radius:8px;font-family:var(--cond);font-size:14px;letter-spacing:.06em;min-height:40px}
.owl-connect{background:var(--accent);border:2px solid var(--accent-edge);text-shadow:0 1px 0 rgba(110,30,0,.8)}
.g-sign{background:var(--hud);color:#fff;border:2px solid var(--line-gold);border-radius:6px;font:800 13px/1 var(--cond);letter-spacing:.08em;padding:7px 10px;box-shadow:0 3px 0 var(--line-dark);text-shadow:var(--outline)}
.g-prompt{background:var(--accent);border:2px solid var(--accent-edge);border-radius:8px;font:800 17px/1 var(--cond);letter-spacing:.07em;text-shadow:0 2px 0 rgba(110,30,0,.85);box-shadow:inset 0 2px 0 rgba(255,255,255,.3),inset 0 -3px 0 rgba(150,40,0,.45),0 3px 0 #7a2a04,0 8px 18px rgba(0,0,0,.35)}
.g-prompt:hover{background:var(--accent);filter:brightness(1.07)}
.g-map,.g-help,.g-music,.back-town,.g-skip,.g-sound,.g-fast,.g-totown{background:linear-gradient(180deg,#27315c,#1a2242);border:2px solid #3b4780;color:#fff;font-family:var(--cond);font-weight:800;letter-spacing:.07em;text-shadow:var(--outline);box-shadow:inset 0 2px 0 rgba(255,255,255,.09),inset 0 -3px 0 rgba(0,0,0,.35),0 3px 0 var(--line-dark),0 6px 14px rgba(0,0,0,.3)}
.g-map{border-radius:8px;font-size:18px;min-width:88px;height:48px}
.g-help,.g-music{border-radius:8px;font-size:22px;width:48px;height:48px}
.g-music.off{background:var(--hud);color:var(--ink-faint)}
.back-town{border-radius:8px;font-size:16px;min-height:48px}
.g-skip,.g-sound,.g-fast{border-radius:8px;font-size:14px;min-height:44px}
.g-fast.on{background:var(--accent);border-color:var(--accent-edge)}
.g-hint{background:var(--hud-glass);border:2px solid var(--line-hud);border-radius:8px;font:800 13px/1 var(--cond);letter-spacing:.07em}
.g-say{background:var(--hud);color:var(--ink);border:2px solid var(--line-red);border-radius:10px;box-shadow:var(--pix)}
.g-pvp{background:var(--hud);border:2px solid var(--line-gold);border-radius:8px;font-family:var(--cond);font-size:14px}
.g-pvp button{background:var(--hud-3);border:2px solid var(--line-hud);border-radius:6px;font-family:var(--cond);font-size:13px;min-height:36px}
.toast{background:var(--hud);color:var(--ink);border:2px solid var(--line-gold);border-radius:10px;box-shadow:var(--pix);font-weight:600}
.wallet-reading{background:var(--hud);border:2px solid var(--line-blue);border-radius:10px;box-shadow:var(--pix)}
.g-term{background:var(--hud);border-radius:10px}
.g-end,.g-sum,.g-rip-l,.g-choice-p,.g-mapo-p:not(.g-townmap){background:var(--hud);color:var(--ink);border:2px solid var(--line-gold);border-radius:12px;box-shadow:var(--pix)}
.g-end .dim,.g-sum .dim,.g-choice-p .dim,.g-end-n,.g-sum-k,.g-sum-n,.g-rip-l span{color:var(--ink-dim)}
.g-end-k{font:800 40px/1.05 var(--cond);letter-spacing:.04em;color:#ffc84a;text-shadow:var(--outline)}
.g-end-s{font:700 20px/1.35 var(--cond);letter-spacing:.03em;color:#fff}
.g-end-q,.g-rip-l span b,.g-sum-s{color:var(--ink)}
.g-end .btn,.g-sum .btn,.g-choice-p .btn{background:linear-gradient(180deg,#27315c,#1a2242);border:2px solid #3b4780;color:#fff;border-radius:8px;font-family:var(--cond);font-size:16px;letter-spacing:.06em;text-shadow:var(--outline)}
.g-end .btn-gold,.g-sum .btn-gold{background:var(--accent);border-color:var(--accent-edge)}
.g-choice-i,.g-mapo-i,.g-case-i{background:var(--hud-2);border:2px solid var(--line-hud);color:var(--ink);border-radius:8px}
.g-choice-i b,.g-mapo-i b{font-family:var(--cond);font-size:18px;letter-spacing:.06em}
.g-choice-i small,.g-mapo-i small,.g-case-i small,.g-case-i span{color:var(--ink-dim)}
.g-choice-i[data-c="duel"]{border-color:var(--accent-edge);background:linear-gradient(180deg,#3a2b2a,#24203a)}
.g-mapo-h b{color:var(--ink-dim);font-family:var(--cond);font-size:14px}
.g-choice-p .close,.g-mapo-p .close{background:var(--hud-2);border:2px solid var(--line-hud);color:#fff}
@media (max-width:1000px){
  .app.game-on:not(.quicknav) .g-hud{background:var(--hud);border-top:2px solid var(--line-hud);box-shadow:0 -4px 0 var(--line-dark)}
  .app.game-on:not(.quicknav) .g-music{background:linear-gradient(180deg,#27315c,#1a2242);color:#fff}
  .app.game-on:not(.quicknav) .g-music.off{color:var(--ink-faint)}
}
/* element chips with the pixel icon (assets/sprites/ui-icons.png: 6×2 cells of 64 px) */
.ui-ico{display:inline-block;width:22px;height:22px;flex:0 0 auto;background:url(assets/sprites/ui-icons.png?v=0.18.0) 0 0/600% 200% no-repeat;image-rendering:pixelated;vertical-align:middle}
.ui-ico.i-FLAME{background-position:0 0}.ui-ico.i-WAVE{background-position:20% 0}.ui-ico.i-LEAF{background-position:40% 0}.ui-ico.i-SPARK{background-position:60% 0}.ui-ico.i-STONE{background-position:80% 0}.ui-ico.i-MIND{background-position:100% 0}
.ui-ico.i-SHADE{background-position:0 100%}.ui-ico.i-NEUTRAL{background-position:20% 100%}.ui-ico.i-CROWN{background-position:40% 100%}.ui-ico.i-SWORDS{background-position:60% 100%}.ui-ico.i-FLAG{background-position:80% 100%}.ui-ico.i-CARDS{background-position:100% 100%}
.g-el{display:inline-flex;align-items:center;gap:4px;background:var(--hud);color:#fff;border:2px solid var(--c,#8A93A3);border-radius:6px;font:800 12px/1 var(--cond);letter-spacing:.08em;padding:2px 8px 2px 3px;box-shadow:0 2px 0 var(--line-dark);text-shadow:var(--outline)}
.g-el .ui-ico{width:20px;height:20px}
.pf-el{display:inline-flex;align-items:center;gap:3px;background:#fff;color:var(--text);border:1px solid var(--c,#8A93A3);border-radius:999px;font:800 10px/1 var(--b);letter-spacing:.06em;padding:2px 7px 2px 2px}
.pf-el .ui-ico{width:18px;height:18px}
.help-wheel i{font-family:var(--cond);font-size:12px;border-radius:4px;padding:1px 6px}

/* ---------- v0.15.1 duel screen: top plaque · floating player plates · element chips · one button row ---------- */
.g-plaque{position:absolute;left:50%;top:calc(10px + env(safe-area-inset-top));transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;min-width:220px;padding:14px 22px 8px;background:var(--hud);border:2px solid var(--line-gold);border-radius:10px;box-shadow:var(--pix),0 0 0 4px rgba(212,165,68,.18);pointer-events:none;text-align:center;z-index:2}
.g-plaque[hidden]{display:none}
.g-plaque .em{position:absolute;top:-18px;left:50%;transform:translateX(-50%);width:34px;height:34px;filter:drop-shadow(0 2px 0 #070a14)}
.g-plaque .t{font:800 30px/1 var(--cond);letter-spacing:.04em;text-transform:uppercase;color:#fff;text-shadow:var(--outline);white-space:nowrap}
.g-plaque .t .n{color:#ffc84a;margin-right:6px}
.g-plaque .s{font:800 12px/1 var(--cond);letter-spacing:.16em;color:var(--ink-dim);margin-top:4px;white-space:nowrap}
.g-plate{position:absolute;left:0;top:0;display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center;width:min(300px,calc(50vw - 16px));padding:7px 12px 8px 7px;background:var(--hud);border:2px solid var(--line-hud);border-radius:12px;box-shadow:var(--pix);pointer-events:none;z-index:2;transition:opacity .25s}
.g-plate[hidden]{display:none}
.g-plate.me{border-color:var(--line-blue);box-shadow:var(--pix),0 0 0 1px rgba(74,147,255,.35),0 0 18px rgba(74,147,255,.45)}
.g-plate.foe{border-color:var(--line-red);box-shadow:var(--pix),0 0 0 1px rgba(239,74,60,.3),0 0 16px rgba(239,74,60,.35)}
.g-plate .av{grid-row:1/3;width:46px;height:46px;border-radius:50%;background:#0e1428 center/cover no-repeat;image-rendering:pixelated;box-shadow:0 0 0 3px var(--hud-3),0 0 0 5px var(--line-dark)}
.g-plate.me .av{box-shadow:0 0 0 3px var(--line-blue),0 0 0 5px var(--line-dark)}
.g-plate.foe .av{box-shadow:0 0 0 3px var(--line-red),0 0 0 5px var(--line-dark)}
.g-plate .who{font:800 11px/1 var(--cond);letter-spacing:.14em;color:var(--ink-dim)}
.g-plate .nm{display:flex;align-items:center;gap:8px;min-width:0}
.g-plate .nm b{font:800 19px/1.05 var(--cond);letter-spacing:.03em;color:#fff;text-shadow:var(--outline);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.g-plate .val{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;background:#0c1124;border:2px solid #2a6b48;border-radius:999px;padding:2px 8px 2px 3px;font:800 14px/1 var(--cond);letter-spacing:.03em;color:var(--good)}
.g-plate .val img{width:18px;height:18px;image-rendering:pixelated}
.g-plate .hp{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;gap:3px 8px;align-items:center;margin-top:5px}
.g-plate .hp small{font:700 12px/1.1 var(--cond);letter-spacing:.04em;color:var(--ink-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-plate .hp em{font:800 13px/1 var(--cond);font-style:normal;color:#fff;letter-spacing:.04em;white-space:nowrap}
.g-plate .bar{grid-column:1/-1;position:relative;height:10px;border-radius:3px;background:#0a0e1d;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);overflow:hidden}
.g-plate .bar i{position:absolute;left:0;top:0;bottom:0;border-radius:3px}
.g-plate .bar .tr{background:#ef4a3c}
.g-plate .bar .hpv{background:linear-gradient(180deg,#6cf0a8,#26b86a)}
.g-plate .bar .hpv.mid{background:linear-gradient(180deg,#ffd166,#e8a21c)}.g-plate .bar .hpv.low{background:linear-gradient(180deg,#ff8a7d,#e5483a)}
.g-plate .left{font:700 11px/1 var(--cond);letter-spacing:.08em;color:var(--ink-faint)}
.g-duelbar{width:min(760px,calc(100vw - 20px))}
.g-turn{font:800 30px/1 var(--cond);letter-spacing:.06em;text-transform:uppercase;color:#fff;text-shadow:0 3px 0 #070a14,2px 0 0 #070a14,-2px 0 0 #070a14,0 -2px 0 #070a14,0 6px 14px rgba(0,0,0,.5);margin-bottom:10px}
.g-row{display:flex;gap:10px;align-items:stretch;justify-content:center}
.g-acts{display:flex;gap:8px;flex:1 1 auto;justify-content:center}
.g-bt,.g-act{position:relative;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:56px;min-width:0;padding:6px 14px;border:2px solid #3b4780;border-radius:10px;background:linear-gradient(180deg,#27315c,#1a2242);color:#fff;cursor:pointer;font:inherit;box-shadow:inset 0 2px 0 rgba(255,255,255,.09),inset 0 -3px 0 rgba(0,0,0,.35),0 4px 0 var(--line-dark),0 8px 16px rgba(0,0,0,.35);pointer-events:auto}
.g-bt b,.g-act b{display:inline-flex;align-items:center;gap:7px;font:800 18px/1 var(--cond);letter-spacing:.07em;text-transform:uppercase;text-shadow:var(--outline);white-space:nowrap}
.g-bt .ui-ico,.g-act .ui-ico{width:24px;height:24px}
.g-act small,.g-bt small{font:700 11.5px/1.1 var(--cond);letter-spacing:.04em;color:var(--ink-dim);text-align:center;text-shadow:none}
.g-act small.strong,.g-swap small.strong{color:var(--good)}.g-act small.weak,.g-swap small.weak{color:var(--bad)}
.g-act{flex:1 1 0}
.g-bt:hover,.g-act:hover{border-color:#5666a8}
.g-bt:active,.g-act:active{transform:translateY(2px);box-shadow:inset 0 2px 0 rgba(255,255,255,.06),0 2px 0 var(--line-dark)}
.g-bt.primary,.g-act.primary{background:var(--accent);border:2px solid var(--accent-edge);min-height:64px;flex-grow:1.7;box-shadow:inset 0 2px 0 rgba(255,255,255,.32),inset 0 -4px 0 rgba(150,40,0,.5),0 4px 0 #7a2a04,0 10px 22px rgba(255,106,31,.32)}
.g-bt.primary b,.g-act.primary b{font-size:24px;text-shadow:0 2px 0 rgba(110,30,0,.9),1px 0 0 rgba(110,30,0,.6),-1px 0 0 rgba(110,30,0,.6)}
.g-act.primary small{color:#fff3e6}
.g-act[data-m="power"],.g-act[data-m="guard"]{background:linear-gradient(180deg,#27315c,#1a2242)}
.g-act.primary[data-m="power"],.g-act.primary[data-m="guard"]{background:var(--accent)}
.g-act-sp,.g-act.g-act-sp{border-color:var(--line-gold);background:linear-gradient(180deg,#2b2a4a,#1d1f3a)}
.g-act-sp b{color:#ffd77a;font-size:16px}
.g-act-sp.primary{background:var(--accent)}.g-act-sp.primary b{color:#fff}
.g-act-sp.used{border-color:#3b4780;background:var(--hud)}.g-act-sp.used b{color:var(--ink-faint)}
.g-bt.danger{border-color:var(--line-red);background:linear-gradient(180deg,#2a1f3a,#1c1830)}
.g-bt.danger b{color:#ff8a7d}
.g-act[disabled],.g-bt[disabled]{opacity:.45;cursor:default;filter:saturate(.6)}
.g-forfeit{position:static;top:auto;right:auto;flex:0 0 auto;min-height:56px;font:inherit}
.g-pre{display:contents}
.g-pre[hidden]{display:none}
.g-swaprow{grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px}
.g-swap{background:var(--hud);border:2px solid var(--line-hud);border-radius:10px;box-shadow:var(--pix);color:var(--ink);min-height:44px}
.g-swap b{font:800 13px/1.1 var(--cond);letter-spacing:.03em}
.g-swap small{color:var(--ink-dim)}
.g-swap small.sp{color:#ffd77a}
.g-swap.lead{border-color:var(--line-blue)}
.g-swap.back{background:var(--hud-2)}
.g-vs,.g-ko,.g-lc{font-family:var(--cond);font-weight:800}
.g-vs{font-size:62px;color:#ffc84a;text-shadow:0 4px 0 #070a14,3px 0 0 #070a14,-3px 0 0 #070a14,0 -3px 0 #070a14}
.g-ko{font-size:60px;text-shadow:0 4px 0 #070a14,3px 0 0 #070a14,-3px 0 0 #070a14,0 -3px 0 #070a14}
.g-end-s{font-family:var(--cond);font-weight:700;letter-spacing:.03em}
@media (max-width:760px){
  .g-plaque{min-width:0;padding:11px 14px 6px}.g-plaque .t{font-size:22px}.g-plaque .s{font-size:10.5px;letter-spacing:.12em}.g-plaque .em{width:28px;height:28px;top:-14px}
  .g-plate{width:min(250px,calc(100vw - 24px));padding:6px 10px 7px 6px;gap:1px 8px}
  .g-plate .av{width:38px;height:38px}.g-plate .nm b{font-size:16px}.g-plate .val{font-size:12.5px}
  .g-duelbar{width:calc(100vw - 16px)}
  .g-turn{font-size:22px;margin-bottom:6px}
  .g-row{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
  .g-acts{display:contents}
  .g-act,.g-bt{min-height:50px;padding:5px 6px}
  .g-act b,.g-bt b{font-size:16px;gap:5px}.g-act small{font-size:10.5px}
  .g-act.primary,.g-bt.primary{grid-column:1/-1;order:9;min-height:60px}
  .g-act.primary b,.g-bt.primary b{font-size:22px}
  .g-pre .g-bt:not(.primary){grid-column:span 1}
  .g-row.pre{grid-template-columns:1fr 1fr}
  .g-forfeit{order:8}
}
/* ---------- v0.15.1 way back + TOWN MAP ---------- */
.g-totown{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;min-height:44px;padding:0 16px;border-radius:8px;font-size:17px;cursor:pointer;color:#fff}
.g-totown[hidden]{display:none}
.g-mapo-p.g-townmap{width:min(1000px,100%);max-height:calc(100dvh - 24px);overflow:auto;padding:18px;background:var(--panel-frost);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.7);border-radius:var(--r-panel);box-shadow:var(--sh-panel);color:var(--text)}
.g-tm-h{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;margin-bottom:14px}
.g-tm-h .ph-ico{width:52px;height:52px}
.g-tm-h b{display:block;font:800 26px/1 var(--b);letter-spacing:.01em;text-transform:uppercase;color:var(--text)}
.g-tm-h small{display:block;font-size:13px;color:var(--muted);margin-top:4px}
.g-tm-h small b{display:inline;font-size:13px;letter-spacing:.04em;color:var(--gold-d)}
.g-tm-h .close{position:static;display:block;min-width:44px;min-height:44px}
.g-tm-wrap{position:relative;width:100%;aspect-ratio:1536/1024;border-radius:14px;overflow:hidden;background:#1d3a22;border:1px solid var(--line);box-shadow:0 6px 18px rgba(15,20,30,.12)}
.g-tm-wrap>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.g-pin{position:absolute;transform:translate(-50%,-100%);display:inline-flex;align-items:center;gap:5px;min-height:34px;padding:4px 10px;border:2px solid var(--line-gold);border-radius:6px;background:var(--hud);color:#fff;font:800 14px/1 var(--cond);letter-spacing:.07em;text-shadow:var(--outline);box-shadow:0 3px 0 var(--line-dark),0 6px 14px rgba(0,0,0,.4);cursor:pointer;white-space:nowrap}
.g-pin:after{content:"";position:absolute;left:50%;bottom:-8px;margin-left:-6px;border:6px solid transparent;border-top-color:var(--line-gold);border-bottom:0}
.g-pin:hover,.g-pin:focus-visible{background:var(--hud-3);outline:0}
.g-pin.here{border-color:var(--line-blue)}.g-pin.here:after{border-top-color:var(--line-blue)}
.g-pin i.n{display:inline-flex;align-items:center;min-height:18px;border-radius:4px;background:var(--accent);border:1px solid var(--accent-edge);font:800 11px/1 var(--cond);font-style:normal;padding:0 5px}
.g-you{position:absolute;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:50%;background:#1b2340 center/cover no-repeat;image-rendering:pixelated;box-shadow:0 0 0 3px var(--line-blue),0 0 0 5px var(--line-dark),0 0 18px rgba(74,147,255,.7);pointer-events:none}
.g-you b{position:absolute;left:50%;top:100%;transform:translateX(-50%);margin-top:7px;background:var(--line-blue);color:#fff;border-radius:4px;padding:3px 6px;font:800 11px/1 var(--cond);letter-spacing:.08em;white-space:nowrap;text-shadow:0 1px 0 rgba(0,0,0,.5)}
.g-tm-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;margin-top:14px}
.g-tm-i{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:12px;align-items:center;text-align:left;border:1px solid var(--line);border-radius:12px;background:#fff;padding:8px 10px;color:var(--text);cursor:pointer;min-height:60px;font:inherit}
.g-tm-i:hover{border-color:var(--line2);box-shadow:0 4px 14px rgba(15,20,30,.07)}
.g-tm-i .ti{width:48px;height:48px;border-radius:10px;background:var(--panel2);display:flex;align-items:center;justify-content:center}
.g-tm-i .ti img{width:34px;height:34px;object-fit:contain}
.g-tm-i b{display:block;font:800 15px/1.1 var(--b);letter-spacing:.02em}.g-tm-i small{display:block;color:var(--muted);font-size:12.5px;line-height:1.3;margin-top:2px}
.g-tm-i .go{font:800 14px/1 var(--b);letter-spacing:.05em;color:#fff;background:var(--accent);border-radius:8px;padding:10px 12px;min-width:56px;text-align:center}
.g-tm-i.here{border-color:var(--line-blue);box-shadow:0 0 0 3px rgba(74,147,255,.15)}.g-tm-i.here .go{background:var(--blue-bg);color:#2f6bd6}
.g-tm-i i.n{font-style:normal;color:var(--gold-d);font-size:12px}
@media (max-width:760px){.g-mapo{padding:8px}.g-pin{min-height:26px;padding:2px 6px;font-size:11px}.g-pin:after{display:none}.g-tm-list{grid-template-columns:1fr}.g-you{width:28px;height:28px}.g-you b{font-size:9.5px}.g-tm-h b{font-size:22px}}

/* =====================================================================================================================
   v0.16.0 DEPTH + COLOUR (owner: "more 3D and different shades so it all looks poppy and alive — the whole UI").
   Colour families, each 4 steps: tint (bg) · base · lip (darker shade under a raised thing) · ink (text on its tint).
   Depth: buttons are chunky game buttons (gradient face, 1 px top highlight, 4 px lip, drop shadow; press = 3 px down),
   cards/rows have a 3 px lip, inputs are inset wells, panels sit on a 6 px lip with a tinted header band and a tray.
   ===================================================================================================================== */
:root{
  --or-t:#FFEADB; --or:#E85A12; --or-hi:#FF9445; --or-l:#A9400A; --or-i:#97350C; --or-deep:#C8470A;
  --vi-t:#EDE6FF; --vi:#6A4BF5; --vi-hi:#8E78FF; --vi-l:#3F22BF; --vi-i:#4A2DB0;
  --gr-t:#DDF6E7; --gr:#0F8A4C; --gr-hi:#26B868; --gr-l:#075A30; --gr-i:#0A5A33;
  --bl-t:#E1ECFF; --bl:#2463D6; --bl-hi:#4D8AF6; --bl-l:#153F92; --bl-i:#173F8F;
  --go-t:#FFF1CC; --go:#E09B10; --go-hi:#FFC845; --go-l:#9C6500; --go-i:#704700;
  --rd-t:#FFE3DF; --rd:#D63A2B; --rd-hi:#F26556; --rd-l:#9A2015; --rd-i:#931C12;
  --pu-t:#F3E4FF; --pu:#9142CC; --pu-hi:#B46DEA; --pu-l:#5E2089; --pu-i:#62209A;
  --te-t:#DBF4F1; --te:#0B7F7A; --te-hi:#20AFA6; --te-l:#05504D; --te-i:#08524E;
  --text:#1E2140; --muted:#535A78; --faint:#7A8099;
  --panel:#FFFDF8; --panel-frost:rgba(255,252,245,.96); --panel2:#F7F2EA; --panel3:#EFE8DC; --tray:#EEE6D8; --line:#E5DCCB; --line2:#D3C7B1; --lip:#D7CBB5;
  --gold:#E85A12; --gold-d:#97350C; --gold-l:#FF8A45;
  --accent:linear-gradient(180deg,#FF9445 0%,#E85A12 58%,#D24C0B 100%); --accent-solid:#E85A12; --accent-edge:#C9500F;
  --mint:#0F8A4C; --mint-d:#0A5A33; --coral:#D63A2B; --coral-d:#931C12; --cyan:#2463D6;
  --good-bg:var(--gr-t); --bad-bg:var(--rd-t); --warm-bg:var(--or-t); --blue-bg:var(--bl-t); --violet:var(--vi-i); --violet-bg:var(--vi-t);
  --hi:inset 0 1px 0 rgba(255,255,255,.6);
  --sh-panel:0 6px 0 #CBBEA6,0 30px 60px rgba(14,16,40,.38);
}
body{color:var(--text)}
/* ---- chunky game buttons ---- */
.btn,.btn-connect,.owl-connect,.owl-guest{--face:linear-gradient(180deg,#FFFFFF 0%,#F4EEE3 100%);--lipc:var(--lip);--rim:var(--line2);--ink:var(--text)}
.btn{position:relative;background:var(--face);color:var(--ink);border:1px solid var(--rim);border-radius:12px;box-shadow:var(--hi),0 4px 0 var(--lipc),0 9px 14px rgba(30,33,64,.16);font-weight:800;letter-spacing:.04em;text-transform:uppercase;min-height:48px;margin-bottom:4px;text-shadow:none;transition:transform .06s,box-shadow .06s,filter .12s}
.btn:hover{background:var(--face);border-color:var(--rim);filter:brightness(1.05) saturate(1.05)}
.btn:active{transform:translateY(3px);box-shadow:var(--hi),0 1px 0 var(--lipc),0 3px 6px rgba(30,33,64,.16)}
.btn-gold,.btn-connect,.owl-connect,.g-prompt{--face:var(--accent);--lipc:var(--or-l);--rim:#C24A0C;--ink:#fff}
.btn-gold{font-size:19px;text-shadow:0 1px 0 rgba(110,30,0,.55)}
.btn-phantom{--face:linear-gradient(180deg,var(--vi-hi),var(--vi));--lipc:var(--vi-l);--rim:#4D31D4;--ink:#fff;font-size:19px}
.btn-green{--face:linear-gradient(180deg,var(--gr-hi),var(--gr));--lipc:var(--gr-l);--rim:#0A6B3A;--ink:#fff}
.btn-coral{--face:linear-gradient(180deg,var(--rd-hi),var(--rd));--lipc:var(--rd-l);--rim:#AE2A1D;--ink:#fff}
.btn-guest,.owl-guest{--face:linear-gradient(180deg,var(--te-hi),var(--te));--lipc:var(--te-l);--rim:#07605C;--ink:#fff}
.btn[disabled]{opacity:.55;filter:saturate(.55)}
.btn-connect{background:var(--face);color:#fff;border:1px solid var(--rim);border-radius:12px;box-shadow:var(--hi),0 4px 0 var(--lipc),0 8px 14px rgba(30,33,64,.18);font-size:17px;margin-bottom:4px;text-shadow:0 1px 0 rgba(110,30,0,.55)}
.btn-connect:hover{background:var(--face);filter:brightness(1.05)}
.btn-connect:active{transform:translateY(3px);box-shadow:var(--hi),0 1px 0 var(--lipc)}
.owl-connect,.owl-guest{background:var(--face);color:#fff;border:1px solid var(--rim);box-shadow:var(--hi),0 3px 0 var(--lipc);min-height:40px;margin-bottom:3px;text-shadow:0 1px 0 rgba(0,0,0,.35)}
.owl-acts .owl-guest{--face:linear-gradient(180deg,var(--te-hi),var(--te));background:var(--face);border-color:#07605C}
/* ---- chips + pills: filled gradient with a 2 px lip ---- */
.pc,.tag,.chip-btn,.vtag,.tier,.job .st{--cf:linear-gradient(180deg,#FFFFFF,#F2EBDF);--cl:var(--lip);--ci:var(--text);background:var(--cf);color:var(--ci);border:1px solid rgba(0,0,0,.06);box-shadow:var(--hi),0 2px 0 var(--cl);border-radius:8px}
.pc{min-height:32px;margin-bottom:2px}
.pc-orange,.tag-gold,.chip-btn.on{--cf:linear-gradient(180deg,#F57A35,var(--or-deep));--cl:var(--or-l);--ci:#fff}
.pc-green,.tag-mint,.vtag{--cf:linear-gradient(180deg,#169552,#0B7340);--cl:var(--gr-l);--ci:#fff}
.pc-blue{--cf:linear-gradient(180deg,var(--bl-t),#CFE0FF);--cl:#A9C3F2;--ci:var(--bl-i)}
.pc-gold{--cf:linear-gradient(180deg,#FFF6DB,var(--go-t));--cl:#E8C77A;--ci:var(--go-i)}
.pc-violet{--cf:linear-gradient(180deg,var(--vi-t),#DED3FF);--cl:#BBA8F5;--ci:var(--vi-i)}
.pc-locked{--cf:repeating-linear-gradient(135deg,#F5EFE5 0 8px,#ECE4D6 8px 16px);--ci:var(--muted);cursor:pointer}
.tag-coral{--cf:linear-gradient(180deg,var(--rd-hi),var(--rd));--cl:var(--rd-l);--ci:#fff}
.tag-soon{--cf:linear-gradient(180deg,#FFFFFF,#F3EDFF);--cl:#C9B8F2;--ci:var(--pu-i)}
.src-cb .tag-soon{--cf:linear-gradient(180deg,#FFFFFF,var(--bl-t));--cl:#A9C3F2;--ci:var(--bl-i)}
.chip-btn{font:800 12px/1 var(--b);letter-spacing:.06em;padding:9px 13px;min-height:36px;margin-bottom:2px}
.tier.epic{--cf:var(--or-t);--ci:var(--or-i);--cl:#F2C3A3}.tier.rare{--cf:var(--bl-t);--ci:var(--bl-i);--cl:#A9C3F2}.tier.uncommon{--cf:var(--gr-t);--ci:var(--gr-i);--cl:#A7DDBE}
.vtag{font-size:10px;padding:2px 7px;border-radius:6px}
.grade{background:linear-gradient(180deg,#FFF1E6,var(--or-t));color:var(--or-i);box-shadow:0 2px 0 #F2C3A3;border-radius:6px}
/* ---- inputs are wells ---- */
input,select,.link-form input,.vault-tools input,.vault-tools select,.bounty-box input,.comp-panel input,#job-body input,#job-body select,.pf-colhead select,.pcard input{background:#F4EEE4!important;border:1px solid #D9CDB8!important;box-shadow:inset 0 2px 4px rgba(30,33,64,.14),inset 0 -1px 0 rgba(255,255,255,.7)!important;color:var(--text)!important;border-radius:10px!important}
input:focus,select:focus{outline:2px solid var(--or-hi);outline-offset:1px}
/* ---- panels: lip + header band + tray ---- */
.screens>.screen:not(.screen-town) .panel,.overlay .panel,.g-mapo-p.g-townmap{background:var(--panel-frost);border:1px solid #FFFFFF;box-shadow:var(--sh-panel)}
.phd{margin:-22px -22px 18px;padding:18px 22px 16px;background:linear-gradient(180deg,#FFF6EA 0%,#FBEBD7 100%);border-bottom:1px solid #F0DEC5;border-radius:20px 20px 0 0;box-shadow:inset 0 -2px 0 rgba(255,255,255,.6)}
.ph-ico{background:linear-gradient(180deg,#FFFFFF,#F4ECDF);border:1px solid var(--line);box-shadow:var(--hi),0 3px 0 var(--lip),0 6px 12px rgba(30,33,64,.12)}
.phd .h1{color:var(--text);font-size:33px;letter-spacing:.005em;text-shadow:0 2px 0 rgba(255,255,255,.9)}
.phd p{color:#454B68;font-size:14.5px}
.psec{background:var(--tray);border:1px solid #E2D7C4;box-shadow:inset 0 2px 5px rgba(60,45,20,.08)}
.psec-h b{color:var(--text)}
.psec-h .cnt{background:linear-gradient(180deg,#FFFFFF,#F2EBDF);border:1px solid rgba(0,0,0,.06);box-shadow:0 2px 0 var(--lip);color:#454B68}
.prow,.plink,.pcard,.g-tm-i{background:#FFFFFF;border:1px solid #E7DDCC;box-shadow:var(--hi),0 3px 0 #DDD0BA,0 6px 12px rgba(30,33,64,.07)}
.prow:hover,.plink:hover,.g-tm-i:hover{border-color:#D8C9AF;box-shadow:var(--hi),0 3px 0 #D3C4A9,0 8px 16px rgba(30,33,64,.1)}
.prow.sel{border-color:var(--or);box-shadow:0 0 0 3px rgba(232,90,18,.18),0 3px 0 var(--or-l),0 10px 24px rgba(232,90,18,.22)}
.prow:active,.plink:active,.g-tm-i:active{transform:translateY(2px);box-shadow:0 1px 0 #DDD0BA}
.prow .ti,.g-tm-i .ti{background:linear-gradient(180deg,var(--or-t),#FFD9BF);box-shadow:inset 0 -2px 0 rgba(0,0,0,.06)}
.prow .ti.ti-blue{background:linear-gradient(180deg,var(--bl-t),#CBDDFF)}
.ppill{background:linear-gradient(180deg,#FFF0E3,var(--or-t));color:var(--or-i);box-shadow:var(--hi),0 2px 0 #F2C3A3}
.ppill.grey{background:var(--panel3);color:var(--muted);box-shadow:0 2px 0 var(--lip)}
.pempty{background:rgba(255,255,255,.55);border:1px dashed var(--line2)}
.pnote{background:linear-gradient(180deg,var(--bl-t),#D9E7FF);color:var(--bl-i);box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.pnote i{color:var(--bl)}
/* panel icons: assets/sprites/panel-icons.png, 6×2 cells of 96 px */
.pi{display:inline-block;width:40px;height:40px;flex:0 0 auto;background:url(assets/sprites/panel-icons.png?v=0.18.0) 0 0/600% 200% no-repeat;vertical-align:middle}
.pi-clip{background-position:0 0}.pi-scout{background-position:20% 0}.pi-crate{background-position:40% 0}.pi-check{background-position:60% 0}.pi-chart{background-position:80% 0}.pi-target{background-position:100% 0}
.pi-lock{background-position:0 100%}.pi-doc{background-position:20% 100%}.pi-book{background-position:40% 100%}.pi-vault{background-position:60% 100%}.pi-trophy{background-position:80% 100%}.pi-pin{background-position:100% 100%}
.ph-ico .pi{width:46px;height:46px}.pcard-h .pi{grid-row:1/3;width:34px;height:34px}.plink .pi{width:30px;height:30px}.pempty .pi{width:30px;height:30px;opacity:.75}
@media (max-width:760px){.phd{margin:-16px -14px 14px;padding:14px 14px 12px}.ph-ico .pi{width:36px;height:36px}}
/* ---- top bar: same lip treatment ---- */
.topbar{background:linear-gradient(180deg,#FFFFFF,#FBF6EE);border:1px solid #FFFFFF;box-shadow:0 4px 0 #CBBEA6,0 12px 26px rgba(14,16,40,.28)}
.brand-logo{height:44px;width:auto;image-rendering:pixelated;display:block}
.brand .bn{font:900 26px/1 var(--b);letter-spacing:.01em;text-transform:none!important;color:var(--text)}
.brand .bn small{text-transform:uppercase}
.brand .bn small{font:800 10px/1 var(--b);letter-spacing:.16em;color:var(--or-i);text-transform:uppercase}
@media (max-width:760px){.brand .bn{display:none}.brand-logo{height:36px}}
.status .sb-chip,.status .g-badges,#chip-cards,.btn-profile{background:linear-gradient(180deg,#FFFFFF,#F2EBDF);border:1px solid rgba(0,0,0,.06);box-shadow:var(--hi),0 2px 0 var(--lip)}
.status #usdc-plus{background:linear-gradient(180deg,#2A2F57,#1E2140);color:#fff;border:1px solid #14172F;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 2px 0 #0B0D1E}
.btn-profile .pf-txt small{color:var(--gr-i)}
.sb-chip,.g-qchip{background:linear-gradient(180deg,#FFFFFF,#F2EBDF);border:1px solid rgba(0,0,0,.06);box-shadow:var(--hi),0 2px 0 var(--lip),0 4px 10px rgba(14,16,40,.18)}
.sb-chip b,.g-qchip b,.pulls-head a,.town-strip b,.rail-head a,.demo b,.lb .sc,.podium .sc,.podium .rk,.lb li:nth-child(-n+3) .rk{color:var(--or-i)}
.sb-hint{background:linear-gradient(180deg,#F57A35,var(--or-deep));box-shadow:0 2px 0 var(--or-l)}
/* ---- town collection panel + rail pick up the same depth ---- */
.screen-town .panel,.town-panel,.rail-quests{background:var(--panel-frost);border:1px solid #FFFFFF;box-shadow:0 5px 0 #CBBEA6,0 18px 36px rgba(14,16,40,.3)}
.pull,.qcard,.slabcard,.lb li,.job,.card-row,.lead,.done-row,.bounty,.rival-cards .rc,.send-card,.comp-card,.help-row,.g-case-i,.g-q,.pf-st{background:#FFFFFF;border:1px solid #E7DDCC;box-shadow:var(--hi),0 3px 0 #DDD0BA}
.slabcard.sel{border-color:var(--or);box-shadow:0 0 0 3px rgba(232,90,18,.18),0 3px 0 var(--or-l)}
.lb li.me{background:linear-gradient(180deg,#FFF4EA,var(--or-t));box-shadow:0 0 0 2px var(--or),0 3px 0 var(--or-l)}
.event{background:linear-gradient(180deg,#2A2F57,#1E2140);box-shadow:0 4px 0 #0B0D1E,0 12px 24px rgba(14,16,40,.3)}
.pf-st b{color:var(--text)}
.pf-hidden{margin:6px 0 0;font-size:12.5px;color:var(--muted)}
/* ---- LINK panel: coloured sources, ripper chips, toggle row, success card ---- */
.link-sources{display:grid;gap:10px;align-content:start}
.source.card-row{padding:12px 14px}
.src-cc{background:linear-gradient(180deg,#FFF9E8,var(--go-t));border-color:#F0D58E;box-shadow:var(--hi),0 3px 0 #E2BE62}
.src-cc b{color:var(--go-i)}
.src-ct{background:linear-gradient(180deg,#FCF6FF,var(--pu-t));border-color:#DCC0F2;box-shadow:var(--hi),0 3px 0 #CDA6EA}
.src-ct b{color:var(--pu-i)}
.src-cb{background:linear-gradient(180deg,#F6F9FF,var(--bl-t));border-color:#C3D6F7;box-shadow:var(--hi),0 3px 0 #A9C3F2}
.src-cb b{color:var(--bl-i)}
.source.muted{opacity:1;filter:saturate(.75)}
.source.muted small{color:var(--muted)}
.link-next .steps{margin:0;padding-left:22px;display:grid;gap:8px;font-size:13.5px;line-height:1.4;color:#3B4160}
.link-next .steps b{color:var(--text)}
.divider{border-top:0;display:flex;align-items:center;gap:8px;font:800 11.5px/1 var(--b);letter-spacing:.08em;text-transform:uppercase;color:#454B68;margin:14px 0 10px}
.divider .bar{width:4px;height:16px;border-radius:2px;background:var(--or)}.divider .bar-gold{background:var(--go)}
.link-form label{font:800 11px/1 var(--b);letter-spacing:.1em;color:#454B68}
.demo-list{display:flex;flex-wrap:wrap;gap:8px}
.demo{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:4px 5px 4px 12px;border-radius:12px;border:1px solid rgba(0,0,0,.06);font:700 13.5px/1 var(--b);color:var(--text);box-shadow:var(--hi),0 3px 0 var(--cl,var(--lip));background:var(--cf,#fff);cursor:pointer}
.demo b{display:inline-flex;align-items:center;min-height:28px;padding:0 8px;border-radius:8px;color:#fff!important;font-size:12px;background:var(--cb,var(--or-deep))}
.demo-0{--cf:linear-gradient(180deg,#FFF8EE,var(--or-t));--cl:#F2C3A3;--cb:var(--or-deep)}
.demo-1{--cf:linear-gradient(180deg,#F6F9FF,var(--bl-t));--cl:#A9C3F2;--cb:var(--bl)}
.demo-2{--cf:linear-gradient(180deg,#F4FCF7,var(--gr-t));--cl:#A7DDBE;--cb:var(--gr)}
.demo-3{--cf:linear-gradient(180deg,#FCF6FF,var(--pu-t));--cl:#DCC0F2;--cb:var(--pu)}
.demo:active{transform:translateY(2px);box-shadow:0 1px 0 var(--cl,var(--lip))}
.quicknav-set{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;margin-top:14px;padding:12px 14px;border-radius:12px;background:#FFFFFF;border:1px solid #E7DDCC;box-shadow:var(--hi),0 3px 0 #DDD0BA;cursor:pointer;font:400 14px/1.35 var(--b);letter-spacing:0;min-height:56px}
.quicknav-set b{display:block;font:800 14px/1.2 var(--b);letter-spacing:.02em;text-transform:none;color:var(--text)}
.quicknav-set small{display:block;font:400 12.5px/1.35 var(--b);letter-spacing:0;color:var(--muted)}
.quicknav-set input{position:absolute;opacity:0;width:1px;height:1px}
.quicknav-set .sw{position:relative;width:50px;height:30px;border-radius:999px;background:#D9CDB8;box-shadow:inset 0 2px 4px rgba(30,33,64,.2);transition:background .15s}
.quicknav-set .sw:after{content:"";position:absolute;left:3px;top:3px;width:24px;height:24px;border-radius:50%;background:linear-gradient(180deg,#FFFFFF,#EDE6DA);box-shadow:0 2px 0 rgba(0,0,0,.18);transition:left .15s}
.quicknav-set input:checked+.sw{background:var(--gr)}
.quicknav-set input:checked+.sw:after{left:23px}
.quicknav-set input:focus-visible+.sw{outline:2px solid var(--or-hi);outline-offset:2px}
.link-result{border-top:0;margin-top:18px;padding:20px 16px 18px;border-radius:18px;background:radial-gradient(120% 140% at 50% 0%,#FFFDF5 0%,#FFF2D6 55%,#FFE4BC 100%);border:1px solid #FFE1A8;box-shadow:0 0 0 4px rgba(255,200,69,.25),0 5px 0 #E8B95E,0 16px 34px rgba(232,140,18,.28);text-align:center}
.link-complete{font:900 clamp(40px,6vw,64px)/1 var(--b);letter-spacing:.01em;background:linear-gradient(180deg,#FFD24A 0%,#FF9A2E 45%,#E85A12 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:2px #3A1A06;filter:drop-shadow(0 4px 0 #3A1A06) drop-shadow(0 8px 14px rgba(150,60,0,.3));margin:10px 0 8px}
#link-summary{color:#3B4160;font-weight:600}
#link-verified.tag{--cf:linear-gradient(180deg,#1BA35C,var(--gr));--cl:var(--gr-l);--ci:#fff}
@media (min-width:901px){.link-grid{align-items:start}}
/* ---- job board drawers: the existing job cards ---- */
.pdrawer .job{background:#FFFFFF;border:1px solid #E7DDCC;box-shadow:var(--hi),0 3px 0 #DDD0BA}
/* ---- a few overlays that are panels (quests, badge case) take the light surface ---- */
.g-choice-p.g-quests,.g-choice-p.g-badgecase{background:var(--panel-frost);color:var(--text);border:1px solid #FFFFFF;border-radius:20px;box-shadow:var(--sh-panel)}
.g-choice-p.g-quests .g-mapo-h b,.g-choice-p.g-badgecase .g-mapo-h b{color:var(--text);font:800 18px/1 var(--b);letter-spacing:.04em}
.g-choice-p.g-quests .dim,.g-choice-p.g-badgecase .dim,.g-choice-p.g-badgecase small{color:var(--muted)}
.g-choice-p.g-quests .close,.g-choice-p.g-badgecase .close{background:#fff;border:1px solid var(--line);color:var(--text)}
.g-badgecase .g-case-i{background:#fff;color:var(--text);border:1px solid #E7DDCC}
.g-q-streak{background:linear-gradient(180deg,#FFF4E8,var(--or-t));box-shadow:0 3px 0 #F2C3A3}
.g-q.done{background:linear-gradient(180deg,#F1FBF5,var(--gr-t));box-shadow:0 3px 0 #A7DDBE}
/* ---- in-play HUD buttons get the 4 px lip too (navy face, darker navy lip, gold/blue/red rim) ---- */
.g-map,.g-help,.g-music,.back-town,.g-skip,.g-sound,.g-fast,.g-totown,.g-bt,.g-act{box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 4px 0 #0A0E1E,0 9px 16px rgba(0,0,0,.35);margin-bottom:4px}
.g-map:active,.g-help:active,.g-music:active,.back-town:active,.g-totown:active,.g-bt:active,.g-act:active{transform:translateY(3px);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 1px 0 #0A0E1E}
.g-bt.primary,.g-act.primary{box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 4px 0 var(--or-l),0 10px 22px rgba(232,90,18,.35)}
.g-act-sp{border-color:var(--line-gold);box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 4px 0 #5C4210,0 9px 16px rgba(0,0,0,.35)}
.g-bt.danger{box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 4px 0 #4A1410,0 9px 16px rgba(0,0,0,.35)}
.g-totown{border-color:var(--line-gold)}
.app.battle-on .toast{bottom:auto;top:calc(110px + env(safe-area-inset-top))}
.iconbtn{width:44px;height:44px}
.brand .brand-logo{height:44px;width:auto}
@media (max-width:760px){
  .topbar{gap:5px;padding:6px 6px 6px 8px}
  .status{gap:4px}
  .brand .brand-logo{height:34px}
  .btn-connect{font-size:12.5px;letter-spacing:.03em;padding:0 9px;gap:5px;min-height:44px}
  .btn-connect img{width:18px;height:18px}
  #chip-cards{padding:3px 8px;font-size:10px}#chip-cards b{font-size:11px}
  .iconbtn{width:44px;height:44px}
  .btn-profile{padding:3px 8px 3px 4px;gap:6px}.btn-profile .pf-txt b{font-size:13px}.btn-profile .pf-txt small{font-size:10px}
}
@media (max-width:760px){.g-act-sp{grid-column:auto;order:0;min-height:50px}.g-act-sp b{font-size:14px}}
/* profile + HOW TO PLAY: the same tinted header band as every panel */
.profile-panel .pf-head{margin:-22px -22px 14px;padding:18px 22px 14px;background:linear-gradient(180deg,#FFF6EA 0%,#FBEBD7 100%);border-bottom:1px solid #F0DEC5;border-radius:20px 20px 0 0}
.profile-panel .pf-head small{color:var(--or-i)}
.help-panel>h2{margin:-22px -22px 14px;padding:18px 22px 14px;background:linear-gradient(180deg,#FFF6EA 0%,#FBEBD7 100%);border-bottom:1px solid #F0DEC5;border-radius:20px 20px 0 0;font:800 26px/1 var(--b);color:var(--text)}
@media (max-width:520px){.profile-panel .pf-head,.help-panel>h2{margin:-14px -14px 12px;padding:14px}}
@media (max-width:760px){.topbar{gap:4px;padding:6px 5px 6px 7px}.status{gap:3px}}
/* ---------- v0.17.0: the panel anatomy on every panel body (Vault, Book, Arena, League, Profile) ---------- */
.vault-side{align-self:start;position:sticky;top:10px;display:grid;gap:10px;align-content:start}
.vault-side[hidden]{display:none}
.vs-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media (max-width:1000px){.vault-side{position:static}}
.vault-list .psec,.screen-book .psec{margin-top:4px}
.book-packs{display:grid;gap:8px;max-height:620px;overflow:auto;padding:2px 2px 6px}
.plink.sel{border-color:var(--or);box-shadow:0 0 0 3px rgba(232,90,18,.18),0 3px 0 var(--or-l)}
.screen-book .pcols{margin-top:12px}
.pempty-act{grid-template-columns:auto 1fr auto}
@media (max-width:520px){.pempty-act{grid-template-columns:auto 1fr}.pempty-act .btn{grid-column:1/-1}}
.arena-layout .psec{margin-bottom:12px}
.pnote-panel{background:linear-gradient(180deg,var(--bl-t),#D9E7FF)!important;color:var(--bl-i)!important}
.pnote-panel b{color:var(--bl-i)}
.league-cols{margin-top:14px}
.league-grid .podium-box.psec{border-radius:16px}
.pf-cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start;margin-top:4px}
.pf-side{grid-column:2;grid-row:1}.pf-main{grid-column:1;grid-row:1;margin-top:0}
.pf-side .pf-stats{display:grid;grid-template-columns:1fr 1fr;margin:0 0 10px}
.pf-side .pf-st{min-width:0}
.pf-side .pf-actions{display:grid;gap:6px;margin-top:10px}
.pf-side .pf-actions .btn{width:100%;flex:none}
@media (max-width:900px){.pf-cols{grid-template-columns:minmax(0,1fr)}.pf-side,.pf-main{grid-column:auto;grid-row:auto}.pf-side .pf-actions{grid-template-columns:repeat(3,1fr)}.pf-side .pf-actions .btn{font-size:11.5px;padding:8px 6px;min-height:44px}}
.feed-delay{color:var(--rd-i)}
/* phones: CONNECT WALLET's 12.5 px label sits on a deeper orange so it passes AA for normal text */
.btn-connect{--face:linear-gradient(180deg,#D9550F 0%,#C2460A 55%,#B23F08 100%)} /* every size: the label passes AA for normal text (5.0:1) */
/* ---------- v0.18.0 PRIZE DAY: pool chip + REWARDS panel (three boards, ladders, rules) ---------- */
.sb-prize{background:linear-gradient(180deg,#FFF6DB,var(--go-t))!important;color:var(--go-i)!important;box-shadow:var(--hi),0 2px 0 #E2BE62,0 4px 10px rgba(14,16,40,.18)!important}
.sb-prize b{color:var(--or-i)!important}
.prize-panel{width:min(1100px,100%)}
.pz-boards{display:grid;gap:12px;align-content:start}
.pz-how{margin:-4px 4px 10px;font-size:13px;color:#454B68;line-height:1.4}
.pz-rows{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.pz-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto auto;gap:10px;align-items:center;min-height:44px;background:#fff;border:1px solid #E7DDCC;border-radius:10px;padding:6px 10px;box-shadow:var(--hi),0 2px 0 #DDD0BA}
.pz-row.me{border-color:var(--or);box-shadow:0 0 0 2px rgba(232,90,18,.18),0 2px 0 var(--or-l)}
.pz-row.empty{background:rgba(255,255,255,.55);border-style:dashed;box-shadow:none}
.pz-row.empty .pz-who{color:var(--muted);font-weight:600;font-style:italic}
.pz-rk{font:800 15px/1 var(--b);color:var(--or-i)}
.pz-who{font:800 14px/1.2 var(--b);color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pz-sc{font:700 12.5px/1 var(--b);color:#454B68;white-space:nowrap}
.pz-row .ppill{font-size:15px;padding:6px 10px}
.pz-me{margin:10px 4px 0;font-size:13.5px;color:var(--text)}
.pz-rules{margin:0;padding-left:20px;display:grid;gap:7px;font-size:13px;line-height:1.4;color:#3B4160}
.pz-rules b{color:var(--text)}
.prize-panel .pcard .btn{margin-top:10px}
@media (max-width:520px){.pz-row{grid-template-columns:36px minmax(0,1fr) auto;row-gap:2px}.pz-sc{grid-column:2;grid-row:2}.pz-row .ppill{grid-column:3;grid-row:1/3}}
.g-tm-rewards{border-color:#F0D58E;background:linear-gradient(180deg,#FFFBEF,var(--go-t))}
