/* ================= Fayoria ================= */
:root{
  color-scheme:dark;
  --ink:#14101c; --ink2:#1a1524; --panel:#211a2d; --panel2:#2a2139; --well:#181320;
  --line:#3a2f4e; --line2:#4d3f67;
  --text:#efe5d6; --muted:#a898b8; --faint:#6e6184;
  --gold:#e9b949; --gold2:#b3841f; --fae:#e07fb4; --moss:#88c57c; --blood:#e2574c; --sky:#6db4e0;
  --r0:#bfb5ca; --r1:#74d38b; --r2:#62abff; --r3:#c880ff; --r4:#ffa93c;
  --f-disp:"Grenze Gotisch","UnifrakturCook",Georgia,serif;
  --f-body:"Alegreya Sans","Segoe UI",system-ui,sans-serif;
  --f-sc:"Alegreya Sans SC","Alegreya Sans","Segoe UI",system-ui,sans-serif;
  --rad:7px;
}
*{box-sizing:border-box}
html,body{margin:0}
[hidden]{display:none!important}
img{max-width:100%}
html{padding-top:env(safe-area-inset-top,0px)}
body{background:var(--ink);color:var(--text);font-family:var(--f-body);font-size:16px;line-height:1.45;min-height:100vh;font-variant-numeric:tabular-nums}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(55% 40% at 10% 0%,rgba(224,127,180,.10),transparent 70%),
             radial-gradient(45% 35% at 95% 5%,rgba(109,180,224,.08),transparent 70%),
             radial-gradient(60% 50% at 50% 110%,rgba(233,185,73,.06),transparent 70%)}
button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}
button:focus-visible,input:focus-visible,g[data-act]:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
h1,h2,h3{margin:0;text-wrap:balance}
.ic{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.sc{font-family:var(--f-sc);letter-spacing:.06em}
.muted{color:var(--muted)} .txt{color:var(--text)} .small{font-size:13px}
.gold{color:var(--gold)} .fae{color:var(--fae)} .moss{color:var(--moss)} .blood{color:var(--blood)} .sky{color:var(--sky)}
.grow{flex:1;min-width:0}
.col,.stack{display:grid;gap:18px;align-content:start}
.stack{gap:10px}
.h2{font-family:var(--f-disp);font-size:34px;font-weight:700;line-height:1}
.h3{font-size:18px;font-weight:800;margin:18px 0 6px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.chips.center{justify-content:center;margin:0}
.nob{border:0!important}

/* ---------- powłoka ---------- */
#app{position:relative;z-index:1}
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:rgba(20,16,28,.93);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.top-in{max-width:1280px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.brand{font-family:var(--f-disp);font-weight:800;font-size:34px;line-height:1;color:var(--gold);letter-spacing:.01em;text-shadow:0 0 18px rgba(233,185,73,.25)}
.who{display:flex;align-items:center;gap:10px;min-width:0}
.who .pt{width:44px;height:44px}
.who b{display:block;font-weight:800;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.who small{color:var(--muted);font-size:13px}
.where{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border-radius:99px;border:1px solid var(--line2);background:var(--well);font-weight:700;font-size:14px}
.where:hover{border-color:var(--gold)}
.vitals{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-left:auto}
.vbar{display:grid;gap:3px;min-width:120px}
.vbar .lab{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted)}
.meter{height:7px;border-radius:4px;background:var(--well);border:1px solid var(--line);overflow:hidden}
.meter.big{height:12px}
.meter i{display:block;height:100%;width:0;border-radius:3px;transition:width .25s}
.meter.xp i{background:linear-gradient(90deg,#3d7fb0,var(--sky))}
.meter.zp i{background:linear-gradient(90deg,#9c4a7b,var(--fae))}
.meter.hp i{background:linear-gradient(90deg,#a3322a,var(--blood))}
.meter.qp i{background:linear-gradient(90deg,var(--gold2),var(--gold))}
.coin{display:flex;align-items:center;gap:6px;font-weight:800;font-size:17px}
.coin .ic{width:19px;height:19px}
.net{font-size:12px;color:var(--faint);display:flex;align-items:center;gap:6px}
.net i{width:8px;height:8px;border-radius:50%;background:var(--faint)}
.net.on i{background:var(--moss);box-shadow:0 0 8px var(--moss)}
.iconbtn{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:1px solid var(--line2);background:var(--well);color:var(--muted);padding:0}
.iconbtn:hover{color:var(--gold);border-color:var(--gold)}
.vol{display:flex;align-items:center;gap:10px;flex:1 1 200px;max-width:320px}
.vol input{flex:1;accent-color:var(--gold);min-width:0}
.vol output{min-width:44px;text-align:right;font-weight:800;color:var(--gold)}
.status{max-width:1280px;margin:0 auto;padding:0 16px 8px;display:flex;flex-wrap:wrap;gap:6px}
.linkbtn{background:none;border:0;padding:0 0 0 6px;color:var(--gold);font-weight:800;text-decoration:underline;font-size:12px}
.linkbtn.cant{color:var(--faint)}

.shell{max-width:1280px;margin:0 auto;padding:18px 16px 40px;display:grid;grid-template-columns:190px minmax(0,1fr);gap:22px}
.nav{display:flex;flex-direction:column;gap:3px;position:sticky;top:calc(env(safe-area-inset-top,0px) + 96px);align-self:start}
.nav button{position:relative;display:flex;align-items:center;gap:12px;padding:9px 12px;border:1px solid transparent;border-radius:var(--rad);background:none;text-align:left;color:var(--muted);font-family:var(--f-disp);font-size:21px;font-weight:500;line-height:1}
.nav button:hover{color:var(--text);background:rgba(255,255,255,.03)}
.nav button[aria-current="page"]{color:var(--gold);background:var(--panel);border-color:var(--line)}
.nav button .ic{width:22px;height:22px}
.nav .dot{margin-left:auto;width:8px;height:8px;border-radius:50%;background:var(--fae);box-shadow:0 0 8px var(--fae)}
main{min-width:0;display:grid;gap:18px;align-content:start}

.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--rad);padding:18px;box-shadow:inset 0 0 0 3px var(--panel),inset 0 0 0 4px rgba(77,63,103,.45)}
.ph{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.ph h2{font-family:var(--f-disp);font-weight:700;font-size:30px;line-height:1;color:var(--text)}
.ph .sub{color:var(--muted);font-size:15px}
.ph .right{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lede{color:var(--muted);max-width:66ch;margin:0}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 16px;border-radius:6px;border:1px solid #f3cf72;background:linear-gradient(180deg,#f0c75c,#c8961f);color:#2a1a05;font-weight:800;font-size:15px;line-height:1.1;box-shadow:0 2px 0 #7a5610,inset 0 1px 0 rgba(255,255,255,.4);white-space:nowrap}
.btn:hover{filter:brightness(1.07)}
.btn:active{transform:translateY(1px);box-shadow:0 1px 0 #7a5610}
.btn:disabled{opacity:.6;cursor:wait}
.btn.ghost{background:var(--panel2);border-color:var(--line2);color:var(--text);box-shadow:0 2px 0 #0e0a14}
.btn.fae{background:linear-gradient(180deg,#ec97c4,#b8558c);border-color:#f5b6d6;color:#2a0b1c;box-shadow:0 2px 0 #6a2450}
.btn.danger{color:var(--blood);border-color:rgba(226,87,76,.5)}
.btn.sm{padding:6px 10px;font-size:13px}
.btn.big{font-size:18px;padding:12px 26px}
.btn.cant,.btn[aria-disabled="true"]{filter:grayscale(.8) brightness(.6);cursor:not-allowed}
.btn .ic{width:16px;height:16px}
.btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.btns.start{justify-content:flex-start;margin-top:12px}
.btns.center{justify-content:center}
.btns.sep{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.chip{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:700;border:1px solid var(--line2);color:var(--muted);background:var(--well);justify-self:start}
.chip .ic{width:14px;height:14px}
.chip.easy{color:var(--moss);border-color:rgba(136,197,124,.4)}
.chip.mid{color:var(--gold);border-color:rgba(233,185,73,.4)}
.chip.hard{color:var(--blood);border-color:rgba(226,87,76,.45)}
.chip.real{color:var(--sky);border-color:rgba(109,180,224,.45)}
.chip.mod{color:var(--fae);border-color:rgba(224,127,180,.45);cursor:help}
.chip.buff{color:var(--moss)}
.matpill{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:700;color:var(--c)}
.matpill .ic{width:15px;height:15px}
.seg{display:inline-flex;gap:2px;padding:3px;border-radius:8px;background:var(--well);border:1px solid var(--line);flex-wrap:wrap}
.seg button{border:0;background:none;padding:7px 14px;border-radius:6px;color:var(--muted);font-weight:700;font-size:14px}
.seg button[aria-selected="true"],.seg button[aria-pressed="true"]{background:var(--panel2);color:var(--gold);box-shadow:inset 0 0 0 1px var(--line2)}
.seg.sub{justify-self:start}

.pt{border-radius:10px;overflow:hidden;background:radial-gradient(circle at 50% 38%,#3b2f55,#1a1425 72%);border:1px solid var(--line2);flex:none}
.pt svg{display:block;width:100%;height:100%}
.pt.boss{background:radial-gradient(circle at 50% 45%,#4a2433,#1a1425 72%)}

/* ---------- ekrany wejścia ---------- */
.gate,.create{max-width:640px;margin:0 auto;padding:40px 16px 60px;display:grid;gap:20px;text-align:center}
.gate.wide{max-width:900px}
.gate .brand,.create .brand{font-size:clamp(64px,14vw,120px)}
.tag{font-size:18px;color:var(--muted);max-width:52ch;margin:0 auto}
.gatebox{text-align:left;display:grid;gap:16px}
.gatebox .seg{justify-self:center}
.gatebody{display:grid;gap:14px;justify-items:start}
.form{display:grid;gap:12px;width:100%}
.form label{display:grid;gap:4px;font-weight:700;font-size:14px}
.form small{font-weight:400;color:var(--muted);font-size:12px}
.form input,.chatf input,.namebox input{font:inherit;font-size:16px;padding:10px 12px;border-radius:6px;border:1px solid var(--line2);background:var(--well);color:var(--text);width:100%;min-width:0}
.form .btn{justify-self:start}
.form.row{grid-template-columns:1fr 1fr auto;align-items:end}
.acctbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;border-radius:8px;background:var(--panel);border:1px solid var(--line);text-align:left}
.h2c{font-family:var(--f-disp);font-size:32px;font-weight:700}
.charlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;text-align:left}
.charcard{display:flex;align-items:center;gap:12px;padding:12px;border-radius:10px;background:var(--panel);border:1px solid var(--line)}
.charcard .pt{width:64px;height:64px}
.cc-body{display:grid;gap:2px;flex:1;min-width:0}
.cc-body b{font-size:18px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cc-body .muted{font-size:14px}
.cc-pl{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--muted)}
.charcard.add{flex-direction:column;justify-content:center;border-style:dashed;color:var(--gold);font-weight:800;min-height:90px;background:transparent}
.charcard.add .ic{width:28px;height:28px}
.charcard.legacy{border-color:rgba(224,127,180,.5)}
.charcard.flat{background:var(--well)}
.classes{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;text-align:left}
.create{max-width:900px}
.cls{display:grid;gap:10px;justify-items:center;text-align:center;padding:16px;border-radius:10px;border:2px solid var(--line);background:var(--panel)}
.cls[aria-pressed="true"]{border-color:var(--gold);box-shadow:0 0 22px rgba(233,185,73,.18)}
.cls .pt{width:120px;height:120px}
.cls h3{font-family:var(--f-disp);font-size:28px;font-weight:700;line-height:1}
.cls p{margin:0;color:var(--muted);font-size:14px}
.namebox{display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap}
.namebox input{font-size:20px;font-weight:700;text-align:center;width:min(320px,100%)}

/* ---------- mapa ---------- */
.starmap{border-radius:8px;overflow:hidden;border:1px solid var(--line2);background:radial-gradient(80% 90% at 30% 60%,#231a3a,#0d0a14 75%)}
.starmap svg{display:block;width:100%;height:auto}
.star{fill:#fff}
.route{stroke:#6e6184;stroke-width:2;stroke-dasharray:4 9;fill:none}
.route.open{stroke:#a898b8;stroke-dasharray:none;opacity:.55}
.route.fly{stroke:var(--gold);stroke-dasharray:8 6;stroke-width:2.5;opacity:.9;animation:dash 1s linear infinite}
@keyframes dash{to{stroke-dashoffset:-14}}
.pl{cursor:pointer}
.pl .hit{fill:transparent}
.pl .selring{fill:none;stroke:var(--gold);stroke-width:2;opacity:0}
.pl.sel .selring{opacity:1}
.pl:hover .selring{opacity:.5}
.pl .here{fill:none;stroke:var(--moss);stroke-width:2.5;stroke-dasharray:3 5;animation:spin 12s linear infinite;transform-box:fill-box;transform-origin:center}
@keyframes spin{to{transform:rotate(360deg)}}
.pl.locked>circle:not(.hit):not(.selring),.pl.locked>ellipse,.pl.locked>path{opacity:.35;filter:grayscale(.7)}
.pl .pname{fill:var(--text);font-family:var(--f-disp);font-size:24px;text-anchor:middle}
.pl .plvl{fill:var(--muted);font-size:14px;text-anchor:middle}
.pl.locked .pname{fill:var(--faint)}
.lockic{fill:none;stroke:var(--text);stroke-width:2}
.shipbg{fill:var(--gold)}
.shipic{fill:none;stroke:#2a1a05;stroke-width:2}
.planethead{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.bigpl{flex:none}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:14px 0 0}
.facts div{background:var(--well);border:1px solid var(--line);border-radius:6px;padding:8px 12px}
.facts dt{font-family:var(--f-sc);font-size:12px;letter-spacing:.06em;color:var(--muted)}
.facts dd{margin:2px 0 0;font-size:15px}
.guard{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:14px;padding:12px;border-radius:8px;background:var(--well);border:1px solid var(--line)}
.guard .pt{width:78px;height:78px}
.guard .grow{display:grid;gap:2px}
.gname{font-family:var(--f-disp);font-size:26px;font-weight:700;line-height:1}
.travel .btns{margin-top:12px}

/* ---------- postać ---------- */
.char{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:18px}
.eqwrap{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center}
.eqcol{display:grid;gap:24px}
.hero-center{display:grid;justify-items:center;gap:8px;text-align:center}
.hero-center .pt{width:min(210px,100%);aspect-ratio:1;max-width:100%}
.hero-center h3{font-family:var(--f-disp);font-size:30px;font-weight:700;line-height:1}
.slot{position:relative;width:64px;height:64px;border-radius:8px;background:var(--well);border:1px solid var(--line);display:grid;place-items:center;color:var(--faint);padding:0}
.slot .ic{width:30px;height:30px}
.slot.has{border-width:2px}
.slot .lv{position:absolute;right:3px;bottom:1px;font-size:11px;font-weight:800;color:var(--muted)}
.slot .upb{position:absolute;left:3px;top:1px;font-size:11px;font-weight:800;color:var(--gold)}
.slot .nm{position:absolute;left:0;right:0;bottom:-16px;font-size:10px;color:var(--faint);text-align:center;white-space:nowrap}
.slot.empty .ic{opacity:.45}
.r0{color:var(--r0);border-color:var(--r0)} .r1{color:var(--r1);border-color:var(--r1)} .r2{color:var(--r2);border-color:var(--r2)} .r3{color:var(--r3);border-color:var(--r3)} .r4{color:var(--r4);border-color:var(--r4)}
.slot.has.r2{box-shadow:0 0 10px rgba(98,171,255,.25)} .slot.has.r3{box-shadow:0 0 12px rgba(200,128,255,.3)} .slot.has.r4{box-shadow:0 0 14px rgba(255,169,60,.4)}
.bag{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:10px;justify-items:center}
.attr{display:grid;gap:4px}
.arow{display:grid;grid-template-columns:1fr auto auto auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.arow:last-child{border-bottom:0}
.arow .nm b{display:block;font-weight:800}
.arow .nm small{color:var(--muted);font-size:13px;line-height:1.2;display:block}
.arow .val{font-weight:800;font-size:20px;min-width:52px;text-align:right}
.arow .val small{display:block;font-size:11px;font-weight:500;color:var(--moss);line-height:1}
.arow.main .nm b{color:var(--gold)}
.derived{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:14px}
.dv{background:var(--well);border:1px solid var(--line);border-radius:6px;padding:8px 10px}
.dv span{display:block;font-size:12px;color:var(--muted)}
.dv b{font-size:18px}
.mats{display:grid;gap:6px}
.matrow{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:6px;background:var(--well);border:1px solid var(--line)}
.matrow .ic{color:var(--c)}
.matrow span{flex:1}
.achs{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.ach{display:flex;gap:12px;align-items:center;padding:12px;border-radius:8px;background:var(--well);border:1px solid var(--line)}
.ach .grow{display:grid;gap:3px}
.ach .meter{margin-top:4px}
.achic{color:var(--faint)} .achic .ic{width:30px;height:30px}
.ach.got{border-color:rgba(136,197,124,.4)} .ach.got .achic{color:var(--moss)}

/* ---------- polowanie ---------- */
.hunt{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:18px}
.stage{position:relative;width:100%;min-height:370px;border-radius:var(--rad);border:1px solid var(--line2);overflow:hidden;background:
  radial-gradient(60% 50% at 50% 60%,rgba(136,197,124,.12),transparent 70%),
  radial-gradient(120% 70% at 50% 110%,#2a3a24,transparent 60%),
  linear-gradient(180deg,#1b1628,#161222);display:grid;place-items:center;padding:0;user-select:none;-webkit-user-select:none;cursor:crosshair}
.stage.pl-syl{background:radial-gradient(60% 50% at 50% 60%,rgba(239,143,192,.16),transparent 70%),radial-gradient(120% 70% at 50% 110%,#3a2440,transparent 60%),linear-gradient(180deg,#221630,#171222)}
.stage.pl-nyx{background:radial-gradient(60% 50% at 50% 55%,rgba(169,189,232,.15),transparent 70%),radial-gradient(120% 70% at 50% 110%,#2a3040,transparent 60%),linear-gradient(180deg,#141828,#10121c)}
.stage.pl-kor{background:radial-gradient(60% 50% at 50% 60%,rgba(224,130,79,.18),transparent 70%),radial-gradient(120% 70% at 50% 110%,#4a2412,transparent 60%),linear-gradient(180deg,#221614,#160f0e)}
.stage.pl-aur{background:radial-gradient(60% 50% at 50% 60%,rgba(127,227,222,.16),transparent 70%),radial-gradient(120% 70% at 50% 110%,#16383a,transparent 60%),linear-gradient(180deg,#131f28,#0f161c)}
.stage.pl-vor{background:radial-gradient(60% 50% at 50% 60%,rgba(184,140,255,.14),transparent 70%),radial-gradient(120% 70% at 50% 110%,#1d1030,transparent 60%),linear-gradient(180deg,#0e0a16,#08060c)}
.stage.boss{box-shadow:inset 0 0 60px rgba(226,87,76,.35)}
.stage .bob{width:min(240px,62%);aspect-ratio:1;animation:bob 2.6s ease-in-out infinite}
.stage .sq{width:100%;height:100%;transition:opacity .35s}
.stage .sq.hit{animation:squish .16s ease-out}
.stage .sq.faded{opacity:.12;filter:blur(3px)}
.stage .mhead{position:absolute;top:14px;left:16px;right:16px;display:grid;gap:6px;text-align:left;pointer-events:none}
.stage .mname{font-family:var(--f-disp);font-size:26px;font-weight:700;line-height:1}
.stage .meter{height:12px}
.mrow{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.mrow .ic{width:13px;height:13px;vertical-align:-2px}
.mrow span:last-child{margin-left:auto}
.stage .mfoot{position:absolute;bottom:12px;left:16px;right:16px;display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--muted);pointer-events:none}
.pips{display:flex;gap:4px;align-items:center}
.pips i{width:12px;height:6px;border-radius:2px;background:var(--line)}
.pips i.on{background:var(--gold)}
.pips i.bs{background:var(--blood);opacity:.35}
.pips i.bs.on{opacity:1}
.fl{position:absolute;pointer-events:none;font-family:var(--f-disp);font-weight:800;font-size:26px;color:#fff;text-shadow:0 2px 0 #000;animation:up .85s ease-out forwards;z-index:3;white-space:nowrap}
.fl.crit{color:var(--gold);font-size:36px}
.fl.g{color:var(--gold);font-size:18px;font-family:var(--f-body)}
.fl.miss{color:#a9bde8;font-size:22px}
@keyframes up{from{transform:translate(-50%,0);opacity:1}to{transform:translate(-50%,-70px);opacity:0}}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes squish{0%{transform:scale(1)}40%{transform:scale(1.08,.9) rotate(-2deg)}100%{transform:scale(1)}}
.crys{position:absolute;z-index:4;width:34px;height:34px;margin:-17px 0 0 -17px;background:linear-gradient(135deg,#e8ffff,#7fe3de 50%,#2e8f95);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);box-shadow:0 0 20px #7fe3de;animation:glint .5s ease-in-out infinite alternate;cursor:pointer}
@keyframes glint{from{transform:scale(.9)}to{transform:scale(1.12)}}
.bfly{position:absolute;left:-50px;z-index:4;width:44px;height:34px;cursor:pointer;animation:fly 5s linear forwards}
.bfly svg{width:100%;height:100%;animation:flap .25s ease-in-out infinite alternate}
@keyframes fly{0%{left:-50px;transform:translateY(0)}25%{transform:translateY(-24px)}50%{transform:translateY(10px)}75%{transform:translateY(-18px)}100%{left:calc(100% + 10px);transform:translateY(0)}}
@keyframes flap{from{transform:scaleX(1)}to{transform:scaleX(.55)}}
.hstats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}
.list{display:grid;gap:8px}
.merc{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:10px 12px;background:var(--well);border:1px solid var(--line);border-radius:6px}
.merc b{font-weight:800}
.merc small{display:block;color:var(--muted);font-size:13px;line-height:1.25}
.merc .own{font-family:var(--f-disp);font-size:22px;color:var(--gold);margin-right:6px}

/* ---------- karczma ---------- */
.quests{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.qcard{display:grid;gap:10px;align-content:start;background:var(--well);border:1px solid var(--line);border-radius:8px;padding:14px}
.qcard h3{font-family:var(--f-disp);font-size:24px;font-weight:700;line-height:1.05}
.qcard p{margin:0;color:var(--muted);font-size:14px;font-style:italic}
.qrow{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:14px;align-items:center}
.qrow>span{display:inline-flex;align-items:center;gap:5px}
.qrow .ic{width:16px;height:16px}
.qmon{display:flex;gap:10px;align-items:center;font-size:14px}
.qmon .pt{width:46px;height:46px}
.qcard .btn{margin-top:auto}
.active-q{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center}
.active-q .pt{width:120px;height:120px}
.rush{font-size:20px;padding:14px 26px}
.chat{list-style:none;margin:0 0 10px;padding:10px 12px;height:260px;overflow-y:auto;background:var(--well);border:1px solid var(--line);border-radius:6px;display:flex;flex-direction:column;gap:5px;font-size:15px}
.chat li{display:flex;gap:8px;align-items:baseline}
.chat li span{flex:1;min-width:0;overflow-wrap:anywhere}
.chat li b{white-space:nowrap}
.chat time{color:var(--faint);font-size:11px;white-space:nowrap}
.chatf{display:flex;gap:8px}

/* ---------- arena / lochy ---------- */
.opps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:14px}
.opp{display:grid;gap:8px;justify-items:center;text-align:center;background:var(--well);border:1px solid var(--line);border-radius:8px;padding:14px}
.opp .pt{width:110px;height:110px}
.opp b{font-weight:800;font-size:17px}
.opp .chip{justify-self:center}
.dngs{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.dng{display:grid;gap:10px;align-content:start;background:var(--well);border:1px solid var(--line);border-radius:8px;padding:14px}
.dng h3{font-family:var(--f-disp);font-size:26px;font-weight:700;line-height:1}
.dng.locked{opacity:.55}
.floors{display:flex;gap:4px}
.floors i{flex:1;height:8px;border-radius:2px;background:var(--line)}
.floors i.on{background:var(--fae)}
.bossbox{display:flex;gap:12px;align-items:center}
.bossbox .pt{width:74px;height:74px;background:radial-gradient(circle at 50% 45%,#4a2433,#1a1425 72%)}

/* ---------- targ ---------- */
.shopg{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.ware{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;text-align:left;background:var(--well);border:1px solid var(--line);border-radius:8px;padding:10px}
.ware:hover{border-color:var(--line2)}
.ware .slot{width:48px;height:48px}
.ware .slot .ic{width:24px;height:24px}
.ware b{display:block;font-size:13px;line-height:1.2}
.ware small{font-size:13px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.pcard{display:grid;gap:8px;align-content:start;padding:14px;border-radius:8px;background:var(--well);border:1px solid var(--line)}
.pcard h3{font-family:var(--f-disp);font-size:24px;font-weight:700;line-height:1}
.pcard p{margin:0;font-size:14px}
.pcard .btn{justify-self:start;margin-top:4px}
.pcard.cur{border-color:var(--gold)}
.pic{color:var(--fae)} .pic .ic{width:30px;height:30px}
.upbox{display:grid;gap:8px;padding:10px 12px;border-radius:8px;background:var(--well);border:1px dashed var(--line2)}
.upt{display:flex;align-items:center;gap:8px}
.upt .muted{margin-left:auto;font-size:13px}
.upbox .btn{justify-self:start}

/* ---------- sala ---------- */
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:15px}
th{font-family:var(--f-sc);font-weight:700;font-size:12px;letter-spacing:.08em;color:var(--muted);text-align:left;padding:6px 10px;border-bottom:1px solid var(--line2);white-space:nowrap}
td{padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td svg{vertical-align:middle}
th.n,td.n{text-align:right}
tr.me td{background:rgba(233,185,73,.08)}
td .pt{width:32px;height:32px;display:inline-block;vertical-align:middle;margin-right:8px;border-radius:6px}
.rank{font-family:var(--f-disp);font-size:20px;color:var(--muted)}
tr:nth-child(1) .rank{color:var(--gold)}
.feed{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.feed li{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;font-size:15px;border-bottom:1px dashed var(--line);padding-bottom:7px}
.feed time{margin-left:auto;color:var(--faint);font-size:12px;white-space:nowrap}
.empty-note{color:var(--muted);font-style:italic;margin:0}

/* ---------- ustawienia ---------- */
.settings{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:18px;align-items:start}
.codebox{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.codebox code{flex:1;min-width:0;overflow-wrap:anywhere;font-family:ui-monospace,Consolas,monospace;font-size:16px;letter-spacing:.06em;padding:10px 12px;background:var(--well);border:1px solid var(--line);border-radius:6px;user-select:all;color:var(--gold)}
.setrow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--line)}
.setrow:last-child{border-bottom:0}
.setrow>div{flex:1;min-width:180px;display:grid}
.tgl{width:48px;height:28px;border-radius:99px;border:1px solid var(--line2);background:var(--well);position:relative;padding:0;flex:none}
.tgl i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--faint);transition:left .15s,background .15s}
.tgl[aria-checked="true"]{background:rgba(233,185,73,.2);border-color:var(--gold)}
.tgl[aria-checked="true"] i{left:23px;background:var(--gold)}

/* ---------- okna ---------- */
.modal{position:fixed;inset:0;z-index:50;background:rgba(8,6,12,.72);display:grid;place-items:center;padding:16px;overflow-y:auto}
.sheet{width:min(440px,100%);background:var(--panel);border:1px solid var(--line2);border-radius:10px;padding:18px;box-shadow:0 20px 60px rgba(0,0,0,.5),inset 0 0 0 3px var(--panel),inset 0 0 0 4px rgba(77,63,103,.5);display:grid;gap:12px}
.sheet.wide{width:min(660px,100%)}
.ihead{display:flex;gap:12px;align-items:center}
.ihead h3{font-size:20px;font-weight:800;line-height:1.15}
.ihead small{color:var(--muted)}
.ilines{display:grid;gap:3px;margin:0;padding:0;list-style:none;font-size:15px}
.ilines li{display:flex;justify-content:space-between;gap:10px}
.cmp{font-size:13px;display:grid;gap:2px;padding:8px 10px;border-radius:6px;background:var(--well);border:1px solid var(--line)}
.duel{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center}
.side{display:grid;justify-items:center;gap:6px;text-align:center}
.side .pt{width:min(130px,100%);aspect-ratio:1}
.side b{font-weight:800;line-height:1.1}
.side small{color:var(--muted);font-size:12px}
.side .meter{width:100%;height:10px}
.side .hpt{font-size:12px;color:var(--muted)}
.side.shake .pt{animation:shake .25s}
.vs{font-family:var(--f-disp);font-size:30px;color:var(--fae)}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.flog{list-style:none;margin:0;padding:10px 12px;background:var(--well);border:1px solid var(--line);border-radius:6px;display:grid;gap:3px;font-size:14px;min-height:150px;align-content:start}
.flog li{animation:fadein .2s}
.flog li:nth-child(n+2){opacity:.75} .flog li:nth-child(n+4){opacity:.5}
@keyframes fadein{from{opacity:0;transform:translateY(-4px)}}
.fres{text-align:center;display:grid;gap:6px}
.fres h3{font-family:var(--f-disp);font-size:40px;line-height:1}
.fres.win h3{color:var(--gold)} .fres.lose h3{color:var(--blood)}
.fres p{margin:0;color:var(--muted)}
.fh{font-family:var(--f-sc);letter-spacing:.08em;font-size:13px;color:var(--muted);text-align:center}

#toasts{position:fixed;z-index:60;right:16px;top:calc(env(safe-area-inset-top,0px) + 96px);display:grid;gap:8px;width:min(340px,calc(100% - 32px));pointer-events:none}
.toast{background:var(--panel2);border:1px solid var(--line2);border-radius:8px;padding:10px 14px;font-size:15px;box-shadow:0 8px 24px rgba(0,0,0,.4);animation:tin .25s ease-out}
.toast.lvl{border-color:var(--gold);color:var(--gold);font-weight:800}
.toast.bad{border-color:rgba(226,87,76,.6)}
.toast.good{border-color:rgba(136,197,124,.6)}
@keyframes tin{from{opacity:0;transform:translateX(20px)}}

/* ---------- karczma 2 ---------- */
.tavern{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;align-items:start}
.hilda{display:flex;gap:16px;align-items:center}
.hilda .pt{width:92px;height:92px}
.quote{margin:4px 0 0;font-style:italic;font-size:17px;max-width:60ch}
.daily{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.dday{display:grid;gap:2px;justify-items:center;text-align:center;padding:8px 2px;border-radius:8px;background:var(--well);border:1px solid var(--line);font-size:11px}
.dday b{font-family:var(--f-disp);font-size:22px;line-height:1}
.dday.done{opacity:.45;border-color:rgba(136,197,124,.5)}
.dday.next{border-color:var(--gold);box-shadow:0 0 14px rgba(233,185,73,.25)}
.dicebox{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.dside{display:grid;justify-items:center;gap:6px;padding:10px;border-radius:8px;background:var(--well);border:1px solid var(--line)}
.pt.mini{width:44px;height:44px}
.dice{display:flex;gap:6px}
.die{width:38px;height:38px}
.dface{fill:#f3ead8;stroke:#b8a98a;stroke-width:3}
.dpip{fill:#2a1a10}
.dmsg{margin:10px 0 0;font-weight:700;min-height:1.4em}
.tables{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}
.tguest{display:grid;justify-items:center;gap:3px;padding:8px 4px;border-radius:8px;background:var(--well);border:1px solid var(--line);min-width:0}
.tguest:hover{border-color:var(--gold)}
.tguest .pt{width:44px;height:44px}
.tguest .tn{font-weight:700;font-size:13px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tguest small{font-size:11px}
/* czat z awatarami */
.chat li{display:flex;gap:8px;align-items:flex-start}
.chat li.mention{background:rgba(233,185,73,.08);border-radius:6px;box-shadow:inset 3px 0 0 var(--gold);padding:3px 4px}
.cav{padding:0;border:0;background:none;flex:none}
.cav .pt{display:block;width:30px;height:30px;border-radius:7px}
.cav:disabled{cursor:default}
.cbody{flex:1;min-width:0;display:grid;gap:1px}
.cmeta{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.cname,.linkname{background:none;border:0;padding:0;font-weight:800;text-align:left}
.linkname{color:var(--text)}
.cname:hover,.linkname:hover{text-decoration:underline}
.clvl{font-size:11px;color:var(--faint)}
.ctext{overflow-wrap:anywhere}
.chat .cmeta time{margin-left:auto}
/* arena 2 */
.league{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:4px 0 6px;padding:10px 12px;border-radius:8px;background:var(--well);border:1px solid var(--line)}
.league .grow{display:grid;gap:4px;min-width:180px}
.lbadge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:99px;border:1px solid var(--c);color:var(--c);font-weight:800;font-family:var(--f-disp);font-size:20px;background:rgba(0,0,0,.2)}
.lbadge.sm{font-size:14px;padding:1px 9px;vertical-align:middle}
.lbadge .ic{width:16px;height:16px}
.opp .btns{margin-top:2px}
.alog,.toplist{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.alog li,.toplist li{display:flex;gap:10px;align-items:center;padding:6px 8px;border-radius:8px;background:var(--well);border:1px solid var(--line)}
.alog li.w{box-shadow:inset 3px 0 0 var(--moss)} .alog li.l{box-shadow:inset 3px 0 0 var(--blood)}
.alog .pt,.toplist .pt{width:32px;height:32px;border-radius:7px}
.alog .grow,.toplist .grow{display:grid}
.toplist li.me{border-color:var(--gold)}
.toplist .rank{min-width:22px;text-align:center}
.tower{border-color:rgba(233,185,73,.35)}
.tower .bossbox .pt{width:84px;height:84px}
/* sala 2 */
.rowname{display:inline-flex;align-items:center;gap:0}
.dotlive{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--moss);box-shadow:0 0 8px var(--moss);margin-left:6px;vertical-align:middle}
.ttl{display:block;font-size:11px;margin-left:40px;margin-top:-4px}
/* profil */
.profile{gap:14px}
.prof-head{display:flex;gap:14px;align-items:center}
.prof-head .pt{width:96px;height:96px}
.prof-head p{margin:6px 0 0}
.prof-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.prof-grid .h3{margin-top:0}
.peq{display:grid;grid-template-columns:repeat(4,56px);gap:8px}
.peq .slot{width:56px;height:56px}
.peq .slot .ic{width:26px;height:26px}
.profitem{margin-top:10px;padding:8px 10px;border-radius:6px;background:var(--well);border:1px solid var(--line);min-height:44px}
.profitem .ilines{margin-top:4px;font-size:14px}
.cmpbox{display:grid;gap:10px;padding:12px;border-radius:8px;background:var(--well);border:1px solid var(--line2)}
.wc{display:grid;gap:4px}
.wc b{font-family:var(--f-disp);font-size:34px;line-height:1}
.cmpt td{padding:4px 10px}

/* ---------- ogłoszenia ---------- */
.banner{position:relative;z-index:25;display:grid;gap:1px}
.bn{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 16px;background:linear-gradient(90deg,rgba(224,127,180,.18),rgba(233,185,73,.12));border-bottom:1px solid var(--line2);font-size:15px}
.bn span{flex:1;min-width:200px}
.bn.upd{background:linear-gradient(90deg,rgba(109,180,224,.2),rgba(136,197,124,.14))}
.bn .ic{color:var(--gold)}
a.btn{text-decoration:none}
.chat li.sysmsg{align-items:center;padding:6px 8px;border-radius:6px;background:rgba(233,185,73,.08);border:1px dashed rgba(233,185,73,.4)}
.chat li.sysmsg .ic{color:var(--gold);width:16px;height:16px}
.chat li.sysmsg span{flex:1}

/* ---------- małe ekrany ---------- */
@media (max-width:1020px){ .char,.hunt,.tavern{grid-template-columns:minmax(0,1fr)} }
@media (max-width:860px){
  .shell{grid-template-columns:minmax(0,1fr);padding-bottom:96px}
  .nav{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:30;flex-direction:row;gap:0;background:rgba(20,16,28,.97);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom,0px));backdrop-filter:blur(8px);overflow-x:auto;scrollbar-width:none}
  .nav::-webkit-scrollbar{display:none}
  .nav button{flex:1 0 64px;flex-direction:column;gap:3px;padding:6px 2px;font-family:var(--f-body);font-size:11px;font-weight:700;text-align:center;border:0;min-width:64px}
  .nav button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .nav button[aria-current="page"]{background:var(--panel)}
  .nav .dot{position:absolute;top:4px;right:12px;margin:0}
  .brand{font-size:28px}
  .top-in{gap:10px 12px;padding-block:8px}
  .who .pt{width:36px;height:36px}
  .vitals{margin-left:0;width:100%;gap:8px 14px}
  .vbar{min-width:0;flex:1 1 38%}
  .vbar .lab span{white-space:nowrap}
  .net{display:none}
  #toasts{top:auto;bottom:calc(86px + env(safe-area-inset-bottom,0px))}
  .form.row{grid-template-columns:1fr}
}
@media (max-width:520px){
  .eqwrap{grid-template-columns:1fr;justify-items:center}
  .eqcol{grid-template-columns:repeat(4,auto);gap:10px 12px;padding-bottom:14px}
  .hero-center{order:-1}
  .active-q{grid-template-columns:1fr;justify-items:center;text-align:center}
  .stage{min-height:310px}
  .hstats{grid-template-columns:1fr 1fr}
  .duel .pt{width:84px}
  .vs{font-size:22px}
  .settings{grid-template-columns:minmax(0,1fr)}
  .prof-grid{grid-template-columns:minmax(0,1fr)}
  .daily{grid-template-columns:repeat(4,minmax(0,1fr))}
  .dicebox{grid-template-columns:1fr}
  .die{width:32px;height:32px}
  .pl .pname{font-size:30px}
}
@media (prefers-reduced-motion:reduce){
  .stage .bob,.stage .sq.hit,.side.shake .pt,.toast,.flog li,.pl .here,.route.fly,.crys{animation:none}
  .fl{animation-duration:.4s}
}
body.nomotion .stage .bob,body.nomotion .pl .here,body.nomotion .route.fly,body.nomotion .crys,body.nomotion .toast,body.nomotion .flog li{animation:none}
