/* ═══════════════════════════════════════════════════════════════
   Board Duel · 站点级布局 + 导航样式 (puzzle-nav.css)
   ────────────────────────────────────────────────────────────────
   供各游戏页 <link rel="stylesheet" href="/assets/css/puzzle-nav.css"> 引用。
   提供: 侧边栏 / 主区 / 顶部栏 / 抽屉导航 / 底部导航 / 通用容器。
   配色参考主站 mathduel.games:深蓝灰侧栏 + 青绿 primary。
   ═══════════════════════════════════════════════════════════════ */

:root{
  --sidebar-bg:#1E293B;
  --sidebar-text:#E2E8F0;
  --sidebar-text-dim:#94A3B8;
  --sidebar-active:rgba(13,148,136,.18);
  --primary-light:#2DD4BF;
  --primary:#0D9488;
  --primary-dark:#0F766E;
  --bg:#F8FAFC;
  --border:#E2E8F0;
  --text:#0F172A;
  --text-light:#475569;
  --success:#10B981;
  --danger:#EF4444;
  --radius:0.75rem;
  --radius-sm:0.5rem;
  --shadow:0 2px 4px -1px rgba(0,0,0,.06),0 1px 2px -1px rgba(0,0,0,.04);
  --touch:44px;
  --p0:#0D9488;
  --p1:#F59E0B;
}

*{box-sizing:border-box}
body{margin:0}

/* ═══ 侧边栏 + 主区 布局 ═══ */
.layout{display:flex;min-height:100vh}
.sidebar{
  width:247px;flex-shrink:0;
  background:var(--sidebar-bg);color:var(--sidebar-text);
  display:flex;flex-direction:column;
  padding:1rem 0.75rem;position:sticky;top:0;height:100vh;overflow-y:auto;gap:0.25rem;
}
.sidebar-brand{
  display:flex;align-items:center;gap:0.5rem;font-weight:800;font-size:1.15rem;
  color:#fff;text-decoration:none;padding:0.5rem 0.75rem 0.75rem;
}
.sidebar-group-label{
  font-size:0.7rem;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--sidebar-text-dim);padding:0.9rem 0.75rem 0.35rem;font-weight:600;
}
.sidebar-link{
  display:flex;align-items:center;gap:0.6rem;color:var(--sidebar-text);
  text-decoration:none;font-weight:500;font-size:0.9rem;padding:0.55rem 0.75rem;
  border-radius:8px;min-height:40px;transition:background .15s,color .15s;
}
.sidebar-link:hover{background:rgba(255,255,255,.08);color:#fff}
.sidebar-link.active{background:var(--sidebar-active);color:white}
.sidebar-link .ico{width:22px;text-align:center;font-size:1rem;flex-shrink:0}
.sidebar-spacer{flex:1}
.sidebar-footer{display:flex;gap:.25rem;padding:.5rem .25rem;flex-wrap:wrap}
.sidebar-footer a{color:var(--sidebar-text-dim);font-size:.78rem;padding:.25rem .5rem;text-decoration:none;border-radius:6px}
.sidebar-footer a:hover{color:#fff;background:rgba(255,255,255,.08)}
.layout-main{flex:1;min-width:0;background:var(--bg)}
.layout-main>.container{padding:1.25rem}

/* 主站风格通用按钮 */
.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn-ghost{background:var(--card,#fff);color:var(--text);border:1.5px solid var(--border)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem .9rem;border-radius:var(--radius-sm);font-weight:600;cursor:pointer;font-size:.9rem;border:1.5px solid transparent;min-height:var(--touch);transition:all .15s;-webkit-tap-highlight-color:transparent}
.btn-primary:hover{background:var(--primary-dark);box-shadow:0 2px 8px rgba(13,148,136,.3)}
.btn:active{transform:scale(.95)}

/* 移动端顶栏(仅移动端) */
.mobile-topbar{display:none}

/* ═══ 通用容器 ═══ */
.container{width:100%;max-width:1200px;margin:0 auto}
.container.narrow{max-width:720px}

/* ═══ 移动端:侧边栏折叠为抽屉 ═══ */
@media (max-width:820px){
  .layout{display:block}
  .mobile-topbar{
    display:flex;align-items:center;gap:.5rem;position:sticky;top:0;z-index:60;
    background:var(--sidebar-bg);color:#fff;padding:.4rem .75rem;
    box-shadow:0 2px 8px rgba(15,23,42,.25);
  }
  .mobile-topbar .topbar-brand{
    display:flex;align-items:center;gap:.4rem;font-weight:800;font-size:1.05rem;
    color:#fff;text-decoration:none;white-space:nowrap;
  }
  .hamburger{
    width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;
    background:none;border:none;color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;border-radius:8px;
    -webkit-tap-highlight-color:transparent;
  }
  .hamburger:hover,.hamburger:focus-visible{background:rgba(255,255,255,.1)}
  .hamburger .close-ico{display:none}
  body.drawer-open .hamburger .open-ico{display:none}
  body.drawer-open .hamburger .close-ico{display:inline}

  .sidebar{
    position:fixed;top:0;left:0;width:280px;max-width:82vw;height:100dvh;
    flex-direction:column;flex-wrap:nowrap;padding:1rem .75rem;z-index:100;
    transform:translateX(-100%);transition:transform .4s cubic-bezier(.25,.8,.25,1);
    box-shadow:4px 0 24px rgba(15,23,42,.35);
  }
  body.drawer-open .sidebar{transform:translateX(0)}
  .sidebar-brand{padding:.5rem .75rem .75rem}
  .sidebar-group-label{display:block}
  .sidebar-spacer,.sidebar-footer{display:flex}
  .sidebar-footer{margin-top:auto}

  .drawer-backdrop{
    position:fixed;inset:0;z-index:90;background:rgba(15,23,42,.55);
    opacity:0;pointer-events:none;transition:opacity .3s ease;
  }
  body.drawer-open .drawer-backdrop{opacity:1;pointer-events:auto}
  body.drawer-open{overflow:hidden}
  .layout-main>.container{padding:.75rem}
}

/* ═══ 底部导航(移动端) ═══ */
.bottom-nav{display:none}
@media (max-width:600px){
  .bottom-nav{
    position:fixed;bottom:0;left:0;right:0;z-index:80;
    background:var(--sidebar-bg);border-top:1px solid rgba(255,255,255,.08);
    display:block;
  }
  .bottom-nav-inner{display:flex;justify-content:space-around;align-items:center;padding:.25rem 0;
    padding-bottom:calc(.25rem + env(safe-area-inset-bottom,0px));}
  .bottom-nav-item{
    display:flex;flex-direction:column;align-items:center;gap:2px;
    color:var(--sidebar-text-dim);text-decoration:none;font-size:.68rem;padding:.35rem .6rem;border-radius:8px;
  }
  .bottom-nav-item .bn-ico{font-size:1.15rem;line-height:1}
  .bottom-nav-item.active{color:var(--primary-light)}
  body.drawer-open .bottom-nav{display:none}
  /* 给底部导航留出空间 */
  .layout-main>.container,.layout-main>.container.narrow{padding-bottom:56px}
}