/* ===== VittaBank — design system compartilhado (onboarding + internet banking) ===== */
:root{
  --navy-950:#06111E;
  --navy-900:#081626;
  --navy-800:#0D2237;
  --navy-700:#143252;
  --navy-600:#1C436C;
  --bronze:#9A6630;
  --gold:#C69A5C;
  --champagne:#E0BE8E;
  --sand:#F3D4AA;
  --ivory:#FBF9F6;
  --stone:#F2EFEA;
  --paper:#FFFFFF;
  --ink:#0C1D2E;
  --body:#5A6878;
  --muted:#8C98A6;
  --hair:rgba(12,29,46,.12);
  --hair-l:rgba(255,255,255,.14);
  --ok:#2E7D5B;
  --ok-bg:rgba(46,125,91,.1);
  --warn:#9A6630;
  --warn-bg:rgba(154,102,48,.1);
  --err:#B3452F;
  --err-bg:rgba(179,69,47,.09);
  --info-bg:rgba(20,50,82,.07);
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E");
  --ease:cubic-bezier(.22,1,.36,1);
  --r:4px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:'Poppins',system-ui,-apple-system,'Segoe UI',sans-serif;
  background:var(--ivory);color:var(--ink);font-weight:300;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
::selection{background:var(--sand);color:var(--navy-900)}
.display{font-family:'Fraunces',Georgia,serif;font-weight:400;letter-spacing:-.022em;line-height:1.1}
.grain::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background-image:var(--grain);opacity:.055;mix-blend-mode:overlay}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.logo--white{filter:brightness(0) invert(1)}

.kicker{display:inline-flex;align-items:center;gap:12px;font-size:.66rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--bronze)}
.kicker::before{content:"";width:28px;height:1px;background:linear-gradient(90deg,transparent,var(--bronze))}
.kicker.light{color:var(--champagne)}
.kicker.light::before{background:linear-gradient(90deg,transparent,var(--champagne))}

/* ---------- botões ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-size:.75rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  padding:16px 30px;border-radius:2px;border:1px solid transparent;position:relative;overflow:hidden;
  transition:color .4s var(--ease),border-color .4s var(--ease),transform .4s var(--ease),opacity .3s;
}
.btn span{position:relative;z-index:2;display:inline-flex;align-items:center;gap:10px}
.btn::before{content:"";position:absolute;inset:0;z-index:1;transform:translateY(101%);transition:transform .45s var(--ease)}
.btn:hover:not(:disabled)::before{transform:translateY(0)}
.btn:hover:not(:disabled){transform:translateY(-2px)}
.btn:disabled{opacity:.42;cursor:not-allowed}
.btn-gold{background:linear-gradient(110deg,var(--champagne),var(--sand));color:#3A2710}
.btn-gold::before{background:var(--navy-900)}
.btn-gold:hover:not(:disabled){color:var(--sand)}
.btn-navy{background:var(--navy-800);color:#fff}
.btn-navy::before{background:linear-gradient(110deg,var(--champagne),var(--sand))}
.btn-navy:hover:not(:disabled){color:#3A2710}
.btn-line{background:transparent;color:var(--navy-800);border-color:var(--hair)}
.btn-line::before{background:var(--navy-800)}
.btn-line:hover:not(:disabled){color:#fff;border-color:var(--navy-800)}
.btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.3)}
.btn-ghost::before{background:linear-gradient(110deg,var(--champagne),var(--sand))}
.btn-ghost:hover:not(:disabled){color:#3A2710;border-color:transparent}
.btn-sm{padding:11px 20px;font-size:.68rem}
.btn-block{width:100%}

/* ---------- campos ---------- */
.field{position:relative;margin-bottom:20px}
.field label{display:block;font-size:.66rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--body);margin-bottom:9px}
.field .inp,.field select,.field textarea{
  width:100%;background:var(--paper);border:1px solid var(--hair);border-radius:var(--r);
  padding:15px 16px;font-size:.95rem;font-weight:300;transition:border-color .3s,box-shadow .3s;outline:none;
}
.field .inp:focus,.field select:focus,.field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(198,154,92,.15)}
.field .inp::placeholder{color:#B4BDC7}
.field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235A6878' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:16px;padding-right:42px}
.field .hint{font-size:.74rem;color:var(--muted);margin-top:7px;line-height:1.5}
.field.err .inp,.field.err select{border-color:var(--err);box-shadow:0 0 0 3px rgba(179,69,47,.12)}
.field.err .hint{color:var(--err)}
.field.ok .inp{border-color:rgba(46,125,91,.5)}
.row{display:grid;gap:0 18px}
.row-2{grid-template-columns:1fr 1fr}
.row-3{grid-template-columns:1fr 1fr 1fr}
.row-21{grid-template-columns:2fr 1fr}
.check-line{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px;font-size:.84rem;line-height:1.65;color:var(--body)}
.check-line input{margin-top:4px;accent-color:var(--bronze);width:16px;height:16px;flex-shrink:0}
.check-line a{color:var(--bronze);border-bottom:1px solid rgba(154,102,48,.35)}

/* ---------- avisos ---------- */
.note{display:flex;gap:13px;align-items:flex-start;padding:15px 17px;border-radius:var(--r);font-size:.83rem;line-height:1.65;margin-bottom:20px}
.note svg{width:17px;height:17px;flex-shrink:0;margin-top:2px}
.note-info{background:var(--info-bg);color:var(--navy-700)}
.note-ok{background:var(--ok-bg);color:var(--ok)}
.note-warn{background:var(--warn-bg);color:var(--warn)}
.note-err{background:var(--err-bg);color:var(--err)}

.badge{display:inline-flex;align-items:center;gap:7px;font-size:.63rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;padding:6px 11px;border-radius:2px}
.badge-ok{background:var(--ok-bg);color:var(--ok)}
.badge-warn{background:var(--warn-bg);color:var(--warn)}
.badge-err{background:var(--err-bg);color:var(--err)}
.badge-info{background:var(--info-bg);color:var(--navy-700)}

/* ---------- spinner ---------- */
.spin{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .7s linear infinite;display:inline-block}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------- câmera ---------- */
.cam-stage{position:relative;background:var(--navy-950);border-radius:var(--r);overflow:hidden;aspect-ratio:4/3;display:grid;place-items:center}
.cam-stage video,.cam-stage canvas.shot-c{width:100%;height:100%;object-fit:cover;display:block}
.cam-stage video{transform:scaleX(-1)}
.cam-stage.env video{transform:none}
.cam-off{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:30px;color:rgba(255,255,255,.55);font-size:.84rem;line-height:1.7;z-index:3}
.cam-guide{position:absolute;inset:0;z-index:2;pointer-events:none}
.guide-doc{position:absolute;inset:14% 9%;border:2px dashed rgba(224,190,142,.75);border-radius:10px}
.guide-face{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:54%;aspect-ratio:3/4;border:2px dashed rgba(224,190,142,.8);border-radius:50%}
.guide-face.live{border-color:var(--ok);border-style:solid;box-shadow:0 0 0 9999px rgba(6,17,30,.35)}
.cam-hud{position:absolute;left:0;right:0;bottom:0;z-index:4;padding:14px 16px;background:linear-gradient(transparent,rgba(6,17,30,.85));color:#fff;font-size:.8rem;text-align:center;line-height:1.5}
.cam-actions{display:flex;gap:11px;flex-wrap:wrap;margin-top:16px}
.scanline{position:absolute;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--champagne),transparent);z-index:3;animation:scan 2.4s ease-in-out infinite}
@keyframes scan{0%,100%{top:12%}50%{top:86%}}

/* ---------- força da senha ---------- */
.pw-bar{display:flex;gap:5px;margin-top:11px}
.pw-bar i{flex:1;height:3px;background:var(--hair);border-radius:2px;transition:background .35s}
.pw-bar i.on-1{background:var(--err)}
.pw-bar i.on-2{background:var(--warn)}
.pw-bar i.on-3{background:var(--gold)}
.pw-bar i.on-4{background:var(--ok)}
.pw-rules{display:grid;gap:6px;margin-top:13px}
.pw-rules li{list-style:none;display:flex;gap:9px;align-items:center;font-size:.76rem;color:var(--muted)}
.pw-rules li::before{content:"";width:13px;height:13px;border-radius:50%;border:1px solid var(--hair);flex-shrink:0;transition:.3s}
.pw-rules li.ok{color:var(--ok)}
.pw-rules li.ok::before{background:var(--ok);border-color:var(--ok);box-shadow:inset 0 0 0 2px #fff}

/* ---------- teclado numérico ---------- */
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:280px;margin:22px auto 0}
.keypad button{
  aspect-ratio:1.5/1;border:1px solid var(--hair);background:var(--paper);border-radius:var(--r);
  font-family:'Fraunces',serif;font-size:1.3rem;font-weight:300;color:var(--navy-800);transition:.25s var(--ease);
}
.keypad button:hover{background:var(--navy-800);color:#fff;border-color:var(--navy-800)}
.keypad button.wide{grid-column:span 1}
.pin-dots{display:flex;gap:14px;justify-content:center;margin:4px 0 0}
.pin-dots i{width:13px;height:13px;border-radius:50%;border:1px solid var(--hair);transition:.25s}
.pin-dots i.on{background:var(--navy-800);border-color:var(--navy-800)}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;z-index:300;display:none;place-items:center;padding:22px;background:rgba(6,17,30,.62);backdrop-filter:blur(7px)}
.modal.open{display:grid}
.modal-box{
  background:var(--paper);border-radius:var(--r);max-width:470px;width:100%;max-height:92vh;overflow-y:auto;
  padding:34px 32px;box-shadow:0 50px 100px -40px rgba(6,17,30,.7);animation:pop .4s var(--ease);
}
.modal-box.lg{max-width:620px}
@keyframes pop{from{opacity:0;transform:translateY(22px) scale(.98)}}
.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px}
.modal-head h3{font-family:'Fraunces',serif;font-weight:400;font-size:1.3rem;letter-spacing:-.02em}
.modal-head p{font-size:.82rem;color:var(--muted);margin-top:5px;line-height:1.6}
.x{background:none;border:0;color:var(--muted);padding:4px;line-height:0;transition:.25s}
.x:hover{color:var(--ink);transform:rotate(90deg)}
.x svg{width:19px;height:19px}

/* ---------- toast ---------- */
#toasts{position:fixed;right:20px;bottom:20px;z-index:400;display:flex;flex-direction:column;gap:10px;max-width:340px}
.toast{
  background:var(--navy-900);color:#fff;border-radius:var(--r);padding:15px 18px;font-size:.84rem;line-height:1.55;
  box-shadow:0 26px 54px -26px rgba(6,17,30,.8);border-left:2px solid var(--gold);animation:tin .4s var(--ease);
}
.toast.ok{border-left-color:#4CAF84}
.toast.err{border-left-color:#E07A62}
@keyframes tin{from{opacity:0;transform:translateX(26px)}}
.toast b{display:block;font-weight:500;margin-bottom:3px}

@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
