/* Guided module builder: one decision at a time, on every screen size. */
.module-builder { scroll-margin-top:120px; }
.module-builder > .section-heading { max-width:740px; margin-inline:auto; text-align:center; }
.module-builder .section-heading h2 { text-wrap:balance; hyphens:none; font-size:clamp(1.8rem,4vw,3rem); }
.module-builder [hidden] { display:none!important; }
.builder-wizard { width:100%; max-width:1040px; margin-inline:auto; scroll-margin-top:120px; }
.builder-step-count { margin:0 0 12px; font-size:.8rem; font-weight:700; color:var(--rkv-text-soft); }
.builder-progress { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-bottom:24px; }
.module-builder[data-base="evcc_setup"] .builder-progress { grid-template-columns:repeat(2,minmax(0,1fr)); }
.builder-progress button { display:flex; align-items:center; gap:10px; min-width:0; min-height:58px; padding:12px; border:1px solid var(--rkv-border); border-radius:12px; background:#fff; color:var(--rkv-navy); font:inherit; font-size:.85rem; text-align:left; cursor:pointer; }
.builder-progress button > span { display:grid; place-items:center; width:28px; height:28px; flex:0 0 28px; border-radius:50%; background:#eef5f1; color:#086246; font-size:.78rem; font-weight:800; }
.builder-progress button[aria-current="step"] { border-color:var(--rkv-navy); background:var(--rkv-navy); color:#fff; }
.builder-progress button[aria-current="step"] > span { background:var(--rkv-green); color:var(--rkv-navy); }
.builder-progress button:disabled { opacity:.45; cursor:default; }
.builder-context { width:fit-content; max-width:100%; margin:0 0 16px; padding:9px 14px; border-radius:10px; background:#e7f5ed; color:#0d6045; font-size:.84rem; font-weight:700; line-height:1.6; }
.builder-panel { padding:clamp(20px,3vw,32px); border:1px solid #dce6df; border-radius:22px; background:#f2f7f4; }
.builder-panel-heading { margin-bottom:24px; }
.builder-panel-heading h3 { margin:0 0 8px; font:750 clamp(1.2rem,2.4vw,1.65rem)/1.3 var(--rkv-font-display); color:var(--rkv-navy); }
.builder-panel-heading h3:focus { outline:none; }
.builder-panel-heading p { margin:0; font-size:.9rem; line-height:1.65; color:var(--rkv-text-soft); }
.builder-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.builder-grid-single { grid-template-columns:minmax(0,1fr); max-width:700px; margin-inline:auto; }
.builder-choice { position:relative; min-width:0; }
.builder-card { display:grid; grid-template-columns:46px minmax(0,1fr); gap:9px 14px; align-content:start; width:100%; height:100%; min-width:0; padding:22px; border:1px solid #d6e1da; border-radius:16px; background:#fff; color:var(--rkv-navy); text-align:left; font:inherit; cursor:pointer; transition:border-color .15s,background .15s,box-shadow .15s; }
.builder-card:hover { border-color:#187e59; box-shadow:0 4px 18px #0b2c4d0a; }
.builder-card[data-selected="true"] { border-color:#159361; background:#f8fffa; box-shadow:inset 0 0 0 1px #159361; }
.builder-card .module-icon { grid-column:1; grid-row:1/3; width:46px; height:46px; margin:0; }
.builder-card svg { width:27px; height:27px; fill:currentColor; }
.builder-card-title { grid-column:2; font:750 clamp(1.05rem,2vw,1.3rem)/1.35 var(--rkv-font-display); hyphens:none; }
.builder-card-description { grid-column:2; font-size:.87rem; line-height:1.6; color:var(--rkv-text-soft); }
.builder-card-price { grid-column:2; display:flex; flex-wrap:wrap; align-items:baseline; gap:5px 8px; margin-top:4px; }
.builder-card-price strong { font:750 1.1rem var(--rkv-font-display); }
.builder-card-price small { font-size:.75rem; }
.builder-card-detail { grid-column:1/-1; display:inline-flex; align-items:center; width:fit-content; max-width:calc(100% - 88px); min-height:38px; margin-top:12px; padding:8px 10px; border-radius:8px; background:#e9f7ef; color:#086246; font-size:.81rem; font-weight:800; line-height:1.3; }
.builder-info { position:absolute; right:18px; bottom:18px; z-index:1; min-width:72px; min-height:44px; padding:10px 12px; border:0; border-radius:8px; background:transparent; color:var(--rkv-navy); font:inherit; font-size:.81rem; font-weight:700; text-decoration:underline; text-underline-offset:4px; cursor:pointer; }
.builder-info:hover { background:#eef5f1; }
.module-builder button:focus-visible,.builder-dialog a:focus-visible { outline:3px solid #087754; outline-offset:4px; }
.builder-navigation { display:flex; justify-content:space-between; gap:12px; margin-top:20px; }
.builder-navigation .button { min-height:48px; }
.builder-review-list { margin:0; padding:0; list-style:none; }
.builder-review-list li { display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding:16px 0; border-bottom:1px solid #dce6df; font-size:.95rem; }
.builder-review-list li strong { flex-shrink:0; color:var(--rkv-navy); }
.builder-total { display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding-top:24px; color:var(--rkv-navy); font-weight:750; }
.builder-total > div { text-align:right; }
.builder-total strong { display:block; font:800 clamp(1.5rem,3vw,1.9rem)/1.3 var(--rkv-font-display); }
.builder-total small { display:block; margin-top:7px; font-size:.75rem; font-weight:400; line-height:1.6; color:var(--rkv-text-soft); }
.builder-dialog { width: min(620px,calc(100% - 24px)); max-height: calc(100dvh - 32px); padding: 0; border: 1px solid var(--rkv-border); border-radius: 22px; background: var(--rkv-bg-main,#faf9f6); color: var(--rkv-navy); overflow-y: auto; box-shadow: 0 20px 100px #06182b55; }
.builder-dialog::backdrop { background: #06182baa; }
.builder-dialog-content { padding: clamp(24px,4vw,40px); }
.builder-dialog .eyebrow { padding-right: 28px; }
.builder-dialog h2 { font: 750 clamp(1.5rem,3vw,2rem)/1.2 var(--rkv-font-display); margin: 12px 0 20px; }
.builder-dialog p,.builder-dialog li { line-height: 1.65; }
.builder-dialog ul { padding-left: 20px; margin-block: 20px; }
.builder-dialog li + li { margin-top: 10px; }
.builder-dialog-close { position: absolute; right: 12px; top: 12px; width: 44px; height: 44px; display: grid; place-items: center; border: 1px solid var(--rkv-border); border-radius: 50%; background: white; color: var(--rkv-navy); font: 1.7rem/1 sans-serif; cursor: pointer; }
.builder-dialog-price { margin: 22px 0 16px; }
.builder-dialog-price strong { display: block; font: 750 1.4rem var(--rkv-font-display); }
.builder-dialog-price small { display: block; margin-top: 7px; font-size: .8rem; }
.builder-dialog-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 24px; }
.builder-dialog-actions > button { flex: 1 1 200px; text-align: center; }
.builder-dialog [hidden] { display: none; }
body:has(.builder-dialog[open]) { overflow: hidden; }

@media(max-width:640px) {
 .module-builder > .section-heading { text-align:left; }
 .builder-progress { gap:8px; margin-bottom:20px; }
 .builder-progress button { justify-content:center; min-height:48px; padding:9px; }
 .builder-progress button > strong { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
 .builder-panel { padding:20px 14px; border-radius:18px; }
 .builder-panel-heading { margin:0 4px 20px; }
 .builder-grid { grid-template-columns:minmax(0,1fr); gap:14px; }
 .builder-card { grid-template-columns:44px minmax(0,1fr); padding:18px; gap:8px 12px; }
 .builder-card .module-icon { width:44px; height:44px; }
 .builder-card-title { font-size:1.08rem; }
 .builder-card-description { font-size:.84rem; }
 .builder-info { right:14px; bottom:14px; }
 .builder-navigation { display:grid; grid-template-columns:minmax(0,1fr); }
 .builder-navigation [data-builder-next],.builder-navigation [data-builder-order] { grid-row:1; }
 .builder-navigation .button { width:100%; }
 .builder-review-list li { font-size:.86rem; gap:12px; }
 .builder-review-list li > span { min-width:0; }
 .builder-dialog { width:calc(100% - 24px); max-height:calc(100dvh - 24px); border-radius:18px; }
 .builder-dialog-content { padding:28px 20px 20px; }
 .builder-dialog-actions { display:grid; grid-template-columns:minmax(0,1fr); gap:10px; }
 .builder-dialog-actions > button { min-height:48px; }
}
@media(prefers-reduced-motion:reduce) { .builder-card { transition:none; } }
