/* GreenSpark compositions: all visual values come from the ECO system. */
body.eco{min-height:100vh}
header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--eco-sp-5);padding:var(--eco-sp-5) var(--eco-sp-6);background:var(--eco-surface);border-bottom:1px solid var(--eco-border)}
.brand{flex:1 1 100%;border-left:var(--eco-sp-1) solid var(--eco-primary);padding-left:var(--eco-sp-4)}
.brand b{display:block;font-size:var(--eco-fs-xl);line-height:var(--eco-lh-tight)}
.brand b::before{content:'GREENSPARK / WA';display:block;font-size:var(--eco-fs-sm);color:var(--eco-primary);margin-bottom:var(--eco-sp-2)}
.brand span{display:block;color:var(--eco-text-muted);margin-top:var(--eco-sp-2)}
header nav{display:flex;flex-wrap:wrap;gap:var(--eco-sp-2);flex:1 1 100%}
button,select,input,textarea,summary,[role=button]{font:inherit;min-height:var(--eco-tap);min-width:var(--eco-tap)}
button,select,textarea,input:not([type=checkbox]):not([type=radio]):not([type=range]){border:1px solid var(--eco-border-strong);border-radius:var(--eco-r-md);background:var(--eco-surface);color:var(--eco-text);padding:var(--eco-sp-2) var(--eco-sp-3)}
button,summary{cursor:pointer}button:hover{background:var(--eco-surface-2)}
button.on,nav button.on,.linkbtn.on{background:var(--eco-primary);color:var(--eco-on-primary);border-color:var(--eco-primary)}
input[type=checkbox],input[type=radio]{width:var(--eco-tap);height:var(--eco-tap);accent-color:var(--eco-primary);flex:none;margin:0}
input[type=range]{accent-color:var(--eco-primary);max-width:100%}
a[href]{display:inline-flex;align-items:center;min-height:var(--eco-tap);min-width:var(--eco-tap);overflow-wrap:anywhere}
.navlink{padding:var(--eco-sp-2) var(--eco-sp-3);border-radius:var(--eco-r-md);font-size:var(--eco-fs-sm)}
.fresh{color:var(--eco-text-muted);font-size:var(--eco-fs-sm)}
.plantog{display:flex;flex-wrap:wrap;gap:var(--eco-sp-2);align-items:center}
.headline{display:flex;flex-wrap:wrap;gap:var(--eco-sp-5);padding:var(--eco-sp-5) var(--eco-sp-6);background:var(--eco-primary-soft);color:var(--eco-on-primary-soft)}
.headline b{font-size:var(--eco-fs-lg);margin-right:var(--eco-sp-2)}
.view{display:none;min-width:0}.view.on{display:flex;align-items:stretch;gap:var(--eco-sp-4);padding:var(--eco-sp-5);max-width:100%}
.left,.execside,.card{background:var(--eco-surface);border:1px solid var(--eco-border);border-radius:var(--eco-r-lg);min-width:0;overflow:auto}
.left{width:calc(var(--eco-maxw) / 3);flex:none}.execside{width:calc(var(--eco-maxw) / 3);padding:var(--eco-sp-5)}
.card{width:calc(var(--eco-maxw) / 3);padding:var(--eco-sp-5);max-height:100vh}.hidden,.card.hidden,.weights.hidden{display:none}
.controls,.filters,.vfs{display:flex;flex-wrap:wrap;gap:var(--eco-sp-3);padding:var(--eco-sp-4);background:var(--eco-surface-2);border-radius:var(--eco-r-lg)}
.controls label{display:flex;flex-wrap:wrap;align-items:center;gap:var(--eco-sp-2);max-width:100%}.chk{display:inline-flex;align-items:center;gap:var(--eco-sp-2)}
.tabs{display:flex;flex-wrap:wrap;gap:var(--eco-sp-2);padding:var(--eco-sp-4);border-bottom:1px solid var(--eco-border)}.tabs button{flex:1 1 auto;font-size:var(--eco-fs-sm)}
.list{max-height:calc(var(--eco-maxw) / 2);overflow:auto}.row{padding:var(--eco-sp-4);border-bottom:1px solid var(--eco-border);cursor:pointer}.row:hover,.row.sel{background:var(--eco-primary-soft)}
.row .t{display:flex;justify-content:space-between;gap:var(--eco-sp-2);font-weight:var(--eco-fw-bold)}.row .t>*{min-width:0}.why,.sub,.m,.lvleg,.al .m{color:var(--eco-text-muted);font-size:var(--eco-fs-sm)}
.rank,.gap{color:var(--eco-accent);font-weight:var(--eco-fw-bold)}
.pill,.conf,.fit,.sweet{display:inline-block;border-radius:var(--eco-r-sm);padding:var(--eco-sp-1) var(--eco-sp-2);font-size:var(--eco-fs-sm);background:var(--eco-primary-soft);color:var(--eco-on-primary-soft);margin:var(--eco-sp-1) var(--eco-sp-1) 0 0;white-space:normal}
.pill.tight,.warn,.alert,.out,.pw.est,.mock{background:var(--eco-warning-soft);color:var(--eco-on-warning-soft)}
.pill.closed,.pill.scr,.pill.vo-none{background:var(--eco-surface-2);color:var(--eco-text-muted)}
.conf.Low,.sev-severe,.fail,.vs .g,.pill.vo-own{background:var(--eco-danger-soft);color:var(--eco-on-danger-soft)}
.conf.High,.pass,.vs .z,.pitch,.sw{background:var(--eco-success-soft);color:var(--eco-on-success-soft)}
.conf.Medium,.pill.d26,.pill.moved,.pill.vo-wait{background:var(--eco-warning-soft);color:var(--eco-on-warning-soft)}
.mapwrap{position:relative;min-width:0;flex:1;min-height:calc(var(--eco-maxw) / 2);border:1px solid var(--eco-border);border-radius:var(--eco-r-lg);overflow:hidden;background:var(--eco-surface-2)}
#map,#emap,.wa3map{position:absolute;inset:0}.legend{position:absolute;right:var(--eco-sp-4);bottom:var(--eco-sp-5);z-index:500;background:var(--eco-surface);color:var(--eco-text);padding:var(--eco-sp-3);border-radius:var(--eco-r-md);box-shadow:var(--eco-shadow-2);font-size:var(--eco-fs-sm);max-width:calc(100% - var(--eco-sp-6))}
.legend i,.lvleg i{display:inline-block;width:var(--eco-sp-3);height:var(--eco-sp-3);border-radius:var(--eco-r-pill);margin-right:var(--eco-sp-2)}
.methods{width:100%;max-width:var(--eco-maxw);margin:0 auto;padding:var(--eco-sp-6);background:var(--eco-surface);border:1px solid var(--eco-border);border-radius:var(--eco-r-lg);min-width:0;overflow-wrap:anywhere}
h2,h3,h4{margin-top:var(--eco-sp-6)!important}h4{font-size:var(--eco-fs-md)}
.kv{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:var(--eco-sp-2)}.kv>div:nth-child(odd){color:var(--eco-text-muted)}
.close{float:right}.gap{font-size:var(--eco-fs-xl)}
.warn,.out,.alert,.ev,.ex,.sw,.pw,.hpair,.dealcard,.mockup,.lvbox,.pitch,.src{border:1px solid var(--eco-border);border-radius:var(--eco-r-md);padding:var(--eco-sp-4);margin-block:var(--eco-sp-3)}
.ev,.ex,.pw,.hpair,.dealcard,.lvbox{background:var(--eco-surface)}.src,.pitch,.dealcard,.row.pinned{border-left:var(--eco-sp-1) solid var(--eco-primary)}
.btn{background:var(--eco-primary);color:var(--eco-on-primary)!important;padding:var(--eco-sp-3) var(--eco-sp-4);border-radius:var(--eco-r-md);text-decoration:none;margin:var(--eco-sp-2)}
.big,.vs,.dg,.k{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--eco-sp-3);margin-block:var(--eco-sp-4)}.big>div,.vs>div,.dg>div,.k>div{padding:var(--eco-sp-4);background:var(--eco-surface-2);border-radius:var(--eco-r-md)}.big b,.dg b,.k b{display:block;font-size:var(--eco-fs-xl);color:var(--eco-primary)}
.weights{padding:var(--eco-sp-4)}.weights label,.fitbar{display:grid;grid-template-columns:1fr 2fr 1fr;gap:var(--eco-sp-2);align-items:center}.fitbar span.b{height:var(--eco-sp-2);background:var(--eco-accent);display:block}
.bands{display:flex;gap:var(--eco-sp-1);margin-top:var(--eco-sp-2)}.bands>div{flex:1;text-align:center;font-size:var(--eco-fs-sm)}.bands span{display:block;height:var(--eco-sp-5)}
.tw{overflow-x:auto;max-width:100%}table{border-collapse:collapse;width:100%;font-size:var(--eco-fs-sm)}td,th{padding:var(--eco-sp-3);text-align:left;vertical-align:top;border-bottom:1px solid var(--eco-border);overflow-wrap:anywhere}th{background:var(--eco-surface-2);color:var(--eco-text-muted)}th[onclick],table.sortable th{cursor:pointer;min-height:var(--eco-tap)}tr.sel{background:var(--eco-primary-soft)}
.apwrap{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--eco-sp-4)}.apmap,#ap-map{height:calc(var(--eco-maxw) / 2)}
.lv{margin-block:var(--eco-sp-4)}.lvrow{display:flex;flex-wrap:wrap;gap:var(--eco-sp-3)}.lvbar{flex:2 1 50%;min-width:0}.lvbox{flex:1 1 25%}.lvh{font-weight:var(--eco-fw-bold);color:var(--eco-accent)}.ctx,.ctxp{background:var(--eco-surface-2);padding:var(--eco-sp-3);border-radius:var(--eco-r-md)}
.al{padding-block:var(--eco-sp-4);border-bottom:1px solid var(--eco-border)}
.mail,#m,.noprint{max-width:var(--eco-maxw);margin:var(--eco-sp-6) auto;padding:var(--eco-sp-5)}.mail{background:var(--eco-surface);border-radius:var(--eco-r-lg);border:1px solid var(--eco-border)}.hd{padding:var(--eco-sp-6);background:var(--eco-primary-soft);color:var(--eco-on-primary-soft);border-radius:var(--eco-r-lg)}.hd>b{font-size:var(--eco-fs-xl)}.meta{margin-top:var(--eco-sp-3)}.mock,.bd{padding:var(--eco-sp-5)}.a{padding:var(--eco-sp-5);margin-block:var(--eco-sp-4);border-left:var(--eco-sp-1) solid var(--eco-accent);background:var(--eco-surface-2)}.s{color:var(--eco-text-muted);font-size:var(--eco-fs-sm)}
pre{white-space:pre-wrap;font:inherit;background:var(--eco-surface-2);padding:var(--eco-sp-5);border-radius:var(--eco-r-md)}
/* Leaflet controls share the same ECO touch and contrast contract. */
.leaflet-container{font-family:var(--eco-font);font-size:var(--eco-fs-sm);background:var(--eco-surface-2)}.leaflet-bar a{width:var(--eco-tap)!important;height:var(--eco-tap)!important;justify-content:center;background:var(--eco-surface)!important;color:var(--eco-text)!important}.leaflet-control-attribution{background:var(--eco-surface)!important;color:var(--eco-text)!important}.leaflet-control-attribution a{color:var(--eco-primary)!important}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--eco-surface);color:var(--eco-text)}.leaflet-popup-close-button{width:var(--eco-tap)!important;height:var(--eco-tap)!important;justify-content:center}.leaflet-control-layers{background:var(--eco-surface);color:var(--eco-text)}
@media(max-width:1000px){.view.on{flex-wrap:wrap}.left,.execside{width:100%}.mapwrap{flex-basis:100%;min-height:calc(var(--eco-maxw) / 3)}.card{width:100%;max-height:none}.list{max-height:calc(var(--eco-maxw) / 3)}.apwrap{grid-template-columns:minmax(0,1fr)}}
@media(max-width:640px){header{padding:var(--eco-sp-4);gap:var(--eco-sp-4)}.brand b{font-size:var(--eco-fs-xl)}header nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}header nav>*{min-width:0;white-space:normal}.view.on{padding:var(--eco-sp-3)}.headline{padding:var(--eco-sp-4);gap:var(--eco-sp-3)}.methods{padding:var(--eco-sp-4)}.mail,#m,.noprint{margin:var(--eco-sp-3);padding:var(--eco-sp-3)}.hd,.bd{padding:var(--eco-sp-4)}.k,.dg{grid-template-columns:minmax(0,1fr)}table:not(.yrs),table:not(.yrs) tbody,table:not(.yrs) tr,table:not(.yrs) td,table:not(.yrs) th{display:block;width:100%}table:not(.yrs) tr{border-bottom:1px solid var(--eco-border);padding-block:var(--eco-sp-2)}table:not(.yrs) td{border:0}table:not(.yrs) td[data-label]::before{content:attr(data-label) ': ';font-weight:var(--eco-fw-bold);color:var(--eco-text-muted)}.kv{grid-template-columns:minmax(0,1fr)}.lvbar,.lvbox{flex-basis:100%}}
@media print{.noprint{display:none}details.lv{display:block}}

/* Adapt legacy renderer palettes without changing calculations or rendering logic. */
[style*="color:#0f2a3d"],[style*="color: #0f2a3d"]{color:var(--eco-text)!important}
[style*="background:#0f2a3d"],[style*="background: #0f2a3d"]{background:var(--eco-text)!important}
svg [fill="#0f2a3d"]{fill:var(--eco-text)}svg [stroke="#0f2a3d"]{stroke:var(--eco-text)}
[style*="color:#1a2530"],[style*="color: #1a2530"]{color:var(--eco-text)!important}
[style*="background:#1a2530"],[style*="background: #1a2530"]{background:var(--eco-text)!important}
svg [fill="#1a2530"]{fill:var(--eco-text)}svg [stroke="#1a2530"]{stroke:var(--eco-text)}
[style*="color:#222"],[style*="color: #222"]{color:var(--eco-text)!important}
[style*="background:#222"],[style*="background: #222"]{background:var(--eco-text)!important}
svg [fill="#222"]{fill:var(--eco-text)}svg [stroke="#222"]{stroke:var(--eco-text)}
[style*="color:#2e8b3e"],[style*="color: #2e8b3e"]{color:var(--eco-success)!important}
[style*="background:#2e8b3e"],[style*="background: #2e8b3e"]{background:var(--eco-success)!important}
svg [fill="#2e8b3e"]{fill:var(--eco-success)}svg [stroke="#2e8b3e"]{stroke:var(--eco-success)}
[style*="color:#2f5fa5"],[style*="color: #2f5fa5"]{color:var(--eco-info)!important}
[style*="background:#2f5fa5"],[style*="background: #2f5fa5"]{background:var(--eco-info)!important}
svg [fill="#2f5fa5"]{fill:var(--eco-info)}svg [stroke="#2f5fa5"]{stroke:var(--eco-info)}
[style*="color:#4a6fa5"],[style*="color: #4a6fa5"]{color:var(--eco-info)!important}
[style*="background:#4a6fa5"],[style*="background: #4a6fa5"]{background:var(--eco-info)!important}
svg [fill="#4a6fa5"]{fill:var(--eco-info)}svg [stroke="#4a6fa5"]{stroke:var(--eco-info)}
[style*="color:#58a646"],[style*="color: #58a646"]{color:var(--eco-primary)!important}
[style*="background:#58a646"],[style*="background: #58a646"]{background:var(--eco-primary)!important}
svg [fill="#58a646"]{fill:var(--eco-primary)}svg [stroke="#58a646"]{stroke:var(--eco-primary)}
[style*="color:#5a6b7b"],[style*="color: #5a6b7b"]{color:var(--eco-text-muted)!important}
[style*="background:#5a6b7b"],[style*="background: #5a6b7b"]{background:var(--eco-text-muted)!important}
svg [fill="#5a6b7b"]{fill:var(--eco-text-muted)}svg [stroke="#5a6b7b"]{stroke:var(--eco-text-muted)}
[style*="color:#6b2fa5"],[style*="color: #6b2fa5"]{color:var(--eco-accent)!important}
[style*="background:#6b2fa5"],[style*="background: #6b2fa5"]{background:var(--eco-accent)!important}
svg [fill="#6b2fa5"]{fill:var(--eco-accent)}svg [stroke="#6b2fa5"]{stroke:var(--eco-accent)}
[style*="color:#7d4fb3"],[style*="color: #7d4fb3"]{color:var(--eco-accent)!important}
[style*="background:#7d4fb3"],[style*="background: #7d4fb3"]{background:var(--eco-accent)!important}
svg [fill="#7d4fb3"]{fill:var(--eco-accent)}svg [stroke="#7d4fb3"]{stroke:var(--eco-accent)}
[style*="color:#7dbb52"],[style*="color: #7dbb52"]{color:var(--eco-success)!important}
[style*="background:#7dbb52"],[style*="background: #7dbb52"]{background:var(--eco-success)!important}
svg [fill="#7dbb52"]{fill:var(--eco-success)}svg [stroke="#7dbb52"]{stroke:var(--eco-success)}
[style*="color:#8a96a3"],[style*="color: #8a96a3"]{color:var(--eco-border-strong)!important}
[style*="background:#8a96a3"],[style*="background: #8a96a3"]{background:var(--eco-border-strong)!important}
svg [fill="#8a96a3"]{fill:var(--eco-border-strong)}svg [stroke="#8a96a3"]{stroke:var(--eco-border-strong)}
[style*="color:#999"],[style*="color: #999"]{color:var(--eco-text-muted)!important}
[style*="background:#999"],[style*="background: #999"]{background:var(--eco-text-muted)!important}
svg [fill="#999"]{fill:var(--eco-text-muted)}svg [stroke="#999"]{stroke:var(--eco-text-muted)}
[style*="color:#9a5b00"],[style*="color: #9a5b00"]{color:var(--eco-warning)!important}
[style*="background:#9a5b00"],[style*="background: #9a5b00"]{background:var(--eco-warning)!important}
svg [fill="#9a5b00"]{fill:var(--eco-warning)}svg [stroke="#9a5b00"]{stroke:var(--eco-warning)}
[style*="color:#a3cf62"],[style*="color: #a3cf62"]{color:var(--eco-success)!important}
[style*="background:#a3cf62"],[style*="background: #a3cf62"]{background:var(--eco-success)!important}
svg [fill="#a3cf62"]{fill:var(--eco-success)}svg [stroke="#a3cf62"]{stroke:var(--eco-success)}
[style*="color:#bbb"],[style*="color: #bbb"]{color:var(--eco-border-strong)!important}
[style*="background:#bbb"],[style*="background: #bbb"]{background:var(--eco-border-strong)!important}
svg [fill="#bbb"]{fill:var(--eco-border-strong)}svg [stroke="#bbb"]{stroke:var(--eco-border-strong)}
[style*="color:#c0392b"],[style*="color: #c0392b"]{color:var(--eco-danger)!important}
[style*="background:#c0392b"],[style*="background: #c0392b"]{background:var(--eco-danger)!important}
svg [fill="#c0392b"]{fill:var(--eco-danger)}svg [stroke="#c0392b"]{stroke:var(--eco-danger)}
[style*="color:#e07a1f"],[style*="color: #e07a1f"]{color:var(--eco-accent)!important}
[style*="background:#e07a1f"],[style*="background: #e07a1f"]{background:var(--eco-accent)!important}
svg [fill="#e07a1f"]{fill:var(--eco-accent)}svg [stroke="#e07a1f"]{stroke:var(--eco-accent)}
[style*="color:#e67e22"],[style*="color: #e67e22"]{color:var(--eco-warning)!important}
[style*="background:#e67e22"],[style*="background: #e67e22"]{background:var(--eco-warning)!important}
svg [fill="#e67e22"]{fill:var(--eco-warning)}svg [stroke="#e67e22"]{stroke:var(--eco-warning)}
[style*="color:#e8a33d"],[style*="color: #e8a33d"]{color:var(--eco-warning)!important}
[style*="background:#e8a33d"],[style*="background: #e8a33d"]{background:var(--eco-warning)!important}
svg [fill="#e8a33d"]{fill:var(--eco-warning)}svg [stroke="#e8a33d"]{stroke:var(--eco-warning)}
[style*="color:#f1c40f"],[style*="color: #f1c40f"]{color:var(--eco-info)!important}
[style*="background:#f1c40f"],[style*="background: #f1c40f"]{background:var(--eco-info)!important}
svg [fill="#f1c40f"]{fill:var(--eco-info)}svg [stroke="#f1c40f"]{stroke:var(--eco-info)}
[style*="color:#f39c12"],[style*="color: #f39c12"]{color:var(--eco-warning)!important}
[style*="background:#f39c12"],[style*="background: #f39c12"]{background:var(--eco-warning)!important}
svg [fill="#f39c12"]{fill:var(--eco-warning)}svg [stroke="#f39c12"]{stroke:var(--eco-warning)}
[style*="color:#f4f6f8"],[style*="color: #f4f6f8"]{color:var(--eco-surface-2)!important}
[style*="background:#f4f6f8"],[style*="background: #f4f6f8"]{background:var(--eco-surface-2)!important}
svg [fill="#f4f6f8"]{fill:var(--eco-surface-2)}svg [stroke="#f4f6f8"]{stroke:var(--eco-surface-2)}
[style*="color:#f6d9a8"],[style*="color: #f6d9a8"]{color:var(--eco-warning-soft)!important}
[style*="background:#f6d9a8"],[style*="background: #f6d9a8"]{background:var(--eco-warning-soft)!important}
svg [fill="#f6d9a8"]{fill:var(--eco-warning-soft)}svg [stroke="#f6d9a8"]{stroke:var(--eco-warning-soft)}
svg text{fill:var(--eco-text)}[style*="font-size:"]{font-size:var(--eco-fs-sm)!important}[style*="margin:"]{margin:var(--eco-sp-2) 0!important}[style*="padding:"]{padding:var(--eco-sp-2)!important}
td[style*="background"]{background:var(--eco-surface-2)!important}
.eco-header{position:relative;z-index:600;background:var(--eco-surface)}
@media(max-width:767.98px){header.eco-header .brand{flex-basis:100%}header.eco-header nav.eco-nav{padding:var(--eco-sp-4);margin:0}header.eco-header nav.eco-nav.is-open{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.eco-header .plantog{flex:1 1 100%}.eco-header .fresh{flex-basis:100%}.eco-header .eco-nav__toggle{margin-left:0}}
