.btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--hachi);font-size:14px;padding:9px 18px;border:2px solid var(--ink);border-radius:999px;background:#fff;color:var(--ink);box-shadow:3px 3px 0 var(--ink);text-decoration:none;cursor:pointer;transition:transform .15s,box-shadow .15s}.btn:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink)}@media(prefers-reduced-motion:reduce){.btn:hover{transform:none;box-shadow:3px 3px 0 var(--ink)}}.btn.primary{background:var(--accent);color:var(--paper-2)}.cx-stack{display:flex;flex-direction:column;gap:10px}.cx-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.cx-block{background:var(--paper-2);border:1.8px solid var(--ink);border-radius:14px;padding:22px 24px;margin-bottom:16px;position:relative;box-shadow:3px 4px #3a2a221f}.cx-block:before{content:"";position:absolute;inset:6px;border:1px dashed rgba(58,42,34,.25);border-radius:10px;pointer-events:none}.cx-label{position:absolute;top:-10px;left:20px;font-family:var(--hachi);font-size:12px;color:var(--ink);background:#fff;border:1.5px solid var(--ink);border-radius:999px;padding:2px 10px;transform:rotate(-2deg)}.gc-flip{width:96px;height:130px;perspective:900px;cursor:pointer;display:inline-block;margin:4px;vertical-align:top}.gc-flip-inner{position:relative;width:100%;height:100%;transition:transform .55s cubic-bezier(.6,-.2,.4,1.4);transform-style:preserve-3d}.gc-flip.flipped .gc-flip-inner{transform:rotateY(180deg)}.gc-flip-face{position:absolute;inset:0;backface-visibility:hidden;border:2px solid var(--ink);border-radius:12px;box-shadow:3px 3px 0 var(--ink);display:grid;place-items:center;font-family:var(--yomogi);font-size:34px;color:var(--ink);background:#fff}.gc-flip-back{background:repeating-linear-gradient(45deg,var(--purple) 0 10px,var(--purple-2) 10px 20px);color:var(--paper-2);font-family:var(--hachi);font-size:28px}.gc-flip-back:before{content:"";position:absolute;inset:8px;border:1.5px dashed rgba(255,255,255,.5);border-radius:8px}.gc-flip-front{transform:rotateY(180deg);background:var(--paper-2)}.gc-flip-front.matched{background:var(--green);border-color:var(--ink)}.gc-flip.hint .gc-flip-back{animation:hint 1.2s ease-in-out infinite}.gc-quest{background:#fff;border:2px solid var(--ink);border-radius:12px;padding:14px 18px;box-shadow:3px 3px 0 var(--ink);font-family:var(--klee);max-width:320px;position:relative}.gc-quest .pin{position:absolute;top:-8px;left:20px;width:18px;height:18px;border-radius:50%;background:var(--accent);border:2px solid var(--ink);box-shadow:2px 2px #3a2a2233}.gc-quest .q{font-family:var(--hachi);font-size:11px;color:var(--accent)}.gc-quest .t{font-family:var(--yomogi);font-size:20px;margin:2px 0 6px;color:var(--ink)}.gc-quest ul{padding:0;margin:0 0 8px;list-style:none;font-size:13px}.gc-quest li{padding:2px 0 2px 22px;position:relative;color:var(--ink-2)}.gc-quest li:before{content:"◻";position:absolute;left:0;top:1px;color:var(--line);font-family:var(--hachi)}.gc-quest li.done{color:var(--muted);text-decoration:line-through}.gc-quest li.done:before{content:"✓";color:var(--leaf)}.gc-dialog{position:relative;background:#fff;border:2px solid var(--ink);border-radius:14px;padding:16px 20px 18px;font-family:var(--klee);font-size:14px;line-height:1.85;box-shadow:3px 4px 0 var(--ink);max-width:420px}.gc-dialog .who{font-family:var(--hachi);font-size:12px;color:var(--accent);margin-bottom:4px}.gc-dialog:after{content:"";position:absolute;bottom:-12px;left:32px;width:0;height:0;border:10px solid transparent;border-top-color:#fff;border-right:0;filter:drop-shadow(0 2px 0 var(--ink))}.gc-dialog .next{position:absolute;right:14px;bottom:10px;font-family:var(--hachi);color:var(--accent);animation:bob 1s ease-in-out infinite}.gc-pop{display:inline-block;font-family:var(--yomogi);font-size:34px;color:var(--accent);background:var(--yellow);border:2px solid var(--ink);border-radius:16px;padding:4px 14px;box-shadow:3px 3px 0 var(--ink);transform:rotate(-4deg);text-shadow:1px 1px 0 #fff}@keyframes hint{0%,to{transform:rotate(0)}50%{transform:rotate(6deg)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}
