/*
 * id-card-ocr — page styles (was inline <style> in id-card-ocr.blade.php).
 * Loaded only by that view, right after new-theme/style.css, so rules here
 * affect this tool only.
 */
/* ===================== 1. Passport + ID Card ===================== */
.idco-sections>div {
    padding-top: 70px !important;
    padding-bottom: 70px !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.idco-sections>.container_fluid {
    padding-left: calc(var(--bs-gutter-x, 1.5rem) * .5);
    padding-right: calc(var(--bs-gutter-x, 1.5rem) * .5);
}

.idco-sections>div:has(.why_our_section_main) {
    background-color: #fafafa;
}

@media screen and (max-width: 767px) {
    .idco-sections>div {
        padding-top: 40px !important;
        padding-bottom: 40px !important;
    }

    .mg-sm-bottom-20 {
        margin-bottom: 20px !important;
    }

}

.px-xxl-4_5 {
    padding: 40px;
}

.output_file_parent {
    display: flex;
    justify-content: center;
}

.idco-extract-fields-list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px 28px;
}

.idco-extract-field-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 16px;
    font-weight: 500;
}

/* Chips flow as inline text with balanced line wrapping, so the last row
is never a lone orphan (flex-wrap left "Signature" alone on row 2).
The mobile/tablet media query below still switches to a 2-col grid. */
.idco-how-it-works-row {
    margin-top: 24px;
}

.idco-how-it-works-col {
    padding: 20px 18px;
    position: relative;
}

.idco-how-it-works-col+.idco-how-it-works-col::before {
    content: '';
    position: absolute;
    top: 20px;
    bottom: 20px;
    left: 0;
    width: 1px;
    background: #C9C9C9;
}

.idco-how-it-works-col img {
    width: 100%;
    max-width: 70px;
    height: 100%;
    max-height: 70px;
    margin-bottom: 10px !important;
}

.idco-how-it-works-col h3 {
    font-size: 20px;
    font-weight: 600;
    margin-bottom: 14px;
}

.idco-how-it-works-text,
.idco-how-it-works-text p {
    font-size: 18px;
    font-weight: 400;
    color: #000000;
    margin-bottom: 0;
}
.download_all .convert_count {
    display: none!important;
}
/* Mobile + tablet: fields become a left-aligned 2-column grid, and the
how-it-works steps stack in one column with horizontal dividers. */
@media screen and (max-width: 991px) {
    .idco-extract-fields-list {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 14px 24px;
        max-width: 420px;
        margin: 0 auto;
        text-align: left;
    }

    .idco-extract-field-chip {
        align-items: flex-start;
        line-height: 1.3;
    }

    .idco-extract-field-chip svg {
        flex-shrink: 0;
        margin-top: 2px;
    }

    .idco-how-it-works-row>.idco-how-it-works-col {
        flex: 0 0 100%;
        max-width: 480px;
        width: 100%;
        margin: 0 auto;
        padding: 24px 10px;
    }

    .idco-how-it-works-col+.idco-how-it-works-col::before {
        top: 0;
        bottom: auto;
        left: 0;
        right: 0;
        width: auto;
        height: 1px;
        background: #E4E4E4;
    }

    .idco-how-it-works-col h3 {
        font-size: 18px;
        margin-bottom: 10px;
    }

    .idco-how-it-works-text,
    .idco-how-it-works-text p {
        font-size: 15px;
    }

}

.process_step_v2_group {
    position: relative;
    max-width: 808px;
    margin: 24px auto 0;
}

.process_step_v2_group::before {
    content: '';
    position: absolute;
    top: 35px;
    bottom: 35px;
    left: 30px;
    width: 0;
    border-left: 1.5px dashed var(--action_color);
}

.process_step_v2_card {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    background: #fff;
    border-radius: 10px;
    padding: 20px 15px;
    box-shadow: 0px 0px 4px 0px #00000026;
}

.process_step_v2_card+.process_step_v2_card {
    margin-top: 30px;
}

.process_step_v2_number {
    width: 30px;
    height: 30px;
    border: 0.3px solid var(--action_color);
    border-radius: 4.66px;
    background: #F3EFFF;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 14px;
    color: var(--action_color);
    flex-shrink: 0;
}

.process_step_v2_content {
    display: flex;
    flex-direction: column;
    gap: 7px;
    text-align: left;
}

.process_step_v2_content p {
    display: block;
    margin: 0;
    font-size: 18px;
    font-weight: 400;
    line-height: 25px;
}

.process_step_v2_title {
    display: block;
    font-size: 20px;
    font-weight: 600;
    line-height: 100%;
}

.formats_table_v2 {
    border-collapse: separate;
    border-spacing: 0;
    width: 100%;
    margin-bottom: 20px;
}

.formats_table_v2 th,
.formats_table_v2 td {
    border-bottom: 1px solid #cecece;
    border-right: 1px solid #cecece;
    padding: 10px 30px;
    height: 67px;
    text-align: center;
    vertical-align: middle;
}

.formats_table_v2 th {
    border-top: 1px solid #cecece;
    font-weight: 700;
    font-size: 18px;
}

.formats_table_v2 td {
    font-weight: 400;
    font-size: 16px;
}

.formats_table_v2 th:first-child,
.formats_table_v2 td:first-child {
    border-left: 1px solid #cecece;
}

.formats_table_v2_mobile {
    display: none;
}

@media screen and (max-width: 575px) {
    .formats_table_v2_desktop {
        display: none;
    }

    .formats_table_v2_mobile {
        display: block;
    }

    .formats_table_v2 {
        table-layout: fixed;
    }

    .formats_table_v2 th,
    .formats_table_v2 td {
        padding: 12px 15px;
        height: auto;
    }

    .formats_table_v2 th {
        font-size: 18px !important;
        font-weight: 600 !important;
        height: 52px;
    }

    .formats_table_v2 td {
        font-size: 15px;
    }

    .idco-how-it-works-row>.idco-how-it-works-col {
        padding: 24px;
    }

}

.input_vs_output_v2_card {
    position: relative;
    margin: 0 20px;
}

.input_vs_output_v2_card .card-body {
    padding: 30px 20px;
}

.input_vs_output_v2_card::after {
    content: "";
    position: absolute;
    width: 1px;
    height: 100%;
    background-color: #c3bebe;
    top: 0;
    left: 32%;
}

/* Passport-only: the shared fixed `left: 32%` line cut through the wide
(landscape) passport "Before" image, so the divider is the Before
column's own right border instead — it always sits after its content. */
@media screen and (min-width: 768px) {
    /* Vertical padding moves from card-body to the columns so the
    border runs the card's full height, like the Figma divider. */
}

@media screen and (max-width: 800px) {
    .input_vs_output_v2_card img {
        width: 100%;
    }

    .input_vs_output_v2_card::after {
        display: none;
    }

}

@media screen and (max-width: 500px) {
    .input_vs_output_v2_card {
        background-color: transparent !important;
        border: none !important;
    }

    .input_vs_output_v2_card::after {
        content: none;
    }

}

/* ============================================================
Results field list (Figma "ID Card OCR Done development" →
results frame, node 1984078543): a plain label/value field
list, not invoice-ocr's spreadsheet grid — see generateTable()
override + idCardOcrJsonToDataArray() comments in this page's
script block. kv_label mirrors .preview_table th's bold/muted
look; kv_value is the editable field.
============================================================ */
/* ============================================================
Results field list (same as id-card-ocr's results frame): a plain label/value field
list, not invoice-ocr's spreadsheet grid — see generateTable()
override + passportOcrJsonToDataArray() comments in this page's
script block. kv_label mirrors .preview_table th's bold/muted
look; kv_value is the editable field.
============================================================ */
.kv_table {
    margin-bottom: 0;
}

/* Grow with the field list instead of the shared fixed-height,
scrolling .preview-body box. */
.idco-result-card {
    height: auto !important;
}

.kv_table .kv_label {
    width: 45%;
    color: #1A1A1A;
    font-weight: 500 !important;
}

.kv_table .kv_label,
.kv_table .kv_value {
    padding: 18px 16px 18px 0 !important;
    font-size: 16px;
    border: none;
}

.kv_table .kv_value {
    color: #555;
    word-break: break-word;
}

/* One continuous underline per label+value pair: it sits on the
<tr>, not the cells, so it never breaks between the two. */
.kv_table tr {
    border-bottom: 1px solid #E9E9E9;
}

.kv_table tr:last-child,
.kv_table .kv_spacer,
.kv_table tr:has(.kv_card_heading) {
    border-bottom: none;
}

.kv_table .kv_card_heading {
    color: var(--action_color, #623CEA);
}

.kv_table .kv_spacer td {
    padding: 0 !important;
    height: 8px;
    border: none !important;
}

/* Desktop pairs two fields per row (Name | Date Of Birth, ...) with a
vertical rule between the columns. generateTable() still emits one
<tr> per field so copy/export keep reading "one <tr> = one field";
the tbody becomes a 2-column grid of <tr>s instead. Card headings
and spacers span both columns so each card starts on a fresh row. */
@media screen and (min-width: 992px) {
    .kv_table tbody {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        column-gap: 70px;
    }

    .kv_table tr {
        display: flex;
        align-items: center;
        position: relative;
    }

    /* Last pair of the list has no underline either. */
    .kv_table tr.kv_left:nth-last-child(2) {
        border-bottom: none;
    }

    .kv_table tr.kv_right::before {
        content: '';
        position: absolute;
        top: 0;
        bottom: 0;
        left: -35px;
        width: 1px;
        background: #E9E9E9;
    }

    .kv_table .kv_label {
        width: auto;
        flex: 0 0 55%;
    }

    .kv_table .kv_value {
        flex: 1 1 auto;
    }

}

@media screen and (min-width: 992px) and (max-width: 1500px) {
    .kv_table tbody {
        column-gap: 48px;
    }

    .kv_table tr.kv_right::before {
        left: -24px;
    }

    .kv_table .kv_label {
        flex-basis: 50%;
    }

    .kv_table .kv_label,
    .kv_table .kv_value {
        font-size: 15px;
    }

    .idco-result-card {
        padding: 14px 24px !important;
    }

}

@media screen and (min-width: 992px) {

    .kv_table tr.kv_spacer,
    .kv_table tr:has(.kv_card_heading) {
        grid-column: 1 / -1;
        display: block;
    }

    .kv_table .kv_card_heading,
    .kv_table .kv_spacer td {
        display: block;
    }

}

@media screen and (max-width: 991px) {

    .kv_table .kv_label,
    .kv_table .kv_value {
        padding: 14px 12px 14px 0 !important;
        font-size: 14px;
    }

    .kv_table .kv_value {
        color: #333;
    }

}

/* ============================================================
Results header (Figma results frame): Start Over / QR / Copy /
single "Download" dropdown, instead of the shared "Export As"
+ "Download All" pair. Scoped to .idco-output-stage so
invoice-ocr/passport-ocr/bank-statement-converter, which reuse
the same .output_stage/.export_all/.download_all classes from
the shared new-theme stylesheet, keep their own layout —
desktop only (>=992px), matching the Figma frame supplied.
============================================================ */
/* One height/font for every results action button (header and files
panel), so they always line up. The shared stylesheet forces some
of them (.startover/.export_all/.download_all) to 42px/16px with
!important at <=1500px but not the others — hence !important below. */
.conversion_container {
    --idco-btn-h: 50px;
    --idco-btn-fs: 18px;
}

@media screen and (max-width: 1500px) {
    .conversion_container {
        --idco-btn-h: 44px;
        --idco-btn-fs: 16px;
    }

}

@media screen and (min-width: 992px) {
    .idco-output-stage {
        display: flex;
        align-items: center;
        gap: 14px;
        height: auto;
        padding-bottom: 30px;
        margin-bottom: 20px;
        border-bottom: 1px solid #E9E9E9;
    }

    .idco-output-stage .startover,
    .idco-output-stage .idco-header-icon-btn,
    .idco-output-stage .idco-header-copy-btn,
    .idco-output-stage .idco-download-btn {
        height: var(--idco-btn-h) !important;
        border-radius: 8px;
        font-size: var(--idco-btn-fs) !important;
        font-weight: 500;
    }

    .idco-output-stage .startover {
        min-width: 150px !important;
        padding: 0 22px;
        gap: 10px;
        background: #fff;
        border: 1px solid #CFCFCF;
    }

    .idco-output-stage .startover img {
        height: 16px;
        width: 16px;
    }

    /* new-qr.png is itself the bordered 50x50 button face. */
    .idco-output-stage .idco-header-icon-btn {
        width: var(--idco-btn-h);
        align-items: center;
        justify-content: center;
        background: transparent;
        border: none;
        padding: 0;
    }

    .idco-output-stage .idco-header-qr-btn {
        margin-left: auto;
    }

    .idco-header-qr-btn img,
    .idco-files-qr-btn img {
        width: var(--idco-btn-h);
        height: var(--idco-btn-h);
    }

    .idco-output-stage .idco-header-copy-btn {
        align-items: center;
        gap: 10px;
        padding: 0 22px;
        background: #fff;
        color: #000;
        border: 1px solid #E4E4E4;
    }

    .idco-output-stage .idco-download-btn {
        min-width: 160px !important;
        gap: 10px;
        background: var(--action_color, #623CEA) !important;
        color: #fff !important;
        border: none;
        padding: 0 22px;
    }

    /* .export_all::after draws its caret via `content: url(...)` sized
    off Bootstrap's border-triangle box model; a real <img> in the
    markup (idco-download-arrow) is simpler to size and colour. */
    .idco-output-stage .idco-download-btn.disabled {
        opacity: .5;
    }

    .idco-output-stage .idco-download-btn::after,
    .idco-output-stage .idco-download-btn.show::after {
        content: none !important;
    }

    .idco-output-stage .idco-download-arrow {
        width: 12px;
        height: 12px;
    }

    /* The header's own bottom border is the divider here. */
    .idco-output-stage~#previewmain {
        border-top: none;
        padding-top: 0;
    }

    .idco-result-card {
        border: 1px solid #EEEEEE;
        border-radius: 12px;
        padding: 22px 40px;
        background: #fff;
    }

}

/* ============================================================
Action tooltips (data-idco-tip="..."): CSS-only, so they also
cover buttons created later in JS. Shown on hover/keyboard focus
on pointer devices only — a tap on touch screens would leave a
hover tooltip stuck — plus whenever JS adds .idco-tip-show (Copy's
"Copied!" feedback, which is how touch users see it).
data-idco-tip-align="start|end" pins the bubble to that edge of
the button so it can't run off-screen at either side.
============================================================ */
[data-idco-tip] {
    position: relative;
}

[data-idco-tip]::before,
[data-idco-tip]::after {
    position: absolute;
    left: 50%;
    z-index: 1060;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity .15s ease, transform .15s ease, visibility .15s;
}

[data-idco-tip]::after {
    --idco-tip-x: -50%;
    content: attr(data-idco-tip);
    bottom: calc(100% + 10px);
    transform: translate(var(--idco-tip-x), 4px);
    width: max-content;
    max-width: 260px;
    padding: 6px 10px;
    border-radius: 6px;
    background: #1A1A1A;
    color: #fff;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.35;
    text-align: center;
    white-space: normal;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .15);
}

[data-idco-tip]::before {
    content: '';
    bottom: calc(100% + 4px);
    transform: translate(-50%, 4px);
    border-style: solid;
    border-width: 6px 6px 0;
    border-color: #1A1A1A transparent transparent;
}

[data-idco-tip-align="start"]::after {
    --idco-tip-x: 0;
    left: 0;
}

[data-idco-tip-align="end"]::after {
    --idco-tip-x: 0;
    left: auto;
    right: 0;
}

@media (hover: hover) {

    [data-idco-tip]:hover::before,
    [data-idco-tip]:hover::after {
        opacity: 1;
        visibility: visible;
        transition-delay: .25s;
    }

}

[data-idco-tip]:focus-visible::before,
[data-idco-tip]:focus-visible::after,
[data-idco-tip]:has(> :focus-visible)::before,
[data-idco-tip]:has(> :focus-visible)::after,
.idco-tip-show[data-idco-tip]::before,
.idco-tip-show[data-idco-tip]::after {
    opacity: 1;
    visibility: visible;
}

@media (hover: hover) {
    [data-idco-tip]:hover::before {
        transform: translate(-50%, 0);
    }

    [data-idco-tip]:hover::after {
        transform: translate(var(--idco-tip-x), 0);
    }

}

[data-idco-tip]:focus-visible::before,
[data-idco-tip]:has(> :focus-visible)::before,
.idco-tip-show[data-idco-tip]::before {
    transform: translate(-50%, 0);
}

[data-idco-tip]:focus-visible::after,
[data-idco-tip]:has(> :focus-visible)::after,
.idco-tip-show[data-idco-tip]::after {
    transform: translate(var(--idco-tip-x), 0);
}

/* Not while its dropdown is open, or before the action is ready. */
[data-idco-tip]:has(> .show)::before,
[data-idco-tip]:has(> .show)::after,
[data-idco-tip]:has(> .disabled)::before,
[data-idco-tip]:has(> .disabled)::after,
[data-idco-tip].disabled::before,
[data-idco-tip].disabled::after {
    display: none;
}

@media screen and (max-width: 575px) {
    [data-idco-tip]::after {
        max-width: 160px;
        padding: 5px 8px;
        font-size: 11px;
    }

}

/* ============================================================
Download dropdown (header + mobile file cards): a floating white
card with roomy rows, instead of the shared .export_menu's fixed
107px purple-bordered box with an <hr> between items.
============================================================ */
.idco-dl-menu,
#all_export_dropdown.idco-dl-menu {
    height: auto !important;
    min-width: 210px;
    margin-top: 8px !important;
    padding: 6px;
    border: 1px solid #ECEAF5;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 12px 32px rgba(26, 18, 64, .14);
}

.idco-dl-menu li+li {
    margin-top: 2px;
}

.idco-dl-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 8px;
    font-size: 15px;
    color: #1A1A1A;
    transition: background-color .15s ease;
}

.idco-dl-item:hover,
.idco-dl-item:focus-visible {
    background: #F4F1FF;
    color: #1A1A1A;
}

.idco-dl-item:active {
    background: #EAE4FF;
    color: #1A1A1A;
}

.idco-dl-item img {
    flex-shrink: 0;
    width: 18px;
    height: 22px;
    object-fit: contain;
}

.idco-dl-ext {
    font-weight: 700;
}

.idco-dl-desc {
    margin-left: auto;
    padding-left: 16px;
    font-size: 13px;
    color: #8A8799;
}

@media screen and (max-width: 991px) {
    .idco-dl-menu {
        min-width: 180px;
    }

    .idco-dl-item {
        padding: 10px;
        font-size: 14px;
    }

}

/* ============================================================
Download QR popup: title, caption, QR in a soft-bordered box,
then a full-width .xlsx / .csv segmented toggle.
============================================================ */
.idco-qr-dialog {
    max-width: 400px;
    padding: 0 16px;
    margin-left: auto;
    margin-right: auto;
}

.idco-qr-modal-content {
    position: relative;
    align-items: center;
    padding: 32px 28px 28px;
    border: none;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 20px 60px rgba(26, 18, 64, .25);
}

.idco-qr-modal-close {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 1;
}

.idco-qr-title {
    margin: 0 0 8px;
    font-size: 28px;
    font-weight: 700;
    color: #1A1A2E;
}

.idco-qr-caption {
    max-width: 300px;
    margin: 0 auto 20px;
    font-size: 16px;
    line-height: 1.5;
    color: #7A7A8C;
}

.idco-qr-box {
    width: 100%;
    max-width: 300px;
    padding: 22px;
    border: 1px solid #E6E0FF;
    border-radius: 20px;
    background: #fff;
}

.idco-qr-box .idco-qr-modal-body {
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 1;
}

.idco-qr-box .idco-qr-modal-body svg {
    display: block;
    width: 100%;
    height: auto;
}

.idco-qr-format {
    display: flex;
    width: 100%;
    max-width: 300px;
    margin-top: 20px;
    padding: 4px;
    gap: 4px;
    border-radius: 10px;
    background: #F4F4F6;
}

.idco-qr-format-btn {
    flex: 1;
    height: 38px;
    border: none;
    border-radius: 8px;
    background: transparent;
    font-size: 15px;
    font-weight: 600;
    color: #555;
    transition: background-color .15s ease, color .15s ease;
}

.idco-qr-format-btn:hover {
    color: #1A1A1A;
}

.idco-qr-format-btn.active {
    background: var(--action_color, #623CEA);
    color: #fff;
    box-shadow: 0 2px 6px rgba(98, 60, 234, .3);
}

@media screen and (max-width: 575px) {
    .idco-qr-modal-content {
        padding: 28px 20px 20px;
    }

    .idco-qr-title {
        font-size: 22px;
    }

    .idco-qr-caption {
        font-size: 14px;
    }

}

/* ============================================================
Files panel (Figma results frame): a stack of plain image
thumbnails (no filename/size text once a file has moved into
the results list) with a "Download All" button pinned under
them. Scoped to .idco-files-list/.files_list .output_file so
the pre-convert staging grid (#uploaded_row, which still wants
filename/size/status text) and every other tool sharing
.files_list/.output_file are unaffected.
============================================================ */
@media screen and (min-width: 992px) {
    .idco-files-list {
        display: flex;
        flex-direction: column;
    }

    .idco-single .idco-files-list {
        display: none !important;
    }

    .idco-files-list .files_list_row {
        flex: 1;
        overflow-y: auto;
    }

    .idco-files-list .output_file {
        position: relative;
        display: block;
        width: 245px;
        height: auto;
        max-width: 100%;
        object-fit: fill;
        min-width: 0;
        padding: 9px !important;
        border: 1px solid #fff !important;
        border-radius: 9px;
        overflow: hidden;
        background: #fff;
        box-shadow: 0px 0px 1.81px 0px #00000033;
    }

    .idco-files-list .output_file.active {
        /* !important needed to win over the base rule's
        border: 1px solid #fff !important above — without it,
        clicking a thumbnail added the .active class correctly
        but the border stayed white. */
        border-color: #623CEA !important;
    }

    .idco-files-list .output_file .image_icon {
        width: 100%;
        height: 100%;
        object-fit: contain;
        border-radius: 8px;
    }

    .idco-files-list .output_file .file_name,
    .idco-files-list .output_file .file_size,
    .idco-files-list .output_file .success {
        display: none !important;
    }

    /* Error state: dimmed/blurred thumbnail + warning icon overlay,
    instead of the plain "Error" text this span shows elsewhere.
    Base stays hidden (matches the shared .d-none default); JS
    already does single_item.querySelector('.error')
    .classList.remove('d-none') on failure — this just restyles
    what appears once that happens. */
    .idco-files-list .output_file .error {
        display: none;
        position: absolute;
        inset: 0;
        z-index: 2;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 6px;
        text-align: center;
        padding: 10px;
        background: rgba(255, 255, 255, .6);
        backdrop-filter: blur(2px);
    }

    .idco-files-list .output_file .error:not(.d-none) {
        display: flex;
    }

    .idco-files-list .output_file .error .idco-error-text {
        font-size: 12px;
        font-weight: 600;
        color: #D92D20;
    }

    /* Per-file conversion progress as a dark overlay on the thumbnail
    itself, instead of the progress bar/% rendering as its own row
    below the (now full-width) image — the .jpgtoexceluploadloader
    element is already toggled d-none on/off by the existing
    convertBtn handler (JS untouched), this just repositions and
    restyles it in this panel; every other tool sharing that class
    keeps its inline bar-next-to-filename layout. */
    .idco-files-list .output_file .jpgtoexceluploadloader {
        position: absolute;
        inset: 0;
        z-index: 2;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 8px;
        background: rgba(0, 0, 0, .45);
        border-radius: 8px;
    }

    .idco-files-list .output_file .jpgtoexceluploadloader::before {
        content: '';
        width: 28px;
        height: 28px;
        border: 3px solid #fff;
        border-bottom-color: transparent;
        border-radius: 50%;
        animation: rotation 1s linear infinite;
    }

    .idco-files-list .output_file .jpgtoexceluploadloader .track {
        display: none;
    }

    .idco-files-list .output_file .jpgtoexceluploadloader .pct {
        display: none;
    }

    .idco-files-list .output_file .jpgtoexceluploadloader .converting_text {
        color: #fff;
        font-size: 13px;
        font-weight: 600;
    }

    /* No per-file edit/copy/export hover icons on the thumbnails —
    those actions live in the results header (Copy/Download) for
    the currently active file, or in the QR modal's This File
    format toggle; a hover-icon row on every thumbnail duplicated
    that and wasn't wanted here. */
    .idco-files-list .output_stage_btns {
        display: none !important;
    }

    /* Visible divider between the files panel and the results
    panel (Figma results frame shows a clear vertical line
    between the two, not just whitespace). */
    .idco-files-list {
        border-right: 1px solid #E9E9E9;
        padding-right: 16px;
    }

    .idco-mobile-status-bar {
        margin-top: 12px;
        display: flex;
        align-items: stretch;
        gap: 8px;
    }

    .idco-mobile-status-bar .idco-mobile-reset,
    .idco-mobile-status-bar .idco-status-text {
        display: none;
    }

    .idco-mobile-status-bar .download_all {
        display: flex;
        flex: 1;
        min-width: 0 !important;
        height: var(--idco-btn-h) !important;
        border: none;
        border-radius: 8px;
        justify-content: center;
        align-items: center;
        font-size: var(--idco-btn-fs) !important;
    }

    /* new-qr.png is itself the bordered 50x50 button face. */
    .idco-files-qr-btn {
        flex-shrink: 0;
        width: var(--idco-btn-h);
        height: var(--idco-btn-h);
        padding: 0;
        border: none;
        background: transparent;
        align-items: center;
        justify-content: center;
    }

}

/* Mobile/tablet (Figma mobile results frame): every file is a card —
thumbnail, name/size/status and Copy + Download on top, its field
list underneath once expanded — and the files-panel footer becomes
a sticky bottom bar ("✓ Your File is Converted" / Download All (N) /
start over). The desktop results header isn't used here, except as
the way out when every file failed (.idco-failed). */
@media screen and (max-width: 991px) {
    .idco-output-stage:not(.idco-failed) {
        display: none !important;
    }

    .conversion_container {
        height: auto !important;
        min-height: 0 !important;
    }

    /* Keep the page end reachable above the fixed bottom bar. */
    body:has(.idco-mobile-status-bar.idco-visible) {
        padding-bottom: 130px;
    }

    .idco-files-list {
        width: 100% !important;
    }

    .idco-files-list .files_list_row {
        max-height: none !important;
        overflow: visible !important;
    }

    .idco-files-list .output_file_parent,
    .idco-files-list .output_file_parent.active {
        display: block;
        background: #fff;
        border: 1px solid #EEEEEE !important;
        border-radius: 10px;
        box-shadow: none;
        padding: 12px !important;
        margin-bottom: 4px;
    }

    .idco-files-list .output_file,
    .idco-files-list .output_file_parent.active .uploaded_item {
        height: auto !important;
        min-height: 0;
        padding: 0 !important;
        border: none !important;
        box-shadow: none !important;
        background: transparent;
        align-items: center;
        gap: 12px;
        /* Shared rule makes this inline-flex, which sizes to its
        content and pushed the buttons past the card edge. */
        display: flex !important;
        width: 100%;
    }

    .idco-files-list .output_file .image_icon {
        display: block !important;
        width: 62px;
        height: 62px;
        flex-shrink: 0;
        object-fit: cover;
        padding: 3px;
        border: 1px solid #D9D0FF;
        border-radius: 6px;
    }

    .idco-files-list .output_file>.text-start {
        flex: 1 1 auto;
        min-width: 0;
    }

    .idco-files-list .output_file .file_name {
        font-size: 15px !important;
        color: #333;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .idco-files-list .output_file .file_size {
        font-size: 13px;
        color: #A9A9A9;
        line-height: 18px;
    }

    .idco-files-list .output_file .success {
        font-size: 13px;
        white-space: nowrap;
        color: var(--action_color, #623CEA);
    }

    .idco-card-actions {
        display: flex;
        align-items: center;
        gap: 6px;
        margin-left: auto;
        flex-shrink: 0;
    }

    .idco-card-icon-btn,
    .idco-card-download-btn {
        height: 32px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        background: #fff !important;
        border: 1px solid #E4E4E4 !important;
        border-radius: 6px !important;
        color: #1A1A1A;
    }

    .idco-card-icon-btn {
        width: 32px;
        padding: 0;
    }

    .idco-card-download-btn {
        gap: 6px;
        padding: 0 10px;
        font-size: 14px;
    }

    .idco-files-list .output_file_parent.active .table_previews {
        border-top: none;
        padding-top: 12px;
    }

    .idco-result-card {
        border: 1px solid #EEEEEE;
        border-radius: 8px;
        padding: 2px 12px;
        background: #fff;
    }

    .idco-mobile-status-bar {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1030;
        display: none;
        flex-wrap: wrap;
        align-items: center;
        gap: 10px 12px;
        padding: 12px 16px 16px;
        background: #fff;
        box-shadow: 0 -2px 10px rgba(0, 0, 0, .08);
    }

    .idco-mobile-status-bar.idco-visible {
        display: flex;
    }

    .idco-mobile-status-bar .idco-status-text {
        flex: 0 0 100%;
        display: flex;
        align-items: center;
        gap: 6px;
        font-size: 17px;
        font-weight: 700;
        color: #1A1A1A;
    }

    .idco-mobile-status-bar .download_all {
        flex: 1;
        min-width: 0 !important;
        height: 50px !important;
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 10px;
        border: none;
        border-radius: 8px !important;
        font-size: 18px !important;
    }

    .idco-mobile-status-bar .idco-mobile-reset {
        flex-shrink: 0;
        width: 50px;
        height: 50px;
        display: flex;
        align-items: center;
        justify-content: center;
        border: 1px solid #CFCFCF;
        border-radius: 8px;
        background: #fff;
    }

    .idco-mobile-status-bar .idco-mobile-reset img {
        width: 18px;
        height: 18px;
        filter: none;
    }

}

/* ===================== 2. Invoice ===================== */
/* ============================================================
Vertical rhythm (Figma: every static content section's Layout
panel shows 70px top/bottom padding). The shared includes use
Bootstrap's my-5 (48px margin) instead, and how_to/faq wrap in
".container_fluid" (underscore, not a real Bootstrap class, no
side padding) while the rest use ".container-fluid"/".container"
(hyphen, ~12px side padding) — misaligning their headings.
Scoped under .ioc-sections and kept inline on this page only, so
the shared includes and every other tool keep their own design.
Same fix pattern as vcf-to-excel/pdf-to-excel earlier this session.
============================================================ */
/* key_features renders transparent (shows the page's white
background) by default; Figma specifies #FAFAFA for this
section on this page. */
/* ============================================================
Process Steps v2 — invoice-ocr's own variant of the shared
process_steps component (new-theme.includes.process_steps_v2),
matched exactly against the Figma "How Does This Invoice
Scanner Work?" frame: dashed connector line, light-purple
(#F3EFFF) badge fill, stacked title/body (not inline). Kept
on this page only, under its own process_step_v2_* classes,
so the shared process_steps component (and any other tool
that adopts it later) keeps its own plain default styling —
same convention as vcf-to-excel's who_can_use_v2.
============================================================ */
/* ===================== 3. CS-7868 design-QA fixes ===================== */
/* ---------- Hero feature chips ---------- */
.feature_box_row .feature_box img[src*="batch_processing"] {
    width: 20px;
    height: 20px;
}

/* ---------- How to use ---------- */
/* Subtitle → illustration gap is 40px in Figma (an override elsewhere
dropped the mg-lg-bottom-40 utility to 16px). */
.text-center>p:has(+ .col-lg-7 .how_to_steps_main) {
    margin-bottom: 40px !important;
}

/* Editor leftovers (a lone <br> line / empty <p>) made one step taller than
the others, so the step gaps looked unequal. */
.how_to_steps .step_content div:has(> br:only-child),
.how_to_steps .step_content p:empty {
    display: none;
}

.how_to_steps .step_content p {
    margin-bottom: 0;
}

/* Illustration sits closer to the steps, like the Figma frame. */
@media (min-width: 768px) {
    .row:has(> .how_to_steps_main)>.col-md-6:first-child {
        padding-right: 8px;
    }

    .row:has(> .how_to_steps_main)>.how_to_steps_main {
        padding-left: 8px;
    }

}

/* Below lg, how_to's wrapper carries both .mx-3 and .mx-auto — same
specificity, so whichever Bootstrap defines last (.mx-auto) wins and
collapses the margin to 0, leaving only the section's own 12px side
padding. The Figma gives this column the same ~28px inset the other
sections (e.g. what_is) already get, so restore .mx-3's 1rem margin
below the breakpoint where col-lg-7 stops constraining the width —
above it, mx-auto is what centers the two-column layout, so it must
stay untouched there. */
@media (max-width: 991.98px) {
    .idco-sections .col-lg-7.mx-3.mx-auto:has(.how_to_steps_main) {
        margin-left: 1rem !important;
        margin-right: 1rem !important;
    }
}

/* ---------- Key features cards ---------- */
.why_our_section_main .card h3 {
    font-weight: 600;
}

/* ---------- Extracted fields chips ---------- */
.idco-extract-field-chip {
    display: flex;
    align-items: center;
    font-size: 18px;
    font-weight: 600;
}

/* ---------- Checklist with image ---------- */
.checklist_image_items li {
    font-size: 18px;
    font-weight: 600;
}

/* ---------- Who can use cards ---------- */
.who-can-use-container .card h3 {
    font-weight: 600;
    line-height: 25px;
}

/* ---------- Input / output format tables ---------- */
.formats_table_v2 th,
.formats_table th {
    font-size: 20px;
    font-weight: 600;
}

/* ---------- Your image vs output ---------- */
.container-fluid:has(> .col-xl-8 .input_vs_output_v2_card)>.text-center>p {
    font-size: 16px;
    font-weight: 400;
}

.input_vs_output_v2_card h3 {
    font-size: 18px;
    font-weight: 700;
}

/* ---------- Results header ---------- */
.output_stage .startover,
.idco-output-stage .startover {
    border-radius: 10px !important;
}

/* ================= Mobile (Figma 360 frame) ================= */
@media (max-width: 767.98px) {

    /* How to use: 20px above and below the illustration, 14px steps. */
    .row:has(> .how_to_steps_main)>.col-md-6:first-child {
        margin-top: 20px;
        margin-bottom: 20px !important;
    }

    .how_to_steps_main {
        margin-top: 0 !important;
    }

    .how_to_steps .step_content {
        max-width: 100%;
        font-size: 14px !important;
        font-weight: 400;
    }

    .how_to_steps .how_to_step_heading {
        font-size: 14px !important;
        font-weight: 600;
    }

    .text-center>p:has(+ .col-lg-7 .how_to_steps_main) {
        margin-bottom: 0 !important;
    }

    /* 30px number circles for the 14px steps (same as png-to-word), with
    the connector line re-anchored to them. */
    .how_to_steps .step_number {
        flex-shrink: 0;
        width: 30px;
        height: 30px;
        font-size: 16px;
    }

    .how_to_steps:has(+ .how_to_steps)::after {
        top: 30px;
        left: 15px;
    }

    /* Key features: cards use the full width, icon closer to title,
    14px description. */
    .why_our_section_main {
        --bs-gutter-x: 0;
    }

    .why_our_section_main .card-body>.d-flex {
        gap: 10px !important;
    }

    .why_our_section_main .card-body {
        font-size: 14px;
    }

    .why_our_section_main .card-body p {
        font-size: 14px;
    }

    /* Extracted fields: less side padding so the heading fits in 2 lines. */
    .idco-extract-fields>.col-lg-9 {
        margin-left: 16px !important;
        margin-right: 16px !important;
    }

    /* Checklist with image: 23px side padding. */
    .checklist_image_section>.col-xl-8 {
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding-left: 23px;
        padding-right: 23px;
    }

    /* Who can use: tighter title line height. */
    .who-can-use-container .card h3 {
        line-height: 25px;
    }

    .checklist_image_items li {
        font-size: 16px;
        font-weight: 400;
    }

    /* Format tables: 400/16px cells, less space around "Output Formats". */
    .formats_table_v2 td,
    .formats_table td {
        font-size: 14px !important;
        font-weight: 400;
    }

    .formats_table_v2_mobile~h2,
    .container:has(.formats_table_v2) h2 {
        margin-top: 20px !important;
        margin-bottom: 16px !important;
    }

    /* Your image vs output: no gap under the subtitle, image edge-to-edge. */
    .container-fluid:has(> .col-xl-8 .input_vs_output_v2_card)>.text-center>p {
        margin-bottom: 0 !important;
    }

    .input_vs_output_v2_card {
        margin: 0 !important;
    }

    /* Was 20px card margin + 20px body padding per side; Figma keeps 16px. */
    .input_vs_output_v2_card .card-body {
        padding-left: 16px !important;
        padding-right: 16px !important;
    }

    /* People also ask: less side padding, 600 questions. */
    .faq-column {
        padding-left: 0;
        padding-right: 0;
    }

    .faq_header .accordion-button {
        font-weight: 500 !important;
        padding-left: 0;
        padding-right: 0;
    }

    .faq-column .accordion-body {
        padding-left: 0;
        padding-right: 0;
    }

}

/* ===================== 4. Pro banner / sidebar ===================== */
.pro-bg {
    background-image: url("../minified/bg-black.png");
    background-size: cover;
    background-position: top;
    background-repeat: no-repeat;
}

.upgrade_banner {
    background-image: url("../imgs/upgrade-banner.png");
    background-size: cover;
    padding: 24px 34px;
    line-height: 30px;
}

.item .data_img {
    padding: 0;
}

.bg_crop {
    background: #5994D9CC;
}

.crop_btn {
    position: absolute;
    display: flex;
    background: #5994D9CC;
    border-radius: 50px;
    cursor: pointer;
    padding: 5px;
    top: 5px;
    left: 5px;
    z-index: 1;
}

.cancelBtn {
    display: flex;
    background: #fff;
    border-radius: 50px;
    cursor: pointer;
    padding: 6px;
    top: 7px;
}

.crossBtn {
    display: flex;
    background: #fff;
    border-radius: 50px;
    cursor: pointer;
    padding: 6px;
    position: absolute;
    top: 15px;
    right: 15px
}

.preview_table_btn {
    background: #fff !important;
    display: flex;
    align-items: center;
    width: 36px;
    height: 26px;
    padding: 0 !important;
    justify-content: center;
    border-radius: 6px;
}

.resultBar.active {
    background: #30619A1A !important;
    border: 1px solid #30619A;
}

.download_btn {
    width: 36px;
    height: 26px;
    padding: 0 !important;
    justify-content: center;
    border-radius: 6px;
}

.download_more {
    padding: 5px 8px !important;
    border-radius: 0 6px 6px 0;
    box-shadow: none;
}

.form-switch .form-check-input {
    width: 2.2em;
    height: 20px;
}

.height_500 {
    height: 500px !important;
}

@media (max-width: 991px) {
    .crop_btn {
        background: #00000066;
        align-items: center;
        justify-content: center;
        width: 100%;
        height: 18px;
        color: #fff;
        border-radius: 0 0 8px 8px;
        padding: 4px 0px;
        top: auto;
        bottom: 0;
        left: 0;
    }

}

@media (max-width: 430px) {
    .download_more+.choose_dropdown {
        width: 335% !important;
        right: 0;
    }

    .convert_files {
        min-width: 120px;
        text-align: center;
        padding: 0;
    }

}

/* ============================================================
   jpg-to-pdf page-specific additions (this file is otherwise a
   literal copy of id-card-ocr.css — see that file's own header
   convention). Everything below is scoped to this page only via
   @push('customstyle') in jpg-to-pdf.blade.php; nothing here
   touches a shared component file or another tool's CSS.
   ============================================================ */

/* ---------- Results screen: simple download cards (single .pdf/.zip
   per upload, same pattern as pdf-to-jpg/word-to-pdf's ptj_/wtp_
   conversion_container, renamed jtp_ for this page). ---------- */
.jtp_conversion_container {
    min-height: auto !important;
    display: flex;
    flex-wrap: wrap;
}

/* Desktop: Download All sits on the same line as Start Over instead of a
separate row under the results list. .jtp_results_header and .jtp_bottom_bar
are reordered onto the container's first flex line (space-between pushes
Start Over left / Download All right); #results_row is forced onto its own
line below via flex-basis:100%. */
@media (min-width: 992px) {
    .jtp_conversion_container {
        align-items: center;
        justify-content: space-between;
    }

    .jtp_results_header {
        order: 1;
    }

    .jtp_bottom_bar {
        order: 2;
        padding: 12px 16px;
    }

    .jtp_status_text,
    .jtp_bottom_reset {
        display: none;
    }

    .jtp_bottom_bar .download_all {
        min-width: 180px;
    }

    #results_row {
        order: 3;
        flex: 1 1 100%;
    }
}

/* Mobile only: full viewport height, file list at the top, Download All
pinned to the bottom (margin-top:auto on .jtp_bottom_bar below) — same fix
as pdf-to-word's .ptw_conversion_container / word-to-pdf's .wtp_conversion_container,
ported here. Desktop stays sized to its own content (flex row, reordered
above). .last_screen is prefixed (instead of bare .jtp_conversion_container)
to out-specificity the unrelated .conversion_container mobile reset further
down this file (the id-card-ocr leftover, see its own comment) rather than
fight it on source order. */
@media (max-width: 991px) {
    .last_screen .jtp_conversion_container {
        flex-direction: column;
        min-height: 75vh !important;
    }
}

/* #after_tool_ad (shared ads.after_tool include) is a bare Bootstrap .row,
whose default -12px side margins have nothing to cancel them out here (its
parent carries no matching gutter padding) — it bleeds 12px past the
viewport's right edge and is a horizontal-scroll source on mobile-width
screens. Same fix as pdf-to-word/word-to-pdf's *-sections.css. Scoped to
this page only since ads/after_tool.blade.php is shared sitewide. */
@media (max-width: 991px) {
    #after_tool_ad.row {
        margin-left: 0;
        margin-right: 0;
    }
}

.jtp_results_header {
    border-bottom: 1px solid #eee;
}

.result_card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    background: #fff;
    border: 1px solid #eee;
    border-radius: 10px;
    box-shadow: 0px 0px 4px 0px #00000014;
}

.result_card_info {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.result_card_info img {
    width: 56px;
    height: 65px;
    object-fit: cover;
}

.result_icon {
    flex-shrink: 0;
}

.result_name {
    font-size: 18px;
    font-weight: 400!important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.result_meta {
    color: #767676;
    text-transform: uppercase;
    font-size: 12px;
}

.result_status {
    color: var(--action_color);
    font-size: 14px;
    font-weight: 400;
}

/* Failed conversions stay danger red, not the theme colour */
.result_status.result_status_error {
    color: #dc3545;
}

.ptw_download_btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 20px;
    border: 1px solid #cccccc;
    border-radius: 8px;
    background: #fff;
    color: #000;
    font-size: 18px;
    font-weight: 500;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

/* Hover fills with the brand color (same as .convert_button/.download_all);
   active goes one shade darker — same #5633D1 those buttons use on hover,
   since the bordered Download button only reaches that intensity on press. */
.ptw_download_btn:hover {
    background: var(--action_color);
    border-color: var(--action_color);
    color: #fff;
}

.ptw_download_btn:active {
    background: #5633D1;
    border-color: #5633D1;
    color: #fff;
}

.ptw_download_btn.disabled {
    pointer-events: none;
    opacity: 0.5;
}

/* ============================================================
Bottom status bar (Figma results frame): status text + "Download All" +
a reset icon. Desktop: just the Download All button, reordered onto the
same line as Start Over by the .jtp_conversion_container flex rules above
(status text/reset icon hidden there — .startover in the header already
covers "go back"). Mobile: stays in normal document flow right after the
results list (border-top divider, not pinned to the viewport). Same
pattern as pdf-to-word's .ptw_bottom_bar / word-to-pdf's .wtp_bottom_bar,
ported here as .jtp_bottom_bar.
============================================================ */
.jtp_bottom_bar {
    display: flex;
    align-items: center;
    gap: 10px;
}

@media (max-width: 991px) {
    .jtp_bottom_bar {
        display: none;
        flex-wrap: wrap;
        gap: 10px 12px;
        padding: 16px;
        border-top: 1px solid #00000033;
        margin-top: auto;
    }

    .jtp_bottom_bar.jtp_visible {
        display: flex;
    }

    .jtp_status_text {
        flex: 0 0 100%;
        display: flex;
        align-items: center;
        gap: 6px;
        font-size: 17px;
        font-weight: 700;
        color: #1A1A1A;
    }

    .jtp_bottom_bar .download_all {
        flex: 1;
        min-width: 0 !important;
        height: 50px !important;
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 10px;
        border: none;
        border-radius: 8px !important;
        font-size: 18px !important;
    }

    .jtp_bottom_reset {
        flex-shrink: 0;
        width: 50px;
        height: 50px;
        display: flex;
        align-items: center;
        justify-content: center;
        border: 1px solid #CFCFCF;
        border-radius: 8px;
        background: #fff;
    }

    .jtp_bottom_reset img {
        width: 18px;
        height: 18px;
    }
}

/* ---------- "Why Need to Convert JPGs to PDF?" — reuses the shared
   who_can_use component as-is (section_type stays "who_can_use"; see
   vcf-to-excel's own "Why Convert VCF to Excel Online?" row for the
   same reuse precedent). The component renders the card's optional
   image ABOVE the heading as a block element; the Figma for this page
   instead wants a small green checkmark INLINE, immediately before the
   bold heading, same line. Scoped under .idco-sections so no other
   tool that includes who_can_use.blade.php is affected. ---------- */
.idco-sections .who-can-use-container .card-body {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
}

.idco-sections .who-can-use-container .card-body img.mb-3 {
    order: 1;
    width: 22px;
    height: 22px;
    margin: 0 8px 8px 0 !important;
}

.idco-sections .who-can-use-container .card-body h3 {
    order: 2;
    width: calc(100% - 30px);
    margin-bottom: 8px;
}

.idco-sections .who-can-use-container .card-body p {
    order: 3;
    width: 100%;
}

/* With 5 cards in a 3-column grid, the last row only has 2 — the Figma
centers them as a pair within the row's full width instead of leaving
them under columns 1-2. */
.idco-sections .who_can_section_main {
    justify-content: center !important;
}

/* ---------- Second screen: file grid + settings sidebar (replaces the
   shared, fixed-height-425px .uploaded_container/.convert_bottom single
   column box from style.css — not overridden in place since several of
   its rules use !important and percentage-height children; easier and
   safer to lay this page's own structure out fresh, scoped under .jtp_*
   classes that no other tool references). ---------- */
.jtp_second_grid {
    display: flex;
    align-items: flex-start;
    gap: 24px;
    width: 100%;
}

.jtp_file_area {
    flex: 1 1 auto;
    min-width: 0;
}

.jtp_file_area #uploaded_row {
    --bs-gutter-x: 20px;
    row-gap: 20px;
}

@media (min-width: 992px) {
    .jtp_file_area {
        max-height: 373px;
        overflow-y: auto;
        overflow-x: hidden;
        padding-right: 4px;
    }
    /* Only while the file grid is showing — the empty second screen on the
       upload step would otherwise push the privacy note 40px further from the
       tool box than on the other tools. */
    .container.second_screen:has(.uploading_container:not(.d-none)) {
        margin-bottom: 40px;
    }
}

/* ---------- "Add more files" card — same bordered-card treatment as an
   uploaded_item, no fixed height, no Camera option (Figma: Link + QR
   only here, unlike the first screen's upload box). ---------- */
.jtp_add_more {
    height: auto;
    min-height: 89px;
    background-color: #fafafa;
    border: 1px solid #d8d8d8;
}

.jtp_add_more .more_uploads_inner {
    padding: 0 20px;
}

.jtp_add_more .more_click_upload {
    font-size: 18px;
    font-weight: 500;
    color: #000;
}

/* ---------- Uploaded file cards — bigger thumbnail + roomier padding to
   match the Figma; same markup/classes as jpg-to-excel's cards. ---------- */
.jtp_file_area .uploaded_item {
    height: auto;
    min-height: 85px;
    align-items: center;
    padding: 14px 18px;
    gap: 14px;
}

.jtp_file_area .image_icon {
    width: 56px;
    height: 56px;
    object-fit: cover;
    flex-shrink: 0;
}

.jtp_file_area .file_name {
    font-size: 16px;
    word-break: break-all;
}

.jtp_file_area .file_size {
    font-size: 12px;
    margin: 2px 0;
}

.jtp_file_area .success {
    color: var(--action_color);
    font-weight: 400;
}

.jtp_file_area .remove {
    right: 14px;
    top: 14px;
}

/* ---------- Settings sidebar: orientation toggle, margin/page size/
   alignment selects, Convert — plain native <select>s, since new-theme
   has no equivalent of the old page's custom .slct_menu dropdown
   widget. ---------- */
.jtp_settings {
    flex: 0 0 357px;
    width: 357px;
    padding: 16px;
    border: 1px solid #e5e5e5;
    border-radius: 16px;
    background: #fff;
    height: auto;
}

.jtp_settings_row {
    margin-bottom: 18px;
}

.jtp_settings_row:not(.jtp_orient_row) {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.jtp_settings_row label {
    font-size: 16px;
    color: #000;
}

.jtp_select {
    border: none;
    border-radius: 8px;
    padding: 4px 14px;
    font-size: 14px;
    font-weight: 400;
    background: #f5f5f5;
    width: 118px;
    color: #000;
    outline: none;
}

.jtp_orient_row label {
    display: block;
    margin-bottom: 10px;
}

.jtp_orient_toggle {
    display: flex;
    gap: 12px;
}

.jtp_orient_btn {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 3px;
    border: 1px solid transparent;
    border-radius: 10px;
    background: #f5f5f5;
    color: #000;
    font-size: 16px;
    font-weight: 400;
}
.convert_button {
    height: 46px!important;
    min-height: 46px!important;
}

.jtp_orient_btn.active {
    background: #fff;
    border-color: var(--action_color);
    color: var(--action_color);
}

.jtp_settings .jtp_convert_btn {
    width: 100%!important;
}

/* Conversion Options row — stacked label-above-select like .jtp_orient_row,
   not the label-left/select-right layout the other settings rows use. */
.jtp_settings_row.jtp_method_row {
    display: block;
}

.jtp_method_row label {
    display: block;
    margin-bottom: 10px;
}

.jtp_method_select {
    width: 100%;
}

/* "Convert with OCR" disables page-layout controls — they don't apply to
   OCR output. */
.jtp_orient_row.jtp_disabled,
.jtp_pdf_option_row.jtp_disabled {
    opacity: 0.5;
    pointer-events: none;
}
#how-to-section .how_to_section_img_container{
    display: flex;
    justify-content: center;
    align-items: flex-start;
}

#how-to-section .how_to_steps_main{
    gap: 12px !important;
}
#how-to-section .how_to_section_img_container img{
    width: 100%;
}
.step_content {
    max-width: 90%!important;
}

.formats_table td {
    font-size: 18px;
}
/* ---------- Mobile: stack the grid, file area grows with the page
   instead of scrolling internally, sidebar goes full width with a
   small decorative divider (Figma shows a drag-handle-style bar
   between the file list and the settings sheet). ---------- */
@media (max-width: 991.98px) {
    .jtp_second_grid {
        flex-direction: column;
    }

    .jtp_file_area {
        width: 100%;
    }

    /* Figma: "Add more files" sits after the uploaded files on mobile,
       not first like on desktop. */
    .jtp_file_area #more_uploads {
        order: 1;
    }

    .jtp_settings {
        width: 100%;
        flex-basis: auto;
        border: none;
        border-radius: 0;
        padding: 24px;
        position: relative;
    }

    .jtp_settings::before {
        content: "";
        position: absolute;
        top: 0;
        left: 50%;
        transform: translateX(-50%);
        width: 36px;
        height: 4px;
        border-radius: 2px;
        background: #d8d8d8;
    }
    .formats_table_v2 th, .formats_table th {
        font-size: 18px;
    }
    .convert_button {
        min-width: unset!important;
    }
    .jtp_settings_row label, .jtp_orient_btn{
        font-size: 14px;
    }
    .result_card_info img {
        width: 48px;
        height: 56px;
    }
    .result_name {
        font-size: 14px;
    }
    .ptw_download_btn{
        font-size: 12px;
    }
}

/* During upload, show only the progress bar — no "NN%" text beside it. */
.jpgtoexceluploadloader .pct {
    display: none;
}
.convert_button {
    font-size: 18px;
    font-weight: 600;
}