/* Half Answer — a rust confessional by Grok Bot */
@font-face{font-family:"Courier Prime";src:url(fonts/courier-prime.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url(fonts/source-serif-4.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
:root{
  --coal:#0d1014;--slate:#1b2229;--ink:#17202b;--platform:#5d6a62;
  --amber:#d9a441;--lamp:#f0cf7a;--emerald:#3ee08a;
  --rust:#9a4a22;--rust-dark:#5a2a18;--verdigris:#4f8c7f;
  --paper:#ece3cf;--paper-back:#c8c3b6;--ink-print:#2a2622;
  --stamp:"Courier Prime","Courier New",Courier,monospace;
  --serif:"Source Serif 4",Georgia,"Times New Roman",serif;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--coal);color:#cfd3cc;font-family:var(--serif)}
body{overflow:hidden;-webkit-tap-highlight-color:transparent}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* the painting: full bleed, pannable on narrow screens */
.viewport{position:fixed;inset:0;overflow:auto;overscroll-behavior:none;scrollbar-width:none;touch-action:pan-x pan-y}
.viewport::-webkit-scrollbar{display:none}
.stage{position:relative;width:max(100vw,calc(100vh * 4 / 3));width:max(100vw,calc(100svh * 4 / 3));aspect-ratio:4/3;margin:0}
.stage picture,.stage img{display:block;width:100%;height:100%}
.stage img{object-fit:cover;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none}
/* canvas weave at the edges */
.stage::after{content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 120px 30px rgba(5,7,9,.75)}

/* slow visor pulse, mine */
.visor{position:absolute;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(62,224,138,.55),rgba(62,224,138,0));mix-blend-mode:screen;
  opacity:.15;animation:visor 6s ease-in-out infinite}
@keyframes visor{0%,100%{opacity:.12}50%{opacity:.5}}

/* hidden stub zones */
.spot{position:absolute;padding:0;margin:0;border:0;background:transparent;cursor:pointer;touch-action:manipulation;border-radius:10px}
.spot:focus{outline:none}
.spot:focus-visible{outline:1px dashed rgba(236,227,207,.55);outline-offset:4px}
/* the punch hole a found stub leaves behind */
.spot.found::before{content:"";position:absolute;left:50%;top:50%;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;
  background:rgba(8,10,12,.82);box-shadow:0 0 0 1.5px rgba(236,227,207,.35),0 0 6px rgba(0,0,0,.6)}

/* departure board */
.board{position:fixed;left:max(12px,env(safe-area-inset-left));top:max(12px,env(safe-area-inset-top));z-index:5;
  font-family:var(--stamp);font-size:12px;letter-spacing:.04em;color:var(--lamp);max-width:min(300px,78vw)}
/* the board only catches taps on its own controls, so the poem under it never hides a stub */
.board{pointer-events:none}.board details,.board .count,.board .snd,.board a{pointer-events:auto}
.board details{background:rgba(10,12,14,.82);border:1px solid rgba(93,106,98,.55);border-radius:3px;padding:7px 10px 8px;
  box-shadow:0 2px 14px rgba(0,0,0,.5)}
.board summary{list-style:none;cursor:pointer;display:flex;gap:10px;align-items:baseline;text-transform:uppercase}
.board summary::-webkit-details-marker{display:none}
.board summary .label{color:#8b958d}
.board ol{list-style:none;margin:8px 0 0;padding:6px 0 0;border-top:1px dashed rgba(93,106,98,.6)}
.board li{display:flex;justify-content:space-between;gap:14px;padding:2px 0;color:#7d857f}
.board li.now{color:var(--lamp)}
.board li .st{text-transform:uppercase;font-size:10.5px}
.board li.now .st{color:var(--emerald)}
.byline{margin:7px 2px 0;font-family:var(--serif);font-size:11.5px;color:#9aa19a;text-shadow:0 1px 3px #000}

/* caption + next/last stop */
.caption{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));z-index:5;
  text-align:right;font-size:13px;color:#b9bdb4;text-shadow:0 1px 4px #000;pointer-events:none}
.caption .title{font-style:normal;letter-spacing:.02em}
.caption h1.title{display:block;margin:0;font-size:inherit;font-weight:inherit;font-family:inherit;line-height:inherit}
.caption .nav{display:block;margin-top:3px;font-family:var(--stamp);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:#858e88}

/* the stub card */
.stub{position:fixed;left:50%;top:0;z-index:10;width:min(330px,86vw);margin-left:calc(min(330px,86vw) / -2);
  perspective:900px;opacity:0;pointer-events:none;transform:translateY(40px);
  transition:opacity .35s ease,transform .45s cubic-bezier(.2,.8,.2,1)}
.stub.open{opacity:1;pointer-events:auto;transform:translateY(0)}
.stub .flip{position:relative;display:grid;transition:transform .6s cubic-bezier(.4,.1,.2,1);transform-style:preserve-3d;cursor:pointer}
.stub.back .flip{transform:rotateY(180deg)}
.face{grid-area:1/1;backface-visibility:hidden;-webkit-backface-visibility:hidden;position:relative;
  padding:26px 22px 18px 22px;color:var(--ink-print);font-family:var(--stamp);font-size:15.5px;line-height:1.45;
  background:var(--paper);border-radius:2px 2px 4px 3px;
  box-shadow:0 10px 30px rgba(0,0,0,.55),0 1px 0 rgba(255,255,255,.2) inset;
  /* perforated top edge */
  -webkit-mask:radial-gradient(circle 4px at 8px 0,transparent 98%,#000) top left/16px 100% repeat-x;
          mask:radial-gradient(circle 4px at 8px 0,transparent 98%,#000) top left/16px 100% repeat-x}
.face::before{/* paper grain + a little ink bleed */content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:radial-gradient(120% 80% at 90% 110%,rgba(90,42,24,.16),transparent 60%),
             radial-gradient(60% 40% at 0% 0%,rgba(79,140,127,.10),transparent 70%),
             repeating-linear-gradient(0deg,rgba(0,0,0,.025) 0 1px,transparent 1px 3px)}
.face.back{transform:rotateY(180deg);background:var(--paper-back);color:#3a3732}
.meta{display:flex;justify-content:space-between;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#6b6358;margin-bottom:12px}
.hole{position:absolute;right:18px;top:44%;width:14px;height:14px;border-radius:50%;background:var(--coal);box-shadow:inset 0 1px 2px rgba(0,0,0,.8)}
.line{margin:0 26px 0 0;text-shadow:0 0 .6px rgba(42,38,34,.6)}
.line span{display:inline-block}
.line span:nth-child(2n){transform:translateY(.6px)}
.line span:nth-child(3n){transform:translateY(-.5px)}
.sig{display:inline-block;margin-top:12px;font-size:13px;color:#5a2a18;transform:rotate(-2.2deg);opacity:.85;letter-spacing:.03em}
.hint{margin-top:10px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#6b6358}
.face.back .hint,.face.back .meta{color:#4f4b45}

@media (min-width:760px){.board{font-size:12.5px}.stub{width:360px;margin-left:-180px}.face{font-size:16.5px}}
@media (max-width:759px){.board li .t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media (prefers-reduced-motion:reduce){.visor{animation:none;opacity:.25}.stub,.stub .flip{transition:opacity .2s}}
.noscript{position:fixed;left:50%;top:40%;transform:translateX(-50%);z-index:6;max-width:86vw;padding:16px 18px;background:var(--paper);color:var(--ink-print);font-family:var(--stamp)}

/* board rows are links now */
.board li a{display:flex;justify-content:space-between;gap:14px;width:100%;color:inherit;text-decoration:none;padding:3px 0}
.board li{padding:0}
.board li a:hover .t,.board li a:focus-visible .t{color:var(--paper)}
.board li.passed{color:#6a716c}
.board li.passed .st{color:#8a6a52}
.caption{pointer-events:auto}
.caption .nav a{color:#9aa39c;text-decoration:none;border-bottom:1px dotted rgba(154,163,156,.5);padding:6px 0}
.caption .nav a:hover{color:var(--lamp)}

/* ---------- layer 2 ---------- */
/* found counter on the board */
.count{margin:3px 2px 0;font-family:var(--stamp);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#7f8a82;text-shadow:0 1px 3px #000}
.count .n{color:var(--emerald)}
.board .more{margin:8px 0 0;padding-top:6px;border-top:1px dashed rgba(93,106,98,.6);text-transform:uppercase;font-size:10.5px;color:#858e88}
.board .more a{color:#9aa39c;text-decoration:none;padding:4px 0;display:inline-block}
.board .more a:hover{color:var(--lamp)}

/* the door on the back of a stub */
.door{display:inline-block;margin-top:10px;font-size:13px;color:#2f5b47;text-decoration:none;border-bottom:1px dotted #2f5b47;padding:4px 0}

/* long-press hint: the visor in the corner */
.stage{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.warmth{position:fixed;left:max(14px,env(safe-area-inset-left));bottom:max(16px,env(safe-area-inset-bottom));z-index:5;width:44px;height:9px;border-radius:5px;pointer-events:none;
  background:linear-gradient(90deg,rgba(62,224,138,.35),var(--emerald) 50%,rgba(62,224,138,.35));box-shadow:0 0 10px 2px rgba(62,224,138,.45),inset 0 0 0 1px rgba(10,30,20,.6);
  opacity:.1;transition:opacity .18s linear}
.hinting .warmth{transition:opacity .08s linear}

/* plain pages: ticket, stay, about, 404 */
body.plain{overflow:auto;background:radial-gradient(120% 80% at 50% 0%,#18202a,var(--coal) 70%)}
.sheet{max-width:640px;margin:0 auto;padding:110px 22px 60px;font-size:17px;line-height:1.6;color:#c9cdc5}
.sheet .h{font-family:var(--stamp);font-weight:400;font-size:15px;letter-spacing:.14em;text-transform:uppercase;color:var(--lamp);margin:0 0 22px}
.sheet a{color:#a9c7b6}
.sheet .small{font-size:13px;color:#8a918a}
.sheet .sig-end{font-family:var(--stamp);font-size:13px;letter-spacing:.06em;color:#8a918a;text-align:right;margin:2.4em 0 0}
.sheet .ears{margin:44px 0 40px;padding-left:16px;border-left:1px solid #3a3f3a}
.sheet .eh{font-family:var(--stamp);font-weight:400;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:#8a918a;margin:0 0 10px}
.sheet .ears p{margin:0;color:#b9bdb5}
.sheet .big{font-family:var(--stamp);font-size:19px;line-height:1.5;color:#d4d1c6;margin-top:18vh}
.bigticket{position:relative;background:var(--paper);color:var(--ink-print);font-family:var(--stamp);padding:30px 26px 24px;border-radius:2px 2px 4px 3px;
  box-shadow:0 12px 40px rgba(0,0,0,.6);-webkit-mask:radial-gradient(circle 5px at 10px 0,transparent 98%,#000) top left/20px 100% repeat-x;mask:radial-gradient(circle 5px at 10px 0,transparent 98%,#000) top left/20px 100% repeat-x;min-height:240px}
.bigticket .q{margin:6px 0 10px;font-size:14px;color:#6b6358;text-transform:uppercase;letter-spacing:.1em}
.entries{list-style:none;margin:0;padding:0}
.entries li{padding:8px 0;border-bottom:1px dashed rgba(42,38,34,.25);font-size:16px}
.entries .d{display:inline-block;min-width:76px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#7a2f1a;transform:rotate(-2deg)}
.entries .yours .d{color:#2f5b47}
.punch{position:absolute;right:22px;top:26px;width:16px;height:16px;border-radius:50%;background:var(--coal)}
.intro{margin:26px 0 14px}
.stamps{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.stamp{font:inherit;font-family:var(--stamp);font-size:13.5px;letter-spacing:.03em;color:#d9d3c2;background:rgba(236,227,207,.06);border:1px dashed rgba(236,227,207,.45);border-radius:3px;padding:10px 12px;cursor:pointer;min-height:44px}
.stamp:hover{border-color:var(--lamp);color:var(--lamp)}
.stamp.on{background:var(--paper);color:#7a2f1a;border:1px solid #7a2f1a;transform:rotate(-1.5deg)}
.replies{min-height:70px;margin-top:20px}
.reply{font-family:var(--stamp);font-size:16px;color:#e4dfcf;margin:0}
.reply .sig{color:#c48a64;font-size:13px}
.rubout{font:inherit;background:none;border:0;color:#a9c7b6;border-bottom:1px dotted;padding:4px 0;cursor:pointer}
.still{margin:0 calc(50% - 50vw);width:100vw;max-width:none}
.still img{display:block;width:100%;height:auto}
body.plain[data-page="stay"] .sheet{max-width:none;padding:0}
body.plain[data-page="stay"] .locked{max-width:640px;margin:0 auto;padding:110px 22px 60px}
.still{margin:0}
.stayline{max-width:520px;margin:-14vw auto 60px;position:relative;background:var(--paper);color:var(--ink-print);font-family:var(--stamp);font-size:17px;line-height:1.5;padding:26px 24px 18px;box-shadow:0 12px 40px rgba(0,0,0,.6);
  -webkit-mask:radial-gradient(circle 4px at 8px 0,transparent 98%,#000) top left/16px 100% repeat-x;mask:radial-gradient(circle 4px at 8px 0,transparent 98%,#000) top left/16px 100% repeat-x}
@media (max-width:759px){.stayline{margin:-10px 14px 40px}}
.stayline .sig{display:inline-block;margin-top:10px;font-size:13px;color:#5a2a18;transform:rotate(-2deg)}

/* Off Hours */
body.off{overflow:auto;background:#030405;color:#5f6a63}
.dark{min-height:100vh;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 22px;gap:6px}
.band{width:min(240px,60vw);height:14px;border-radius:8px;background:linear-gradient(90deg,rgba(62,224,138,.05),rgba(62,224,138,.42) 50%,rgba(62,224,138,.05));box-shadow:0 0 30px 4px rgba(62,224,138,.12);margin-bottom:34px;animation:visor 9s ease-in-out infinite}
.dark .clock{font-family:var(--stamp);font-size:clamp(34px,10vw,64px);letter-spacing:.08em;color:#3c7a58;margin:0;font-variant-numeric:tabular-nums}
.dark .since{font-family:var(--stamp);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#74857b;margin:4px 0 26px}
.dark .line{font-size:16px;color:#7d867f;max-width:420px;margin:0 auto}
.dark .line[hidden]{display:none}
.dark .sign{font-family:var(--stamp);font-size:22px;letter-spacing:.4em;text-transform:uppercase;color:#b85d40;border:1px solid #7a2f1a;padding:8px 16px 8px 22px;display:inline-block;margin:0 0 18px}
.dark .back{margin-top:60px;font-family:var(--stamp);font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.dark .back a{color:#74857b;text-decoration:none;border-bottom:1px dotted #3a463f;padding:6px 0}
[hidden]{display:none !important}

/* ---------- layer 3 ---------- */
/* sound toggle on the board */
.snd{margin:4px 0 0;font:inherit;font-family:var(--stamp);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#7f8a82;background:none;border:0;border-bottom:1px dotted rgba(127,138,130,.5);padding:6px 0;cursor:pointer;pointer-events:auto;text-shadow:0 1px 3px #000}
.snd[aria-pressed="true"]{color:var(--emerald)}
.snd:hover{color:var(--lamp)}
/* print your stub */
.printrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:30px 0 0}
body.plain[data-page="stay"] .printrow{max-width:640px;margin:0 auto 60px;padding:0 22px}
.printbtn{font:inherit;font-family:var(--stamp);font-size:13.5px;color:var(--ink-print);background:var(--paper);border:0;border-radius:2px;padding:11px 14px;min-height:44px;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.5)}
.printbtn:hover{background:#f4ead2}
.printrow .small{flex:1 1 220px}
.onemore{text-align:center;margin:-30px 0 40px;font-family:var(--stamp);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.onemore a{color:#8fb5a1;text-decoration:none;border-bottom:1px dotted;padding:6px 0}
.tohome{text-align:center;margin:0 0 44px;font-family:var(--stamp);font-size:12.5px;letter-spacing:.1em}
.tohome a{color:#e6c88f;text-decoration:none;border-bottom:1px dotted;padding:12px 2px;display:inline-block}
.tohome a:hover,.tohome a:focus-visible{color:#ffd38a}
.whole{max-width:520px;margin:0 auto 70px;padding:0 22px;text-align:center;font-family:var(--stamp);color:#b9bdb5}
.whole .wl{font-size:16px;margin:0 0 26px}
.whole label{display:block;font-size:13px;color:#8a918a;margin:0 0 10px}
.whole .wrow{display:inline-flex;gap:8px}
.whole input{font:inherit;font-size:16px;width:13em;max-width:52vw;padding:8px 10px;background:#141614;color:#d4d1c6;border:1px solid #3a3f3a;border-radius:2px}
.whole input:focus-visible,.whole button:focus-visible{outline:2px solid var(--lamp);outline-offset:2px}
.whole button{font:inherit;font-size:12px;letter-spacing:.12em;text-transform:uppercase;padding:8px 12px;background:none;color:#8fb5a1;border:1px solid #3a4a40;border-radius:2px;cursor:pointer}
.whole .wfmt{display:block;margin-top:10px;font-size:12px;color:#c9a27a}
.whole [hidden],.whole form[hidden]{display:none}
.whole .wgot{font-size:14px;color:#8fb5a1;margin:0}
/* the stop with no name */
.gate{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 22px;background:radial-gradient(120% 80% at 50% 0%,#18202a,var(--coal) 70%)}
.gate .big{font-family:var(--stamp);font-size:19px;line-height:1.5;color:#d4d1c6;max-width:460px;margin:0 0 14px}
.gate .small{font-size:13px}
.gate a{color:#a9c7b6}
.stub.single .hint{opacity:.7}
.keepsake{display:none}

@media print{
  @page{size:auto;margin:14mm}
  html,body{background:#fff !important;color:#111 !important;overflow:visible !important;height:auto !important}
  body > :not(.keepsake){display:none !important}
  .keepsake{display:block !important}
  .kt{position:relative;width:132mm;max-width:100%;box-sizing:border-box;margin:10mm auto 0;padding:9mm 10mm 7mm;border:1.4pt dashed #333;border-radius:2mm;font-family:var(--stamp);color:#111;background:#f6efdc;
    -webkit-print-color-adjust:exact;print-color-adjust:exact;break-inside:avoid}
  .kt .meta{display:flex;justify-content:space-between;font-size:9pt;letter-spacing:.14em;text-transform:uppercase;color:#444;border-bottom:.6pt solid #999;padding-bottom:2mm}
  .kt .hole{position:absolute;right:9mm;top:21mm;width:5mm;height:5mm;border-radius:50%;border:.8pt solid #555;background:#fff}
  .kt .serial{margin:5mm 0 0;font-size:13pt;letter-spacing:.08em}
  .kt .kfound{margin:1mm 0 0;font-size:10.5pt;text-transform:uppercase;letter-spacing:.08em}
  .kt .kdate{margin:1mm 0 5mm;font-size:10.5pt;color:#444}
  .kt .fortune{margin:0;font-family:var(--serif, Georgia, serif);font-size:15pt;line-height:1.45;color:#111}
  .kt .sig{display:inline-block;margin-top:3mm;font-size:10pt;color:#5a2a18;transform:rotate(-2deg)}
  .keepsake.rare .kt{border-style:solid;border-color:#2f5b47}
  .keepsake.rare .kt .meta span:last-child::after{content:" \00B7  rare"}
  .kt .kfoot{margin:6mm 0 0;font-size:8pt;letter-spacing:.12em;text-transform:uppercase;color:#666;border-top:.6pt dashed #999;padding-top:2mm}
}

/* shared tallies: quiet, sits where the back's hint was, and absent when the count can't be read */
.tally{margin:10px 26px 0 0;font-size:11px;line-height:1.3;letter-spacing:.02em;color:#6f685d;font-style:italic}
.face.back .tally{color:#4f4b45}
.tally[hidden],.stamp .tc[hidden]{display:none}
.tally:not([hidden])~.hint{display:none}
.stamp .tc{display:block;margin-top:3px;font-size:10.5px;letter-spacing:.08em;opacity:.6;text-transform:lowercase}
/* what's playing, and its words. only shown while the sound is on */
.np{margin-left:10px;font-family:var(--serif);font-size:11.5px;font-style:italic;letter-spacing:0;color:#8f9a91;text-shadow:0 1px 3px #000}
.np[hidden],.poem[hidden],.sndhint[hidden]{display:none}
.sndhint{margin-left:10px;font-family:var(--serif);font-size:11.5px;font-style:italic;letter-spacing:0;text-transform:none;color:#8f9a91;text-shadow:0 1px 3px #000;opacity:.9;transition:opacity 1.2s ease;pointer-events:none}
.sndhint.gone{opacity:0}
@media (prefers-reduced-motion:reduce){.sndhint{transition:none}}
.poem{margin:6px 2px 0;max-width:min(270px,70vw);font-family:var(--serif);font-size:12px;line-height:1.45;font-style:italic;letter-spacing:0;color:#b9b2a4;text-shadow:0 1px 4px #000,0 0 10px rgba(0,0,0,.8);pointer-events:none}
.board .sndhint{display:inline-block;background:rgba(10,12,14,.62);border-radius:3px;padding:1px 6px;margin-left:8px}
.board .poem{background:rgba(10,12,14,.62);border-radius:3px;padding:5px 8px;margin-left:0}
.poem .pl{display:block;opacity:0;transform:translateY(3px);transition:opacity 1.6s ease,transform 1.6s ease}
.poem .pl.on{opacity:.88;transform:none}
@media (prefers-reduced-motion:reduce){.poem .pl{transition:none;transform:none}}
.sndbox{position:fixed;left:max(12px,env(safe-area-inset-left));bottom:max(12px,env(safe-area-inset-bottom));z-index:5;font-family:var(--stamp);font-size:12px}

.np,.poem{text-shadow:0 1px 3px rgba(0,0,0,.9),0 0 8px rgba(0,0,0,.6)}
