/* request desk (js/request.js): cutting mat with the receipt + pen on the left, the form on the right */
.desk { display: grid; grid-template-columns: minmax(0, 480px) minmax(0, 1fr); gap: 26px; align-items: start; }
@media (max-width: 980px) { .desk { grid-template-columns: minmax(0, 1fr); } }

/* the cutting mat */
.table { position: relative; min-height: 640px; padding: 50px 40px 80px; border-radius: 22px; overflow: hidden;
  background: linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px) 0 0 / 100px 100px, linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px) 0 0 / 100px 100px,
    linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px) 0 0 / 20px 20px, linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px) 0 0 / 20px 20px,
    radial-gradient(120% 90% at 40% 30%, #1d2026, #121318);
  border: 1px solid #2b2e39; box-shadow: inset 0 0 60px rgba(0,0,0,.6), 0 20px 50px rgba(0,0,0,.45); }
.table::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 18px; pointer-events: none;      /* ruler marks along the top edge */
  background: repeating-linear-gradient(90deg, rgba(255,43,63,.7) 0 1px, transparent 1px 10px) 0 0 / 100% 7px no-repeat,
    repeating-linear-gradient(90deg, rgba(255,43,63,.9) 0 1px, transparent 1px 50px) 0 0 / 100% 14px no-repeat; }

/* the receipt on the mat (bigger than in the machine), slightly tilted */
.paper { position: relative; z-index: 11; width: 340px; max-width: 100%; margin: 0 auto; transform: rotate(-2deg); }   /* above the page's scanlines (z 10): clean paper */
.t-receipt { margin: 0; font-size: 13px; }
.t-receipt.landed { animation: land .4s ease; }
@keyframes land { 0% { transform: translateY(-8px); } 60% { transform: translateY(2px); } 100% { transform: none; } }
.t-receipt .pfig { width: 54px; }
.t-receipt a { color: #a30c21; }
.notes .n-label { margin-bottom: 4px; font-weight: 700; letter-spacing: .12em; }
.hw-row { display: flex; align-items: baseline; gap: 8px; min-height: 32px; border-bottom: 1px dotted #b9b4aa; }
.hw-row small { flex: none; width: 60px; font: 600 10px var(--font-mono); letter-spacing: .1em; color: #6e6b66; }
.hw { font: 600 24px/1.1 "Caveat", cursive; color: #1d2b6b; white-space: pre-wrap; overflow-wrap: anywhere; }
.hw-desc { display: block; min-height: 156px; margin-top: 8px; line-height: 26px; background: repeating-linear-gradient(transparent 0 25px, rgba(0,0,0,.12) 25px 26px); }
.pm { display: inline-block; width: 0; height: 1em; vertical-align: baseline; }

/* reference images, paper-clipped to the receipt's edge */
.clips { position: absolute; right: -70px; top: 110px; display: flex; flex-direction: column; gap: 16px; }
.clip { position: relative; width: 64px; height: 64px; padding: 4px 4px 12px; background: #f4f1ea; box-shadow: 0 6px 12px rgba(0,0,0,.45);
  transform: rotate(calc(var(--i) * 6deg - 5deg)); animation: clip-in .35s cubic-bezier(.3, 1.5, .5, 1) both; }
.clip img { display: block; width: 100%; height: 100%; object-fit: cover; }
.clip::before { content: ""; position: absolute; left: 50%; top: -14px; width: 11px; height: 32px; border: 2.5px solid #c9ccd6; border-radius: 6px;
  transform: translateX(-50%) rotate(8deg); box-shadow: 0 1px 2px rgba(0,0,0,.5); }
.clip.more { display: grid; place-items: center; font: 700 18px var(--font-mono); color: #1c1c23; }
@keyframes clip-in { from { opacity: 0; transform: translateY(-20px) rotate(-20deg); } }

/* "RECEIVED" rubber stamp */
.stamp { position: absolute; left: 50%; top: 76%; z-index: 3; padding: 4px 16px; border: 4px solid rgba(200,16,42,.85); border-radius: 8px; pointer-events: none;
  font: 700 34px var(--font-display); letter-spacing: .12em; color: rgba(200,16,42,.85); mix-blend-mode: multiply;
  opacity: 0; transform: translate(-50%, -50%) rotate(-14deg) scale(2.2); }
.stamp.on { animation: stamp .45s cubic-bezier(.3, 1.6, .5, 1) forwards; }
@keyframes stamp { to { opacity: 1; transform: translate(-50%, -50%) rotate(-14deg) scale(1); } }

/* the pen: its tip follows the handwriting; above the paper (z 11), under the nav (z 40) */
.pen { position: absolute; left: 0; top: 0; z-index: 12; width: 160px; height: 124px; pointer-events: none; overflow: visible;
  filter: drop-shadow(8px 12px 6px rgba(0,0,0,.5)); transition: transform .12s linear, opacity .3s; }
.pen-lift { transform-box: fill-box; transform-origin: 0% 100%; transition: transform .3s ease; }
.pen.resting .pen-lift { transform: translate(6px, -10px) rotate(5deg); }
.pen.writing .pen-lift { animation: scribble .11s linear infinite alternate; }
@keyframes scribble { from { transform: translate(-1px, 1px); } to { transform: translate(1.5px, -1.5px); } }
.pen.roll-in .pen-lift { animation: pen-in .6s cubic-bezier(.3, 1.3, .5, 1); }
@keyframes pen-in { from { opacity: 0; transform: translate(140px, 60px) rotate(35deg); } }

/* the flying receipt (checkout machine → desk) */
.receipt.flying { position: fixed; z-index: 85; margin: 0; transform-origin: 0 0; pointer-events: none; box-shadow: 0 30px 50px rgba(0,0,0,.55); }

/* the form */
.req-form { display: flex; flex-direction: column; gap: 16px; padding: 22px; border-radius: 18px; background: rgba(18,20,29,.92); border: 1px solid var(--color-border-default); }
.f-title { font: 700 12px var(--font-mono); letter-spacing: .22em; color: var(--cyber-cyan-400); }
.f-row { display: flex; flex-direction: column; gap: 6px; }
.f-row > span { font: 700 14px var(--font-display); letter-spacing: .1em; text-transform: uppercase; color: var(--color-text-primary); }
.f-row small { display: block; margin-top: 2px; font: 500 11px var(--font-mono); letter-spacing: .02em; text-transform: none; color: var(--cyber-chrome-300); }
.f-row input, .f-row textarea { width: 100%; box-sizing: border-box; padding: 10px 12px; border-radius: 8px; border: 1.5px solid rgba(255,43,63,.4); background: #0b0c11;
  color: var(--color-text-primary); font: 400 15px/1.5 var(--font-body); outline: none; transition: border-color .2s, box-shadow .2s; }
.f-row textarea { min-height: 220px; resize: vertical; }
.f-row input:focus, .f-row textarea:focus { border-color: #ff2b3f; box-shadow: 0 0 12px rgba(255,43,63,.35); }
.f-row.bad input, .f-row.bad textarea { border-color: #ff2b3f; animation: shake .4s; }
.plat { display: flex; flex-wrap: wrap; gap: 8px; }
.pl { width: 46px; height: 46px; display: grid; place-items: center; padding: 0; cursor: pointer; border-radius: 10px; border: 1.5px solid rgba(255,43,63,.35);
  background: #0b0c11; color: var(--color-text-primary); transition: border-color .2s, box-shadow .2s, background .2s, transform .15s; }
.pl svg { width: 21px; height: 21px; fill: currentColor; }
.pl:hover, .pl:focus-visible { border-color: #ff2b3f; box-shadow: 0 0 10px rgba(255,43,63,.4); outline: none; }
.pl[aria-checked="true"] { background: #ff2b3f; border-color: #ff2b3f; color: #fff; box-shadow: 0 0 14px rgba(255,43,63,.55); }
.pl:active { transform: scale(.92); }
.drop { padding: 18px; border-radius: 10px; border: 1.5px dashed rgba(255,43,63,.5); text-align: center; cursor: pointer; font: 500 13px var(--font-mono); color: var(--cyber-chrome-300);
  transition: background .2s, border-color .2s; }
.drop:hover, .drop:focus-visible, .drop.over { background: rgba(255,43,63,.08); border-color: #ff2b3f; outline: none; }
.thumbs { display: flex; flex-wrap: wrap; gap: 8px; }
.thumb { position: relative; width: 72px; height: 72px; overflow: hidden; border-radius: 8px; border: 1px solid rgba(255,43,63,.4); }
.thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.thumb button { position: absolute; top: 3px; right: 3px; width: 20px; height: 20px; padding: 0; display: grid; place-items: center; cursor: pointer; border-radius: 5px;
  border: 0; background: rgba(13,14,20,.85); color: #fff; font: 700 10px var(--font-mono); }
.thumb button:hover, .thumb button:focus-visible { background: #ff2b3f; outline: none; }
.send { align-self: flex-start; padding: 12px 28px; font-size: 16px; }
.send[disabled] { opacity: .6; cursor: progress; }
/* "show me on the public queue": the same tick box as the ToS */
/* the name row: its title, and the "show my name" tick next to it */
.f-namehead { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 14px; }
.f-namehead > label:first-child { font: 700 14px var(--font-display); letter-spacing: .1em; text-transform: uppercase; color: var(--color-text-primary); }
.f-public { display: flex; align-items: flex-start; gap: 10px; cursor: pointer; font: 500 13px/1.45 var(--font-body); color: var(--color-text-primary); }
.f-public input { position: absolute; width: 1px; height: 1px; padding: 0; border: 0; opacity: 0; pointer-events: none; }   /* not .f-row's 100%: it stuck out and zoomed phones out */
.f-public .box { flex: none; width: 20px; height: 20px; margin-top: 1px; display: grid; place-items: center; border: 2px solid var(--cyber-cyan-500); border-radius: 5px; transition: background .2s, box-shadow .2s; }
.f-public input:checked + .box { background: var(--cyber-cyan-500); box-shadow: 0 0 10px rgba(255,43,63,.6); }
.f-public input:checked + .box::after { content: "✓"; color: #fff; font: 700 14px/1 var(--font-display); }
.f-public input:focus-visible + .box { outline: 2px solid #fff; outline-offset: 2px; }
.f-namehead .f-public { font-size: 12px; align-items: center; }
.f-public small { display: block; font: 500 11px var(--font-mono); color: var(--cyber-chrome-300); }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }   /* bot trap: people never see or fill it */
.f-privacy { margin: -8px 0 0; font: 500 11px var(--font-mono); color: var(--cyber-chrome-300); }
.f-msg { min-height: 18px; margin: 0; font: 500 12px var(--font-mono); color: var(--cyber-chrome-300); }
@media (prefers-reduced-motion: reduce) { .pen, .pen-lift, .clip, .t-receipt, .stamp { transition: none; animation: none !important; } .stamp.on { opacity: 1; transform: translate(-50%, -50%) rotate(-14deg); } }
/* phones: a smaller mat, and the paper-clipped refs hang over the receipt's right edge instead of past the screen */
@media (max-width: 600px) {
  .table { min-height: 0; padding: 40px 14px 40px; }
  .clips { right: -8px; top: 96px; gap: 12px; } .clip { width: 50px; height: 50px; padding: 3px 3px 9px; }
}
/* iPhones zoom the whole page in when a text field under 16px gets focus (and stay zoomed): 16px on phones */
@media (max-width: 760px) { .f-row input, .f-row textarea, .m-in { font-size: 16px; } }
