/* =============================================================
   The print family (see artifacts.js): card stock, inks, type.
   Every size is a canonical point on the app's artifact; frames
   scale the whole piece.
   ============================================================= */
@font-face{
  font-family:"Archivo";
  src:url(assets/fonts/archivo-latin.woff2) format("woff2");
  font-weight:100 900; font-stretch:62% 125%; font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Archivo";
  src:url(assets/fonts/archivo-latin-ext.woff2) format("woff2");
  font-weight:100 900; font-stretch:62% 125%; font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
:root{
  --pr-paper:#FBF9F4; --pr-shade:#F2EEE5;
  --pr-ink:#1D1C1A; --pr-soft:rgba(29,28,26,.62); --pr-faint:rgba(29,28,26,.38);
  --pr-pencil:#8A93A0;
  --pr-mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,"Roboto Mono",Consolas,monospace;
  --pr-face:"Archivo",-apple-system,"Helvetica Neue",Arial,sans-serif;
}
.art-frame{position:relative;flex:none}
.art-frame > *{position:absolute;left:0;top:0}
.art-scale > *{position:absolute;left:0;top:0}

/* ---------- stamps ---------- */
.cstamp{display:block;width:100%;height:100%;overflow:visible}
.st-name{font-family:var(--pr-face);font-weight:800;font-stretch:75%}
.st-cont{font-family:ui-rounded,"SF Pro Rounded",var(--pr-face);font-weight:500;font-size:17px}
.st-date{font-family:var(--pr-mono);font-weight:700}
.stamp-box{display:block;position:relative;transform:rotate(var(--tilt,0deg)) scale(var(--mul,1))}

/* ---------- tickets: 480 × 200 ---------- */
.tk{position:relative;width:480px;height:200px;filter:drop-shadow(0 3px 6px rgba(0,0,0,.16));color:var(--pr-ink)}
.tk.is-planned{filter:drop-shadow(0 3px 6px rgba(0,0,0,.08))}
.tk-paper{position:absolute;left:0;top:0;width:480px;height:200px;overflow:visible}
.tk-body-torn{display:none}
.tk.is-used .tk-body{display:none}
.tk.is-used .tk-body-torn{display:inline}
.tk.is-used .tk-edge{display:none}
.tk-main{
  position:absolute;left:0;top:0;width:356px;height:200px;box-sizing:border-box;
  padding:20px 22px 19px 24px;display:flex;flex-direction:column;justify-content:space-between;
}
.tk-head{display:flex;align-items:center;gap:6px;height:14px}
.tk-head .glyph{flex:none}
.tk-kind{font-family:var(--pr-face);font-weight:800;font-stretch:125%;font-size:11px;letter-spacing:1.6px;white-space:nowrap;line-height:1}
.tk-sp{flex:1 1 0;min-width:0}
.tk-ref{font-family:var(--pr-mono);font-weight:600;font-size:9.5px;letter-spacing:.6px;white-space:nowrap}
.tk-route{display:flex;flex-direction:column}
.tk-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tk-big{white-space:nowrap;line-height:1}
.tk-code{font-family:var(--pr-face);font-weight:900;font-stretch:125%;font-size:46px;letter-spacing:-.5px}
.tk-name{font-family:var(--pr-face);font-weight:800;font-stretch:75%;font-size:30px;text-transform:uppercase}
.tk-conn{display:flex;align-items:center;gap:4px;flex:none}
.tk-conn i{display:block;width:16px;height:0;border-top:1.5px dashed currentColor;border-radius:1px;opacity:.95}
.tk-stations{display:flex;justify-content:space-between;gap:10px;margin-top:3px;font-family:-apple-system,"SF Pro Text","Helvetica Neue",Arial,sans-serif;font-weight:600;font-size:11px;white-space:nowrap}
.tk-titlerow{display:flex;align-items:center;gap:14px}
.tk-titleblock{display:flex;flex-direction:column;gap:5px;flex:1 1 auto;min-width:0}
.tk-title{font-family:var(--pr-face);font-weight:800;font-stretch:75%;font-size:32px;line-height:.98;text-transform:uppercase}
.tk-sub{font-family:-apple-system,"Helvetica Neue",Arial,sans-serif;font-weight:600;font-size:11.5px;white-space:nowrap}
.tk-tile{flex:none;width:58px;height:58px;border-radius:10px;display:grid;place-items:center;box-sizing:border-box}
.tk-fields{display:flex;align-items:flex-start}
.tk-field{display:flex;flex-direction:column;gap:3px;width:104px}
.tk-field:last-child{width:auto}
.tk-label{font-family:-apple-system,"Helvetica Neue",Arial,sans-serif;font-weight:700;font-size:9px;letter-spacing:1.6px;text-transform:uppercase;white-space:nowrap}
.tk-value{font-family:var(--pr-mono);font-weight:600;font-size:13px;white-space:nowrap}
.tk-stub{position:absolute;left:356px;top:0;width:124px;height:200px;transform-origin:0 100%}
.tk-stub .tk-paper{width:124px}
.tk-stub-face{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding:20px 10px 16px;box-sizing:border-box}
.tk-day{font-family:var(--pr-face);font-weight:900;font-stretch:125%;font-size:38px;line-height:1}
.tk-month{font-family:var(--pr-face);font-weight:800;font-stretch:125%;font-size:12.5px;letter-spacing:2.2px;line-height:1.1}
.tk-line{font-family:var(--pr-mono);font-weight:600;font-size:11px;margin-top:3px}
.tk-bar{width:88px;height:26px;display:block}
.tk-bar .barcode{display:block}
.tk-pencilbox{display:block;width:100%;height:100%;border:1.2px dashed;border-radius:4px;box-sizing:border-box}
.tk-foot{font-family:var(--pr-face);font-weight:800;font-stretch:125%;font-size:8.5px;letter-spacing:1.3px;margin-top:7px;white-space:nowrap}
/* pencil: hollow type, graphite outline */
.hollow{color:var(--pr-paper)!important;-webkit-text-stroke:1.4px var(--pr-pencil);paint-order:stroke fill}
/* used: the stub tears away along the perforation and the rest centres */
.tk.is-used{transform:translateX(62px)}
.tk.is-used .tk-stub{opacity:0;transform:translate(44px,16px) rotate(11deg)}
.tk-stub{transition:opacity .45s cubic-bezier(.22,.61,.36,1), transform .55s cubic-bezier(.34,1.3,.64,1)}
.tk{transition:transform .5s cubic-bezier(.22,.61,.36,1)}

/* ---------- luggage tags: 460 × 240 ---------- */
.tg{position:relative;width:460px;height:240px;color:var(--pr-ink);filter:drop-shadow(0 3px 6px rgba(0,0,0,.16))}
.tg-paper{position:absolute;left:-70px;top:-6px;width:536px;height:252px;overflow:visible}
.tg-string{filter:drop-shadow(0 1px 1px rgba(0,0,0,.18))}
.tg-front{position:absolute;inset:0;padding:13px 22px 13px 70px;box-sizing:border-box;display:flex;flex-direction:column}
.tg-head{display:flex;align-items:center;gap:7px;height:16px}
.tg-kind{font-family:var(--pr-face);font-weight:800;font-stretch:125%;font-size:12px;letter-spacing:1.6px;white-space:nowrap}
.tg-trail{font-family:var(--pr-mono);font-weight:600;font-size:11px;letter-spacing:.5px;white-space:nowrap}
.tg-window{margin-top:9px;width:206px;height:124px;border-radius:6px;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(29,28,26,.12);background:#e9e4d8}
.tg-window img{width:100%;height:100%;object-fit:cover;display:block}
.tg-window.is-pencil{background:transparent;box-shadow:none;outline:1.6px dashed var(--pr-pencil);outline-offset:-1px}
.tg-window.is-pencil img{filter:grayscale(.9);opacity:.55}
.tg-title{font-family:var(--pr-face);font-weight:800;font-stretch:75%;font-size:34px;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:clip}
.tg-dates{font-family:var(--pr-mono);font-weight:600;font-size:12px;letter-spacing:.4px;margin-top:2px;white-space:nowrap}
.tg-stamp{position:absolute;display:block;transform:rotate(var(--tilt,0deg))}

/* ---------- receipt: 288 wide ---------- */
.rc{position:relative;width:288px;color:var(--pr-ink);filter:drop-shadow(0 3px 6px rgba(0,0,0,.16))}
.rc-paper{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.rc-in{position:relative;padding:23px 20px;display:flex;flex-direction:column}
.rc-mast{display:flex;align-items:center;gap:6px;font-family:var(--pr-face);font-weight:800;font-stretch:125%;font-size:9px;letter-spacing:1.6px;color:var(--pr-soft)}
.rc-title{font-family:var(--pr-face);font-weight:800;font-stretch:75%;font-size:30px;line-height:1;text-align:center;text-transform:uppercase;margin-top:14px}
.rc-time{font-family:var(--pr-mono);font-weight:600;font-size:10.5px;color:var(--pr-soft);text-align:center;margin-top:8px}
.rc-rule{height:0;border-top:1px dashed var(--pr-faint);margin:10px 0}
.rc-double{margin:0}
.rc-double + .rc-pair{margin:8px 0}
.rc-total{margin:10px 0;display:flex;flex-direction:column}
.rc-total .rc-double + .rc-pair + .rc-double{margin-top:0}
.rc-total .rc-double{border-top:none;height:3px;background:repeating-linear-gradient(90deg,var(--pr-faint) 0 4px,transparent 4px 7px) top/100% 1px no-repeat,repeating-linear-gradient(90deg,var(--pr-faint) 0 4px,transparent 4px 7px) bottom/100% 1px no-repeat}
.rc-total .rc-pair{font-size:16px;font-weight:800}
.rc-heading{font-family:-apple-system,"Helvetica Neue",Arial,sans-serif;font-weight:700;font-size:9px;letter-spacing:1.6px;color:var(--pr-soft);text-transform:uppercase;padding:12px 0 4px}
.rc-pair{display:flex;align-items:baseline;gap:4px;font-family:var(--pr-mono);font-weight:600;font-size:12px;padding:3px 0;text-transform:uppercase}
.rc-pair i{flex:1 1 auto;min-width:10px;height:1px;background:radial-gradient(circle,currentColor .7px,transparent .9px) 0 0/3.7px 1.6px repeat-x;opacity:.5;align-self:center;transform:translateY(3px)}
.rc-detail{font-size:11px;color:var(--pr-soft);padding:2px 0 2px 12px}
.rc-note{font-family:var(--pr-mono);font-weight:600;font-size:10.5px;color:var(--pr-soft);text-align:center;padding:6px 0;text-transform:uppercase}
.rc-close{display:flex;flex-direction:column;align-items:center;gap:10px;padding-top:18px}
.rc-foot,.rc-digits{font-family:var(--pr-mono);font-weight:600;color:var(--pr-soft);text-transform:uppercase}
.rc-foot{font-size:10.5px}
.rc-digits{font-size:9px;letter-spacing:2px}

/* ---------- polaroids: 1 : 1.13 ---------- */
.pl{
  --w:150px;
  position:relative;margin:0;width:var(--w);height:calc(var(--w) * 1.13);box-sizing:border-box;
  padding:calc(var(--w) * .05) calc(var(--w) * .05) calc(var(--w) * .18);
  background:#fff;border-radius:2px;
  box-shadow:0 10px 22px rgba(25,20,10,.18), 0 1px 2px rgba(0,0,0,.12);
  transform:rotate(var(--tilt,0deg));
}
.pl-photo{width:100%;aspect-ratio:1;overflow:hidden;background:#ddd}
.pl-photo img{width:100%;height:100%;object-fit:cover;display:block}
.pl figcaption{
  position:absolute;left:0;right:0;bottom:0;height:calc(var(--w) * .18);
  display:grid;place-items:center;
  font-family:"Bradley Hand","Segoe Print","Marker Felt","Comic Sans MS",cursive;
  font-size:calc(var(--w) * .085);color:#2b2a33;
}
.pl-pin{position:absolute;left:50%;top:calc(var(--w) * -.03);width:14px;height:14px;margin-left:-7px;border-radius:50%;
  background:radial-gradient(circle at 35% 35%,#ff8a80,#d9453b 55%,#8e2a22);box-shadow:0 2px 3px rgba(0,0,0,.3)}
