:root{--bg:#07111f;--panel:rgba(10,22,39,.9);--line:rgba(167,195,231,.18);--text:#eff6ff;--muted:#91a4be;--p1:#ffad32;--p2:#42cbff}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(circle at 50% 25%,#1b3557 0,#081421 48%,#040a12 100%);color:var(--text);font-family:"Microsoft YaHei",system-ui,sans-serif}button{font:inherit;color:inherit;touch-action:manipulation}.game-shell{width:min(1600px,100%);min-height:100vh;margin:auto;padding:14px;display:grid;grid-template-columns:minmax(220px,270px) minmax(500px,1fr) minmax(220px,270px);grid-template-rows:auto 1fr;gap:14px}.topbar{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;padding:0 6px}.topbar h1{font-size:25px;margin:0;letter-spacing:3px}.topbar p{margin:3px 0;color:var(--muted);font-size:12px}.top-actions{display:flex;gap:8px}.ghost{border:1px solid var(--line);border-radius:11px;background:rgba(10,22,39,.72);padding:9px 13px;cursor:pointer}.player-card,.arena-card{border:1px solid var(--line);background:var(--panel);border-radius:20px;box-shadow:0 20px 45px rgba(0,0,0,.27);backdrop-filter:blur(12px)}.player-card{--pc:var(--p1);padding:17px;display:flex;flex-direction:column;align-self:stretch;transition:.25s}.player-card.p2{--pc:var(--p2)}.player-card.active{border-color:color-mix(in srgb,var(--pc) 70%,transparent);box-shadow:0 0 26px color-mix(in srgb,var(--pc) 19%,transparent)}.player-head{display:flex;justify-content:space-between;align-items:start}.player-head h2{margin:0;color:var(--pc);font-size:21px}.route,.minor{font-size:11px;color:var(--muted)}.active-info{margin:14px 0;padding:12px;border-radius:14px;background:color-mix(in srgb,var(--pc) 12%,transparent);display:flex;align-items:center;gap:12px}.pawn-dot{width:48px;height:48px;border-radius:50%;background:radial-gradient(circle at 34% 28%,#fff 0 7%,var(--pc) 15% 62%,#111 120%);display:grid;place-items:center;color:#07111f;font-size:20px;font-weight:900;box-shadow:0 7px 18px rgba(0,0,0,.35)}.active-info strong{display:block;font-size:17px}.active-info span{font-size:11px;color:var(--muted)}.hp{height:7px;background:#03070e;border-radius:9px;overflow:hidden;margin-bottom:14px}.hp i{display:block;height:100%;background:var(--pc);transition:width .35s}.pieces{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.piece{height:42px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.04);font-weight:800;cursor:pointer}.piece:not(:disabled):hover{border-color:var(--pc);background:color-mix(in srgb,var(--pc) 15%,transparent)}.piece:disabled{opacity:.2}.piece.selected{outline:2px solid var(--pc)}.player-foot{margin-top:auto;padding-top:14px;color:var(--muted);font-size:11px;line-height:1.7}.arena-card{min-width:0;padding:10px;display:flex;flex-direction:column}.turn-line{text-align:center;height:30px;font-size:14px}.turn-line b{color:var(--turn)}.canvas-wrap{position:relative;min-height:400px;flex:1;border-radius:15px;overflow:hidden;background:radial-gradient(circle at 50% 40%,#203c5a,#08111d 70%)}#gameCanvas{display:block;width:100%;height:100%;min-height:400px;cursor:grab}#gameCanvas:active{cursor:grabbing}.compass{position:absolute;left:12px;bottom:12px;width:105px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,23px);align-items:center;text-align:center;padding:6px;border:1px solid var(--line);border-radius:12px;background:rgba(5,12,22,.75);font-size:10px;pointer-events:none}.compass b:first-child{grid-column:2}.compass span:nth-child(2){grid-column:1;grid-row:2}.compass i{grid-column:2;grid-row:2;width:6px;height:6px;border-radius:50%;background:#fff;justify-self:center}.compass span:nth-child(4){grid-column:3;grid-row:2}.compass b:last-child{grid-column:2;grid-row:3}.free-choice{position:absolute;inset:0;display:none;align-items:center;justify-content:center;flex-direction:column;gap:12px;background:rgba(3,8,15,.7);backdrop-filter:blur(5px);z-index:5}.free-choice.show{display:flex}.free-choice strong{font-size:20px}.free-choice div{display:grid;grid-template-columns:repeat(2,105px);gap:8px}.free-choice button{border:1px solid #6aa8d0;border-radius:12px;background:#173954;padding:12px;cursor:pointer}.action-row{display:flex;align-items:center;gap:12px;padding:10px 3px 3px}.roll-btn{border:0;border-radius:13px;padding:12px 22px;background:linear-gradient(135deg,#ffd363,#ef7f35);color:#171006;font-weight:900;cursor:pointer;box-shadow:0 8px 20px rgba(239,127,53,.25)}.roll-btn:disabled{opacity:.38;filter:grayscale(1);cursor:not-allowed}.roll-btn.small{padding:9px 16px}.result{font-weight:700;font-size:14px}.log{height:68px;overflow:auto;margin:7px 3px 0;padding:8px 10px;border-radius:11px;background:rgba(3,8,15,.6);color:var(--muted);font-size:11px;line-height:1.65}.log div:first-child{color:var(--text)}dialog{max-width:570px;color:var(--text);background:#101e31;border:1px solid var(--line);border-radius:19px;padding:24px}dialog::backdrop{background:rgba(0,0,0,.7)}dialog h2{margin-top:0}dialog p{color:#bcc9da;line-height:1.7;font-size:14px}.winner{position:fixed;inset:0;z-index:20;display:none;place-items:center;background:rgba(2,6,12,.8);backdrop-filter:blur(8px)}.winner.show{display:grid}.winner>div{text-align:center;width:min(90vw,400px);padding:35px;border:1px solid var(--line);border-radius:22px;background:#102039}.winner span{font-size:60px}.winner h2{font-size:30px;margin:6px}
.replace-dialog{text-align:center;width:min(92vw,430px)}.replace-dialog .lost-icon{font-size:54px}.replace-dialog h2{margin:4px 0}.replace-dialog>strong{display:block;margin:18px 0 10px;color:#ffd36d}.replace-pieces{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.replace-pieces button{height:48px;border:1px solid #6b7f9d;border-radius:11px;background:#1c304c;font-weight:900;cursor:pointer}.replace-pieces button:hover{background:#2a466b;border-color:#ffd36d}
.difficulty-dialog{text-align:center;width:min(92vw,620px)}.difficulty-dialog h2{margin-bottom:4px}.difficulty-dialog>p{margin-top:0}.difficulty-options{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:20px}.difficulty-options button{min-height:130px;border:1px solid #526985;border-radius:14px;background:#172a43;padding:16px 10px;cursor:pointer}.difficulty-options button:hover{transform:translateY(-2px);border-color:#ffd36d;background:#213b5d}.difficulty-options b{display:block;font-size:20px;margin-bottom:9px}.difficulty-options span{display:block;color:#aebed2;font-size:12px;line-height:1.7}.difficulty-options button:first-child b{color:#63efa6}.difficulty-options button:nth-child(2) b{color:#ffd36d}.difficulty-options button:last-child b{color:#ff7582}@media(max-width:560px){.difficulty-options{grid-template-columns:1fr}.difficulty-options button{min-height:82px}.difficulty-options span br{display:none}}
@media(max-width:1000px){.game-shell{grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto}.topbar{grid-row:1}.arena-card{grid-column:1/-1;grid-row:2;height:min(72vh,710px)}.player-card{grid-row:3;min-height:285px}.player-foot{margin-top:12px}}
@media(max-width:620px){.game-shell{display:flex;flex-direction:column;padding:8px;gap:8px;min-height:100dvh}.topbar{padding:2px 4px}.topbar h1{font-size:19px}.topbar p{display:none}.ghost{padding:7px 10px;font-size:12px}.arena-card{order:2;height:auto;padding:6px}.player-card.p1{order:1}.player-card.p2{order:3}.player-card{padding:9px 11px;border-radius:15px;min-height:0}.player-head h2{font-size:15px}.route{display:none}.active-info{position:absolute;margin:0;right:20px;padding:5px 9px;gap:7px;background:transparent}.pawn-dot{width:32px;height:32px;font-size:15px}.active-info strong{font-size:12px}.active-info span{display:none}.hp{margin:7px 0;width:48%}.pieces{grid-template-columns:repeat(9,1fr);gap:3px}.piece{height:31px;border-radius:7px;font-size:12px;padding:0}.minor,.player-foot{display:none}.turn-line{height:25px;font-size:12px}.canvas-wrap,#gameCanvas{min-height:52vh;height:52vh}.action-row{padding:7px 2px 2px;gap:8px}.roll-btn{padding:11px 15px;min-width:132px}.result{font-size:12px}.log{height:45px;font-size:10px;margin-top:4px}.compass{width:90px;bottom:7px;left:7px;grid-template-rows:repeat(3,18px)}.free-choice div{grid-template-columns:repeat(2,95px)}}
@media(max-width:390px){.canvas-wrap,#gameCanvas{min-height:47vh;height:47vh}.pieces{gap:2px}.piece{height:28px}.log{display:none}}
.player-controls{margin-top:14px}.player-roll{width:100%}.player-controls>strong{display:block;text-align:center;color:#ffd36d;font-size:13px;margin-bottom:7px}.inline-directions{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.inline-directions button{border:1px solid #6aa8d0;border-radius:9px;background:#173954;padding:9px 4px;cursor:pointer}.action-row{justify-content:center;min-height:38px}.free-choice{display:none!important}
.difficulty-badge{display:inline-block;padding:2px 8px;border-radius:99px;background:#253d5c;color:#dbeaff;font-size:11px}
@media(max-width:1000px){.game-shell{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto minmax(460px,1fr) auto}.topbar{grid-column:1;grid-row:1}.player-card.p1{grid-column:1;grid-row:2;transform:rotate(180deg)}.arena-card{grid-column:1;grid-row:3;height:min(64vh,680px)}.player-card.p2{grid-column:1;grid-row:4}.player-card{min-height:230px}.pieces{grid-template-columns:repeat(9,1fr)}.player-controls{margin-top:10px}}
@media(max-width:620px){.game-shell{display:flex}.player-card.p1{order:1;transform:rotate(180deg)}.arena-card{order:2}.player-card.p2{order:3}.player-controls{margin-top:7px}.player-roll{padding:9px}.inline-directions{grid-template-columns:repeat(4,1fr)}.inline-directions button{padding:8px 2px;font-size:12px}}
@media(max-width:1000px){html,body{height:100%;overflow:hidden;overscroll-behavior:none}.game-shell{height:100dvh;min-height:0;overflow:hidden;grid-template-rows:48px 145px minmax(0,1fr) 145px}.topbar{height:48px}.player-card{min-height:0;overflow:hidden;padding:10px 14px}.arena-card{height:auto;min-height:0;overflow:hidden}.canvas-wrap{min-height:0}.player-foot{display:none}.pieces{gap:4px}.piece{height:31px}.player-controls{margin-top:7px}.player-roll{padding:9px}.active-info{margin:6px 0;padding:6px 9px}.pawn-dot{width:35px;height:35px;font-size:15px}.hp{margin-bottom:7px}}
@media(max-width:620px){html,body{width:100%;height:100%;overflow:hidden}.game-shell{display:grid;height:100dvh;min-height:0;padding:5px;gap:5px;grid-template-columns:1fr;grid-template-rows:39px 112px minmax(0,1fr) 112px}.topbar{grid-row:1;height:39px;padding:0 3px}.topbar h1{font-size:17px;letter-spacing:1px}.top-actions{gap:4px}.ghost{padding:5px 8px}.player-card.p1{grid-row:2;order:unset;transform:rotate(180deg)}.arena-card{grid-row:3;order:unset;height:auto;min-height:0;padding:4px}.player-card.p2{grid-row:4;order:unset}.player-card{height:112px;min-height:112px;padding:6px 9px;border-radius:12px}.player-head{height:18px}.player-head h2{font-size:13px}.active-info{right:12px;padding:0;gap:5px}.pawn-dot{width:28px;height:28px;font-size:13px}.active-info strong{font-size:11px}.hp{height:4px;margin:4px 0;width:46%}.pieces{gap:2px}.piece{height:25px;font-size:11px}.player-controls{margin-top:4px}.player-roll{height:31px;padding:5px;font-size:12px}.player-controls>strong{margin-bottom:3px;font-size:11px}.inline-directions{gap:3px}.inline-directions button{height:29px;padding:3px 1px;font-size:11px}.turn-line{height:21px;font-size:11px}.canvas-wrap,#gameCanvas{height:auto;min-height:0;flex:1}.action-row{min-height:27px;height:27px;padding:3px 2px 0}.result{font-size:11px;white-space:nowrap}.log{display:none}.compass{width:78px;bottom:5px;left:5px;padding:3px;grid-template-rows:repeat(3,16px)}.difficulty-badge{font-size:9px;padding:1px 6px}}
.rotate-prompt{display:none}
@media(max-width:1000px) and (orientation:portrait){.rotate-prompt{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:radial-gradient(circle,#183758,#07111f 70%);text-align:center}.rotate-prompt div{font-size:64px;animation:rotate-phone 1.8s ease-in-out infinite}.rotate-prompt strong{font-size:22px}.rotate-prompt span{color:var(--muted);font-size:13px}@keyframes rotate-phone{0%,100%{transform:rotate(0)}50%{transform:rotate(90deg)}}}
@media(max-width:1000px) and (orientation:landscape){html,body{height:100%;overflow:hidden}.game-shell{display:grid;width:100%;height:100dvh;min-height:0;padding:5px;gap:5px;grid-template-columns:145px minmax(0,1fr) 145px;grid-template-rows:36px minmax(0,1fr)}.topbar{grid-column:1/-1;grid-row:1;height:36px}.topbar h1{font-size:16px}.topbar p{display:none}.ghost{padding:4px 8px;font-size:11px}.player-card.p1,.player-card.p2{grid-row:2;height:auto;min-height:0;transform:none;padding:7px;overflow:hidden}.player-card.p1{grid-column:1}.player-card.p2{grid-column:3}.arena-card{grid-column:2;grid-row:2;height:auto;min-height:0;padding:4px}.player-head{height:20px}.player-head h2{font-size:13px}.route,.minor,.player-foot{display:none}.active-info{position:static;margin:4px 0;padding:4px;gap:5px}.pawn-dot{width:28px;height:28px;font-size:12px}.active-info strong{font-size:11px}.active-info span{display:none}.hp{width:100%;height:4px;margin:3px 0 5px}.pieces{grid-template-columns:repeat(3,1fr);gap:3px}.piece{height:23px;font-size:10px;padding:0}.player-controls{margin-top:5px}.player-roll{height:30px;padding:4px;font-size:11px}.inline-directions{grid-template-columns:repeat(2,1fr);gap:3px}.inline-directions button{height:25px;padding:2px;font-size:10px}.turn-line{height:19px;font-size:10px}.canvas-wrap,#gameCanvas{height:auto;min-height:0;flex:1}.action-row{height:24px;min-height:24px;padding:2px}.result{font-size:10px}.log{display:none}.compass{width:70px;bottom:4px;left:4px;padding:2px;grid-template-rows:repeat(3,14px)}}
