/* Thanh điều khiển dùng chung cho game độc lập HVSC — đi cùng controls.js.
   Màu bảng lấy từ biến chủ đề --hv-* (themes.json); khi để "Nguyên bản" dùng màu trung tính bên dưới. */
.hvc-panel,.hvc-panel *,.hvc-hd,.hvc-hd *{box-sizing:border-box}
.hvc-panel,.hvc-hd{--c-bg:var(--hv-surface,var(--gp-bg,#1b2133));--c-bg2:var(--hv-surface2,var(--gp-bg2,#262d42));--c-ink:var(--hv-ink,var(--gp-ink,#eef1f8));--c-mut:var(--hv-muted,var(--gp-mut,#a5afc4));
 --c-line:var(--hv-line,var(--gp-line,rgba(255,255,255,.14)));--c-acc:var(--hv-accent,var(--gp-acc,#ff6a3d));--c-acc-ink:var(--hv-accent-ink,#fff);--c-soft:var(--hv-accent-soft,var(--gp-soft,rgba(255,106,61,.16)))}
html.hv-dark .hvc-panel{--c-bg:var(--hv-surface,#1a202c);--c-bg2:var(--hv-surface2,#222937);--c-ink:var(--hv-ink,#e9edf5);--c-mut:var(--hv-muted,#9aa5b8);--c-line:var(--hv-line,#2e3747)}

/* nút trên header */
.hvc-hd{display:flex;align-items:center;gap:6px;margin-left:auto;flex:none}
.hvc-ib{display:inline-grid;place-items:center;width:44px;height:44px;padding:0;border-radius:999px;border:1.5px solid color-mix(in srgb,currentColor 28%,transparent);
 background:transparent;color:inherit;font:400 19px/1 system-ui,"Noto Color Emoji",sans-serif;cursor:pointer;touch-action:manipulation;flex:none}
.hvc-ib:hover{background:color-mix(in srgb,currentColor 12%,transparent)}
.hvc-ib:focus-visible,.hvc-btn:focus-visible,.hvc-chip:focus-visible,.hvc-th:focus-visible,.hvc-x:focus-visible,.nav-cta a:focus-visible{outline:3px solid var(--c-acc,#e31e25);outline-offset:2px}

/* nút Đăng nhập (auth-nav.js thay bằng avatar khi đã đăng nhập) */
.nav-cta{display:flex;align-items:center;flex:none}
.nav-cta>a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px;border-radius:999px;background:var(--hv-accent,#e31e25);color:var(--hv-accent-ink,#fff);
 font:700 14px/1 BVP,system-ui,sans-serif;text-decoration:none;white-space:nowrap}
.nav-cta>a:hover{filter:brightness(1.08)}

/* nút nổi (game canvas) */
.hvc-fab{position:fixed;z-index:900;top:calc(env(safe-area-inset-top,0px) + 8px);left:calc(env(safe-area-inset-left,0px) + 8px);display:flex;gap:6px}
.hvc-fab .hvc-ib{background:rgba(255,255,255,.92);color:#143352;border-color:rgba(20,51,82,.18);box-shadow:0 6px 16px -8px rgba(20,51,82,.45)}

/* bảng điều khiển: mobile = bảng trượt từ dưới */
.hvc-panel{position:fixed;z-index:1001;left:0;right:0;bottom:0;max-height:min(84dvh,720px);overflow:auto;overscroll-behavior:contain;
 background:var(--c-bg);color:var(--c-ink);border-radius:22px 22px 0 0;padding:6px 16px calc(16px + env(safe-area-inset-bottom,0px));
 box-shadow:0 -14px 40px -12px rgba(0,0,0,.35);transform:translateY(105%);visibility:hidden;transition:transform .25s ease,visibility .25s;
 font:500 15px/1.45 BVP,system-ui,sans-serif;text-align:left}
html.hvc-open .hvc-panel{transform:none;visibility:visible}
.hvc-dim{position:fixed;inset:0;z-index:1000;background:rgba(5,8,18,.45);opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
html.hvc-open .hvc-dim{opacity:1;visibility:visible}
.hvc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;position:sticky;top:-6px;background:var(--c-bg);padding:6px 0;z-index:1}
.hvc-title{font-size:16px}
.hvc-x{width:44px;height:44px;border:0;border-radius:999px;background:var(--c-bg2);color:var(--c-ink);font:700 16px/1 system-ui,sans-serif;cursor:pointer}
.hvc-sec{padding:10px 0;border-top:1px solid var(--c-line)}
.hvc-h{margin:0 0 8px;font:800 12px/1.3 BVP,system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--c-mut)}
.hvc-sub{margin:10px 0 6px;font-size:13px;font-weight:700;color:var(--c-mut)}
.hvc-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;min-width:44px;padding:0 14px;border-radius:12px;border:1.5px solid var(--c-line);
 background:var(--c-bg2);color:var(--c-ink);font:700 15px/1.2 BVP,system-ui,sans-serif;cursor:pointer;text-decoration:none;touch-action:manipulation}
.hvc-btn:hover{border-color:var(--c-acc)}
.hvc-wide-btn{display:flex;width:100%;justify-content:flex-start}
.hvc-btn[aria-pressed=true]{border-color:var(--c-acc)}
.hvc-vol{display:grid;grid-template-columns:auto 1fr 3.2em;align-items:center;gap:10px;margin-top:8px;font-size:14px;font-weight:700}
.hvc-vol input{width:100%;min-height:44px;accent-color:var(--c-acc);margin:0}
.hvc-vn{text-align:right;font-variant-numeric:tabular-nums;color:var(--c-mut)}
.hvc-packs,.hvc-themes{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.hvc-chip,.hvc-th{display:flex;align-items:center;gap:8px;min-height:44px;padding:6px 10px;border-radius:12px;border:1.5px solid var(--c-line);background:var(--c-bg2);
 color:var(--c-ink);font:600 13.5px/1.25 BVP,system-ui,sans-serif;text-align:left;cursor:pointer;min-width:0}
.hvc-chip span:last-child,.hvc-th span:last-child{min-width:0;overflow-wrap:anywhere}
.hvc-chip[aria-checked=true],.hvc-th[aria-checked=true]{border-color:var(--c-acc);background:var(--c-soft);box-shadow:inset 0 0 0 1px var(--c-acc)}
.hvc-ic{font-size:18px;flex:none}
.hvc-sw{display:inline-flex;flex:none;border-radius:999px;overflow:hidden;box-shadow:0 0 0 1px rgba(0,0,0,.18)}
.hvc-sw i{display:block;width:10px;height:22px}
.hvc-track{font-weight:700;margin-bottom:8px;overflow-wrap:anywhere}
.hvc-row{display:flex;gap:8px}.hvc-row .hvc-btn{flex:1;font-size:18px}
.hvc-play{border-color:var(--c-acc)}
.hvc-act{display:grid;gap:8px}
.hvc-exit{color:var(--c-ink)}
.hvc-keys{margin:8px 0 0;font-size:12.5px;color:var(--c-mut)}
.hvc-stats{display:grid;gap:8px}
.hvc-stat{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border-radius:12px;background:var(--c-bg2);font-weight:700}
.hvc-stat-l{color:var(--c-mut);font-size:13px}
.hvc-stat-v span,.hvc-stat-v b{background:none!important;padding:0!important;color:inherit!important}
.hvc-stat-v{text-align:right;overflow-wrap:anywhere}

/* desktop ≥1024: bảng cố định bên phải, nội dung game căn giữa phần còn lại */
html.hvc-wide .hvc-panel{left:auto;right:16px;bottom:auto;top:var(--hvc-top,16px);width:296px;max-height:calc(100dvh - var(--hvc-top,16px) - 16px);
 border-radius:18px;transform:none;visibility:visible;transition:none;padding:4px 16px 14px;box-shadow:0 18px 44px -18px rgba(0,0,0,.4),0 0 0 1px var(--c-line)}
html.hvc-wide .hvc-x,html.hvc-wide .hvc-dim,html.hvc-wide .hvc-hd .hvc-ib,html.hvc-wide .hvc-fab{display:none}
html.hvc-wide .hvc-hd{margin-left:auto}
html.hvc-wide.hvc-m-bar body{padding-right:328px}
html.hvc-wide.hvc-m-bar body>.top{margin-right:-328px}

@media(max-width:420px){
 .nav-cta>a{padding:0 12px;font-size:13px}
 .hvc-hd{gap:4px}
 .hvc-hd .hvc-ib:not(.hvc-menu){display:none}   /* màn hẹp: tắt tiếng nằm trong bảng ⚙ (và phím M) */
 body>.top{padding-left:10px;padding-right:10px;gap:8px}
 body>.top .brand{white-space:nowrap}
 .hvc-packs,.hvc-themes{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){.hvc-panel,.hvc-dim{transition:none}}

/* Nút tài khoản (đã đăng nhập) — chép từ web/home/css/home.css (khối "Nút tài khoản", auth-nav.js); --ink thay bằng #143352 vì --ink của game khác nhau */
.acct{position:relative}
.acct-btn{display:inline-flex;align-items:center;justify-content:center;gap:0;width:44px;height:44px;padding:0;border:0;border-radius:999px;background:transparent;color:#143352;font:600 14px/1 BVP,system-ui,sans-serif;cursor:pointer;touch-action:manipulation}
.acct-btn:hover{background:rgba(127,127,127,.16)}
.acct-av{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#e31e25;color:#fff;font-weight:700;font-size:15px}
.acct-nm{display:none}
.acct-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:220px;padding:8px;background:rgba(255,255,255,.97);backdrop-filter:blur(14px);border-radius:16px;box-shadow:0 18px 40px -12px rgba(20,51,82,.35),0 0 0 1px rgba(20,51,82,.08);z-index:960;display:flex;flex-direction:column}
.acct-menu[hidden]{display:none}
.acct-head{padding:8px 12px 10px;border-bottom:1px solid rgba(20,51,82,.08);margin-bottom:4px;display:flex;flex-direction:column;gap:2px}
.acct-head b{font-size:14px;color:#143352;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-head small{color:#64748b;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-menu a,.acct-out{display:flex;align-items:center;min-height:44px;padding:0 12px;border:0;border-radius:10px;background:none;color:#143352;font:500 14px/1 BVP,system-ui,sans-serif;text-decoration:none;text-align:left;cursor:pointer}
.acct-menu a:hover,.acct-out:hover{background:rgba(20,51,82,.06)}
.acct-out{color:#b91c1c;border-top:1px solid rgba(20,51,82,.08);border-radius:0 0 10px 10px;margin-top:4px}
@media(max-width:480px){.acct-menu{right:-4px;min-width:min(240px,86vw)}}
.hvc-go .hvc-btn{font-size:15px;padding:0 10px;white-space:nowrap}

/* Ẩn / Hiện bảng (≥1024): nút chữ rõ trong bảng + thẻ nhỏ "Bảng" ở mép phải khi đang ẩn */
.hvc-fold{display:none;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:999px;border:1.5px solid var(--c-line);background:var(--c-bg2);color:var(--c-ink);font:700 14px/1 BVP,system-ui,sans-serif;cursor:pointer;touch-action:manipulation}
.hvc-fold:hover{border-color:var(--c-acc)}
.hvc-fold:focus-visible,.hvc-show:focus-visible{outline:3px solid var(--c-acc,#ff6a3d);outline-offset:2px}
.hvc-show{display:none;position:fixed;z-index:1001;right:0;top:var(--hvc-top,16px);min-height:48px;padding:0 14px 0 12px;align-items:center;gap:8px;border:0;border-radius:16px 0 0 16px;
 background:var(--c-bg);color:var(--c-ink);font:800 14px/1 BVP,system-ui,sans-serif;cursor:pointer;box-shadow:0 10px 26px -10px rgba(0,0,0,.5),0 0 0 1px var(--c-line);touch-action:manipulation}
.hvc-show::before{content:"◂";color:var(--c-acc)}
.hvc-show,.hvc-show *{box-sizing:border-box}
.hvc-show{--c-bg:var(--hv-surface,var(--gp-bg,#1b2133));--c-ink:var(--hv-ink,var(--gp-ink,#eef1f8));--c-line:var(--hv-line,var(--gp-line,rgba(255,255,255,.14)));--c-acc:var(--hv-accent,var(--gp-acc,#ff6a3d))}
html.hvc-wide .hvc-fold{display:inline-flex}
html.hvc-wide .hvc-top{top:0}
html.hvc-wide.hvc-off .hvc-panel{display:none}
html.hvc-wide.hvc-off .hvc-show{display:inline-flex}
html.hvc-wide.hvc-off.hvc-m-bar body{padding-right:0}
html.hvc-wide.hvc-off.hvc-m-bar body>.top{margin-right:0}
