:root{color:#203246;background:#f3f6f7;font-family:Microsoft YaHei,PingFang SC,system-ui,sans-serif;font-synthesis:none;--ink: #203246;--muted: #718499;--canvas: #f3f6f7;--surface: #ffffff;--navy: #17364a;--mint: #70c5b5;--teal: #168b7d;--purple: #a08be4;--orange: #efae63;--line: #d6e0e4;--radius: 22px}*{box-sizing:border-box}html{min-width:320px;background:var(--canvas)}body{margin:0;min-width:320px;min-height:100vh}a{color:inherit}button,input{font:inherit}.app-page{min-height:100vh;background:var(--canvas)}.site-header{min-height:88px;padding:0 clamp(24px,5.5vw,80px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:var(--surface)}.brand{display:inline-flex;align-items:center;gap:14px;font-size:22px;font-weight:800;text-decoration:none}.brand-mark{display:grid;gap:4px}.brand-mark i{width:8px;height:8px;border-radius:50%;background:var(--mint)}.brand-mark i:nth-child(2){margin-left:12px}.top-nav{display:flex;gap:42px;color:var(--muted);font-weight:700}.top-nav .active{color:var(--teal)}.header-note,.secondary-button{justify-self:end;border:1px solid var(--line);border-radius:12px;padding:14px 28px;background:#fff;font-weight:700;text-decoration:none}.home-content,.shell-content{width:min(1280px,calc(100% - 48px));margin:0 auto;padding:32px 0 56px}.hero{min-height:280px;padding:clamp(34px,4vw,54px);border-radius:var(--radius);display:flex;justify-content:space-between;align-items:center;color:#fff;background:var(--navy)}.hero-kicker{display:inline-block;padding:7px 40px;border-radius:99px;color:var(--mint);background:#2a4e65}.hero h1,.shell-copy h1{margin:22px 0 12px;font-size:clamp(36px,4.2vw,58px);line-height:1.15}.hero p{margin:0;font-size:18px}.hero-shapes{display:flex;align-items:center;gap:28px;padding-right:8%}.shape,.mini-shape,.empty-shape{position:relative;display:grid;gap:4px}.shape i,.mini-shape i,.empty-shape i{display:block;border-radius:6px;background:currentColor}.shape i{width:28px;height:28px;box-shadow:inset 0 0 0 1px #fff}.shape-t{grid-template-columns:repeat(3,28px);grid-template-rows:repeat(2,28px)}.shape-t i:nth-child(4){grid-column:2}.shape-l{grid-template-columns:repeat(2,28px);grid-template-rows:repeat(3,28px)}.shape-l i:nth-child(1),.shape-l i:nth-child(2),.shape-l i:nth-child(3){grid-column:1}.shape-l i:nth-child(4){grid-column:2;grid-row:3}.shape-i{grid-template-rows:repeat(4,28px)}.purple{color:var(--purple)}.orange{color:var(--orange)}.mint{color:var(--mint)}.section-heading{margin:26px 0;display:flex;align-items:center;justify-content:space-between}.section-heading h2{margin:0;font-size:22px}.section-heading p{margin:0;color:var(--muted)}.level-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}.level-card{min-height:330px;padding:24px;display:flex;flex-direction:column;border-radius:var(--radius);background:var(--surface)}.card-topline{min-height:74px;display:flex;justify-content:space-between;align-items:flex-start}.card-topline strong{color:#667b8d;font-size:46px;line-height:1}.mini-shape{color:var(--purple);grid-template-columns:repeat(3,18px)}.mini-shape i{width:18px;height:18px}.mini-shape[data-shape=t] i:nth-child(4){grid-column:2}.mini-shape[data-shape=l]{color:var(--orange);grid-template-columns:repeat(2,18px)}.mini-shape[data-shape=l] i:nth-child(-n+3){grid-column:1}.mini-shape[data-shape=l] i:nth-child(4){grid-column:2;grid-row:3}.mini-shape[data-shape=i]{color:var(--mint);grid-template-columns:repeat(4,18px)}.mini-shape[data-shape=o]{color:#79a6d7;grid-template-columns:repeat(2,18px)}.level-card h3{margin:6px 0 14px;font-size:22px}.level-card p{margin:0 0 18px;color:var(--muted)}.level-card small{margin-bottom:18px;color:var(--teal);font-size:14px}.level-action{margin-top:auto;padding:14px;border:1px solid var(--line);border-radius:12px;text-align:center;font-weight:800;text-decoration:none}.level-action.primary{border-color:var(--teal);color:#fff;background:var(--teal)}.reassurance{margin:24px 0 0;padding:18px;border-radius:12px;color:#087e70;background:#dff1ec}.compact-header{grid-template-columns:1fr auto}.shell-content{padding-top:clamp(44px,8vw,96px)}.shell-copy{max-width:820px}.eyebrow{margin:0;color:var(--teal);font-weight:800}.shell-copy h1{margin-top:12px;color:var(--ink)}.lede{color:var(--muted);font-size:19px;line-height:1.7}.empty-stage{margin-top:42px;padding:clamp(30px,5vw,64px);display:flex;align-items:center;gap:44px;border-radius:var(--radius);background:#fff}.empty-stage h2{margin:12px 0}.empty-stage p{color:var(--muted)}.empty-stage[data-accent=purple] .empty-shape{color:var(--purple)}.empty-stage[data-accent=orange] .empty-shape{color:var(--orange)}.empty-stage[data-accent=mint] .empty-shape{color:var(--mint)}.empty-shape{grid-template-columns:repeat(2,44px);transform:rotate(12deg)}.empty-shape i{width:44px;height:44px}.status-pill{display:inline-block;margin:0;padding:6px 14px;border-radius:99px;color:var(--teal)!important;background:#e2f2ee;font-weight:800}.training-page{--training-compact-cell: clamp(44px, 3.65vw, 54px);padding:38px clamp(24px,5.5vw,80px) 24px}.training-header{max-width:1280px;margin:0 auto 28px;display:flex;justify-content:space-between;gap:32px}.training-header h1{margin:10px 0 8px;font-size:clamp(34px,3.4vw,50px)}.training-header p{margin:0;color:var(--muted)}.training-meta{display:flex;flex-direction:column;align-items:flex-end;gap:26px}.training-meta a{font-weight:800;text-decoration:none}.training-meta span,.panel-heading span{padding:7px 18px;border-radius:99px;color:var(--teal);background:#e2f2ee}.training-layout{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:minmax(420px,.9fr) minmax(520px,1.1fr);gap:24px}.training-card{min-height:520px;padding:24px;border-radius:var(--radius);background:var(--surface)}.panel-heading{display:flex;align-items:center;justify-content:space-between}.panel-heading h2{margin:0;font-size:22px}.training-board{--training-cell: clamp(64px, 5.3vw, 78px);width:max-content;margin:42px auto 20px;padding:14px;display:grid;grid-template-columns:repeat(var(--board-columns),var(--training-cell));grid-template-rows:repeat(var(--board-rows),var(--training-cell));gap:5px;border-radius:18px;background:var(--navy)}.training-board[data-board-size="6"]{--training-cell: var(--training-compact-cell)}.board-cell{border:1px dashed #8aa4b5;border-radius:8px;transition:background .15s,outline-color .15s}.board-cell.fixed{border-style:solid;border-color:#dbe5ea;background:#adbdc8}.board-cell.placed{border-style:solid;border-color:#fff;background:var(--purple)}.board-cell.cleared{border-color:#8ce1c9;background:transparent;animation:clear-cell .38s ease-out both}.board-cell.preview.valid{background:color-mix(in srgb,var(--purple) 70%,white);outline:3px solid #8ce1c9}.board-cell.preview.invalid{background:#f1a0a0;outline:3px solid #d55c5c}.board-caption{text-align:center;color:var(--muted)}.candidate-list{margin-top:24px;display:grid;grid-template-columns:repeat(var(--candidate-count),minmax(0,1fr));gap:16px}.candidate-card{min-height:330px;padding:24px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:16px;background:var(--canvas)}.candidate-card.used{opacity:.42}.candidate-card.selected{outline:2px solid var(--teal);background:#e7f3f0}.candidate-shape{--candidate-cell: clamp(54px, 4.5vw, 66px);min-height:210px;display:grid;place-content:center}.candidate-list[data-candidate-count="3"]{grid-template-columns:repeat(3,max-content);justify-content:space-between;gap:12px}.candidate-list[data-candidate-count="3"] .candidate-card{min-width:0;padding-inline:10px}.candidate-list[data-candidate-count="3"] .candidate-shape{--candidate-cell: var(--training-compact-cell)}.candidate-piece{display:grid;grid-template-columns:repeat(var(--shape-columns),var(--candidate-cell));grid-template-rows:repeat(var(--shape-rows),var(--candidate-cell));gap:5px}.candidate-piece i{border:1px solid white;border-radius:8px;background:var(--purple);cursor:grab}.candidate-card:nth-child(2) .candidate-piece i{background:var(--orange)}.candidate-piece i:active{cursor:grabbing}.candidate-card strong{margin-top:10px;font-size:18px}.candidate-card small{margin-top:8px;color:var(--muted)}.feedback{min-height:26px;margin:20px 0 0;color:var(--teal);font-weight:700}.rotation-actions{margin-top:12px;display:grid}.rotation-actions button{padding:14px;border:0;border-radius:10px;color:#fff;background:var(--teal);font-weight:800}.rotation-actions button:disabled{opacity:.4;cursor:not-allowed}.rotation-actions small{margin-top:8px;text-align:center;color:var(--muted)}.hint,.same-puzzle-note{margin:10px 0 0;padding:12px;border-radius:10px;color:#5a4d86;background:#eee9ff}.training-actions{max-width:1280px;margin:22px auto 0;display:flex;align-items:center;gap:12px}.training-actions button,.completion-actions button,.completion-actions a{padding:12px 22px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:#fff;font-weight:800;text-decoration:none}.training-actions button:disabled{opacity:.4;cursor:not-allowed}.training-actions span{color:var(--muted)}.completion-dialog{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px;background:#17364abd}.completion-dialog>div{width:min(540px,100%);padding:42px;border-radius:24px;text-align:center;background:#fff;box-shadow:0 24px 80px #00000038}.completion-dialog h2{margin:10px 0;font-size:32px}.completion-mark{width:64px;height:64px;margin:0 auto 18px;display:grid;place-items:center;border-radius:50%;color:#fff;background:var(--teal);font-size:34px}.completion-actions{margin-top:24px;display:flex;justify-content:center;gap:12px}@keyframes clear-cell{0%{opacity:1;transform:scale(1)}to{opacity:.35;transform:scale(.86)}}.classic-setup-content,.classic-game-content{width:min(1280px,calc(100% - 48px));margin:0 auto;padding:32px 0 48px}.classic-title-row,.classic-game-heading{display:flex;align-items:center;justify-content:space-between;gap:24px}.classic-title-row h1{margin:10px 0 8px;font-size:clamp(34px,3.4vw,50px)}.classic-title-row p{margin:0;color:var(--muted)}.classic-setup-grid{margin-top:28px;display:grid;grid-template-columns:minmax(0,1.75fr) minmax(330px,.9fr);gap:24px}.speed-card,.classic-rules{min-height:590px;padding:32px;border-radius:var(--radius);background:#fff}.speed-options{margin-top:26px;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.speed-option{min-height:160px;padding:24px 20px;display:flex;flex-direction:column;align-items:flex-start;border:1px solid var(--line);border-radius:16px;color:var(--ink);background:var(--canvas);cursor:pointer}.speed-option.selected{border:2px solid var(--teal);background:#e5f2ef}.speed-option>span{color:var(--teal);font-weight:800}.speed-option strong{margin:12px 0;font-size:42px;line-height:1}.speed-option strong small{color:var(--muted);font-size:14px;font-weight:500}.speed-option em{color:var(--muted);font-style:normal}.custom-speed{margin-top:24px;padding:22px;display:grid;grid-template-columns:1fr 180px auto;align-items:center;gap:20px;border:2px solid transparent;border-radius:16px;background:var(--canvas)}.custom-speed.selected{border-color:var(--teal)}.custom-speed>span:first-child{display:flex;flex-direction:column;gap:8px}.custom-speed small{color:var(--muted)}.custom-speed input{width:100%;padding:14px;border:1px solid var(--line);border-radius:10px;background:#fff}.form-error{margin:10px 0 0;color:#b33b3b;font-weight:700}.speed-note{margin:26px 0;color:var(--muted)}.start-classic{width:100%;padding:16px;border:0;border-radius:11px;color:#fff;background:var(--teal);font-weight:800;cursor:pointer}.classic-rules{color:#fff;background:var(--navy)}.classic-rules h2{margin:0 0 28px}.classic-rules ol{margin:0;padding:0;display:grid;gap:30px;list-style:none}.classic-rules li{display:grid;grid-template-columns:84px 1fr;gap:16px;align-items:start}.classic-rules b{padding:7px;border-radius:99px;color:var(--mint);background:#2b5168;text-align:center}.classic-rules li span{display:flex;flex-direction:column;gap:8px;line-height:1.65}.classic-game-content{padding-top:24px}.classic-game-heading h1{display:inline;margin:0 22px 0 0;font-size:24px}.classic-game-heading>div>span{color:var(--muted)}.classic-game-layout{margin-top:24px;display:grid;grid-template-columns:max-content 264px;justify-content:center;align-items:start;gap:24px}.classic-board-shell{position:relative;padding:14px;border-radius:var(--radius);outline:none;background:#fff}.classic-board{--classic-cell: min(36px, calc((100vh - 280px)/20) );display:grid;grid-template-columns:repeat(14,var(--classic-cell));grid-template-rows:repeat(20,var(--classic-cell));gap:3px;padding:12px;border-radius:16px;background:var(--navy)}.classic-cell{display:block;aspect-ratio:1;border:1px solid #305c74;border-radius:4px;background:#091018}.classic-cell.filled{border-color:#fff}.classic-cell.ghost{border:2px dashed #e8cd67;background:transparent}.piece-i{background:#79a6d7!important}.piece-o{background:#ead078!important}.piece-t{background:#a18ae2!important}.piece-s{background:#72c6b4!important}.piece-z{background:#e1877e!important}.piece-j{background:#799fd2!important}.piece-l{background:#efad63!important}.board-overlay{position:absolute;top:14px;right:14px;bottom:14px;left:14px;display:grid;place-content:center;justify-items:center;gap:10px;border-radius:16px;color:#fff;background:#17364ad1;text-align:center}.board-overlay strong{font-size:34px}.board-overlay button{margin-top:8px;padding:12px 24px;border:0;border-radius:10px;color:#fff;background:var(--teal);font-weight:800}.classic-sidebar{display:grid;gap:16px}.classic-sidebar section{padding:20px;border-radius:18px;background:#fff}.classic-stat{display:flex;align-items:center;justify-content:space-between}.classic-stat span{color:var(--muted)}.classic-stat strong{font-size:24px}.next-card h2,.keyboard-card h2{margin:0;font-size:18px}.next-preview{width:150px;height:108px;margin:12px auto 0;display:grid;grid-template-columns:repeat(4,30px);grid-template-rows:repeat(4,30px);place-content:center}.next-cell{border:1px solid white;border-radius:5px}.keyboard-card dl{margin:18px 0 0;display:grid;grid-template-columns:66px 1fr;gap:12px 14px}.keyboard-card dt,.keyboard-card dd{margin:0}.keyboard-card dd{color:var(--muted)}.pause-button{width:112px;padding:12px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:#fff;font-weight:800}.keyboard-content{width:min(1280px,calc(100% - 48px));margin:0 auto;padding:24px 0 48px}.keyboard-heading{display:flex;align-items:center;justify-content:space-between;gap:24px}.keyboard-heading h1{margin:8px 0;font-size:clamp(30px,3.2vw,46px)}.keyboard-heading p:last-child{margin:0;color:var(--muted)}.keyboard-layout{margin-top:22px;display:grid;grid-template-columns:max-content 264px;justify-content:center;align-items:start;gap:24px}.keyboard-board-shell{position:relative;padding:14px;border-radius:var(--radius);outline:none;background:#fff;box-shadow:0 0 0 0 var(--teal);transition:box-shadow .15s}.keyboard-board-shell:focus{box-shadow:0 0 0 4px #168b7d38}.keyboard-board{--keyboard-cell: min(32px, calc((100vh - 335px)/20) );display:grid;grid-template-columns:repeat(14,var(--keyboard-cell));grid-template-rows:repeat(20,var(--keyboard-cell));gap:3px;padding:12px;border-radius:16px;background:var(--navy)}.keyboard-cell{display:block;aspect-ratio:1;border:1px solid #305c74;border-radius:4px;background:#091018;transition:opacity .25s,transform .25s}.keyboard-cell.target{border:2px dashed #e8cd67;background:#172a35}.keyboard-cell.fixed,.keyboard-cell.locked,.keyboard-cell.current{border-color:#fff}.keyboard-cell.fixed{background:#60788b!important}.keyboard-cell.ghost{background:transparent}.keyboard-cell.ghost-valid{border:2px solid #80e2bd;box-shadow:inset 0 0 0 2px #80e2bd47}.keyboard-cell.ghost-invalid{border:2px dashed #f08b72;box-shadow:inset 0 0 0 2px #f08b723d}.keyboard-cell.landing-valid{border:3px solid #80e2bd;box-shadow:0 0 0 2px #17364a,0 0 0 5px #80e2bd}.keyboard-cell.landing-invalid{border:3px solid #f08b72;box-shadow:0 0 0 2px #17364a,0 0 0 5px #f08b72}.keyboard-cell.incorrect{box-shadow:inset 0 0 0 3px #b85f5f}.keyboard-cell.clearing.fixed,.keyboard-cell.clearing.locked{opacity:.18;transform:scale(.78)}.keyboard-sidebar{display:grid;gap:14px}.keyboard-sidebar section{padding:18px;border-radius:18px;background:#fff}.keyboard-progress{display:flex;align-items:center;justify-content:space-between;gap:12px}.keyboard-progress span{color:var(--muted)}.keyboard-progress strong{color:var(--teal)}.keyboard-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px}.keyboard-controls button{padding:11px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:#fff;font-weight:800}.keyboard-feedback,.storage-warning{margin:0;padding:14px;border-radius:12px;color:#087e70;background:#dff1ec;font-weight:700;line-height:1.5}.storage-warning{color:#8b5a16;background:#fff1cf}.keyboard-overlay{position:absolute;top:14px;right:14px;bottom:14px;left:14px;display:grid;place-content:center;justify-items:center;gap:10px;border-radius:16px;color:#fff;background:#17364ad6;text-align:center}.keyboard-overlay strong{font-size:32px}.keyboard-overlay button{margin-top:8px;padding:12px 24px;border:0;border-radius:10px;color:#fff;background:var(--teal);font-weight:800}@media (max-width: 900px){.site-header{grid-template-columns:1fr auto}.top-nav,.hero-shapes{display:none}.level-grid{grid-template-columns:repeat(2,1fr)}.level-card{min-height:280px}.training-layout{grid-template-columns:1fr}.training-card{min-height:auto}.classic-setup-grid{grid-template-columns:1fr}.classic-game-layout{grid-template-columns:max-content 220px;gap:14px}.classic-sidebar section{padding:14px}.keyboard-layout{grid-template-columns:max-content 220px;gap:14px}.keyboard-sidebar section{padding:14px}}@media (max-width: 560px){.site-header{min-height:72px;padding:0 18px}.brand{font-size:18px}.header-note{display:none}.secondary-button{padding:10px 14px}.home-content,.shell-content{width:min(100% - 28px,1280px)}.hero{min-height:250px;padding:28px 22px}.hero-kicker{padding:7px 18px}.hero h1,.shell-copy h1{font-size:34px}.section-heading{align-items:flex-start;flex-direction:column;gap:8px}.empty-stage{align-items:flex-start;flex-direction:column;gap:24px}.training-page{padding:24px 14px}.training-page{--training-compact-cell: min(13vw, 52px)}.training-header,.training-actions{align-items:flex-start;flex-direction:column}.training-meta{align-items:flex-start;gap:12px}.candidate-list{grid-template-columns:1fr}.candidate-list[data-candidate-count="3"]{grid-template-columns:1fr;justify-content:stretch}.training-board{--training-cell: min(19vw, 68px)}.candidate-shape{--candidate-cell: 58px}.classic-title-row,.classic-game-heading{align-items:flex-start;flex-direction:column}.speed-options,.custom-speed{grid-template-columns:1fr}.classic-game-layout{grid-template-columns:1fr;justify-items:center}.classic-sidebar{width:min(100%,520px)}.level-grid{grid-template-columns:1fr}.keyboard-content{width:min(100% - 28px,1280px)}.keyboard-heading{align-items:flex-start;flex-direction:column}.keyboard-layout{grid-template-columns:1fr;justify-items:center}.keyboard-board{--keyboard-cell: min(5.7vw, 28px)}.keyboard-sidebar{width:min(100%,520px)}}
