/*@3.GAHC.1*/

/*@3.GAHC.2*/
.g-header {
  --gh-ctrl: 36px;
  position: sticky; inset-block-start: 0; z-index: 100;
  display: flex; align-items: center; gap: 0.6rem;
  padding-inline: 1.5rem; height: calc(64px + var(--sa-t));
  padding-block-start: var(--sa-t);
  background: color-mix(in srgb, var(--bg-surface) 90%, transparent);
  backdrop-filter: blur(14px) saturate(150%);
  -webkit-backdrop-filter: blur(14px) saturate(150%);
  border-block-end: 1px solid var(--border-color);
}

/*@3.GAHC.3*/
.g-logo {
  display: flex; align-items: center; gap: 0.55rem;
  flex-shrink: 0; text-decoration: none;
  font-weight: 800; font-size: 0.95rem; color: var(--text-primary);
}
.g-logo-mark { width: 26px; height: 26px; display: block; }
.g-logo-text { white-space: nowrap; }

/*@3.GAHC.4*/
.g-header .g-back,
.g-header .g-lang,
.g-header .g-more,
.g-header .g-seg-btn,
.g-header .toggle-btn {
  width: var(--gh-ctrl); height: var(--gh-ctrl);
  min-width: var(--gh-ctrl); min-height: var(--gh-ctrl);
  flex-shrink: 0; padding: 0;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid transparent; border-radius: var(--radius-md);
  background: var(--bg-elevated); color: var(--text-secondary);
  cursor: pointer; transition: color 0.2s, background 0.2s, border-color 0.2s;
}
.g-header .g-back:hover,
.g-header .g-lang:hover,
.g-header .g-more:hover,
.g-header .g-seg-btn:hover,
.g-header .toggle-btn:hover {
  color: var(--text-primary); border-color: var(--brand-400, #a78bfa);
}
[dir="ltr"] .g-back i { transform: scaleX(-1); }

/*@3.GAHC.5*/
.g-title {
  margin: 0; flex-shrink: 1; min-width: 0;
  font-size: 0.95rem; font-weight: 800; color: var(--text-primary);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.g-title-link { text-decoration: none; transition: color 0.2s; }
.g-title-link:hover { color: var(--brand-400, #a78bfa); }

/*@3.GAHC.6*/
.g-center {
  display: inline-flex; align-items: center; gap: 0.5rem;
  min-width: 0; flex-shrink: 1;
}
.g-title-chip {
  display: inline-flex; align-items: center; gap: 0.45rem; min-width: 0; max-width: 100%;
  padding: 0.32rem 0.7rem; border-radius: 9999px;
  background: var(--bg-elevated); border: 1px solid var(--border-color);
  text-decoration: none; transition: background 0.2s, border-color 0.2s;
}
a.g-title-chip { cursor: pointer; }
a.g-title-chip:hover {
  background: color-mix(in srgb, var(--brand-400, #a78bfa) 12%, var(--bg-elevated));
  border-color: color-mix(in srgb, var(--brand-400, #a78bfa) 42%, var(--border-color));
}
.g-title-chip .g-title { flex-shrink: 1; min-width: 0; }
.g-title-ico { font-size: 0.9rem; flex-shrink: 0; color: var(--text-secondary); }
.g-title-caret { font-size: 0.7rem; color: var(--text-muted); flex-shrink: 0; }
[dir="ltr"] .g-title-caret { transform: scaleX(-1); }

.g-spacer { flex: 1; }
/*@3.GAHC.7*/
.g-search-slot { flex: 1; min-width: 150px; max-width: 480px; position: relative; margin-inline: auto; }
/*@3.GAHC.8*/
.g-header .dash-search-input { height: var(--gh-ctrl); }

/*@3.GAHC.9*/
.g-nav-seg {   /*@3.GAHC.10*/
  display: flex; flex-shrink: 0;
  border: 1px solid var(--border-color); border-radius: var(--radius-md); overflow: hidden;
}
/*@3.GAHC.11*/
.g-seg-btn { text-decoration: none; }
.g-seg-btn[aria-disabled="true"] { opacity: 0.35; pointer-events: none; cursor: default; }

/*@3.GAHC.12*/
.g-tail { display: flex; align-items: center; gap: 0.4rem; flex-shrink: 0; margin-inline-start: auto; }
.g-search-slot ~ .g-tail { margin-inline-start: 0; }
.g-inline { display: flex; align-items: center; gap: 0.4rem; }
.g-inline:empty { display: none; }
.g-header .g-more { display: none; }          /*@3.GAHC.13*/
.g-header.g-has-more .g-more { display: flex; }
.g-menu-item { text-decoration: none; }
/*@3.GAHC.14*/

/*@3.GAHC.15*/
.g-header .g-menu {
  position: absolute; inset-block-start: calc(100% + 6px); inset-inline-end: 0.6rem;
  flex-direction: column; align-items: stretch; gap: 0.1rem;
  min-width: 186px; max-width: min(280px, 78vw); padding: 0.35rem;
  background: color-mix(in srgb, var(--bg-card) 88%, transparent);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border: 1px solid var(--border-color); border-radius: var(--radius-xl);
  box-shadow: 0 12px 32px -10px rgba(0, 0, 0, 0.5);
  display: none; z-index: 200;
}
.g-header.g-menu-open .g-menu { display: flex; animation: gMenuIn 0.2s cubic-bezier(.4, 0, .2, 1); }
@keyframes gMenuIn {
  from { opacity: 0; transform: translateY(-6px) scale(.97); }
  to   { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) { .g-header.g-menu-open .g-menu { animation: none; } }
/*@3.GAHC.16*/
.g-header .g-menu::before {
  content: ''; position: absolute; inset-block-start: -5px; inset-inline-end: 0.85rem;
  width: 9px; height: 9px; transform: rotate(45deg);
  background: var(--bg-card);
  border-block-start: 1px solid var(--border-color);
  border-inline-start: 1px solid var(--border-color);
}

/*@3.GAHC.17*/
.g-header .g-menu .g-menu-item, .g-header .g-menu .toggle-btn, .g-header .g-menu .font-size-group {
  width: 100%; min-width: 0; height: auto; min-height: 0;
  justify-content: flex-start; gap: 0.6rem;
  padding: 0.5rem 0.6rem; border-radius: var(--radius-lg);
  background: transparent; border-color: transparent;
  color: var(--text-secondary); font-size: 0.84rem; font-weight: 700;
  /*@3.GAHC.18*/
  font-family: inherit; letter-spacing: normal;
}
.g-header .g-menu .font-size-group { justify-content: center; }
.g-header .g-menu .g-menu-item:hover, .g-header .g-menu .toggle-btn:hover,
.g-header .g-menu .g-menu-item:focus-visible {
  background: var(--bg-elevated); border-color: transparent; color: var(--st-accent, #a78bfa);
}

/*@3.GAHC.19*/
.g-header .g-menu .g-menu-ico {
  width: 26px; height: 26px; flex-shrink: 0; border-radius: var(--radius-md);
  background: var(--bg-elevated); display: grid; place-items: center;
  font-size: 0.78rem; line-height: 1; transition: background 0.2s, color 0.2s;
}
.g-header .g-menu .g-menu-item:hover .g-menu-ico, .g-header .g-menu .toggle-btn:hover .g-menu-ico {
  background: color-mix(in srgb, var(--st-accent, #a78bfa) 15%, transparent);
  color: var(--st-accent, #a78bfa);
}
.g-header .g-menu .g-menu-label {
  flex: 1; min-width: 0; text-align: start;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/*@3.GAHC.20*/
.g-header .g-inline .g-menu-label { display: none; }
.g-header .g-inline .g-menu-ico { display: contents; }
/*@3.GAHC.21*/
.g-header > .g-menu-item .g-menu-label { display: none; }
.g-header > .g-menu-item .g-menu-ico { display: contents; }

/*@3.GAHC.22*/
@media (max-width: 640px) {
  .g-header { --gh-ctrl: 40px; padding-inline: 0.85rem; gap: 0.4rem; }
  .g-logo-text { display: none; }
  .g-title { font-size: 0.85rem; }

  /*@3.GAHC.23*/
  .g-header > h1.g-title { display: none; }
  /*@3.GAHC.24*/
  .g-header .g-search-slot { flex: 1 1 0; min-width: 150px; max-width: none; margin-inline: 0; }
  /*@3.GAHC.25*/
  .g-center { flex: 1; min-width: 0; gap: 0.35rem; justify-content: center; }
  .g-v-module .g-spacer, .g-v-course .g-spacer { display: none; }
  .g-title-chip { padding: 0.28rem 0.55rem; }

}

/*@3.GAHC.49*/
:where(:root) {
  --shell-max: 1500px;
  --sb-w: 0px;
  --content-w: calc(min(100vw, var(--shell-max)) - var(--sb-w));
}
@media (min-width: 1025px) {
  :where(:root) { --sb-w: 208px; }
  html.sb-collapsed { --sb-w: 64px; }
}

/*@3.GAHC.26*/
html.has-app-shell body { min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; }
.app-shell { flex: 1; display: flex; gap: 0; max-width: 1500px; width: 100%; margin: 0 auto; }
.app-shell-main { flex: 1; min-width: 0; }
/*@3.GAHC.27*/
.app-sidebar {
  width: 208px; flex-shrink: 0; display: none;
  padding: 1.5rem 0.75rem;
  border-inline-end: 1px solid var(--border-color);
  position: sticky; inset-block-start: calc(64px + var(--sa-t));
  height: calc(100vh - 64px - var(--sa-t));
  height: calc(100dvh - 64px - var(--sa-t)); overflow-y: auto;
  overscroll-behavior: contain;
}
.app-sidebar::-webkit-scrollbar { width: 5px; }
.app-sidebar::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 9999px; }
.app-sidebar .dash-side-group { margin-bottom: 1.25rem; }
.app-sidebar .dash-side-label {
  font-size: 0.66rem; font-weight: 800; letter-spacing: 0.06em;
  color: var(--text-muted); text-transform: uppercase;
  padding: 0 0.75rem; margin-bottom: 0.4rem;
}
.app-sidebar .dash-side-item {
  display: flex; align-items: center; gap: 0.6rem; width: 100%;
  padding: 0.55rem 0.75rem; margin-bottom: 2px; border-radius: var(--radius-md);
  font-family: inherit; font-size: 0.84rem; font-weight: 700;
  color: var(--text-secondary); text-decoration: none;
}
.app-sidebar .dash-side-item i { width: 16px; text-align: center; font-size: 0.8rem; flex-shrink: 0; transition: color .18s; }
/*@3.GAHC.46*/
.app-sidebar .dash-side-item:hover { background: rgba(167,139,250,0.07); color: #a78bfa; }
/*@3.GAHC.28*/
.app-sidebar {
  --tint-on: var(--st-accent, #a78bfa);
}
.app-sidebar .dash-side-item.active {
  background: rgba(167,139,250,0.1);
  color: #a78bfa;
  font-weight: 800;
}
.app-sidebar .dash-side-item.active i {
  color: #a78bfa;
}
/*@3.GAHC.29*/
html.sb-collapsed .app-sidebar .dash-side-item.active {
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--tint-on) 30%, transparent);
}

@media (min-width: 1025px) {
  .app-sidebar { display: flex; flex-direction: column; }
}

/*@3.GAHC.44*/
.dash-side[data-order-edit] .dash-side-item {
  touch-action: none; cursor: grab; position: relative;
  user-select: none; -webkit-user-select: none;
  -webkit-user-drag: none;
}
/*@3.GAHC.45*/
html:not(.sb-collapsed) .dash-side[data-order-edit] .dash-side-item {
  padding-inline-end: 1.6rem;
}
html:not(.sb-collapsed) .dash-side[data-order-edit] .dash-side-item::after {
  content: ''; position: absolute; inset-inline-end: .5rem; inset-block-start: 50%;
  transform: translateY(-50%);
  inline-size: 8px; block-size: 11px; opacity: .45;
  background-image: radial-gradient(currentColor 1px, transparent 1.2px);
  background-size: 4px 4px;
}
.dash-side[data-order-edit] .dash-side-item.gdo-drag {
  cursor: grabbing; z-index: 2;
  color: var(--st-accent, #a78bfa);
  background: color-mix(in srgb, var(--st-accent, #a78bfa) 14%, transparent);
}

/*@3.GAHC.30*/

/*@3.GAHC.31*/
@media (min-width: 1025px) {
  .dash-side { display: flex; flex-direction: column; }
}

/*@3.GAHC.32*/
.app-sidebar, .dash-side { z-index: 30; }

.sb-toggle {
  margin-block-start: auto; flex-shrink: 0;
  display: flex; align-items: center; gap: 0.6rem; width: 100%;
  padding: 0.7rem 0.75rem 0.55rem;
  border: 0; border-block-start: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: transparent; color: var(--text-muted);
  font-family: inherit; font-size: 0.78rem; font-weight: 700;
  cursor: pointer; text-align: start;
  transition: background 0.2s, color 0.2s;
}
.sb-toggle:hover { background: var(--bg-elevated); color: var(--text-primary); }
.sb-toggle i { width: 16px; text-align: center; font-size: 0.78rem; flex-shrink: 0; transition: transform 0.2s; }
/*@3.GAHC.33*/
html[dir="ltr"] .sb-toggle i,
html.sb-collapsed .sb-toggle i { transform: scaleX(-1); }
html[dir="ltr"].sb-collapsed .sb-toggle i { transform: none; }

/*@3.GAHC.34*/
html.sb-collapsed .app-sidebar,
html.sb-collapsed .dash-side {
  width: 64px; padding-inline: 0.55rem;
  /*@3.GAHC.35*/
  overflow: visible;
}
@media (max-height: 620px) {
  html.sb-collapsed .app-sidebar, html.sb-collapsed .dash-side { overflow-y: auto; }
  html.sb-collapsed .dash-side-item::after, html.sb-collapsed .sb-toggle::after { display: none; }
}
html.sb-collapsed .dash-side-item,
html.sb-collapsed .sb-toggle {
  justify-content: center; gap: 0; padding-inline: 0; position: relative;
}
/*@3.GAHC.36*/
html.sb-collapsed .dash-side-item > span:not(.dash-side-badge),
html.sb-collapsed .sb-toggle > span { display: none; }
html.sb-collapsed .dash-side-item i, html.sb-collapsed .sb-toggle i { font-size: 0.92rem; width: auto; }
html.sb-collapsed .dash-side-badge {
  position: absolute; inset-block-start: 5px; inset-inline-end: 8px;
  min-width: 8px; width: 8px; height: 8px; padding: 0; border-radius: 50%;
  font-size: 0; line-height: 0; overflow: hidden;
}
/*@3.GAHC.37*/
html.sb-collapsed .dash-side-label { display: none; }
html.sb-collapsed .dash-side-group { margin-bottom: 0.75rem; }
html.sb-collapsed .dash-side-group + .dash-side-group {
  border-block-start: 1px solid var(--border-color); padding-block-start: 0.75rem;
}

/*@3.GAHC.38*/
html.sb-collapsed .dash-side-item::after,
html.sb-collapsed .sb-toggle::after {
  content: attr(data-tip);
  position: absolute; inset-inline-start: calc(100% + 10px); inset-block-start: 50%;
  transform: translateY(-50%); white-space: nowrap;
  padding: 0.3rem 0.6rem; border-radius: var(--radius-md);
  background: var(--bg-card); border: 1px solid var(--border-color);
  color: var(--text-primary); font-size: 0.76rem; font-weight: 700;
  box-shadow: 0 10px 26px -10px rgba(0, 0, 0, 0.55);
  opacity: 0; pointer-events: none; z-index: 120; transition: opacity 0.15s;
}
html.sb-collapsed .dash-side-item:hover::after,
html.sb-collapsed .dash-side-item:focus-visible::after,
html.sb-collapsed .sb-toggle:hover::after,
html.sb-collapsed .sb-toggle:focus-visible::after { opacity: 1; }

/*@3.GAHC.39*/
html.sb-collapsed .app-shell, html.sb-collapsed .dash-body { max-width: 1720px; }

/*@3.GAHC.40*/
.dash-search-input {
  width: 100%; height: 38px;
  padding-inline: 2.25rem 3.25rem;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border-color);
  background: var(--bg-elevated);
  color: var(--text-primary);
  font-family: inherit; font-size: 0.85rem;
}
.dash-search-input::placeholder { color: var(--text-muted); }
.dash-search-ph-mask {
  position: absolute; inset-block: 1px; inset-inline-start: 2.25rem; inset-inline-end: 3.25rem;
  display: flex; align-items: center; overflow: hidden; pointer-events: none;
}
.dash-search-ph {
  flex: 0 0 auto; white-space: nowrap;
  color: var(--text-muted); font-size: 0.85rem; will-change: transform;
}
.dash-search-ph[hidden] { display: none; }
@keyframes dash-ph-marquee {
  0%, 12%   { transform: translateX(0); }
  47%, 53%  { transform: translateX(var(--mq-shift, 0px)); }
  88%, 100% { transform: translateX(0); }
}
.dash-search-ph.is-marquee { animation: dash-ph-marquee 10s ease-in-out infinite; }
.dash-search-ph.is-paused { animation: none; transform: translateX(0); }
@media (prefers-reduced-motion: reduce) {
  .dash-search-ph.is-marquee { animation: none; }
  .dash-search-ph { flex: 0 1 auto; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
}
.dash-search-icon {
  position: absolute; inset-inline-start: 0.85rem; top: 50%; transform: translateY(-50%);
  color: var(--text-muted); font-size: 0.8rem; pointer-events: none;
}
.dash-search-kbd {
  position: absolute; inset-inline-end: 0.6rem; top: 50%; transform: translateY(-50%);
  font-family: 'JetBrains Mono', monospace; font-size: 0.65rem; font-weight: 700;
  color: var(--text-muted); background: var(--bg-card);
  border: 1px solid var(--border-color); border-radius: var(--radius-sm);
  padding: 2px 5px; pointer-events: none;
}
.gs-panel {
  position: absolute; inset-inline: 0; top: calc(100% + 6px); z-index: 300;
  max-height: min(60vh, 440px); overflow-y: auto;
  background: var(--bg-card); border: 1px solid var(--border-color);
  border-radius: var(--radius-lg); box-shadow: 0 16px 40px var(--shadow-base);
  padding: 0.35rem;
}
.gs-panel[hidden] { display: none; }
.gs-group {
  padding: 0.4rem 0.6rem 0.25rem;
  font-size: 0.66rem; font-weight: 800; color: var(--text-muted);
  position: sticky; top: 0; background: var(--bg-card);
}
.gs-item {
  display: flex; align-items: baseline; gap: 0.5rem;
  padding: 0.45rem 0.6rem; border-radius: var(--radius-md);
  text-decoration: none; color: var(--text-primary);
}
.gs-item:hover, .gs-item.is-active { background: var(--bg-elevated); }
.gs-item.is-active { outline: 1px solid var(--brand-500, #a78bfa); outline-offset: -1px; }
.gs-item-title { flex: 1; min-width: 0; font-size: 0.82rem; font-weight: 600;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gs-item-title mark {
  background: color-mix(in srgb, #a78bfa 28%, transparent);
  color: inherit; border-radius: 3px; padding: 0 1px;
}
.gs-item-sub { flex-shrink: 0; font-size: 0.66rem; font-weight: 700; color: var(--text-muted); }
.gs-empty { padding: 1rem 0.7rem; text-align: center; font-size: 0.78rem; color: var(--text-muted); }

/*@3.GAHC.41*/
@media (max-width: 640px) {
  .dash-search-kbd { display: none; }
  /*@3.GAHC.42*/
  .g-header .dash-search-input { padding-inline: 2.1rem 0.7rem; }
  .g-header .dash-search-ph-mask { inset-inline: 2.1rem 0.7rem; }
  .g-header .dash-search-icon { inset-inline-start: 0.7rem; }
}

/*@3.GAHC.43*/
@media print { .g-header, .app-sidebar { display: none; } }
