:root{--ink:#14202e;--text:var(--ink);--muted:#44566b;--muted-darker:#33465f;--line:#dfe7f0;--bg:#f4f7fa;--card:#fff;--brand:#0b5cab;--brand-2:#0e7bb8;--brand-dark:#084a8a;--accent:#c8102e;--ok:#1d7d4f;--warn:#b45309;
--shadow-sm:0 1px 2px rgba(16,35,62,.06),0 1px 1px rgba(16,35,62,.04);
--shadow:0 6px 24px rgba(16,35,62,.08),0 2px 6px rgba(16,35,62,.05);
--shadow-lg:0 18px 44px rgba(11,92,171,.14),0 4px 12px rgba(16,35,62,.08)}
*{box-sizing:border-box;margin:0;padding:0}
html{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;line-height:1.6;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{display:flex;flex-direction:column;min-height:100vh}
img,svg{max-width:100%;height:auto}
.wrap{max-width:1080px;margin:0 auto;padding:0 16px;width:100%}
main.wrap{flex:1;padding-top:14px;padding-bottom:48px}
p,li{max-width:72ch}
p{margin-bottom:.75em}
ul,ol{margin-bottom:.75em;padding-left:22px}
li{margin-bottom:.25em}
a{color:var(--brand)}
a:hover{color:var(--brand-dark)}
h1{font-size:clamp(1.5rem,4vw,1.9rem);line-height:1.25;margin:.6em 0 .4em;font-weight:700;letter-spacing:-.015em}
h2{font-size:1.25rem;margin:1.4em 0 .5em;font-weight:700;letter-spacing:-.01em}
h3{font-size:1.05rem;font-weight:650}
.sr-only,.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:#fff;padding:8px;z-index:99}

/* ---------- Header ---------- */
.site-header{background:rgba(255,255,255,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:12px 0;position:sticky;top:0;z-index:50}
.bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px}
.logo{display:inline-flex;align-items:center;line-height:0}
.logo img{display:block;height:auto;max-height:30px;width:auto;max-width:100%}
.hdr-search{display:flex;align-items:center;gap:6px;min-width:0}
.hdr-search input[type=search]{flex:1;padding:8px 12px;border:1px solid var(--line);border-radius:10px;font-size:.95rem;min-width:0;transition:border-color .15s,box-shadow .15s}
.hdr-search input[type=search]:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
button,.btn{background:linear-gradient(90deg,var(--brand),var(--brand-2));background-color:var(--brand);color:#fff;border:none;border-radius:10px;padding:8px 16px;font-size:.95rem;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block;transition:transform .16s ease,box-shadow .16s ease,filter .16s ease;box-shadow:var(--shadow-sm)}
button:hover,.btn:hover{background:var(--brand-dark);color:#fff;transform:translateY(-1px);box-shadow:var(--shadow)}
button:active,.btn:active{transform:translateY(0);box-shadow:var(--shadow-sm);filter:brightness(.96)}
.site-header nav{display:flex;align-items:center;gap:14px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.site-header nav a{font-size:.92rem;text-decoration:none;white-space:nowrap;padding:4px 2px}
.site-header nav .nav-auth{font-weight:600;color:var(--brand-dark)}
.site-header nav .nav-auth.nav-auth-cta{background:linear-gradient(90deg,var(--brand),var(--brand-2));color:#fff;border-radius:8px;padding:6px 14px;box-shadow:var(--shadow-sm)}
.site-header nav .nav-auth.nav-auth-cta:hover{background:var(--brand-dark);color:#fff;transform:translateY(-1px)}
.site-header nav .nav-auth-name{color:var(--brand-dark)}
.site-header nav .nav-auth-out{background:linear-gradient(90deg,var(--brand),var(--brand-2));color:#fff;border:none;border-radius:8px;padding:6px 14px;font-weight:600;font-size:.9rem;cursor:pointer;box-shadow:var(--shadow-sm)}
.site-header nav .nav-auth-out:hover{background:var(--brand-dark);color:#fff;transform:translateY(-1px)}

/* ---------- Breadcrumbs ---------- */
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:4px 8px;font-size:.85rem;color:var(--muted);padding:10px 0;margin:0}
.crumbs li+li::before{content:"›";margin-right:8px;color:var(--muted)}

/* ---------- Hero ---------- */
.hero{text-align:center;padding:34px 0 10px}
.hero h1{font-size:clamp(1.6rem,5vw,2.1rem)}
.hero .lede{margin-left:auto;margin-right:auto}
.hero .micro{margin-left:auto;margin-right:auto}
.big-search{display:flex;gap:8px;max-width:620px;margin:14px auto}
.big-search input{flex:1;padding:13px 16px;border:1.5px solid var(--line);border-radius:12px;font-size:1rem;min-width:0;transition:border-color .15s,box-shadow .15s}
.big-search input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.micro{color:var(--muted);font-size:.83rem}
.publine{color:var(--muted);font-size:.85rem;margin-bottom:1em}

/* ---------- Stats ---------- */
.stats-row{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}
.stat{flex:1 1 150px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;text-align:center;box-shadow:var(--shadow-sm)}
.stat-v{font-size:1.35rem;font-weight:800;color:var(--brand-dark)}
.stat-l{font-size:.82rem;color:var(--muted)}

/* ---------- Cards & grids ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.card{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:14px;padding:16px;text-decoration:none;display:block;box-shadow:var(--shadow-sm);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
a.card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#c9d8ea}
a.card:focus-visible{outline:3px solid rgba(11,92,171,.55);outline-offset:2px}
.card p{color:var(--muted);font-size:.9rem;margin-top:4px}
.chip-list{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0}
.chip-list a{display:inline-block;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:5px 13px;text-decoration:none;font-size:.9rem;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.chip-list a:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm);border-color:#c9d8ea}
.chip-list a:focus-visible{outline:3px solid rgba(11,92,171,.55);outline-offset:2px}
.state-grid{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;padding:0}
.state-grid a{display:flex;justify-content:space-between;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;text-decoration:none;font-size:.93rem;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.state-grid a:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm);border-color:#c9d8ea}
.state-grid a:focus-visible{outline:3px solid rgba(11,92,171,.55);outline-offset:2px}
.state-grid span{color:var(--muted);font-size:.8rem;white-space:nowrap}

/* ---------- Tables ---------- */
.tbl{width:100%;border-collapse:separate;border-spacing:0;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;font-size:.93rem;margin:14px 0;box-shadow:var(--shadow-sm)}
.tbl th,.tbl td{padding:11px 14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.tbl thead th{background:#e8eef6;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--brand-dark);border-bottom:1px solid #d3e0ee}
.tbl tbody tr:nth-child(even){background:#f7fafc}
.tbl tbody tr:hover{background:#eef5fc}
.tbl tbody tr:last-child td{border-bottom:none}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.kv th{width:38%;color:var(--muted);font-weight:600}

/* ---------- Badges ---------- */
.badge{display:inline-block;font-size:.68rem;font-weight:700;border-radius:999px;padding:3px 10px;vertical-align:middle;margin-left:6px;letter-spacing:.02em;line-height:1}
.badge-pb8{background:#e5effb;color:#0b5cab;border:1px solid #c9dcf2}.badge-ph{background:#e2f4ea;color:#1d7d4f;border:1px solid #bfe6cf}
.badge-lihtc{background:#fdf1e2;color:#b45309;border:1px solid #f0d9b0}.badge-prac{background:#f3e8fb;color:#7645b5;border:1px solid #e0c9f0}
.badge-s236{background:#eee;color:#444;border:1px solid #d8d8d8}

/* ---------- Columns / FAQ ---------- */
.two-col{columns:2;gap:28px;padding-left:20px}
.link-cols{columns:3;gap:22px;padding-left:20px;font-size:.93rem}
.letter-group h3{margin-top:14px;color:var(--brand-dark)}
.faq details{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:8px;box-shadow:var(--shadow-sm);transition:box-shadow .15s ease}
.faq details:hover{box-shadow:var(--shadow)}
.faq summary{cursor:pointer;font-weight:600}
.partner{background:#fffdf3;border:1px dashed #d9c98a;border-radius:14px;padding:14px 16px;margin:22px 0;position:relative;box-shadow:var(--shadow-sm)}
.partner-tag{position:absolute;top:-10px;right:12px;background:#d9c98a;color:#4d3f00;font-size:.68rem;font-weight:700;padding:2px 9px;border-radius:999px;letter-spacing:.04em}
.steps{padding-left:22px}
.apply-box{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:6px 18px 16px;margin:20px 0;box-shadow:var(--shadow-sm)}
.trust ul,.related-guides ul{padding-left:22px}
.attribution{margin-top:40px;border-top:1px solid var(--line);padding-top:12px}
.pagination{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}
.pagination a,.pagination strong{border:1px solid var(--line);border-radius:10px;padding:4px 11px;background:var(--card);text-decoration:none;font-size:.9rem;transition:transform .15s ease,box-shadow .15s ease}
.pagination a:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}

/* ---------- Footer ---------- */
.site-footer{background:#101b29;color:#c9d5e3;margin-top:auto}
.site-footer .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:22px;padding:36px 16px 12px}
.site-footer h2{font-size:.95rem;color:#fff}
.site-footer a{color:#9fc2ea;text-decoration:none;font-size:.9rem}
.site-footer a:hover{color:#cfddf1;text-decoration:underline;text-underline-offset:3px}
.site-footer ul{list-style:none;padding:0;margin:0}
.site-footer li{margin:5px 0}
.legal{border-top:1px solid #22334a;padding:18px 16px 30px;font-size:.78rem;color:#8fa3ba}
.legal strong{color:#c9d5e3}

/* ---------- Forms ---------- */
.contact-form{max-width:560px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin:14px 0;box-shadow:var(--shadow-sm)}
.contact-form label{display:block;margin:0 0 14px;font-weight:600;font-size:.92rem}
.contact-form label .micro{font-weight:400}
.contact-form input,.contact-form select,.contact-form textarea{display:block;width:100%;margin-top:6px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;font-weight:400;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.contact-form textarea{min-height:140px;resize:vertical}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.contact-form button{margin-top:2px;padding:10px 22px}
.form-ok{background:#e9f7ef;border:1px solid #bfe6cf;color:#166534;border-radius:10px;padding:10px 14px;margin:12px 0;font-weight:600;font-size:.92rem}
.field-hint{display:block;background:#f4f7fb;border:1px solid #dbe4ee;border-left:3px solid #6b8fb5;color:#48647a;border-radius:8px;padding:8px 11px;margin:6px 0 0;font-weight:400;font-size:.8rem;line-height:1.45}
.ext{font-size:.85rem}
.h1-sub{display:block;font-size:.95rem;color:var(--muted);font-weight:500;margin-top:4px}
.btn-ghost{background:transparent;color:var(--brand);border:1px solid var(--brand);box-shadow:none}
.btn-ghost:hover{background:var(--brand);color:#fff;box-shadow:var(--shadow-sm)}
.btn-sm{font-size:.86rem;padding:8px 14px;border-radius:9px;line-height:1.2}
.btn-primary{background:linear-gradient(90deg,var(--brand),var(--brand-2));background-color:var(--brand);color:#fff}
.demand-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 2px}
.demand-actions .btn{min-height:38px;display:inline-flex;align-items:center;justify-content:center}
.demand-actions .btn-ghost{background:#fff;border-color:var(--line);color:var(--brand-dark)}
.demand-actions .btn-ghost:hover{background:var(--brand);border-color:var(--brand);color:#fff}
.claimbox{background:var(--card);border:1px dashed #c7d3e0;border-radius:14px;padding:18px 20px;margin:22px 0;box-shadow:var(--shadow-sm)}
.claimbox-title{font-weight:800;color:var(--brand-dark);margin-bottom:6px}
.claimbox-body{font-size:.93rem;color:var(--muted);margin-bottom:14px;max-width:none}
.report-box{background:var(--card);border:1px solid var(--line);border-radius:14px;margin:22px 0;box-shadow:var(--shadow-sm);overflow:hidden}
.report-toggle{cursor:pointer;font-size:.95rem;font-weight:700;color:var(--brand-dark);padding:15px 22px 15px 34px;user-select:none;list-style:none;position:relative}
.report-toggle::-webkit-details-marker{display:none}
.report-toggle::before{content:"\203A";position:absolute;left:14px;top:50%;transform:translateY(-50%) rotate(0deg);color:var(--brand);font-weight:700;transition:transform .15s ease}
.report-box details[open] .report-toggle::before{transform:translateY(-50%) rotate(90deg)}
.report-toggle:hover{color:var(--brand)}
.report-box details[open] .report-toggle{border-bottom:1px solid var(--line)}
.report-form{padding:16px 22px 20px}
.report-form .micro{margin:0 0 4px;max-width:none;line-height:1.5}
.report-form label{display:block;margin-top:14px;font-size:.88rem;font-weight:600;color:var(--text)}
.report-form label .micro{display:inline;color:var(--muted);font-weight:400}
.report-form select,.report-form input,.report-form textarea{display:block;width:100%;margin-top:6px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;font-weight:400;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.report-form select:hover,.report-form input:hover,.report-form textarea:hover{border-color:#c3d2e4}
.report-form select:focus,.report-form input:focus,.report-form textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.report-form textarea{resize:vertical;min-height:64px}
.report-form button[type=submit]{margin-top:16px;padding:10px 22px}

/* ---------- Availability alert capture ---------- */
.alert-box{background:var(--card);border:1px solid var(--line);border-radius:14px;margin:22px 0;box-shadow:var(--shadow-sm);overflow:hidden}
.alert-toggle{cursor:pointer;font-size:.95rem;font-weight:700;color:var(--brand-dark);padding:16px 22px;user-select:none;list-style:none;position:relative}
.alert-toggle::-webkit-details-marker{display:none}
.alert-toggle:hover{color:var(--brand)}
.alert-toggle::before{content:"\203A";position:absolute;left:8px;top:50%;transform:translateY(-50%) rotate(0deg);color:var(--brand);font-weight:700;transition:transform .15s ease}
.alert-box details[open] .alert-toggle::before{transform:translateY(-50%) rotate(90deg)}
.alert-toggle{padding-left:34px}
.alert-box details>p.micro,.alert-box details>p{padding:0 22px 4px;margin:0 0 4px;line-height:1.55}
.alert-box details>p:first-of-type{padding-top:2px}
.alert-form{padding:8px 22px 20px;border-top:1px solid var(--line)}
.alert-form .micro{margin-bottom:12px;max-width:none;padding:0}
.alert-form label{display:block;margin-top:12px;font-size:.88rem;font-weight:600;color:var(--text)}
.alert-form input[type=email]{width:100%;margin-top:4px;padding:9px 11px;border-radius:8px;border:1px solid var(--line);font-size:.93rem}
.alert-consent{display:flex;align-items:flex-start;gap:8px;font-weight:500;font-size:.85rem;color:var(--muted)}
.alert-consent input{width:16px;height:16px;margin-top:2px;flex:0 0 auto}
.dash-form label.alert-consent,.alert-form label.alert-consent,.funnel-box label.alert-consent{display:flex;align-items:flex-start;gap:8px;margin-bottom:10px;font-weight:500;font-size:.85rem;color:var(--muted);line-height:1.45}
.consent-block{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:8px 0 4px;background:#fbfcfe}
.consent-block .alert-consent{margin-bottom:8px;min-height:22px}
.consent-block .alert-consent:last-child{margin-bottom:0}
.consent-block .alert-consent input{width:18px;height:18px;margin-top:2px;flex:0 0 auto;cursor:pointer}
  .consent-block .alert-consent{font-size:.72rem;line-height:1.35;color:var(--muted)} .consent-block .consent-text{flex:1;min-width:0;display:block;line-height:1.4} .consent-block a{color:var(--muted);text-decoration:underline}
@media (max-width:560px){.consent-block{padding:10px 10px}.consent-block .alert-consent{font-size:.7rem;line-height:1.35}}
.dash-form label.alert-consent input,.alert-form label.alert-consent input,.funnel-box label.alert-consent input{width:16px;height:16px;margin-top:3px;flex:0 0 auto;display:inline-block}
.alert-form button[type=submit]{margin-top:12px}
/* ---------- Qualify widget ---------- */
.qualify-h1{font-size:1.7rem;line-height:1.15;margin:0 0 10px;letter-spacing:-.02em}
.qualify-h3{font-size:1.3rem;line-height:1.25;margin:0 0 10px;letter-spacing:-.01em}
.qualify-grid{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:12px;align-items:end;margin:18px 0 10px}
.qualify-grid label{display:block;font-size:.9rem;font-weight:600;color:var(--text);margin-bottom:0}
.qualify-grid input,.qualify-grid select{display:block;width:100%;margin-top:6px;padding:12px 14px;border-radius:10px;border:1px solid var(--line);font-size:1rem;font-family:inherit;background:#fff;transition:border-color .15s,box-shadow .15s}
.qualify-grid input:focus,.qualify-grid select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.12)}
.qualify-grid .btn,.qualify-grid .btn-primary{align-self:end;padding:12px 22px;margin:0;font-size:1rem;white-space:nowrap}
.qualify-privacy{color:var(--muted);margin:8px 0 0;font-size:.85rem;line-height:1.4}
.qualify-out{margin-top:18px}
.qualify-empty{color:var(--muted);padding:12px 0}
.qualify-has-results .qualify-out{margin-top:0}
#qualify-results-heading{font-size:1.2rem;margin:12px 0 8px}
.qualify-list{display:flex;flex-direction:column;gap:6px;margin:6px 0 14px}
.qualify-card{display:block;border:1px solid var(--line);border-radius:10px;padding:10px 14px;text-decoration:none;color:var(--text);transition:border-color .15s,background .15s}
.qualify-card:hover{border-color:var(--brand);background:#f8faff}
.qualify-card strong{display:block;font-size:.95rem}
.qualify-card-meta{display:block;font-size:.83rem;color:var(--muted);margin:2px 0 4px}
.micro-badge{display:inline-block;font-size:.68rem;background:#e8edf5;color:var(--muted-darker);padding:1px 7px;border-radius:99px;margin:2px 2px 0 0;white-space:nowrap}
.qualify-guide-list{list-style:none;padding:0;margin:6px 0 14px}
.qualify-guide-list li{margin:4px 0}
.qualify-guide-list a{font-size:.93rem}
.qualify-income{margin:16px 0;border:1px dashed var(--line);border-radius:12px;padding:2px 16px}
.qualify-income summary{cursor:pointer;font-weight:600;font-size:.9rem;padding:8px 0}
.qualify-income-body{padding:0 0 12px}
.qualify-income-body label{display:block;font-size:.88rem;font-weight:600;color:var(--text);margin-top:8px}
.qualify-income-body input,.qualify-income-body select{display:block;width:100%;margin-top:4px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);font-size:.93rem;font-family:inherit}
.qualify-income-body .btn{margin-top:10px}
.qi-out .calc-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;font-size:.88rem}
.qi-out .calc-row strong{font-size:.93rem}
/* Income-limit eligibility bands in qualify widget */
.band-el{color:#1a6f3e;background:#e7f5ed;padding:2px 8px;border-radius:6px}
.band-vl{color:#7c5b00;background:#fff7d6;padding:2px 8px;border-radius:6px}
.band-l{color:#205488;background:#e3eefc;padding:2px 8px;border-radius:6px}
.band-over{color:#822e2e;background:#fce9e9;padding:2px 8px;border-radius:6px}

/* ---------- Qualify flow completion (help office + next steps) ---------- */
.qualify-complete{margin-top:28px;padding-top:20px;border-top:2px solid var(--line)}
.qualify-results-section+.qualify-complete{margin-top:4px}
.qualify-complete-heading{font-size:1.05rem;margin-bottom:6px}
.qualify-help-label{display:block;font-size:.9rem;margin-bottom:8px;color:var(--text)}
.qualify-help-card{border-color:var(--brand);border-left:4px solid var(--brand);background:#f8faff}
.qualify-help-details{margin:8px 0 16px;border:1px solid var(--line);border-radius:10px;padding:4px 14px 8px}
.qualify-help-details summary{cursor:pointer;font-weight:600;font-size:.88rem;color:var(--brand);padding:6px 0}
.qualify-help-steps{padding-left:20px;margin:6px 0}
.qualify-help-steps li{margin:6px 0;font-size:.88rem}
.qualify-help-steps li strong{color:var(--text)}
.qualify-help-secondary{margin:16px 0 8px}
.qualify-help-links{list-style:none;padding:0;margin:4px 0}
.qualify-help-links li{margin:6px 0;font-size:.88rem}
.qualify-help-links a{font-weight:600}
.qualify-help-footer{font-size:.75rem;color:var(--muted);margin-top:12px;max-width:none}
.qualify-help-footer strong{color:var(--muted);font-weight:700}

/* ---------- Featured card / promoted ---------- */
.featured-card{position:relative;border:1px solid var(--line);border-radius:14px;padding:18px 20px 20px;margin:22px 0;background:linear-gradient(180deg,#f8fbf9,#f2f8f4);box-shadow:var(--shadow-sm)}
.featured-title{font-weight:800;font-size:1.02rem;margin-bottom:4px;padding-top:6px}
.featured-sub{font-size:.9rem;color:var(--muted);margin-bottom:14px}
.promoted{position:relative;display:flex;align-items:center;gap:16px;flex-wrap:wrap;border:1px solid var(--line);border-radius:14px;padding:16px 18px 18px;margin:16px 0;background:linear-gradient(180deg,#fbfdff,#f4f8fd);box-shadow:var(--shadow-sm)}
.promoted-upsell{background:linear-gradient(180deg,#fffaf3,#fdf3e3);border-color:#ecd9b8}
.promoted-body{flex:1;min-width:220px;padding-top:8px}
.promoted-title{font-weight:800;font-size:1.02rem;margin-bottom:2px}
.promoted-title a{text-decoration:none;color:var(--ink)}
.promoted-title a:hover{color:var(--brand)}
.promoted-sub{font-size:.85rem;color:var(--muted)}
.promoted .btn-sm,.featured-card .btn{padding:7px 14px;font-size:.85rem;white-space:nowrap}
.sponsored-tag{display:inline-block;position:static;margin-bottom:8px;background:#f5e9c3;color:#6b5800;border:1px solid #e3d391;font-size:.68rem;font-weight:700;padding:2px 10px;border-radius:999px;letter-spacing:.04em;text-transform:uppercase}
.partner .sponsored-tag{position:absolute;top:-10px;right:12px;background:#d9c98a;color:#4d3f00;margin-bottom:0;text-transform:none}

/* ---------- Promoted leaderboard stack (5-slot pie rotation) ---------- */
.promoted-stack{display:block;padding:14px 16px}
.promoted-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.promoted-head .sponsored-tag{margin-bottom:0}
.promoted-note{font-size:.75rem;color:var(--muted)}
.promoted-card{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:8px 0;background:#fff;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.promoted-card:hover{border-color:#c9d8ea;box-shadow:var(--shadow-sm);transform:translateY(-1px)}
.promoted-card.promoted-lead{border-color:var(--brand);border-width:2px;box-shadow:var(--shadow);background:linear-gradient(180deg,#f2f8ff,#fff 55%)}
.promoted-rank{flex:0 0 auto;width:28px;height:28px;border-radius:50%;background:#eef3f8;color:var(--muted);font-weight:800;font-size:.85rem;display:flex;align-items:center;justify-content:center}
.promoted-card.promoted-lead .promoted-rank{background:linear-gradient(90deg,var(--brand),var(--brand-2));color:#fff}

/* ---------- Plans (advertise inherits, refined here) ---------- */
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:14px 0}
.card.plan{display:flex;flex-direction:column;border-left:4px solid var(--brand)}
.card.plan-hot{border-left-color:var(--accent);position:relative;border-color:var(--brand);border-width:2px}
.card.plan-hot::after { content: none; }  /* bubble rendered by advertise.css .plan-hot::before */
.card.plan ul{list-style:none;padding:0;margin:0 0 14px;max-width:none}
.card.plan li{font-size:.9rem;color:var(--muted);margin:4px 0}
.card.plan .btn{margin-top:auto;text-align:center}
.plan-price{font-size:2rem;font-weight:800;color:var(--brand-dark);margin:4px 0 10px}
.plan-price span{font-size:1rem;color:var(--muted);font-weight:500}
.bid-form .bid-plans{display:flex;gap:12px;margin:8px 0 14px}
.bid-form .bid-plan{flex:1;max-width:220px}
.bid-form .bid-plan span{display:block;border:1px solid var(--line);border-radius:12px;padding:12px;font-size:.95rem;text-align:center;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.bid-form .bid-plan input{position:absolute;opacity:0}
.bid-form .bid-plan input:checked + span{border-color:var(--brand);border-width:2px;padding:11px;box-shadow:0 0 0 2px rgba(11,92,171,.15);font-weight:600}
.bid-form .bid-property{margin:10px 0}
.bid-form .bid-property input{width:100%;max-width:460px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font:inherit}
.bid-form .bid-property input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.bid-total-amount{font-size:1.3rem;color:var(--ok)}
.bid-form .btn-primary{margin-top:6px}

/* ---------- Calculators / misc ---------- */
.sho-calc{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--ok);border-radius:14px;padding:14px 16px;margin:22px 0;box-shadow:var(--shadow-sm)}
.calc-title{margin-top:0}
.calc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:10px 0}
.calc-grid label{font-size:.85rem;font-weight:600;display:flex;flex-direction:column;gap:4px}
.calc-grid input,.calc-grid select{padding:8px 10px;border:1px solid var(--line);border-radius:10px;font:inherit;font-weight:400}
.calc-grid input:focus,.calc-grid select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.c-out{margin-top:10px}
.calc-row{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:.95rem}
.calc-row strong{color:var(--ok)}
.calc-note{font-size:.83rem;color:var(--muted);padding-top:8px}

/* ---------- Global focus visibility ---------- */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid rgba(11,92,171,.55);outline-offset:2px;border-radius:6px}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important;transform:none!important}
}

/* ---------- Responsive ---------- */
@media(max-width:900px){
  .bar{grid-template-columns:auto 1fr;gap:12px}
  .site-header nav{grid-column:1/-1;justify-content:center;width:100%;gap:12px}
  .logo{justify-content:flex-start}
  .logo img{max-height:28px}
  .link-cols{columns:2}
}
@media(max-width:640px){
  .bar{display:flex;flex-direction:column;align-items:stretch;gap:10px}
  .logo{justify-content:center}
  .logo img{max-height:26px;margin:0 auto}
  .hdr-search{width:100%;min-width:auto}
  .site-header nav{justify-content:flex-start;gap:10px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .site-header nav a{font-size:.9rem}
  .hero{padding:24px 0 8px}
  .big-search{flex-direction:column}
  .stats-row{gap:8px}
  .stat{flex:1 1 45%;min-width:140px}
  .cards{grid-template-columns:1fr}
  .two-col{columns:1}
  .link-cols{columns:1}
  .site-footer .cols{grid-template-columns:1fr}
  .tbl:not(.kv){display:block;overflow-x:auto;white-space:nowrap}
  .tbl.kv,.kv{white-space:normal}
  .promoted-card{flex-wrap:wrap}

}
/* ---------- Dashboard (management panel) ---------- */
.dash{max-width:900px}
.dash-card{padding:22px 24px}
/* Setup claim export - the activation checklist is the first card an agency reads, so it gets more room than a standard card, including extra bottom room so the last line of the checklist does not sit against the edge. Kept as a class rather than an inline padding so the mobile rules still apply. */
.dash-card-roomy{padding:30px 32px 40px}
@media(max-width:760px){.dash-card-roomy{padding:20px 16px 32px}}
.dash-tabs{display:flex;justify-content:center;gap:8px;margin-bottom:16px}
.dash-tab{flex:1;max-width:200px;background:#eef3f8;color:var(--ink);font-weight:600;border-radius:10px;padding:10px 12px;text-align:center;cursor:pointer;border:1px solid transparent}
.dash-tab.is-active{background:var(--card);border-color:var(--brand);color:var(--brand-dark);box-shadow:var(--shadow-sm)}

.dash-role{border:none;padding:0;margin:0 0 18px}
.dash-role legend{font-weight:800;font-size:.95rem;margin-bottom:4px;letter-spacing:-.01em}
.dash-role > p.micro{margin:0 0 12px}
.role-card{display:flex;gap:12px;align-items:flex-start;cursor:pointer;border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:10px;background:var(--card);transition:border-color .15s,box-shadow .15s,background .15s,transform .15s}
.role-card:hover{border-color:var(--brand);background:#f7fbfe;transform:translateY(-1px)}
.role-card:has(input:checked){border-color:var(--brand);background:linear-gradient(180deg,#f3f9ff,#eaf3fb);box-shadow:0 0 0 3px rgba(11,92,171,.14),var(--shadow-sm)}
.role-card:has(input:checked) .role-card-body strong{color:var(--brand-dark)}
.dash-form .role-card input{width:18px;height:18px;margin:2px 0 0;padding:0;border:none;border-radius:50%;background:none;flex:none;accent-color:var(--brand);display:inline-block;box-sizing:border-box}
.role-card-body{flex:1}
.role-card-body strong{display:block;font-size:.96rem;color:var(--ink)}
.role-card-body span{display:block;font-weight:400;color:var(--muted);font-size:.87rem;margin-top:3px;line-height:1.45}
.dash-form label{display:block;margin-bottom:14px;font-weight:600;font-size:.92rem}
.dash-form input,.dash-form select,.dash-form textarea{display:block;width:100%;margin-top:6px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;font-weight:400;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.dash-form input:focus,.dash-form select:focus,.dash-form textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.dash-form .btn{margin-top:4px}
/* Themed fallback for bare form controls rendered in dashboard + admin panels
   (admin, case worker, manager) that are not wrapped in .dash-form. Covers
   both .apply-box cards and the admin tab body (search boxes like #claims-q). */
.apply-box select,.apply-box input[type=text],.apply-box input[type=email],.apply-box input[type=tel],.apply-box input[type=url],.apply-box input[type=number],.apply-box input[type=date],.apply-box input[type=search],.apply-box input[type=password],.apply-box textarea,
#admin-tab-body select,#admin-tab-body input[type=text],#admin-tab-body input[type=email],#admin-tab-body input[type=tel],#admin-tab-body input[type=url],#admin-tab-body input[type=number],#admin-tab-body input[type=date],#admin-tab-body input[type=search],#admin-tab-body input[type=password],#admin-tab-body textarea{display:block;width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;font-size:.9rem;font-weight:400;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.apply-box select:focus,.apply-box input:focus,.apply-box textarea:focus,#admin-tab-body select:focus,#admin-tab-body input:focus,#admin-tab-body textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.apply-box input[type=checkbox],.apply-box input[type=radio],#admin-tab-body input[type=checkbox],#admin-tab-body input[type=radio]{width:auto;padding:0;border:none;background:none;accent-color:var(--brand)}
.lead-status-sel{padding:7px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;font:inherit;font-size:.85rem;font-weight:600;color:var(--ink);cursor:pointer}
.demand-filter select{padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:#fff;font:inherit;font-size:.9rem;font-weight:600;color:var(--ink);width:auto}
.demand-filter input{border:1px solid var(--line);border-radius:9px;padding:8px 11px;font:inherit;font-size:.9rem;font-weight:400;color:var(--ink)}
.demand-filter input:focus,.demand-filter select:focus,.lead-status-sel:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.leads-empty{padding:12px;color:var(--muted);font-size:.9rem;line-height:1.55}
.two-col-form{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.two-col-form .full{grid-column:1/-1}
.dash-err{display:block;background:#fdecec;border:1px solid #f0c2c2;border-left:4px solid var(--accent);color:#8f1a1a;border-radius:10px;padding:11px 14px;margin:12px 0;font-weight:600;font-size:.9rem;line-height:1.5}
.dash-err::before{content:"!";display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;background:var(--accent);color:#fff;font-weight:800;font-size:.68rem;line-height:1;margin:0 9px 0 0;vertical-align:-3px}
.dash-err:empty{display:none}
.dash-err a{color:#8f1a1a;text-decoration:underline}
.form-ok::before{content:"\2713";display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;background:#1d7d4f;color:#fff;font-weight:800;font-size:.7rem;line-height:1;margin:0 9px 0 0;vertical-align:-3px}
.form-ok:empty{display:none}
.dash-form input:user-invalid,.dash-form select:user-invalid,.dash-form textarea:user-invalid{border-color:#e0a3a3;background:#fffafa}
.dash-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:.8rem;margin:16px 0}
.dash-divider::before,.dash-divider::after{content:"";flex:1;height:1px;background:var(--line)}
.btn-google{width:100%;justify-content:center;display:inline-flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);color:#3c4043;box-shadow:var(--shadow-sm);font-weight:600;padding:11px 16px;border-radius:10px;transition:background .15s,box-shadow .15s,border-color .15s}
.btn-google:hover{background:#f7fafe;color:#202124;border-color:#dadce0;box-shadow:0 1px 6px rgba(32,33,36,.12)}
.btn-google .g-logo{width:18px;height:18px;flex:none;display:inline-block}
.btn-google svg{display:block}
.dash-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.dash-list{margin:12px 0}
.dash-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between;border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:8px;background:#fff}
/* A .dash-row is usually a plain <div>, but the claim-result rows are
   <button>s. site.css's button:hover would then paint them dark blue and
   turn the muted .micro city/state dark-on-dark. Only the button form
   hovers, and it gets a light blue like .clients-row, so every child stays
   readable. (0,2,1) out-specifies button:hover (0,1,1). */
button.dash-row:hover{background:#e8f1fa;color:inherit;transform:none}
.dash-status{display:inline-block;font-size:.68rem;font-weight:700;border-radius:999px;padding:2px 9px;text-transform:uppercase;letter-spacing:.03em;margin-left:6px}
.dash-status.live{background:#e2f4ea;color:#1d7d4f}.dash-status.paused{background:#fdf1e2;color:#b45309}
.dash-actions{display:flex;gap:10px;margin-top:6px}
@media(max-width:700px){.dash-grid{grid-template-columns:1fr}.two-col-form{grid-template-columns:1fr}}
/* ---------- Estimator widgets (UA + rent-share): grid form layout ---------- */
.ua-grid,.rs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:12px 0}
.ua-grid label,.rs-grid label{display:block;font-size:.88rem;font-weight:600}
.ua-grid input,.ua-grid select,.rs-grid input{display:block;width:100%;margin-top:4px;padding:9px 11px;border-radius:8px;border:1px solid var(--line);font-size:.93rem;box-sizing:border-box}
.ua-utils{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:6px 14px;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:12px 0}
.ua-utils legend{font-size:.88rem;font-weight:600;padding:0 6px}
.ua-utils label{display:flex;align-items:center;gap:8px;font-size:.88rem;font-weight:400}
.ua-app .btn,.rs-app .btn{margin-top:12px}
.ua-out,.rs-out{margin-top:12px}

/* ---------- Repair-request letter generator ---------- */
.ua-grid textarea{display:block;width:100%;margin-top:4px;padding:9px 11px;border-radius:8px;border:1px solid var(--line);font-size:.93rem;font-family:inherit;box-sizing:border-box;resize:vertical}
.ua-full{display:block;margin:12px 0;font-size:.88rem;font-weight:600}
.ua-out textarea{width:100%;box-sizing:border-box;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem;line-height:1.5;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;resize:vertical}


/* ---------- Verified badge ---------- */
.dash-status.verified{background:#e2f4ea;color:#1d7d4f}
.dash-status.pha{background:#e8f0fe;color:#1a56db}
.dash-status.urgent{background:#fde8e8;color:#c02828}
.dash-nav{display:grid;grid-template-columns:repeat(4,auto);gap:16px;align-items:start;margin:0 0 20px;padding:14px;background:#eef3f8;border-radius:14px}
.dash-nav-group{display:flex;flex-direction:column;gap:4px}
.dash-nav-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#8a99ab;padding:0 12px;margin-bottom:2px}
.dash-nav-link{display:block;padding:7px 12px;border-radius:9px;font-weight:600;font-size:.9rem;color:var(--ink);text-decoration:none;border:1px solid transparent;white-space:nowrap}
.dash-nav-link:hover{background:#fff}
.dash-nav-link.is-active{background:var(--card);border-color:var(--brand);color:var(--brand-dark);box-shadow:var(--shadow-sm)}
@media(max-width:860px){.dash-nav{grid-template-columns:repeat(2,1fr);gap:12px}}

/* The stat tiles sit directly under the "Set up claim export" card, and both are block
   siblings - so their vertical margins COLLAPSE and the larger one wins. With a top
   margin of 0 here the gap was only the card's own 20px, which reads as the tiles
   touching the card. This top margin is deliberately larger than the card's bottom
   margin so the collapsed gap equals this value rather than the smaller one. Adding
   bottom padding to the card cannot fix this: the padding grows the card, the
   collapsed margin between the two stays 20px. */
.dash-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:32px 0 18px}
.dash-stat-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:4px}
.dash-stat-n{font-size:1.6rem;font-weight:800;color:var(--brand-dark);font-variant-numeric:tabular-nums}
.dash-stat-l{font-size:.8rem;color:var(--muted)}
/* .dash-stat is the older twin of .dash-stat-card: the same tile, but its
   number and label are a bare <strong> and <span> instead of .dash-stat-n /
   .dash-stat-l. Without a rule of its own those two stayed inline siblings and
   rendered as "54.75hours of service". Mirrors .dash-stat-card so every
   existing .dash-stat use is fixed at once and the grid child still fills its
   track. The accent bar matches the polished .dash-stat-card treatment. */
.dash-stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:2px;position:relative;overflow:hidden;transition:box-shadow .16s ease,border-color .16s ease}
.dash-stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--brand),var(--brand-2))}
.dash-stat strong{font-size:1.55rem;font-weight:800;color:var(--brand-dark);font-variant-numeric:tabular-nums;line-height:1.15}
.dash-stat span{font-size:.78rem;color:var(--muted);line-height:1.35}
@media(max-width:820px){.dash-stat{padding:12px 14px}.dash-stat strong{font-size:1.35rem}}
@media(max-width:480px){.dash-stat{padding:11px 12px}.dash-stat strong{font-size:1.25rem}}
.dash-empty{padding:18px;border:1px dashed var(--line);border-radius:12px;background:var(--card);text-align:center;margin:8px 0}
.dash-empty .btn{margin-top:10px}
.dash-card-link:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.dash-card-link h2{color:var(--brand-dark)}
.dash-card-link .btn{margin-top:8px}
.verified-badge{display:inline-block;background:#e2f4ea;color:#1d7d4f;border:1px solid #bfe6cf;font-size:.7rem;font-weight:700;padding:2px 10px;border-radius:999px;letter-spacing:.03em;text-transform:uppercase;vertical-align:middle;margin-left:8px}

/* ---------- Voucher journey stepper ---------- */
.dash-journey{display:grid;grid-template-columns:minmax(200px,280px) 1fr;gap:22px;align-items:start;margin:8px 0 4px}
.dash-journey-steps{position:relative;display:flex;flex-direction:column;gap:6px;counter-reset:jstep;padding:6px 0}
.dash-journey-steps::before{content:"";position:absolute;left:22px;top:14px;bottom:14px;width:2px;background:var(--line);border-radius:2px}
.dash-journey-step{counter-increment:jstep;position:relative;display:block;width:100%;text-align:left;border:none;background:transparent;border-radius:10px;padding:10px 12px 10px 46px;font-weight:600;font-size:.88rem;color:var(--ink);cursor:pointer;line-height:1.25;transition:background .15s;z-index:1}
.dash-journey-step::before{content:counter(jstep);position:absolute;left:10px;top:50%;transform:translateY(-50%);width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#fff;border:2px solid #c9d4e0;color:#8a99ab;font-size:.74rem;font-weight:700;transition:all .15s}
.dash-journey-step:hover{background:#f4f8fc}
.dash-journey-step:hover::before{border-color:var(--brand);color:var(--brand)}
.dash-journey-step.is-active{background:linear-gradient(180deg,#f3f9ff,#eaf3fb);box-shadow:inset 0 0 0 1px var(--brand)}
.dash-journey-step.is-active::before{background:var(--brand);border-color:var(--brand);color:#fff}
.dash-journey-step.is-active .step-sub{color:var(--brand-dark)}
.dash-journey-step.is-done{color:#1d7d4f}
.dash-journey-step.is-done::before{content:'✓';background:#e2f4ea;border-color:#bfe6cf;color:#1d7d4f;font-weight:800}
.dash-journey-step .step-sub{display:block;font-weight:400;font-size:.72rem;color:var(--muted);margin-top:2px}
.dash-journey-panel{min-width:0;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 22px;box-shadow:var(--shadow-sm)}
.dash-journey-panel h3{color:var(--brand-dark);font-size:1.02rem;letter-spacing:-.01em;margin-bottom:4px}
.dash-journey-panel .dash-form label{margin-bottom:16px}
.consent-row input{width:18px;height:18px;flex:none;margin-top:3px;accent-color:var(--brand);cursor:pointer}
.consent-row .micro{font-weight:400;line-height:1.5;cursor:pointer}
.journey-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.journey-actions .btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:8px 22px}
.journey-actions.is-secondary{border-top:none;margin-top:2px;padding-top:0}

/* Journey panel: summary notes, sub-sections, PHA suggestions, property matches */
.journey-note{border:1px solid var(--line);background:#f7f9fb;border-radius:12px;padding:12px 14px;margin:0 0 16px}
.journey-note .note-title{font-size:.92rem;color:var(--ink)}
.journey-note.is-likely{border-color:#bfe6cf;background:#f2faf5}.journey-note.is-likely .note-title{color:#1d7d4f}
.journey-note.is-maybe{border-color:#ecd9a8;background:#fffaf0}.journey-note.is-maybe .note-title{color:#8a6a14}
.journey-note.is-above{border-color:#f0c9c9;background:#fdf3f3}.journey-note.is-above .note-title{color:#b04848}
.journey-note.is-done{border-color:#bfe6cf;background:#f2faf5}.journey-note.is-done .note-title{color:#1d7d4f}
.journey-sub{border-top:1px solid var(--line);margin:16px 0 0;padding:14px 0 0}
.journey-sub h4{margin:0 0 8px;color:var(--brand-dark);font-size:.9rem}
.pha-suggest,.match-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.pha-suggest li,.match-list li{border:1px solid var(--line);border-radius:10px;padding:9px 12px;background:#fff;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.pha-suggest a,.match-list a{font-weight:600;color:var(--brand-dark);text-decoration:none}
.pha-suggest a:hover,.match-list a:hover{text-decoration:underline}
.match-list .micro{flex:1 1 100%;margin:0}
.pha-suggest .micro{margin:0}
.match-list .dash-status{margin-left:0}
@media(max-width:760px){
  .dash-journey{grid-template-columns:1fr;gap:14px}
  .dash-journey-steps{flex-direction:row;overflow-x:auto;padding-bottom:8px;gap:8px;scrollbar-width:thin}
  .dash-journey-steps::before{display:none}
  .dash-journey-step{flex:0 0 auto;white-space:nowrap;padding:9px 16px 9px 42px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow-sm)}
  .dash-journey-step.is-active{background:linear-gradient(180deg,#f3f9ff,#eaf3fb)}
}

/* ---------- Manager lead inbox ---------- */
.lead-row{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:8px;background:#fff}
.lead-row.is-new{border-left:4px solid var(--brand)}
.lead-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between}
.lead-email{font-weight:700}
.lead-meta{font-size:.74rem;color:var(--muted)}
.lead-status{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:999px;border:1px solid var(--line);background:#f6f8fa;color:#55657a}
.lead-status.new{background:#eef4ff;border-color:#c4d5f2;color:#24508f}
.lead-status.viewed{background:#f6f8fa;border-color:var(--line);color:#55657a}
.lead-status.contacted{background:#fff7e8;border-color:#ecd9a8;color:#8a6a14}
.lead-status.converted{background:#e2f4ea;border-color:#bfe6cf;color:#1d7d4f}
.lead-status.dismissed{opacity:.55}
.lead-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.lead-msg{font-size:.85rem;color:var(--ink);background:#fafbfc;border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-top:8px}
.lead-note{width:100%;font-size:.82rem;padding:6px 8px;border:1px solid var(--line);border-radius:8px}
.leads-empty{padding:16px;border:1px dashed var(--line);border-radius:12px;background:var(--card);color:var(--muted);font-size:.85rem;text-align:center}


/* ---------- Leaflet maps: protect tiles/markers from global img reset ---------- */
.map-wrap{position:relative}
/* Sandbox the map's z-indexes so Leaflet panes (400-800) can never float over
   the sticky header (z-50) when scrolling on mobile/desktop. The low z-index
   creates a new stacking context that caps every leaflet layer below it. */
.map-wrap{z-index:0}
.leaflet-container{z-index:0}
.site-header{z-index:60}
.leaflet-container .leaflet-tile,
.leaflet-container .leaflet-marker-icon,
.leaflet-container .leaflet-shadow-icon,
.leaflet-container .leaflet-div-icon{max-width:none!important}


/* ---------- Mobile-only partner slots ---------- */
@media (min-width: 768px) {
  .partner-mobile{display:none}
}

/* ---------- Partner ad units (stacked boxes w/ button) ---------- */
.partner[hidden]{display:none!important}
.partner{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:linear-gradient(180deg,#fffdf3,#fdf3e3);border:1px solid #ecd9b8;border-radius:14px;padding:16px 18px;margin:18px 0;position:relative;box-shadow:var(--shadow-sm)}
.partner-tag{position:absolute;top:-10px;right:14px;background:#d9c98a;color:#4d3f00;font-size:.68rem;font-weight:700;padding:3px 11px;border-radius:999px;letter-spacing:.04em}
.partner-body{flex:1;min-width:220px;max-width:none}
.partner-body h3{margin:0 0 6px;font-size:1.02rem}
.partner-body p{margin:0;color:var(--muted);font-size:.92rem;line-height:1.5;max-width:none}
.partner .btn{white-space:nowrap;font-size:.92rem;padding:10px 16px}
.partner:nth-child(n){margin:18px 0}


/* ---------- Polish: form control consistency ---------- */
/* ---------- Polish: form control consistency ---------- */
input[type=text],input[type=email],input[type=url],input[type=search],input[type=tel],input[type=number],select,textarea{transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
input[type=text]:hover,input[type=email]:hover,input[type=url]:hover,input[type=search]:hover,input[type=tel]:hover,input[type=number]:hover,select:hover,textarea:hover{border-color:#c3d2e4}

/* ---------- Polish: vertical rhythm across .wrap sections ---------- */
.wrap section,.wrap .section{margin-bottom:8px}

/* ---------- Polish: bottom-stack card rhythm on apartment pages ---------- */
.wrap section.alert-box,.wrap section.claimbox,.wrap section.report-box,.wrap section.qualify-widget[data-inline]{margin:28px 0}
.qualify-widget[data-inline]{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 2px 8px rgba(10,40,80,.06)}
.qualify-widget[data-inline] .qualify-grid{margin-top:14px}
@media(max-width:700px){.qualify-grid{grid-template-columns:1fr}.qualify-grid .btn{width:100%;margin-top:4px}}

/* ---------- Polish: subtle card elevation refinement ---------- */
.stat,.apply-box,.claimbox,.report-box,.alert-box,.sho-calc,.featured-card,.promoted{transition:box-shadow .16s ease,transform .16s ease,border-color .16s ease}
.stat:hover,.apply-box:hover,.claimbox:hover,.report-box:hover,.alert-box:hover,.sho-calc:hover{box-shadow:var(--shadow)}

/* ---------- Dashboard claim multi-select chips ---------- */
.claim-selected-list{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}
.claim-chip{display:inline-flex;align-items:center;gap:8px;background:#e8f2fa;border:1px solid #b7d8ee;border-radius:999px;padding:6px 10px 6px 14px;font-size:.88rem;color:#0b3a5e;box-shadow:0 1px 2px rgba(10,40,80,.05)}
.claim-chip-name{font-weight:600}
.claim-chip-name .micro{font-weight:400;color:#48647a;margin-left:4px}
.claim-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;border:none;background:#cbe3f4;color:#08446f;font-size:1.1rem;line-height:1;cursor:pointer;transition:background .15s}
/* color must be re-declared here: button:hover's color:#fff (0,1,1) beats the
   base rule's color (0,1,0), which turned this dark-blue glyph white on the
   light-blue hover fill. */
.claim-chip-remove:hover{background:#9cc9e6;color:#08446f;transform:none}
.claim-result{position:relative}
.claim-result-selected{background:#f2f9ff;border-color:#8fc6e9}
.claim-selected-mark{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:.72rem;font-weight:700;color:var(--brand);background:#e0f0fb;padding:2px 8px;border-radius:999px;text-transform:uppercase}

/* ---------- Demand widget (two-sided) ---------- */
.demand-counters{display:flex;gap:14px;flex-wrap:wrap;margin:12px 0}
.demand-stat{background:#f4f8fc;border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:120px;flex:1}
.demand-stat .demand-n{display:block;font-size:1.35rem;font-weight:800;color:var(--brand)}
.demand-stat .demand-l{font-size:.72rem;color:#5a6b7f;line-height:1.25}
.demand-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.demand-id-form{background:#f4f8fc;border:1px solid var(--line);border-radius:10px;padding:12px}
.demand-id-form #demand-id{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.demand-id-form input{border:1px solid var(--line);border-radius:8px;padding:9px 11px;font:inherit}

/* ---------- Capture funnel (non-sensitive) ---------- */
.funnel-box{border-left:4px solid var(--brand)}
.funnel-q{display:flex;gap:8px;align-items:center;font-weight:600}
.funnel-box{border-left:4px solid var(--brand)}
.funnel-q{display:flex;gap:8px;align-items:center;font-weight:600}
.funnel-q input{margin:0}
/* Two-button voucher status selector */

.funnel-yesno{display:block;border:0;padding:0;margin:0 0 14px}
.funnel-yesno .funnel-yl{display:block;font-weight:600;font-size:.92rem;margin-bottom:8px;color:var(--ink)}
.funnel-switch{display:flex;gap:10px;flex-wrap:wrap}
.funnel-btn{flex:1 1 0;min-width:150px;text-align:center;background:#f2f6fb;color:var(--brand-dark);border:1.5px solid var(--line);border-radius:10px;padding:10px 12px;font-weight:600;font-size:.88rem;cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.funnel-btn:hover{border-color:var(--brand-2)}
.funnel-btn.is-on{background:linear-gradient(90deg,var(--brand),var(--brand-2));color:#fff;border-color:transparent;box-shadow:var(--shadow-sm)}
.funnel-next{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}

/* ---------- Housing Needs Questionnaire ---------- */
.wizard-card{max-width:640px}
.wizard-progress{height:8px;background:#e6ecf2;border-radius:999px;margin:10px 0 18px;overflow:hidden}
.wizard-progress-fill{height:100%;background:linear-gradient(90deg,var(--brand),var(--brand-2));border-radius:999px;width:0;transition:width .25s ease}
.wizard-privacy-notice{background:#fff7ed;border:1px solid #f0dcba;border-left:4px solid var(--warn);border-radius:10px;padding:10px 14px;font-size:.82rem;line-height:1.5;color:#5b3a12;margin:0 0 16px}
.wizard-q label{display:block;font-weight:600;font-size:.92rem;margin:0 0 14px}
.wizard-q input[type=text],.wizard-q input[type=tel],.wizard-q input[type=email],.wizard-q input[type=date],.wizard-q input[type=number]{width:100%;margin-top:5px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;font-weight:400}
.wizard-q input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.wizard-head{margin:0 0 2px}
.wizard-body{margin-top:6px}
.wizard-body .wizard-q{margin:0}
.wizard-choices{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px}
.wizard-choices .btn{flex:1 1 200px;text-align:center}
.wizard-choice-list{display:flex;flex-direction:column;gap:12px}
.wizard-choice-list .btn{text-align:center;padding:14px;font-weight:600}
.pref-grid{display:grid;gap:10px}
.wz-link{background:#f2f7fb;border:1px solid var(--line);border-radius:10px;padding:10px 12px;word-break:break-all;font-size:.85rem}
.wizard-result h4{margin:14px 0 6px;font-size:.95rem}

/* Wizard back nav */
.wizard-nav{margin-top:18px;padding-top:12px;border-top:1px solid var(--line)}
.wizard-nav .btn{box-shadow:none}

/* Wizard overflow-hardening (long share URLs, options) */
.wizard-q{min-width:0;overflow-wrap:break-word}
.wizard-result{min-width:0;overflow-wrap:break-word}
.wz-link code{word-break:break-all;overflow-wrap:break-word}
.wizard-share{min-width:0;overflow-wrap:break-word}
.pref-grid .alert-consent{min-width:0;overflow-wrap:break-word}
/* Wizard field polish (consent checkbox, selects) */
.wizard-q label.alert-consent{display:flex;align-items:flex-start;gap:9px;font-weight:500;font-size:.85rem;color:var(--muted);line-height:1.45;margin:0 0 14px}
.wizard-q label.alert-consent input{width:16px;height:16px;margin-top:3px;flex:0 0 auto}
.wizard-q select,.wizard-q textarea{display:block;width:100%;margin-top:5px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;font-weight:400;color:var(--ink)}
.wizard-q input[type=checkbox]{accent-color:var(--brand)}
/* Button rows + caseworker invite form */
.btn-row{margin-top:12px}
.invite-form{margin-top:8px}
.invite-form .btn-row{margin-top:10px}

/* ---------- PHA contact card ---------- */
.contact-card{display:flex;flex-direction:column;gap:8px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin:0 0 18px}
.contact-line{display:flex;align-items:baseline;gap:10px;font-size:.9rem}
.contact-line>span{flex:0 0 74px;font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.contact-line a{color:var(--brand);text-decoration:none}
.contact-line a:hover{text-decoration:underline}

/* ---------- Step-by-step tour with popover previews ---------- */
.tour{margin:26px 0;scroll-margin-top:84px}
/* Guide pages: readable measure + scannable sections */
.guide{max-width:820px;margin:0 auto}
.guide h1{margin:.2em 0 .35em}
.guide .publine{color:var(--muted);font-size:.85rem;margin:0 0 18px}
.guide .lede{font-size:1.1rem;line-height:1.65;margin:0 0 14px}
.guide section{margin:28px 0}
.guide section h2{margin:0 0 10px}
.guide section>p{margin:0 0 12px}
.guide ul{margin:0 0 14px;padding-left:22px}
.guide li{margin:6px 0}
.guide-cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:18px 0 4px}
.guide-notice{background:#fff7ed;border:1px solid #f0dcba;border-left:4px solid var(--warn);border-radius:10px;padding:12px 16px;margin:0 0 18px;font-size:.9rem;line-height:1.55;color:#5b3a12}
.guide-notice p{margin:0 0 8px}
.guide-notice p:last-child{margin:0}
.guide-cta .btn{margin:0;padding:11px 20px}
/* For-housing-providers: carded sections + uniform light CTAs */
.guide-for-housing-providers .guide-section{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin:16px 0;box-shadow:var(--shadow-sm)}
.guide-for-housing-providers .guide-section h2{margin:0 0 10px}
.guide-for-housing-providers .guide-section>p:last-child,.guide-for-housing-providers .guide-section>ul:last-child{margin-bottom:0}
.guide-for-housing-providers .guide-cta{gap:10px;margin:20px 0 8px}
.guide-for-housing-providers .guide-cta .btn{background:#fff;color:var(--brand-dark);border:1px solid var(--line);box-shadow:var(--shadow-sm);padding:11px 20px;font-weight:600}
.guide-for-housing-providers .guide-cta .btn:hover{background:#eef4fb;border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}
.guide-for-housing-providers .case-flow{margin:16px 0 6px}
.guide-for-housing-providers .cf-steps{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0 0 14px;padding:0}
.guide-for-housing-providers .cf-steps button{background:#fff;color:var(--brand-dark);border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-weight:600;font-size:.85rem;cursor:pointer;box-shadow:var(--shadow-sm);transition:background .15s ease,border-color .15s ease,color .15s ease}
.guide-for-housing-providers .cf-steps button:hover{border-color:var(--brand);color:var(--brand)}
.guide-for-housing-providers .cf-steps button.is-on{background:#e8f0f8;color:var(--brand);border-color:var(--brand)}
.guide-for-housing-providers .cf-panel{display:none}
.guide-for-housing-providers .cf-panel.is-on{display:block}
.guide-for-housing-providers .cf-panel h3{margin:0 0 6px;font-size:1rem}
.guide-for-housing-providers .cf-panel p{margin:0 0 8px}
.guide-for-housing-providers .cf-panel ul{margin:0;padding-left:20px}
.guide-for-housing-providers .cf-links{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 0}
.guide-for-housing-providers .cf-links .btn{background:#fff;color:var(--brand-dark);border:1px solid var(--line);box-shadow:var(--shadow-sm);padding:11px 20px;font-weight:600}
.guide-for-housing-providers .cf-links .btn:hover{background:#eef4fb;border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}
.tour-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-top:14px}
.tour-thumb{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;text-align:left;font:inherit;box-shadow:var(--shadow-sm);transition:box-shadow .15s ease,transform .15s ease}
.tour-thumb:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.tour-thumb img{width:100%;height:auto;border-radius:8px;border:1px solid var(--line)}
.tour-cap{font-size:.8rem;font-weight:600;color:var(--ink);line-height:1.35}
.tour-pop:not([open]){display:none}
.tour-pop{outline:none;border:none;padding:0;margin:0;background:transparent;width:100vw;height:100vh;max-width:100vw;max-height:100vh}
.tour-pop[open]{display:flex;align-items:center;justify-content:center}
.tour-pop-box{position:relative;background:#fff;border-radius:14px;padding:14px;
  max-width:min(1100px,94vw);max-height:92vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.tour-pop::backdrop{background:rgba(10,20,35,.72);backdrop-filter:blur(2px)}
.tour-pop-box img{max-width:min(1050px,90vw);width:auto;height:auto;max-height:72vh;display:block;margin:0 auto;border-radius:10px;border:1px solid var(--line)}
.tour-x{position:sticky;top:0;float:right;margin-left:10px;width:30px;height:30px;border:none;border-radius:999px;background:var(--ink);color:#fff;font-size:1.05rem;line-height:1;cursor:pointer;z-index:2}
.tour-x:hover{background:var(--brand)}
.tour-pop-text{padding:10px 4px 2px}
.tour-pop-text strong{display:block;font-size:.98rem;margin-bottom:4px}
.tour-pop-text p{margin:0;font-size:.9rem;color:var(--muted);line-height:1.55}

/* ---------- Mobile-friendly dashboards (admin / caseworker / manager / renter) ---------- */
@media(max-width:820px){
  .dash{max-width:none}
  .dash-card{padding:18px 14px}
  .apply-box{padding:6px 12px 16px}
  /* Admin: 9-tab bar → swipeable strip (was overflowing 390px: scrollW 798 vs 311) */
  .dash-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;gap:6px;margin:0 -2px 14px;padding:0 2px 8px;scrollbar-width:thin;scrollbar-color:#c3d2e4 transparent}
  .dash-tabs::-webkit-scrollbar{height:5px}
  .dash-tabs::-webkit-scrollbar-thumb{background:#c3d2e4;border-radius:99px}
  .dash-tab{flex:0 0 auto;max-width:none;min-width:116px;white-space:nowrap;padding:11px 14px;font-size:.9rem}
  /* Buttons inside rows wrap; full-width once space runs out */
  .dash-actions{flex-wrap:wrap;gap:8px}
  .dash-actions .btn{white-space:nowrap}
  /* 16px controls prevent iOS auto-zoom on focus */
  .dash-form select,.dash-form input,.dash-form textarea,#admin-tab-body select,#admin-tab-body input,#admin-tab-body textarea,.lead-status-sel,.demand-filter select,.demand-filter input{font-size:16px}
  /* Admin filter bars stack vertically */
  #admin-tab-body .dash-form{flex-direction:column;align-items:stretch}
  #admin-tab-body .dash-form label{margin:0 0 6px}
  /* Wizard / choice buttons full-width */
  .wizard-choices .btn{flex:1 1 100%}
  /* Detail rows & cards breathe */
  .dash-row{padding:10px 12px}
  /* Agency add-domain input fills width (was inline min-width:220px) */
  #adom-input{width:100%;min-width:0}
  /* Manager demand ZIP full width (was inline width:110px) */
  #demand-zip{width:100%}
  .demand-filter #demand-state,.demand-filter input,.demand-filter select{width:100%}
  .demand-id-form #demand-id{flex-direction:column;align-items:stretch}
  /* Lead rows */
  .lead-row{padding:12px}
  .lead-actions .btn{flex:1 1 auto;text-align:center}
  /* Case/journey panel */
  .dash-journey-panel{padding:16px 14px}
  /* Onboard step cards stack (was inline min-width:180px) */
  .onboard-step{min-width:150px}
  /* Stat cards slightly tighter */
  .dash-stat-card{padding:12px}
  .dash-stat-n{font-size:1.4rem}
  /* Role picker cards */
  .role-card{padding:12px 14px}
  /* Inbox rows */
  .dash-nav{padding:12px;gap:10px}
  .dash-nav-link{white-space:normal}
  /* Tables: keep horizontal scroll but add hit-friendly cells */
  .tbl th,.tbl td{padding:9px 10px}
  /* Partner/claim boxes */
  .claimbox{padding:14px 16px}
}
@media(max-width:480px){
  .dash-tab{min-width:104px}
  .dash-nav{grid-template-columns:1fr}
  .dash-nav-group{gap:2px}
  .dash-nav-link{padding:10px 12px;border:1px solid transparent}
  .dash-nav-link.is-active{border-color:var(--brand);background:var(--card)}
  .dash-card{padding:14px 10px}
  /* Setup claim export: the smallest breakpoint's .dash-card rule above would otherwise win at 390px and drop the extra bottom room. Top and side are unchanged; only the bottom grows so the last line can breathe. */
  .dash-card-roomy{padding:14px 10px 24px}
  .dash-head{gap:8px}
  .dash-stat-n{font-size:1.25rem}
  .dash-actions .btn{flex:1 1 100%}
  .lead-actions .btn{flex:1 1 100%}
}

/* ===================================================================
   Dashboard & admin polish: card rhythm, section headers, KPI rows,
   table scanability, empty states, and 360px mobile hardening.
   Additive only - no ids, fields, or behaviour are changed.
   ===================================================================

/* ---- Page chrome ---- */
.dash{max-width:1040px} /* admin panel: wider tables read better */
.dash-head{border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:16px}
.dash-head .micro{margin:0}
.dash-nav{border:1px solid var(--line);background:linear-gradient(180deg,#f3f7fb,#eef3f8)}
.dash-nav-label{color:#7d8ea3}

/* ---- Auth cards: keep the signed-out login/verify surface focused ---- */
#auth-panel,#verify-panel{max-width:620px}

/* ---- Card rhythm + section headers (app panel) ---- */
#app-panel > .apply-box,#app-panel > .dash-card{margin:18px 0 0}
.dash-card > h2{margin-top:0;font-size:1.22rem;letter-spacing:-.012em}
.dash-card > h2 + .micro{margin-top:2px;font-size:.88rem;line-height:1.55}
.dash-card > .micro + .dash-list,.dash-card > .micro + .dash-form,.dash-card > .micro + div,.dash-card > .micro + form{margin-top:14px}

/* ---- KPI / stat rows ---- */
.dash-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.dash-stat-card{position:relative;padding:14px 16px;gap:2px;overflow:hidden;transition:box-shadow .16s ease,border-color .16s ease}
.dash-stat-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--brand),var(--brand-2))}
.dash-stat-n{font-size:1.55rem;line-height:1.15}
.dash-stat-l{font-size:.78rem;line-height:1.35}

/* ---- Tabs (auth + admin) as a segmented control ---- */
.dash-tabs[role=tablist]{background:#eef3f8;border-radius:12px;padding:4px;gap:4px}
.dash-tabs[role=tablist] .dash-tab{background:transparent;border-color:transparent;padding:9px 12px}
.dash-tabs[role=tablist] .dash-tab:hover{background:rgba(255,255,255,.75);color:var(--brand-dark)}
.dash-tabs[role=tablist] .dash-tab.is-active{background:var(--card);border-color:var(--brand);box-shadow:var(--shadow-sm)}

/* ---- Tables: header alignment + numeric columns ---- */
.tbl thead th{white-space:nowrap}
.tbl th.num,.tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
.tbl tbody tr{transition:background-color .12s ease}
@media(min-width:821px){.tbl tbody td{padding-top:12px;padding-bottom:12px}}

/* ---- Empty states ---- */
.dash-empty{padding:20px 18px;text-align:center;background:linear-gradient(180deg,#fbfdff,#f6f9fc)}
.dash-empty p{margin:0 auto;max-width:60ch}
.dash-empty .btn{margin-top:12px}
p.micro.dash-empty{font-size:.88rem;line-height:1.55}
.dash-empty-sm{padding:10px 12px;border:1px dashed var(--line);border-radius:10px;background:#fafcfe;color:var(--muted);font-size:.85rem;line-height:1.5;text-align:center;margin:4px 0}
.leads-empty p{margin:0 auto;max-width:60ch}

/* ---- Admin tab body ---- */
#admin-tab-body > input[type=search]{margin:0 0 12px}
#admin-tab-body .dash-form:empty{display:none!important}

/* ---- Rows: long emails/URLs must never force page overflow ---- */
.dash-row{overflow-wrap:anywhere}
.dash-row > div{min-width:0}
.lead-email,.lead-meta{overflow-wrap:anywhere}
.claim-chip{max-width:100%}
.claim-chip-name{overflow-wrap:anywhere}
.pha-suggest li,.match-list li{min-width:0}

/* ---- Mobile re-assertions (rules above must not undo the <=820px layout) ---- */
@media(max-width:820px){
  .dash{max-width:none}
  .dash-tabs[role=tablist]{padding:4px 4px 8px;margin:0 -2px 14px}
  .dash-tabs[role=tablist] .dash-tab{padding:10px 14px}
  .dash-stat-card{padding:12px 14px}
  .dash-stat-n{font-size:1.35rem}
}
@media(max-width:480px){
  .dash-stat-card{padding:11px 12px}
  .dash-stat-n{font-size:1.25rem}
  .dash-empty{padding:16px 12px}
}

/* ---- Phone touch targets (agency casework panel) ----
   The panel already reflows on a phone: .two-col-form and .dash-grid drop to
   one column at 700px, .csv-table turns into stacked cards at 700px, .tbl gets
   its own scroll container at 640px, and .dash-stats wraps to two tiles a row.
   What is left is touch size. A 33px button or a 35px nav row is a mis-tap for
   a caseworker working one-handed, so every control in the panel gets the 44px
   minimum below the tablet breakpoint. Desktop is untouched. */
@media(max-width:640px){
  #auth-panel .btn,#verify-panel .btn,#app-panel .btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
  .dash-nav-link,.dash-tab{min-height:44px;display:flex;align-items:center}
  .dash-tab{justify-content:center}
  /* Inbox and case rows: the action strip spans the row so its buttons can go
     full-width on the narrowest phones (the <=480px rule above). */
  .dash-row .dash-actions{flex:1 1 100%}
}

/* ---------- Suggested (unverified) contact info + suggest form ---------- */
.suggested-contacts{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}
.suggested-contacts h3{font-size:.92rem;margin:0 0 6px}
.unverified-note{display:flex;gap:8px;align-items:flex-start;background:#fff8e6;border:1px solid #f0dcba;border-radius:10px;padding:10px 12px;font-size:.82rem;line-height:1.5;color:#7a5a12;margin:0 0 10px}
.unverified-badge{display:inline-block;background:#b45309;color:#fff;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}
.suggest-box{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.suggest-box summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;font-weight:600;font-size:.9rem;color:var(--brand-dark);padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:#f7fafc;transition:background .15s ease,border-color .15s ease}
.suggest-box summary::-webkit-details-marker{display:none}
.suggest-box summary::before{content:"+";font-weight:700;color:var(--brand);font-size:1.05rem;line-height:1;width:14px;text-align:center}
.suggest-box[open] summary::before{content:"\2013"}
.suggest-box summary:hover{background:#eef4fb;border-color:#c9d8ea}
.suggest-box form{margin-top:12px;background:#fbfdff;border:1px solid var(--line);border-radius:12px;padding:14px}
.suggest-box label{display:block;font-size:.84rem;font-weight:600;margin-top:12px;color:#223349}
.suggest-box label:first-child{margin-top:0}
.suggest-box input,.suggest-box select{display:block;width:100%;margin-top:5px;padding:9px 11px;border-radius:8px;border:1px solid var(--line);font:inherit;font-size:.9rem;box-sizing:border-box;background:#fff}
.suggest-box input:focus,.suggest-box select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.12)}
.suggest-box .btn-row{margin-top:14px}
.suggest-box .micro{display:block;margin-top:10px}

/* ---------- Suggested official website / application links ---------- */
.suggested-links{display:flex;flex-direction:column;gap:8px;margin:4px 0 10px}
.suggested-link{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* ---------- Share box + suggested-links polish ---------- */
.share-box{background:linear-gradient(180deg,#f7fafc,#ffffff)}
.suggested-contacts h3{font-size:.95rem;margin:0 0 8px}
.suggested-link .btn{flex:0 0 auto}
.suggested-contacts:empty{display:none}

/* ---------- Contact CTAs (manager claim + suggest), grouped & matching ---------- */
.contact-cta{margin-top:12px;border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:8px}
.contact-card > p.micro{margin-bottom:0}
.contact-cta .suggest-box{margin-top:0;border-top:none;padding-top:0}
.suggest-cta{display:flex;align-items:center;gap:8px;font-weight:600;font-size:.9rem;color:var(--brand-dark);padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:#f7fafc;text-decoration:none;transition:background .15s ease,border-color .15s ease}
.suggest-cta::before{content:"+";font-weight:700;color:var(--brand);font-size:1.05rem;line-height:1;width:14px;text-align:center}
.suggest-cta:hover{background:#eef4fb;border-color:#c9d8ea;text-decoration:none}

/* ---------- Subscribe page form (redesign) ---------- */
.subscribe-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:var(--shadow-sm);margin:22px 0;max-width:860px}
.sub-row{display:flex;gap:10px;align-items:stretch}
.sub-row input[type=email]{flex:1 1 auto;min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:1rem;background:#fff}
.sub-row input[type=email]:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.sub-row button{flex:0 0 auto;padding:12px 22px;border-radius:10px;font-size:1rem;white-space:nowrap}
.sub-consent{display:flex;align-items:flex-start;gap:9px;margin-top:14px;font-size:.8rem;line-height:1.4;color:var(--muted);font-weight:400}
.sub-consent input{width:17px;height:17px;margin-top:1px;flex:0 0 auto;cursor:pointer}
.sub-consent span{flex:1;min-width:0}
.subscribe-card .form-ok{margin:12px 0 0}
.subscribe-card .dash-err{margin:10px 0 0}
@media(max-width:560px){.sub-row{flex-direction:column}.sub-row button{width:100%}}
.sub-row input[type=email],.sub-row button{min-height:48px}
.sub-row button{border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center}

/* ---------- Property "How to apply here" section ---------- */
.apply-here h2{margin-top:0}
.apply-lede{font-size:.98rem;line-height:1.55;color:var(--ink);margin:0 0 4px}
.apply-actions{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 2px}
.apply-voucher{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.apply-voucher-title{font-weight:600;margin:0 0 8px;font-size:.95rem}
.apply-links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:7px}
.apply-links li{position:relative;padding-left:16px;font-size:.9rem}
.apply-links li::before{content:"\2192";position:absolute;left:0;top:0;color:var(--brand);font-weight:700}
.apply-links a{font-weight:500}
.apply-note{margin:14px 0 0;background:#f7fafc;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:.85rem;line-height:1.5;color:var(--muted)}

/* ---------- Share box (property + city pages) ---------- */
.share-box{padding:20px 20px 18px}
.share-box h2{margin-top:0}
.share-lede{font-size:.98rem;line-height:1.55;margin:0}
.share-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:16px 0 0}
.share-actions .btn{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:44px;text-align:center}
.share-note{margin:16px 0 0;padding-top:14px;border-top:1px solid var(--line);font-size:.85rem;line-height:1.5;color:var(--muted)}

/* ---------- Collapsed HUD administrative data ---------- */
.hud-more{margin:14px 0}
.hud-more summary{cursor:pointer;font-weight:600;font-size:.9rem;color:var(--brand-dark);padding:6px 0}
.hud-more table{margin-top:8px}

/* ---------- Collapsed fine print / disclaimers ---------- */
.fine-print{margin:12px 0 0}
.fine-print summary{cursor:pointer;font-size:.8rem;color:var(--muted);padding:4px 0}
.fine-print p{margin:6px 0 0}

/* ---------- Compact capture funnel (single-line) ---------- */
.funnel-line{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:4px 0 12px}
.funnel-line .funnel-switch{flex:0 0 auto;flex-wrap:nowrap}
.funnel-line .funnel-btn{flex:0 0 auto;min-width:0;padding:9px 14px;font-size:.85rem;white-space:nowrap}
.funnel-line input[type=email]{flex:1 1 200px;min-width:0}
.funnel-line button[type=submit]{flex:0 0 auto;white-space:nowrap}
@media (max-width:640px){.funnel-line .funnel-switch{flex-wrap:wrap}.funnel-line input[type=email],.funnel-line button[type=submit]{flex:1 1 100%}}

/* ---------- Collapsed manager / caseworker claim box ---------- */
.claimbox summary.claimbox-title{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:0}
.claimbox summary.claimbox-title::-webkit-details-marker{display:none}
.claimbox summary.claimbox-title::after{content:"+";font-weight:700;color:var(--brand);font-size:1.1rem;line-height:1}
.claimbox details[open] summary.claimbox-title{margin-bottom:10px}
.claimbox details[open] summary.claimbox-title::after{content:"\2212"}

/* ---------- FAQ section ---------- */
.faq-box{margin:28px 0}
.faq-box h2{margin-top:0}
.faq-item{border:1px solid var(--line);border-radius:10px;background:var(--card);margin:0 0 8px;overflow:hidden}
.faq-item summary{cursor:pointer;font-weight:600;padding:12px 38px 12px 14px;list-style:none;position:relative}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";position:absolute;right:14px;top:50%;transform:translateY(-50%);font-weight:700;color:var(--brand)}
.faq-item[open] summary::after{content:"\2212"}
.faq-item[open] summary{border-bottom:1px solid var(--line)}
.faq-item [itemprop=text]{padding:12px 14px;font-size:.93rem;line-height:1.55;color:var(--muted)}


/* ---------- Agency: CSV bulk import + inbox tools ---------- */
.dash-search{display:block;margin:0 0 12px}
.dash-search input{display:block;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.dash-search input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.csv-drop{border:1.5px dashed #c3d2e2;border-radius:14px;background:#f7fafc;padding:22px 18px;text-align:center;transition:border-color .15s,background-color .15s}
.csv-drop.is-over{border-color:var(--brand);background:#eef5fc}
.csv-drop-inner p{margin:6px 0}
.csv-drop-ico{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:#e8eef6;color:var(--brand-dark);font-size:1.2rem;font-weight:800;margin-bottom:4px}
.csv-file-name{margin:10px 0 0;font-weight:600;color:var(--brand-dark)}
.csv-table-wrap{overflow-x:auto;margin:12px 0}
.csv-table{font-size:.88rem;min-width:520px}
.csv-actions{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}
.csv-actions .btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
@media(max-width:700px){
  .csv-table{min-width:0}
  .csv-table thead{display:none}
  .csv-table tbody,.csv-table tr,.csv-table td{display:block;width:auto}
  .csv-table tr{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:#fff;padding:4px 0}
  .csv-table td{border-bottom:none;padding:6px 12px}
  .csv-table tbody tr:nth-child(even){background:#fff}
  .csv-table td:first-child{font-weight:700}
}

/* ---------- Agency: CSV column mapping + custom fields ---------- */
.csv-map{margin:12px 0;background:#f7fafc;border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.csv-map-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.csv-map-col{display:flex;flex-direction:column;gap:1px;flex:0 0 42%;min-width:0;font-weight:600;font-size:.88rem}
.csv-map-row select{flex:1;min-width:0;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:#fff;font:inherit;color:var(--ink)}
.csv-map-row select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.csv-map-intro{margin:0 0 10px;font-size:.88rem;color:var(--muted);line-height:1.45}
.csv-map-intro.is-missing{color:#b3261e;font-weight:600}
.csv-map-head{display:flex;align-items:center;gap:10px;padding:0 2px 6px;border-bottom:1px solid var(--line);margin-bottom:8px}
.csv-map-head span{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
.csv-map-head span:first-child{flex:0 0 42%}
.csv-map-head span:last-child{flex:1}
.csv-map-sample{font-size:.74rem;color:var(--muted);font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.csv-map-row:last-child{margin-bottom:0}
.agency-fields{margin:12px 0}
.agency-field-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.agency-field-row:last-child{border-bottom:none}
.agency-field-add{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.agency-field-add input{flex:1;min-width:160px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;font:inherit;color:var(--ink)}
.agency-field-add input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,92,171,.14)}
.agency-field-add select{padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;font:inherit;color:var(--ink)}
.intake-list{list-style:none;margin:0;padding:0}
.intake-list li{display:flex;gap:10px;padding:7px 0;border-bottom:1px solid var(--line)}
.intake-list li:last-child{border-bottom:none}
.intake-list .intake-key{flex:0 0 42%;font-weight:600;color:var(--muted)}
@media(max-width:700px){
  .csv-map-row{flex-direction:column;align-items:stretch;gap:4px}
  .csv-map-head{display:none}
  .intake-list li{flex-direction:column;gap:2px}
  .intake-list .intake-key{flex-basis:auto}
}

/* ---------- Agency: status banner ---------- */
.dash-banner{border-radius:12px;padding:13px 16px;margin:0 0 16px;font-size:.92rem;line-height:1.5;border:1px solid var(--line);background:#f7fafc;color:var(--ink)}
.dash-banner strong{font-weight:700}
.dash-banner.is-warn{background:#fff8ec;border-color:#f0d9a8;color:#8a5a00}
.dash-banner.is-err{background:#fdecec;border-color:#f0c2c2;color:#8f1a1a}
/* A plain link in a banner inherits the banner's tone; a .btn keeps its own
   white-on-gradient treatment. Without :not(.btn) this rule out-specifies
   .btn (class+element beats class), so a banner CTA rendered as brown
   underlined text on a blue button. */
.dash-banner a:not(.btn){color:inherit;text-decoration:underline}

/* ---------- Message tone: neutral chip (green=ok, red=urgent, amber=paused, blue=in-progress) ---------- */
.dash-status.neutral{background:#eef1f5;color:var(--muted)}

/* ===================================================================
   Page polish (additive): homepage, state directory hub, claim page.
   Scoped with .home-* / .dir-* / .claim-* so no other page is affected.
   =================================================================== */

/* ---------- Homepage ---------- */
.home-hero{position:relative;text-align:center;padding:40px 24px 28px;margin:6px 0 24px;background:radial-gradient(900px 320px at 50% -140px,rgba(14,123,184,.16),transparent 70%),linear-gradient(180deg,#fff,#f7fafd);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-sm);overflow:hidden}
.home-hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--brand),var(--brand-2) 55%,transparent)}
.home-hero h1{font-size:clamp(1.7rem,5vw,2.45rem);line-height:1.14;letter-spacing:-.02em;margin:0 auto .35em;max-width:22ch}
.home-hero .lede{font-size:1.06rem;line-height:1.6;color:var(--muted);max-width:66ch;margin:0 auto 18px}
.home-hero .big-search{margin:0 auto 16px}
.home-quicklinks{list-style:none;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;padding:0;margin:0 0 18px}
.home-quicklinks a{display:inline-block;font-size:.85rem;font-weight:600;color:var(--brand-dark);background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 13px;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.home-quicklinks a:hover{transform:translateY(-1px);border-color:#c9d8ea;box-shadow:var(--shadow-sm);color:var(--brand-dark)}
.home-trust{list-style:none;display:flex;flex-wrap:wrap;gap:8px 22px;justify-content:center;padding:0;margin:0}
.home-trust li{display:inline-flex;align-items:center;gap:7px;font-size:.85rem;color:var(--muted);margin:0}
.home-trust li::before{content:"\2713";display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;background:#e2f4ea;color:var(--ok);font-size:.68rem;font-weight:800;flex:none}
.home-doors{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin:0 0 6px}
.home-door{display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;color:var(--ink);text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.home-door:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#c9d8ea;color:var(--ink)}
.home-door-ico{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;background:linear-gradient(180deg,#eaf3fb,#dcebf8);color:var(--brand-dark);margin-bottom:4px}
.home-door-ico svg{width:20px;height:20px;display:block}
.home-door h2{font-size:1.06rem;letter-spacing:-.01em;margin:0}
.home-door p{font-size:.9rem;line-height:1.55;color:var(--muted);margin:0}
.home-door-cta{margin-top:auto;padding-top:10px;font-size:.88rem;font-weight:700;color:var(--brand)}
.home-door:hover .home-door-cta{color:var(--brand-dark)}
.home-account{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;background:linear-gradient(100deg,var(--brand),var(--brand-2));color:#fff;border-radius:16px;padding:22px 24px;margin:18px 0;box-shadow:var(--shadow)}
.home-account h2{margin:0 0 4px;color:#fff;font-size:1.15rem;letter-spacing:-.01em}
.home-account p{margin:0;color:#dbeafe;font-size:.92rem;max-width:62ch}
.home-account-copy{flex:1 1 320px;min-width:0}
.home-account-actions{display:flex;gap:10px;flex-wrap:wrap}
.home-account .btn{background:#fff;background-image:none;color:var(--brand-dark);border:1px solid transparent;box-shadow:none;white-space:nowrap}
.home-account .btn:hover{background:#eaf3fb;color:var(--brand-dark);transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.home-account .btn-ghost{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.7)}
.home-account .btn-ghost:hover{background:rgba(255,255,255,.14);color:#fff;border-color:#fff}

/* ---------- State directory hub ---------- */
.dir-hero{background:linear-gradient(180deg,#fff,#f7fafd);border:1px solid var(--line);border-radius:20px;padding:30px 28px;margin:6px 0 22px;box-shadow:var(--shadow-sm)}
.dir-hero h1{margin:0 0 .35em;font-size:clamp(1.6rem,4.4vw,2.15rem);letter-spacing:-.02em}
.dir-hero .lede{font-size:1.04rem;line-height:1.6;color:var(--muted);margin:0 0 16px;max-width:70ch}
.dir-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0}
.dir-actions .btn{margin:0}
.dir-stats{margin:0 0 24px}
.dir-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.dir-grid a{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2px;padding:13px 15px}
.dir-grid a strong{font-size:1rem;letter-spacing:-.01em}
.dir-grid a span{white-space:normal;font-size:.82rem}
.dir-grid .dir-units{color:var(--muted);font-size:.78rem}
.dir-section-note{color:var(--muted);font-size:.9rem;margin:0 0 12px}
.dir-help{margin:26px 0 8px;padding:20px 22px;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:14px;box-shadow:var(--shadow-sm)}
.dir-help h2{margin:0 0 10px}
.dir-help ul{margin:0 0 14px}
.dir-help .micro{margin:0}

/* ---------- Claim page ---------- */
.claim-page{max-width:880px;margin:0 auto}
.claim-hero{background:linear-gradient(180deg,#fff,#f6fafd);border:1px solid var(--line);border-radius:20px;padding:30px 28px 26px;margin:6px 0 22px;box-shadow:var(--shadow-sm)}
.claim-hero h1{margin:0 0 .35em}
.claim-hero .lede{font-size:1.04rem;line-height:1.6;color:var(--muted);max-width:68ch;margin:0 0 16px}
.claim-cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.claim-cta-row .micro{margin:0}
.claim-benefits{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:0 0 8px}
.claim-benefit{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow-sm)}
.claim-benefit h2{font-size:1rem;margin:0 0 6px;letter-spacing:-.01em}
.claim-benefit p{font-size:.9rem;line-height:1.55;color:var(--muted);margin:0}
.claim-steps{margin:20px 0}
.claim-final{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(100deg,var(--brand),var(--brand-2));color:#fff;border-radius:16px;padding:22px 24px;margin:22px 0 14px;box-shadow:var(--shadow)}
.claim-final h2{margin:0 0 4px;color:#fff;font-size:1.12rem;letter-spacing:-.01em}
.claim-final p{margin:0;color:#dbeafe;font-size:.9rem;max-width:58ch}
.claim-final>div{flex:1 1 340px;min-width:0}
.claim-final .btn{background:#fff;background-image:none;color:var(--brand-dark);box-shadow:none;white-space:nowrap}
.claim-final .btn:hover{background:#eaf3fb;color:var(--brand-dark);transform:translateY(-1px)}

@media(max-width:640px){
  .home-hero{padding:28px 16px 22px;border-radius:16px}
  .home-hero h1{max-width:100%}
  .home-trust{flex-direction:column;align-items:center;gap:6px}
  .home-account{padding:18px 16px}
  .home-account-actions{width:100%}
  .home-account-actions .btn{flex:1 1 auto;text-align:center}
  .dir-hero{padding:22px 18px;border-radius:16px}
  .dir-actions .btn{flex:1 1 auto;text-align:center}
  .claim-hero{padding:22px 18px;border-radius:16px}
  .claim-cta-row .btn{flex:1 1 auto;text-align:center}
  .claim-final{padding:18px 16px}
  .claim-final .btn{width:100%;text-align:center}
}

/* ---------- Guides hub (/guides/): designed directory ---------- */
.guides-hub{margin:6px 0 8px}
.guides-hub .gh-hero{background:linear-gradient(180deg,#fff,#f7fafd);border:1px solid var(--line);border-radius:20px;padding:30px 28px 26px;margin:0 0 22px;box-shadow:var(--shadow-sm)}
.guides-hub .gh-eyebrow{margin:0 0 6px;font-size:.74rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--brand)}
.guides-hub .gh-hero h1{margin:0 0 .35em;font-size:clamp(1.6rem,4.4vw,2.15rem);letter-spacing:-.02em}
.guides-hub .gh-hero .lede{margin:0 0 14px;font-size:1.04rem;line-height:1.6;color:var(--muted);max-width:70ch}
.guides-hub .gh-stats{list-style:none;display:flex;flex-wrap:wrap;gap:8px 22px;padding:0;margin:0 0 18px}
.guides-hub .gh-stats li{display:inline-flex;align-items:baseline;gap:6px;margin:0;font-size:.88rem;color:var(--muted)}
.guides-hub .gh-stats strong{font-size:1.05rem;color:var(--ink);letter-spacing:-.01em}
.guides-hub .gh-cta{display:flex;flex-wrap:wrap;gap:10px;margin:0}
.guides-hub .gh-cta .btn{margin:0}
.guides-hub .gh-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;align-items:start}
.guides-hub .gh-group{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:16px;padding:20px 22px;margin:0;box-shadow:var(--shadow-sm);position:relative}
.guides-hub .gh-group-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0 0 12px}
.guides-hub .gh-group-head h2{margin:0;font-size:1.08rem;letter-spacing:-.01em;color:var(--brand-dark)}
.guides-hub .gh-group:not(.gh-group--featured) .gh-group-head h2{padding-right:80px}
.guides-hub .gh-count{display:inline-block;position:absolute;top:17px;right:20px;font-size:.72rem;font-weight:700;color:var(--brand-dark);background:#e8f0f8;border:1px solid #d3e3f3;border-radius:999px;padding:2px 10px;letter-spacing:.02em}
.guides-hub .gh-group-desc{flex:1 1 100%;margin:6px 0 0;font-size:.88rem;line-height:1.55;color:var(--muted)}
.guides-hub .gh-links{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.guides-hub .gh-links li{margin:0;max-width:none}
.guides-hub .gh-link{display:block;padding:9px 11px;border:1px solid transparent;border-radius:10px;text-decoration:none;transition:background .15s ease,border-color .15s ease,transform .15s ease,box-shadow .15s ease}
.guides-hub .gh-link:hover{background:#f2f7fc;border-color:#d9e6f4}
.guides-hub .gh-link:focus-visible{outline:3px solid rgba(11,92,171,.55);outline-offset:2px}
.guides-hub .gh-link-name{display:block;font-weight:650;font-size:.95rem;line-height:1.35;color:var(--brand)}
.guides-hub .gh-link:hover .gh-link-name{color:var(--brand-dark);text-decoration:underline;text-underline-offset:3px}
.guides-hub .gh-link-desc{display:block;margin-top:3px;font-size:.83rem;line-height:1.5;color:var(--muted)}
/* Start-here group: full-width emphasis with small link cards */
.guides-hub .gh-group--featured{grid-column:1/-1;background:linear-gradient(160deg,#eef5fc,#fff 62%);border-color:#cfe0f2}
.guides-hub .gh-group--featured .gh-group-head h2{font-size:1.22rem}
.guides-hub .gh-group--featured .gh-count{position:static}
.guides-hub .gh-group--featured .gh-links{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.guides-hub .gh-group--featured .gh-link{background:#fff;border-color:var(--line);box-shadow:var(--shadow-sm);padding:13px 15px}
.guides-hub .gh-group--featured .gh-link:hover{transform:translateY(-2px);border-color:#c9d8ea;box-shadow:var(--shadow);background:#fff}
@media(max-width:700px){
  .guides-hub .gh-hero{padding:22px 18px 20px;border-radius:16px}
  .guides-hub .gh-groups{grid-template-columns:1fr}
  .guides-hub .gh-cta .btn{flex:1 1 auto;text-align:center}
  .guides-hub .gh-group--featured .gh-links{grid-template-columns:1fr}
}

/* ===================================================================
   Agency casework: triage-first overview, stage-filtered caseload, and the
   Start a case page. Additive only - no existing id, field or behaviour is
   changed. Body copy is 16px and every interactive target is at least 44px.
   =================================================================== */

/* One clear primary action per page. */
.dash-cta-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 16px}
.dash-cta{min-height:46px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;font-size:1rem;border-radius:12px}
.dash-cta-note{font-size:1rem;color:var(--muted);margin:0}

/* Overview triage: what needs this caseworker today. */
.dash-triage{display:flex;flex-direction:column;gap:10px}
/* The icon is a fixed column: it must never wrap onto its own line above or
   below the notification text, at any width. nowrap plus a non-shrinking,
   fixed icon keeps title and body beside it down to 390px. */
.dash-triage-item{display:flex;flex-wrap:nowrap;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fbfdff}
.dash-triage-item.is-clear{background:var(--card)}
.dash-triage-ico{flex:0 0 auto;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1rem;background:#eef3f8;color:var(--brand-dark)}
/* Tone comes from the triage signal (urgent / warn / ok) and uses the shared
   palette tokens; the backgrounds are the existing light tints. */
.dash-triage-ico.is-urgent{background:#fdecec;color:var(--accent)}
.dash-triage-ico.is-warn{background:#fff4e0;color:var(--warn)}
.dash-triage-ico.is-ok{background:#e2f4ea;color:var(--ok)}
.dash-triage-body{flex:1;min-width:0}
.dash-triage-body h3{margin:0;font-size:1rem;line-height:1.35}
.dash-triage-body p{margin:4px 0 0;font-size:1rem;line-height:1.5;color:var(--ink)}
.dash-triage-body .dash-triage-meta{margin:4px 0 0;font-size:.92rem;color:var(--muted)}
.dash-triage-body .btn{margin-top:8px}

/* Caseload stage filter: the primary axis on the Cases page. */
.stage-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.stage-chip{min-height:44px;display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font:inherit;font-size:.95rem;font-weight:600;cursor:pointer}
.stage-chip:hover{border-color:#c9d8ea;background:#f2f7fc}
.stage-chip.is-active{background:var(--brand);border-color:var(--brand);color:#fff}
/* Hovering the SELECTED chip: the shared :hover above only sets a background, so
   .is-active's white text stayed white while the fill went near-white - the label
   vanished on hover. Darken the active chip instead and keep the text white. */
.stage-chip.is-active:hover{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff}
.stage-chip .stage-chip-n{font-variant-numeric:tabular-nums;font-size:.82rem;opacity:.85}

/* Per-case next action line. */
.case-next{display:inline-block;margin-top:3px;font-size:.95rem;color:var(--brand-dark);font-weight:600}

/* Start a case: three paths, the invite path first and most prominent. */
.start-path{position:relative}
.start-path--primary{border-color:var(--brand);box-shadow:var(--shadow)}
.start-path-tag{display:inline-block;background:#e8f0fe;color:#1a56db;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:3px 10px;margin:0 0 8px}
.start-path h2{margin-top:0}
.start-path > .micro{font-size:1rem;line-height:1.55}
.start-path .dash-form label{font-size:1rem}
@media(max-width:640px){.dash-cta{width:100%}}
/* ---- Agency housing-research: controls, shortlist, marker popup, search ----
   The shortlist is the main tool on this page, so it is built phone-first:
   the phone number is large and tappable, and the controls stack at 390px. */
.housing-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px 22px}
.housing-control{display:block;font-size:.82rem;font-weight:600;color:#223349}
.housing-control input[type=range]{width:100%;margin-top:8px;padding:0;border:0;background:transparent;height:30px}
.housing-control select{margin-top:6px}
.housing-control .micro{display:block;font-weight:400;margin-top:4px}
.btn.is-on{background:var(--brand);color:#fff;border-color:var(--brand)}
.btn.is-on:hover{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff}
.housing-phone{display:inline-block;margin-top:6px;font-size:1.05rem;font-weight:700;color:var(--brand);text-decoration:none}
.housing-phone:hover{text-decoration:underline}
.housing-email{display:inline-block;font-size:.85rem;color:var(--brand);text-decoration:none;overflow-wrap:anywhere}
.housing-email:hover{text-decoration:underline}
.housing-contact-links{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:8px;font-size:.85rem;font-weight:600}
.housing-case-banner{border-left:4px solid var(--brand);background:#eef4fb;border-radius:8px;padding:10px 12px;margin:0 0 12px;font-size:.85rem}
.housing-case-tools{margin-top:14px;border-top:1px solid var(--line);padding-top:14px}
.housing-case-tools h3{font-size:1rem;margin-top:0}
.housing-time-form{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.housing-time-form label{display:block;font-size:.82rem;font-weight:600;color:#223349;margin-top:10px}
.housing-time-form label.full{grid-column:1/-1}
.housing-time-form input,.housing-time-form select{width:100%;margin-top:5px}
/* The selected pin: a thin, soft brand-coloured outline on the marker image, so
   it is obvious which pin the open details belong to. It is removed when the
   popup closes. Existing palette only, no new colours, no image assets. */
.leaflet-marker-icon.housing-marker-selected{filter:drop-shadow(0 0 2px var(--brand))}
/* The marker popup carries the property details and the Shortlist button. */
.housing-popup{min-width:0}
.housing-popup-name{display:block;font-size:1rem}
.housing-popup .housing-phone{margin-top:8px}
.housing-popup .housing-email{margin-top:2px}
.housing-popup .housing-contact-links{margin-top:10px}
.leaflet-popup-content{min-width:220px}
/* ZIP / address search: a dropdown list of matching properties. Each row is the
   call data only - phone, email and a link to the full listing. */
.housing-lookup{margin-top:12px}
.housing-lookup-row{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.housing-search-results{margin-top:10px;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:var(--shadow);max-height:360px;overflow:auto}
.housing-search-results[hidden]{display:none}
.housing-search-count{margin:0;padding:8px 12px;border-bottom:1px solid var(--line);background:#f7fafc}
.housing-search-list{list-style:none;margin:0;padding:0}
.housing-search-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--line)}
.housing-search-row:last-child{border-bottom:0}
.housing-search-link{flex:1 1 auto;min-width:0;font-weight:600;color:var(--brand);text-decoration:none;overflow-wrap:anywhere}
.housing-search-link:hover{text-decoration:underline}
.housing-search-contact{flex:0 0 auto;display:flex;flex-direction:column;gap:2px;text-align:right}
.housing-search-contact .housing-phone{margin-top:0;font-size:.95rem}
/* The shortlist beside the map is the worker's call list. */
.housing-shortlist-wrap{margin-top:0}
.housing-shortlist-empty{margin:0}
.housing-shortlist-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:8px}
.housing-shortlist-head strong{font-size:.95rem}
.housing-shortlist-head .micro{flex:1 1 auto}
.housing-shortlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.housing-shortlist li{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff}
.housing-shortlist-name{flex:1 1 auto;min-width:0;font-weight:600;overflow-wrap:anywhere}
.housing-shortlist-name a{color:var(--brand);text-decoration:none}
.housing-shortlist-name a:hover{text-decoration:underline}
.housing-shortlist-contact{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px;text-align:right}
.housing-shortlist-contact .housing-phone{margin-top:0;font-size:.95rem}
.housing-shortlist-remove{flex:0 0 auto;background:transparent;border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:5px 12px;font-size:.78rem;font-weight:700;cursor:pointer}
.housing-shortlist-remove:hover{background:#fdecec;border-color:#f3c9c6;color:#b3261e}
@media(max-width:700px){
  .housing-controls{grid-template-columns:1fr}
  .housing-time-form{grid-template-columns:1fr}
  .housing-lookup-row{grid-template-columns:1fr}
  .housing-phone{font-size:1.15rem}
  .housing-search-row{flex-wrap:wrap}
  .housing-search-link{flex:1 1 100%}
  .housing-search-contact{flex:1 1 100%;text-align:left}
  .housing-shortlist li{flex-wrap:wrap}
  .housing-shortlist-name{flex:1 1 100%;order:1}
  .housing-shortlist-remove{order:2;margin-left:auto}
  .housing-shortlist-contact{flex:1 1 100%;order:3;text-align:left}
}

/* ---------- AdSense display units ---------- */
.ad-unit{margin:24px 0;position:relative;text-align:center;min-height:0}
.ad-unit-tag{display:block;width:max-content;max-width:100%;margin:0 auto 8px;background:#eceff3;color:#7a8899;font-size:.62rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 10px;border-radius:999px;line-height:1.5}

/* Fixed-size units center via inline-block; responsive units fill the column. */
.ad-unit--fixed .adsbygoogle,.ad-unit--lb .adsbygoogle{margin:0 auto}

/* Unfilled units reserve a deliberate, labeled slot instead of a broken blank box. */
.ad-unit .adsbygoogle:empty,.ad-unit .adsbygoogle[data-ad-status="unfilled"]{background:#f8f9fb;border:1px dashed #d8dee6;border-radius:8px}
.ad-unit:not(.ad-unit--fixed) .adsbygoogle:empty,.ad-unit:not(.ad-unit--fixed) .adsbygoogle[data-ad-status="unfilled"]{min-height:120px}
@media(max-width:640px){
  .ad-unit{margin:20px 0}
  .ad-unit:not(.ad-unit--fixed) .adsbygoogle:empty,.ad-unit:not(.ad-unit--fixed) .adsbygoogle[data-ad-status="unfilled"]{min-height:100px}
}
@media(max-width:900px){.ad-unit--sidebar{display:none}}

/* Mobile-only second unit: hidden on desktop, shown on phones (where sidebars hide). */
.ad-unit--mobile{display:none}
@media(max-width:900px){.ad-unit--mobile{display:block}}

/* Keep the unit within its column without fighting AdSense's own sizing: the
   responsive units no longer request full-width (which expanded to the screen
   width and hung over the padded column), so AdSense fits this container. */
.ad-unit{max-width:100%}

/* Ads own a stacking context so map tiles / sticky layers can never paint over
   them, and unfilled units collapse instead of leaving a broken placeholder that
   overflows the column or overlaps content. */
.ad-unit{position:relative;z-index:1}
.ad-unit:has(.adsbygoogle[data-ad-status="unfilled"]){display:none!important}
.ad-unit .adsbygoogle[data-ad-status="unfilled"]{display:none!important}
/* Clip Leaflet tiles to the map box so they can't spill onto adjacent ads. */
.map-wrap{overflow:hidden}

body{overflow-x:clip}

/* AdSense's responsive (auto) units render at SCREEN width on phones, so the ad
   ends up wider than the padded column and appears to spill past the content
   edges. Make the container full-bleed on phones too, so the box matches the ad
   exactly (aligned, no overhang). Desktop stays inset in the column. */
@media(max-width:900px){
  .ad-unit{width:100vw;max-width:none;margin-left:calc(50% - 50vw);margin-right:0}
}
