
/* =====================================================================
   V25 — interaction-state cleanup + lighter Lake primary actions.
   Hover/selected states should never invert to pure black or pure white.
   ===================================================================== */

/* LAKE — keep the primary action clear, but much lighter than the old teal. */
html[data-theme="nature-light"] .cta,
html[data-theme="nature-light"] .solid{
  background:#9FC3BB!important;
  color:#15312C!important;
  border-color:#86ADA4!important;
  box-shadow:0 1px 2px rgba(25,54,49,.06)!important;
}
html[data-theme="nature-light"] .cta:hover,
html[data-theme="nature-light"] .solid:hover{
  background:#94B9B0!important;
  color:#102C27!important;
  border-color:#789F96!important;
}
html[data-theme="nature-light"] .cta:active,
html[data-theme="nature-light"] .solid:active{
  background:#8DB2A9!important;
  transform:translateY(0)!important;
}

/* Hover states: subtle theme tint, never a full white/black fill. */
.nav button:hover,
.nav .sub:hover,
.footrow:hover,
.amrow:hover,
.side-utility-v22 button:hover,
.side-theme-grid-v23 button:hover,
.research-nav-v5 button:hover,
.deck17-research-tabs button:hover,
.deck16-method button:hover,
.deck16-tag:hover,
.deck16-client:hover,
.deck18-slide-row:hover,
.deck15-row:hover,
.deck14-row:hover,
.deck13-slide-row:hover,
.deck13-section-chip:hover,
button.li:hover,
.visit:hover,
.opener:hover,
.sugg button:hover,
.prow:hover,
.route-close-v11:hover{
  background:color-mix(in srgb,var(--sig-bg) 48%,var(--card-2))!important;
  color:var(--ink)!important;
  border-color:color-mix(in srgb,var(--sig) 24%,var(--line-2))!important;
}

/* Selected/current states: a calm tinted surface rather than inversion. */
.fchip[aria-pressed="true"],
.tbar .fchip[aria-pressed="true"],
.btab[aria-pressed="true"],
.seg[aria-pressed="true"],
.amenity-filter-v9[aria-pressed="true"],
.deck16-method button[aria-pressed="true"],
.deck16-tag[aria-pressed="true"],
.deck16-client[aria-pressed="true"],
.side-theme-grid-v23 button[aria-pressed="true"],
.research-nav-v5 button[aria-current="true"],
.deck17-research-tabs button[aria-current="true"],
.nav button[aria-current="true"],
.side-utility-v22 button[aria-current="true"],
.sugg button[data-on="1"],
.prow[data-on="1"],
.deck18-slide-row.active,
.deck15-row.active{
  background:color-mix(in srgb,var(--sig-bg) 72%,var(--card))!important;
  color:var(--ink)!important;
  border-color:color-mix(in srgb,var(--sig) 30%,var(--line-2))!important;
  box-shadow:none!important;
}

/* Keep selected selling-points tab distinct without turning into a block. */
.deck17-research-tabs button.sell[aria-current="true"]{
  background:color-mix(in srgb,var(--sig-bg) 82%,var(--card))!important;
  color:var(--ink)!important;
  box-shadow:inset 0 -2px color-mix(in srgb,var(--sig) 70%,transparent)!important;
}

/* Top-level property tabs remain understated; hover only changes tone. */
.deck17-tabs button:hover,
.deck15-tabs button:hover,
.deck14-subnav button:hover,
.deck13-tab:hover{
  background:transparent!important;
  color:var(--ink)!important;
}
.deck17-tabs button[aria-current="true"],
.deck15-tabs button[aria-current="true"],
.deck14-subnav button[aria-current="true"],
.deck13-tab[aria-current="true"]{
  background:transparent!important;
  color:var(--ink)!important;
}

/* Table/list hover is a soft wash too. */
tbody tr.go:hover,
tbody tr.go:focus-visible,
.stream-row:hover,
.deck-row:hover,
.client-row:hover,
.news-row:hover,
.sent-row:hover,
.shared-link-v4:hover{
  background:color-mix(in srgb,var(--sig-bg) 34%,var(--card))!important;
  color:var(--ink)!important;
}

/* Pressing controls should not flash an inverse colour. */
.fchip:active,.btab:active,.seg:active,.amenity-filter-v9:active,
.deck16-method button:active,.deck16-tag:active,.deck16-client:active,
.side-theme-grid-v23 button:active,.research-nav-v5 button:active,
.deck17-research-tabs button:active,.nav button:active,.side-utility-v22 button:active{
  background:color-mix(in srgb,var(--sig-bg) 82%,var(--card-2))!important;
  color:var(--ink)!important;
}


/* =====================================================================
   V26 — created customer decks persist on this device; unlinked decks
   carry a "no linked contact" prompt; phone is optional everywhere;
   decks, clients, saved customer decks and custom news items can be
   deleted (with undo, and the deletion persists).
   ===================================================================== */
.v26-amber{color:#a8722a!important}
.v26-danger-btn{color:#a8433a!important}
.v26-danger-btn:hover{border-color:rgba(168,67,58,.45)!important;background:rgba(168,67,58,.06)!important}
.deck13-menu .v26-danger-btn{display:block;width:100%;padding:8px 9px;border-radius:7px;
  text-align:left;font-size:11.5px;border-top:1px solid var(--line);margin-top:4px;padding-top:9px}
.v26-linksel{font:inherit;font-size:11.5px;padding:5px 7px;border:1px solid var(--line-2);
  border-radius:7px;background:var(--card);color:var(--ink);max-width:150px}
.v26-news-del{display:inline-block;margin:22px 0 6px}
.v26-dash{opacity:.55}


/* =====================================================================
   V27 — contact import (file drop, vCard, CSV, paste) with a review
   step, and split storage: names/areas/tags persist as synced records,
   phone numbers live in a device-local vault only.
   ===================================================================== */
.v27-modal{position:fixed;inset:0;z-index:300;display:flex;align-items:center;
  justify-content:center;padding:26px}
.v27-modal[hidden]{display:none}
.v27-scrim{position:absolute;inset:0;background:rgba(15,18,20,.45)}
.v27-card{position:relative;width:min(680px,100%);max-height:calc(88vh / var(--uz));
  overflow:auto;background:var(--card);border:1px solid var(--line-2);border-radius:14px;
  box-shadow:0 30px 90px -30px rgba(0,0,0,.5);padding:22px 24px 20px}
.v27-card h2{font-size:16px;margin:0 0 3px}
.v27-card>p{font-size:12.5px;color:var(--ink-2);margin:0 0 15px}
.v27-close{position:absolute;top:13px;right:15px;font-size:17px;color:var(--ink-3);
  line-height:1;padding:4px 7px}
.v27-close:hover{color:var(--ink)}
.v27-privacy{display:flex;gap:9px;align-items:flex-start;padding:11px 13px;margin-bottom:15px;
  border:1px solid var(--line);border-radius:10px;background:var(--card-2, rgba(0,0,0,.03));
  font-size:11.5px;line-height:1.55;color:var(--ink-2)}
.v27-privacy svg{flex:none;width:15px;height:15px;margin-top:1px;stroke:var(--sig);fill:none;
  stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.v27-privacy b{color:var(--ink)}
.v27-drop{display:flex;flex-direction:column;align-items:center;gap:5px;padding:22px 14px;
  border:1.5px dashed var(--line-2);border-radius:11px;cursor:pointer;text-align:center;
  color:var(--ink-2);font-size:12.5px;transition:border-color .15s,background .15s;width:100%}
.v27-drop:hover,.v27-drop.over{border-color:var(--sig);background:var(--sig-bg)}
.v27-drop b{font-size:13px;color:var(--ink)}
.v27-or{display:flex;align-items:center;gap:10px;margin:13px 0 9px;font-size:10.5px;
  letter-spacing:.05em;color:var(--ink-3)}
.v27-or::before,.v27-or::after{content:"";flex:1;height:1px;background:var(--line)}
.v27-paste{width:100%;min-height:76px;resize:vertical;border:1px solid var(--line-2);
  border-radius:10px;background:transparent;color:var(--ink);padding:10px 12px;
  font:inherit;font-size:12.5px;line-height:1.6}
.v27-parsebar{display:flex;justify-content:flex-end;margin-top:9px}
.v27-table{width:100%;border-collapse:collapse;margin-top:4px;font-size:12.5px}
.v27-table th{text-align:left;font-size:10.5px;letter-spacing:.05em;color:var(--ink-3);
  font-weight:600;padding:7px 9px;border-bottom:1px solid var(--line-2)}
.v27-table td{padding:7px 9px;border-bottom:1px solid var(--line);vertical-align:middle}
.v27-table input[type=text]{width:100%;border:0;border-bottom:1px dashed transparent;
  background:transparent;color:var(--ink);font:inherit;font-size:12.5px;padding:2px 0}
.v27-table input[type=text]:focus{outline:none;border-bottom-color:var(--sig)}
.v27-st{display:inline-block;padding:2px 8px;border-radius:99px;font-size:10.5px;
  font-weight:600;white-space:nowrap}
.v27-st.ok{background:rgba(73,124,82,.13);color:#3c6a45}
.v27-st.dup{background:rgba(138,106,47,.13);color:#8a6a2f}
.v27-st.chk{background:rgba(168,67,58,.11);color:#a8433a}
.v27-st.nm{background:rgba(19,22,25,.07);color:var(--ink-2)}
.v27-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:15px;padding-top:13px;border-top:1px solid var(--line)}
.v27-foot small{font-size:11px;color:var(--ink-3)}
.v27-localnote{display:block;margin-top:4px;font-size:10.5px;color:var(--ink-3)}
.v27-devicetag{display:inline-block;margin-left:7px;padding:1.5px 7px;border-radius:99px;
  border:1px solid var(--line-2);font-size:9.5px;font-weight:600;letter-spacing:.03em;
  color:var(--ink-3);vertical-align:middle;white-space:nowrap}

/* ===========================================================================
   Two fixes for the auto-scale feature, which sets --uz on <html> and zooms
   the root so the 1440px design fits the window.

   1. Viewport units ignore root zoom. `height:100vh` on the sidebar is 100%
      of the UNZOOMED viewport, so at --uz .89 the sidebar renders at 89% of
      the window and leaves a strip of background below it. Dividing by --uz
      gives back the height the rule intended. --uz is unset until the script
      runs, so the fallback of 1 keeps this identical to plain 100vh.

   2. The interface-scale dial had markup and behaviour but no styles, so the
      track and thumb collapsed to nothing: Settings showed a label, a number
      and Reset with an invisible control between them. These are its styles.
   ========================================================================= */

.shell { min-height: calc(100vh / var(--uz, 1)) }
.side  { height: calc(100vh / var(--uz, 1)) }
/* the same for the page's own min-height: above --uz 1 a plain 100vh made every zone scroll
   into a strip of empty page */
html body { min-height: calc(100vh / var(--uz, 1)) }

.uiscale { display: inline-flex; align-items: center; gap: 10px }

.uiscale-track {
  position: relative; display: block; width: 168px; height: 4px;
  border-radius: 999px; background: var(--line-2, rgba(19,22,25,.18));
  cursor: ew-resize; touch-action: none; outline: none;
}
.uiscale-track:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, var(--sig) 30%, transparent) }

.uiscale-fill {
  position: absolute; inset: 0 auto 0 0; border-radius: 999px;
  background: var(--sig); pointer-events: none;
}

.uiscale-thumb {
  position: absolute; top: 50%; width: 14px; height: 14px; margin-left: -7px;
  border-radius: 50%; background: var(--card, #fff);
  border: 1.5px solid var(--sig); transform: translateY(-50%);
  box-shadow: 0 1px 3px rgba(0,0,0,.18); pointer-events: none;
}
.uiscale-track:active .uiscale-thumb { transform: translateY(-50%) scale(1.12) }

.uiscale b {
  min-width: 2.2ch; text-align: right; font-size: 11.5px; font-weight: 600;
  color: var(--ink-2); font-variant-numeric: tabular-nums;
}

.uiscale-reset {
  font-size: 11px; color: var(--ink-3); padding: 3px 9px;
  border: 1px solid var(--line-2); border-radius: 7px; background: none;
  cursor: pointer; white-space: nowrap;
}
.uiscale-reset:hover { color: var(--ink); border-color: var(--sig) }

/* ===========================================================================
   f26 news-detail layout (RECONSTRUCTED). The flow26 markup survived in the
   restored news script, but its base stylesheet predates the transcripts, so
   these styles are rebuilt to the same design language. The v28 chip, mode,
   summary and tick styles already live in dashboard.html.
   ========================================================================= */
.flow26{display:flex;flex-direction:column;gap:0}
.f26-topline{display:flex;align-items:center;justify-content:space-between;gap:12px}
.f26-topline h2{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-3);margin:0}
.f26-badge{padding:3px 10px;border-radius:99px;border:1px solid var(--line-2);
  font-size:10.5px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.f26-muted{color:var(--ink-3)}
.f26-panel{padding:18px 20px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.f26-panel h2{font-size:14.5px;margin:0 0 10px}
.f26-panel>p{font-size:13px;line-height:1.65;color:var(--ink-2);margin:0}
.f26-draft{width:100%;min-height:150px;margin-top:9px;padding:12px 13px;resize:vertical;
  border:1px solid var(--line-2);border-radius:10px;background:var(--card-2);
  font:inherit;font-size:12.5px;line-height:1.6;color:var(--ink)}
.f26-draft:focus{outline:none;border-color:var(--sig)}
.f26-actions{display:flex;gap:9px;margin-top:11px;flex-wrap:wrap}
.f26-draft-note{font-size:11.5px;color:var(--ink-3);margin:7px 0 0;line-height:1.55}




/* ── Redesigner zone ────────────────────────────────────────────────────── */
/* Detail */
/* New: collection or standalone */
/* Redesigner toolbar: filters, search, sort. */
