:root{--bg-1: #f5e9d8;--bg-2: #e7cfac;--ink: #1d1308;--wood: #7a522f;--wood-2: #9f6c40;--card: #fff8eb;--accent: #0f6f76;--accent-soft: #3ea7ad;--line: #cfb38c;--chip: rgba(255, 247, 233, .9)}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;min-height:100vh;color:var(--ink);font-family:Manrope,Segoe UI,sans-serif;background:radial-gradient(circle at 15% 10%,#fff6e7 0%,var(--bg-1) 36%,var(--bg-2) 100%)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(105deg,#ffffff59,#fff0 33%),repeating-linear-gradient(90deg,#805c3317 0,#805c3317 1px,#fff0 1px,#fff0 13px)}.app-shell{position:relative;z-index:1;width:min(1200px,96vw);margin:1.25rem auto;padding:1.2rem;border-radius:1.2rem;border:1px solid rgba(110,73,36,.2);background:#fff9eead;box-shadow:0 14px 34px #572f0d2e;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:rise .4s ease}body:not(.puzzle-active){overflow:hidden}body:not(.puzzle-active) .app-shell{height:calc(100vh - 2.5rem);max-height:calc(100vh - 2.5rem);display:flex;flex-direction:column}.topbar{display:flex;align-items:end;justify-content:space-between;gap:1rem;padding-top:.25rem;border-bottom:1px solid var(--line);padding-bottom:1rem}.eyebrow{margin:0;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:#7f5a33}h1{margin:.1rem 0 0;font:700 clamp(1.5rem,4vw,2.2rem) / 1 "Fraunces","Times New Roman",serif;letter-spacing:.02em}.game-title{cursor:pointer;-webkit-user-select:none;user-select:none}.game-title.debug-active{color:#8a1d1d}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;justify-content:end}.difficulty,.slice-mode{display:inline-flex;align-items:center;gap:.45rem;font-weight:700;font-size:.9rem}.piece-slider{width:clamp(130px,20vw,220px);accent-color:#8d5a31}.difficulty output{min-width:9.4rem;text-align:right;font-variant-numeric:tabular-nums}.slice-mode select,.piece-slider{border-radius:.6rem;border:1px solid var(--line);background:#fff;color:var(--ink);font:inherit;padding:.38rem .55rem}.btn{border:1px solid transparent;border-radius:.65rem;padding:.45rem .9rem;font:700 .86rem/1 Manrope,Segoe UI,sans-serif;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}.btn:active{transform:translateY(1px)}.btn.ghost{border-color:var(--line);background:#fff8ea;color:#6e4a2b}.btn.ghost:hover{border-color:#ae895f;background:#fffcf5}.btn.ghost.active{border-color:#3f6f41;background:#eef9ed;color:#2f5d30}.moon-toggle{min-width:2.2rem;width:2.2rem;padding:.45rem 0;font-size:1.02rem;line-height:1}.btn:disabled{opacity:.5;cursor:not-allowed}.puzzle-menu-wrap{position:relative;display:inline-flex}.puzzle-menu-wrap[hidden]{display:none!important}.puzzle-dropdown{position:absolute;top:calc(100% + .45rem);right:0;min-width:10.8rem;display:grid;gap:.38rem;padding:.45rem;border-radius:.7rem;border:1px solid rgba(111,75,43,.38);background:#fff8ebf2;box-shadow:0 10px 24px #47280a33;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.puzzle-dropdown[hidden]{display:none!important}.puzzle-dropdown .btn{width:100%;text-align:left;justify-content:flex-start}.support-link{white-space:nowrap}body.puzzle-active .support-link{display:none!important}.content{margin-top:1.1rem}body:not(.puzzle-active) .content{flex:1;min-height:0;overflow:hidden}.section-head{margin-bottom:1rem}h2{margin:0;font:700 clamp(1.2rem,3vw,1.7rem) / 1.1 "Fraunces","Times New Roman",serif}.section-head p{margin:.4rem 0 0;color:#58381a}.gallery-grid{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.gallery-groups{display:grid;gap:1.2rem}.gallery-group{padding:.2rem 0 .35rem;border-top:1px solid rgba(122,82,47,.24)}.gallery-group:first-child{border-top:0;padding-top:0}.gallery-group-title{margin:0;font:700 clamp(1rem,2.2vw,1.15rem) / 1.2 "Fraunces","Times New Roman",serif}.gallery-group-description{margin:.22rem 0 .65rem;color:#6b4422;font-size:.85rem}body:not(.puzzle-active) .gallery-view{height:100%;min-height:0;display:flex;flex-direction:column}body:not(.puzzle-active) .gallery-groups{flex:1;min-height:0;overflow-y:auto;padding-right:.2rem}.gallery-card{border:1px solid rgba(149,111,72,.35);border-radius:.85rem;padding:.6rem;background:var(--card);box-shadow:0 10px 24px #47280a21;display:grid;gap:.5rem;cursor:pointer;transition:transform .17s ease,box-shadow .17s ease,border-color .17s ease;animation:reveal .32s ease both}.gallery-card:hover{transform:translateY(-3px);border-color:#7e582f;box-shadow:0 14px 26px #391f0838}.gallery-card img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block;border-radius:.6rem}.gallery-card strong{font-size:.95rem}.gallery-card span{font-size:.84rem;color:#744d27}.puzzle-view{animation:reveal .22s ease}body.puzzle-active .app-shell{width:100vw;min-height:100vh;min-height:100dvh;height:100vh;height:100dvh;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}body.puzzle-active .content{margin-top:0}body.puzzle-active .topbar{position:fixed;top:.75rem;left:.75rem;right:.75rem;z-index:40;padding:.65rem .8rem;border:1px solid rgba(111,75,43,.38);border-radius:.85rem;border-bottom:1px solid rgba(111,75,43,.38);background:#fff8ebb8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:end}body.puzzle-active .puzzle-dropdown{background:#fff8ebeb}body.puzzle-active .topbar>div:first-child{display:none}body.puzzle-active .difficulty,body.puzzle-active .slice-mode{display:none}body.puzzle-active .puzzle-view{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;height:100vh;height:100dvh;animation:none}body.puzzle-active .stage-wrap{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;height:100dvh}body.puzzle-active .stage{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;min-height:0;border:0;border-radius:0;box-shadow:none}body.puzzle-active .status-chip{left:0;right:0;bottom:0;transform:none;max-width:none;border-radius:0;border-left:0;border-right:0;border-bottom:0;border-top:1px solid rgba(71,44,17,.36);background:#fff5e475;color:#2d1b0aeb;padding:.24rem .62rem;font-size:.74rem;line-height:1.2;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}body.puzzle-active{overflow:hidden}.stage-wrap{position:relative}.stage{width:100%;min-height:clamp(430px,72vh,790px);border-radius:1rem;border:1px solid rgba(124,85,48,.5);overflow:hidden;background:linear-gradient(130deg,#dbbc96,#9f6c40);box-shadow:inset 0 0 0 2px #58341659,inset 0 16px 24px #ffdcb22b}.stage canvas{display:block;width:100%;height:100%;touch-action:none}.puzzle-loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:35;display:grid;place-items:center;background:linear-gradient(130deg,#1f160e70,#2c1e1285);-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px)}.puzzle-loading-card{min-width:min(84vw,20rem);display:grid;justify-items:center;gap:.68rem;padding:.95rem 1.1rem;border-radius:.88rem;border:1px solid rgba(246,220,184,.45);background:#23170c9e;box-shadow:0 8px 20px #00000047}.puzzle-loader{width:2.5rem;height:2.5rem;border-radius:999px;border:.18rem solid rgba(255,237,210,.28);border-top-color:#ffe8c9;animation:puzzle-loader-spin .9s linear infinite}.puzzle-loading-label{color:#ffe9cc;text-align:center;font:700 .84rem/1.2 Manrope,Segoe UI,sans-serif;letter-spacing:.01em}.status-chip{position:absolute;left:1rem;bottom:1rem;max-width:calc(100% - 2rem);border-radius:999px;border:1px solid rgba(83,50,23,.3);background:var(--chip);padding:.45rem .8rem;font-size:.84rem;color:#472c11;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.render-stats{position:absolute;top:1rem;right:1rem;z-index:32;padding:.3rem .52rem;border-radius:.5rem;border:1px solid rgba(52,33,15,.48);background:#140c06c7;color:#ffe7bf;font:700 .72rem/1.2 Manrope,system-ui,sans-serif;letter-spacing:.01em;pointer-events:none}body.puzzle-active .render-stats{top:4.1rem}.credits-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:grid;place-items:center;padding:1rem;background:#120d0985;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.credits-dialog{width:min(27rem,95vw);position:relative;display:grid;gap:.45rem;padding:1rem 1rem .9rem;border-radius:.9rem;border:1px solid rgba(111,75,43,.35);background:#fff8ecf7;box-shadow:0 14px 32px #2a180a47}.credits-dialog h3{margin:0 0 .2rem;font:700 1.2rem/1.1 Fraunces,Times New Roman,serif}.credits-dialog p{margin:0;color:#4f3318;font-size:.92rem;line-height:1.35}.credits-close{position:absolute;top:.5rem;right:.5rem;border:1px solid rgba(133,96,61,.4);border-radius:.55rem;padding:.25rem .55rem;background:#fff6e7;color:#5e3e1f;font:700 .73rem/1 Manrope,Segoe UI,sans-serif;cursor:pointer}@keyframes reveal{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes puzzle-loader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 820px){.app-shell{margin:0;width:100vw;min-height:100vh;border-radius:0;border-left:0;border-right:0;padding:1rem}body:not(.puzzle-active) .app-shell{height:100vh;max-height:100vh}.topbar{align-items:start;flex-direction:column}.controls{width:100%;justify-content:start}.difficulty{flex-wrap:wrap;row-gap:.3rem;column-gap:.45rem;align-items:flex-start}.difficulty output{width:100%;min-width:0;text-align:left}.stage{min-height:clamp(440px,68vh,620px)}}
