/* DouxProcess Directory: the chat answer widgets (dir_widgets.py, dir-widgets.js). Chat fleet build, 2026-10-23.
   Every colour is a dir.css token (--bg --panel --line --edge --fg --muted --soft --cyan --magenta --good --hot --amber),
   tinted with color-mix, so a theme that redefines the tokens restyles the widgets with no edit here. Tap targets are
   44px or more. Phone first: nothing here is wider than its column; the comparison table scrolls inside its own box.
   No stars, no ratings, no "best": the widgets show facts in the published order and nothing else. */

.w-rows,.w-proof,.w-cmp,.w-req,.w-fu,.w-turn,.w-empty,.w-fix{--w-r:var(--r-panel,18px);--w-on:var(--w-on-accent,#001421);
  --w-tint:color-mix(in srgb,var(--cyan) 9%,transparent);--w-panel:var(--panel,#05070A);
  font-family:var(--sans);color:var(--fg);min-width:0;max-width:100%;box-sizing:border-box}
.w-rows *,.w-proof *,.w-cmp *,.w-req *,.w-fu *,.w-turn *,.w-empty *,.w-fix *{box-sizing:border-box}
.w-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.w-rows a,.w-proof a,.w-cmp a,.w-req a,.w-turn a,.w-fix a{color:inherit}
.w-k{display:block;font:500 11.5px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.w-fine{font:500 12.5px var(--sans);color:var(--soft)!important;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;
  display:inline-flex;align-items:center;min-height:44px}
.w-fine:hover{color:var(--cyan)!important}

/* ---------------------------------------------------------------- status dot, chips, buttons */
.w-st{display:inline-flex;align-items:center;gap:7px;font:500 12.5px var(--mono);letter-spacing:.02em;white-space:nowrap}
.w-st i{flex:none;width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor}
.w-st.w-ok{color:var(--good)}.w-st.w-bad{color:var(--hot)}.w-st.w-wait{color:var(--amber)}
.w-tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-width:0}
.w-chip{display:inline-flex;align-items:center;font:500 11.5px var(--mono);letter-spacing:.02em;color:var(--soft);border:1px solid var(--line);
  border-radius:7px;padding:3px 8px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.w-chip.w-cls{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 35%,transparent)}
.w-chip.w-fd{color:var(--cyan);border-color:color-mix(in srgb,var(--cyan) 40%,transparent);background:var(--w-tint)}
.w-chip.w-aff,.w-chip.w-pub{border-style:dashed;white-space:normal}
.w-chip.w-aff{color:var(--fg);border-color:var(--edge,var(--line))}
.w-pill{display:inline-flex;align-items:center;font:500 12px var(--mono);border-radius:999px;padding:5px 11px;border:1px dashed currentColor}
.w-pill.w-stated{color:var(--amber)}
.w-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.w-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 16px;border-radius:var(--r-btn,40px);
  border:1px solid var(--line);background:none;color:var(--fg)!important;font:600 14px var(--sans);text-decoration:none;white-space:nowrap;cursor:pointer}
.w-btn:hover,.w-btn:focus-visible{border-color:var(--cyan)}
.w-btn.w-ask{border-color:color-mix(in srgb,var(--cyan) 45%,var(--line))}
.w-btn.w-req-go{border-color:color-mix(in srgb,var(--magenta) 55%,var(--line))}
.w-btn.w-req-go:hover{border-color:var(--magenta)}
.w-btn.w-btn-go{background:var(--cyan);border-color:var(--cyan);color:var(--w-on)!important;box-shadow:0 0 22px -6px var(--cyan)}
.w-btn.w-btn-go[disabled]{opacity:.6;cursor:progress}
.w-copy{display:none;align-items:center;min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:none;color:var(--fg);
  font:600 12.5px var(--sans);cursor:pointer;margin-left:6px;vertical-align:middle}
.w-js .w-copy{display:inline-flex}
.w-copy:hover{border-color:var(--cyan)}.w-copy.w-done{color:var(--good);border-color:var(--good)}
.w-num{font:500 14px var(--mono);font-variant-numeric:tabular-nums}

/* ---------------------------------------------------------------- rows */
.w-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.w-row{display:grid;grid-template-columns:3.2ch minmax(0,1fr) auto;grid-template-areas:"n body acts" "n drawer drawer";column-gap:18px;row-gap:6px;
  padding:16px 18px 6px;border:1px solid var(--line);border-radius:var(--w-r);background:var(--w-panel)}
.w-row:hover{border-color:var(--edge,var(--line))}
.w-n{grid-area:n;font:300 34px/1 var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.04em;color:var(--cyan);padding-top:2px}
.w-body{grid-area:body;display:grid;gap:7px;min-width:0}
.w-name{margin:0;font:600 19px/1.25 var(--sans);letter-spacing:-.01em;overflow-wrap:anywhere}
.w-name a{text-decoration:none}.w-name a:hover{color:var(--cyan)}
.w-facts{margin:0;font:500 13px var(--mono);color:var(--soft);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.w-facts span+span{white-space:nowrap}
.w-row>.w-acts{grid-area:acts;justify-content:flex-end;align-self:start}
.w-drawer{grid-area:drawer;border-top:1px solid var(--line);margin-top:6px}
.w-drawer>summary{list-style:none;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 4px;cursor:pointer;
  font:500 12px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--soft)}
.w-drawer>summary::-webkit-details-marker{display:none}
.w-drawer>summary:hover{color:var(--cyan)}
.w-caret{display:inline-block;transition:transform .2s}
.w-drawer[open] .w-caret{transform:rotate(180deg)}
.w-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:2px 24px;margin:0 0 6px;padding:0 4px}
.w-dl>div{display:grid;grid-template-columns:8.5em minmax(0,1fr);gap:10px;align-items:baseline;padding:7px 0;border-bottom:1px dashed var(--line)}
.w-dl dt{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.w-dl dd{margin:0;font-size:14px;color:var(--fg);overflow-wrap:anywhere}
.w-proof-link{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--cyan)!important;font:600 14px var(--sans);text-decoration:none}
.w-proof-link:hover{text-decoration:underline;text-underline-offset:3px}
.w-drawer .w-proof-link{padding:0 4px 4px}
.w-foot{display:flex;flex-wrap:wrap;align-items:center;gap:4px 18px;padding:8px 4px 0}
.w-count{font:500 12.5px var(--mono);color:var(--muted);font-variant-numeric:tabular-nums}
.w-more{display:inline-flex;align-items:center;gap:6px;min-height:44px;margin-left:auto;color:var(--cyan)!important;font:600 14px var(--sans);text-decoration:none}

/* ---------------------------------------------------------------- empty state */
.w-empty{border:1px dashed var(--line);border-radius:var(--w-r);padding:20px 22px;display:grid;gap:6px;justify-items:start}
.w-empty-h{margin:0;font:600 17px var(--sans);color:var(--fg)}
.w-empty-n{margin:0;color:var(--soft);font-size:15px}
.w-empty .w-btn{margin-top:6px}

/* ---------------------------------------------------------------- proof: one business, the hero card */
.w-proof{position:relative;display:grid;gap:14px;padding:22px 24px;border:1px solid var(--line);border-radius:var(--w-r);background:var(--w-panel);
  overflow:hidden}
.w-proof:not(.w-none)::before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:linear-gradient(90deg,var(--cyan),var(--magenta));opacity:.85}
.w-proof.w-none{background:none;border:0;padding:0}
.w-ph{display:grid;gap:6px;min-width:0}
.w-pname{margin:0;font:500 clamp(24px,3.2vw,32px)/1.12 var(--sans);letter-spacing:-.025em;overflow-wrap:anywhere}
.w-pname a{text-decoration:none}.w-pname a:hover{color:var(--cyan)}
.w-sub{margin:0;color:var(--soft);font-size:15px}
.w-ph .w-tags{margin-top:4px}
.w-lic{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0;padding:12px 14px;border-radius:14px;background:var(--w-tint);
  border:1px solid color-mix(in srgb,var(--cyan) 22%,transparent)}
.w-lic-n{font:500 17px var(--mono);font-variant-numeric:tabular-nums;color:var(--fg);letter-spacing:.01em}
.w-lic .w-st{font-size:14px}
.w-when{font:500 13px var(--mono);color:var(--soft)}
.w-when::before{content:"\00b7";margin-right:10px;color:var(--muted)}
.w-about{margin:0;color:var(--soft);font-size:15px;max-width:68ch}
.w-pfacts{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:10px}
.w-pfacts li{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;min-width:0}
.w-pfacts b{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.w-pfacts span{font-size:15px;overflow-wrap:anywhere}
.w-warn{padding:12px 14px;border-radius:12px;border:1px solid color-mix(in srgb,var(--hot) 45%,transparent);
  background:color-mix(in srgb,var(--hot) 8%,transparent)}
.w-warn b{display:block;font:600 14px var(--sans);color:var(--hot)}
.w-warn ul{margin:6px 0 0;padding-left:18px;font-size:14px;color:var(--fg)}
.w-direct{margin:0;font-size:14.5px;color:var(--soft);padding-left:12px;border-left:2px solid var(--amber)}

/* ---------------------------------------------------------------- compare: a real table that scrolls in its own box */
.w-cmp{display:grid;gap:8px}
.w-cmp-scroll{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--w-r);
  background:var(--w-panel);scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.w-cmp-scroll:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.w-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}
.w-table.w-c2{min-width:520px}.w-table.w-c3{min-width:720px}.w-table.w-c4{min-width:920px}
.w-table th,.w-table td{padding:12px 14px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.w-table tbody tr:last-child>*{border-bottom:0}
.w-table thead th{font:600 15px/1.3 var(--sans);color:var(--fg);vertical-align:bottom}
.w-table thead th .w-n{display:block;font-size:22px;margin-bottom:6px}
.w-table thead th a{text-decoration:none;overflow-wrap:anywhere}.w-table thead th a:hover{color:var(--cyan)}
.w-table thead th .w-chip{margin-top:8px}
.w-table tbody th{font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.w-table th:first-child{position:sticky;left:0;z-index:1;background:var(--w-panel);width:9.5em;min-width:9.5em;
  box-shadow:1px 0 0 var(--line)}
.w-table td a{color:var(--cyan)}
.w-table td .w-when{display:block;margin-top:4px}
.w-table td .w-when::before{content:none}
.w-table td .w-btn{min-height:44px;padding:0 12px;font-size:13px;margin:0 6px 6px 0}
.w-table .w-st{white-space:normal;align-items:flex-start;line-height:1.4}
.w-table .w-st i{margin-top:5px}
.w-table .w-chip.w-aff{display:inline-block;line-height:1.35;padding:4px 8px}
.w-cmp-note{margin:0;font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;align-items:center;gap:0 12px}

/* ---------------------------------------------------------------- request form */
.w-req{display:grid;gap:14px;padding:22px 24px;border:1px solid var(--line);border-radius:var(--w-r);background:var(--w-panel);position:relative}
.w-req-h{display:grid;gap:4px}
.w-req-h h3{margin:0;font:500 22px/1.2 var(--sans);letter-spacing:-.02em;overflow-wrap:anywhere}
.w-f{display:grid;gap:6px;font:500 13px var(--sans);color:var(--soft)}
.w-f input,.w-f textarea{width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--fg);
  font:400 16px/1.4 var(--sans);outline:none;resize:vertical}
.w-f input:focus,.w-f textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 3px color-mix(in srgb,var(--cyan) 18%,transparent)}
.w-hint{font-size:12.5px;color:var(--muted)}
.w-hp{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.w-consent{display:grid;grid-template-columns:24px minmax(0,1fr);gap:12px;align-items:start;font-size:14px;color:var(--fg);cursor:pointer;
  padding:10px 12px;border:1px solid var(--line);border-radius:12px;min-height:44px}
.w-consent input{width:22px;height:22px;margin:1px 0 0;accent-color:var(--cyan)}
.w-out{margin:0;font-size:14.5px;min-height:0}
.w-out:empty{display:none}
.w-out.w-ok{color:var(--good)}.w-out.w-bad{color:var(--hot)}
.w-req.w-sent>label,.w-req.w-sent>.w-acts,.w-req.w-sent>.w-consent{display:none}
.w-req-off{gap:12px}

/* ---------------------------------------------------------------- Fix it: one first-party block on a listing with a gap (dir_fixit.py) */
.w-fix{display:grid;gap:10px;padding:18px 22px;border:1px solid color-mix(in srgb,var(--amber) 40%,transparent);border-radius:var(--w-r);
  background:color-mix(in srgb,var(--amber) 6%,var(--w-panel))}
.w-fix-h{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}
.w-fix-h .w-k{color:var(--amber)}
.w-fix-what{margin:0;font:500 16px/1.5 var(--sans);color:var(--fg);max-width:68ch}
.w-fix-who{margin:0;font-size:14px;color:var(--soft);max-width:68ch}
.w-fix .w-fix-form{margin-top:4px;background:var(--w-panel)}
.w-fix-form[hidden]{display:none}
/* the compact footnote under an answer's widget: the coverage, order, health and affiliation notes, never dropped */
.w-note{margin:8px 4px 0;font-size:12.5px;line-height:1.5;color:var(--muted);max-width:80ch}

/* ---------------------------------------------------------------- follow-up chips */
.w-fu{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.w-chipb{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border:1px solid var(--line);border-radius:var(--r-btn,40px);background:none;
  color:var(--fg);font:500 14px var(--sans);cursor:pointer;text-align:left;max-width:100%}
.w-chipb:hover,.w-chipb:focus-visible{border-color:var(--cyan);color:var(--cyan)}

/* ---------------------------------------------------------------- one whole turn (server-rendered pages) */
.w-turn{display:grid;gap:14px;margin:0 0 28px}
.w-you{margin:0;justify-self:end;max-width:min(560px,92%);display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:10px 16px;
  border:1px solid var(--line);border-radius:18px 18px 4px 18px;background:var(--w-panel)}
.w-you-k{font:500 11.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.w-q{font-size:16px;color:var(--fg);overflow-wrap:anywhere}
.w-ans{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;align-items:start}
.w-mark{font:400 22px/1.3 var(--mono);color:var(--cyan);text-shadow:0 0 14px var(--cyan)}
.w-ans-b{display:grid;gap:14px;min-width:0}
.w-say{margin:0;font-size:17px;line-height:1.55;max-width:68ch}
.w-say b,.w-say strong{font-weight:600}
.w-say a{color:var(--cyan)}

/* ---------------------------------------------------------------- phones */
@media (max-width:640px){
  .w-row{grid-template-columns:2.6ch minmax(0,1fr);grid-template-areas:"n body" "acts acts" "drawer drawer";column-gap:12px;padding:14px 14px 4px}
  .w-n{font-size:26px}
  .w-name{font-size:17.5px}
  .w-row>.w-acts{justify-content:flex-start;margin-top:4px}
  .w-row>.w-acts .w-btn{flex:1 1 auto;padding:0 12px}
  .w-dl>div{grid-template-columns:7.5em minmax(0,1fr)}
  .w-proof,.w-req,.w-fix{padding:18px 16px}
  .w-proof .w-acts .w-btn{flex:1 1 auto}
  .w-lic .w-when{flex-basis:100%}
  .w-lic .w-when::before{content:none}
  .w-pfacts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .w-pfacts .w-pf-where,.w-pfacts .w-pf-workerscomp,.w-pfacts .w-pf-class,.w-pfacts .w-pf-hours{grid-column:1/-1}
  .w-ans{grid-template-columns:minmax(0,1fr)}
  .w-mark{display:none}
  .w-more{margin-left:0}
}
/* compare under 600px: each fact becomes a labelled row with one column per business, so two fit a phone without sideways scrolling */
@media (max-width:600px){
  .w-table,.w-table thead,.w-table tbody{display:block}
  .w-table.w-c2,.w-table.w-c3,.w-table.w-c4{min-width:0}
  .w-table.w-c3,.w-table.w-c4{min-width:440px}
  .w-table tr{display:grid;grid-template-columns:repeat(var(--w-cols,2),minmax(0,1fr));border-bottom:1px solid var(--line)}
  .w-table.w-c3 tr{--w-cols:3}.w-table.w-c4 tr{--w-cols:4}
  .w-table tbody tr:last-child{border-bottom:0}
  .w-table th,.w-table td{border-bottom:0;padding:10px 12px;overflow-wrap:anywhere}
  .w-table th:first-child{position:static;grid-column:1/-1;width:auto;min-width:0;box-shadow:none;padding:12px 12px 0}
  .w-table thead th:first-child{display:none}
  .w-table thead th{font-size:14.5px}
  .w-table thead th .w-n{font-size:18px;margin-bottom:4px}
  .w-table td .w-btn{display:flex;width:100%;justify-content:center;margin:0 0 6px}
}
@media (prefers-reduced-motion:reduce){.w-caret{transition:none}}
