:root{--ink: #1c1712;--paper: #efe6d4;--desk: #2a2218;--rule: #c9b89a;--red: #b42318;--muted: #6b5d4a}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(1200px 700px at 50% 0%,#3a2f22 0%,var(--desk) 55%,#1a1611 100%);color:var(--ink);font-family:Newsreader,Times New Roman,serif}body{min-height:100dvh}#app{min-height:100dvh;display:flex;flex-direction:column}.mast{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:14px 18px 8px;color:var(--paper)}.mast h1{margin:0;font-size:1.15rem;font-weight:600;letter-spacing:.04em}.mast p{margin:0;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.72rem;color:#d8cbb4}.stage{flex:1;display:flex;flex-direction:column;padding:0 14px 16px;max-width:1280px;width:100%;margin:0 auto}.sheet{position:relative;background:#1f1a14;border-radius:8px;overflow:hidden;box-shadow:0 18px 50px #00000073}.sheet img{display:block;width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;background:var(--paper)}.hotspot{position:absolute;border:2px dashed rgba(180,35,24,.85);background:#b423181f;border-radius:8px;cursor:pointer;animation:pulse 1.8s ease-in-out infinite}.hotspot:focus-visible{outline:3px solid #fff6;outline-offset:3px}.hotspot:hover{background:#b4231833}@keyframes pulse{0%,to{box-shadow:0 0 #b4231873}50%{box-shadow:0 0 0 8px #b4231800}}.caption{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:12px 4px 0;color:var(--paper)}.caption h2{margin:0 0 4px;font-size:1.05rem}.caption p{margin:0;color:#d8cbb4;font-size:.95rem}.step{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.72rem;color:#d8cbb4;white-space:nowrap}.err,.loading{min-height:48vh;display:grid;place-items:center;padding:24px;color:var(--paper);text-align:center}.err button,.nav button{font-family:IBM Plex Mono,ui-monospace,monospace;background:transparent;color:var(--paper);border:1px solid #d8cbb4;padding:6px 10px;cursor:pointer}.nav{display:flex;gap:8px;padding:10px 18px 16px}@media(max-width:720px){.mast{flex-direction:column;gap:4px}.caption{flex-direction:column}}
