.eclhp-app{--bg:var(--pxl-bg,var(--ecl-bg,#0b1118));--card:var(--pxl-tool-card,var(--pxl-surface,var(--ecl-surface,#101821)));--card2:var(--pxl-tool-card-soft,var(--pxl-surface-2,var(--ecl-surface-2,#111922)));--input:var(--pxl-input-bg,var(--ecl-input-bg,#0b1219));--line:var(--pxl-border,var(--ecl-border,#263342));--text:var(--pxl-text,var(--ecl-text,#eef4fb));--strong:var(--pxl-text-strong,var(--ecl-text-strong,#eef4fb));--soft:var(--pxl-text-soft,var(--ecl-text-soft,#ced8e5));--muted:var(--pxl-muted,var(--ecl-muted,#8fa0b4));--blue:var(--pxl-primary,var(--ecl-primary,#3385f5));--blueHover:var(--pxl-primary-hover,var(--ecl-primary-hover,#1f6feb));--ring:var(--pxl-primary-ring,rgba(59,130,246,.13));--orange:#f59e0b;max-width:1080px;margin:24px auto;color:var(--text);font-family:var(--pxl-font,var(--ecl-font,system-ui,-apple-system,Segoe UI,Roboto,sans-serif))}.eclhp-app *{box-sizing:border-box}.eclhp-head{display:flex;gap:20px;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.eclhp-head h1,.eclhp-head h2{font-size:26px;margin:4px 0 6px}.eclhp-head p{color:var(--muted);margin:0;max-width:760px;line-height:1.55}.eclhp-kicker{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--blue)}.eclhp-badge{border:1px solid color-mix(in srgb,var(--blue) 45%,var(--line));background:color-mix(in srgb,var(--blue) 12%,var(--card));color:var(--pxl-primary-soft,#8ebcff);border-radius:999px;padding:7px 10px;font-size:11px;font-weight:800;white-space:nowrap}.eclhp-card,.eclhp-result{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);border-radius:14px;padding:18px;margin:12px 0;box-shadow:0 10px 32px rgba(0,0,0,.12)}.eclhp-sectionTitle{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}.eclhp-sectionTitle>span{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:color-mix(in srgb,var(--blue) 13%,var(--card));border:1px solid color-mix(in srgb,var(--blue) 48%,var(--line));color:var(--blue);font-weight:900}.eclhp-sectionTitle strong{display:block;font-size:15px}.eclhp-sectionTitle small{display:block;color:var(--muted);margin-top:3px;line-height:1.4}.eclhp-grid{display:grid;gap:10px}.eclhp-grid2{grid-template-columns:repeat(2,minmax(0,1fr))}.eclhp-grid3{grid-template-columns:repeat(3,minmax(0,1fr))}.eclhp-grid4{grid-template-columns:repeat(4,minmax(0,1fr))}.eclhp-grid6{grid-template-columns:repeat(6,minmax(0,1fr))}.eclhp-field span{display:block;font-size:var(--pxl-font-size-sm);font-weight:700;margin-bottom:6px;color:var(--soft)}.eclhp-field input,.eclhp-field select,.eclhp-presetRow select{width:100%;height:44px;border:1px solid var(--line);border-radius:9px;background:var(--input);color:var(--strong);padding:0 11px;font-size:15px;outline:none}.eclhp-field input:focus,.eclhp-field select:focus,.eclhp-presetRow select:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--ring)}.eclhp-presetRow{display:grid;grid-template-columns:1fr auto;gap:10px;margin-bottom:12px}.eclhp-btn{border:0;border-radius:var(--pxl-radius-md,10px);padding:0 18px;min-height:44px;font-weight:800;cursor:pointer}.eclhp-btn:disabled{opacity:.6;cursor:wait}.eclhp-btnPrimary{background:var(--blue);color:var(--pxl-on-primary,#fff);min-width:220px}.eclhp-btnSoft{background:var(--card2);color:var(--strong);border:1px solid var(--line)}.eclhp-hint,.eclhp-note{color:var(--muted);font-size:var(--pxl-font-size-sm);margin:6px 0 12px}.eclhp-hint.is-error{color:var(--pxl-danger,#ff8f8f)}.eclhp-subtitle{font-size:var(--pxl-font-size-sm);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:800;margin:14px 0 8px}.eclhp-actionBar{position:sticky;bottom:8px;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:16px;background:var(--pxl-card-translucent,rgba(10,16,23,.94));backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:16px 0}.eclhp-actionBar strong{display:block;font-size:13px}.eclhp-actionBar span{display:block;color:var(--muted);font-size:11px;margin-top:2px}.eclhp-result{border-color:color-mix(in srgb,var(--blue) 52%,var(--line))}.eclhp-resultTop{display:grid;grid-template-columns:1fr 1fr 180px;gap:10px}.eclhp-resultTop>div{background:var(--input);border:1px solid var(--line);border-radius:12px;padding:14px}.eclhp-resultTop span{display:block;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.1em}.eclhp-resultTop strong{display:block;font-size:28px;margin-top:4px}.eclhp-resultTop small{color:var(--muted)}.eclhp-chartWrap{margin-top:12px;border:1px solid var(--line);border-radius:12px;background:var(--input);padding:8px;overflow:hidden}.eclhp-chartWrap canvas{display:block;width:100%;height:auto;touch-action:none}.eclhp-legend{display:flex;gap:20px;color:var(--muted);font-size:var(--pxl-font-size-sm);padding:8px 4px}.eclhp-resultNote{border-left:3px solid var(--blue);padding:9px 11px;background:var(--card2);color:var(--muted);font-size:var(--pxl-font-size-sm);border-radius:5px}.eclhp-validation{margin-top:10px;padding:9px 11px;border:1px solid var(--line);border-radius:var(--pxl-radius-md);background:var(--card2);color:var(--soft);font-size:var(--pxl-font-size-xs);line-height:1.5}.eclhp-validation[hidden]{display:none!important}.eclhp-matchBox{margin-top:12px}.eclhp-matchBox>strong{font-size:13px}.eclhp-matchBox #eclhp_matches>div{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line);padding:9px 0;font-size:var(--pxl-font-size-sm)}.eclhp-matchBox span{color:var(--strong)}.eclhp-matchBox strong{color:var(--pxl-primary-soft,var(--blue));text-align:right}.eclhp-crvBridge{display:inline-flex!important;align-items:center;justify-content:center;text-decoration:none!important;margin-top:8px}
@media(max-width:820px){.eclhp-app{margin:12px 0}.eclhp-head{padding:0 4px}.eclhp-head h1,.eclhp-head h2{font-size:21px}.eclhp-badge{display:none}.eclhp-card,.eclhp-result{padding:14px;border-radius:12px}.eclhp-grid6,.eclhp-grid4,.eclhp-grid3,.eclhp-grid2{grid-template-columns:repeat(2,minmax(0,1fr))}.eclhp-presetRow{grid-template-columns:1fr}.eclhp-actionBar{bottom:4px;align-items:stretch;flex-direction:column}.eclhp-btnPrimary{width:100%;min-height:48px}.eclhp-resultTop{grid-template-columns:1fr 1fr}.eclhp-confidence{grid-column:1/-1}.eclhp-resultTop strong{font-size:22px}.eclhp-legend{flex-direction:column;gap:4px}.eclhp-matchBox #eclhp_matches>div{align-items:flex-start;flex-direction:column;gap:3px}.eclhp-matchBox strong{text-align:left}}
@media(max-width:480px){.eclhp-grid6,.eclhp-grid4,.eclhp-grid3,.eclhp-grid2{grid-template-columns:1fr 1fr}.eclhp-field input,.eclhp-field select{font-size:16px}.eclhp-resultTop{grid-template-columns:1fr}.eclhp-confidence{grid-column:auto;display:flex;align-items:center;gap:10px}.eclhp-confidence span,.eclhp-confidence strong,.eclhp-confidence small{display:inline-block;margin:0}}
.eclhp-field input[readonly]{background:var(--card2);border-color:color-mix(in srgb,var(--blue) 40%,var(--line));color:var(--pxl-primary-soft,#8fc2ff);font-weight:800;cursor:default}.eclhp-field input[readonly]:focus{box-shadow:none;border-color:color-mix(in srgb,var(--blue) 40%,var(--line))}
.eclhp-actionButtons{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:820px){.eclhp-actionButtons{display:grid;grid-template-columns:1fr;gap:8px}.eclhp-actionButtons .eclhp-btn{width:100%}}
/* v0.4.3 — central Icon Registry slots. */
.eclhp-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px}
.eclhp-btnIcon{display:inline-flex;align-items:center;justify-content:center;font-style:normal;font-size:1.05em;line-height:1}
.eclhp-btnIcon svg,.eclhp-btnIcon img{display:block}

.eclhp-actionButtons .eclhp-btn>span{display:inline;color:inherit;font-size:inherit;margin:0}
/* v0.5.0 — shared Dyno Dataset bridge: upload once in Engine Profile, reuse here. */
.eclhp-linkedDyno{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin:0 0 14px;padding:13px 14px;border:1px solid color-mix(in srgb,var(--blue) 48%,var(--line));border-radius:var(--pxl-radius-md);background:color-mix(in srgb,var(--blue) 8%,var(--card))}
.eclhp-linkedDyno__icon{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--pxl-radius-sm);border:1px solid color-mix(in srgb,var(--blue) 42%,var(--line));color:var(--blue);font-weight:900}
.eclhp-linkedDyno__body strong,.eclhp-linkedDyno__body span,.eclhp-linkedDyno__body small{display:block}.eclhp-linkedDyno__body strong{font-size:var(--pxl-font-size-sm)}.eclhp-linkedDyno__body span{font-size:var(--pxl-font-size-sm);color:var(--soft);margin-top:2px}.eclhp-linkedDyno__body small{font-size:var(--pxl-font-size-xs);color:var(--muted);margin-top:3px;line-height:1.4}
.eclhp-linkedDyno__peak{text-align:right}.eclhp-linkedDyno__peak strong,.eclhp-linkedDyno__peak span{display:block}.eclhp-linkedDyno__peak strong{font-size:var(--pxl-font-size-md)}.eclhp-linkedDyno__peak span{font-size:var(--pxl-font-size-xs);color:var(--muted);margin-top:2px}
@media(max-width:640px){.eclhp-linkedDyno{grid-template-columns:auto 1fr}.eclhp-linkedDyno__peak{grid-column:2;text-align:left}}


/* V0.7.1 — shared 2V/4V architecture selector; counts are derived, never entered twice. */
.eclhp-valveRow{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:10px;align-items:end}
.eclhp-valveArchitecture{min-width:0}
.eclhp-valveChoice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:100%;padding:4px;border:1px solid var(--pxl-border,var(--ecl-border,#30363d));border-radius:var(--pxl-radius-md,10px);background:var(--pxl-input-bg,var(--ecl-input-bg,#0d1117))}
.eclhp-valveChoice button{min-height:34px;padding:0 12px;border:1px solid transparent;border-radius:var(--pxl-radius-sm,7px);background:transparent;color:var(--pxl-muted,var(--ecl-muted,#8e99a6));font:inherit;font-size:var(--pxl-font-size-sm);font-weight:750;cursor:pointer}
.eclhp-valveChoice button:hover{background:var(--pxl-hover-surface,var(--pxl-surface-2,#151c25));color:var(--pxl-text,var(--ecl-text,#dfe5eb))}
.eclhp-valveChoice button.is-selected{border-color:var(--pxl-selected-border,var(--pxl-primary,#2f81f7));background:var(--pxl-selected-bg,rgba(47,129,247,.12));color:var(--pxl-selected-text,var(--pxl-primary,#79c0ff))}
.eclhp-valveChoice button:focus-visible{outline:0;box-shadow:0 0 0 3px var(--pxl-primary-ring,rgba(47,129,247,.2))}
@media(max-width:760px){.eclhp-valveRow{grid-template-columns:1fr}}
.eclhp-diagnostics{display:grid;gap:12px;margin-top:12px}.eclhp-diagnosticBox{border:1px solid var(--line);border-radius:var(--pxl-radius-md);background:var(--card2);padding:12px}.eclhp-diagnosticBox[hidden]{display:none!important}.eclhp-diagnosticHead{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.eclhp-diagnosticHead strong{display:block;color:var(--strong);font-size:var(--pxl-font-size-sm)}.eclhp-diagnosticHead span,.eclhp-diagnosticHead small{display:block;color:var(--muted);font-size:var(--pxl-font-size-xs);line-height:1.5;margin-top:3px}.eclhp-diagnosticHead small{text-align:right;margin-top:0}.eclhp-matchBox{margin-top:12px}.eclhp-matchBox #eclhp_matches>.eclhp-auditRow{display:block;border-bottom:1px solid var(--line);padding:10px 0}.eclhp-auditTop,.eclhp-sensitivityTop{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.eclhp-auditName,.eclhp-sensitivityName{color:var(--strong);font-weight:700;font-size:var(--pxl-font-size-sm)}.eclhp-auditMeta,.eclhp-sensitivityState{color:var(--pxl-primary-soft,var(--blue));font-size:var(--pxl-font-size-sm);text-align:right}.eclhp-auditDetail,.eclhp-sensitivityDetail{display:block;color:var(--muted);font-size:var(--pxl-font-size-xs);line-height:1.5;margin-top:4px}.eclhp-sensitivity{margin-top:8px}.eclhp-sensitivityRow{border-bottom:1px solid var(--line);padding:10px 0}.eclhp-matchBox #eclhp_matches>.eclhp-auditRow:last-child,.eclhp-sensitivityRow:last-child{border-bottom:0}.eclhp-sensitivityState{white-space:nowrap}@media(max-width:820px){.eclhp-diagnosticHead,.eclhp-auditTop,.eclhp-sensitivityTop{flex-direction:column;gap:4px}.eclhp-diagnosticHead small,.eclhp-auditMeta,.eclhp-sensitivityState{text-align:left}.eclhp-matchBox #eclhp_matches>.eclhp-auditRow{display:block}}
