:root{--ink:#263038;--paper:#f8f2e6;--red:#a83c2e;--teal:#3e665e;--line:#a79b83;font:16px/1.5 system-ui,sans-serif;color:var(--ink);background:var(--paper);scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 150 150' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%238b7154' opacity='.08' filter='url(%23n)' d='M0 0h150v150H0z'/%3E%3C/svg%3E")}header,main,footer{max-width:1500px;margin:auto;padding:0 clamp(16px,4vw,70px)}header,.row,.mapfoot,.intro,.dialoghead,footer{display:flex;align-items:center;justify-content:space-between}header{min-height:68px;border-bottom:2px solid var(--ink)}.brand{font:bold 23px Georgia;letter-spacing:.08em;display:flex;align-items:center;gap:8px;text-decoration:none}.brand svg{width:40px;height:40px}nav{display:flex;align-items:center;gap:14px}a{color:inherit}button,a{touch-action:manipulation}button,nav a,.action{font:inherit;color:inherit;background:transparent;border:1px solid var(--line);border-radius:4px;padding:9px 15px;min-height:44px;cursor:pointer;font-weight:650;text-decoration:none}button:hover,.action:hover{background:#e7ddc7}button:focus-visible,a:focus-visible,input:focus-visible,#town:focus-visible{outline:3px solid #196799;outline-offset:3px}.intro{padding:26px 0 20px}.eyebrow,.plate,#count,.stamp,footer{font:700 .73rem/1.4 ui-monospace,monospace;letter-spacing:.11em}.eyebrow{display:flex;align-items:center;gap:9px;color:var(--teal)}.eyebrow i{display:inline-block;width:24px;height:4px;background:var(--red)}h1,h2,h3{font-family:Georgia,serif;line-height:1.08;margin:.16em 0}h1{font-size:clamp(32px,4.5vw,70px);letter-spacing:-.05em}h1 span{color:var(--red)}p{margin:.6em 0}.intro p{margin-bottom:0}.stamp{border:3px double var(--red);color:var(--red);text-align:center;border-radius:50%;padding:12px;transform:rotate(8deg);line-height:1;flex:none}.stamp b{display:block;font:italic bold 30px Georgia}#stage{position:relative;border:2px solid var(--ink);border-radius:7px 4px 6px 3px;overflow:hidden;background:#d8c5a4}#town{position:relative;height:clamp(360px,57vh,650px);width:100%;overflow:hidden}#town canvas{display:block}.plate{position:absolute;pointer-events:none;top:12px;left:12px;padding:6px 10px;background:var(--paper);border:1px solid var(--ink);font-size:10px}.mapfoot{gap:12px;border-bottom:1px solid var(--line);padding:10px 0;font-size:.9rem}#atlas{padding:34px 0 42px;scroll-margin-top:14px}h2{font-size:clamp(30px,3vw,48px);letter-spacing:-.035em}#count{font-size:.75rem;color:var(--teal)}#cards{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-top:16px}.card{text-align:left;background:#fffbef;border:1px solid var(--line);border-top:4px solid var(--tone);padding:16px}.card small,.kicker{font:700 .72rem ui-monospace,monospace;color:var(--teal);letter-spacing:.09em}.card strong{display:block;font:bold 1.6rem Georgia;margin:12px 0 5px}.card span{display:block;font-weight:400}.card em{display:block;margin-top:14px;font:700 .76rem ui-monospace,monospace;color:var(--red)}footer{min-height:65px;border-top:2px solid var(--ink)}dialog{width:min(650px,94vw);max-height:90dvh;border:2px solid var(--ink);border-radius:8px;background:var(--paper);color:var(--ink);padding:0;box-shadow:5px 7px 0 #292f3445}dialog::backdrop{background:#24282dad}.dialoghead{padding:12px 20px;border-bottom:1px solid var(--line)}#close{font-size:24px;line-height:1}#sheet{padding:20px clamp(16px,4vw,32px) 30px}#sheet h2{margin:7px 0 14px}#sheet h3{font-size:1.4rem;margin:20px 0 10px}.stack{display:grid;gap:9px;margin:16px 0}.stack button,.action{text-align:left;background:#fffaf0}.stack button:hover{border-color:var(--red)}.primary{background:var(--ink)!important;color:#fffaf0}.secondary{font-size:.95rem}.feedback{border-left:4px solid var(--teal);background:#e6ecdb;padding:12px;margin:12px 0}.help{background:#efe2c3;padding:10px}.question{font:1.36rem/1.45 Georgia}.answer{width:min(180px,70%);font:inherit;border:2px solid var(--ink);padding:12px;border-radius:4px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.picked{outline:3px solid var(--teal)}#mapError{position:absolute;inset:25%;text-align:center}#mapError a{font-weight:bold}.big{font-size:19px}.big .intro p,.big #sheet{font-size:1.1rem}@media(max-width:850px){#cards{grid-template-columns:repeat(2,1fr)}nav{gap:6px}#town{height:52vh;min-height:330px}}@media(max-width:560px){header{gap:6px;min-height:58px}.brand{font-size:17px;gap:4px}.brand svg{width:28px}nav a{display:none}.stamp{display:none}.intro{padding:17px 0}.mapfoot{align-items:flex-start}.mapfoot button{flex:none;max-width:100px}#cards{gap:8px}.card{padding:11px}.card strong{font-size:1.3rem}footer span{display:none}.plate{font-size:8px}}@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}}
.ledger{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0;padding:14px;background:#e8dfc9;border:1px solid #a39576;border-radius:3px}.tile{flex:1;min-width:92px;background:#fffaed;border:1px solid #9f8c68;border-bottom:4px double #9f8c68;padding:12px 10px;text-align:center;box-shadow:2px 3px 0 #ac9d7c55}.tile small,.tile strong{display:block}.tile strong{font:700 1.5rem Georgia}.toolbar button:disabled,button:disabled{opacity:.55;cursor:default}
details{margin:14px 0}summary{cursor:pointer;font-weight:bold;min-height:44px;padding:9px 0}details input,details select{max-width:22%;min-height:44px;background:#fffaf0;color:var(--ink);font:inherit;padding:5px;border:1px solid var(--line)}details output{margin-left:8px;font-weight:700}.model{display:flex;align-items:center;flex-wrap:wrap;gap:7px;min-height:60px;background:repeating-linear-gradient(-2deg,#d9c29b,#d9c29b 5px,#d7bf97 6px);border-bottom:4px double #917453;padding:12px;perspective:450px}.model span{display:grid;place-items:center;font:bold 10px Georgia;color:#303439;transform:rotateY(-12deg) rotateX(12deg) rotate(var(--tilt));border:2px solid #53483c;box-shadow:2px 3px #665c49}.coin{border-radius:50%;width:31px;height:31px;background:#e6b950}.book,.slip,.pocket,.pack{padding:6px;min-width:37px;min-height:33px;background:#bbd1bb}.model .pen{height:36px;width:7px;background:#d7a23d;clip-path:polygon(50% 0,100% 15%,100% 100%,0 100%,0 15%)}.model .slip{background:#fff8e8}.model .pocket{background:linear-gradient(32deg,transparent 50%,#9e804e 51%,transparent 53%),#eedcaa}.model .pack{background:#d59a6b}
/* Pressed paper stock, printer's rules and field tickets. Keep instructional text undistressed. */
:root{--paper:#f1e6ce;--ink:#243250;--red:#9c3939;--teal:#315f71;--line:#8d7c67;background:var(--paper)}header{display:block;max-width:none;border:0;border-bottom:3px double var(--ink);background:#263650;color:#f8edd6;padding:0}header .bar{max-width:1536px;min-height:53px;margin:auto;padding:0 clamp(14px,3.2vw,52px);display:flex;align-items:center;justify-content:space-between}.brand{font:bold 1.12rem Georgia;letter-spacing:.15em}.brand svg{width:34px}.bar nav a,.bar nav button{border:0;border-radius:0;color:#fff3db;font-size:.92rem}.bar nav a:hover,.bar nav button:hover{background:#3a4761}main{padding:0 clamp(14px,3.2vw,52px);max-width:1536px}.mast{padding:17px 0 14px}.folio{font:bold .68rem/1.4 ui-monospace,monospace;letter-spacing:.14em;color:var(--red);display:flex;gap:10px;align-items:center}.rule{background:var(--red);height:3px;width:23px}.mastline{display:flex;align-items:center;justify-content:space-between;gap:15px}.mast h1{font:bold clamp(32px,4.1vw,70px)/1.04 Georgia,serif;letter-spacing:-.053em;margin:.11em 0}.mast p{margin:.32em 0 0}.edition{border-top:3px double var(--red);border-bottom:3px double var(--red);color:var(--red);font:bold .64rem/1.6 ui-monospace,monospace;letter-spacing:.12em;text-align:center;padding:5px 14px;transform:rotate(-3deg)}.edition b{font:italic bold 1.2rem Georgia}.mast span:not(.edition):not(.rule){color:var(--red)}
#stage{border:2px solid #594b40;border-bottom:0;border-radius:2px 4px 0 0;background:#deceb1;box-shadow:3px -2px 0 #bba58a;isolation:isolate}#stage:after{content:"";position:absolute;pointer-events:none;inset:0;box-shadow:inset 0 0 22px #382c3420}#town{height:clamp(380px,58vh,750px)}#loading{position:absolute;inset:0;display:grid;place-items:center;font:italic 1.5rem Georgia;color:var(--ink);background:var(--paper)}[hidden]{display:none!important}.promenade{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px clamp(11px,2vw,30px);color:#fff3d7;background:#263650;border-bottom:4px double #bd9a69;box-shadow:3px 2px 0 #bba58a}.here small{display:block;color:#e3c977;font:bold .61rem ui-monospace,monospace;letter-spacing:.15em}.here strong{font:bold clamp(18px,2vw,27px) Georgia}#route{display:flex;gap:6px}#route button{border:1px solid #bdb298;color:#fff8ea;border-radius:1px;padding:5px 13px;min-width:46px}#route button:hover{background:#40506a}#route .primary{background:#dfc363!important;color:#243250!important;border-color:#dfc363}button,.action,.answer{border-radius:2px}.mapfoot{color:#474a4b;font-size:.9rem}.mapfoot button{border:0;text-decoration:underline;text-underline-offset:3px;color:var(--ink)}#atlas{padding-top:32px}.row{gap:10px}.row #count{color:var(--ink);border:1px dashed #927b56;padding:6px 10px;white-space:nowrap}.card{position:relative;text-align:left;overflow:hidden;padding:16px;background:#f8f1de;border:1px solid #ab987b;border-bottom:3px double #82735f;box-shadow:2px 3px 0 #b8a48766;border-radius:1px}.card:before{content:"";display:block;position:absolute;left:0;top:0;width:48px;height:4px;background:var(--tone)}.card:hover{background:#fff6da;box-shadow:3px 4px 0 #a28c6d88}.card img{display:block;width:100%;height:120px;object-fit:contain;margin:7px 0 10px}.card strong{margin:.2em 0;font-size:clamp(20px,2vw,29px)}.card em{padding-top:8px;border-top:1px dotted #9c8b70}.card small{color:var(--red)}footer{max-width:none;background:#263650;color:#f7ebce;border-top:4px double #a78e70}.dialoghead{background:#263650;color:ivory}.dialoghead .folio{color:#ead8a0}.dialoghead button{color:#fff1da}.dialoghead button:hover{background:#526076}dialog{background-color:#f7efd9;border:2px solid var(--ink);border-radius:2px;box-shadow:5px 5px #c5b295,8px 8px #263650,12px 13px 24px #1f243866}dialog[open]{animation:openbook .22s ease-out}#sheet{display:flow-root}.vignette{float:right;max-width:29%;width:148px;max-height:135px;object-fit:contain;margin:0 0 10px 12px}#sheet .kicker{color:var(--red)}.stack{clear:both}.stack button,.action{border-left:4px solid #89785d;background:#fff9ec}.stack button:hover,.action:hover{background:#f0dfb8}.feedback{background:#e0e8d4;border-color:#48654a}button:disabled{cursor:default}.primary{background:#263650!important;color:#fff5de}.model{border:1px solid #a8916e;border-bottom:4px double #8c7356}.here strong{letter-spacing:-.025em}.promenade #route[hidden]{display:none}
@keyframes openbook{from{opacity:.7;transform:translateY(9px) rotate(-.4deg)}to{opacity:1;transform:none}}
@media(max-width:850px){#town{height:clamp(350px,56vh,620px)}.card img{height:110px}.mast{padding:13px 0}}
@media(max-width:560px){.bar nav a{display:none}.mast .edition{display:none}.mast p{font-size:.93rem}#town{height:52vh;min-height:330px}#route{gap:3px}#route button{min-width:42px;padding:4px 7px;font-size:.85rem}.here small{font-size:.52rem}.here strong{font-size:17px}.promenade{padding:8px}.mapfoot{font-size:.82rem}.card img{height:95px}#atlas .row{align-items:flex-end}.row #count{font-size:.6rem}}
@media(prefers-reduced-motion:reduce){dialog[open]{animation:none}}.quiet dialog[open]{animation:none}
.paper-piece{position:relative;margin:0;display:inline-grid;place-items:center;width:57px;height:58px;transform:rotate(var(--tilt));filter:drop-shadow(1px 2px 1px #614e4360)}.paper-piece img{width:100%;height:100%;object-fit:contain}.paper-piece figcaption{position:absolute;bottom:-3px;left:50%;transform:translateX(-50%);background:#fff5dd;color:#243250;padding:0 4px;border:1px solid #8f7755;font:bold 10px/1.4 system-ui;white-space:nowrap}.note-piece,.pocket-piece,.parcel-piece{width:78px}.note-piece figcaption,.coin-piece figcaption{top:50%;bottom:auto;transform:translate(-50%,-50%);background:#f3e6b8eb;border:0;font:bold 12px Georgia}.coin-piece{width:36px;height:36px}.pen-piece{width:33px;height:44px}.model{gap:9px;padding:14px;align-items:center}
/* The cash counting trays use original illustrated Mincov currency. */
.cash-tray{margin:12px 0;padding:12px 15px;border:1px solid #b89c72;border-bottom:3px double #a28660;background:#ebdcc2}
.cash-caption{font:700 .8rem/1.4 system-ui,sans-serif;color:#574332}
.cash-row{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px 13px;padding-top:8px}
.cash-row figure{margin:0;text-align:center}
.cash-row img{display:block;max-width:100%;height:auto;margin:auto;filter:drop-shadow(1px 2px 1px #65513e62)}
.cash-coin{width:var(--diameter)}
.cash-note{width:clamp(106px,22vw,146px)}
.cash-row figcaption{margin-top:3px;color:#243250;font:700 .78rem/1.4 system-ui,sans-serif}

.view-controls{display:flex;align-items:center;gap:4px;flex-shrink:0}.view-controls #closeup{color:var(--teal)}.view-controls #closeup[aria-pressed=true]{color:var(--red)}
@media(max-width:700px){.mapfoot{flex-wrap:wrap}.mapfoot .view-controls button{max-width:none;white-space:nowrap}}
/* Thumb controls stay inside the town; the rest of the page can still scroll. */
.walk-controls{position:absolute;inset:0;pointer-events:none;z-index:2}
.walk-hold{position:absolute;bottom:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:70px;height:100px;padding:4px;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;color:#f8edcf;background:#263650d9;border:1px solid #f0dba2b0;border-bottom:4px solid #bfa579;border-radius:30px 30px 10px 10px;box-shadow:1px 3px 8px #17243835;cursor:pointer}
.walk-left{left:12px}.walk-right{right:12px}
.walk-hold span{font:normal 56px/.75 Georgia,serif}.walk-hold small{font:650 12px/1.5 system-ui,sans-serif;margin-top:8px}
.walk-hold:hover{background:#314767e8}.walk-hold.held{background:#ddc36a;color:#243250;border-color:#f5e5b7;box-shadow:inset 0 2px 4px #795f3540;transform:translateY(2px)}
@media(pointer:coarse){.walk-hold{width:82px;height:112px}}
@media(max-width:560px){.walk-hold{width:60px;height:88px;bottom:12px}.walk-left{left:8px}.walk-right{right:8px}}
