:root{--bg:#071522;--panel:rgba(8,28,48,.78);--line:rgba(92,205,255,.46);--cyan:#55d6ff;--red:#ff4d62;--gold:#ffd166;--tile-size:min(14vw,112px);--zoom:1;}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Segoe UI","Microsoft YaHei",sans-serif;color:#f5fbff;background:var(--bg)}body{overflow-x:hidden;background:linear-gradient(90deg,rgba(2,11,21,.78),rgba(2,11,21,.58)),url('../assets/hero-background.png') center/cover fixed no-repeat}button{font:inherit;color:inherit;border:0;cursor:pointer}button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.app-shell{min-height:100vh;max-width:1500px;margin:auto;padding:clamp(16px,2.5vh,32px) clamp(18px,4vw,66px) 20px;display:flex;flex-direction:column;gap:clamp(14px,2vh,26px);background:linear-gradient(135deg,rgba(5,18,33,.54),rgba(5,18,33,.16))}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.brand-kicker,.eyebrow{display:block;color:var(--cyan);font-size:11px;letter-spacing:.2em;font-weight:700}.brand-block h1{font-size:clamp(30px,4vw,58px);line-height:1;margin:7px 0 8px;text-shadow:0 0 20px rgba(85,214,255,.5)}.brand-block p{margin:0;color:#b7cbd8;font-size:clamp(12px,1.2vw,16px);letter-spacing:.3em}.top-actions{display:flex;align-items:center;background:rgba(7,24,42,.75);border:1px solid rgba(124,215,255,.35);border-radius:16px;overflow:hidden;box-shadow:0 10px 30px #020b1499}.icon-button{min-width:76px;padding:10px 13px;background:transparent;border-right:1px solid rgba(155,224,255,.18);display:grid;gap:3px;place-items:center;transition:.2s}.icon-button:last-child{border-right:0}.icon-button:hover,.control-dock button:hover{background:rgba(85,214,255,.16);color:#fff}.icon-button span{font-size:25px;color:var(--cyan);line-height:1}.icon-button b{font-size:12px;font-weight:500}.game-layout{flex:1;min-height:0;display:grid;grid-template-columns:minmax(460px,1.35fr) minmax(260px,.65fr);gap:clamp(16px,2.4vw,36px);align-items:center}.board-card,.stat-card,.tip-card{background:linear-gradient(145deg,rgba(11,45,72,.84),rgba(5,23,41,.7));border:1px solid var(--line);box-shadow:0 16px 46px #020a14aa,inset 0 1px #c5f2ff28;backdrop-filter:blur(12px)}.board-card{border-radius:26px;padding:clamp(16px,2.2vw,30px);position:relative}.board-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.board-heading h2{font-size:clamp(19px,2vw,28px);margin:5px 0 0}.status-dot{font-size:12px;color:#cde9f4}.status-dot i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#50ef9c;box-shadow:0 0 12px #50ef9c;margin-right:6px}.board{width:min(100%,calc(var(--tile-size) * 4 + 30px));margin:auto;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:9px;border-radius:20px;background:linear-gradient(145deg,#0a2137,#081321);border:2px solid rgba(91,210,255,.72);box-shadow:0 0 0 5px rgba(33,120,165,.22),0 18px 28px #0008}.tile{aspect-ratio:1;border-radius:12px;background:linear-gradient(145deg,#386b91,#102c47);border:1px solid rgba(169,231,255,.64);box-shadow:inset 0 1px 3px #d8f8ff55,0 5px 9px #0008;color:#f8fdff;font-size:clamp(24px,4.2vw,51px);font-weight:800;text-shadow:0 0 13px rgba(104,220,255,.7);transition:transform .16s,filter .16s,background .16s}.tile.movable{cursor:pointer}.tile.movable:hover{filter:brightness(1.3);transform:translateY(-3px);background:linear-gradient(145deg,#4a84aa,#173b5b)}.tile.empty{background:rgba(1,13,26,.58);border-style:dashed;box-shadow:inset 0 0 22px #0008}.board-footer{display:flex;justify-content:space-between;gap:12px;color:#9eb9c8;font-size:12px;margin-top:13px}.info-panel{display:grid;gap:14px}.stat-card{min-height:91px;border-radius:17px;padding:18px 20px;display:flex;gap:15px;align-items:center}.stat-icon{font-size:28px;color:var(--cyan);width:34px;text-align:center}.stat-card div{display:flex;flex-direction:column;gap:5px}.stat-card div span{font-size:13px;color:#bad2df}.stat-card strong{font-size:30px;line-height:1;letter-spacing:.04em}.best-card .stat-icon{color:var(--gold)}.tip-card{border-radius:17px;padding:18px 20px}.tip-card p{color:#c2d6df;line-height:1.7;margin:9px 0 0;font-size:14px}.control-dock{align-self:center;width:min(740px,100%);display:flex;justify-content:space-around;padding:8px;background:rgba(5,23,40,.83);border:1px solid rgba(96,211,255,.48);border-radius:20px;box-shadow:0 10px 30px #0008;backdrop-filter:blur(13px)}.control-dock button{min-width:100px;padding:6px 15px;background:transparent;border-right:1px solid #9edfff2d;display:grid;place-items:center;gap:3px;transition:.2s}.control-dock button:last-child{border:0}.control-dock span{font-size:25px;color:var(--cyan)}.control-dock b{font-size:13px;font-weight:500}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);background:#071c2deF;border:1px solid var(--cyan);border-radius:12px;padding:11px 18px;opacity:0;pointer-events:none;transition:.25s;z-index:5}.toast.show{opacity:1;transform:translate(-50%,0)}.modal-backdrop{position:fixed;inset:0;display:grid;place-items:center;background:#020812b8;backdrop-filter:blur(8px);z-index:4}.modal-backdrop[hidden]{display:none}.win-modal{width:min(410px,calc(100% - 32px));text-align:center;padding:32px;border-radius:24px;background:linear-gradient(145deg,#123a5a,#071a2c);border:1px solid var(--cyan);box-shadow:0 20px 70px #000b}.win-modal h2{font-size:32px;margin:10px 0}.win-modal p{color:#bfd7e5}.result-row{display:flex;justify-content:space-around;margin:22px 0;color:#a9c5d4}.result-row b{display:block;color:#fff;font-size:25px;margin-top:5px}.primary-button{padding:12px 28px;border-radius:10px;background:linear-gradient(90deg,#18a8de,#4276ff);font-weight:700}.is-fullscreen .top-actions{order:2}.is-fullscreen .top-actions .icon-button:nth-child(2),.is-fullscreen .top-actions .icon-button:nth-child(3),.is-fullscreen .top-actions .icon-button:nth-child(4){display:none}.is-fullscreen .fullscreen-label{font-size:0}.is-fullscreen .fullscreen-label::after{content:'退出全屏';font-size:12px}.zoomed{--tile-size:min(16vw,132px)}
@media (max-width:900px){.app-shell{padding:16px}.topbar{align-items:center}.brand-block p{letter-spacing:.12em}.top-actions{position:absolute;right:16px;top:16px}.top-actions .icon-button{min-width:45px;padding:7px}.top-actions b{display:none}.top-actions span{font-size:22px}.game-layout{grid-template-columns:1fr;align-items:start}.board-card{max-width:650px;width:100%;margin:auto}.info-panel{grid-template-columns:repeat(3,1fr);max-width:650px;width:100%;margin:auto}.stat-card{min-height:70px;padding:11px 12px;gap:8px}.stat-icon{font-size:20px;width:22px}.stat-card strong{font-size:21px}.stat-card div span{font-size:11px}.tip-card{grid-column:1/-1}.control-dock{width:100%}.control-dock button{min-width:0;flex:1;padding:5px}.control-dock span{font-size:21px}}
@media (max-width:560px){.app-shell{padding:14px 10px 12px}.brand-kicker{font-size:9px}.brand-block h1{font-size:30px;margin-top:5px}.brand-block p{font-size:10px}.top-actions{top:13px;right:10px}.top-actions .icon-button:nth-child(2),.top-actions .icon-button:nth-child(3),.top-actions .icon-button:nth-child(4){display:none}.board-card{padding:13px;border-radius:18px}.board-heading h2{font-size:17px}.board{gap:5px;padding:6px;border-radius:14px}.tile{border-radius:8px;font-size:clamp(20px,9vw,39px)}.board-footer{font-size:10px}.info-panel{gap:7px}.stat-card{padding:9px 7px}.stat-card strong{font-size:17px}.tip-card{padding:13px}.tip-card p{font-size:12px}.control-dock b{font-size:11px}.control-dock span{font-size:19px}}

.difficulty-tabs{display:flex;align-items:center;gap:8px;width:max-content;max-width:100%;padding:7px 9px;background:rgba(5,23,40,.76);border:1px solid rgba(96,211,255,.36);border-radius:15px;box-shadow:0 8px 22px #0005}.difficulty-label{color:#a9c4d2;font-size:12px;margin:0 7px 0 3px}.difficulty-tab{min-width:72px;padding:7px 11px;border-radius:10px;background:transparent;color:#b8d1dd;display:grid;gap:2px;transition:.2s}.difficulty-tab b{font-size:14px}.difficulty-tab small{font-size:10px;color:#83a6b9}.difficulty-tab:hover,.difficulty-tab.active{background:linear-gradient(135deg,#1a82ad,#2851a1);color:#fff;box-shadow:0 0 14px #3abfff55}.difficulty-tab.active small{color:#e4f9ff}.board{width:min(100%,calc(var(--tile-size) * var(--grid-size,4) + 30px));grid-template-columns:repeat(var(--grid-size,4),1fr)}.board[data-size="5"],.board[data-size="6"],.board[data-size="7"]{gap:6px}.board[data-size="6"],.board[data-size="7"]{padding:7px}.board[data-size="5"] .tile{border-radius:9px;font-size:clamp(18px,3vw,38px)}.board[data-size="6"] .tile{border-radius:7px;font-size:clamp(15px,2.5vw,29px)}.board[data-size="7"] .tile{border-radius:6px;font-size:clamp(13px,2vw,24px)}
@media (max-width:900px){.difficulty-tabs{width:100%;justify-content:space-between;overflow-x:auto}.difficulty-label{display:none}}
@media (max-width:560px){.difficulty-tabs{gap:4px;padding:5px}.difficulty-tab{min-width:58px;padding:6px 7px}.difficulty-tab b{font-size:12px}.board[data-size="6"],.board[data-size="7"]{gap:4px;padding:5px}.board[data-size="5"] .tile{font-size:clamp(15px,7vw,30px)}.board[data-size="6"] .tile{font-size:clamp(12px,5.5vw,24px)}.board[data-size="7"] .tile{font-size:clamp(10px,4.6vw,20px)}}

/* 大棋盘首屏适配：保持左侧棋盘与右侧状态区在同一视口内 */
.board{width:min(100%,calc(var(--tile-size) * var(--grid-size,4) + 30px),66vh)}
.board[data-size="5"],.board[data-size="6"],.board[data-size="7"]{max-height:66vh}
.board[data-size="5"] ~ .board-footer,.board[data-size="6"] ~ .board-footer,.board[data-size="7"] ~ .board-footer{margin-top:7px}
body:has(.board[data-size="5"]),body:has(.board[data-size="6"]),body:has(.board[data-size="7"]){--tile-size:min(11vw,74px)}
body:has(.board[data-size="5"]) .app-shell,body:has(.board[data-size="6"]) .app-shell,body:has(.board[data-size="7"]) .app-shell{gap:clamp(8px,1.1vh,14px);padding-top:clamp(10px,1.5vh,18px)}
body:has(.board[data-size="5"]) .game-layout,body:has(.board[data-size="6"]) .game-layout,body:has(.board[data-size="7"]) .game-layout{align-items:start;gap:clamp(12px,1.6vw,24px)}
body:has(.board[data-size="5"]) .board-card,body:has(.board[data-size="6"]) .board-card,body:has(.board[data-size="7"]) .board-card{padding:clamp(10px,1.2vw,18px);border-radius:20px}
body:has(.board[data-size="5"]) .board-heading,body:has(.board[data-size="6"]) .board-heading,body:has(.board[data-size="7"]) .board-heading{margin-bottom:8px}
body:has(.board[data-size="5"]) .board-heading h2,body:has(.board[data-size="6"]) .board-heading h2,body:has(.board[data-size="7"]) .board-heading h2{font-size:clamp(17px,1.8vw,24px)}
body:has(.board[data-size="5"]) .info-panel,body:has(.board[data-size="6"]) .info-panel,body:has(.board[data-size="7"]) .info-panel{gap:8px}
body:has(.board[data-size="5"]) .stat-card,body:has(.board[data-size="6"]) .stat-card,body:has(.board[data-size="7"]) .stat-card{min-height:clamp(62px,9vh,78px);padding:12px 15px}
body:has(.board[data-size="5"]) .stat-card strong,body:has(.board[data-size="6"]) .stat-card strong,body:has(.board[data-size="7"]) .stat-card strong{font-size:clamp(21px,2.4vw,28px)}
body:has(.board[data-size="5"]) .tip-card,body:has(.board[data-size="6"]) .tip-card,body:has(.board[data-size="7"]) .tip-card{padding:12px 15px}
body:has(.board[data-size="5"]) .tip-card p,body:has(.board[data-size="6"]) .tip-card p,body:has(.board[data-size="7"]) .tip-card p{margin-top:5px;line-height:1.45}
@media (min-width:901px){
  body:has(.board[data-size="5"]) .app-shell,body:has(.board[data-size="6"]) .app-shell,body:has(.board[data-size="7"]) .app-shell{height:100svh;min-height:0;overflow:hidden}
  body:has(.board[data-size="5"]) .game-layout,body:has(.board[data-size="6"]) .game-layout,body:has(.board[data-size="7"]) .game-layout{min-height:0;overflow:hidden}
  body:has(.board[data-size="5"]) .board,body:has(.board[data-size="6"]) .board,body:has(.board[data-size="7"]) .board{max-height:52vh}
  body:has(.board[data-size="5"]) .board-card,body:has(.board[data-size="6"]) .board-card,body:has(.board[data-size="7"]) .board-card{min-height:0;overflow:hidden}
}
