@font-face{font-family:AlibabaPuHuiTi;src:url(/fonts/AlibabaPuHuiTi-3-65-Medium.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:AlibabaPuHuiTi;src:url(/fonts/AlibabaPuHuiTi-3-85-Bold.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:AlibabaPuHuiTi;src:url(/fonts/AlibabaPuHuiTi-3-105-Heavy.woff2) format("woff2");font-weight:800;font-display:swap}@font-face{font-family:AlibabaPuHuiTi;src:url(/fonts/AlibabaPuHuiTi-3-115-Black.woff2) format("woff2");font-weight:900;font-display:swap}@font-face{font-family:MaokenAssortedSans;src:url(/fonts/MaokenAssortedSans-Lite.ttf) format("truetype");font-display:swap}:root{color-scheme:light;font-family:AlibabaPuHuiTi,MaokenAssortedSans,HarmonyOS Sans SC,MiSans,PingFang SC,Microsoft YaHei UI,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--bg-a: #657ee6;--bg-b: #7d4eb0;--panel: rgba(255, 255, 255, .92);--ink: #243047;--muted: #66718a;--line: rgba(255, 255, 255, .45);--orange: #ff7d18;--orange-dark: #ed6400;--blue: #2e8cff;--danger: #ff6c23;--piece-unit: 1.05rem;--board-unit: 3.05rem}*{box-sizing:border-box}body{min-height:100vh;margin:0;background:radial-gradient(circle at 26% 18%,rgba(255,255,255,.13),transparent 22rem),linear-gradient(135deg,var(--bg-a),var(--bg-b));color:#fff}button,select{font:inherit;-webkit-tap-highlight-color:transparent}.demo-shell{display:grid;gap:.8rem;width:min(1080px,calc(100vw - 2rem));min-height:100vh;margin:0 auto;padding:1.1rem 0 2rem}.app-header{display:grid;gap:.25rem;justify-items:center;text-align:center}.app-header h1{margin:0;font-size:clamp(2.55rem,7.4vw,3.75rem);font-weight:900;line-height:1.08;letter-spacing:0}.app-header p,.app-header strong{margin:0;font-size:1.35rem;line-height:1.55}.app-header p{color:#ffffffdb}.app-header strong{color:#fffffff5;font-weight:700}.top-controls,.attack-tip,.option-row,.hint-card,.status-bar{width:min(860px,100%);margin:0 auto}.top-controls{display:grid;grid-template-columns:minmax(13rem,1.35fr) repeat(4,auto);gap:.65rem;align-items:center}.level-select,.control-button{min-height:3.15rem;border:0;border-radius:.5rem;font-size:1.18rem;font-weight:700;box-shadow:0 .7rem 1.4rem #20174a2e}.level-select{width:100%;padding:0 1rem;background:#fff;color:var(--ink);font-weight:800}.control-button{padding:0 1rem;background:var(--blue);color:#fff;cursor:pointer}.control-button.accent,.control-button.danger{background:linear-gradient(180deg,var(--orange),var(--orange-dark))}.control-button:active{transform:translateY(1px)}.attack-tip,.hint-card{border-radius:.65rem;background:var(--panel);color:var(--ink);box-shadow:0 .75rem 1.7rem #20174a29}.attack-tip{min-height:3rem;padding:.75rem 1.05rem;font-size:1.18rem;font-weight:500;line-height:1.55;text-align:center}.attack-tip strong{font-weight:500}.option-row{display:none;flex-wrap:wrap;justify-content:center;gap:.8rem;color:#fff;font-size:.82rem;font-weight:800}.option-row label{display:inline-flex;gap:.25rem;align-items:center}.option-row input{accent-color:#ff9d2e}.hint-card{display:none;gap:.45rem;justify-items:center;min-height:7.2rem;padding:1rem;text-align:center}.hint-card strong{font-size:.95rem}.hint-card p,.hint-card span{margin:0;color:var(--muted);font-size:.86rem}.puzzle-stage{position:relative;display:grid;grid-template-rows:auto minmax(20rem,auto) auto auto;gap:1.15rem;justify-items:center;min-height:34rem;overflow:visible;border:0;background:transparent}.puzzle-stage.drop-invalid{animation:invalid-drop .24s ease}.puzzle-stage.level-enter .board-zone,.puzzle-stage.level-enter .tray-zone{animation:level-enter .22s ease-out}@keyframes invalid-drop{45%{filter:drop-shadow(0 0 .8rem rgba(255,112,64,.85))}}@keyframes level-enter{0%{opacity:0;transform:translateY(.35rem)}to{opacity:1;transform:translateY(0)}}.placement-export{display:grid;gap:.55rem;width:min(46rem,100%);padding:.85rem;border-radius:.65rem;background:#ffffffeb;color:var(--ink);box-shadow:0 .75rem 1.7rem #20174a29}.placement-export-header{display:flex;justify-content:space-between;gap:1rem;align-items:center}.placement-export-header strong{font-size:.92rem}.placement-export-header span{color:var(--muted);font-size:.8rem;font-weight:800}.placement-export pre,.placement-export textarea{width:100%;margin:0;border:1px solid rgba(36,48,71,.12);border-radius:.45rem;background:#f7f8fb;color:#243047;font:.78rem/1.45 Consolas,SFMono-Regular,monospace}.placement-export pre{max-height:8.5rem;overflow:auto;padding:.65rem;white-space:pre-wrap}.placement-export textarea{min-height:7rem;padding:.65rem;resize:vertical}.level-reference{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;width:min(28rem,100%)}.level-reference figure{display:grid;gap:.35rem;justify-items:center;margin:0}.level-reference figcaption{color:#ffffffe6;font-size:.78rem;font-weight:800}.reference-crop{display:block;width:100%;aspect-ratio:1;border:1px solid rgba(255,255,255,.55);border-radius:.5rem;background-image:var(--reference-image);background-position:var(--reference-position);background-repeat:no-repeat;background-size:200% 200%;box-shadow:0 .65rem 1.25rem #20174a33}.reference-crop.answer{aspect-ratio:1.8;background-size:400% 100%}.board-zone{display:grid;min-height:19rem;place-items:center;padding-top:.3rem}.board-face{display:grid;place-items:center;padding:.6rem;border-radius:.55rem;background:#ffffff14;box-shadow:0 1.35rem 2.4rem #20174a47}.board-face.heart{width:24rem;height:21rem;background:transparent;box-shadow:none}.target-board{position:relative;display:grid;grid-template-columns:repeat(var(--board-cols),var(--board-unit));grid-template-rows:repeat(var(--board-rows),var(--board-unit));gap:0;padding:.5rem;background:transparent}.target-board.heart{--board-unit: 2.5rem;transform:rotate(-45deg);transform-origin:center}.board-cell{position:relative;border:1px solid rgba(255,255,255,.9);background:#dce2e8;box-shadow:inset 0 .18rem .28rem #ffffffd1,inset 0 -.2rem .3rem #4e596c29}.board-cell.void{opacity:0}.board-cell.cut-top-left{clip-path:polygon(100% 0,100% 100%,0 100%)}.board-cell.cut-top-right{clip-path:polygon(0 0,100% 100%,0 100%)}.board-cell.cut-bottom-right{clip-path:polygon(0 0,100% 0,0 100%)}.board-bump{position:absolute;left:calc(.5rem + var(--bump-x) * var(--board-unit));top:calc(.5rem + var(--bump-y) * var(--board-unit));z-index:3;width:.38rem;height:.38rem;border-radius:999px;background:radial-gradient(circle at 30% 25%,#fff,#cdd5dd 72%);box-shadow:0 .1rem .18rem #2a1f5a40;transform:translate(-50%,-50%);pointer-events:none}.debug-snap-point{position:absolute;left:calc(.5rem + var(--debug-x) * var(--board-unit));top:calc(.5rem + var(--debug-y) * var(--board-unit));z-index:7;display:none;width:.3rem;height:.3rem;border:1px solid rgba(255,124,70,.9);border-radius:999px;background:#fff;transform:translate(-50%,-50%);pointer-events:none}.debug-mode .debug-snap-point{display:block}.calibration-dot{position:absolute;left:calc(.5rem + var(--cal-x) * var(--board-unit));top:calc(.5rem + var(--cal-y) * var(--board-unit));z-index:18;display:none;width:.42rem;height:.42rem;border:2px solid #fff;border-radius:999px;transform:translate(-50%,-50%);pointer-events:none}.calibration-dot.overlap{background:#ff2f2f;box-shadow:0 0 0 .18rem #ff2f2f47}.calibration-dot.out{background:#9b1cff;box-shadow:0 0 0 .18rem #9b1cff47}.calibration-line{position:absolute;left:calc(.5rem + var(--cal-x) * var(--board-unit));top:calc(.5rem + var(--cal-y) * var(--board-unit));z-index:17;display:none;width:calc(var(--cal-len) * var(--board-unit));height:0;border-top:3px solid rgba(255,203,46,.95);transform:rotate(var(--cal-angle));transform-origin:0 0;pointer-events:none;filter:drop-shadow(0 0 .18rem rgba(0,0,0,.3))}.debug-mode .calibration-dot,.debug-mode .calibration-line{display:block}.debug-piece-anchor{position:absolute;left:var(--anchor-x);top:var(--anchor-y);z-index:12;display:block;width:.46rem;height:.46rem;border:2px solid #fff;border-radius:999px;background:#ff1f1f;box-shadow:0 0 0 2px #ff1f1f3d;opacity:0;transform:translate(-50%,-50%);pointer-events:none}.debug-mode .debug-piece-anchor{opacity:1}.placed-piece{position:absolute;left:calc(.5rem + var(--place-x) * var(--board-unit));top:calc(.5rem + var(--place-y) * var(--board-unit));z-index:8;transform-origin:0 0;touch-action:none}.drop-preview{position:absolute;left:calc(.5rem + var(--place-x) * var(--board-unit));top:calc(.5rem + var(--place-y) * var(--board-unit));z-index:9;opacity:.82;pointer-events:none}.drop-preview .puzzle-piece{--piece-unit: var(--board-unit);width:calc(var(--piece-width) * var(--piece-unit));height:calc(var(--piece-height) * var(--piece-unit));min-width:0;min-height:auto;padding:0;border:0;background:transparent;box-shadow:none;outline:0}.drop-preview .piece-shape,.drop-preview .piece-svg{width:calc(var(--piece-width) * var(--piece-unit));height:calc(var(--piece-height) * var(--piece-unit))}.drop-preview .piece-svg{filter:none}.drop-preview .piece-outline,.drop-preview .piece-highlight,.drop-preview .piece-depth{fill:#ffffff1f;stroke-width:2.2;stroke-linejoin:round;vector-effect:non-scaling-stroke;transform:none}.drop-preview.is-valid .piece-outline,.drop-preview.is-valid .piece-highlight,.drop-preview.is-valid .piece-depth{stroke:#14d27cf2}.drop-preview.is-invalid .piece-outline,.drop-preview.is-invalid .piece-highlight,.drop-preview.is-invalid .piece-depth{stroke:#ff4646f2}.drop-preview .piece-grooves line.crease-shadow,.drop-preview .piece-grooves line.crease,.drop-preview .piece-grooves line.crease-light{stroke-width:1.6}.drop-preview.is-valid .piece-grooves line{stroke:#14d27cb8}.drop-preview.is-invalid .piece-grooves line{stroke:#ff4646b8}.placed-piece.fixed-placement,.placed-piece.fixed-placement .puzzle-piece{cursor:default}.placed-piece .puzzle-piece:active,.placed-piece .puzzle-piece:focus,.placed-piece .puzzle-piece:focus-visible,.placed-piece.fixed-placement .puzzle-piece:active,.placed-piece.fixed-placement .puzzle-piece:focus,.placed-piece.fixed-placement .puzzle-piece:focus-visible{background:transparent;box-shadow:none;filter:none;outline:0}@keyframes piece-snap-in{0%{opacity:.72;transform:translateY(-.12rem) scale(.985)}}.piece-tray{display:grid;grid-template-columns:repeat(var(--tray-cols, 5),5.25rem);justify-self:center;justify-content:center;align-items:center;gap:.65rem;width:min(100%,calc(var(--tray-cols, 5) * 5.25rem + (var(--tray-cols, 5) - 1) * .65rem));padding:0 .5rem .25rem}.tray-zone{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.75rem;align-items:center;width:min(940px,100%)}.tray-tool-button{min-width:4.4rem;min-height:2.55rem;border:0;border-radius:.55rem;background:linear-gradient(180deg,var(--orange),var(--orange-dark));color:#fff;cursor:pointer;font-size:1.18rem;font-weight:700;box-shadow:0 .7rem 1.4rem #20174a2e}.tray-piece{display:grid;width:5.25rem;height:5.25rem;place-items:center}.tray-piece.heart .puzzle-piece{transform:rotate(-45deg);transform-origin:center}.puzzle-piece{position:relative;display:grid;place-items:center;min-width:3rem;min-height:3rem;border:1px solid rgba(255,255,255,.85);border-radius:.5rem;background:#ffffff2e;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;box-shadow:inset 0 1px #ffffff73,0 .5rem 1rem #20174a1f}.tray-piece .puzzle-piece{--piece-unit: .98rem;width:4.9rem;height:4.9rem;min-width:0;min-height:0;padding:0;border:0;background:transparent;box-shadow:none}.puzzle-piece:hover,.puzzle-piece.selected{background:#ffffff47;outline:2px solid rgba(255,255,255,.65)}.tray-piece .puzzle-piece:hover,.tray-piece .puzzle-piece.selected{background:transparent;outline:0;box-shadow:none}.puzzle-piece.fixed,.placed-piece .puzzle-piece,.drag-ghost .puzzle-piece{--piece-unit: var(--board-unit);width:calc(var(--piece-width) * var(--piece-unit));height:calc(var(--piece-height) * var(--piece-unit));min-width:0;min-height:auto;border:0;background:transparent;box-shadow:none;outline:0;padding:0}.piece-shape{position:relative;display:block;width:calc(var(--piece-width) * var(--piece-unit) + .55rem);height:calc(var(--piece-height) * var(--piece-unit) + .55rem)}.placed-piece .piece-shape,.placed-piece .piece-svg,.drag-ghost .piece-shape,.drag-ghost .piece-svg{width:calc(var(--piece-width) * var(--piece-unit));height:calc(var(--piece-height) * var(--piece-unit))}.piece-svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 .35rem .38rem rgba(32,23,74,.26))}.piece-outline{fill:var(--piece-color);stroke:none}.placed-piece .piece-svg{filter:none;shape-rendering:geometricPrecision}.placed-piece .piece-outline{stroke:var(--piece-color);stroke-width:.7;stroke-linejoin:round;vector-effect:non-scaling-stroke}.placed-piece .piece-highlight{stroke:none;transform:none}.placed-piece .piece-depth{display:none}.piece-highlight{fill:#ffffff2e;stroke:#ffffff38;stroke-width:1;transform:translate(-.8px,-1px);vector-effect:non-scaling-stroke}.piece-depth{fill:transparent;stroke:#00000024;stroke-width:5;transform:translate(1.2px,1.4px);vector-effect:non-scaling-stroke}.piece-border{fill:none;stroke:transparent}.piece-grooves line{stroke-linecap:butt;vector-effect:non-scaling-stroke}.piece-grooves line.crease-shadow{stroke:#00000038;stroke-width:2.6}.piece-grooves line.crease{stroke:#00000014;stroke-width:1.25}.piece-grooves line.crease-light{stroke:#ffffff61;stroke-width:1}.debug-mode .placed-piece.crease-mismatch .piece-grooves line.crease-shadow{stroke:#ff00008c;stroke-width:4}.debug-mode .placed-piece.crease-mismatch .piece-grooves line.crease{stroke:#ff2525;stroke-width:2.2}.debug-mode .placed-piece.crease-mismatch .piece-grooves line.crease-light{stroke:#ffffffa6}.debug-mode .placed-piece.has-overlap .piece-svg{filter:drop-shadow(0 0 .45rem rgba(255,47,47,.9))}.debug-mode .placed-piece.has-out .piece-svg{filter:drop-shadow(0 0 .45rem rgba(155,28,255,.9))}.piece-label,.placed-piece .piece-label,.drag-ghost .piece-label{display:none}.drag-ghost{position:fixed;left:0;top:0;z-index:999;pointer-events:none;opacity:.95;transform-origin:top left;filter:drop-shadow(0 1rem 1.25rem rgba(32,23,74,.25))}.drag-ghost.heart .puzzle-piece{--board-unit: 2.5rem;transform:rotate(-45deg);transform-origin:top left}.is-dragging-piece,.is-dragging-piece *{cursor:grabbing;-webkit-user-select:none;user-select:none}.status-bar{display:none;flex-wrap:wrap;justify-content:center;gap:.8rem;align-items:center;color:#ffffffe6;font-size:.86rem}.dots{display:none;gap:.4rem;align-items:center}.dot{width:.62rem;height:.62rem;border:1px solid rgba(255,255,255,.7);border-radius:999px;background:#ffffff38;cursor:pointer}.dot.active{width:1.45rem;background:#fff}.victory-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:1.25rem;background:radial-gradient(circle at center,#ffffff38,#0000009e)}.victory-confetti{position:absolute;left:var(--confetti-left);top:-10%;font-size:var(--confetti-size);animation:confetti-fall var(--confetti-duration) linear var(--confetti-delay) infinite;pointer-events:none}.victory-card{position:relative;width:min(92vw,32.5rem);overflow:hidden;padding:2.1rem 1.5rem 1.75rem;border:3px solid rgba(255,193,7,.85);border-radius:1.75rem;background:linear-gradient(145deg,#fffffff5,#fff6dcf0);color:#2d3436;text-align:center;animation:victory-pop .65s ease-out,glow-pulse 1.6s ease-in-out infinite}.victory-shine{position:absolute;top:-2.5rem;left:-5rem;width:5rem;height:15rem;background:linear-gradient(90deg,transparent,rgba(255,255,255,.9),transparent);animation:shine-move 1.8s ease-in-out infinite}.victory-trophy{margin-bottom:.85rem;font-size:4rem;line-height:1}.victory-card h2{margin:0 0 .6rem;color:#2d3436;font-size:clamp(1.75rem,8vw,2.75rem);font-weight:900;letter-spacing:0}.victory-card strong{display:block;margin-bottom:1.1rem;color:#6c4f00;font-size:clamp(1.05rem,4.4vw,1.35rem);font-weight:800}.victory-card p{margin:0 0 1.4rem;color:#555;font-size:.95rem;line-height:1.7}.victory-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.victory-button{min-height:2.9rem;padding:.75rem 1.35rem;border:0;border-radius:999px;color:#fff;font-size:1rem;font-weight:800;box-shadow:0 .5rem 1.1rem #00000038;cursor:pointer}.victory-button.primary{background:linear-gradient(135deg,#667eea,#764ba2)}.victory-button.next{background:linear-gradient(135deg,#00c853,#00bfa5)}.victory-button:disabled{cursor:not-allowed;background:linear-gradient(135deg,#aaa,#888);opacity:.75}.rules-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9998;display:flex;align-items:center;justify-content:center;overflow:auto;padding:18px;background:#00000094}.rules-card{position:relative;width:min(92vw,560px);overflow:hidden;padding:26px 22px;border-radius:24px;background:#fffffff7;color:#333;box-shadow:0 20px 50px #00000059}.rules-card h2{margin:0 0 12px;color:#333;text-align:center;font-size:clamp(24px,7vw,36px);font-weight:900;letter-spacing:0}.rules-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 12px}.rules-steps span{display:grid;gap:3px;justify-items:center;min-width:0;padding:8px 4px;border:1px solid rgba(102,126,234,.16);border-radius:14px;background:#ffffffb8;color:#5d6678;font-size:13px;font-weight:700;line-height:1.2}.rules-steps b{display:grid;width:30px;height:30px;place-items:center;border-radius:999px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:14px;font-weight:900}.rules-list{padding:16px 18px;border-radius:18px;background:linear-gradient(135deg,#f7f7ff,#fff7e8);color:#333;font-size:15px;font-weight:500;line-height:1.8;text-align:left}.rules-list p{margin:0 0 10px}.rules-list p:last-child{margin-bottom:0}.rules-actions{display:flex;justify-content:center;margin-top:20px}.rules-button{width:100%;min-height:auto;padding:13px 20px;border:0;border-radius:999px;color:#fff;font-size:16px;font-weight:700;box-shadow:0 8px 18px #00000038;cursor:pointer}.rules-button.primary{background:linear-gradient(180deg,var(--orange),var(--orange-dark))}@keyframes victory-pop{0%{opacity:0;transform:scale(.5) translateY(1.9rem)}60%{opacity:1;transform:scale(1.08) translateY(-.4rem)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes confetti-fall{0%{opacity:0;transform:translateY(-20vh) rotate(0) scale(.8)}10%{opacity:1}to{opacity:0;transform:translateY(120vh) rotate(720deg) scale(1.2)}}@keyframes glow-pulse{0%,to{box-shadow:0 0 1.5rem #ffffffa6,0 0 3.75rem #ffc10766}50%{box-shadow:0 0 2.25rem #fffffff2,0 0 5.6rem #ffc107bf}}@keyframes shine-move{0%{transform:translate(-120%) rotate(18deg)}to{transform:translate(220%) rotate(18deg)}}.showcase-page,.showcase-summary,.showcase-grid,.showcase-card,.showcase-piece,.showcase-copy{display:none}@media (max-width: 760px){:root{--board-unit: 2.25rem;--piece-unit: .9rem}.target-board.heart,.drag-ghost.heart .puzzle-piece{--board-unit: 1.875rem}.demo-shell{width:min(100vw - 1rem,40rem);padding-top:.8rem}.top-controls{grid-template-columns:1fr 1fr}.level-select{grid-column:1 / -1}.control-button{padding:0 .55rem;font-size:1.08rem;line-height:1.25}.tray-zone{grid-template-columns:1fr;gap:.45rem;margin-top:-.35rem}.tray-tool-button{justify-self:center;min-height:2.75rem;min-width:5rem;padding:0 .85rem;font-size:1.18rem}.board-face.heart{width:18rem;height:15.8rem}.board-zone{min-height:16.4rem;padding-top:0}.piece-tray{grid-template-columns:repeat(var(--tray-cols, 5),4.35rem);gap:.35rem;width:min(100%,calc(var(--tray-cols, 5) * 4.35rem + (var(--tray-cols, 5) - 1) * .35rem));padding-bottom:0}.tray-piece{width:4.35rem;height:4.35rem}.tray-piece .puzzle-piece{--piece-unit: .78rem;width:3.9rem;height:3.9rem}.puzzle-stage{grid-template-rows:auto minmax(16.4rem,auto) auto auto;gap:.72rem;min-height:27rem}}
