:root{--bg:#f7f2e9;--bg-card:#fff;--bg-card-2:#f1ebdd;--border:#ddd2b8;--ink:#2e2a24;--text:#2e2a24;--text-dim:#756b58;--accent:#e4572e;--accent-2:#2e6fe4;--danger:#c0392b;--success:#1f9d55;--zone-bg:#ece3cf;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#1c1a16;--bg-card:#262319;--bg-card-2:#2e2a1f;--border:#46402f;--ink:#f3ede0;--text:#f3ede0;--text-dim:#b5ab93;--accent:#ff8255;--accent-2:#6fa4ff;--danger:#ff6b5b;--success:#4fd188;--zone-bg:#2a2619;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif}#root{flex-direction:column;min-height:100vh;display:flex}.app{flex-direction:column;flex:1;width:100%;max-width:1200px;margin:0 auto;padding:12px 16px 40px;display:flex}.app-header{letter-spacing:.02em;justify-content:space-between;align-items:center;padding:10px 4px 18px;font-size:1.2rem;font-weight:700;display:flex}.app-header-actions,.app-brand{align-items:center;gap:8px;display:flex}.app-logo{object-fit:contain;width:28px;height:28px;display:block}.btn-link{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;padding:6px 12px;font-size:.85rem}.btn-link:hover{color:var(--text);border-color:var(--accent-2)}.btn-primary{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:12px 22px;font-size:1.05rem;font-weight:700}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-secondary{background:var(--bg-card-2);border:1px solid var(--border);color:var(--text);cursor:pointer;text-align:left;border-radius:10px;padding:10px 14px}.btn-secondary:hover{border-color:var(--accent-2)}.screen{flex-direction:column;flex:1;animation:.25s fade-in;display:flex}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.hint{color:var(--text-dim);font-size:.92rem;line-height:1.5}.coord-warning{color:var(--danger);font-weight:600}.setup-screen{width:100%;max-width:560px;margin:0 auto}.game-title{text-align:center;letter-spacing:.04em;flex-direction:column;align-items:center;gap:2px;margin:6px 0 18px;font-size:1.7rem;font-weight:800;display:flex}.title-logo{object-fit:contain;filter:drop-shadow(0 3px 5px #0000004d);width:64px;height:64px;margin-bottom:4px}.game-title .title-zh{color:var(--accent);letter-spacing:.08em;font-size:1.5rem;font-weight:700}.game-title .title-translit{color:var(--text-dim);letter-spacing:.08em;font-size:1rem;font-style:italic;font-weight:500}.setup-form{flex-direction:column;gap:18px;display:flex}.setup-form label{flex-direction:column;gap:6px;font-weight:600;display:flex}.setup-form input[type=text],.setup-form input[type=number]{font:inherit;border:1px solid var(--border);background:var(--bg-card);color:var(--text);border-radius:8px;padding:10px 12px}.size-input{width:80px;margin:0 8px}fieldset{border:1px solid var(--border);border-radius:10px;padding:12px 14px 16px}legend{padding:0 6px;font-weight:700}.radio-row{cursor:pointer;align-items:center;gap:8px;padding:6px 0;font-weight:500;display:flex}.difficulty-row{align-items:flex-start}.difficulty-row span{flex-direction:column;display:flex}.difficulty-row small{color:var(--text-dim);font-weight:400}.size-presets{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.size-chip{border:1px solid var(--border);background:var(--bg-card-2);color:var(--text);cursor:pointer;border-radius:999px;padding:8px 14px;font-weight:600}.size-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.lobby-screen{justify-content:center;align-items:center}.pass-card{background:var(--bg-card);border:1px solid var(--border);text-align:center;border-radius:14px;width:100%;max-width:420px;padding:24px}.pass-name{font-size:1.1rem;font-weight:700}.lobby-list{flex-direction:column;gap:8px;margin:12px 0;display:flex}.lobby-entry small{color:var(--text-dim)}.board-screen{gap:12px}.turn-banner{text-align:center;padding:6px 0;font-size:1.05rem}.pile-board{flex:1;align-items:stretch;gap:0;min-height:0;display:flex;position:relative}.zone{background:var(--zone-bg);border-radius:10px;flex-direction:column;gap:8px;width:19%;min-width:108px;padding:10px 8px;display:flex}.opponent-zone{border-right:3px dashed var(--border);border-radius:10px 0 0 10px}.my-zone{border-left:3px dashed var(--accent);border-radius:0 10px 10px 0}.zone-label{text-align:center;font-size:.85rem;font-weight:700}.zone-count{color:var(--text-dim);font-weight:500}.zone-spacer{flex:1}.valmis-btn{z-index:100000;width:100%;position:relative}.pile-wrap{flex-direction:column;flex:1;min-width:0;padding:0 14px;display:flex}.pile-count{text-align:center;padding:6px 0;font-size:1rem;font-weight:700}.pile-canvas{background:var(--bg-card-2);border:1px solid var(--border);border-radius:12px;width:100%;position:relative}.stones-layer{pointer-events:none;position:absolute;inset:0}.pile-stone{touch-action:none;-webkit-user-select:none;user-select:none;pointer-events:auto;position:absolute}.pile-stone img{pointer-events:none;filter:drop-shadow(0 2px 3px #00000059);width:100%;height:auto;display:block}.pile-stone.grabbable{cursor:grab}.pile-stone.dragging{cursor:grabbing;filter:drop-shadow(0 6px 10px #0006)}.pile-stone:not(.dragging){transition:left .2s,top .2s}.multi-pile-wrap{flex:1;grid-template-columns:repeat(2,1fr);gap:14px;min-width:0;padding:0 14px;display:grid}.multi-pile-slot{opacity:1;flex-direction:column;min-width:0;transition:opacity .2s;display:flex}.multi-pile-slot.dimmed{opacity:.45}.multi-pile-slot.locked .pile-canvas{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent)}.multi-pile-canvas{max-width:230px;min-height:0;margin:0 auto}.gameover-screen{justify-content:center;align-items:center}.gameover-card{background:var(--bg-card);border:1px solid var(--border);text-align:center;border-radius:14px;width:100%;max-width:420px;padding:28px}.gameover-scores{flex-direction:column;gap:8px;margin:16px 0;display:flex}.gameover-row{background:var(--bg-card-2);border-radius:8px;justify-content:space-between;padding:10px 14px;display:flex}.gameover-row.winner{background:color-mix(in srgb, var(--success) 20%, var(--bg-card-2));font-weight:700}@media (width<=640px){.zone{width:24%;min-width:72px;padding:6px 4px}.zone-label{font-size:.72rem}.tray-stone{width:24px}.pile-wrap{padding:0 6px}.game-title{font-size:1.3rem}.game-title .title-zh{font-size:1.15rem}}
