:root{--bg: #f8f1e4;--surface: #fff9ee;--surface-2: #f6eedd;--surface-3: #efe4cd;--ink: #12345f;--muted: #5f7184;--line: #c9d2dd;--line-strong: #9aabbe;--primary: #f7c948;--primary-hover: #efbb2c;--primary-soft: #fff5c9;--primary-ink: #12345f;--crayon-yellow: #f7c948;--crayon-green: #7bc67b;--crayon-blue: #6db6e8;--crayon-purple: #b788d6;--crayon-pink: #d99bb0;--crayon-orange: #e8a85c;--crayon-red: #ef7c7c;--crayon-teal: #6bb1ac;--header: #0e2d57;--header-2: #12345f;--header-ink: #fff9ee;--header-muted: #9bb5d4;--focus: #7ec3e8;--danger: #ef7c7c;--success: #7bc67b;--shadow-tint: rgb(18 52 95 / 22%);--z-modal-backdrop: 30;--z-modal: 40;font-family:Caveat,PingFang SC,Hiragino Sans GB,Microsoft YaHei,ui-sans-serif,system-ui,sans-serif;font-size:16px}:root[data-theme=mist]{--bg: #eef2f6;--surface: #f9fcff;--surface-2: #e6eef6;--surface-3: #d6e4f0;--primary: #7ec3e8;--primary-hover: #62b2dd;--primary-soft: #e6f2fa;--primary-ink: #12345f}:root[data-theme=sage]{--bg: #eef4ec;--surface: #f8fcf6;--surface-2: #e6f0e3;--surface-3: #d6e8d2;--primary: #8dcc8a;--primary-hover: #76bd72;--primary-soft: #e8f7e6;--primary-ink: #12345f}:root[data-theme=clay]{--bg: #f3eef6;--surface: #fcf9ff;--surface-2: #ede4f3;--surface-3: #e0d2ec;--primary: #b892d6;--primary-hover: #a87bcc;--primary-soft: #f3e8fa;--primary-ink: #12345f}:lang(zh){font-family:Ma Shan Zheng,Caveat,PingFang SC,Hiragino Sans GB,system-ui,sans-serif}:lang(ja){font-family:Klee One,Caveat,Hiragino Sans,Yu Gothic,system-ui,sans-serif}*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{margin:0;min-height:100dvh;color:var(--ink);background-color:var(--bg);background-image:radial-gradient(rgba(18,52,95,.05) 1px,transparent 1px),radial-gradient(rgba(255,255,255,.45) 1px,transparent 1px);background-size:4px 4px,7px 7px}button,input,textarea,select{font:inherit}button{min-width:0;border:3px solid var(--ink);border-radius:16px;background:var(--surface);color:var(--ink);cursor:pointer;font-weight:700;letter-spacing:.01em;position:relative;box-shadow:3px 4px 0 0 var(--ink);transition:transform .12s cubic-bezier(.22,1,.36,1),box-shadow .12s cubic-bezier(.22,1,.36,1),background-color .12s ease}button:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:4px 5px 0 0 var(--ink)}button:active:not(:disabled){transform:translate(2px,3px);box-shadow:1px 1px 0 0 var(--ink)}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--crayon-yellow);outline-offset:2px}.page{width:min(1100px,calc(100% - 24px));margin:16px auto 56px;display:grid;gap:16px}.page>*{min-width:0}.app-header{overflow:hidden;border-radius:24px;border:3px solid var(--ink);background:var(--header);color:var(--header-ink);box-shadow:5px 6px 0 0 var(--ink);position:relative}.app-header:before{content:"★ ✦ ★";position:absolute;right:16px;bottom:56px;font-size:.7rem;color:var(--crayon-yellow);opacity:.55;letter-spacing:6px;pointer-events:none}.hero{min-height:148px;padding:24px 28px 16px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:20px}.brand-lockup{display:flex;align-items:flex-start;gap:16px}.kicker,.meta{margin:0;color:var(--header-muted)}.kicker{font-size:.95rem;font-weight:600;letter-spacing:.04em}.hero h1{margin:6px 0 8px;font-family:Caveat,Hiragino Kaku Gothic ProN,Yu Gothic,Meiryo,PingFang SC,sans-serif;font-size:clamp(2rem,4vw,3rem);font-weight:700;line-height:1.05;letter-spacing:-.01em;color:var(--header-ink);text-shadow:2px 2px 0 rgba(0,0,0,.22);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:clip}html[lang=ja] .hero h1{font-family:Hiragino Kaku Gothic ProN,Yu Gothic,Meiryo,system-ui,sans-serif;letter-spacing:0;text-shadow:1.5px 1.5px 0 rgba(0,0,0,.22)}.meta{font-size:.92rem}.title-doodle-wrap{position:relative;display:inline-block;max-width:100%}.title-doodle{position:absolute;inset:-8px -12px;pointer-events:none;overflow:visible}html[lang=ja] .title-doodle{inset:-4px -8px;transform:scale(.92);transform-origin:left center}.hero-tools,.topnav,.controls-split,.completion-actions,.toolbar,.name-row,.theme-picker,.segmented{display:flex;align-items:center;gap:8px}.hero-tools{justify-content:flex-end;flex-wrap:wrap}.ghost{min-height:36px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:2px solid rgba(255 255 255 / .5);border-radius:12px;background:#ffffff1f;color:var(--header-ink);box-shadow:2px 2px #0003;font-weight:600}.lang-switch{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 8px;border:2px solid rgba(255 255 255 / .4);border-radius:12px;background:#ffffff14;box-shadow:2px 2px #0003}.lang-switch__icon{color:var(--header-ink);opacity:.75;flex-shrink:0}.lang-switch__track{--slot: 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));position:relative;min-width:168px;border-radius:8px;isolation:isolate}.lang-switch__thumb{position:absolute;inset:0;width:calc(100% / 3);background:var(--crayon-yellow);border:2px solid var(--ink);border-radius:8px;box-shadow:2px 2px #0000002e;transform:translate(calc(var(--slot) * 100%));transition:transform .22s cubic-bezier(.34,1.45,.64,1);z-index:0}.lang-switch__thumb[data-active=zh]{--slot: 0}.lang-switch__thumb[data-active=en]{--slot: 1}.lang-switch__thumb[data-active=ja]{--slot: 2}.lang-switch__btn{position:relative;z-index:1;min-height:28px;padding:0 8px;border:0;background:transparent;box-shadow:none;color:var(--header-ink);font-weight:700;font-size:.88rem;letter-spacing:.02em;white-space:nowrap;transition:color .16s ease;cursor:pointer}.lang-switch__btn[aria-pressed=true]{color:var(--ink)}.lang-switch__btn:hover:not([aria-pressed=true]){color:var(--crayon-yellow)}.lang-switch__btn:focus-visible{outline:2px solid var(--crayon-yellow);outline-offset:2px;border-radius:6px}@media(max-width:560px){.lang-switch__track{min-width:144px}.lang-switch__btn{font-size:.82rem;padding:0 6px}}.ghost:hover:not(:disabled){background:#ffffff38;transform:translate(-1px,-1px);box-shadow:3px 3px #0003}.topnav{min-height:54px;padding:8px 10px 10px;border-top:2px solid rgba(255 255 255 / .15);background:var(--header-2);flex-wrap:wrap;gap:6px}.topnav button{min-height:38px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:2px solid transparent;border-radius:12px;background:transparent;color:var(--header-muted);box-shadow:none;font-size:1rem;font-weight:700}.topnav button:hover:not(:disabled){background:transparent;color:var(--header-ink);box-shadow:none;transform:none}.topnav button.active{border:2px solid var(--crayon-yellow);background:#ffffff1f;color:var(--header-ink);box-shadow:2px 2px #0003}.notice{margin:0;padding:12px 16px;border:3px solid var(--ink);border-radius:16px;background:var(--crayon-yellow);color:var(--ink);font-weight:700;font-size:1.05rem;box-shadow:3px 4px 0 0 var(--ink)}.toolbar{justify-content:space-between;flex-wrap:wrap;min-height:52px;padding:8px 10px;border:3px solid var(--ink);border-radius:18px;background:var(--surface);box-shadow:3px 4px 0 0 var(--ink)}.segmented,.theme-picker{flex-wrap:wrap}.segmented button,.theme-picker button,.controls-split button,.controls-grid button,.completion-actions button,.name-row button,.panel button{min-height:36px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:7px}.segmented button,.theme-picker button{border-color:transparent;background:transparent;box-shadow:none}.segmented button.active,.theme-picker button.active{border-color:var(--ink);background:var(--crayon-yellow);color:var(--ink);box-shadow:2px 2px 0 0 var(--ink)}.theme-picker{padding-right:4px;color:var(--muted)}.game-workspace{display:grid;grid-template-columns:240px minmax(0,1fr);align-items:start;gap:16px}.game-stage{min-width:0;display:grid;gap:12px}.game-rail{min-width:0;display:grid;gap:10px;position:sticky;top:12px}.status{min-height:46px;padding:10px 14px;display:flex;justify-content:space-between;align-items:center;gap:12px;border:3px solid var(--ink);border-radius:14px;background:var(--surface);color:var(--muted);font-size:1rem;font-weight:700;box-shadow:3px 3px 0 0 var(--ink)}.status strong{color:var(--crayon-red);letter-spacing:.15em;font-size:1.1rem}.status-stairs{min-height:58px}.diff-stairs{display:flex;align-items:flex-end;gap:4px;height:32px}.diff-bar{width:10px;height:var(--bar-h, 10px);border-radius:3px 3px 0 0;border:2px solid var(--ink);background:var(--bar-color, #ccc);opacity:.22;transition:opacity .3s ease,transform .25s ease;transform-origin:bottom center}.diff-bar--solved{opacity:1;transform:scaleY(1.08);box-shadow:1px -1px 0 0 var(--ink)}.message{min-height:48px;margin:0;padding:12px 16px;border:3px solid var(--ink);border-radius:16px;background:var(--surface);color:var(--muted);font-size:1.05rem;line-height:1.4;box-shadow:3px 3px 0 0 var(--ink)}.board-doodle-wrap{position:relative}.board-doodle{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:visible}.board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;position:relative;z-index:1}.tile{min-height:88px;padding:10px 8px;border:3px solid var(--ink);border-radius:16px;background:var(--surface);color:var(--ink);font-family:Caveat,sans-serif;font-size:1.15rem;font-weight:700;line-height:1.25;overflow-wrap:anywhere;text-wrap:balance;box-shadow:3px 4px 0 0 var(--ink);position:relative;z-index:1;transition:transform .12s cubic-bezier(.22,1,.36,1),box-shadow .12s cubic-bezier(.22,1,.36,1),background-color .12s ease}.tile{animation:tilePop .36s cubic-bezier(.34,1.56,.64,1) both}.tile:nth-child(1){animation-delay:20ms}.tile:nth-child(2){animation-delay:50ms}.tile:nth-child(3){animation-delay:80ms}.tile:nth-child(4){animation-delay:.11s}.tile:nth-child(5){animation-delay:.14s}.tile:nth-child(6){animation-delay:.17s}.tile:nth-child(7){animation-delay:.2s}.tile:nth-child(8){animation-delay:.23s}.tile:nth-child(9){animation-delay:.26s}.tile:nth-child(10){animation-delay:.29s}.tile:nth-child(11){animation-delay:.32s}.tile:nth-child(12){animation-delay:.35s}.tile:nth-child(13){animation-delay:.38s}.tile:nth-child(14){animation-delay:.41s}.tile:nth-child(15){animation-delay:.44s}.tile:nth-child(16){animation-delay:.47s}.tile:hover:not(:disabled){background:var(--surface-2);transform:translate(-1px,-2px) rotate(-.6deg);box-shadow:4px 5px 0 0 var(--ink)}.tile.selected{background:var(--crayon-yellow);border-color:var(--ink);transform:translate(-2px,-3px) scale(1.04);box-shadow:5px 6px 0 0 var(--ink);color:var(--ink);animation:tilePop .36s cubic-bezier(.34,1.56,.64,1) both,selectedPulse 1.8s ease-in-out .36s infinite}.tile.selected:hover:not(:disabled){transform:translate(-2px,-3px) scale(1.04);box-shadow:5px 6px 0 0 var(--ink)}.board-shaking .tile.selected{animation:shake .38s cubic-bezier(.36,.07,.19,.97) both}.level-yellow{--level-bg: #fff5c9;--level-border: #f7c948;--level-dot: #f7c948}.level-green{--level-bg: #e8f7e6;--level-border: #8dcc8a;--level-dot: #8dcc8a}.level-blue{--level-bg: #e6f2fa;--level-border: #7ec3e8;--level-dot: #7ec3e8}.level-purple{--level-bg: #f3e8fa;--level-border: #b892d6;--level-dot: #b892d6}.solved{display:grid;gap:8px}.solved-item{padding:12px 14px;border-radius:14px;background:var(--level-bg);border:3px solid var(--ink);display:flex;align-items:flex-start;gap:12px;box-shadow:3px 3px 0 0 var(--ink);animation:solvedIn .32s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--solved-index, 0) * 60ms)}.solved-item h2{margin:0 0 4px;font-family:Caveat,sans-serif;font-size:1.15rem;font-weight:700}.solved-item p{margin:0;color:var(--muted);font-size:.95rem}.solved-doodle-underline{display:block;margin-top:1px;overflow:visible}.mascot-card{width:64px;height:64px;flex:0 0 auto;overflow:hidden;border-radius:14px;border:3px solid var(--ink);box-shadow:3px 3px 0 0 var(--ink);display:flex;align-items:center;justify-content:center;background:var(--surface-2)}.mascot-card-img{display:block;width:100%;height:100%;object-fit:contain;padding:3px}.celebration-card{padding:16px 20px;display:flex;align-items:center;gap:18px;border:3px solid var(--ink);border-radius:18px;background:var(--level-bg);box-shadow:4px 5px 0 0 var(--ink);animation:celebrationIn .42s cubic-bezier(.22,1,.36,1) both}.celebration-text h3{margin:0;font-size:.95rem;color:var(--muted);font-weight:600}.celebration-text h2{margin:4px 0 0;font-family:Caveat,sans-serif;font-size:1.55rem;font-weight:700;color:var(--ink)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:40px 20px;text-align:center}.controls-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:stretch}.controls-submit{min-height:108px;font-family:Caveat,sans-serif;font-size:1.5rem;font-weight:700;letter-spacing:.02em}.controls-submit.primary:not(:disabled){animation:btnGlow 1.6s ease-in-out infinite}.controls-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.controls-grid button{min-height:50px;font-weight:700;font-size:.95rem}.completion-actions{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:10px}.completion-next{min-height:56px;font-family:Caveat,sans-serif;font-size:1.3rem;font-weight:700}.primary,.controls-split .primary{border-color:var(--ink);background:var(--primary);color:var(--primary-ink);box-shadow:3px 4px 0 0 var(--ink)}.primary:hover:not(:disabled),.controls-split .primary:hover:not(:disabled){background:var(--primary-hover);transform:translate(-1px,-1px);box-shadow:4px 5px 0 0 var(--ink)}.panel{min-width:0;padding:22px 20px;border:3px solid var(--ink);border-radius:22px;background:var(--surface);box-shadow:5px 6px 0 0 var(--ink);position:relative}.panel:before{content:"✦";position:absolute;top:14px;right:18px;font-size:1.1rem;color:var(--crayon-yellow);opacity:.6;pointer-events:none}.panel h2,.panel h3{margin:0;color:var(--ink);font-family:Caveat,sans-serif;text-wrap:balance}.panel h2{font-size:1.6rem;letter-spacing:-.01em}.panel h3{margin-top:22px;font-size:1.2rem}.panel p,.empty{color:var(--muted)}.panel p{max-width:68ch;margin:6px 0 0;line-height:1.55;font-size:1rem}.panel-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,auto);gap:16px;align-items:start;margin-bottom:16px}.name-row{justify-content:flex-end}input,textarea,select{width:100%;border:3px solid var(--ink);border-radius:12px;background:var(--surface);color:var(--ink);font-family:Caveat,sans-serif;font-size:1.05rem}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}input,select{min-height:40px;padding:0 12px}textarea{min-height:88px;padding:10px 12px;resize:vertical}.table-wrap{width:100%;overflow-x:auto;border:3px solid var(--ink);border-radius:14px;background:var(--surface);box-shadow:3px 3px 0 0 var(--ink)}table{width:100%;min-width:600px;border-collapse:collapse}th,td{padding:10px 14px;border-bottom:2px solid var(--line);text-align:left;white-space:nowrap;font-family:Caveat,sans-serif;font-size:1rem}th{background:var(--surface-2);color:var(--muted);font-size:.9rem;font-weight:700;letter-spacing:.03em}tbody tr:hover{background:var(--surface-2)}tr:last-child td{border-bottom:0}.empty{margin:14px 0 0;font-size:1rem}.submission-form{display:grid;gap:14px}.submission-form label{display:grid;gap:6px;color:var(--muted);font-size:1rem;font-weight:700}.group-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}fieldset,fieldset.group-card{min-width:0;margin:0;padding:14px;border:3px solid var(--ink);border-radius:16px;display:grid;gap:8px;background:var(--surface-2);position:relative;box-shadow:3px 3px 0 0 var(--ink)}.group-remove{justify-self:end;padding:4px 10px;font-size:.85rem;border-radius:999px}.add-group{width:100%;border-style:dashed;background:transparent;box-shadow:none}.add-group:hover:not(:disabled){background:var(--surface-2)}legend{padding:0 6px;color:var(--muted);font-family:Caveat,sans-serif;font-size:1rem;font-weight:700}.word-count{font-size:.88rem;font-weight:700;color:var(--muted);text-align:right;margin-top:-4px}.word-count.warn{color:var(--crayon-orange)}.word-count.ok{color:var(--success)}.field-error{font-size:.88rem;color:var(--danger);margin:-4px 0 0}input.invalid,textarea.invalid{border-color:var(--danger)}.doodle-divider{display:block;width:100%;height:12px;overflow:visible;pointer-events:none}.admin-list{display:grid;gap:10px}.admin-item{padding:14px;border:3px solid var(--ink);border-radius:16px;background:var(--surface-2);display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:12px;box-shadow:2px 3px 0 0 var(--ink)}.admin-item p{margin:4px 0 8px}.admin-groups{display:grid;gap:8px;margin-top:4px}.admin-group-card{padding:10px 12px;border:2px solid var(--line);border-radius:10px;background:var(--surface);display:grid;gap:8px}.admin-group-card strong{display:block;margin-bottom:4px;font-size:.95rem}.admin-group-card p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.45}.admin-group-card label{display:grid;gap:4px;font-size:.82rem;color:var(--muted)}.admin-group-card input,.admin-group-card textarea{width:100%;font-size:.92rem}.admin-group-card textarea{min-height:58px;resize:vertical}.admin-key-field{display:grid;gap:6px;margin-bottom:16px;max-width:360px}.admin-key-field span{font-size:.9rem;color:var(--muted)}.leaderboard-row{animation:fadeSlideIn .22s ease-out both;animation-delay:calc(var(--row-index, 0) * 40ms)}.skeleton-row{height:36px;border-radius:10px;background:var(--surface-2);border:2px solid var(--line);animation:skeletonPulse 1.4s ease-in-out infinite}.skeleton-rows{display:grid;gap:10px;padding:12px}.paw-prints{display:flex;gap:14px;justify-content:center;opacity:.45;pointer-events:none}.mascot-bob{animation:mascotBounce 2.4s ease-in-out infinite}.mascot-bouncing{animation:mascotBounce .42s cubic-bezier(.22,1,.36,1)}@keyframes spin{to{transform:rotate(360deg)}}.btn-spinner{width:16px;height:16px;border:2.5px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;display:inline-block;vertical-align:middle}.pay-modal{position:fixed;inset:0;z-index:var(--z-modal);display:grid;place-items:center;padding:18px}.pay-modal-backdrop{position:absolute;inset:0;z-index:var(--z-modal-backdrop);border:0;border-radius:0;background:#140e06c7;cursor:zoom-out}.pay-modal-panel{position:relative;z-index:var(--z-modal);width:min(520px,96vw);max-height:min(90vh,760px);padding:16px;border:3px solid var(--ink);border-radius:20px;background:var(--surface);box-shadow:6px 8px 0 0 var(--ink);overflow:auto}.pay-modal-panel img{display:block;width:100%;height:auto;border-radius:8px}.pay-modal-close{position:absolute;top:12px;right:12px;width:36px;height:36px;padding:0;border-radius:50%;background:var(--crayon-yellow);border-color:var(--ink)}.rules-modal-panel{width:min(420px,94vw);padding:20px 18px 18px}.rules-modal-head{display:flex;align-items:center;gap:10px;margin:0 40px 14px 0}.rules-modal-head h2{margin:0;font-family:Caveat,sans-serif;font-size:1.4rem;font-weight:700}.rules-modal-body{margin:0 0 14px;color:var(--ink);font-size:1.05rem;line-height:1.55;white-space:pre-line}.rules-modal-example{margin-bottom:14px;padding:14px;border:3px solid var(--ink);border-radius:14px;background:var(--crayon-yellow);box-shadow:2px 3px 0 0 var(--ink)}.rules-modal-example-label{margin:0 0 6px;color:var(--muted);font-size:.85rem;font-weight:700;letter-spacing:.04em}.rules-modal-example strong{display:block;margin-bottom:4px;font-size:1rem}.rules-modal-example p{margin:0;color:var(--muted);font-size:.95rem;line-height:1.45}.rules-modal-example-note{margin-top:8px!important;color:var(--ink)!important;font-size:.9rem!important;font-weight:700}.rules-modal-close-btn{width:100%}.page-loading{min-height:60vh;display:grid;place-content:center;gap:16px;text-align:center;color:var(--muted);font-family:Caveat,sans-serif;font-size:1.3rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes shake{0%{transform:translate(0) scale(1.04)}18%{transform:translate(-7px) scale(1.04)}36%{transform:translate(7px) scale(1.04)}54%{transform:translate(-5px) scale(1.04)}72%{transform:translate(4px) scale(1.04)}88%{transform:translate(-2px) scale(1.04)}to{transform:translate(0) scale(1.04)}}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes solvedIn{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes celebrationIn{0%{opacity:0;transform:scale(.92) rotate(-2deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes skeletonPulse{0%,to{opacity:.6}50%{opacity:.25}}@keyframes mascotBounce{0%,to{transform:translateY(0)}40%{transform:translateY(-5px) rotate(2deg)}65%{transform:translateY(-2px)}}@keyframes drawLine{0%{stroke-dashoffset:120}to{stroke-dashoffset:0}}@keyframes starPop{0%{transform:scale(0) rotate(-20deg);opacity:0}70%{transform:scale(1.2) rotate(8deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}@keyframes tilePop{0%{opacity:0;transform:translateY(14px) scale(.82) rotate(-3deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}@keyframes selectedPulse{0%,to{transform:translate(-2px,-3px) scale(1.04)}50%{transform:translate(-2px,-4px) scale(1.065)}}@keyframes paperSway{0%,to{transform:rotate(-.4deg)}50%{transform:rotate(.4deg)}}@keyframes floatUp{0%{opacity:0;transform:translateY(18px) scale(.9)}60%{opacity:1;transform:translateY(-4px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes btnGlow{0%,to{box-shadow:3px 4px 0 0 var(--ink)}50%{box-shadow:3px 4px 0 0 var(--ink),0 0 0 4px var(--primary-soft)}}.panel,.game-workspace{animation:fadeSlideIn .2s ease-out both}@media(max-width:900px){.game-workspace{grid-template-columns:1fr;grid-template-areas:"stage"}.game-rail{position:static}}@media(max-width:760px){.hero,.panel-head,.admin-item{grid-template-columns:1fr}.hero-tools,.name-row{justify-content:flex-start}.board{grid-template-columns:repeat(2,minmax(0,1fr))}.group-grid{grid-template-columns:1fr}}@media(max-width:560px){.page{width:min(100%,calc(100% - 16px));margin-top:8px;gap:10px}.app-header{border-radius:16px;box-shadow:4px 4px 0 0 var(--ink)}.hero{min-height:0;padding:18px 16px 12px}.brand-lockup{gap:12px}.hero h1{font-size:2rem}.meta{font-size:.88rem}.topnav{padding:0 6px}.topnav button{flex:1 1 0;padding:0 6px;font-size:.92rem}.toolbar{gap:4px}.segmented,.theme-picker,.completion-actions{width:100%}.segmented button,.theme-picker button,.completion-actions button{flex:1}.controls-split{grid-template-columns:1fr}.controls-submit{min-height:56px}.tile{min-height:76px;font-size:1.05rem}.panel{padding:16px;box-shadow:4px 4px 0 0 var(--ink)}}.puzzle-seo{margin:0 0 6px;border:2px dashed rgba(18,52,95,.18);border-radius:12px;padding:6px 10px;background:var(--surface-2);font-size:.92rem;color:var(--muted)}.puzzle-seo>summary{cursor:pointer;font-weight:600;color:var(--ink);list-style:none;padding:2px 0}.puzzle-seo>summary::-webkit-details-marker{display:none}.puzzle-seo>summary:before{content:"▸";display:inline-block;margin-right:6px;transition:transform .12s ease}.puzzle-seo[open]>summary:before{transform:rotate(90deg)}.puzzle-seo__body{margin-top:8px;display:grid;gap:8px;line-height:1.55}.puzzle-seo__heading{margin:0;font-size:1.1rem;line-height:1.3;color:var(--ink)}.puzzle-seo__lead{margin:0}.puzzle-seo__groups{margin:0;padding-left:1.2em;display:grid;gap:4px}.puzzle-seo__cta{margin:0;font-size:.9rem;color:var(--muted)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}button,.tile,.panel,.toolbar,.status,.message,.table-wrap,fieldset.group-card,.admin-item,.celebration-card,.solved-item{background-image:radial-gradient(rgb(18 52 95 / 5%) .7px,transparent .8px),linear-gradient(105deg,transparent 48%,rgb(18 52 95 / 3%) 50%,transparent 52%);background-size:5px 5px,13px 13px}button:after,.tile:after{content:"";position:absolute;inset:3px;border:1px dashed rgb(18 52 95 / 16%);border-radius:inherit;pointer-events:none}.app-header{background-image:radial-gradient(rgb(255 249 238 / 8%) .8px,transparent .9px),linear-gradient(105deg,transparent 47%,rgb(255 255 255 / 4%) 50%,transparent 53%);background-size:6px 6px,17px 17px}.topnav button.active{background:var(--crayon-yellow);color:var(--ink)}.theme-picker button{border:2px dashed var(--line-strong);border-radius:12px;background:var(--surface);color:var(--ink)}.theme-picker button:nth-of-type(1){border-color:var(--crayon-yellow);background:#fff7d8}.theme-picker button:nth-of-type(2){border-color:var(--crayon-blue);background:#eaf6fc}.theme-picker button:nth-of-type(3){border-color:var(--crayon-green);background:#ecf8eb}.theme-picker button:nth-of-type(4){border-color:var(--crayon-purple);background:#f4ecfa}.theme-picker button.active{border-style:solid;transform:rotate(-1deg)}.game-rail .status:first-child{background-color:#fff0ea}.game-rail .status:last-child{background-color:#eaf6fc}.game-rail .status:last-child strong{min-width:30px;min-height:30px;display:grid;place-items:center;border:2px solid var(--ink);border-radius:50%;background:var(--crayon-blue);color:var(--ink);letter-spacing:0}.message{background-color:#fffaf0;border-style:dashed}.control-hint{background-color:var(--crayon-blue)!important}.control-shuffle{background-color:var(--crayon-green)!important}.control-clear{background-color:var(--surface)!important}.control-next,.control-share{background-color:var(--ink)!important;color:var(--surface)!important}.control-next:after,.control-share:after{border-color:#fff9ee40}.completion-next{background-color:var(--crayon-yellow)!important;color:var(--ink)!important}.panel-title-lockup{display:flex;align-items:center;gap:10px;margin-bottom:4px}.panel h2:before{content:"🐾";margin-right:8px;font-size:.82em}.panel:nth-of-type(4n+1){background-color:#fffaf0}.panel:nth-of-type(4n+2){background-color:#edf7fd}.panel:nth-of-type(4n+3){background-color:#eef8ed}input,textarea,select{box-shadow:inset 1px 1px #12345f1f;background-image:radial-gradient(rgb(18 52 95 / 5%) .7px,transparent .8px);background-size:5px 5px}fieldset.group-card:nth-of-type(4n+1){background-color:#fff7d8}fieldset.group-card:nth-of-type(4n+2){background-color:#edf8ec}fieldset.group-card:nth-of-type(4n+3){background-color:#eaf6fc}fieldset.group-card:nth-of-type(4n+4){background-color:#f4ecfa}.group-remove{background:#fff0ea;color:var(--ink)}.add-group{background:#edf8ec;border-color:var(--crayon-green)}.submission-form>.primary{min-height:52px}th{background:var(--crayon-blue);color:var(--ink)}tbody tr:nth-child(2n){background:#6db6e817}tbody tr:first-child td:first-child{color:#d69c00;font-size:1.2rem}.mascot-card{width:76px;height:76px;background:#fff7d8;transform:rotate(-1.5deg)}.solved-item .mascot-card{width:48px;height:48px}@media(max-width:560px){.mascot-card{width:60px;height:60px}.controls-grid button{min-height:54px}}@media(max-height:650px){.app-header{min-height:unset;padding:8px 16px}.app-header .logo-img{width:40px;height:40px}.app-header .game-title{font-size:1.6rem}.app-header .puzzle-meta{font-size:.7rem}.app-nav{padding:0 12px 6px}.theme-row{padding:4px 12px}.game-workspace{gap:10px}.game-rail{gap:6px;top:6px}.status{min-height:unset;padding:6px 10px}.status-stairs{min-height:unset}.diff-stairs{height:24px}.game-stage{gap:8px}.board{gap:6px}.tile{min-height:60px;font-size:.95rem;padding:6px 4px;border-radius:12px}.board-hint{padding:6px 12px;min-height:unset}.controls-split button,.controls-grid button{min-height:40px;font-size:.85rem}}@media(max-height:520px){.app-header{padding:4px 12px}.app-header .logo-img{width:32px;height:32px}.app-header .game-title{font-size:1.3rem}.app-nav{padding:0 10px 4px}.theme-row{display:none}.status{padding:4px 8px;font-size:.8rem}.game-workspace{gap:6px;grid-template-columns:180px minmax(0,1fr)}.board{gap:4px}.tile{min-height:48px;font-size:.85rem;padding:4px 3px;border-radius:10px;border-width:2px}.controls-split button,.controls-grid button{min-height:34px;font-size:.8rem;padding:0 8px}}.ad-slot{display:block;width:100%;margin:8px 0;background:transparent;border:0;contain:layout paint}.ad-slot--placeholder{display:block;background:transparent}.ad-slot__label{display:none}.ad-slot--live ins{display:block}.topnav-streak{display:inline-flex;align-items:center;gap:4px;margin-left:auto;padding:4px 10px;border-radius:999px;background:#ffffff14;color:var(--header-ink);font-weight:700;font-size:.95rem;border:2px solid rgba(255 255 255 / .18)}.topnav-streak:before{content:"🔥"}.completion-actions .control-archive,.completion-actions .control-tomorrow{border-color:var(--ink);background:var(--surface-2);color:var(--ink)}.completion-actions .control-archive:hover,.completion-actions .control-tomorrow:hover{background:var(--crayon-yellow)}.puzzle-back{display:flex;justify-content:flex-start;margin-top:8px}.ghost-back{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:2px solid var(--ink);border-radius:12px;background:var(--surface);color:var(--ink);font-weight:600;box-shadow:2px 2px 0 0 var(--ink);cursor:pointer}.ghost-back:hover{background:var(--primary-soft)}.archive{gap:14px}.archive-head{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:12px}.archive-head h2{margin:0 0 4px;font-size:1.5rem}.archive-head p{margin:0;color:var(--muted);font-size:1rem}.archive-streak{display:inline-flex;gap:14px;align-items:stretch}.archive-streak>div{display:flex;flex-direction:column;align-items:center;padding:8px 14px;border:2px solid var(--ink);border-radius:14px;background:var(--surface);box-shadow:2px 3px 0 0 var(--ink);min-width:90px}.archive-streak__value{font-size:1.6rem;font-weight:800;line-height:1}.archive-streak__label{font-size:.85rem;color:var(--muted);margin-top:2px}.archive-filters{display:flex;flex-wrap:wrap;gap:6px;padding:6px;border:2px solid var(--ink);border-radius:14px;background:var(--surface);box-shadow:2px 2px 0 0 var(--ink);align-self:flex-start}.archive-filters button{min-height:32px;padding:0 12px;border:0;background:transparent;box-shadow:none;font-weight:700;color:var(--muted);border-radius:8px;cursor:pointer}.archive-filters button:hover{color:var(--ink)}.archive-filters button.active{background:var(--crayon-yellow);color:var(--ink);box-shadow:2px 2px 0 0 var(--ink)}.archive-table-wrap{overflow-x:auto;border:2px solid var(--ink);border-radius:14px;background:var(--surface);box-shadow:3px 4px 0 0 var(--ink)}.archive-table{width:100%;border-collapse:collapse;font-size:.95rem;min-width:520px}.archive-table th,.archive-table td{text-align:left;padding:10px 12px;border-bottom:1px dashed rgba(18,52,95,.18);white-space:nowrap}.archive-table th[scope=col]{font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--surface-2)}.archive-table tbody tr:hover{background:var(--primary-soft)}.archive-row th time{font-weight:700}.archive-today{color:var(--muted);font-size:.85em}.archive-status{display:inline-block;padding:2px 10px;border-radius:999px;font-weight:700;font-size:.85rem;border:2px solid var(--ink)}.archive-status--perfect{background:var(--crayon-yellow)}.archive-status--completed{background:var(--crayon-green);color:#fff;border-color:var(--ink)}.archive-status--none{background:var(--surface-3);color:var(--muted)}.archive-open{min-height:32px;padding:0 12px;border:2px solid var(--ink);border-radius:10px;background:var(--primary);font-weight:700;cursor:pointer;box-shadow:2px 2px 0 0 var(--ink)}.archive-open:hover{background:var(--primary-hover)}.archive-empty{text-align:center;padding:24px;color:var(--muted)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(0 0 0 0)}.site-footer{margin-top:12px;padding:18px 20px 22px;border:3px solid var(--ink);border-radius:18px;background:var(--surface);box-shadow:3px 4px 0 0 var(--ink);color:var(--ink)}.site-footer__cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px}.site-footer h4{margin:0 0 8px;font-size:1rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}.site-footer a{color:var(--ink);text-decoration:none;font-weight:600;border-bottom:2px solid transparent;padding-bottom:1px}.site-footer a:hover{border-bottom-color:var(--ink)}.site-footer__recent time{font-weight:700}.site-footer__empty{color:var(--muted);margin:0;font-size:.9rem}.site-footer__copy{margin:14px 0 0;font-size:.85rem;color:var(--muted);text-align:center}@media(max-width:540px){.archive-streak{gap:8px}.archive-streak>div{min-width:76px;padding:6px 8px}.topnav-streak{padding:2px 8px;font-size:.85rem}.archive-head h2{font-size:1.3rem}}.sticky-ad-bar{position:fixed;left:0;right:0;bottom:0;z-index:25;background:var(--surface);border-top:2px solid var(--line);box-shadow:0 -4px 16px var(--shadow-tint);font-family:Caveat,PingFang SC,system-ui,sans-serif;color:var(--ink);transition:transform .28s cubic-bezier(.22,.61,.36,1);transform:translateY(0);will-change:transform;padding-bottom:env(safe-area-inset-bottom,0px)}.sticky-ad-bar.is-collapsed{transform:translateY(calc(100% - 40px))}.sticky-ad-bar__inner{position:relative;max-width:1200px;margin:0 auto;padding:8px 56px 8px 12px;min-height:72px;display:flex;align-items:center;justify-content:center;gap:8px}.sticky-ad-bar__slot{flex:1 1 auto;min-width:0;display:flex;justify-content:center}.sticky-ad-bar__adslot{margin:0!important;width:100%;max-width:970px}.sticky-ad-bar__toggle{position:absolute;top:50%;right:8px;transform:translateY(-50%);width:40px;height:40px;border:2px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:10px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:background .15s ease,border-color .15s ease,color .15s ease;-webkit-tap-highlight-color:transparent}.sticky-ad-bar__toggle:hover{background:var(--primary-soft);border-color:var(--line-strong)}.sticky-ad-bar__toggle:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.sticky-ad-bar__chevron{width:16px;height:16px;display:block;transition:transform .28s cubic-bezier(.22,.61,.36,1)}.sticky-ad-bar.is-collapsed .sticky-ad-bar__chevron{transform:rotate(180deg)}.sticky-ad-bar-open .page,.sticky-ad-bar-open .site-footer{padding-bottom:96px}@media(max-width:768px){.sticky-ad-bar__inner{padding:6px 48px 6px 8px;min-height:60px}.sticky-ad-bar__toggle{width:36px;height:36px;right:6px}}@media(prefers-reduced-motion:reduce){.sticky-ad-bar,.sticky-ad-bar__chevron{transition:none}}
