/* Cobblers player guides: the one stylesheet every page of docs/player/ links.
   Hand-written and shared. The generators (tools/player_guide_battles.py, tools/player_guide_map.py, the index
   through tools/player_site.py) emit classes and never their own <style>, so the guides cannot drift into three
   looks. Sections: tokens and themes; base; the shared header, spoiler note and footer; the section filter and
   search box; the index; the battle guide (body.page-battles); the region map (body.page-map); the starters
   (body.page-starters); items and money (body.page-items). */

/* ---------------------------------------------------------------- tokens and themes */
/* light: lavender (the owner, 2026-10-08) */
:root{--bg:#f3effa;--card:#fdfbff;--ink:#1f1b2b;--muted:#5f5970;--rule:#dcd3ee;--accent:#6c4cb0;--accent-ink:#fff;
--soft:#ebe4f6;--warn:#fff6d8;--warn-rule:#d6a400;
--common:#3b7a3b;--uncommon:#2f5f9e;--rare:#8a3fa0;--ultra-rare:#b4441a;--btext:#fff;color-scheme:light}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#15171b;--card:#1f2228;--ink:#e8e6e1;
--muted:#a3a8b1;--rule:#353a43;--accent:#e0705c;--accent-ink:#15171b;--soft:#262a31;--warn:#2d2816;--warn-rule:#a07c10;
--common:#7cc47c;--uncommon:#7aa9ee;--rare:#d08ae4;--ultra-rare:#f08a5d;--btext:#111;color-scheme:dark}}
:root[data-theme=dark]{--bg:#15171b;--card:#1f2228;--ink:#e8e6e1;--muted:#a3a8b1;--rule:#353a43;--accent:#e0705c;
--accent-ink:#15171b;--soft:#262a31;--warn:#2d2816;--warn-rule:#a07c10;
--common:#7cc47c;--uncommon:#7aa9ee;--rare:#d08ae4;--ultra-rare:#f08a5d;--btext:#111;color-scheme:dark}

/* ---------------------------------------------------------------- base */
*{box-sizing:border-box}
html{scroll-padding-top:64px}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--accent)}
button{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--rule);border-radius:6px;
padding:.35rem .7rem;cursor:pointer}
button:hover{border-color:var(--accent)}
code{background:var(--soft);border-radius:4px;padding:0 5px;font-size:.88em}

/* ---------------------------------------------------------------- shared header, spoiler note, footer */
.site-header{position:sticky;top:0;z-index:5;background:var(--bg);border-bottom:1px solid var(--rule);
padding:8px 16px;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}
.site-name{font-weight:700;font-size:1.05rem;color:var(--ink);text-decoration:none}
.site-nav{display:flex;flex-wrap:wrap;gap:4px 12px;margin-right:auto;font-size:.92rem}
.site-nav a{text-decoration:none}
.site-nav a:hover{text-decoration:underline}
.site-nav a[aria-current=page]{color:var(--ink);font-weight:600;text-decoration:none}
.site-tools{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.nojs #theme{display:none}
.spoiler{max-width:1180px;margin:10px auto 0;padding:6px 12px;background:var(--warn);border-left:5px solid var(--warn-rule);
border-radius:6px;font-size:.88rem}
.page-map .spoiler{margin:6px 10px 6px;max-width:none}
.site-footer{max-width:1180px;margin:40px auto 0;padding:10px 16px 30px;border-top:1px solid var(--rule);color:var(--muted);
font-size:.85rem}
.site-footer p{margin:4px 0}

/* ---------------------------------------------------------------- the section filter and the search box
   (shared: battles, starters, items; markup from player_site.filter_nav() and search_box(), behaviour in site.js).
   Without JavaScript neither shows and every section stays visible. */
[hidden]{display:none!important}
.filter{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0;padding:0}
.filter button{font-size:.9rem;padding:4px 12px;border-radius:999px;max-width:100%;overflow-wrap:anywhere}
.filter button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);
font-weight:600}
.filter button:focus-visible,.search input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.search{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin:8px 0}
.search input{font:inherit;padding:.35rem .6rem;border:1px solid var(--rule);border-radius:6px;background:var(--card);
color:var(--ink);width:min(22rem,100%)}
.search [data-search-count]{color:var(--muted);font-size:.88rem}
.nojs .filter,.nojs .search{display:none}
.miss{display:none}

/* ---------------------------------------------------------------- the index */
.page-index main{max-width:860px;margin:0 auto;padding:12px 16px 20px}
.page-index h1{font-size:1.7rem;margin:18px 0 4px}
.guides{list-style:none;padding:0;margin:16px 0;display:grid;gap:12px}
.guides li{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:12px 16px}
.guides a{font-size:1.15rem;font-weight:600}
.guides p{margin:4px 0 0;color:var(--muted)}

/* ---------------------------------------------------------------- the battle guide */
.seg{display:inline-flex;border:1px solid var(--rule);border-radius:999px;overflow:hidden}
.seg button{font-size:.9rem;background:var(--card);border:0;border-radius:0;padding:5px 14px}
.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);font-weight:600}
.nojs .seg{display:none}
.page-battles main{max-width:1180px;margin:0 auto;padding:12px 16px 20px}
.page-battles h1{font-size:1.7rem;margin:14px 0 4px}
.page-battles h2{font-size:1.35rem;margin:34px 0 4px;padding-bottom:4px;border-bottom:2px solid var(--accent)}
.page-battles h2 small{font-weight:400;color:var(--muted);font-size:.95rem;margin-left:8px}
.page-battles h3{font-size:1.05rem;margin:20px 0 8px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.lead{color:var(--muted);margin:0 0 12px}
.box{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:10px 14px;margin:10px 0}
.box.warn{background:var(--warn);border-left:5px solid var(--warn-rule)}
.box p,.box ul{margin:4px 0}
.toc ol{columns:2 260px;margin:4px 0;padding-left:22px}
.toc li{break-inside:avoid;margin:2px 0}
.cap{display:inline-block;background:var(--soft);border:1px solid var(--rule);border-radius:8px;padding:3px 10px;
margin:6px 0 2px;font-size:.95rem}
.tr{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:10px 12px;margin:0 0 12px}
.tr.boss{border:2px solid var(--accent)}
.th{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
.th .no{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem}
.th h4{margin:0;font-size:1.1rem}
.tag{font-size:.78rem;border:1px solid var(--rule);border-radius:999px;padding:0 8px;color:var(--muted)}
.loc{margin:2px 0 8px;color:var(--muted);font-size:.9rem}
.loc code{color:var(--ink)}
.ml{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:6px 0 4px}
.team{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:8px}
.mon{border:1px solid var(--rule);border-radius:8px;padding:6px 8px;background:var(--bg)}
.mh{display:flex;justify-content:space-between;gap:6px;align-items:baseline}
.mh b{font-size:1rem}
.lv{font-variant-numeric:tabular-nums;font-weight:600}
.ty{margin:2px 0 4px}
.t{display:inline-block;border-radius:4px;padding:0 6px;font-size:.72rem;font-weight:700;text-transform:uppercase;
letter-spacing:.03em;line-height:1.5;margin-right:3px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:0 8px;margin:0;font-size:.85rem}
.kv dt{color:var(--muted)}
.kv dd{margin:0}
.mv{list-style:none;margin:4px 0 0;padding:0;font-size:.88rem}
.mv li{display:flex;gap:6px;align-items:baseline}
.mv .t{min-width:3.4em;text-align:center;font-size:.66rem}
.mv small{color:var(--muted);margin-left:auto}
.asks{background:var(--soft);border-radius:8px;padding:8px 12px;margin:8px 0 0}
.asks dl{margin:0}
.asks dt{font-weight:700;font-size:.85rem;margin-top:6px}
.asks dd{margin:0}
.asks .f{font-weight:400;color:var(--muted);font-size:.78rem}
.js[data-mode=normal] .m-c,.js[data-mode=challenge] .m-n{display:none}
.nojs .cv.m-n::before{content:"Normal "}.nojs .cv.m-c::before{content:" / Challenge "}
.notes li{margin:4px 0}
.src{color:var(--muted);font-size:.85rem;margin-top:30px}
/* the eighteen type badges: the familiar palette, text colour chosen for contrast (WCAG luminance) */
.t-normal{background:#9fa19f;color:#111}.t-fire{background:#e62829;color:#111}.t-water{background:#2980ef;color:#111}
.t-electric{background:#fac000;color:#111}.t-grass{background:#3fa129;color:#111}.t-ice{background:#3dcef3;color:#111}
.t-fighting{background:#ff8000;color:#111}.t-poison{background:#9141cb;color:#fff}.t-ground{background:#915121;color:#fff}
.t-flying{background:#81b9ef;color:#111}.t-psychic{background:#ef4179;color:#111}.t-bug{background:#91a119;color:#111}
.t-rock{background:#afa981;color:#111}.t-ghost{background:#704170;color:#fff}.t-dragon{background:#5060e1;color:#fff}
.t-dark{background:#624d4e;color:#fff}.t-steel{background:#60a1b8;color:#111}.t-fairy{background:#ef70ef;color:#111}

/* ---------------------------------------------------------------- the region map */
#q{font:inherit;padding:.35rem .6rem;border:1px solid var(--rule);border-radius:6px;background:var(--card);color:var(--ink);
width:min(22rem,100%)}
.page-map main{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(20rem,1fr);gap:0;height:calc(100vh - 6.5rem);
min-height:30rem;border-top:1px solid var(--rule)}
#mapwrap{position:relative;overflow:hidden;border-right:1px solid var(--rule);background:#224e8a;touch-action:none}
#map{width:100%;height:100%;display:block;cursor:grab;user-select:none}
#map.drag{cursor:grabbing}
.tools{position:absolute;top:.5rem;left:.5rem;display:flex;flex-direction:column;gap:.3rem}
.tools button{width:2.2rem;height:2.2rem;padding:0;font-size:1.1rem;opacity:.92}
.layers{position:absolute;top:.5rem;right:.5rem;background:var(--card);border:1px solid var(--rule);border-radius:6px;
padding:.3rem .5rem;font-size:.82rem;opacity:.94}
.layers label{display:block;white-space:nowrap}
#coord{position:absolute;bottom:.4rem;left:.5rem;background:var(--card);border:1px solid var(--rule);border-radius:4px;
padding:.1rem .4rem;font-size:.78rem;opacity:.9;font-variant-numeric:tabular-nums}
#panel{overflow:auto;padding:.8rem 1rem 2rem}
#panel h2{margin:.1rem 0 .2rem;font-size:1.2rem}
#panel h3{margin:1rem 0 .3rem;font-size:.95rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.meta{color:var(--muted);font-size:.88rem;margin:.1rem 0}
.page-map table{border-collapse:collapse;width:100%;font-size:.86rem}
.page-map th,.page-map td{text-align:left;padding:.25rem .35rem;border-bottom:1px solid var(--rule);vertical-align:top}
.page-map th{font-weight:600;color:var(--muted);font-size:.78rem}
.page-map td.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.b{display:inline-block;padding:0 .35rem;border-radius:4px;font-size:.76rem;font-weight:600;color:var(--btext);
white-space:nowrap}
.b.common{background:var(--common)}.b.uncommon{background:var(--uncommon)}.b.rare{background:var(--rare)}
.b.ultra-rare{background:var(--ultra-rare)}
.cond{color:var(--muted);font-size:.8rem}
.link{color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.reglist{columns:2 13rem;column-gap:1.2rem;padding:0;margin:.3rem 0;list-style:none}
.reglist li{break-inside:avoid;margin:0 0 .6rem}.reglist b{display:block;font-size:.88rem}
.reglist span{display:inline-block;margin:.05rem .4rem .05rem 0;font-size:.86rem}
.sw{display:inline-block;width:.8rem;height:.8rem;border-radius:2px;vertical-align:-.05rem;margin-right:.3rem;
border:1px solid rgba(0,0,0,.25)}
.area{fill-opacity:.30;stroke:none;cursor:pointer}.area:hover{fill-opacity:.55}
#map.has-sel .area{fill-opacity:.12}#map.has-sel .area.sel{fill-opacity:.7}
#map.has-hit .area{fill-opacity:.08}#map.has-hit .area.hit{fill-opacity:.65}
#map.has-hit .area.sel,#map.has-sel .area.sel{fill-opacity:.75}
.outline{fill:none;stroke:#fff;stroke-opacity:.55;vector-effect:non-scaling-stroke;stroke-width:1;pointer-events:none}
.cl{fill:none;stroke:#fff3c4;stroke-width:2;stroke-dasharray:6 5;vector-effect:non-scaling-stroke;pointer-events:none;
stroke-opacity:.9}
.lbl{font-family:system-ui,sans-serif;paint-order:stroke;stroke:#000;stroke-opacity:.7;fill:#fff;pointer-events:none;
text-anchor:middle;dominant-baseline:middle}
.lbl.town{font-weight:700;fill:#fffbe8}.lbl.area-l{font-style:italic;fill:#e9f2ff}
.dot{fill:#fffbe8;stroke:#000;stroke-opacity:.7;vector-effect:non-scaling-stroke;pointer-events:none}
section.doc{max-width:62rem;margin:0 auto;padding:.6rem 1rem}
section.doc h2{font-size:1.05rem;margin:1.2rem 0 .3rem}
section.doc li{margin:.15rem 0}
.small{font-size:.85rem;color:var(--muted)}
.spec-row{cursor:pointer}.spec-row:hover td{background:var(--soft)}
.legend-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.2rem 1rem;font-size:.88rem}

/* ---------------------------------------------------------------- small screens and print */
@media (max-width:820px){.page-map main{grid-template-columns:minmax(0,1fr);height:auto}
#mapwrap{height:62vh;border-right:0;border-bottom:1px solid var(--rule)}
#panel{max-height:none;overflow-x:auto;padding:.6rem .6rem 1.5rem}.reglist{columns:1}
#q{flex:1 1 auto;width:auto;min-width:0}.page-map th,.page-map td{padding:.2rem .25rem}.page-map table{font-size:.8rem}
.layers{font-size:.75rem;padding:.2rem .35rem}}
@media (max-width:560px){body{font-size:14px}.site-header{padding:6px 10px}.page-battles main{padding:8px 10px 20px}
.team{grid-template-columns:1fr}.tr{padding:8px}.page-battles h2 small{display:block;margin:0}}
/* starters.html (tools/player_guide_starters.py) */
.page-starters main{max-width:980px;margin:0 auto;padding:12px 16px 20px}
.page-starters h1{font-size:1.7rem;margin:14px 0 4px}
.page-starters h2{font-size:1.35rem;margin:30px 0 6px;padding-bottom:4px;border-bottom:2px solid var(--accent)}
.page-starters h3{font-size:1.05rem;margin:16px 0 6px}
.page-starters table.stats{border-collapse:collapse;width:100%;font-size:.88rem;margin:6px 0}
.page-starters .stats th,.page-starters .stats td{text-align:left;padding:.25rem .4rem;border-bottom:1px solid var(--rule)}
.page-starters .stats th{font-weight:600;color:var(--muted);font-size:.78rem}
.page-starters .stats td.n{text-align:right;font-variant-numeric:tabular-nums}
.page-starters .stats .t{margin-right:3px}
.page-starters ol.steps{margin:4px 0;padding-left:22px}
@media (max-width:560px){.page-starters main{padding:8px 10px 20px}.page-starters .stats{font-size:.78rem}}
/* items.html (tools/player_guide_items.py) */
.page-items main{max-width:1080px;margin:0 auto;padding:12px 16px 20px}
.page-items h1{font-size:1.7rem;margin:14px 0 4px}
.page-items h2{font-size:1.35rem;margin:30px 0 6px;padding-bottom:4px;border-bottom:2px solid var(--accent)}
.page-items h3{font-size:1.05rem;margin:16px 0 6px}
.wide{overflow-x:auto;max-width:100%}
.page-items table{border-collapse:collapse;width:100%;font-size:.88rem;margin:6px 0}
.page-items th,.page-items td{text-align:left;padding:.3rem .45rem;border-bottom:1px solid var(--rule);vertical-align:top}
.page-items th{font-weight:600;color:var(--muted);font-size:.78rem}
.page-items td.n,.page-items th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.page-items td ul{margin:0;padding-left:1.1rem}
.page-items td li{margin:0 0 2px}
.page-items .id{color:var(--muted);font-size:.78rem;display:block}
@media (max-width:560px){.page-items main{padding:8px 10px 20px}.page-items table{font-size:.8rem}
.page-items .id{display:none}}
@media print{.site-header{position:static}.seg,#theme,.filter,.search{display:none}}
