:root{
  /* Palette matched to Plavidian Connect Camera Verification (App.xaml) */
  --navy:#0F3A63;            /* PlavidianBlue - primary deep blue */
  --navy-2:#174E7F;          /* PlavidianBlue2 */
  --navy-ink:#0E2A47;        /* darkest navy */
  --accent:#1E88E5;          /* PlavidianAccent - bright blue */
  --accent-strong:#1E3A8A;   /* deep indigo */
  --cyan:#00C2D9;            /* highlight accent */
  --ink:#101828;             /* near-black text */
  --text:#1f2937;
  --muted:#334155;           /* MutedText */
  --border:#D7DEE8;          /* BorderSoft */
  --border-soft:#E4E7EC;
  --bg:#eef2f7;              /* app background */
  --surface:#ffffff;         /* cards */
  --surface-2:#f5f9fd;       /* subtle panels */
  --good-bg:#E6F7EC; --good-ink:#12612B; --good-bd:#BAE4C4;
  --bad-bg:#FDE7E7;  --bad-ink:#991b1b;  --bad-bd:#f3c2c2;
  --warn-bg:#FEF3C7; --warn-ink:#92400e; --warn-bd:#fcd9a0;
  /* Typography */
  --font:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  /* Spacing / shape */
  --radius:10px; --radius-sm:6px; --radius-pill:999px;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 4px 16px rgba(16,24,40,.06);
}
body{font-family:var(--font);margin:0;background:var(--bg);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}header{background:var(--surface);color:var(--navy);padding:12px 24px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);gap:18px;position:sticky;top:0;z-index:50}header a{color:var(--navy);margin-left:14px;text-decoration:none;font-weight:700}main{padding:26px;max-width:1200px;margin:auto}.card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:22px;margin:0 0 20px;box-shadow:var(--shadow)}.narrow{max-width:420px;margin:60px auto}label{display:block;margin:12px 0;font-weight:bold}input,select,textarea{width:100%;padding:10px;border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:5px;box-sizing:border-box;font-family:inherit;font-size:14px;color:var(--ink);background:var(--surface)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(30,136,229,.15)}button,.button{background:var(--accent);color:#fff;border:0;border-radius:var(--radius-sm);padding:10px 15px;text-decoration:none;display:inline-block;cursor:pointer;font-weight:600;font-size:14px;transition:background .15s ease}button:hover,.button:hover{background:var(--navy)}button.secondary,.button.secondary{background:var(--surface);color:var(--navy);border:1px solid var(--border)}button.secondary:hover,.button.secondary:hover{background:var(--surface-2)}.small{padding:5px 8px;font-size:12px}table{width:100%;border-collapse:collapse}td,th{padding:10px;border-bottom:1px solid #e5e7eb;text-align:left}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.split{display:grid;grid-template-columns:1fr 1fr;gap:20px}.columns{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.flash{background:#fff7ed;border:1px solid #fdba74;padding:10px;border-radius:6px;margin-bottom:12px}.note{color:#6b7280;font-size:14px}.preview{width:100%;max-width:650px;max-height:520px;object-fit:contain;border:1px solid #d1d5db;background:white}.placeholder,.pdfbox{border:2px dashed #cbd5e1;padding:40px;text-align:center;background:#f8fafc}pre{white-space:pre-wrap;background:#f8fafc;padding:12px;border-radius:6px}@media(max-width:800px){.split,.grid,.columns{grid-template-columns:1fr}}
.section-heading{background:var(--navy);color:#fff;padding:10px 14px;border-radius:6px;margin:22px 0 14px;font-size:18px;letter-spacing:.2px}.subcard{border:1px solid var(--border);background:#f8fafc;border-radius:8px;padding:14px;margin:12px 0 18px}.subcard h3{margin-top:0;color:var(--navy)}

.job-type-large{font-size:1.45rem;font-weight:800;color:#0b2e59;border-left:6px solid #0b2e59;padding:8px 12px;margin:6px 0 12px;background:#eef4fb}
.postage-box{background:#f7f9fc;border:1px solid var(--border);border-radius:8px;padding:12px;white-space:pre-wrap;font-family:ui-monospace,Consolas,monospace}
.postage-range{font-size:1.35rem;font-weight:800;color:#0b2e59;margin:10px 0;padding:10px;background:#e8f1fb;border:1px solid #b7cbe3;border-radius:6px}
button.danger{background:#9b1c1c;color:#fff;border:0;border-radius:6px;padding:8px 12px;cursor:pointer}
.status-pill{display:inline-block;min-width:112px;text-align:center;padding:6px 10px;border-radius:999px;color:#fff;font-weight:700;font-size:13px}.status-complete{background:#15803d}.status-production{background:var(--accent)}.status-pending{background:#ca8a04;color:#111827}.status-error{background:#b91c1c}.status-cancelled{background:#6b7280}.action-row{display:flex;gap:10px;align-items:center;margin:0 0 16px}.action-row form{margin:0}button.warning{background:#ca8a04;color:#111827;border:0;border-radius:6px;padding:8px 12px;cursor:pointer}

.wizard-progress{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 18px}
.step-pill{padding:6px 10px;border-radius:999px;background:#e5e7eb;color:#111827;font-size:13px;font-weight:600}
.step-pill.active{background:#1F4E79;color:white}
.wizard-nav{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}
.wizard-nav button{min-width:120px}
.radio-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:6px 0 12px}
.radio-grid label{display:flex;gap:6px;align-items:center;border:1px solid #ddd;border-radius:6px;padding:8px;background:#fafafa}

.warning-box{background:#fff2cc;border:1px solid #d6b656;padding:10px;border-radius:8px}.note{color:#555;font-size:.9em}.subcard{border:1px solid #ddd;padding:12px;margin:10px 0;border-radius:8px}.button.small{font-size:.85em;padding:3px 6px}.status-pill{padding:3px 7px;border-radius:5px;background:#eee}

.resource-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:18px 0 24px}
.resource-card{display:block;background:white;border:1px solid var(--border);border-radius:10px;padding:18px;text-decoration:none;color:#1f2937;box-shadow:0 2px 8px #0000000d}
.resource-card:hover{border-color:var(--accent);box-shadow:0 4px 14px #00000018}.resource-card h2{margin:0 0 8px;color:var(--navy);font-size:20px}.resource-card p{margin:0;color:#4b5563}
ul,ol{line-height:1.55} .card h2{color:var(--navy)} .card h3{color:#17365D;margin-bottom:6px}

.system-name{font-weight:700}.payment-badge{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef2ff;color:#1e3a8a;font-weight:700}.wizard-page{display:none}
.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.payment-badge{display:inline-block;padding:5px 9px;border-radius:999px;background:#e8f1fb;color:var(--navy);font-weight:700;font-size:12px}
.financial-hold{background:#fff2cc;border:1px solid #e0b341;border-radius:8px;padding:10px;margin:8px 0}
.job-type-cards label{font-size:16px;font-weight:700}
@media(max-width:800px){.grid.two{grid-template-columns:1fr}.wizard-progress{display:block}.step-pill{margin:3px;display:inline-block}}
.admin-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 18px;background:#eef4fb;border:1px solid var(--border);border-radius:10px;padding:10px}
.tab-button{background:#e5e7eb;color:#111827;border:1px solid #cbd5e1;border-radius:999px;padding:8px 12px;font-weight:700;cursor:pointer}
.tab-button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.tab-panel{display:none}.tab-panel.active{display:block}


.user-pill{display:inline-block;margin-right:10px;padding:6px 10px;border-radius:999px;background:#eef4fb;color:var(--navy);font-weight:700;border:1px solid #c9d8ea;vertical-align:middle;}

.brand{display:flex;align-items:center;gap:12px;min-width:360px}
.brand-logo{height:42px;width:auto;max-width:150px;object-fit:contain;background:#ffffff;border:1px solid #e5e7eb;border-radius:8px;padding:4px;box-shadow:0 1px 3px #00000012}
.brand-copy{display:flex;flex-direction:column;gap:2px;line-height:1.2}
.brand-title{font-size:18px;color:var(--navy);font-weight:900}
.brand-tagline{color:var(--navy);font-size:12px;font-weight:700}
.brand-contact{color:#475569;font-size:12px;line-height:1.25}
header nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}
header nav a{margin-left:6px}
.login-card{text-align:left}.login-actions{text-align:center;margin-top:18px}.login-actions .button{display:inline-block;min-width:220px}
@media(max-width:900px){header{align-items:flex-start;flex-direction:column}.brand{min-width:0}.brand-logo{height:36px;max-width:130px}header nav{justify-content:flex-start}.brand-tagline,.brand-contact{display:block}}


/* v29.3 postage-only summary and job-type card refinements */
.job-type-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:12px}
.job-type-cards label{min-height:118px;align-items:flex-start;padding:16px;border:2px solid var(--border);background:#f8fbff;border-radius:12px;cursor:pointer}
.job-type-cards label:hover{border-color:var(--accent);box-shadow:0 4px 14px #00000012}
.job-type-cards input{width:auto;margin-top:4px;flex:0 0 auto}
.job-card-copy{display:flex;flex-direction:column;gap:6px;line-height:1.25}
.job-card-copy strong{font-size:20px;color:var(--navy)}
.job-card-copy small{font-weight:500;color:#475569;font-size:13px}
.processing-bar{height:24px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin:10px 0;position:relative}
.processing-fill{height:24px;background:var(--accent);transition:width .4s}.processing-fill.complete{background:#15803d}.processing-fill.error{background:#b91c1c}
.processing-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-weight:800;color:white;text-shadow:0 1px 2px rgba(0,0,0,.45)}
.postage-hero{margin-top:18px;padding:16px;border:1px solid #b7cbe3;background:#e8f1fb;border-radius:10px}
.postage-hero-label{font-size:1.35rem;font-weight:800;color:var(--navy);margin-bottom:6px}
.postage-hero-value{font-size:2.05rem;font-weight:900;color:var(--navy);line-height:1.1}
.postage-planning-range{margin-top:8px;font-size:1rem;color:var(--navy)}
.drop-fee-hero{margin-top:14px;padding:14px;border:1px solid #b7cbe3;background:#eef6ff;border-radius:10px;display:inline-block;min-width:320px}
.drop-fee-label{font-size:1.2rem;font-weight:800;color:var(--navy);margin-bottom:5px}.drop-fee-value{font-size:1.75rem;font-weight:900;color:var(--navy)}
@media(max-width:800px){.job-type-cards{grid-template-columns:1fr}.job-type-cards label{min-height:0}.postage-hero-value{font-size:1.65rem}}

/* v29.4 dashboard postage estimate card */
.dashboard-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:14px 0 20px}
.dashboard-card{display:block;background:#ffffff;border:1px solid var(--border);border-radius:12px;padding:18px;text-decoration:none;color:#1f2937;box-shadow:0 2px 10px #0000000d;min-height:96px}
.dashboard-card:hover{border-color:var(--accent);box-shadow:0 4px 16px #00000018}
.dashboard-card b{display:block;font-size:20px;color:var(--navy);margin-bottom:8px}
.dashboard-card span{display:block;color:#475569;line-height:1.35}
@media(max-width:900px){.dashboard-actions{grid-template-columns:1fr}}


/* v30.0 consolidated UI refinements */
.job-type-cards label{min-height:150px;display:flex;gap:12px}
.job-type-cards .job-card-copy{display:flex;flex-direction:column;gap:8px;line-height:1.35}
.job-type-cards .job-card-copy strong{font-size:1.15rem;color:var(--navy)}
.job-type-cards .job-card-copy small{font-size:.96rem;color:#334155;font-weight:500}
.resource-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0}
.resource-card{display:block;text-decoration:none;color:inherit;border:1px solid var(--border);border-radius:12px;background:#f8fbff;padding:16px;min-height:120px}
.resource-card:hover{border-color:var(--accent);box-shadow:0 4px 14px #00000012}
.resource-card h2{font-size:1.05rem;margin-top:0}
.warning-box{background:#fff7ed;border:1px solid #fdba74;border-radius:8px;padding:10px;margin:10px 0}
@media(max-width:900px){.resource-grid{grid-template-columns:1fr}.job-type-cards label{min-height:0}}

/* v30.8 expanded customer resource center */
.resource-cta-row{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 18px;align-items:center}.button.secondary{background:#64748b}.resource-highlight-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:12px 0}.resource-highlight-grid>div{border:1px solid var(--border);border-radius:10px;background:#f8fbff;padding:14px}.resource-highlight-grid h3{margin-top:0;color:var(--navy)}.mail-template{position:relative;border:2px solid var(--navy);background:#fff;border-radius:8px;margin:12px 0 14px;min-height:190px;box-shadow:inset 0 0 0 1px var(--border)}.letter-template{aspect-ratio:2.1/1;min-height:185px}.postcard-template{aspect-ratio:1.85/1;min-height:180px}.flat-template{aspect-ratio:1.3/1;min-height:245px}.selfmailer-template,.booklet-template{aspect-ratio:1.6/1;min-height:210px}.return-address{position:absolute;top:14px;left:16px;font-size:12px;color:#475569;border:1px dashed #94a3b8;padding:6px;background:#f8fafc}.address-block{position:absolute;left:42%;top:38%;transform:translate(-10%,-20%);border:2px solid var(--accent);background:#eff6ff;padding:14px;min-width:190px;text-align:center;font-weight:700;color:var(--navy)}.barcode-zone{position:absolute;right:16px;bottom:14px;border:1px dashed #dc2626;color:#991b1b;background:#fff7f7;padding:8px;font-size:12px}.flat-top-label{position:absolute;left:0;right:0;top:0;height:50%;border-bottom:1px dashed #94a3b8;background:linear-gradient(#eff6ff,#ffffff);display:flex;justify-content:center;align-items:flex-start;padding-top:10px;color:var(--navy);font-weight:700}.flat-address{position:absolute;left:38%;top:29%;border:2px solid var(--accent);background:#eff6ff;padding:14px;min-width:210px;text-align:center;font-weight:700;color:var(--navy)}.flat-barcode{position:absolute;right:18px;bottom:22px;border:1px dashed #dc2626;color:#991b1b;background:#fff7f7;padding:8px;font-size:12px}.fold-line{position:absolute;left:50%;top:0;bottom:0;border-left:2px dashed #64748b;color:#334155;padding-left:8px;font-weight:700}.spine-label{position:absolute;left:8px;top:8px;bottom:8px;writing-mode:vertical-rl;text-orientation:mixed;border-right:2px dashed #64748b;color:#334155;padding:8px;font-weight:700}.tab-dot{position:absolute;width:44px;height:44px;border-radius:50%;background:#fff7ed;border:2px solid #f97316;color:#9a3412;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800}.tab-left{left:16px;top:50%;transform:translateY(-50%)}.tab-right{right:16px;top:50%;transform:translateY(-50%)}.tab-bottom{left:50%;bottom:10px;transform:translateX(-50%)}.checklist-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin:12px 0}.checklist-grid div{border:1px solid var(--border);background:#f8fbff;border-radius:8px;padding:10px;font-weight:700;color:var(--navy)}.template-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}.template-panel{display:none}.template-panel.active{display:block}.flow-line,.timeline-flow{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.flow-line span,.timeline-flow span{background:#eef4fb;border:1px solid #b7cbe3;border-radius:999px;padding:8px 12px;font-weight:700;color:var(--navy)}.mini-map{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#f8fbff;border:1px solid var(--border);border-radius:10px;padding:12px;margin:8px 0}.mini-map span{background:white;border:1px solid var(--border);border-radius:8px;padding:10px;font-weight:700}.mini-map b{font-size:22px;color:var(--accent)}@media(max-width:800px){.address-block,.flat-address{left:22%;transform:none;min-width:150px}.resource-cta-row .button{width:100%;text-align:center}.mail-template{min-height:220px}}
/* v30.9 DMM-aligned resource center corrections */
.imb-line{display:block;margin-top:6px;padding-top:6px;border-top:3px solid #111;font-size:11px;letter-spacing:.05em;color:#111;font-weight:800}.resource-section .mail-template .barcode-zone,.resource-section .mail-template .flat-barcode{display:none}.resource-section .address-block,.resource-section .flat-address{line-height:1.35}.resource-section .flat-address{top:24%;left:38%}.resource-section .flat-top-label{height:50%}.resource-section .checklist-grid div{background:#f0f9ff}
.ticket-clean .ticket-header{align-items:flex-start}.ticket-clean table{font-size:13px}.ticket-clean th,.ticket-clean td{vertical-align:top}.ticket-clean .subcard{break-inside:avoid}

/* v31.16 status badge overrides */
.status-pill.status-complete{background:#15803d!important;color:#fff!important;}
.status-pill.status-production{background:var(--accent)!important;color:#fff!important;}
.status-pill.status-pending{background:#ca8a04!important;color:#111827!important;}
.status-pill.status-error{background:#b91c1c!important;color:#fff!important;}
.status-pill.status-cancelled{background:#6b7280!important;color:#fff!important;}

/* v31.22 public landing/login page */
.public-hero{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(340px,.6fr);gap:28px;align-items:stretch;margin:12px 0 26px}
.public-hero-copy{background:linear-gradient(135deg,var(--navy) 0%,var(--navy) 55%,var(--accent) 100%);color:#fff;border-radius:18px;padding:42px;box-shadow:0 10px 30px #0000001f;position:relative;overflow:hidden}
.public-hero-copy:after{content:"";position:absolute;right:-60px;bottom:-70px;width:260px;height:260px;background:rgba(255,255,255,.08);border-radius:50%}
.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:900;color:#bfdbfe;margin-bottom:12px}
.public-hero h1{font-size:44px;line-height:1.05;margin:0 0 16px;color:#fff;max-width:780px}
.hero-lede{font-size:18px;line-height:1.55;max-width:780px;color:#e8f1fb;margin:0 0 24px}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0 22px;position:relative;z-index:1}.hero-button{font-weight:900}.button.light{background:#ffffff;color:var(--navy);border:1px solid #dbeafe}
.trust-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;position:relative;z-index:1}.trust-row span{display:inline-block;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);border-radius:999px;padding:8px 11px;font-weight:800;font-size:13px;color:#fff}
.login-panel{margin:0;align-self:stretch;display:flex;flex-direction:column;justify-content:center}.login-panel h2{font-size:28px;margin-top:0}.login-submit{width:100%;margin-top:16px;font-weight:900}.login-panel .login-actions{margin-top:14px;text-align:center}.login-panel .login-actions a{font-weight:800;color:var(--navy);text-decoration:none}.login-panel .login-actions a:hover{text-decoration:underline}
.public-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0 0 24px}.public-feature-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:22px;box-shadow:0 2px 10px #0000000d}.public-feature-card h2{margin:0 0 8px;color:var(--navy)}.public-feature-card p{color:#475569;line-height:1.5;margin:0}
.public-section-card{border:1px solid var(--border)}.public-split{align-items:start}.public-checklist{padding-left:20px}.public-checklist li{margin:8px 0}.public-contact-box{background:#f8fbff;border:1px solid var(--border);border-radius:12px;padding:20px}.public-contact-box h3{margin-top:0;color:var(--navy)}.public-contact-box p{line-height:1.45}
@media(max-width:950px){.public-hero{grid-template-columns:1fr}.public-hero h1{font-size:34px}.public-grid{grid-template-columns:1fr}.public-hero-copy{padding:30px}.public-split{grid-template-columns:1fr}}


/* v31.27 legal and template pages */
.site-footer{max-width:1200px;margin:10px auto 30px;padding:16px 26px;color:#475569;font-size:13px}.site-footer a{color:var(--navy);text-decoration:none;font-weight:700;margin-right:16px}.legal-page h1{color:var(--navy)}.legal-page h2{margin-top:22px}.product-preview-grid{display:grid;grid-template-columns:180px 1fr;gap:16px;align-items:center;margin:4px 0 14px}.product-preview-image{width:180px;height:125px;object-fit:contain;border:1px solid var(--border);background:#f8fafc;border-radius:10px}.product-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}.product-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:16px;box-shadow:0 2px 10px #0000000d}.product-card img{width:100%;height:180px;object-fit:contain;background:#f8fafc;border-radius:10px}.product-card h2{margin:12px 0 6px;color:var(--navy)}.template-gallery{display:grid;gap:18px}.template-card{display:grid;grid-template-columns:260px 1fr;gap:18px;align-items:center;background:#fff;border:1px solid var(--border);border-radius:14px;padding:16px;box-shadow:0 2px 10px #0000000d}.template-card img{width:260px;max-height:210px;object-fit:contain;background:#f8fafc;border-radius:10px;border:1px solid #e5e7eb}.imb-sample{width:360px;max-width:100%;height:72px;object-fit:contain;border:1px solid var(--border);background:#fff;padding:10px;border-radius:8px}@media(max-width:800px){.product-preview-grid,.template-card{grid-template-columns:1fr}.product-preview-image,.template-card img{width:100%;height:auto;max-height:220px}}


.preflight-modal{position:fixed;inset:0;background:rgba(15,23,42,.72);z-index:10000;align-items:center;justify-content:center;padding:14px;}
.preflight-box{background:#fff;max-width:1620px;width:98.5%;max-height:96vh;overflow:auto;border-radius:14px;padding:22px;box-shadow:0 18px 60px rgba(0,0,0,.35);}

.preflight-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:10px;}
.preflight-header h2{margin:0 0 4px;}
.preflight-header .note{margin:0;}
.preflight-header-actions{display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap;white-space:nowrap;}
.preflight-header-actions button{margin-top:0;}
@media (max-width: 900px){.preflight-header{display:block;}.preflight-header-actions{justify-content:flex-start;margin-top:10px;white-space:normal;}}
.preflight-preview-wrap{position:relative;background:#f8fafc;border:1px solid #cbd5e1;margin:12px auto;padding:10px;max-width:1560px;text-align:center;overflow:auto;}
.preflight-preview-stage{position:relative;display:inline-block;line-height:0;background:white;}
.preflight-preview-stage img{max-width:100%;max-height:78vh;display:block;margin:0 auto;}
.preflight-preview-stage .bleed-line,.preflight-preview-stage .cut-line,.preflight-preview-stage .safe-line{position:absolute;pointer-events:none;box-sizing:border-box;left:0;top:0;width:100%;height:100%;border:2px solid rgba(220,38,38,.9);}
.preflight-preview-stage .cut-line{border:2px dashed rgba(15,23,42,.95);}
.preflight-preview-stage .safe-line{border:2px dashed rgba(22,163,74,.95);}
/* v31.792: round products (buttons, round stickers/magnets). The overlay boxes are
   concentric, so a 50% radius renders them as the true bleed/cut/safe circles. */
.preflight-preview-stage .guide-round{border-radius:50%;}
.job-info-preview-img{max-width:100%;max-height:360px;border:1px solid #cbd5e1;background:white;}
.job-ticket-preview-img{max-width:100%;max-height:420px;border:1px solid #cbd5e1;background:white;}
.postal-term-grid .resource-card h2{margin-bottom:0}.postal-term-grid .resource-card h3{margin-top:4px;font-size:1rem;color:#334155;}
.warning-box ul{margin-bottom:0;}

.mini-table{width:100%;border-collapse:collapse;margin-top:10px}.mini-table th,.mini-table td{border:1px solid #ddd;padding:6px;font-size:.9rem}.highlight-box{border-left:4px solid #173a63;background:#f3f7fb;padding:10px;margin:8px 0}.product-preview-image{max-width:500px;width:100%;height:auto;object-fit:contain}.product-preview-grid{display:grid;grid-template-columns:minmax(180px,360px) 1fr;gap:16px;align-items:start}.site-footer{margin-top:30px;padding:18px;text-align:center;border-top:1px solid #ddd}.site-footer a{margin:0 10px}

/* v31.32 admin machine/profile form readability */
.admin-settings-card{overflow:hidden}.admin-lede{font-size:15px;line-height:1.45;max-width:980px}.section-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:18px 0 10px}.section-title-row h2{margin:0}.section-help{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#334155;background:#f1f5f9;border:1px solid var(--border);border-radius:999px;padding:6px 10px;white-space:nowrap}.admin-table-scroll{width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:#fff;margin:8px 0 18px}.compact-table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}.compact-table th{background:var(--navy);color:#fff;font-size:12px;line-height:1.15;font-weight:800;vertical-align:middle;white-space:normal;text-align:center;padding:8px 6px;border-bottom:1px solid #082447}.compact-table td{padding:6px;border-bottom:1px solid #e5e7eb;vertical-align:middle}.compact-table tr:last-child td{border-bottom:0}.compact-table input,.compact-table select,.compact-table textarea{margin-top:0;padding:6px 7px;font-size:13px;line-height:1.25;border-radius:5px}.compact-table input[type='checkbox']{width:auto;min-width:auto;transform:scale(1.05)}.compact-table textarea{resize:vertical;min-height:38px}.center-cell{text-align:center}.readonly-id{background:#f8fafc;color:var(--navy);font-weight:800;font-family:ui-monospace,Consolas,monospace}.numeric-input,.tiny-input{text-align:right}.machine-speed-table{min-width:1320px}.machine-speed-table .col-active{width:56px}.machine-speed-table .col-machine-id{width:150px}.machine-speed-table .col-machine-name{width:230px}.machine-speed-table .col-machine-type{width:170px}.machine-speed-table .col-primary-use{width:300px}.machine-speed-table .col-small-num{width:82px}.machine-speed-table .col-med-num{width:112px}.machine-speed-table td:nth-child(3) input,.machine-speed-table td:nth-child(4) input{min-width:0}.table-textarea{font-family:Arial,Helvetica,sans-serif}.staffing-table{min-width:1040px}.staffing-table .col-sticky-machine{width:240px}.staffing-table .col-tiny-num{width:58px}.sticky-col{position:sticky;left:0;z-index:2;background:#fff}.staffing-table th.sticky-col{background:var(--navy);color:#fff;z-index:3}.machine-label{color:var(--navy)}.machine-label span{color:#475569;font-size:12px;line-height:1.2}.tiny-input{width:54px!important;padding:5px!important}.consumables-table{min-width:620px}.consumables-table th:first-child{width:58px}.consumables-table th:nth-child(2){width:160px}.consumables-table th:nth-child(4){width:120px}.consumables-table th:nth-child(5){width:120px}.new-row td{background:#f8fafc}.form-actions{display:flex;justify-content:flex-end;margin-top:10px}.admin-settings-grid{align-items:start}@media(max-width:900px){.section-title-row{align-items:flex-start;flex-direction:column}.machine-speed-table{min-width:1250px}.staffing-table{min-width:980px}.admin-settings-grid{grid-template-columns:1fr}.compact-table{font-size:12px}.compact-table input,.compact-table textarea{font-size:12px}}


/* v31.35: restore artwork/proof thumbnails and improve job-ticket readability */
.file-card{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--border);border-radius:10px;background:#f8fafc;padding:10px;margin:8px 0;break-inside:avoid;}
.file-card-info{min-width:0;line-height:1.35;}
.job-file-thumb{display:block;width:150px;max-height:120px;object-fit:contain;background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:4px;}
.job-file-thumb.small{width:86px;max-height:72px;}
.thumb-cell{width:96px;text-align:center;vertical-align:middle;}
.job-files-table td{vertical-align:middle;}
.job-preview-card{overflow:hidden;}
.job-info-preview-img{max-height:420px;object-fit:contain;}
.ticket-clean .subcard{break-inside:avoid;page-break-inside:avoid;}
.ticket-section{margin-top:14px;}
.job-ticket-plan-table th,.job-ticket-plan-table td{vertical-align:top;line-height:1.3;padding:7px 8px;}
.job-ticket-plan-table td:nth-child(5){min-width:260px;}
.job-ticket-preview-img{display:block;max-width:420px;max-height:300px;object-fit:contain;margin:6px 0;border:1px solid #cbd5e1;background:white;border-radius:8px;padding:4px;}
@media print{.job-file-thumb{max-width:120px}.job-ticket-preview-img{max-height:240px}.ticket-clean .subcard{page-break-inside:avoid}}

/* v31.36: keep job art visible beside Job Information */
.job-info-with-art{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.75fr);gap:18px;align-items:start;}
.job-info-text p{line-height:1.55;}
.job-info-art-panel{border:1px solid #d7dee8;border-radius:10px;background:#f8fafc;padding:12px;min-height:220px;}
.job-info-art-panel h3{margin-top:0;margin-bottom:10px;color:#12345c;}
.job-info-art-panel a{display:block;text-align:center;background:white;border:1px solid #e5e7eb;border-radius:8px;padding:8px;}
.job-info-art-panel .job-info-preview-img{display:block;margin:0 auto;max-width:100%;max-height:330px;width:auto;height:auto;object-fit:contain;background:white;}
.job-art-placeholder{border:1px dashed #aeb9c7;border-radius:8px;background:white;color:#334155;padding:32px 14px;text-align:center;line-height:1.45;}
.job-ticket-preview-img{max-width:100%;max-height:380px;object-fit:contain;background:white;border:1px solid #cbd5e1;}
@media (max-width:900px){.job-info-with-art{grid-template-columns:1fr}.job-info-art-panel .job-info-preview-img{max-height:420px}}


/* v31.40: wider machine settings page with no left/right table scrolling */
.machine-page-wide{width:min(1780px,calc(100vw - 36px));margin-left:50%;transform:translateX(-50%);}
.machine-page-wide .card{box-sizing:border-box;}
.machine-page-wide .admin-settings-card{overflow:visible;}
.machine-page-wide .admin-lede{max-width:1500px;}
.machine-page-wide .admin-table-fit{width:100%;overflow-x:visible;border:1px solid var(--border);border-radius:10px;background:#fff;margin:8px 0 18px;}
.machine-page-wide .compact-table{table-layout:fixed;width:100%;font-size:12px;}
.machine-page-wide .compact-table th{padding:7px 5px;font-size:11px;}
.machine-page-wide .compact-table td{padding:5px;}
.machine-page-wide .compact-table input,.machine-page-wide .compact-table select,.machine-page-wide .compact-table textarea{padding:5px 5px;font-size:12px;line-height:1.2;}
.machine-page-wide .machine-speed-table{min-width:0;}
.machine-page-wide .machine-speed-table .col-active{width:46px}.machine-page-wide .machine-speed-table .col-machine-id{width:130px}.machine-page-wide .machine-speed-table .col-machine-name{width:185px}.machine-page-wide .machine-speed-table .col-machine-type{width:145px}.machine-page-wide .machine-speed-table .col-primary-use{width:280px}.machine-page-wide .machine-speed-table .col-small-num{width:72px}.machine-page-wide .machine-speed-table .col-med-num{width:82px}
.machine-page-wide .table-textarea{min-height:48px;white-space:normal;}
.machine-page-wide .staffing-table{min-width:0;}
.machine-page-wide .staffing-table .col-sticky-machine{width:220px}.machine-page-wide .staffing-table .col-tiny-num{width:55px}
.machine-page-wide .sticky-col{position:static;}
.machine-page-wide .machine-label b{font-size:12px}.machine-page-wide .machine-label span{font-size:11px}
.machine-page-wide .tiny-input{width:48px!important;padding:4px!important;text-align:right;}
.machine-page-wide .consumables-table{min-width:0;}
.machine-page-wide .consumables-table th:first-child{width:48px}.machine-page-wide .consumables-table th:nth-child(2){width:190px}.machine-page-wide .consumables-table th:nth-child(4){width:115px}.machine-page-wide .consumables-table th:nth-child(5){width:140px}
.machine-page-wide .admin-settings-grid{grid-template-columns:minmax(360px,.75fr) minmax(760px,1.25fr);}
@media(max-width:1350px){.machine-page-wide{width:calc(100vw - 24px)}.machine-page-wide .compact-table{font-size:11px}.machine-page-wide .machine-speed-table .col-primary-use{width:220px}.machine-page-wide .machine-speed-table .col-machine-name{width:160px}.machine-page-wide .machine-speed-table .col-machine-id{width:115px}.machine-page-wide .machine-speed-table .col-med-num{width:74px}.machine-page-wide .staffing-table .col-sticky-machine{width:180px}.machine-page-wide .staffing-table .col-tiny-num{width:48px}.machine-page-wide .tiny-input{width:42px!important}}
@media(max-width:980px){.machine-page-wide{width:calc(100vw - 16px)}.machine-page-wide .admin-table-fit{overflow-x:auto}.machine-page-wide .machine-speed-table{min-width:1120px}.machine-page-wide .staffing-table{min-width:900px}.machine-page-wide .admin-settings-grid{grid-template-columns:1fr}}

/* v31.41 resource/legal/template expansion */
.legal-page, .resource-page, .template-page, .about-page{max-width:1180px;margin:0 auto;}
.legal-page h1,.resource-page h1,.template-page h1,.about-page h1{font-size:2rem;line-height:1.15;margin-bottom:.4rem;}
.legal-grid,.resource-grid,.about-grid,.template-grid,.id-graphic-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin:16px 0;}
.legal-card,.resource-card2,.about-card,.template-info-card,.visual-card{border:1px solid #d8e1ef;border-radius:12px;background:#fff;padding:16px;box-shadow:0 1px 3px rgba(0,0,0,.05);}
.legal-card h2,.resource-card2 h2,.about-card h2,.template-info-card h2{margin-top:0;color:var(--navy);font-size:1.15rem;}
.notice-box{border-left:5px solid var(--navy);background:#f3f7fc;padding:14px 16px;border-radius:8px;margin:14px 0;}
.warning-box{border-left:5px solid #b7791f;background:#fff8e8;padding:14px 16px;border-radius:8px;margin:14px 0;}
.compliance-table{width:100%;border-collapse:collapse;margin:12px 0;background:#fff;}
.compliance-table th{background:var(--navy);color:#fff;text-align:left;}
.compliance-table th,.compliance-table td{border:1px solid #d7e1ef;padding:9px;vertical-align:top;}
.resource-hero{display:grid;grid-template-columns:1.35fr .9fr;gap:20px;align-items:center;}
.resource-hero img,.visual-card img,.template-card img,.about-card img{max-width:100%;height:auto;border-radius:10px;border:1px solid #dce6f2;background:#fff;}
.resource-pill-row{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0 12px;line-height:1.6;}
.resource-pill{background:#eaf2fb;color:var(--navy);border:1px solid #cbdcf0;border-radius:999px;padding:9px 18px;font-weight:600;font-size:.92rem;line-height:1.3;letter-spacing:.01em;white-space:nowrap;}
.resource-pill-link{cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .05s ease;}
.resource-pill-link:hover{background:#dbeafe;border-color:#9cc2ec;box-shadow:0 2px 6px rgba(15,45,80,.12);}
.resource-pill-link:active{transform:translateY(1px);}
.resource-pill-link:focus-visible{outline:2px solid var(--navy);outline-offset:2px;}
.flow-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:12px 0;}
.flow-step{background:#f7fbff;border:1px solid #d7e6f5;border-radius:10px;padding:12px;position:relative;}
.flow-step b{display:block;color:var(--navy);margin-bottom:5px;}
.template-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:10px 0 16px;}
.template-controls label{min-width:190px;}
.interactive-template-stage{position:relative;max-width:820px;margin:14px auto;padding:18px;background:#f0f3f8;border:1px solid #ccd6e4;border-radius:14px;}
.mailpiece-canvas{position:relative;margin:0 auto;background:#fff;border:3px solid #1f2937;box-shadow:0 8px 22px rgba(20,30,45,.12);}
.mailpiece-canvas.postcard{width:620px;height:360px;max-width:100%;}
.mailpiece-canvas.flat{width:520px;height:670px;max-width:100%;}
.mailpiece-canvas.fsm{width:650px;height:370px;max-width:100%;}
.bleed-line,.trim-line,.safe-line,.fold-line,.address-zone,.barcode-zone,.postage-zone,.tab-marker,.spine-marker{position:absolute;box-sizing:border-box;pointer-events:none;}
.bleed-line{inset:6px;border:2px dashed #c53030;}
.trim-line{inset:22px;border:2px solid #111827;}
.safe-line{inset:48px;border:2px dashed #2f855a;}
.fold-line{border-left:3px dashed #805ad5;height:100%;top:0;left:50%;}
.address-zone{right:70px;bottom:76px;width:245px;height:92px;border:2px solid #2563eb;background:rgba(37,99,235,.05);padding:8px;font-size:13px;line-height:1.2;}
.barcode-zone{right:76px;bottom:40px;width:235px;height:30px;border:1px dashed #4a5568;background:#fff url('/static/sample_imb.svg') center/210px 24px no-repeat;}
.postage-zone{right:42px;top:42px;width:110px;height:80px;border:2px solid #dd6b20;background:rgba(221,107,32,.06);display:flex;align-items:center;justify-content:center;font-size:12px;text-align:center;}
.tab-marker{width:38px;height:18px;border-radius:50%;background:#edf2f7;border:2px solid #2d3748;}
.spine-marker{left:20px;top:0;width:18px;height:100%;background:rgba(45,55,72,.08);border-right:3px solid #2d3748;}
.tab-top-left{top:-10px;left:55px}.tab-top-right{top:-10px;right:55px}.tab-side-mid{right:-10px;top:45%;height:38px;width:18px}.tab-bottom-left{bottom:-10px;left:55px}.tab-bottom-right{bottom:-10px;right:55px}
.legend-row{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0;justify-content:center;}
.legend-row span{display:inline-flex;gap:6px;align-items:center;background:#fff;border:1px solid #d9e2ef;border-radius:999px;padding:6px 9px;font-size:.9rem;}
.legend-swatch{width:22px;height:10px;border-radius:2px;display:inline-block}.red{border:2px dashed #c53030}.black{border:2px solid #111827}.green{border:2px dashed #2f855a}.blue{border:2px solid #2563eb}.orange{border:2px solid #dd6b20}.purple{border-left:3px dashed #805ad5;height:16px;width:6px}
.id-stat{font-size:2rem;font-weight:800;color:var(--navy);display:block;}
.id-mock-email{background:#fff;border:1px solid #d7e1ef;border-radius:14px;box-shadow:0 4px 14px rgba(0,0,0,.08);padding:16px;}
.id-mail-preview{height:116px;background:linear-gradient(135deg,#eee,#d8d8d8);border-radius:8px;margin-bottom:10px;display:flex;align-items:center;justify-content:center;color:#555;}
.id-ridealong{height:92px;background:linear-gradient(135deg,var(--navy),#2770ac);border-radius:8px;color:#fff;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:700;padding:12px;}
.equipment-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;}
.equipment-list div{background:#f8fbff;border:1px solid #d9e6f4;border-radius:10px;padding:12px;}
@media (max-width:850px){.resource-hero{grid-template-columns:1fr}.mailpiece-canvas.postcard,.mailpiece-canvas.fsm{width:100%;height:330px}.mailpiece-canvas.flat{width:100%;height:560px}.address-zone{right:38px;width:220px}.barcode-zone{right:44px;width:210px}}

.resource-card-featured { border: 2px solid #15345b; background: #f3f7fc; }
.resource-hero .btn { display:inline-block; margin: 8px 0 12px 0; padding: 10px 14px; border-radius: 8px; background:#15345b; color:#fff; text-decoration:none; font-weight:700; }

/* v31.47 admin dashboard spacing, date columns, scan emphasis, calendar view */
.admin-quicklinks{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 18px;align-items:center}
.admin-quicklinks .button{margin:0;white-space:nowrap;box-shadow:0 1px 4px rgba(0,0,0,.08)}
.dashboard-actions{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));align-items:stretch}
.dashboard-card-scan{background:linear-gradient(135deg,var(--navy),var(--accent));color:#fff;border-color:var(--navy)}
.dashboard-card-scan b,.dashboard-card-scan span{color:#fff}.dashboard-card-scan:hover{box-shadow:0 6px 18px rgba(29,78,216,.30)}
.dashboard-table-card{overflow-x:auto}.dashboard-jobs-table{min-width:1220px}.dashboard-jobs-table th{font-size:12px;line-height:1.15;background:#f8fafc;color:var(--navy)}.dashboard-jobs-table td{font-size:13px;vertical-align:top}
.two-week-calendar{display:grid;grid-template-columns:repeat(7,minmax(118px,1fr));gap:10px;margin-top:14px}
.calendar-day{min-height:142px;border:1px solid var(--border);border-radius:12px;background:#f8fafc;padding:10px;box-sizing:border-box;display:flex;flex-direction:column;gap:4px}
.calendar-day.has-jobs{background:#eef6ff;border-color:#93c5fd;box-shadow:0 2px 8px rgba(29,78,216,.10)}
.calendar-day-head{display:flex;justify-content:space-between;align-items:center;color:var(--navy);border-bottom:1px solid var(--border);padding-bottom:5px;margin-bottom:2px}
.calendar-day-head span{font-size:12px;color:#475569;font-weight:700}.calendar-count{font-size:30px;font-weight:900;color:var(--navy);line-height:1}.calendar-caption{font-size:12px;color:#334155;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.calendar-mini{font-size:12px;color:#334155;background:white;border:1px solid var(--border);border-radius:999px;padding:3px 7px;display:inline-block;width:max-content}.calendar-job-link{display:block;font-size:12px;color:var(--accent);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-more{font-size:12px;color:#475569;font-weight:700}
@media(max-width:1050px){.two-week-calendar{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-jobs-table{min-width:1120px}}

/* v31.48 distinct dashboard action card colors */
.dashboard-card-create{background:linear-gradient(135deg,#f8fbff,#eaf3ff);border-color:#b8d2f0}
.dashboard-card-create:hover{background:linear-gradient(135deg,#f3f8ff,#dcebff)}
.dashboard-card-estimate{background:linear-gradient(135deg,#fffaf0,#fef3c7);border-color:#f6d675}
.dashboard-card-estimate b{color:#7c4a03}
.dashboard-card-estimate:hover{background:linear-gradient(135deg,#fff7e6,#fde68a);border-color:#d97706}
.dashboard-card-postage{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-color:#9bd8ae}
.dashboard-card-postage b{color:#14532d}
.dashboard-card-postage:hover{background:linear-gradient(135deg,#ecfdf5,#bbf7d0);border-color:#16a34a}
.dashboard-actions .dashboard-card{transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}
.dashboard-actions .dashboard-card:hover{transform:translateY(-1px)}
@media(min-width:1100px){.dashboard-actions{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* v31.49 cleaner Resource Center layout */
.resource-center-redesign{background:linear-gradient(135deg,#ffffff 0%,#f3f7fc 100%);border:1px solid #d8e6f5;}
.resource-hero-clean{grid-template-columns:1.45fr .72fr;}
.resource-center-redesign .eyebrow{margin:0 0 8px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:var(--accent);font-size:.78rem;}
.resource-center-redesign h1{font-size:2.45rem;margin:0 0 10px;color:var(--navy);}
.resource-intro{font-size:1.05rem;line-height:1.55;color:#334155;max-width:760px;margin:0 0 12px;}
.resource-feature-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 auto 20px;}
.resource-feature-card{display:block;text-decoration:none;color:#172033;border-radius:16px;padding:20px;min-height:155px;border:1px solid #d8e1ef;box-shadow:0 4px 14px rgba(15,23,42,.08);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;}
.resource-feature-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(15,23,42,.13);border-color:var(--accent);}
.resource-feature-card h2{font-size:1.16rem;line-height:1.2;margin:8px 0;color:var(--navy);}
.resource-feature-card p{margin:0;color:#334155;line-height:1.42;font-size:.95rem;}
.resource-card-kicker{display:inline-block;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900;border-radius:999px;padding:5px 8px;background:rgba(255,255,255,.7);color:var(--navy);}
.resource-feature-blue{background:#eaf3ff;}.resource-feature-green{background:#eaf8ef;}.resource-feature-gold{background:#fff7df;}.resource-feature-slate{background:#eef2f7;}
.resource-section-shell{background:#fff;border:1px solid #dbe5f1;border-radius:16px;padding:20px 22px;margin:0 auto 20px;box-shadow:0 2px 10px rgba(15,23,42,.05);}
.resource-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;border-bottom:1px solid #e6edf6;padding-bottom:12px;margin-bottom:14px;}
.resource-section-header h2{margin:0 0 4px;color:var(--navy);font-size:1.35rem;}
.resource-section-header p{margin:0;color:#334155;line-height:1.45;}
.resource-topic-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.resource-topic-grid-four{grid-template-columns:repeat(4,minmax(0,1fr));}
.resource-topic-card{display:block;text-decoration:none;color:#1f2937;background:#f8fbff;border:1px solid #d7e6f5;border-radius:13px;padding:15px;min-height:110px;}
.resource-topic-card:hover{background:#eef6ff;border-color:#93c5fd;box-shadow:0 4px 14px rgba(29,78,216,.10);}
.resource-topic-card h3{font-size:1rem;margin:0 0 7px;color:var(--navy);}
.resource-topic-card p{margin:0;color:#475569;font-size:.92rem;line-height:1.42;}
.resource-quick-strip{background:#f8fafc;border:1px solid #dbe5f1;}
.resource-quick-strip h2{margin-top:0;}
.quick-reference-row{display:flex;flex-wrap:wrap;gap:10px;}
.quick-reference-row a{display:inline-block;text-decoration:none;font-weight:800;color:var(--navy);background:#fff;border:1px solid var(--border);border-radius:999px;padding:9px 12px;}
.quick-reference-row a:hover{background:#eaf3ff;border-color:#93c5fd;}
@media(max-width:1100px){.resource-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.resource-topic-grid,.resource-topic-grid-four{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:700px){.resource-hero-clean{grid-template-columns:1fr}.resource-feature-grid,.resource-topic-grid,.resource-topic-grid-four{grid-template-columns:1fr}.resource-center-redesign h1{font-size:2rem}.resource-section-shell{padding:16px}.resource-feature-card{min-height:0}}

/* v31.56 dashboard search, estimate/final columns, no normal-width horizontal scroll */
main.dashboard-fullwidth{max-width:none;width:calc(100% - 36px);padding:22px 18px;margin:0 auto;box-sizing:border-box;}
.dashboard-search-card{padding:14px 16px;margin-bottom:14px;}
.dashboard-search-form label{margin:0 0 6px;font-weight:800;color:var(--navy);}
.dashboard-search-row{display:flex;gap:10px;align-items:center;}
.dashboard-search-row input[type='search']{margin:0;min-width:280px;}
.dashboard-search-row button,.dashboard-search-row .button{white-space:nowrap;}
.dashboard-table-no-scroll{overflow-x:visible;padding:12px;}
.dashboard-jobs-table-compact{table-layout:fixed;width:100%;min-width:0!important;}
.dashboard-jobs-table-compact th,.dashboard-jobs-table-compact td{font-size:12px;padding:7px 6px;line-height:1.2;vertical-align:top;word-break:normal;overflow-wrap:anywhere;}
.dashboard-jobs-table-compact th{white-space:normal;text-align:left;}
.dashboard-jobs-table-compact .job-num{width:9%;font-weight:800;}
.dashboard-jobs-table-compact .job-name-cell{width:12%;}
.dashboard-jobs-table-compact .customer-cell{width:10%;}
.dashboard-jobs-table-compact .wrap-cell{white-space:normal;}
.dashboard-jobs-table-compact .status-pill,.dashboard-jobs-table-compact .payment-badge{font-size:11px;padding:4px 6px;min-width:0;white-space:normal;text-align:center;}
@media(max-width:1150px){.dashboard-table-no-scroll{overflow-x:auto}.dashboard-jobs-table-compact{min-width:1220px!important}.dashboard-search-row{flex-wrap:wrap}}


/* v31.57 customer ordering product-step top cards */
.product-top-cards{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  align-items:stretch;
  margin:10px 0 18px;
}
.product-top-cards .subcard{margin:0;min-height:100%;}
.product-top-card h3{margin-top:0;margin-bottom:8px;}
.product-top-card .note{line-height:1.35;}
.product-top-card label{margin:10px 0 0;}
.product-top-card textarea{min-height:74px;}
.materials-top-card #materials_section .grid{grid-template-columns:1fr;gap:8px;}
.materials-top-card #pickup_section .grid{grid-template-columns:1fr;gap:8px;}
@media(max-width:1250px){.product-top-cards{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:760px){.product-top-cards{grid-template-columns:1fr;}}


/* v31.63 job builder Products step layout fixes */
.job-builder-main{max-width:1440px;width:calc(100% - 32px);}
.product-top-cards{
  display:grid;
  grid-template-columns:repeat(4,minmax(210px,1fr));
  gap:14px;
  align-items:start;
  margin:14px 0 26px;
  clear:both;
}
.product-top-cards .subcard,
.product-top-card{
  margin:0 !important;
  min-height:0 !important;
  height:auto !important;
  box-sizing:border-box;
  overflow:visible;
  overflow-wrap:anywhere;
  word-break:normal;
}
.product-top-card h3{font-size:16px;line-height:1.2;margin:0 0 8px;}
.product-top-card .note{font-size:13px;line-height:1.35;margin:6px 0 10px;}
.product-top-card label{font-size:13px;line-height:1.25;margin:8px 0 0;}
.product-top-card select,.product-top-card input,.product-top-card textarea{font-size:13px;padding:8px;}
#product_list_quantity_text{font-weight:700;color:var(--navy);}

#primary_product_card{
  display:grid;
  grid-template-columns:minmax(280px,420px) minmax(0,1fr);
  gap:12px 24px;
  align-items:start;
  margin-top:26px;
  overflow:visible;
}
#primary_product_card>h3{grid-column:1/-1;margin-bottom:0;}
#primary_product_card>.turnaround-summary,
#primary_product_card>.product-preview-grid{grid-column:1;}
#primary_product_card>.turnaround-summary{margin:0 0 12px;}
#primary_product_card>.product-preview-grid{
  display:block;
  background:#fff;
  border:1px solid var(--border);
  border-radius:12px;
  padding:12px;
  margin:0;
}
#primary_product_card>.product-preview-grid .product-preview-image{
  width:100%;
  max-width:390px;
  max-height:255px;
  object-fit:contain;
  display:block;
  margin:0 auto 10px;
}
#primary_product_card>.product-preview-grid .note{margin:8px 0;}
#primary_product_card> :not(h3):not(.turnaround-summary):not(.product-preview-grid){grid-column:2;min-width:0;}
#primary_product_card>.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;}
#saved_artwork_card{margin-top:0;}
#saved_art_preview.product-preview-grid{grid-template-columns:minmax(140px,240px) minmax(0,1fr);}

@media(max-width:1350px){
  .product-top-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:900px){
  .job-builder-main{width:auto;max-width:1200px;}
  .product-top-cards{grid-template-columns:1fr;}
  #primary_product_card{display:block;}
  #primary_product_card>.product-preview-grid{margin-bottom:14px;}
  #primary_product_card>.grid{grid-template-columns:1fr;}
}

/* v31.65 Products order page layout: product image first, turnaround below image, saved art below turnaround */
#primary_product_card{display:block;margin-top:26px;overflow:visible;}
.primary-product-layout{display:grid;grid-template-columns:minmax(300px,420px) minmax(0,1fr);gap:18px 24px;align-items:start;}
.primary-product-left,.primary-product-right{min-width:0;}
.product-preview-stack{display:block!important;background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px;margin:0 0 12px!important;}
.product-preview-stack .product-preview-image{width:100%;max-width:390px;max-height:255px;object-fit:contain;display:block;margin:0 auto 10px;}
.product-preview-stack .note{margin:8px 0;}
.product-turnaround-below-image,.saved-art-under-turnaround{width:100%;box-sizing:border-box;margin:0 0 12px!important;}
.primary-product-right>.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;}
.primary-product-right #booklet_pages_wrap,.primary-product-right #booklet_binding_card{margin:12px 0;}
#saved_art_preview.product-preview-grid{grid-template-columns:1fr;gap:10px;}
#saved_art_preview .product-preview-image{max-height:190px;}
#regular_components_card.components-gated-hidden{display:none!important;}
@media(max-width:900px){.primary-product-layout{display:block}.primary-product-right>.grid{grid-template-columns:1fr}.product-preview-stack{margin-bottom:14px!important}}


/* v31.68 Envelope Mailing / Inserting layout: keep setup card compact until Yes, then expand package builder full width */
#envelope_package_builder.envelope-expanded{
  grid-column:1 / -1;
  width:100%;
}
#envelope_package_builder.envelope-expanded #envelope_package_options{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px 18px;
  align-items:start;
  margin-top:12px;
}
#envelope_package_builder.envelope-expanded #envelope_first_product_card,
#envelope_package_builder.envelope-expanded #envelope_insert_sheet_rows,
#envelope_package_builder.envelope-expanded .envelope-additional-card{
  grid-column:1 / -1;
  width:100%;
  box-sizing:border-box;
}
#envelope_package_builder.envelope-expanded #envelope_first_product_card{
  margin-top:4px;
}
#envelope_package_builder.envelope-expanded #envelope_first_product_card .grid{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
#envelope_package_builder.envelope-expanded #envelope_insert_sheet_rows,
#envelope_package_builder.envelope-expanded #envelope_additional_insert_rows{
  display:block;
  width:100%;
}
#envelope_package_builder.envelope-expanded #envelope_insert_sheet_rows .print-component-row,
#envelope_package_builder.envelope-expanded #envelope_additional_insert_rows .print-component-row{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px 14px;
  align-items:start;
  margin:12px 0;
}
#envelope_package_builder.envelope-expanded #envelope_insert_sheet_rows .print-component-row > h4,
#envelope_package_builder.envelope-expanded #envelope_additional_insert_rows .print-component-row > h4,
#envelope_package_builder.envelope-expanded #envelope_insert_sheet_rows .print-component-row > .envelope-forced-note,
#envelope_package_builder.envelope-expanded #envelope_additional_insert_rows .print-component-row > .envelope-forced-note,
#envelope_package_builder.envelope-expanded #envelope_insert_sheet_rows .print-component-row > .component-saved-art-preview,
#envelope_package_builder.envelope-expanded #envelope_additional_insert_rows .print-component-row > .component-saved-art-preview{
  grid-column:1 / -1;
}
@media(max-width:1100px){
  #envelope_package_builder.envelope-expanded #envelope_package_options,
  #envelope_package_builder.envelope-expanded #envelope_first_product_card .grid{grid-template-columns:1fr;}
  #envelope_package_builder.envelope-expanded #envelope_insert_sheet_rows .print-component-row,
  #envelope_package_builder.envelope-expanded #envelope_additional_insert_rows .print-component-row{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:700px){
  #envelope_package_builder.envelope-expanded #envelope_insert_sheet_rows .print-component-row,
  #envelope_package_builder.envelope-expanded #envelope_additional_insert_rows .print-component-row{grid-template-columns:1fr;}
}

/* v31.77 Proof approval/share workflow */
.proof-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:8px;padding:8px 10px;margin:0 0 10px;background:#eef3f8;color:#10243b;}
.proof-heading.proof-pending{background:#ffe08a;color:#3d2a00;}
.proof-heading.proof-rejected{background:#c62828;color:#fff;}
.proof-heading.proof-approved{background:#2e7d32;color:#fff;}
.proof-status-pill{display:inline-block;border-radius:999px;padding:3px 9px;font-size:.78rem;font-weight:700;background:#e9eef5;color:#18344f;white-space:nowrap;}
.proof-status-pill.proof-pending,.proof-heading.proof-pending .proof-status-pill{background:#ffc107;color:#3d2a00;}
.proof-status-pill.proof-rejected,.proof-heading.proof-rejected .proof-status-pill{background:#b71c1c;color:#fff;}
.proof-status-pill.proof-approved,.proof-heading.proof-approved .proof-status-pill{background:#1b5e20;color:#fff;}
.proof-file-header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.proof-actions{margin-top:10px;display:flex;flex-direction:column;gap:8px;}
.proof-actions>.button{align-self:flex-start;}
.proof-approved-text{color:#1b5e20;}
.proof-rejected-text{color:#b71c1c;}
.share-proof-form{display:grid;grid-template-columns:minmax(160px,1fr) minmax(210px,1.2fr) auto;gap:8px;align-items:end;margin-top:8px;padding:10px;background:#f7fafc;border:1px solid #dbe6f1;border-radius:10px;}
.share-proof-form input{width:100%;box-sizing:border-box;}
.proof-share-history{margin-top:4px;display:flex;flex-direction:column;gap:2px;color:#52677a;}
.proof-share-public{max-width:980px;margin:20px auto;}
.proof-share-public .proof-frame{width:100%;height:72vh;border:1px solid #cbd8e6;border-radius:10px;background:#fff;}
.proof-share-public .viewer-form{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.proof-share-public .viewer-form .full{grid-column:1 / -1;}
.proof-share-public .decision-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px;}
@media(max-width:800px){.share-proof-form,.proof-share-public .viewer-form{grid-template-columns:1fr}.proof-share-public .viewer-form .full{grid-column:auto}}

/* v31.78 Proof tab/page layout */
.proof-page-card .proof-page-file-card {
  align-items: flex-start;
  gap: 18px;
  padding: 16px;
}
.proof-page-thumb {
  max-width: 280px;
  max-height: 220px;
  object-fit: contain;
}
.proof-page-actions {
  margin-top: 12px;
}
.proof-share-wide {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(220px, 1fr) auto;
  gap: 10px;
  align-items: end;
  margin-top: 12px;
  max-width: 780px;
}
.proof-share-history {
  margin-top: 10px;
  display: grid;
  gap: 4px;
}
.proof-share-history .share-row {
  display: block;
}
@media (max-width: 760px){
  .proof-page-card .proof-page-file-card { display:block; }
  .proof-page-thumb { max-width:100%; width:100%; height:auto; }
  .proof-share-wide { grid-template-columns: 1fr; }
}

/* v31.80 proof review layout */
.proof-decision-card{border-left:5px solid #f4c542;background:#fffaf0;}
.portal-proof-decision-form{display:grid;gap:12px;}
.portal-proof-decision-form textarea{min-height:80px;}
.proof-page-card .decision-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px;}
.proof-share-public .proof-decision-card{margin-top:0;}


/* v31.81 proof tab status coloring */
.tab-button.proof-tab-button{display:inline-flex;align-items:center;gap:6px;}
.tab-button.proof-tab-button.proof-pending{background:#ffe08a;color:#3d2a00;border-color:#f2b600;}
.tab-button.proof-tab-button.proof-rejected{background:#c62828;color:#fff;border-color:#9f1717;}
.tab-button.proof-tab-button.proof-approved{background:#2e7d32;color:#fff;border-color:#1f5d23;}
.tab-button.proof-tab-button.active.proof-pending{background:#f9c74f;color:#3d2a00;border-color:#d99b00;}
.tab-button.proof-tab-button.active.proof-rejected{background:#b71c1c;color:#fff;border-color:#8a1010;}
.tab-button.proof-tab-button.active.proof-approved{background:#1b5e20;color:#fff;border-color:#124317;}
.tab-status-text{font-size:.78rem;font-weight:800;opacity:.95;}
.proof-share-history .share-row{display:block;margin-top:3px;}

/* v31.82 compact proof viewer / page controls */
.proof-page-card .compact-note{margin-top:2px;margin-bottom:8px;}
.compact-proof-card{gap:12px;padding:12px;margin:10px 0;align-items:flex-start;}
.compact-proof-thumb{max-height:120px;width:auto;}
.compact-proof-actions{margin-top:8px;display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start;}
.compact-share-proof-form{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:end;margin:0;flex:1 1 560px;}
.compact-share-proof-form input{margin:0;}
.compact-proof-share-history{flex-basis:100%;margin-top:4px;}
.proof-view-button{white-space:nowrap;}
.proof-viewer-page{max-width:1040px;margin:12px auto;}
.proof-review-summary,.compact-proof-review-summary{padding:12px 16px;margin-bottom:10px;}
.proof-review-title-row{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;}
.proof-review-title-row h1{margin:0 0 6px 0;}
.proof-review-title-row p{margin:0;line-height:1.35;}
.proof-page-count-box{min-width:130px;text-align:center;background:#fff;border:1px solid #d7e2ef;border-radius:10px;padding:10px 12px;box-shadow:0 1px 2px rgba(15,35,58,.06);}
.proof-page-count-box .page-label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:#607085;margin-bottom:2px;}
.compact-proof-decision-card{padding:12px 16px;margin:10px 0;}
.compact-proof-decision-card h2{margin:0 0 8px 0;}
.compact-viewer-form{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;}
.compact-viewer-form label{margin:0;}
.compact-viewer-form textarea{min-height:48px;}
.compact-viewer-form .full{grid-column:1 / -1;}
.compact-decision-actions{margin-top:0;display:flex;gap:8px;}
.compact-proof-file-card{padding:12px 16px;margin-top:10px;}
.proof-viewer-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;}
.proof-toolbar-page{font-weight:800;color:#24384f;margin-right:auto;}
.proof-viewer-toolbar button[disabled]{opacity:.45;cursor:not-allowed;}
.proof-share-public .proof-frame,.proof-viewer-page .proof-frame{width:100%;height:70vh;border:1px solid #cbd8e6;border-radius:10px;background:#fff;}
@media(max-width:800px){
  .proof-review-title-row{flex-direction:column;}
  .proof-page-count-box{text-align:left;}
  .compact-viewer-form,.compact-share-proof-form{grid-template-columns:1fr;}
  .compact-viewer-form .full{grid-column:auto;}
  .proof-toolbar-page{margin-right:0;}
}

/* v31.83 proof viewer navigation + proof tab page cleanup */
.proof-page-file-card.compact-proof-card{display:block;padding:12px 14px;}
.proof-page-file-card .file-card-info{width:100%;}
.proof-primary-button,.proof-share-button,.large-action-button{font-size:1rem;font-weight:800;padding:10px 16px;border-radius:10px;line-height:1.2;}
.proof-primary-button{background:#0b5cab;color:#fff;border-color:#0b5cab;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;min-height:42px;}
.proof-share-button{background:#123b63;color:#fff;border:1px solid #123b63;min-height:42px;white-space:nowrap;}
.compact-share-proof-form{align-items:center;}
.compact-share-proof-form input{min-height:42px;}
.compact-proof-actions{align-items:center;}
.compact-proof-viewer-page{margin-top:8px;}
.proof-review-tight{padding:8px 12px;margin-bottom:6px;}
.proof-review-title-row h1{font-size:1.35rem;margin:0 0 3px 0;}
.proof-review-title-row p{font-size:.92rem;line-height:1.25;}
.compact-page-count-box{padding:7px 10px;min-width:116px;}
.proof-decision-tight{padding:8px 12px;margin:6px 0;}
.proof-decision-tight h2{font-size:1.12rem;margin:0 0 6px 0;}
.proof-decision-form-tight{gap:6px 10px;}
.proof-decision-form-tight input{min-height:36px;}
.proof-decision-form-tight textarea{min-height:42px;}
.proof-file-viewer-tight{padding:8px 12px;margin-top:6px;}
.compact-proof-toolbar{margin-bottom:6px;}
.proof-nav-button{font-weight:800;min-width:86px;}
.proof-image-scrollbox{width:100%;max-height:72vh;overflow:auto;border:1px solid #cbd8e6;border-radius:10px;background:#f4f7fb;text-align:left;padding:10px;box-sizing:border-box;}
.proof-page-image{max-width:none;width:auto;height:auto;background:#fff;box-shadow:0 1px 8px rgba(0,0,0,.12);}
@media(max-width:800px){.compact-share-proof-form{grid-template-columns:1fr}.proof-primary-button,.proof-share-button{width:100%;}.proof-image-scrollbox{max-height:68vh;}}

/* v31.84 proof tab preview + file deletion controls */
.proof-page-two-column-card{
  display:grid;
  grid-template-columns:minmax(220px, 34%) 1fr;
  gap:18px;
  align-items:start;
}
.proof-tab-art-preview{
  background:#fff;
  border:1px solid #d7dee8;
  border-radius:12px;
  padding:10px;
  min-height:220px;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.proof-tab-preview-image{
  max-width:100%;
  max-height:320px;
  object-fit:contain;
  display:block;
  border-radius:8px;
  background:#fff;
}
.proof-tab-info{min-width:0;}
.proof-tab-actions{align-items:flex-start;}
.proof-view-large-button,
.proof-share-large-button{
  font-size:1rem;
  padding:12px 18px;
  min-height:44px;
  font-weight:800;
}
.proof-share-card{
  width:100%;
  margin-top:10px;
  padding:12px;
  border:1px solid #e1e7ef;
  border-radius:12px;
  background:#f8fafc;
}
.inline-delete-form{display:inline-block;margin:0 0 0 8px;}
.job-files-table .inline-delete-form{margin:0;}
button.danger.small, .small.danger{
  background:#b91c1c;
  color:#fff;
  border-color:#991b1b;
}
@media (max-width: 850px){
  .proof-page-two-column-card{grid-template-columns:1fr;}
  .proof-tab-art-preview{min-height:160px;}
}


/* v31.85 proof share preview placement + download proof button */
.proof-page-single-card{display:block;padding:12px 14px;}
.proof-share-panel{
  margin-top:12px;
  padding:12px;
  border:1px solid #dbe6f1;
  border-radius:12px;
  background:#f8fafc;
}
.proof-share-preview{
  background:#fff;
  border:1px solid #d7dee8;
  border-radius:12px;
  padding:10px;
  min-height:210px;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  margin-bottom:10px;
}
.proof-share-preview-image{
  max-width:100%;
  max-height:300px;
  object-fit:contain;
  display:block;
  border-radius:8px;
  background:#fff;
}
.proof-share-panel .proof-share-card{
  margin-top:0;
  width:100%;
  max-width:none;
  box-sizing:border-box;
}
.proof-share-panel .compact-proof-share-history{
  margin-top:8px;
}
.proof-download-button{
  background:#27496d;
  color:#fff;
  border-color:#27496d;
  font-weight:800;
}
@media(max-width:800px){
  .proof-share-preview{min-height:150px;}
}


/* v31.88 About page inline capability map */
.plavidian-capability-map{
  background:linear-gradient(180deg,#f7fbff,#ffffff);
  border:1px solid #dce6f2;
  border-radius:16px;
  padding:18px;
  box-shadow:0 8px 22px rgba(15,45,80,.08);
}
.capability-map-title{
  font-size:1.35rem;
  font-weight:900;
  color:var(--navy);
  margin-bottom:14px;
  line-height:1.15;
}
.capability-flow{
  display:grid;
  grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;
  gap:10px;
  align-items:stretch;
}
.capability-step{
  background:#fff;
  border:1px solid #cbdcf0;
  border-radius:14px;
  padding:12px 10px;
  text-align:center;
  min-height:118px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
}
.capability-icon{
  width:28px;
  height:28px;
  border-radius:999px;
  background:var(--navy);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:900;
  margin-bottom:6px;
}
.capability-step h3{
  margin:2px 0 8px;
  color:var(--navy);
  font-size:1rem;
}
.capability-step p{
  margin:1px 0;
  font-size:.88rem;
  color:#334155;
}
.capability-arrow{
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:1.5rem;
  font-weight:900;
  color:var(--navy);
}
.capability-cert-card{
  margin-top:16px;
  background:var(--navy);
  color:#fff;
  border-radius:16px;
  padding:18px;
  text-align:center;
}
.capability-cert-card h3{
  margin:0 0 8px;
  font-size:1.25rem;
  color:#fff;
}
.capability-cert-card p{
  margin:6px 0;
  color:#dbeafe;
  line-height:1.35;
}
@media(max-width:980px){
  .capability-flow{
    grid-template-columns:1fr;
  }
  .capability-arrow{
    transform:rotate(90deg);
    min-height:20px;
  }
}


/* v31.89 product image settings */
.settings-subhead{
  margin:20px 0 8px;
  color:var(--navy);
  border-bottom:1px solid #d8e4f1;
  padding-bottom:6px;
}
.product-image-settings-table table{min-width:900px;}
.product-image-preview-cell{min-width:170px;}
.settings-product-image-preview{
  max-width:150px;
  max-height:95px;
  object-fit:contain;
  border:1px solid #d6e1ec;
  border-radius:8px;
  background:#fff;
  padding:6px;
}
.product-image-settings-table textarea{
  width:100%;
  min-width:280px;
}
.product-image-settings-table input[readonly]{
  background:#f5f7fb;
  font-weight:700;
}

.status-proof,.status-approval{background:#ca8a04;color:#111827;}

.highlighted-job-identity,.highlight-field{border:2px solid #f59e0b!important;background:#fff7ed!important;box-shadow:0 0 0 3px rgba(245,158,11,.18);}
.highlighted-job-identity h3{margin-top:0;color:#7c2d12;}

.pricing-preview-card{border:2px solid #d6e4f2;background:#f8fbff;margin-top:12px}.pricing-preview-card h3{margin-top:0}.pricing-preview-card p{margin:6px 0}.turnaround-card[style*="display: none"]{display:none!important;}

/* v31.107 saved art checkbox / version name reveal */
.saved-art-save-card{border:1px solid #d6e4f2;background:#f8fbff}
.saved-art-save-label{display:flex;align-items:center;gap:12px;font-weight:700}
.large-checkbox{width:24px!important;height:24px!important;min-width:24px;accent-color:#113A5C;cursor:pointer}
.saved-art-version-wrap{margin-top:10px;padding:10px;border-left:4px solid #113A5C;background:#fff}
.saved-art-version-input{font-weight:600}

/* v31.114 print-only product-first job creation */
.print-only-product-first-picker{border:2px solid #d7e6f5;background:#f8fbff}
.selectable-product-gallery{margin-top:14px}
.selectable-product-card{appearance:none;background:#fff;color:#1f2937;text-align:left;width:100%;border:1px solid var(--border);border-radius:14px;padding:16px;box-shadow:0 2px 10px #0000000d;cursor:pointer;transition:border-color .15s, box-shadow .15s, transform .15s}
.selectable-product-card:hover{border-color:var(--accent);box-shadow:0 8px 24px var(--accent)22;transform:translateY(-1px)}
.selectable-product-card.selected{border:3px solid #113A5C;background:#eef6ff}
.selectable-product-card img{width:100%;height:180px;object-fit:contain;background:#f8fafc;border-radius:10px}
.selectable-product-card h2{margin:12px 0 6px;color:var(--navy);font-size:20px}
.selectable-product-card p{font-weight:400;color:#475569;min-height:42px}
.select-product-pill{display:inline-block;background:#113A5C;color:#fff;border-radius:999px;padding:7px 11px;font-weight:800;font-size:13px;margin-top:8px}
.selected-print-product-summary{border:1px solid #cfe0f2;border-radius:10px;background:#f8fbff;padding:12px;margin:12px 0}
.selected-print-product-summary strong{display:block;font-size:24px;color:var(--navy);margin:4px 0 10px}

/* v31.116 production/staffing calendar refinements */
.page-subtitle-row{display:flex;align-items:center;justify-content:center;gap:14px;margin:6px 0 12px;flex-wrap:wrap}.production-date-title{font-size:20px;font-weight:900;color:var(--navy);background:#f8fafc;border:1px solid var(--border);border-radius:999px;padding:8px 16px}.calendar-day.selected-day{outline:3px solid var(--navy);background:#fff7ed;border-color:#fb923c}.dashboard-dueout-card{margin-top:16px}.dashboard-two-week-calendar{margin-top:10px}.production-capacity-table{min-width:720px}.production-capacity-table .muted{color:#334155;font-size:12px}.staffing-page-wide .staffing-calendar-scroll{overflow-x:auto}.date-staffing-table{min-width:2550px}.date-staffing-table th:first-child,.date-staffing-table td:first-child{width:220px}.date-staffing-table th:not(:first-child),.date-staffing-table td:not(:first-child){width:165px;vertical-align:top}.date-capacity-cell{background:#fbfdff}.date-capacity-cell label{display:block;font-size:11px;font-weight:800;color:#475569;margin:0 0 5px}.date-capacity-cell input{width:62px!important;margin-left:4px}.date-capacity-cell textarea{width:100%;min-height:42px;font-size:11px;line-height:1.2}.staffing-page-wide .admin-table-scroll .sticky-col{position:sticky;left:0}.staffing-page-wide .date-staffing-table th.sticky-col{background:var(--navy);color:#fff;z-index:4}.staffing-page-wide .date-staffing-table td.sticky-col{background:#fff;z-index:3}
@media(max-width:900px){.production-date-title{font-size:16px}.date-staffing-table{min-width:2200px}.page-subtitle-row{justify-content:flex-start}}
.admin-table-fit{width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:#fff;margin:8px 0 18px;}


/* v31.118 AAPC member logo and Resource Center capability image repair */
.affiliation-card{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;background:#fff;border:1px solid #dce6f2;}
.affiliation-card .eyebrow{margin:0 0 4px;color:var(--navy);font-weight:900;text-transform:uppercase;letter-spacing:.08em;font-size:.78rem;}
.aapc-member-logo{display:block;max-width:450px;width:100%;height:auto;object-fit:contain;}
.about-affiliation-card .aapc-member-logo{max-width:225px;}
.home-affiliation-card{margin-top:22px;text-align:center;justify-content:center;}
.home-affiliation-card .aapc-member-logo{max-width:168px;}
.about-affiliation-card{margin-top:18px;}
.about-affiliation-card > div{max-width:650px;}
.resource-hero-clean img{object-fit:contain;max-height:320px;padding:12px;}
@media(max-width:700px){.affiliation-card{justify-content:center;text-align:center}.aapc-member-logo{max-width:320px}.about-affiliation-card .aapc-member-logo{max-width:160px}}

/* v31.119: Print Components readability and vendor routing */
.print-components-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:#fff;margin:8px 0 14px;}
.print-components-table{min-width:1420px;table-layout:fixed;}
.print-components-table th{white-space:normal;line-height:1.15;}
.print-components-table td{vertical-align:top;}
.print-components-table input,.print-components-table select{font-size:13px;line-height:1.25;margin-top:0;}
.print-components-table select{min-width:100%;text-overflow:clip;}
.print-components-table th:nth-child(1),.print-components-table td:nth-child(1){width:210px;}
.print-components-table th:nth-child(2),.print-components-table td:nth-child(2){width:90px;}
.print-components-table th:nth-child(3),.print-components-table td:nth-child(3){width:170px;}
.print-components-table th:nth-child(4),.print-components-table td:nth-child(4){width:150px;}
.print-components-table th:nth-child(5),.print-components-table td:nth-child(5){width:220px;}
.print-components-table th:nth-child(6),.print-components-table td:nth-child(6){width:190px;}
.print-components-table th:nth-child(7),.print-components-table td:nth-child(7){width:170px;}
.print-components-table th:nth-child(8),.print-components-table td:nth-child(8){width:120px;}
.print-components-table th:nth-child(9),.print-components-table td:nth-child(9){width:90px;}
.print-components-table .vendor-other-input{margin-top:6px;}

/* v31.121 job finance / components layout */
main.job-detail-wide{max-width:1680px;width:calc(100vw - 44px);}
.finance-page-card{overflow:visible;}
.finance-summary-layout{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:18px;align-items:start;}
.finance-summary-left>.card,.finance-summary-right>.card{margin-bottom:0;}
.finance-summary-right{text-align:right;}
.job-cost-card{background:#fbfdff;border:1px solid var(--border);}
.job-cost-card h2{text-align:right;margin-top:0;}
.job-cost-table th,.job-cost-table td{text-align:right;}
.job-cost-table th:first-child,.job-cost-table td:first-child{text-align:left;}
.job-cost-total td{font-weight:900;border-top:2px solid var(--navy);}
.job-cost-margin td{font-weight:900;color:var(--navy);}
.print-components-card,.service-components-card{overflow:visible;}
.print-components-table-wrap,.service-components-table-wrap{overflow-x:visible;}
.print-components-table{min-width:0!important;width:100%;table-layout:fixed;font-size:12px;}
.print-components-table input,.print-components-table select{font-size:12px;padding:6px 5px;white-space:normal;}
.print-components-table th:nth-child(1),.print-components-table td:nth-child(1){width:17%;}
.print-components-table th:nth-child(2),.print-components-table td:nth-child(2){width:7%;}
.print-components-table th:nth-child(3),.print-components-table td:nth-child(3){width:13%;}
.print-components-table th:nth-child(4),.print-components-table td:nth-child(4){width:11%;}
.print-components-table th:nth-child(5),.print-components-table td:nth-child(5){width:16%;}
.print-components-table th:nth-child(6),.print-components-table td:nth-child(6){width:14%;}
.print-components-table th:nth-child(7),.print-components-table td:nth-child(7){width:11%;}
.print-components-table th:nth-child(8),.print-components-table td:nth-child(8){width:7%;}
.print-components-table th:nth-child(9),.print-components-table td:nth-child(9){width:4%;}
.service-components-table{min-width:0!important;width:100%;table-layout:fixed;}
.service-components-table th:nth-child(1),.service-components-table td:nth-child(1){width:13%;}
.service-components-table th:nth-child(2),.service-components-table td:nth-child(2){width:43%;}
.service-components-table th:nth-child(3),.service-components-table td:nth-child(3){width:12%;}
.service-components-table th:nth-child(4),.service-components-table td:nth-child(4){width:13%;}
.service-components-table th:nth-child(5),.service-components-table td:nth-child(5){width:12%;text-align:right;}
.service-components-table th:nth-child(6),.service-components-table td:nth-child(6){width:7%;}
@media(max-width:1100px){main.job-detail-wide{width:auto;max-width:1200px}.finance-summary-layout{grid-template-columns:1fr}.finance-summary-right,.job-cost-card h2{text-align:left}.print-components-table-wrap,.service-components-table-wrap{overflow-x:auto}.print-components-table{min-width:1200px!important}.service-components-table{min-width:900px!important}}

/* v31.122 production plan / job summary refinements */
.job-component-summary{margin-top:12px;text-align:left}.compact-summary-list{margin:6px 0 10px 18px;padding:0}.compact-summary-list li{margin:3px 0;line-height:1.3}.summary-customer-action-form{margin-top:12px}.production-plan-edit-table{min-width:0!important;width:100%;table-layout:fixed}.production-plan-edit-table th:nth-child(1),.production-plan-edit-table td:nth-child(1){width:17%}.production-plan-edit-table th:nth-child(2),.production-plan-edit-table td:nth-child(2){width:15%}.production-plan-edit-table th:nth-child(3),.production-plan-edit-table td:nth-child(3){width:9%}.production-plan-edit-table th:nth-child(4),.production-plan-edit-table td:nth-child(4){width:9%}.production-plan-edit-table th:nth-child(5),.production-plan-edit-table td:nth-child(5){width:15%}.production-plan-edit-table th:nth-child(6),.production-plan-edit-table td:nth-child(6){width:11%}.production-plan-edit-table th:nth-child(7),.production-plan-edit-table td:nth-child(7){width:18%}.production-plan-edit-table th:nth-child(8),.production-plan-edit-table td:nth-child(8){width:6%}.production-plan-edit-table input,.production-plan-edit-table select{font-size:12px;padding:6px 5px;width:100%}.production-plan-edit-wrap{overflow-x:visible}main.job-detail-wide{max-width:1860px}.print-components-table-wrap{overflow-x:visible!important}.print-components-table select,.print-components-table input{width:100%}
@media(max-width:1200px){.production-plan-edit-wrap{overflow-x:auto}.production-plan-edit-table{min-width:1120px!important}.print-components-table-wrap{overflow-x:auto!important}}

/* v31.125 Services/Product pricing and Mail Owner admin cleanup */
.service-price-grid{display:grid;grid-template-columns:minmax(260px,1.4fr) 160px 180px;gap:0;border:1px solid var(--border);border-radius:10px;overflow:hidden;margin:14px 0;background:#fff;max-width:980px}.service-price-head{background:var(--navy);color:#fff;font-weight:900;padding:10px 12px}.service-price-label,.service-price-unit{padding:10px 12px;border-top:1px solid #e5edf6;margin:0}.service-price-label{font-weight:800}.service-price-unit{color:#475569}.service-price-input{border:0;border-top:1px solid #e5edf6;border-left:1px solid #e5edf6;border-radius:0;margin:0;width:100%;padding:10px 12px}.product-card-link{text-decoration:none;color:inherit;display:block}.product-card-link:hover{box-shadow:0 8px 24px rgba(11,47,91,.16);transform:translateY(-1px)}.pricing-row-table{overflow-x:auto}.pricing-row-table table{min-width:1120px}.pricing-row-table input{width:100%;font-size:13px}.danger{background:#991b1b!important;color:#fff!important;border-color:#991b1b!important}@media(max-width:800px){.service-price-grid{grid-template-columns:1fr}.service-price-head:nth-child(2),.service-price-head:nth-child(3){display:none}.service-price-unit{border-top:0;padding-top:0}.service-price-input{border-left:0}.service-price-label{padding-bottom:2px}}

/* v31.126 product pricing matrix readability */
.product-pricing-detail-card { max-width: none; }
.product-pricing-wide-table { overflow-x: visible; }
.product-pricing-wide-table table { width: 100%; min-width: 0; table-layout: auto; }
.product-pricing-wide-table th, .product-pricing-wide-table td { white-space: normal; vertical-align: top; }
.product-pricing-wide-table select, .product-pricing-wide-table input { width: 100%; min-width: 130px; }
.product-pricing-wide-table td:nth-child(4) select { min-width: 240px; }
.pricing-toolbar { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin: 10px 0; }
.notice-card { border-left: 5px solid #194f90; }
/* v31.131: keep job ticket table rules below wrapped text instead of crossing production notes */
.job-ticket-plan-table{border-collapse:separate;border-spacing:0;}
.job-ticket-plan-table th,.job-ticket-plan-table td{line-height:1.55;padding:10px 9px;border-bottom:0;}
.job-ticket-plan-table tr:not(:last-child) td{border-bottom:1px solid #dfe7f0;}
.job-ticket-plan-table td:nth-child(5){overflow-wrap:anywhere;}

/* v31.135 customer notification alignment */
.checkbox-stack{display:grid;grid-template-columns:1fr;gap:8px;margin-top:8px}.checkbox-stack label{display:grid;grid-template-columns:22px 1fr;align-items:start;gap:8px;margin:0;font-weight:600}.checkbox-stack input[type=checkbox]{width:16px;height:16px;margin:2px 0 0}.subcard table td{vertical-align:top}

/* v31.137 admin nav/footer streamlining */
.site-footer .footer-admin-links{margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid #e2e8f0;display:flex;gap:12px;justify-content:center;align-items:center;flex-wrap:wrap}
.site-footer .footer-legal-links{display:flex;gap:12px;justify-content:center;align-items:center;flex-wrap:wrap}

/* v31.155 broker / consultant customer experience */
.pipeline-grid,.trust-grid,.saved-art-library-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:10px}
.pipeline-tile{border:1px solid #d8e4f2;border-radius:12px;background:#f8fbff;padding:14px;text-align:center}
.pipeline-tile b{display:block;font-size:28px;color:#0f2f57}.pipeline-tile span{font-weight:700;color:#24435f}
.price-status-badge{display:inline-block;border-radius:999px;background:#eef6ff;border:1px solid #cfe3f8;color:#0f2f57;padding:3px 8px;font-size:12px;font-weight:700;white-space:nowrap}
.customer-order-summary{background:#fbfdff;border-left:4px solid var(--accent)}.proof-certificate{background:#fffdf4;border-left:4px solid #d97706;margin-top:8px}.saved-art-library-thumb{width:100%;max-height:180px;object-fit:contain;background:#fff;border:1px solid var(--border);border-radius:8px;padding:6px}.broker-public-page .trust-grid>div{border:1px solid var(--border);border-radius:12px;background:#fff;padding:14px}.broker-consultant-job-card{border-left:4px solid #0f2f57;background:#f8fbff}

/* v31.156 dashboard readability: prevent status/pricing text from spilling into adjacent columns. */
.dashboard-table-card,
.dashboard-table-no-scroll{overflow-x:auto!important;}
.dashboard-jobs-table-compact{
  table-layout:auto!important;
  width:max-content!important;
  min-width:1780px!important;
  border-collapse:collapse;
}
.dashboard-jobs-table-compact th,
.dashboard-jobs-table-compact td{
  max-width:170px;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
  vertical-align:top;
}
.dashboard-jobs-table-compact .job-num{min-width:96px;max-width:110px;}
.dashboard-jobs-table-compact .job-name-cell{min-width:170px;max-width:220px;}
.dashboard-jobs-table-compact .customer-cell{min-width:150px;max-width:200px;}
.dashboard-jobs-table-compact .status-pill,
.dashboard-jobs-table-compact .price-status-badge,
.dashboard-jobs-table-compact .payment-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  max-width:150px;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  line-height:1.15;
  text-align:center;
}
.customer-order-summary-finance{margin-bottom:14px;}
.finance-page-card > .customer-order-summary-finance{border-color:#cfe3f8;background:#f8fbff;}

/* v31.157: materials page full-width and dashboard/summary layout fixes */
.product-top-cards .full-width-materials-card,
.full-width-materials-card{
  grid-column:1 / -1;
  width:100%;
}
.full-width-materials-card #materials_section .grid,
.full-width-materials-card #pickup_section .grid{
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
}
.job-summary-top-grid{align-items:start;}
.summary-right-stack{display:flex;flex-direction:column;gap:12px;min-width:0;}
.summary-right-stack .card{margin-top:0;}
.dashboard-jobs-table-compact td,
.dashboard-jobs-table-compact th{box-sizing:border-box;}
.dashboard-jobs-table-compact .status-pill,
.dashboard-jobs-table-compact .price-status-badge,
.dashboard-jobs-table-compact .payment-badge{max-width:100%;white-space:normal!important;overflow-wrap:anywhere!important;}
.dashboard-jobs-table-compact .required-action-cell{min-width:160px;max-width:210px;}
.dashboard-jobs-table-compact .pricing-status-cell{min-width:160px;max-width:190px;}
.dashboard-jobs-table-compact .status-cell{min-width:135px;max-width:170px;}
@media(max-width:900px){.job-summary-top-grid{grid-template-columns:1fr!important;}}


/* v31.158 dashboard no-horizontal-scroll cleanup */
.dashboard-table-card,
.dashboard-table-no-scroll{
  overflow-x:visible!important;
  width:100%;
  max-width:100%;
}
.dashboard-jobs-table-compact{
  table-layout:fixed!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  border-collapse:collapse;
}
.dashboard-jobs-table-compact th,
.dashboard-jobs-table-compact td{
  font-size:10.5px!important;
  line-height:1.16!important;
  padding:5px 4px!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
  vertical-align:top;
  max-width:none!important;
}
.dashboard-jobs-table-compact th{
  font-size:10px!important;
  line-height:1.08!important;
  font-weight:800;
}
.dashboard-jobs-table-compact .job-num{width:6.8%!important;min-width:0!important;max-width:none!important;font-weight:800;}
.dashboard-jobs-table-compact .job-name-cell{width:auto!important;min-width:0!important;max-width:none!important;}
.dashboard-jobs-table-compact .customer-cell{width:auto!important;min-width:0!important;max-width:none!important;}
.dashboard-jobs-table-compact .status-cell,
.dashboard-jobs-table-compact .pricing-status-cell,
.dashboard-jobs-table-compact .required-action-cell{min-width:0!important;max-width:none!important;}
.dashboard-jobs-table-compact .status-pill,
.dashboard-jobs-table-compact .price-status-badge,
.dashboard-jobs-table-compact .payment-badge{
  display:block!important;
  width:100%;
  max-width:100%!important;
  min-width:0!important;
  padding:3px 4px!important;
  font-size:9.8px!important;
  line-height:1.1!important;
  border-radius:7px!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
}
.dashboard-jobs-table-compact .create-similar-inline{margin-top:4px;}
.dashboard-jobs-table-compact .create-similar-inline button.small{font-size:9.5px;padding:3px 4px;line-height:1.05;white-space:normal;width:100%;}
.dashboard-jobs-table-compact .col-job{width:6.8%;}
.dashboard-jobs-table-compact .col-date{width:5.8%;}
.dashboard-jobs-table-compact .col-due{width:5.6%;}
.dashboard-jobs-table-compact .col-po{width:5.8%;}
.dashboard-jobs-table-compact .col-name{width:8.6%;}
.dashboard-jobs-table-compact .col-customer{width:7.4%;}
.dashboard-jobs-table-compact .col-type{width:5.4%;}
.dashboard-jobs-table-compact .col-status{width:7.4%;}
.dashboard-jobs-table-compact .col-price-status{width:8.6%;}
.dashboard-jobs-table-compact .col-action-required{width:7.4%;}
.dashboard-jobs-table-compact .col-payment{width:6.4%;}
.dashboard-jobs-table-compact .col-postage-payment{width:7.2%;}
.dashboard-jobs-table-compact .col-money{width:4.8%;}
@media(max-width:1100px){
  .dashboard-table-card,.dashboard-table-no-scroll{overflow-x:auto!important;}
  .dashboard-jobs-table-compact{min-width:1080px!important;width:1080px!important;}
}


/* v31.160 dashboard spacing + customer order summary placement fix */
.dashboard-jobs-table-compact th,
.dashboard-jobs-table-compact td{
  font-size:11.5px!important;
  line-height:1.18!important;
  padding:5px 4px!important;
}
.dashboard-jobs-table-compact th{
  font-size:10.8px!important;
  line-height:1.08!important;
}
.dashboard-jobs-table-compact .col-job{width:6.3%!important;}
.dashboard-jobs-table-compact .col-date{width:4.9%!important;}
.dashboard-jobs-table-compact .col-due{width:4.9%!important;}
.dashboard-jobs-table-compact .col-po{width:4.2%!important;}
.dashboard-jobs-table-compact .col-name{width:8.4%!important;}
.dashboard-jobs-table-compact .col-customer{width:6.5%!important;}
.dashboard-jobs-table-compact .col-type{width:4.6%!important;}
.dashboard-jobs-table-compact .col-status{width:8.2%!important;}
.dashboard-jobs-table-compact .col-price-status{width:9.4%!important;}
.dashboard-jobs-table-compact .col-action-required{width:8.0%!important;}
.dashboard-jobs-table-compact .col-payment{width:7.2%!important;}
.dashboard-jobs-table-compact .col-postage-payment{width:7.8%!important;}
.dashboard-jobs-table-compact .col-money{width:4.55%!important;}
.dashboard-jobs-table-compact .status-cell,
.dashboard-jobs-table-compact .pricing-status-cell,
.dashboard-jobs-table-compact td:has(> .payment-badge){
  text-align:center;
  padding-left:6px!important;
  padding-right:6px!important;
}
.dashboard-jobs-table-compact .status-pill,
.dashboard-jobs-table-compact .price-status-badge,
.dashboard-jobs-table-compact .payment-badge{
  display:inline-block!important;
  width:auto!important;
  max-width:calc(100% - 4px)!important;
  min-width:0!important;
  margin:0 2px!important;
  padding:4px 6px!important;
  font-size:10.5px!important;
  line-height:1.12!important;
  border-radius:8px!important;
  box-sizing:border-box!important;
  overflow-wrap:anywhere!important;
}
.dashboard-jobs-table-compact .job-num{
  width:6.3%!important;
  font-size:11.3px!important;
}
.dashboard-jobs-table-compact .job-num a{white-space:normal;overflow-wrap:anywhere;}
.customer-tabs + .tab-panel .job-summary-top-grid,
#tab-customer-info .job-summary-top-grid{
  align-items:start;
}
#tab-customer-info .summary-right-stack .customer-order-summary-finance{
  margin-top:0;
  margin-bottom:12px;
}
@media(max-width:1100px){
  .dashboard-table-card,.dashboard-table-no-scroll{overflow-x:auto!important;}
  .dashboard-jobs-table-compact{min-width:1120px!important;width:1120px!important;}
}

/* v31.162 dashboard font boost: increase dashboard job-list row text by ~40%. */
.dashboard-table-card,
.dashboard-table-no-scroll{
  overflow-x:auto!important;
}
.dashboard-jobs-table-compact{
  min-width:1568px!important;
  width:100%!important;
}
.dashboard-jobs-table-compact thead th{
  font-size:15.1px!important;
  line-height:1.12!important;
  padding:6px 5px!important;
}
.dashboard-jobs-table-compact tbody td{
  font-size:16.1px!important;
  line-height:1.24!important;
  padding:7px 5px!important;
}
.dashboard-jobs-table-compact tbody .job-num{
  font-size:15.8px!important;
}
.dashboard-jobs-table-compact tbody .status-pill,
.dashboard-jobs-table-compact tbody .price-status-badge,
.dashboard-jobs-table-compact tbody .payment-badge{
  font-size:14.7px!important;
  line-height:1.15!important;
  padding:5px 7px!important;
  border-radius:9px!important;
}
.dashboard-jobs-table-compact .create-similar-inline button.small{
  font-size:13.3px!important;
  line-height:1.1!important;
  padding:4px 5px!important;
}
@media(max-width:1100px){
  .dashboard-jobs-table-compact{min-width:1568px!important;width:1568px!important;}
}


/* v31.165 artwork upload status bars */
.artwork-upload-status{background:#fff;border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin:8px 0 12px;box-shadow:0 1px 4px rgba(15,47,87,.05)}
.artwork-upload-status-top{display:flex;justify-content:space-between;gap:12px;align-items:center;font-weight:800;color:var(--navy);margin-bottom:6px}
.artwork-upload-status-pct{font-variant-numeric:tabular-nums;color:#334155;white-space:nowrap}
.artwork-upload-track{height:12px;background:#e5e7eb;border-radius:999px;overflow:hidden;border:1px solid var(--border)}
.artwork-upload-bar{height:100%;width:0%;background:var(--accent);border-radius:999px;transition:width .25s ease}
.artwork-upload-detail{margin:7px 0 0;overflow-wrap:anywhere}
.artwork-upload-status[data-state="idle"] .artwork-upload-bar{background:#cbd5e1}
.artwork-upload-status[data-state="ready"] .artwork-upload-bar{background:#15803d}
.artwork-upload-status[data-state="uploading"] .artwork-upload-bar{background:var(--accent)}
.artwork-upload-status[data-state="error"] .artwork-upload-bar{background:#b91c1c}

/* v31.166 mail-owner wizard gate */
.field-error{border-color:#b91c1c!important;box-shadow:0 0 0 2px rgba(185,28,28,.15)!important;background:#fff7f7!important}
#mail_owner_step_error{font-weight:700;color:#7c2d12}


/* v31.167 artwork preflight progress bar */
.preflight-check-progress{margin-top:10px;margin-bottom:14px;background:#f8fbff}
.preflight-check-progress .artwork-upload-status-label{font-size:1rem}
.artwork-upload-status[data-state="complete"] .artwork-upload-bar{background:#15803d}

/* v31.168 hide broken preflight preview while upload/check is running */
.preflight-preview-stage img:not([src]){display:none!important}

/* v31.172 admin dashboard / drop shipment quick-edit helpers */
.dashboard-mini-links{margin-top:4px;}
.dashboard-mini-links .small-link{display:inline-block;font-size:10px;line-height:1.05;padding:3px 5px;border:1px solid #b8c4d6;border-radius:6px;background:#f6f8fb;color:#1f3b63;text-decoration:none;}
.drop-ship-admin-card{border-left:4px solid #1f5fa8;}
.drop-ship-admin-card .dashboard-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:10px;margin:10px 0 14px;}
.drop-ship-admin-card .dashboard-summary-grid>div{background:#f6f8fb;border:1px solid #d7e0ec;border-radius:8px;padding:8px 10px;}
.quick-drop-form .grid{margin-top:8px;}
@media (max-width:900px){.drop-ship-admin-card .dashboard-summary-grid{grid-template-columns:repeat(2,minmax(130px,1fr));}}


/* v31.173: Show preliminary postage as superseded once final postage is entered. */
.dashboard-overridden-estimate{
  text-decoration: line-through;
  text-decoration-thickness: 2px;
  text-decoration-color: currentColor;
  opacity: .7;
  white-space: nowrap;
}

/* v31.174: sales-tax notice and final total hero in Financial Summary. */
.sales-tax-notice{
  margin:10px 0 12px;
  padding:10px 12px;
  border:1px solid #9ec5eb;
  background:#eaf2fb;
  border-radius:10px;
  font-size:.95rem;
  color:#0F3A63;
}
.final-total-hero{
  margin-top:14px;
  border-color:#0f3b63;
}
.final-total-hero .postage-hero-label{
  text-transform:none;
}

/* v31.192: make linked admin tabs (Drop Shipment Plan) match button tabs exactly. */
.admin-tabs a.tab-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-decoration:none;
  font:inherit;
  line-height:normal;
  box-sizing:border-box;
}


/* v31.194: normalize admin tab fonts, including linked Drop Shipment Plan tab. */
.admin-tabs .tab-button,
.admin-tabs a.tab-button,
.admin-tabs button.tab-button{
  font-family: Arial, Helvetica, sans-serif;
  font-size: 13.3333px;
  font-weight: 700;
  line-height: normal;
  vertical-align: middle;
}
.admin-tabs a.tab-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

/* v31.197 Track & Trace parsed report */
.track-trace-report .dashboard-summary-grid{margin:10px 0 14px;}
.track-trace-table th,.track-trace-table td{white-space:nowrap;text-align:right;}
.track-trace-table th:first-child,.track-trace-table td:first-child{text-align:left;white-space:normal;min-width:210px;}
.track-trace-table .total-row{background:#f2f5f9;}
.table-scroll{overflow-x:auto;}
.button.small{font-size:.85rem;padding:4px 8px;}


.preflight-check-results{margin-top:12px;}
.preflight-check-results h3{margin:10px 0 8px;}
.preflight-check-results ul{columns:2;column-gap:34px;margin:0;padding-left:20px;}
.preflight-check-results li{break-inside:avoid;margin:0 0 6px;}
@media (max-width: 900px){.preflight-check-results ul{columns:1;}.preflight-box{width:96%;padding:16px;}.preflight-modal{padding:10px;}}

/* v31.208: allow six-decimal postage/service unit-price entry without cramped fields */
input[name="billing_price[]"], input[name="service_price[]"]{min-width:9.5em;}

/* v31.215 payment badge separated from Job Art Preview heading */
.job-info-art-panel{position:relative;}
.payment-art-status-row{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  margin:-2px 0 8px;
  width:100%;
  clear:both;
}
.payment-art-status-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:96px;
  padding:7px 14px;
  border-radius:999px;
  font-weight:900;
  font-size:18px;
  letter-spacing:.08em;
  line-height:1;
  border:2px solid transparent;
  box-shadow:0 1px 2px rgba(15,23,42,.12);
}
.payment-art-status-badge.paid{background:#dcfce7;color:#14532d;border-color:#22c55e;}
.payment-art-status-badge.unpaid{background:#fee2e2;color:#7f1d1d;border-color:#ef4444;}
@media (max-width:700px){.payment-art-status-badge{font-size:15px;min-width:78px;padding:6px 10px;}.payment-art-status-row{justify-content:flex-start;}}

/* v31.214 multi-page PDF artwork page selection */
.preflight-page-select{margin:10px 0;background:#f8fafc;border-left:4px solid var(--accent);}
.preflight-page-select h3{margin-top:0;}
.preflight-page-select-row{display:grid;grid-template-columns:minmax(220px, 1fr) auto;gap:12px;align-items:end;}
.preflight-page-select-row label{margin:0;}
.preflight-page-select-row input{font-size:1rem;padding:8px;}
@media (max-width: 780px){.preflight-page-select-row{grid-template-columns:1fr;}.preflight-page-select-row button{width:100%;}}

/* v31.217: move payment badge above Job Art Preview heading and group envelope package proofs */
.payment-art-status-row-above-heading{margin:0 0 8px;}
.envelope-package-proof-group{border-left:4px solid var(--accent);background:#f8fafc;}
.proof-package-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:8px;}
.proof-page-label{font-weight:800;color:#1e3a8a;}
@media (max-width:700px){.payment-art-status-row-above-heading{justify-content:flex-end;}}

/* v31.220: envelope package art preview + proof release controls */
.job-art-preview-grid{display:grid;grid-template-columns:1fr;gap:12px;}
.job-art-preview-grid.multi{grid-template-columns:repeat(2, minmax(0, 1fr));align-items:start;}
.job-art-preview-item-title{font-weight:900;color:#12345c;margin:0 0 6px;text-align:center;}
.job-art-preview-item .note{font-size:.85rem;margin:6px 0 0;}
.proof-package-button{min-width:230px;text-align:center;display:inline-flex;align-items:center;justify-content:center;min-height:42px;box-sizing:border-box;}
.inline-proof-release-form{display:inline-flex;margin:0;}
.proof-package-release-actions{margin-top:10px;}
@media (max-width:800px){.job-art-preview-grid.multi{grid-template-columns:1fr;}.proof-package-button{width:100%;}.inline-proof-release-form{width:100%;}}
/* v31.223 package proof release/replace workflow */
.proof-package-admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px;margin-top:12px;align-items:start;}
.proof-package-admin-card{border:1px solid #d6e0ea;border-radius:12px;padding:12px;background:#fbfdff;}
.proof-package-admin-card h4{margin:0 0 8px 0;color:#173b63;}
.replace-package-proof-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px;}
.replace-package-proof-form input[type=file]{max-width:100%;font-size:.9rem;}
.replace-package-proof-form .proof-package-button,.proof-package-admin-card .proof-package-button{min-width:230px;min-height:42px;justify-content:center;}
@media(max-width:800px){.replace-package-proof-form .proof-package-button,.proof-package-admin-card .proof-package-button{width:100%;}}

/* v31.227 fit-to-window proof viewer */
.proof-viewer-page.fit-window-proof-viewer,
.proof-share-public.fit-window-proof-viewer,
.compact-proof-viewer-page.fit-window-proof-viewer{
  max-width: min(1920px, calc(100vw - 20px));
  width: calc(100vw - 20px);
  margin: 6px auto;
}
.fit-window-proof-viewer .proof-review-tight,
.fit-window-proof-viewer .proof-decision-tight,
.fit-window-proof-viewer .proof-file-viewer-tight{
  margin-top: 4px;
  margin-bottom: 4px;
  padding: 7px 10px;
}
.fit-window-proof-viewer .proof-review-title-row h1{font-size:1.15rem;}
.fit-window-proof-viewer .proof-review-title-row p{font-size:.86rem;line-height:1.18;}
.fit-window-proof-viewer .proof-image-scrollbox{
  max-height: calc(100vh - 215px);
  min-height: 0;
  width: 100%;
  display:flex;
  align-items:flex-start;
  justify-content:center;
  overflow:auto;
  padding: 8px;
  background:#eef3f8;
}
.fit-window-proof-viewer .proof-page-image{
  max-width: 100%;
  max-height: calc(100vh - 235px);
  width: auto;
  height: auto;
  object-fit: contain;
  image-rendering: auto;
}
.fit-window-proof-viewer .proof-viewer-toolbar{position:sticky;top:0;z-index:5;background:#fff;padding:4px 0;}
@media(max-width:800px){
  .proof-viewer-page.fit-window-proof-viewer,
  .proof-share-public.fit-window-proof-viewer,
  .compact-proof-viewer-page.fit-window-proof-viewer{width:calc(100vw - 8px);max-width:calc(100vw - 8px);}
  .fit-window-proof-viewer .proof-image-scrollbox{max-height:calc(100vh - 245px);min-height:0;}
  .fit-window-proof-viewer .proof-page-image{max-height:calc(100vh - 265px);}
}
/* v31.234 status color refinements */
.status-pill.status-delivery-pending{background:#7c3aed!important;color:#fff!important;}
.status-pill.status-ready-pickup{background:#0f766e!important;color:#fff!important;}


/* v31.239 dashboard filters, bright proof pending, estimate builder, proof zoom */
.dashboard-filter-row{gap:10px;align-items:end;}
.dashboard-filter-row input[type=search]{min-width:280px;flex:2 1 320px;}
.inline-filter-label{font-size:.82rem;font-weight:800;color:#24384f;display:flex;flex-direction:column;gap:3px;margin:0;}
.inline-filter-label select{min-width:190px;}
.custom-date-filter{max-width:150px;}
.status-pill.status-pending-proof-approval{background:#ffea00!important;color:#2d2500!important;border:1px solid #d8b900!important;box-shadow:0 0 0 2px rgba(255,234,0,.25);}
.dashboard-jobs-table tr:has(.status-pending-proof-approval){background:#fffbe6;}
.estimate-builder-card textarea{font-family:inherit;}
.estimate-builder-form{display:grid;grid-template-columns:1fr;gap:10px;}
.button-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.inline-form{display:inline-block;margin:0;}
.proof-zoom-button{font-weight:900;min-width:42px;}
.proof-zoom-label{font-weight:900;color:#173b63;min-width:44px;text-align:center;}
.fit-window-proof-viewer .proof-page-image{transform-origin:top center;}

/* v31.241: contain Printing Components columns inside section */
.print-components-card{overflow:hidden;}
.print-components-card .subcard{overflow:hidden;max-width:100%;}
.print-components-table-wrap{display:block;width:100%;max-width:100%;overflow-x:auto!important;overflow-y:visible;border:1px solid var(--border);border-radius:10px;background:#fff;margin:8px 0 14px;-webkit-overflow-scrolling:touch;}
.print-components-table{width:1460px!important;min-width:1460px!important;max-width:none!important;table-layout:fixed;font-size:12px;}
.print-components-table th,.print-components-table td{box-sizing:border-box;overflow:hidden;vertical-align:top;}
.print-components-table input,.print-components-table select,.print-components-table textarea{box-sizing:border-box;width:100%;max-width:100%;min-width:0;font-size:12px;padding:6px 5px;}
.print-components-table small{display:block;line-height:1.2;overflow-wrap:anywhere;}
.print-components-table .vendor-other-input{display:block;margin-top:6px;}
.print-components-table th:nth-child(1),.print-components-table td:nth-child(1){width:170px;}
.print-components-table th:nth-child(2),.print-components-table td:nth-child(2){width:80px;}
.print-components-table th:nth-child(3),.print-components-table td:nth-child(3){width:150px;}
.print-components-table th:nth-child(4),.print-components-table td:nth-child(4){width:125px;}
.print-components-table th:nth-child(5),.print-components-table td:nth-child(5){width:175px;}
.print-components-table th:nth-child(6),.print-components-table td:nth-child(6){width:145px;}
.print-components-table th:nth-child(7),.print-components-table td:nth-child(7){width:135px;}
.print-components-table th:nth-child(8),.print-components-table td:nth-child(8){width:115px;}
.print-components-table th:nth-child(9),.print-components-table td:nth-child(9){width:120px;}
.print-components-table th:nth-child(10),.print-components-table td:nth-child(10){width:125px;}
.print-components-table th:nth-child(11),.print-components-table td:nth-child(11){width:90px;}
@media(max-width:1700px){.print-components-table-wrap{overflow-x:auto!important}.print-components-table{width:1460px!important;min-width:1460px!important;}}

.section-total-bar{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:16px;
  margin:12px 0 14px;
  padding:12px 14px;
  border:1px solid #d7e0ea;
  border-radius:10px;
  background:#f8fafc;
  font-size:1.02rem;
}
.section-total-bar span{font-weight:700;color:#1f3554;}
.section-total-bar strong{font-size:1.15rem;color:#111827;min-width:120px;text-align:right;}


/* v31.248 dashboard filter alignment: Date Range, Start, and End grouped as one filter element */
.dashboard-filter-grid{display:grid;grid-template-columns:minmax(340px,2fr) minmax(460px,2.15fr) minmax(210px,1.05fr) auto;gap:12px;align-items:end;}
.dashboard-filter-grid label{display:flex;flex-direction:column;gap:6px;margin:0;font-weight:800;color:var(--navy);min-width:0;}
.dashboard-filter-grid label span{line-height:1.1;min-height:18px;}
.dashboard-filter-grid input,.dashboard-filter-grid select{width:100%;box-sizing:border-box;margin:0;min-height:40px;}
.dashboard-date-range-group{display:grid;grid-template-columns:minmax(150px,1.05fr) minmax(140px,.95fr) minmax(140px,.95fr);gap:10px;align-items:end;min-width:0;}
.dashboard-date-range-group label{min-width:0;}
.dashboard-date-range-select select{min-width:0;}
.dashboard-date-range-group .custom-date-filter{max-width:none;}
.dashboard-filter-buttons{display:flex;gap:8px;align-items:center;justify-content:flex-end;min-height:40px;align-self:end;}
.dashboard-filter-buttons button,.dashboard-filter-buttons .button{height:40px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;margin:0;}
.impersonation-banner{display:flex;align-items:center;gap:12px;justify-content:space-between;}
@media(max-width:1200px){.dashboard-filter-grid{grid-template-columns:1fr 1fr}.dashboard-filter-search,.dashboard-date-range-group{grid-column:1/-1}.dashboard-filter-buttons{justify-content:flex-start}}
@media(max-width:720px){.dashboard-filter-grid{grid-template-columns:1fr}.dashboard-date-range-group{grid-template-columns:1fr}.dashboard-filter-buttons{justify-content:flex-start;flex-wrap:wrap}}


/* v31.244 graphic trial: dashboard cards, job progress, proof/upload/pickup visuals */
.dashboard-status-card-grid{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:12px;margin:10px 0 20px;align-items:stretch;}
.dashboard-status-card{display:grid;grid-template-columns:auto 1fr;grid-template-areas:'icon count' 'icon label';gap:2px 10px;align-items:center;background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px;text-decoration:none;color:var(--navy);box-shadow:0 2px 10px rgba(15,47,87,.08);min-height:74px;}
.dashboard-status-card:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(15,47,87,.15);border-color:#9db9d8;}
.dashboard-status-icon{grid-area:icon;width:42px;height:42px;border-radius:14px;background:#eef5ff;display:flex;align-items:center;justify-content:center;font-size:22px;}
.dashboard-status-count{grid-area:count;font-size:1.7rem;line-height:1;font-weight:900;color:var(--navy);}
.dashboard-status-label{grid-area:label;font-size:.84rem;font-weight:800;color:#475569;line-height:1.15;}
.dashboard-status-card-proof{background:#fffbea;border-color:#facc15;}
.dashboard-status-card-proof .dashboard-status-icon{background:#ffea00;color:#111827;}
.dashboard-status-card-production .dashboard-status-icon{background:#dbeafe;}
.dashboard-status-card-pickup .dashboard-status-icon{background:#ccfbf1;}
.dashboard-status-card-complete .dashboard-status-icon{background:#dcfce7;}
.dashboard-status-card-files .dashboard-status-icon{background:#fee2e2;}
.dashboard-status-card-artwork .dashboard-status-icon{background:#f3e8ff;}
.graphic-eyebrow{display:inline-block;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;font-weight:900;color:#334155;margin-bottom:4px;}
.job-status-graphic-card{border:1px solid #dbe7f3;background:linear-gradient(180deg,#ffffff,#f8fbff);}
.job-status-graphic-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:16px;}
.job-status-graphic-head h2{margin:0;color:var(--navy);font-size:1.35rem;}
.job-progress-rail{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:10px;position:relative;}
.job-progress-step{position:relative;border:1px solid var(--border);background:#fff;border-radius:14px;padding:12px 10px 11px;text-align:center;min-height:88px;box-sizing:border-box;}
.job-progress-step:before{content:'';position:absolute;left:-10px;top:30px;width:10px;height:3px;background:var(--border);}
.job-progress-step:first-child:before{display:none;}
.job-progress-dot{width:32px;height:32px;border-radius:999px;background:#e2e8f0;color:#475569;font-weight:900;display:flex;align-items:center;justify-content:center;margin:0 auto 7px;}
.job-progress-label{font-weight:900;color:var(--navy);font-size:.9rem;line-height:1.1;}
.job-progress-caption{font-size:.75rem;color:#334155;line-height:1.2;margin-top:4px;}
.job-progress-step.complete{background:#eff6ff;border-color:#93c5fd;}
.job-progress-step.complete:before{background:#1E88E5;}
.job-progress-step.complete .job-progress-dot{background:#1E88E5;color:#fff;}
.job-progress-step.current{background:#fefce8;border-color:#fde047;box-shadow:0 0 0 3px rgba(250,204,21,.20);}
.job-progress-step.current .job-progress-dot{background:#F5B301;color:#3a2e00;}
.status-graphic-problem{border-color:#fca5a5;background:#fff7f7;}
.graphic-warning{margin-top:12px;background:#fff2cc;border:1px solid #f59e0b;border-radius:10px;padding:10px;font-weight:700;color:#7c2d12;}
.ready-pickup-graphic-card{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;border:2px solid #14b8a6;background:linear-gradient(135deg,#ecfdf5,#ffffff);}
.ready-pickup-icon{width:62px;height:62px;border-radius:20px;background:#ccfbf1;display:flex;align-items:center;justify-content:center;font-size:34px;}
.ready-pickup-graphic-card h2{margin:0 0 8px;color:#0f766e;}
.ready-pickup-graphic-card p{margin:5px 0;}
.proof-visual-panel{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;border:1px solid var(--border);border-radius:14px;background:#f8fafc;padding:14px;margin:12px 0 16px;}
.proof-visual-icon{width:54px;height:54px;border-radius:18px;background:#dbeafe;color:#1e40af;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:900;}
.proof-visual-copy h3{margin:0 0 4px;color:var(--navy);}
.proof-visual-copy p{margin:0;color:#475569;line-height:1.35;}
.proof-visual-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end;}
.proof-action-hint{font-size:.82rem;font-weight:900;border-radius:999px;background:#fff7ed;color:#9a3412;padding:5px 9px;white-space:nowrap;}
.proof-action-hint.approved{background:#dcfce7;color:#166534;}.proof-action-hint.rejected{background:#fee2e2;color:#991b1b;}
.proof-visual-approved{background:#f0fdf4;border-color:#86efac;}.proof-visual-approved .proof-visual-icon{background:#16a34a;color:#fff;}
.proof-visual-rejected{background:#fff7f7;border-color:#fca5a5;}.proof-visual-rejected .proof-visual-icon{background:#b91c1c;color:#fff;}
.proof-visual-pending{background:#fffbea;border-color:#fde047;}.proof-visual-pending .proof-visual-icon{background:#ffea00;color:#111827;}
.proof-visual-empty .proof-visual-icon{background:#e2e8f0;color:#475569;}
.upload-graphic-zone{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;border:2px dashed #93b5d8;background:#f8fbff;border-radius:14px;padding:16px;margin:12px 0 16px;color:var(--navy);}
.upload-graphic-icon{width:56px;height:56px;border-radius:18px;background:#e8f2ff;color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:900;}
.upload-graphic-zone b{font-size:1.05rem;color:var(--navy);}.upload-graphic-zone span{color:#475569;}
@media(max-width:1250px){.dashboard-status-card-grid{grid-template-columns:repeat(3,minmax(0,1fr));}.job-progress-rail{grid-template-columns:repeat(3,minmax(0,1fr));}.job-progress-step:nth-child(4):before{display:none;}}
@media(max-width:760px){.dashboard-status-card-grid{grid-template-columns:1fr 1fr}.job-status-graphic-head{flex-direction:column}.job-progress-rail{grid-template-columns:1fr}.job-progress-step:before{display:none}.proof-visual-panel{grid-template-columns:1fr;text-align:left}.proof-visual-actions{align-items:flex-start}.ready-pickup-graphic-card,.upload-graphic-zone{grid-template-columns:1fr}.dashboard-status-card{grid-template-columns:auto 1fr;}}

/* v31.244 proof viewer decision visual panel */
.proof-decision-visual-card{border-left:5px solid var(--accent);background:linear-gradient(180deg,#ffffff,#f8fbff);}
.proof-decision-visual-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;margin-bottom:8px;}
.proof-decision-visual-icon{width:50px;height:50px;border-radius:18px;background:#dbeafe;color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:900;}
.proof-decision-visual-head h2{margin:0 0 3px;color:var(--navy);}
.proof-decision-visual-head p{margin:0;}
@media(max-width:760px){.proof-decision-visual-head{grid-template-columns:1fr}.proof-decision-visual-icon{width:44px;height:44px}}


/* v31.244 finish: proof decision, estimate steps, empty states, section icon polish */
.service-components-card h2:before{content:'🧰 ';}
.print-components-card h2:before{content:'🖨️ ';}
.postage-components-card h2:before{content:'💌 ';}
.payment-release-page-card h2:before{content:'🧾 ';}
.proof-page-card h2:before{content:'🔎 ';}
.finance-page-card h2:before{content:'📊 ';}
.card>h2:first-child:has(+ .note):before{vertical-align:baseline;}
.empty-graphic-state{display:flex;gap:12px;align-items:center;border:1px dashed #cbd5e1;border-radius:14px;background:#f8fafc;padding:16px;margin:10px 0;}
.empty-graphic-icon{width:46px;height:46px;border-radius:14px;background:#e0f2fe;display:flex;align-items:center;justify-content:center;font-size:24px;flex:0 0 auto;}
.empty-graphic-state b{display:block;color:var(--navy);}.empty-graphic-state span{display:block;color:#334155;margin-top:2px;}
.proof-decision-heading{display:flex;align-items:center;gap:8px;margin-bottom:8px!important;color:var(--navy);}
.proof-decision-visual{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:8px 0 12px;}
.proof-decision-visual>div{border:1px solid var(--border);border-radius:12px;background:#f8fbff;padding:12px;}
.proof-decision-visual b{display:block;color:var(--navy);}.proof-decision-visual small{display:block;color:#334155;margin-top:2px;line-height:1.25;}
.estimate-visual-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0 18px;}
.estimate-visual-steps>div{display:flex;gap:12px;align-items:center;border:1px solid var(--border);border-radius:14px;background:#f8fbff;padding:14px;}
.estimate-visual-steps b{width:36px;height:36px;border-radius:999px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.estimate-visual-steps span{display:block;font-weight:900;color:var(--navy);}.estimate-visual-steps small{display:block;color:#334155;line-height:1.25;}
.mini-upload-graphic{display:flex;gap:10px;align-items:center;border:1px dashed #bfdbfe;background:#eff6ff;border-radius:12px;padding:12px;margin:8px 0 12px;}
.mini-upload-graphic span{font-size:28px;}.mini-upload-graphic b{display:block;color:var(--navy);}.mini-upload-graphic small{display:block;color:#475569;}
@media(max-width:760px){.proof-decision-visual,.estimate-visual-steps{grid-template-columns:1fr}.empty-graphic-state{align-items:flex-start}}


.invoice-total-breakdown{
  margin-top:10px;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:8px 14px;
  font-size:.95rem;
  color:var(--navy);
}
.invoice-total-breakdown span{
  display:block;
  background:rgba(255,255,255,.65);
  border:1px solid rgba(11,47,91,.14);
  border-radius:8px;
  padding:8px 10px;
}

/* v31.247: Printing Components available-space layout, Customers admin spacing, completed-job customer upload lock */
main.job-detail-wide{max-width:1880px;width:calc(100vw - 44px);}
.print-components-card{overflow:visible!important;}
.print-components-card .subcard{overflow:visible!important;max-width:100%;}
.print-components-table-wrap{width:100%;max-width:100%;overflow-x:auto!important;overflow-y:visible;border:1px solid var(--border);border-radius:10px;background:#fff;margin:8px 0 14px;-webkit-overflow-scrolling:touch;}
.print-components-table{width:100%!important;min-width:1280px!important;max-width:none!important;table-layout:fixed!important;font-size:12px;}
.print-components-table th,.print-components-table td{padding:8px 6px;box-sizing:border-box;vertical-align:top;overflow:hidden;}
.print-components-table input,.print-components-table select,.print-components-table textarea{width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box;font-size:12px;padding:6px 5px;margin-top:0;}
.print-components-table select{white-space:normal;text-overflow:ellipsis;}
.print-components-table small{display:block;line-height:1.2;margin-top:5px;overflow-wrap:anywhere;color:#334155;}
.print-components-table .vendor-other-input{display:block;margin-top:6px!important;}
.print-components-table .delete-row-btn{width:100%;padding-left:4px;padding-right:4px;white-space:normal;line-height:1.1;}
.print-components-table th:nth-child(1),.print-components-table td:nth-child(1){width:14%;}
.print-components-table th:nth-child(2),.print-components-table td:nth-child(2){width:6%;}
.print-components-table th:nth-child(3),.print-components-table td:nth-child(3){width:13%;}
.print-components-table th:nth-child(4),.print-components-table td:nth-child(4){width:10%;}
.print-components-table th:nth-child(5),.print-components-table td:nth-child(5){width:13%;}
.print-components-table th:nth-child(6),.print-components-table td:nth-child(6){width:10%;}
.print-components-table th:nth-child(7),.print-components-table td:nth-child(7){width:9%;}
.print-components-table th:nth-child(8),.print-components-table td:nth-child(8){width:7%;}
.print-components-table th:nth-child(9),.print-components-table td:nth-child(9){width:7%;}
.print-components-table th:nth-child(10),.print-components-table td:nth-child(10){width:7%;}
.print-components-table th:nth-child(11),.print-components-table td:nth-child(11){width:4%;}
@media(max-width:1320px){.print-components-table{min-width:1280px!important;}.print-components-table-wrap{overflow-x:auto!important;}}

main.customers-admin-wide{max-width:1680px;width:calc(100vw - 44px);}
.admin-customers-page .page-action-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:6px 0 18px;}
.admin-customer-create-card{overflow:hidden;}
.admin-customer-create-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:14px 16px;align-items:end;}
.admin-customer-create-grid label{margin:0;min-width:0;}
.admin-customer-create-grid input,.admin-customer-create-grid select,.admin-customer-create-grid textarea{margin-top:5px;}
.admin-customer-create-grid .full{grid-column:1 / -1;}
.customer-form-subcard{margin:0;padding:16px;border:1px solid var(--border);border-radius:10px;background:#f8fbff;}
.customer-form-subcard h3{margin:0 0 6px;color:var(--navy);}
.customer-email-settings-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:14px;align-items:end;}
.form-submit-row{display:flex;justify-content:flex-start;align-items:center;}
.customers-table-wrap{width:100%;max-width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:#fff;-webkit-overflow-scrolling:touch;}
.customers-admin-table{min-width:1500px;table-layout:fixed;font-size:13px;}
.customers-admin-table th,.customers-admin-table td{padding:9px 8px;vertical-align:middle;overflow-wrap:anywhere;}
.customers-admin-table th:nth-child(1),.customers-admin-table td:nth-child(1){width:14%;}
.customers-admin-table th:nth-child(2),.customers-admin-table td:nth-child(2){width:8%;}
.customers-admin-table th:nth-child(3),.customers-admin-table td:nth-child(3){width:14%;}
.customers-admin-table th:nth-child(4),.customers-admin-table td:nth-child(4){width:8%;}
.customers-admin-table th:nth-child(5),.customers-admin-table td:nth-child(5){width:9%;}
.customers-admin-table th:nth-child(6),.customers-admin-table td:nth-child(6){width:6%;}
.customers-admin-table th:nth-child(7),.customers-admin-table td:nth-child(7){width:6%;}
.customers-admin-table th:nth-child(8),.customers-admin-table td:nth-child(8){width:8%;}
.customers-admin-table th:nth-child(9),.customers-admin-table td:nth-child(9){width:8%;}
.customers-admin-table th:nth-child(10),.customers-admin-table td:nth-child(10){width:8%;}
.customers-admin-table th:nth-child(11),.customers-admin-table td:nth-child(11){width:11%;}
.customer-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.customer-actions form{display:inline-flex;margin:0;}
.customer-actions .button,.customer-actions button{margin:0;white-space:nowrap;}
.disabled-tab,.tab-button:disabled{opacity:.55;cursor:not-allowed;background:#94a3b8!important;color:#fff!important;}
.upload-locked-card{border-left:5px solid #64748b;}
.upload-locked-zone{border-color:#cbd5e1;background:#f8fafc;color:#334155;}
.upload-locked-zone .upload-graphic-icon{background:#e2e8f0;color:#475569;}
@media(max-width:1150px){main.customers-admin-wide{width:auto;max-width:1200px;}.admin-customer-create-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.customer-email-settings-grid{grid-template-columns:1fr;}.customers-admin-table{min-width:1320px;}}
@media(max-width:720px){.admin-customer-create-grid{grid-template-columns:1fr;}.page-action-row .button{width:100%;text-align:center;}.customer-actions{align-items:flex-start;}}


/* v31.247: layout polish for printing components, admin customers, and completed customer uploads */
.print-components-table-wrap{width:100%;max-width:100%;overflow-x:auto!important;}
.print-components-table{width:100%!important;min-width:1320px!important;max-width:none!important;table-layout:fixed!important;}
.print-components-table th,.print-components-table td{vertical-align:middle;overflow:visible;}
.print-components-table td:first-child,.print-components-table th:first-child{padding-left:8px;}
.print-components-table td:last-child,.print-components-table th:last-child{padding-right:8px;}
.print-components-table input,.print-components-table select{width:100%;min-width:0;max-width:100%;}
.print-components-table .vendor-other-input{margin-top:5px;}
.print-components-table .delete-row-btn{width:100%;white-space:normal;line-height:1.15;padding-left:4px;padding-right:4px;}
.print-components-table th:nth-child(1),.print-components-table td:nth-child(1){width:13.5%!important;}
.print-components-table th:nth-child(2),.print-components-table td:nth-child(2){width:5.5%!important;}
.print-components-table th:nth-child(3),.print-components-table td:nth-child(3){width:12%!important;}
.print-components-table th:nth-child(4),.print-components-table td:nth-child(4){width:8.5%!important;}
.print-components-table th:nth-child(5),.print-components-table td:nth-child(5){width:13%!important;}
.print-components-table th:nth-child(6),.print-components-table td:nth-child(6){width:11%!important;}
.print-components-table th:nth-child(7),.print-components-table td:nth-child(7){width:9%!important;}
.print-components-table th:nth-child(8),.print-components-table td:nth-child(8){width:7.5%!important;}
.print-components-table th:nth-child(9),.print-components-table td:nth-child(9){width:7%!important;}
.print-components-table th:nth-child(10),.print-components-table td:nth-child(10){width:8%!important;}
.print-components-table th:nth-child(11),.print-components-table td:nth-child(11){width:5%!important;}
.customers-admin-wide{max-width:1680px;width:calc(100vw - 44px);}
.customer-page-actions{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 16px;align-items:center;}
.customer-create-card,.customer-list-card{overflow:hidden;}
.customer-create-grid{grid-template-columns:repeat(3,minmax(220px,1fr));gap:14px 18px;align-items:start;}
.customer-create-grid label{margin:0;}
.customer-create-grid .full{grid-column:1/-1;}
.customer-create-grid .customer-settings-subcard{margin:0;padding:14px;background:#f8fafc;border-color:var(--border);}
.customer-create-grid .customer-settings-subcard label{margin:8px 0;}
.customer-email-settings-grid{grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;}
.customer-create-submit{display:flex;justify-content:flex-end;}
.customer-admin-table-wrap{width:100%;max-width:100%;overflow-x:auto;}
.customer-admin-table{min-width:1500px;table-layout:fixed;width:100%;}
.customer-admin-table th,.customer-admin-table td{vertical-align:middle;overflow-wrap:anywhere;word-break:normal;line-height:1.25;}
.customer-admin-table th:nth-child(1),.customer-admin-table td:nth-child(1){width:12%;}
.customer-admin-table th:nth-child(2),.customer-admin-table td:nth-child(2){width:8%;}
.customer-admin-table th:nth-child(3),.customer-admin-table td:nth-child(3){width:13%;}
.customer-admin-table th:nth-child(4),.customer-admin-table td:nth-child(4){width:7%;}
.customer-admin-table th:nth-child(5),.customer-admin-table td:nth-child(5){width:8%;}
.customer-admin-table th:nth-child(6),.customer-admin-table td:nth-child(6){width:6%;}
.customer-admin-table th:nth-child(7),.customer-admin-table td:nth-child(7){width:7%;}
.customer-admin-table th:nth-child(8),.customer-admin-table td:nth-child(8){width:10%;}
.customer-admin-table th:nth-child(9),.customer-admin-table td:nth-child(9){width:8%;}
.customer-admin-table th:nth-child(10),.customer-admin-table td:nth-child(10){width:8%;}
.customer-admin-table th:nth-child(11),.customer-admin-table td:nth-child(11){width:13%;}
.customer-table-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.customer-table-actions form{display:inline;margin:0;}
.customer-table-actions .small,.customer-table-actions button.small{white-space:nowrap;line-height:1.15;}
.disabled-tab,.tab-button-disabled,.tab-button:disabled{background:#eef2f7!important;color:#475569!important;border-color:#cbd5e1!important;cursor:not-allowed!important;box-shadow:none!important;}
.upload-locked-card .upload-graphic-zone,.upload-closed-notice{border-color:var(--border);background:#f8fafc;}
@media(max-width:1100px){.customer-create-grid,.customer-email-settings-grid{grid-template-columns:1fr;}.customers-admin-wide{width:auto;}}

/* v31.249 Xero invoice preview/integration UI */
.xero-invoice-panel { border-left: 5px solid #0f6ea8; }
.xero-status-strip { display: flex; flex-wrap: wrap; gap: 10px; align-items: stretch; margin: 10px 0 14px; }
.xero-status-strip span { background: #f4f7fb; border: 1px solid #dce5ef; border-radius: 8px; padding: 8px 10px; }
.xero-preview-wrap { overflow-x: auto; }
.xero-preview-table { min-width: 780px; }
.xero-preview-table code { white-space: nowrap; }
.table-total-row td { font-weight: 700; background: #f8fafc; }
.xero-status-grid .subcard { min-height: 70px; }

/* v31.257: keep payment badge next to Job Information heading, not in art preview */
.job-info-heading-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px;}
.job-info-heading-row h2{margin:0;}
.job-info-payment-badge{display:inline-flex;align-items:center;justify-content:center;min-width:78px;padding:5px 10px;font-size:14px;line-height:1;}

.xero-preview-table td:nth-child(3) { white-space: pre-line; }


/* v31.263: customer getting started guide/help section */
.customer-help-wide{max-width:1380px;width:calc(100vw - 44px);}
.help-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,540px);gap:28px;align-items:center;overflow:hidden;background:linear-gradient(135deg,#f8fbff 0%,#eef6ff 52%,#ffffff 100%);border:1px solid #dbe7f5;}
.help-hero h1{margin:6px 0 10px;color:var(--navy);font-size:clamp(30px,4vw,48px);line-height:1.05;}
.help-lead{font-size:18px;line-height:1.55;color:#334155;max-width:760px;}
.help-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px;}
.help-hero-image{border:1px solid #dbe7f5;border-radius:18px;background:#fff;box-shadow:0 18px 40px rgba(15,46,83,.12);padding:10px;}
.help-hero-image img,.help-sample-screen{display:block;width:100%;height:auto;border-radius:14px;}
.help-page-shell{display:grid;grid-template-columns:260px minmax(0,1fr);gap:22px;align-items:start;margin:22px 0;}
.help-toc{position:sticky;top:18px;padding:18px;}
.help-toc h2{font-size:18px;margin:0 0 12px;color:var(--navy);}
.help-toc a{display:block;padding:9px 10px;border-radius:8px;color:var(--navy);text-decoration:none;border:1px solid transparent;}
.help-toc a:hover{background:#f1f7ff;border-color:#d8e8fb;}
.help-content-stack{display:flex;flex-direction:column;gap:18px;}
.help-step-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,500px);gap:22px;align-items:center;border-left:5px solid #0f6ea8;scroll-margin-top:18px;}
.help-step-copy h2,.help-tips h2,.help-contact h2{margin:6px 0 8px;color:var(--navy);}
.help-step-copy p,.help-contact p{color:#334155;line-height:1.5;}
.help-step-copy ul{margin:10px 0 0;padding-left:20px;line-height:1.55;color:#334155;}
.help-step-number{display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:var(--navy);background:#e8f4ff;border:1px solid #c9e5ff;border-radius:999px;padding:5px 10px;font-size:13px;text-transform:uppercase;letter-spacing:.03em;}
.help-sample-screen{border:1px solid var(--border);box-shadow:0 12px 26px rgba(15,46,83,.08);background:#fff;}
.help-tips{border-left:5px solid #f6c343;}
.help-tip-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.help-tip-grid div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:14px;}
.help-tip-grid h3{margin:0 0 6px;color:var(--navy);}
.help-tip-grid p{margin:0;color:#334155;line-height:1.45;}
.help-contact{background:#f8fbff;border-left:5px solid #0f6ea8;}
@media(max-width:1050px){.customer-help-wide{width:auto;max-width:1200px;}.help-hero,.help-page-shell,.help-step-card{grid-template-columns:1fr;}.help-toc{position:static;}.help-tip-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:650px){.help-tip-grid{grid-template-columns:1fr;}.help-hero-actions .button{width:100%;text-align:center;}.help-toc a{padding:10px 0;}}

/* v31.264: Xero invoice links in Financial Summary */
.invoice-link-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 14px;padding:10px;border:1px solid var(--border);border-radius:10px;background:#f8fbff;}
.invoice-link-row .button{margin:0;}
.invoice-link-note{color:#334155;font-size:13px;line-height:1.35;}
.invoice-total-breakdown a{color:var(--navy);font-weight:800;text-decoration:underline;}


/* v31.266 Resource Center capability map full-width placement */
.resource-hero-capability-stack{
  display:block;
}
.resource-hero-capability-stack .resource-capability-map-wide{
  width:100%;
  margin:14px 0 16px;
}
.resource-hero-capability-stack .resource-capability-map-wide img{
  display:block;
  width:100%;
  max-width:100%;
  max-height:none!important;
  height:auto;
  padding:0!important;
  object-fit:contain;
  border-radius:16px;
  border:1px solid #cfddeb;
  background:#fff;
  box-shadow:0 8px 22px rgba(15,45,80,.08);
}
.resource-hero-capability-stack .resource-intro{
  max-width:980px;
}
@media(max-width:700px){
  .resource-hero-capability-stack .resource-capability-map-wide{margin:12px 0 14px;}
}

/* v31.280: mailing-list replacement column mapping appears as a modal window on job page */
.mailing-field-map-box{max-width:1120px;width:94%;}
.mailing-field-map-box .admin-table-scroll{max-height:58vh;overflow:auto;}
.mailing-field-map-box .field-map-table th:first-child{width:260px;}
.mailing-field-map-box .field-map-table th:nth-child(2){width:310px;}

/* v31.295: drag-and-drop upload zones for file inputs */
.poms-file-input-native{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;opacity:.01!important;white-space:nowrap!important;margin:0!important;padding:0!important;border:0!important;}
.poms-file-dropzone{margin-top:7px;border:2px dashed #94a3b8;border-radius:12px;background:#f8fafc;color:var(--navy);padding:18px 16px;text-align:center;cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;outline:none;}
.poms-file-dropzone:hover,.poms-file-dropzone:focus{border-color:var(--accent);background:#eff6ff;box-shadow:0 0 0 3px rgba(29,78,216,.10);}
.poms-file-dropzone.is-dragover{border-color:#16a34a;background:#ecfdf5;box-shadow:0 0 0 3px rgba(22,163,74,.14);}
.poms-file-dropzone.has-file{border-style:solid;border-color:var(--accent);background:#eef6ff;}
.poms-file-dropzone.has-error{border-color:#dc2626;background:#fff7f7;color:#991b1b;}
.poms-file-drop-title{display:block;font-weight:900;font-size:15px;line-height:1.25;}
.poms-file-drop-subtitle{display:block;margin-top:4px;color:#334155;font-weight:600;font-size:12px;line-height:1.35;}
.poms-file-drop-files{display:block;margin-top:7px;font-size:13px;font-weight:800;color:var(--navy);overflow-wrap:anywhere;}
.poms-file-dropzone.compact{padding:10px 8px;border-radius:8px;min-width:150px;}
.poms-file-dropzone.compact .poms-file-drop-title{font-size:12px;}
.poms-file-dropzone.compact .poms-file-drop-subtitle{font-size:11px;}
.poms-file-dropzone.compact .poms-file-drop-files{font-size:11px;}
body.poms-dragging-files .poms-file-dropzone{box-shadow:0 0 0 2px rgba(29,78,216,.10);}

/* ---- Camera-verification-matched polish (v31.328) ---- */
a{color:var(--accent)}
h1,h2,h3{color:var(--navy);line-height:1.25}
header nav a{padding:6px 9px;border-radius:var(--radius-sm);font-size:13px;margin-left:4px;transition:background .15s ease,color .15s ease}
header nav a:hover{background:var(--surface-2);color:var(--accent)}
header nav a.cta{background:var(--accent);color:#fff;font-weight:700}
header nav a.cta:hover{background:var(--navy);color:#fff}
.brand-logo{box-shadow:var(--shadow)}
.compact-table tr:nth-child(even) td{background:#f7fafd}
.badge{display:inline-block;padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:700;background:var(--surface-2);color:var(--navy);border:1px solid var(--border);line-height:1.6}
.badge.good,.badge.green,.badge.success{background:var(--good-bg);color:var(--good-ink);border-color:var(--good-bd)}
.badge.bad,.badge.red,.badge.danger{background:var(--bad-bg);color:var(--bad-ink);border-color:var(--bad-bd)}
.badge.warn,.badge.amber,.badge.warning{background:var(--warn-bg);color:var(--warn-ink);border-color:var(--warn-bd)}

/* ---- Persistent sidebar shell (v31.329) ---- */
.sidebar{position:fixed;top:0;left:0;bottom:0;width:240px;background:var(--navy);color:#fff;display:flex;flex-direction:column;overflow-y:auto;z-index:60}
.content-shell{margin-left:240px;min-height:100vh;display:flex;flex-direction:column}
.content-shell > main{flex:1 0 auto;width:100%;max-width:1240px;margin:0 auto;box-sizing:border-box}
body.public .content-shell{margin-left:0}
.side-brand{display:flex;align-items:center;gap:10px;padding:16px 16px 12px}
.side-logo{height:38px;width:auto;max-width:118px;background:#fff;border-radius:8px;padding:4px;box-sizing:border-box}
.side-brand b{font-size:14px;font-weight:700;color:#fff;display:block;line-height:1.15}
.side-brand span{font-size:11px;color:#9fb6cf}
.side-nav{padding:2px 0 8px}
.side-grp{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#8fa9c6;padding:14px 18px 5px;font-weight:700}
.side-link{display:flex;align-items:center;gap:11px;padding:9px 18px;color:#dbe7f4;font-size:13.5px;text-decoration:none;border-left:3px solid transparent;font-weight:400}
.side-link:hover{background:rgba(255,255,255,.07);color:#fff}
.side-link.active{background:rgba(255,255,255,.13);border-left-color:var(--cyan);color:#fff;font-weight:700}
.side-link .ic{opacity:.82}
.side-link.active .ic{opacity:1;color:var(--cyan)}
.ic{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.side-cta{margin:8px 14px 4px;background:var(--accent);border-radius:8px;justify-content:center;border-left:0!important;color:#fff;font-weight:700}
.side-cta:hover{background:#fff;color:var(--navy)}
.side-foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.13);padding:8px 0 14px}
.side-user{display:flex;align-items:center;gap:9px;padding:8px 18px 8px}
.side-uchip{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.16);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0}
.side-uname{font-size:13px;line-height:1.2;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:900px){.sidebar{position:static;width:auto}.content-shell{margin-left:0}.side-nav{display:flex;flex-wrap:wrap;padding:4px 8px}.side-grp{width:100%}.side-link{border-left:0}.side-link.active{border-left:0;border-radius:6px}.side-foot{margin-top:8px}}

/* v31.330 dashboard: full-width content (no left-right scroll), real status-card SVG icons, even card spacing */
/* Let the admin/production dashboard use the full content-shell width instead of the 1240px cap */
.content-shell > main.dashboard-fullwidth{max-width:none;width:auto;margin:0;padding:22px clamp(16px,2vw,28px);box-sizing:border-box;}
/* Fit the jobs table to the (now wider) container and wrap instead of forcing a 1568px min-width */
.dashboard-fullwidth .dashboard-table-card,
.dashboard-fullwidth .dashboard-table-no-scroll{overflow-x:visible!important;}
.dashboard-fullwidth .dashboard-jobs-table-compact{min-width:0!important;width:100%!important;table-layout:fixed!important;}
.dashboard-fullwidth .dashboard-jobs-table-compact th,
.dashboard-fullwidth .dashboard-jobs-table-compact td{overflow-wrap:anywhere;word-break:normal;}
/* On narrow screens keep a graceful horizontal scroll rather than over-cramming columns */
@media(max-width:1000px){
  .dashboard-fullwidth .dashboard-table-card,
  .dashboard-fullwidth .dashboard-table-no-scroll{overflow-x:auto!important;}
  .dashboard-fullwidth .dashboard-jobs-table-compact{min-width:1120px!important;}
}
/* Status cards: even six-up row + crisp line-icon graphics in the colored tiles */
.dashboard-status-card-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;}
.dashboard-status-card{min-height:78px;align-content:center;}
.dashboard-status-icon{font-size:0;}
.dashboard-status-icon .dsi-ic{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.dashboard-status-card-artwork .dashboard-status-icon{color:#7c3aed;}
.dashboard-status-card-proof .dashboard-status-icon{color:#854d0e;background:#ffea00;}
.dashboard-status-card-files .dashboard-status-icon{color:#b91c1c;}
.dashboard-status-card-production .dashboard-status-icon{color:#1d4ed8;}
.dashboard-status-card-pickup .dashboard-status-icon{color:#0f766e;}
.dashboard-status-card-complete .dashboard-status-icon{color:#15803d;}
.dashboard-status-card-estimates .dashboard-status-icon{color:#4338ca;background:#e7e9ff;}
@media(max-width:1250px){.dashboard-status-card-grid{grid-template-columns:repeat(4,minmax(0,1fr));}}
@media(max-width:760px){.dashboard-status-card-grid{grid-template-columns:1fr 1fr;}}

/* v31.340 - any page containing a wide table uses the full content width instead of
   scrolling left-right (the 1240px cap on .content-shell > main caused the overflow).
   Uses :has() so it covers every current and future wide-table page without per-template edits. */
.content-shell > main:has(.dashboard-jobs-table),
.content-shell > main:has(.admin-table-scroll),
.content-shell > main:has(.machine-page-wide),
.content-shell > main:has(.two-week-calendar){
  max-width:none; width:auto; margin:0; padding:22px clamp(16px,2vw,28px); box-sizing:border-box;
}
/* Compact jobs table fits the now-wider container rather than forcing a 1568px minimum */
.content-shell > main:has(.dashboard-jobs-table-compact) .dashboard-jobs-table-compact{
  min-width:0!important; width:100%!important; table-layout:fixed!important;
}
.content-shell > main:has(.dashboard-jobs-table-compact) .dashboard-jobs-table-compact th,
.content-shell > main:has(.dashboard-jobs-table-compact) .dashboard-jobs-table-compact td{
  overflow-wrap:anywhere;
}
@media(max-width:1000px){
  .content-shell > main:has(.dashboard-jobs-table-compact) .dashboard-jobs-table-compact{ min-width:1120px!important; }
}

/* v31.341 - universal width fix. Every authenticated page uses the full content width
   (only public/marketing pages keep the 1240px reading cap). This supersedes the per-class
   :has() widen rules and resolves all remaining pages that under-used width or scrolled
   left-right because a wide table sat inside the old 1240px cap. */
body:not(.public) .content-shell > main{
  max-width:none; width:auto; margin:0; padding:22px clamp(16px,2vw,28px); box-sizing:border-box;
}
/* Genuinely oversized standalone data tables scroll within their own box (only when the
   screen is narrower than the table) instead of pushing the whole window sideways. */
.print-components-table, .service-components-table, .customer-admin-table, .customers-admin-table,
.date-staffing-table, .production-plan-edit-table{
  display:block; overflow-x:auto; max-width:100%;
}

/* v31.344 - larger labels on artwork upload pieces (e.g. "Front Artwork" / "Back Artwork"). */
.artwork-piece-upload h4{font-size:1.2rem;font-weight:800;letter-spacing:.01em;}

/* v31.355 Create Job: large job-type buttons, no radio dot, full-button selected state */
.job-type-cards input{appearance:none;-webkit-appearance:none;width:0;height:0;margin:0;padding:0;opacity:0;position:absolute;pointer-events:none;}
.job-type-cards label{min-height:165px;justify-content:center;text-align:left;}
.job-type-cards .job-card-copy strong{font-size:3rem;line-height:1.05;}
.job-type-cards label.is-selected,
.job-type-cards label:has(input:checked){background:#0b2e59;border-color:#0b2e59;box-shadow:0 6px 18px #0b2e5933;}
.job-type-cards label.is-selected .job-card-copy strong,
.job-type-cards label:has(input:checked) .job-card-copy strong{color:#ffffff;}
.job-type-cards label.is-selected .job-card-copy small,
.job-type-cards label:has(input:checked) .job-card-copy small{color:#d6e4f5;}

/* v31.356 brighter warning box + tighter Quick Check Results line spacing */
#preflight_warning_box.warning-box{background:#ffe761;border:1px solid #e0a800;border-left:5px solid #c98a00;color:#3a2f00;}
#preflight_warning_box.warning-box b,#preflight_warning_box.warning-box strong{color:#3a2f00;}
.preflight-check-results ul{margin:0;}
.preflight-check-results li{margin:0 0 1px;line-height:1.2;}

/* v31.363 - Condensed artwork upload page and proof section */

/* Artwork upload: tighter spacing throughout */
.artwork-piece-upload{margin-bottom:10px;}
.artwork-piece-upload h3{font-size:1.1rem;margin:0 0 4px;}
.artwork-piece-upload .note{margin:2px 0 6px;font-size:13px;}
.artwork-upload-subcard,.artwork-piece-upload .subcard{padding:10px 12px;margin:6px 0;}
.artwork-dropzone{padding:14px 10px;min-height:56px;}
.artwork-dropzone p{margin:2px 0;font-size:13px;}
.artwork-upload-status{padding:7px 10px;margin:5px 0 8px;}
.artwork-upload-track{height:8px;}
.artwork-upload-detail{margin:4px 0 0;font-size:13px;}
.artwork-save-art-row{margin:4px 0 8px;font-size:13px;}
.artwork-required-section .subcard,.artwork-required-section .card{margin-bottom:8px;}
.artwork-other-section{margin-top:10px;}
.artwork-other-section h3{font-size:1rem;margin:0 0 4px;}
.artwork-other-section .note{margin:2px 0 5px;font-size:13px;}

/* Proof section: tighter cards, smaller thumbnail, inline actions */
.proof-page-file-card.compact-proof-card{padding:10px 12px;margin:6px 0;}
.proof-file-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:2px;}
.proof-file-header a{font-weight:700;}
.proof-tab-info{display:flex;flex-direction:column;gap:2px;}
.proof-tab-info small{font-size:12px;color:#6b7280;line-height:1.3;}
.proof-tab-actions{margin:6px 0;gap:6px;}
.proof-share-panel{display:grid;grid-template-columns:80px 1fr;gap:10px;align-items:start;margin-top:8px;}
.proof-share-preview img.proof-share-preview-image{max-height:80px;width:auto;border-radius:6px;border:1px solid var(--border);}
.compact-share-proof-form{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end;}
.compact-share-proof-form input{min-width:140px;flex:1;margin:0;padding:7px 8px;font-size:13px;}
.compact-share-proof-form button{white-space:nowrap;padding:7px 12px;font-size:13px;}
.proof-share-history.compact-proof-share-history{font-size:12px;}
.proof-visual-panel{padding:10px 14px;margin:6px 0 10px;}
.proof-visual-icon{font-size:1.6rem;}
.subcard.proof-certificate{padding:8px 12px;margin:6px 0;}
.subcard.proof-certificate h4{margin:0 0 4px;font-size:0.9rem;}
.subcard.proof-certificate p{margin:0;font-size:12px;line-height:1.4;}
.envelope-package-proof-group,.print-generated-proof-group{padding:10px 12px;margin:8px 0;}
.print-generated-proof-group h3{margin:0 0 4px;}
.proof-package-admin-grid{gap:8px;margin-top:8px;}
.proof-package-admin-card{padding:8px 10px;}
.proof-package-admin-card h4{margin:0 0 4px;font-size:0.9rem;}
.proof-package-admin-card .note{margin:2px 0 4px;font-size:12px;}

/* v31.373 - Tighter "Required Artwork Files" upload slots */
.artwork-piece-upload{padding:10px 12px !important;margin:6px 0 !important;}
.artwork-piece-upload h4{margin:0 0 3px !important;font-size:1.05rem !important;font-weight:700;letter-spacing:0;}
.artwork-piece-upload > p.note{margin:0 0 6px !important;font-size:12.5px !important;line-height:1.4;}
.artwork-piece-upload > label{margin:4px 0 !important;font-size:13px;}
.artwork-piece-upload .artwork-upload-status{padding:6px 10px !important;margin:4px 0 6px !important;}
.artwork-piece-upload .artwork-upload-status-top{margin-bottom:3px !important;font-size:13px;}
.artwork-piece-upload .artwork-upload-detail{margin:3px 0 0 !important;font-size:12px;line-height:1.4;}
.artwork-piece-upload .artwork-upload-track{height:7px !important;}
.artwork-piece-upload .saved-art-save-card{padding:7px 10px !important;margin:4px 0 0 !important;background:#f8fbff;}
.artwork-piece-upload .saved-art-save-card .note{margin:0 0 4px !important;font-size:12px !important;line-height:1.35;}
.artwork-piece-upload .saved-art-save-card .saved-art-save-label{display:flex;align-items:center;gap:6px;margin:2px 0 !important;font-size:13px;font-weight:600;}
.artwork-piece-upload .saved-art-save-card .saved-art-save-label input{margin:0;}
.artwork-piece-upload .saved-art-save-card .saved-art-version-wrap{margin:5px 0 0 !important;font-size:12.5px;}
.artwork-piece-upload .saved-art-save-card .saved-art-version-wrap input{padding:5px 7px;font-size:13px;margin-top:3px;}
#expected_artwork_uploads{display:flex;flex-direction:column;gap:6px;}
#artwork_upload > p.note{margin:4px 0 8px !important;font-size:12.5px;line-height:1.4;}
#artwork_upload > h3{margin:2px 0 6px !important;font-size:1.1rem;}

/* v31.375 - Tighter Invoicing tab spacing (scoped to .payment-release-page-card) */
.payment-release-page-card{padding:14px 16px !important;margin:0 0 12px !important;}
.payment-release-page-card > h2{margin:0 0 6px !important;font-size:1.35rem;}
.payment-release-page-card > p.note{margin:0 0 10px !important;font-size:13px;line-height:1.4;}
.payment-release-page-card .subcard{padding:10px 12px !important;margin:8px 0 !important;}
.payment-release-page-card .subcard h3{margin:0 0 6px !important;font-size:1.05rem;}
.payment-release-page-card .subcard h4{margin:8px 0 4px !important;font-size:0.95rem;}
.payment-release-page-card .subcard > p.note{margin:2px 0 6px !important;font-size:12.5px;}
.payment-release-page-card label{margin:6px 0 !important;font-size:13px;}
.payment-release-page-card label input[type=checkbox]{width:auto;display:inline-block;margin:0 6px 0 0;vertical-align:middle;}
.payment-release-page-card .grid{gap:10px !important;}
.payment-release-page-card .grid label{margin:0 !important;}
.payment-release-page-card input[type=text],
.payment-release-page-card input[type=number],
.payment-release-page-card input[type=date],
.payment-release-page-card select{padding:6px 8px !important;font-size:13px;margin-top:3px;}
.payment-release-page-card textarea{padding:6px 8px;font-size:13px;margin-top:3px;min-height:54px;}
.payment-release-page-card .xero-status-strip{margin:6px 0 8px !important;gap:6px !important;}
.payment-release-page-card .xero-status-strip span{padding:5px 9px !important;font-size:12.5px;}
.payment-release-page-card .xero-preview-table{font-size:12.5px;}
.payment-release-page-card .xero-preview-table td,
.payment-release-page-card .xero-preview-table th{padding:5px 8px;}
.payment-release-page-card .action-row{margin:6px 0 8px !important;flex-wrap:wrap;}
.payment-release-page-card .action-row form{margin:0;}
.payment-release-page-card button{padding:7px 12px;font-size:13px;}
.payment-release-page-card .warning-box{padding:7px 10px;font-size:12.5px;margin:6px 0;}
.payment-release-page-card .warning-box ul{margin:3px 0 0 18px;padding:0;}
.payment-release-page-card form.inline-form{display:inline-block;margin:0 0 0 8px;}
.payment-release-page-card > form.inline-form button{margin-top:0;}

/* ---- Marketing home page (v31.421) ---- */
.hero-start-card{display:flex;flex-direction:column;justify-content:center;border:1px solid var(--border);border-radius:18px;box-shadow:0 10px 30px #0000001a;}
.hero-start-card h2{margin:0 0 6px;color:var(--navy);}
.home-start-list{margin:6px 0 16px;padding-left:18px;}
.home-start-list li{margin:7px 0;color:#334155;}
.hero-start-cta{display:block;text-align:center;font-weight:800;}
.home-login-hint{margin:12px 0 0;text-align:center;}
.home-login-hint a{color:var(--accent);font-weight:700;text-decoration:none;}
.home-login-hint a:hover{text-decoration:underline;}
.home-section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;flex-wrap:wrap;margin-bottom:16px;}
.home-section-head h2{margin:4px 0 6px;color:var(--navy);}
.home-section-head .button{white-space:nowrap;margin:0;}
.home-tools-grid,.home-product-grid{display:grid;gap:14px;}
.home-tools-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));}
.home-tool-card{border:1px solid var(--border);border-radius:14px;background:#f8fbff;padding:18px;}
.home-tool-card h3{margin:8px 0 6px;color:var(--navy);font-size:1.02rem;}
.home-tool-card p{margin:0;color:#475569;font-size:.92rem;line-height:1.45;}
.home-tool-ic{width:26px;height:26px;fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.home-product-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));}
.home-product-card{display:flex;flex-direction:column;align-items:center;gap:8px;border:1px solid var(--border);border-radius:14px;background:#fff;padding:14px;text-decoration:none;color:var(--navy);font-weight:700;transition:box-shadow .15s ease,border-color .15s ease,transform .05s ease;}
.home-product-card:hover{box-shadow:0 6px 18px rgba(15,45,80,.12);border-color:#9cc2ec;}
.home-product-card:active{transform:translateY(1px);}
.home-product-card img{width:100%;height:96px;object-fit:contain;border-radius:8px;background:#f8fbff;border:1px solid var(--border-soft);}
.home-howitworks-flow{margin-top:6px;}
@media(max-width:950px){.hero-start-card{margin-top:14px;}}
.login-standalone{max-width:440px;margin:48px auto;}
.login-standalone h1{color:var(--navy);margin:6px 0 8px;}
.login-standalone .login-submit{width:100%;margin-top:8px;}
.login-back-home{text-align:center;margin-top:14px;}
.login-back-home a{color:var(--accent);text-decoration:none;font-weight:700;}

/* ---- Home: clients strip + Informed Delivery (v31.422) ---- */
.home-clients-section h2{margin:4px 0 14px;color:var(--navy);}
.home-clients-row{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;padding-bottom:4px;}
.home-client{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;background:#f8fbff;border:1px solid var(--border);border-radius:9px;padding:9px 13px;font-weight:700;color:var(--navy);font-size:.85rem;}
.home-id-split{align-items:center;gap:26px;}
.home-id-split h2{color:var(--navy);margin:4px 0 10px;}
.home-id-image img{width:100%;max-width:420px;height:auto;border-radius:16px;border:1px solid var(--border);box-shadow:0 8px 24px rgba(15,45,80,.14);display:block;margin:0 auto;}
@media(max-width:800px){.home-id-split{grid-template-columns:1fr;}.home-id-image{order:-1;}}

/* ---- Full-Service Certified MSP explainer + verification (v31.423) ---- */
.fsc-benefit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:14px 0 16px;}
.fsc-benefit-grid .public-feature-card h2{font-size:1.05rem;}
.fsc-verify{margin:6px 0 0;}
.fsc-verify a{color:var(--accent);font-weight:700;text-decoration:none;}
.fsc-verify a:hover{text-decoration:underline;}
.hero-verify{margin:12px 0 0;position:relative;z-index:1;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.hero-usps-logo{height:30px;width:auto;background:#fff;border-radius:7px;padding:5px 10px;box-shadow:0 1px 4px rgba(0,0,0,.2);}
.hero-verify a{color:#dbeafe;font-weight:700;font-size:13px;text-decoration:underline;text-underline-offset:2px;}
.hero-verify a:hover{color:#fff;}

/* ---- About: total production capacity summary (v31.424) ---- */
.capacity-summary{background:#f8fbff;border:1px solid var(--border);border-radius:14px;padding:18px 18px 12px;margin:14px 0 18px;}
.capacity-summary h3{margin:0 0 12px;color:var(--navy);}
.capacity-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;}
.capacity-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:4px;}
.capacity-card-total{background:var(--navy);border-color:var(--navy);}
.capacity-label{font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#334155;}
.capacity-card-total .capacity-label{color:#bfdbfe;}
.capacity-week{font-size:1.7rem;font-weight:900;color:var(--navy);line-height:1.1;}
.capacity-week small{font-size:.9rem;font-weight:700;color:#334155;}
.capacity-card-total .capacity-week{color:#fff;}
.capacity-card-total .capacity-week small{color:#cde0f7;}
.capacity-day{font-size:.92rem;color:#475569;font-weight:600;}
.capacity-card-total .capacity-day{color:#dbeafe;}
.capacity-basis{margin:12px 0 4px;font-size:12px;}

/* ---- Header: clickable logo (v31.427) ---- */
.brand-home{display:inline-flex;align-items:center;text-decoration:none;}

/* ---- Home: compressed vertical rhythm (v31.428) ---- */
.home-page .public-hero{margin:4px 0 14px;}
.home-page .public-hero-copy{padding:30px 34px;}
.home-page .public-hero h1{margin:0 0 12px;}
.home-page .hero-lede{margin:0 0 18px;}
.home-page .card{margin-bottom:14px;padding:18px;}
.home-page .public-grid{margin:0;}
.home-page .home-section-head{margin-bottom:12px;}
.home-page .home-affiliation-card{padding:14px;}
.home-page > section:last-child{margin-bottom:0;}
@media(max-width:950px){.home-page .public-hero-copy{padding:24px;}}

/* ---- Home: clients intro (v31.429) ---- */
.home-page .home-clients-section h2{margin:4px 0 6px;}
.home-clients-intro{margin:0 0 14px;max-width:760px;}

/* ---- Political & Franked Mail page (v31.431) ---- */
.pm-page .public-hero{margin:4px 0 16px;}
.pm-hero-card{display:flex;flex-direction:column;justify-content:center;border:1px solid var(--border);border-radius:18px;box-shadow:0 10px 30px #0000001a;}
.pm-hero-card h2{margin:0 0 8px;color:var(--navy);font-size:1.2rem;}
.pm-hero-list{margin:6px 0 16px;padding-left:18px;}
.pm-hero-list li{margin:8px 0;color:#334155;}
.pm-hero-cta{display:block;text-align:center;font-weight:800;}
.pm-page .card{margin-bottom:16px;}
.pm-page section h2{color:var(--navy);}
.pm-value-grid,.pm-why-grid{margin:14px 0 0;}
.pm-cols{display:grid;grid-template-columns:1.3fr .9fr;gap:24px;margin-top:8px;}
.pm-cols h3{color:var(--navy);margin:0 0 10px;}
.pm-tags{display:flex;flex-wrap:wrap;gap:8px;}
.pm-tag{display:inline-flex;align-items:center;background:#f8fbff;border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-weight:600;color:var(--navy);font-size:.88rem;}
.pm-frank-note{margin:14px 0 0;}
.pm-flow{margin-top:8px;}
.pm-faq details{border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin:8px 0;background:#fff;}
.pm-faq summary{font-weight:800;color:var(--navy);cursor:pointer;list-style:none;}
.pm-faq summary::-webkit-details-marker{display:none;}
.pm-faq summary::before{content:"+ ";color:var(--accent);font-weight:900;}
.pm-faq details[open] summary::before{content:"\2212 ";}
.pm-faq details p{margin:10px 0 2px;color:#475569;line-height:1.5;}
.pm-cta{text-align:center;background:linear-gradient(135deg,var(--navy),var(--accent));border:0;}
.pm-cta h2,.pm-cta p{color:#fff;}
.pm-cta .hero-actions{justify-content:center;}
.pm-cta .button.secondary{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.4);}
@media(max-width:850px){.pm-cols{grid-template-columns:1fr;}.pm-hero-card{margin-top:14px;}}

/* ---- Job Accuracy & Track and Trace page (v31.436) ---- */
.ja-page .public-hero{margin:4px 0 16px;}
.ja-hero-card{display:flex;flex-direction:column;justify-content:center;border:1px solid var(--border);border-radius:18px;box-shadow:0 10px 30px #0000001a;}
.ja-hero-card h2{margin:0 0 8px;color:var(--navy);font-size:1.2rem;}
.ja-hero-cta{display:block;text-align:center;font-weight:800;margin-top:10px;}
.ja-page .card{margin-bottom:16px;}
.ja-page section h2{color:var(--navy);}
.ja-grid{margin-top:14px;}
.ja-flow{margin-top:8px;}
.ja-gap{background:#0f2d50;border:0;}
.ja-gap h2{color:#fff;}
.ja-gap p{color:#dbe7f5;}
.ja-camera{background:#f8fbff;}
.ja-cta{text-align:center;background:linear-gradient(135deg,var(--navy),var(--accent));border:0;}
.ja-cta h2,.ja-cta p{color:#fff;}
.ja-cta .hero-actions{justify-content:center;}
.ja-cta .button.secondary{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.4);}
@media(max-width:850px){.ja-hero-card{margin-top:14px;}}

/* ---- Job Accuracy: camera dashboard screenshot (v31.437) ---- */
.ja-shot{margin:18px 0 6px;}
.ja-shot img{width:100%;height:auto;display:block;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px rgba(15,45,80,.14);}
.ja-shot figcaption{margin-top:10px;font-size:.85rem;color:#334155;line-height:1.45;}

/* ================= v31.438: contrast fixes, wider info pages, design variety ================= */

/* Contrast fix: navy-background section headings must stay white.
   (.ja-page/.pm-page section h2 set navy and were winning on specificity.) */
.ja-page .ja-gap h2, .ja-page .ja-cta h2, .pm-page .pm-cta h2{color:#fff;}
/* Contrast fix: eyebrows on white/light section cards need the dark accent,
   not the hero's light-blue (#bfdbfe), which is invisible on white. */
.public-section-card .eyebrow{color:var(--accent);}

/* Wider informational pages: reduces vertical scrolling and lets the 5-step
   process flow sit on one row instead of wrapping awkwardly. */
main{max-width:1320px;}
body.wide main{max-width:1460px;}
.pm-page .public-hero-copy h1,.ja-page .public-hero-copy h1,
.pm-page .hero-lede,.ja-page .hero-lede{max-width:940px;}
.wide .capability-flow{flex-wrap:nowrap;}
@media(max-width:1100px){.wide .capability-flow{flex-wrap:wrap;}}

/* Design variety: distinct hero accent per page so pages do not look identical. */
.pm-hero .public-hero-copy{background:linear-gradient(135deg,#0b2f52 0%,#15406b 45%,#2f6db5 100%);}
.ja-hero .public-hero-copy{background:linear-gradient(140deg,#0a2440 0%,#123a63 55%,#1e88e5 100%);}

/* Design variety: subtle tinted sections to break the wall of identical white cards.
   Applied via explicit class so it never clashes with the navy sections. */
.section-tint{background:#eef5fc;border-color:#d7e6f5;}

/* Home: compact accuracy strip */
.home-accuracy{display:grid;grid-template-columns:1.1fr .9fr;gap:22px;align-items:center;}
.home-accuracy img{width:100%;height:auto;border-radius:12px;border:1px solid var(--border);box-shadow:0 8px 24px rgba(15,45,80,.14);display:block;}
.home-accuracy h2{color:var(--navy);margin:4px 0 8px;}
.home-accuracy .public-checklist{margin:10px 0 14px;}
@media(max-width:850px){.home-accuracy{grid-template-columns:1fr;}.home-accuracy .home-accuracy-media{order:-1;}}

/* ================= v31.440: redesign adoption site-wide + nav dropdown ================= */

/* ---- Public header nav: new structure + look (matches redesign) ---- */
header nav.rd-nav{display:flex;align-items:center;gap:22px;flex-wrap:wrap;justify-content:flex-end;}
header nav.rd-nav a{color:#334155;font-weight:600;font-size:14.5px;margin-left:0;text-decoration:none;}
header nav.rd-nav a:hover{color:var(--navy);}
.rd-nav-cta{background:var(--rd-orange,#E2703A);color:#fff !important;padding:10px 18px;border-radius:6px;}
.rd-nav-cta:hover{background:var(--rd-orange-deep,#C95F2E);color:#fff !important;}
/* v31.745: Portal Login is a button the SAME size as Request a Quote (same padding + radius,
   inherits the same nav font), sitting right beside it. Navy not orange -- primary actions are
   navy/blue, orange is accent only. */
.rd-nav-login{background:var(--navy,#0F3A63);color:#fff !important;padding:10px 18px;border-radius:6px;}
.rd-nav-login:hover{background:var(--navy-ink,#0E2A47);color:#fff !important;}
.rd-nav-dd{position:relative;}
/* invisible hover bridge across the 8px gap so the menu doesn't collapse mid-move */
.rd-nav-dd::after{content:'';position:absolute;left:0;right:0;top:100%;height:10px;}
.rd-nav-dd:not(:hover):not(:focus-within)::after{display:none;}
.rd-nav-dd-toggle{display:inline-flex;align-items:center;gap:4px;}
.rd-nav-dd-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:210px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 14px 34px rgba(15,45,80,.18);padding:6px;display:none;z-index:60;}
.rd-nav-dd:hover .rd-nav-dd-menu,.rd-nav-dd:focus-within .rd-nav-dd-menu{display:block;}
.rd-nav-dd-menu a{display:block;padding:9px 12px;border-radius:6px;font-size:14px;}
.rd-nav-dd-menu a:hover{background:#F5F9FD;color:var(--navy);}
.rd-nav-dd--left .rd-nav-dd-menu{left:0;right:auto;}
.rd-nav-split{margin-left:auto;}
.rd-nav-login{margin-left:6px;}
.rd-nav-cta{margin-left:6px;}


/* ---- Site-wide design adoption (v31.447: serif type, orange as accent only) ---- */
h1,h2{font-family:var(--rd-serif,'Source Serif 4',Georgia,serif);font-weight:600;letter-spacing:-.01em;}
/* Buttons keep the standard navy/blue palette; orange is reserved for marketing
   rd- CTAs and small accents (kickers, active markers), per approved mockups. */
.eyebrow,.public-section-card .eyebrow,.card .eyebrow,.resource-center-redesign .eyebrow{color:var(--rd-orange-ink,#B4542C);}
.public-hero-copy .eyebrow{color:var(--rd-orange-soft,#F2A47E);}
.public-checklist li::marker{color:var(--rd-orange,#E2703A);}
.side-link.active{border-left-color:var(--rd-orange,#E2703A);}
.side-link.active .ic{color:var(--rd-orange,#E2703A);}

/* ================= v31.443: internal pages, tighter vertical rhythm ================= */
/* Bug fix: notes inside checkbox-stack labels were landing in the 22px checkbox
   grid column (one word per line). Keep them in the text column. */
.checkbox-stack label small,.checkbox-stack label .note{grid-column:2;display:block;font-weight:400;}

/* Compressed vertical spacing for the logged-in portal/admin only
   (body:not(.public) = authenticated shell; marketing pages unaffected). */
body:not(.public) main{padding:16px 22px 20px;}
body:not(.public) .card{padding:16px;margin:0 0 14px;}
body:not(.public) main h1{margin:0 0 12px;}
body:not(.public) .card h2,body:not(.public) .card h3{margin:14px 0 8px;}
body:not(.public) .card h2:first-child,body:not(.public) .card h3:first-child{margin-top:0;}
body:not(.public) label{margin:8px 0;}
body:not(.public) input,body:not(.public) select,body:not(.public) textarea{padding:8px;margin-top:4px;}
body:not(.public) td,body:not(.public) th{padding:7px 9px;}
body:not(.public) .grid{gap:12px;}
body:not(.public) .split{gap:14px;}
body:not(.public) .subcard{padding:10px 12px;margin:8px 0;}
body:not(.public) .checkbox-stack{gap:6px;margin-top:6px;}
body:not(.public) .note{font-size:13px;}
body:not(.public) .action-row{margin:0 0 12px;}

/* ================= v31.444: internal density pass 2 (all portal/admin pages) ================= */
/* Typography scale down slightly so forms and tables read denser. */
body:not(.public) main h1{font-size:26px;margin:0 0 10px;}
body:not(.public) .card h2{font-size:20px;}
body:not(.public) .card>h2:first-child{margin:0 0 6px;}
body:not(.public) .card h3{font-size:16px;}
body:not(.public) label{margin:5px 0;font-size:13.5px;line-height:1.3;}
body:not(.public) input,body:not(.public) select,body:not(.public) textarea{padding:7px 8px;margin-top:3px;font-size:13.5px;}
body:not(.public) textarea{min-height:56px;}
/* Grids: small row gaps, keep column breathing room. */
body:not(.public) .grid{gap:8px 16px;}
body:not(.public) .customer-create-grid{gap:8px 16px;}
body:not(.public) .customer-email-settings-grid{gap:8px 14px;}
body:not(.public) .dashboard-actions{gap:12px;margin:10px 0 14px;}
body:not(.public) .wizard-progress{margin:8px 0 12px;}
/* Section subcards (Sales Tax, Broker mode, Proof Email...) */
body:not(.public) .subcard{padding:10px 12px;margin:8px 0;}
body:not(.public) .subcard h3{margin:0 0 4px;}
body:not(.public) .subcard .note{margin:0 0 8px;}
body:not(.public) .checkbox-stack{gap:4px;margin-top:4px;}
/* Buttons and tables */
body:not(.public) button,body:not(.public) .button{padding:8px 12px;font-size:13.5px;}
body:not(.public) .button.small,body:not(.public) button.small{padding:4px 8px;font-size:12px;}
body:not(.public) td,body:not(.public) th{padding:6px 8px;font-size:13.5px;}
body:not(.public) .flash{padding:8px;margin-bottom:10px;}

/* ---- v31.445: job header overflow menu ---- */
.rd-job-overflow{position:relative;display:inline-block;}
.rd-job-overflow summary{list-style:none;cursor:pointer;}
.rd-job-overflow summary::-webkit-details-marker{display:none;}
.rd-job-overflow[open] .rd-job-overflow-menu{display:flex;}
.rd-job-overflow-menu{display:none;position:absolute;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 14px 34px rgba(15,45,80,.18);padding:10px;z-index:70;flex-direction:column;gap:8px;min-width:180px;}

/* ---- v31.446: job tab dropdowns ---- */
.rd-job-tabs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.rd-tab-dd{position:relative;display:inline-block;}
.rd-tab-parent{background:#fff;border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-weight:700;font-size:13.5px;color:var(--navy);cursor:pointer;}
.rd-tab-parent.active{background:var(--navy);color:#fff;border-color:var(--navy);}
.rd-tab-dd-menu{display:none;position:absolute;left:0;top:100%;margin-top:0;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 14px 34px rgba(15,45,80,.18);padding:6px;z-index:65;min-width:230px;flex-direction:column;gap:2px;}
.rd-tab-dd:hover .rd-tab-dd-menu,.rd-tab-dd:focus-within .rd-tab-dd-menu,.rd-tab-dd.open .rd-tab-dd-menu{display:flex;}
.rd-tab-dd-menu .tab-button{width:100%;text-align:left;border:0;background:transparent;border-radius:6px;padding:8px 10px;}
.rd-tab-dd-menu .tab-button:hover{background:#F5F9FD;}
.rd-tab-dd-menu .tab-button.active{background:#EAF2FB;color:var(--navy);}
/* What happens next */
.rd-next-card ol{margin:8px 0 0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:8px;}
.rd-next-card li{display:flex;gap:10px;align-items:flex-start;color:#475569;font-size:14px;}
.rd-next-num{flex:none;width:24px;height:24px;border-radius:50%;background:#E4E7EC;color:#475569;font-weight:800;display:grid;place-items:center;font-size:12px;}
.rd-next-card li.current .rd-next-num{background:var(--rd-orange,#E2703A);color:#fff;}
.rd-next-card li.done .rd-next-num{background:#0E7A4E;color:#fff;}


/* ---- v31.447: job summary polish + dropdown reliability ---- */
.admin-tabs.rd-job-tabs{overflow:visible;position:relative;}
.rd-fin-dark .card{background:#0E2A47;border-color:#0E2A47;color:#fff;}
.rd-fin-dark .card h2,.rd-fin-dark .card h3{color:#fff;}
.rd-fin-dark .card p,.rd-fin-dark .card td,.rd-fin-dark .card th,.rd-fin-dark .card .note{color:#C9DAEC;}
.rd-fin-dark .card b,.rd-fin-dark .card strong{color:#fff;}
/* Light-background children inside the dark Financial Summary card keep dark, readable labels. */
.rd-fin-dark .card .sales-tax-notice,
.rd-fin-dark .card .sales-tax-notice b,
.rd-fin-dark .card .sales-tax-notice strong,
.rd-fin-dark .card .invoice-total-breakdown,
.rd-fin-dark .card .invoice-total-breakdown span,
.rd-fin-dark .card .invoice-total-breakdown b,
.rd-fin-dark .card .invoice-total-breakdown strong,
.rd-fin-dark .card .final-total-hero .postage-hero-label,
.rd-fin-dark .card .final-total-hero .postage-hero-value{color:#0F3A63;}

/* ---- v31.448: admin summary cards (components, activity, camera strip) ---- */
.rd-sum-components{display:flex;flex-direction:column;gap:6px;}
.rd-sum-comp-row{background:#f5f9fd;border:1px solid var(--border-soft);border-radius:8px;padding:8px 10px;font-size:13.5px;display:flex;gap:8px;align-items:baseline;}
.rd-sum-comp-row b{flex:none;color:var(--navy);}
.rd-sum-comp-row span{color:#475569;}
.rd-sum-activity-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;}
.rd-sum-activity-head a{font-size:13px;font-weight:700;}
.rd-sum-activity{display:flex;flex-direction:column;gap:8px;}
.rd-sum-act-row{display:flex;gap:12px;font-size:13.5px;align-items:baseline;border-bottom:1px solid var(--border-soft);padding-bottom:7px;}
.rd-sum-act-row:last-child{border-bottom:0;padding-bottom:0;}
.rd-sum-act-time{flex:none;color:#334155;font-size:12.5px;min-width:118px;}
.rd-sum-camera{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:6px 0 4px;}
.rd-sum-camera>div{background:#f5f9fd;border:1px solid var(--border-soft);border-radius:10px;padding:12px;text-align:center;}
.rd-sum-cam-val{display:block;font-family:var(--rd-serif,'Source Serif 4',Georgia,serif);font-size:24px;font-weight:600;color:var(--navy);}
.rd-sum-cam-val.rd-cam-good{color:#0E7A4E;}
.rd-sum-cam-label{display:block;font-size:12px;color:#334155;margin-top:2px;}
@media(max-width:800px){.rd-sum-camera{grid-template-columns:1fr;}}

/* ---- v31.449: summary two-column stacks (mockup 1c arrangement) ---- */
.summary-left-stack{display:flex;flex-direction:column;gap:0;min-width:0;}
.summary-left-stack .card,.summary-right-stack .card{margin:0 0 14px;}

/* ================= v31.450: job page visual pass to mockup 1c ================= */
/* Tab row: clean text tabs with orange underline (mockup), replacing boxed buttons.
   Scoped to direct children so dropdown MENU items keep their menu styling. */
.admin-tabs.rd-job-tabs{background:transparent;border:0;border-bottom:2px solid var(--border-soft);border-radius:0;padding:0;gap:22px;margin:4px 0 16px;}
.rd-job-tabs > .tab-button,
.rd-job-tabs > .rd-tab-dd > .rd-tab-parent{background:transparent;border:0;border-radius:0;padding:8px 2px 12px;font-weight:700;font-size:14.5px;color:#475569;position:relative;cursor:pointer;}
.rd-job-tabs > .tab-button:hover,
.rd-job-tabs > .rd-tab-dd > .rd-tab-parent:hover{color:var(--navy);background:transparent;}
.rd-job-tabs > .tab-button.active,
.rd-job-tabs > .rd-tab-dd > .rd-tab-parent.active{color:var(--navy);background:transparent;}
.rd-job-tabs > .tab-button.active::after,
.rd-job-tabs > .rd-tab-dd > .rd-tab-parent.active::after{content:'';position:absolute;left:0;right:0;bottom:-2px;height:3px;border-radius:2px;background:var(--rd-orange,#E2703A);}
.rd-tab-hint{font-weight:500;color:#8a94a3;font-size:13px;}
/* Header action buttons: primary navy + white outlined secondaries (mockup). */
.rd-job-actions .button.small,.rd-job-actions button.small{background:#fff;color:var(--navy);border:1px solid var(--border);}
.rd-job-actions .button.small:hover{background:#f5f9fd;}
.rd-job-actions a.button.small:first-of-type{background:var(--navy);color:#fff;border-color:var(--navy);}
.rd-job-actions a.button.small:first-of-type:hover{background:#174E7F;}
/* Progress rail: light segment bars with labels (mockup), replacing boxed steps. */
.job-status-graphic-card{background:transparent;border:0;box-shadow:none;padding:0 0 4px;margin:0 0 6px;}
.job-status-graphic-card .job-status-graphic-head{display:none;}
.job-progress-rail{gap:8px;}
.job-progress-step{border:0;background:transparent;border-radius:0;padding:0;min-height:0;}
.job-progress-step::before{content:'';display:block;height:6px;border-radius:999px;background:#DDE3EA;margin-bottom:7px;}
.job-progress-step.complete::before{background:#1E88E5;}
.job-progress-step.current::before{background:#F5B301;}
.job-progress-dot{display:none;}
.job-progress-caption{display:none;}
.job-progress-label{font-weight:700;font-size:.85rem;color:#8a94a3;}
.job-progress-step.complete .job-progress-label{color:#1565C0;}
.job-progress-step.current .job-progress-label{color:#8A6D00;}
.status-graphic-problem .graphic-warning{margin-top:8px;}

/* ================= v31.451: rail cleanup + info card columns + collapse drawer ================= */
/* Progress rail: kill remaining legacy pill backgrounds, borders, glows, dots, connectors. */
.job-progress-step.complete,.job-progress-step.current,.job-progress-rail .job-progress-step{background:transparent;border:0;box-shadow:none;}
.job-progress-step::after{content:none;}
.job-progress-rail::before,.job-progress-rail::after{content:none;}
.job-progress-step .job-progress-dot,.job-progress-step.complete .job-progress-dot,.job-progress-step.current .job-progress-dot{display:none;}
.job-progress-step.complete::before,.job-progress-step.complete:before{background:#1E88E5;}
.job-progress-step.current::before{background:#F5B301;}
/* Job Information: flow the field list into two columns (mockup layout). */
.job-info-text > p:first-of-type{columns:2;column-gap:26px;margin-top:6px;}
.job-info-text > p:first-of-type br{margin-bottom:2px;}
@media(max-width:1100px){.job-info-text > p:first-of-type{columns:1;}}
/* Collapse drawer for admin status/planning/flag forms. */
.rd-collapse{border:1px solid var(--border);border-radius:10px;margin:12px 0 4px;background:#fbfdff;}
.rd-collapse > summary{cursor:pointer;list-style:none;padding:10px 14px;font-weight:700;color:var(--navy);font-size:14px;}
.rd-collapse > summary::-webkit-details-marker{display:none;}
.rd-collapse > summary::before{content:'\25B8';margin-right:8px;color:var(--rd-orange,#E2703A);}
.rd-collapse[open] > summary::before{content:'\25BE';}
.rd-collapse > form,.rd-collapse > .subcard{margin:0 12px 12px;}

/* ================= v31.453: rail pseudo-element fix + summary declutter ================= */
/* The legacy connector rule (position:absolute;left:-10px;top:30px;width:10px) was still
   shaping the ::before pseudo-element; only its color/height had been overridden. Reset
   the geometry so the segment bars render full width in normal flow. */
.job-progress-rail .job-progress-step::before,
.job-progress-rail .job-progress-step:before{content:'';display:block;position:static;left:auto;top:auto;width:100%;height:6px;border-radius:999px;background:#DDE3EA;margin:0 0 7px;}
.job-progress-rail .job-progress-step.complete::before{background:#1E88E5;}
.job-progress-rail .job-progress-step.current::before{background:#F5B301;}
.job-progress-rail .job-progress-step::after{content:none;}
/* Admin Summary declutter: the big job-type banner and the legacy component list
   duplicate the header subline and the new Components card on this page only. */
#tab-summary .job-type-large{display:none;}
#tab-summary .job-component-summary{display:none;}

/* ================= v31.461: postage estimate detail layout ================= */
.pe-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:6px;}
.pe-head h1{margin:0;}
.pe-status-card{padding-top:14px;}
.pe-status-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;}
.pe-status-msg{color:#334155;font-size:14px;}
.pe-steps{margin:10px 0 0;}
.pe-grid{align-items:start;}
.pe-col{display:flex;flex-direction:column;gap:16px;min-width:0;}
.pe-kv{display:grid;grid-template-columns:1fr 1fr;gap:2px 24px;}
.pe-kv p{margin:3px 0;}
@media(max-width:900px){.pe-kv{grid-template-columns:1fr;}}
.pe-filename{margin:10px 0 0;word-break:break-all;}
.pe-stat-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.pe-stat{background:#f6f9fc;border:1px solid var(--border);border-radius:10px;padding:10px 8px;text-align:center;}
.pe-stat-num{font-weight:900;font-size:1.25rem;color:var(--navy);}
.pe-stat-label{font-size:.75rem;color:#334155;margin-top:2px;}
.pe-stat-strong{background:#eef6ee;border-color:#bbdcbb;}
.pe-stat-strong .pe-stat-num{color:#15803d;}
@media(max-width:700px){.pe-stat-strip{grid-template-columns:repeat(2,1fr);}}
.pe-hero-dark{background:var(--navy);color:#fff;border-radius:14px;padding:20px 22px;}
.pe-hero-label{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;opacity:.75;font-weight:700;}
.pe-hero-value{font-size:2.3rem;font-weight:900;margin:4px 0 2px;color:var(--rd-orange,#E2703A);}
.pe-hero-pending{color:#cbd5e1;font-size:1.6rem;}
.pe-hero-range{font-size:.85rem;opacity:.85;}
.pe-bucket-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:16px;border-top:1px solid rgba(255,255,255,.16);padding-top:14px;}
.pe-bucket{text-align:center;}
.pe-bucket-num{font-weight:900;font-size:1.05rem;}
.pe-bucket-label{font-size:.68rem;opacity:.75;margin-top:2px;line-height:1.15;}
@media(max-width:700px){.pe-bucket-strip{grid-template-columns:repeat(2,1fr);}}
.pe-drop-table{width:100%;}
.pe-drop-table th.num,.pe-drop-table td.num{text-align:right;white-space:nowrap;}
.pe-drop-total{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding:10px 12px;background:#f6f9fc;border:1px solid var(--border);border-radius:10px;}
.pe-breakdown{margin-top:16px;}
.pe-breakdown .postage-box{margin:0 12px 12px;}

/* ================= v31.462: mobile public nav (hamburger) ================= */
.rd-nav-burger{display:none;background:none;border:1px solid var(--border);border-radius:8px;padding:9px 11px;cursor:pointer;line-height:0;}
.rd-nav-burger span{display:block;width:20px;height:2px;background:var(--navy);margin:4px 0;border-radius:2px;transition:transform .18s ease,opacity .18s ease;}
.rd-nav-burger-open span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.rd-nav-burger-open span:nth-child(2){opacity:0;}
.rd-nav-burger-open span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}
@media(max-width:900px){
  header{flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px;}
  .rd-nav-burger{display:block;margin-left:auto;flex-shrink:0;}
  header nav.rd-nav{display:none;flex-basis:100%;flex-direction:column;align-items:stretch;gap:2px;padding:8px 0 6px;border-top:1px solid var(--border-soft);margin-top:6px;}
  header nav.rd-nav.rd-nav-open{display:flex;}
  header nav.rd-nav a{padding:12px 10px;border-radius:8px;font-size:16px;margin-left:0;}
  header nav.rd-nav a:hover{background:#F5F9FD;}
  header nav.rd-nav .rd-nav-cta{text-align:center;margin:8px 0 4px;padding:12px 10px;}
  /* v31.745: stack Portal Login like the CTA on mobile (no auto/left margins in the column) */
  header nav.rd-nav .rd-nav-login{text-align:center;margin:4px 0;padding:12px 10px;}
  .rd-nav-dd{width:100%;}
  .rd-nav-dd::after{display:none;}
  .rd-nav-dd-toggle{width:100%;box-sizing:border-box;}
  .rd-nav-dd-menu{position:static;display:block;box-shadow:none;border:0;padding:0 0 4px 16px;min-width:0;}
  .rd-nav-dd-menu a{padding:10px 10px;}
  header nav.rd-nav .rd-nav-split{margin-left:0;}
  header nav.rd-nav .rd-nav-login{margin-left:0;}
  .brand{min-width:0;flex-shrink:1;}
  .brand-tagline{font-size:12px;line-height:1.35;}
}

/* ===== v31.536: Proof tab layout polish ===== */
.proof-page-card h2:before{content:'';}
.proof-page-card .proof-heading{justify-content:flex-start;padding:9px 12px;font-size:1.15rem;}
.proof-page-card .compact-note{margin:0 0 12px;}
.proof-page-card .proof-visual-panel{margin:0 0 14px;padding:12px 14px;}
.proof-page-card .proof-visual-icon{width:44px;height:44px;border-radius:12px;font-size:1.5rem;}
.proof-page-card .envelope-package-proof-group,
.proof-page-card .print-generated-proof-group{margin:12px 0;padding:14px 16px;}
.proof-page-card .proof-page-file-card{border:1px solid var(--border-soft);border-radius:12px;background:#fbfdff;padding:14px 16px;margin:12px 0;}
.proof-page-card .proof-file-header a{font-size:1.02rem;}
.proof-page-card .proof-share-panel{grid-template-columns:100px minmax(0,1fr);gap:16px;align-items:start;margin-top:12px;}
.proof-page-card .proof-share-preview-image{max-height:110px;}
.proof-page-card .proof-share-panel .share-proof-form{max-width:700px;grid-template-columns:minmax(160px,1fr) minmax(200px,1fr) auto;gap:8px;}
@media(max-width:820px){.proof-page-card .proof-share-panel{grid-template-columns:1fr;}.proof-page-card .proof-share-panel .share-proof-form{grid-template-columns:1fr;}}

/* v31.541: door-hanger die-cut guides in the builder artwork preflight preview */
.preflight-preview-stage .diecut-circle{position:absolute;pointer-events:none;box-sizing:border-box;border:2px solid rgba(22,163,74,.95);border-radius:50%;display:none;}
.preflight-preview-stage .diecut-slit{position:absolute;pointer-events:none;box-sizing:border-box;border:2px solid rgba(22,163,74,.95);display:none;}

/* v31.542: distinct color for the Final Approved status pill (was light gray) */
.status-pill.status-final-approved{background:#0d9488!important;color:#fff!important;}

/* v31.548 - mailing-list column match confidence badges */
.mapconf{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:9px;vertical-align:middle;letter-spacing:.02em;white-space:nowrap}
.mapconf.conf-learned{background:#e0e7ff;color:#3730a3;border:1px solid #a5b4fc}
.mapconf.conf-high{background:#dcfce7;color:#166534;border:1px solid #86efac}
.mapconf.conf-med{background:#fef9c3;color:#854d0e;border:1px solid #fde047}
.mapconf.conf-low{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}
tr.maprow-low > td{background:#fff5f5}
tr.maprow-med > td{background:#fffbeb}
td.mail-map-conf{white-space:nowrap;text-align:center}

/* v31.550 - Proof tab: fill width, de-duplicate, two-column proof card */
#tab-proof .proof-page-card{max-width:none;}
#tab-proof .proof-visual-panel{margin-bottom:14px;}
.proof-card-grid{display:grid;grid-template-columns:minmax(230px,360px) 1fr;gap:24px;align-items:start;padding:18px;}
.proof-card-preview{margin:0;}
.proof-card-preview a{display:block;}
.proof-card-preview img.proof-share-preview-image{display:block;width:100%;height:auto;max-height:520px;object-fit:contain;border:1px solid var(--border);border-radius:10px;background:#fff;box-shadow:0 1px 4px rgba(15,23,42,.10);}
.proof-card-main{min-width:0;}
.proof-card-main .proof-file-header{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px;}
.proof-card-main .proof-file-header a{font-weight:700;font-size:1.02rem;word-break:break-word;}
.proof-card-main .proof-actions{margin:12px 0 2px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.proof-view-large-button{font-size:1rem;padding:10px 20px;}
.proof-block-title{display:block;font-weight:700;color:#0b2e59;font-size:.86rem;text-transform:uppercase;letter-spacing:.03em;margin-bottom:8px;}
.proof-share-block{margin-top:16px;padding-top:14px;border-top:1px solid var(--border);}
.proof-share-block .share-proof-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.proof-share-block .share-proof-form input{flex:1 1 200px;min-width:0;padding:8px 10px;}
.proof-share-block .share-proof-form button{flex:0 0 auto;}
.proof-share-history{margin-top:10px;display:flex;flex-direction:column;gap:2px;}
.proof-admin-block{margin-top:16px;padding-top:12px;border-top:1px dashed var(--border);}
.proof-admin-row{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;}
.proof-replace-details{flex:1 1 320px;border:1px solid var(--border);border-radius:8px;padding:8px 12px;background:#f8fafc;}
.proof-replace-details summary{cursor:pointer;font-weight:600;color:#1d4ed8;list-style:revert;}
.proof-replace-details[open] summary{margin-bottom:8px;}
.proof-replace-details label.note{display:block;margin:4px 0 2px;}
.proof-replace-details input[type=file]{display:block;margin-top:2px;}
.proof-replace-details button{margin-top:8px;}
/* Generated (pre-release) print proof: make the front/back drop zones share the width */
.print-generated-proof-group .proof-package-admin-card{width:100%;}
@media (max-width:900px){ .proof-card-grid{grid-template-columns:1fr;} .proof-card-preview img.proof-share-preview-image{max-height:360px;} }
.analysis-chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.analysis-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:96px;padding:8px 12px;border:1px solid var(--border,#ddd);border-radius:8px;background:#fff}
.analysis-chip-num{font-size:20px;font-weight:700;color:var(--navy,#1f3a5f)}
.analysis-chip-lbl{font-size:.75em;color:#555;text-align:center;margin-top:2px}
table.analysis-preview{border-collapse:collapse;width:100%;font-size:13px}
table.analysis-preview th,table.analysis-preview td{border:1px solid #e2e8f0;padding:4px 8px;text-align:left;white-space:nowrap}
table.analysis-preview thead th{background:var(--navy,#1f3a5f);color:#fff}
tr.analysis-seed-row{background:#fff2cc}

/* v31.710 --- job builder: fixed control widths.
   Every control was width:100%, so its size came from whatever contained it: a .grid cell is a
   fluid half of the page, a bare <label> is the full width of the card. Both stretch with the
   window, at two different rates, which is why the dropdowns looked inconsistent and why a Coating
   select could end up twice the width of a Size select on a wide screen.
   Controls are now capped at a readable width and stop growing with the window. The grid still
   governs LAYOUT (what sits beside what); it no longer governs the size of the control. */
.job-builder-main .wizard-page input,
.job-builder-main .wizard-page select,
.job-builder-main .wizard-page textarea{max-width:340px}
/* Free text wants the room; a dropdown never does. */
.job-builder-main .wizard-page textarea{max-width:640px}
.job-builder-main .wizard-page input[type=checkbox],
.job-builder-main .wizard-page input[type=radio]{max-width:none;width:auto}
/* Tables and pickers size their own controls to the cell: leave them alone. */
.job-builder-main .print-components-table input,
.job-builder-main .print-components-table select,
.job-builder-main .radio-grid input,
.job-builder-main .selectable-product-card input{max-width:none}

/* v31.717: running build in the sidebar footer. Small and quiet by design: it answers "is my
   deploy live?" at a glance and should never compete with navigation. */
.side-build{font-size:9px;line-height:1;letter-spacing:.04em;text-align:center;padding:6px 0 8px;
  color:rgba(255,255,255,.28);font-variant-numeric:tabular-nums;user-select:all}
.side-build:hover{color:rgba(255,255,255,.55)}

/* v31.718 --- two layout fixes on the job builder.

   1. LABELS STACK ABOVE THEIR CONTROL AGAIN.
   Controls used to be width:100%, which made them fill the label's whole line and so pushed them
   onto their own row under the label text. v31.710 capped them at 340px to stop them growing with
   the window -- correct -- but an inline-block control that no longer fills the line simply sits
   BESIDE the label text, and a tall control (textarea) baseline-aligns its label to the bottom.
   Hence "Job Description" stranded at the foot of a floating textarea. Stacking was never a rule,
   it was a side effect of full width, so capping the width silently removed it. Make it a rule. */
.job-builder-main .wizard-page label > input:not([type=checkbox]):not([type=radio]),
.job-builder-main .wizard-page label > select,
.job-builder-main .wizard-page label > textarea{display:block;margin-top:5px}
.job-builder-main .wizard-page label{vertical-align:top}

/* 2. SECTION HEADINGS WERE INVISIBLE: NAVY TEXT ON A NAVY BACKGROUND.
   .section-heading (0,1,0) sets background:var(--navy);color:#fff, but every wizard page sits in a
   .card, and .card h2 (0,1,1) wins on specificity and repaints the text var(--navy) -- the exact
   colour of its own background. The heading rendered as a solid empty navy bar, 45px tall, full
   width, on every page of the builder. The text was always there and never readable. */
.card h2.section-heading{color:#fff}

/* v31.719 --- job builder form rhythm.

   1. BREATHING ROOM between a label and its control. v31.718 made controls display:block so they
   stack under the label text again, but 5px is not a gap, it is a collision -- "Size" sat on top
   of its dropdown. */
.job-builder-main .wizard-page label > input:not([type=checkbox]):not([type=radio]),
.job-builder-main .wizard-page label > select,
.job-builder-main .wizard-page label > textarea{margin-top:7px}

/* 2. ALIGNED CONTROLS. Size / Paper / Coating / Sides are separate labels whose text is a
   different length each, so with the control tucked against its label the dropdowns started at a
   different height in each cell and the eye had nothing to follow down the column. Giving the
   label text a fixed block height puts every control on the same baseline across the row. */
.job-builder-main .wizard-page .grid > label{display:flex;flex-direction:column;justify-content:flex-start}
.job-builder-main .wizard-page .grid > label > input:not([type=checkbox]):not([type=radio]),
.job-builder-main .wizard-page .grid > label > select{margin-top:auto}

/* 3. QUANTITY: SIX WIDE MAX. It was repeat(auto-fit,minmax(120px,1fr)) -- fine at 1200px, but on a
   2578px card auto-fit happily lays out ~20 chips in a row and the quantity picker became a
   barcode. Six is a row you can actually read. */
.job-builder-main #print_quantity_grid{grid-template-columns:repeat(6,minmax(0,1fr));max-width:900px}

/* v31.722 --- job identity: the two boxes sit together, and stay there.

   .grid is repeat(2, minmax(0,1fr)) -- two equal FRACTIONS of whatever contains it. On a 2578px
   card that puts Customer Job / PO Number at x=48 and Job Name at x=1180: side by side in the
   markup, 1,130px apart on screen, with nothing but white between them. The controls were already
   capped at 340px by v31.710; the COLUMNS were not, so the pair drifted apart as the window grew.

   Pinning the columns to the control width locks them: two 340px boxes with one gap, in the same
   place at any window size. justify-content:start keeps the pair at the left edge of the card
   rather than centred in an ocean. */
.job-builder-main .highlighted-job-identity .grid{
  grid-template-columns:repeat(2,minmax(0,340px));
  justify-content:start;
  column-gap:18px}

/* v31.723: Next in the print-product picker header, so it is on screen while you choose. */
.picker-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.picker-head-copy{min-width:0}
.picker-head-copy h3,.picker-head-copy p{margin-top:0}
.picker-head-next{flex:0 0 auto;min-width:120px}

/* v31.727 --- lock the option dropdowns to fixed columns.

   These are auto-placed, and half of them are conditionally hidden, so the grid reflowed and a
   control moved column depending on what else was on screen:

     Product Type is hidden for print jobs (v31.720 replaced it with the selected-product block),
     which slid Size between column 2 and column 1.
     Coating is hidden by hideCoating / isAlwaysUncoatedStock(stock), so choosing an uncoated
     stock reflowed the row under it.

   Same fix as EXTRA_SLOTS in v31.721: give each one a column and let a missing neighbour leave a
   gap rather than drag everything along. Left/right is now a property of the control, not of
   whatever else happens to be rendered. */
.job-builder-main #print_product_type_select_label,
.job-builder-main #print_size_label,
.job-builder-main #print_paper_label,
.job-builder-main #print_coating_label,
.job-builder-main #print_fold_option_label{grid-column:1}
.job-builder-main #print_sides_label,
.job-builder-main #finished_folded_size_wrap{grid-column:2}

/* v31.728: the turnaround answer, sized to match the product name above it
   (.selected-print-product-summary strong is 24px navy). The card is titled "Turnaround" and the
   product is named right above, so the value is the only thing left to say. */
.tat-headline{display:block;font-size:24px;line-height:1.15;color:var(--navy);font-weight:600;margin:2px 0 6px}

/* v31.729 --- lock WHERE the columns are, not just which one a control lands in.

   v31.727 pinned each control to column 1 or 2. It did not pin the columns themselves, which are
   still repeat(2, minmax(0,1fr)) -- FRACTIONS of whatever contains them:

     paper/sides grid    852px columns   ->  Print Sides starts 528px from Paper / Stock
     project info grid  1074px columns
     identity card       340px columns   (v31.722 pinned these already)

   So the control is 340px sitting in an 852px column, the leftover is whitespace, and the distance
   between column 1 and column 2 changes with the container width AND differs between grids on the
   same page -- nothing lines up down the column. Pin the columns to the control width and the gap
   is 18px, everywhere, at any window size.

   Scoped to the product-option grids: they hold selects and short inputs only. The broker,
   materials and project-information grids carry 640px textareas, and a 340px column would shrink
   those -- the opposite of what v31.710 was for. */
.job-builder-main .primary-product-right .grid,
.job-builder-main #print_extra_options_grid{
  grid-template-columns:repeat(2,minmax(0,340px));
  justify-content:start;
  column-gap:18px}


/* v31.800: proof viewer density. Measured on a 3" round label (1050x1050 render):
   the decision card was 355px and the image box reserved a full window height, so
   Artwork Quick Check sat ~500px below the fold. Scoped to the fit-window viewer
   so the standard/print views are untouched. !important is used only where these
   fight generic heading/form rules defined later in this file. */
.fit-window-proof-viewer .proof-decision-tight{padding:10px 12px;margin:4px 0 8px;}
.fit-window-proof-viewer .proof-decision-visual-icon{width:32px!important;height:32px!important;border-radius:10px;font-size:18px;}
.fit-window-proof-viewer .proof-decision-visual-head{gap:10px;margin-bottom:6px;align-items:center;}
/* decorative label above the heading; the icon, h2 and buttons already say this */
.fit-window-proof-viewer .proof-decision-visual-head .graphic-eyebrow{display:none;}
.fit-window-proof-viewer .proof-decision-visual-head h2{margin:0 0 2px!important;font-size:1.02rem;}
.fit-window-proof-viewer .proof-decision-visual-head p{margin:0!important;font-size:.82rem;line-height:1.25;}
.fit-window-proof-viewer .proof-decision-form-tight{gap:6px 10px;}
.fit-window-proof-viewer .proof-decision-form-tight label{margin:2px 0!important;}
.fit-window-proof-viewer .proof-decision-form-tight input{min-height:32px!important;padding:5px 8px;}
.fit-window-proof-viewer .proof-decision-form-tight textarea{min-height:40px!important;padding:5px 8px;}
.fit-window-proof-viewer .decision-actions{margin-top:4px;}
.fit-window-proof-viewer .proof-file-viewer-card{padding:10px 12px;}
.fit-window-proof-viewer .proof-image-scrollbox{padding:6px;}

/* v31.822: dashboard column alignment. Money columns were left-aligned with no
   class, so figures of different widths ($900.00 next to $1,200.00) never lined
   up and the header sat over the left edge instead of over the numbers. Right
   aligning the header and the cells together puts the decimals in a column and
   the label directly above them. Tabular figures keep digit widths even. */
.dashboard-jobs-table-compact th.col-money,
.dashboard-jobs-table-compact td.money-cell{
  text-align:right;
  font-variant-numeric:tabular-nums;
  white-space:nowrap!important;
}
.dashboard-jobs-table-compact td.money-total{font-weight:700;}
/* Header labels sit on a common baseline just above the first row, so a
   two-line header like "Postage Payment" does not float above a one-line one. */
.dashboard-jobs-table-compact th{vertical-align:bottom;}

/* v31.833: file storage search and sort controls */
.storage-filter-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0 6px;}
.storage-filter-row input[type=search]{flex:1 1 320px;min-width:240px;margin:0;}
.storage-filter-row select{flex:0 0 200px;margin:0;}
.storage-filter-row .button{margin:0;}
th .storage-sort{color:inherit;text-decoration:none;white-space:nowrap;}
th .storage-sort:hover{text-decoration:underline;}
th .storage-sort.is-active{text-decoration:underline;}
