/* Aldmarrow Wiki - dark fantasy theme (palette from the game's scripts/ui/pal.gd) */
:root{
  --bg:#100f15; --bg2:#17151d; --panel:#201d28; --panel2:#2a2635; --line:#3a3547; --line2:#4b4560;
  --text:#e6e2d6; --dim:#a29fb0; --gold:#e3a53a; --gold2:#ffd96a; --link:#8fd8ff; --link2:#b9e8ff;
  --fire:#ff8c2a; --ice:#8fd8ff; --poison:#8fe05a; --earth:#c9a46a; --storm:#4f8dff; --holy:#ffd96a; --dark:#d4264a; --void:#b48cff;
  --q-normal:#e8e8f0; --q-magic:#6f8fff; --q-rare:#ffe14d; --q-legendary:#ff8c1a; --q-unique:#d8b46a; --q-set:#4ee04e;
  --good:#8fe08f; --bad:#ff7a7a; --radius:10px;
  --serif:Georgia,"Palatino Linotype","Book Antiqua",Palatino,serif;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:70px}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 var(--sans);
  background-image:radial-gradient(ellipse at 50% -10%,#2a2040 0,#100f15 55%);background-attachment:fixed}
a{color:var(--link);text-decoration:none} a:hover{color:var(--link2);text-decoration:underline}
img{max-width:100%}
.px{image-rendering:pixelated;image-rendering:crisp-edges}
h1,h2,h3,h4{font-family:var(--serif);font-weight:700;line-height:1.25;color:var(--gold2);margin:1.4em 0 .5em}
h1{font-size:2rem;margin-top:.3em;letter-spacing:.3px;text-shadow:0 2px 0 #000a}
h2{font-size:1.45rem;border-bottom:1px solid var(--line);padding-bottom:.25em}
h3{font-size:1.15rem;color:var(--gold)}
h4{font-size:1rem;color:var(--text)}
p{margin:.6em 0} ul,ol{padding-left:1.3em} li{margin:.2em 0}
code,kbd{font-family:ui-monospace,Consolas,monospace;background:#0d0c12;border:1px solid var(--line);border-radius:5px;padding:0 .35em;font-size:.9em}
kbd{border-bottom-width:2px;color:var(--gold2)}
hr{border:0;border-top:1px solid var(--line);margin:1.5em 0}
.dim{color:var(--dim)} .small{font-size:.85rem} .nowrap{white-space:nowrap}
.good{color:var(--good)} .bad{color:var(--bad)}

/* ---- layout */
.top{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:.6rem;padding:.5rem .7rem;background:#0c0b11ee;backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.top .brand{font-family:var(--serif);font-weight:700;font-size:1.15rem;color:var(--gold2);white-space:nowrap;display:flex;align-items:center;gap:.45rem}
.top .brand:hover{text-decoration:none;color:#fff}
.top .brand img{width:28px;height:28px}
#menu-btn{background:var(--panel);color:var(--gold2);border:1px solid var(--line2);border-radius:8px;width:42px;height:42px;font-size:1.3rem;cursor:pointer;flex:none}
.search{position:relative;flex:1;min-width:0;max-width:520px;margin-left:auto}
#q{width:100%;height:42px;background:var(--panel);color:var(--text);border:1px solid var(--line2);border-radius:8px;padding:0 .8rem;font-size:1rem}
#q:focus{outline:2px solid var(--gold);border-color:var(--gold)}
#results{position:absolute;left:0;right:0;top:46px;background:var(--panel);border:1px solid var(--line2);border-radius:10px;max-height:70vh;overflow:auto;display:none;box-shadow:0 12px 30px #000c}
#results.open{display:block}
#results a{display:flex;align-items:center;gap:.6rem;padding:.5rem .7rem;color:var(--text);border-bottom:1px solid var(--line);min-height:48px}
#results a:last-child{border-bottom:0}
#results a:hover,#results a.sel{background:var(--panel2);text-decoration:none}
#results img{width:32px;height:32px;object-fit:contain;flex:none}
#results .k{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin-left:auto;flex:none}
#results .t{font-weight:600} #results .s{display:block;font-size:.8rem;color:var(--dim);font-weight:400}
#results .none{padding:.8rem;color:var(--dim)}
.wrap{display:flex;align-items:flex-start;max-width:1280px;margin:0 auto}
#side{width:260px;flex:none;position:sticky;top:58px;height:calc(100vh - 58px);overflow:auto;padding:1rem .8rem 3rem;border-right:1px solid var(--line);background:#0f0e14aa}
#side h5{margin:1rem 0 .3rem;font:700 .72rem var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
#side a{display:block;padding:.28rem .5rem;border-radius:6px;color:var(--text);font-size:.93rem}
#side a:hover{background:var(--panel2);text-decoration:none}
#side a.cur{background:var(--panel2);color:var(--gold2);border-left:3px solid var(--gold);padding-left:.35rem}
main{flex:1;min-width:0;padding:1rem 1.2rem 4rem;max-width:960px}
.crumbs{font-size:.85rem;color:var(--dim)} .crumbs a{color:var(--dim)} .crumbs a:hover{color:var(--gold2)}
footer{border-top:1px solid var(--line);padding:1.2rem;text-align:center;color:var(--dim);font-size:.85rem;background:#0c0b11}
@media(max-width:860px){
  #side{position:fixed;left:0;top:58px;bottom:0;height:auto;width:min(86vw,320px);transform:translateX(-102%);transition:transform .2s;z-index:60;background:#12111aF5;border-right:1px solid var(--line2);box-shadow:8px 0 30px #000b}
  body.nav-open #side{transform:none}
  body.nav-open::after{content:"";position:fixed;inset:58px 0 0 0;background:#0008;z-index:55}
  main{padding:.8rem .85rem 4rem}
  h1{font-size:1.65rem}
  .top .brand span{display:none}
}
@media(min-width:861px){#menu-btn{display:none}}

/* ---- components */
.card{background:linear-gradient(180deg,var(--panel),var(--bg2));border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem;margin:.8rem 0}
.card>h2:first-child,.card>h3:first-child{margin-top:0}
.grid{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.grid.sm{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.tile{display:flex;gap:.7rem;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:.7rem;color:var(--text);min-height:64px}
.tile:hover{border-color:var(--gold);text-decoration:none;background:var(--panel2)}
.tile img.ic{width:44px;height:44px;object-fit:contain;flex:none}
.tile b{display:block;font-family:var(--serif);color:var(--gold2)} .tile span{font-size:.82rem;color:var(--dim)}
.hero{position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line2);margin:.4rem 0 1rem;min-height:220px;display:flex;align-items:flex-end;background:#000 center/cover}
.hero::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0000 0%,#100f15e8 85%)}
.hero .in{position:relative;padding:1.2rem 1.3rem}
.hero h1{margin:0;font-size:2.4rem} .hero p{margin:.3rem 0 0;max-width:46ch;color:#ddd}
.btn{display:inline-block;background:var(--panel2);border:1px solid var(--line2);color:var(--gold2);border-radius:8px;padding:.5rem .9rem;margin:.2rem .2rem .2rem 0;cursor:pointer;font:inherit;min-height:42px}
.btn:hover{border-color:var(--gold);text-decoration:none;color:#fff}
.btn.pri{background:linear-gradient(180deg,#5a4216,#3b2b0e);border-color:var(--gold)}
.pill{display:inline-block;padding:.05rem .55rem;border-radius:99px;border:1px solid var(--line2);background:var(--bg2);font-size:.78rem;margin:.1rem .1rem .1rem 0;white-space:nowrap;color:var(--text)}
.pill.fire{color:var(--fire);border-color:var(--fire)} .pill.ice{color:var(--ice);border-color:var(--ice)} .pill.poison{color:var(--poison);border-color:var(--poison)}
.pill.earth{color:var(--earth);border-color:var(--earth)} .pill.storm{color:var(--storm);border-color:var(--storm)} .pill.holy{color:var(--holy);border-color:var(--holy)}
.pill.dark{color:#e8607a;border-color:var(--dark)} .pill.void{color:var(--void);border-color:var(--void)}
.pill.boss{color:#ff9a9a;border-color:#a33}
.pill.easy{color:var(--good)} .pill.hard{color:var(--bad)}
.q-normal{color:var(--q-normal)} .q-magic{color:var(--q-magic)} .q-rare{color:var(--q-rare)} .q-legendary{color:var(--q-legendary)} .q-unique{color:var(--q-unique)} .q-set{color:var(--q-set)}
.el-fire{color:var(--fire)} .el-ice{color:var(--ice)} .el-poison{color:var(--poison)} .el-earth{color:var(--earth)} .el-storm{color:var(--storm)} .el-holy{color:var(--holy)} .el-dark{color:#e8607a} .el-void{color:var(--void)}
.titlerow{display:flex;gap:1rem;align-items:center;margin:.2rem 0 .6rem}
.titlerow img.big{width:96px;height:96px;object-fit:contain;flex:none;background:radial-gradient(circle,#2f2a3d,#17151d);border:1px solid var(--line2);border-radius:12px;padding:8px}
.titlerow h1{margin:0}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:.25rem 1rem;margin:.4rem 0}
.kv dt{color:var(--dim)} .kv dd{margin:0}
@media(max-width:520px){.kv{grid-template-columns:1fr;gap:0}.kv dt{margin-top:.5rem;font-size:.8rem}}
.tw{overflow-x:auto;margin:.6rem 0;border:1px solid var(--line);border-radius:var(--radius);-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%;font-size:.92rem}
th,td{padding:.45rem .65rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{background:var(--panel2);color:var(--gold);font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;position:sticky;top:0;white-space:nowrap}
tr:last-child td{border-bottom:0}
tbody tr:hover{background:#ffffff08}
table.dt th.s{cursor:pointer;user-select:none} table.dt th.s::after{content:" \2195";opacity:.4}
table.dt th.asc::after{content:" \25B2";opacity:1} table.dt th.desc::after{content:" \25BC";opacity:1}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td img.ic{width:32px;height:32px;object-fit:contain;vertical-align:middle;margin-right:.35rem}
.fbar{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0;align-items:center}
.fbar input,.fbar select{background:var(--panel);color:var(--text);border:1px solid var(--line2);border-radius:8px;padding:.5rem .7rem;font-size:.95rem;min-height:42px;max-width:100%}
.fbar .cnt{color:var(--dim);font-size:.85rem}
details{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin:.7rem 0}
details>summary{cursor:pointer;padding:.7rem .9rem;font-family:var(--serif);font-weight:700;color:var(--gold2);list-style:none;min-height:44px;display:flex;align-items:center;gap:.5rem}
details>summary::-webkit-details-marker{display:none}
details>summary::before{content:"\25B8";color:var(--gold);transition:transform .15s}
details[open]>summary::before{transform:rotate(90deg)}
details>.dbody{padding:0 1rem 1rem}
details.spoiler{border-color:#7a3b3b;background:#1c1214}
details.spoiler>summary{color:#ffb0b0}
.note,.warn,.tip{border-left:4px solid var(--gold);background:#2a2412;padding:.6rem .9rem;border-radius:0 8px 8px 0;margin:.8rem 0}
.warn{border-color:var(--bad);background:#2a1414} .tip{border-color:var(--poison);background:#162314}
.note p:first-child,.warn p:first-child,.tip p:first-child{margin-top:0} .note p:last-child,.warn p:last-child,.tip p:last-child{margin-bottom:0}
.mapimg{display:block;border:1px solid var(--line2);border-radius:var(--radius);width:100%;height:auto}
.thumb{float:right;width:min(46%,320px);margin:0 0 .6rem 1rem;border:1px solid var(--line2);border-radius:10px}
@media(max-width:620px){.thumb{float:none;width:100%;margin:.4rem 0}}
.clear{clear:both}
.bar{height:8px;background:#0006;border-radius:99px;overflow:hidden;min-width:70px;display:inline-block;width:90px;vertical-align:middle}
.bar>i{display:block;height:100%;background:var(--gold)}
.gal{display:flex;flex-wrap:wrap;gap:.35rem;margin:.4rem 0}
.gal a{display:flex;flex-direction:column;align-items:center;width:78px;font-size:.7rem;text-align:center;color:var(--dim);line-height:1.15}
.gal a img{width:48px;height:48px;object-fit:contain}
.sprite{image-rendering:pixelated}
.az{display:flex;flex-wrap:wrap;gap:.3rem;margin:.5rem 0}
.az a{padding:.2rem .55rem;border:1px solid var(--line2);border-radius:6px;font-size:.85rem}
/* world map */
.mapbox{position:relative;border:1px solid var(--line2);border-radius:var(--radius);background:#06223f;overflow:auto;max-height:78vh;touch-action:pan-x pan-y pinch-zoom}
.mapin{position:relative;width:100%;min-width:100%}
.mapin img{display:block;width:100%;height:auto}
.pin{position:absolute;transform:translate(-50%,-50%);width:14px;height:14px;border-radius:50%;border:2px solid #000;background:var(--gold);box-shadow:0 0 0 1px #fff8;padding:0}
.pin:hover{z-index:5;transform:translate(-50%,-50%) scale(1.5)}
.pin.town{background:#ffd96a;width:18px;height:18px}.pin.dungeon{background:#c44}.pin.waystone{background:#6cf}.pin.altar{background:#c6f}.pin.castle{background:#fff;border-color:#a33}.pin.island{background:#8f8}.pin.tower{background:#222;border-color:var(--gold2)}.pin.boss{background:#f55}
.pin span{display:none;position:absolute;left:50%;bottom:130%;transform:translateX(-50%);white-space:nowrap;background:#000d;color:#fff;font-size:.75rem;padding:.1rem .4rem;border-radius:5px;pointer-events:none}
.pin:hover span,.pin:focus span,.pin.on span{display:block}
.maptools{display:flex;gap:.4rem;flex-wrap:wrap;margin:.5rem 0;align-items:center}
.legend span{display:inline-flex;align-items:center;gap:.25rem;margin-right:.7rem;font-size:.82rem;color:var(--dim)}
.legend i{width:12px;height:12px;border-radius:50%;display:inline-block;border:1px solid #000}
.toc{font-size:.9rem;columns:2 220px;margin:.6rem 0}
.toc a{display:block;padding:.15rem 0}
.steps{counter-reset:s;list-style:none;padding:0}
.steps>li{counter-increment:s;position:relative;padding:.4rem 0 .4rem 2.4rem}
.steps>li::before{content:counter(s);position:absolute;left:0;top:.35rem;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--panel2);border:1px solid var(--gold);color:var(--gold2);text-align:center;line-height:1.7rem;font-weight:700;font-size:.9rem}
.keys td:first-child{white-space:nowrap}
.icnrow{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.qm{display:inline-block;width:1.4em;height:1.4em;line-height:1.4em;text-align:center;border-radius:50%;font-weight:900;color:#000;background:#ff6a5a;margin:0 .15em}
.qm.gold{background:var(--gold2)}
@media print{.top,#side{display:none}}
a.card{display:block;color:inherit;text-decoration:none;margin:0}
a.card:hover{border-color:var(--gold,#e3a53a)}
a.card b{display:block;color:var(--gold,#e3a53a);margin-bottom:.2rem}
a.card span{display:block;font-size:.88rem;opacity:.8}
.lede{font-size:1.05rem;opacity:.9}
.hero img{width:100%;max-height:340px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--line2);image-rendering:auto}
label.legend{display:inline-block}
