body{font-family:Inter,sans-serif}.Logoimg{height:45px}.shadow-bottom{box-shadow:0 2px 4px rgba(0,0,0,.1)}.textsmall{font-size:10px}.header-nav li:hover a{color:#673695!important}.login-box button a{color:#fff}.btnVerify{width:90px}.newIndex .input-group-text{font-size:14px;border:1px solid #ccc!important;border-top-right-radius:4px;background:#fff;border-bottom-right-radius:4px}.newIndex .input-group-text:focus{box-shadow:none;border-color:#0d6efd!important}.toggle-two-switch .switches-container{display:flex;padding:0;position:relative;background:#fff;line-height:30px!important;border-radius:.625rem;border:1px solid #dbdbdb}.toggle-two-switch .switches-container input{visibility:hidden;position:absolute;top:0}.toggle-two-switch .switches-container label{width:50%;padding:0;margin:0;text-align:center;cursor:pointer;line-height:30px;font-size:13px;color:rgba(33,37,41,.75)}.toggle-two-switch .switch-wrapper{position:absolute;top:0;bottom:0;width:50%;padding:.2rem;z-index:3;transition:transform .5s cubic-bezier(.77, 0, .175, 1)}.toggle-two-switch .toggle-switch-wrapper{border-radius:.5rem;background:#ff8a4c;height:100%}.toggle-two-switch .toggle-switch-wrapper div{font-size:13px;width:100%;text-align:center;opacity:0;display:block;color:#fff;transition:opacity .2s cubic-bezier(.77, 0, .175, 1) 125ms;will-change:opacity;position:absolute;top:0;left:0}.toggle-two-switch .switches-container input:first-of-type:checked~.switch-wrapper{transform:translateX(0)}.toggle-two-switch .switches-container input:nth-of-type(2):checked~.switch-wrapper{transform:translateX(100%)}.toggle-two-switch .switches-container input:nth-of-type(3):checked~.switch-wrapper{transform:translateX(200%)}.toggle-two-switch .switches-container input:first-of-type:checked~.switch-wrapper .toggle-switch-wrapper div:nth-of-type(1){opacity:1}.toggle-two-switch .switches-container input:nth-of-type(2):checked~.switch-wrapper .toggle-switch-wrapper div:nth-of-type(2){opacity:1}.toggle-two-switch .switches-container input:nth-of-type(3):checked~.switch-wrapper .toggle-switch-wrapper div:nth-of-type(3){opacity:1}.toggle-three-switch .switches-container{display:flex;padding:0;position:relative;background:#fff;line-height:30px!important;border-radius:.625rem;border:1px solid #dbdbdb}.toggle-three-switch .switches-container input{visibility:hidden;position:absolute;top:0}.toggle-three-switch .switches-container label{width:33.33%;padding:0;margin:0;text-align:center;cursor:pointer;line-height:30px;font-size:13px;color:rgba(33,37,41,.75)}.toggle-three-switch .switch-wrapper{position:absolute;top:0;bottom:0;width:33.33%;padding:.2rem;z-index:3;transition:transform .5s cubic-bezier(.77, 0, .175, 1)}.toggle-three-switch .toggle-switch-wrapper{border-radius:.5rem;background:#ff8a4c;height:100%}.toggle-three-switch .toggle-switch-wrapper div{font-size:13px;width:100%;text-align:center;opacity:0;display:block;color:#fff;transition:opacity .2s cubic-bezier(.77, 0, .175, 1) 125ms;will-change:opacity;position:absolute;top:0;left:0}.toggle-three-switch .switches-container input:first-of-type:checked~.switch-wrapper{transform:translateX(0)}.toggle-three-switch .switches-container input:nth-of-type(2):checked~.switch-wrapper{transform:translateX(100%)}.toggle-three-switch .switches-container input:nth-of-type(3):checked~.switch-wrapper{transform:translateX(200%)}.toggle-three-switch .switches-container input:first-of-type:checked~.switch-wrapper .toggle-switch-wrapper div:nth-of-type(1){opacity:1}.toggle-three-switch .switches-container input:nth-of-type(2):checked~.switch-wrapper .toggle-switch-wrapper div:nth-of-type(2){opacity:1}.toggle-three-switch .switches-container input:nth-of-type(3):checked~.switch-wrapper .toggle-switch-wrapper div:nth-of-type(3){opacity:1}.toggle-three-switch.dgft-mode .switches-container{display:flex}.toggle-three-switch.dgft-mode .switch-wrapper,.toggle-three-switch.dgft-mode .switches-container label{width:50%!important}.toggle-three-switch.dgft-mode .switches-container input:nth-of-type(2):checked~.switch-wrapper{transform:translateX(100%)}.toggle-three-switch.dgft-mode .toggle-switch-wrapper div:nth-of-type(3){display:none!important}.mt-5rem{margin-top:5rem}.z-999{z-index:999}.priceBox h5{font-size:16px;font-weight:600;margin-bottom:2px}.container h1{font-size:34px}.text-orange{color:#ff8a4c}.tokenList ul li{font-size:14px}.tokenList ul{padding-left:10px}.tokenList h5{font-size:18px}.bg-primary-light{background:#ebf5ff}.bg-orange-light{color:#ff8a4c;font-weight:700;font-size:18px}.border-orange{border-color:#feecdc!important}.activeCertificate:hover{border-color:#feecdc!important;box-shadow:0 4px 30px 0 #fe9D661F;background-color:#fff}.btn-primary,.btn-primary:active,.btn-primary:focus,.btn-primary:hover{background:#0d6efd;color:#fff!important}.border-medium-orange{border-color:#fcd9bd!important}.bg-light-orange{background:#feecdc}.text-purple{color:#6875f5}.bg-purple-light{background:#f6f5ff}.bg-purple{background:#edebfe}.bg-footer{background:linear-gradient(180deg,rgba(225,239,254,0) 0,#e1effe 100%)}.rounded-15-percent{border-radius:15%}.smaller{font-size:.75rem}.mt-swiper-btncontainer{display:flex;gap:15px;width:auto!important;height:100%;gap:30px}.swiper-button-next.swiper-button-disabled,.swiper-button-nexts.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled,.swiper-button-prevs.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.toggle-three-switch.dgft-mode .switch-wrapper.dgft-enabled{width:100%!important}.dgft-enabled-wrap{width:30%}.toggle-three-switch.dgft-mode .switches-container input:first-of-type:checked~.switch-wrapper{transform:translateX(0)}.mt-body{margin-top:75px}.mt-12px{margin-top:.75rem}.my-12px{margin-block:0.75rem}.mx-12px{margin-inline:0.75rem}.p-12px{padding:.75rem}.p-3rem{padding:3rem}.dsc-heading{font-size:1.25rem}.bg-orange{background:linear-gradient(180deg,#fff8f1 0,#fff 100%)}.ems-custom-btn{position:relative!important;height:40px!important;width:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;border:1px solid #9ca3af;border-radius:50%;background:#fff}.ems-arrowicon{height:14px!important;width:14px!important}.ems-custom-btn--next{transform:rotate(180deg);right:0}.swiper-button-next:after,.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{display:none}.greyscale{filter:grayscale(100%)}.ems-sliderfluid-wrapper{margin-right:-20px}.ems-sliderfluid-swiper{position:relative}.ems-recbox{border:1px solid #cddbfe;background:#fff;border-radius:20px;padding:1rem;display:grid;gap:15px;color:#111928;min-height:345px}.ems-recbox--purple{background:#edebfe;min-height:350px}.ems-recbox--purple .bg-white{min-height:175px}.drop-shadow{box-shadow:0 4px 30px 0 #fe9D661F}.small,small{font-size:.875rem!important}.login-box label{cursor:default}.login-box .form-control:focus{box-shadow:none;border-color:#0b5ed7}.d-flex-item{display:flex}.error-msg{color:#e02424}.form-error-control{border-color:#e02424;color:#e02424}.text-red{color:#d03801}.text-blue{color:#1c64f2}.border-grey{border:1px solid #d0d5dd}.login-box .iti--allow-dropdown{width:100%}.cursor-pointer{cursor:pointer}.extra-small{font-size:9px}.min-height-dsc{min-height:175px}.step1-step2-arrow{position:absolute;left:-6%;top:45%;transform:translateY(-50%)}.step2-step3-arrow{position:absolute;right:-6%;top:45%;transform:translateY(-50%)}.step1-step2-arrow img,.step2-step3-arrow img{width:1rem}.form-control::placeholder{color:#9ca3af;font-size:14px}#indian-user-login-box .fl-label{display:none}.mobileBox .otp-input{width:10%!important}.emailOtpBox{width:10%}.imgSec img{height:68px}ul.list-unstyled li img{height:22px}.amezonSec{padding:40px 50px;margin-top:14%;font-size:20px}.line{border:1px solid #feecdc}.testimonial-img{border-radius:15px;object-fit:cover;width:100%;height:100%}.testimonial-card{background-color:#fff;border-radius:15px;padding:20px 25px;box-shadow:0 4px 12px rgba(0,0,0,.06)}.ms-n2{margin-left:-23px}.box-shadow{--bs-box-shadow-sm:0 0.125rem 0.25rem #CDDBFE}.digitalSignatureContent{padding-bottom:180px}.mainsection{padding:50px 0 0}.trustedContent{padding:0;position:relative;top:-115px}.steps.bg-orange{padding-top:320px}.trustedContent .innerSec{position:absolute}.subFooter{font-size:12px}.hyundaiImg{height:26px}.airtelImg{height:24px}.trustBox{border:1px solid #cddbfe;background:#fff;border-radius:20px;padding:1.8rem}.paraTxt{min-height:135px}.px-3rem{padding:40px 130px}.certificateBox p{font-size:14px}.px-7{padding:0 100px}.timeline{position:relative;margin:4rem 0;padding:2rem 0}.timeline p{font-weight:bolder;font-size:14px}.timeline::before{content:"";position:absolute;top:0;bottom:0;left:50%;transform:translateX(-50%);width:4px;background:#f58220}.timeline-step{position:relative;margin-bottom:4rem}.timeline-content{position:relative;width:41%;background:#fff;border-radius:10px;display:flex;gap:1rem}.timeline-step.left .timeline-content{margin-right:auto}.timeline-step.right .timeline-content{margin-left:auto}.timeline-img{position:absolute;top:60px;left:50%;transform:translate(-50%,-50%);background:#fffaf5;color:#6236ff;font-weight:700;padding:.25rem .75rem;border-radius:20px;z-index:1}.timeline-year{position:absolute;top:52px;left:58%;transform:translate(-50%,-50%);color:#6236ff;font-weight:700;font-size:1.1rem}.timeline-icon{width:40px;height:40px}.yearLeft{position:absolute;top:60px;right:7%;transform:translate(-57%,-50%);color:#6236ff;font-weight:700;font-size:1.1rem}@media (min-width:768px){.ems-recbox{gap:25px;padding:1.8rem}}@media (max-width:1200px){.step1-step2-arrow,.step2-step3-arrow{display:none}.fs-7{font-size:.875rem}.fs-8{font-size:.75rem}.disabled-label{pointer-events:none;background:#f3f2f2;border-radius:17px;border-radius:.5rem}}@media (max-width:767px){.mt-body{margin-top:40px}.trustedContent .innerSec{position:initial}.steps.bg-orange{padding-top:20px}.trustedContent{top:0}.digitalSignatureContent{padding-bottom:0}.p-3rem{padding:16px}.timeline{position:relative;margin:40px 0 0;padding:0}.px-7{padding:0}.body p{font-size:14px}.container h1{font-size:26px}.mainsection{padding:35px 0 0}h2{font-size:28px}.paraTxt{font-size:14px}.px-3rem{padding:10px}.timeline::before{left:1%;top:-10px}.timeline-content{width:90%!important;margin:0 30px!important;display:block}.timeline-img{top:-9px;left:1%}.timeline-year,.yearLeft{left:23%;top:-10px;right:auto}.timeline p{font-weight:600;font-size:13px}.mt-5rem{margin-top:0rem}.amezonSec{padding:10px 10px 10px 30px;margin-top:10%;font-size:10px}.mobileBox .form-control{padding:2px 4px}main h2{font-size:20px}.navbar-brand img{height:36px}.bg-primary-light .d-flex-item{display:block}.dgft-enabled-wrap{width:100%}.ems-recbox{min-height:320px}.ems-sliderfluid-wrapper{margin-right:0}}@media (max-width:400px){.bg-white .small{font-size:.625rem!important}h2{font-size:20px}.searchImg{font-size:12px!important}.searchImg img{height:16px}.amezonSec{padding:10px 10px 10px 30px;margin-top:10%;font-size:6px}}
/* ==========================================================================
   PaperlessForeignIndividual.jsp -- PR-B unified-wizard reskin
   -----------------------------------------------------------------------
   Ported from the eMudhra design-system mockup (Foreign KYC Enrolment.html).
   Reskins the EXISTING bootstrap/eSctr-box markup in place (same ids/names,
   same JS hooks) rather than renaming classes. Every rule touching a shared
   class (.form-control, .fl-label, .eSctr-box, .dropzone-wrapper, .btn-orange)
   is scoped under #enrolDSC on purpose -- that id is reused by
   PaperlessIndividual.jsp, PaperlessOrganization.jsp, PaperlessForeignOrgKYC.jsp
   and the legacy PaperlessForeignIndividualKYC.jsp too. This file is also
   linked from Login.jsp/index.jsp/etc (pre-existing, unrelated rules above) --
   do NOT drop the #enrolDSC scoping below, that's what keeps this block from
   leaking onto those other KYC pages.
   ========================================================================== */
/* NOTE: custom properties on :root are inert until referenced by var() -- no other page's
   CSS references --wz-*, so defining them globally here is safe. They're on :root (not
   #enrolDSC) specifically because the step-indicator markup below (.wz-steps) sits OUTSIDE
   #enrolDSC in the JSP (a preceding sibling, not a descendant) and still needs to read them. */
:root {
    --wz-primary: #ff8b00;
    --wz-primary-deep: #d9551a;
    --wz-blue: #1c64f2;
    --wz-blue-50: #ebf5ff;
    --wz-blue-800: #1e429f;
    --wz-ink: #111928;
    --wz-body: #374151;
    --wz-muted: #6b7280;
    --wz-subtle: #9ca3af;
    --wz-line: #e5e7eb;
    --wz-card-bg: #ffffff;
    --wz-section-bg: #f9fafb;
    --wz-ok: #03543f;
    --wz-ok-bg: #def7ec;
    --wz-ok-line: #bfe6cd;
    --wz-warn-bg: #fdf6b2;
    --wz-warn-line: #f5e08c;
    --wz-warn-text: #723b13;
    --wz-danger: #9b1c1c;
    --wz-danger-bg: #fde8e8;
    --wz-danger-line: #f8b4b4;
    --wz-radius-md: 12px;
    --wz-radius-lg: 16px;
    --wz-radius-xl: 20px;
    --wz-shadow-sm: 0 1px 3px rgba(17,25,40,.08), 0 1px 2px rgba(17,25,40,.04);
    --wz-font: 'DM Sans', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, sans-serif;
}
#enrolDSC, #enrolDSC .wz-card, #enrolDSC .enrol-step { font-family: var(--wz-font); color: var(--wz-body); }
/* Sticky right rail, matching the reference mockup's ".kyc-rail{position:sticky;top:78px}"
   (no fixed/sticky header on this page, so a smaller top offset is enough here). #enrolDSC
   is itself the flex row (Bootstrap "row g-2") -- without align-items:flex-start, Bootstrap's
   default stretch makes both columns equal height, which defeats sticky (it needs the rail to
   be its own, usually-shorter, natural height to visibly pin while the taller left column
   scrolls past underneath it -- otherwise the left column looked "blank" once its own content
   ended while the (equal-height-stretched, non-sticky) rail kept showing more below it). */
#enrolDSC { align-items: flex-start; }
#enrolDSC > .col-md-3 { position: sticky; top: 16px; align-self: flex-start; }
/* Sticky positioning was silently inert without this: legacy css/style.css sets
   "body{overflow:hidden;...}" sitewide. body has no explicit height (auto-sized to content),
   so this never visibly clips anything -- but it still makes body count as the "nearest
   scrolling ancestor" for sticky-positioning purposes, and body itself never actually scrolls
   (the viewport/html does), so any sticky descendant was pinned relative to a container that
   never moves, which looks identical to plain static positioning. styleNew.css loads AFTER
   style.css on this page, so this same-specificity override wins. NOTE: styleNew.css is also
   loaded by Login.jsp/index.jsp/etc (see file header) -- this override applies there too, but
   since it only restores default (non-clipping) behavior on an unconstrained-height body, it
   cannot introduce a new visual clip anywhere, only fix sticky wherever it's used. */
body { overflow: visible; }
/* .wz-steps sits BEFORE #enrolDSC in the JSP (sibling, not descendant) -- these rules are
   deliberately unscoped. Safe: .wz-steps/.wz-step-* are unique classnames used nowhere else
   in the codebase (verified), so there's no cross-page collision risk without the prefix. */
.wz-steps { display: flex; gap: 10px; margin: 20px 0 18px; padding: 0; list-style: none; flex-wrap: wrap; justify-content: center; }
.wz-steps li {
    flex: 1 1 200px; display: flex; align-items: center; gap: 11px;
    padding: 13px 15px; border-radius: var(--wz-radius-md);
    background: var(--wz-card-bg); border: 1.5px solid var(--wz-line);
}
.wz-steps li .wz-step-no {
    flex: 0 0 auto; width: 30px; height: 30px; border-radius: 50%; display: inline-flex;
    align-items: center; justify-content: center; font-weight: 700; font-size: 14px;
    background: var(--wz-section-bg); color: var(--wz-muted);
}
.wz-step-lb { display: flex; flex-direction: column; min-width: 0; }
.wz-step-k { font-size: 11px; letter-spacing: .04em; text-transform: uppercase; color: var(--wz-subtle); font-weight: 600; }
.wz-step-v { font-size: 14px; font-weight: 500; color: var(--wz-body); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wz-steps li.wz-active { border-color: var(--wz-blue); background: var(--wz-blue-50); box-shadow: 0 1px 2px rgba(17,25,40,.05); }
.wz-steps li.wz-active .wz-step-no { background: var(--wz-blue); color: #fff; }
.wz-steps li.wz-active .wz-step-v { color: var(--wz-blue-800); }
/* Completed-step tickmark (GoToStep() in PaperlessForeignIndividual.js swaps the number for a
   check icon on every step index below the current one). Not part of the reference mockup
   (which only defines an active state) -- added per explicit feedback as a completion cue. */
.wz-steps li.wz-completed { border-color: var(--wz-ok-line); background: var(--wz-ok-bg); }
.wz-steps li.wz-completed .wz-step-no { background: var(--wz-ok); color: #fff; font-size: 13px; }
.wz-steps li.wz-completed .wz-step-v { color: var(--wz-ok); }
/* Document-discrepancy full-block state (resumeStep=="1D") -- same treatment as .wz-completed
   above, red-themed to match SQLTrackOrderStatus.java's "Discrepant" (bg-danger) status on Track
   Status. Declared after .wz-active/.wz-completed so it wins on the shared "wz-active wz-danger"
   combination (Step 1 stays the active step while also being flagged discrepant). */
.wz-steps li.wz-danger { border-color: var(--wz-danger-line); background: var(--wz-danger-bg); }
.wz-steps li.wz-danger .wz-step-no { background: var(--wz-danger); color: #fff; }
.wz-steps li.wz-danger .wz-step-v { color: var(--wz-danger); }
/* Payment-success summary banner -- layered on the existing .wz-ok-banner component (see that
   rule above) so it matches the wizard's other compact banners instead of introducing its own
   bulkier padding/font sizing. Sits BEFORE .wz-steps in the JSP (sibling, not descendant of
   #enrolDSC), same reasoning as .wz-steps itself above, so deliberately unscoped here too. */
.wz-payment-card { margin-bottom: 4px; background-color:var(--wz-ok-bg); }
/* No border/background here on purpose -- only the success message + its tick icon are green,
   matching PaperlessForeignIndividualKYC.jsp's reference (font-weight:bold; color:green on the
   message text only; its "Order No:"/"Purchase Reference No:"/"Product Details:" labels are
   plain bold text via .payment-head, not green). #enrolDSC .wz-otp-sent-ok's own color rule
   doesn't reach this banner (scoped, and this sits outside #enrolDSC), so it needs its own
   unscoped copy. The icon has no color of its own (Font Awesome icons default to currentColor),
   so it turns green too. */
.wz-payment-card .wz-otp-sent-ok { color: var(--wz-ok); font-weight: 700; font-size: 12px; }
.wz-payment-card__grid {
    display: flex; flex-wrap: wrap; column-gap: 24px;
}
.wz-payment-card__lbl { font-weight: 600; color: var(--wz-ink); font-size: 11px; }
.wz-payment-card__val { font-weight: 500; font-size: 12px; }
.wz-payment-card__val label { margin: 0 4px 0 0; font-weight: 500;}
#enrolDSC .wz-card {
    background: var(--wz-card-bg); border: 1px solid var(--wz-line);
    border-radius: var(--wz-radius-xl); box-shadow: var(--wz-shadow-sm);
    padding: 0; margin-bottom: 18px; overflow: hidden;
}
#enrolDSC .wz-cardhd { padding: 18px 24px; border-bottom: 1px solid var(--wz-line); display: flex; align-items: center; gap: 12px; }
#enrolDSC .wz-cardhd .wz-section-badge { width: 32px; height: 32px; font-size: 14px; border-radius: 50%; }
#enrolDSC .wz-cardhd__t { font-size: 20px; font-weight: 700; color: var(--wz-ink); margin: 0; }
#enrolDSC .wz-cardhd__s { font-size: 13px; color: var(--wz-muted); margin: 2px 0 0; }
/* Step 3 video-language selector -- sits in .wz-cardhd's own right-side space (the title/
   subtitle block next to it carries .flex-grow-1, so it always fills exactly what's left)
   instead of taking a separate full-width row above the video widget. Fixed, not shrinking --
   #wzVrLangWrap wrapping onto its own line on narrow screens (media rule further down) handles
   the case where there isn't enough width, rather than letting the select get squeezed. */
#enrolDSC .wz-vr-lang { flex: 0 0 auto; width: 190px; }
#enrolDSC .wz-vr-lang .eSctr-box { margin-bottom: 0; }
/* Narrow screens: no room next to the title text at 190px -- wrap it onto its own full-width
   line under the title instead of squeezing it. Its own dedicated block (not reusing the
   later "compact header" override section further down this file, which applies at ALL
   widths, not just mobile -- that mismatch is what caused the selector to always render
   full-width below the title regardless of screen size on the first attempt at this). */
@media (max-width: 767px) {
    #enrolDSC #wzStep3Panel .wz-cardhd { flex-wrap: wrap; }
    #enrolDSC .wz-vr-lang { width: 100%; margin-top: 6px; }
}
#enrolDSC .wz-section { padding: 22px 24px; border-top: 1px solid var(--wz-line); }
#enrolDSC .wz-section:first-child { border-top: 0; }
#enrolDSC .wz-section-hd { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 18px; }
#enrolDSC .wz-section-badge {
    flex: 0 0 auto; width: 28px; height: 28px; border-radius: 8px;
    background: var(--wz-blue-50); color: var(--wz-blue-800);
    display: inline-flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 13px; margin-top: 1px;
}
#enrolDSC .wz-section-title { font-size: 18px; font-weight: 600; color: var(--wz-ink); margin: 0; }
#enrolDSC .wz-section-sub { font-size: 13px; color: var(--wz-muted); margin: 3px 0 0; }
#enrolDSC .wz-otp-sent-ok { color: var(--wz-ok); font-weight: 500; display: inline-flex; align-items: center; gap: 4px; }
#enrolDSC .wz-ok-banner {
    display: flex; gap: 10px; align-items: flex-start;
    background: var(--wz-ok-bg); border: 1px solid var(--wz-ok-line); color: var(--wz-ok);
    border-radius: var(--wz-radius-md); padding: 13px 15px; font-size: 13px; line-height: 1.5;
}
#enrolDSC .wz-info-banner {
    background: var(--wz-blue-50); border: 1px solid #c3ddfd; color: var(--wz-blue-800);
    border-radius: var(--wz-radius-md); padding: 13px 15px; font-size: 13px; line-height: 1.5; margin-top: 16px;
}
#enrolDSC .wz-cta-bar { display: flex; justify-content: flex-end; margin-top: 4px; padding: 22px 24px; border-top: 1px solid var(--wz-line); }
/* Ghost-style "Back" button (Step 2/3 -> Track page) -- was referenced on the Step 2 "Do it
   later" button already but never actually had a rule, so it rendered unstyled. No border by
   default (unlike Bootstrap's .btn-outline-secondary), matching the reference mockup's
   ems-btn--ghost look: plain text-weight button, subtle background/border only on hover/focus. */
#enrolDSC .wz-btn-outline {
    background: transparent; border: 1.5px solid transparent; color: var(--wz-body);
    font-weight: 500; padding: 13px 15px; border-radius: var(--wz-radius-md);
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
#enrolDSC .wz-btn-outline:hover, #enrolDSC .wz-btn-outline:focus {
    background: var(--wz-section-bg); color: var(--wz-ink); border-color: var(--wz-line);
}
#enrolDSC .form-control, #enrolDSC .form-select, #enrolDSC select.form-control {
    border: 1px solid #d1d5db; border-radius: 8px;
    font-family: var(--wz-font); font-size: 12px; color: var(--wz-ink);
    transition: border-color .2s ease, box-shadow .2s ease;
    padding-top: 10px;
    height: 32px;
}
/* AB: the "height: 32px" above is sized for single-line inputs/selects, but this selector
   (.form-control) also matches the PAN Address <textarea> -- fighting its own min-height
   (125px via .eSctr-textarea textarea, 80px inline), and the same padding-top: 10px left too
   little room at the top of the multi-line box, clipping the top of typed text. Scoped to
   textarea.form-control specifically (element+class, higher specificity than the shared rule
   above) so single-line fields are untouched -- confirmed empirically that padding-top: 12px
   fixes it. */
#enrolDSC textarea.form-control {
    height: auto;
    padding-top: 12px;
}
#enrolDSC .addressLable{top:15px!important;width:auto}#enrolDSC .eSctr-box .form-control:focus~.addressLable,#enrolDSC .eSctr-box .form-control:not(:placeholder-shown)~.addressLable{top:-2px!important}
/* AB: unified bordered container for PAN's Gender (radio group) and Date of Birth (Date/Month/Year
   sub-fields), matching the single-box look Address now uses instead of a floating label. Border
   style matches #enrolDSC .form-control's own border/radius so it reads as the same design system.
   The nested-.eSctr-box rule below suppresses DOB's 3 individual sub-field borders so the group
   renders as ONE box, not 4 nested ones -- Gender has no .eSctr-box children, so it's a no-op there. */
#enrolDSC .form-control:focus, #enrolDSC .form-select:focus {
    border-color: var(--wz-blue); box-shadow: 0 0 0 3px var(--wz-blue-50); outline: none;
}
#enrolDSC .fl-label { font-family: var(--wz-font); color: var(--wz-muted); }
#enrolDSC .mandatory { color: #e02424; }
#enrolDSC .dropzone-wrapper {
    border: 1.75px dashed #d1d5db; border-radius: var(--wz-radius-md); background: var(--wz-section-bg);
    transition: border-color .2s ease, background .2s ease;
    /* ADO 41925: was 96px -- reduced ~20% for a more compact, formal footprint. Floor is set by
       the uploaded-preview row's own icon box (40px) + its padding, see .preview-zone below;
       .dropzone-desc's min-height is kept in lock-step with this one (76 - 2*4px wrapper
       padding = 68) so idle vs. uploaded stays the same total size, not just individually. */
    min-height: 76px; position: relative; padding: 4px;
}
#enrolDSC .dropzone-wrapper:hover { border-color: var(--wz-blue); background: var(--wz-blue-50); }
#enrolDSC .dropzone-wrapper.dragover { border-color: var(--wz-blue); background: var(--wz-blue-50); }
/* Blink highlight for a document-upload box the user forgot to fill in on a failed submit --
   class is added/removed by JS (highlightMissingUpload() in OrganizationKYC.js), not left on
   permanently; it's cleared the moment a file is actually chosen for that box. */
#enrolDSC .dropzone-wrapper.wz-upload-missing { border-color: #e02424; animation: wzUploadMissingBlink .45s ease-in-out 0s 3; }
@keyframes wzUploadMissingBlink {
    0%, 100% { border-color: #e02424; background: var(--wz-section-bg); box-shadow: none; }
    50% { border-color: #e02424; background: #fdecec; box-shadow: 0 0 0 3px rgba(224,36,36,.18); }
}
#enrolDSC .dropzone-wrapper input.dropzone {
    position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; margin: 0; z-index: 1;
}
/* idle "click to upload / drag & drop" state, matches the mockup's kyc-drop pattern.
   NOTE: the JS's boxZone.empty() (readFile() in *.js) targets a nested ".dropzone-wrapper"
   selector that never matches this markup (input's parent IS .dropzone-wrapper, not a
   descendant of it) -- a pre-existing no-op shared by every KYC upload page in this app, not
   something introduced here. Net effect: .dropzone-desc and .preview-zone end up coexisting
   as siblings inside .dropzone-wrapper once a file is chosen. The :has() rule below hides the
   idle state once a preview is showing, instead of leaving both visible/stacked. */
#enrolDSC .dropzone-desc {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
    text-align: center; padding: 10px 16px; color: var(--wz-muted); font-size: 13px; pointer-events: none;
    /* Matches .dropzone-wrapper's reduced min-height (76px) minus its 2*4px padding -- see the
       comment there. */
    min-height: 68px; box-sizing: border-box;
}
#enrolDSC .dropzone-desc .icon { color: var(--wz-blue); font-size: 22px; }
#enrolDSC .dropzone-desc a { color: var(--wz-blue); font-weight: 600; text-decoration: none; }
#enrolDSC .dropzone-wrapper:has(.preview-zone:not(.hidden)) .dropzone-desc { display: none; }
/* file-selected preview state, matches the mockup's kyc-file pattern */
#enrolDSC .preview-zone {
    display: flex; align-items: center; gap: 12px;
    border: 1.5px solid var(--wz-ok-line); border-radius: calc(var(--wz-radius-md) - 3px);
    background: #f3fbf6; padding: 9px 12px; position: relative; z-index: 2;
    /* ADO 41925: matches .dropzone-desc's min-height (68px, itself derived from
       .dropzone-wrapper's 76px -- see comments there) so the box's overall footprint stays
       IDENTICAL before and after upload -- align-items:center (above) then centers the
       icon/text row within that full height instead of leaving dead space below a shorter row.
       Floor here is the 40px icon box + this rule's own 9px*2 vertical padding = 58px, so 68px
       still leaves ~10px of comfortable slack, not a tight/clipped fit. */
    min-height: 68px; box-sizing: border-box;
}
#enrolDSC .preview-zone.hidden { display: none; }
#enrolDSC .preview-zone .preview-body { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; }
#enrolDSC .preview-zone .icon {
    flex: 0 0 auto; width: 40px; height: 40px; border-radius: 8px; background: var(--wz-card-bg);
    border: 1px solid var(--wz-line); display: flex; align-items: center; justify-content: center; font-size: 17px;
}
#enrolDSC .preview-zone .preview-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
#enrolDSC .preview-zone .preview-name {
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 500; color: var(--wz-ink);
}
#enrolDSC .preview-zone .preview-meta {
    font-size: 12px; color: var(--wz-ok); display: flex; align-items: center; gap: 4px;
}
#enrolDSC .preview-zone .preview-meta .fa-check-circle { color: var(--wz-ok); }
#enrolDSC .preview-zone .remove-preview {
    flex: 0 0 auto; margin-left: auto; border: 0; background: transparent; color: var(--wz-subtle);
    cursor: pointer; padding: 6px; border-radius: 8px; position: relative; z-index: 2;
}
#enrolDSC .preview-zone .remove-preview:hover { background: var(--wz-section-bg); color: #e02424; }
#enrolDSC .btn-orange { border-radius: 8px; font-family: var(--wz-font); font-weight: 600; padding: 12px 26px; }
#enrolDSC .wz-radios { display: flex; flex-wrap: nowrap; gap: 4px; margin: 0; padding: 0; }
#enrolDSC .wz-radio {
    display: inline-flex; align-items: center; gap: 3px;
    border: 1px solid #d1d5db; border-radius: 8px;
    padding: 4px 11px; cursor: pointer; font-size: 12px;
    color: var(--wz-body); background: var(--wz-card-bg);
    transition: border-color .2s ease, background .2s ease; margin: 0;
}
#enrolDSC .wz-radio:hover { border-color: var(--wz-muted); }
#enrolDSC .wz-radio input { accent-color: var(--wz-blue); width: 12px; height: 12px; margin: 0; }
#enrolDSC .wz-radio:has(input:checked) { border-color: var(--wz-blue); background: var(--wz-blue-50); color: var(--wz-blue-800); font-weight: 500; }
/* Step 2 OTP entry boxes -- exact dimensions from the reference mockup's ".kyc-otp input"
   rule (width:46px;height:54px;font-size:20px;...), just 4 boxes instead of the mockup's 6
   (matched to our backend's real 4-digit mobile OTP, per the JSP comment at #wzOtpBoxes). */
#enrolDSC .wz-otp-row { display: flex; align-items: center; gap: 10px; }
#enrolDSC .wz-otp-boxes { display: flex; gap: 8px; flex-wrap: wrap; }
#enrolDSC .wz-otp-boxes .wz-otp-box {
    width: 28px; height: 28px; text-align: center; font-size: 16px; font-weight: 700;
    font-family: var(--wz-font); color: var(--wz-ink); background: var(--wz-card-bg);
    border: 1.5px solid #d1d5db; border-radius: 8px;
    transition: border-color .2s ease, box-shadow .2s ease;
}
#enrolDSC .wz-otp-boxes .wz-otp-box:focus { border-color: var(--wz-blue); box-shadow: 0 0 0 3px var(--wz-blue-50); outline: none; }
#enrolDSC .wz-otp-eye { color: var(--wz-muted); font-size: 16px; transition: color .15s ease; }
#enrolDSC .wz-otp-eye:hover, #enrolDSC .wz-otp-eye:focus { color: var(--wz-blue); outline: none; }
#enrolDSC .enrol-step {
    background: var(--wz-card-bg); border: 1px solid var(--wz-line); border-radius: var(--wz-radius-xl);
    box-shadow: var(--wz-shadow-sm); padding: 20px 16px; font-family: var(--wz-font);
}
#enrolDSC .enrol-step h3 { font-size: 15px; font-weight: 600; color: var(--wz-ink); margin: 0 0 12px; background: none; padding: 0; }

/* ==========================================================================
   FI-KYC-A UI-PARITY START
   -----------------------------------------------------------------------
   PaperlessForeignIndividual.jsp hero + right-rail checklist restyle, ported
   from heading.png / docuemnt.png reference mockups. Every rule below is
   scoped under the new page-local .fi-hero-v2 class or the existing unique
   #panPro id -- nothing here touches shared .enrol-banner/.navkpl-section/
   .info-box/.feature-box-content selectors, so it cannot leak onto sibling
   KYC pages that also load this stylesheet.
   ========================================================================== */
.fi-hero-v2 { background: var(--wz-section-bg); padding: 28px 0 8px; }
.fi-hero-v2__top { display: flex; justify-content: flex-end; margin-bottom: 14px; }
.fi-hero-v2__badge {
    display: inline-flex; align-items: center; gap: 8px;
    background: var(--wz-ok-bg); color: var(--wz-ok); border: 1px solid var(--wz-ok-line);
    border-radius: 999px; padding: 8px 16px; font-family: var(--wz-font);
    font-size: 13px; font-weight: 600;
}
.fi-hero-v2__badge .fa-shield { font-size: 10px; }
.fi-hero-v2__eyebrow {
    font-family: var(--wz-font); font-size: 9px; font-weight: 700; letter-spacing: .06em;
    text-transform: uppercase; color: var(--wz-primary); margin-bottom: 8px;
}
.fi-hero-v2 .info-box h2 { font-family: var(--wz-font); color: var(--wz-ink); font-weight: 700; }
.fi-hero-v2 .info-box p#panNote { font-family: var(--wz-font); color: var(--wz-muted); font-size: 15px; line-height: 1.6; }
@media (max-width: 767px) {
    .fi-hero-v2 { padding: 18px 0 4px; }
    .fi-hero-v2__top { justify-content: flex-start; margin-bottom: 12px; }
    .fi-hero-v2__badge { font-size: 12px; padding: 6px 12px; }
    /* Step 1's "Save & continue to credentials" CTA -- .wz-cta-bar's justify-content:flex-end
       sizes the button to its text's intrinsic width, which on a narrow phone screen is wider
       than the space left inside the card's 24px side padding. Flex items don't shrink below
       that intrinsic width by default, so the button overflowed the bar and got clipped by
       .wz-card's overflow:hidden (rounded-corner clipping) instead of wrapping/shrinking.
       Full-width on mobile is also the more standard primary-CTA pattern on small screens. */
    #step1CtaBar { justify-content: center; }
    #step1CtaBar #btnSaveContinueStep1Span { display: block; width: 100%; }
    #step1CtaBar #btnSaveContinueStep1 { width: 100%; }
}

#enrolDSC .fi-doclist__hd {
    display: flex; align-items: center; gap: 8px;
    font-family: var(--wz-font); font-size: 15px; font-weight: 600; color: var(--wz-ink); margin: 0 0 12px;
}
#panPro .fi-doclist__hd .fa-clipboard { color: var(--wz-blue); font-size: 15px; }
#panPro .fi-doclist__group { margin: 14px 0 8px; font-family: var(--wz-font); font-size: 14px; color: var(--wz-ink); }
#panPro .fi-doclist__group:first-of-type { margin-top: 0; }
#panPro .fi-doclist__any { color: var(--wz-subtle); font-weight: 400; }
#enrolDSC ul.fi-doclist { list-style: none; margin: 0; padding: 0; }
#enrolDSC ul.fi-doclist li {
    display: flex; align-items: flex-start; gap: 8px;
    font-family: var(--wz-font); font-size: 14px; color: var(--wz-body); padding: 4px 0;
}
/* AB: REVERTED the earlier flex-wrap:wrap on the rule above -- it fixed the nested-list item but
   broke every OTHER long-text item on this checklist ("Driving License (DL)/ Registration
   certificate (RC)", etc.): with flex-wrap, the tick icon and text are two SEPARATE flex items, so
   whenever their combined width doesn't fit one line, the whole TEXT item drops to its own line,
   separating it from the icon above -- not just the nested list wrapping as intended. Fix instead
   targets ONLY the one <li> with a nested sub-list (PAN's "Utility Bills..." item,
   IndividualKYC.jsp), via a dedicated modifier class rather than the shared <li> rule: its icon+text
   are grouped into one inner flex row (.fi-doclist-li__row) so they can never separate from each
   other, and that row plus the nested <ul> are the ONLY two flex-basis:100% children of the <li>,
   each forced onto its own line. */
#enrolDSC ul.fi-doclist li.fi-doclist-li--nested {
    flex-wrap: wrap;
}
#enrolDSC ul.fi-doclist li.fi-doclist-li--nested > .fi-doclist-li__row {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    flex-basis: 100%;
}
#enrolDSC ul.fi-doclist li.fi-doclist-li--nested > ul.fi-doclist {
    flex-basis: 100%;
    margin: 4px 0 0 25px;
}
/* AB: tighter top margin for the right-rail document checklist boxes specifically -- the shared
   ".enrol-step { margin: 10px 0px 0px; }" (css/style.css) is used broadly across this page
   (#panApplicantInfo, #panEnrolmentInfo, #panRecordingTips) and across other pages entirely
   (Organization, Foreign Individual, etc.), so it's left untouched. Scoped by ID to exactly the
   three checklist boxes (FI's #panPro, domestic's #panDocumnetContent/#documnetDisplay) -- IDs are
   unique per page, so this cannot affect any other .enrol-step anywhere. */
#enrolDSC #panPro,
#enrolDSC #panDocumnetContent,
#enrolDSC #documnetDisplay {
    margin: 0;
}
/* Tick icon, matching the reference mockup exactly -- inline SVG (stroke-based check path)
   instead of Font Awesome's solid glyph. Font Awesome is dropped entirely for this icon (not
   just re-styled) since the legacy .feature-box-content li i rule (this <ul> also carries
   that class) wraps <i> icons in a bordered circle badge that no override cleanly strips. */
/* #47B17E is the reference mockup's exact --green/--status-success value (verified in its
   embedded stylesheet: ".kyc-rlist li svg{color:var(--status-success)}" -> "--status-success:
   var(--green)" -> "--green:#47B17E") -- deliberately NOT var(--wz-ok) (#03543f), which is a
   much darker green used elsewhere for ok-banner text/completed-step indicators. */
#enrolDSC .fi-tick { flex: 0 0 auto; display: inline-flex; color: #47B17E; margin-top: 1px; line-height: 0; }
#enrolDSC .fi-tick svg { display: block; }

#enrolDSC .fi-sec71-box {
    background: var(--wz-warn-bg); border: 1px solid var(--wz-warn-line); color: var(--wz-warn-text);
    border-radius: var(--wz-radius-md); padding: 14px 16px; font-size: 13px; line-height: 1.55;
}
#enrolDSC .fi-sec71-box p { font-family: var(--wz-font); font-size: 13px; line-height: 1.55; }

#enrolDSC ul.fi-reflist { list-style: none; margin: 0; padding: 0; }
#enrolDSC .fi-reflist li + li { border-top: 1px solid var(--wz-line); }
#enrolDSC .fi-reflist li a {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    font-family: var(--wz-font); font-size: 14px; color: var(--wz-body);
    padding: 11px 0; text-decoration: none;
}
#enrolDSC .fi-reflist li a:hover { color: var(--wz-blue); text-decoration: none; }
#enrolDSC .fi-reflist li a .fa-external-link { position: static; font-size: 13px; color: var(--wz-subtle); }
#enrolDSC .fi-reflist li a:hover .fa-external-link { color: var(--wz-blue); }
#enrolDSC .fi-help-card p { font-family: var(--wz-font); font-size: 13px; font-weight: 500; color: var(--wz-ink); margin: 0; }
#enrolDSC .fi-help-card a { font-family: var(--wz-font); font-size: 13px; color: var(--wz-blue); text-decoration: none; }
#enrolDSC .fi-help-card a:hover { text-decoration: underline; }
/* FI-KYC-A UI-PARITY END */

/* ==========================================================================
   PaperlessForeignIndividual.jsp -- Step 2/3 right-rail "Applicant information"
   card (#panApplicantInfo), replacing the Step 1 "Documents to keep ready"
   checklist (#panPro) once Step 1 is complete. Ported from the same mockup's
   kyc-inforow pattern, adapted to this page's existing .fi-doclist__hd /
   .enrol-step naming instead of introducing the mockup's raw kyc-* classes.
   ========================================================================== */
#panApplicantInfo .fi-doclist__hd .fa-id-badge { color: var(--wz-blue); font-size: 15px; }
#enrolDSC .fi-inforow {
    display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
    padding: 9px 0; border-top: 1px solid var(--wz-line);
}
#enrolDSC .fi-inforow:first-of-type { border-top: none; padding-top: 0; }
#enrolDSC .fi-infok { font-family: var(--wz-font); font-size: 13px; color: var(--wz-muted); flex: 0 0 auto; }
#enrolDSC .fi-infov { font-family: var(--wz-font); font-size: 14px; color: var(--wz-ink); font-weight: 500; text-align: right; word-break: break-word; }
#enrolDSC .fi-infov--mono { font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 13px; }
#enrolDSC .fi-infov--muted { color: var(--wz-subtle); font-weight: 400; }
#enrolDSC .fi-infov--code { color: var(--wz-primary); font-weight: 700; letter-spacing: .05em; }

/* ==========================================================================
   PaperlessForeignIndividual.jsp -- Step 3 video widget: leave the camera UI
   itself as VideoRecorder.js's own default styling (no re-skin) per explicit
   feedback. The one intentional override is hiding its own instruction/
   additional-info blocks -- !important because the widget toggles these via
   its own inline styles/JS at runtime, which would otherwise win over a plain
   display:none here. Scoped under #VideoContainer, which only exists on this
   page, so nothing else loading this stylesheet is affected.
   ========================================================================== */
#VideoContainer #VRMIC_instruction,
#VideoContainer #VRMIC_additionalInfo {
    display: none !important;
}

.fi-hero-v2__top {
    margin-bottom: 0;
}

.fi-hero-v2 {
    padding-top: 8px;
}

.fi-hero-v2__badge {
    padding-block: 2px;
    font-size: 10px;
}

.fi-hero-v2__eyebrow {
    margin-bottom: 0;
    font-weight: 500;
}

.enrol-banner h2 {
    margin-top: 4px;
}

.fi-hero-v2 .info-box p#panNote {
    font-size: 12px;
    line-height: 19px;
    margin-bottom: 0;
}

.wz-steps {
    margin-top: 4px;
    margin-bottom: 8px;
    gap: 8px;
}

.wz-steps li {
    padding: 4px 8px;
    border-radius: 12px;
}

.wz-steps li .wz-step-no {
    width: 24px;
    height: 24px;
}

.wz-step-k {
    font-size: 9px;
}

.wz-step-v {
    font-size: 13px;
}

#enrolDSC .wz-card {
    border-radius: 12px;
}

#enrolDSC .wz-cardhd {
    padding: 8px;
}

#enrolDSC .wz-cardhd .wz-section-badge {
    width: 24px;
    height: 24px;
    font-size: 12px;
}

#enrolDSC .wz-cardhd__t {
    font-size: 16px;
}

#enrolDSC .wz-cardhd__s {
    font-size: 9px;
}

#enrolDSC .wz-section {
   padding: 10px 16px; 
}

#enrolDSC .wz-section-hd {
    gap: 8px;
    margin-bottom: 8px;
}

#enrolDSC .wz-section-badge {
    width: 20px;
    height: 20px;
    border-radius: 4px;
    font-size: 11px;
}

#enrolDSC .wz-section-title {
    font-size: 14px;
}

#enrolDSC .wz-section-sub {
    font-size: 9px;
    margin-top: 1px;
}

#enrolDSC .btn-orange {
    border-radius: 8px;
    padding-block: 5px !important;
    min-width: auto !important;
    font-size: 12px !important;
}

#enrolDSC .eSctr-mobile .fl-label {
    top: 10px !important;
    left: 74px !important;
    font-size: 12px;
}

#enrolDSC .eSctr-box.eSctr-mobile .form-control:not(:placeholder-shown)~.fl-label {
    font-size: 10px;
    border-radius: 6px;
}

#enrolDSC .eSctr-box .em-tooltip {
    right: 10px;
}

/* Section B mobile-number confirmation box (Nationality replacement) -- shows a static flag
   clone (class set by PopulateMobileConfirmBox() in PaperlessForeignIndividual.js from the
   live Section A intl-tel-input widget) alongside the "+<isd> <mobile>" text. Plain absolute
   placement rather than reusing the plugin's own .iti__flag-container wrapper, since this
   isn't an intlTelInput-initialized input -- just a disabled display field. */
#enrolDSC .eSctr-mobile-confirm { position: relative; }
#enrolDSC .eSctr-mobile-confirm .iti__flag {
    position: absolute;
    left: 12px;
    top: 60%;
    transform: translateY(-50%);
    z-index: 2;
}
#enrolDSC .eSctr-mobile-confirm .form-control {
    padding-left: 40px;
}

#enrolDSC .pdsc-alert {
    font-size: 11px;
    font-weight: 500;
}

#enrolDSC .enrol-step {
    border-radius: 12px;
}

#enrolDSC .dateofbirth .eSctr-month {
    margin: 0 0.66%;
}

#enrolDSC .eSctr-select .form-control:not(:placeholder-shown)+.fl-label {
    top: 11px;
    font-size: 14px;
}

#enrolDSC .dob-tooltip {
    width: 12px;
    height: 12px;
    line-height: 7px;
    padding-inline: 3px;
    font-size: 8px;
    margin-top: 2px;
}

#enrolDSC .dobTtip, #enrolDSC .genderLabel {
    font-size: 12px;
}

#enrolDSC .dobTtipWrap{
    top: -18px;
}

#enrolDSC .genderLabel {
    top: -12px;
}

/* Issue 2: Gender is the leftmost field in its row (Gender / Email / Mobile Number), close to
   the page's left edge. The shared .ttips .ttipContent tooltip box is right-anchored
   (right:-20px, width 300px), so it extends LEFTWARD from the "?" icon -- for a field this
   close to the left edge that pushed the box past x=0, and the browser clipped everything
   left of the viewport edge (confirmed via screenshot: leading characters of each line were
   missing, e.g. "Please" rendered as "ase select..."). A centered (transform:translateX(-50%))
   attempt still weren't enough margin, so this instead flips the box to extend RIGHTWARD from
   the icon (same technique as the existing sitewide .ttips-right helper), where there's ample
   room (Email ID/Mobile Number columns), scoped to this one tooltip only. */
#enrolDSC .genderLabel .ttips .ttipContent {
    right: auto;
    left: -20px;
}

#enrolDSC .dateofbirth .eSctr-date, #enrolDSC .dateofbirth .eSctr-year {
    width: 26%;
}

#enrolDSC .eSctr-box .fl-label {
    font-weight: 500;
    font-size: 12px;
    top: 7px;
}

#enrolDSC .form-select {
    font-size: 13px !important;
    padding-left: 9px;
    /* Was 7px, 3px shy of #enrolDSC .form-control/.form-select's own shared padding-top:10px
       (:181-187) -- both share the same height:32px box, but this override made a <select>'s
       own selected-value text (State/City) sit visibly higher than its sibling <input> fields'
       text (Pincode/Mobile/Email) in the same row. */
    padding-top: 10px;
}

#enrolDSC .moveTop {
    top: -1px !important;
    font-size: 10px !important;
}

#enrolDSC .eSctr-box .form-control:not(:placeholder-shown)~.fl-label,
#enrolDSC .eSctr-box .form-control:focus~.fl-label {
    top: -2px;
    font-size: 10px;
}

/* Was top:6px/font-size:12px -- a <select> never matches :placeholder-shown (that pseudo-class
   is input/textarea-only), so this dedicated override exists because the general
   .form-control:not(:placeholder-shown) rule below can't reliably catch selects at all, NOT to
   give it a deliberately different floated position. Its values just never matched the general
   rule's top:-2px/font-size:10px, so a filled State/City's "State"/"City" label sat visibly
   lower than every other filled field's label in the same row instead of floating up flush
   with them. Aligned to match exactly. */
#enrolDSC .eSctr-box .form-control.form-select:not(:placeholder-shown)~.fl-label,
#enrolDSC .eSctr-box .form-control.form-select:focus~.fl-label {
    top: -2px;
    font-size: 10px;
}

#enrolDSC .em-tooltip {
    width: 14px;
    height: 14px;
    line-height: 10px;
    padding: 2px 3px;
    font-size: 9px;
}

#enrolDSC .eSctr-box {
    margin-bottom: 6px;
}

#enrolDSC .eSctr-mobile .fl-label {
    top: 7px !important;
}

#enrolDSC .eSctr-mobile .form-control:focus+.fl-label {
    top: -8px !important;
}

#enrolDSC .eSctr-box.eSctr-mobile .form-control:not(:placeholder-shown)~.fl-label {
    top: -10px !important;
}

#enrolDSC .wz-steps li{
    gap: 8px;
}

@media (max-width: 992px) {

    .wz-steps li {
        flex: 0 50px;
        justify-content: center;
        padding-block: 6px;
    }
    .wz-step-lb {
        display: none !important;
    }
    
    .fi-hero-v2__badge, .fi-hero-v2__badge .fa-shield, .fi-hero-v2__eyebrow {
        font-size: 9px;
    }
}

/* ==========================================================================
   Step 3 video-recording submission -- dedicated loading overlay (#vslOverlay
   in the JSP, toggled by ShowVideoSubmitLoader()/HideVideoSubmitLoader() in
   PaperlessForeignIndividual.js). Deliberately separate from the site-wide
   $.loadingBlockShow() spinner (functions/javascript.js) -- that one is a bare
   spinner + "Loading...", fine for a normal AJAX call, but the moment right
   after a video recording is handed off (#VideoSuccessData posting to
   videoResponseURL) benefits from an explicit "don't close this window" +
   secure-upload message given the file size/processing time and the
   sensitivity of an eKYC video. Sits outside #enrolDSC (appended as a direct
   child of <body> in the JSP), same reasoning as .wz-steps/.wz-payment-card
   above, so deliberately unscoped here too. Approved design: "Option A --
   camera badge + spin ring". */
.vsl-overlay {
    display: none; position: fixed; inset: 0; z-index: 10050; padding: 20px;
    align-items: center; justify-content: center; background: rgba(17,25,40,.78);
}
.vsl-overlay.show { display: flex; }
/* max-width:100% (of the padded overlay's own box) instead of calc(100vw - 40px) -- 100vw can
   run slightly wider than the actual visible area on some mobile browsers (scrollbar-gutter
   quirks), so this is the more reliable way to guarantee the card never exceeds the viewport. */
.vsl-card {
    background: var(--wz-card-bg); border-radius: var(--wz-radius-xl); padding: 28px 26px;
    width: 296px; max-width: 100%;
    display: flex; flex-direction: column; align-items: center; text-align: center; gap: 12px;
    box-shadow: 0 24px 60px rgba(0,0,0,.35); font-family: var(--wz-font);
}
.vsl-badge-wrap { position: relative; width: 60px; height: 60px; flex: 0 0 auto; }
.vsl-badge-ring {
    position: absolute; inset: 0; border-radius: 50%; border: 4px solid #ffe3bd;
    border-top-color: var(--wz-primary); animation: vsl-spin 1.1s linear infinite;
}
.vsl-badge-core {
    position: absolute; inset: 7px; border-radius: 50%; background: #fff3e2;
    display: flex; align-items: center; justify-content: center; color: var(--wz-primary-deep);
}
.vsl-badge-core svg { width: 25px; height: 25px; }
.vsl-h { font-size: 17px; font-weight: 700; color: var(--wz-ink); margin: 0; }
.vsl-p { font-size: 12.5px; line-height: 1.5; color: var(--wz-muted); margin: 0; max-width: 28ch; }
.vsl-secure {
    display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 600;
    color: var(--wz-ok); background: var(--wz-ok-bg); padding: 5px 11px; border-radius: 999px;
}
.vsl-secure svg { width: 11px; height: 11px; }
@keyframes vsl-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
    .vsl-badge-ring { animation: none; }
}
/* Everything scales down together on a small phone screen -- card width already can't exceed
   the viewport (max-width:100% above), but at ~340px unscaled it still reads as oversized
   relative to a ~360-400px-wide phone; this keeps every element's proportions consistent with
   the desktop version, just smaller, rather than only the outer box shrinking. */
@media (max-width: 480px) {
    .vsl-card { width: 260px; padding: 22px 18px; gap: 10px; }
    .vsl-badge-wrap { width: 50px; height: 50px; }
    .vsl-badge-core svg { width: 21px; height: 21px; }
    .vsl-h { font-size: 15px; }
    .vsl-p { font-size: 11px; max-width: 24ch; }
    .vsl-secure { font-size: 10px; padding: 4px 9px; }
}


@media (max-width: 768px) {
    #enrolDSC .eSctr-select .fl-label.fl-active {
        top: 0px !important;
        font-size: 11px !important;
        color: #5264ae !important;
    }
    
    .header-right {
        padding: 0;
        margin: 0;
    }
}

.ekyc-from {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0 !important;
}

.ekyc-from .ratitle, .ekyc-from .raname {
    font-size: 10px;
}

#panDocumnetContent.enrol-step, #documnetDisplay.enrol-step {
    padding: 11px !important;
}

/* Compact scrollable dropdown for DOB Date/Month/Year fields -- native <select> popups can't be
   height-capped cross-browser/mobile, so these render as a fixed-height custom list instead
   (see #enrolDSC .compact-select-* in web/functions/IndividualKYC.js and
   web/functions/PaperlessForeignIndividual.js). Label floating on selection needs no CSS/JS
   here at all -- functions/javascript.js's page-wide ".eSctr-select select" change handler
   (next("label").addClass("fl-active"), styled by the existing ".eSctr-select .fl-label.fl-active"
   rule below) already does it, same as it always did for Month. buildCompactSelect() only has to
   avoid inserting the toggle/menu between the select and its label. */
#enrolDSC .dateofbirth .eSctr-box {
    position: relative;
}
#enrolDSC select.compact-select-native {
    display: none;
}
/* padding/line-height tuned specifically for a <button> (unlike the old select-tuned
   padding:15px 6px 0px + line-height:24px, which only "fit" because native <select> text-centers
   internally regardless of author line-height and silently overflowed for a real button). Box
   size is intentionally left unchanged -- 32px, same as every other field. */
#enrolDSC .compact-select-toggle {
    display: block;
    width: 100%;
    text-align: left;
    background-color: #fff;
    cursor: pointer;
}
#enrolDSC .eSctr-select .compact-select-toggle {
    padding: 14px 20px 0 9px;
    line-height: 15px;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2012%2012%22%3E%3Ctitle%3Edown-arrow%3C%2Ftitle%3E%3Cg%20fill%3D%22%23000000%22%3E%3Cpath%20d%3D%22M10.293%2C3.293%2C6%2C7.586%2C1.707%2C3.293A1%2C1%2C0%2C0%2C0%2C.293%2C4.707l5%2C5a1%2C1%2C0%2C0%2C0%2C1.414%2C0l5-5a1%2C1%2C0%2C1%2C0-1.414-1.414Z%22%20fill%3D%22%23000000%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fsvg%3E");
    background-size: .6em;
    background-position: calc(100% - 10px) center;
    background-repeat: no-repeat;
}
/* NOT #enrolDSC-scoped (unlike every other .compact-select-* rule): buildCompactSelect() appends
   this <ul> directly to <body> (not inline after the toggle) so it can escape
   #applicantEnrolmentCard's (.wz-card) overflow:hidden clipping -- see the long comment in
   functions/IndividualKYC.js / functions/PaperlessForeignIndividual.js. Since it lives under
   <body>, "#enrolDSC .compact-select-menu" would never match at all. The class name is unique
   to this widget so dropping the scope is safe. No position/top/left/width here either --
   buildCompactSelect() sets those inline via position:fixed off the toggle's real
   getBoundingClientRect(). z-index bumped clear of Bootstrap 5's own layers
   (modal:1055, popover:1070, tooltip:1080, toast:1090) since 1055 collided with Bootstrap's
   modal exactly. */
.compact-select-menu {
    display: none;
    z-index: 1100;
    margin: 2px 0 0;
    padding: 4px 0;
    max-height: 210px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #ced4da;
    border-radius: 4px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .15);
    list-style: none;
}
.compact-select-menu.open {
    display: block;
}
.compact-select-menu li {
    padding: 6px 12px;
    font-size: 14px;
    cursor: pointer;
}
.compact-select-menu li:hover,
.compact-select-menu li.selected {
    background-color: #f0f1fb;
    color: #5264AE;
}
