/* NSW twin → Eco design system mapping. Only maps site markup onto eco tokens (design/eco/tokens.css + components.css). */
body{margin:0;background:var(--eco-bg);color:var(--eco-text);font:var(--eco-fs-base)/var(--eco-lh) var(--eco-font)}
*{box-sizing:border-box}
a{color:var(--eco-primary);text-underline-offset:2px}
a:hover{color:var(--eco-primary-hover)}
:focus-visible{outline:3px solid var(--eco-focus);outline-offset:2px}
h1,h2,h3,h4,h5{line-height:var(--eco-lh-tight);color:var(--eco-text)}
code{font-family:var(--eco-font-mono);background:var(--eco-surface-2);padding:0 var(--eco-sp-1);border-radius:var(--eco-r-sm)}
.wrap{max-width:var(--eco-maxw);margin:0 auto;padding:0 var(--eco-sp-4)}
/* banner = eco danger alert strip */
.banner{background:var(--eco-danger-soft);color:var(--eco-on-danger-soft);border-bottom:3px solid var(--eco-danger);padding:var(--eco-sp-3) var(--eco-sp-4);font-weight:var(--eco-fw-bold)}
.banner small{display:block;font-weight:var(--eco-fw-regular);font-size:var(--eco-fs-sm);margin-top:var(--eco-sp-1)}
header.page{background:var(--eco-surface);border-bottom:1px solid var(--eco-border);padding:var(--eco-sp-6) var(--eco-sp-4) var(--eco-sp-5)}
header.page>*{max-width:var(--eco-maxw);margin-left:auto;margin-right:auto}
header.page h1{font-size:var(--eco-fs-2xl);margin-top:0;margin-bottom:var(--eco-sp-3);display:flex;flex-wrap:wrap;gap:var(--eco-sp-3);align-items:center}
header.page p{color:var(--eco-text-muted);font-size:var(--eco-fs-md)}
header.page .eco-leaf{color:var(--eco-primary);width:1em;height:1em;flex:none}
/* page sections share the eco container width */
.licence,.zcomps,body>.meta,main,.v2-section,.top20-section{max-width:var(--eco-maxw);margin-left:auto;margin-right:auto}
.licence{margin-top:var(--eco-sp-5);padding:var(--eco-sp-3) var(--eco-sp-4);background:var(--eco-warning-soft);color:var(--eco-on-warning-soft);border-left:4px solid var(--eco-warning);border-radius:var(--eco-r-md);font-size:var(--eco-fs-sm)}
.licence:empty{display:none}
.zcomps{margin-top:var(--eco-sp-4);padding:var(--eco-sp-4);background:var(--eco-surface);border:1px solid var(--eco-border);border-radius:var(--eco-r-lg);box-shadow:var(--eco-shadow-1)}
.zcomps:empty{display:none}
.zcomps h5{margin:0 0 var(--eco-sp-3);font-size:var(--eco-fs-md)}
.zcomps .comps{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:var(--eco-sp-3)}
.comp-card{background:var(--eco-surface-2);border-radius:var(--eco-r-md);padding:var(--eco-sp-3) var(--eco-sp-4)}
.comp-card .src{font-size:var(--eco-fs-sm)}
.comp-card ul.claims{margin:var(--eco-sp-2) 0 0 var(--eco-sp-4);padding:0;font-size:var(--eco-fs-sm);color:var(--eco-text-muted)}
.meta{color:var(--eco-text-muted);font-size:var(--eco-fs-sm);padding:0 var(--eco-sp-4)}
.m{color:var(--eco-text-muted);font-size:var(--eco-fs-sm);margin:var(--eco-sp-1) 0}
main{display:grid;gap:var(--eco-sp-4);padding:var(--eco-sp-2) var(--eco-sp-4) var(--eco-sp-6)}
/* cards = eco-card */
.dealcard{background:var(--eco-surface);border:1px solid var(--eco-border);border-radius:var(--eco-r-lg);padding:var(--eco-sp-5);box-shadow:var(--eco-shadow-1);min-width:0;overflow-wrap:anywhere}
.dealcard.leadcard{border-left:4px solid var(--eco-accent)}
.dealcard .dh{display:flex;flex-wrap:wrap;gap:var(--eco-sp-2);align-items:center;margin-bottom:var(--eco-sp-3)}
.dealcard h4{margin:0 0 var(--eco-sp-3);font-size:var(--eco-fs-lg)}
.dg{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:var(--eco-sp-3);margin:var(--eco-sp-3) 0 var(--eco-sp-4);color:var(--eco-text-muted);font-size:var(--eco-fs-sm)}
.dg div{background:var(--eco-surface-2);border-radius:var(--eco-r-md);padding:var(--eco-sp-3)}
.dg b{display:block;font-size:var(--eco-fs-md);color:var(--eco-text);font-variant-numeric:tabular-nums}
.dg span{color:var(--eco-text-muted)}
.line{margin:var(--eco-sp-2) 0 var(--eco-sp-3)}
.section{margin-top:var(--eco-sp-3);padding-top:var(--eco-sp-3);border-top:1px dashed var(--eco-border)}
.section h5,.formula h5{margin:0 0 var(--eco-sp-2);font-size:var(--eco-fs-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--eco-text-muted)}
.das{list-style:none;padding:0;margin:var(--eco-sp-1) 0}
.das li{background:var(--eco-surface-2);border-radius:var(--eco-r-sm);padding:var(--eco-sp-2) var(--eco-sp-3);margin:var(--eco-sp-1) 0;font-size:var(--eco-fs-sm)}
.section.zenith ul.zparts,details.whocall ul{margin:var(--eco-sp-1) 0 var(--eco-sp-2) var(--eco-sp-4);padding:0;color:var(--eco-text-muted);font-size:var(--eco-fs-sm)}
details.whocall,.v2-breakdown{margin:var(--eco-sp-3) 0;background:var(--eco-surface-2);border-radius:var(--eco-r-md);padding:var(--eco-sp-2) var(--eco-sp-3)}
summary{cursor:pointer;font-weight:var(--eco-fw-medium);min-height:var(--eco-tap);display:list-item;line-height:var(--eco-tap)}
.framing{font-size:var(--eco-fs-sm);color:var(--eco-info)}
.oldmw{color:var(--eco-text-muted)!important;text-decoration:line-through}
.soft-reason{font-style:italic}
.bucket-reason{color:var(--eco-accent)}
/* pills = eco-badge variants */
.pill{display:inline-flex;align-items:center;gap:var(--eco-sp-1);border-radius:var(--eco-r-pill);padding:2px var(--eco-sp-3);font-size:var(--eco-fs-sm);font-weight:var(--eco-fw-medium);line-height:1.5;background:var(--eco-surface-2);color:var(--eco-text);border:1px solid var(--eco-border-strong);max-width:100%;overflow-wrap:anywhere}
.pill.internal,.pill.sev-severe,.pill.penalty{background:var(--eco-danger-soft);color:var(--eco-on-danger-soft);border-color:var(--eco-danger)}
.pill.sev-ok,.pill.open,.pill.hard,.pill.comp{background:var(--eco-success-soft);color:var(--eco-on-success-soft);border-color:var(--eco-success)}
.pill.sev-constrained,.pill.tight,.pill.soft,.pill.engineers{background:var(--eco-warning-soft);color:var(--eco-on-warning-soft);border-color:var(--eco-warning)}
.pill.land,.pill.rank{background:var(--eco-accent-soft);color:var(--eco-text);border-color:var(--eco-accent)}
.pill.rank,.pill.zscore,.pill.engineers{font-weight:var(--eco-fw-bold)}
.pill.zscore,.pill.inferred,.pill.anchor{background:var(--eco-info-soft);color:var(--eco-on-info-soft);border-color:var(--eco-info)}
.pill.unchecked{border-style:dashed;color:var(--eco-text-muted)}
/* Top 20 + formula */
.v2-section,.top20-section{margin-top:var(--eco-sp-6);padding:var(--eco-sp-5) var(--eco-sp-4) var(--eco-sp-6);border-top:1px solid var(--eco-border);overflow-wrap:anywhere}
.v2-section h2,.top20-head h2{font-size:var(--eco-fs-xl);margin:0 0 var(--eco-sp-3);display:flex;flex-wrap:wrap;align-items:center;gap:var(--eco-sp-2)}
.top20-head{display:flex;flex-wrap:wrap;gap:var(--eco-sp-3) var(--eco-sp-5);align-items:center;justify-content:space-between}
.top20-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--eco-sp-2) var(--eco-sp-3);color:var(--eco-text-muted);font-size:var(--eco-fs-sm)}
.formula{margin:var(--eco-sp-4) 0;padding:var(--eco-sp-4) var(--eco-sp-5);background:var(--eco-surface);border:1px solid var(--eco-border);border-left:4px solid var(--eco-info);border-radius:var(--eco-r-md);font-size:var(--eco-fs-sm)}
.formula ul{margin:var(--eco-sp-2) 0 var(--eco-sp-2) var(--eco-sp-5);padding:0;color:var(--eco-text-muted)}
.formula .assumption,.mwnote{color:var(--eco-on-warning-soft);background:var(--eco-warning-soft);border-radius:var(--eco-r-sm);padding:var(--eco-sp-2) var(--eco-sp-3)}
.mwnote{font-size:var(--eco-fs-sm);margin:var(--eco-sp-2) 0}
.top20-section>.meta,.v2-section>.meta{padding:0;margin:var(--eco-sp-3) 0}
.top20-list,#v2-list{display:grid;gap:var(--eco-sp-4);margin-top:var(--eco-sp-3);min-width:0}
.candidates h3,.watchlist h3,.excluded h3,.pending h3{font-size:var(--eco-fs-lg);margin:var(--eco-sp-5) 0 var(--eco-sp-3)}
details.excluded-list>summary{color:var(--eco-text-muted)}
.empty-state{background:var(--eco-surface);border:1px dashed var(--eco-border-strong);border-radius:var(--eco-r-lg);padding:var(--eco-sp-5);color:var(--eco-text-muted);margin:0}
/* filters = eco-filterbar / eco-field / eco-input / eco-select / eco-btn */
.v2-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:var(--eco-sp-4);margin:var(--eco-sp-4) 0;padding:var(--eco-sp-4);background:var(--eco-surface);border:1px solid var(--eco-border);border-radius:var(--eco-r-lg);box-shadow:var(--eco-shadow-1)}
.v2-filters fieldset,.v2-filter-group{min-width:0;margin:0;padding:var(--eco-sp-3) var(--eco-sp-4);border:1px solid var(--eco-border-strong);border-radius:var(--eco-r-md)}
.v2-filters legend{font-weight:var(--eco-fw-bold);padding:0 var(--eco-sp-1)}
.v2-filters label{display:block;margin:var(--eco-sp-2) 0 var(--eco-sp-1);font-size:var(--eco-fs-sm);font-weight:var(--eco-fw-medium)}
.v2-filters input[type=number],select{width:100%;max-width:100%;min-width:0;min-height:var(--eco-tap);padding:var(--eco-sp-2) var(--eco-sp-3);font:inherit;color:var(--eco-text);background:var(--eco-surface);border:1px solid var(--eco-border-strong);border-radius:var(--eco-r-md)}
.top20-controls select{width:auto;max-width:100%}
input[type=checkbox]{width:20px;height:20px;accent-color:var(--eco-primary);margin:0}
label.chk,.v2-filters label.chk,label.toggle{display:inline-flex;align-items:center;gap:var(--eco-sp-2);min-height:var(--eco-tap);min-width:var(--eco-tap);margin:0;cursor:pointer}
#f-reset,.flagbtn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--eco-tap);min-width:var(--eco-tap);padding:var(--eco-sp-2) var(--eco-sp-4);font:inherit;font-weight:var(--eco-fw-medium);border-radius:var(--eco-r-pill);border:1px solid var(--eco-border-strong);background:var(--eco-surface);color:var(--eco-text);cursor:pointer;transition:background var(--eco-dur) var(--eco-ease)}
#f-reset{margin-top:var(--eco-sp-3);background:var(--eco-primary);color:var(--eco-on-primary);border-color:var(--eco-primary)}
#f-reset:hover{background:var(--eco-primary-hover)}
.flagbtn:hover{background:var(--eco-surface-2)}
.v2-flags{display:flex;flex-wrap:wrap;gap:var(--eco-sp-2);margin-top:var(--eco-sp-4)}
.flagbtn[aria-pressed=true]{font-weight:var(--eco-fw-bold);border-width:2px}
.flagbtn[data-flag=shortlist][aria-pressed=true]{background:var(--eco-success-soft);color:var(--eco-on-success-soft);border-color:var(--eco-success)}
.flagbtn[data-flag=watch][aria-pressed=true]{background:var(--eco-warning-soft);color:var(--eco-on-warning-soft);border-color:var(--eco-warning)}
.flagbtn[data-flag=not-relevant][aria-pressed=true]{background:var(--eco-danger-soft);color:var(--eco-on-danger-soft);border-color:var(--eco-danger)}
.v2card.flag-not-relevant{background:var(--eco-surface-2)}
/* touch / narrow: 44px targets, single column, no overflow */
@media (max-width:1023px),(pointer:coarse){
  a[href]{display:inline-flex;align-items:center;min-height:var(--eco-tap);min-width:var(--eco-tap)}
}
@media (max-width:799px){
  main,.top20-list,.dg,.zcomps .comps,.v2-filters{grid-template-columns:minmax(0,1fr)}
  main *,.top20-section *,.v2-section *,.zcomps *{min-width:0}
  .dealcard{padding:var(--eco-sp-4)}
  header.page{padding:var(--eco-sp-5) var(--eco-sp-4)}
  .top20-controls select{width:100%}
}

.site-foot{margin-top:var(--eco-sp-6);padding:var(--eco-sp-4);border-top:1px solid var(--eco-border);font-size:var(--eco-fs-sm);color:var(--eco-text-muted)}
.site-foot a{color:inherit;text-decoration:underline;display:inline-block;min-height:44px;line-height:44px}
