:root{--paper: #f3ead8;--paper-deep: #e7d9bf;--ink: #1c1610;--ink-soft: #4a3f34;--rule: rgba(28, 22, 16, .12);--seal: #9c2f24;--gold: #b0893e;--open: #2f6f4e;--locked: #8a8176;--active: #9c2f24;--shadow: 0 18px 50px rgba(28, 22, 16, .12)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:"Source Sans 3",sans-serif;color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,#fff6e6 0%,transparent 50%),radial-gradient(900px 500px at 110% 0%,#ecd9b8 0%,transparent 45%),var(--paper)}h1,h2,h3,.serif{font-family:Cormorant Garamond,serif;font-weight:600}.shell{max-width:520px;margin:0 auto;padding:18px 16px 96px}.topbar{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:12px;border-bottom:1px solid var(--rule);margin-bottom:18px}.brand{font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}.xp{font-variant-numeric:tabular-nums;color:var(--seal);font-weight:600}.hero{background:linear-gradient(180deg,#fffaf0,var(--paper-deep));border:1px solid var(--rule);box-shadow:var(--shadow);padding:28px 22px 22px;position:relative}.hero:before{content:"";position:absolute;top:0;left:24px;right:24px;height:8px;background:repeating-linear-gradient(90deg,var(--seal) 0 16px,transparent 16px 22px)}.kicker{text-transform:uppercase;letter-spacing:.22em;font-size:11px;color:var(--gold)}.hero h1{font-size:42px;line-height:.95;margin:10px 0 12px}.lede{font-size:16px;line-height:1.55;color:var(--ink-soft)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;cursor:pointer;font:inherit;font-weight:600;padding:13px 16px;border-radius:2px;background:var(--seal);color:#f8efe3}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--ink)}.btn.wide{width:100%}.btn:disabled{opacity:.45;cursor:default}.row{display:grid;gap:8px;margin-top:14px}.row.two{grid-template-columns:1fr 1fr}.card{background:#fffaf0;border:1px solid var(--rule);padding:16px;margin:12px 0}.card h3{margin:0 0 8px;font-size:26px}.muted{color:var(--ink-soft);font-size:14px;line-height:1.5}.npc{font-style:italic;font-family:Cormorant Garamond,serif;font-size:20px;line-height:1.35;margin:0}.progress{height:8px;background:var(--paper-deep);overflow:hidden;margin:8px 0 0}.progress>span{display:block;height:100%;background:var(--seal)}.map{height:280px;border:1px solid var(--rule);margin:8px 0 14px}.path{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:14px;margin:8px 0 16px}.dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--ink)}.dot.open{background:var(--gold)}.dot.arrived,.dot.photo{background:var(--active);border-color:var(--active)}.dot.solved{background:var(--open);border-color:var(--open)}.dot.locked{background:transparent;border-color:var(--locked)}.dot-line{width:16px;height:1px;background:var(--ink);opacity:.3}.input,select,textarea{width:100%;font:inherit;padding:12px;border:1px solid var(--ink);background:#fffaf0;color:var(--ink)}.choices{display:grid;gap:8px}.choice{text-align:left;background:#fffaf0;border:1px solid var(--ink);padding:12px;cursor:pointer}.choice.on{background:var(--ink);color:var(--paper)}.hint{border-top:1px dashed var(--rule);padding-top:10px;margin-top:10px}.err{color:var(--seal);font-size:14px}.ok{color:var(--open)}.tabs{position:fixed;left:50%;transform:translate(-50%);bottom:12px;width:min(520px,calc(100% - 20px));display:grid;grid-template-columns:repeat(5,1fr);background:#1c1610;color:#f3ead8;z-index:20}.tabs button{background:none;border:0;color:inherit;font:inherit;font-size:11px;letter-spacing:.04em;padding:12px 4px;cursor:pointer}.tabs button.on{color:#e7c27a}.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.artifact{min-height:110px;padding:12px;border:1px solid var(--rule);background:#fffaf0}.artifact.miss{opacity:.45;filter:grayscale(1)}.icon{font-size:28px}.passport{background:#1c1610;color:#f3ead8;padding:24px;box-shadow:var(--shadow)}.passport h2{color:#e7c27a;margin-top:0}.stat{display:flex;justify-content:space-between;border-bottom:1px solid rgba(243,234,216,.15);padding:8px 0}.era{display:flex;align-items:center;gap:10px;font-size:13px;letter-spacing:.08em}.era input{flex:1}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th,.admin-table td{border-bottom:1px solid var(--rule);padding:8px 4px;text-align:left}.warn{color:var(--seal);font-weight:700}.leaflet-container{background:#ddd3bf;font-family:inherit}
