:root{--ink: #3b2a1a;--ink-soft: #7a5c3e;--ink-faint: #b89b78;--paper: #e9dcc0;--paper-deep: #d8c6a0;--gray: #8f8677;--cell: 88px;--wash-1: #d9a441;--wash-2: #c4623a;--wash-3: #9b2f3a;--wash-4: #3f7f6e;--wash-5: #2f4f8f}*{box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--ink);font-family:Cormorant Garamond,Georgia,Times New Roman,serif;font-size:18px;background:radial-gradient(ellipse at 30% 20%,rgba(255,250,235,.55),transparent 60%),radial-gradient(ellipse at 80% 90%,rgba(120,80,40,.18),transparent 55%),var(--paper)}#app{display:grid;gap:20px;justify-items:center;padding:28px 16px 48px;grid-template-columns:minmax(0,1fr);overflow-x:hidden}h1{font-family:Cinzel,Cormorant Garamond,serif;font-weight:500;letter-spacing:.25em;font-size:22px;margin:0}nav.levels{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:100%}nav.levels button{font:inherit;color:var(--ink);background:transparent;border:1px solid var(--ink-soft);border-radius:2px;padding:3px 10px;cursor:pointer;display:grid;justify-items:center;line-height:1.15}nav.levels button .best{font-size:12px;color:var(--gray)}nav.levels button[aria-current=true]{background:var(--ink);color:var(--paper)}nav.levels button[aria-current=true] .best{color:var(--paper-deep)}nav.levels button.hidden-level{border-style:dashed;border-color:var(--ink)}.intro{font-style:italic;color:var(--ink-soft);margin-top:-8px;animation:intro-in .4s ease-out both}@keyframes intro-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.status{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 28px;font-style:italic;text-align:center}.status b{font-style:normal}.status .rule a{color:inherit}.status .rule.muted{font-size:14px}svg.board{display:block;max-width:100%;height:auto}svg.board .cell{cursor:pointer}svg.board .tile{fill:var(--paper-deep);stroke:var(--ink-soft);stroke-width:1}svg.board .wash{opacity:.8}svg.board .wash.r0{fill:none}svg.board .wash.r1{fill:var(--wash-1)}svg.board .wash.r2{fill:var(--wash-2)}svg.board .wash.r3{fill:var(--wash-3)}svg.board .wash.r4{fill:var(--wash-4)}svg.board .wash.r5{fill:var(--wash-5)}svg.board .tick{stroke:var(--ink);stroke-width:2;stroke-linecap:round}svg.board .tick.spent{stroke:var(--ink-soft);stroke-width:1.5;opacity:.8}svg.board .cell.done .ink{opacity:.45}svg.board .cell.lit .tile{fill:#f2e8d2;stroke:var(--ink);stroke-width:1.5}svg.board .lamp{transform-box:fill-box;transform-origin:50% 60%}svg.board .cell.hit .lamp{animation:knock .24s ease-out}svg.board .cell.charge .lamp{animation:flare .3s ease-out}svg.board .cell.charge .wash{animation:pour .3s ease-out}svg.board .cell.out .ink{animation:dim .3s ease-in forwards}svg.board .tick{transform-box:fill-box;transform-origin:50% 100%}svg.board .tick.fading{animation:tick-spend .24s ease-in forwards}svg.board .tick.fading.gone{animation:tick-gone .24s ease-in forwards}svg.board .tick.filling{animation:tick-in .18s ease-out both}@keyframes knock{0%{transform:scale(1)}40%{transform:scale(.92)}to{transform:scale(1)}}@keyframes flare{0%{transform:scale(.96)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes pour{0%{opacity:0}to{opacity:.8}}@keyframes dim{0%{opacity:1}to{opacity:.45}}@keyframes tick-spend{0%{stroke:var(--ink);stroke-width:2;transform:scaleY(1)}to{stroke:var(--ink-soft);stroke-width:1.5;opacity:.8;transform:scaleY(.5)}}@keyframes tick-gone{0%{stroke:var(--ink);stroke-width:2;transform:scaleY(1);opacity:1}to{transform:scaleY(0);opacity:0}}@keyframes tick-in{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}svg.board .gear,svg.board .gear-body-rot{transform-box:fill-box;transform-origin:center;transform:rotate(var(--angle, 0deg))}svg.board .gear-body{fill:var(--paper-deep);stroke:var(--ink);stroke-width:1.6;stroke-linejoin:round}svg.board .gear-hub{fill:var(--paper-deep);stroke:var(--ink);stroke-width:1.4}svg.board .slot.zero{fill:var(--ink)}svg.board .axis-pad{fill:none;stroke:none;pointer-events:none}svg.board .cell.done .slot.zero{fill:var(--wash-1)}svg.gearboard .tile{stroke:none;fill:transparent}svg.gearboard .cell.empty{cursor:default}svg.board .pawl-pin{fill:var(--ink)}svg.board .pawl-arm{fill:none;stroke:var(--ink);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}svg.board .gap-mark{fill:var(--paper);stroke:var(--ink-soft);stroke-width:1.2}svg.board .placed{cursor:pointer}svg.board .blocker{fill:var(--ink);stroke:var(--paper);stroke-width:1;transition:fill .12s}svg.board .placed:hover .blocker,svg.board .placed:hover .off-mark rect{fill:var(--wash-1)}svg.board .placed:hover .off-mark rect{fill:#d9a44159}svg.board .off-mark rect{fill:#3b2a1a1f;stroke:var(--ink);stroke-width:1.5;stroke-dasharray:4 3}svg.board .off-mark path{stroke:var(--ink);stroke-width:2;opacity:.6}svg.gearboard .cell.item-target .tile{fill:#fffaeb8c}svg.board .dir-hint{display:none}svg.board .cell.hint-dir .dir-hint{display:block;animation:hint-in .2s ease-out both}svg.board .dir-arc{fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round}svg.board .dir-head{fill:var(--ink)}@keyframes hint-in{0%{opacity:0}to{opacity:1}}svg.gearboard .cell.lit .tile{fill:#fffaeb73}svg.board .face{transform-box:fill-box;transform-origin:center}svg.board .cell.flip .face{animation:flip .52s ease-in-out both}svg.board .cell.flip .tile{animation:tile-flash .52s ease-in-out both;animation-delay:inherit}@keyframes flip{0%{transform:scaleX(1)}50%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes tile-flash{0%,to{fill:var(--paper-deep)}50%{fill:var(--ink-faint)}}@media(prefers-reduced-motion:reduce){svg.board *{animation:none!important}}body.gray{filter:grayscale(1)}.result{width:100%;max-width:460px;display:grid;gap:12px;justify-items:center;text-align:center;padding:18px 20px 16px;border:1px solid var(--ink-soft);background:#d8c6a059;animation:result-in .5s ease-out both}@keyframes result-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.result .title{font-family:Cinzel,serif;letter-spacing:.3em;font-size:24px}.result .stats{display:flex;gap:28px;margin:0}.result .stats div{display:grid;gap:2px}.result .stats dt{font-size:14px;color:var(--gray);font-style:italic}.result .stats dd{margin:0;font-size:20px}.result .badge{display:inline-block;vertical-align:middle;margin-left:6px;padding:1px 10px;border-radius:999px;border:1px solid var(--ink);font-size:13px}.result .badge.under{background:var(--ink);color:var(--paper)}.result .badge.over{color:var(--ink-soft);border-color:var(--ink-soft)}.result .muted{color:var(--gray);font-size:14px}.result form.submit{display:flex;gap:6px}.result input{font:inherit;width:10em;padding:3px 8px;border:1px solid var(--ink-soft);border-radius:2px;background:var(--paper);color:var(--ink)}.result button{font:inherit;color:var(--ink);background:transparent;border:1px solid var(--ink-soft);border-radius:2px;padding:4px 12px;cursor:pointer}.result table{border-collapse:collapse;font-size:15px;width:100%}.result th{font-weight:500;color:var(--gray);font-style:italic;border-bottom:1px solid var(--ink-soft);padding:2px 8px}.result td{padding:3px 8px;border-bottom:1px dashed var(--paper-deep)}.result .actions{display:flex;gap:8px;margin-top:2px}.result .actions button.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.toggles{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 22px;font-size:16px}.toggles.melody{gap:8px}.group-label{align-self:center;margin-right:6px;font-style:italic}.group-label.off{color:var(--gray)}.switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;width:0;height:0}.switch .track{position:relative;width:36px;height:20px;border-radius:999px;border:1px solid var(--ink-soft);background:transparent;transition:background .16s,border-color .16s}.switch .knob{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--ink-soft);transition:transform .16s,background .16s}.switch .text{color:var(--gray);transition:color .16s}.switch.on .track{background:var(--ink);border-color:var(--ink)}.switch.on .knob{transform:translate(16px);background:var(--paper)}.switch.on .text{color:var(--ink)}.switch.disabled{cursor:not-allowed;opacity:.45}.switch input:focus-visible+.track{outline:2px solid var(--ink-soft);outline-offset:2px}.volume{display:inline-flex;align-items:center;gap:8px}.volume .text{color:var(--ink)}.volume.off{opacity:.45}.volume.off .text{color:var(--gray)}.volume input[type=range]{width:110px;accent-color:var(--ink);cursor:pointer}.pill{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.pill input{position:absolute;opacity:0;width:0;height:0}.pill span{padding:3px 12px;border-radius:999px;border:1px solid var(--ink-soft);color:var(--gray);transition:background .16s,color .16s}.pill:has(input:checked) span{background:var(--ink);border-color:var(--ink);color:var(--paper)}.pill.disabled{cursor:not-allowed;opacity:.45}.pill input:focus-visible+span{outline:2px solid var(--ink-soft);outline-offset:2px}.feedback{width:100%;max-width:460px;border-top:1px solid var(--ink-soft);padding-top:10px;margin-top:8px}.feedback summary{cursor:pointer;font-style:italic;color:var(--ink-soft);list-style:none;display:flex;align-items:center;gap:8px}.feedback summary:before{content:"▸";font-style:normal;transition:transform .16s}.feedback[open] summary:before{transform:rotate(90deg)}.feedback summary::-webkit-details-marker{display:none}.feedback-body{display:grid;gap:16px;padding-top:12px}.feedback-form{display:grid;gap:10px;font-size:16px}.feedback-form label{display:grid;gap:4px}.feedback-form label.row{grid-template-columns:auto 1fr;align-items:center;gap:10px}.feedback-form label.check{grid-template-columns:auto 1fr;cursor:pointer}.feedback-form .req{color:var(--wash-2)}.feedback-form input[type=text],.feedback-form input:not([type]),.feedback-form input[type=email],.feedback-form textarea{font:inherit;padding:4px 8px;border:1px solid var(--ink-soft);border-radius:2px;background:var(--paper);color:var(--ink);width:100%}.feedback-form textarea{resize:vertical}.feedback-form input[type=checkbox]{accent-color:var(--ink)}.feedback-form .actions{display:flex;align-items:center;gap:12px}.feedback-form button{font:inherit;color:var(--paper);background:var(--ink);border:1px solid var(--ink);border-radius:2px;padding:4px 16px;cursor:pointer}.feedback-form button:disabled{opacity:.5;cursor:wait}.feedback-form .err{color:var(--wash-3);font-size:15px}.thanks{font-style:italic;margin:0}.rating-row{display:flex;align-items:center;gap:10px}.rating{display:inline-flex;flex-direction:row-reverse;justify-content:flex-end;gap:2px}.rating input{position:absolute;opacity:0;width:0;height:0}.rating label{font-size:24px;line-height:1;color:var(--ink-faint);cursor:pointer;transition:color .12s}.rating input:checked~label,.rating label:hover,.rating label:hover~label{color:var(--wash-1)}.rating input:focus-visible+label{outline:2px solid var(--ink-soft);outline-offset:2px}.feedback-list{list-style:none;margin:0;padding:0;display:grid;gap:10px;font-size:15px}.feedback-list li{border-bottom:1px dashed var(--paper-deep);padding-bottom:8px}.feedback-list li b{margin-right:8px}.feedback-list li .muted{margin-left:8px;font-size:13px}.feedback-list li p{margin:4px 0 0;white-space:pre-wrap}.feedback-list .stars{color:var(--wash-1);letter-spacing:1px}.muted{color:var(--gray)}.version{font-size:13px;color:var(--gray);letter-spacing:.05em;margin-top:12px}.roadmap{width:100%;max-width:460px;border-top:1px solid var(--ink-soft);padding-top:10px}.roadmap summary{cursor:pointer;font-style:italic;color:var(--ink-soft);list-style:none;display:flex;align-items:center;gap:8px}.roadmap summary:before{content:"▸";font-style:normal;transition:transform .16s}.roadmap[open] summary:before{transform:rotate(90deg)}.roadmap summary::-webkit-details-marker{display:none}.roadmap-body{display:grid;gap:12px;padding-top:10px;font-size:15px}.roadmap-body p{margin:0}.roadmap-body h3{margin:0 0 4px;font-size:15px;font-weight:500;font-style:italic;color:var(--ink-soft)}.roadmap-body ul{margin:0;padding-left:18px;display:grid;gap:3px}.run-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 18px;font-size:16px}.run-bar .stage{font-family:Cinzel,serif;letter-spacing:.15em}.run-bar button{font:inherit;color:var(--ink);background:transparent;border:1px solid var(--ink-soft);border-radius:999px;padding:2px 12px;cursor:pointer}.run-bar .hint{color:var(--gray);font-size:14px}.press-count{font-style:italic;transition:font-size .2s,color .2s}.press-count b{font-style:normal}.press-count.warn{color:var(--wash-1);font-size:22px}.press-count.danger{color:var(--wash-3);font-size:26px}.hand{display:flex;gap:10px}.card{display:grid;justify-items:center;align-content:center;gap:6px;width:84px;height:72px;padding:6px;border:1px solid var(--ink-soft);border-radius:4px;background:var(--paper);color:var(--ink);font:inherit;font-size:14px;cursor:pointer;transition:border-color .12s,transform .12s}.card:hover{border-color:var(--ink);transform:translateY(-1px)}.card[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.card.empty{border-style:dashed;background:transparent;cursor:default}.card.empty:hover{transform:none;border-color:var(--ink-soft)}.card:disabled{opacity:.45;cursor:not-allowed;transform:none}.reward .card[data-drop]:hover{border-color:var(--wash-3);box-shadow:0 0 0 2px var(--wash-3);transform:none}.item-icon{width:38px;height:38px}.card-desc{min-height:1.5em;font-size:14px;color:var(--gray);font-style:italic;text-align:center}.icon-tile{fill:none;stroke:currentColor;stroke-width:1;opacity:.45}.icon-bar{fill:currentColor}.icon-x{stroke:currentColor;stroke-width:2}.reward{width:100%;max-width:460px;display:grid;gap:12px;justify-items:center;text-align:center;padding:18px 20px 16px;border:1px solid var(--ink-soft);background:#d8c6a059;animation:result-in .5s ease-out both}.reward .title{font-family:Cinzel,serif;letter-spacing:.3em;font-size:24px}.reward .cards{display:flex;gap:10px}.reward .drop{font-style:italic;color:var(--wash-3)}.tune{width:100%;max-width:460px;display:grid;gap:8px;padding:12px 16px;border:1px dashed var(--ink-soft);font-size:15px}.tune .title{font-style:italic;color:var(--ink-soft)}.tune label{display:grid;grid-template-columns:7em 1fr 4em;align-items:center;gap:8px}.tune input[type=range]{accent-color:var(--ink)}.tune select{font:inherit}.tune code{font-size:12px}.tune button{justify-self:start;font:inherit;color:var(--ink);background:transparent;border:1px solid var(--ink-soft);border-radius:999px;padding:2px 12px;cursor:pointer}h1 .home-link{color:inherit;text-decoration:none}.tagline{margin:-6px 0 6px;font-style:italic;color:var(--ink-soft)}.modes{display:flex;flex-wrap:wrap;justify-content:center;gap:16px}.mode{display:grid;gap:8px;width:240px;padding:18px 18px 14px;border:1px solid var(--ink-soft);border-radius:4px;color:var(--ink);text-decoration:none;background:#d8c6a040;transition:border-color .12s,transform .12s}.mode:hover{border-color:var(--ink);transform:translateY(-2px)}.mode .name{font-family:Cinzel,serif;letter-spacing:.15em;font-size:18px}.mode .desc{font-size:15px;line-height:1.5}.mode .meta{font-size:13px;color:var(--gray);font-style:italic}.reward form.submit-run{display:flex;gap:6px}.reward form.submit-run input{font:inherit;width:9em;padding:3px 8px;border:1px solid var(--ink-soft);border-radius:2px;background:var(--paper);color:var(--ink)}.reward button{font:inherit;color:var(--ink);background:transparent;border:1px solid var(--ink-soft);border-radius:2px;padding:4px 12px;cursor:pointer}.reward button.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.reward table{border-collapse:collapse;font-size:15px;width:100%}.reward th{font-weight:500;color:var(--gray);font-style:italic;border-bottom:1px solid var(--ink-soft);padding:2px 8px;font-size:14px}.reward td{padding:3px 8px;border-bottom:1px dashed var(--paper-deep)}.reward .line{font-style:italic}.links{margin:0;font-style:italic}.links a{color:var(--ink-soft)}.board-page{width:100%;max-width:520px;display:grid;gap:12px}.board-page h2{margin:8px 0 0;font-family:Cinzel,serif;font-weight:500;letter-spacing:.15em;font-size:17px}.board-page h2 .muted{font-family:Cormorant Garamond,serif;letter-spacing:0;font-size:14px;margin-left:8px}.board-page table{border-collapse:collapse;font-size:15px;width:100%}.board-page th{font-weight:500;color:var(--gray);font-style:italic;border-bottom:1px solid var(--ink-soft);padding:2px 8px;font-size:14px;text-align:left}.board-page td{padding:3px 8px;border-bottom:1px dashed var(--paper-deep)}.board-page p{text-align:center}.board-page a{color:var(--ink-soft)}nav.board-levels button{padding:2px 8px;font-size:14px}nav.board-levels button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.version a{color:inherit;text-decoration:none;border-bottom:1px dotted var(--gray)}.changelog{width:100%;max-width:520px;display:grid;gap:6px;font-size:15px}.changelog h2{margin:14px 0 2px;font-family:Cinzel,serif;font-weight:500;letter-spacing:.1em;font-size:16px}.changelog ul{margin:0;padding-left:20px;display:grid;gap:3px}.changelog p{margin:0;color:var(--gray);font-style:italic}.changelog code{font-size:13px}
