/* CardBlok uses the shared D BLOK theme; these rules fit the existing workflow. */
html{font-size:18px}body{font:400 18px/1.68 var(--font-body);letter-spacing:.004em;font-synthesis:none;background:var(--surface-page)}
button,input,select,textarea,.button,.text-button,small,label,.steps,.stats,.table-toolbar,.table-footer,.review-note,.form-note,.crop-toolbar,.crop-hint,.geometry-legend,.photo-tabs,.process-bar,.product-context,.product-footer,.toast{font-family:var(--font-ui);font-weight:500}
:root{--green:var(--ds-action-edge);--lime:var(--ds-action-surface);--white:var(--surface-page);--red:var(--error);--amber:var(--warning)}
.shell{width:min(1220px,calc(100% - 48px));margin-inline:auto}main.shell{padding:0;min-height:calc(100vh - 250px)}
.site-header{border-bottom:var(--ds-rule);background:var(--surface-page)}.nav{height:auto;min-height:84px;gap:24px;font:500 18px/1.35 var(--font-ui)}
.nav .brand-logo,.product-footer .brand-logo{width:132px;min-width:132px;height:44px;display:flex;align-items:center;padding:0;letter-spacing:0}.brand-logo img{width:100%;height:auto;display:block}.nav .nav-actions{gap:16px}.nav .nav-cta{font:500 16px/1.2 var(--font-ui);display:inline-flex;align-items:center;justify-content:center;min-height:48px;border:1px solid var(--ds-action-edge);padding:12px 16px;background:var(--ds-action-surface);color:var(--ds-action-ink)}
.nav summary,.nav a{font-family:var(--font-ui)}.nav summary{min-height:48px;display:flex;align-items:center}.nav .nav-links{gap:24px}.nav .lp-lang{min-height:48px;display:flex;align-items:center}
.product-context{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:16px}.breadcrumb ol{display:flex;gap:8px;align-items:center;list-style:none;margin:0;padding:0;font-size:14px;color:var(--muted)}.breadcrumb li{display:flex;align-items:center;gap:8px}.breadcrumb li+li:before{content:'/'} .breadcrumb a{display:inline-flex;min-height:48px;align-items:center}.product-account{display:flex;gap:16px;align-items:center}.product-account .text-button{font-size:14px}.avatar{background:var(--ds-action-surface);color:var(--ds-action-ink);border:1px solid var(--ds-action-edge);width:44px;height:44px}
.welcome.product-start{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;padding:64px 0 0;align-items:center;max-width:none;margin:0}.product-start .intro{grid-column:2/7}.product-start .intro h1{font:400 clamp(62px,7vw,92px)/.94 var(--font-display);letter-spacing:-.04em;margin:24px 0 32px}.eyebrow{color:var(--ds-heading-label-color);font:500 var(--ds-heading-label-size)/var(--ds-heading-label-leading) var(--font-ui);letter-spacing:0;margin:0}.product-start .lead{font:400 28px/1.35 var(--font-body);color:var(--ink);margin:0}.intro-copy{font:400 18px/1.68 var(--font-body);color:var(--muted);max-width:480px;margin-top:24px}.product-start__entry{grid-column:8/13;width:100%}.ds-product-entry__note a{text-decoration:underline;text-underline-offset:3px}
.workspace-heading{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;padding:64px 0 48px}.workspace-heading>div{grid-column:2/10}.workspace-heading h1{font:400 clamp(52px,6vw,80px)/1.06 var(--font-display);letter-spacing:-.035em;margin:24px 0}.workspace-heading p:not(.eyebrow){font:400 22px/1.55 var(--font-body);margin:0}.workspace-heading>.button{grid-column:10/13;justify-self:end;align-self:center;white-space:normal}
h2{font:400 36px/1.15 var(--font-display)}h3{font:400 28px/1.2 var(--font-display)}
.button{font:500 16px/1.2 var(--font-ui);border-radius:0;min-height:52px;padding:16px 24px;gap:16px;white-space:normal}.button.primary{border-color:var(--ds-action-edge);background:var(--ds-action-surface);color:var(--ds-action-ink)}.button.secondary{border:var(--ds-rule);background:var(--surface-page)}.button.small{font-size:14px;min-height:44px}.text-button{font:500 16px/1.35 var(--font-ui);min-height:48px;color:var(--ink)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--ds-action-edge);outline-offset:3px}
input,select,textarea{font:500 18px/1.4 var(--font-ui);min-height:52px;border-radius:0;border-color:var(--line-neutral);padding:12px 16px}input[type=checkbox]{min-height:17px;padding:0}.steps{display:flex;margin:0 0 32px;border-top:var(--ds-rule);border-bottom:var(--ds-rule);gap:0;padding:0}.steps>div{display:none}.steps .step{flex:1;min-height:76px;border:0;background:transparent;font:500 16px/1.35 var(--font-ui);padding:16px 24px;gap:16px;color:var(--muted);white-space:normal}.steps .step.active{color:var(--ink);box-shadow:inset 0 -3px var(--ds-action-edge)}.steps .step>span{font:400 28px/1 var(--font-display);background:transparent;color:var(--ink);border:0}.steps .step small{font-family:var(--font-ui);background:var(--ds-brass-wash);color:var(--ink)}
.panel{border:var(--ds-rule);border-radius:0;box-shadow:none;background:var(--surface-page)}.dropzone{border-radius:0;background:var(--surface-page);padding:48px 24px}.dropzone h3{font:400 40px/1.15 var(--font-display)}.dropzone p{font-size:18px}.panel-heading p,.tip-panel li,.form-note,.crop-hint,.review-note,.delivery-note p,.export-card small{font-size:16px}.subtle-label,small{font-size:14px}.upload-icon,.tiny-icon{color:var(--ds-action-edge)}.export-heading{margin:48px 0 32px}.export-heading h2{font-size:48px}.export-card{padding:24px}.export-card h3{font-size:36px}.export-card p{font-size:18px}.export-card .export-symbol{background:var(--ds-brass-wash);color:var(--ds-action-edge);border-radius:0}.delivery-note{background:var(--ds-brass-wash);border-radius:0}.contact-dialog,.connection-dialog,.confirm-dialog{border:var(--ds-rule);border-radius:0}.editor-fields label{font-size:17px}.editor-fields{gap:24px}.source-pane pre{font:500 16px/1.6 var(--font-ui)}.toast{font:500 16px/1.5 var(--font-ui)}
.product-footer.shell{padding:32px 0;margin-top:80px;display:flex;gap:24px;align-items:center;flex-wrap:wrap;font:500 14px/1.5 var(--font-ui);border-top:var(--ds-rule);height:auto;background:var(--surface-page)}.product-footer .brand-logo{margin-right:auto;width:118px;min-width:118px;height:auto}.product-footer>a:last-child{display:flex;align-items:center;min-height:48px;font-size:16px}
@media(max-width:1050px){.product-start .intro{grid-column:1/7}.product-start__entry{grid-column:8/13}.workspace-heading>div{grid-column:1/10}}
@media(max-width:900px){.nav{min-height:72px;gap:4px}.nav .brand-logo{width:108px;min-width:108px;height:auto}.nav .nav-links{display:none}.nav .mobile-menu{display:block;margin-left:auto;order:2}.nav .nav-actions{order:3;gap:4px;margin-left:0}.nav .nav-cta{min-width:88px;min-height:44px;padding:8px 10px}.mobile-menu summary,.nav .lp-lang{font-size:18px}.nav .mobile-menu>div{font:500 18px/1.35 var(--font-ui);background:var(--surface-page)}}
@media(max-width:899px){.welcome.product-start{grid-template-columns:repeat(4,minmax(0,1fr));gap:32px;padding-top:48px;align-items:start}.product-start .intro{grid-column:1/-1}.product-start__entry{grid-column:1/-1;max-width:480px}.product-start .lead{font-size:24px;line-height:1.4}.product-start .intro-copy{max-width:560px}.product-start .intro h1{font-size:56px;line-height:1.23;margin:16px 0 24px}.workspace-heading{grid-template-columns:repeat(4,minmax(0,1fr));padding:48px 0;gap:24px}.workspace-heading>div,.workspace-heading>.button{grid-column:1/-1}.workspace-heading>.button{justify-self:start}.workspace-heading h1{font-size:46px;line-height:1.23}.export-grid{grid-template-columns:1fr}.editor-layout{grid-template-columns:1fr}.product-footer.shell{margin-top:64px}}
@media(max-width:720px){.product-context{flex-wrap:wrap;gap:8px}.steps .step{flex-direction:column;align-items:start;min-height:112px;padding:16px 8px;gap:8px}.steps .step>span{font-size:24px}.workspace-heading p:not(.eyebrow){font-size:20px}.button{width:auto}.button.wide{width:100%}.dropzone{padding:32px 16px}.dropzone h3{font-size:34px}.process-bar,.table-toolbar{flex-wrap:wrap}.export-heading h2{font-size:40px}.product-footer span{width:100%}.product-footer .brand-logo{margin-right:0}}
@media(max-width:480px){.shell{width:calc(100% - 32px)}.welcome.product-start{gap:32px}.product-start__entry{max-width:none}.product-start .lead{font-size:22px;line-height:1.4}.product-start .intro-copy{font-size:18px;line-height:1.55;margin-top:16px}.editor-fields{grid-template-columns:1fr}.dialog-header,.editor-layout,.dialog-footer{padding:16px}.drop-buttons{flex-wrap:wrap}.workspace-heading h1{font-size:40px}.nav .brand-logo{width:82px;min-width:82px}.nav{gap:2px}.nav .nav-actions{gap:2px}.nav .nav-cta{min-width:82px;padding-inline:8px}}
@media(max-width:360px){.product-start .intro h1{font-size:44px}.steps .step{font-size:14px;padding:16px 6px}.eyebrow{font-size:22px}}

/* The actual shared SiteFooter is outside both product states. */
.footer.shell{margin-top:80px;max-width:1220px}.footer .brand-logo{height:auto;min-width:0}.footer .brand-logo img{width:100%;height:auto}.footer .footer-cio-badges img{max-width:100%;height:auto}.footer .footer-email{overflow-wrap:anywhere}
#cc-main{--cc-font-family:var(--font-ui);--cc-bg:var(--surface-page);--cc-primary-color:var(--ink);--cc-secondary-color:var(--muted);--cc-btn-primary-bg:var(--ds-action-surface);--cc-btn-primary-color:var(--ds-action-ink);--cc-btn-primary-hover-bg:var(--ds-action-hover);--cc-btn-primary-hover-color:var(--ds-action-ink);--cc-btn-secondary-bg:var(--surface-page);--cc-btn-secondary-color:var(--ink);--cc-btn-secondary-hover-bg:var(--ds-brass-wash);--cc-modal-border-radius:0px;--cc-btn-border-radius:0px}
#cc-main input[type=checkbox]{min-height:0;padding:0}#cc-main button:focus-visible,#cc-main a:focus-visible{outline:3px solid var(--ds-action-edge);outline-offset:3px}
@media(max-width:899px){.footer.shell{margin-top:64px}}

/* Desktop workflow: persistent next action, legible data, distinct external search. */
#workspace :is(.pane,.upload-flow,.regions-panel,.table-panel){scroll-margin-top:24px}
#workspace .pane:focus,#uploadFlow:focus,#contactTableStart:focus,#regionsPanel:focus{outline:none}
.workspace-heading>.save-draft{grid-column:10/13;align-self:center;min-width:0;text-align:right}
.save-draft .button{width:100%}.save-draft p{font:500 16px/1.45 var(--font-ui);margin-top:12px;color:var(--muted)}
.save-draft p:empty{display:none}
.upload-flow{position:sticky;top:12px;z-index:25;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 24px;padding:20px 24px;margin-bottom:24px;background:var(--surface-page);border:1px solid var(--ds-action-edge);box-shadow:0 6px 18px #201b1210;font:500 17px/1.45 var(--font-ui)}
.flow-copy{display:flex;gap:14px;min-width:0}.flow-copy strong{display:block;font-size:20px;line-height:1.3}.flow-copy p{max-width:700px;margin:6px 0 0}.flow-count{display:block;color:var(--muted);font-size:15px;margin-top:6px}.flow-elapsed{color:var(--muted);font-size:15px}.flow-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:flex-end;max-width:420px}
.flow-result{grid-column:1/-1;color:var(--muted);font-size:15px;line-height:1.4;border-top:var(--ds-rule);padding-top:10px}.upload-flow progress{grid-column:1/-1;margin:0;height:6px}
.flow-spinner{width:24px;height:24px;flex:0 0 24px;margin-top:2px;border:3px solid var(--ds-brass-wash);border-top-color:var(--ds-action-edge);border-radius:50%;animation:flow-spin 1s linear infinite}.upload-flow.is-busy{background:#fffaf0}
@keyframes flow-spin{to{transform:rotate(360deg)}}
.boundary-instruction{padding:16px 18px;margin:12px 0 16px;border-left:3px solid var(--ds-action-edge);background:var(--ds-brass-wash);font:500 17px/1.5 var(--font-ui)}.boundary-instruction strong{display:block;color:var(--ink)}
.canvas-wrap,canvas{max-height:min(48vh,520px)}.crop-toolbar{font-size:16px;align-items:center}.geometry-legend,.precise-crop,.corner-inputs label,.crop-controls label{font-size:15px}.photo-tab{font-size:16px;min-height:44px}.region span{font:500 14px/1.4 var(--font-ui)}.low-resolution,.region small.low-resolution{font-size:14px}.regions{max-height:430px}.regions-panel .panel-heading{align-items:start}.regions-panel h2{font-size:32px}.corner-inputs input{font-size:17px;min-height:48px}
.step-instruction{margin:0 0 24px}.step-instruction h2{font-size:32px}.step-instruction p{font:500 18px/1.5 var(--font-ui);margin-top:10px}
.stats>.stat-filter{border:var(--ds-rule);border-radius:0;padding:18px 20px;background:var(--surface-page);text-align:left;color:var(--ink);font-family:var(--font-ui);min-width:0;transition:background .15s}
.stats>.stat-filter:nth-child(2){background:#f8f4e8}.stats>.stat-filter:nth-child(3){background:#edf2e3}.stats>.stat-filter:hover{background:var(--ds-brass-wash)}.stats>.stat-filter[aria-pressed=true]{border-color:var(--ds-action-edge);box-shadow:inset 0 -3px var(--ds-action-edge)}.stats .stat-filter span{font-size:16px;line-height:1.4;letter-spacing:0}.stats .stat-filter strong{font-size:32px;line-height:1.1;margin-top:12px}.stats .stat-filter small{display:block;font-size:16px;margin-top:12px;color:var(--ds-action-edge)}
#reviewPane table{font:500 18px/1.5 var(--font-ui);min-width:1060px;table-layout:auto}#reviewPane th{font:500 15px/1.4 var(--font-ui);letter-spacing:.02em;padding:18px 16px}#reviewPane td{font:500 18px/1.5 var(--font-ui);padding:20px 16px;overflow-wrap:anywhere}#reviewPane .person-button{font:500 20px/1.35 var(--font-ui);min-height:48px;max-width:260px}#reviewPane td small{font:500 16px/1.45 var(--font-ui);margin-top:6px}#reviewPane .status-chip{display:inline-block;font:500 15px/1.35 var(--font-ui);padding:7px 10px;white-space:normal}#reviewPane .status-chip.duplicate{display:block;margin-top:8px}#reviewPane .table-link{display:inline-flex;align-items:center;min-height:48px;font:500 17px/1.4 var(--font-ui);text-underline-offset:4px;text-decoration:underline}#reviewPane .button.small{font-size:17px;min-height:48px}
#reviewPane .table-toolbar input,#reviewPane .table-toolbar select{font-size:18px}#statusFilter{appearance:none;background-color:var(--surface-page);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23171512' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;background-size:20px;padding-right:52px;min-width:220px}
.sticky-review-actions{position:sticky;bottom:0;z-index:20;background:var(--surface-page);border-top:var(--ds-rule);font-size:16px;flex-wrap:wrap}.table-panel{overflow:visible}.table-scroll{border-bottom:var(--ds-rule)}
.contact-dialog{width:min(1120px,calc(100vw - 48px));max-height:90dvh;padding:24px}.contact-dialog .dialog-header{position:sticky;top:-24px;z-index:3;background:var(--surface-page);padding:16px 0;margin-top:-16px;border-bottom:var(--ds-rule)}.contact-dialog .dialog-header h2{font-size:32px}.contact-dialog .eyebrow{font-size:17px;overflow-wrap:anywhere}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;min-width:48px;min-height:48px;flex:0 0 48px;padding:0;border-radius:50%;line-height:1;position:relative}.icon-button svg{display:block;flex:0 0 20px;position:static;margin:0}.icon-button::before,.icon-button::after{content:none!important}.editor-fields input,.editor-fields textarea{font:500 18px/1.45 var(--font-ui);padding:12px 14px;min-height:50px}.source-pane h3{font-size:22px}.source-pane .reasons,.source-pane .form-note{font:500 16px/1.5 var(--font-ui)}.contact-dialog .dialog-footer{bottom:-24px;margin-bottom:-24px;padding:18px 0;background:var(--surface-page);font-size:17px}.contact-dialog .check-label{font-size:17px}.contact-dialog .inline-error:not(:empty){padding:12px;background:var(--ds-brass-wash);font:500 17px/1.5 var(--font-ui)}
.export-grid{align-items:stretch;gap:24px}.export-card{display:grid;grid-template-rows:48px auto 1fr auto minmax(96px,auto);align-items:start;gap:20px;padding:28px;min-width:0}.export-card .export-symbol{width:48px;height:48px;min-width:48px;margin:0;display:grid;place-items:center;background:var(--ds-brass-wash)}.export-symbol svg{width:28px;height:28px;display:block}.export-card h3{font-size:36px;line-height:1.1;margin:0;letter-spacing:-.02em}.export-card p{font:400 20px/1.5 var(--font-body);margin:0;min-height:0}.export-card .button{margin:0;width:100%;min-height:56px;font-size:18px;justify-content:space-between;gap:12px}.export-card .button::before,.export-card .button::after{content:none!important}.export-card .download-icon{width:22px;height:22px;flex:0 0 22px;display:block}.export-card small{font:500 16px/1.5 var(--font-ui);margin:0;min-width:0}.export-card .text-button{font-size:17px;margin:0;padding:0;align-self:start}.delivery-note strong{font-size:20px}.delivery-note p{font-size:18px}.button:disabled{opacity:.65;cursor:not-allowed}
@media(min-width:1100px){.export-card h3{min-height:80px}}
@media(max-width:1050px){.workspace-heading>.save-draft{grid-column:10/13}.upload-flow{grid-template-columns:1fr}.flow-actions{justify-content:flex-start;max-width:none}.flow-copy p{max-width:none}.upload-layout{grid-template-columns:minmax(0,1fr) 240px}}
@media(max-width:899px){.workspace-heading>.save-draft{grid-column:1/-1;text-align:left;max-width:440px}.upload-layout{grid-template-columns:1fr}.upload-flow{top:0;padding:16px}.export-card{grid-template-rows:48px auto auto auto auto}.export-card h3{min-height:0}.export-card small{min-height:0}}
@media(max-width:720px){.flow-copy strong{font-size:18px}.flow-copy p,.boundary-instruction{font-size:16px}.flow-actions{display:grid;grid-template-columns:1fr;width:100%;gap:8px}.flow-actions .button{width:100%;min-height:48px;padding:10px 14px}.upload-flow .flow-result{display:none}.upload-flow .flow-count{font-size:14px}.upload-flow .flow-elapsed{font-size:14px}.stats{grid-template-columns:1fr 1fr}.stats>.stat-filter{padding:14px}.stats .stat-filter span{font-size:16px}.stats .stat-filter small{font-size:16px}.contact-dialog{width:calc(100vw - 24px);max-width:none;padding:16px}.contact-dialog .dialog-header{top:-16px;padding:12px 0}.contact-dialog .dialog-header h2{font-size:28px}.contact-dialog .dialog-footer{bottom:-16px;margin-bottom:-16px;padding:16px 0}.contact-dialog .editor-layout{padding:0}.contact-dialog .check-label{font-size:16px}.export-card{padding:24px}.canvas-wrap,canvas{max-height:45vh}}
@media(max-height:650px){.upload-flow{position:relative;top:0}}
@media(prefers-reduced-motion:reduce){.flow-spinner{animation:none;border-top-color:var(--ds-action-edge);border-right-color:var(--ds-action-edge)}}

/* Preserve the canvas image ratio and pointer-coordinate mapping under height limits. */
.canvas-wrap canvas{width:auto;height:auto;max-width:100%;margin-inline:auto}

.export-details{display:grid;gap:14px;min-width:0}.export-details p{font:500 16px/1.5 var(--font-ui)}.export-details p:empty{display:none}.export-details .text-button{min-height:48px}
@supports(grid-template-rows:subgrid){.export-card{grid-template-rows:subgrid;grid-row:span 5}}


/* Upload controls use the spare desktop column; never overlay the photograph. */
#uploadPane{display:grid;grid-template-columns:minmax(0,1fr);gap:24px}
#uploadPane>.upload-layout,#uploadPane .upload-aside{display:contents}
#uploadPane .upload-flow{grid-column:1;grid-row:1;margin:0}
#uploadPane .photo-panel{grid-column:1;grid-row:2;min-width:0}
#uploadPane .tip-panel{grid-column:1;grid-row:3;margin:0}
#uploadPane #importOCR{grid-column:1;grid-row:4;justify-self:start}
#uploadPane .regions-panel{grid-column:1;grid-row:5;margin:0;min-width:0}
.upload-aside .tip-panel{padding:16px 20px}
.upload-aside .tip-panel summary{cursor:pointer;min-height:48px;align-content:center;font:500 18px/1.4 var(--font-ui);color:var(--ink)}
.upload-aside .tip-panel ol{font:500 16px/1.5 var(--font-ui);margin-top:8px}
@media(min-width:1100px){
  #uploadPane{grid-template-columns:minmax(0,1fr) 300px;align-items:start}
  #uploadPane .photo-panel{grid-column:1;grid-row:1}
  #uploadPane .regions-panel{grid-column:1;grid-row:2}
  #uploadPane .upload-aside{display:flex;flex-direction:column;gap:16px;grid-column:2;grid-row:1 / span 2;position:sticky;top:16px;align-self:start;min-width:0}
  #uploadPane .upload-flow{position:static;display:grid;grid-template-columns:minmax(0,1fr);padding:20px;gap:16px;box-shadow:none}
  #uploadPane .flow-copy{gap:10px}
  #uploadPane .flow-copy strong{font-size:18px}
  #uploadPane .flow-copy p{font-size:16px;line-height:1.45;margin-top:8px}
  #uploadPane .flow-spinner{width:20px;height:20px;flex-basis:20px}
  #uploadPane .flow-actions{display:flex;flex-direction:column;align-items:stretch;gap:8px;max-width:none}
  #uploadPane .flow-actions .button{width:100%;min-height:48px;padding:12px 16px;font-size:16px}
  #uploadPane #viewCrops{order:2}
  #uploadPane .flow-count,#uploadPane .upload-flow:not(.is-busy) .flow-result{display:none}
  #uploadPane .flow-result{font-size:15px;line-height:1.4}
  #uploadPane .flow-elapsed{font-size:14px}
  #uploadPane .upload-aside>#importOCR{font-size:16px;padding:0;min-height:48px}
}
@media(min-width:1100px) and (max-height:700px){#uploadPane .upload-aside{position:static}}

/* Private card preview: show feedback before network and image decoding finish. */
.source-placeholder.is-loading{display:flex;min-height:160px;flex-direction:column;align-items:center;justify-content:center;gap:14px}
.source-placeholder .flow-spinner{display:inline-block;margin:0}

/* Card editor: compact top guidance and a view-only landscape / zoom workspace. */
#uploadPane .photo-panel{overflow:visible}
#uploadPane .photo-panel>.panel-heading{margin-bottom:16px;align-items:start}
#uploadPane .photo-panel>.panel-heading h2{font-size:30px;line-height:1.2}
#uploadPane .panel-heading .boundary-instruction{border:0;background:none;padding:0;margin:8px 0 0;max-width:760px;font:500 16px/1.45 var(--font-ui);color:var(--muted)}
#photoTabs[hidden]{display:none!important}
#photoTabs:empty{margin:0}
.canvas-tools{position:sticky;top:8px;z-index:15;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:12px 0;background:var(--surface-page);border-bottom:var(--ds-rule)}
.view-controls{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}
.canvas-tools .button.small{min-height:48px;font:500 16px/1.2 var(--font-ui);padding:10px 14px;white-space:nowrap}
.canvas-tools #zoomIn,.canvas-tools #zoomOut,.canvas-tools #rotatePhoto{width:48px;padding:10px;font-size:24px}
#zoomLevel{font:500 16px/1.4 var(--font-ui);min-width:48px;text-align:center;font-variant-numeric:tabular-nums}
#panPhoto[aria-pressed=true]{background:var(--ds-brass-wash);border-color:var(--ds-action-edge)}
#addMissingCard{margin-left:auto}
.canvas-status{display:flex;justify-content:space-between;gap:8px 20px;flex-wrap:wrap;padding:12px 0;font:500 15px/1.4 var(--font-ui);color:var(--muted)}
#canvasHelp{max-width:560px;color:var(--ink)}
#canvasViewport{display:block;position:relative;box-sizing:border-box;width:100%;height:clamp(360px,64vh,760px);max-height:none;overflow:auto;padding:12px;border:var(--ds-rule);border-radius:0;background:#f3f2ed;overscroll-behavior:contain;scrollbar-gutter:stable}
#canvasViewport .canvas-stage{display:grid;place-items:center;min-width:100%;min-height:100%;width:max-content;height:max-content}
#canvasViewport #photoCanvas{display:block;max-width:none;max-height:none;margin:0;cursor:grab;touch-action:none;user-select:none}
#canvasViewport #photoCanvas:active{cursor:grabbing}
#canvasViewport #photoCanvas.is-panning{cursor:all-scroll}
#uploadPane .geometry-legend{margin-block:12px;font-size:14px}
#uploadPane .auto-controls{margin-top:16px;gap:12px}
#uploadPane .precise-crop{margin-top:16px}

/* Reserve action columns instead of allowing words or external-link arrows to split. */
#reviewPane .table-scroll{max-width:100%;overflow-x:auto}
#reviewPane table{table-layout:fixed;min-width:1216px;width:100%}
#reviewPane .col-select{width:56px}#reviewPane .col-identity{width:210px}#reviewPane .col-email{width:240px}#reviewPane .col-phone{width:270px}#reviewPane .col-status{width:146px}#reviewPane .col-linkedin{width:178px}#reviewPane .col-action{width:116px}
#reviewPane th,#reviewPane td{padding-inline:12px}
#reviewPane td{overflow-wrap:normal;word-break:normal}
#reviewPane td:nth-child(2){min-width:0}
#reviewPane .person-button{max-width:100%;white-space:normal;word-break:normal;overflow-wrap:normal}
#reviewPane td:nth-child(3){overflow-wrap:anywhere}
#reviewPane .phone-number{display:block;white-space:nowrap;font-variant-numeric:tabular-nums}
#reviewPane .status-chip{font-size:16px;white-space:nowrap;padding:7px 9px}
#reviewPane .table-link{white-space:nowrap;word-break:normal;overflow-wrap:normal;gap:4px}
#reviewPane td:last-child .button{white-space:nowrap;word-break:normal;overflow-wrap:normal;padding:12px;min-width:88px}
#reviewPane .table-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) 200px auto auto;align-items:center}
#reviewPane .table-toolbar .search{min-width:0}
#reviewPane #statusFilter{min-width:0;width:100%}
#reviewPane #fillOCRFields{font-size:16px;max-width:270px;text-align:left}
@media(max-width:1199px){#reviewPane .table-toolbar{grid-template-columns:minmax(220px,1fr) 210px}#reviewPane #fillOCRFields{max-width:none}#reviewPane #addContact{justify-self:stretch}}
@media(max-width:720px){.canvas-tools{top:0;gap:8px}.canvas-tools .button.small{padding-inline:10px}#canvasViewport{height:56vh;min-height:320px}.canvas-status{font-size:14px}#reviewPane .table-toolbar{grid-template-columns:minmax(0,1fr)}#reviewPane .table-toolbar .search{width:100%}#uploadPane .photo-panel>.panel-heading h2{font-size:28px}}


/* Card editing actions remain secondary to the yellow continue/save action. */
.canvas-tools .card-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
.canvas-tools .card-controls #addMissingCard{margin-left:0}
.canvas-tools .card-controls .button{background:var(--surface-page);border:var(--ds-rule);color:var(--ink)}
.canvas-tools .card-controls .button:hover:not(:disabled){background:var(--ds-brass-wash)}
@media(max-width:720px){.canvas-tools .card-controls{width:100%;margin-left:0}.canvas-tools .card-controls .button{flex:1}}
.phone-field{border:0;padding:0;margin:0;min-width:0}
.phone-field legend{padding:0;margin-bottom:.6rem;font:500 1em/1.4 var(--font-ui)}
.phone-components{margin-bottom:.75rem;display:grid;grid-template-columns:minmax(5rem,1fr) minmax(0,3fr);gap:.75rem}
.phone-components label{min-width:0}
.phone-components input{width:100%;min-width:0}

.export-downloads{display:grid;gap:12px;min-width:0}

/* Separate mobile workspace: viewport gestures and editing never compete with page tools. */
.mobile-editor-entry{display:none}
#mobileCropDialog{position:fixed;inset:0;margin:0;padding:0;border:0;border-radius:0;width:100vw;max-width:none;height:100vh;height:100dvh;max-height:none;color:var(--ink);background:var(--surface-page);overscroll-behavior:contain}
#mobileCropDialog:not([open]){display:none}
.mobile-crop-shell{position:relative;height:100%;display:grid;grid-template-rows:auto auto minmax(120px,1fr) auto auto;padding-top:env(safe-area-inset-top);padding-inline:env(safe-area-inset-left) env(safe-area-inset-right);min-width:0}
#mobileCropDialog .button,#mobileCropDialog summary{font:500 16px/1.2 var(--font-ui);min-height:48px;min-width:48px;white-space:normal;justify-content:center;padding:8px}
#mobileCropDialog .button.secondary{background:var(--surface-page);border:var(--ds-rule);color:var(--ink)}
#mobileCropDialog .button[aria-pressed=true]{border:2px solid var(--ds-action-edge);background:var(--ds-brass-wash)}
#mobileCropDialog .button:disabled{opacity:.45}
.mobile-crop-header{display:flex;align-items:center;gap:16px;padding:8px 16px;border-bottom:var(--ds-rule);margin:0;background:var(--surface-page)}
.mobile-crop-header>div{min-width:0;flex:1}.mobile-crop-header h2{font:500 22px/1.1 var(--font-ui);margin:0}.mobile-crop-header p{font:500 14px/1.2 var(--font-ui);overflow-wrap:anywhere;max-height:34px;overflow:auto;color:var(--muted);margin-top:4px}
.mobile-card-nav{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;align-items:center;gap:8px;padding:8px 16px}
.mobile-card-nav strong{text-align:center;font:500 16px/1.2 var(--font-ui)}
.mobile-crop-stage{position:relative;min-width:0;min-height:120px;overflow:hidden;background:var(--surface-page);touch-action:none;isolation:isolate}
#mobileCropCanvas{position:absolute;inset:0;display:block;max-width:none;max-height:none;touch-action:none;user-select:none;-webkit-user-select:none}
.mobile-crop-dock{padding:8px 16px max(8px,env(safe-area-inset-bottom));display:grid;gap:8px;border-top:var(--ds-rule);background:var(--surface-page);max-height:min(38dvh,320px);overflow-y:auto;overscroll-behavior:contain}
.mobile-crop-dock>p{font:500 16px/1.25 var(--font-ui);margin:0}
.mobile-mode-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mobile-camera-row{display:grid;grid-template-columns:48px 48px 48px minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:center}
#mobileCropZoom{font:500 16px/1.1 var(--font-ui);text-align:center;font-variant-numeric:tabular-nums}
.mobile-card-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.mobile-card-actions>div>.button{width:100%}
.mobile-corner-controls details{border:var(--ds-rule);padding:0 8px}.mobile-corner-controls summary{display:flex;align-items:center;cursor:pointer}.mobile-corner-controls p{font:500 16px/1.3 var(--font-ui);padding-block:8px}
.mobile-corner-picker,.mobile-nudge-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.mobile-nudge-row{padding-bottom:8px}
#mobileCropDialog #mobileCropDone{width:100%}.mobile-crop-footer>small{font:500 14px/1.3 var(--font-ui);text-align:center;color:var(--muted)}
.mobile-crop-footer{display:grid;gap:8px;padding:8px 16px max(8px,env(safe-area-inset-bottom));border-top:var(--ds-rule);background:var(--surface-page)}
.mobile-crop-message:empty{display:none}
.mobile-crop-confirm{position:absolute;z-index:5;inset:0;display:flex;flex-direction:column;justify-content:center;gap:16px;padding:24px;background:var(--surface-page)}
.mobile-crop-confirm h3{font:500 24px/1.2 var(--font-ui)}.mobile-crop-confirm p{font:500 18px/1.4 var(--font-ui)}
@media(max-width:900px),(pointer:coarse){
 .mobile-editor-entry{display:grid;gap:8px;margin-block:16px}.mobile-editor-entry p{font:500 16px/1.4 var(--font-ui);color:var(--muted)}
 #cropEditor>.canvas-tools,#cropEditor>.canvas-status,#cropEditor>.geometry-legend,#cropEditor>.precise-crop{display:none!important}
 #cropEditor>#canvasViewport{height:36vh;min-height:160px;pointer-events:none}
 #cropEditor>.auto-controls{display:grid;grid-template-columns:1fr}#cropEditor>.auto-controls #applyCorners{display:none}
 #uploadPane .upload-flow{position:static;top:auto;bottom:auto}#uploadPane .flow-copy{display:flex}#uploadPane .flow-result,#uploadPane .flow-elapsed{display:block}
}
@media(orientation:landscape) and (max-height:600px){
 .mobile-crop-shell{grid-template-columns:minmax(0,1fr) 288px;grid-template-rows:auto minmax(120px,1fr) auto}
 .mobile-crop-header{grid-column:1;grid-row:1}.mobile-card-nav{grid-column:2;grid-row:1;padding:8px}.mobile-crop-stage{grid-column:1;grid-row:2/4}
 .mobile-crop-dock{grid-column:2;grid-row:2;max-height:none;border-top:0;border-left:var(--ds-rule);padding-inline:8px}
 .mobile-crop-footer{grid-column:2;grid-row:3;padding-inline:8px}
 .mobile-camera-row{grid-template-columns:48px 48px 48px 1fr}.mobile-camera-row #mobileFocusCard{grid-column:1/-1}
}
/* Review view: narrow-screen contact cards and grouped editor (review-view.mjs). */
#reviewPane .contact-cards-wrap{display:none}
#reviewPane .contact-cards{list-style:none;margin:0;padding:0;display:grid;gap:12px}
#reviewPane .contact-card{display:grid;grid-template-columns:48px minmax(0,1fr);gap:4px 8px;padding:16px;border:var(--ds-rule);background:var(--surface-page)}
#reviewPane .contact-card.approved{border-left:4px solid var(--ds-success,#3d6b3d)}
#reviewPane .contact-card__select{display:flex;align-items:center;justify-content:center;width:48px;height:48px;min-width:48px;min-height:48px;margin:0;align-self:start;cursor:pointer}
#reviewPane .contact-card__select input[type=checkbox]{width:24px;height:24px;margin:0;cursor:pointer}
#reviewPane .contact-card__body{min-width:0;display:grid;gap:4px}
#reviewPane .contact-card__body p{margin:0;font:500 17px/1.45 var(--font-ui);overflow-wrap:anywhere}
#reviewPane .contact-card__body small{display:block;font:500 15px/1.4 var(--font-ui)}
#reviewPane .contact-card .person-button{justify-self:start;text-align:left;max-width:100%}
#reviewPane .contact-card__status{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
#reviewPane .contact-card__status .status-chip.duplicate{display:inline-block;margin-top:0}
#reviewPane .contact-card__actions{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin-top:8px}
#reviewPane .contact-card__actions .button{min-height:48px;min-width:96px}
#reviewPane .contact-cards__all{display:flex;align-items:center;gap:12px;min-height:48px;margin:0 0 12px}
#reviewPane .contact-cards__all input{width:24px;height:24px}
@media(max-width:899px){
 #reviewPane .table-scroll{overflow-x:visible}
 #reviewPane .table-scroll>table{display:none}
 #reviewPane .contact-cards-wrap{display:block}
}
.editor-fields{display:grid;grid-template-columns:1fr;gap:24px}
.editor-group{border:0;border-top:var(--ds-rule);margin:0;padding:16px 0 0;min-width:0}
.editor-group__title{padding:0 8px 0 0;font:500 18px/1.4 var(--font-ui);letter-spacing:.02em}
.editor-group__fields{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;margin-top:8px}
.editor-group__fields>label.full,.editor-group--phone .phone-field{grid-column:1/-1}
@media(max-width:720px){.editor-group__fields{grid-template-columns:1fr}}
