/* Shared components: modal, toast, background map, jump button */
/* modal, toast, footer */
.overlay{position:fixed;inset:0;z-index:80;background:rgba(10,10,10,.5);display:grid;place-items:center;padding:16px;animation:fadeIn .2s}
@keyframes fadeIn{from{opacity:0}}
.modal{background:var(--surface);border-radius:20px;max-width:480px;width:100%;padding:24px;display:grid;gap:14px;box-shadow:0 20px 60px rgba(0,0,0,.3);animation:up .25s;max-height:calc(100% - 32px);overflow-y:auto}
.modal h2{font-size:1.35rem}
.modal .acts{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
#toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:90;display:grid;gap:8px;width:min(460px,calc(100% - 32px))}
.t{background:var(--ink);color:var(--bg);padding:14px 18px;border-radius:14px;font-weight:500;box-shadow:var(--shadow);animation:up .25s;display:flex;gap:10px;align-items:center}
.t svg{width:22px;height:22px;flex:none;color:var(--good)}
.bg-map{position:fixed;left:50%;top:50%;width:180vmax;height:144vmax;margin:-72vmax 0 0 -90vmax;z-index:-1;pointer-events:none;opacity:var(--bg-op);will-change:transform;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.bg-map svg{display:block;width:100%;height:100%;filter:blur(7px) saturate(1.8) contrast(1.15)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--bg-op:.7}}
:root[data-theme="dark"]{--bg-op:.7}
.jump{position:fixed;right:calc(20px + env(safe-area-inset-right,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:70;display:flex;align-items:center;gap:8px;min-height:56px;padding:0 22px 0 16px;border-radius:999px;border:0;background:var(--accent);color:var(--accent-ink);font-weight:700;font-size:1rem;box-shadow:var(--shadow);opacity:0;transform:translateY(24px) scale(.9);pointer-events:none;transition:opacity .25s,transform .3s cubic-bezier(.2,1.3,.4,1)}
.jump.show{opacity:1;transform:none;pointer-events:auto}
.jump:hover{filter:brightness(1.08)}
.jump svg{width:22px;height:22px;flex:none}
@media (max-width:640px){#toast{bottom:calc(92px + env(safe-area-inset-bottom,0px))}}
