:root{

  --bg:#14120e;
  --panel:#1e1b15;
  --raised:#252118;
  --input:#100e0a;
  --thead:#1a1712;

  --ink:#ece6da;
  --ink-2:#b6ae9e;
  --muted:#948c7c;

  --accent:#f0a929;
  --accent-dim:#c98c22;
  --accent-ink:#20180a;
  --accent-soft:#2a2114;

  --good:#6fbf5e;
  --bad:#d9534f;
  --bad-ink:#e66f6b;
  --info:#63b7c9;

  --rule:#2b271f;
  --rule-2:#3a3428;

  --radius:5px;
  --maxw:1160px;
  --side:300px;
  --sidegap:18px;

  --font-num:"IBM Plex Sans",ui-sans-serif,system-ui,sans-serif;
  --font-body:"IBM Plex Sans",ui-sans-serif,system-ui,-apple-system,sans-serif;
  --font-display:"Fraunces",Georgia,"Times New Roman",serif;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  min-height:100vh;
  min-height:100svh;
  display:flex;
  flex-direction:column;
  background:var(--bg);
  color:var(--ink);
  font:400 16px/1.6 var(--font-body);
  -webkit-font-smoothing:antialiased;
}
main{flex:1 0 auto}
.site,.site-foot{flex:none}
h1,h2,h3,h4{margin:0;text-wrap:balance;font-family:var(--font-display);font-weight:700;letter-spacing:-.015em;line-height:1.15}
p{margin:0}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}

div.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 16px}
@media(min-width:480px){div.wrap{padding:0 20px}}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:-9999px}
.skip:focus{left:16px;top:12px;z-index:20;background:var(--accent);color:var(--accent-ink);padding:8px 14px;border-radius:var(--radius)}

.site{border-bottom:1px solid var(--rule);background:var(--panel)}

.site-in{display:flex;align-items:center;justify-content:space-between;gap:8px;height:60px}
@media(min-width:480px){.site-in{gap:24px}}
.brand{
  font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:-.02em;
  color:var(--ink);display:inline-flex;align-items:center;gap:8px;white-space:nowrap
}
@media(min-width:480px){.brand{font-size:20px;gap:9px}}
.brand:hover{text-decoration:none}

.brand-word{white-space:nowrap}
.brand-word b{color:var(--accent);font-weight:inherit}
.brand-mark{
  width:13px;height:13px;flex:none;background:var(--accent);

  clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);
}
.site nav{display:flex;gap:4px}

.site nav a{
  color:var(--ink-2);font-size:14.5px;font-weight:500;
  display:inline-flex;align-items:center;min-height:44px;padding:0 7px;border-radius:var(--radius);white-space:nowrap
}
@media(min-width:480px){.site nav a{padding:0 10px}}
.site nav a:hover{color:var(--accent);text-decoration:none;background:var(--raised)}
@media(min-width:480px){.site nav{gap:10px}}

.crumbs{padding:14px 0 0}
.crumbs ol{
  list-style:none;display:flex;flex-wrap:wrap;gap:7px;
  margin:0;padding:0;font-size:13px;color:var(--muted)
}
.crumbs li+li::before{content:"/";margin-right:7px;color:var(--rule-2)}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--accent)}

.hero{padding:32px 0 0}
@media(min-width:700px){.hero{padding:56px 0 0}}

.has-crumbs .hero{padding-top:14px}
@media(min-width:700px){.has-crumbs .hero{padding-top:20px}}
.hero h1{font-size:clamp(27px,6vw,46px)}
.hero .lede{margin-top:14px;max-width:60ch;color:var(--ink-2);font-size:16.5px}
@media(min-width:480px){.hero .lede{font-size:17.5px;margin-top:16px}}
.hero .updated{margin-top:10px;color:var(--muted);font-size:13.5px}
.pricebar{
  display:inline-flex;align-items:center;gap:9px;margin-top:22px;padding:7px 13px;
  background:var(--panel);border:1px solid var(--rule);border-radius:100px;
  font-size:13px;color:var(--muted)
}
.dot{width:7px;height:7px;border-radius:50%;background:var(--good);flex:none}
.dot.stale{background:var(--bad)}

.section{padding:16px 0 56px}
.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.section-head h2{font-size:22px}
.section-head p{color:var(--muted);font-size:14px}

.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(250px,100%),1fr))}
.card{
  display:block;background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);
  padding:18px 18px 16px;color:var(--ink);transition:border-color .12s ease,background .12s ease
}
.card:hover{border-color:var(--accent-dim);background:var(--raised);text-decoration:none}
.card h3{font-size:17px;margin-bottom:6px}
.card p{color:var(--muted);font-size:13.5px}
.card.soon{opacity:.5;pointer-events:none}
@media(min-width:900px){.section.undercalc{margin-left:calc(var(--side) + var(--sidegap))}}

.calc{display:grid;gap:var(--sidegap);grid-template-columns:1fr;align-items:start}

.calc>*{min-width:0}
@media(min-width:900px){
  .calc{grid-template-columns:var(--side) minmax(0,1fr)}
  .calc>.panel{
    position:sticky;top:16px;max-height:calc(100vh - 32px);overflow-y:auto;
    scrollbar-width:thin;scrollbar-color:var(--rule-2) transparent
  }
  .section:has(>.calc)~.section{margin-left:calc(var(--side) + var(--sidegap))}
}

.panel{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:18px}
.legend{
  font-family:var(--font-display);font-size:12px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--accent);margin-bottom:14px;font-weight:700
}
.field{margin-bottom:13px}
.field label{display:block;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}

.field input,.field select{
  width:100%;padding:11px 11px;border-radius:var(--radius);min-height:44px;
  background:var(--input);color:var(--ink);border:1px solid var(--rule-2);
  font:500 16px/1.2 var(--font-num);font-variant-numeric:tabular-nums
}
.field input:hover,.field select:hover{border-color:var(--accent-dim)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hint{font-size:12px;color:var(--muted);margin-top:2px}

.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:11px;margin-bottom:16px}
@media(min-width:700px){.stats{grid-template-columns:repeat(4,1fr)}}
@media(min-width:700px){.stats.stats-3{grid-template-columns:repeat(3,1fr)}}
.stat{background:var(--raised);border:1px solid var(--rule);border-radius:var(--radius);padding:12px 13px}
.stat span{display:block;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.stat b{
  display:block;font-family:var(--font-num);font-size:21px;font-weight:600;color:var(--accent);
  font-variant-numeric:tabular-nums;line-height:1.1
}

.tablewrap{overflow-x:auto;min-width:0;-webkit-overflow-scrolling:touch;border:1px solid var(--rule);border-radius:var(--radius);background:var(--panel)}
table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:600px}
th{
  text-align:left;padding:10px 13px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);background:var(--thead);border-bottom:1px solid var(--rule);font-weight:600;white-space:nowrap
}
th.num,td.num{text-align:right}
td{padding:10px 13px;border-bottom:1px solid var(--rule);font-variant-numeric:tabular-nums;white-space:nowrap}
tr:last-child td{border-bottom:none}
tr.best td{background:var(--accent-soft)}
tr.locked td{color:var(--muted)}

tbody tr{cursor:pointer}
tbody tr:hover td{background:var(--raised)}
tbody tr.sel td{background:var(--raised)}
tbody tr.sel td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
tbody tr:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
td.name{white-space:normal;font-weight:600;color:var(--ink)}
td.name small{display:block;font-weight:400;color:var(--muted);font-size:12px;margin-top:2px;white-space:normal}
.pill{
  display:inline-block;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;
  border-radius:2px;background:var(--accent);color:var(--accent-ink);margin-left:8px;font-weight:700;vertical-align:1px
}
.gain{color:var(--good)}
.stat b.gain{color:var(--good)}
.lock{color:var(--bad)}

.updates{margin-top:18px;background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:18px}
.updates ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.updates li{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:baseline}
@media(max-width:479px){.updates li{grid-template-columns:1fr;gap:3px}}
.updates time{
  font-family:var(--font-num);color:var(--accent);font-size:12px;font-variant-numeric:tabular-nums;
  letter-spacing:.03em;white-space:nowrap
}
.updates .sum{color:var(--ink-2);font-size:14px}
.updates .det{display:block;color:var(--muted);font-size:12.5px;margin-top:3px}

.notice{
  margin-top:18px;padding:13px 15px;border:1px dashed var(--rule-2);border-radius:var(--radius);
  color:var(--muted);font-size:13.5px
}
.notice strong{color:var(--ink-2)}

.site-foot{border-top:1px solid var(--rule);background:var(--panel);margin-top:40px;padding:36px 0}
.foot-in{display:grid;gap:28px;grid-template-columns:1fr}
@media(min-width:700px){.foot-in{grid-template-columns:2fr 1fr 1.6fr}}
.site-foot h2{font-family:var(--font-body);font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;font-weight:600}
.site-foot nav{display:flex;flex-direction:column;gap:2px;font-size:14px}
.site-foot nav a{display:inline-flex;align-items:center;min-height:44px}
@media(min-width:768px){.foot-in nav{gap:0}.foot-in nav a{min-height:30px}}
.site-foot nav a{color:var(--ink-2)}
.site-foot nav a:hover{color:var(--accent)}
.foot-brand p{margin-top:10px;color:var(--muted);font-size:13.5px;max-width:44ch}
.foot-legal p{color:var(--muted);font-size:13.5px}
.foot-legal p+p{margin-top:9px}
.fine{font-size:12px;line-height:1.5}

.foot-bottom{
  border-top:1px solid var(--rule);margin-top:28px;padding-top:20px;
  display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;justify-content:space-between
}
.foot-bottom nav{display:flex;flex-wrap:wrap;gap:2px 16px;flex-direction:row}
.foot-bottom nav a{color:var(--muted);font-size:13px;min-height:44px;display:inline-flex;align-items:center}
.foot-bottom nav a:hover{color:var(--accent)}
.copyright{color:var(--muted);font-size:13px}
.copyright a{color:var(--ink-2)}

.prose{max-width:68ch;padding-bottom:56px}
.prose h2{font-size:21px;margin:34px 0 10px}
.prose h3{font-size:16.5px;margin:24px 0 8px;font-family:var(--font-body);font-weight:600}
.prose p,.prose li{color:var(--ink-2);font-size:16px}
.prose p+p{margin-top:13px}
.prose ul{margin:12px 0;padding-left:20px;display:grid;gap:7px}
.prose>:first-child{margin-top:0}
.prose dl{margin:14px 0;display:grid;gap:10px}
.prose dt{font-weight:600;color:var(--ink)}
.prose dd{margin:2px 0 0;color:var(--ink-2)}

.goalsec{margin-bottom:14px}
.goalhead{
  display:block;font-family:var(--font-display);font-size:11px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-2);margin-bottom:7px;font-weight:700
}
.goalsec .field{margin-bottom:0}
.goalsec .hint{margin-top:7px}

.filterbar{
  margin-bottom:14px;padding:9px 10px;border-radius:var(--radius);
  background:var(--panel);border:1px solid var(--rule)
}
.filterbar-top{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.filterbar .filters{margin-top:9px;padding-top:9px;border-top:1px solid var(--rule)}
.filterbar .chipbtn{background:var(--raised)}

.filters{display:flex;flex-wrap:wrap;gap:8px}
.chipbtn{
  min-height:38px;padding:0 13px;border-radius:100px;cursor:pointer;
  background:var(--panel);color:var(--ink-2);border:1px solid var(--rule-2);
  font:500 13px/1 var(--font-body)
}
.chipbtn:hover{border-color:var(--accent-dim);color:var(--ink)}
.chipbtn.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}

.segmented{
  display:inline-flex;padding:3px;border-radius:100px;
  background:var(--input);border:1px solid var(--rule-2)
}
.segbtn{
  min-height:34px;padding:0 13px;border:0;border-radius:100px;cursor:pointer;
  background:transparent;color:var(--ink-2);font:500 13px/1 var(--font-body);white-space:nowrap
}
.segbtn+.segbtn{margin-left:2px}
.segbtn:hover{color:var(--ink)}
.segbtn.on{background:var(--raised);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.35)}

.searchwrap{position:relative;flex:1 1 100%;min-width:170px}
@media(min-width:560px){.filterbar-top .searchwrap{flex:0 1 260px;margin-left:auto}}
.searchwrap input{
  width:100%;min-height:38px;padding:0 32px 0 13px;border-radius:100px;
  background:var(--input);border:1px solid var(--rule-2);color:var(--ink);
  font:400 16px/1 var(--font-body)
}
.searchwrap input::placeholder{color:var(--muted)}
.searchwrap input:focus{outline:2px solid var(--accent-dim);outline-offset:1px;border-color:var(--accent-dim)}
.searchwrap input::-webkit-search-cancel-button{display:none}
.searchclear{
  position:absolute;top:50%;right:3px;transform:translateY(-50%);
  width:30px;height:30px;border:0;border-radius:100px;cursor:pointer;
  background:transparent;color:var(--muted);font:400 18px/1 var(--font-body)
}
.searchclear:hover{color:var(--ink)}
.nomatch{padding:18px 4px;color:var(--muted);font-size:14px}
.accessnote{flex:1 1 auto;margin:0;padding:0 3px;color:var(--muted);font-size:13px}
.mem{
  display:inline-block;font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;
  padding:2px 6px;border-radius:2px;border:1px solid var(--rule-2);color:var(--muted);
  margin-left:7px;font-weight:600;vertical-align:1px
}
.mem.f2p{color:var(--good);border-color:#3c5c36}

.sortbtn{
  display:inline-flex;align-items:center;gap:5px;background:none;border:0;padding:0;cursor:pointer;
  color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;min-height:32px
}
th.num .sortbtn{flex-direction:row-reverse}
.sortbtn:hover{color:var(--accent)}
.sortbtn i{
  width:0;height:0;flex:none;opacity:0;
  border-left:4px solid transparent;border-right:4px solid transparent;
  border-bottom:5px solid currentColor
}
.sortbtn.asc i{opacity:1}
.sortbtn.desc i{opacity:1;transform:rotate(180deg)}
th[aria-sort] .sortbtn{color:var(--accent)}

.boosts{border:1px solid var(--rule-2);border-radius:var(--radius);padding:10px 12px 8px;margin:0 0 13px}
.boosts legend{
  font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0 5px
}
.boost{
  display:flex;align-items:center;gap:9px;min-height:34px;cursor:pointer;
  font-size:14px;color:var(--ink-2)
}
.boost input{width:16px;height:16px;flex:none;accent-color:var(--accent);cursor:pointer;margin:0}
.boost span{flex:1 1 auto;min-width:0}
.boost b{font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums;font-size:12.5px}
.boost:hover span{color:var(--ink)}
.boost input:checked ~ b{color:var(--accent)}
.boost-total{
  margin-top:6px;padding-top:7px;border-top:1px solid var(--rule);
  font-size:12.5px;color:var(--muted)
}
.boost-total.on{color:var(--accent);font-weight:600}

.lookup{display:flex;gap:8px;align-items:stretch}
.lookup input{flex:1 1 auto;min-width:0}
.lookup button{
  flex:none;padding:0 14px;min-height:44px;border-radius:var(--radius);cursor:pointer;
  background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);
  font:600 14px/1 var(--font-body)
}
.lookup button:hover{background:var(--accent-dim);border-color:var(--accent-dim)}
.lookup button[disabled]{opacity:.55;cursor:default}
.lookup-msg{font-size:12.5px;margin-top:6px;min-height:1.2em;color:var(--muted)}
.lookup-msg.err{color:var(--bad)}
.lookup-msg.ok{color:var(--good)}

.mid{text-align:center;padding:90px 0}
.mid h1{font-size:38px}
.mid p{margin-top:14px;color:var(--ink-2)}
.mid .pricebar{margin-top:26px}

.lvgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lvgrid .field{margin-bottom:0}
.panelfoot{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.ghostbtn{
  min-height:44px;padding:0 14px;border-radius:var(--radius);cursor:pointer;flex:1 1 auto;
  background:var(--raised);color:var(--ink-2);border:1px solid var(--rule-2);
  font:500 14px/1 var(--font-body)
}
.ghostbtn:hover{border-color:var(--accent-dim);color:var(--ink)}
.panelfoot .lookup-msg{flex:1 1 100%;margin-top:0;word-break:break-all}

.cbblock{margin-top:26px}
.cbblock>h2{font-size:20px;margin-bottom:6px}
.cbblock>.sub{color:var(--muted);font-size:13.5px;margin-bottom:12px;max-width:70ch}
.meter{
  height:10px;border-radius:100px;background:var(--input);border:1px solid var(--rule-2);
  overflow:hidden;margin-bottom:6px
}
.meter i{display:block;height:100%;width:0;background:var(--accent);border-radius:100px}
.metertext{font-size:12.5px;color:var(--muted);margin-bottom:14px}

.stylelist{list-style:none;margin:0;padding:0;display:grid;gap:8px}
@media(min-width:700px){.stylelist{grid-template-columns:repeat(3,1fr)}}
.stylelist li{
  background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);
  padding:11px 13px;display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:baseline
}
.stylelist li.on{border-color:var(--accent-dim);background:var(--accent-soft)}
.stylelist b{font-weight:600;color:var(--ink);font-size:14px}
.stylelist .v{font-family:var(--font-num);font-variant-numeric:tabular-nums;color:var(--ink-2);font-weight:600}
.stylelist li.on .v{color:var(--accent)}
.stylelist .w{grid-column:1 / -1;font-size:12.5px;color:var(--muted)}

table.plain{min-width:0}
table.plain td.name{min-width:96px}
table.plain.tight td.name{min-width:0}
@media(max-width:1179px){
  table.plain .opt2{display:none}
}
@media(max-width:599px){
  table.plain .opt{display:none}
  table.plain th,table.plain td{padding-left:9px;padding-right:9px}
}
@media(max-width:359px){
  table.plain th,table.plain td{padding-left:6px;padding-right:6px}
  table.plain .minibtn{padding:0 9px}
}
table.plain tbody tr{cursor:default}
table.plain tbody tr:hover td{background:transparent}
table.plain tbody tr.best:hover td{background:var(--accent-soft)}
table.plain tr.passive td,table.plain tr.done td{color:var(--muted)}
table.plain tr.done td.gain{color:var(--good)}
table.plain tfoot td{border-top:1px solid var(--rule-2);border-bottom:none;font-weight:600;color:var(--ink)}
table.plain tfoot td.num{color:var(--accent)}

.planbar{
  background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);
  padding:13px;margin-bottom:12px;display:grid;grid-template-columns:minmax(0,1fr);gap:13px
}
.planrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.planrow>.lab{
  font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex:0 0 100%
}
.planrow input[type=number],.planrow select{
  min-height:44px;padding:0 11px;border-radius:var(--radius);
  background:var(--input);color:var(--ink);border:1px solid var(--rule-2);
  font:500 16px/1.2 var(--font-num);font-variant-numeric:tabular-nums
}
.planrow input[type=number]{width:92px}
.planrow select{max-width:100%;min-width:0;flex:1 1 220px}
.planrow input:hover,.planrow select:hover{border-color:var(--accent-dim)}
.check{
  display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:0 12px 0 10px;cursor:pointer;
  border-radius:100px;background:var(--raised);border:1px solid var(--rule-2);
  font-size:13.5px;color:var(--ink-2)
}
.check input{width:16px;height:16px;margin:0;accent-color:var(--accent);cursor:pointer;flex:none}
.check:hover{border-color:var(--accent-dim);color:var(--ink)}
.planmsg{font-size:13.5px;color:var(--ink-2);margin-bottom:12px;max-width:70ch}
.planlinks{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:12px;font-size:14px}
.planlinks a{display:inline-flex;align-items:center;min-height:32px}
.pricebox{
  margin-top:12px;background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:13px
}
.pricebox .planrow+.priceout{margin-top:11px}
.priceout{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.priceout b{font-family:var(--font-num);font-size:21px;font-weight:600;color:var(--accent);font-variant-numeric:tabular-nums}
.priceout span{font-size:13px;color:var(--muted)}
.minibtn{
  min-height:34px;padding:0 12px;border-radius:100px;cursor:pointer;
  background:var(--raised);color:var(--ink-2);border:1px solid var(--rule-2);
  font:500 12.5px/1 var(--font-body)
}
.minibtn:hover{border-color:var(--accent-dim);color:var(--ink)}
.factline{font-size:14.5px;color:var(--ink-2);margin-top:8px;max-width:70ch}
.factline+.factline{margin-top:6px}
.formula{
  margin:14px 0;padding:13px 15px;border-radius:var(--radius);overflow-x:auto;
  background:var(--panel);border:1px solid var(--rule);color:var(--ink);
  font:500 14.5px/1.7 var(--font-num);font-variant-numeric:tabular-nums
}
.formula div{white-space:nowrap}

.field>.lab{display:block;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.field.gap{margin-top:13px}
.segmented.wide{display:flex;width:100%}
.segmented.wide .segbtn{flex:1 1 0;min-width:0;padding-left:6px;padding-right:6px}
.lvgrid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.lvgrid-3 .field input{padding-left:8px;padding-right:4px}
.targetbox{border:1px solid var(--rule);border-radius:var(--radius);padding:12px;margin:14px 0 0;min-width:0;display:flex;flex-wrap:wrap;gap:8px}.targetbox[hidden]{display:none}
.targetbox legend{padding:0 6px;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.targetbox .check{flex:1 1 auto}
.targetbox #mh-context{flex:1 1 100%;display:flex;flex-wrap:wrap;gap:8px}
.targetbox #mh-context:empty{display:none}
.targetbox .ctx.field{flex:1 1 100%;margin:4px 0 0}
.targetbox .ctx.field .check{margin-top:8px}
.ctx[hidden]{display:none}
.monbox{order:-1}
.monbox input[type=search]{width:100%;min-height:44px;padding:0 12px;border-radius:var(--radius);background:var(--input);color:var(--ink);border:1px solid var(--rule-2);font:400 16px/1.2 var(--font-body)}
.monbox .picklist{max-height:264px;border:1px solid var(--rule-2);border-radius:var(--radius);background:var(--panel)}
.monbox .picklist[hidden]{display:none}
.targetbox label.second{margin-top:10px}
.stephead{font-family:var(--font-body);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:14px 0 6px}
.stephead:first-of-type{margin-top:0}
.chiprow{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 100%}
.chiprow[hidden]{display:none}
.chipbtn.sm{min-height:34px;padding:0 12px;font-size:13px}
.cbblock.first{margin-top:4px}
.cbblock .chiprow{margin-bottom:12px}

.hitbar{
  display:none;position:sticky;top:0;z-index:5;align-items:baseline;gap:10px;
  margin:0 -16px 12px;padding:9px 16px;background:var(--thead);border-bottom:1px solid var(--rule-2)
}
.hitbar span{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.hitbar b{font-family:var(--font-num);font-size:22px;font-weight:600;color:var(--accent);font-variant-numeric:tabular-nums}
.hitbar i{font-style:normal;font-size:12.5px;color:var(--muted);margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
@media(max-width:899px){.hitbar{display:flex}}

.gearwrap{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin-bottom:14px}
@media(min-width:1000px){.gearwrap{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}
.geargrid{
  display:grid;gap:6px;grid-template-columns:repeat(3,minmax(0,1fr));
  grid-template-areas:". head ." "cape neck ammo" "weapon body shield" ". legs ." "hands feet ring"
}
.slot-head{grid-area:head}.slot-cape{grid-area:cape}.slot-neck{grid-area:neck}.slot-ammo{grid-area:ammo}
.slot-weapon{grid-area:weapon}.slot-body{grid-area:body}.slot-shield{grid-area:shield}.slot-legs{grid-area:legs}
.slot-hands{grid-area:hands}.slot-feet{grid-area:feet}.slot-ring{grid-area:ring}
.slotbtn{
  min-height:58px;min-width:0;padding:7px 8px;border-radius:var(--radius);cursor:pointer;text-align:left;
  background:var(--panel);border:1px solid var(--rule-2);color:var(--ink-2);
  display:flex;flex-direction:column;justify-content:center;gap:3px;font:inherit
}
.slotbtn:hover{border-color:var(--accent-dim)}
.slotbtn.open{border-color:var(--accent);background:var(--accent-soft)}
.slotbtn.full .slotitem{color:var(--ink)}
.slotbtn.blocked .slotitem,.slotbtn.idle .slotitem{color:var(--muted);font-style:italic}
.slotlab{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.slotitem{font-size:13px;line-height:1.25;color:var(--muted);overflow-wrap:anywhere}
.picker{background:var(--panel);border:1px solid var(--accent-dim);border-radius:var(--radius);padding:12px;min-width:0}
.picker[hidden]{display:none}
.pickerhead{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.pickerhead label{font-family:var(--font-display);font-size:17px;color:var(--ink);margin-right:auto}
.picker input[type=search]{
  width:100%;min-height:44px;padding:0 12px;border-radius:var(--radius);
  background:var(--input);color:var(--ink);border:1px solid var(--rule-2);font:400 16px/1.2 var(--font-body)
}
.picker input[type=search]:hover{border-color:var(--accent-dim)}
.picklist{list-style:none;margin:8px 0 0;padding:0;max-height:336px;overflow-y:auto;scrollbar-width:thin}
.pickbtn{
  width:100%;min-height:44px;padding:6px 8px;border:0;border-bottom:1px solid var(--rule);cursor:pointer;text-align:left;
  background:transparent;color:var(--ink-2);font:inherit;
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1px 10px;align-items:baseline
}
.pickbtn:hover,.pickbtn:focus-visible{background:var(--raised);color:var(--ink)}
.pickbtn.on .pn{color:var(--accent)}
.pn{font-size:14px;overflow-wrap:anywhere}
.ps{grid-column:1;font-size:12px;color:var(--muted)}
.pp{grid-column:2;grid-row:1 / span 2;align-self:center;font-family:var(--font-num);font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}

.steps{list-style:none;margin:0;padding:0;counter-reset:step;border:1px solid var(--rule);border-radius:var(--radius);background:var(--panel)}
.steps li{display:flex;align-items:baseline;gap:10px;padding:9px 13px;border-bottom:1px solid var(--rule);font-size:14px;color:var(--ink-2);counter-increment:step}
.steps li:last-child{border-bottom:0}
.steps li::before{content:counter(step);flex:none;width:18px;color:var(--muted);font-family:var(--font-num);font-size:12px}
.steps li span{flex:1 1 auto;min-width:0}
.steps li b{font-family:var(--font-num);font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.steps li:last-child b{color:var(--accent)}
table.plain td.gain{color:var(--good)}
table.plain td.mine,table.plain tbody tr:hover td.mine{color:var(--accent-ink);background:var(--accent);font-weight:600}
table.matrix{min-width:560px}
table.matrix th,table.matrix td{padding-left:8px;padding-right:8px}
table.matrix thead th{white-space:normal;vertical-align:bottom;line-height:1.25}
table.matrix td.name{min-width:150px}
table.bonus{margin-bottom:0}
.planrow input[type=text]{
  min-height:44px;width:132px;padding:0 11px;border-radius:var(--radius);
  background:var(--input);color:var(--ink);border:1px solid var(--rule-2);font:500 16px/1.2 var(--font-num)
}
.planrow input[type=text]:hover{border-color:var(--accent-dim)}

.verdict{font-size:16px;line-height:1.55;color:var(--ink);margin:0 0 6px;max-width:70ch}
.curvebox{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:10px 8px 4px}
.curvebox svg{display:block;width:100%;height:auto}
.curvebox .grid{stroke:var(--rule-2);stroke-width:1}
.curvebox .axis{fill:var(--muted);font:500 11px var(--font-num)}
.curvebox .curve{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round}
.curvebox .you{stroke:var(--info);stroke-width:1.5;stroke-dasharray:4 4}
.curvebox .youdot{fill:var(--info);stroke:var(--panel);stroke-width:2}
.curvebox .youlab{fill:var(--ink);font:600 12.5px var(--font-num)}
.planbar>.priceout{margin:0}
.loss{color:var(--bad-ink)}
.stat b.loss{color:var(--bad-ink)}
table.plain td.loss{color:var(--bad-ink)}
table.plain tr.grouphead th{text-align:left;font-weight:600;color:var(--ink);background:var(--thead);white-space:normal;text-transform:none;letter-spacing:0;font-size:13.5px}
table.plain tr.grouphead td{background:var(--thead);color:var(--accent);font-weight:600}
table.plain tbody tr.grouphead:hover th,table.plain tbody tr.grouphead:hover td{background:var(--thead)}
.checkfield{margin-bottom:14px}
.checks{display:flex;flex-wrap:wrap;gap:6px}
.field label.check{display:inline-flex;font-size:13.5px;letter-spacing:0;text-transform:none;color:var(--ink-2);margin-bottom:0}
.field .check input{width:16px;min-height:0;height:16px;padding:0}
label.pick{display:flex;flex-wrap:wrap;align-items:center;gap:0 6px;cursor:pointer;font-weight:600;color:var(--ink);min-height:34px}
label.pick input{width:18px;height:18px;margin:0;accent-color:var(--accent);cursor:pointer;flex:none}
label.pick input:disabled{cursor:default;opacity:.4}
label.pick small{flex:1 1 100%;font-weight:400;color:var(--muted);font-size:12px;margin:0 0 4px 24px}
tr.passive label.pick{color:var(--ink-2)}
.workers{display:grid;gap:7px}
.workrow{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name step" "opt step";align-items:center;gap:2px 8px;padding:7px 9px;border-radius:var(--radius);background:var(--input);border:1px solid var(--rule-2)}
.wname{grid-area:name;font-size:13.5px;font-weight:600;color:var(--ink)}
.wopt{grid-area:opt;font-size:12.5px;color:var(--muted);min-width:0}
select.wopt{min-height:34px;max-width:100%;background:var(--raised);color:var(--ink-2);border:1px solid var(--rule-2);border-radius:var(--radius);padding:0 6px;font:500 12.5px/1 var(--font-body)}
@media(max-width:899px){select.wopt{font-size:16px}}
.wstep{grid-area:step;display:inline-flex;align-items:center;gap:6px}
.wstep .minibtn{min-width:34px;padding:0;font-size:16px}
.wstep .minibtn:disabled{opacity:.35;cursor:default}
.wcount{min-width:22px;text-align:center;font-family:var(--font-num);font-size:16px;color:var(--accent);font-variant-numeric:tabular-nums}
.idle{font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted);margin-left:6px}
.idle.warn{color:var(--bad-ink)}
td.moulds .mould{display:block;line-height:1.4;color:var(--ink-2)}
table.plain td.wrap,table.plain th.wrap,table.plain td.moulds{white-space:normal}
@media(max-width:599px){table.plain td.wrapsm{white-space:normal}}
table.plain td.nw{white-space:nowrap}
.carrygrid{max-width:340px;margin-bottom:12px}
@media(min-width:600px) and (max-width:1179px){table.plain td.alloy{white-space:nowrap}}
#foundry .panel .hint{margin:8px 0 5px}
#foundry .goalsec .hint{margin:7px 0 0}
#foundry .field>.panelfoot{margin-top:9px}

.quickgoals{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.linkbtn{background:none;border:0;padding:4px 0;font:inherit;color:var(--ink);cursor:pointer;text-align:left;text-decoration:underline;text-decoration-color:var(--rule-2);text-underline-offset:3px}
.linkbtn:hover,.linkbtn:focus-visible{color:var(--accent);text-decoration-color:var(--accent)}
table.plain tbody tr.mine td,table.plain tbody tr.mine:hover td{background:var(--raised)}
#xp-table tr.virt td{color:var(--muted)}
#xp-table tr.best td,#xp-table tr.mine td{color:var(--ink)}
.boardgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px}
.subsec{margin:0 0 14px;border-top:1px solid var(--rule);padding-top:6px}
.subsec>summary{cursor:pointer;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);min-height:36px;display:flex;align-items:center;list-style-position:inside}
.subsec>summary:hover{color:var(--ink-2)}
.subsec[open]>summary{margin-bottom:8px}
.subsec .checks{max-height:260px;overflow-y:auto}
table.plain th.ctr,table.plain td.ctr{text-align:center;padding-left:2px;padding-right:2px;letter-spacing:0}
td.ctr input{width:18px;height:18px;margin:0;accent-color:var(--accent);cursor:pointer;vertical-align:middle}
td.ctr input:disabled{cursor:not-allowed;opacity:.35}
table.plain tr.off td{color:var(--muted)}
.boardgrid .field{margin-bottom:0}
@media(min-width:600px){.boardgrid{grid-template-columns:repeat(5,minmax(0,1fr))}}
table.plain th.tk,table.plain td.tk{width:40px;padding-left:2px;padding-right:2px;text-align:center}
td.tk label{display:flex;align-items:center;justify-content:center;min-width:36px;min-height:36px;cursor:pointer}
td.tk input{width:18px;height:18px;margin:0;accent-color:var(--accent);cursor:pointer}
td.name .linkbtn{display:inline-block;font-size:12.5px;font-weight:400;color:var(--muted);margin-top:2px}
.tiertag{display:none}
@media(max-width:599px){.tiertag{display:inline}}
@media(max-width:359px){table.plain.snug th,table.plain.snug td{padding-left:4px;padding-right:4px}}
.rewardlist{margin:0;padding-left:18px}
.rewardlist li{margin:3px 0;font-size:13.5px;color:var(--ink-2)}
.filterbar .selrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 10px}
.filterbar .selrow .field{margin:0}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
