/* ==================================================================
   PRINT SHEET

     8.44in page
     - 0.30in @page margin x2  = 7.84in sheet
     - 0.32in body padding x2  = 7.20in of type = 72 chars at 10 CPI
   12pt Courier IS 10 CPI, so the type size falls out of the paper width.
   Lines sit 12pt apart: six per inch, as on the real platen.
   Change one number and the whole chain breaks.

   Everything is FOREGROUND -- outline, torn edges, text -- because browsers
   do not print background colours unless the user opts in. The printed
   characters are solid: a real printer turns partial opacity into halftone
   dots, which at 12pt just looks like dirt.
   ================================================================== */

#printout{display:none;}

@media print{
  html,body{height:auto;overflow:visible;background:#fff;display:block;}
  #app,.backdrop{display:none !important;}
  #printout{display:block;}
  /* The 0.30in LEFT AND RIGHT is load-bearing and must not be touched: it is
     the middle term of the chain in docs/model33.md that ends at 7.20in of
     type = 72 characters at 10 CPI. Nothing depends on the top and bottom,
     and they are wider because the browser draws its own header and footer
     inside the margin -- at 0.30in the page title and the URL land on top of
     the first line of the sheet. */
  @page{ size:8.44in 11in; margin:0.5in 0.30in 0.35in; }
}

.psheet{
  font:12pt/1 'Courier New',Courier,monospace;
  color:#1C150E;
}

/* A standalone break element is honoured far more reliably across engines
   than break-before on the sheet itself. */
.pagebreak{height:0;break-after:page;page-break-after:always;}

/* The side rules live ONLY between the two torn edges, so they cannot
   overshoot past the zigzag at either end. Putting the border on the sheet
   would make it span the padding too. */
.pbody{
  border-left:0.6pt solid #2A2118;
  border-right:0.6pt solid #2A2118;
  padding:14pt 0.32in;
}

.tear{display:block;width:100%;height:6pt;overflow:visible;}
.pline{white-space:pre;height:12pt;}       /* 6 lines per inch */
.pmeta{white-space:pre;height:12pt;letter-spacing:.04em;}
.prule{border-top:0.6pt dashed #2A2118;margin:7pt 0;height:0;}

/* Overstruck cell: the extra characters sit exactly on top of the first.
   No ch units anywhere on this sheet -- they re-resolve against the print
   font and the columns drift. */
.ov{position:relative;display:inline-block;}
.ov i{position:absolute;left:0;top:0;font-style:normal;}

/* ---- A printed paper tape -------------------------------------------
   Strips laid across the page, each one ten inches of tape at true size.
   The page is the same 8.44in sheet the roll prints on: 7.84in of usable
   width takes seven one-inch strips with a gutter between them. */

.tpage{
  font:12pt/1 'Courier New',Courier,monospace;
  color:#1C150E;
}
.tstrips{
  display:flex;align-items:flex-start;
  gap:0.14in;margin-top:10pt;
}
/* A strip must never be split across a page: half a tape is not a tape. */
.tstrip{
  flex:0 0 auto;break-inside:avoid;page-break-inside:avoid;
}
/* Which rows this strip holds. Seven identical inch-wide strips cannot be
   put back in order without it. */
.tlabel{
  font-size:6pt;letter-spacing:.06em;text-align:center;
  margin-bottom:2pt;opacity:.75;
}
.tstrip svg{display:block;}
