/* Vintage collectible ticket — real size 90 x 40 mm.  1em = 1mm, so everything is in em and the whole ticket scales
   by changing font-size (screen) or is exactly 1mm/em when printed to PDF. */
.tkt{--out:#161616;--cream:#eadfc4;--gold:#b9975a;--ink:#0b0a09;--edge:#b41b1b;--edge-dk:#7a1111;--edge-ink:#fff;
  position:relative;box-sizing:border-box;width:90em;height:40em;overflow:hidden;border-radius:1.2em;background:var(--ink);color:var(--cream);
  font-family:CMU,"Leelawadee UI",sans-serif;font-size:var(--fs,1mm);line-height:1.15;text-align:left;user-select:none;-webkit-user-select:none;
  box-shadow:0 0 0 .22em #3a342c,0 1.2em 3em #000c}
.tkt.stu{--edge:#f4c01a;--edge-dk:#c29200;--edge-ink:#16120a}
.tkt.pdf{--out:#fff;box-shadow:none}
.tkt *{box-sizing:border-box}
.tkt .bg{position:absolute;inset:0;background:var(--bg) center/cover no-repeat;opacity:.24}
.tkt .grain{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,#0000 52%,#000000d0 118%),radial-gradient(#ffffff14 .08em,#0000 .1em) 0 0/.55em .55em;pointer-events:none}
.tkt .frame{position:absolute;left:1.1em;top:1.1em;bottom:1.1em;right:6.6em;border:.28em double #b9975a99;border-radius:.6em;pointer-events:none}

/* left stub: logo */
.tkt .stub{position:absolute;left:0;top:0;bottom:0;width:23em;padding:3.2em 2em 2.6em 2.6em;display:flex;flex-direction:column;justify-content:space-between}
.tkt .logo{display:block;width:100%;height:auto}
.tkt .admit{text-align:center;font:400 3.4em/1 Bebas,CMU,sans-serif;letter-spacing:.22em;color:var(--gold);border-top:.25em solid #b9975a88;border-bottom:.25em solid #b9975a88;padding:.5em 0 .35em}
.tkt .admit small{display:block;font:400 .46em/1 CMU,sans-serif;letter-spacing:.3em;margin-top:.6em;color:#b9975acc}
.tkt .no{text-align:center;font:400 1.9em/1 Bebas,CMU,sans-serif;letter-spacing:.18em;color:#c33}

/* main */
.tkt .main{position:absolute;left:23em;right:6.6em;top:0;bottom:0;padding:2.7em 2.4em 2.3em 2.8em;display:flex;flex-direction:column}
.tkt .pre{font-size:1.5em;letter-spacing:.34em;color:var(--gold);white-space:nowrap}
.tkt .title{margin:.1em 0 0;font:400 var(--ts,6.8em)/.95 Bebas,CMU,sans-serif;letter-spacing:.07em;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 0 .6em #000}
.tkt .th{font-size:2.5em;font-weight:700;line-height:1.5;min-height:1.5em;color:#cfc4a8;margin-top:-.15em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tkt .grid{display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:1.1em 1.3em;margin-top:auto;margin-bottom:1em}
.tkt .grid>div{min-width:0}
.tkt .grid label{display:block;font-size:1.3em;letter-spacing:.16em;color:var(--gold);white-space:nowrap}
.tkt .grid b{display:block;font-size:2.7em;line-height:1.5;margin-top:-.12em;font-weight:700;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tkt .grid .stseat b{font:400 4.6em/.9 Bebas,CMU,sans-serif;letter-spacing:.06em;color:#fff;margin-top:0}
.tkt .grid .name{grid-column:span 2}
.tkt .bar{display:flex;align-items:flex-end;gap:1em}
.tkt .bar svg{flex:1;height:3.4em;min-width:0}
.tkt .bar code{font:400 1.9em/1 Bebas,CMU,sans-serif;letter-spacing:.2em;color:var(--cream);white-space:nowrap}

/* far-right coloured edge: red = general, yellow = student */
.tkt .edge{position:absolute;right:0;top:0;bottom:0;width:6.6em;background:linear-gradient(90deg,var(--edge-dk),var(--edge) 38%,var(--edge));overflow:hidden}
.tkt .edge::before{content:"";position:absolute;left:0;top:0;bottom:0;border-left:.35em dotted #000a}
.tkt .edge span{position:absolute;left:50%;top:50%;display:block;white-space:nowrap;transform:translate(-50%,-50%) rotate(90deg);font:400 2.6em/1 Bebas,CMU,sans-serif;letter-spacing:.34em;color:var(--edge-ink)}
.tkt .edge span small{font:700 .52em/1 CMU,sans-serif;letter-spacing:.2em;margin-left:1em;opacity:.85}

/* perforation + punched notches */
.tkt .perf{position:absolute;left:23em;top:1.6em;bottom:1.6em;border-left:.3em dotted #b9975a88}
.tkt .n{position:absolute;width:3.2em;height:3.2em;border-radius:50%;background:var(--out);box-shadow:inset 0 0 .5em #0008}
.tkt .n.a{left:21.4em;top:-1.6em}.tkt .n.b{left:21.4em;bottom:-1.6em}
.tkt .n.c{right:5em;top:-1.6em}.tkt .n.d{right:5em;bottom:-1.6em}
.tkt .n.e{left:-1.6em;top:18.4em}

/* screen helpers */
.tk-show{--fs:min(6px,calc((100vw - 48px) / 90));display:block;margin:0 auto;width:max-content;max-width:100%}
.tk-show .tkt{margin:0}
.tk-page{width:90mm;height:40mm;overflow:hidden;page-break-after:always}
.tk-page:last-child{page-break-after:auto}
.tk-page .tkt{--fs:1mm}

.tk-pages{position:fixed;left:-9999px;top:0;width:90mm;background:#fff}
.tkt{-webkit-print-color-adjust:exact;print-color-adjust:exact}
@media print{
  body.tk-printing>*:not(.tk-pages){display:none!important}
  body.tk-printing .tk-pages{position:static;left:auto;width:90mm}
  body.tk-printing{background:#fff!important;margin:0!important;padding:0!important}
  body.tk-printing .tk-page{break-after:page;page-break-after:always}
  body.tk-printing .tk-page:last-child{break-after:auto;page-break-after:auto}
}
