@media (max-width: 768px) {
  .user-info-block {
    flex-direction: column;
    align-items: center;
    width: 100%;
    gap: 0.5rem;
  }
  .user-info-block .nav-link {
    width: 100%;
    max-width: 320px;
    box-sizing: border-box;
    text-align: center;
    margin: 0 auto;
    display: block;
  }
}
@media (max-width: 768px) {
  .nav-content {
    flex-direction: column;
    align-items: stretch;
    position: static;
    gap: 0.5rem;
  }
  .nav-group {
    width: 100%;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
  }
  .user-info-block {
    position: static;
    transform: none;
    justify-content: center;
    width: 100%;
    margin-top: 0.5rem;
    gap: 0.5rem;
  }
}
@media (max-width: 1023px) {
  .hamburger {
    display: block;
    position: fixed;
    top: 12px;
    left: 16px;
    z-index: 1101;
    font-size: 32px;
    background: none;
    border: none;
    color: white;
    cursor: pointer;
    padding: 8px 12px;
    line-height: 1;
  }
}

@media (max-width: 1200px) {
  .form-container {
    width: 70%;
  }
}

@media (max-width: 1023px) {
  .settings-page-wrapper {
    position: fixed;
    inset: 0 auto 0 0;
    width: 280px;
    max-width: 85vw;
    transform: translateX(-100%);
    transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1100;
    overflow-y: auto;
    box-shadow: 3px 0 20px var(--theme-black-alpha-50, rgba(0, 0, 0, 0.5));
  }

  .settings-page-wrapper.active {
    transform: translateX(0);
  }

  body.menu-open {
    overflow: hidden;
    height: 100vh;
  }

  .settings-content {
    padding-top: 60px;
    padding-left: 12px;
    padding-right: 12px;
  }

  .settings-page-wrapper .settings-layout {
    flex-direction: column;
  }

  .settings-page-wrapper h3 {
    margin: 16px 0 12px 16px;
    font-size: 1.4rem;
  }

  .card,
  .settings-form,
  .config-grid {
    width: 100% !important;
    max-width: 100% !important;
  }

  .ip-list {
    overflow-x: auto;
  }

  .ip-table {
    min-width: 480px;
  }

  .config-grid {
    grid-template-columns: 1fr !important;
    gap: 12px;
  }

  input,
  button,
  textarea {
    font-size: 16px;
    padding: 12px 16px;
    min-height: 48px;
  }
}

@media (max-width: 992px) {
  .config-grid {
    grid-template-columns: 1fr;
  }

  .config-item {
    padding: 0.8rem;
  }

  .config-description {
    font-size: 0.9rem;
  }
}

@media (max-width: 992px) and (orientation: landscape) {
  .settings-content {
    max-height: calc(100vh - 120px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
}

@media (max-width: 768px) {
  body {
    background-attachment: scroll;
  }

  h1 {
    font-size: 1.5rem;
  }

  .container {
    padding: 1rem;
  }

  .file-list {
    flex-direction: column;
    align-items: center;
    width: 100%;
    gap: 0.5rem;
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;
  }

  .column {
    width: 100%;
    max-width: 100%;
    margin-bottom: 1rem;
    padding: 1rem;
    height: auto;
  }

  table {
    font-size: 0.85rem;
  }

  th,
  td {
    padding: 0.3rem 0.5rem;
  }

  .form-container {
    width: 90%;
    padding: 1rem;
  }

  .download-button {
    width: 100%;
    padding: 0.5rem;
  }

  .navigation {
    flex-direction: column;
    gap: 1rem;
    padding: 0.5rem;
  }

  .nav-group {
    width: 100%;
    flex-direction: column;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0;
  }

  .nav-link {
    flex: 1;
    text-align: center;
  }

  .qr-modal-container .modal-dialog {
    max-width: 90%;
  }

  .config-grid {
    grid-template-columns: 1fr;
    gap: 1rem;
  }

  .bw-aggregate {
    grid-template-columns: 1fr;
    gap: 0.8rem;
  }

  .bw-stat {
    flex: 1 1 100%;
  }

  .status-card,
  .card {
    padding: 1rem;
  }

  .ip-table {
    font-size: 0.85-0.9rem;
  }

  .ip-table th,
  .ip-table td {
    padding: 0.5rem 0.3rem;
  }

  .examples {
    grid-template-columns: 1fr;
  }

  .badge {
    font-size: 0.75rem;
    padding: 0.2rem 0.5rem;
  }

  .toggle-label.has-tooltip:hover::after {
    width: 240px;
    left: 50%;
    transform: translateX(-50%);
  }

  .toggle-label.has-tooltip:hover::before {
    left: 50%;
    transform: translateX(-50%);
  }
}

@media (max-width: 768px) and (orientation: landscape) {
  .settings-content {
    max-height: calc(100vh - 100px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
}

@media (max-width: 480px) {
  h1 {
    font-size: 1.2rem;
  }

  .form-container {
    width: 95%;
    padding: 0.8rem;
  }

  .download-button {
    font-size: 0.8rem;
    padding: 0.4rem;
  }

  .toggle-switch {
    width: 50px;
    height: 28px;
  }

  .toggle-slider:before {
    width: 22px;
    height: 22px;
    left: 3px;
    bottom: 3px;
  }

  .countdown-timer {
    font-size: 2rem;
  }

  .modal-dialog {
    max-width: 80%;
  }

  .user-info {
    margin-right: 0px;
  }

  .username {
    font-size: 0.9rem;
  }

  .user-role {
    font-size: 0.8rem;
    padding: 0.25rem 0.6rem;
  }
}

@media (hover: none) and (pointer: coarse) {
  .file-list,
  .user-management-tabs {
    -webkit-overflow-scrolling: touch;
    overflow-x: auto;
  }
}

/* ===== Universal hamburger nav ===== */

/* Desktop: brand-row is transparent, toggle hidden */
.nav-brand-row {
  display: flex;
  align-items: center;
  gap: 0.6rem;
}

.nav-mobile-toggle {
  display: none;
}

/* Mobile/tablet: hamburger active */
@media (max-width: 1024px) {
  .nav-mobile-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    min-width: 44px;
    min-height: 44px;
    padding: 0.45rem 0.7rem;
    border: 1px solid rgba(114, 144, 158, 0.45);
    border-radius: 0.68rem;
    background: rgba(28, 40, 48, 0.88);
    color: #e6f0f5;
    font-size: 0.84rem;
    font-weight: 700;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.2s ease, border-color 0.2s ease;
  }

  .nav-mobile-toggle:hover {
    background: rgba(45, 62, 72, 0.94);
    border-color: rgba(114, 144, 158, 0.7);
  }

  .nav-mobile-toggle-icon {
    font-size: 1.1rem;
    line-height: 1;
  }

  /* Expanded nav-content */
  .navigation.nav-is-open .nav-content {
    display: flex;
    flex-direction: column;
    max-height: calc(100vh - 90px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* Overlay when nav is open on mobile */
body.nav-mobile-open {
  overflow: hidden;
  height: 100dvh;
}

/* Hide in-page section tabs while main nav drawer is open */
body.nav-mobile-open .routing-mobile-tabs,
body.nav-mobile-open.settings-nav-merged #sidebar.settings-page-wrapper {
  display: none !important;
}

/* Sidebar shell nav overrides */
@media (max-width: 1023px) {
  .app-shell {
    flex-direction: column;
    max-width: none;
    margin-inline: 0;
    padding-inline: 0;
  }

  .navigation {
    width: 100%;
    flex-basis: auto;
    height: auto;
    position: static;
    top: auto;
    max-height: none;
    overflow: visible;
    align-self: stretch;
    border-radius: 0;
    border-right: none;
    border-bottom: 1px solid rgba(113, 143, 158, 0.3);
    padding: 0.65rem;
    gap: 0.55rem;
    z-index: auto;
  }

  .nav-brand-row {
    justify-content: space-between;
    width: 100%;
  }

  .nav-brand {
    padding: 0.52rem 0.58rem;
  }

  .nav-brand-title {
    font-size: 0.9rem;
  }

  .nav-content {
    gap: 0.5rem;
  }

  .nav-group {
    flex-direction: row;
    align-items: stretch;
    gap: 0.44rem;
    overflow-x: auto;
    padding-bottom: 0.18rem;
  }

  .nav-settings-group {
    display: flex;
    flex-direction: column;
    min-width: 180px;
    flex: 0 0 auto;
  }

  .nav-settings-group.is-open .nav-settings-submenu {
    max-height: none;
    opacity: 1;
    transform: none;
  }

  .nav-link {
    white-space: nowrap;
    font-size: 0.82rem;
    padding: 0.46rem 0.58rem;
  }

  .user-info-block {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin-top: 0;
  }

  .user-info {
    flex-direction: row;
    align-items: center;
  }

  .app-main {
    padding: 0.68rem 0.7rem 1rem;
  }
}

@media (max-width: 760px) {
  .nav-group {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    overflow-x: hidden;
    padding-bottom: 0;
  }

  .nav-settings-group {
    min-width: 0;
    flex: 1 1 auto;
  }

  .nav-settings-submenu {
    display: none !important;
  }

  .nav-settings-caret {
    display: none;
  }

  .nav-link {
    text-align: center;
    white-space: normal;
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  .nav-sublink {
    min-height: 30px;
    font-size: 0.75rem;
    justify-content: center;
    padding-left: 0.46rem;
    padding-right: 0.46rem;
  }

  .user-info-block {
    flex-direction: column;
    align-items: stretch;
  }

  .user-info {
    justify-content: center;
  }

  .nav-link-logout {
    text-align: center;
  }
}

/* Unified responsive layer for all base-driven pages */
@media (max-width: 1280px) {
  .app-shell {
    max-width: 100%;
    padding-inline: clamp(10px, 1.5vw, 18px);
  }

  .app-main {
    padding-inline: 0.95rem;
  }
}

@media (max-width: 1023px) {
  .app-main {
    padding-inline: max(0.62rem, env(safe-area-inset-left));
    padding-bottom: 1rem;
  }

  .index-container,
  .logs-page-wrapper,
  .server-monitor-wrapper.page-unified-wrapper,
  .main-layout.editfiles-layout,
  .tg-mini-shell,
  .settings-layout {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  .index-ops-grid,
  .logs-summary-grid,
  .system-info-grid,
  .metrics-grid,
  .bw-stats,
  .bw-aggregate,
  .tg-mini-grid-2,
  .tg-mini-cards,
  .client-cards-list {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  .section-title-wrap,
  .section-actions,
  .cleanup-tools-row,
  .traffic-chart-controls,
  .tg-mini-inline-controls,
  .tg-mini-tabs,
  .protocol-tabs,
  .filter-buttons,
  .user-management-tabs {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }

  .table-scroll,
  .tg-mini-table-wrap,
  .ip-list,
  .logs-table,
  .config-table {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .logs-table,
  .traffic-usage-table,
  #persistedTrafficTable,
  #deletedPersistedTrafficTable,
  .ip-table,
  #qr-settings .qr-links-log-table {
    min-width: 760px;
  }
}

@media (max-width: 820px) {
  .search-and-filter,
  .protocol-controls,
  .editor-toolbar,
  .actions-bar,
  .refresh-control,
  .login-context-kpis,
  .cleanup-form-inline {
    flex-direction: column;
    align-items: stretch;
  }

  .search-box,
  .search-input,
  .clear-btn,
  .download-button,
  .refresh-btn,
  .btn,
  .btn-save,
  .btn-update,
  .tg-mini-btn,
  .tg-mini-tab,
  .tab-button,
  .filter-btn,
  .folder-btn {
    width: 100%;
  }

  .notification {
    left: 0.6rem;
    right: 0.6rem;
    max-width: none;
  }
}

@media (max-width: 480px) {
  .app-main {
    padding-inline: 0.5rem;
  }

  .nav-brand-kicker {
    font-size: 0.58rem;
  }

  .nav-brand-title {
    font-size: 0.82rem;
  }

  .nav-link,
  .nav-sublink,
  .tab-button,
  .filter-btn,
  .folder-btn,
  .logs-tab-btn,
  .cleanup-btn,
  .bw-range-btn,
  .iface-btn,
  .unit-btn,
  .tg-mini-range-btn,
  .tg-mini-btn {
    min-height: 40px;
    font-size: 0.8rem;
  }

  .section-title-wrap h2,
  .section-title-wrap h3,
  .card-title,
  .monitor-hero-title,
  .tg-mini-panel h3 {
    font-size: 0.96rem;
  }

  .status-card,
  .card,
  .logs-section,
  .editor-card,
  .system-info-section,
  .bw-section,
  .tg-mini-panel,
  .tg-mini-card {
    padding: 0.72rem;
  }

  .login-shell,
  .tg-mini-shell,
  .logs-page-wrapper,
  .server-monitor-wrapper.page-unified-wrapper,
  .main-layout.editfiles-layout {
    margin-top: 0.7rem;
  }
}

@media (min-width: 1440px) {
  .app-shell {
    max-width: 1860px;
  }

  .navigation {
    width: 292px;
    flex-basis: 292px;
  }

  .app-main {
    padding: 1.2rem 1.5rem 1.8rem;
  }

  .index-container,
  .logs-page-wrapper,
  .server-monitor-wrapper.page-unified-wrapper,
  .main-layout.editfiles-layout,
  .settings-layout,
  .tg-mini-shell {
    max-width: 1720px;
    margin-inline: auto;
  }
}

@media (min-width: 1920px) {
  .app-shell {
    max-width: 2120px;
    padding-inline: 26px;
  }

  .navigation {
    width: 320px;
    flex-basis: 320px;
  }

  .app-main {
    padding: 1.35rem 1.8rem 2rem;
  }

  .index-container,
  .logs-page-wrapper,
  .server-monitor-wrapper.page-unified-wrapper,
  .main-layout.editfiles-layout,
  .settings-layout,
  .tg-mini-shell {
    max-width: 1880px;
  }
}
