/* =============================================================================
   Packs: /packs, /packs/:id, the current-pack tray, quick-look sheet, toast,
   the pack list in the sidebar, and the mobile tab bar.
   Loaded on every page (the tray, toast and navigation are global).
   ============================================================================= */

.pk-page [hidden] { display: none !important; }

.pk-page {
    max-width: 1100px;
    margin: 0 auto;
    padding: 1.5rem 1.5rem 3rem;
    color: var(--text-primary);
}

.pk-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1.5rem;
}

.pk-head h1,
.pk-pack-head h1 {
    font-family: var(--font-display);
    font-size: clamp(1.9rem, 4vw, 2.6rem);
    line-height: 1.1;
    margin: 0 0 0.35rem;
}

.pk-sub {
    margin: 0;
    color: var(--text-secondary);
    max-width: 38rem;
}

.pk-new-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    white-space: nowrap;
}

.pk-guest-note {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    padding: 0.85rem 1rem;
    margin-bottom: 1.25rem;
    border-radius: var(--border-radius);
    background: color-mix(in srgb, var(--accent-color) 10%, var(--card-color));
    border: 1px solid color-mix(in srgb, var(--accent-color) 30%, transparent);
}

.pk-guest-note p { margin: 0; }

/* ---- pack cards ------------------------------------------------------- */

.pk-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1rem;
}

.pk-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1.1rem 1.1rem 1rem;
    background: var(--card-color);
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    box-shadow: var(--shadow-sm);
    transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

.pk-card:hover {
    border-color: color-mix(in srgb, var(--accent-color) 45%, var(--border-color));
    box-shadow: var(--shadow-md);
}

.pk-card.is-current {
    border-color: var(--accent-color);
    box-shadow: 0 0 0 1px var(--accent-color), var(--shadow-sm);
}

.pk-card--skeleton {
    min-height: 150px;
    background: linear-gradient(90deg, var(--surface-low) 0%, var(--surface-high) 50%, var(--surface-low) 100%);
    background-size: 200% 100%;
    animation: pk-shimmer 1.2s ease-in-out infinite;
    border-color: transparent;
}

@keyframes pk-shimmer {
    from { background-position: 200% 0; }
    to { background-position: -200% 0; }
}

.pk-card__top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.5rem;
}

.pk-card__name {
    margin: 0;
    font-size: 1.2rem;
    line-height: 1.25;
    font-family: var(--font-display);
}

.pk-card__link {
    color: inherit;
    text-decoration: none;
}

/* The whole card opens the pack; the action chips sit above this layer. */
.pk-card__link::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
}

.pk-card__link:focus-visible {
    outline: none;
}

.pk-card__link:focus-visible::after {
    outline: 2px solid var(--accent-color);
    outline-offset: 2px;
}

.pk-card__badges {
    display: flex;
    gap: 0.35rem;
    flex-wrap: wrap;
    flex-shrink: 0;
}

.pk-badge {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    background: var(--surface-high);
    color: var(--text-secondary);
}

.pk-badge--current {
    background: var(--accent-color);
    color: #fff;
}

.pk-badge--public {
    background: color-mix(in srgb, var(--accent-color) 15%, transparent);
    color: var(--accent-color);
}

.pk-card__meta {
    margin: 0;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.pk-card__date {
    margin: 0;
    color: var(--text-muted);
    font-size: 0.85rem;
}

.pk-card__actions {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: auto;
    padding-top: 0.5rem;
}

.pk-chip {
    display: inline-flex;
    align-items: center;
    min-height: 2rem;
    padding: 0.25rem 0.7rem;
    border-radius: 999px;
    border: 1px solid var(--border-color);
    background: var(--surface-lowest);
    color: var(--text-primary);
    font: inherit;
    font-size: 0.85rem;
    text-decoration: none;
    cursor: pointer;
}

.pk-chip:hover { border-color: var(--accent-color); color: var(--accent-color); }
.pk-chip--primary { background: var(--accent-color); border-color: var(--accent-color); color: #fff; }
.pk-chip--primary:hover { color: #fff; filter: brightness(1.08); }
.pk-chip--danger:hover { border-color: #dc2626; color: #dc2626; }

.pk-progress {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 0.8rem;
    color: var(--text-secondary);
}

.pk-progress__bar {
    flex: 1;
    height: 6px;
    border-radius: 999px;
    background: var(--surface-high);
    overflow: hidden;
}

.pk-progress__fill {
    height: 100%;
    background: var(--accent-color);
}

.pk-empty-state {
    grid-column: 1 / -1;
    text-align: center;
    padding: 2.5rem 1rem;
    background: var(--card-color);
    border: 1px dashed var(--border-color);
    border-radius: 0.75rem;
}

.pk-empty-state__icon { font-size: 2.5rem; }
.pk-empty-state h3 { margin: 0.5rem 0; font-family: var(--font-display); font-size: 1.4rem; }
.pk-empty-state p { color: var(--text-secondary); max-width: 32rem; margin: 0 auto 1rem; }
.pk-empty { color: var(--text-secondary); }

/* ---- presets + tips ---------------------------------------------------- */

.pk-presets,
.pk-tips {
    margin-top: 2.5rem;
}

.pk-presets h2,
.pk-tips h2 {
    font-family: var(--font-display);
    font-size: 1.3rem;
    margin: 0 0 0.75rem;
}

.pk-presets__row {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
}

.pk-preset {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.9rem 1rem;
    border-radius: 0.75rem;
    border: 1px solid var(--border-color);
    background: var(--card-color);
    color: var(--text-primary);
    font-weight: 600;
    text-decoration: none;
}

.pk-preset:hover { border-color: var(--accent-color); }
.pk-preset__icon { font-size: 1.4rem; }
.pk-presets__more { margin: 0.75rem 0 0; }
.pk-presets__more a { color: var(--accent-color); }

.pk-tips__list {
    margin: 0;
    padding-left: 1.2rem;
    color: var(--text-secondary);
    line-height: 1.7;
}

.pk-tips__list strong { color: var(--text-primary); }

/* ---- single pack --------------------------------------------------------- */

.pk-crumbs {
    display: flex;
    gap: 0.4rem;
    align-items: center;
    font-size: 0.9rem;
    color: var(--text-muted);
    margin-bottom: 0.75rem;
}

.pk-crumbs a { color: var(--accent-color); text-decoration: none; }
.pk-crumbs a:hover { text-decoration: underline; }

.pk-loading { display: flex; justify-content: center; padding: 3rem 0; }

.pk-error {
    text-align: center;
    padding: 3rem 1rem;
}

.pk-error .btn { margin: 0.25rem; }

.pk-pack-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 1rem 2rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.pk-pack-desc { margin: 0 0 0.5rem; color: var(--text-secondary); max-width: 40rem; }

.pk-stats {
    display: grid;
    grid-template-columns: repeat(4, auto);
    gap: 0.5rem;
    margin: 0;
}

.pk-stat {
    min-width: 5.5rem;
    padding: 0.55rem 0.8rem;
    border-radius: 0.6rem;
    background: var(--card-color);
    border: 1px solid var(--border-color);
    text-align: center;
}

.pk-stat dt {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted);
}

.pk-stat dd {
    margin: 0.1rem 0 0;
    font-weight: 700;
    font-size: 1.1rem;
    font-variant-numeric: tabular-nums;
}

.pk-tabs {
    position: sticky;
    top: 0;
    z-index: 5;
    display: flex;
    gap: 0.25rem;
    margin: 0 0 1rem;
    padding: 0.3rem;
    background: var(--surface-low);
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
}

.pk-tab {
    flex: 1;
    min-height: 2.5rem;
    border: 0;
    border-radius: 0.55rem;
    background: transparent;
    color: var(--text-secondary);
    font: inherit;
    font-weight: 600;
    cursor: pointer;
}

.pk-tab:hover { color: var(--text-primary); }

.pk-tab.is-active {
    background: var(--card-color);
    color: var(--accent-color);
    box-shadow: var(--shadow);
}

.pk-panel__bar {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.pk-add-gear { display: inline-flex; align-items: center; gap: 0.35rem; }
.pk-hint { color: var(--text-muted); font-size: 0.9rem; }

.pk-items {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.pk-group {
    background: var(--card-color);
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    overflow: hidden;
}

.pk-group__head {
    display: flex;
    justify-content: space-between;
    padding: 0.6rem 1rem;
    background: var(--surface-low);
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-secondary);
}

.pk-group__weight { font-variant-numeric: tabular-nums; }

.pk-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-height: 3.25rem;
    padding: 0.5rem 0.6rem 0.5rem 1rem;
    border-top: 1px solid var(--border-color);
}

.pk-group__head + .pk-row { border-top: 0; }

.pk-row__main {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.pk-row__name {
    overflow-wrap: anywhere;
}

.pk-row__name a { color: inherit; text-decoration: none; }
.pk-row__name a:hover { color: var(--accent-color); text-decoration: underline; }
.pk-row__sub { font-size: 0.8rem; color: var(--text-muted); }
.pk-row__x { color: var(--text-muted); }

.pk-row__w {
    min-width: 4.5rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: var(--text-secondary);
}

.pk-qty {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--border-color);
    border-radius: 999px;
}

.pk-qty__btn {
    width: 2rem;
    height: 2rem;
    border: 0;
    background: transparent;
    color: var(--text-primary);
    font-size: 1.1rem;
    cursor: pointer;
    border-radius: 999px;
}

.pk-qty__btn:disabled { opacity: 0.35; cursor: default; }
.pk-qty__btn:not(:disabled):hover { color: var(--accent-color); }
.pk-qty__n { min-width: 1.4rem; text-align: center; font-variant-numeric: tabular-nums; }

.pk-row__remove {
    width: 2.25rem;
    height: 2.25rem;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--text-muted);
    font-size: 1.3rem;
    cursor: pointer;
}

.pk-row__remove:hover { background: color-mix(in srgb, #dc2626 12%, transparent); color: #dc2626; }

/* Pack mode: the whole row is the tap target. */
.pk-row--check {
    cursor: pointer;
    min-height: 3.5rem;
    user-select: none;
}

.pk-row--check:hover { background: var(--surface-low); }
.pk-row--check.is-packed .pk-row__name { text-decoration: line-through; color: var(--text-muted); }

.pk-share {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    padding: 1.25rem;
    background: var(--card-color);
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
}

.pk-share p { margin: 0; }

.pk-share__link {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.pk-share__link[hidden] { display: none; }

.pk-share__link input {
    flex: 1 1 16rem;
    min-width: 0;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: var(--border-radius);
    background: var(--surface-lowest);
    color: var(--text-primary);
    font: inherit;
}

.pk-share__actions { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.pk-danger:hover { border-color: #dc2626 !important; color: #dc2626 !important; }

.pk-switch {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    cursor: pointer;
}

.pk-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }

.pk-switch__track {
    position: relative;
    flex-shrink: 0;
    width: 2.75rem;
    height: 1.5rem;
    margin-top: 0.1rem;
    border-radius: 999px;
    background: var(--surface-highest);
    transition: background 0.15s ease;
}

.pk-switch__track::after {
    content: '';
    position: absolute;
    top: 0.2rem;
    left: 0.2rem;
    width: 1.1rem;
    height: 1.1rem;
    border-radius: 50%;
    background: #fff;
    box-shadow: var(--shadow);
    transition: transform 0.15s ease;
}

.pk-switch input:checked + .pk-switch__track { background: var(--accent-color); }
.pk-switch input:checked + .pk-switch__track::after { transform: translateX(1.25rem); }
.pk-switch input:focus-visible + .pk-switch__track { outline: 2px solid var(--accent-color); outline-offset: 2px; }
.pk-switch__text { display: flex; flex-direction: column; }
.pk-switch__text span { color: var(--text-secondary); font-size: 0.9rem; }

/* ---- the builder as a page (/packs/new, /packs/:id/edit) ---------------- */

@media (min-width: 769px) {
    .backpack-builder-modal.bp-page-mode {
        top: var(--bp-page-top, var(--nav-height, 5rem)) !important;
        left: var(--bp-page-left, var(--sidebar-width, 16rem)) !important;
        right: 0 !important;
        bottom: 0 !important;
        width: auto !important;
        height: auto !important;
        padding: 0 !important;
        align-items: stretch !important;
        justify-content: stretch !important;
        background: var(--background-color) !important;
        z-index: 900 !important;
    }

    .backpack-builder-modal.bp-page-mode .modal-backdrop { display: none !important; }

    .backpack-builder-modal.bp-page-mode .backpack-builder-content {
        width: 100% !important;
        max-width: none !important;
        height: 100% !important;
        max-height: none !important;
        margin: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
        border: 0 !important;
    }
}

/* ---- toast ----------------------------------------------------------------- */

.pk-toast {
    position: fixed;
    left: 50%;
    bottom: 1.5rem;
    z-index: 10050;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    max-width: min(560px, calc(100vw - 2rem));
    padding: 0.7rem 0.6rem 0.7rem 1rem;
    border-radius: 0.75rem;
    background: #1f2937;
    color: #f9fafb;
    box-shadow: 0 10px 30px rgb(0 0 0 / 0.25);
    transform: translate(-50%, 150%);
    opacity: 0;
    transition: transform 0.2s ease, opacity 0.2s ease;
    pointer-events: none;
}

.pk-toast.is-visible {
    transform: translate(-50%, 0);
    opacity: 1;
    pointer-events: auto;
}

.pk-toast--error { background: #991b1b; }
.pk-toast__msg { flex: 1; min-width: 0; }
.pk-toast__actions { display: flex; gap: 0.25rem; flex-shrink: 0; }

.pk-toast__btn {
    border: 0;
    background: transparent;
    color: #6ee7b7;
    font: inherit;
    font-weight: 700;
    padding: 0.35rem 0.6rem;
    border-radius: 0.4rem;
    cursor: pointer;
    white-space: nowrap;
}

.pk-toast__btn:hover { background: rgb(255 255 255 / 0.1); }

.pk-toast__close {
    border: 0;
    background: transparent;
    color: #9ca3af;
    font-size: 1.2rem;
    width: 2rem;
    height: 2rem;
    cursor: pointer;
    border-radius: 0.4rem;
}

body.pk-has-tray .pk-toast { bottom: 5.5rem; }

/* ---- current-pack tray ----------------------------------------------------- */

.pk-tray {
    position: fixed;
    right: 1.25rem;
    bottom: 1.25rem;
    z-index: 950;
    display: flex;
    align-items: stretch;
    max-width: min(420px, calc(100vw - 2rem));
    background: var(--card-color);
    color: var(--text-primary);
    border: 1px solid var(--border-color);
    border-radius: 0.9rem;
    box-shadow: 0 8px 28px rgb(0 0 0 / 0.18);
    overflow: hidden;
}

.pk-tray[hidden] { display: none; }

.pk-tray__main {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-width: 0;
    padding: 0.6rem 0.9rem;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.pk-tray__main:hover { background: var(--surface-low); }
.pk-tray__icon { color: var(--accent-color); flex-shrink: 0; }
.pk-tray__text { display: flex; flex-direction: column; min-width: 0; }

.pk-tray__label {
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted);
}

.pk-tray__name {
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pk-tray__meta {
    margin-left: 0.25rem;
    font-size: 0.85rem;
    color: var(--text-secondary);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.pk-tray__open {
    display: flex;
    align-items: center;
    padding: 0 0.9rem;
    border-left: 1px solid var(--border-color);
    color: var(--accent-color);
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}

.pk-tray__open:hover { background: var(--surface-low); }

/* Hide while a dialog, the sheet, or the builder is up. */
body.backpack-modal-open .pk-tray,
body.pk-sheet-open .pk-tray,
body.sidebar-locked .pk-tray { display: none; }

/* ---- sheet (quick look + pack picker) ------------------------------------- */

.pk-sheet {
    position: fixed;
    inset: 0;
    z-index: 10040;
}

.pk-sheet[hidden] { display: none; }

.pk-sheet__backdrop {
    position: absolute;
    inset: 0;
    background: rgb(0 0 0 / 0.4);
    opacity: 0;
    transition: opacity 0.2s ease;
}

.pk-sheet__panel {
    position: absolute;
    right: 1.25rem;
    bottom: 1.25rem;
    display: flex;
    flex-direction: column;
    width: min(440px, calc(100vw - 2rem));
    max-height: min(70vh, 640px);
    background: var(--card-color);
    color: var(--text-primary);
    border-radius: 1rem;
    box-shadow: 0 20px 50px rgb(0 0 0 / 0.3);
    transform: translateY(1rem);
    opacity: 0;
    transition: transform 0.2s ease, opacity 0.2s ease;
}

.pk-sheet.is-open .pk-sheet__backdrop { opacity: 1; }
.pk-sheet.is-open .pk-sheet__panel { transform: none; opacity: 1; }
.pk-sheet__grip { display: none; }

.pk-sheet__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 1rem 1rem 0.5rem 1.25rem;
}

.pk-sheet__title {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.35rem;
    overflow-wrap: anywhere;
}

.pk-sheet__close {
    flex-shrink: 0;
    width: 2.25rem;
    height: 2.25rem;
    border: 0;
    border-radius: 999px;
    background: var(--surface-low);
    color: var(--text-primary);
    font-size: 1.3rem;
    cursor: pointer;
}

.pk-sheet__body {
    flex: 1;
    overflow-y: auto;
    padding: 0 1.25rem 1rem;
    overscroll-behavior: contain;
}

.pk-sheet__meta { margin: 0 0 0.75rem; color: var(--text-secondary); font-weight: 600; }

.pk-sheet__foot {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    justify-content: flex-end;
    padding: 0.75rem 1.25rem 1rem;
    border-top: 1px solid var(--border-color);
}

.pk-sheet__foot[hidden] { display: none; }

.pk-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.5rem;
    padding: 0.4rem 0.9rem;
    border-radius: 0.6rem;
    border: 1px solid var(--border-color);
    background: var(--surface-lowest);
    color: var(--text-primary);
    font: inherit;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
}

.pk-btn--primary { background: var(--accent-color); border-color: var(--accent-color); color: #fff; }
.pk-btn--ghost:hover { border-color: var(--accent-color); color: var(--accent-color); }

.pk-ql-group { margin-bottom: 0.75rem; }

.pk-ql-cat {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted);
    margin-bottom: 0.25rem;
}

.pk-ql-group ul { list-style: none; margin: 0; padding: 0; }

.pk-ql-group li {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.3rem 0;
    border-bottom: 1px solid var(--border-color);
}

.pk-ql-group li.is-packed span:first-child { text-decoration: line-through; color: var(--text-muted); }
.pk-ql-w { color: var(--text-secondary); font-variant-numeric: tabular-nums; white-space: nowrap; }

.pk-pick-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.4rem; }

.pk-pick {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    padding: 0.7rem 0.9rem;
    border: 1px solid var(--border-color);
    border-radius: 0.6rem;
    background: var(--surface-lowest);
    color: var(--text-primary);
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.pk-pick:hover { border-color: var(--accent-color); }
.pk-pick__name { font-weight: 600; padding-right: 4.5rem; }
.pk-pick__meta { font-size: 0.85rem; color: var(--text-secondary); }

.pk-pick__badge {
    position: absolute;
    top: 0.7rem;
    right: 0.8rem;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--accent-color);
}

/* ---- sidebar: packs under "My Packs" ---------------------------------------- */

.sidebar .nav-sublist {
    list-style: none;
    margin: 0.15rem 0 0.35rem;
    padding: 0 0 0 1.25rem;
}

.sidebar .nav-sublink {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.75rem;
    border-radius: 0.45rem;
    color: var(--text-secondary);
    font-size: 0.9rem;
    text-decoration: none;
}

.sidebar .nav-sublink:hover { background: var(--surface-high); color: var(--text-primary); }
.sidebar .nav-sublink.active { color: var(--accent-color); font-weight: 600; }

.nav-sublink__dot {
    flex-shrink: 0;
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 50%;
    background: var(--border-color);
}

.nav-sublink__dot.is-current { background: var(--accent-color); }

.nav-sublink__name {
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nav-sublink__meta {
    font-size: 0.75rem;
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
}

.sidebar .nav-sublink--new { color: var(--accent-color); font-weight: 600; }
.sidebar .nav-sublink--more { font-style: italic; }

/* ---- mobile tab bar ------------------------------------------------------------ */

.pk-tabbar { display: none; }

@media (max-width: 768px) {
    .pk-page { padding: 1rem 1rem 2rem; }

    .pk-head { align-items: flex-start; }
    .pk-new-btn { width: 100%; justify-content: center; }

    .pk-presets__row { grid-template-columns: repeat(2, minmax(0, 1fr)); }

    .pk-pack-head { align-items: stretch; }
    .pk-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); width: 100%; }
    .pk-stat { min-width: 0; padding: 0.5rem 0.25rem; }
    .pk-stat dd { font-size: 0.85rem; overflow-wrap: anywhere; }

    .pk-tab { font-size: 0.9rem; min-height: 2.75rem; }

    .pk-row { gap: 0.5rem; padding-left: 0.75rem; }
    .pk-row__w { min-width: 3.5rem; font-size: 0.9rem; }

    /* The tab bar replaces the old bottom bar (search + menu). The old bar never
       comes back: searching uses the header docked at the top instead. */
    .pk-tabbar {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1002;
        display: grid;
        grid-template-columns: repeat(5, 1fr);
        height: 4rem;
        padding-bottom: env(safe-area-inset-bottom, 0px);
        box-sizing: content-box;
        background: var(--card-color);
        border-top: 1px solid var(--border-color);
        box-shadow: 0 -4px 16px rgb(0 0 0 / 0.06);
    }

    /* In search mode the header docks at the top (mobile.css); the tab bar stays
       at the bottom and only makes room while the keyboard is actually up. */
    body:not(.pk-search-open) .top-nav { display: none !important; }
    body.keyboard-open .pk-tabbar,
    body.backpack-modal-open .pk-tabbar,
    body.sidebar-locked .pk-tabbar { display: none; }

    .pk-tabbar__item {
        position: relative;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 0.2rem;
        border: 0;
        background: transparent;
        color: var(--text-muted);
        font: inherit;
        font-size: 0.7rem;
        font-weight: 600;
        text-decoration: none;
        cursor: pointer;
        -webkit-tap-highlight-color: transparent;
    }

    .pk-tabbar__item.active { color: var(--accent-color); }

    .pk-tabbar__item--packs .pk-tabbar__icon {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 2.6rem;
        height: 2.6rem;
        margin-top: -1.1rem;
        border-radius: 50%;
        background: var(--accent-color);
        color: #fff;
        box-shadow: 0 4px 12px color-mix(in srgb, var(--accent-color) 45%, transparent);
    }

    .pk-tabbar__badge {
        position: absolute;
        top: 0.1rem;
        left: calc(50% + 0.7rem);
        min-width: 1.1rem;
        height: 1.1rem;
        padding: 0 0.3rem;
        border-radius: 999px;
        background: #fff;
        color: var(--accent-color);
        border: 1px solid var(--accent-color);
        font-size: 0.65rem;
        line-height: 1rem;
        text-align: center;
    }

    .pk-tabbar__badge[hidden] { display: none; }

    /* Tray becomes a slim chip above the tab bar. */
    .pk-tray {
        left: 0.75rem;
        right: 0.75rem;
        bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px));
        max-width: none;
    }

    .pk-tray__main { flex: 1; padding: 0.5rem 0.75rem; }
    .pk-tray__meta { margin-left: auto; font-size: 0.8rem; }
    .pk-tray__open { padding: 0 0.75rem; font-size: 0.85rem; }

    body.pk-search-open .pk-tray,
    body.keyboard-open .pk-tray { display: none; }

    /* Leave room so the chip never covers the end of the page. */
    body.pk-has-tray #spa-main-content { padding-bottom: 8.5rem !important; }

    .pk-toast { bottom: calc(4.75rem + env(safe-area-inset-bottom, 0px)); }
    body.pk-has-tray .pk-toast { bottom: calc(8.25rem + env(safe-area-inset-bottom, 0px)); }

    /* Sheets come up from the bottom edge. */
    .pk-sheet__panel {
        left: 0;
        right: 0;
        bottom: 0;
        width: 100%;
        max-height: 85vh;
        border-radius: 1.1rem 1.1rem 0 0;
        padding-bottom: env(safe-area-inset-bottom, 0px);
        transform: translateY(100%);
        opacity: 1;
    }

    .pk-sheet__grip {
        display: block;
        width: 2.5rem;
        height: 0.3rem;
        margin: 0.5rem auto 0;
        border-radius: 999px;
        background: var(--surface-highest);
    }

    .pk-sheet__foot .pk-btn { flex: 1 1 auto; }
}

@media (prefers-reduced-motion: reduce) {
    .pk-toast,
    .pk-sheet__panel,
    .pk-sheet__backdrop,
    .pk-card { transition: none; }
    .pk-card--skeleton { animation: none; }
}

/* ---- home: continue your pack ------------------------------------------------ */

.pk-continue {
    /* Above the hero, whose negative top margin would otherwise cover the
       card's bottom edge on phones. */
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.9rem 1.5rem;
    margin: 0 0 1.25rem;
    padding: 1.1rem 1.25rem;
    overflow: hidden;
    background:
        radial-gradient(120% 140% at 0% 0%, color-mix(in srgb, var(--accent-color) 12%, transparent), transparent 60%),
        var(--card-color);
    border: 1px solid color-mix(in srgb, var(--accent-color) 30%, var(--border-color));
    border-radius: 1rem;
    box-shadow: var(--shadow-sm);
}

.pk-continue[hidden] { display: none; }

.pk-continue__head {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    min-width: 0;
    color: inherit;
    text-decoration: none;
}

.pk-continue__icon {
    flex-shrink: 0;
    display: grid;
    place-items: center;
    width: 3rem;
    height: 3rem;
    border-radius: 0.8rem;
    color: var(--accent-color);
    background: color-mix(in srgb, var(--accent-color) 14%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-color) 25%, transparent);
}

.pk-continue__text {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}

.pk-continue__eyebrow {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--accent-color);
}

.pk-continue__name {
    font-family: var(--font-display);
    font-size: 1.45rem;
    font-weight: 700;
    line-height: 1.15;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pk-continue__head:hover .pk-continue__name { color: var(--accent-color); }

.pk-continue__meta {
    font-size: 0.9rem;
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
}

.pk-continue__when { font-size: 0.78rem; color: var(--text-muted); }

.pk-continue__progress {
    grid-column: 1 / -1;
    order: 1; /* below the name + buttons row on wide screens */
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.8rem;
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
}

.pk-continue__bar {
    flex: 1;
    height: 6px;
    border-radius: 3px;
    background: color-mix(in srgb, var(--text-muted) 22%, transparent);
    overflow: hidden;
}

.pk-continue__bar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: var(--accent-color);
}

.pk-continue__actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.pk-continue__actions .pk-btn { gap: 0.4rem; min-width: 0; text-align: center; line-height: 1.2; }
.pk-continue__actions .pk-btn svg { flex-shrink: 0; }

.pk-continue__open.pk-btn--primary {
    color: var(--text-on-colored, #fff);
    box-shadow: 0 2px 8px color-mix(in srgb, var(--accent-color) 30%, transparent);
}

.pk-continue__open svg { transition: transform 0.2s ease; }
.pk-continue__open:hover svg { transform: translateX(3px); }

.pk-continue__others {
    grid-column: 1 / -1;
    order: 2;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin: 0 -1.25rem -1.1rem;
    padding: 0.7rem 1.25rem;
    border-top: 1px solid var(--border-color);
    background: color-mix(in srgb, var(--text-muted) 6%, transparent);
}

.pk-continue__chip {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    padding: 0.3rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--text-secondary);
    text-decoration: none;
    white-space: nowrap;
    background: var(--card-color);
}

.pk-continue__chip:hover { border-color: var(--accent-color); color: var(--accent-color); }

.pk-continue__chip--all {
    padding-inline: 0.4rem;
    border-color: transparent;
    background: transparent;
    color: var(--accent-color);
    font-weight: 600;
}

@media (max-width: 768px) {
    .pk-continue {
        grid-template-columns: 1fr;
        margin-top: 0.5rem;
        padding: 1rem;
        gap: 0.85rem;
    }

    .pk-continue__name { font-size: 1.3rem; }
    .pk-continue__progress { order: 0; }

    /* Open pack full width on top, the two secondary actions share a row */
    .pk-continue__actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .pk-continue__open { grid-column: 1 / -1; min-height: 2.9rem; }
    .pk-continue__actions .pk-btn--ghost { font-size: 0.92rem; }

    .pk-continue__others { margin: 0 -1rem -1rem; padding: 0.65rem 1rem; }
}
