/*
 * WIDGET Currículo — construtor profissional (.cvb-*) + folha (.cv--*).
 * Regra de ouro: nenhum hex em regra de componente; tudo deriva da paleta
 * via tokens --cvb-* (override --wc-widget-*, fallback DashLite/Bootstrap).
 * A folha (.cvb-sheet) é a exceção CONTROLADA: currículo impresso precisa de
 * fundo branco e tinta escura fixos para sair legível em papel/PDF.
 */
.cvb {
    --cvb-accent-raw: var(--wc-widget-accent, var(--bs-primary, #6576ff));
    --cvb-accent:     color-mix(in srgb, var(--cvb-accent-raw) 76%, #14152a);
    --cvb-accent-rgb: var(--wc-widget-accent-rgb, var(--bs-primary-rgb, 101, 118, 255));
    --cvb-accent-2:   color-mix(in srgb, var(--bs-secondary, #ff3d71) 76%, #14152a);
    --cvb-grad:       linear-gradient(135deg, var(--cvb-accent), var(--cvb-accent-2));
    --cvb-surface:    var(--wc-widget-surface, var(--bs-card-bg, #ffffff));
    --cvb-border:     var(--wc-widget-border, var(--bs-border-color, #e5e9f2));
    --cvb-text:       var(--bs-body-color, #526484);
    --cvb-heading:    var(--bs-heading-color, #364a63);
    --cvb-muted:      var(--wc-muted, var(--bs-secondary-color, #8094ae));
    --cvb-bg-alt:     var(--wc-bg-alt, var(--bs-secondary-bg, #f5f6fa));
    --cvb-danger:     #e85347;
    /* tinta fixa da folha impressa */
    --cvb-paper: #ffffff;
    --cvb-ink: #1d2333;
    --cvb-ink-soft: #4d5468;
    color: var(--cvb-text);
}

/* ================= TOOLBAR ================= */
.cvb-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 10px; }
.cvb-toolbar__group { display: flex; flex-wrap: wrap; gap: 8px; }
.cvb-btn { display: inline-flex; align-items: center; gap: 7px; border: 1.5px solid var(--cvb-border); background: var(--cvb-surface); color: var(--cvb-text); border-radius: 999px; padding: 9px 16px; font-weight: 600; font-size: 13.5px; font-family: inherit; cursor: pointer; transition: border-color .18s, color .18s, filter .18s, transform .18s, background .18s; }
.cvb-btn:hover { border-color: var(--cvb-accent); color: var(--cvb-accent); }
.cvb-btn .icon { font-size: 15px; }
.cvb-btn--primary { background: var(--cvb-grad); border-color: transparent; color: #fff; }
.cvb-btn--primary:hover { color: #fff; filter: brightness(1.08); transform: translateY(-1px); }
.cvb-btn--danger { border-color: color-mix(in srgb, var(--cvb-danger) 45%, transparent); color: var(--cvb-danger); }
.cvb-btn--danger:hover { background: var(--cvb-danger); border-color: var(--cvb-danger); color: #fff; }

/* ================= STATUS BAR ================= */
.cvb-statusbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin: 0 2px 18px; font-size: 12.5px; }
.cvb-status { display: inline-flex; align-items: center; gap: 6px; color: var(--cvb-muted); }
.cvb-status .icon { color: #22b07d; }
.cvb-status.is-cloud .icon { color: var(--cvb-accent); }
.cvb-account { color: var(--cvb-muted); }
.cvb-account a { color: var(--cvb-accent); font-weight: 600; text-decoration: none; display: inline-flex; align-items: center; gap: 5px; }
.cvb-account a:hover { text-decoration: underline; }
/* Carteira de créditos: badge na statusbar + hero/nota na modal */
.cvb-wallet { display: inline-flex; align-items: center; gap: 5px; color: var(--cvb-accent); font-weight: 600; background: rgba(var(--cvb-accent-rgb), .1); border-radius: 999px; padding: 3px 10px; }
.cvb-wallet[hidden] { display: none; }
.cvb-wallet .icon { font-size: 14px; }
.cvb-wallet-hero { text-align: center; padding: 8px 0 14px; }
.cvb-wallet-hero__n { display: block; font-size: 40px; font-weight: 800; line-height: 1; color: var(--cvb-accent); }
.cvb-wallet-hero__l { display: block; margin-top: 4px; font-size: 13px; color: var(--cvb-muted); }
.cvb-wallet-note { display: flex; align-items: flex-start; gap: 7px; margin: 14px 0 0; padding: 10px 12px; border-radius: 10px; background: var(--cvb-bg-alt); font-size: 12px; color: var(--cvb-muted); }
.cvb-wallet-note .icon { color: var(--cvb-accent); margin-top: 1px; }

/* ================= TOOLBAR NA HERO (fundo escuro) ================= */
/* A toolbar é movida para [data-cvb-toolbar-target] na hero; fora de .cvb os tokens
   --cvb-* não resolvem, então aqui as cores são concretas (vidro sobre fundo escuro). */
.cvb-herobar { margin-top: 24px; }
.cvb-herobar:empty { display: none; }
/* Na hero: grupos alinhados à esquerda (acompanha o texto lead), com respiro maior
   ENTRE grupos (16px) do que dentro deles (8px) — dá estrutura sem separá-los às bordas. */
.cvb-toolbar--hero { margin: 0; justify-content: flex-start; gap: 10px 16px; }
.cvb-toolbar--hero .cvb-btn { background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .3); color: #fff; -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); }
.cvb-toolbar--hero .cvb-btn:hover { background: rgba(255, 255, 255, .22); border-color: #fff; color: #fff; transform: translateY(-1px); }
.cvb-toolbar--hero .cvb-btn--primary { background: #fff; border-color: #fff; color: #14152a; }
.cvb-toolbar--hero .cvb-btn--primary:hover { background: #fff; color: #14152a; filter: none; box-shadow: 0 12px 28px rgba(0, 0, 0, .35); }

/* ================= EDITOR ================= */
.cvb-editor { width: 100%; }
.cvb-section { background: var(--cvb-surface); border: 1px solid var(--cvb-border); border-radius: 14px; margin-bottom: 12px; overflow: hidden; transition: box-shadow .2s, border-color .2s; }
.cvb-section.is-dragging { opacity: .55; box-shadow: 0 0 0 2px var(--cvb-accent); }
.cvb-section.is-off .cvb-sec-body { display: none; }
.cvb-section.is-off { opacity: .6; }
.cvb-sec-head { display: flex; align-items: center; gap: 9px; padding: 12px 14px; border-bottom: 1px solid var(--cvb-border); color: var(--cvb-heading); font-size: 14px; }
.cvb-section.is-off .cvb-sec-head { border-bottom: 0; }
.cvb-sec-head > strong { font-size: 14px; }
.cvb-sec-ic { color: var(--cvb-accent); font-size: 16px; }
.cvb-grip { cursor: grab; color: var(--cvb-muted); padding: 2px 4px; margin-left: -4px; border-radius: 6px; }
.cvb-grip:hover { color: var(--cvb-accent); background: var(--cvb-bg-alt); }
.cvb-grip:active { cursor: grabbing; }
.cvb-switch { margin-left: auto; display: inline-flex; cursor: pointer; }
.cvb-switch input { display: none; }
.cvb-switch i { width: 34px; height: 19px; border-radius: 999px; background: var(--cvb-border); position: relative; transition: background .18s; }
.cvb-switch i::after { content: ""; position: absolute; top: 2.5px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: #fff; transition: left .18s; box-shadow: 0 1px 3px rgba(0, 0, 0, .25); }
.cvb-switch input:checked + i { background: var(--cvb-accent); }
.cvb-switch input:checked + i::after { left: 17px; }
.cvb-sec-body { padding: 14px; }
.cvb-sec-title { flex: 1; min-width: 0; font-weight: 700; padding: 6px 10px; }
.cvb-sec-del { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border: 0; border-radius: 8px; background: transparent; color: var(--cvb-muted); cursor: pointer; transition: background .15s, color .15s; }
.cvb-sec-del:hover { background: color-mix(in srgb, var(--cvb-danger) 14%, transparent); color: var(--cvb-danger); }

/* Botões de IA no cabeçalho / item */
.cvb-ai { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; border: 1.5px solid color-mix(in srgb, var(--cvb-accent) 40%, transparent); background: rgba(var(--cvb-accent-rgb), .07); color: var(--cvb-accent); border-radius: 999px; padding: 6px 12px; font-weight: 600; font-size: 12px; font-family: inherit; cursor: pointer; transition: background .15s, box-shadow .15s; }
.cvb-ai + .cvb-switch { margin-left: 10px; }
.cvb-ai:hover { background: rgba(var(--cvb-accent-rgb), .16); box-shadow: 0 2px 8px rgba(var(--cvb-accent-rgb), .18); }
.cvb--noai .cvb-ai, .cvb--noai .cvb-ai-item, .cvb--noai [data-needai] { display: none !important; }

/* Perfil + Foto */
.cvb-profile { display: flex; gap: 16px; align-items: flex-start; }
.cvb-profile__fields { flex: 1; min-width: 0; }
.cvb-photo { position: relative; flex: 0 0 auto; }
.cvb-photo__drop { width: 104px; height: 104px; border-radius: 16px; border: 2px dashed var(--cvb-border); background: var(--cvb-bg-alt); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: var(--cvb-muted); cursor: pointer; text-align: center; overflow: hidden; transition: border-color .15s, color .15s; outline: none; }
.cvb-photo__drop:hover, .cvb-photo__drop:focus-visible, .cvb-photo__drop.is-dragover { border-color: var(--cvb-accent); color: var(--cvb-accent); }
.cvb-photo__drop .icon { font-size: 22px; }
.cvb-photo__hint { font-size: 10.5px; font-weight: 600; line-height: 1.2; }
.cvb-photo__drop.has-photo { border-style: solid; }
.cvb-photo__drop.has-photo .icon, .cvb-photo__drop.has-photo .cvb-photo__hint { display: none; }
.cvb-photo__img { width: 100%; height: 100%; object-fit: cover; }
.cvb-photo__del { position: absolute; top: -8px; right: -8px; width: 24px; height: 24px; border-radius: 50%; border: 0; background: var(--cvb-danger); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; cursor: pointer; box-shadow: 0 2px 6px rgba(0, 0, 0, .2); }

.cvb-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 12px; }
.cvb-field { display: flex; flex-direction: column; gap: 4px; margin: 0 0 10px; }
.cvb-grid2 .cvb-field { margin: 0; }
.cvb-field span { font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--cvb-muted); }
.cvb-input { border: 1.5px solid var(--cvb-border); border-radius: 9px; background: var(--cvb-bg-alt); color: var(--cvb-heading); padding: 9px 12px; font-size: 14px; font-family: inherit; outline: none; transition: border-color .15s, background .15s, box-shadow .15s; width: 100%; }
.cvb-input:focus { border-color: var(--cvb-accent); background: var(--cvb-surface); box-shadow: 0 0 0 3px rgba(var(--cvb-accent-rgb), .12); }
textarea.cvb-input { resize: vertical; }

/* Itens repetíveis */
.cvb-item { position: relative; border: 1px dashed var(--cvb-border); border-radius: 11px; padding: 12px 12px 4px 30px; margin-bottom: 10px; }
.cvb-item .cvb-field { margin-top: 10px; }
.cvb-item .cvb-grid2 .cvb-field { margin-top: 0; }
.cvb-item-grip { position: absolute; top: 8px; left: 6px; cursor: grab; color: var(--cvb-muted); padding: 2px 4px; border-radius: 6px; }
.cvb-item-grip:hover { color: var(--cvb-accent); background: var(--cvb-bg-alt); }
.cvb-item-grip:active { cursor: grabbing; }
.cvb-item.is-dragging { opacity: .55; box-shadow: 0 0 0 2px var(--cvb-accent); }
.cvb-item-actions { position: absolute; top: -8px; right: -8px; display: flex; align-items: center; gap: 6px; }
.cvb-ai-item { width: 24px; height: 24px; border-radius: 50%; border: 0; background: var(--cvb-accent); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; cursor: pointer; box-shadow: 0 2px 6px rgba(0, 0, 0, .2); }
.cvb-ai-item:hover { filter: brightness(1.1); }
.cvb-del { width: 22px; height: 22px; border-radius: 50%; background: var(--cvb-accent-2); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; cursor: pointer; box-shadow: 0 2px 6px rgba(0, 0, 0, .2); }
.cvb-add { display: inline-flex; align-items: center; gap: 6px; border: 1.5px dashed var(--cvb-border); background: transparent; color: var(--cvb-muted); border-radius: 999px; padding: 7px 16px; font-weight: 600; font-size: 12.5px; font-family: inherit; cursor: pointer; transition: border-color .18s, color .18s; }
.cvb-add:hover { border-color: var(--cvb-accent); color: var(--cvb-accent); }
.cvb-addsection { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; border: 1.5px dashed var(--cvb-border); background: transparent; color: var(--cvb-muted); border-radius: 14px; padding: 14px; font-weight: 600; font-size: 13.5px; font-family: inherit; cursor: pointer; transition: border-color .18s, color .18s, background .18s; }
.cvb-addsection:hover { border-color: var(--cvb-accent); color: var(--cvb-accent); background: rgba(var(--cvb-accent-rgb), .05); }
.cvb-addsection .icon { font-size: 17px; }

/* ================= FOLHA (A4-ish) ================= */
.cvb-sheetholder { position: absolute; left: -99999px; top: 0; width: 820px; }
.cvb-sheet {
    --cv-pad-x: 40px; --cv-pad-y: 34px;
    width: 100%; max-width: 820px; margin: 0 auto;
    background: var(--cvb-paper); color: var(--cvb-ink); border-radius: 6px;
    box-shadow: 0 2px 8px rgba(20, 21, 42, .08), 0 18px 48px rgba(20, 21, 42, .14);
    min-height: 640px; padding: var(--cv-pad-y) var(--cv-pad-x);
    font-size: 13px; line-height: 1.55; overflow-wrap: break-word;
}
.cv-margin-compact { --cv-pad-x: 26px; --cv-pad-y: 22px; }
.cv-margin-normal { --cv-pad-x: 40px; --cv-pad-y: 34px; }
.cv-margin-spacious { --cv-pad-x: 58px; --cv-pad-y: 48px; }

.cvb-sheet .cv-head__main { flex: 1; min-width: 0; }
.cvb-sheet .cv-head.has-photo { display: flex; gap: 20px; align-items: center; }
.cvb-sheet .cv-photo img { display: block; width: 92px; height: 92px; border-radius: 50%; object-fit: cover; }
.cvb-sheet .cv-name { font-size: 26px; font-weight: 800; letter-spacing: -.02em; margin: 0; color: var(--cvb-ink); }
.cvb-sheet .cv-role { font-size: 14px; font-weight: 600; margin: 2px 0 0; }
.cvb-sheet .cv-contacts { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 10px; font-size: 11.5px; color: var(--cvb-ink-soft); }
.cvb-sheet .cv-contacts span { display: inline-flex; align-items: center; gap: 5px; }
.cvb-sheet .cv-sec { margin-top: 20px; }
.cvb-sheet .cv-sec h3 { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .1em; margin: 0 0 9px; }
.cvb-sheet .cv-entry { margin-bottom: 11px; }
.cvb-sheet .cv-entry:last-child { margin-bottom: 0; }
.cvb-sheet .cv-entry__top { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.cvb-sheet .cv-entry__title { font-weight: 700; color: var(--cvb-ink); }
.cvb-sheet .cv-entry__org { color: var(--cvb-ink-soft); }
.cvb-sheet .cv-entry__period { color: var(--cvb-ink-soft); font-size: 11.5px; white-space: nowrap; }
.cvb-sheet .cv-entry__desc { margin: 3px 0 0; color: var(--cvb-ink-soft); }
.cvb-sheet .cv-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.cvb-sheet .cv-chips span { border: 1px solid; border-radius: 999px; padding: 3px 11px; font-size: 11.5px; font-weight: 600; }
.cvb-sheet .cv-empty { color: #9aa0b5; text-align: center; padding: 120px 30px; font-size: 14px; line-height: 1.7; }
.cvb-sheet .cv-empty .icon { display: block; font-size: 40px; margin-bottom: 10px; }
.cvb-sheet .cv-empty strong { color: #6b7186; }

/* Tema Clean */
.cv--clean .cv-role { color: var(--cvb-accent); }
.cv--clean .cv-sec h3 { color: var(--cvb-accent); border-bottom: 2px solid rgba(var(--cvb-accent-rgb), .25); padding-bottom: 5px; }
.cv--clean .cv-chips span { border-color: rgba(var(--cvb-accent-rgb), .4); color: var(--cvb-accent); }
.cv--clean .cv-contacts .icon { color: var(--cvb-accent); }

/* Tema Executivo — banda escura no topo */
.cv--executivo.cvb-sheet { padding: 0 0 var(--cv-pad-y); }
.cv--executivo .cv-head { background: #22263a; color: #fff; padding: calc(var(--cv-pad-y) - 4px) var(--cv-pad-x) var(--cv-pad-y); border-radius: 6px 6px 0 0; }
.cv--executivo .cv-name { color: #fff; }
.cv--executivo .cv-role { color: rgba(255, 255, 255, .85); }
.cv--executivo .cv-contacts { color: rgba(255, 255, 255, .75); }
.cv--executivo .cv-contacts .icon { color: rgba(255, 255, 255, .6); }
.cv--executivo .cv-photo img { border: 3px solid rgba(255, 255, 255, .35); }
.cv--executivo .cv-body { padding: 6px var(--cv-pad-x) 0; }
.cv--executivo .cv-sec h3 { color: var(--cvb-ink); border-left: 4px solid var(--cvb-accent); padding-left: 9px; }
.cv--executivo .cv-chips span { border-color: #d5d8e4; color: var(--cvb-ink-soft); background: #f4f5f9; }

/* Tema Moderno — barra de acento no topo + títulos com bullet */
.cv--moderno.cvb-sheet { border-top: 6px solid var(--cvb-accent); }
.cv--moderno .cv-name { color: var(--cvb-accent); }
.cv--moderno .cv-role { color: var(--cvb-ink-soft); }
.cv--moderno .cv-contacts .icon { color: var(--cvb-accent); }
.cv--moderno .cv-sec h3 { color: var(--cvb-ink); display: flex; align-items: center; gap: 8px; }
.cv--moderno .cv-sec h3::before { content: ""; width: 12px; height: 12px; border-radius: 3px; background: var(--cvb-grad); }
.cv--moderno .cv-photo img { border: 3px solid rgba(var(--cvb-accent-rgb), .3); }
.cv--moderno .cv-chips span { border-color: rgba(var(--cvb-accent-rgb), .4); color: var(--cvb-accent); background: rgba(var(--cvb-accent-rgb), .06); }

/* Tema Prestige (premium) — elegante, centralizado, serifado */
.cv--prestige .cv-head { text-align: center; border-bottom: 1px solid #dcdfe8; padding-bottom: 16px; }
.cv--prestige .cv-head.has-photo { flex-direction: column; text-align: center; gap: 12px; }
.cv--prestige .cv-name { font-family: Georgia, "Times New Roman", serif; font-weight: 700; letter-spacing: .02em; font-size: 28px; }
.cv--prestige .cv-role { color: var(--cvb-accent); text-transform: uppercase; letter-spacing: .18em; font-size: 12px; }
.cv--prestige .cv-contacts { justify-content: center; }
.cv--prestige .cv-photo img { width: 96px; height: 96px; }
.cv--prestige .cv-sec h3 { font-family: Georgia, "Times New Roman", serif; text-align: center; letter-spacing: .18em; color: var(--cvb-ink); position: relative; }
.cv--prestige .cv-sec h3::after { content: ""; display: block; width: 34px; height: 2px; background: var(--cvb-accent); margin: 6px auto 0; }
.cv--prestige .cv-entry__top { justify-content: center; text-align: center; }
.cv--prestige .cv-entry__desc { text-align: center; }
.cv--prestige .cv-chips { justify-content: center; }
.cv--prestige .cv-chips span { border-color: #d5d8e4; color: var(--cvb-ink-soft); }

/* Tema Minimal (premium) — monocromático, muito respiro */
.cv--minimal .cv-name { font-weight: 700; letter-spacing: -.01em; }
.cv--minimal .cv-role { color: var(--cvb-ink-soft); }
.cv--minimal .cv-contacts .icon { color: #9aa0b5; }
.cv--minimal .cv-sec { margin-top: 26px; }
.cv--minimal .cv-sec h3 { color: #9aa0b5; font-size: 11px; letter-spacing: .22em; border-bottom: 1px solid #e7e9f0; padding-bottom: 6px; }
.cv--minimal .cv-photo img { filter: grayscale(1); }
.cv--minimal .cv-chips span { border-color: #e0e2ea; color: var(--cvb-ink-soft); }

/* ================= MODAIS ================= */
body.cvb-modal-open { overflow: hidden; }
.cvb-modal { position: fixed; inset: 0; z-index: 1500; display: flex; align-items: center; justify-content: center; padding: 20px; }
.cvb-modal[hidden] { display: none; }
.cvb-modal__overlay { position: absolute; inset: 0; background: rgba(16, 18, 34, .55); backdrop-filter: blur(2px); }
.cvb-modal__box { position: relative; z-index: 1; width: 100%; max-width: 640px; max-height: 90vh; display: flex; flex-direction: column; background: var(--cvb-surface); border-radius: 18px; box-shadow: 0 30px 80px rgba(0, 0, 0, .38); overflow: hidden; animation: cvb-pop .18s ease; }
@keyframes cvb-pop { from { transform: translateY(12px) scale(.98); opacity: 0; } to { transform: none; opacity: 1; } }
.cvb-modal__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--cvb-border); }
.cvb-modal__head h4 { margin: 0; font-size: 16px; color: var(--cvb-heading); display: inline-flex; align-items: center; gap: 9px; }
.cvb-modal__head h4 .icon { color: var(--cvb-accent); }
.cvb-modal__headactions { display: flex; align-items: center; gap: 10px; }
.cvb-modal__x { width: 34px; height: 34px; border-radius: 10px; border: 0; background: var(--cvb-bg-alt); color: var(--cvb-muted); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-size: 14px; transition: background .15s, color .15s; }
.cvb-modal__x:hover { background: color-mix(in srgb, var(--cvb-danger) 14%, transparent); color: var(--cvb-danger); }
.cvb-modal__body { padding: 20px; overflow: auto; }
.cvb-modal__lead { color: var(--cvb-muted); font-size: 13.5px; line-height: 1.55; margin: 0 0 16px; }
.cvb-modal__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 8px; }
.cvb-ai-note { color: var(--cvb-muted); font-size: 12px; display: inline-flex; align-items: center; gap: 6px; max-width: 60%; }
.cvb-ai-note .icon { color: #22b07d; }

/* Preview: modal-folha elegante — cabeçalho fixo + folha ocupando o corpo sem padding interno */
.cvb-modal--preview { align-items: center; padding: 24px 16px; }
.cvb-modal__paper { position: relative; z-index: 1; width: 100%; max-width: 820px; max-height: 92vh; display: flex; flex-direction: column; background: var(--cvb-paper); border-radius: 16px; overflow: hidden; box-shadow: 0 30px 80px rgba(0, 0, 0, .45); animation: cvb-pop .18s ease; }
.cvb-modal__phead { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px 12px 20px; background: var(--cvb-surface); border-bottom: 1px solid var(--cvb-border); }
.cvb-modal__phead h4 { margin: 0; font-size: 15px; color: var(--cvb-heading); display: inline-flex; align-items: center; gap: 8px; }
.cvb-modal__phead h4 .icon { color: var(--cvb-accent); }
.cvb-modal__pactions { display: flex; align-items: center; gap: 10px; }
.cvb-modal__pbody { flex: 1 1 auto; overflow: auto; -webkit-overflow-scrolling: touch; background: var(--cvb-paper); }
.cvb-modal__pbody .cvb-sheet { box-shadow: none !important; border-radius: 0; max-width: none; width: 100%; margin: 0; min-height: auto; }

/* Grade de modelos por área */
.cvb-tplgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.cvb-tplcard { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; text-align: left; border: 1.5px solid var(--cvb-border); background: var(--cvb-surface); border-radius: 14px; padding: 14px; cursor: pointer; font-family: inherit; transition: border-color .15s, transform .15s, box-shadow .15s; }
.cvb-tplcard:hover { border-color: var(--cvb-accent); transform: translateY(-2px); box-shadow: 0 8px 22px rgba(var(--cvb-accent-rgb), .18); }
.cvb-tplcard__ic { width: 40px; height: 40px; border-radius: 11px; background: rgba(var(--cvb-accent-rgb), .1); color: var(--cvb-accent); display: inline-flex; align-items: center; justify-content: center; font-size: 19px; margin-bottom: 4px; }
.cvb-tplcard__label { font-weight: 700; font-size: 13.5px; color: var(--cvb-heading); }
.cvb-tplcard__role { font-size: 11.5px; color: var(--cvb-muted); line-height: 1.35; }

/* Ajustes: temas + segmentado */
.cvb-set { padding: 14px 0; border-bottom: 1px solid var(--cvb-border); }
.cvb-set:last-child { border-bottom: 0; padding-bottom: 0; }
.cvb-set__label { display: block; font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--cvb-muted); margin-bottom: 10px; }
.cvb-set__hint { font-size: 12.5px; color: var(--cvb-muted); margin: 10px 0 0; line-height: 1.5; }
.cvb-set__hint .icon { color: var(--cvb-accent); }
.cvb-set__hint a { color: var(--cvb-accent); font-weight: 600; }
.cvb-tpls { display: flex; flex-wrap: wrap; gap: 8px; }
.cvb-tpl { display: inline-flex; align-items: center; gap: 7px; border: 1.5px solid var(--cvb-border); background: var(--cvb-surface); color: var(--cvb-text); border-radius: 999px; padding: 8px 14px; font-weight: 600; font-size: 12.5px; font-family: inherit; cursor: pointer; transition: border-color .18s, background .18s, color .18s; }
.cvb-tpl:hover { border-color: var(--cvb-accent); color: var(--cvb-accent); }
.cvb-tpl.is-active { background: var(--cvb-accent); border-color: var(--cvb-accent); color: #fff; }
.cvb-tpl__lock { display: inline-flex; align-items: center; background: rgba(var(--cvb-accent-rgb), .12); color: var(--cvb-accent); border-radius: 999px; padding: 2px 6px; font-size: 10px; }
.cvb-tpl.is-active .cvb-tpl__lock { background: rgba(255, 255, 255, .25); color: #fff; }
.cvb--logged .cvb-tpl__lock { display: none; }
/* Modo carteira: o cadeado reflete o DESBLOQUEIO por crédito (não o login). */
.cvb--wallet .cvb-tpl.is-premium .cvb-tpl__lock { display: inline-flex; }
.cvb--wallet .cvb-tpl.is-premium.is-unlocked .cvb-tpl__lock { display: none; }
/* Premium liberado direto (CV_PREMIUM_FREE): sem cadeado, tudo é grátis. */
.cvb--premfree .cvb-tpl__lock { display: none; }
.cvb-seg { display: inline-flex; border: 1.5px solid var(--cvb-border); border-radius: 10px; overflow: hidden; }
.cvb-seg__btn { border: 0; background: var(--cvb-surface); color: var(--cvb-text); padding: 9px 16px; font-weight: 600; font-size: 13px; font-family: inherit; cursor: pointer; transition: background .15s, color .15s; }
.cvb-seg__btn + .cvb-seg__btn { border-left: 1.5px solid var(--cvb-border); }
.cvb-seg__btn.is-active { background: var(--cvb-accent); color: #fff; }

/* Nuvem */
.cvb-cloud-guest { text-align: center; padding: 20px 10px; }
.cvb-cloud-guest > .icon { font-size: 40px; color: var(--cvb-muted); }
.cvb-cloud-guest h5 { margin: 12px 0 6px; font-size: 16px; color: var(--cvb-heading); }
.cvb-cloud-guest p { color: var(--cvb-muted); font-size: 13.5px; line-height: 1.55; margin: 0 auto 16px; max-width: 380px; }
.cvb-cloud-save { display: flex; gap: 10px; align-items: flex-end; margin-bottom: 16px; }
.cvb-cloud-save .cvb-field { flex: 1; margin: 0; }
.cvb-cloud-save .cvb-btn { white-space: nowrap; }
.cvb-cloud-head { font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--cvb-muted); margin-bottom: 8px; }
.cvb-cloud-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 12px; border: 1px solid var(--cvb-border); border-radius: 11px; margin-bottom: 8px; }
.cvb-cloud-row.is-current { border-color: var(--cvb-accent); background: rgba(var(--cvb-accent-rgb), .05); }
.cvb-cloud-row__info { min-width: 0; }
.cvb-cloud-row__title { display: block; font-weight: 600; color: var(--cvb-heading); font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cvb-cloud-row__date { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; color: var(--cvb-muted); margin-top: 2px; }
.cvb-cloud-row__actions { display: flex; gap: 6px; flex: 0 0 auto; }
.cvb-mini { display: inline-flex; align-items: center; gap: 5px; border: 1.5px solid var(--cvb-border); background: var(--cvb-surface); color: var(--cvb-text); border-radius: 8px; padding: 7px 11px; font-weight: 600; font-size: 12px; font-family: inherit; cursor: pointer; transition: border-color .15s, color .15s, background .15s; }
.cvb-mini:hover { border-color: var(--cvb-accent); color: var(--cvb-accent); }
.cvb-mini--danger:hover { border-color: var(--cvb-danger); color: var(--cvb-danger); }
.cvb-cloud-loading, .cvb-cloud-empty { color: var(--cvb-muted); font-size: 13px; text-align: center; padding: 18px; }
.cvb-cloud-loading .icon { animation: cvb-spin 1s linear infinite; display: inline-block; }
@keyframes cvb-spin { to { transform: rotate(360deg); } }

/* ================= SweetAlert (tema do widget) ================= */
/* O container padrão do swal2 tem z-index 1060 — ficava ATRÁS das modais do widget (1500)
   e da cobertura de captura (3000). Sobe acima de tudo (este CSS só carrega no /curriculo). */
.swal2-container { z-index: 4000 !important; }
.cvb-swal.swal2-popup { border-radius: 16px; font-family: inherit; }
.cvb-swal .swal2-title { color: #364a63; font-size: 19px; }
.cvb-swal .swal2-html-container { color: #526484; }
.cvb-swal .swal2-styled.swal2-confirm { background: var(--bs-primary, #6576ff) !important; border-radius: 999px; font-weight: 600; }
.cvb-swal .swal2-styled.swal2-confirm:focus { box-shadow: 0 0 0 3px rgba(var(--bs-primary-rgb, 101, 118, 255), .4) !important; }
.cvb-swal .swal2-styled.swal2-cancel { background: #eef0f5 !important; color: #526484 !important; border-radius: 999px; font-weight: 600; }
.cvb-swal--toast.swal2-popup { padding: 10px 14px; }

/* ================= RESPONSIVO ================= */
@media (max-width: 720px) {
    .cvb-toolbar__group { width: 100%; }
    .cvb-toolbar__group--right { justify-content: flex-end; }
    /* Hero no mobile: cada grupo em linha cheia e botões preenchendo em grade
       (2 por linha, conteúdo centralizado) — some a assimetria "desorganizada". */
    .cvb-toolbar--hero { gap: 8px; }
    .cvb-toolbar--hero .cvb-toolbar__group { width: 100%; gap: 8px; }
    .cvb-toolbar--hero .cvb-toolbar__group--right { justify-content: stretch; }
    .cvb-toolbar--hero .cvb-btn { flex: 1 1 42%; justify-content: center; }
    .cvb-btn span { display: inline; }
    .cvb-profile { flex-direction: column; align-items: center; }
    .cvb-profile__fields { width: 100%; }
    .cvb-grid2 { grid-template-columns: 1fr; }
    .cvb-ai { font-size: 0; padding: 6px 9px; }
    .cvb-ai .icon { font-size: 14px; }
    .cvb-ai-note { max-width: 100%; }
    .cvb-cloud-save { flex-direction: column; align-items: stretch; }
    .cvb-modal { padding: 0; align-items: flex-end; }
    .cvb-modal__box { max-width: 100%; max-height: 94vh; border-radius: 18px 18px 0 0; }
    .cvb-modal--preview { padding: 0; align-items: flex-end; }
    .cvb-modal--preview .cvb-modal__paper { max-width: 100%; max-height: 94vh; border-radius: 18px 18px 0 0; }
}

/* ================= IMPRESSÃO: só a folha sai no PDF ================= */
@media print {
    /* Sobe a árvore a partir de #cvbSheet escondendo TODOS os irmãos em cada nível e
       neutralizando os ancestrais (via classes aplicadas por JS no beforeprint). Assim só a
       folha é impressa, com paginação natural — sem páginas em branco extras. */
    @page { size: A4 portrait; margin: 12mm 0; } /* margem vertical em TODA página evita corte no topo/base em CVs de +1 página */
    .cvb-print-hide { display: none !important; }
    /* mantém itens/inteiros e o título junto do conteúdo ao quebrar página */
    #cvbSheet .cv-entry { break-inside: avoid; page-break-inside: avoid; }
    #cvbSheet .cv-sec h3 { break-after: avoid; page-break-after: avoid; }
    .cvb-print-chain { display: block !important; position: static !important; margin: 0 !important; padding: 0 !important; border: 0 !important;
        width: auto !important; min-width: 0 !important; max-width: none !important; height: auto !important; min-height: 0 !important; max-height: none !important;
        background: #fff !important; box-shadow: none !important; overflow: visible !important; float: none !important; transform: none !important; }
    #cvbSheet { width: 100% !important; max-width: 100% !important; min-height: 0 !important; margin: 0 !important; box-shadow: none !important; border-radius: 0 !important;
        -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
}

/* ================= OVERLAY DE CAPTURA (geração de PDF) ================= */
/* Palco da captura: ABSOLUTE (nunca fixed) — o html2canvas 1.4.1 corta folhas altas sob ancestral
   fixed. Fica atrás da cobertura opaca. */
.cvb-capture-host { position: absolute; top: 0; left: 0; width: 794px; background: #fff; z-index: 1; }
/* Cobertura OPACA (irmão fixed por cima) — esconde a folha em tamanho real durante a captura. */
.cvb-capture { position: fixed; inset: 0; z-index: 3000; background: #0d1321; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; color: #fff; text-align: center; padding: 24px; }
.cvb-capture__spin { width: 46px; height: 46px; border-radius: 50%; border: 4px solid rgba(255, 255, 255, .18); border-top-color: #fff; animation: cvb-spin .8s linear infinite; }
.cvb-capture__msg { font-size: 15px; font-weight: 600; margin: 0; }
.cvb-capture__sub { font-size: 12.5px; color: rgba(255, 255, 255, .6); margin: 0; }

/* Intersticial AdSense do download (fora de .cvb → cores concretas).
   Abaixo da cobertura de captura (3000) e do swal (4000); acima das modais (1500). */
.cvb-adgate { position: fixed; inset: 0; z-index: 2900; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(13, 19, 33, .72); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.cvb-adgate__card { position: relative; width: min(620px, 100%); background: #fff; border-radius: 18px; padding: 20px 22px 18px; text-align: center; box-shadow: 0 30px 80px rgba(0, 0, 0, .45); animation: cvb-pop .18s ease; }
.cvb-adgate__x { position: absolute; top: 10px; right: 12px; width: 30px; height: 30px; border: 0; border-radius: 8px; background: transparent; color: #9aa2b1; font-size: 20px; line-height: 1; cursor: pointer; }
.cvb-adgate__x:hover { background: #f2f3f7; color: #e85347; }
.cvb-adgate__label { display: block; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: #b6c0cc; margin-bottom: 6px; user-select: none; }
.cvb-adgate__slot { min-height: 120px; border-radius: 10px; overflow: hidden; }
.cvb-adgate__slot .adsbygoogle { display: block; width: 100%; } /* <ins> vazio não tem largura intrínseca */
.cvb-adgate__msg { margin: 12px 0 0; font-size: 14.5px; font-weight: 600; color: #1d2333; }
.cvb-adgate__count { margin: 3px 0 0; font-size: 12.5px; color: #6b7186; }
