/* Profesor Particular .IO — L3 teacher profile (and the pending-profile template)
   One stylesheet for every profile, design system v7 (approved by Vicente, 16 Oct 2026).
   Loaded after ds.css by profesores-particulares/{materia}/{ciudad}/{slug}/ and by
   templates/perfil-pendiente.template. Replaces seven drifted inline copies. */
:root {color-scheme:light only;
  --ink:        #0f172a;
  --ink-soft:   #334155;
  --ink-muted:  #475569;
  --surface:    #ffffff;
  --surface-soft: #f8fafc;
  --surface-subtle: #f1f5f9;
  --border:     #e2e8f0;
  --border-subtle: #f1f5f9;
  --accent:     #0f172a;
  --accent-lt:  #f1f5f9;
  --accent-hov: #1e293b;
  --success:    #0f172a;
  --r-sm: 8px; --r-md: 16px; --r-lg: 24px; --r-xl: 32px;
  --sh-sm: 0 2px 8px rgba(0,0,0,.04),0 1px 3px rgba(0,0,0,.02);
  --sh-md: 0 8px 24px rgba(15,23,42,.06),0 2px 8px rgba(15,23,42,.04);
  --sh-lg: 0 20px 48px rgba(15,23,42,.08),0 8px 16px rgba(15,23,42,.04);
  --sh-glow: 0 0 30px rgba(15,23,42,.2);
}

html{scroll-behavior:smooth;font-size:16px;}
body{font-family:var(--font);color:var(--ink);background:var(--surface-soft);line-height:1.6;-webkit-font-smoothing:antialiased;}

/* BUTTONS */

/* LAYOUT */
.profile-page{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--ds-space-07);}
.profile-card{width:100%;max-width:440px;background:#fff;border-radius:var(--r-xl);padding:var(--ds-space-07);box-shadow:0 25px 50px -12px rgba(15,23,42,.15);display:flex;flex-direction:column;}

/* TOP BAR */
.profile-top-bar{display:flex;align-items:center;gap:var(--ds-space-03);font-size:.75rem;font-weight:600;color:var(--ink-muted);margin-bottom:var(--ds-space-06);}
.status-dot{width:8px;height:8px;background:var(--success);border-radius:50%;box-shadow:0 0 8px var(--success);}
.location-badge{margin-left:auto;background:var(--surface-soft);padding:var(--ds-space-02) var(--ds-space-03);border-radius:4px;font-size:.75rem;}

/* HEADER */
.profile-header{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:var(--ds-space-06);}
.avatar-wrapper{position:relative;margin-bottom:var(--ds-space-04);}
.profile-avatar{width:100px;height:100px;border-radius:50%;object-fit:cover;border:3px solid var(--surface-soft);box-shadow:var(--sh-md);}
.profile-avatar--initials{display:flex;align-items:center;justify-content:center;background:var(--accent-lt);color:var(--accent);font-size:2.25rem;font-weight:600;letter-spacing:-.04em;user-select:none;}
.name-wrapper{display:flex;align-items:flex-start;justify-content:center;gap:var(--ds-space-03);margin-bottom:var(--ds-space-02);flex-wrap:nowrap;}
.profile-name{font-size:1.5rem;font-weight:600;color:var(--ink);text-align:center;}
.verified-badge-icon{width:22px;height:22px;color:var(--accent);flex-shrink:0;margin-bottom:var(--ds-space-02);}
.profile-title{font-size:.9375rem;color:var(--ink-muted);font-weight:500;}

/* METRICS */
.profile-metrics{display:flex;align-items:center;justify-content:space-around;background:var(--surface-soft);border-radius:var(--r-lg);padding:var(--ds-space-05) var(--ds-space-06);margin-bottom:var(--ds-space-06);border:1px solid var(--border);}
.metric{display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-01);}
.metric strong{font-size:1rem;font-weight:600;color:var(--ink);line-height:1.2;}
.metric span{font-size:.75rem;font-weight:600;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.05em;}
.metric-divider{width:1px;height:24px;background:var(--border);}

/* SECTIONS */
.profile-section{margin-bottom:var(--ds-space-06);}
.sec-title{font-size:.75rem;font-weight:600;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--ds-space-04);display:flex;align-items:center;gap:var(--ds-space-03);}

/* BIO */
.profile-bio{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:var(--r-md);padding:var(--ds-space-04) var(--ds-space-05);margin-bottom:var(--ds-space-03);}
.bio-quote{font-size:.875rem;font-weight:600;color:#0f172a;line-height:1.4;margin-bottom:var(--ds-space-03);}
.bio-body{font-size:.8125rem;color:#475569;line-height:1.65;}
.bio-body strong{color:#0f172a;font-weight:600;}

/* TAGS */
.spec-block{background:var(--surface-soft);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--ds-space-04) var(--ds-space-05);margin-bottom:var(--ds-space-03);}
.spec-block:last-child{margin-bottom:0;}
.spec-sublabel{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);margin-bottom:var(--ds-space-03);}
.profile-tags{display:flex;flex-wrap:wrap;gap:var(--ds-space-03);}
.tag{font-size:.8rem;font-weight:600;padding:var(--ds-space-02) var(--ds-space-04);border-radius:100px;line-height:1;}
.tag-subject{background:var(--accent-lt);color:var(--accent);border:1px solid rgba(15,23,42,.15);}
.tag-level{background:#fff;border:1px solid var(--border);color:var(--ink-soft);}

/* CREDENTIALS */
.credentials-list{list-style:none;padding:0;margin:0;}
.credential-item{display:grid;grid-template-columns:7rem 1fr auto;align-items:center;gap:var(--ds-space-03);padding:var(--ds-space-03) 0;border-bottom:1px dashed var(--border);font-size:.8125rem;}
.credential-item:last-child{border-bottom:none;}
.cred-label{color:var(--ink-muted);font-weight:500;display:flex;align-items:center;gap:var(--ds-space-02);white-space:nowrap;}
.cred-label svg{opacity:.7;flex-shrink:0;}
.cred-value{color:var(--ink);font-weight:600;}

/* EXTRA CERTIFICATIONS */
.cert-item{
  display:grid;grid-template-columns:7rem 1fr auto;align-items:center;gap:var(--ds-space-03);
  padding:var(--ds-space-03) 0;border-bottom:1px dashed var(--border);font-size:.8125rem;
}
.cert-item:last-child{border-bottom:none;}
.cert-icon{
  display:flex;align-items:center;gap:var(--ds-space-02);
  color:var(--ink-muted);font-weight:500;white-space:nowrap;
}
.cert-icon svg{width:13px;height:13px;opacity:.7;flex-shrink:0;}
.cert-info{min-width:0;}
.cert-name{font-size:.8125rem;font-weight:600;color:var(--ink);line-height:1.3;}
.cert-meta{font-size:.75rem;color:var(--ink-muted);font-weight:500;margin-top:var(--ds-space-01);}
.cert-badge{
  font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  padding:var(--ds-space-02) var(--ds-space-03);border-radius:100px;background:rgba(15,23,42,.1);
  color:#0f172a;white-space:nowrap;flex-shrink:0;align-self:center;
}

/* FOOTER CTA */
.profile-footer-cta{display:flex;align-items:center;border-top:1px solid var(--border);padding-top:var(--ds-space-06);margin-top:auto;}
.action-group{display:flex;gap:var(--ds-space-03);width:100%;}
.btn-icon{width:48px;height:48px;border-radius:var(--pv-radius);display:flex;justify-content:center;align-items:center;transition:all .2s;flex-shrink:0;}
.btn-whatsapp{background:#25D366;color:#fff;box-shadow:0 4px 12px rgba(37,211,102,.2);}
.btn-whatsapp:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(37,211,102,.3);}

/* WATERMARK */
.profile-watermark{
  margin-top:var(--ds-space-06);
  background:#fff;
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  padding:var(--ds-space-05) var(--ds-space-06);
  display:flex;flex-direction:column;align-items:center;gap:var(--ds-space-03);text-align:center;
  box-shadow:0 2px 12px rgba(15,23,42,.07);
  max-width:440px;width:100%;
}
.pv-id{color:var(--ink);font-size:.9rem;font-weight:600;display:flex;align-items:center;gap:var(--ds-space-03);}
.pv-id strong{font-family:monospace;font-size:1rem;color:var(--accent);letter-spacing:.03em;}
.pv-validate{
  display:inline-flex;align-items:center;gap:var(--ds-space-02);
  color:#fff;font-size:.8125rem;font-weight:600;
  background:var(--accent);border-radius:100px;
  padding:var(--ds-space-03) var(--ds-space-05);transition:background .2s;
}
.pv-validate:hover{background:var(--accent-hov);}
.pv-validate svg{width:13px;height:13px;}

/* VERIFIED BANNER */
.verified-banner{display:flex;align-items:center;gap:var(--ds-space-03);background:rgba(15,23,42,.06);border:1px solid rgba(15,23,42,.15);border-radius:var(--r-sm);padding:var(--ds-space-03) var(--ds-space-04);margin-bottom:var(--ds-space-06);font-size:.75rem;font-weight:600;color:var(--accent);}
.verified-banner svg{width:14px;height:14px;flex-shrink:0;}

/* SHARE */
.share-bar{margin-top:var(--ds-space-06);max-width:440px;width:100%;text-align:center;}
.share-btn{display:inline-flex;align-items:center;gap:var(--ds-space-03);font-family:inherit;font-size:.8125rem;font-weight:600;color:var(--ink-muted);background:#fff;border:1px solid var(--border);border-radius:var(--pv-radius);padding:var(--ds-space-03) var(--ds-space-06);cursor:pointer;transition:all .2s;}
.share-btn:hover{border-color:var(--ink-muted);color:var(--ink);}
.share-btn.copied{border-color:var(--success);color:var(--success);}

/* TOAST */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(16px);background:#0f172a;color:#fff;font-size:.875rem;font-weight:600;padding:var(--ds-space-04) var(--ds-space-06);border-radius:100px;box-shadow:0 8px 24px rgba(0,0,0,.2);opacity:0;transition:all .3s cubic-bezier(.4,0,.2,1);pointer-events:none;white-space:nowrap;z-index:var(--ds-layer-toast);display:flex;align-items:center;gap:var(--ds-space-03);}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}


/* RESPONSIVE */
@media(max-width:480px){
  .profile-page{padding:0;justify-content:flex-start;background:#fff;}
  .profile-card{max-width:100%;border-radius:0;box-shadow:none;padding:var(--ds-space-06) var(--ds-space-06);}
  .profile-watermark{max-width:100%;border-radius:var(--r-md);}
  .profile-avatar{width:88px;height:88px;}
  .profile-name{font-size:1.375rem;}
  .profile-metrics{padding:var(--ds-space-04) var(--ds-space-04);gap:0;}
  .metric strong{font-size:1.1rem;}
  .metric span{font-size:.75rem;}
  .credential-item,.cert-item{grid-template-columns:7rem 1fr auto;}
}

/* iOS zoom prevention */
input,select,textarea{font-size:16px;}

@media(prefers-reduced-motion:reduce){*{animation:none !important;transition:none !important;}}

/* ── V7 PROFILE (proposal, 16 Oct 2026) ───────────────────────────────────
   Design system v7 look for the L3 profile: index card with a subject tab
   (same as the homepage teacher cards), hairlines, 600 weights, highlighter
   on the seal, navy "how we verify" with big yellow numbers. Overrides the
   rules above; kept identical in templates/perfil-pendiente.template. */
body{background:#f8fafc;}
.profile-page{padding:var(--ds-space-08,48px) var(--ds-space-05,16px);}
.profile-card{position:relative;max-width:480px;margin-top:32px;border:1px solid #e2e8f0;border-radius:0 10px 10px 10px;box-shadow:none;padding:24px;}
.card-tab{position:absolute;left:-1px;bottom:100%;max-width:92%;margin:0;padding:4px 12px;background:#ffe14d;color:#0f172a;border-radius:6px 6px 0 0;font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.status-dot,.avatar-wrapper{display:none;}
.profile-top-bar{margin-bottom:16px;color:#475569;font-weight:500;}
.location-badge{margin-left:0;background:none;padding:0;font-size:.8125rem;color:#475569;}
.verified-banner{background:none;border:0;border-bottom:1px solid #e2e8f0;border-radius:0;padding:0 0 12px;margin-bottom:24px;font-size:.8125rem;color:#0f172a;}
.verified-banner svg{width:16px;height:16px;}
.profile-header{align-items:flex-start;text-align:left;margin-bottom:16px;}
.name-wrapper{justify-content:flex-start;align-items:center;}
.profile-name{font-size:1.875rem;line-height:1.1;letter-spacing:-.03em;text-align:left;}
.verified-badge-icon{color:#0f172a;margin-bottom:0;}
.profile-title{font-size:1rem;color:#475569;margin-top:4px;}
.profile-metrics{justify-content:flex-start;background:none;border:0;border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;border-radius:0;padding:12px 0;margin-bottom:24px;}
.metric{align-items:flex-start;}
.metric strong{font-size:.9375rem;}
.sec-title{font-size:.75rem;color:#64748b;letter-spacing:.12em;}
.spec-block{background:none;border:0;border-radius:0;padding:0;margin-bottom:16px;}
.spec-sublabel{font-size:.6875rem;color:#64748b;}
.tag{border-radius:6px;font-size:.8125rem;font-weight:500;padding:8px 12px;}
.tag-subject{background:#0f172a;color:#ffffff;border:1px solid #0f172a;}
.tag-level{background:#ffffff;color:#0f172a;border:1px solid #cbd5e1;}
.credential-item,.cert-item{border-bottom:1px solid #e2e8f0;}
.cert-badge{background:#ffe14d;color:#0f172a;border-radius:4px;letter-spacing:.04em;}
.profile-bio{background:none;border:0;border-top:1px solid #e2e8f0;border-radius:0;padding:16px 0 0;}
.bio-quote{font-size:1.0625rem;font-weight:500;line-height:1.45;letter-spacing:-.01em;}
.bio-body{font-size:.9375rem;color:#334155;}
.profile-footer-cta{border-top:1px solid #e2e8f0;}
/* The contact buttons stay in view: sticky at the bottom of the screen from the first
   screen until the card ends, where they rest in place (UX audit 19 Oct 2026; no
   duplicate buttons, so audit-l3-action-group still reads one action-group). */
.profile-footer-cta{position:sticky;bottom:0;z-index:var(--ds-layer-nav);background:#fff;padding-bottom:var(--ds-space-05);}
.btn-icon{border-radius:6px;}
.btn-whatsapp{box-shadow:none;}
.btn-whatsapp:hover{transform:none;box-shadow:none;}
.profile-watermark,.share-bar{max-width:480px;}
.profile-watermark{border-radius:10px;box-shadow:none;}
.pv-id strong{font-family:inherit;font-variant-numeric:tabular-nums;color:#0f172a;}
.pv-validate{border-radius:6px;min-height:44px;padding:0 16px;text-decoration:none;}
.share-btn{border-radius:6px;min-height:44px;color:#0f172a;}
@media(max-width:480px){
  .profile-page{padding:32px 0 0;background:#f8fafc;}
  .profile-card{border-left:0;border-right:0;border-radius:0;padding:24px 16px;}
  /* The tab lines up with the text column (card padding 16px): full-bleed card on phones, no border to hang from (option B, Vicente 19 Oct 2026). */
  .card-tab{left:16px;border-radius:6px 6px 0 0;max-width:calc(100% - 32px);}
  .profile-watermark,.share-bar{border-radius:0;}
  .profile-name{font-size:1.625rem;}
}

/* SOCIALS-CSS:START — auto-managed by tools/build-l3-socials.js */
/* SOCIALS-CSS:END */


/* ── Reviews tab on profiles (tools/build-l3-reviews.js + components/reviews.js, 19 Oct 2026). Mobile first. ── */
.rv-tabs{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin:0 0 20px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;}
.rv-tab{position:relative;z-index:1;appearance:none;border:0;background:transparent;font:inherit;font-size:.9375rem;font-weight:600;color:#475569;padding:10px 12px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;transition:color .2s,background .2s,box-shadow .2s;}
.rv-tab[aria-selected="true"]{color:#0f172a;background:#fff;box-shadow:0 1px 2px rgba(15,23,42,.08),0 4px 12px -4px rgba(15,23,42,.12);}
.rv-tab[aria-selected="true"]::after{content:"";position:absolute;left:28%;right:28%;bottom:7px;height:7px;background:#ffe14d;border-radius:4px;z-index:-1;transform-origin:left;animation:rvSwipe .35s ease-out both;}
@keyframes rvSwipe{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.rv-tab:focus-visible{outline:2px solid #0f172a;outline-offset:2px;}
.rv-pill{font-size:.75rem;font-weight:700;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#0f172a;color:#fff;display:inline-flex;align-items:center;justify-content:center;}
.rv-panel.rv-off{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;pointer-events:none;}
.rv-panel{animation:rvIn .25s ease-out;}
@keyframes rvIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.rv-panel,.rv-tab[aria-selected="true"]::after{animation:none}}

.rv{display:flex;flex-direction:column;gap:18px;margin-bottom:20px;}
.rv [hidden]{display:none!important;}
.rv-summary{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;padding:18px;border:1px solid #e2e8f0;border-radius:20px;background:#fff;}
.rv-score{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:96px;}
.rv-avg{font-size:2.75rem;line-height:1;font-weight:700;letter-spacing:-.03em;color:#0f172a;}
.rv-total{font-size:.75rem;color:#64748b;text-align:center;line-height:1.3;}
.rv-stars{--v:0;position:relative;display:inline-block;line-height:0;}
.rv-s-base,.rv-s-fill{display:inline-flex;gap:2px;white-space:nowrap;}
.rv-s-fill{position:absolute;left:0;top:0;overflow:hidden;width:calc(var(--v) / 5 * 100%);}
.rv-stars svg{width:16px;height:16px;flex:none;}
.rv-stars--lg svg{width:18px;height:18px;}
.rv-s-base svg{fill:#e2e8f0;}
.rv-s-fill svg{fill:#ffe14d;stroke:#0f172a;stroke-width:1.3;}
.rv-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;}
.rv-bars li{display:grid;grid-template-columns:12px 1fr 22px;gap:8px;align-items:center;font-size:.75rem;color:#475569;}
.rv-bars i{display:block;height:8px;border-radius:99px;background:#f1f5f9;overflow:hidden;}
.rv-bars b{display:block;height:100%;background:#0f172a;border-radius:99px;transition:width .6s cubic-bezier(.2,.8,.2,1);}
.rv-bars em{font-style:normal;text-align:right;}

.rv-empty,.rv-done{text-align:center;padding:8px 8px 0;}
.rv-empty-mark{font-size:4.5rem;line-height:.6;height:36px;margin:0;color:#0f172a;font-weight:700;background:linear-gradient(transparent 55%,#ffe14d 55%,#ffe14d 85%,transparent 85%);display:inline-block;padding:0 10px;}
.rv-empty-title{font-size:1.125rem;font-weight:700;color:#0f172a;margin:10px 0 4px;}
.rv-empty-text{font-size:.9375rem;color:#475569;margin:0;}
.rv-done-check{width:56px;height:56px;margin:0 auto;border-radius:50%;background:#0f172a;color:#fff;font-size:1.6rem;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 8px #ffe14d;}

.rv-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;}
.rv-item{border:1px solid #e2e8f0;border-radius:18px;padding:16px;background:#fff;}
.rv-item-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;}
.rv-item-name{font-weight:700;color:#0f172a;font-size:.9375rem;}
.rv-item-meta{font-size:.75rem;color:#64748b;margin-top:2px;}
.rv-item p{margin:0;font-size:.9375rem;color:#334155;line-height:1.55;}
.rv-ok{display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#0f172a;background:#ffe14d;padding:3px 8px;border-radius:99px;margin-top:10px;}

.rv-cta,.rv-send{appearance:none;border:0;font:inherit;font-weight:700;font-size:1rem;color:#fff;background:#0f172a;border-radius:999px;padding:14px 20px;min-height:48px;cursor:pointer;transition:transform .15s,box-shadow .15s;}
.rv-cta:hover,.rv-send:hover{transform:translateY(-1px);box-shadow:0 8px 20px -8px rgba(15,23,42,.5);}
.rv-cta:focus-visible,.rv-send:focus-visible,.rv-ghost:focus-visible{outline:2px solid #0f172a;outline-offset:3px;}
.rv-ghost{appearance:none;font:inherit;font-weight:600;color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:999px;padding:13px 18px;min-height:48px;cursor:pointer;}

.rv-form{display:flex;flex-direction:column;gap:16px;padding:18px;border:1px solid #e2e8f0;border-radius:20px;background:#f8fafc;animation:rvIn .25s ease-out;}
.rv-form fieldset{border:0;margin:0;padding:0;}
.rv-form legend,.rv-field>span{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#475569;margin-bottom:8px;display:block;}
.rv-rate-stars{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:6px;}
.rv-rate-stars input{position:absolute;opacity:0;width:1px;height:1px;}
.rv-rate-stars label{cursor:pointer;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:12px;transition:transform .15s;}
.rv-rate-stars svg{width:34px;height:34px;fill:#fff;stroke:#0f172a;stroke-width:1.4;transition:fill .15s;}
.rv-rate-stars label:hover svg,.rv-rate-stars label:hover~label svg,.rv-rate-stars input:checked~label svg{fill:#ffe14d;}
.rv-rate-stars input:checked+label{transform:scale(1.12);}
.rv-rate-stars input:focus-visible+label{outline:2px solid #0f172a;outline-offset:2px;}
.rv-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}
.rv-rate-word{font-size:.875rem;font-weight:600;color:#0f172a;margin:6px 0 0;min-height:1.2em;}
.rv-who{display:flex;flex-direction:column;gap:8px;}
.rv-who label{display:flex;}
.rv-who input{position:absolute;opacity:0;}
.rv-who span{flex:1;padding:12px 14px;border:1px solid #cbd5e1;border-radius:14px;background:#fff;font-size:.9375rem;color:#334155;cursor:pointer;transition:border-color .15s,box-shadow .15s;}
.rv-who input:checked+span{border-color:#0f172a;box-shadow:inset 0 0 0 1px #0f172a;color:#0f172a;font-weight:600;}
.rv-who input:focus-visible+span{outline:2px solid #0f172a;outline-offset:2px;}
.rv-row{display:grid;grid-template-columns:1fr;gap:16px;}
.rv-field{display:flex;flex-direction:column;}
.rv-field input,.rv-field select,.rv-field textarea{font:inherit;font-size:16px;color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:14px;padding:12px 14px;min-height:48px;width:100%;box-sizing:border-box;}
.rv-field textarea{resize:vertical;min-height:120px;line-height:1.5;}
.rv-field input:focus,.rv-field select:focus,.rv-field textarea:focus{outline:none;border-color:#0f172a;box-shadow:0 0 0 3px #ffe14d;}
.rv-field small,.rv-count{font-size:.75rem;color:#64748b;margin-top:6px;}
.rv-check{display:flex;gap:10px;align-items:flex-start;font-size:.875rem;color:#334155;line-height:1.45;}
.rv-check input{width:20px;height:20px;margin-top:1px;accent-color:#0f172a;flex:none;}
.rv-err{margin:0;font-size:.875rem;font-weight:600;color:#0f172a;background:#fff3a6;border:1px solid #f5cf00;border-radius:12px;padding:10px 12px;}
.rv-actions{display:grid;grid-template-columns:auto 1fr;gap:10px;}

.rv-how{border-top:1px solid #e2e8f0;padding-top:12px;font-size:.875rem;color:#475569;}
.rv-how summary{cursor:pointer;font-weight:600;color:#0f172a;list-style:none;display:flex;align-items:center;gap:8px;}
.rv-how summary::before{content:"+";width:20px;height:20px;border-radius:50%;border:1px solid #cbd5e1;display:inline-flex;align-items:center;justify-content:center;font-size:.875rem;}
.rv-how[open] summary::before{content:"–";}
.rv-how p{margin:8px 0 0;line-height:1.55;}

@media (min-width:480px){.rv-row{grid-template-columns:1fr 1fr;}.rv-who{flex-direction:row;}.rv-who label{flex:1;}}
.rv-hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden;}
.rv-privacy{margin:0;font-size:.75rem;line-height:1.5;color:#64748b;}
.rv-privacy a{color:#0f172a;}
.rv-date{white-space:nowrap;}
.rv-bad>legend,.rv-bad>span{color:#0f172a;}
.rv-bad input:not([type="radio"]):not([type="checkbox"]),.rv-bad select,.rv-bad textarea{border-color:#0f172a;box-shadow:0 0 0 2px #ffe14d;}
.rv-bad.rv-who span{border-color:#0f172a;}
.rv-msg{display:block;margin-top:6px;font-size:.8125rem;font-weight:600;color:#0f172a;}
.rv-msg::before{content:"↑ ";}
.rv-check.rv-bad{flex-wrap:wrap;}
.rv-check .rv-msg{flex-basis:100%;padding-left:30px;margin-top:2px;}
body.rv-writing .profile-footer-cta{display:none;}

/* UX audit 19 Oct 2026, mobile first.
   1. Credential rows: long degree names ("Interpretación") pushed the badge 9px off a 320px
      screen. The name column may shrink and long words break; the label column is narrower
      below 360px and back to 7rem from 360px. */
.credential-item,.cert-item{grid-template-columns:5.25rem minmax(0,1fr) auto;}
.cert-name,.cred-value{overflow-wrap:anywhere;hyphens:auto;}
@media(min-width:360px){.credential-item,.cert-item{grid-template-columns:7rem minmax(0,1fr) auto;}.cert-name,.cred-value{hyphens:manual;}}
/* 2. The check mark follows the last word of the name; it drifted to the far right when a long
      name wrapped on a small phone. */
.name-wrapper{display:block;}
.name-wrapper .profile-name{display:inline;}
.name-wrapper .verified-badge-icon{display:inline-block;vertical-align:-3px;margin:0 0 0 var(--ds-space-02);}
/* 3. The floating contact bar sits above the cookie banner while it is open (cookie.js sets
      --pv-cc-h), so the contact buttons are never hidden on the first visit. */
.profile-footer-cta{bottom:var(--pv-cc-h,0px);}

/* The ProfVerify ID never breaks across lines ("#PV-2026-" / "007" at 390px, review 19 Oct 2026). */
.answer-box .answer-id{white-space:nowrap;}

/* Floating contact bar on phones (Vicente, 20 Oct 2026): it was sticky INSIDE the profile
   card, so it scrolled away once the card ended (short profiles lost it almost at once).
   On phones it is now fixed to the bottom of the screen for the whole page, above the
   cookie banner while that is open (--pv-cc-h, cookie.js), hidden while writing a review
   (body.rv-writing, above). The page keeps room at the end so nothing hides under it.
   Desktop keeps the sticky bar inside the card. */
@media (max-width: 767px) {
  .profile-footer-cta { position: fixed; left: 0; right: 0; bottom: var(--pv-cc-h, 0px); margin: 0; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); border-top: 1px solid #e2e8f0; background: #fff; z-index: var(--ds-layer-nav); }
  .profile-page { padding-bottom: calc(88px + env(safe-area-inset-bottom)); }
}
/* Social card after the bio (tools/lib/socials.js, Vicente 21 Oct 2026): hairline card,
   the system outlined button (.btn-secondary), the network's own logo in ink. Never a "verified" look: we do not check the account. */
.profile-social-card{margin:var(--ds-space-05) 0 0;padding:var(--ds-space-04) var(--ds-space-05);border:1px solid var(--border);border-radius:10px;background:var(--surface,#fff);}
.psc-title{margin:0;font-size:.9375rem;font-weight:600;color:var(--ink,#0f172a);}
.psc-handle{margin:2px 0 0;font-size:.875rem;color:var(--ink-muted,#475569);}
.psc-links{display:flex;flex-wrap:wrap;gap:var(--ds-space-03);margin-top:var(--ds-space-04);}
.psc-links .btn-secondary{font-size:.875rem;font-weight:600;}
