/* print-r2-formal.css - the style r2-formal: direction ช "classic Thai formal" (the owner's pick beside ฉ, 2026-10-10). Fully boxed:
   a frame round every part, each fact a labelled cell, the item table fully ruled, the amount in words and the totals in their own
   boxes, signature boxes - the layout many Thai accountants expect, in thin black rules and Sarabun (the formal print face, vendored
   400/600/700 in vendor/print-fonts.css: no 500 here). No company colour on the page: black rules print the same on any printer.
   Ported from line G's mockup (claude/storefront 44463d5c docs/design/doc-redesign-2026-10-09/g-formal.css + base.css) onto the
   engine's p-* markup - the class map heads print-r2-cards.css, what every r2 style shares is print-r2.css. Every rule under
   .paper[data-theme=r2-formal], loaded after print-r2.css. The parts' frames meet: each part after the first is pulled up by its own
   frame's width (margin-top:-.35mm), so two frames read as one rule. */

/* ---------- tokens ---------- */
.paper[data-theme=r2-formal]{
  --ink:#0f1215;--muted:#3f464d;--rule:#2b3036;--soft:#f3f4f5;--side:10mm;--frame:.35mm solid var(--rule);
  --font:'Sarabun','Noto Sans Thai',sans-serif;
  padding:9mm var(--side) 14mm;font:400 calc(9pt*var(--fs))/1.4 var(--font);color:var(--ink)
}

/* ---------- header: one frame, the seller left, the title in its own cell on the right ---------- */
.paper[data-theme=r2-formal] .p-head{grid-template-columns:minmax(0,1fr) auto;gap:0;align-items:stretch;padding:0;border:var(--frame);margin:0}
.paper[data-theme=r2-formal] .p-brand{gap:3mm;align-items:flex-start;padding:3mm 3.5mm}
.paper[data-theme=r2-formal] .p-co-name{font:700 12pt/1.25 var(--font)}
.paper[data-theme=r2-formal] .p-co-en{font:600 8pt/1.3 'Inter',sans-serif;letter-spacing:.05em}
.paper[data-theme=r2-formal] .p-co-addr{font-size:8.5pt;line-height:1.35;color:var(--ink)}
.paper[data-theme=r2-formal] .p-tb{max-width:calc(var(--title-max,76mm) + 8mm);border-left:var(--frame);padding:3mm 4mm;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.paper[data-theme=r2-formal] .p-title{font:700 var(--title-pt,var(--title-from,16pt))/1.2 var(--font);color:var(--ink)}
.paper[data-theme=r2-formal] .p-en{font:700 8pt/1.3 'Inter',sans-serif;letter-spacing:.1em;color:var(--ink);margin-top:.5mm}
.paper[data-theme=r2-formal] .p-chip,.paper[data-theme=r2-formal] .p-badge{margin:1.5mm 0 0;border:var(--frame);border-radius:0;background:none;color:var(--ink);padding:.2mm 3mm;font:700 8.5pt/1.5 var(--font)}
.paper[data-theme=r2-formal] .p-badge{margin:0 0 1.5mm}

/* ---------- the buyer and the facts: one frame, the facts a table of label | value cells ---------- */
.paper[data-theme=r2-formal] .p-parties{gap:0;margin:-.35mm 0 0;border:var(--frame)}
.paper[data-theme=r2-formal] .p-infocard,.paper[data-theme=r2-formal] .p-party{background:none;border:0;border-radius:0;padding:2mm 3mm}
.paper[data-theme=r2-formal] .p-parties>*+*{border-left:var(--frame)}
.paper[data-theme=r2-formal] .p-party .k,.paper[data-theme=r2-formal] .p-cardlabel{font:700 8pt/1.3 var(--font);color:var(--ink);letter-spacing:0}
.paper[data-theme=r2-formal] .p-party b{font:700 10.5pt/1.4 var(--font)}
.paper[data-theme=r2-formal] .p-party p{font-size:8.5pt;color:var(--ink)}
.paper[data-theme=r2-formal] .p-infocard--meta{width:80mm;padding:0;gap:0;align-content:stretch}
.paper[data-theme=r2-formal] .p-infocard--meta .p-mrow{display:grid;grid-template-columns:37mm minmax(0,1fr);gap:0;font-size:8.5pt;border-bottom:.2mm solid var(--rule)}
.paper[data-theme=r2-formal] .p-infocard--meta .p-mrow:last-child{border-bottom:0}
.paper[data-theme=r2-formal] .p-infocard--meta .p-mrow .k{padding:.8mm 2.5mm;background:var(--soft);border-right:.2mm solid var(--rule);font-weight:600;color:var(--ink)}
.paper[data-theme=r2-formal] .p-infocard--meta .p-mrow .v{padding:.8mm 2.5mm;font-weight:700;text-align:left}
.paper[data-theme=r2-formal] .p-twobox{gap:0;margin-top:-.35mm;border:var(--frame)}
.paper[data-theme=r2-formal] .p-twobox>.p-infocard+.p-infocard{border-left:var(--frame)}

/* ---------- items: fully ruled, the head on a grey band; the English of a head on its own line ---------- */
.paper[data-theme=r2-formal] .p-items{margin-top:-.35mm;border:var(--frame)}
.paper[data-theme=r2-formal] .p-items th{padding:1.2mm 1.6mm;text-align:center;font:700 8.5pt/1.3 var(--font);color:var(--ink);background:var(--soft);border:.2mm solid var(--rule);border-bottom:var(--frame)}
.paper[data-theme=r2-formal] .p-items th .p-len{display:block;line-height:1.1}
.paper[data-theme=r2-formal] .p-items th .p-lth+.p-len::before{content:none}
.paper[data-theme=r2-formal] .p-items td{padding:1.1mm 1.6mm;border-left:.2mm solid var(--rule);border-right:.2mm solid var(--rule);border-bottom:.15mm dotted #6b7178}
.paper[data-theme=r2-formal] .p-items td.c{text-align:center}
.paper[data-theme=r2-formal] .p-items td b{font-weight:600}
.paper[data-theme=r2-formal] .p-items tfoot td{border-top:var(--frame);border-bottom:0;background:var(--soft)}
.paper[data-theme=r2-formal] .p-items tr.p-carry td{background:var(--soft);font-weight:700;border-bottom:.2mm solid var(--rule)}

/* ---------- summary: one frame - the words (grey, centred) and payment on the left, the totals a ruled table on the right ---------- */
.paper[data-theme=r2-formal] .p-summary{grid-template-columns:minmax(0,1fr) 70mm;gap:0;margin-top:-.35mm;border:var(--frame);align-items:stretch}
.paper[data-theme=r2-formal] .p-note{display:flex;flex-direction:column;gap:0;border-right:var(--frame);font-size:8.5pt;color:var(--ink)}
.paper[data-theme=r2-formal] .p-note>*{margin:0;padding:2mm 3mm}
.paper[data-theme=r2-formal] .p-note>*+*{border-top:.2mm solid var(--rule)}
.paper[data-theme=r2-formal] .p-wordsbox{flex:1 0 auto;display:flex;flex-direction:column;justify-content:center;border:0;border-radius:0;background:var(--soft);padding:1.8mm 3mm;text-align:center}
.paper[data-theme=r2-formal] .p-wordsbox .k,.paper[data-theme=r2-formal] .p-reasonbox .k{font:700 8pt/1.3 var(--font);color:var(--ink)}
.paper[data-theme=r2-formal] .p-wordsbox b{font:700 10pt/1.4 var(--font)}
.paper[data-theme=r2-formal] .p-reasonbox{border:0;border-radius:0;background:none}
.paper[data-theme=r2-formal] .p-pay{background:none;border:0;border-radius:0;font-size:8.5pt;line-height:1.4}
.paper[data-theme=r2-formal] .p-totals{font-size:9pt}
.paper[data-theme=r2-formal] .p-sum{column-gap:0}
.paper[data-theme=r2-formal] .p-sum .l{padding:1mm 3mm;border-bottom:.2mm solid var(--rule);border-right:.2mm solid var(--rule);font-weight:600;color:var(--ink)}
.paper[data-theme=r2-formal] .p-sum .n{padding:1mm 3mm;border-bottom:.2mm solid var(--rule)}
.paper[data-theme=r2-formal] .p-band{margin:0;background:var(--soft);color:var(--ink);border-radius:0;border-top:.15mm solid var(--rule);padding:1.4mm 3mm;align-items:center;flex-wrap:wrap;gap:1mm 3mm}
.paper[data-theme=r2-formal] .p-band .lab{font:700 10.5pt/1.2 var(--font)}
.paper[data-theme=r2-formal] .p-band .lab small{font:600 8pt/1.3 'Inter',sans-serif;color:var(--ink);opacity:1}
.paper[data-theme=r2-formal] .p-band .amt{margin-left:auto;font:700 12.5pt/1.1 var(--font);color:var(--ink)}

/* ---------- payment row: a framed part of its own ---------- */
.paper[data-theme=r2-formal] .p-payrow{margin-top:-.35mm;padding:1.8mm 3mm;border:var(--frame)}
.paper[data-theme=r2-formal] .p-payfields dt{color:var(--ink);font-weight:600}

/* ---------- notes, acknowledgement, signatures: framed parts ---------- */
.paper[data-theme=r2-formal] .p-notes{margin-top:-.35mm;padding:1.8mm 3mm;border:var(--frame);gap:1mm;font-size:8.5pt;color:var(--ink)}
.paper[data-theme=r2-formal] .p-legal{font-style:normal;font-size:8pt;color:var(--muted)}
.paper[data-theme=r2-formal] .p-ack{margin-top:-.35mm;padding:1.6mm 3mm;border:var(--frame);border-radius:0;font:400 8.5pt/1.4 var(--font);text-align:left}
/* signature boxes side by side in one frame: the pen's room over a dotted line, the role under it */
.paper[data-theme=r2-formal] .p-signs{gap:0;margin-top:4mm;border:var(--frame)}
.paper[data-theme=r2-formal] .p-signs>div{border:0;padding:2mm 3mm 1.6mm;font:700 8.5pt/1.4 var(--font);color:var(--ink)}
.paper[data-theme=r2-formal] .p-signs>div+div{border-left:var(--frame)}
.paper[data-theme=r2-formal] .p-signs>div::before{content:"";display:block;height:11mm;margin:0 5mm 1mm;border-bottom:.2mm dotted var(--ink)}

/* ---------- ink saver (.is-eco): the grey cells go white, the rules stay ---------- */
.paper[data-theme=r2-formal].is-eco{--soft:#fff}
.paper[data-theme=r2-formal].is-eco .p-band{border-bottom:0;color:var(--ink)}
