/* ============================================================
   BASE — struktura, layout, typografia. ZERO literałów kolorów:
   wszystko przez var(--*) z kontraktu (css/tokens.css).
   Kolory/fonty/kształt dostarcza skórka (css/themes/*.css).
   ============================================================ */
*{box-sizing:border-box}
html,body{margin:0}
html{scroll-behavior:smooth}
body{font:17px/1.45 var(--font-body);background:var(--bg);color:var(--ink)}
button{font:inherit;cursor:pointer}
.mono{font-family:var(--font-mono)}
.muted{color:var(--muted)}
.faint{color:var(--faint)}
.small{font-size:15px}

/* header / tabs */
header{position:sticky;top:0;z-index:30;background:var(--panel);border-bottom:1px solid var(--line-strong);
  display:flex;align-items:center;gap:8px;padding:8px 14px;flex-wrap:wrap}
.brand{font-weight:700;letter-spacing:.5px;margin-right:6px}
.brand .wf{font-weight:400;font-size:14px;color:var(--faint);border:1px solid var(--line);border-radius:99px;padding:1px 8px;margin-left:6px}
.tabs{display:flex;gap:4px}
.tab{background:var(--chip);border:1px solid var(--line);border-radius:var(--r);padding:6px 14px;color:var(--ink)}
.tab.on{background:var(--chip-on);color:var(--on-accent);border-color:var(--chip-on)}
.tab .cnt{font-size:14px;opacity:.8}
.util{margin-left:auto;display:flex;gap:6px;align-items:center}
.util button{background:none;border:1px solid var(--line);border-radius:var(--r);padding:6px 10px;color:var(--muted)}
#clearAll{background:none;border:1px solid var(--line);border-radius:var(--r);padding:6px 10px;color:var(--muted);margin-left:6px}
.themesel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:6px 8px;color:var(--muted);font:inherit;font-size:15px}
.buildinfo{font-size:13px;color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}
.buildinfo:empty{display:none}

/* layout */
main{padding:14px;max-width:1600px;margin:0 auto}
.view{display:none}
.view.on{display:block}

/* SEARCH view */
.search-wrap{display:grid;grid-template-columns:300px 1fr;gap:14px;align-items:start}
.facets{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:4px 0;position:sticky;top:64px;max-height:calc(100vh - 80px);overflow-y:auto;
  scrollbar-width:thin;scrollbar-color:transparent transparent}
.facets.scrolling,.facets:hover{scrollbar-color:var(--line-strong) transparent}
.facets::-webkit-scrollbar{width:8px}
.facets::-webkit-scrollbar-thumb{background:transparent;border-radius:4px;transition:background .35s ease}
.facets.scrolling::-webkit-scrollbar-thumb,.facets:hover::-webkit-scrollbar-thumb{background:var(--line-strong)}
.fgroup{border-bottom:1px solid var(--line)}
.fgroup:last-child{border-bottom:0}
.fgroup>summary{padding:9px 12px;font-weight:600;cursor:pointer;list-style:none;display:flex;justify-content:space-between}
.fgroup>summary::-webkit-details-marker{display:none}
.fgroup>summary::after{content:"▾";color:var(--faint)}
.fgroup[open]>summary::after{content:"▴"}
.fbody{padding:4px 12px 12px}
.chips{display:flex;flex-wrap:wrap;gap:5px}
.chip{background:var(--chip);border:1px solid var(--line);border-radius:99px;padding:3px 9px;font-size:15px;color:var(--ink)}
.chip.on{background:var(--chip-on);color:var(--on-accent);border-color:var(--chip-on)}
.chip.on .faint{color:var(--on-accent);opacity:.75}        /* licznik czytelny na zaznaczonym chipie */
.chip.zero{opacity:.45}
.lvlrow{display:flex;align-items:center;gap:6px;margin-top:6px}
.lvlrow input{width:54px;padding:4px;border:1px solid var(--line);border-radius:4px}
.effsel{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);font:inherit;color:var(--ink)}
.chip[data-rmeffect]{cursor:pointer}
.chip[data-rmeffect] span{margin-left:4px;opacity:.7}
/* combobox „Krainka": input + rozwijana lista wyszukiwania, wybrane jako chipy z ✕ */
.acbox{position:relative}
.acinput{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);font:inherit;color:var(--ink)}
/* lista PŁYWAJĄCA (position:fixed) — kotwiczona JS-em do inputu (facets.js placeAreaList).
   fixed ma za blok zawierający viewport (panel nie ma transform), więc NIE jest przycinana
   przez overflow-y panelu i — kluczowe — NIE powiększa panelu, eliminując „scroll w scrollu".
   left/top/bottom/width/max-height ustawia JS (otwiera się też w górę, gdy input jest nisko). */
.aclist{position:fixed;z-index:40;max-height:280px;overflow:auto;
  background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r);box-shadow:var(--shadow)}
.acopt{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;background:none;border:0;
  padding:6px 10px;font:inherit;color:var(--ink);cursor:pointer;border-bottom:1px solid var(--line)}
.acopt:last-child{border-bottom:0}
/* .acopt ma display:flex, które BIJE UA-regułę [hidden]{display:none} (klasa > atrybut),
   więc filtrowanie przez o.hidden=true nie ukrywałoby opcji — przywróć chowanie jawnie */
.acopt[hidden]{display:none}
.acopt:hover,.acopt:focus{background:var(--chip)}
.acempty{padding:8px 10px}
.chip[data-rmarea]{cursor:pointer}
.chip[data-rmarea] span{margin-left:4px;opacity:.7}
.subfold{margin-top:8px;border-top:1px dashed var(--line);padding-top:6px}
.subfold>summary{cursor:pointer;list-style:none;font-size:15px;font-weight:600;color:var(--muted);display:flex;justify-content:space-between;align-items:center}
.subfold>summary::-webkit-details-marker{display:none}
.subfold>summary::after{content:"▾";color:var(--faint)}
.subfold[open]>summary::after{content:"▴"}

.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap}
.toolbar input[type=search]{flex:1;min-width:180px;padding:8px 10px;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--panel);color:var(--ink)}
.toolbar select{padding:8px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);color:var(--ink)}
.toolbar select option{background:var(--panel);color:var(--ink)}
.seg{display:flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.seg button{background:var(--panel);border:0;padding:7px 11px;color:var(--muted);border-left:1px solid var(--line)}
.seg button:first-child{border-left:0}
.seg button.on{background:var(--chip-on);color:var(--on-accent)}
.found{font-size:15px;color:var(--muted);margin-left:auto}
.catbar{display:flex;align-items:center;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.catbar .cb-lab{font-size:14px;text-transform:uppercase;letter-spacing:.5px;color:var(--faint);margin-right:2px}

/* result cards (grid) */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:11px 12px;display:flex;flex-direction:column;gap:7px}
.card .top{display:flex;justify-content:space-between;gap:8px}
.card .nm{font-weight:600}
.card .vnum{font-size:14px;color:var(--faint)}
.badges{display:flex;flex-wrap:wrap;gap:4px}
.b{font-size:14px;border:1px solid var(--line);border-radius:4px;padding:1px 6px;color:var(--muted);background:var(--chip)}
.b.lvl{border-color:var(--line-strong);color:var(--ink)}
.b.lvl.unk{border-color:var(--line);color:var(--faint);cursor:help}  /* nieznane źródło — dyskretnie */
.b.type{font-weight:600}
.b.no{background:var(--bad);border-color:var(--bad-line);color:var(--neg)}
.statline{font-size:16px}
.applies{display:flex;flex-wrap:wrap;gap:4px}
.ap{font-size:14px;border-radius:4px;padding:1px 6px;background:var(--chip);border:1px solid var(--line)}
.ap.pos{background:var(--good);border-color:var(--good-line)}
.ap.neg{background:var(--bad);border-color:var(--bad-line)}
.cardacts{display:flex;gap:6px;margin-top:2px}
.cardacts button{flex:1;border:1px solid var(--line);background:var(--panel);border-radius:var(--r);padding:6px;color:var(--ink);font-size:15px}
.cardacts button.added{background:var(--chip-on);color:var(--on-accent);border-color:var(--chip-on)}

/* result table */
table.rows{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
table.rows th,table.rows td{text-align:left;padding:6px 9px;border-bottom:1px solid var(--line);font-size:15px;vertical-align:top}
table.rows th{background:var(--chip);font-weight:600}
table.rows tr:last-child td{border-bottom:0}
table.rows td.r{text-align:right}
.miniact{border:1px solid var(--line);background:var(--panel);border-radius:4px;padding:2px 7px;font-size:14px;color:var(--ink)}
.miniact.added{background:var(--chip-on);color:var(--on-accent)}
/* gęsta tabela statów (wzór: arkusz gracza) — sterowana zaznaczeniem kategorii */
.rows-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
table.rows.stats{border:0;border-radius:0;white-space:nowrap}
table.rows.stats th,table.rows.stats td{padding:5px 7px;font-size:15px;vertical-align:middle;
  border-right:1px solid var(--line)}                         /* swimlane — pionowa prowadnica kolumny */
table.rows.stats th:last-child,table.rows.stats td:last-child{border-right:0}
table.rows.stats th{position:sticky;top:0;z-index:2;cursor:pointer;user-select:none;white-space:nowrap}
table.rows.stats th[data-sort]:hover{background:var(--chip-on);color:var(--on-accent)}
table.rows.stats th.on{background:var(--accent);color:var(--on-accent)}
table.rows.stats th.th-stat,table.rows.stats td.td-stat{text-align:right}
table.rows.stats td.td-stat.num{font-variant-numeric:tabular-nums;font-family:var(--font-mono)}
table.rows.stats td.td-stat.pos{color:var(--pos);font-weight:600}
table.rows.stats td.td-stat.neg{color:var(--neg)}
/* zebra wierszy */
table.rows.stats tbody tr:nth-child(even) td{background:var(--zebra)}
/* podświetlenie kolumny pod kursorem (krzyżyk z hoverem wiersza) */
table.rows.stats td.colhi,table.rows.stats th.colhi{background:var(--colhi)}
/* przyklejona kolumna Nazwy (lewa) — mocniejszy separator od strefy scrolla */
table.rows.stats .th-name,table.rows.stats .td-name{position:sticky;left:0;z-index:1;background:var(--panel);
  min-width:170px;max-width:240px;white-space:normal;border-right:2px solid var(--line-strong)}
table.rows.stats tbody tr:nth-child(even) .td-name{background:var(--zebra)}
table.rows.stats .th-name{z-index:3;background:var(--chip)}
table.rows.stats .td-name b{cursor:pointer}
/* hover wiersza wygrywa nad zebrą i kolumną → przecięcie krzyżyka jest żółte */
table.rows.stats tbody tr:hover td,table.rows.stats tbody tr:hover .td-name{background:var(--hi)}
table.rows.stats .td-cat,table.rows.stats .th-cat{font-size:14px}
table.rows.stats .td-act{white-space:nowrap;text-align:right}
table.rows.stats .td-act .actbox{display:inline-flex;gap:4px;justify-content:flex-end;align-items:center}
table.rows.stats .td-act .miniact{padding:2px 5px;min-width:28px;text-align:center}
table.rows.stats .td-act .ph{visibility:hidden}

/* COMPARE view */
.cmp{overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--r)}
table.cmp{border-collapse:collapse;width:100%}
table.cmp th,table.cmp td{border:1px solid var(--line);padding:7px 10px;font-size:16px;min-width:150px}
table.cmp th.rowlbl,table.cmp td.rowlbl{text-align:left;background:var(--chip);font-weight:600;position:sticky;left:0;min-width:130px}
table.cmp td{text-align:center}
td.best{background:var(--good);font-weight:700}
.cmp-empty{padding:30px;text-align:center;color:var(--muted)}
.colx{border:0;background:none;color:var(--faint);float:right;cursor:pointer}

/* LOADOUT view */
.load-wrap{display:grid;grid-template-columns:minmax(0,1fr) 460px;gap:14px;align-items:start}
.slots{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.slot{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line)}
.slot:last-child{border-bottom:0}
.slot .lab{width:120px;color:var(--muted);font-size:15px;flex:none}
.slot .fill{flex:1;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.slot .pick{border:1px dashed var(--line-strong);background:none;border-radius:var(--r);padding:6px 10px;color:var(--muted);width:100%;text-align:left}
.slot .chosen{font-weight:600}
.slot .chosen-stats{font-size:14px;color:var(--muted)}
.slot .rm{border:1px solid var(--line);background:var(--panel);border-radius:4px;padding:2px 7px;color:var(--muted)}
.layerbox{font-size:14px;color:var(--faint);border:1px dashed var(--line);border-radius:4px;padding:1px 6px}
.subhdr{padding:7px 12px;background:var(--chip);font-size:14px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line)}

.rightcol{position:sticky;top:64px;max-height:calc(100vh - 80px);overflow:auto;display:flex;flex-direction:column;gap:10px}
.loadnav{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:9px 11px;flex:none}
.loadnav .ttl{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:6px}
.navchips{display:flex;flex-wrap:wrap;gap:4px}
.navchip{font-size:14px;border:1px solid var(--line);border-radius:99px;padding:2px 8px;color:var(--muted);text-decoration:none;background:var(--chip)}
.navchip:hover{border-color:var(--line-strong)}
.navchip.has{border-color:var(--accent);color:var(--ink);font-weight:600}
.navchip.full{opacity:.5}                              /* komplet warstw — wyciszony, by wolne sloty rzucały się w oczy */
.navchip.full .faint{color:var(--accent)}              /* ale licznik N/N zostaje czytelny (slot pełny) */
.totals{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;flex:none}
.totals h3{margin:0;padding:9px 12px;background:var(--chip-on);color:var(--on-accent);font-size:16px}
.trow{display:flex;justify-content:space-between;padding:5px 12px;border-bottom:1px solid var(--line);font-size:16px}
.trow:last-child{border-bottom:0}
.trow .v{font-variant-numeric:tabular-nums;font-weight:600}
.trow .v.pos{color:var(--pos)}.trow .v.neg{color:var(--neg)}
.tgrid{display:grid;grid-template-columns:repeat(3,1fr)}
.tgrid .trow{border-right:1px solid var(--line)}
.tgrid .trow:nth-child(3n){border-right:0}
.tgrid .trow:last-child{border-right:0}
.tlist{padding:6px 12px;font-size:15px;color:var(--muted)}
.tlist b{color:var(--ink)}

/* layer mini-indicator */
.lmini{display:inline-flex;gap:2px;vertical-align:middle;align-items:center}
.lmini .cap{font-size:13px;color:var(--faint);margin-right:2px}
.lc{min-width:16px;height:18px;padding:0 1px;border:1px solid var(--line-strong);border-radius:2px;
  display:inline-flex;align-items:center;justify-content:center;font-style:normal;
  font-size:12px;line-height:1;color:var(--faint);font-variant-numeric:tabular-nums}
.lc.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}
.lmini.excl{font-size:14px;color:var(--muted)}
/* kolumna „slot": lokacja (forma z gry) + mini-warstwy w jednej komórce, wyrównane do lewej */
table.rows.stats td.td-stat.td-slot,table.rows.stats th.th-stat.th-slot{text-align:left}
.slotcell{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap}
.slotcell .slotloc{color:var(--muted);white-space:nowrap}

/* "gdzie znaleźć" */
.src{font-size:15px;color:var(--muted)}
.src .ic{margin-right:3px}
.src .more{color:var(--faint)}

/* build bar (zapis setów) */
.buildbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r);padding:8px 11px;margin-bottom:12px}
.buildbar input{padding:6px 9px;border:1px solid var(--line);border-radius:var(--r)}
.buildbar button{border:1px solid var(--line);background:var(--panel);border-radius:var(--r);padding:6px 11px;color:var(--ink)}
.buildbar .saved{display:flex;gap:5px;flex-wrap:wrap;margin-left:auto}
.buildbar .bchip{display:inline-flex;align-items:center;gap:5px;background:var(--chip);border:1px solid var(--line);border-radius:99px;padding:3px 5px 3px 10px;font-size:15px}
.buildbar .bchip button{border:0;background:none;padding:0 3px;color:var(--faint)}

/* przymierzalnia — model warstwowy */
.ltoolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:16px;color:var(--muted)}
.loc{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);margin-bottom:6px;overflow:hidden;scroll-margin-top:64px;display:flex;align-items:stretch}
.loc>.lh{flex:none;width:150px;display:flex;flex-direction:column;justify-content:center;gap:1px;padding:6px 11px;background:var(--chip);border-right:1px solid var(--line)}
.loc>.lh .nm{font-weight:600;line-height:1.2;white-space:nowrap}
.loc>.lh .meta{font-size:13px;color:var(--faint)}
.loc .lc-body{padding:6px 11px;flex:1;min-width:0}
.lgrid{display:flex;flex-direction:column;gap:2px}
.lgrow{display:flex;align-items:center;gap:10px;max-width:760px}
.lgcell{flex:0 0 300px;display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:3px;padding:2px 8px;font-size:16px;min-height:25px}
.lgcell .n{width:13px;color:var(--faint);font-size:13px;text-align:right;flex:none}
.lgcell .lgnm{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgcell.filled{background:var(--good);border-color:var(--good-line)}
.lgcell.empty{color:var(--faint)}
.lgside{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
/* widok „eq" — wierny terminalowemu wydrukowi z gry */
.eqtext{margin:0;padding:10px 12px;font-family:var(--font-mono);font-size:14px;line-height:1.5;white-space:pre;overflow-x:auto;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:var(--r)}
.lgcell .rmx{margin-left:auto;border:0;background:none;color:var(--faint);cursor:pointer;font-size:15px}
.litem{display:flex;align-items:center;gap:10px;padding:5px 0;border-bottom:1px dashed var(--line)}
.litem:last-child{border-bottom:0}
.litem .nm{font-weight:600;font-size:16px}
.litem .rmx{margin-left:auto;border:1px solid var(--line);background:none;border-radius:4px;padding:1px 8px;color:var(--muted);cursor:pointer}
.lsub{font-size:14px;color:var(--muted)}
.pk.dis{opacity:.5;cursor:not-allowed}
.pk .bad{color:var(--neg);font-size:14px}

/* gęsta lista założonego sprzętu — jak klasyczny widok „Nosisz na sobie" w grze */
.dlist{font-size:16px}
.dlist .dh,.dlist .dr{display:grid;grid-template-columns:130px minmax(150px,330px) minmax(0,1fr) 78px 28px;align-items:center;gap:12px;padding:4px 12px}
.dlist .dh{background:var(--chip);color:var(--muted);text-transform:uppercase;font-size:12.5px;letter-spacing:.5px;border-bottom:1px solid var(--line)}
.dlist .dr{border-bottom:1px solid var(--line);scroll-margin-top:70px}
.dlist .dr:hover{background:var(--chip)}
.dlist .loc-c{color:var(--muted)}
.dlist .nm-c{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.dlist .nm-c:hover{text-decoration:underline}
.dlist .st-c{color:var(--muted);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.dlist .fp-c{font-size:13.5px;color:var(--faint);font-variant-numeric:tabular-nums;text-align:right}
.dlist .fp-c .excl{color:var(--muted)}
.dlist .act-c{display:grid;grid-template-columns:16px;justify-content:end;justify-items:center;align-items:center}
.dlist .rx{border:0;background:none;color:var(--faint);cursor:pointer;padding:0;line-height:1;font-size:15px}
.dlist .rx:hover{color:var(--neg)}
.dempty{padding:10px 12px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:15px}
.dempty .el{color:var(--muted)}
.dempty .echip{border:1px dashed var(--line);background:var(--chip);border-radius:99px;padding:2px 11px;color:var(--muted);font-size:14px}

/* picker modal */
.modal{position:fixed;inset:0;background:var(--overlay);display:none;align-items:flex-start;justify-content:center;z-index:50;padding:40px 14px}
.modal.on{display:flex}
.modal .box{background:var(--panel);border-radius:8px;width:min(560px,100%);max-height:80vh;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line-strong)}
.modal .mh{padding:11px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
#detailTitle{font-size:19px;font-weight:700}
.modal .ml{overflow:auto;flex:1;min-height:0}
.pk{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;border-bottom:1px solid var(--line);cursor:pointer}
.pk:hover{background:var(--chip)}
.pk .pkn{font-weight:600}
.note{background:var(--note-bg);border:1px solid var(--note-line);border-radius:var(--r);padding:8px 11px;font-size:15px;color:var(--note-ink);margin-bottom:10px}
/* import ekwipunku z gry */
#importModal .ml{padding:12px 14px}
#importModal .ml>p{margin:0 0 8px}
#importText{width:100%;box-sizing:border-box;font-family:var(--font-mono);font-size:14px;line-height:1.5;
  color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;resize:vertical}
#importModal .dactions{padding:12px 0 0;background:none;border-top:0}
#importResult{margin-top:10px}
#importResult ul{margin:4px 0 0;padding-left:18px}
#importResult li{padding:2px 0;font-size:15px}
.imp-ok{margin-bottom:10px}
.imp-ok b{color:var(--pos)}
.imp-fail b{color:var(--neg)}
.imp-fail .mono{font-size:13.5px;color:var(--muted)}
/* klikalna nazwa → widok przedmiotu */
.nmlink{cursor:pointer}
.nmlink:hover{text-decoration:underline}
#toTop{position:fixed;right:20px;bottom:20px;z-index:40;width:42px;height:42px;border-radius:50%;
  border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);font-size:21px;cursor:pointer;
  box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translateY(8px);
  transition:opacity .18s,transform .18s,visibility .18s}
#toTop.on{opacity:1;visibility:visible;transform:translateY(0)}
#toTop:hover{background:var(--chip)}
.morewrap{display:flex;justify-content:center;padding:18px 0 8px}
.loadmore{padding:9px 22px;border:1px solid var(--line-strong);background:var(--panel);border-radius:var(--r);color:var(--ink);cursor:pointer;font-size:16.5px}
.loadmore:hover{background:var(--chip)}
.arealink{color:inherit;text-decoration:underline dotted;text-underline-offset:2px}
.arealink:hover{text-decoration:underline}
.arealink::after{content:" ↗";font-size:.85em;opacity:.6}
/* widok przedmiotu (detail modal) */
.detail-body{padding:0}
.dhead{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dhead .b{font-size:14px}
.dsec{padding:10px 14px;border-bottom:1px solid var(--line)}
.dsec:last-child{border-bottom:0}
.dsec>.dl{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--faint);margin-bottom:6px}
.drow{display:flex;gap:8px;font-size:16px;padding:2px 0}
.drow .k{color:var(--muted);min-width:120px;flex:none}
.drow .val{flex:1}
/* opis przedmiotu jako stary zwój: pergamin z postrzępioną krawędzią (maska) */
.dflavor{font-family:var(--font-flavor);color:var(--flavor-ink);background:var(--flavor-bg);
  font-size:17px;line-height:1.5;margin:10px 14px;padding:20px 18px;box-shadow:var(--flavor-shadow);
  -webkit-mask:radial-gradient(7px at 7px 50%,transparent 96%,#000) left/100% 18px repeat-y,
               radial-gradient(7px at calc(100% - 7px) 50%,transparent 96%,#000) right/100% 18px repeat-y,
               linear-gradient(#000,#000) center/calc(100% - 14px) 100% no-repeat;
          mask:radial-gradient(7px at 7px 50%,transparent 96%,#000) left/100% 18px repeat-y,
               radial-gradient(7px at calc(100% - 7px) 50%,transparent 96%,#000) right/100% 18px repeat-y,
               linear-gradient(#000,#000) center/calc(100% - 14px) 100% no-repeat}
.dsrc{font-size:15.5px;padding:5px 0;border-bottom:1px dashed var(--line)}
.dsrc:last-child{border-bottom:0}
.dactions{display:flex;gap:8px;padding:12px 14px;background:var(--chip);border-top:1px solid var(--line-strong);flex-shrink:0}
.dactions:empty{display:none}
.dactions button{flex:1;border:1px solid var(--line);background:var(--panel);border-radius:var(--r);padding:8px;color:var(--ink)}
.dactions button.added{background:var(--chip-on);color:var(--on-accent);border-color:var(--chip-on)}
.dflag{font-size:14px;border:1px solid var(--line);border-radius:4px;padding:1px 6px;background:var(--chip);color:var(--muted)}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);background:var(--line-strong);color:var(--on-accent);padding:9px 16px;border-radius:6px;font-size:16px;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;z-index:60}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.load-error{padding:30px;text-align:center;background:var(--bad);border-radius:var(--r);color:var(--neg)}
