/* Home and /ai/, round 6 (owner, October 31: "show the tool itself", "how clean our details look", "no extra text";
   inspiration: the SurplusOS marketing site of October 26, read in its source and live). The hero is Locate itself: the
   app's side menu, a traced homeowner list, and one owner's record filled the way the product fills it (phones with line
   type, emails, addresses, possible relatives and associates with their own phones and emails). A soft cursor opens
   owners in turn. No window chrome, no labels on the picture. The canvas is drawn at the app's desktop width and zoomed
   to fit (home.js), so its anatomy never reflows; on a phone the record alone shows, laid out as the app lays it out on a
   phone. Sections below use the calm layer (calm.css: real screens, plain points, hairline cards). Site tokens; monochrome; reduced motion shows the first owner.
   App marks (Claude, ChatGPT, Claude Code, Codex, Cursor): each company's own mark, from the @lobehub/icons-static-svg 1.101.0
   package (ChatGPT's from simple-icons 13.21.0), inlined as paths; shown only to say which apps connect to Locate. */

/* The hero copy */
.hero-home .hero-copy{max-width:1080px}
.hero-home .hero-copy .lead{max-width:700px}
.hero-home .hero-fine{margin-top:20px;font-size:13px}

/* The product stage: Locate itself (design/results.js person sheet, customer-app side rail and list) -------------------- */
.hv{max-width:1200px;margin:64px auto 0}
/* Live (round 7, owner Oct 31: "it lets the cursor copy the text. It should be interactive and live"): the picture is an app,
   not a page. Nothing in it selects as text; what looks clickable is a button with a pointer, a hover and a press; the rest
   keeps the arrow. Only the search field takes a text cursor, as a field does. */
.hv-canvas{-webkit-user-select:none;user-select:none;cursor:default;-webkit-tap-highlight-color:transparent}
.hv-canvas button,.hv-canvas a.hv-ri{margin:0;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:inherit;text-decoration:none;cursor:pointer;-webkit-appearance:none;appearance:none}
.hv-canvas :is(button,a,[role=option]):focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.hv-stage{padding:44px 44px 0;border-radius:28px;background:var(--surface);overflow:hidden}
html[data-theme=dark] .hv-stage{background:#121212}
.hv-shot{position:relative;overflow:hidden;border:1px solid var(--window-line);border-bottom:0;border-radius:16px 16px 0 0;background:var(--raised);
  box-shadow:0 1px 2px rgba(10,10,10,.04),0 24px 60px -24px rgba(10,10,10,.24)}
html[data-theme=dark] .hv-shot{background:#0a0a0a;box-shadow:0 24px 60px -24px rgba(0,0,0,.8)}
/* Canvas tokens: values in full ink, secondary text one step down and still strong, labels and icons a step lower. */
.hv-canvas{--c1:var(--ink);--c2:#3d3d3d;--c3:#6a6a6a;--hair:rgba(10,10,10,.08);--panel:#f6f6f6;--hover:rgba(10,10,10,.035);--press:rgba(10,10,10,.07);
  display:grid;grid-template-columns:56px 280px minmax(0,1fr);width:1198px;height:620px;color:var(--c1);font:400 14px/20px var(--font);text-align:left}
html[data-theme=dark] .hv-canvas{--c2:#d0d0d0;--c3:#999;--hair:rgba(255,255,255,.08);--panel:#151515;--hover:rgba(255,255,255,.045);--press:rgba(255,255,255,.09)}
html:not(.js) .hv-canvas{zoom:.9}
:where(.hv) p,:where(.hv) ol{margin:0;padding:0}
.hv p+p{margin-top:0}
.hv ol{list-style:none}
.hv svg{display:block}
.hv b{font-weight:500}

/* Side rail (the app's collapsed side menu) */
.hv-rail{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 0;border-right:1px solid var(--hair)}
.hv-brand{display:grid;place-items:center;width:30px;height:30px;margin-bottom:10px;border-radius:9px;background:var(--primary);color:var(--primary-ink)}
.hv-brand svg{width:15px;height:15px;fill:currentColor}
.hv-ri{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;color:var(--c3)}
.hv-ri.is-on{background:var(--panel);color:var(--c1)}
.hv-ri:not(.is-on):hover{background:var(--hover);color:var(--c1)}
.hv-ri:active{background:var(--press)}
.hv-ri svg,.hv-find svg,.hv-h4 svg,.hv-h5 svg,.hv-copy svg,.hv-go svg,.hv-pill svg{fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}
.hv-ri svg{width:17px;height:17px}
.hv-me{display:grid;place-items:center;width:30px;height:30px;margin-top:auto;border-radius:50%;background:var(--panel);color:var(--c2);font-size:11px;font-weight:500}

/* The list: owner and property address, nothing else */
.hv-list{display:flex;flex-direction:column;min-width:0;border-right:1px solid var(--hair)}
.hv-lh{padding:18px 16px 12px}
.hv-h{font-size:16px;font-weight:500;line-height:22px}
.hv-meta{color:var(--c2);font-size:13px;line-height:18px}
.hv-find{display:flex;align-items:center;gap:8px;height:34px;margin:0 12px 8px;padding:0 12px;border:1px solid var(--hair);border-radius:999px;color:var(--c3);font-size:13px;cursor:text;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
.hv-find:hover{border-color:rgba(10,10,10,.16)}
html[data-theme=dark] .hv-find:hover{border-color:rgba(255,255,255,.18)}
.hv-find:focus-within{border-color:var(--c3);box-shadow:0 0 0 3px var(--hover)}
.hv-find input{flex:1 1 auto;min-width:0;height:100%;margin:0;padding:0;border:0;outline:0;background:none;color:var(--c1);font:400 13px/18px var(--font);-webkit-user-select:text;user-select:text;cursor:text;-webkit-appearance:none;appearance:none}
.hv-find input::placeholder{color:var(--c3);opacity:1}
.hv-find input::-webkit-search-cancel-button{-webkit-appearance:none}
.hv-find svg{width:14px;height:14px}
.hv-items{flex:1 1 auto;overflow:hidden;padding:0 8px!important}
.hv-row{display:flex;flex-direction:column;justify-content:center;height:52px;padding:0 10px;border-radius:10px;cursor:pointer;transition:background-color .2s var(--ease)}
.hv-row:hover{background:var(--hover)}
.hv-row.is-on{background:var(--press)}
.hv-row:active{background:var(--press)}
.hv-row:focus-visible{outline-offset:-2px}
.hv-empty{padding:14px 10px;color:var(--c2);font-size:13px}
.hv-row b,.hv-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hv-row span{color:var(--c2);font-size:13px;line-height:18px}

/* One owner's sheet */
.hv-detail{position:relative;min-width:0;overflow:hidden}
.hv-person{position:absolute;inset:0;padding:20px 24px;animation:hv-in .4s var(--ease)}
@keyframes hv-in{from{opacity:0;transform:translateY(6px)}}
.hv-person:not(.is-on){visibility:hidden;opacity:0}
.hv-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.hv-head>div{min-width:0}
.hv-name{font-size:20px;font-weight:500;line-height:26px;letter-spacing:-.01em}
.hv-head .hv-meta{margin-top:2px!important}
.hv-pill{display:inline-flex;flex:none;align-items:center;gap:6px;height:30px;padding:0 12px;border:1px solid var(--hair);border-radius:999px;color:var(--c1);font-size:13px;font-weight:500;transition:background-color .2s var(--ease),transform .15s var(--ease)}
.hv-canvas .hv-pill{padding:0 12px;border:1px solid var(--hair)}
.hv-pill:hover{background:var(--hover)}
.hv-pill:active{background:var(--press);transform:scale(.97)}
.hv-pill .hv-out,.hv-pill[aria-pressed=false] .hv-in{display:none}
.hv-pill[aria-pressed=false] .hv-out{display:block}
.hv-pill[aria-pressed=false]{color:var(--c2)}
.hv-pill svg{width:14px;height:14px}
.hv-sheet{display:grid;grid-template-columns:minmax(0,1.14fr) minmax(0,1fr);align-items:start;gap:12px;margin-top:16px}
.hv-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.hv-panel{min-width:0;padding:0 16px 4px;border-radius:14px;background:var(--panel)}
.hv-h4{display:flex;align-items:center;gap:8px;height:44px;font-size:14px;font-weight:500}
.hv-h4 svg,.hv-h5 svg{flex:none;width:16px;height:16px;color:var(--c3)}
.hv-n{color:var(--c3);font-size:13px;font-weight:400;font-variant-numeric:tabular-nums}
.hv-sub+.hv-sub{margin-top:6px}
.hv-h5{display:flex;align-items:center;gap:8px;height:36px;border-bottom:1px solid var(--hair);color:var(--c2);font-size:13px;font-weight:500}
.hv-copy{position:relative;display:grid;flex:none;place-items:center;width:16px;color:var(--c3)}
.hv-h5 .hv-copy{margin-left:auto}
.hv-copy svg{width:14px;height:14px}
/* A copy button: a 24px target drawn over the 16px slot (so rows keep their alignment), a check and Copied for 1.5 s */
button.hv-copy{width:24px;height:24px;margin:-4px;border-radius:7px;transition:background-color .15s var(--ease),color .15s var(--ease),transform .12s var(--ease)}
button.hv-copy:hover{background:var(--press);color:var(--c1)}
button.hv-copy:active{transform:scale(.9)}
.hv-copy .hv-ok,.hv-copy.is-copied .hv-cp{display:none}
.hv-copy.is-copied .hv-ok{display:block}
.hv-copy.is-copied{color:var(--c1)}
.hv-copy.is-copied::after{content:'Copied';position:absolute;right:-2px;bottom:calc(100% + 4px);z-index:2;padding:2px 8px;border-radius:999px;background:var(--c1);box-shadow:0 4px 12px -4px rgb(0 0 0 / .3);color:var(--raised);font:500 12px/16px var(--font);white-space:nowrap;animation:hv-copied .2s var(--ease)}
html[data-theme=dark] .hv-copy.is-copied::after{color:#0a0a0a}
@keyframes hv-copied{from{opacity:0;transform:translateY(3px)}}
.hv-r{display:flex;align-items:center;gap:12px;min-height:40px;padding:6px 0;border-bottom:1px solid var(--hair)}
.hv-r:last-child{border-bottom:0}
.hv-v{min-width:0;color:var(--c1);font-weight:400;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hv-plain{flex:1 1 auto;font-weight:400;white-space:normal}
.hv-r>.hv-v:first-child:not(.hv-plain){flex:1 1 auto}
.hv-m{flex:none;color:var(--c3);font-size:13px;font-variant-numeric:tabular-nums}
.hv-phone .hv-v{flex:none!important;width:8.4em}
.hv-phone .hv-m{flex:1 1 auto}
.hv-st{flex:none;color:var(--c3);font-size:13px}
/* Phone status (owner, Nov 1: "Connected" read as dull grey, the same size and grey as the line type beside it): the
   app's badge (customer-app tokens.css .badge) with a check line mark (DESIGN.md: line marks, never dots), monochrome,
   the word itself plain text. Numbers are 500 as in the app; the line type stays the muted 13 detail. */
:is(.lv-st,.hv-st,.gc-s):not(:empty){display:inline-flex;align-items:center;gap:4px;min-height:22px;padding:0 8px 0 6px;border-radius:999px;font:500 12px/16px var(--font);white-space:nowrap}
:is(.lv-st,.hv-st,.gc-s):not(:empty)::before{content:'';flex:none;width:12px;height:12px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 8 3 3 7-7'/%3E%3C/svg%3E") center/12px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 8 3 3 7-7'/%3E%3C/svg%3E") center/12px no-repeat}
:is(.hv-st,.gc-s):empty{display:none}
.hv-st{background:#e9e9e9;color:var(--c2)}
html[data-theme=dark] .hv-st{background:#262626}
.hv-phone .hv-v{font-weight:500}
.hv-r>.hv-copy{margin-left:auto}
/* Possible relatives and associates: the app's ledger rows */
.hv-rel{display:grid;grid-template-columns:minmax(0,1fr) auto 16px;grid-template-areas:"name contact go" "kind contact go";align-items:center;gap:0 14px;padding:8px 0;border-top:1px solid var(--hair)}
/* A relative or associate opens their own sheet: the row lights across the panel's padding, the arrow nudges */
.hv-canvas button.hv-rel{width:100%;padding:8px 0;border-top:1px solid var(--hair);border-radius:0;transition:background-color .15s var(--ease),box-shadow .15s var(--ease)}
.hv-canvas .hv-h4+button.hv-rel{border-top:0}
button.hv-rel:hover{background:var(--hover);box-shadow:-10px 0 0 var(--hover),10px 0 0 var(--hover)}
button.hv-rel:active{background:var(--press);box-shadow:-10px 0 0 var(--press),10px 0 0 var(--press)}
button.hv-rel .hv-go{transition:transform .2s var(--ease)}
button.hv-rel:hover .hv-go{transform:translateX(2px);color:var(--c1)}
.hv-none{padding:10px 0 12px;color:var(--c2);font-size:13px}
.hv-h4+.hv-rel,.hv-h4+.hv-r{border-top:0}
.hv-panel>.hv-r{border-top:1px solid var(--hair);border-bottom:0}
.hv-panel>.hv-h4+.hv-r{border-top:0}
.hv-rn{grid-area:name;overflow:hidden;color:var(--c1);text-overflow:ellipsis;white-space:nowrap}
.hv-rk{grid-area:kind;overflow:hidden;color:var(--c3);font-size:13px;line-height:18px;text-overflow:ellipsis;white-space:nowrap}
.hv-rc{display:flex;grid-area:contact;flex-direction:column;align-items:flex-end}
.hv-rc .hv-v{color:var(--c2);font-weight:400}
.hv-more{color:var(--c3);font-size:13px;line-height:18px}
.hv-go{grid-area:go;color:var(--c3)}
.hv-go svg{width:14px;height:14px}

/* The cursor that opens owners (home.js) */
.hv-cursor{position:absolute;top:0;left:0;z-index:3;width:22px;height:22px;opacity:0;pointer-events:none;transform:translate(900px,560px);
  transition:transform 1s var(--ease),opacity .3s var(--ease);filter:drop-shadow(0 1px 2px rgba(0,0,0,.25))}
.hv-cursor path{fill:#0a0a0a;stroke:#fff;stroke-width:1.4;stroke-linejoin:round}
.hv-cursor.is-on{opacity:1}
.hv-cursor.is-press path{fill:#3b3b3b}

/* On a phone: the sheet alone, one column, as the app lays it out on a phone. */
.hv-canvas.is-compact{display:block;width:auto;height:auto;max-height:660px;overflow:hidden;
  -webkit-mask:linear-gradient(#000 84%,transparent);mask:linear-gradient(#000 84%,transparent)}
.is-compact .hv-rail{display:none}
/* On a phone the list becomes a row of owners above the sheet: tap one to open it (swipe for more) */
.hv-canvas.is-compact .hv-list{display:block;border-right:0;border-bottom:1px solid var(--hair)}
.is-compact .hv-lh,.is-compact .hv-find,.is-compact .hv-row span{display:none}
.is-compact .hv-items{display:flex;gap:6px;padding:12px 14px!important;overflow-x:auto;scrollbar-width:none}
.is-compact .hv-items::-webkit-scrollbar{display:none}
.is-compact .hv-row{flex:none;height:34px;padding:0 14px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--hair)}
.is-compact .hv-row.is-on{box-shadow:none}
.is-compact .hv-row b{font-size:13px}
.is-compact .hv-person{position:static;padding:16px 14px}
.is-compact .hv-person:not(.is-on){display:none}
.hv-canvas.is-compact .hv-head{flex-wrap:wrap;gap:10px}
.is-compact .hv-r{gap:10px}.is-compact .hv-phone .hv-v{width:auto}
.is-compact .hv-sheet{grid-template-columns:minmax(0,1fr)}
.is-compact~.hv-cursor{display:none}

@media (max-width:760px){.hv{margin-top:40px}.hv-stage{padding:16px 12px 0;border-radius:22px}}
@media (prefers-reduced-motion:reduce){.hv-person,.hv-row,.hv-cursor,.hv-copy.is-copied::after{transition:none;animation:none}}

/* The apps that connect: each one's own mark on an app tile (the /ai/ connect cards; the home line is calm.css .works-in) */
.app-tile{display:grid;place-items:center;width:64px;height:64px;border-radius:16px;box-shadow:inset 0 0 0 1px rgba(10,10,10,.08),0 1px 2px rgba(10,10,10,.06),0 8px 20px -10px rgba(10,10,10,.25)}
html[data-theme=dark] .app-tile{box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),0 8px 20px -10px rgba(0,0,0,.8)}
.app-tile svg{width:34px;height:34px}
.app-claude{background:#faf9f5}
.app-claude-code{background:#141413}
.app-codex{background:#fff}
.app-chatgpt{background:#fff;color:#000}
.app-chatgpt svg{fill:currentColor}
.app-codex svg{width:64px;height:64px;border-radius:16px}
.app-cursor{background:#0a0a0a;color:#edecec}

/* /ai/ (round 7 v3): the hero is Locate's real sheet inside Claude; what to ask is plain sentences */
.ai-hero .hero-copy .actions{margin-top:28px}
.mcp-pill{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 12px;margin-top:20px!important;color:var(--muted);font-size:14px}
.mcp-pill code{padding:8px 14px;border-radius:999px;background:none;box-shadow:inset 0 0 0 1px var(--hl);color:var(--ink);font:400 var(--data)/1.4 var(--mono)}
.ai-hero-shot{max-width:720px;margin:56px auto 0}
.ai-hero-demo{max-width:900px;margin:48px auto 0}
.ai-hero .works-in{margin-top:32px}
.asks-plain{display:grid;margin:32px 0 0;padding:0;list-style:none}
.asks-plain li{padding:16px 0;border-top:1px solid var(--hl);color:var(--ink);font-size:17px;line-height:1.45;letter-spacing:-.005em}
.asks-plain li:last-child{border-bottom:1px solid var(--hl)}
.asks-plain li{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:baseline;gap:4px 40px}
.asks-plain .ans{color:var(--muted);font-size:15px;line-height:1.5}
@media (max-width:760px){.asks-plain li{grid-template-columns:minmax(0,1fr)}}
.charge{margin-top:48px}
@media (max-width:640px){.ai-hero-shot{margin-top:40px}.asks-plain li{font-size:16px}.charge{margin-top:32px}}

/* /ai/ (round 7 v3): how to connect each app, four cells of one hairline card (calm.css .hl-grid) */
.client{display:flex;flex-direction:column;gap:10px;padding:32px}
.client-head{display:flex;align-items:center;gap:14px;margin-bottom:6px}
.client-head .app-tile{width:44px;height:44px;border-radius:12px}
.client-head .app-tile svg{width:24px;height:24px}
.client-head .app-codex svg{width:44px;height:44px;border-radius:12px}
.client h3{margin:0;font-size:19px;letter-spacing:-.012em}
.client .sub{color:var(--muted);font-size:15px}
.client p,.client li{color:var(--ink-2);font-size:15px;line-height:1.55}
.client b{color:var(--ink);font-weight:500}
.client ol{display:grid;gap:4px;margin:0;padding-left:20px}
.client code{display:block;padding:12px 14px;border-radius:12px;background:var(--surface);color:var(--ink);font:400 var(--data)/1.5 var(--mono);overflow-wrap:anywhere}
@media (max-width:640px){.client{padding:24px 20px}}

/* See the difference (round 7, owner: "a demo between other companies' UI, like a 90s UI ... we have the same data with a
   clean UI"). One made-up owner record twice: a typical old skip trace screen (no real company's screen, none named) over
   Locate's person sheet, with a slider between them (a range input over the picture: drag, click or arrow keys). It
   sweeps once when it first comes into view; reduced motion leaves it in the middle. Drawn at a fixed design size and
   zoomed to fit, like the hero; a phone gets a narrower design. */
.cmp{max-width:1002px;margin:0 auto}
.cmp-frame{position:relative;overflow:hidden;border:1px solid var(--window-line);border-radius:20px;background:var(--raised);box-shadow:var(--window-shadow)}
.cmp-frame:has(.cmp-range:focus-visible){outline:2px solid var(--focus);outline-offset:3px}
.cmp-canvas{--c1:var(--ink);--c2:#3d3d3d;--c3:#6a6a6a;--hair:rgba(10,10,10,.08);--panel:#f6f6f6;
  position:relative;width:1000px;height:640px;overflow:hidden;text-align:left}
html[data-theme=dark] .cmp-canvas{--c2:#d0d0d0;--c3:#999;--hair:rgba(255,255,255,.08);--panel:#151515}
html:not(.js) .cmp-canvas{zoom:.9}
.cmp-new{position:absolute;inset:0;z-index:2;clip-path:inset(0 0 0 var(--x));background:var(--raised);color:var(--c1);font:400 14px/20px var(--font)}
.cmp-new.hv{max-width:none;margin:0}
html[data-theme=dark] .cmp-new{background:#0a0a0a}
.cmp-person{position:relative!important;inset:auto!important;padding:24px 28px!important}
/* Contacts on the right, so the middle of the slider puts the old phone grid beside Locate's phone numbers */
.cmp-person .hv-sheet{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
.cmp-person .hv-contact{order:2}
.cmp-tag{display:none}
.cmp-switch{display:none}
/* The typical screen (owner, Nov 2: "old looks 90s, no one uses that, be realistic"): today's crowded results dashboard.
   A busy top bar with a credits upsell, a banner, five actions, six stat chips, then one wide table that spreads each
   owner's phones over Phone 1/2/3 columns with DNC and score chips, the same owner buried in row three. Small type,
   capitals from the county file, everything at the same weight. */
.cmp-old{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;overflow:hidden;background:#f6f7f9;color:#1f2937;
  font:400 12px/16px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;text-align:left}
.cmp-old p{margin:0}
.cmp-old i{font-style:normal}
.t-top{display:flex;align-items:center;gap:16px;height:48px;padding:0 16px;background:#111827;color:#9ca3af}
.t-logo{flex:none;width:22px;height:22px;border-radius:6px;background:#374151}
.t-nav{display:flex;gap:16px;white-space:nowrap}
.t-nav .on{color:#fff;font-weight:600}
.t-credits{margin-left:auto;padding:3px 9px;border-radius:999px;background:#1f2937;color:#e5e7eb;font-weight:600;white-space:nowrap}
.t-buy{padding:6px 12px;border-radius:6px;background:#f59e0b;color:#111827;font-weight:700;white-space:nowrap}
.t-av{flex:none;width:26px;height:26px;border-radius:50%;background:#4b5563}
.t-banner{padding:7px 16px;background:#eff6ff;border-bottom:1px solid #bfdbfe;color:#1e3a8a;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.t-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:14px 16px 10px}
.t-crumb{color:#6b7280;font-size:11px}
.t-title{margin-top:2px!important;color:#111827;font-size:18px;font-weight:700;line-height:24px}
.t-actions{display:flex;gap:6px;white-space:nowrap}
.t-actions span{padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;font-weight:600}
.t-actions .t-primary{border-color:#2563eb;background:#2563eb;color:#fff}
.t-stats{display:flex;gap:6px;padding:0 16px 10px;white-space:nowrap}
.t-stats span{padding:4px 9px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;color:#6b7280}
.t-stats b{color:#111827}
.t-table{flex:1;min-height:0;margin:0 16px;overflow:hidden;border:1px solid #e5e7eb;border-radius:8px;background:#fff}
.t-table table{width:1500px;border-collapse:collapse;table-layout:fixed}
.t-table th,.t-table td{height:34px;padding:0 10px;overflow:hidden;border-bottom:1px solid #eef0f3;text-overflow:ellipsis;white-space:nowrap}
.t-table th{height:32px;background:#f9fafb;color:#6b7280;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.t-table tr:nth-child(even) td{background:#fbfbfc}
.t-table tr.on td{background:#fef9c3}
.t-table .cb{width:34px}
.t-table .cb i{display:block;width:13px;height:13px;border:1px solid #9ca3af;border-radius:3px;background:#fff}
.t-table th:nth-child(2){width:150px}.t-table th:nth-child(3),.t-table th:nth-child(4){width:230px}
.t-table th:nth-child(5),.t-table th:nth-child(8),.t-table th:nth-child(11){width:118px}
.t-table th:nth-child(6),.t-table th:nth-child(9){width:72px}.t-table th:nth-child(7),.t-table th:nth-child(10){width:52px}
.t-table th:nth-child(12){width:190px}.t-table th:nth-child(13){width:66px}
.t-table .nm{color:#111827;font-weight:600}
.t-table .ph{color:#2563eb;font-variant-numeric:tabular-nums}
.t-dnc{padding:1px 6px;border-radius:4px;background:#f3f4f6;color:#4b5563;font-size:11px;font-weight:600}
.t-dnc.y{background:#fee2e2;color:#b91c1c}
.t-sc{display:inline-block;min-width:28px;padding:1px 6px;border-radius:4px;font-size:11px;font-weight:700;text-align:center}
.t-sc.hi{background:#dcfce7;color:#15803d}.t-sc.mid{background:#fef3c7;color:#b45309}.t-sc.lo{background:#fee2e2;color:#b91c1c}
.t-sc.t-none{background:#f3f4f6;color:#6b7280}
.t-foot{display:flex;align-items:center;gap:16px;padding:10px 16px 12px;color:#6b7280;white-space:nowrap}
.t-pages{display:flex;gap:4px;margin-left:auto}
.t-pages i{display:grid;place-items:center;min-width:24px;height:24px;padding:0 4px;border:1px solid #e5e7eb;border-radius:5px;background:#fff;color:#374151}
.t-pages i.on{border-color:#2563eb;background:#2563eb;color:#fff}
.cmp-line{position:absolute;top:0;bottom:0;left:var(--x);z-index:3;width:2px;margin-left:-1px;background:#fff;box-shadow:0 0 0 1px rgba(10,10,10,.18);pointer-events:none}
.cmp-knob{position:absolute;top:50%;left:50%;display:grid;place-items:center;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:linear-gradient(180deg,#fff,#f1f1f3);box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(10,10,10,.12),0 8px 20px -6px rgba(10,10,10,.35);color:#171717;transition:transform .35s cubic-bezier(.3,1.5,.5,1),box-shadow .25s var(--ease)}
.cmp-frame:hover .cmp-knob,.cmp.is-live .cmp-knob{transform:scale(1.08);box-shadow:inset 0 1px 0 #fff,0 0 0 1px rgba(10,10,10,.14),0 12px 26px -8px rgba(10,10,10,.4)}
.cmp-frame:active .cmp-knob{transform:scale(.94)}
.cmp-line{transition:box-shadow .25s var(--ease)}
@media (prefers-reduced-motion:reduce){.cmp-knob{transition:none}}
.cmp-knob svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.cmp-tag{position:absolute;bottom:16px;z-index:3;padding:5px 12px;border-radius:999px;font:500 13px/18px var(--font);pointer-events:none;transition:opacity .2s var(--ease)}
.cmp-tag-old{left:16px;background:#000080;color:#fff}
.cmp-tag{box-shadow:0 4px 12px -4px rgba(0,0,0,.3)}
.cmp-tag-new{right:16px;background:var(--primary);color:var(--primary-ink)}
.cmp-range{position:absolute;inset:0;z-index:4;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;-webkit-appearance:none;appearance:none}
/* A phone: a narrower design, the sheet in one column, the old grid without its extra columns */
.cmp-canvas.is-compact{width:356px;height:620px}
.is-compact .t-nav span:nth-child(n+3),.is-compact .t-credits,.is-compact .t-actions span:nth-child(-n+3),.is-compact .t-stats span:nth-child(n+4),.is-compact .t-crumb{display:none}
.is-compact .t-top{gap:12px;padding:0 12px}.is-compact .t-banner{padding:7px 12px}
.is-compact .t-head{flex-direction:column;align-items:flex-start;padding:12px 12px 8px}.is-compact .t-stats{padding:0 12px 8px}
.is-compact .t-table{margin:0 12px}.is-compact .t-foot span:first-child{display:none}.is-compact .t-foot{padding:8px 12px 10px}
.is-compact .cmp-person{padding:16px!important}
.is-compact .cmp-person .hv-pill{display:none}
.is-compact .cmp-person .hv-head{flex-direction:row}.is-compact .cmp-person .hv-head>div{text-align:left}
.is-compact .cmp-person .hv-contact{order:0}
.is-compact .cmp-person .hv-sheet{grid-template-columns:minmax(0,1fr)}
.is-compact .cmp-person .hv-pill{display:none}
@media (prefers-reduced-motion:reduce){.cmp-tag{transition:none}}

/* Bulk skip tracing (round 7): a traced list in Locate (partials/bulk-hero.html), the same rail and tokens as the home hero. */
.bv-canvas{grid-template-columns:56px minmax(0,1fr);height:600px}
.bv-main{display:flex;flex-direction:column;min-width:0;padding:20px 24px 0}
.bv-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.bv-export{flex:none;padding:7px 16px;border-radius:999px;background:var(--primary);color:var(--primary-ink);font-size:13px;font-weight:500}
.bv .hv-tags{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 14px!important}
.bv .hv-tags span{padding:3px 11px;border:1px solid var(--hair);border-radius:999px;color:var(--c2);font-size:12px;font-weight:500}
.bv-table{width:100%;border-collapse:collapse;table-layout:fixed}
.bv-table th,.bv-table td{height:46px;padding:0 12px;overflow:hidden;border-bottom:1px solid var(--hair);color:var(--c2);font-size:13px;font-weight:400;text-align:left;text-overflow:ellipsis;white-space:nowrap}
.bv-table thead th{height:36px;color:var(--c3);font-size:12px;font-weight:500}
.bv-table th:first-child,.bv-table td:first-child{padding-left:0}
.bv-table tbody th{color:var(--c1);font-size:14px;font-weight:500}
.bv-table th:first-child{width:19%}.bv-table th:nth-child(2){width:24%}.bv-table th:nth-child(3){width:21%}
.bv-num{width:84px;text-align:right!important;font-variant-numeric:tabular-nums}
.bv-ph b{color:var(--c1);font-weight:500;font-variant-numeric:tabular-nums}
.bv-ph i{margin-left:8px;padding:0 7px;border:1px solid var(--hair);border-radius:999px;color:var(--c2);font-size:11px;font-style:normal;font-weight:500;line-height:18px}
.bv-none{color:var(--c3)!important}
.bv-canvas.is-compact{display:block;width:auto;height:auto}
.bv-canvas.is-compact .hv-rail{display:none}
.bv-canvas.is-compact .bv-main{padding:16px 14px 8px}
.bv-canvas.is-compact .bv-table th:nth-child(2),.bv-canvas.is-compact .bv-table td:nth-child(2),.bv-canvas.is-compact .bv-mail,.bv-canvas.is-compact .bv-num{display:none}
.bv-canvas.is-compact .bv-table th:first-child{width:46%}

/* A phone: two buttons switch the whole picture instead of a thin split */
.cmp:has(.is-compact) .cmp-switch{display:flex;width:max-content;gap:2px;margin:12px auto;padding:3px;border-radius:999px;background:var(--surface)}
.cmp-switch button{min-height:34px;padding:0 16px;border:0;border-radius:999px;background:none;color:var(--muted);font:500 14px/1 var(--font);white-space:nowrap;cursor:pointer}
.cmp-switch button[aria-pressed=true]{background:var(--raised);box-shadow:0 0 0 1px var(--line-strong);color:var(--ink)}
.cmp:has(.is-compact) .cmp-range,.cmp:has(.is-compact) .cmp-line,.cmp:has(.is-compact) .cmp-tag{display:none}

/* Before and after (round 7, owner Oct 31: "show a difference ... before and after in a motion graphics section"; no grey
   band behind Locate's columns; partials/before-after.html). The customer's file, then the same file with Locate's
   columns after theirs: their headers wipe in, each cell shimmers while it loads, then shows its value.
   It plays by itself while in view and pauses under the pointer; the switch takes over; reduced motion shows After. */
.ba{max-width:1200px;margin:56px auto 0}
.ba .hv{margin-top:0}
.ba-switch{position:relative;display:grid;grid-template-columns:1fr 1fr;width:max-content;margin:0 auto 20px;padding:3px;border-radius:999px;background:var(--surface)}
html:not(.js) .ba-switch{display:none}
.ba-switch button{position:relative;z-index:1;min-width:96px;height:34px;padding:0 18px;border:0;border-radius:999px;background:none;color:var(--muted);font:500 14px/1 var(--font);cursor:pointer;transition:color .3s var(--ease)}
.ba-switch button[aria-pressed=true]{color:var(--ink)}
.ba-switch button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.ba-thumb{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:999px;background:var(--raised);box-shadow:0 0 0 1px var(--line-strong),0 1px 2px rgba(10,10,10,.06);transition:transform .5s cubic-bezier(.3,1.25,.4,1)}
html[data-theme=dark] .ba-thumb{background:#262626;box-shadow:none}
.ba[data-state=after] .ba-thumb{transform:translateX(100%)}
.ba-canvas{--sk:#e8e8e8}
html[data-theme=dark] .ba-canvas{--sk:#262626}
.ba-x{display:grid}
.ba-x>*{grid-area:1/1;transition:opacity .3s var(--ease)}
.bv-export.ba-x{justify-items:center}
.ba[data-state=after] .ba-b,.ba[data-state=before] .ba-a{opacity:0}
/* The grid: four of the file's columns, then Locate's three, measured to their longest values so nothing is cut */
.ba-t{display:grid;grid-template-columns:84px 136px 212px 64px 152px 160px minmax(0,1fr);margin-top:20px}
.ba-t>span{position:relative;height:46px;padding:0 12px;overflow:hidden;border-bottom:1px solid var(--hair);color:var(--c2);font-size:13px;line-height:46px;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}
.ba-t>.ba-k0,.ba-t>.ba-gy{padding-left:0}
.ba-t>.ba-k4,.ba-t>.ba-gl{padding-left:20px}
.ba-t>.ba-k1:not(.ba-h){color:var(--c1);font-size:14px;font-weight:500}
.ba-t>.ba-k4:not(.ba-h) .ba-v{color:var(--c1);font-weight:500}
.ba-t>.ba-h{height:36px;color:var(--c3);font-size:12px;font-weight:500;line-height:36px}
.ba-t>.ba-gy,.ba-t>.ba-gl{height:30px;border-bottom:0;font-size:12px;font-weight:500;line-height:30px}
.ba-t>.ba-gy{grid-column:span 4;margin-right:20px;border-bottom:1px solid var(--hair);color:var(--c3)}
.ba-t>.ba-gl{grid-column:span 3;color:var(--c1);background:linear-gradient(var(--c1),var(--c1)) 20px 100%/calc(100% - 20px) 1px no-repeat}
/* Before, Locate's columns are empty cells; After, their headers wipe in and the values arrive in a diagonal wave:
   a loading shimmer in each cell, then the value. */
.ba-hv,.ba-gl{display:inline-block;clip-path:inset(0 0 0 0);transition:clip-path .5s var(--ease) calc(var(--c) * 110ms)}
.ba-t>.ba-gl{display:block}
.ba[data-state=before] .ba-hv,.ba[data-state=before] .ba-gl{clip-path:inset(0 100% 0 0);transition:clip-path .3s var(--ease)}
.ba-v{display:inline-block;transition:opacity .35s var(--ease) calc(var(--c) * 110ms + var(--r) * 80ms + 780ms),transform .35s var(--ease) calc(var(--c) * 110ms + var(--r) * 80ms + 780ms)}
.ba[data-state=before] .ba-v{opacity:0;transform:translateY(4px);transition:opacity .2s,transform 0s .2s}
.ba-sk{position:absolute;top:19px;left:12px;width:64%;height:8px;border-radius:4px;opacity:0;pointer-events:none;
  background:linear-gradient(90deg,var(--panel) 25%,var(--sk) 50%,var(--panel) 75%) 0 0/200% 100%}
.ba-k4 .ba-sk{left:20px;width:56%}
.ba[data-state=after] .ba-sk{animation:ba-shim 1.1s linear infinite,ba-life 1s var(--ease) calc(var(--c) * 110ms + var(--r) * 80ms) both}
@keyframes ba-shim{to{background-position:-200% 0}}
@keyframes ba-life{0%{opacity:0}15%{opacity:1}75%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.ba-hv,.ba-gl,.ba-v,.ba-thumb,.ba-x>*,.ba-switch button{transition:none!important}.ba[data-state=after] .ba-sk{animation:none}}
/* A phone: the owner and stage from the file, then Locate's phone */
.ba-canvas.is-compact .ba-t{grid-template-columns:minmax(0,1fr) 52px 124px}
.ba-canvas.is-compact .ba-k0,.ba-canvas.is-compact .ba-k2,.ba-canvas.is-compact .ba-k5,.ba-canvas.is-compact .ba-k6{display:none}
.ba-canvas.is-compact .ba-t>span{padding:0 8px}
.ba-canvas.is-compact .ba-t>.ba-k1,.ba-canvas.is-compact .ba-t>.ba-gy{padding-left:0}
.ba-canvas.is-compact .ba-t>.ba-k4,.ba-canvas.is-compact .ba-t>.ba-gl{padding:0 0 0 12px}
.ba-canvas.is-compact .ba-t>.ba-gy{grid-column:span 2;margin-right:12px}
.ba-canvas.is-compact .ba-t>.ba-gl{grid-column:span 1;background-position:12px 100%;background-size:calc(100% - 12px) 1px}
.ba-canvas.is-compact .ba-k4 .ba-sk{left:12px;width:76%}
.ba-canvas.is-compact .bv-head{flex-wrap:wrap}
@media (max-width:760px){.ba{margin-top:40px}.ba-switch{margin-bottom:14px}}
.bv-canvas.is-compact .bv-ph i{display:none}
.bv-canvas.is-compact .bv-table{table-layout:auto}
.bv-canvas.is-compact .bv-table th{width:auto!important}
.bv-canvas.is-compact .bv-table td.bv-ph{text-align:right}
.bv-canvas.is-compact .bv-table th:nth-child(3){text-align:right}

/* Live ports of Locate's screens (round 7 home v4, owner Oct 31: "bring the actual component there"; after the SurplusOS
   home mockups). Each is the app's own anatomy, type and tokens (customer-app design/tokens.css, workspace.css,
   workspace-homeowners.css, app.css), built as HTML at the app's desktop width and zoomed to fit its frame (home.js
   [data-fit]); a frame under 700px gets the app's phone layout instead. Made-up data (gen/live.py). ----------------- */
.lv{--a-bg:#fff;--a-surface:#fff;--a-2:#f6f6f7;--a-3:#ececee;--a-line:#ececee;--a-line-2:#dcdde0;--a-ink:#1a1c1f;--a-ink-2:#3c3f44;--a-muted:#6b6f76;
  --a-faint:#8e9299;--a-primary:#1a1c1f;--a-primary-ink:#fff;--a-side:#f9f9fa;--a-hover:#fafafb;--a-chosen:#f4f4f6;--a-nav:rgba(26,28,31,.07);--a-nav-hover:rgba(26,28,31,.045);
  --a-card:0 0 0 1px rgba(26,28,31,.08),0 1px 2px rgba(26,28,31,.04);--a-pop:0 0 0 1px rgba(26,28,31,.08),0 4px 10px -2px rgba(26,28,31,.06),0 18px 40px -12px rgba(26,28,31,.2);
  --a-ease:cubic-bezier(.22,1,.36,1);color:var(--a-ink);font:400 14px/20px var(--font);text-align:left;-webkit-font-smoothing:antialiased}
html[data-theme=dark] .lv{--a-bg:#000;--a-surface:#0a0a0a;--a-2:#141414;--a-3:#1f1f1f;--a-line:#1f1f1f;--a-line-2:#2e2e2e;--a-ink:#ededed;--a-ink-2:#d4d4d4;--a-muted:#a1a1a1;
  --a-faint:#878787;--a-primary:#ededed;--a-primary-ink:#000;--a-side:#0a0a0a;--a-hover:#0f0f0f;--a-chosen:#141414;--a-nav:rgba(255,255,255,.09);--a-nav-hover:rgba(255,255,255,.06);
  --a-card:0 0 0 1px #1f1f1f;--a-pop:0 0 0 1px #2e2e2e,0 20px 48px -12px rgba(0,0,0,.9)}
.lv :where(p,h3,h4,ul,ol,dl,dd,table){margin:0;padding:0}
.lv :where(ul,ol){list-style:none}
.lv svg{display:block;flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
:where(.lv) :where(button,input){margin:0;font:inherit;color:inherit}
:where(.lv) :where(button){padding:0;border:0;background:none;cursor:pointer;-webkit-appearance:none;appearance:none}
.lv :is(button,[tabindex]):focus-visible{outline:2px solid var(--focus);outline-offset:2px}
/* Text fields focus on their own frame, one ring (owner, Nov 1: the global outline drew a double border on the ZIP field
   and a stray line across the trace composer). The composer rings as one card around its line and its chips. */
.lv :is(input,textarea):focus-visible{outline:0}
.lv-composer{transition:box-shadow .2s var(--a-ease)}
.lv-composer:focus-within{box-shadow:0 0 0 1.5px var(--a-ink),0 10px 30px -18px rgb(0 0 0 / .18)}
/* The window: the app's side menu and the page, at the app's desktop size */
.lv-frame{overflow:hidden;border:1px solid var(--hl);border-radius:18px;background:var(--bg);box-shadow:0 1px 2px rgb(0 0 0 / .04),0 28px 60px -34px rgb(0 0 0 / .28)}
html[data-theme=dark] .lv-frame{box-shadow:0 28px 60px -34px rgb(0 0 0 / .9)}
.lv-win{display:grid;grid-template-columns:224px minmax(0,1fr);width:1240px;height:740px;background:var(--a-bg);-webkit-user-select:none;user-select:none;cursor:default}
html:not(.js) .lv-win{zoom:.9}
.lv-side{display:flex;flex-direction:column;gap:14px;padding:14px 12px;border-right:1px solid var(--a-line);background:var(--a-side)}
.lv-side-top{display:flex;align-items:center;justify-content:space-between;padding:0 4px}
.lv-brand{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--a-primary);color:var(--a-primary-ink)}
.lv-brand svg{width:14px;height:14px;fill:currentColor;stroke:none}
.lv-side-btn{color:var(--a-muted)}
.lv-navs{display:grid;gap:2px}
.lv-nav{display:flex;align-items:center;gap:10px;height:32px;padding:0 10px;border-radius:8px;color:var(--a-ink-2);font-size:14px}
.lv-nav svg{color:var(--a-muted)}
.lv-nav.is-on{background:var(--a-nav);color:var(--a-ink)}
.lv-nav.is-on svg{color:var(--a-ink)}
.lv-me{display:flex;align-items:center;gap:10px;margin-top:auto;padding:10px 4px 0;border-top:1px solid var(--a-line);color:var(--a-ink);font-size:13px}
.lv-me>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lv-av{display:grid;flex:none;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--a-2);color:var(--a-ink-2);font-size:12px}
.lv-main{min-width:0;overflow:hidden;padding:32px 40px}
.lv-page{max-width:980px;margin:0 auto}
.lv-page.lv-hw{max-width:none}
.lv-narrow{max-width:860px}
.lv-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}
.lv-title{color:var(--a-ink);font-size:20px;font-weight:500;line-height:28px}
.lv-meta{color:var(--a-muted);font-size:13px;line-height:20px}
.lv-sub{color:var(--a-muted);font-size:13px;line-height:20px}
.lv-seg{display:flex;gap:2px;padding:3px;border-radius:999px;background:var(--a-2)}
.lv-seg span{display:flex;align-items:center;gap:6px;height:30px;padding:0 14px;border-radius:999px;color:var(--a-muted);font-size:14px}
.lv-seg span.is-on{background:var(--a-surface);box-shadow:var(--a-card);color:var(--a-ink)}
.lv-seg svg{width:14px;height:14px}
.lv-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 16px;border-radius:999px;background:var(--a-surface);box-shadow:inset 0 0 0 1px var(--a-line-2);color:var(--a-ink);font-size:14px;font-weight:500;white-space:nowrap;transition:background-color .15s var(--a-ease),transform .12s var(--a-ease)}
.lv .lv-btn{cursor:default}
.lv button.lv-btn{cursor:pointer}
.lv button.lv-btn:hover{background:var(--a-2)}
.lv-btn.lv-primary{background:var(--a-primary);box-shadow:none;color:var(--a-primary-ink)}
.lv button.lv-btn.lv-primary:hover{background:var(--a-primary);opacity:.9}
.lv button.lv-btn:active{transform:scale(.97)}
.lv-btn.lv-small{height:32px;padding:0 12px;font-size:13px}
.lv-btn svg{width:15px;height:15px}
/* New trace: the composer, then recent lists */
.lv-composer{border-radius:20px;background:var(--a-surface);box-shadow:var(--a-card),0 10px 30px -18px rgb(0 0 0 / .18)}
.lv-line{display:block}
.lv-line input{display:block;width:100%;height:60px;padding:0 22px;border:0;border-radius:20px 20px 0 0;outline:0;background:none;color:var(--a-ink);font-size:16px;line-height:24px;cursor:text;-webkit-user-select:text;user-select:text}
.lv-line input::placeholder{color:var(--a-faint)}
.lv-comp-foot{display:flex;align-items:center;gap:8px;padding:0 12px 12px 14px}
.lv-chip{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--a-line-2);color:var(--a-ink-2);font-size:13px;font-weight:500}
.lv-chip svg{width:14px;height:14px}
.lv-send{display:grid;place-items:center;width:36px;height:36px;margin-left:auto;border-radius:50%;background:var(--a-3);color:var(--a-muted);transition:background-color .2s var(--a-ease),color .2s var(--a-ease)}
.lv-composer.has-text .lv-send{background:var(--a-primary);color:var(--a-primary-ink)}
.lv-sub-head{display:flex;align-items:center;justify-content:space-between;margin:34px 0 10px}
.lv-sub-head h4{color:var(--a-ink);font-size:14px;font-weight:500}
.lv-link{color:var(--a-muted);font-size:13px;text-decoration:underline;text-decoration-color:var(--a-line-2);text-underline-offset:3px}
.lv-recent{overflow:hidden;border-radius:16px;background:var(--a-surface);box-shadow:var(--a-card)}
.lv-recent li+li .lv-recent-row{border-top:1px solid var(--a-line)}
.lv-recent li+li{margin-left:60px}
.lv-recent li+li .lv-recent-row{margin-left:-60px;padding-left:74px;background-clip:padding-box}
.lv-recent-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto 112px 16px;align-items:center;gap:14px;min-height:56px;padding:8px 14px;transition:background-color .15s var(--a-ease)}
.lv-recent li+li .lv-recent-row{grid-template-columns:28px minmax(0,1fr) auto 112px 16px;padding-left:14px;margin-left:-60px;border-top:0;box-shadow:inset 74px 0 0 var(--a-surface),inset 0 1px 0 var(--a-line)}
.lv-recent-row:hover{background:var(--a-hover)}
.lv-tile{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:linear-gradient(180deg,var(--a-surface),var(--a-2));box-shadow:inset 0 0 0 .5px var(--a-line-2),0 1px 1.5px rgb(0 0 0 / .06);color:var(--a-ink-2)}
.lv-tile svg{width:15px;height:15px}
.lv-two{display:grid;min-width:0}
.lv-two b{overflow:hidden;color:var(--a-ink);font-weight:500;text-overflow:ellipsis;white-space:nowrap}
.lv-two span{color:var(--a-muted);font-size:13px;line-height:18px}
.lv-num,.lv-date{color:var(--a-muted);font-size:13px;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.lv-go{color:var(--a-faint)}
/* Find homeowners: the search, the filter pills, the records card */
.lv-hw-search{display:flex;align-items:center;gap:12px;margin-top:18px}
.lv-where{position:relative;display:block;flex:1 1 auto;min-width:0}
.lv-where>svg{position:absolute;top:50%;left:14px;color:var(--a-muted);transform:translateY(-50%);pointer-events:none}
.lv-where input{display:block;width:100%;height:40px;padding:0 14px 0 38px;border:1px solid var(--a-line-2);border-radius:999px;outline:0;background:var(--a-surface);color:var(--a-ink);font-size:14px;cursor:text;-webkit-user-select:text;user-select:text;transition:border-color .15s var(--a-ease),box-shadow .15s var(--a-ease)}
.lv-where input:hover{border-color:var(--a-faint)}
.lv-where input:focus{border-color:var(--a-ink);box-shadow:inset 0 0 0 1px var(--a-ink)}
.lv-where input::placeholder{color:var(--a-faint)}
.lv-hw-search .lv-btn{height:40px;min-width:96px}
.lv-pills{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.lv-pill-f{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px 0 12px;border-radius:999px;background:var(--a-surface);box-shadow:inset 0 0 0 1px var(--a-line-2);color:var(--a-ink-2);font-size:13px;font-weight:500;transition:background-color .15s var(--a-ease),box-shadow .15s var(--a-ease)}
.lv-pill-f:hover{background:var(--a-2)}
.lv-pill-f svg{width:14px;height:14px;color:var(--a-muted)}
.lv-pill-f[aria-pressed=true]{box-shadow:inset 0 0 0 1px var(--a-muted);color:var(--a-ink)}
.lv-reset{min-height:32px;padding:0 6px!important;color:var(--a-muted)!important;font-size:13px!important;font-weight:500}
.lv-reset:hover{color:var(--a-ink)!important}
.lv-status{min-height:20px;margin:8px 0 10px;color:var(--a-muted);font-size:13px;line-height:20px}
.lv-status.is-alert{color:var(--a-ink)}
.lv-card{overflow:hidden;border-radius:16px;background:var(--a-surface);box-shadow:var(--a-card)}
.lv-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;min-height:60px;padding:12px 12px 12px 20px;border-bottom:1px solid var(--a-line)}
.lv-head{display:flex;align-items:center;gap:10px;min-width:0}
.lv-head h4{overflow:hidden;color:var(--a-ink);font-size:16px;font-weight:500;line-height:24px;text-overflow:ellipsis;white-space:nowrap}
.lv-count{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;background:var(--a-2);color:var(--a-ink-2);font-size:12px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}
.lv-count.lv-source{background:none;box-shadow:inset 0 0 0 1px var(--a-line);color:var(--a-muted)}
.lv-n{color:var(--a-muted);font-size:13px;font-variant-numeric:tabular-nums}
.lv-bar-end{display:flex;align-items:center;gap:10px;margin-left:auto}
.lv-chosen{color:var(--a-ink);font-size:13px;font-weight:500;font-variant-numeric:tabular-nums}
.lv-job{padding:10px 20px;border-bottom:1px solid var(--a-line);color:var(--a-ink-2);font-size:13px;line-height:20px;animation:lv-in .3s var(--a-ease)}
.lv-job button{color:var(--a-ink);font-weight:500;text-decoration:underline;text-underline-offset:3px}
@keyframes lv-in{from{opacity:0;transform:translateY(-4px)}}
.lv-table{overflow:hidden}
.lv-grid{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:14px;line-height:20px;font-variant-numeric:tabular-nums}
.lv-grid th,.lv-grid td{height:48px;padding:0 16px;overflow:hidden;border-bottom:1px solid var(--a-line);color:var(--a-ink);font-weight:400;text-align:left;text-overflow:ellipsis;white-space:nowrap}
.lv-grid thead th{height:36px;color:var(--a-muted);font-size:12px;font-weight:500;line-height:16px}
.lv-grid tbody tr:last-child>*{border-bottom:0}
.lv-grid tbody tr{transition:background-color .12s var(--a-ease)}
.lv-grid tbody tr:hover>*{background:var(--a-hover)}
.lv-grid .num{text-align:right}
.lv-grid .lv-act{width:44px;padding:0 12px;color:var(--a-faint)}
.lv-grid .lv-pick{width:44px;padding:0 0 0 16px}
.lv-box{display:block;width:16px;height:16px;border-radius:4px;box-shadow:inset 0 0 0 1px var(--a-line-2);background:var(--a-surface);transition:background-color .12s var(--a-ease)}
.lv-grid tr.is-chosen>*{background:var(--a-chosen)}
.lv-grid tr.is-chosen .lv-box{background:var(--a-ink);box-shadow:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 8.5 2.6 2.6L12 5.5'/%3E%3C/svg%3E");background-size:16px}
html[data-theme=dark] .lv-grid tr.is-chosen .lv-box{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 8.5 2.6 2.6L12 5.5'/%3E%3C/svg%3E")}
.lv-hw .lv-grid tbody tr{cursor:pointer}
.lv-hw .lv-grid tbody tr.is-new{animation:lv-row .32s var(--a-ease) both}
@keyframes lv-row{from{opacity:0;transform:translateY(6px)}}
.lv-grid .lv-muted{color:var(--a-muted)}
.lv-hw .lv-grid th:nth-child(2){width:33%}.lv-hw .lv-grid th:nth-child(3){width:20%}.lv-hw .lv-grid th:nth-child(5){width:72px}
.lv-skel td span{display:block;height:10px;border-radius:5px;background:linear-gradient(90deg,var(--a-2),var(--a-3),var(--a-2)) 0 0/200% 100%;animation:lv-shim 1.2s ease-in-out infinite}
@keyframes lv-shim{to{background-position:-200% 0}}
.lv-pager{display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:8px 16px;border-top:1px solid var(--a-line);color:var(--a-muted);font-size:13px;font-variant-numeric:tabular-nums}
.lv-pager-end{display:flex;align-items:center;gap:10px}
.lv-pager-end b{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--a-2);color:var(--a-ink);font-weight:500}
/* Your lists: a list's page, its records and the Start skip tracing sheet */
.lv-back{display:inline-flex;align-items:center;gap:6px;margin-bottom:14px;color:var(--a-muted);font-size:14px}
.lv-back svg{width:14px;height:14px}
.lv-top-list{align-items:flex-start;margin-bottom:6px}
.lv-actions{display:flex;gap:8px}
.lv-ready{margin-bottom:16px}
.lv-ready u{color:var(--a-ink);text-decoration-color:var(--a-line-2);text-underline-offset:3px}
.lv-grid-list th:first-child{width:22%}.lv-grid-list th:nth-child(3){width:96px}
.lv-grid-list tbody th{color:var(--a-ink);font-weight:400}
.lv-list{position:relative}
.lv-scrim{position:absolute;inset:-32px -40px;z-index:5;display:grid;place-items:center;background:rgb(26 28 31 / .24);animation:lv-fade .2s var(--a-ease)}
html[data-theme=dark] .lv-scrim{background:rgb(0 0 0 / .7)}
@keyframes lv-fade{from{opacity:0}}
.lv-scrim[hidden]{display:none}
.lv-quote{display:grid;gap:8px;width:420px;padding:22px 22px 20px;border-radius:16px;background:var(--a-surface);box-shadow:var(--a-pop);animation:lv-pop .28s var(--a-ease)}
@keyframes lv-pop{from{opacity:0;transform:translateY(8px) scale(.98)}}
.lv-quote-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.lv-quote-head b{color:var(--a-ink);font-size:16px;font-weight:500}
.lv-x{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;color:var(--a-muted);cursor:pointer}
.lv-x:hover{background:var(--a-2);color:var(--a-ink)}
.lv-price{color:var(--a-ink);font-size:20px;font-weight:500;line-height:28px;font-variant-numeric:tabular-nums}
.lv-price strong{font-weight:500}
.lv-quote-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}
.lv-quote-actions .lv-btn{min-width:96px;height:40px}
.lv-scrim .lv-quote-actions .lv-btn{cursor:pointer}
/* A phone: the app's phone layout (no side menu, records as cards) */
.lv-win.is-compact{display:block;width:auto;height:auto}
.lv-win.is-compact .lv-side{display:none}
.lv-win.is-compact .lv-main{padding:18px 16px 20px}
.lv-win.is-compact .lv-top{flex-wrap:wrap}
.lv-win.is-compact .lv-recent li+li{margin-left:0}
.lv-win.is-compact .lv-recent-row,.lv-win.is-compact .lv-recent li+li .lv-recent-row{grid-template-columns:28px minmax(0,1fr) auto 16px;margin-left:0;box-shadow:none}
.lv-win.is-compact .lv-recent li+li .lv-recent-row{border-top:1px solid var(--a-line)}
.lv-win.is-compact .lv-date{display:none}
.lv-win.is-compact .lv-line input{height:56px;padding:0 18px;font-size:16px}
.lv-win.is-compact .lv-chip:nth-child(2){display:none}
.lv-win.is-compact .lv-hw-search{flex-wrap:wrap;gap:8px}
.lv-win.is-compact .lv-hw-search .lv-btn{flex:1 1 auto}
.lv-win.is-compact .lv-bar{padding:12px 12px 12px 16px}
.lv-win.is-compact .lv-bar-end{width:100%;margin-left:0}
.lv-win.is-compact .lv-source{display:none}
.lv-win.is-compact .lv-grid thead{display:none}
.lv-win.is-compact .lv-grid,.lv-win.is-compact .lv-grid tbody{display:block}
.lv-win.is-compact .lv-grid tr{display:grid;grid-template-columns:28px minmax(0,1fr) 20px;grid-template-areas:"pick addr act" "pick owner act" "pick mail act";gap:2px 10px;padding:12px 12px 12px 16px;border-bottom:1px solid var(--a-line)}
.lv-win.is-compact .lv-grid tr>*{height:auto;padding:0;border:0;background:none!important;white-space:normal}
.lv-win.is-compact .lv-grid tr.is-chosen{background:var(--a-chosen)}
.lv-win.is-compact .lv-grid .lv-pick{grid-area:pick;padding-top:2px}
.lv-win.is-compact .lv-grid td:nth-child(2){grid-area:addr;font-weight:500}
.lv-win.is-compact .lv-grid td:nth-child(3){grid-area:owner}
.lv-win.is-compact .lv-grid td:nth-child(4){grid-area:mail;color:var(--a-muted);font-size:13px}
.lv-win.is-compact .lv-grid td:nth-child(5){display:none}
.lv-win.is-compact .lv-grid .lv-act{grid-area:act;align-self:center;width:auto}
.lv-win.is-compact .lv-grid-list tr{grid-template-columns:minmax(0,1fr) 20px;grid-template-areas:"owner act" "addr act"}
.lv-win.is-compact .lv-grid-list tbody th{grid-area:owner;font-weight:500}
.lv-win.is-compact .lv-grid-list td:nth-child(2){grid-area:addr;color:var(--a-muted);font-size:13px;font-weight:400}
.lv-win.is-compact .lv-grid-list td:nth-child(3){display:none}
.lv-win.is-compact .lv-actions{width:100%}
.lv-win.is-compact .lv-actions .lv-btn{flex:1 1 auto}
.lv-win.is-compact .lv-hw .lv-grid tbody tr:nth-child(n+7),.lv-win.is-compact .lv-grid-list tbody tr:nth-child(n+7){display:none}
.lv-win.is-compact .lv-scrim{position:fixed;inset:0;z-index:30}
.lv-win.is-compact .lv-quote{width:calc(100% - 32px)}
@media (prefers-reduced-motion:reduce){.lv *,.lv{animation:none!important;transition:none!important}}

/* In your AI (round 7 v5): Locate's in-chat homeowner sheet (customer-app locate/hosted/mcp_view.py) shown as itself, not a
   drawn conversation: one surface, the title and the count, hairline rows that open in place, a pager, the keep choice and
   Create list. Strong ink in both themes (secondary #3d3d3d, labels #6a6a6a or darker). home.js [data-mc]. */
.mc-port{display:grid;place-items:center}
.mc-port--hero,html[data-theme=dark] .mc-port--hero{padding:0;border:0;background:none}
.mc-sheet{--m-bg:#fff;--m-ink:#1a1c1f;--m-2:#3d3d3d;--m-3:#6a6a6a;--m-line:rgb(0 0 0 / .1);--m-hair:rgb(0 0 0 / .08);--m-pill:rgb(0 0 0 / .05);--m-pill-2:rgb(0 0 0 / .09);
  width:100%;max-width:720px;overflow:hidden;border-radius:20px;background:var(--m-bg);box-shadow:0 0 0 1px var(--m-line),0 1px 2px rgb(0 0 0 / .04),0 24px 48px -28px rgb(0 0 0 / .25);
  color:var(--m-ink);font:400 14px/20px var(--font);text-align:left}
html[data-theme=dark] .mc-sheet{--m-bg:#141415;--m-ink:#f5f5f7;--m-2:#d1d1d6;--m-3:#98989d;--m-line:rgb(255 255 255 / .12);--m-hair:rgb(255 255 255 / .08);--m-pill:rgb(255 255 255 / .07);--m-pill-2:rgb(255 255 255 / .13);
  box-shadow:0 0 0 1px var(--m-line),0 24px 48px -28px rgb(0 0 0 / .8)}
.mc-sheet svg{display:block;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.mc-sheet p{margin:0}
.mc-top{display:flex;align-items:center;gap:12px;padding:18px 20px 16px}
.mc-mark{display:grid;flex:none;place-items:center;width:40px;height:40px;border-radius:11px;background:var(--m-ink);color:var(--m-bg)}
.mc-mark svg{width:18px;height:18px;fill:currentColor;stroke:none}
.mc-head{flex:1 1 auto;min-width:0}
.mc-title{font-size:16px;font-weight:500;line-height:22px}
.mc-meta{color:var(--m-3);font-size:13px;line-height:18px}
.mc-count{display:grid;flex:none;justify-items:end}
.mc-count b{font-size:24px;font-weight:500;line-height:28px;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.mc-count span{color:var(--m-3);font-size:12px;line-height:16px}
.mc-scroll{max-height:404px;overflow-y:auto;border-block:1px solid var(--m-hair);overscroll-behavior:contain;scrollbar-width:thin;transition:opacity .14s}
.mc-scroll.is-paging{opacity:.4}
.mc-rows{margin:0;padding:0;list-style:none}
.mc-rec+.mc-rec{border-top:1px solid var(--m-hair)}
.mc-who{display:grid;grid-template-columns:minmax(0,1fr) auto 14px;align-items:center;gap:16px;width:100%;min-height:64px;padding:11px 20px;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background-color .15s var(--ease)}
span.mc-who{cursor:default}
button.mc-who:hover{background:var(--m-pill)}
.mc-text{display:grid;min-width:0}
.mc-owner{overflow:hidden;font-size:15px;font-weight:500;line-height:21px;text-overflow:ellipsis;white-space:nowrap}
.mc-addr{overflow:hidden;color:var(--m-2);font-size:13px;line-height:19px;text-overflow:ellipsis;white-space:nowrap}
.mc-facts{display:grid;justify-items:end;font-size:13px;line-height:19px;font-variant-numeric:tabular-nums;white-space:nowrap}
.mc-facts b{font-weight:400}
.mc-facts span{color:var(--m-3)}
.mc-chev{color:var(--m-3);transition:transform .2s var(--ease)}
.mc-rec.open .mc-chev{transform:rotate(90deg)}
.mc-more{padding:2px 20px 18px}
.mc-more dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 20px;margin:0;animation:mc-in .25s var(--ease)}
@keyframes mc-in{from{opacity:0;transform:translateY(-4px)}}
.mc-more dt{color:var(--m-3);font-size:12px;line-height:16px}
.mc-more dd{margin:2px 0 0;font-size:13px;line-height:19px;overflow-wrap:anywhere}
.mc-bar{display:grid;gap:14px;padding:14px 20px 20px}
.mc-bar-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.mc-pager{display:flex;align-items:center;gap:8px;color:var(--m-3);font-size:13px;font-variant-numeric:tabular-nums}
.mc-pg{display:grid;place-items:center;width:30px;height:30px;padding:0;border:0;border-radius:50%;background:var(--m-pill);color:var(--m-ink);cursor:pointer;transition:background-color .15s var(--ease)}
.mc-pg:hover:not(:disabled){background:var(--m-pill-2)}
.mc-pg:disabled{opacity:.35;cursor:default}
.mc-seg{display:inline-flex;gap:2px;padding:2px;border-radius:999px;background:var(--m-pill)}
.mc-seg[hidden]{display:none}
.mc-seg button{min-height:28px;padding:0 12px;border:0;border-radius:999px;background:none;color:var(--m-3);font:500 13px/1 var(--font);white-space:nowrap;cursor:pointer;transition:background-color .15s var(--ease),color .15s var(--ease)}
.mc-seg button[aria-checked=true]{background:var(--m-bg);box-shadow:0 0 0 1px var(--m-line),0 1px 2px rgb(0 0 0 / .08);color:var(--m-ink)}
html[data-theme=dark] .mc-seg button[aria-checked=true]{background:#2c2c2e;box-shadow:none}
.mc-create{width:100%;min-height:44px;padding:0 16px;border:0;border-radius:12px;background:var(--m-ink);color:var(--m-bg);font:500 15px/1 var(--font);cursor:pointer;transition:opacity .15s var(--ease),transform .15s var(--ease)}
.mc-create:hover:not(:disabled){opacity:.9}
.mc-create:active:not(:disabled){transform:scale(.99)}
.mc-create:disabled{opacity:.6;cursor:default}
.mc-sheet button:focus-visible,.mc-open:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
button.mc-who:focus-visible{outline-offset:-2px}
.mc-saved{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 12px;min-height:44px}
.mc-done{display:inline-flex;align-items:center;gap:8px;font-size:14px}
.mc-done svg{flex:none;width:16px;height:16px;stroke-width:2}
.mc-done b{font-weight:500}
.mc-open{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 14px;border-radius:999px;background:var(--m-pill);color:var(--m-ink);font-size:13px;font-weight:500;text-decoration:none;white-space:nowrap}
.mc-open:hover{background:var(--m-pill-2)}
@media (max-width:640px){
  .mc-port,html[data-theme=dark] .mc-port{padding:0;border:0;background:none}
  .mc-sheet{border-radius:18px}
  .mc-top{flex-wrap:wrap;align-items:flex-start;row-gap:2px;padding:16px 16px 14px}
  .mc-mark{width:36px;height:36px;border-radius:10px}.mc-mark svg{width:16px;height:16px}
  .mc-head{flex-basis:calc(100% - 48px)}
  .mc-count{display:flex;align-items:baseline;gap:5px;order:3;width:100%;padding-left:48px}
  .mc-count b{font-size:15px;line-height:20px;letter-spacing:0}.mc-count span{font-size:13px;line-height:18px}
  .mc-who{grid-template-columns:minmax(0,1fr) 14px;gap:12px;min-height:60px;padding:10px 16px}
  .mc-facts{display:none}
  .mc-addr{white-space:normal}
  .mc-more{padding:0 16px 16px}.mc-more dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
  .mc-bar{padding:12px 16px 16px}
}
@media (prefers-reduced-motion:reduce){.mc-sheet *{animation:none!important;transition:none!important}}

/* In your AI (round 7 v10, owner Nov 2: "big, looks ugly, unlike other tabs"): the same app window as the other three tabs.
   The app's MCP page on the left (its title, the link to Claude, the apps, a few asks) and beside it the sheet Locate shows
   inside Claude, at the app's own density. Phones get the sheet alone, with no window around it. */
.lv-mcp{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:40px;max-width:none;height:100%}
.lv-mcp-copy{display:flex;flex-direction:column;min-width:0}
.lv-mcp-try{margin-top:auto}
.lv-mcp-copy>.lv-meta{max-width:300px;margin-top:4px}
.lv-mcp-link{display:flex;align-items:center;margin:24px 0 10px}
.lv-mcp-node{display:grid;flex:none;place-items:center;width:44px;height:44px;border-radius:12px}
.lv-mcp-locate{background:var(--a-ink);color:var(--a-bg)}
.lv-mcp-locate svg{width:20px;height:20px;fill:currentColor}
.lv .lv-mcp-link .app-tile{width:44px;height:44px;border-radius:12px}
.lv .lv-mcp-link .app-tile svg{width:24px;height:24px}
.lv-mcp-wire{flex:0 0 64px;height:2px;margin:0 10px;background:repeating-linear-gradient(90deg,var(--a-line-2) 0 4px,transparent 4px 8px);background-size:8px 2px;animation:lv-wire 1.2s linear infinite}
@keyframes lv-wire{to{background-position:8px 0}}
.lv-mcp-status{margin:0;color:var(--a-ink-2);font-size:13px;font-weight:500;line-height:20px}
.lv-sub{margin:24px 0 8px;color:var(--a-muted);font-size:12px;font-weight:500;line-height:16px}
.lv-apps,.lv-asks{margin:0;padding:0;list-style:none}
.lv-app{display:flex;align-items:center;gap:10px;height:40px;padding:0 8px;border-radius:10px;color:var(--a-ink)}
.lv-app.is-on{background:var(--a-chosen)}
.lv .lv-app .app-tile{flex:none;width:26px;height:26px;border-radius:7px}
.lv .lv-app .app-tile svg{width:15px;height:15px}
.lv .lv-app .app-codex svg,.lv .lv-mcp-link .app-codex svg{width:100%;height:100%;border-radius:inherit}
.lv-app-t{flex:1;min-width:0;white-space:nowrap}
.lv-app-t b{font-size:13px;font-weight:500}
.lv-app-on{flex:none;color:var(--a-ink-2);font-size:12px;font-weight:500}
.lv-asks li{padding:9px 2px;border-top:1px solid var(--a-line);color:var(--a-ink-2);font-size:13px;line-height:18px}
.lv-asks li:last-child{border-bottom:1px solid var(--a-line)}
.lv-mcp-view{display:flex;flex-direction:column;min-width:0;min-height:0}
.lv-mcp-ask{display:flex;align-items:center;gap:8px;margin:0 0 12px;color:var(--a-ink);font-size:13px;font-weight:500;line-height:20px}
.lv .lv-mcp-ask .app-tile{flex:none;width:20px;height:20px;border-radius:6px}
.lv .lv-mcp-ask .app-tile svg{width:12px;height:12px}
.lv-mcp-view .mc-sheet--app{display:flex;flex:1;flex-direction:column;min-height:0}
.lv-mcp-view .mc-sheet--app .mc-scroll{flex:1;max-height:none}
.mc-sheet--app{max-width:none;border-radius:14px;font-size:13px;line-height:18px}
.mc-sheet--app .mc-top{gap:10px;padding:14px 16px 12px}
.mc-sheet--app .mc-mark{width:32px;height:32px;border-radius:9px}.mc-sheet--app .mc-mark svg{width:15px;height:15px}
.mc-sheet--app .mc-title{font-size:14px;line-height:20px}
.mc-sheet--app .mc-meta{font-size:12px;line-height:16px}
.mc-sheet--app .mc-count b{font-size:18px;line-height:22px}
.mc-sheet--app .mc-count span{font-size:11px}
.mc-sheet--app .mc-scroll{max-height:352px}
.mc-sheet--app .mc-who{gap:12px;min-height:48px;padding:7px 16px}
.mc-sheet--app .mc-owner{font-size:13px;line-height:18px}
.mc-sheet--app .mc-addr,.mc-sheet--app .mc-facts{font-size:12px;line-height:16px}
.mc-sheet--app .mc-more{padding:2px 16px 14px}
.mc-sheet--app .mc-more dd{font-size:12px;line-height:17px}
.mc-sheet--app .mc-bar{gap:10px;padding:10px 16px 14px}
.mc-sheet--app .mc-pg{width:26px;height:26px}
.mc-sheet--app .mc-pager{font-size:12px}
.mc-sheet--app .mc-seg button{min-height:24px;padding:0 10px;font-size:12px}
.mc-sheet--app .mc-create{min-height:36px;border-radius:10px;font-size:13px}
.mc-sheet--app .mc-done{font-size:13px}
.lv-frame:has(.lv-ai.is-compact){border:0;border-radius:0;background:none;box-shadow:none}
.lv-win.lv-ai.is-compact .lv-main{padding:0}
.lv-win.lv-ai.is-compact .lv-mcp{display:block;height:auto}
.lv-win.lv-ai.is-compact .lv-mcp-copy{display:none}
.lv-win.lv-ai.is-compact .lv-mcp-view .mc-sheet--app .mc-scroll{flex:none;max-height:404px}
.lv-win.lv-ai.is-compact{background:none}
/* /ai/ hero: the same sheet on its own, a size down from the first cut (owner Nov 2) */
.mc-port--hero .mc-sheet{max-width:600px}
.mc-port--hero .mc-who{min-height:54px;padding:8px 18px}
.mc-port--hero .mc-owner{font-size:14px;line-height:20px}
.mc-port--hero .mc-scroll{max-height:330px}
@media (prefers-reduced-motion:reduce){.lv-mcp-wire{animation:none}}

/* Why Locate: four claims, each over a small live piece of the app, with a little life on hover */
.why-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.wt{display:flex;flex-direction:column;min-width:0;overflow:hidden;border:1px solid var(--hl);border-radius:24px;transition:border-color .25s var(--ease)}
.wt:hover{border-color:var(--line-strong)}
html[data-theme=dark] .wt:hover{border-color:#3a3a3a}
.wt-copy{padding:30px 32px 22px}
.wt-copy h3{font-size:21px;line-height:1.25;letter-spacing:-.016em}
.wt-copy p{margin-top:8px;max-width:440px;color:var(--muted);font-size:15px;line-height:1.55}
.wt-frag{position:relative;flex:1 1 auto;display:flex;align-items:center;min-height:230px;padding:0 32px 30px;-webkit-user-select:none;user-select:none}
.wt-frag>*{width:100%;transition:transform .5s var(--ease)}
.wt:hover .wt-frag>*{transform:translateY(-4px)}
/* 1. The person sheet's phone rows and relatives, on the hero's own tokens */
.hv-frag{--c1:var(--ink);--c2:#3d3d3d;--c3:#6a6a6a;--hair:rgba(10,10,10,.08);--panel:#f6f6f6;display:grid;gap:10px;color:var(--c1);font:400 14px/20px var(--font)}
html[data-theme=dark] .hv-frag{--c2:#d0d0d0;--c3:#999;--hair:rgba(255,255,255,.08);--panel:#151515}
.hv-frag p{margin:0}
.hv-frag .hv-panel{padding:0 16px 2px}
.hv-frag .hv-h5{border-bottom:1px solid var(--hair)}
.hv-frag .hv-r,.hv-frag .hv-rel{transition:background-color .2s var(--ease),box-shadow .2s var(--ease)}
.hv-frag .hv-r:hover,.hv-frag .hv-rel:hover{background:rgba(10,10,10,.035);box-shadow:-10px 0 0 rgba(10,10,10,.035),10px 0 0 rgba(10,10,10,.035)}
html[data-theme=dark] .hv-frag .hv-r:hover,html[data-theme=dark] .hv-frag .hv-rel:hover{background:rgba(255,255,255,.04);box-shadow:-10px 0 0 rgba(255,255,255,.04),10px 0 0 rgba(255,255,255,.04)}
.hv-frag .hv-st{color:var(--c1)}
/* 2. The export's header: your columns, then Locate's sliding in */
.wf-cols{overflow:hidden;border:1px solid var(--a-line);border-radius:14px;background:var(--a-surface);-webkit-mask:linear-gradient(90deg,#000 88%,transparent);mask:linear-gradient(90deg,#000 88%,transparent)}
.wf-grid{width:max-content;table-layout:auto}
.wf-grid th,.wf-grid td{height:44px;padding:0 14px}
.wf-grid th{background:var(--a-surface)}
.wf-grid td{color:var(--a-ink-2);font-size:13px}
.wf-grid .is-add{color:var(--a-ink);background:var(--a-surface);transition:opacity .45s var(--ease) calc(var(--k) * .12s + .2s),transform .45s var(--ease) calc(var(--k) * .12s + .2s)}
.wf-grid th.is-add{color:var(--a-ink)}
html.js .wt:not(.is-play) .wf-grid .is-add{opacity:0;transform:translateX(16px)}
.wf-cols table{transition:transform .9s var(--ease)}
.wt:hover .wf-cols table{transform:translateX(-200px)}
/* 3. The Start skip tracing sheet */
.wf-quote .lv-quote{width:100%;animation:none;box-shadow:var(--a-card),0 18px 40px -24px rgb(0 0 0 / .25)}
.wf-quote .lv-btn{cursor:default}
.wf-quote .lv-x{cursor:default}
.wf-quote .lv-quote-actions .lv-primary{transition:transform .2s var(--ease)}
.wt:hover .wf-quote .lv-quote-actions .lv-primary{transform:scale(1.03)}
/* 4. The in-chat sheet's header and a row, and the apps it works in */
.wf-ai{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.mc-mini .mc-scroll{border-bottom:0}
.wf-apps{display:flex;gap:8px}
.wf-app .app-tile{width:32px;height:32px;border-radius:9px;transition:transform .35s cubic-bezier(.3,1.4,.5,1)}
.wf-app .app-tile svg{width:18px;height:18px}
.wf-app .app-codex svg{width:32px;height:32px;border-radius:9px}
.wt:hover .wf-app:nth-child(1) .app-tile{transform:translateY(-3px)}
.wt:hover .wf-app:nth-child(2) .app-tile{transform:translateY(-3px);transition-delay:.04s}
.wt:hover .wf-app:nth-child(3) .app-tile{transform:translateY(-3px);transition-delay:.08s}
.wt:hover .wf-app:nth-child(4) .app-tile{transform:translateY(-3px);transition-delay:.12s}
@media (max-width:900px){.why-tiles{grid-template-columns:minmax(0,1fr);gap:14px}}
@media (max-width:640px){.wt-copy{padding:24px 22px 18px}.wt-frag{min-height:0;padding:0 18px 22px}.hv-frag .hv-st,.hv-frag .hv-rk{display:none}.wf-grid th:nth-child(-n+2),.wf-grid td:nth-child(-n+2){display:none}.wf-apps{display:none}.wt:hover .wf-cols table{transform:none}}
@media (prefers-reduced-motion:reduce){.wt *,.wt{transition:none!important;transform:none!important}}

/* Without script: every tool step shows its result */
html:not(.js) .chat-tool .chat-spin{display:none}
html:not(.js) .chat-tool .chat-done{display:inline-flex}

/* Hero, round 7 v5 (owner, Oct 31: "keep only mac, no need for iphone"; "keep the current hero … the heading in between
   looks cleaner"): the centered heading stays as it was; under it the app window runs the full width with no grey stage. */
.hv{max-width:1200px;margin:64px auto 0}
.hv-stage,html[data-theme=dark] .hv-stage{padding:0;border-radius:0;background:none;overflow:visible}
.hv-shot{border-bottom:1px solid var(--window-line);border-radius:16px;box-shadow:0 1px 2px rgb(10 10 10 / .04),0 32px 64px -32px rgb(10 10 10 / .28)}
html[data-theme=dark] .hv-shot{border-color:rgb(255 255 255 / .1);box-shadow:none}
@media (max-width:760px){.hv{margin-top:40px}.hv-canvas.is-compact{max-height:560px}}

/* Why, round 7 v5 (unslop: four equal tiles read as a template): one wide lead tile, the numbers worth dialing, then three
   compact tiles in a row. No floating logo row; nothing grows on hover. Phones: one column, tighter. */
.why-tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.wt:first-child{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:center}
.wt:first-child .wt-copy{padding:48px 40px}
.wt:first-child .wt-copy h3{font-size:28px;line-height:1.15;letter-spacing:-.02em}
.wt:first-child .wt-copy p{max-width:400px;margin-top:12px;font-size:16px;line-height:1.55}
.wt:first-child .wt-frag{min-height:0;padding:32px 32px 32px 0}
.wt:not(:first-child) .wt-copy{padding:28px 28px 16px}
.wt:not(:first-child) .wt-frag{min-height:0;align-items:flex-end;padding:8px 28px 28px}
.wf-apps{display:none}
.mc-mini .mc-facts{display:none}
.mc-mini .mc-who{grid-template-columns:minmax(0,1fr) 14px}
.wt:hover .wf-quote .lv-quote-actions .lv-primary{transform:none}
.lv-win.is-compact li:has(>.lv-recent-row):nth-child(n+5){display:none}
@media (max-width:900px){
  .why-tiles{grid-template-columns:minmax(0,1fr)}
  .wt:first-child{display:flex}
  .wt:first-child .wt-copy,.wt:not(:first-child) .wt-copy{padding:24px 22px 16px}
  .wt:first-child .wt-copy h3{font-size:21px;line-height:1.25}
  .wt:first-child .wt-copy p{font-size:15px}
  .wt:first-child .wt-frag,.wt:not(:first-child) .wt-frag{padding:0 18px 22px}
}

/* Why, round 7 v6 (the owner's reference, Oct 31: feature panels of sky, each holding a piece of the product in a clear
   glass frame, the title and words underneath; "this is what I wanted, even better than this"). Each panel is one of the
   owner's generated sky images and holds one real piece of Locate. The headline sits left, the two actions right. */
.why-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:48px}
.why-head h2{max-width:20ch;margin:0;text-align:left}
.why-head .actions{flex:none;margin:0}
.why-head .actions .button{min-height:38px;padding:0 16px;font-size:14px}
.sky-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.sky{min-width:0}
.sky-pic{position:relative;display:flex;flex-direction:column;justify-content:center;gap:12px;aspect-ratio:1/1;padding:32px;overflow:hidden;border-radius:6px;
  background:#7fb3e6 center bottom/cover no-repeat;-webkit-user-select:none;user-select:none}
/* The owner's three generated sky images (design/assets/marketing-sky-2026-10-31-v1, native 1254 px, delivered at 900 px
   WebP): the investor on the phone behind the numbers, the pixel sky behind the file, the rooftops behind the homeowner
   list. Each shows its whole square; the card sits in the open sky above the person and the roofs. */
.sky:nth-child(1) .sky-pic{background-image:url(why-investor-phone.webp);justify-content:flex-start;padding-top:14%}
.sky:nth-child(2) .sky-pic{background-image:url(why-pixel-sky.webp)}
.sky:nth-child(3) .sky-pic{background-image:url(why-suburban-rooftops.webp);justify-content:flex-start;padding-top:13%}
.sky h3{display:flex;align-items:center;gap:10px;margin-top:20px;font-size:19px;font-weight:500;line-height:1.3;letter-spacing:-.01em}
.sky h3 svg,.sky-pic svg{display:block;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.sky h3 svg{flex:none;width:18px;height:18px;color:var(--ink-2)}
.sky>p{margin-top:10px;color:var(--muted);font-size:15px;line-height:1.6}
/* The glass frame: a clear rim around a solid card, a soft shadow in the sky's own blue-grey */
.glass{position:relative;z-index:1;width:100%;max-width:340px;margin:0 auto;padding:7px;border-radius:20px;background:rgb(255 255 255 / .3);
  box-shadow:inset 0 0 0 1px rgb(255 255 255 / .6),0 24px 44px -26px rgb(18 44 78 / .55);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.glass-card,.glass .mc-sheet{--g-ink:#1a1c1f;--g-2:#3d3d3d;--g-3:#6a6a6a;--g-hair:rgb(0 0 0 / .07);--g-pill:#f3f3f4;
  overflow:hidden;border-radius:13px;background:#fff;color:var(--g-ink);font:400 13px/18px var(--font);text-align:left;box-shadow:0 1px 2px rgb(0 0 0 / .06)}
/* Dark mode keeps the panels as they are, like a photograph: the same sky, the same white cards (the dimmed sky and dark
   cards read as muddy; owner, Oct 31: "dark version looks ugly"). */
html[data-theme=dark] .glass .mc-sheet{--m-bg:#fff;--m-ink:#1a1c1f;--m-2:#3d3d3d;--m-3:#6a6a6a;--m-line:rgb(0 0 0 / .1);--m-hair:rgb(0 0 0 / .08);--m-pill:rgb(0 0 0 / .05);--m-pill-2:rgb(0 0 0 / .09);background:#fff}
.glass .mc-sheet{max-width:none}
.gc-head{display:flex;align-items:baseline;gap:6px;padding:14px 16px 8px;font-size:14px}
.gc-head b{font-weight:500}.gc-head span{color:var(--g-3);font-size:13px}
.gc-row{display:flex;align-items:center;gap:10px;min-height:40px;margin:0 16px;border-top:1px solid var(--g-hair)}
.gc-row:last-child{margin-bottom:4px}
.gc-v{flex:none;font-variant-numeric:tabular-nums;white-space:nowrap}
.gc-m{flex:1 1 auto;min-width:0;color:var(--g-3);font-size:12px}
.gc-s{background:var(--g-pill);color:var(--g-2);font-size:12px}
.gc-v{font-weight:500}
.gc-ic{flex:none;color:var(--g-3)}.gc-ic svg{width:14px;height:14px}
.gc-cursor{position:absolute;top:70px;right:-2px;width:22px;height:22px;filter:drop-shadow(0 1px 2px rgb(0 0 0 / .3))}
.gc-cursor path{fill:#0a0a0a;stroke:#fff;stroke-width:1.4;stroke-linejoin:round}
.gc-tag{position:absolute;top:94px;right:-26px;padding:3px 10px;border-radius:999px;background:#0a0a0a;color:#fff;font-size:12px;font-weight:500;line-height:18px;box-shadow:0 0 0 1.5px #fff}
.gc-line{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 14px}
.gc-line b{flex:1 1 auto;min-width:0;overflow:hidden;font-weight:500;text-overflow:ellipsis;white-space:nowrap}
.gc-top{border-bottom:1px solid var(--g-hair)}
.gc-ic2{display:grid;flex:none;place-items:center;width:26px;height:26px;border-radius:8px;background:var(--g-pill);color:var(--g-2)}.gc-ic2 svg{width:14px;height:14px}
.gc-time{flex:none;color:var(--g-3);font-size:12px;font-variant-numeric:tabular-nums}
.gc-map{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:38px;padding:0 14px;color:var(--g-3);font-size:12px}
.gc-map:last-child{margin-bottom:6px}
.gc-map span{flex:none}
.gc-arrow{margin-left:2px}
.gc-map i{min-width:0;overflow:hidden;padding:3px 9px;border-radius:7px;background:var(--g-pill);color:var(--g-ink);font-style:normal;text-overflow:ellipsis;white-space:nowrap;box-shadow:inset 0 0 0 1px var(--g-hair)}
.glass .mc-mini .mc-scroll{border-bottom:0}
.sky-pic .mc-mark svg{fill:currentColor;stroke:none}
.glass .mc-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:1023px){.sky-grid{grid-template-columns:minmax(0,1fr);gap:40px;max-width:560px;margin:0 auto}}
@media (max-width:760px){.why-head{display:block}.why-head h2{max-width:none}.why-head .actions{margin-top:20px}.sky-pic{padding:20px}.sky-grid{gap:36px}}
/* One small type scale inside the glass cards (owner, Oct 31: "keep the font clean, it's always about the font"):
   titles 14/20 at 500, values 13/18 at 400, meta 12/16 in the quiet grey; owner names 13 at 500. */
.glass :is(.glass-card,.mc-sheet){-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.glass :is(.gc-head b,.gc-line b,.mc-title){font-size:14px;font-weight:500;line-height:20px;letter-spacing:-.005em}
.glass :is(.gc-head span,.gc-m,.gc-s,.gc-time,.gc-map,.mc-meta){font-size:12px;line-height:16px;letter-spacing:0}
.glass :is(.gc-v,.gc-map i){font-size:13px;line-height:18px}
.glass .mc-owner{font-size:13px;font-weight:500;line-height:18px}
.glass .mc-addr{color:var(--m-2);font-size:12px;line-height:16px;white-space:nowrap}
.glass .mc-top{gap:10px;padding:14px 14px 12px}
.glass .mc-mark{width:32px;height:32px;border-radius:9px}.glass .mc-mark svg{width:15px;height:15px}
.glass .mc-who{min-height:52px;padding:9px 14px}
.glass .gc-head{padding:14px 14px 8px}.glass .gc-row{margin:0 14px}

/* Captions under the panels (owner, Oct 31: "this looks plain and ugly"): Apple's inline pattern, the title in ink running
   straight into one short sentence in grey, no icon; two lines, aligned to the panel's edge. */
.sky-cap{max-width:30em;margin-top:20px;text-wrap:pretty;font-size:17px;line-height:25px;letter-spacing:-.01em;-webkit-font-smoothing:antialiased}
.sky-cap h3,.sky-cap p{display:inline;margin:0;font:inherit;letter-spacing:inherit}
.sky-cap h3{color:var(--ink);font-weight:500}
.sky-cap p{color:#6e6e73}
html[data-theme=dark] .sky-cap p{color:#98989d}
@media (max-width:760px){.sky-cap{margin-top:16px;font-size:16px;line-height:23px}}

/* Windows fitted to the screen (round 7 v7): the window narrows with its zoomed app and sits centred. */
.hv-shot,.lv-frame{margin-inline:auto}

/* The curtain (owner, Oct 31: "smooth curtains motion ... a wow point"): Locate draws across the old screen with a soft
   feathered edge and a band of light along it, instead of a hard divider and knob. The switch shows at every width. */
.cmp-new{clip-path:none;-webkit-mask-image:linear-gradient(90deg,transparent calc(var(--e,-7%) - 7%),#000 calc(var(--e,-7%) + 7%));
  mask-image:linear-gradient(90deg,transparent calc(var(--e,-7%) - 7%),#000 calc(var(--e,-7%) + 7%))}
.cmp-line{left:var(--e,-7%);width:240px;margin-left:-120px;background:linear-gradient(90deg,transparent,rgb(255 255 255 / .55) 50%,transparent);
  box-shadow:none;filter:blur(10px);mix-blend-mode:screen}
html[data-theme=dark] .cmp-line{background:linear-gradient(90deg,transparent,rgb(255 255 255 / .16) 50%,transparent)}
.cmp-knob{display:none}
.cmp-frame{margin-inline:auto}
.cmp-switch,.cmp:has(.is-compact) .cmp-switch{display:flex;width:max-content;gap:2px;margin:0 auto 16px;padding:3px;border-radius:999px;background:var(--surface)}
.cmp-range{cursor:grab}.cmp-range:active{cursor:grabbing}

/* Live results (owner, Oct 31: "perform the skip trace and search the address and show them how their results look"):
   New trace searches the address and opens the owner's result under the composer; Your lists runs the trace, fills a Phone
   column row by row with a progress line, then opens any owner's result beside the list. The app's record anatomy, made up. */
button.lv-send{border:0;cursor:pointer;padding:0}
button.lv-send:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.lv-page.has-result .lv-sub-head,.lv-page.has-result .lv-recent{display:none}
.lv-result{margin-top:20px}
.lv-res-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;color:var(--a-muted);font-size:13px}
.lv-link{padding:0;border:0;background:none;color:var(--a-ink);font:500 13px/18px var(--font);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--a-line-2);cursor:pointer}
.lv-res{border-radius:16px;background:var(--a-surface);box-shadow:var(--a-card);animation:lv-res-in .4s var(--a-ease)}
@keyframes lv-res-in{from{opacity:0;transform:translateY(6px)}}
.lv-res-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px 16px;border-bottom:1px solid var(--a-line)}
.lv-res-name{color:var(--a-ink);font-size:18px;font-weight:500;line-height:24px}
.lv-res-meta{margin-top:2px!important;color:var(--a-muted);font-size:13px;line-height:18px}
.lv-res-pill{flex:none;padding:5px 12px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--a-line-2);color:var(--a-ink);font-size:12px;font-weight:500;white-space:nowrap}
.lv-res-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px;padding:6px 22px 14px}
.lv-res-panel{min-width:0;padding-top:12px}
.lv-res-h{display:flex;gap:6px;margin-bottom:2px!important;color:var(--a-muted);font-size:12px;font-weight:500;line-height:16px}
.lv-res-h span{font-weight:400}
.lv-res-r{display:flex;align-items:center;gap:10px;min-height:36px;border-bottom:1px solid var(--a-line);color:var(--a-ink);font-size:13px;line-height:18px}
.lv-res-panel .lv-res-r:last-child{border-bottom:0}
.lv-res-r b{min-width:0;overflow:hidden;font-weight:400;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}
.lv-res-r i{flex:1 1 auto;color:var(--a-muted);font-size:12px;font-style:normal}
.lv-res-r em{flex:none;margin-left:auto;color:var(--a-muted);font-size:12px;font-style:normal;font-variant-numeric:tabular-nums}
.lv-res-ph b{font-size:14px;font-weight:500}
.lv-res-ph i{font-size:13px}
.lv-res-r em.lv-st{background:var(--a-2);color:var(--a-ink-2)}
.lv-res-rel span{display:grid;min-width:0}.lv-res-rel span i{flex:none}
.lv-res-rel em{color:var(--a-ink);font-size:13px}
.lv-res-none{padding:8px 0;color:var(--a-muted);font-size:13px}
.lv-res-wait{display:grid;gap:10px;padding:22px;border-radius:16px;background:var(--a-surface);box-shadow:var(--a-card);color:var(--a-muted);font-size:13px}
.lv-res-wait i{display:block;height:12px;border-radius:6px;background:var(--a-3);animation:lv-shim 1.2s ease-in-out infinite}
.lv-res-wait i:nth-child(1){width:38%}.lv-res-wait i:nth-child(2){width:62%}.lv-res-wait i:nth-child(3){width:48%}
@keyframes lv-shim{50%{opacity:.45}}
.lv-res-empty{padding:28px 22px;border-radius:16px;background:var(--a-surface);box-shadow:var(--a-card);color:var(--a-ink);font-size:14px}
.lv-res-empty p+p{margin-top:4px!important;color:var(--a-muted);font-size:13px}
/* Your lists while and after tracing */
[data-lv-list]:not(.is-tracing):not(.is-traced) .lv-ph-c{display:none}
.lv-ph{color:var(--a-muted)}
.lv-ph b{font-weight:400;color:var(--a-ink)}.lv-ph i{margin-left:8px;color:var(--a-muted);font-size:12px;font-style:normal}
.lv-ph.is-in{animation:lv-res-in .35s var(--a-ease)}
[data-lv-list].is-traced tbody tr{cursor:pointer}
.lv-prog{display:inline-block;width:120px;height:4px;margin-left:12px;overflow:hidden;border-radius:2px;background:var(--a-3);vertical-align:middle}
.lv-prog i{display:block;width:var(--p);height:100%;border-radius:inherit;background:var(--a-primary);transition:width .25s var(--a-ease)}
.lv-btn:disabled{opacity:.7;cursor:default}
.lv-main{position:relative}
.lv-person{position:absolute;top:0;right:0;bottom:0;z-index:5;width:min(560px,100%);overflow:auto;padding:20px;background:var(--a-bg);box-shadow:-1px 0 0 var(--a-line),-24px 0 48px -32px rgb(0 0 0 / .35);animation:lv-slide .35s var(--a-ease)}
@keyframes lv-slide{from{transform:translateX(24px);opacity:0}}
.lv-person .lv-res-grid{grid-template-columns:minmax(0,1fr)}
.lv-person-x{position:absolute;top:28px;right:30px;z-index:1;width:30px;height:30px;border:0;border-radius:50%;background:var(--a-3);color:var(--a-ink);font:400 18px/30px var(--font);cursor:pointer}
.lv-person .lv-res-head{padding-right:56px}
.lv-person .lv-res-pill{display:none}
.lv-win.is-compact .lv-res-grid{grid-template-columns:minmax(0,1fr)}
@media (prefers-reduced-motion:reduce){.lv-res,.lv-ph.is-in,.lv-person{animation:none}.lv-res-wait i{animation:none}}
/* Phones and tablets have no pointer, so the copy cursor stays off them; the row still shows its copy button. */
@media (hover:none){.gc-cursor,.gc-tag{display:none}}
/* Live (home.js): the pointer glides to each phone's copy button, presses it, Copied rises; the row takes the hover. */
.glass.is-live .gc-cursor{top:0;right:auto;left:0;transition:translate .8s cubic-bezier(.22,1,.36,1),scale .12s ease}
.glass.is-live .gc-cursor.is-press{scale:.84}
.glass.is-live .gc-tag{top:0;right:auto;left:0;opacity:0;transition:opacity .2s ease}
.glass.is-live .gc-tag.is-on{opacity:1;animation:hv-copied .2s var(--ease)}
.glass-card .gc-row{transition:background-color .2s ease,box-shadow .2s ease}
.glass.is-live .gc-row.is-hot{background:rgb(0 0 0 / .03);box-shadow:-10px 0 0 rgb(0 0 0 / .03),10px 0 0 rgb(0 0 0 / .03)}
.glass.is-live .gc-row.is-hot .gc-ic{color:var(--g-ink)}

/* Directory of the sections the header names, plus the audience pages that were not linked from home. */
.home-paths{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 48px;margin:8px 0 0;padding:0;list-style:none;border-top:1px solid var(--line)}
.home-paths a{display:flex;flex-direction:column;gap:4px;padding:18px 0;border-bottom:1px solid var(--line);color:inherit;text-decoration:none}
.home-path-name{color:var(--ink);font-size:17px;font-weight:500;letter-spacing:-.01em}
.home-path-note{color:var(--muted);font-size:14px;line-height:1.45}
.home-paths a:hover .home-path-name{text-decoration:underline;text-underline-offset:3px}
@media (max-width:640px){.home-paths{grid-template-columns:minmax(0,1fr);gap:0}}
