@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap');

:root { --ink:#101f1b; --forest:#092e25; --forest-2:#0d3b30; --green:#8cc63f; --lime:#b8e44b; --cream:#f3f4ed; --white:#fff; --muted:#66746f; --line:#dfe5dc; --shadow:0 24px 70px rgba(8,38,30,.12); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:#fff; font-family:'DM Sans',Arial,sans-serif; line-height:1.6; }
#main-content:focus { outline:none; }
body, button, a { -webkit-font-smoothing:antialiased; }
a { color:inherit; text-decoration:none; }
img { display:block; width:100%; }
.container { width:min(1160px,calc(100% - 40px)); margin-inline:auto; }
.section { padding:110px 0; }
.eyebrow { margin:0 0 18px; color:var(--lime); font-size:.75rem; font-weight:700; letter-spacing:.19em; text-transform:uppercase; }
.eyebrow span { opacity:.65; padding:0 5px; }
.eyebrow.dark { color:#56891e; }
h1,h2,h3 { margin-top:0; font-family:'Manrope',Arial,sans-serif; line-height:1.08; }
h2 { margin-bottom:20px; font-size:clamp(2rem,4vw,3.4rem); letter-spacing:-.045em; }
.button { display:inline-flex; align-items:center; justify-content:center; min-height:54px; padding:0 24px; border:1px solid transparent; border-radius:3px; font-size:.87rem; font-weight:700; transition:.2s ease; }
.button:hover { transform:translateY(-2px); }
.button-primary { color:#102019; background:var(--lime); }
.button-primary:hover { background:#ccf46b; box-shadow:0 12px 28px rgba(184,228,75,.2); }
.button-ghost { color:#fff; border-color:rgba(255,255,255,.3); }
.button-ghost:hover { border-color:#fff; }

.site-header { position:absolute; z-index:20; top:0; left:0; width:100%; color:#fff; border-bottom:1px solid rgba(255,255,255,.14); }
.nav-wrap { display:flex; align-items:center; justify-content:space-between; min-height:86px; }
.brand { display:inline-flex; align-items:center; gap:12px; }
.brand-mark { position:relative; display:block; width:36px; height:36px; border:2px solid var(--lime); border-radius:50%; }
.brand-mark::before,.brand-mark::after,.brand-mark span { content:""; position:absolute; left:8px; width:17px; height:3px; background:var(--lime); transform:skew(-35deg); }
.brand-mark::before { top:9px; }.brand-mark span { top:15px; }.brand-mark::after { top:21px; }
.brand-copy { display:flex; flex-direction:column; }
.brand-copy strong { font-family:'Manrope',sans-serif; font-size:1.15rem; line-height:1.2; letter-spacing:-.02em; }
.brand-copy small { color:#cad8d1; font-size:.58rem; font-weight:600; letter-spacing:.15em; text-transform:uppercase; }
.primary-nav { display:flex; align-items:center; gap:32px; font-size:.84rem; font-weight:600; }
.primary-nav a { opacity:.88; }.primary-nav a:hover,.primary-nav a.active { opacity:1; color:var(--lime); }
.primary-nav a.electrical-link { color:#ff6863; opacity:1; white-space:nowrap; }.primary-nav a.electrical-link:hover { color:#ff9691; }
.primary-nav .nav-cta { padding:11px 17px; border:1px solid rgba(255,255,255,.42); border-radius:3px; }
.nav-toggle,.nav-toggle-label { display:none; }
@media (max-width:1000px) { .nav-toggle-label { display:grid; gap:5px; width:34px; padding:7px; cursor:pointer; }.nav-toggle-label span { height:2px; background:#fff; }.primary-nav { position:absolute; top:86px; left:0; display:none; width:100%; padding:25px 20px; align-items:stretch; flex-direction:column; gap:19px; background:#092e25; box-shadow:0 20px 30px rgba(0,0,0,.2); }.nav-toggle:checked~.primary-nav { display:flex; }.primary-nav .nav-cta { text-align:center; } }

.hero { position:relative; overflow:hidden; min-height:820px; padding:170px 0 80px; color:#fff; background:linear-gradient(135deg,#071f19,#0b352a 62%,#0d3d31); }
.hero::before { content:""; position:absolute; inset:0; opacity:.18; background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px); background-size:60px 60px; }
.hero-glow { position:absolute; width:570px; height:570px; right:-200px; bottom:-280px; border-radius:50%; background:rgba(155,217,66,.15); filter:blur(5px); }
.hero-grid,.split-grid { position:relative; display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:78px; }
.hero h1 { margin-bottom:26px; font-size:clamp(3.4rem,6.8vw,6.1rem); letter-spacing:-.065em; }
.hero h1 em { color:var(--lime); font-style:normal; }
.hero-lead { max-width:620px; margin:0 0 34px; color:#c9d6d0; font-size:1.12rem; }
.button-row { display:flex; flex-wrap:wrap; gap:12px; }
.hero-proof { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:68px; padding-top:26px; border-top:1px solid rgba(255,255,255,.16); }
.hero-proof div { display:flex; flex-direction:column; }.hero-proof strong { font-size:.84rem; }.hero-proof span { color:#97aaa2; font-size:.72rem; }
.hero-visual { position:relative; }
.hero-visual img { min-height:520px; object-fit:cover; border-radius:4px; box-shadow:0 35px 80px rgba(0,0,0,.3); }
.hero-visual::before { content:""; position:absolute; z-index:-1; top:-35px; right:-35px; width:65%; height:65%; border:1px solid rgba(184,228,75,.35); }
.energy-card { position:absolute; left:-35px; bottom:38px; display:flex; align-items:center; gap:14px; min-width:220px; padding:18px; color:var(--ink); background:#fff; box-shadow:var(--shadow); }
.energy-icon { display:grid; width:42px; height:42px; place-items:center; color:var(--forest); background:var(--lime); border-radius:50%; font-size:1.3rem; }
.energy-card div { display:flex; flex-direction:column; }.energy-card strong { font-size:.88rem; }.energy-card small { color:var(--muted); }

.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:50px; margin-bottom:55px; }
.section-heading h2 { max-width:680px; margin:0; }.section-heading>p { max-width:400px; margin:0 0 5px; color:var(--muted); }
.service-grid { display:grid; grid-template-columns:repeat(4,1fr); border:1px solid var(--line); }
.service-card { position:relative; min-height:390px; padding:38px 30px 32px; border-right:1px solid var(--line); background:#fff; transition:.25s ease; }
.service-card:last-child { border-right:0; }.service-card:hover { z-index:2; transform:translateY(-6px); box-shadow:var(--shadow); }
.service-card.featured { color:#fff; background:var(--forest); }.service-card.featured p { color:#b7c7c0; }
.service-number { position:absolute; top:20px; right:22px; color:#aab5af; font-size:.7rem; }
.service-icon { display:grid; width:54px; height:54px; margin-bottom:58px; place-items:center; color:var(--forest); background:#eaf3dd; border-radius:50%; font-size:1.55rem; }
.featured .service-icon { background:var(--lime); }.service-card h3 { font-size:1.3rem; }.service-card p { color:var(--muted); font-size:.9rem; }
.service-card a { position:absolute; bottom:30px; color:#517d23; font-size:.8rem; font-weight:700; }.featured a { color:var(--lime); }.service-card a span { margin-left:5px; }

.expertise { color:#fff; background:var(--forest); }.expertise-benefits { margin:0; gap:34px; }.expertise .powered-line { margin-top:34px; }
.split-copy .large-copy { color:#b7c8c0; font-size:1.04rem; }.check-list { display:grid; gap:25px; margin:34px 0; padding:0; list-style:none; }
.check-list li { display:flex; gap:16px; }.check-list li>span { display:grid; flex:0 0 28px; height:28px; place-items:center; color:var(--forest); background:var(--lime); border-radius:50%; font-size:.75rem; font-weight:800; }
.check-list strong { font-size:.93rem; }.check-list p { margin:4px 0 0; color:#98aba3; font-size:.84rem; }.powered-line { padding-top:24px; border-top:1px solid rgba(255,255,255,.15); color:#92a69d; font-size:.78rem; text-transform:uppercase; letter-spacing:.1em; }.powered-line strong { color:#fff; }

.process { background:var(--cream); }.center-heading { max-width:650px; margin:0 auto 60px; text-align:center; }.center-heading>p:last-child { color:var(--muted); }
.process-grid { display:grid; grid-template-columns:repeat(4,1fr); counter-reset:steps; }.process-grid article { position:relative; padding:0 32px; text-align:center; }.process-grid article:not(:last-child)::after { content:""; position:absolute; top:27px; left:65%; width:70%; border-top:1px dashed #b8c1b4; }
.process-grid span { position:relative; z-index:2; display:grid; width:55px; height:55px; margin:0 auto 28px; place-items:center; color:#fff; background:var(--forest); border-radius:50%; font-size:.75rem; font-weight:700; box-shadow:0 0 0 8px var(--cream); }
.process-grid h3 { margin-bottom:9px; font-size:1.1rem; }.process-grid p { color:var(--muted); font-size:.84rem; }

.storage { overflow:hidden; padding:115px 0; color:#fff; background:#0d382e; }.storage-grid { min-height:500px; }.stat-row { display:grid; grid-template-columns:repeat(3,1fr); margin:36px 0; padding:24px 0; border-block:1px solid rgba(255,255,255,.14); }
.stat-row div { display:flex; flex-direction:column; }.stat-row strong { color:var(--lime); font-size:.83rem; }.stat-row span { color:#a7bbb2; font-size:.72rem; }
.battery-visual { position:relative; display:grid; min-height:500px; place-items:center; }.battery-visual img { z-index:2; max-width:470px; filter:drop-shadow(0 30px 35px rgba(0,0,0,.3)); }.sun-ring { position:absolute; width:430px; height:430px; border:1px solid rgba(184,228,75,.25); border-radius:50%; box-shadow:0 0 0 60px rgba(184,228,75,.04),0 0 0 120px rgba(184,228,75,.025); }

.projects { background:#fff; }.dark-link { color:var(--forest); }.project-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; align-items:stretch; }.project-card { position:relative; display:block; min-height:590px; overflow:hidden; }.project-card img { width:100%; height:100%; object-fit:cover; transition:.45s ease; }.project-card:hover img { transform:scale(1.035); }
.project-card.project-wide::after { content:""; position:absolute; inset:30% 0 0; background:linear-gradient(transparent,rgba(5,26,21,.92)); }.project-card-copy { position:absolute; z-index:2; right:28px; bottom:25px; left:28px; color:#fff; }.project-card-copy>span { color:#c8d6cf; font-size:.67rem; letter-spacing:.1em; text-transform:uppercase; }.project-card h3 { margin:7px 0 0; font-size:1.3rem; }
.project-with-blurb { display:flex; flex-direction:column; color:var(--forest); background:var(--cream); }.project-photo { position:relative; flex:none; margin:0; overflow:hidden; }.project-photo img { display:block; width:100%; height:210px; object-fit:cover; }.project-photo figcaption { position:absolute; right:10px; bottom:10px; padding:5px 8px; color:#fff; background:rgba(5,26,21,.78); font-size:.62rem; letter-spacing:.04em; }.project-with-blurb .project-card-copy { position:static; padding:28px; color:var(--forest); }.project-with-blurb .project-card-copy>span { color:#5d7d65; font-weight:700; }.project-with-blurb .project-card-copy p { margin:16px 0 0; color:#52645a; font-size:.88rem; line-height:1.7; }

.quote-section { padding:85px 0; color:#fff; background:var(--green); }.quote-inner { display:flex; align-items:center; justify-content:space-between; gap:60px; }.quote-inner h2 { margin-bottom:16px; }.quote-inner>div>p:last-child { max-width:620px; margin:0; color:#e9f5dc; }.quote-actions { display:flex; flex-direction:column; align-items:center; gap:12px; flex:0 0 310px; }.button-light { width:100%; color:var(--forest); background:#fff; }.quote-actions>span { font-size:.72rem; }.quote-actions>span a { border-bottom:1px solid rgba(255,255,255,.5); }

.site-footer { padding:70px 0 25px; color:#b1c0ba; background:#061e18; font-size:.83rem; }.footer-grid { display:grid; grid-template-columns:1.6fr .8fr .8fr 1.2fr; gap:55px; }.brand-footer { margin-bottom:22px; color:#fff; }.footer-grid>div>p { max-width:300px; }.powered { color:#fff; font-size:.69rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }.footer-grid h2 { margin-bottom:20px; color:#fff; font-size:.76rem; letter-spacing:.12em; text-transform:uppercase; }.footer-grid>div>a:not(.brand) { display:block; margin:8px 0; }.footer-grid a:hover { color:var(--lime); }.text-link { color:var(--lime); font-weight:700; }.footer-bottom { display:flex; justify-content:space-between; margin-top:55px; padding-top:22px; border-top:1px solid rgba(255,255,255,.1); color:#6f857c; font-size:.7rem; }

#blazor-error-ui { display:none; }
@media (max-width:980px) { .hero { min-height:auto; }.hero-grid,.split-grid { grid-template-columns:1fr; }.hero-copy { padding-bottom:20px; }.hero-visual { max-width:700px; }.service-grid { grid-template-columns:repeat(2,1fr); }.service-card:nth-child(2) { border-right:0; }.service-card:nth-child(-n+2) { border-bottom:1px solid var(--line); }.footer-grid { grid-template-columns:1.4fr 1fr 1fr; }.footer-grid>div:last-child { grid-column:1/-1; }.storage-grid .split-copy { order:2; }.battery-visual { min-height:380px; }.project-grid { grid-template-columns:1fr 1fr; }.project-card.project-wide { grid-column:1/-1; min-height:420px; }.project-with-blurb { min-height:0; } }
@media (max-width:760px) { .section { padding:78px 0; }.nav-wrap { min-height:74px; }.nav-toggle-label { display:grid; gap:5px; width:34px; padding:7px; cursor:pointer; }.nav-toggle-label span { height:2px; background:#fff; }.primary-nav { position:absolute; top:74px; left:0; display:none; width:100%; padding:25px 20px; align-items:stretch; flex-direction:column; gap:19px; background:#092e25; box-shadow:0 20px 30px rgba(0,0,0,.2); }.nav-toggle:checked~.primary-nav { display:flex; }.primary-nav .nav-cta { text-align:center; }.hero { padding-top:135px; }.hero h1 { font-size:clamp(2.85rem,13vw,4.3rem); }.hero-grid { gap:50px; }.hero-proof { margin-top:45px; }.hero-visual img { min-height:400px; }.energy-card { left:15px; }.section-heading,.quote-inner { align-items:flex-start; flex-direction:column; }.service-grid { grid-template-columns:1fr; }.service-card { min-height:340px; border-right:0; border-bottom:1px solid var(--line); }.service-card:last-child { border-bottom:0; }.image-frame img { height:480px; }.experience-badge { right:15px; }.process-grid { grid-template-columns:1fr 1fr; gap:40px 0; }.process-grid article::after { display:none; }.project-grid { display:flex; flex-direction:column; }.project-card.project-wide { min-height:360px; }.project-with-blurb { min-height:0; }.quote-actions { align-items:flex-start; width:100%; flex-basis:auto; }.quote-actions .button { width:auto; }.footer-grid { grid-template-columns:1fr 1fr; }.footer-grid>div:first-child,.footer-grid>div:last-child { grid-column:1/-1; } }
@media (max-width:500px) { .container { width:min(100% - 28px,1160px); }.button-row { flex-direction:column; }.hero-proof { grid-template-columns:1fr; }.hero-proof div { padding-bottom:10px; border-bottom:1px solid rgba(255,255,255,.08); }.hero-visual img { min-height:330px; }.service-grid { margin-inline:-1px; }.process-grid { grid-template-columns:1fr; }.storage { padding:80px 0; }.battery-visual { min-height:300px; }.sun-ring { width:280px; height:280px; }.stat-row { gap:10px; }.footer-grid { grid-template-columns:1fr; }.footer-grid>div { grid-column:auto!important; }.footer-bottom { flex-direction:column; gap:4px; } }


/* Enquiry administration and account utilities */
.valid.modified:not([type=checkbox]) { outline:1px solid #26b050; }
.invalid { outline:1px solid #b42318; }
.validation-message { color:#b42318; }
.blazor-error-boundary { padding:1rem; color:#fff; background:#b42318; }
.admin-page { width:min(1200px,calc(100% - 40px)); margin:0 auto; padding:130px 0 70px; }
.admin-header,.detail-header { display:flex; justify-content:space-between; align-items:center; gap:2rem; margin-bottom:1.5rem; }
.admin-toolbar { display:flex; margin-bottom:1.5rem; align-items:center; justify-content:space-between; gap:1rem; }
.admin-header span { color:var(--green); font-weight:800; letter-spacing:.15em; font-size:.8rem; }
.admin-page h1 { font-size:clamp(2.3rem,6vw,4.5rem); }
.summary-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:1rem; margin-bottom:1rem; }
.summary-card { padding:1.2rem; text-align:left; color:var(--ink); border:1px solid var(--line); border-radius:8px; background:#fff; cursor:pointer; }
.summary-card strong { display:block; font-size:2rem; }
.summary-card span { color:var(--muted); }
.filters { display:grid; grid-template-columns:1fr 180px auto; gap:.7rem; padding:1rem; background:#fff; }
.filters input,.filters select,.admin-page textarea,.admin-page select { width:100%; padding:.75rem; border:1px solid #b9c7bc; border-radius:6px; background:#fff; }
.solar-button,.filters button { padding:.8rem 1.2rem; color:#102017; border:0; border-radius:6px; background:var(--lime); font-weight:800; cursor:pointer; }
.table-wrap { overflow:auto; background:#fff; }
.admin-page table { width:100%; border-collapse:collapse; }
.admin-page th,.admin-page td { padding:1rem; border-top:1px solid #e7ece7; text-align:left; }
.admin-page tbody tr { cursor:pointer; }
.admin-page tbody tr:hover { background:#f4f8f2; }
.status { padding:.25rem .55rem; border-radius:99px; background:#e7ece8; }
.status-new { background:#dff2ff; }.status-won { background:#ddf5d1; }.status-lost { background:#f8dddd; }.status-quoted { background:#fff0bd; }
.detail-grid { display:grid; grid-template-columns:1.5fr 1fr; gap:1.5rem; }
.solar-panel { padding:clamp(1.25rem,4vw,2.5rem); border:1px solid var(--line); border-radius:12px; background:#fff; box-shadow:0 10px 30px rgba(22,48,32,.05); }
.admin-page dl { display:grid; grid-template-columns:140px 1fr; gap:.7rem; }
.admin-page dt { font-weight:800; }.admin-page dd { margin:0; }
.note { padding:1rem 0; border-top:1px solid #e1e8e1; }
.readonly-status { display:flex; min-width:150px; padding:14px 17px; flex-direction:column; border:1px solid #ccd8ce; border-radius:6px; background:#fff; }
.readonly-status span { color:#718078; font-size:.64rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.readonly-status strong { color:var(--forest); font-size:.92rem; }
.readonly-status small { margin-top:2px; color:#7b8982; font-size:.66rem; }
.readonly-message { padding:13px 15px; color:#55675e!important; background:#f0f4ed; border-left:3px solid #8cc63f; font-size:.76rem; }
@media(max-width:800px) {
  .detail-grid { grid-template-columns:1fr; }
  .summary-grid { grid-template-columns:repeat(2,1fr); }
  .filters { grid-template-columns:1fr; }
  .detail-header { align-items:flex-start; flex-direction:column; }
  .admin-header,.admin-toolbar { align-items:flex-start; flex-direction:column; }
}
