/* ===================================================
   SANGYUG SOLAR SELECTOR v2
   =================================================== */

:root {
    --hue: 220;
    --bg-0: hsl(var(--hue) 25% 7%);
    --bg-1: hsl(var(--hue) 20% 11%);
    --bg-2: hsl(var(--hue) 18% 16%);
    --bg-3: hsl(var(--hue) 14% 22%);
    --glass: hsla(var(--hue) 20% 14% / .65);
    --glass-border: hsla(var(--hue) 40% 50% / .12);
    --accent: hsl(210 100% 56%);
    --accent-soft: hsl(210 80% 68%);
    --accent-glow: hsla(210 100% 60% / .25);
    --green: hsl(150 60% 48%);
    --green-glow: hsla(150 60% 48% / .2);
    --red: hsl(0 72% 56%);
    --amber: hsl(38 92% 60%);
    --text-0: hsl(0 0% 96%);
    --text-1: hsl(var(--hue) 10% 72%);
    --text-2: hsl(var(--hue) 8% 52%);
    --radius-sm: 8px;
    --radius-md: 14px;
    --radius-lg: 22px;
    --shadow-sm: 0 2px 8px hsla(0 0% 0% / .2);
    --shadow-md: 0 8px 30px hsla(0 0% 0% / .28);
    --shadow-lg: 0 16px 60px hsla(0 0% 0% / .35);
    --ease-out: cubic-bezier(.22, 1, .36, 1);
    --ease-spring: cubic-bezier(.34, 1.56, .64, 1);
    --dur: .4s;
    --error: hsl(0 84% 64%);
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}

body{
    font-family:'Outfit',system-ui,-apple-system,sans-serif;
    background:var(--bg-0);
    color:var(--text-0);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    overflow-x:hidden;
    min-height:100vh;
}

img{max-width:100%;display:block}
button{font-family:inherit;cursor:pointer}
a{color:var(--accent-soft);text-decoration:none}
a:hover{color:var(--accent)}

#ambient-canvas{
    position:fixed;inset:0;z-index:0;
    pointer-events:none;opacity:.45;
}

/* ---------- toast ---------- */
.toast-container{
    position:fixed;top:80px;right:20px;z-index:999;
    display:flex;flex-direction:column;gap:10px;
    pointer-events:none;
}
.toast{
    display:flex;align-items:center;gap:10px;
    padding:12px 20px;border-radius:var(--radius-md);
    background:var(--bg-2);color:var(--text-0);
    border:1px solid var(--glass-border);
    box-shadow:var(--shadow-md);
    font-size:.9rem;font-weight:500;
    transform:translateX(120%);opacity:0;
    transition:all .35s var(--ease-out);
    pointer-events:auto;
}
.toast.show{transform:translateX(0);opacity:1}
.toast i{font-size:1rem;flex-shrink:0}
.toast-info i{color:var(--accent-soft)}
.toast-success i{color:var(--green)}
.toast-warning i{color:var(--amber)}
.toast-error i{color:var(--red)}

/* ---------- topbar ---------- */
.topbar{
    position:sticky;top:0;z-index:100;
    background:hsla(var(--hue) 22% 9% / .82);
    backdrop-filter:blur(18px) saturate(1.6);
    -webkit-backdrop-filter:blur(18px) saturate(1.6);
    border-bottom:1px solid var(--glass-border);
}
.topbar-inner{
    max-width:1120px;margin:0 auto;
    display:flex;align-items:center;justify-content:space-between;
    padding:12px 24px;gap:16px;
}
.topbar-brand{
    display:flex;align-items:center;gap:10px;
    text-decoration:none;color:var(--text-0);
}
.topbar-logo{height:34px;width:auto;flex-shrink:0}
.topbar-title{
    font-weight:700;font-size:1.1rem;letter-spacing:-.02em;
    white-space:nowrap;
}
.topbar-steps{display:flex;align-items:center;gap:6px}
.step-pill{
    display:flex;align-items:center;gap:6px;
    padding:6px 14px;border-radius:999px;border:none;
    background:var(--bg-2);color:var(--text-2);
    font-size:.82rem;font-weight:600;
    transition:all var(--dur) var(--ease-out);
}
.step-pill .pill-num{
    width:22px;height:22px;border-radius:50%;
    display:grid;place-items:center;
    background:var(--bg-3);color:var(--text-2);
    font-size:.72rem;font-weight:700;
    transition:all var(--dur) var(--ease-out);
}
.step-pill.active{
    background:var(--accent);color:#fff;
    box-shadow:0 0 20px var(--accent-glow);
}
.step-pill.active .pill-num{
    background:hsla(0 0% 100% / .2);color:#fff;
}
.step-pill.done{background:var(--bg-3);color:var(--green)}
.step-pill.done .pill-num{background:var(--green);color:#fff}
.step-connector{
    width:18px;height:2px;border-radius:2px;
    background:var(--bg-3);flex-shrink:0;
    transition:background var(--dur) var(--ease-out);
}
.step-connector.lit{background:var(--green)}

/* running total */
.topbar-total{
    display:flex;align-items:center;gap:6px;
    padding:6px 14px;border-radius:999px;
    background:var(--bg-2);border:1px solid var(--glass-border);
    font-size:.82rem;color:var(--text-2);
    transition:all .3s var(--ease-out);
    white-space:nowrap;
}
.topbar-total.has-value{
    border-color:var(--accent);
    color:var(--accent-soft);
    background:hsla(210 100% 56% / .08);
}
.topbar-total-label{font-weight:500}
.topbar-total-val{font-weight:700}

/* ---------- main ---------- */
.app-main{
    position:relative;z-index:1;
    max-width:1120px;margin:0 auto;
    padding:32px 24px 80px;
}

/* ---------- panel transitions ---------- */
.panel{
    display:none;
}
.panel.visible{display:block;animation:panelIn .45s var(--ease-out) both}

@keyframes panelIn{
    from{opacity:0;transform:translateY(20px) scale(.98)}
    to{opacity:1;transform:translateY(0) scale(1)}
}
.panel.enter-right{animation:slideInRight .4s var(--ease-out) both}
.panel.enter-left{animation:slideInLeft .4s var(--ease-out) both}
.panel.exit-left{animation:slideOutLeft .3s var(--ease-out) both}
.panel.exit-right{animation:slideOutRight .3s var(--ease-out) both}

@keyframes slideInRight{
    from{opacity:0;transform:translateX(60px)}
    to{opacity:1;transform:translateX(0)}
}
@keyframes slideInLeft{
    from{opacity:0;transform:translateX(-60px)}
    to{opacity:1;transform:translateX(0)}
}
@keyframes slideOutLeft{
    from{opacity:1;transform:translateX(0)}
    to{opacity:0;transform:translateX(-60px)}
}
@keyframes slideOutRight{
    from{opacity:1;transform:translateX(0)}
    to{opacity:0;transform:translateX(60px)}
}

.panel-header{text-align:center;margin-bottom:36px}
.panel-tag{
    display:inline-block;
    padding:4px 14px;border-radius:999px;
    background:var(--accent-glow);color:var(--accent);
    font-size:.75rem;font-weight:700;text-transform:uppercase;
    letter-spacing:.06em;margin-bottom:12px;
}
.panel-header h1{
    font-size:clamp(1.6rem,4vw,2.4rem);
    font-weight:800;letter-spacing:-.03em;
    line-height:1.15;margin-bottom:8px;
}
.panel-header p{
    color:var(--text-1);font-size:1.05rem;
    max-width:480px;margin:0 auto;
}

/* ---------- needs assessment ---------- */
.needs-section{
    max-width:640px;margin:0 auto 32px;
}
.needs-toggle{
    display:flex;align-items:center;gap:10px;
    width:100%;padding:14px 20px;
    background:var(--bg-2);border:1px solid var(--glass-border);
    border-radius:var(--radius-md);
    color:var(--text-1);font-size:.95rem;
    transition:all .3s var(--ease-out);
}
.needs-toggle:hover{
    border-color:var(--accent);color:var(--text-0);
}
.needs-toggle i:first-child{color:var(--amber);font-size:1.1rem}
.needs-chevron{
    margin-left:auto;
    transition:transform .3s var(--ease-out);
}
.needs-toggle.open .needs-chevron{transform:rotate(180deg)}
.needs-toggle.open{
    border-color:var(--accent);
    border-bottom-left-radius:0;
    border-bottom-right-radius:0;
}
.needs-panel{
    max-height:0;overflow:hidden;
    background:var(--bg-1);border:1px solid var(--glass-border);
    border-top:none;border-radius:0 0 var(--radius-md) var(--radius-md);
    transition:max-height .4s var(--ease-out),padding .4s var(--ease-out);
    padding:0 20px;
}
.needs-panel.open{
    max-height:600px;
    padding:20px;
}
.needs-intro{
    color:var(--text-1);font-size:.9rem;margin-bottom:16px;
}
.needs-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(140px,1fr));
    gap:10px;margin-bottom:16px;
}
.needs-item{
    display:flex;flex-direction:column;align-items:center;gap:6px;
    padding:14px 8px;border-radius:var(--radius-md);
    background:var(--bg-2);border:1px solid var(--glass-border);
    cursor:pointer;text-align:center;
    transition:all .25s var(--ease-out);
    user-select:none;
}
.needs-item:hover{
    border-color:hsla(210 80% 60% / .3);
    transform:translateY(-2px);
}
.needs-item.active{
    border-color:var(--accent);
    background:hsla(210 100% 56% / .1);
    box-shadow:0 0 0 2px var(--accent-glow);
}
.needs-item i{font-size:1.3rem;color:var(--text-2);transition:color .2s}
.needs-item.active i{color:var(--accent)}
.needs-item-name{font-size:.78rem;font-weight:600;color:var(--text-0);line-height:1.2}
.needs-item-watts{font-size:.72rem;color:var(--text-2);font-weight:500}
.needs-result{
    padding:16px;border-radius:var(--radius-md);
    background:var(--bg-2);border:1px solid var(--glass-border);
    transition:all .3s var(--ease-out);
}
.needs-result.hidden{display:none}
.needs-wattage{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:10px;
}
.needs-wattage-label{font-size:.88rem;color:var(--text-1)}
.needs-wattage-val{
    font-size:1.3rem;font-weight:800;color:var(--accent);
}
.needs-rec{
    font-size:.9rem;color:var(--text-1);line-height:1.5;
}
.needs-rec strong{color:var(--accent-soft)}

/* ---------- brand grid ---------- */
.brand-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    gap:24px;max-width:640px;margin:0 auto;
}
.brand-card{
    position:relative;overflow:hidden;
    background:var(--glass);
    border:1px solid var(--glass-border);
    border-radius:var(--radius-lg);
    padding:40px 28px 32px;
    text-align:center;cursor:pointer;
    transition:all var(--dur) var(--ease-out);
}
.brand-card:hover{
    transform:translateY(-6px);
    border-color:var(--accent);
    box-shadow:0 12px 40px var(--accent-glow);
}
.brand-card.selected{
    border-color:var(--accent);
    background:hsla(210 100% 56% / .08);
    box-shadow:0 0 0 2px var(--accent),0 12px 40px var(--accent-glow);
}
.brand-card .brand-img{
    height:80px;width:auto;margin:0 auto 14px;
    object-fit:contain;
    transition:transform var(--dur) var(--ease-spring);
}
.brand-card:hover .brand-img{transform:scale(1.08)}
.brand-card .brand-name{
    display:block;font-size:1.2rem;font-weight:700;color:var(--text-0);
    margin-bottom:6px;
}
.brand-card .brand-tagline{
    display:block;font-size:.85rem;color:var(--text-1);margin-bottom:4px;
}
.brand-card .brand-range{
    display:block;font-size:.78rem;font-weight:600;color:var(--accent-soft);
}
.brand-card .brand-check{
    position:absolute;top:14px;right:14px;
    width:28px;height:28px;border-radius:50%;
    background:var(--accent);color:#fff;
    display:grid;place-items:center;font-size:.75rem;
    transform:scale(0);transition:transform .3s var(--ease-spring);
}
.brand-card.selected .brand-check{transform:scale(1)}

/* ---------- card grid ---------- */
.card-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(270px,1fr));
    gap:20px;
}
.product-card{
    position:relative;overflow:hidden;
    background:var(--glass);
    border:1px solid var(--glass-border);
    border-radius:var(--radius-lg);
    transition:all var(--dur) var(--ease-out);
    cursor:pointer;
    display:flex;flex-direction:column;
}
.product-card:hover{
    transform:translateY(-5px);
    border-color:hsla(210 80% 60% / .3);
    box-shadow:var(--shadow-md);
}
.product-card.selected{
    border-color:var(--accent);
    box-shadow:0 0 0 2px var(--accent),0 8px 30px var(--accent-glow);
}
.product-card.incompatible{
    opacity:.5;cursor:default;
    filter:grayscale(.4);
}
.product-card.incompatible:hover{
    transform:none;border-color:var(--glass-border);
    box-shadow:none;
}
.product-card .card-thumb{
    height:140px;display:grid;place-items:center;
    background:var(--bg-2);padding:16px;
}
.product-card .card-thumb img{
    max-height:110px;object-fit:contain;
    transition:transform var(--dur) var(--ease-spring);
}
.product-card:hover .card-thumb img{transform:scale(1.06)}
.product-card.incompatible:hover .card-thumb img{transform:none}
.product-card .card-body{
    padding:18px;flex:1;display:flex;flex-direction:column;gap:6px;
    border-top:1px solid var(--glass-border);
}
.product-card .card-title{font-size:.95rem;font-weight:600;color:var(--text-0)}
.product-card .card-subtitle{font-size:.82rem;color:var(--text-1)}
.product-card .card-price{font-size:1rem;font-weight:700;color:var(--accent-soft)}
.product-card .card-price small{font-size:.82rem;font-weight:500;color:var(--text-1)}
.product-card .card-meta{font-size:.82rem;color:var(--text-1)}
.product-card .card-actions{
    margin-top:auto;padding-top:10px;
    display:flex;gap:12px;flex-wrap:wrap;align-items:center;
}
.product-card .card-link{
    font-size:.8rem;font-weight:600;
    color:var(--accent-soft);display:inline-flex;
    align-items:center;gap:4px;
    transition:color .2s;background:none;border:none;
    cursor:pointer;
}
.product-card .card-link:hover{color:var(--accent)}
.compare-check{cursor:pointer !important}
.compare-check input{width:14px;height:14px;cursor:pointer;accent-color:var(--accent)}
.product-card .card-check{
    position:absolute;top:12px;right:12px;
    width:26px;height:26px;border-radius:50%;
    background:var(--accent);color:#fff;
    display:grid;place-items:center;font-size:.7rem;
    transform:scale(0);transition:transform .3s var(--ease-spring);
}
.product-card.selected .card-check{transform:scale(1)}

/* card badges */
.card-badge{
    position:absolute;top:12px;left:12px;
    padding:4px 10px;border-radius:999px;
    font-size:.72rem;font-weight:700;text-transform:uppercase;
    letter-spacing:.04em;z-index:2;
}
.badge-rec{background:var(--accent);color:#fff}
.badge-value{background:var(--green);color:#fff}
.badge-premium{background:linear-gradient(135deg,hsl(280 60% 55%),hsl(320 60% 55%));color:#fff}

/* capacity match bar */
.capacity-match{margin-top:6px}
.match-bar{
    height:6px;border-radius:3px;background:var(--bg-3);
    overflow:hidden;margin-bottom:4px;
}
.match-fill{
    height:100%;border-radius:3px;
    transition:width .6s var(--ease-out);
}
.match-fill.enough{background:var(--green)}
.match-fill.short{background:var(--amber)}
.match-text{font-size:.75rem;font-weight:600}
.match-text.enough{color:var(--green)}
.match-text.short{color:var(--amber)}

/* incompatible reason */
.incompat-reason{
    display:flex;align-items:flex-start;gap:8px;
    padding:10px 12px;margin-top:8px;
    border-radius:var(--radius-sm);
    background:hsla(0 70% 50% / .08);
    border:1px solid hsla(0 70% 50% / .15);
}
.incompat-reason i{color:var(--red);font-size:.9rem;flex-shrink:0;margin-top:2px}
.incompat-reason span{font-size:.82rem;color:var(--text-1);line-height:1.4}

/* ---------- compare bar ---------- */
.compare-bar{
    display:flex;align-items:center;gap:14px;
    padding:12px 20px;margin-bottom:20px;
    border-radius:var(--radius-md);
    background:hsla(210 100% 56% / .08);
    border:1px solid hsla(210 100% 56% / .2);
    font-size:.9rem;color:var(--accent-soft);font-weight:600;
    animation:fadeUp .3s var(--ease-out) both;
}
.compare-bar.hidden{display:none}
.compare-bar i{font-size:1rem}
.cta-small{padding:8px 16px !important;font-size:.82rem !important}

/* ---------- compare table ---------- */
.compare-grid{overflow-x:auto}
.compare-table{min-width:400px}
.compare-row{
    display:grid;
    grid-template-columns:120px repeat(auto-fit,minmax(120px,1fr));
    border-bottom:1px solid var(--glass-border);
}
.compare-header{
    background:var(--bg-2);border-radius:var(--radius-sm) var(--radius-sm) 0 0;
}
.compare-cell{
    padding:12px;font-size:.88rem;color:var(--text-0);
    display:flex;flex-direction:column;align-items:center;
    text-align:center;gap:6px;
}
.compare-label{
    color:var(--text-1);font-weight:600;font-size:.82rem;
    align-items:flex-start;text-align:left;
}
.compare-img{height:60px;object-fit:contain}
.overlay-wide{max-width:720px}

/* ---------- resource links ---------- */
.resource-links{
    display:flex;justify-content:center;gap:10px;margin-bottom:24px;flex-wrap:wrap;
}
.res-link{
    display:inline-flex;align-items:center;gap:6px;
    padding:8px 18px;border-radius:999px;
    background:var(--bg-2);color:var(--text-0);
    font-size:.85rem;font-weight:600;
    border:1px solid var(--glass-border);
    transition:all .25s var(--ease-out);
}
.res-link:hover{
    background:var(--accent);color:#fff;
    box-shadow:0 4px 16px var(--accent-glow);
}

/* ---------- back button ---------- */
.back-btn{
    display:inline-flex;align-items:center;gap:8px;
    margin-top:28px;padding:10px 22px;
    background:var(--bg-2);color:var(--text-1);
    border:1px solid var(--glass-border);
    border-radius:var(--radius-md);
    font-size:.9rem;font-weight:600;
    transition:all .25s var(--ease-out);
}
.back-btn:hover{
    background:var(--bg-3);color:var(--text-0);
    transform:translateX(-3px);
}

/* ---------- selection overview ---------- */
.selection-cards{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
    gap:14px;
}
.sel-card{
    display:flex;align-items:center;gap:12px;
    padding:14px 16px;border-radius:var(--radius-md);
    background:var(--bg-2);border:1px solid var(--glass-border);
    transition:all .25s var(--ease-out);
}
.sel-card:hover{border-color:hsla(210 80% 60% / .2)}
.sel-card-icon{
    width:36px;height:36px;border-radius:10px;
    background:var(--accent-glow);color:var(--accent);
    display:grid;place-items:center;font-size:.9rem;
    flex-shrink:0;
}
.sel-card-info{display:flex;flex-direction:column;flex:1;min-width:0}
.sel-card-label{font-size:.72rem;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}
.sel-card-val{font-size:.88rem;font-weight:600;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sel-card-edit{
    width:30px;height:30px;border-radius:8px;border:none;
    background:var(--bg-3);color:var(--text-2);
    display:grid;place-items:center;font-size:.72rem;
    transition:all .2s;flex-shrink:0;
}
.sel-card-edit:hover{background:var(--accent);color:#fff}

/* ---------- quote blocks ---------- */
.quote-block{
    background:var(--glass);
    border:1px solid var(--glass-border);
    border-radius:var(--radius-lg);
    padding:28px;margin-bottom:24px;
    animation:fadeUp .5s var(--ease-out) both;
}
.quote-block:nth-child(2){animation-delay:.06s}
.quote-block:nth-child(3){animation-delay:.12s}
.quote-block:nth-child(4){animation-delay:.18s}
.quote-block:nth-child(5){animation-delay:.24s}
.quote-block:nth-child(6){animation-delay:.30s}
.quote-block:nth-child(7){animation-delay:.36s}

@keyframes fadeUp{
    from{opacity:0;transform:translateY(20px)}
    to{opacity:1;transform:translateY(0)}
}

.quote-block-header{
    display:flex;align-items:center;gap:12px;margin-bottom:20px;
}
.quote-block-header i{font-size:1.3rem;color:var(--accent-soft)}
.quote-block-header h2{font-size:1.2rem;font-weight:700}

/* ---------- panels info ---------- */
.panel-info-content{
    text-align:center;padding:16px;
    background:var(--bg-2);border-radius:var(--radius-md);
}
.panel-info-content p{margin-bottom:6px;font-size:.95rem}
.panel-info-content .price{color:var(--accent-soft);font-weight:700}
.panel-info-content a{
    color:var(--accent-soft);font-weight:600;font-size:.88rem;
    display:inline-flex;align-items:center;gap:4px;
}
.panel-info-content a:hover{color:var(--accent)}
.panel-visual{
    display:flex;justify-content:center;flex-wrap:wrap;
    gap:10px;margin-top:16px;
}
.panel-visual img{
    width:44px;height:auto;
    transition:transform .3s var(--ease-spring);
}
.panel-visual img:hover{transform:scale(1.15) rotate(-3deg)}

/* ---------- accessories ---------- */
.acc-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(170px,1fr));
    gap:14px;
}
.acc-card{
    background:var(--bg-2);border-radius:var(--radius-md);
    padding:18px 14px;text-align:center;
    border:1px solid var(--glass-border);
    transition:all .3s var(--ease-out);
}
.acc-card:hover{
    transform:translateY(-3px);
    box-shadow:var(--shadow-sm);
    border-color:hsla(210 80% 60% / .2);
}
.acc-card i{font-size:1.5rem;color:var(--accent-soft);margin-bottom:10px;display:block}
.acc-card .acc-name{display:block;font-size:.88rem;font-weight:500;color:var(--text-0);margin-bottom:6px}
.acc-card .acc-price{display:block;font-size:.9rem;font-weight:700;color:var(--accent-soft)}

/* ---------- savings calculator ---------- */
.savings-calculator{padding:4px 0}
.savings-input-row{
    display:flex;align-items:center;gap:16px;
    flex-wrap:wrap;margin-bottom:16px;
}
.savings-input-row label{
    font-size:.92rem;color:var(--text-1);flex:1;min-width:200px;
}
.savings-input-wrap{
    display:flex;align-items:center;
    background:var(--bg-2);border:1px solid var(--glass-border);
    border-radius:var(--radius-sm);overflow:hidden;
    transition:border-color .2s;
}
.savings-input-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
.savings-prefix{
    padding:10px 12px;font-size:.88rem;font-weight:700;
    color:var(--text-2);background:var(--bg-3);
    border-right:1px solid var(--glass-border);
}
.savings-input-wrap input{
    border:none;background:transparent;color:var(--text-0);
    padding:10px 14px;width:140px;font-size:.95rem;
    font-family:inherit;outline:none;
}
.savings-input-wrap input::placeholder{color:var(--text-2)}
.savings-results{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
    gap:14px;
}
.savings-results.hidden{display:none}
.savings-card{
    padding:18px 14px;border-radius:var(--radius-md);
    text-align:center;border:1px solid var(--glass-border);
    background:var(--bg-2);
    animation:fadeUp .4s var(--ease-out) both;
}
.savings-card:nth-child(2){animation-delay:.06s}
.savings-card:nth-child(3){animation-delay:.12s}
.savings-card:nth-child(4){animation-delay:.18s}
.savings-card-label{
    display:block;font-size:.78rem;font-weight:600;
    color:var(--text-2);text-transform:uppercase;
    letter-spacing:.04em;margin-bottom:6px;
}
.savings-card-val{
    display:block;font-size:1.15rem;font-weight:800;color:var(--text-0);
}
.savings-monthly .savings-card-val{color:var(--green)}
.savings-yearly .savings-card-val{color:var(--green)}
.savings-payback .savings-card-val{color:var(--accent-soft)}
.savings-10yr .savings-card-val.positive{color:var(--green)}
.savings-10yr .savings-card-val.negative{color:var(--red)}

/* ---------- environmental impact ---------- */
.env-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
    gap:16px;
}
.env-card{
    background:var(--bg-2);border-radius:var(--radius-md);
    padding:22px 16px;text-align:center;
    border:1px solid var(--glass-border);
    opacity:0;transform:translateY(30px) scale(.9);
    transition:all .6s var(--ease-spring);
    position:relative;overflow:hidden;
}
.env-card.show{opacity:1;transform:translateY(0) scale(1)}
.env-card:hover{
    border-color:var(--green);
    box-shadow:0 6px 24px var(--green-glow);
    transform:translateY(-3px) scale(1);
}
.env-icon{margin-bottom:10px}
.env-icon i{font-size:1.7rem;color:var(--green)}
.env-label{
    display:block;font-size:.82rem;font-weight:500;
    color:var(--text-1);margin-bottom:8px;
}
.env-value{
    display:block;font-size:1.25rem;font-weight:800;color:var(--text-0);
}
.ring-wrap{position:relative;width:70px;height:70px;margin:8px auto 0}
.ring-svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring-track{fill:none;stroke:var(--bg-3);stroke-width:5}
.ring-fill{
    fill:none;stroke:var(--green);stroke-width:5;
    stroke-linecap:round;
    stroke-dasharray:213.63;stroke-dashoffset:213.63;
    transition:stroke-dashoffset 1.2s var(--ease-spring);
    filter:drop-shadow(0 0 6px var(--green-glow));
}
.ring-text{
    position:absolute;inset:0;
    display:grid;place-items:center;
    font-size:1rem;font-weight:800;color:var(--green);
}

/* ---------- form ---------- */
.user-form{margin-bottom:24px}
.form-row{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
    gap:16px;margin-bottom:16px;
}
.field label{
    display:block;font-size:.82rem;font-weight:600;
    color:var(--text-1);margin-bottom:6px;
}
.field input,.phone-wrap select{
    width:100%;padding:11px 14px;
    background:var(--bg-2);color:var(--text-0);
    border:1px solid var(--glass-border);
    border-radius:var(--radius-sm);font-size:.95rem;
    transition:border-color .2s,box-shadow .2s;
    font-family:inherit;
}
.field input:focus,.phone-wrap select:focus{
    outline:none;border-color:var(--accent);
    box-shadow:0 0 0 3px var(--accent-glow);
}
.field input::placeholder{color:var(--text-2)}
.phone-wrap{display:flex;gap:8px}
.phone-wrap select{
    width:110px;flex-shrink:0;
    appearance:none;-webkit-appearance:none;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%239a9db0'/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 12px center;
    padding-right:28px;cursor:pointer;
}
.phone-wrap input{flex:1}
.field-error{
    display:block;font-size:.78rem;color:var(--error);
    min-height:18px;margin-top:4px;
}

/* ---------- breakdown ---------- */
.breakdown{
    background:var(--bg-2);border-radius:var(--radius-md);
    padding:2px 20px;margin-bottom:20px;
}
.breakdown .row{
    display:flex;justify-content:space-between;align-items:center;
    padding:14px 0;border-bottom:1px solid var(--glass-border);
    font-size:.92rem;
}
.breakdown .row:last-child{border-bottom:none}
.breakdown .row-val{font-weight:700;color:var(--accent-soft)}

/* ---------- total ---------- */
.total-bar{
    display:flex;justify-content:space-between;align-items:center;
    padding:18px 24px;border-radius:var(--radius-md);
    background:linear-gradient(135deg,hsl(210 90% 28%),hsl(210 80% 44%));
    margin-bottom:20px;
}
.total-label{font-size:1rem;font-weight:600;color:hsla(0 0% 100% / .85)}
.total-amount{font-size:1.6rem;font-weight:800;color:#fff}

/* ---------- financing ---------- */
.financing-row{
    padding:18px;border-radius:var(--radius-md);
    background:var(--bg-2);border:1px solid var(--glass-border);
    margin-bottom:20px;text-align:center;
}
.financing-label{
    display:block;font-size:.88rem;font-weight:600;
    color:var(--text-1);margin-bottom:12px;
}
.financing-options{
    display:flex;justify-content:center;gap:12px;
    flex-wrap:wrap;margin-bottom:10px;
}
.fin-opt{
    display:flex;flex-direction:column;align-items:center;
    padding:12px 20px;border-radius:var(--radius-md);
    background:var(--bg-3);border:1px solid var(--glass-border);
    color:var(--text-0);
    transition:all .25s var(--ease-out);
    min-width:120px;
}
.fin-opt:hover{
    border-color:var(--accent);
    transform:translateY(-2px);
    box-shadow:0 4px 16px var(--accent-glow);
}
.fin-amount{font-size:1rem;font-weight:800;color:var(--accent-soft)}
.fin-period{font-size:.75rem;color:var(--text-2);font-weight:500}
.financing-note{
    font-size:.78rem;color:var(--text-2);margin-top:8px;
}

/* ---------- disclaimer ---------- */
.disclaimer{
    display:flex;gap:12px;align-items:flex-start;
    padding:14px 18px;border-radius:var(--radius-sm);
    background:hsla(38 80% 50% / .08);
    border-left:3px solid var(--amber);
    margin-bottom:24px;
}
.disclaimer i{color:var(--amber);font-size:1.1rem;flex-shrink:0;margin-top:2px}
.disclaimer p{color:var(--text-1);font-size:.88rem;line-height:1.5}

/* ---------- cta ---------- */
.cta-row{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    gap:12px;
}
.cta-btn{
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    padding:13px 20px;border-radius:var(--radius-md);
    border:none;font-size:.9rem;font-weight:700;
    color:#fff;background:var(--accent);
    transition:all .25s var(--ease-out);
    position:relative;overflow:hidden;
}
.cta-btn::before{
    content:'';position:absolute;inset:0;
    background:linear-gradient(120deg,transparent 30%,hsla(0 0% 100% / .12) 50%,transparent 70%);
    transform:translateX(-100%);transition:transform .5s;
}
.cta-btn:hover::before{transform:translateX(100%)}
.cta-btn:hover{
    transform:translateY(-2px);
    box-shadow:0 6px 20px var(--accent-glow);
}
.cta-btn.cta-green{background:var(--green)}
.cta-btn.cta-green:hover{box-shadow:0 6px 20px var(--green-glow)}
.cta-btn.cta-red{background:var(--red)}
.cta-btn.cta-red:hover{box-shadow:0 6px 20px hsla(0 72% 56% / .3)}
.cta-btn.cta-ghost{
    background:transparent;color:var(--text-1);
    border:1px solid var(--glass-border);
}
.cta-btn.cta-ghost:hover{
    background:var(--bg-2);color:var(--text-0);
    box-shadow:none;transform:translateY(-2px);
}

/* ---------- overlay ---------- */
.overlay{
    position:fixed;inset:0;z-index:200;
    background:hsla(0 0% 0% / .6);
    backdrop-filter:blur(6px);
    display:grid;place-items:center;
    opacity:0;visibility:hidden;
    transition:opacity .3s,visibility .3s;
}
.overlay:not(.hidden){opacity:1;visibility:visible}
.overlay-card{
    background:var(--bg-1);
    border:1px solid var(--glass-border);
    border-radius:var(--radius-lg);
    padding:28px;max-width:520px;width:92%;
    position:relative;
    transform:scale(.88) translateY(20px);
    transition:transform .35s var(--ease-spring);
    box-shadow:var(--shadow-lg);
    max-height:85vh;overflow-y:auto;
}
.overlay:not(.hidden) .overlay-card{transform:scale(1) translateY(0)}
.overlay-close{
    position:absolute;top:14px;right:14px;
    width:32px;height:32px;border-radius:50%;
    border:none;background:var(--bg-3);color:var(--text-1);
    display:grid;place-items:center;font-size:.9rem;
    transition:all .2s;z-index:2;
}
.overlay-close:hover{background:var(--error);color:#fff}
.overlay-card h3{font-size:1.15rem;font-weight:700;margin-bottom:16px}
.overlay-card ul{list-style:none;margin-bottom:18px}
.overlay-card ul li{
    display:flex;align-items:center;gap:10px;
    padding:8px 0;font-size:.92rem;color:var(--text-0);
}
.overlay-card ul li i{color:var(--green);font-size:.85rem}
.overlay-card .detail-box{
    background:var(--bg-2);padding:14px;
    border-radius:var(--radius-sm);
}
.overlay-card .detail-box p{font-size:.88rem;margin-bottom:6px;color:var(--text-1)}
.overlay-card .detail-box strong{color:var(--accent-soft)}
.overlay-card .feature-list{margin:8px 0 0;list-style:none}
.overlay-card .feature-list li{font-size:.85rem;padding:4px 0}

/* ---------- fab ---------- */
.fab-top{
    position:fixed;bottom:24px;right:24px;z-index:90;
    width:46px;height:46px;border-radius:50%;border:none;
    background:var(--accent);color:#fff;
    font-size:1rem;display:grid;place-items:center;
    box-shadow:0 4px 16px var(--accent-glow);
    opacity:0;transform:translateY(16px);
    transition:all .3s var(--ease-out);pointer-events:none;
}
.fab-top.visible{opacity:1;transform:translateY(0);pointer-events:auto}
.fab-top:hover{
    transform:translateY(-3px);
    box-shadow:0 8px 28px var(--accent-glow);
}

/* ---------- footer ---------- */
.site-footer{
    background:var(--bg-1);
    border-top:1px solid var(--glass-border);
    padding:32px 24px;margin-top:60px;
}
.footer-inner{max-width:1120px;margin:0 auto;text-align:center}
.footer-links{
    display:flex;justify-content:center;flex-wrap:wrap;
    gap:20px;margin-bottom:16px;
}
.footer-links a,.footer-links span{
    display:inline-flex;align-items:center;gap:6px;
    font-size:.85rem;color:var(--text-1);transition:color .2s;
}
.footer-links a:hover{color:var(--accent)}
.footer-credits{
    display:flex;justify-content:center;gap:16px;flex-wrap:wrap;
    font-size:.82rem;color:var(--text-2);
}
.footer-credits a{color:var(--accent-soft)}
.footer-credits a:hover{color:var(--accent)}

/* ---------- responsive ---------- */
@media(max-width:768px){
    .topbar-inner{padding:10px 16px}
    .topbar-title{display:none}
    .topbar-total{display:none}
    .step-pill .pill-label{display:none}
    .step-pill{padding:6px 10px}
    .step-connector{width:10px}
    .app-main{padding:20px 16px 60px}
    .panel-header h1{font-size:1.5rem}
    .brand-grid{grid-template-columns:1fr;max-width:340px}
    .card-grid{grid-template-columns:1fr}
    .form-row{grid-template-columns:1fr}
    .cta-row{grid-template-columns:1fr}
    .acc-grid{grid-template-columns:repeat(2,1fr)}
    .env-grid{grid-template-columns:repeat(2,1fr)}
    .needs-grid{grid-template-columns:repeat(3,1fr)}
    .total-bar{flex-direction:column;text-align:center;gap:6px}
    .footer-links{flex-direction:column;align-items:center;gap:10px}
    .selection-cards{grid-template-columns:1fr}
    .savings-results{grid-template-columns:repeat(2,1fr)}
    .compare-bar{flex-wrap:wrap;gap:10px}
    .financing-options{flex-direction:column;align-items:center}
    .fin-opt{width:100%;max-width:200px}
}
@media(max-width:480px){
    .step-pill .pill-label{display:none}
    .step-pill{padding:5px 8px}
    .step-pill .pill-num{width:20px;height:20px;font-size:.68rem}
    .brand-card{padding:28px 20px 24px}
    .quote-block{padding:20px}
    .phone-wrap{flex-direction:column}
    .phone-wrap select{width:100%}
    .env-grid{grid-template-columns:1fr}
    .needs-grid{grid-template-columns:repeat(2,1fr)}
    .savings-results{grid-template-columns:1fr}
    .savings-input-row{flex-direction:column;gap:10px}
    .compare-row{grid-template-columns:80px repeat(auto-fit,minmax(80px,1fr))}
    .compare-cell{padding:8px 6px;font-size:.78rem}
    .toast-container{top:70px;right:10px;left:10px}
    .toast{font-size:.82rem;padding:10px 14px}
}