/* EcoPDF Utilities — Main Stylesheet */
:root{
  --blue:#2563eb;--blue-d:#1d4ed8;--green:#10b981;--green-d:#059669;
  --bg:#f8fafc;--card:#fff;--text:#1e293b;--muted:#64748b;--border:#e2e8f0;
  --red:#ef4444;--r:12px;--sh:0 2px 16px rgba(37,99,235,.08);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px}
body{font-family:"Inter",system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.6}

/* NAV */
nav{background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:200;box-shadow:0 1px 6px rgba(0,0,0,.06)}
.nav-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;gap:1rem}
.m2m-logo{display:flex;align-items:center;flex-shrink:0;opacity:.85;transition:opacity .2s}
.m2m-logo:hover{opacity:1}
.m2m-logo img{height:34px;width:auto;display:block}
.nav-brand{font-size:1.25rem;font-weight:800;color:var(--blue);text-decoration:none;white-space:nowrap}
.nav-brand span{color:var(--green)}
.nav-links{display:flex;gap:.15rem;flex-wrap:wrap}
.nav-links a{text-decoration:none;color:var(--muted);font-size:.87rem;font-weight:500;padding:.4rem .8rem;border-radius:7px;transition:.15s}
.nav-links a:hover,.nav-links a.active{background:#eff6ff;color:var(--blue)}
.hamburger{display:none;flex-direction:column;gap:5px;cursor:pointer;background:none;border:none;padding:.4rem}
.hamburger span{width:22px;height:2px;background:var(--text);border-radius:2px;transition:.25s;display:block}

/* HERO */
.hero{background:linear-gradient(135deg,#1e40af,#2563eb 55%,#0ea5e9);color:#fff;text-align:center;padding:4.5rem 1.25rem 3.5rem}
.hero h1{font-size:clamp(1.8rem,5vw,3rem);font-weight:800;margin-bottom:.9rem;line-height:1.15}
.hero p{font-size:1.05rem;opacity:.9;max-width:580px;margin:0 auto 1.75rem}
.hero-badges{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap}
.badge{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);padding:.3rem .85rem;border-radius:50px;font-size:.8rem;font-weight:600}

/* PAGE WRAP */
.wrap{max-width:1200px;margin:0 auto;padding:2.5rem 1.25rem 4rem}
.wrap-sm{max-width:820px;margin:0 auto;padding:2.5rem 1.25rem 4rem}
.page-wrap{margin:0 auto;padding:2rem 1.25rem 4rem}

/* CARD */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:1.75rem;box-shadow:var(--sh);margin-bottom:1.25rem}
.card-title{font-size:1rem;font-weight:700;margin-bottom:1.1rem;display:flex;align-items:center;gap:.45rem}

/* TOOLS GRID */
.tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;margin-top:1.5rem}
.tool-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:1.75rem;text-decoration:none;color:var(--text);display:flex;flex-direction:column;gap:.65rem;box-shadow:var(--sh);transition:.2s}
.tool-card:hover{box-shadow:0 6px 28px rgba(37,99,235,.15);transform:translateY(-3px)}
.tool-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;flex-shrink:0}
.ic-blue{background:#dbeafe}.ic-green{background:#d1fae5}.ic-purple{background:#ede9fe}.ic-orange{background:#ffedd5}
.tool-card h3{font-size:1rem;font-weight:700}
.tool-card p{font-size:.85rem;color:var(--muted);flex:1}
.tool-cta{font-size:.83rem;font-weight:600;color:var(--blue)}

/* SECTION TITLES */
.section{max-width:1200px;margin:0 auto;padding:2.5rem 1.25rem}
.section-title,.sec-title{font-size:1.55rem;font-weight:800;margin-bottom:.3rem}
.section-sub,.sec-sub{color:var(--muted);margin-bottom:1.75rem;font-size:.93rem}
.page-title,.pg-title{font-size:1.65rem;font-weight:800;margin-bottom:.3rem}
.page-sub,.pg-sub{color:var(--muted);margin-bottom:1.75rem;font-size:.92rem}

/* BREADCRUMB */
.breadcrumb{font-size:.82rem;color:var(--muted);margin-bottom:1.1rem}
.breadcrumb a{color:var(--muted);text-decoration:none}
.breadcrumb a:hover{color:var(--blue)}

/* DROP ZONE */
.drop-zone{border:2.5px dashed var(--blue);border-radius:var(--r);background:#eff6ff;text-align:center;padding:2.25rem 1.25rem;cursor:pointer;transition:.2s;position:relative}
.drop-zone:hover,.drop-zone.over{background:#dbeafe;border-color:var(--blue-d)}
.drop-zone input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.drop-icon{font-size:2.2rem;margin-bottom:.6rem}
.drop-zone h3{font-weight:700;margin-bottom:.25rem;font-size:1rem}
.drop-zone p{color:var(--muted);font-size:.83rem}

/* FILE LIST */
.file-list{margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}
.fi{display:flex;align-items:center;gap:.65rem;background:#f1f5f9;border-radius:8px;padding:.55rem .85rem;font-size:.85rem}
.fi-name{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fi-size{color:var(--muted);flex-shrink:0;font-size:.78rem}
.fi-rm{background:none;border:none;cursor:pointer;color:var(--red);font-size:.95rem;padding:.15rem .3rem;border-radius:4px;line-height:1}
.fi-rm:hover{background:#fee2e2}

/* FORM */
.fg{margin-bottom:1.1rem}
.fg label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.35rem}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
input[type="text"],input[type="number"],input[type="email"],input[type="date"],select,textarea{
  width:100%;padding:.58rem .8rem;border:1.5px solid var(--border);border-radius:8px;font-size:.9rem;
  color:var(--text);background:#fff;font-family:inherit;transition:.15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.1)}
textarea{min-height:72px;resize:vertical}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:.45rem;padding:.65rem 1.5rem;border-radius:9px;font-size:.9rem;font-weight:700;cursor:pointer;border:none;text-decoration:none;transition:.18s;line-height:1}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-d);transform:translateY(-1px);box-shadow:0 4px 14px rgba(37,99,235,.3)}
.btn-success{background:var(--green);color:#fff}
.btn-success:hover{background:var(--green-d);transform:translateY(-1px);box-shadow:0 4px 14px rgba(16,185,129,.3)}
.btn-outline{background:transparent;color:var(--blue);border:2px solid var(--blue)}
.btn-outline:hover{background:#eff6ff}
.btn-sm{padding:.38rem .85rem;font-size:.8rem}
.btn-full{width:100%;justify-content:center;padding:.8rem}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}

/* ALERTS */
.alert{padding:.8rem 1rem;border-radius:9px;margin-bottom:1.1rem;font-size:.88rem;font-weight:500;display:flex;align-items:flex-start;gap:.55rem}
.alert-info{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}
.alert-success{background:#d1fae5;color:#065f46;border:1px solid #a7f3d0}
.alert-warning{background:#fffbeb;color:#92400e;border:1px solid #fcd34d}
.alert-danger{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}

/* PROGRESS */
.prog-wrap{margin:1rem 0}
.prog-bg{background:#e2e8f0;border-radius:50px;height:7px;overflow:hidden}
.prog-bar{background:var(--blue);height:7px;border-radius:50px;width:0%;transition:width .4s}

/* SLIDER */
.slider-row{display:flex;align-items:center;gap:.9rem}
.slider-row input[type="range"]{flex:1;accent-color:var(--blue)}
.slider-val{min-width:48px;text-align:center;padding:.25rem .5rem;background:#eff6ff;border-radius:6px;font-weight:700;color:var(--blue);font-size:.85rem}
.slider-labels{display:flex;justify-content:space-between;font-size:.73rem;color:var(--muted);margin-top:.2rem}

/* INVOICE TABLE */
.inv-tbl{width:100%;border-collapse:collapse;font-size:.88rem}
.inv-tbl th{text-align:left;padding:.6rem .65rem;background:#f1f5f9;font-size:.78rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--border)}
.inv-tbl td{padding:.55rem .65rem;border-bottom:1px solid var(--border);vertical-align:middle}
.inv-tbl tr:last-child td{border-bottom:none}
.inv-tbl input{padding:.35rem .5rem;font-size:.85rem}
.totals-box{max-width:300px;margin-left:auto;margin-top:1.25rem}
.tot-row{display:flex;justify-content:space-between;padding:.4rem 0;font-size:.88rem;border-bottom:1px solid var(--border)}
.tot-row.grand{font-size:1rem;font-weight:800;border-bottom:none;color:var(--blue);padding-top:.65rem}

/* TABS */
.tabs{display:flex;border-bottom:2px solid var(--border);margin-bottom:1.5rem;gap:.2rem}
.tab-btn{padding:.6rem 1.1rem;font-size:.88rem;font-weight:600;background:none;border:none;cursor:pointer;color:var(--muted);border-bottom:2.5px solid transparent;margin-bottom:-2px;border-radius:8px 8px 0 0;transition:.15s}
.tab-btn.active{color:var(--blue);border-bottom-color:var(--blue);background:#eff6ff}
.tab-pane{display:none}
.tab-pane.active{display:block}

/* STATUS BADGES */
.sbadge{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .65rem;border-radius:50px;font-size:.75rem;font-weight:700}
.sb-invoice{background:#d1fae5;color:#065f46}
.sb-quote{background:#ede9fe;color:#4c1d95}
.sb-draft{background:#fef3c7;color:#92400e}

/* STEPS */
.steps{display:flex;margin-bottom:2rem;overflow-x:auto;gap:0}
.step{flex:1;text-align:center;position:relative;min-width:80px}
.step::after{content:"";position:absolute;top:17px;left:50%;right:-50%;height:2px;background:var(--border);z-index:0}
.step:last-child::after{display:none}
.step-num{width:34px;height:34px;border-radius:50%;background:var(--border);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:.85rem;position:relative;z-index:1;transition:.3s}
.step.active .step-num{background:var(--blue);color:#fff}
.step.done .step-num{background:var(--green);color:#fff}
.step-lbl{font-size:.73rem;margin-top:.35rem;color:var(--muted);font-weight:600}
.step.active .step-lbl{color:var(--blue)}

/* AD BANNER */
.ad-banner{max-width:960px;margin:0 auto;padding:.75rem 1.25rem;text-align:center}
.ad-sidebar{margin-top:1.5rem}

/* INVOICE SPLIT LAYOUT */
.inv-split{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:start}
.inv-preview-wrap{position:sticky;top:72px}

/* FAQ */
.faq-item{cursor:pointer}
.faq-q{font-size:.95rem;font-weight:700;display:flex;justify-content:space-between;align-items:center}
.faq-q::after{content:"▾";font-size:1rem;color:var(--muted);transition:.2s}
.faq-item.open .faq-q::after{transform:rotate(180deg)}
.faq-a{font-size:.88rem;color:var(--muted);max-height:0;overflow:hidden;transition:max-height .3s ease}
.faq-item.open .faq-a{max-height:200px;margin-top:.6rem}

/* FEATURES GRID */
.feat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.1rem;margin-top:1.25rem}
.feat{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:1.4rem;box-shadow:var(--sh)}
.feat-icon{font-size:1.8rem;margin-bottom:.5rem}
.feat h3{font-size:.9rem;font-weight:700;margin-bottom:.3rem}
.feat p{font-size:.82rem;color:var(--muted)}

/* FOOTER */
footer{background:#0f172a;color:#94a3b8;padding:2.5rem 1.25rem 1.75rem;margin-top:0}
.footer-grid{max-width:960px;margin:0 auto 1.5rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1.5rem}
footer ul{list-style:none;display:flex;flex-direction:column;gap:.4rem;margin-top:.5rem}
footer a{color:#94a3b8;text-decoration:none;font-size:.85rem}
footer a:hover{color:#e2e8f0}
.footer-copy{text-align:center;font-size:.8rem;padding-top:1rem;border-top:1px solid #1e293b;max-width:960px;margin:0 auto}

/* SCROLL TO TOP */
#scrollTop{position:fixed;bottom:1.5rem;right:1.5rem;width:44px;height:44px;border-radius:50%;background:var(--blue);color:#fff;border:none;font-size:1.4rem;line-height:1;cursor:pointer;box-shadow:0 4px 14px rgba(37,99,235,.35);opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .2s;z-index:999;display:flex;align-items:center;justify-content:center}
#scrollTop.visible{opacity:1;visibility:visible}
#scrollTop:hover{background:var(--blue-d);transform:translateY(-3px)}
#globalToast{position:fixed;top:72px;left:50%;transform:translateX(-50%);background:#1d4ed8;color:#fff;padding:.55rem 1.4rem;border-radius:50px;font-size:.84rem;font-weight:700;z-index:9999;box-shadow:0 4px 20px rgba(0,0,0,.25);display:none;align-items:center;gap:.6rem;white-space:nowrap;pointer-events:none}
#globalToast.show{display:flex}

/* PROCESSING INDICATOR */
.proc-box{display:none;align-items:center;gap:.75rem;padding:.85rem 1.1rem;background:#eff6ff;border:1.5px solid #bfdbfe;border-radius:10px;margin:.75rem 0;font-size:.88rem;font-weight:600;color:#1d4ed8}
.proc-box.show{display:flex}
.proc-clock{font-size:1.4rem;animation:clockTick 1s steps(8,end) infinite;display:inline-block;line-height:1;flex-shrink:0}
@keyframes clockTick{0%{content:"\1F550"}12%{content:"\1F551"}25%{content:"\1F552"}37%{content:"\1F553"}50%{content:"\1F554"}62%{content:"\1F555"}75%{content:"\1F556"}87%{content:"\1F557"}}
.proc-ring{width:22px;height:22px;border:3px solid #bfdbfe;border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}

/* SPINNER */
.spinner{display:inline-block;width:18px;height:18px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .65s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* FIELD VALIDATION ERROR */
.field-error,.field-error:focus{border-color:#ef4444!important;box-shadow:0 0 0 3px rgba(239,68,68,.15)!important;background:#fff5f5!important}
.field-error-msg{font-size:.78rem;color:#dc2626;margin-top:.25rem;display:block}

/* RESPONSIVE */
@media(max-width:768px){
  .nav-links{display:none;flex-direction:column;position:absolute;top:100%;left:0;right:0;background:var(--card);border-bottom:1px solid var(--border);padding:.75rem 1.25rem;gap:.2rem;box-shadow:0 4px 12px rgba(0,0,0,.08)}
  .nav-links.open{display:flex}
  nav{position:relative}
  .hamburger{display:flex}
  .inv-split{grid-template-columns:1fr!important}
  .inv-preview-wrap{position:static}
  .steps{display:none}
  /* Invoice form split */
  .invoice-split{grid-template-columns:1fr!important}
  /* Approval pipeline stage rows */
  .appr-stage-row{flex-direction:column!important;gap:.5rem!important}
  /* Approver link rows */
  .appr-link-row{flex-direction:column!important;align-items:stretch!important}
  .appr-link-row input{max-width:100%!important}
  /* Sig tabs */
  #sigTabs{flex-wrap:wrap}
  /* Status options */
  .status-opt{font-size:.8rem!important;padding:.4rem .7rem!important}
  /* Owner reply forms on mobile */
  .owner-reply-form textarea{font-size:.85rem}
  /* Dashboard link row */
  #ownerDashUrl{max-width:100%!important}
  /* Table overflow */
  .invoice-table{font-size:.8rem}
  /* Form rows */
  .form-row{grid-template-columns:1fr!important;gap:.6rem}
  /* Cards with tight padding on mobile */
  .card{padding:1.1rem}
}
@media(max-width:560px){
  .row2{grid-template-columns:1fr}
  .wrap,.wrap-sm{padding:1.5rem 1rem 3rem}
  .card{padding:1rem}
  .hero{padding:3rem 1rem 2.5rem}
  .inv-tbl th,.inv-tbl td{padding:.4rem .35rem;font-size:.78rem}
  /* Page wrap max-width override for narrow screens */
  .page-wrap{padding-left:.75rem!important;padding-right:.75rem!important}
  /* Approval pipeline dot + content row */
  .appr-pipeline-item{flex-direction:column;gap:.5rem}
  /* Cert form button */
  #certDownloadBtn{width:100%}
  /* Progress bar wrap */
  #invProgWrap{margin:.5rem 0}
  /* Sig canvas height on small screens */
  #approverSigCanvas{height:120px!important;min-height:120px!important}
  /* Thread bubbles */
  .thread-bubble{font-size:.8rem!important}
  /* Button group wrapping */
  .btn-group{flex-wrap:wrap}
  /* Footer stacking */
  .footer-grid{grid-template-columns:1fr!important}
  /* Stage quick add row in create form */
  #stageList .form-row{flex-direction:column;gap:.4rem}
  /* Invoice table col widths */
  .col-qty,.col-price{min-width:52px}
  .col-desc{min-width:100px}
}
