:root{--cream:#faf5e9;--paper:#fffaf0;--sage:#627357;--forest:#314c3e;--sky:#b8d5e0;--clay:#b76c4f;--honey:#d9ad58;--line:#dcdcc8;--ink:#314637;--muted:#65715f;--shadow:0 18px 60px #304b3d18}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.6 'Avenir Next',Avenir,system-ui,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:transparent;border:1px solid var(--line);padding:11px 20px;border-radius:100px;cursor:pointer;transition:background .18s,transform .18s}button:hover{background:#e9ecdf;transform:translateY(-1px)}button:active{transform:translateY(1px)}button:focus-visible,a:focus-visible{outline:3px solid #b76c4f;outline-offset:4px}button:disabled{opacity:.5;cursor:default}button svg{width:21px;height:21px;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}a{color:inherit}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400;line-height:1.1}h2{font-size:clamp(32px,4vw,50px);margin:12px 0 20px}h3{font-size:28px;margin-top:48px}.topbar{max-width:1500px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:24px 4%;gap:20px}.topbar a{text-decoration:none;font:24px Georgia,serif;letter-spacing:-.8px}.topbar a span{display:block;font:9px/2.8 system-ui;letter-spacing:2.3px}.topbar nav{display:flex;gap:10px}.topbar nav button{border:0;font-size:14px}main{max-width:1500px;margin:auto;padding:0 24px}.home{position:relative;min-height:740px;height:calc(100vh - 150px);max-height:1000px;border-radius:24px;overflow:hidden;background:#f3e8ca url(assets/ui/menu.png) center/cover;display:flex;justify-content:center;text-align:center}.title-copy{padding:5vh 20px 0}.eyebrow{font-size:10px;font-weight:600;letter-spacing:3px;text-transform:uppercase;margin:0;color:var(--sage)}h1{font-size:clamp(66px,7.6vw,116px);letter-spacing:-5px;line-height:.92;margin:30px 0 22px;text-shadow:0 2px 12px #fff7e0}h1 em{font-weight:400;color:#5e714e}.title-copy>p:not(.eyebrow){font-size:17px;color:#4a624c;line-height:1.7}.primary{background:var(--forest);color:#fffaf0;border-color:var(--forest);box-shadow:0 4px 0 #21362a}.primary:hover{background:#46624e}.large{padding:15px 32px;min-width:210px;margin-top:12px}.large span{padding-left:20px}.text-link{display:block;border:0;margin:15px auto;font-size:13px;text-decoration:underline;text-underline-offset:5px}.home-foot{position:absolute;bottom:12px;left:20%;right:20%;font-size:12px;color:#fffaf0;text-shadow:0 1px 5px #233d21;background:#314c3eaa;border-radius:30px;padding:6px 15px}.content{padding:60px 5%}.lede{max-width:640px;color:var(--muted);font-size:18px}.cast{padding:25px 8% 30px;background:#f0ecd8;border:1px solid var(--line);border-radius:24px;margin:45px 0}.cast img{width:100%;display:block}.cast>div{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;gap:20px}.cast span{font-size:12px;color:var(--muted)}.cast strong{display:block;font:24px Georgia,serif;color:var(--forest);margin:10px 0}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.gallery a{text-decoration:none}.gallery img{width:100%;border-radius:16px;display:block;box-shadow:var(--shadow)}.gallery h3{font-size:24px;margin:16px 0 5px}.gallery p{font-size:13px;color:var(--muted);margin:0}.props-art{width:min(100%,680px);background:#eeead9;border-radius:20px;display:block}.menu-samples{display:flex;flex-wrap:wrap;gap:12px}.sound-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:40px 0}.sound-card{border:1px solid var(--line);border-radius:20px;padding:22px;background:var(--paper)}.sound-card h3{margin:0 0 10px;font-size:24px}.sound-card p{font-size:13px;color:var(--muted);min-height:45px}.sound-card button{background:var(--forest);color:var(--cream);width:100%;font-size:13px}.game-heading{display:flex;align-items:center;gap:25px;max-width:1100px;margin:28px auto 0}.game-heading h2{font-size:30px;margin:5px 0}.game-controls{margin-left:auto;display:flex;gap:8px}.soft{background:#edf0e3}.status{max-width:1000px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;margin:25px auto 0;font-size:13px;color:var(--muted)}.progress-track{width:100%;height:5px;background:#e5e6d5;border-radius:4px;overflow:hidden}#progress-fill{height:100%;width:0;background:var(--sage);transition:width .4s}.feedback{text-align:center;font-size:13px;min-height:22px;margin:12px 0 18px}.puzzle{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:1000px;margin:0 auto 30px}.puzzle figure{margin:0;min-width:0}.puzzle figcaption{text-align:center;font-size:10px;text-transform:uppercase;letter-spacing:2px;margin-bottom:10px;color:var(--muted)}.picture{position:relative;aspect-ratio:2/3;border:6px solid #fffbef;border-radius:12px;overflow:hidden;box-shadow:var(--shadow);cursor:crosshair;touch-action:manipulation}.picture>img{width:100%;height:100%;display:block;pointer-events:none}.prop{position:absolute;background-image:url(assets/ui/props.png);background-size:300% 200%;pointer-events:none;transform:translate(-50%,-50%);aspect-ratio:1}.ring{position:absolute;border:3px solid #fff7ce;box-shadow:0 0 0 2px #526e48,0 0 15px #fff8d366;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}.hint-ring{border:3px dashed #fff;box-shadow:0 0 0 2px var(--clay);animation:pulse 1s infinite}.hit-target{position:absolute;background:none;border:0;opacity:0;transform:translate(-50%,-50%);padding:0;min-width:18px;min-height:18px}.hit-target:focus-visible{opacity:1;background:#fff3}.hit-target:disabled{pointer-events:none}.hit-target:hover{background:none;transform:translate(-50%,-50%)}footer{max-width:1450px;margin:auto;padding:28px 4%;font-size:11px;color:var(--muted);display:flex;justify-content:space-between;gap:20px}dialog{background:var(--paper);border:1px solid var(--line);border-radius:28px;padding:52px 40px 35px;max-width:min(92vw,740px);width:100%;box-shadow:var(--shadow);color:var(--ink);text-align:center}dialog::backdrop{background:#1e382a88;backdrop-filter:blur(5px)}dialog h2{font-size:42px}dialog .close{position:absolute;top:12px;right:15px;border:0;font-size:27px;padding:0 12px}dialog p{color:var(--muted)}.choice-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:30px 0}.choice-grid button{padding:0;border-radius:12px;overflow:hidden;background:#efeedd;font-size:11px}.choice-grid img{width:100%;display:block;aspect-ratio:2/3;object-fit:cover}.choice-grid span{display:block;padding:10px 5px}.setting{display:flex;align-items:center;justify-content:space-between;text-align:left;padding:18px 0;border-bottom:1px solid var(--line);gap:20px}.setting small{display:block;color:var(--muted)}input[type=checkbox]{accent-color:var(--forest);width:24px;height:24px}input[type=range]{accent-color:var(--forest);max-width:150px}.dialog-actions{display:flex;justify-content:center;gap:12px;margin-top:25px;flex-wrap:wrap}.win-art{width:100px;height:112.5px;margin:auto;background:url(assets/characters/woodland-friends.png) 0 0/300% 100%}.steps{text-align:left;counter-reset:step;padding:0;list-style:none;margin:30px 0}.steps li{padding:14px 0;border-bottom:1px solid var(--line)}.steps b{color:var(--clay);margin-right:15px}.badge{display:inline-flex;background:#e6ecd9;color:var(--forest);padding:5px 15px;border-radius:20px;font-size:12px}@keyframes pulse{50%{opacity:.3}}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}@media(max-width:700px){main{padding:0 10px}.topbar{padding:16px}.topbar a{font-size:20px}.topbar nav{gap:0}.topbar nav button{font-size:11px;padding:8px}.home{min-height:680px;height:82vh;background-position:center bottom}.title-copy{padding-top:45px}h1{font-size:70px;letter-spacing:-3px}.home-foot{left:5%;right:5%;font-size:10px}.title-copy>p:not(.eyebrow){font-size:15px}.content{padding:35px 12px}.gallery,.sound-grid{grid-template-columns:1fr 1fr;gap:15px}.cast{padding:20px 0}.cast span{font-size:9px}.cast strong{font-size:20px}.game-heading{gap:12px;flex-wrap:wrap}.game-heading>button{padding:8px 12px}.game-heading h2{font-size:23px}.game-controls{gap:4px}.game-controls button{padding:8px 12px;font-size:12px}.puzzle{gap:5px}.picture{border-width:3px;border-radius:7px}.feedback{font-size:11px}.ring{border-width:2px}.choice-grid{grid-template-columns:repeat(3,1fr)}dialog{padding:45px 22px 28px}dialog h2{font-size:34px}footer{flex-direction:column;gap:5px}.sound-card{padding:16px}.sound-card h3{font-size:21px}.sound-card p{min-height:66px}.eyebrow{font-size:9px;letter-spacing:2px}} 

/* Pixel-registered overlay scene. The stage owns the coordinate space. */
.picture{aspect-ratio:auto;overflow:visible}.scene-stage{position:relative;width:100%;overflow:hidden;border-radius:5px}.scene-base{display:block;width:100%;height:100%;pointer-events:none}.scene-overlay{position:absolute;display:block;pointer-events:none}.scene-stage .hit-target,.scene-stage .ring{transform:none}.scene-stage .hit-target:hover{transform:none}.scene-stage .ring{z-index:5}.scene-stage .hit-target{z-index:4;min-width:0;min-height:0}

.puzzle.large-pictures{grid-template-columns:1fr;max-width:780px;gap:28px}.game-controls{flex-wrap:wrap}

.difficulty-options{border:0;display:flex;gap:10px;justify-content:center;padding:12px 0;margin:0}.difficulty-options legend{font-size:12px;color:var(--muted);padding-top:12px}.difficulty-options label{position:relative;cursor:pointer}.difficulty-options input{position:absolute;opacity:0}.difficulty-options span{display:block;border:1px solid var(--line);padding:10px 24px;border-radius:25px}.difficulty-options input:checked+span{background:var(--forest);color:var(--paper);border-color:var(--forest)}.difficulty-options input:focus-visible+span{outline:3px solid var(--clay);outline-offset:3px}#difficulty-description{font-size:13px;min-height:22px}.game-heading .badge{font-size:11px;padding:2px 12px;margin-top:5px}@media(max-width:450px){.difficulty-options span{padding:10px 18px}}

.theme-picker{display:flex;justify-content:center;align-items:center;gap:12px;margin:18px 0;font-size:14px}.theme-picker select{font:inherit;color:var(--forest,#314c3e);background:#fffaf0;border:1px solid #d7d8ca;padding:10px 16px;border-radius:12px;max-width:100%}

.topbar nav{align-items:center;flex-wrap:wrap}.topbar nav .project-return{font:12px system-ui;letter-spacing:0;padding:8px}.topbar{flex-wrap:wrap}
