/* =====================================================================
   Rooftop Solar Planner: the same look as the Floor Plan Tool
   (apps/floorplan/public/app.css). Loaded after the page's own styles, so it only restyles: no ids, classes or
   behaviour change. Colours, cards, fields, buttons, tabs, tables, the step bar and the sticky Next bar match.
   ===================================================================== */

/* ---------- colours: the Floor Plan Tool's tokens, under Solar's names ---------- */
:root{
  --paper:#EEF1F4; --sheet:#FFFFFF; --ink:#1B2A41; --muted:#5B6778; --line:#D3DAE3; --grid:#E4E8EE; --field:#F7F9FB;
  --sun:#A6790C; --sun-soft:#F3E6BD; --accent-ink:#FFFFFF; --warn:#B5561B; --bad:#B3261E; --ok:#2E7D4F;
  --raised:#F1F4F7; --rowline:#E4E8EE; --menu:#FFFFFF; --menu-line:#D3DAE3;
}
:root:not([data-theme="light"]),:root[data-theme="dark"]{
  --paper:#14171E; --sheet:#1C2029; --ink:#EEF0F3; --muted:#A9B0BC; --line:#2F3542; --grid:#262B36; --field:#14171E;
  --sun:#E2B54A; --sun-soft:#3A3120; --accent-ink:#1A1406; --warn:#E39A62; --bad:#F08A80; --ok:#6FCF97;
  --raised:#242935; --rowline:#262B36; --menu:#242935; --menu-line:#3A4152;
}
:root[data-theme="light"]{
  --paper:#EEF1F4; --sheet:#FFFFFF; --ink:#1B2A41; --muted:#5B6778; --line:#D3DAE3; --grid:#E4E8EE; --field:#F7F9FB;
  --sun:#A6790C; --sun-soft:#F3E6BD; --accent-ink:#FFFFFF; --warn:#B5561B; --bad:#B3261E; --ok:#2E7D4F;
  --raised:#F1F4F7; --rowline:#E4E8EE; --menu:#FFFFFF; --menu-line:#D3DAE3;
}
html{scroll-padding-top:calc(96px + env(safe-area-inset-top,0px));scroll-padding-bottom:110px}
body{background:var(--paper)}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important}
.ic{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none;display:block}
.wrap{padding-block:16px 56px}
.page{gap:18px}

/* ---------- the step bar (Floor Plan: .progress) ---------- */
.top.tool-top{position:static;display:block;border:0;padding:0;margin:0 0 18px;background:none}
.progress.topnav{position:static;display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--sheet)}
.progress .stp{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;border:1px solid transparent;background:transparent;
  text-decoration:none;flex:1 1 200px;min-width:0;color:var(--muted);font:inherit}
.progress .stp:hover{border-color:var(--line)}
.progress .stp b{all:unset}
.progress .stp-n{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;flex:none;font:700 13px/1 var(--f-body);color:var(--muted)}
.progress .stp-n .tick{display:none;width:14px;height:14px}
.progress .stp-n.db{border-style:dashed}
.progress .stp-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.progress .stp-t > span{font:600 15px/1.2 var(--f-display);color:var(--muted)}
.progress .stp-t small{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.progress .stp[aria-current="page"]{border-color:color-mix(in srgb,var(--sun) 45%,transparent);background:color-mix(in srgb,var(--sun) 8%,transparent);color:var(--ink)}
.progress .stp[aria-current="page"] .stp-n{background:var(--sun);border-color:var(--sun);color:var(--accent-ink)}
.progress .stp[aria-current="page"] .stp-t > span{color:var(--sun)}
.progress .stp.done .stp-n{background:color-mix(in srgb,var(--ok) 15%,transparent);border-color:var(--ok);color:var(--ok)}
.progress .stp.done .stp-n b{display:none}
.progress .stp.done .stp-n .tick{display:block}
.progress .stp.done .stp-t > span{color:var(--ink)}
.progress .stp-line{flex:0 1 36px;height:2px;background:var(--line);min-width:12px}
.progress .stp-line.done{background:var(--ok)}
.progress .stp-gap{width:1px;align-self:stretch;background:var(--line);margin:4px 6px}
.progress .stp-db{flex:0 1 230px;margin:0;border-style:solid}
.progress .stp-db[aria-current="page"]{border-style:solid}
.progress .cloudbar{margin-left:4px}

/* ---------- cards ---------- */
section.sheet,aside.sheet,div.sheet,.out,.cards6 fieldset,.cards6>.col>fieldset,aside.inputs{border-radius:12px;border-color:var(--line);background:var(--sheet)}
section.sheet,aside.sheet,div.sheet,.out{padding:16px 18px}
.cards6 fieldset{padding:16px 18px;gap:10px 12px}
.sheet h2,.out h3{font:600 20px/1.2 var(--f-display);color:var(--ink)}
legend{font:600 18px/1.2 var(--f-display);color:var(--sun);margin-bottom:6px}
legend b{width:24px;height:24px;border-width:2px;font:700 12px/1 var(--f-body)}
.sub3,.subhead{color:var(--ink)}
.sheet .cap,.hint{color:var(--muted)}

/* ---------- fields: 40px boxes with rounded corners, the same everywhere ---------- */
input,select,textarea{border-radius:10px;background:var(--field);border:1px solid var(--line);color:var(--ink);font-size:14.5px;font-weight:500;padding:8px 12px;min-height:40px}
textarea{min-height:80px}
input[type=checkbox],input[type=radio],input[type=range]{min-height:0}
input[type=file]{min-height:40px;padding:6px 8px;font-size:13px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--sun);box-shadow:0 0 0 1px var(--sun)}
#pg-inputs input[type=text],#pg-inputs input[type=number],#pg-inputs input[type=search],#pg-inputs select{padding:8px 12px;font-size:14.5px;min-height:40px}
#pg-inputs label,label{font-size:13px;font-weight:500;color:var(--ink);gap:5px}
#pg-inputs .hint{font-size:12.5px}
input.invalid{border-color:var(--bad);outline:none;box-shadow:0 0 0 1px var(--bad)}
/* dense tables (walls, library, database) keep smaller boxes */
.wtbl input,.wtbl select,#lib input,#lib select,.dbt input,.dbt select,.obs-item input,.obs-item select{min-height:36px;padding:6px 10px;font-size:14px;border-radius:8px}
.wtbl select[data-wf=dir]{padding-right:4px}
::file-selector-button{font:600 13px var(--f-body);border-radius:8px;border:1px solid var(--line);background:var(--raised);color:var(--ink);padding:5px 10px;margin-right:10px;cursor:pointer}

/* ---------- buttons (Floor Plan: .btn2 / .primary / .big) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:10px;background:var(--raised);border:1px solid var(--line);color:var(--ink);font:600 14px/1.1 var(--f-body);padding:9px 14px;min-height:38px}
.btn:hover{border-color:var(--sun)}
.btn.primary{background:var(--sun);border-color:var(--sun);color:var(--accent-ink);font-weight:700}
.btn.primary:hover{filter:brightness(1.06)}
.btn[aria-pressed="true"]{background:color-mix(in srgb,var(--sun) 14%,transparent);border-color:color-mix(in srgb,var(--sun) 50%,transparent);color:var(--sun)}
.btn.small{font-size:13px;padding:6px 10px;min-height:32px;border-radius:8px}
.btn.big{padding:13px 22px;font-size:16px;font-weight:700;border-radius:10px}
.btn.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 60%,transparent);background:transparent}
.toolbar.vert .btn{justify-content:flex-start}
.fab{border-radius:10px;padding:10px 14px}
.linkbtn{color:var(--sun);font-weight:600}

/* ---------- tabs: Roof and panels, Database (Floor Plan: .tabs) ---------- */
#designTabs,#dbTabs{display:inline-flex;align-self:flex-start;gap:3px;padding:3px;margin:0;background:var(--sheet);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap}
#designTabs button,#dbTabs button{border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);padding:8px 16px;font:600 14.5px/1.1 var(--f-body);margin:0;min-height:38px;display:inline-flex;align-items:center;gap:6px}
#designTabs button:hover,#dbTabs button:hover{color:var(--ink)}
#designTabs button[aria-selected="true"],#dbTabs button[aria-selected="true"]{background:var(--raised);border-color:var(--line);color:var(--ink)}
#designTabs small{font-size:12px;padding:1px 7px;border-radius:99px;background:var(--raised);color:var(--muted);margin:0;font-weight:600}
#designTabs small:empty{display:none}
#designTabs button[aria-selected="true"] small{background:color-mix(in srgb,var(--sun) 18%,transparent);color:var(--sun)}
#designTabs{margin-top:0}
/* the smaller tabs inside a card stay underlined (Floor Plan: Walls sub-tabs) */
.subtabs:not(#designTabs):not(#dbTabs):not(.mini){border-bottom:1px solid var(--line)}
.subtabs:not(#designTabs):not(#dbTabs):not(.mini) button[aria-selected="true"]{color:var(--sun);border-bottom-color:var(--sun)}
.subtabs.mini button{border-radius:99px;padding:6px 14px;min-height:34px;background:var(--sheet)}
.subtabs.mini button[aria-selected="true"]{background:var(--sun);border-color:var(--sun);color:var(--accent-ink)}

/* ---------- tables ---------- */
.tablebox{border-radius:10px;border-color:var(--line)}
th{font-size:13px;text-transform:none;letter-spacing:0;font-weight:600;color:var(--muted);background:var(--sheet);border-bottom:1px solid var(--line)}
td{border-bottom:1px solid var(--rowline)}
.wtbl th{font-size:12.5px;letter-spacing:0}
.wtbl tr.hi td{background:color-mix(in srgb,var(--sun) 8%,transparent)}
.wtbl tr.hi td:first-child{box-shadow:inset 3px 0 0 var(--sun)}
tbody tr:hover > td{background:color-mix(in srgb,var(--ink) 3%,transparent)}
tr.grp td{color:var(--sun)}

/* ---------- the sticky Next bar (Floor Plan: .next-bar / .submit-bar) ---------- */
.next-bar{border-radius:12px;padding:12px 18px;border:1px solid color-mix(in srgb,var(--sun) 50%,transparent);background:var(--sheet);box-shadow:0 6px 24px rgba(0,0,0,.18)}
.next-bar strong{font:600 15px/1.25 var(--f-body);color:var(--sun)}
.next-bar .hint{font-size:13.5px}
.bar-btns{gap:10px}

/* ---------- results: stats strip, outputs list, drawings ---------- */
.stats{border-radius:12px;gap:1px}
.stat{padding:10px 14px}
.stat .v{font-size:21px}
.outnav{background:var(--sheet);border-radius:12px;padding:6px;gap:2px}
.outnav button{border-radius:8px;border:1px solid transparent;padding:9px 10px;font-size:14px}
.outnav button:hover{background:var(--raised)}
.outnav button[aria-selected="true"]{background:var(--raised);border-color:var(--line);box-shadow:none;color:var(--ink)}
.outnav button small{font-size:11px;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:1px 5px;letter-spacing:0}
.outnav .navgrp{border-radius:8px}
.sheetwrap,#plan,.draw svg{border-radius:10px}
.banner{border-radius:12px}

/* ---------- live previews and drawings sit on the same field-coloured box as the Floor Plan preview ---------- */
.walls-layout .prev{border-radius:12px;top:96px}
.planwrap,.draw{border-radius:10px}

/* ---------- menus, tooltips, pop-overs ---------- */
.reftip{border-radius:12px;border-color:var(--sun);background:var(--sheet)}
.reftip h4{color:var(--ink)}
.citylist{border-radius:12px;background:var(--menu);border-color:var(--menu-line);padding:6px}
.citylist li{border-radius:8px}
.citylist li[aria-selected="true"],.citylist li:hover{background:color-mix(in srgb,var(--sun) 14%,transparent)}
.pmenu,.floatpanel{border-radius:12px}
.sug{border-radius:10px}
.sug.sel{background:color-mix(in srgb,var(--sun) 10%,transparent)}
.obs-item{border-radius:10px;background:var(--field)}
.obsno{border-radius:9px 0 8px 0;color:var(--accent-ink)}
.chip{background:var(--raised)}
.tbedit{border-radius:10px}
.req{background:color-mix(in srgb,var(--sun) 18%,transparent);color:var(--sun)}
.sp-toast{border-radius:10px}
.alignbar,.pvbar{border-radius:10px;background:color-mix(in srgb,var(--sun) 10%,transparent)}

/* ---------- narrow screens ---------- */
@media (max-width:900px){
  .progress .stp-gap{display:none}
  .progress .stp-db{flex:1 1 100%}
}
@media (max-width:760px){
  .progress.topnav{gap:6px;padding:8px;flex-wrap:wrap}
  .progress .stp{flex:1 1 0;padding:8px 4px;gap:6px;flex-direction:column;align-items:center;text-align:center}
  .progress .stp-t small{display:none}
  .progress .stp-t > span{font-size:14px;line-height:1.15;white-space:normal}
  .progress .stp-line{display:none}
  .progress .stp-db{flex:1 1 100%;flex-direction:row;justify-content:center}
  .progress .cloudbar{flex:1 1 100%;justify-content:center;margin:0}
  /* the sticky Next bar: one compact row so it does not cover the form */
  .next-bar{padding:10px 12px;gap:8px;bottom:8px}
  .next-bar .hint{display:none}
  .next-bar strong{font-size:13.5px}
  .next-bar .bar-btns{display:flex;flex-wrap:nowrap;width:100%;gap:8px}
  .next-bar .bar-btns .btn{flex:1 1 0;min-width:0;white-space:nowrap;padding:11px 8px;font-size:14.5px}
  #designTabs,#dbTabs{display:flex;flex-wrap:nowrap;overflow-x:auto;align-self:stretch}
  #designTabs button,#dbTabs button{flex:1 0 auto;padding:8px 10px;font-size:14px}
}

/* grid columns may shrink below their widest content (wide tables scroll inside their own box): stops the Roof and panels page
   scrolling sideways on a phone */
.walls-layout > *,.plansplit > *,.outwrap > *,.cards6 > *{min-width:0}
/* under 1150px the roof editor and its preview stack (a later two-column rule in the page styles overrode this, which left the
   editor column 0px wide on tablets and phones) */
@media (max-width:1150px){.walls-layout{grid-template-columns:minmax(0,1fr)}.walls-layout .prev{position:static;order:-1}}

/* ---------- the project pill in the site header (as the Floor Plan Tool); the header is always dark ---------- */
.proj-pill{position:relative;display:inline-flex;align-items:center;gap:10px;padding:5px 8px 5px 14px;border:1px solid var(--line);border-radius:999px;background:var(--sheet);max-width:100%;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.site-header .proj-pill{--ink:#EEF0F3;--muted:#A9B0BC;--line:#2F3542;--sheet:#1C2029;--raised:#242935;--sun:#E2B54A;--menu:#242935;--menu-line:#3A4152;--bad:#F08A80;color:var(--ink);margin-right:.65rem}
.wrap ~ .proj-pill,body > .proj-pill{display:none}   /* until the header has mounted it */
.pp-dot{width:8px;height:8px;border-radius:50%;background:#6FCF97;flex:none}
.pp-name{font:600 14px var(--f-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.pp-state{color:var(--muted);font-size:13px;white-space:nowrap}
.pp-btn{background:none;border:1px solid transparent;color:var(--muted);padding:4px;min-width:28px;min-height:28px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.pp-btn:hover,.pp-btn[aria-expanded="true"]{color:var(--ink);border-color:var(--line)}
.pp-cbtn{display:inline-flex;align-items:center;gap:6px;background:none;border:1px solid var(--line);color:var(--ink);padding:5px 11px;border-radius:999px;font:600 13px/1 var(--f-body);cursor:pointer;white-space:nowrap;min-height:30px}
.pp-cbtn:hover{border-color:var(--sun);color:var(--sun)}
.pp-cbtn[hidden]{display:none}
.pp-cbtn svg{width:16px;height:16px}
.menu{position:absolute;z-index:1001;min-width:250px;background:var(--menu);border:1px solid var(--menu-line);border-radius:12px;padding:6px;box-shadow:0 16px 40px rgba(0,0,0,.45);display:flex;flex-direction:column;gap:2px}
.menu[hidden],.menu .cloudbar[hidden],.menu [hidden]{display:none!important}
.proj-menu{right:0;left:auto;top:calc(100% + 8px)}
.menu .cloudbar{display:flex;flex-direction:column;align-items:stretch;gap:2px;margin:0}
.menu-h{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:8px 10px 4px}
.menu-sep{display:block;height:1px;background:var(--menu-line);margin:4px 6px}
.menu [role="menuitem"]{display:flex;align-items:center;gap:10px;justify-content:flex-start;background:none;border:none;color:var(--ink);font:500 14px/1.2 var(--f-body);padding:8px 10px;text-align:left;width:100%;border-radius:8px;cursor:pointer}
.menu [role="menuitem"] .ic{color:var(--muted)}
.menu [role="menuitem"]:hover,.menu [role="menuitem"]:focus-visible{background:color-mix(in srgb,var(--sun) 14%,transparent);outline:none}
@media (max-width:760px){ .site-header .proj-pill{padding:4px 4px 4px 10px;gap:6px} .site-header .proj-pill .pp-name,.site-header .proj-pill .pp-state{display:none} .site-header .proj-pill .pp-cbtn span{display:none} .site-header .proj-pill .pp-cbtn{padding:5px 8px} }
@media (max-width:480px){ .site-header .proj-pill{display:none} }   /* no room beside the logo: Save and load stays on the results page */

/* ---------- the notes under the page: a quiet note card, clear of the sticky bar ---------- */
footer.note-foot{display:flex;gap:10px;align-items:flex-start;max-width:none;margin:22px 0 0;padding:12px 16px;border:1px solid var(--line);border-radius:12px;background:var(--raised);color:var(--muted);font-size:12.5px;line-height:1.55}
footer.note-foot .ic{color:var(--sun);margin-top:1px}
footer.note-foot p{margin:0;max-width:110ch}

/* ---------- the roof, obstruction and panel cards: a gap between them ---------- */
.walls-layout > div{display:flex;flex-direction:column;gap:16px;min-width:0}
