/* The client-facing document sheet, shared by the estimate and the invoice.
 *
 * Deliberately a document rather than an app screen: no sidebar, no nav, and
 * it must print cleanly, because clients do print these. `invoice.css` adds
 * the few things an invoice has that an estimate does not, so the two look
 * like they came from the same people.
 */

body { margin:0; padding:2rem 1rem; background:var(--bg); color:var(--ink);
           font: 16px/1.55 var(--font); }
    .sheet { max-width:44rem; margin:0 auto; background:var(--bg); padding:2.5rem;
             border:1px solid var(--rule); border-radius:.5rem; }
    header { display:flex; justify-content:space-between; align-items:flex-start;
             gap:1rem; border-bottom:2px solid var(--ink); padding-bottom:1rem; }
    h1 { font-size:1.4rem; margin:0 0 .25rem; }
    .ref { font-family: var(--mono); color:var(--muted); }
    .status { display:inline-block; padding:.15rem .6rem; border-radius:1rem;
              font-size:.75rem; text-transform:uppercase; letter-spacing:.04em;
              background:var(--accent-soft); color:var(--accent-ink); }
    .status.accepted { background:var(--ok-soft); color:var(--ok); }
    .status.rejected { background:var(--danger-soft); color:var(--danger); }
    dl.meta { display:grid; grid-template-columns:auto 1fr; gap:.3rem 1.25rem;
              margin:1.5rem 0; font-size:.9rem; }
    dl.meta dt { color:var(--muted); }
    dl.meta dd { margin:0; }
    table { width:100%; border-collapse:collapse; margin:1.5rem 0; font-size:.95rem; }
    th, td { text-align:left; padding:.6rem .4rem; border-bottom:1px solid var(--rule); }
    th { font-size:.75rem; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); }
    td.num, th.num { text-align:right; font-variant-numeric:tabular-nums; }
    tfoot td { border-bottom:none; padding-top:.8rem; }
    tfoot tr.total td { font-weight:700; font-size:1.05rem; border-top:2px solid var(--ink); }
    .terms { font-size:.85rem; color:var(--muted); border-top:1px solid var(--rule);
             margin-top:2rem; padding-top:1rem; white-space:pre-wrap; }
    .actions { display:flex; gap:.75rem; margin-top:2rem; }
    button { font:inherit; padding:.6rem 1.4rem; border-radius:.35rem; cursor:pointer;
             border:1px solid var(--rule); background:var(--card); }
    button.accept { background:var(--accent); border-color:var(--accent); color:#fff; font-weight:600; }
    .note { font-size:.85rem; color:var(--muted); margin-top:1rem; }
    .decided { margin-top:2rem; padding:1rem; border-radius:.35rem; background:var(--hover);
               font-size:.9rem; }
    @media print { body { background:var(--card); padding:0; } .sheet { border:none; } .actions { display:none; } }
