:root{--bg: #f6efe3;--ink: #2b2118;--muted: #7a6a58;--panel: #fffaf2;--line: #e4d6c0;--wood: #c98b4a;--accent: #f08c00;--accent-ink: #fff;--good: #2b8a3e;--bad: #c92a2a;--dark: #2b2118;--radius: 12px;--shadow: 0 2px 0 rgba(0, 0, 0, .08), 0 8px 24px rgba(60, 40, 10, .08);font-family:ui-rounded,SF Pro Rounded,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg)}body.in-game{height:100dvh;overflow:hidden}a{color:inherit}h1,h2,h3,h4{margin:0 0 .4em;line-height:1.15}p{margin:0 0 .6em}.muted{color:var(--muted)}.small{font-size:.85rem}#app{display:flex;flex-direction:column;min-height:100dvh}body.in-game #app{height:100dvh}.btn{appearance:none;border:2px solid var(--line);background:var(--panel);color:var(--ink);padding:.5em .9em;border-radius:10px;font:inherit;font-weight:650;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:.35em;white-space:nowrap;box-shadow:0 2px 0 var(--line);transition:transform .05s,background .15s}.btn:hover{background:#fff}.btn:active{transform:translateY(2px);box-shadow:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:#c46f00;color:var(--accent-ink);box-shadow:0 2px #b06300}.btn.primary:hover{background:#ff9d1a}.btn.danger{color:var(--bad)}.btn.ghost{background:transparent;border-color:transparent;box-shadow:none;color:inherit}.btn.icon{padding:.45em .6em;min-width:2.4em;justify-content:center}.btn.big{font-size:1.15rem;padding:.7em 1.3em}.btn.stop{background:var(--bad);border-color:#8f1d1d;box-shadow:0 2px #8f1d1d}.input{font:inherit;padding:.55em .7em;border:2px solid var(--line);border-radius:10px;width:100%;background:#fff}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem 1rem;background:var(--dark);color:#f8eedd}.logo{text-decoration:none;font-size:1.15rem;font-weight:700;display:flex;gap:.4rem;align-items:center}.logo b{color:#ffd43b}.stats{display:flex;gap:1rem;align-items:center;font-weight:650}.lvl{display:inline-flex;align-items:center;gap:.4rem}.xpbar{width:80px;height:8px;border-radius:4px;background:#ffffff2e;overflow:hidden;display:inline-block}.xpbar span{display:block;height:100%;background:#ffd43b}body.in-game .topbar{padding:.3rem .8rem}.screen{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:1.2rem}body.in-game .screen{max-width:none;padding:0;min-height:0;display:flex}.page-title{font-size:2rem;display:flex;align-items:baseline;gap:1rem}.page-title small{font-size:1rem;color:var(--muted)}.hero{display:grid;grid-template-columns:1fr 1.2fr;gap:2rem;align-items:center;margin:1rem 0 2rem}.hero h1{font-size:clamp(2rem,5vw,3.4rem)}.hero h1 span{color:var(--accent)}.hero-actions{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:1rem}.hero-canvas{width:100%;border-radius:18px;box-shadow:var(--shadow);border:3px solid var(--wood);background:#fbf3e4}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1rem}.card{background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);padding:1rem;text-decoration:none;box-shadow:var(--shadow);transition:transform .12s;display:flex;flex-direction:column}.card:hover{transform:translateY(-3px)}.card p{color:var(--muted);flex:1}.card small{font-weight:650}.chapter{margin-bottom:2rem}.level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}.level-card{background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);padding:1rem;text-decoration:none;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.2rem}.level-card:not(.locked):hover{border-color:var(--accent)}.level-card.locked{opacity:.55}.level-card.done{border-color:#b2d8b9}.level-card p{color:var(--muted);font-size:.9rem;flex:1}.level-card small{font-size:.8rem;color:var(--muted)}.level-card .best{color:var(--good);font-weight:650}.stars{color:#f59f00;font-size:1.3rem;letter-spacing:2px}.game{flex:1;min-height:0;display:grid;width:100%;grid-template-columns:200px 1fr 250px;grid-template-rows:auto 1fr;grid-template-areas:"head head head" "pal stage goals"}.game-head{grid-area:head;display:flex;align-items:center;gap:.8rem;padding:.4rem .8rem;border-bottom:2px solid var(--line);background:var(--panel)}.game-head .title{flex:1;min-width:0}.game-head h2{font-size:1.15rem;margin:0}.game-head p{margin:0;color:var(--muted);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.head-actions{display:flex;gap:.4rem}.palette{grid-area:pal;overflow-y:auto;padding:.6rem;border-right:2px solid var(--line);background:var(--panel)}.pal-cat h4{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:.6rem 0 .3rem}.pal-items{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.part-btn{border:2px solid var(--line);background:#fff;border-radius:10px;padding:.3rem .2rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;font:inherit;color:inherit}.part-btn:hover{border-color:var(--accent)}.part-btn.active{border-color:var(--accent);background:#fff4e0;box-shadow:inset 0 0 0 2px var(--accent)}.part-btn.off{opacity:.45}.part-icon{width:44px;height:44px}.pname{font-size:.72rem;font-weight:700;text-align:center;line-height:1.1}.pmeta{font-size:.68rem;color:var(--muted)}.stage{grid-area:stage;display:flex;flex-direction:column;min-width:0;min-height:0;background:#2b2118}.canvas-wrap{flex:1;min-height:0;position:relative}.canvas-wrap canvas{position:absolute;inset:0;touch-action:none;display:block}.toolbar{display:flex;justify-content:space-between;gap:.5rem;padding:.45rem .6rem;background:#3a2d21;flex-wrap:wrap}.tool-group{display:flex;gap:.35rem;flex-wrap:wrap}.is-running .edit-tools{opacity:.35;pointer-events:none}.run{min-width:7em;justify-content:center}.goals{grid-area:goals;overflow-y:auto;padding:.8rem;border-left:2px solid var(--line);background:var(--panel)}.goals h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:.8rem}.goal-list{list-style:none;padding:0;margin:0 0 .5rem}.goal-list li{padding:.3rem 0;border-bottom:1px dashed var(--line);font-size:.92rem}.goal-list li.ok{color:var(--good);font-weight:650}.meter{height:10px;background:var(--line);border-radius:5px;overflow:hidden}.meter div{height:100%;background:var(--accent)}.warn{background:#fff3bf;padding:.5rem;border-radius:8px;font-size:.85rem}.help{margin-top:1rem;font-size:.85rem;color:var(--muted)}.help summary{cursor:pointer;font-weight:650;color:var(--ink)}.modal-back{position:fixed;inset:0;background:#1e140a8c;display:grid;place-items:center;z-index:50;padding:1rem;animation:fade .15s}.modal{background:var(--panel);border-radius:18px;padding:1.4rem;width:min(480px,100%);max-height:90dvh;overflow-y:auto;box-shadow:0 20px 60px #00000059;border:3px solid var(--wood);animation:pop .2s}.modal-actions{display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap;margin-top:1rem}.modal-actions.left{justify-content:flex-start}.results .win{color:var(--good)}.results .lose{color:var(--bad)}.big-stars{font-size:3rem;text-align:center;letter-spacing:.3rem;color:#d9cbb3}.big-stars .on{color:#f59f00;display:inline-block;animation:starpop .45s both}.score-table{width:100%;border-collapse:collapse;margin:.5rem 0}.score-table td{padding:.25rem 0;border-bottom:1px dashed var(--line)}.score-table td:last-child{text-align:right;font-variant-numeric:tabular-nums}.score-table .total td{font-weight:800;font-size:1.15rem;border-bottom:0}.reward{font-weight:700;color:var(--accent)}.levelup{background:#ffd43b;border-radius:10px;padding:.5rem;text-align:center;font-weight:800;font-size:1.2rem;animation:starpop .5s}.unlock{font-weight:650}.rank{color:var(--muted);font-size:.85rem}.board{padding-left:1.4rem}.board li{display:grid;grid-template-columns:1fr auto auto;gap:.8rem;padding:.25rem 0}.saves{list-style:none;padding:0}.saves li{display:flex;gap:.5rem;align-items:center;padding:.25rem 0}.saves li small{flex:1;color:var(--muted)}.toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%,150%);background:var(--dark);color:#fff;padding:.7rem 1.1rem;border-radius:12px;font-weight:650;z-index:60;transition:transform .25s;max-width:calc(100vw - 2rem);text-align:center}.toast.show{transform:translate(-50%)}.skin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.8rem}.skin{background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);padding:.8rem;display:flex;flex-direction:column;gap:.4rem}.skin.equipped{border-color:var(--good)}.skin.locked{opacity:.6}.skin h4{margin:0}.swatch{display:flex;gap:4px}.swatch i{width:26px;height:26px;border-radius:50%;border:2px solid rgba(0,0,0,.15)}.tag{color:var(--good);font-weight:700;font-size:.85rem}.profile label{display:grid;gap:.3rem;font-weight:650;max-width:320px}.stat-row{display:flex;flex-wrap:wrap;gap:1rem;margin:1rem 0}.stat-row div{background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);padding:.7rem 1rem;display:flex;flex-direction:column;min-width:110px}.stat-row b{font-size:1.5rem}.stat-row span{color:var(--muted);font-size:.85rem}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{transform:scale(.92);opacity:0}}@keyframes starpop{0%{transform:scale(0) rotate(-30deg)}70%{transform:scale(1.3)}to{transform:scale(1)}}@media(max-width:900px){.hero{grid-template-columns:1fr}.logo span{display:none}.game{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) auto auto;grid-template-areas:"head" "stage" "pal" "goals"}.palette{border-right:0;border-top:2px solid var(--line);padding:.3rem;max-height:none;overflow-x:auto;overflow-y:hidden;display:flex;gap:.5rem}.pal-cat{flex:none}.pal-cat h4{margin:0 0 .2rem}.pal-items{display:flex;gap:.3rem}.part-btn{width:64px;flex:none}.goals{border-left:0;border-top:2px solid var(--line);max-height:22dvh;padding:.4rem .8rem}.goals .help,.game-head p{display:none}.head-actions .btn{padding:.4em .55em;font-size:.85rem}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
