/* Louveno Partner Access. Lives inside the template's own login page (body.login, #login, .wp-login-logo) and keeps its
   look: #f1f1f1 ground, white raised panel with the template's soft shadow, black capsule buttons, #ededed lines,
   Libre Baskerville headings over Noto Sans. Signed in, the page opens to full width for the practice dashboard. */
:root {
  --pt-ink: #111111;
  --pt-ink-2: #3d3d40;
  --pt-mute: #5f5f64;
  --pt-line: #ededed;
  --pt-line-strong: #d6d6d8;
  --pt-ground: #f1f1f1;
  --pt-surface: #ffffff;
  --pt-sunken: #f7f7f7;
  --pt-error: #b3261e;
  --pt-radius: 5px;
  --pt-panel-radius: 15px;
  --pt-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --pt-shadow: 0 1px 2px -1px rgba(0,0,0,.02), 0 2px 6px -2px rgba(0,0,0,.03), 0 6px 12px -3px rgba(0,0,0,.03), 0 15px 30px -3px rgba(0,0,0,.02);
  --pt-shadow-raised: 0 4px 24px rgba(0,0,0,.08);
  --pt-serif: "Libre Baskerville", Georgia, serif;
  --pt-sans: "Noto Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
body.lv-portal-page { font-family: var(--pt-sans); color: var(--pt-ink); -webkit-font-smoothing: antialiased; }
body.lv-portal-page #login { width: min(100% - 32px, 420px); margin: 0 auto; padding: clamp(32px, 6vh, 72px) 0 40px; }
body.lv-portal-page .wp-login-logo { margin: 0; padding: 0; }
body.lv-portal-page .wp-login-logo a { display: block; width: 100% !important; height: 56px !important; margin: 0 0 28px; overflow: hidden; text-indent: -9999px; white-space: nowrap; background-repeat: no-repeat !important; background-position: center bottom !important; background-size: contain !important; }
body.lv-portal-page #backtoblog, body.lv-portal-page .privacy-policy-page-link { text-align: center; }
body.lv-portal-page #backtoblog a, body.lv-portal-page .privacy-policy-link { font-size: 13px; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); white-space: nowrap; }

/* ---------- shared pieces ---------- */
.lv-portal { display: block; }
.lv-portal a { color: var(--pt-ink); text-underline-offset: 3px; }
.lv-pt-primary, body.login .lv-pt-primary.button-primary {
  display: inline-flex !important; align-items: center; justify-content: center; width: 100%; min-height: 48px !important;
  padding: 0 28px !important; border: 0 !important; border-radius: 999px !important; background: #000 !important; color: #fff !important;
  font: 500 15px/1 var(--pt-sans) !important; text-decoration: none !important; text-shadow: none !important; box-shadow: none !important;
  cursor: pointer; transition: background-color 180ms var(--pt-ease), transform 120ms var(--pt-ease), opacity 160ms var(--pt-ease);
}
.lv-pt-primary:hover:not(:disabled) { background: #2a2a2c !important; }
.lv-pt-primary:active:not(:disabled) { transform: translateY(1px); }
.lv-pt-primary:disabled { opacity: .4; cursor: not-allowed; }
.lv-pt-primary[aria-busy="true"] { opacity: .7; cursor: progress; }
.lv-pt-link { padding: 0; min-height: 32px; background: none; border: 0; font: 500 14px var(--pt-sans); color: var(--pt-ink); text-decoration: underline; text-decoration-color: var(--pt-line-strong); text-underline-offset: 4px; cursor: pointer; transition: text-decoration-color 160ms var(--pt-ease); }
.lv-pt-link:hover, .lv-pt-link.is-on { text-decoration-color: var(--pt-ink); }
.lv-pt-ghost { min-height: 40px; padding: 0 20px; border: 1px solid var(--pt-ink); border-radius: 999px; background: transparent; color: var(--pt-ink); font: 500 14px var(--pt-sans); cursor: pointer; transition: background-color 160ms var(--pt-ease), color 160ms var(--pt-ease); }
.lv-pt-ghost:hover { background: #000; color: #fff; }
.lv-portal button:focus-visible, .lv-portal a:focus-visible, .lv-portal select:focus-visible, .lv-portal input:focus-visible { outline: 2px solid var(--pt-ink); outline-offset: 2px; }

/* ---------- loading skeleton ---------- */
.lv-pt-sk { display: block; border-radius: var(--pt-radius); background: linear-gradient(100deg, #ececec 30%, #f6f6f6 50%, #ececec 70%) 0 0 / 300% 100%; animation: pt-shimmer 1.4s linear infinite; }
.lv-pt-skel { display: grid; gap: 14px; padding: 28px 24px; background: var(--pt-surface); border-radius: var(--pt-panel-radius); box-shadow: var(--pt-shadow); }
.lv-pt-sk-title { height: 26px; width: 62%; }
.lv-pt-sk-line { height: 14px; width: 100%; }
.lv-pt-sk-line.short { width: 72%; }
.lv-pt-sk-btn { height: 48px; width: 100%; border-radius: 999px; margin-top: 10px; }
.lv-pt-sk-num { width: 36px; height: 30px; }
.lv-pt-sk-img { width: 100%; aspect-ratio: 5 / 4; }
.lv-pt-noscript { padding: 24px; background: #fff; border-radius: var(--pt-panel-radius); }

/* ---------- sign-in panel (the template's raised login card) ---------- */
.lv-pt-signin { padding: 30px 26px 28px; background: var(--pt-surface); border-radius: var(--pt-panel-radius); box-shadow: var(--pt-shadow); animation: pt-in 220ms var(--pt-ease) both; }
.lv-pt-h { margin: 0 0 10px; font: 400 24px/1.3 var(--pt-serif); color: var(--pt-ink); outline: none; text-wrap: balance; }
.lv-pt-lede { margin: 0 0 24px; font-size: 15px; line-height: 1.6; color: var(--pt-ink-2); }
.lv-pt-lede strong { color: var(--pt-ink); overflow-wrap: anywhere; }
.lv-pt-form { margin: 0 !important; padding: 0 !important; background: none !important; box-shadow: none !important; border: 0 !important; }
.lv-pt-form p { margin: 0 0 18px; }
.lv-pt-form label { display: block; margin-bottom: 6px; font-size: 14px; font-weight: 500; color: var(--pt-ink); }
body.login .lv-pt-form input.input { width: 100%; max-width: 460px; min-height: 48px; margin: 0; padding: 0 14px !important; font: 400 16px var(--pt-sans); color: var(--pt-ink); background: #fff; border: 1px solid var(--pt-line-strong); border-radius: var(--pt-radius) !important; box-shadow: none; }
body.login .lv-pt-form input.input:focus { border-color: #000; box-shadow: 0 0 0 1px #000; }
body.login .lv-pt-form input.lv-pt-code { max-width: 220px; font-size: 24px; letter-spacing: .4em; font-variant-numeric: tabular-nums; }
.lv-pt-form p.submit { margin: 4px 0 0; }
.lv-pt-alt { margin: 18px 0 0; text-align: center; }
.lv-pt-err { margin: 16px 0 0; font-size: 14px; line-height: 1.45; color: var(--pt-error); }
.lv-pt-err[hidden] { display: none; }
.lv-pt-apply { margin: 22px 0 0; text-align: center; font-size: 14px; color: var(--pt-ink-2); }
.lv-pt-apply a { font-weight: 500; }

/* ---------- signed in: full width ---------- */
body.lv-portal-wide #login { width: auto; max-width: none; margin: 0; padding: clamp(20px, 3vw, 40px) clamp(16px, 3vw, 40px) 40px; }
body.lv-portal-wide .wp-login-logo a { width: 200px !important; height: 40px !important; margin-bottom: clamp(24px, 3vw, 40px); background-position: left bottom !important; }
body.lv-portal-wide #backtoblog, body.lv-portal-wide .privacy-policy-page-link { text-align: left; padding-left: 0; }

.lv-pt-preview { margin: 0 0 20px; padding: 12px 16px; border: 1px solid var(--pt-line-strong); border-radius: var(--pt-radius); background: var(--pt-surface); font-size: 14px; line-height: 1.5; color: var(--pt-ink-2); }
.lv-pt-top { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px 24px; margin-bottom: 24px; }
.lv-pt-kicker { margin: 0 0 6px; font-size: 13px; font-weight: 500; color: var(--pt-mute); }
.lv-pt-title { margin: 0; font: 400 clamp(28px, 3.2vw, 44px)/1.15 var(--pt-serif); color: var(--pt-ink); outline: none; overflow-wrap: anywhere; text-wrap: balance; }
.lv-pt-hello { margin: 8px 0 0; font-size: 14px; color: var(--pt-ink-2); }

.lv-pt-banner { display: grid; gap: 4px; margin-bottom: clamp(28px, 3vw, 40px); padding: 18px 22px; border-radius: var(--pt-radius); background: var(--pt-surface); border: 1px solid var(--pt-line); animation: pt-in 220ms var(--pt-ease) both; }
.lv-pt-banner b { font-size: 16px; font-weight: 600; color: var(--pt-ink); }
.lv-pt-banner p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--pt-ink-2); max-width: 78ch; }
.lv-pt-banner.is-live { background: #111; border-color: #111; }
.lv-pt-banner.is-live b, .lv-pt-banner.is-live p { color: #fff; }
.lv-pt-banner.is-pending { border-color: var(--pt-line-strong); border-style: dashed; }
.lv-pt-banner.is-paused b { color: var(--pt-error); }

.lv-pt-grid { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(280px, 1fr); gap: clamp(20px, 2.5vw, 36px); align-items: start; }
.lv-pt-main > section { padding: clamp(20px, 2vw, 28px); background: var(--pt-surface); border-radius: var(--pt-panel-radius); box-shadow: var(--pt-shadow); }
.lv-pt-sec-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.lv-pt-h3 { margin: 0; font: 400 22px/1.3 var(--pt-serif); color: var(--pt-ink); }
.lv-pt-sub { margin: 8px 0 22px; font-size: 15px; line-height: 1.6; color: var(--pt-ink-2); max-width: 70ch; }

/* The pipeline: the practice's real leads by stage. Each stage filters the list below. */
.lv-pt-pipe { list-style: none; margin: 0 0 22px; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border-top: 1px solid var(--pt-ink); }
.lv-pt-pipe li { margin: 0; list-style: none; }
.lv-pt-pipe li + li .lv-pt-stage { border-left: 1px solid var(--pt-line); }
.lv-pt-stage { display: grid; gap: 4px; justify-items: start; width: 100%; height: 100%; padding: 14px 14px 16px; background: transparent; border: 0; text-align: left; font-family: var(--pt-sans); color: var(--pt-ink); cursor: pointer; transition: background-color 160ms var(--pt-ease); }
.lv-pt-stage:hover:not(:disabled) { background: var(--pt-sunken); }
.lv-pt-stage:disabled { cursor: default; }
.lv-pt-stage.is-on { background: #111; color: #fff; }
.lv-pt-stage-label { font-size: 13px; font-weight: 500; }
.lv-pt-stage-n { font: 400 32px/1.1 var(--pt-serif); font-variant-numeric: tabular-nums; }
.lv-pt-stage-sub { font-size: 12px; color: var(--pt-mute); }
.lv-pt-stage.is-on .lv-pt-stage-sub { color: #cfcfcf; }

/* Lead rows */
.lv-pt-rows-head, .lv-pt-row { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) 72px 190px; gap: 16px; align-items: center; }
.lv-pt-rows-head { padding: 0 4px 10px; font-size: 12px; font-weight: 500; color: var(--pt-mute); border-bottom: 1px solid var(--pt-line); }
.lv-pt-rows { list-style: none; margin: 0; padding: 0; }
.lv-pt-row { list-style: none; margin: 0; padding: 14px 4px; border-bottom: 1px solid var(--pt-line); transition: opacity 160ms var(--pt-ease), background-color 160ms var(--pt-ease); }
.lv-pt-row:last-child { border-bottom: 0; }
.lv-pt-row.is-saving { opacity: .6; }
.lv-pt-row.s-new .lv-pt-who b::after { content: "New"; margin-left: 8px; padding: 2px 8px; border-radius: 999px; background: #111; color: #fff; font-size: 11px; font-weight: 500; vertical-align: 2px; }
.lv-pt-row.s-closed { color: var(--pt-mute); }
.lv-pt-who { display: grid; gap: 2px; min-width: 0; }
.lv-pt-who b { font-size: 15px; font-weight: 600; }
.lv-pt-who a { font-size: 14px; color: var(--pt-ink-2) !important; overflow-wrap: anywhere; }
.lv-pt-need { display: grid; gap: 2px; font-size: 14px; }
.lv-pt-need small { font-size: 12px; color: var(--pt-mute); text-transform: capitalize; }
.lv-pt-when { font-size: 14px; color: var(--pt-ink-2); font-variant-numeric: tabular-nums; }
.lv-pt-status { display: flex; align-items: center; gap: 8px; }
.lv-pt-status select { width: min(100%, 190px); min-height: 40px; margin: 0; padding: 0 30px 0 12px; font: 500 14px var(--pt-sans); color: var(--pt-ink); background: #fff url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23111' stroke-width='1.5' fill='none'/%3E%3C/svg%3E") no-repeat right 12px center / 10px 6px; border: 1px solid var(--pt-line-strong); border-radius: 999px; -webkit-appearance: none; appearance: none; cursor: pointer; transition: border-color 160ms var(--pt-ease); }
.lv-pt-status select:hover:not(:disabled) { border-color: #000; }
.lv-pt-status select:disabled { cursor: progress; }
.lv-pt-saving { font-size: 12px; color: var(--pt-mute); }
.lv-pt-row-err { grid-column: 1 / -1; margin: 0; font-size: 13px; color: var(--pt-error); }
.lv-pt-row.is-skel .lv-pt-sk { height: 14px; }
.lv-pt-row.is-skel .lv-pt-sk:nth-child(4) { height: 40px; border-radius: 999px; }
.lv-pt-empty { display: grid; justify-items: start; gap: 14px; padding: 28px 24px; background: var(--pt-sunken); border-radius: var(--pt-radius); }
.lv-pt-empty p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--pt-ink-2); max-width: 62ch; }
.lv-pt-empty b { color: var(--pt-ink); }

/* Profile */
.lv-pt-card { padding: clamp(20px, 2vw, 26px); background: var(--pt-surface); border-radius: var(--pt-panel-radius); box-shadow: var(--pt-shadow); }
.lv-pt-card h3 { margin: 0 0 14px; font: 400 20px/1.3 var(--pt-serif); color: var(--pt-ink); }
.lv-pt-dl { margin: 0; display: grid; }
.lv-pt-dl div { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 12px; padding: 10px 0; border-top: 1px solid var(--pt-line); }
.lv-pt-dl dt { font-size: 13px; color: var(--pt-mute); }
.lv-pt-dl dd { margin: 0; font-size: 14px; font-weight: 500; color: var(--pt-ink); overflow-wrap: anywhere; }
.lv-pt-note { margin: 14px 0 0; font-size: 13px; line-height: 1.5; color: var(--pt-mute); }

/* Guide: a real three-step sequence */
.lv-pt-guide { margin-top: clamp(48px, 6vw, 80px); }
.lv-pt-steps { list-style: none; margin: 22px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 3vw, 48px); counter-reset: pt; }
.lv-pt-steps li { list-style: none; margin: 0; padding-top: 18px; border-top: 1px solid var(--pt-ink); counter-increment: pt; display: grid; gap: 8px; align-content: start; }
.lv-pt-steps li::before { content: counter(pt); font: 400 40px/1 var(--pt-serif); color: var(--pt-ink); margin-bottom: 6px; }
.lv-pt-steps b { font-size: 16px; font-weight: 600; }
.lv-pt-steps p { margin: 0; font-size: 15px; line-height: 1.65; color: var(--pt-ink-2); max-width: 48ch; }

/* Frames they can offer */
.lv-pt-offer { margin-top: clamp(48px, 6vw, 80px); }
.lv-pt-frames { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 170px), 1fr)); gap: 16px; }
@media (min-width: 1280px) { .lv-pt-frames { grid-template-columns: repeat(9, minmax(0, 1fr)); } }
.lv-pt-frames li { list-style: none; margin: 0; }
.lv-pt-frames a { display: grid; gap: 4px; text-decoration: none; color: var(--pt-ink); }
.lv-pt-frames img { display: block; width: 100%; height: auto; aspect-ratio: 5 / 4; object-fit: cover; border-radius: var(--pt-radius); background: #e9e9e9; margin-bottom: 8px; transition: transform 220ms var(--pt-ease), box-shadow 220ms var(--pt-ease); }
.lv-pt-frames a:hover img { box-shadow: var(--pt-shadow-raised); }
.lv-pt-frames b { font-size: 14px; font-weight: 600; }
.lv-pt-frames span { font-size: 13px; color: var(--pt-mute); }

@keyframes pt-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@keyframes pt-shimmer { to { background-position: -300% 0; } }

@media (max-width: 1100px) {
  .lv-pt-grid { grid-template-columns: 1fr; }
  .lv-pt-dl { grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); column-gap: 24px; }
}
@media (max-width: 860px) {
  .lv-pt-pipe { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .lv-pt-pipe li:nth-child(4) .lv-pt-stage { border-left: 0; }
  .lv-pt-pipe li:nth-child(n+4) { border-top: 1px solid var(--pt-line); }
  .lv-pt-rows-head { display: none; }
  .lv-pt-row { grid-template-columns: minmax(0, 1fr) auto; gap: 8px 16px; }
  .lv-pt-who { grid-column: 1 / -1; }
  .lv-pt-need { grid-column: 1; }
  .lv-pt-when { grid-column: 2; grid-row: 2; text-align: right; }
  .lv-pt-status { grid-column: 1 / -1; }
  .lv-pt-steps { grid-template-columns: 1fr; }
}
@media (max-width: 420px) {
  .lv-pt-pipe { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lv-pt-pipe li:nth-child(4) .lv-pt-stage { border-left: 1px solid var(--pt-line); }
  .lv-pt-pipe li:nth-child(odd) .lv-pt-stage { border-left: 0; }
  .lv-pt-pipe li:nth-child(n+3) { border-top: 1px solid var(--pt-line); }
  .lv-pt-dl div { grid-template-columns: 96px minmax(0, 1fr); }
  .lv-pt-frames { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (prefers-reduced-motion: reduce) {
  .lv-pt-sk { animation: none; }
  .lv-pt-signin, .lv-pt-banner { animation: none; }
  .lv-pt-stage, .lv-pt-row, .lv-pt-primary, .lv-pt-frames img { transition: none; }
}
