@font-face { font-family:"Printer DotMatrix"; font-weight:700; font-style:normal; font-display:swap; src:url("DotMatrix-Bold.woff2") format("woff2"); }
@font-face { font-family:"Printer DotMatrix"; font-weight:700; font-style:italic; font-display:swap; src:url("DotMatrix-BoldItalic.woff2") format("woff2"); }

html { height:100%; background:#303d38; scroll-padding-bottom:var(--printer-clearance,190px); }
body { height:100%; overflow:hidden; margin:0; background:repeating-linear-gradient(0deg,transparent 0 23px,#697c6819 23px 24px),repeating-linear-gradient(90deg,transparent 0 23px,#697c6819 23px 24px),#303d38; }
[hidden] { display:none !important; }
.site-shell { width:100%; max-width:860px; margin:16px auto 0; }
.skip-link { position:absolute; top:8px; left:8px; z-index:10; padding:12px; color:#155495; background:#fbf8ec; transform:translateY(-160%); }
.skip-link:focus { transform:none; }
#project-printer { --desk:#303d38; --desk-line:#697c6819; --paper:#fbf8ec; --ink:#182824; --link:#155495; --stripe:#648d640c; --printer-clearance:calc(25dvh + 60px); --matrix-machine-width:min(calc(100vw + 24px),850px);
 --paper-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.68 .2' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Cpath fill='%23808080' filter='url(%23p)' opacity='.055' d='M0 0h180v180H0z'/%3E%3C/svg%3E");
}
#project-printer * { box-sizing:border-box; }
#project-printer .bench { padding:0; }
/* The viewport clips native scrolling; its edge never waits on a scroll handler. */
#project-printer .paper-window { position:fixed; inset:0; z-index:1; overflow-x:hidden; overflow-y:auto; overscroll-behavior-y:none; scroll-padding-bottom:var(--printer-clearance,190px); clip-path:polygon(0 0,100% 0,100% 100%,calc(100% - 18px) 100%,calc(100% - 18px) var(--paper-exit-y,75vh),0 var(--paper-exit-y,75vh)); }
#project-printer .paper-window:focus-visible { outline:0; }
#project-printer .paper-window:focus-visible .sheet { outline:1px dotted #4b695b; outline-offset:3px; }
#project-printer .paper-content { width:calc(100% - 26px); max-width:834px; margin:0 auto; padding:29px 0 16px; }
#project-printer .sheet { position:relative; width:calc(var(--matrix-machine-width) * .69); left:calc(var(--matrix-machine-width) * -.015); margin:0 auto; padding:26px 35px var(--printer-clearance,190px); color:var(--ink); background-color:var(--paper); background-image:linear-gradient(90deg,#b4ab8620,transparent 25px,transparent calc(100% - 25px),#b4ab861a),var(--paper-grain),repeating-linear-gradient(0deg,transparent 0 27px,var(--stripe) 27px 55px); box-shadow:0 2px 9px #0005; font:700 20px/1.55 'Printer DotMatrix',monospace; font-synthesis:none; overflow-wrap:anywhere; }
#project-printer .sheet::before,#project-printer .sheet::after { content:""; position:absolute; top:0; bottom:0; width:23px; border-inline-end:1px dashed #afa98c77; background:radial-gradient(ellipse 3.5px 4.5px at 11px 12px,var(--desk) 96%,transparent 100%) 0 0/23px 29px repeat-y; pointer-events:none; }
#project-printer .sheet::before { left:0; }
#project-printer .sheet::after { right:0; transform:scaleX(-1); }
#project-printer .print-header { padding-bottom:19px; border-bottom:1px dashed #8c9989; }
#project-printer h1 { margin:0 0 13px; font:inherit; font-size:36px; line-height:1.2; }
#project-printer h2 { margin:0 0 12px; font:inherit; font-size:28px; line-height:1.3; }
#project-printer .intro p { margin:0 0 13px; }
#project-printer .sheet a { color:var(--link); font:inherit; text-decoration:underline dotted 2px; text-underline-offset:4px; }
#project-printer .sheet a:hover { background:#15549510; }
#project-printer .sheet a.stamp-link { display:inline-flex; align-items:center; justify-content:center; gap:.6em; max-width:100%; min-height:44px; padding:5px 10px; border:2px dotted #315f83; color:#174f7e; background:transparent; text-transform:uppercase; font-size:18px; line-height:1.5; text-decoration-thickness:1px; }
#project-printer .sheet a.stamp-link:hover { color:#123e66; background:#315f8312; border-color:#174f7e; text-decoration-thickness:2px; }
#project-printer .stamp-link span { white-space:nowrap; }
#project-printer .print-header .stamp-link { margin-top:2px; }
#project-printer .paper-intro { margin:0; padding:20px 0 0; }
#project-printer .paper-entry { position:relative; padding:25px 0 23px; border-bottom:1px dashed #8c9989; }
#project-printer .entry-label { margin:0 0 10px; color:#52645d; font-size:15px; line-height:1.5; }
#project-printer .paper-entry p { margin:0 0 14px; }
#project-printer .paper-entry .entry-label { margin-bottom:10px; }
#project-printer .entry-links { display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
#project-printer .fold-line { position:relative; height:9px; margin-inline:-15px; background:linear-gradient(0deg,#fff3,transparent 45%,#7b735b10 48%,transparent 60%); pointer-events:none; }
#project-printer .end-note { padding-top:23px; color:#52645d; }
#project-printer .end-note p { margin:5px 0; }
#project-printer .end-note .stamp-link { margin-top:6px; }

/* The back cover sits behind the paper; the photographed front occludes it. */
#project-printer .printer-frame { position:fixed; left:50%; bottom:-12px; width:var(--matrix-machine-width); aspect-ratio:3; transform:translateX(-50%); pointer-events:none; --paper-exit:42%; }
#project-printer .printer-rear { z-index:0; }
#project-printer .printer { z-index:2; }
#project-printer .case-photo { position:absolute; inset:0; display:block; }
#project-printer .case-image { display:block; width:100%; height:100%; object-fit:fill; }
#project-printer .printer-rear .case-photo { clip-path:inset(0 0 calc(100% - var(--paper-exit)) 0); }
#project-printer .printer .case-photo { clip-path:inset(var(--paper-exit) 0 0 0); filter:drop-shadow(0 6px 5px #08100970); }
#project-printer .head-track { position:absolute; left:13%; right:17%; top:55%; height:18%; overflow:hidden; }
#project-printer .writer-head { position:absolute; width:14%; height:auto; bottom:0; animation:carriage-scan .8s linear infinite alternate; animation-play-state:paused; }
#project-printer .printing .writer-head { animation-play-state:running; }
@keyframes carriage-scan { from { transform:translateX(0); } to { transform:translateX(var(--head-travel,0px)); } }
@media(prefers-reduced-motion:reduce) { #project-printer .writer-head { animation:none; transform:translateX(calc(var(--head-travel,0px) / 2)); } }
#project-printer .output-slot { position:absolute; left:14%; right:17%; top:var(--paper-exit); height:0; }
#project-printer .front-panel { position:absolute; inset:0; }
#project-printer .device-label { position:absolute; left:9%; bottom:15%; display:grid; gap:1px; color:#393a31; }
#project-printer .device-label strong { font:600 clamp(8px,1.1vw,11px)/1.2 Arial,sans-serif; letter-spacing:1.4px; }
#project-printer .receipt-label { display:none; }
#project-printer .status { display:flex; align-items:center; gap:7px; font:clamp(8px,1vw,10px)/1.3 Arial,sans-serif; }
#project-printer .status-light { width:4px; height:4px; border-radius:50%; background:#637548; box-shadow:0 0 0 1px #39412d,inset 0 1px #bec79b; }
#project-printer .printing .status-light { background:#d3a848; }
#project-printer .feed { position:absolute; left:70.5%; top:72.5%; width:18%; height:13%; min-height:38px; padding:0 5px; border:0; border-radius:5px; background:transparent; color:#30312b; font:700 11px/1.2 Arial,sans-serif; text-transform:uppercase; letter-spacing:.2px; cursor:pointer; pointer-events:auto; }
#project-printer .feed:hover { background:#fff5d914; }
#project-printer .feed:active { color:#151b13; background:#282d1c12; transform:translateY(1px); }
#project-printer .feed:disabled { opacity:.55; cursor:default; }
#project-printer a:focus-visible,#project-printer button:focus-visible,#project-printer summary:focus-visible,#project-printer .table-scroll:focus-visible { outline:2px dashed #155495; outline-offset:5px; }

#project-printer .markdown { font:700 20px/1.55 'Printer DotMatrix',monospace; }
#project-printer .markdown > :first-child { margin-top:0; }
#project-printer .markdown > :last-child { margin-bottom:0; }
#project-printer .markdown :is(h1,h2,h3,h4,h5,h6) { margin:1.2em 0 .5em; font-family:'Printer DotMatrix',monospace; font-weight:700; line-height:1.35; letter-spacing:0; }
#project-printer .markdown h1 { font-size:32px; }
#project-printer .markdown h2 { font-size:28px; }
#project-printer .markdown h3 { font-size:25px; }
#project-printer .markdown h4 { font-size:23px; }
#project-printer .markdown h5 { font-size:21px; text-transform:uppercase; }
#project-printer .markdown h6 { font-size:20px; text-decoration:underline dotted; text-underline-offset:5px; }
#project-printer .markdown strong { text-shadow:.35px 0 currentColor,-.35px 0 currentColor; }
#project-printer .markdown em { font-style:italic; }
#project-printer .markdown del { text-decoration-thickness:2px; }
#project-printer .markdown :is(ul,ol) { margin:14px 0; padding-left:1.6em; }
#project-printer .markdown li { margin:.3em 0; padding-left:.15em; }
#project-printer .markdown li :is(ul,ol) { margin:.3em 0; }
#project-printer .markdown .task-list { list-style:none; padding-left:1.4em; }
#project-printer .markdown .task-list-item { position:relative; }
#project-printer .markdown .task-list-item input { appearance:none; -webkit-appearance:none; position:absolute; left:-1.4em; top:.27em; margin:0; width:.9em; height:.9em; font:inherit; border:2px dotted var(--ink); border-radius:0; opacity:1; background:none; }
#project-printer .markdown .task-list-item input:checked::after { content:'x'; position:absolute; left:0; top:-.47em; color:var(--ink); }
#project-printer .markdown blockquote { margin:18px 0; padding:3px 0 3px 16px; border-left:3px dotted #718276; }
#project-printer .markdown blockquote > :last-child { margin-bottom:0; }
#project-printer .markdown hr { margin:26px 0; border:0; border-top:2px dotted #8c9989; }
#project-printer .markdown :is(code,kbd,samp) { font:inherit; font-size:.9em; padding:1px 4px; border:1px dotted #8c9989; background:#648d640c; box-decoration-break:clone; }
#project-printer .markdown pre,#project-printer .markdown .highlight { max-width:100%; overflow-x:auto; }
#project-printer .markdown pre { margin:18px 0; padding:12px; border:2px dotted #8c9989; background:#648d640c; font:700 18px/1.5 'Printer DotMatrix',monospace; overflow-wrap:normal; tab-size:4; }
#project-printer .markdown pre code { padding:0; border:0; background:none; font:inherit; }
#project-printer .markdown pre :is(span,a) { color:inherit; font:inherit; background:none; }
#project-printer .markdown .table-scroll { max-width:100%; overflow-x:auto; margin:18px 0; scrollbar-color:#8c9989 #fbf8ec; }
#project-printer .markdown table { width:100%; min-width:360px; border-collapse:collapse; font:inherit; font-size:18px; overflow-wrap:normal; }
#project-printer .markdown th,#project-printer .markdown td { padding:9px 12px; border:1px dotted #8c9989; text-align:left; vertical-align:top; }
#project-printer .markdown th { background:#648d640c; text-shadow:.35px 0 currentColor; }
#project-printer .markdown img { display:block; margin:18px 0; max-width:100%; height:auto; padding:5px; border:1px dotted #8c9989; }
/* Halftone ink dots, slight ink spread, and a faint ribbon pass every eight pixels. */
.print-effects { position:absolute; pointer-events:none; }
#project-printer .markdown img:not(.full-color) {
 filter:url(#ribbon-print);
 mix-blend-mode:multiply;
 opacity:.95;
 mask-image:repeating-linear-gradient(to bottom,#000 0 7px,#000e 7px 8px);
}

#project-printer .markdown dt { margin-top:14px; text-shadow:.35px 0 currentColor; }
#project-printer .markdown dd { margin:5px 0 14px 1.4em; }
#project-printer .markdown abbr[title] { text-decoration:underline dotted; text-underline-offset:4px; cursor:help; }
#project-printer .markdown .footnote { margin-top:24px; font-size:18px; }
#project-printer .markdown .footnote p { font-size:18px; }
#project-printer .markdown sup { font-size:.75em; line-height:0; }
#project-printer .markdown details { margin:18px 0; padding:12px 0; border-block:2px dotted #8c9989; }
#project-printer .markdown summary { color:var(--link); cursor:pointer; text-decoration:underline dotted; text-underline-offset:4px; }
#project-printer .markdown details[open] summary { margin-bottom:14px; }
/* Crop the case wings on phones so the receipt uses the available width.
   The paper and the photographed slot share the same machine measurement. */
@media(max-width:600px) {
 .site-shell { width:calc(100% - 16px); max-width:440px; margin-top:15px; }
 #project-printer { --paper:#faf9f3; --ink:#272c29; --link:#185079; --receipt-machine-width:min(calc(100vw + 60px),620px); }
 #project-printer .paper-content { width:100%; max-width:none; padding:10px 0 10px; }
 #project-printer .sheet { width:calc(var(--receipt-machine-width) * .74); max-width:none; left:0; padding:18px 14px var(--printer-clearance,190px); background-image:linear-gradient(90deg,#d3cfc033,transparent 9px,transparent calc(100% - 8px),#c9c6b933),var(--paper-grain); box-shadow:0 0 0 1px #e8e4d14d,2px 3px 10px #08140c60; font:600 15px/1.65 'Courier New',Courier,monospace; }
 #project-printer .sheet::before { top:-5px; bottom:auto; left:0; width:100%; height:6px; border:0; background:linear-gradient(135deg,transparent 50%,var(--paper) 51%) 0 0/8px 8px repeat-x,linear-gradient(225deg,transparent 50%,var(--paper) 51%) 0 0/8px 8px repeat-x; }
 #project-printer .sheet::after { top:0; right:0; width:3px; border:0; background:linear-gradient(90deg,#e0ddcc44,transparent); transform:none; }
 #project-printer .markdown { font:inherit; }
 #project-printer h1 { font-size:23px; line-height:1.25; letter-spacing:-1px; }
 #project-printer h2 { font-size:22px; line-height:1.35; letter-spacing:-.6px; }
 #project-printer .print-header { padding-bottom:16px; border-color:#8d9186; }
 #project-printer .paper-intro { padding-top:16px; }
 #project-printer .paper-entry { padding:18px 0; border-color:#a4a69b; }
 #project-printer .entry-label { font-size:12px; color:#596057; }
 #project-printer .sheet a.stamp-link { min-height:44px; padding:6px 8px; border-width:1px; font-size:13px; font-weight:700; }
 #project-printer .entry-links { gap:8px; }
 #project-printer .fold-line { display:none; }
 #project-printer .markdown :is(h1,h2,h3,h4,h5,h6) { font-family:inherit; letter-spacing:-.5px; }
 #project-printer .markdown h1 { font-size:26px; }
 #project-printer .markdown h2 { font-size:23px; }
 #project-printer .markdown h3 { font-size:21px; }
 #project-printer .markdown h4 { font-size:19px; }
 #project-printer .markdown :is(h5,h6) { font-size:17px; }
 #project-printer .markdown :is(strong,dt,th) { text-shadow:none; }
 #project-printer .markdown pre { font:inherit; font-size:14px; padding:10px; }
 #project-printer .markdown :is(table,.footnote,.footnote p) { font-size:14px; }
 #project-printer .markdown img:not(.full-color) { filter:url(#ribbon-print-fine); }
 #project-printer .printer-frame { width:var(--receipt-machine-width); aspect-ratio:1.5; bottom:-8px; --paper-exit:61.2%; }
 #project-printer .output-slot { left:13%; right:13%; }
 #project-printer .head-track,#project-printer .matrix-label { display:none; }
 #project-printer .receipt-label { display:inline; }
 #project-printer .device-label { left:12%; top:auto; bottom:12%; gap:3px; color:#d3d3ca; }
 #project-printer .device-label strong { font-size:9px; letter-spacing:1.8px; }
 #project-printer .status { font-size:9px; color:#c3c4ba; }
 #project-printer .status-light { background:#83a169; box-shadow:0 0 0 1px #151e11; }
 #project-printer .feed { left:62.5%; top:74%; width:28.5%; height:14%; min-height:44px; font-size:10px; color:#272e2a; }
 #project-printer .printer button:focus-visible { outline-color:#edf0d8; }

}
@media(pointer:coarse) { #project-printer .feed { min-height:44px; } }
@media print {
 html,body { height:auto; overflow:visible; }
 body { background:white; }
 #project-printer .printer,#project-printer .printer-rear,.skip-link { display:none !important; }
 .site-shell { max-width:none; margin:0; }
 #project-printer .bench { padding:0; background:none; }
 #project-printer .sheet { width:100%; max-width:none; left:0; box-shadow:none; padding-bottom:20px; }
 #project-printer .paper-window { position:static; overflow:visible; clip-path:none; }
 #project-printer .paper-content { width:100%; max-width:none; padding:0; }
 #project-printer .table-scroll,#project-printer .markdown pre { overflow:visible; white-space:pre-wrap; }
}
