@import url("/assets/pro-fonts.css?v=32d03c11f2");

/* Shared site header.
   Markup comes from functions/_shared/site-nav.js; this file is the only place
   the header is styled, and every route (dashboard, content pages, generated
   guide articles) loads it. Class names are deliberately distinct from the old
   .dash-* / .site-* headers so nothing from those can leak in. */
.nav-bar{position:relative;z-index:60;display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(180px,1fr);align-items:center;column-gap:20px;padding:0 clamp(24px,4vw,64px);height:76px;background:rgba(255,255,255,.86);border-bottom:1px solid #e8e9eb;-webkit-backdrop-filter:blur(18px) saturate(1.6);backdrop-filter:blur(18px) saturate(1.6);transition:box-shadow .3s ease,border-color .3s ease}
/* Labels must never be clipped or covered by the rest of the header. */
.nav-bar,.nav-utility,.nav-tools{overflow:visible}
.nav-bar.is-scrolled{border-bottom-color:#e3e6e9;box-shadow:0 10px 30px rgba(20,34,50,.07)}
/* Sticky keeps the navigation reachable while reading, but on small screens a
   two-row header would eat too much of the viewport, so it just scrolls away. */
@media(min-width:901px){
  .nav-bar{position:sticky;top:0}
}
.nav-brand{display:flex;align-items:center;gap:12px;color:#181a1e;text-decoration:none;font-size:19px;font-weight:800;letter-spacing:-.4px;white-space:nowrap;min-width:0}
.nav-brand img{width:38px;height:38px;flex:0 0 auto;transition:transform .34s var(--motion-ease,cubic-bezier(.22,.68,.16,1))}
.nav-brand:hover img{transform:rotate(90deg) scale(1.06)}
.nav-primary{display:flex;align-items:center;gap:4px;padding:4px;border-radius:20px;background:#f3f4f5;justify-self:center}
.nav-item{height:38px;padding:0 16px;display:flex;align-items:center;gap:8px;border:0;border-radius:19px;background:transparent;color:#707983;font:inherit;font-size:13px;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .2s ease,color .2s ease,transform .2s ease}
.nav-item:hover{background:#fff;color:#171a1e}
.nav-item:active{transform:translateY(1px) scale(.985)}
.nav-item.active{background:#13b8cf;color:#fff;box-shadow:0 3px 8px rgba(19,184,207,.2)}
.nav-icon{width:19px;height:19px;flex:0 0 auto;stroke:currentColor;transition:transform .34s var(--motion-ease,cubic-bezier(.22,.68,.16,1))}
.nav-item:hover .nav-icon{transform:translateY(-1px) scale(1.06)}
.nav-utility{display:flex;align-items:center;gap:10px;justify-self:end;min-width:0}

/* ---------- Account chip + drop-down menu ---------- */
.nav-account-menu{position:relative}
.nav-account{height:42px;max-width:240px;padding:0 10px 0 5px;display:flex;align-items:center;gap:9px;border:1px solid #e3e7eb;border-radius:21px;background:#fff;color:#1d2228;font:inherit;font-size:13px;font-weight:650;white-space:nowrap;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease}
.nav-account:hover{border-color:#cfd8de;box-shadow:0 4px 14px rgba(20,34,50,.07)}
.nav-account[aria-expanded="true"]{border-color:#13b8cf;box-shadow:0 0 0 3px rgba(19,184,207,.13)}
.nav-avatar-wrap{position:relative;flex:0 0 auto;display:grid}
.nav-avatar{width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;background:#e7f8fa;color:#0798ad;font-size:12px;font-weight:800;overflow:hidden}
.nav-avatar img{display:block;width:100%;height:100%;object-fit:cover;border-radius:inherit}
.nav-menu-dot{position:absolute;right:-1px;top:-1px;width:9px;height:9px;border:2px solid #fff;border-radius:50%;background:#ff5a5f;opacity:0;transform:scale(.4);transition:opacity .2s ease,transform .25s cubic-bezier(.34,1.56,.64,1)}
.nav-account-menu:has(.announcement-nav-dot:not([hidden])) .nav-menu-dot,
.nav-account-menu:has(.social-nav-count:not([hidden])) .nav-menu-dot{opacity:1;transform:none}
.nav-account-name{display:block;min-width:0;max-width:130px;overflow:hidden;text-overflow:ellipsis}
.nav-account-chevron{width:16px;height:16px;flex:0 0 auto;color:#8a939d;transition:transform .25s cubic-bezier(.22,.68,.16,1)}
.nav-account[aria-expanded="true"] .nav-account-chevron{transform:rotate(180deg);color:#0b9db2}
.pro-badge{position:relative;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;height:19px;padding:0 7px;border:1px solid #d3e3ff;border-radius:4px;background:linear-gradient(125deg,#d4f9f9 0%,#b9c9fa 25%,#efd9f6 48%,#eafcff 70%,#a4d7ed 100%);color:#40426c;font:700 10px/1 "Aim Pro Oxanium",sans-serif;letter-spacing:.5px;vertical-align:middle;white-space:nowrap;text-shadow:none;font-synthesis:none;box-shadow:inset 0 1px #fff9,0 0 7px #bcbeff18}
.pro-badge:after{content:"";position:absolute;inset:1px;border:1px solid #ffffff50;border-radius:2px;pointer-events:none}
.leaderboard-player .pro-badge,.social-profile-identity .pro-badge{margin-left:6px;vertical-align:middle}

.nav-menu-panel{position:absolute;right:0;top:calc(100% + 10px);z-index:80;width:320px;padding:8px;border:1px solid #e6eaee;border-radius:16px;background:#fff;box-shadow:0 22px 50px rgba(20,34,50,.16),0 2px 6px rgba(20,34,50,.05);transform-origin:calc(100% - 40px) -6px;opacity:0;transform:translateY(-6px) scale(.97);transition:opacity .16s ease,transform .2s cubic-bezier(.22,.68,.16,1)}
.nav-account-menu.is-open .nav-menu-panel{opacity:1;transform:none;transition:opacity .18s ease,transform .26s cubic-bezier(.16,1,.3,1)}
.nav-menu-panel[hidden]{display:none}
.nav-profile-entry{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:0;border-radius:11px;background:#f5f8f9;color:#1d2228;font:inherit;text-align:left;text-decoration:none;cursor:pointer;transition:background-color .18s ease}
.nav-profile-entry:hover{background:#ecf6f8}
.nav-profile-copy{display:grid;gap:3px;min-width:0}
.nav-profile-copy strong{font-size:13px}
.nav-profile-copy small{color:#87919b;font-size:11px}
.nav-balance-row{display:grid;justify-items:end;gap:3px;min-width:0}
.nav-coins{color:#9a6e18;font-size:11px;font-weight:750;font-variant-numeric:tabular-nums;white-space:nowrap}
.nav-skin-coins{color:#0b8fa3}
/* minmax(0,1fr)：列宽固定在面板里，英文长标签（Cosmetics shop、Community Court）不再把格子撑出菜单（2026-11-15）。 */
.nav-menu-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:8px 0;padding:0}
.nav-menu-grid .nav-tool{position:relative;min-width:0;min-height:66px;height:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:6px 2px;border:0;border-radius:11px;background:transparent;color:#5f6a75;font:inherit;text-decoration:none;cursor:pointer;transition:background-color .16s ease,color .16s ease}
.nav-menu-grid .nav-tool:hover,.nav-menu-grid .nav-tool:focus-visible{background:#f2f7f8;color:#078fa3;outline:none}
.nav-menu-grid .nav-tool.active{color:#078fa3;background:#eaf8fa}
.nav-tool-glyph{width:21px;height:21px;stroke:currentColor;transition:transform .2s cubic-bezier(.22,.68,.16,1)}
.nav-menu-grid .nav-tool:hover .nav-tool-glyph{transform:translateY(-1px)}
.nav-menu-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.2}
/* 菜单格子里的标签：放不下就在单词之间换成两行、居中，不截断。 */
.nav-menu-grid .nav-menu-label{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;text-align:center;font-size:11px;line-height:1.2}
/* 英文标签更长（Announcements 一个词就要 82px）：英文菜单放宽到 380px，单词不会被拆开。 */
:lang(en) .nav-menu-panel{width:380px}
.nav-menu-grid .announcement-nav-dot,.nav-menu-grid .social-nav-count{position:absolute;top:8px;right:calc(50% - 18px)}
.nav-menu-foot{display:flex;align-items:center;justify-content:space-between;padding:8px 6px 2px 10px;border-top:1px solid #eef1f3;color:#87919b;font-size:11px}
.nav-lang{display:flex;align-items:center;padding:3px;border-radius:9px;background:#f3f4f5}
.nav-lang a{min-width:34px;padding:5px 9px;border-radius:7px;color:#7b848f;font-size:11px;text-align:center;text-decoration:none;transition:background-color .18s ease,color .18s ease}
.nav-lang a:hover{color:#171a1e}
.nav-lang a.active{background:#fff;color:#1c2024;box-shadow:0 1px 4px rgba(20,28,40,.08)}

@media(max-width:1240px){
  .nav-bar{column-gap:14px;padding:0 22px}
  .nav-brand{gap:10px;font-size:17px}
  .nav-brand img{width:34px;height:34px}
  .nav-item{gap:7px;padding:0 12px;font-size:12px}
  .nav-icon{width:17px;height:17px}
}
/* The brand name stays visible on laptops; only the logo remains once the
   header is too narrow to hold it. */
@media(max-width:1100px){
  .nav-brand{font-size:15px}
}
@media(max-width:900px){
  .nav-bar{grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;row-gap:10px;column-gap:12px;height:auto;min-height:0;padding:12px 16px}
  .nav-brand{gap:9px;font-size:15px}
  .nav-brand img{width:30px;height:30px}
  .nav-primary{grid-column:1/-1;grid-row:2;justify-self:stretch;justify-content:center;gap:4px}
  .nav-item{flex:1;justify-content:center;min-width:0;padding:0 9px;font-size:12px}
  .nav-utility{grid-column:2;grid-row:1}
}
@media(max-width:560px){
  .nav-brand>span{display:none}
  .nav-account{padding-right:8px}
  .nav-account-name,.nav-account>.pro-badge{display:none}
  .nav-menu-panel,:lang(en) .nav-menu-panel{position:fixed;left:12px;right:12px;top:64px;width:auto}
  .nav-brand img{width:38px;height:38px}
  .nav-item{height:36px;gap:5px;padding:0 5px;font-size:11px}
  .nav-icon{width:16px;height:16px}
}
@media(prefers-reduced-motion:reduce){
  .nav-bar,.nav-brand img,.nav-item,.nav-icon,.nav-tool,.nav-tool-glyph,.nav-account,.nav-lang a,.nav-menu-panel,.nav-account-chevron,.nav-menu-dot{transition:none!important}
  .nav-brand:hover img,.nav-item:hover .nav-icon,.nav-tool:hover .nav-tool-glyph{transform:none}
  .nav-menu-panel{transform:none!important}
}
