:root{--bg:var(--tg-theme-bg-color,#fffaf3);--fg:var(--tg-theme-text-color,#3e4150);--hint:var(--tg-theme-hint-color,#8a8c99);--card:var(--tg-theme-secondary-bg-color,#f6eee6);--btn:var(--tg-theme-button-color,#e39b8f);--btnt:var(--tg-theme-button-text-color,#fff)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:-apple-system,system-ui,Roboto,sans-serif;background:var(--bg);color:var(--fg);user-select:none;-webkit-user-select:none;overscroll-behavior:none}
.scr{display:none}.scr.col{flex-direction:column;height:100vh}.pad{padding:0 12px 24px}
header{display:flex;align-items:center;gap:8px;padding:10px 12px;position:sticky;top:0;background:var(--bg);z-index:5}
header h1{font-size:19px;margin:0;flex:1}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:4px 12px 24px}
.tile{border:0;border-radius:22px;padding:16px 12px;min-height:128px;text-align:left;color:#3e4150;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 2px 8px #0000000d}
.tile .ic{font-size:40px}.tile b{font-size:16px}.tile small{color:#6b6e7c;font-size:12px}
.tile.wide{grid-column:1/-1;min-height:100px;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:0 12px 20px}
.card{position:relative;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 1px 4px #0001;aspect-ratio:1;border:0;padding:0}
.card img{width:100%;height:100%;display:block;object-fit:cover}
.card .t{position:absolute;left:0;right:0;bottom:0;padding:6px;font-size:13px;background:#fffd;color:#3e4150;text-align:center}
.card.lock::after{content:"🔒";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:40px;background:#fff9}
.ph{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:42px;background:var(--card)}
.ib{border:0;background:var(--card);color:var(--fg);border-radius:12px;min-width:48px;min-height:48px;font-size:17px;padding:0 12px}
.ib.on{outline:3px solid var(--btn)}.ib.main{background:var(--btn);color:var(--btnt);font-weight:600}.wide{width:100%}
#canvasWrap{flex:1;display:flex;align-items:center;justify-content:center;padding:6px;min-height:0}
.tools{display:flex;gap:6px;padding:6px 10px;justify-content:space-between}.tools .ib{flex:1}
.pal{display:grid;grid-template-columns:repeat(10,1fr);gap:6px;padding:6px 10px 12px}
.sw{aspect-ratio:1;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px #0002;min-width:28px;padding:0}
.sw.on{box-shadow:0 0 0 3px var(--btn);transform:scale(1.08)}
.picker{position:relative;overflow:hidden;background:conic-gradient(#f66,#fd5,#6d6,#5cf,#77f,#e7e,#f66)}
.picker input{position:absolute;inset:-10px;opacity:0;width:200%;height:200%}
.lvl{display:flex;gap:6px;padding:4px 12px 8px;overflow-x:auto}.lvl .ib{flex:1;white-space:nowrap;font-size:14px;min-height:42px}
#board{position:relative;margin:6px auto;background:#fff;border-radius:12px;box-shadow:inset 0 0 0 2px #0001}
#tray{position:relative;flex:1;margin:6px 10px 10px;background:var(--card);border-radius:14px;min-height:120px}
.pc{position:fixed;touch-action:none;cursor:grab;filter:drop-shadow(0 2px 3px #0005)}.pc.done{filter:none;position:absolute;cursor:default}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#333;color:#fff;padding:10px 16px;border-radius:12px;display:none;z-index:50;font-size:15px;text-align:center}
#fx{position:fixed;inset:0;pointer-events:none;z-index:40}
#modal{position:fixed;inset:0;background:#0006;display:none;align-items:center;justify-content:center;z-index:60}
#modal>div{background:var(--bg);border-radius:18px;padding:22px;max-width:320px;text-align:center}#modal p{margin:8px 0 16px;color:var(--hint)}
.gq{text-align:center;font-size:20px;font-weight:600;margin:10px 0}.gbig{font-size:44px;line-height:1.3;margin:10px 0}
.gprog{text-align:center;color:var(--btn);letter-spacing:4px;margin-top:6px}
.gch{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}.gbtn{min-width:84px;min-height:84px;font-size:30px;border:0;border-radius:18px;background:var(--card);color:var(--fg);padding:6px 12px}
.good{background:#b2f2bb!important}.shake{animation:sh .35s}@keyframes sh{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
.gdiff{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gg{display:grid;gap:6px}.gcell{aspect-ratio:1;font-size:28px;border:0;border-radius:12px;background:var(--card);color:var(--fg);padding:0}
.gcell.cardback{background:var(--btn)}.gbaskets{display:flex;gap:10px;justify-content:center;margin:14px 0}.gbasket{flex:1;min-height:120px;border:4px dashed;border-radius:18px;text-align:center;font-size:36px;padding:6px;word-break:break-all}
.gbasket small{display:block;font-size:13px;color:var(--hint)}.gtray{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.gitem{font-size:40px;width:64px;height:64px;display:flex;align-items:center;justify-content:center;touch-action:none;background:var(--card);border-radius:14px}
.gi{width:1.3em;height:1.3em;object-fit:contain;vertical-align:middle;pointer-events:none}.gbtn .gi{width:64px;height:64px}.gbig .gi{width:72px;height:72px}
.lgrid{display:grid;gap:8px;grid-template-columns:repeat(5,1fr)}.lt{aspect-ratio:1;border:0;border-radius:14px;background:var(--card);font-size:26px;font-weight:700;color:var(--fg);position:relative}
.lt.lock{opacity:.45}.lt small{position:absolute;bottom:2px;left:0;right:0;font-size:10px;font-weight:400;color:#e0a100}
.bigletter{font-size:120px;font-weight:800;text-align:center;line-height:1;color:var(--btn)}
.wordcard{display:flex;align-items:center;gap:14px;background:var(--card);border-radius:18px;padding:12px;margin:10px 0}.wordcard .gi{width:80px;height:80px;font-size:64px}
.syl{display:inline-block;font-size:30px;font-weight:700;padding:6px 10px;margin:3px;border-radius:12px;background:var(--card)}
.syl:nth-child(odd){color:#d9480f}.syl:nth-child(even){color:#1c7ed6}
.tbl{border-collapse:separate;border-spacing:6px;margin:8px auto}.tbl td{background:var(--card);border-radius:10px;font-size:24px;font-weight:700;padding:10px 12px;text-align:center;min-width:52px}
.merge{position:relative;height:110px;margin:10px 0;font-size:64px;font-weight:800}.merge span{position:absolute;top:10px;transition:left 1.2s ease}
.reader{font-size:22px;line-height:1.7;background:var(--card);border-radius:16px;padding:14px}
.trace{display:block;margin:8px auto;background:#fff;border-radius:16px;touch-action:none;box-shadow:inset 0 0 0 2px #0001}
.encard{background:#fff;border-radius:22px;box-shadow:0 2px 10px #0001;padding:18px;text-align:center;margin:10px 0;color:#3e4150}
.encard .gi{width:140px;height:140px;font-size:110px}.encard h2{margin:8px 0 2px;font-size:34px}
.sec{display:flex;gap:8px;flex-wrap:wrap}.sec .ib{flex:1 1 45%;min-height:64px}
