:root {
  --blue:#204da7;
  --dark:#122444;
  --ink:#182b48;
  --muted:#65758e;
  --line:#e5ebf3;
  --soft:#f5f8fd;
  --green:#0d9f75;
  --radius:18px
}

* {
  box-sizing:border-box
}

html {
  scroll-behavior:smooth
}

body {
  margin:0;
  background:#fff;
  color:var(--ink);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:15px;
  line-height:1.5
}

button,input,select {
  font:inherit
}

button {
  cursor:pointer
}

button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible {
  outline:3px solid #91b9ff;
  outline-offset:2px
}

a {
  text-decoration:none;
  color:inherit
}

.shell {
  max-width:1200px;
  margin:0 auto;
  padding-left:24px;
  padding-right:24px
}

.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0
}

.site-header {
  background:white;
  position:relative;
  z-index:2;
  border-bottom:1px solid #edf0f5
}

.topbar {
  min-height:76px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px
}

.brand {
  display:flex;
  align-items:center;
  gap:10px;
  font-weight:850;
  font-size:23px;
  letter-spacing:-1px;
  color:#193d86;
  line-height:1.05
}

.brand-sub {
  display:block;
  letter-spacing:3px;
  font-weight:700;
  font-size:9px;
  margin-top:5px;
  color:#63738d
}

.brand-bolt {
  display:grid;
  place-items:center;
  background:var(--blue);
  color:#fff;
  height:43px;
  width:43px;
  border-radius:12px;
  font-size:32px
}

.header-links {
  display:flex;
  align-items:center;
  gap:24px;
  font-weight:600;
  font-size:13px
}

.header-links>a:first-child:hover {
  color:var(--blue)
}

.outline-btn {
  border:1px solid #b9c9e7;
  padding:11px 16px;
  border-radius:10px;
  color:var(--blue)
}

.hero {
  background:radial-gradient(circle at 73% 25%,#315fb9 0%,#204da7 34%,#153779 100%);
  color:white;
  overflow:hidden
}

.hero-inner {
  min-height:420px;
  display:grid;
  grid-template-columns:1.4fr 1fr;
  align-items:center;
  gap:40px;
  position:relative
}

.eyebrow {
  color:#d2e3ff;
  font-size:11px;
  letter-spacing:2px;
  font-weight:800
}

.live-dot {
  display:inline-block;
  width:7px;
  height:7px;
  background:#83e2ab;
  border-radius:50%;
  margin-right:9px
}

.hero h1 {
  font-size:clamp(35px,4.2vw,56px);
  line-height:1.12;
  letter-spacing:-2px;
  margin:15px 0 18px
}

.hero h1 span {
  color:#a6ccff
}

.hero-copy {
  max-width:620px;
  color:#deebff;
  font-size:16px;
  line-height:1.8
}

.hero-actions {
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin-top:30px
}

.primary-btn,.secondary-btn {
  border:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:11px;
  padding:13px 20px;
  font-weight:750;
  font-size:13px;
  min-height:47px
}

.primary-btn {
  background:#ffcf55;
  color:#1b2b42
}

.primary-btn:hover {
  background:#ffdc82
}

.secondary-btn {
  border:1px solid #8eaee7;
  color:white;
  background:#ffffff12
}

.secondary-btn:hover {
  background:#ffffff25
}

.hero-visual {
  height:340px;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center
}

.visual-icon {
  width:173px;
  height:173px;
  border-radius:40px;
  background:linear-gradient(145deg,#92bcff,#dcecff);
  box-shadow:0 24px 70px #071c4a65,inset 0 2px 5px #fff8;
  display:grid;
  place-items:center;
  font-size:91px;
  transform:rotate(-10deg);
  z-index:1
}

.orbit {
  position:absolute;
  left:50%;
  top:50%;
  border-radius:50%;
  border:1px solid #ffffff30;
  transform:translate(-50%,-50%)
}

.orbit-one {
  width:290px;
  height:290px
}

.orbit-two {
  width:410px;
  height:410px
}

.float-tag {
  position:absolute;
  z-index:1;
  background:#fff;
  color:#1b3f89;
  border-radius:11px;
  padding:12px 15px;
  font-size:12px;
  font-weight:800;
  box-shadow:0 10px 32px #0c286438
}

.tag-one {
  left:2%;
  top:18%
}

.tag-two {
  right:-6%;
  top:27%;
  font-size:10px
}

.tag-three {
  right:4%;
  bottom:10%;
  color:#11865a
}

.dashboard {
  padding-top:62px;
  padding-bottom:60px
}

.intro-row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  margin-bottom:24px
}

.section-kicker {
  font-size:11px;
  color:var(--blue);
  font-weight:850;
  letter-spacing:2px;
  margin:0 0 6px
}

.intro-row h2 {
  font-size:30px;
  letter-spacing:-1px;
  margin:0 0 5px
}

.intro-row p:not(.section-kicker) {
  color:var(--muted);
  margin:0
}

.count-pill {
  background:#ebf2ff;
  color:var(--blue);
  border-radius:100px;
  padding:10px 17px;
  white-space:nowrap;
  font-size:13px
}

.count-pill strong {
  font-size:17px
}

.search-bar {
  height:59px;
  display:flex;
  align-items:center;
  gap:13px;
  border:1px solid #dce5f2;
  border-radius:13px;
  padding:0 18px;
  box-shadow:0 6px 22px #16346908;
  margin-bottom:30px
}

.search-bar:focus-within {
  border-color:#6b95e9;
  box-shadow:0 0 0 4px #eaf1ff
}

.search-bar>span {
  color:var(--blue);
  font-size:32px;
  line-height:1
}

.search-bar input {
  border:0;
  outline:0;
  width:100%;
  font-size:14px;
  background:transparent;
  color:var(--ink)
}

.search-bar input::placeholder {
  color:#91a0b5
}

.search-bar button {
  border:0;
  background:none;
  font-size:15px;
  color:var(--muted)
}

.workspace {
  display:grid;
  grid-template-columns:242px minmax(0,1fr);
  gap:32px
}

.sidebar {
  align-self:start;
  position:sticky;
  top:15px
}

.sidebar-label {
  font-size:11px;
  font-weight:800;
  color:#8a99ad;
  letter-spacing:1.5px;
  margin:0 0 13px 11px
}

.category-list {
  display:grid;
  gap:4px
}

.cat-btn {
  border:0;
  background:transparent;
  color:#51647e;
  text-align:left;
  width:100%;
  padding:12px 11px;
  display:flex;
  align-items:center;
  gap:11px;
  border-radius:11px;
  font-size:13px;
  font-weight:650
}

.cat-btn:hover {
  background:var(--soft)
}

.cat-btn.active {
  color:var(--blue);
  background:#eaf1ff
}

.cat-icon {
  width:23px;
  display:inline-grid;
  place-items:center;
  font-size:18px
}

.cat-count {
  margin-left:auto;
  background:#edf1f7;
  padding:2px 7px;
  border-radius:7px;
  font-size:11px;
  color:#6e7f95
}

.cat-btn.active .cat-count {
  background:#dce8ff;
  color:var(--blue)
}

.help-card {
  background:#f1f6ff;
  padding:21px;
  border-radius:15px;
  margin-top:36px;
  border:1px solid #e3edff
}

.help-card>span {
  font-size:25px
}

.help-card strong {
  display:block;
  margin:10px 0 4px
}

.help-card p {
  font-size:12px;
  color:var(--muted);
  margin:0 0 13px
}

.help-card a {
  color:var(--blue);
  font-weight:750;
  font-size:12px
}

.results-head {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:15px;
  margin-bottom:20px
}

.results-head h3 {
  font-size:20px;
  margin:0 0 3px
}

.results-head span {
  color:var(--muted);
  font-size:12px
}

.sort-select {
  display:flex;
  align-items:center;
  gap:8px;
  color:#7b8ba1;
  font-size:12px
}

.sort-select select {
  border:1px solid #e1e7f0;
  border-radius:9px;
  padding:9px;
  color:var(--ink);
  background:#fff;
  max-width:145px
}

.tool-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px
}

.tool-card {
  border:1px solid #e3eaf3;
  background:white;
  border-radius:var(--radius);
  padding:20px;
  display:flex;
  flex-direction:column;
  min-height:229px;
  box-shadow:0 4px 18px #0e2d5b06;
  transition:transform .2s,border-color .2s,box-shadow .2s
}

.tool-card:hover {
  transform:translateY(-4px);
  border-color:#b5caef;
  box-shadow:0 15px 32px #133a8514
}

.card-top {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px
}

.tool-icon {
  height:47px;
  width:47px;
  border-radius:12px;
  display:grid;
  place-items:center;
  background:#eaf2ff;
  font-size:23px
}

.cat-solar .tool-icon {
  background:#fff5d8
}

.cat-lighting .tool-icon {
  background:#fff0df
}

.cat-building .tool-icon {
  background:#e6f8ef
}

.cat-energy .tool-icon {
  background:#e7faf8
}

.cat-engineering .tool-icon {
  background:#f1eefe
}

.favorite-btn {
  border:0;
  background:transparent;
  font-size:23px;
  color:#a1abc0;
  padding:0 3px;
  line-height:1.2
}

.favorite-btn.is-favorite {
  color:#e4a331
}

.tool-card h4 {
  font-size:15px;
  line-height:1.4;
  margin:17px 0 8px
}

.tool-card p {
  font-size:12px;
  line-height:1.65;
  color:#75849a;
  margin:0;
  flex:1
}

.card-bottom {
  margin-top:18px;
  border-top:1px solid #edf0f6;
  padding-top:12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:5px
}

.card-bottom span {
  font-size:10px;
  color:#95a1b1;
  font-weight:700
}

.open-btn {
  border:0;
  background:none;
  color:var(--blue);
  font-size:12px;
  font-weight:800;
  padding:5px 0
}

.open-btn:hover {
  text-decoration:underline
}

.empty-state {
  text-align:center;
  padding:70px 20px;
  background:#f7faff;
  border-radius:16px
}

.empty-state span {
  font-size:40px
}

.empty-state p {
  color:var(--muted)
}

.empty-state .primary-btn {
  margin-top:10px
}

.bottom-banner {
  border-radius:20px;
  padding-top:33px;
  padding-bottom:33px;
  background:#132e65;
  color:white;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  margin-bottom:25px
}

.bottom-banner>div {
  padding-left:8px
}

.bottom-banner span {
  font-size:10px;
  color:#a3c7ff;
  letter-spacing:2px;
  font-weight:800
}

.bottom-banner h2 {
  font-size:25px;
  letter-spacing:-.5px;
  margin:7px 0
}

.bottom-banner p {
  max-width:550px;
  font-size:13px;
  color:#c8d8f2;
  line-height:1.7;
  margin:0
}

.secondary-btn.light {
  white-space:nowrap;
  margin-right:8px
}

.safety-note {
  font-size:12px;
  color:#687994;
  line-height:1.75;
  margin-bottom:34px
}

.footer {
  border-top:1px solid #edf0f6
}

.footer-inner {
  display:flex;
  justify-content:space-between;
  gap:20px;
  align-items:center;
  min-height:78px;
  color:#7b8aa0;
  font-size:12px
}

.footer a:hover {
  color:var(--blue)
}

.tool-dialog {
  width:min(760px,calc(100% - 22px));
  max-height:min(92vh,900px);
  border:0;
  border-radius:20px;
  padding:0;
  box-shadow:0 25px 100px #14233d77;
  color:var(--ink)
}

.tool-dialog::backdrop {
  background:#071a38aa;
  backdrop-filter:blur(3px)
}

.dialog-top {
  padding:25px 28px 18px;
  display:flex;
  justify-content:space-between;
  gap:22px;
  border-bottom:1px solid var(--line)
}

.dialog-top h2 {
  font-size:25px;
  margin:2px 0 7px;
  letter-spacing:-.6px
}

.dialog-top p {
  font-size:13px;
  color:var(--muted);
  line-height:1.65;
  margin:0
}

.dialog-kicker {
  color:var(--blue);
  font-size:10px;
  font-weight:800;
  letter-spacing:1.5px
}

.close-dialog {
  border:0;
  background:#f0f4fb;
  height:35px;
  width:35px;
  border-radius:9px;
  flex-shrink:0
}

.dialog-body {
  padding:24px 28px
}

.form-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:17px
}

.field-label {
  display:block;
  font-size:12px;
  font-weight:750;
  margin-bottom:7px
}

.field-wrap {
  position:relative
}

.field-wrap input,.field-wrap select {
  width:100%;
  height:46px;
  border:1px solid #dce5f2;
  background:#fff;
  border-radius:10px;
  padding:0 14px;
  color:var(--ink);
  outline:none
}

.field-wrap:focus-within input,.field-wrap:focus-within select {
  border-color:#779de7;
  box-shadow:0 0 0 3px #e7efff
}

.field-wrap input.with-unit {
  padding-right:60px
}

.field-unit {
  position:absolute;
  right:13px;
  top:13px;
  color:#8392a9;
  font-size:12px;
  pointer-events:none
}

.calculate-btn {
  width:100%;
  margin-top:22px;
  background:var(--blue);
  color:white
}

.calculate-btn:hover {
  background:#143a83
}

.result-pane {
  margin-top:23px;
  padding-top:19px;
  border-top:1px solid var(--line)
}

.result-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:12px
}

.result-heading span {
  font-size:11px;
  font-weight:850;
  color:var(--green);
  letter-spacing:1px
}

.result-heading button {
  border:0;
  background:none;
  color:var(--blue);
  font-size:12px;
  font-weight:750
}

.metrics-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px
}

.metric {
  padding:17px;
  background:#f0f6ff;
  border-radius:12px;
  min-width:0
}

.metric span {
  display:block;
  font-size:11px;
  color:#647996;
  margin-bottom:5px
}

.metric strong {
  font-size:20px;
  letter-spacing:-.5px;
  overflow-wrap:anywhere
}

.result-notes {
  margin-top:14px;
  background:#fff9eb;
  border:1px solid #f6e5b9;
  padding:15px 18px;
  border-radius:11px;
  font-size:12px;
  color:#745d33;
  line-height:1.65
}

.result-notes p {
  margin:0 0 8px
}

.result-notes p:last-child {
  margin-bottom:0
}

.result-actions {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin-top:17px
}

.action-btn {
  border:1px solid #d8e1ee;
  background:white;
  color:var(--blue);
  display:flex;
  justify-content:center;
  align-items:center;
  text-align:center;
  border-radius:10px;
  min-height:43px;
  font-weight:750;
  font-size:12px;
  padding:10px
}

.action-strong {
  background:#e8efff;
  border-color:#d2e1ff
}

.whatsapp-btn {
  color:#0a8354;
  background:#e8f9f0;
  border-color:#c8eedb
}

.dialog-foot {
  border-top:1px solid var(--line);
  padding:12px 28px;
  color:#8b98aa;
  font-size:11px;
  background:#fafcff
}

@media(max-width:1000px) {
  .tool-grid {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .hero-inner {
    grid-template-columns:1.4fr .8fr
  }
  .hero-visual {
    transform:scale(.78)
  }
}

@media(max-width:760px) {
  .shell {
    padding-left:17px;
    padding-right:17px
  }
  .topbar {
    min-height:67px
  }
  .header-links {
    gap:8px
  }
  .header-links>a:first-child {
    display:none
  }
  .hero-inner {
    display:block;
    min-height:unset;
    padding-top:47px;
    padding-bottom:53px
  }
  .hero h1 {
    font-size:38px
  }
  .hero-copy {
    font-size:14px
  }
  .hero-visual {
    display:none
  }
  .dashboard {
    padding-top:39px
  }
  .intro-row h2 {
    font-size:25px
  }
  .workspace {
    display:block
  }
  .sidebar {
    position:static;
    margin-bottom:23px
  }
  .sidebar-label {
    display:none
  }
  .category-list {
    display:flex;
    overflow:auto;
    padding-bottom:8px;
    scrollbar-width:thin
  }
  .cat-btn {
    width:auto;
    white-space:nowrap;
    border:1px solid #edf0f5;
    padding:10px 12px
  }
  .cat-count {
    display:none
  }
  .help-card {
    display:none
  }
  .results-head {
    align-items:flex-start
  }
  .bottom-banner {
    display:block;
    border-radius:0
  }
  .bottom-banner .light {
    margin-top:19px
  }
  .footer-inner {
    flex-wrap:wrap;
    padding-top:22px;
    padding-bottom:22px;
    min-height:unset
  }
  .dialog-top {
    padding:20px 18px 15px
  }
  .dialog-top h2 {
    font-size:21px
  }
  .dialog-body {
    padding:19px 18px
  }
  .dialog-foot {
    padding:12px 18px
  }
}

@media(max-width:480px) {
  .brand {
    font-size:18px
  }
  .brand-bolt {
    width:37px;
    height:37px;
    font-size:28px
  }
  .brand-sub {
    font-size:8px
  }
  .outline-btn {
    padding:9px 11px
  }
  .hero h1 {
    font-size:33px;
    letter-spacing:-1.3px
  }
  .hero-actions a {
    flex:1
  }
  .intro-row {
    align-items:flex-start
  }
  .count-pill {
    font-size:11px;
    padding:8px 10px
  }
  .tool-grid {
    grid-template-columns:1fr
  }
  .tool-card {
    min-height:185px
  }
  .form-grid,.metrics-grid,.result-actions {
    grid-template-columns:1fr
  }
  .sort-select {
    flex-direction:column;
    align-items:flex-end;
    gap:2px
  }
  .dialog-top h2 {
    font-size:20px
  }
  .tool-dialog {
    max-height:95vh
  }
}

@media print {
  body>*:not(main),main>*:not(.dashboard),.dashboard>*:not(.workspace),.workspace>*:not(.results-section),.results-section>*:not(#calculatorGrid),#calculatorGrid {
    display:none!important
  }
  .tool-dialog {
    position:static!important;
    display:block!important;
    width:100%;
    max-height:none;
    box-shadow:none;
    border-radius:0
  }
  .tool-dialog::backdrop {
    display:none
  }
  .close-dialog,.calculator-form,.result-actions,.result-heading button,.dialog-foot {
    display:none!important
  }
  .result-pane {
    display:block!important
  }
  .result-notes {
    break-inside:avoid
  }
  body {
    background:#fff
  }
}
