/* /Components/Config/CombatZonePage.razor.rz.scp.css */
/* Combat zone page: the WPF CombatZonePageView is a 1:1 copy of uFace.dfm's combat-zone tab on a
   644x230 Canvas, so this replicates that canvas with absolute positioning at the same numbers -
   the same technique config.css already uses for the Attack page's .acv. */

.zpg[b-y9i0p97sam] { display: flex; flex-direction: column; height: 100%; min-height: 0; padding: 6px; }

/* Scrolls sideways if the content pane is narrower than the reference's 644px. */
.zwrap[b-y9i0p97sam] { flex: 0 0 auto; overflow-x: auto; padding-top: 8px; }

.zcv[b-y9i0p97sam] { position: relative; width: 644px; height: 230px; }
.zcv > *[b-y9i0p97sam] { position: absolute; }

.zcv .lbl[b-y9i0p97sam] { color: var(--wpf-text); font-size: 0.72rem; line-height: 1; }

.zcv .zi[b-y9i0p97sam] {
    background: var(--wpf-panel-cap); color: var(--wpf-text);
    border: 1px solid var(--wpf-border); height: 21px; padding: 1px 3px;
    box-sizing: border-box; font-size: 0.72rem;
}
.zcv .zi:focus[b-y9i0p97sam] { outline: none; border-color: var(--wpf-accent); }

.zcv .zb[b-y9i0p97sam] {
    background: var(--wpf-panel-cap); color: var(--wpf-text);
    border: 1px solid var(--wpf-border); height: 21px; cursor: pointer;
    font-size: 0.72rem; box-sizing: border-box;
}
.zcv .zb:hover:enabled[b-y9i0p97sam] { border-color: var(--wpf-accent-muted); color: var(--wpf-accent); }
.zcv .zb:disabled[b-y9i0p97sam] { color: var(--wpf-muted); cursor: default; }

.zcv .chk[b-y9i0p97sam] {
    color: var(--wpf-text); font-size: 0.72rem;
    display: inline-flex; align-items: center; gap: 3px;
    white-space: nowrap; height: 18px; cursor: pointer; padding: 0;
}
.zcv .chk input[b-y9i0p97sam] { accent-color: var(--wpf-accent); margin: 0 2px 0 0; width: 13px; height: 13px; }

/* Empty group-box frames (the WPF InlineGroupBoxStyle): a border with a small floating header
   notch in plain light text, sitting over the frame's top edge. */
.zframe[b-y9i0p97sam] { border: 1px solid var(--wpf-border); box-sizing: border-box; pointer-events: none; }
.zframe-h[b-y9i0p97sam] {
    position: absolute; padding: 0 3px; background: var(--wpf-bg);
    color: var(--wpf-text); font-size: 0.66rem; white-space: nowrap;
}

/* Multicorner zone points list, below the canvas. */
.zpoints[b-y9i0p97sam] { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; margin-top: 10px; max-width: 644px; }
.zpoints-h[b-y9i0p97sam] { flex: 0 0 auto; margin: 0 0 4px 2px; color: var(--wpf-text); }
.zpoints .rlist[b-y9i0p97sam] { min-height: 120px; }
/* /Components/Config/DropPage.razor.rz.scp.css */
/* Page-specific bits of the Drop page. Everything else (.pg, .subtabs, .rlist/.rgrid, .arow,
   .awrap/.apanel/.acv and the .lbl/.ai/.chk/.ab canvas controls) comes from the shared
   config.css, so this only carries the two canvas sizes, the filter list's own column widths
   and the two small colour overrides. */

/* The two reference canvases. Widths are the Delphi form's own 634px plus a little slack;
   the General canvas is 8px taller than its group box so the floating header is not clipped
   by .awrap's scroll box. */
.dropcv[b-qumdmjt53n] { width: 640px; height: 128px; }
.filtcv[b-qumdmjt53n] { width: 640px; height: 100px; }

/* Filter list columns: Item name | Type | Action | ID (the WPF GridView's own order). */
.f-ty[b-qumdmjt53n] { width: 70px; }
.f-ac[b-qumdmjt53n] { width: 46%; }
.f-id[b-qumdmjt53n] { width: 64px; }

/* The WPF banner on this tab is green rather than the gold the other pages use. */
.dropinfo[b-qumdmjt53n] { color: #9FBF7F; }

/* "No item named ..." - the WPF shows this in a MessageBox; here it sits under the add strip. */
.droperr[b-qumdmjt53n] { color: #E27A7A; font-size: 0.76rem; margin: 4px 0 0 2px; }
/* /Components/Config/MiscellaneousPage.razor.rz.scp.css */
/* Page-specific bits of the Miscellaneous port. Everything else comes from the shared
   config.css vocabulary (.sect / .frow / .chk / .ei / .eb / .rlist / .rgrid). */

/* Fishing: the two "Go to pos" group boxes sit side by side under the move row. */
.misc-fish .cols[b-u3p3a4sepy] { margin-top: 4px; }
.misc-fish .sect[b-u3p3a4sepy] { padding: 14px 10px 8px; }
.misc-fish .gap[b-u3p3a4sepy] { width: 18px; }

/* Craft ------------------------------------------------------------------- */
.ei.grow[b-u3p3a4sepy] { flex: 1 1 auto; min-width: 0; }
.lbl.lw[b-u3p3a4sepy] { width: 132px; }

/* Recipe book list: fixed height like the WPF ListView (280x150). */
.misc-recipes[b-u3p3a4sepy] { flex: 0 0 auto; height: 172px; margin-top: 5px; }
.misc-recipes .r-no[b-u3p3a4sepy] { width: 30px; }
.misc-recipes .r-id[b-u3p3a4sepy] { width: 48px; }
.misc-recipes .r-mk[b-u3p3a4sepy] { width: 74px; color: var(--wpf-muted); }

/* Charges: the three name-keyed extraction rows. Sized in px, not rem: rem is ROOT-relative
   and so ignores the settings window's own 11px font, which made these rows wider than the
   content column. */
.ext-hdr[b-u3p3a4sepy] { height: 14px; }
.lbl.ext-delay[b-u3p3a4sepy] { margin-left: auto; margin-right: 40px; }
.ei.ext-src[b-u3p3a4sepy] { width: 190px; }
.ei.ext-dst[b-u3p3a4sepy] { width: 140px; }
/* /Components/Config/PartyBuffPage.razor.rz.scp.css */
/* Party heal/buff page-specific tweaks on top of the shared config.css vocabulary. */

/* The two inline frames the WPF editor draws (the interval group and the buff-name
   coverage block - Panel20's Border children in PartyBuffPageView.xaml). */
.pbframe[b-9u92vk1j6c] { border: 1px solid var(--wpf-line); padding: 4px 6px; }
span.pbframe.pbrow[b-9u92vk1j6c] { display: inline-flex; align-items: center; gap: 6px; }
div.pbframe.pbcov[b-9u92vk1j6c] { display: flex; flex-direction: column; gap: 6px; }

/* Let the buff-name box stretch like the reference's 340px-wide field. */
.frow .grow[b-9u92vk1j6c] { flex: 1 1 auto; min-width: 0; }

/* Three condition columns, label above combo+value (GridPanel7 in the reference). */
.pbconds[b-9u92vk1j6c] { align-items: flex-start; column-gap: 14px; }
.pbcond[b-9u92vk1j6c] { display: flex; flex-direction: column; gap: 3px; }
.pbcond .pbc[b-9u92vk1j6c] { width: 10.2rem; }

/* The reference's small 34-53px value boxes. */
.ei.n4[b-9u92vk1j6c] { width: 3.2rem; }

/* The party editor is the tallest rule editor; stretch the shared 84px slider so the
   priority bar spans it like the WPF PartyPriority trackbar (21x145). */
.vslider.pbtall[b-9u92vk1j6c] { height: 138px; }

/* Rules list Target column ("everyone" when the TargetList is empty). */
.c-tg[b-9u92vk1j6c] { width: 140px; color: var(--wpf-muted); }

/* Inline stand-in for the WPF NameListWindow (the "T" button's dialog). */
.tledit[b-9u92vk1j6c] {
    flex: 0 0 auto;
    margin-top: 6px;
    padding: 8px;
    border: 1px solid var(--wpf-accent-muted);
    background: var(--wpf-panel-alt);
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.tledit .tlname[b-9u92vk1j6c] { color: var(--wpf-accent); }
.tlarea[b-9u92vk1j6c] { height: 90px; min-height: 60px; resize: vertical; font-family: Consolas, monospace; }
/* /Components/Config/PartySettingsPage.razor.rz.scp.css */
/* Page-specific tweaks for the Party settings port. Everything structural (.sect/.sect-h/.frow/
   .chk/.ei/.lbl/.cols) comes from the shared config.css; this file only adds what the reference's
   own layout needs: a checkbox living inside a group's caption chip, a right-hand caption chip for
   the paired "Party leader" / "from my own bot" toggles, and the few fixed control widths. */

.pty[b-8slut7swja] {
    overflow: auto;
}

/* Both reference columns are the same width (315 / 319 px of a 648px canvas). */
.pty-cols > .col[b-8slut7swja] {
    flex: 1 1 0;
}

/* The caption chip carries the group's master enable, exactly as the reference draws it. */
.sect-h[b-8slut7swja] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
}

.sect-h .hchk[b-8slut7swja],
.sect-h .chk[b-8slut7swja] {
    padding: 0;
    color: inherit;
    font-weight: inherit;
    gap: 5px;
}

.sect-h input[type="checkbox"][b-8slut7swja] {
    margin: 0;
    width: 13px;
    height: 13px;
    accent-color: var(--wpf-accent);
}

/* The paired toggle that sits on the group frame's top-right edge. */
.sect-h.r[b-8slut7swja] {
    left: auto;
    right: 8px;
}

/* Rows and inputs ------------------------------------------------------- */
.ei.w[b-8slut7swja] {
    display: block;
    width: 100%;
    box-sizing: border-box;
}

.ei.n4[b-8slut7swja] { width: 3.1rem; }
.ei.w-lr[b-8slut7swja] { width: 11.5rem; }
.ei.w-dlg[b-8slut7swja] { width: 10rem; }

.frow[b-8slut7swja] {
    flex-wrap: wrap;
    row-gap: 4px;
}

/* The WPF page draws an explicit Border around the Help leader / Attack at once pair. */
.frow.rbox[b-8slut7swja] {
    border: 1px solid var(--wpf-border);
    padding: 2px 8px;
}

.chk input[type="radio"][b-8slut7swja] {
    accent-color: var(--wpf-accent);
}
/* /Components/Config/TargetSearchPage.razor.rz.scp.css */
/* Target search - page-specific bits only; everything else comes from config.css. */

/* A group box nested inside another one ("Omit, if:", "Counterattack", "Target search").
   min-width: the header chip is absolutely positioned and so does not widen its own box -
   without a floor the "Counterattack" chip overhangs the frame it labels. */
.sect.ts-inner[b-mwv7ct49f3] { margin-top: 18px; flex: 1 1 auto; min-width: 112px; }

/* The per-entry editor's three boxes wrap rather than overflow: they need ~720px side by
   side and the reference's content column is narrower than that. */
.edbox > .cols[b-mwv7ct49f3] { flex-wrap: wrap; row-gap: 10px; }

/* GroupBox32 has no header in the reference, so it needs no room for the header chip. */
.sect.ts-plain[b-mwv7ct49f3] { padding-top: 8px; }

/* The three per-entry editor boxes sit side by side inside .edbox. */
.sect.ts-ed[b-mwv7ct49f3] { background: var(--wpf-panel); flex: 0 0 auto; }

/* The controls the reference indents under the "Attack" radio. */
.ts-ind[b-mwv7ct49f3] { margin-left: 16px; }
.ts-list[b-mwv7ct49f3] { margin-left: 16px; width: 15rem; }

.ei.ts-cond[b-mwv7ct49f3] { width: 10.5rem; }
.ei.ts-fcond[b-mwv7ct49f3] { width: 8.5rem; }

/* Filter list columns, mirroring the WPF GridView widths. */
.ts-ty[b-mwv7ct49f3] { width: 60px; }
.ts-ac[b-mwv7ct49f3] { width: 96px; }
.ts-pr[b-mwv7ct49f3] { width: 74px; }
.ts-po[b-mwv7ct49f3] { width: 110px; color: var(--wpf-muted); }
.ts-id[b-mwv7ct49f3] { width: 60px; color: var(--wpf-muted); }
/* /Components/Dashboard/PacketsPane.razor.rz.scp.css */
/* Fills the center pane's body: a fixed toolbar over a scrolling packet list. Colours come from
   the shared --wpf-* theme vars; the grid-table itself is styled globally (app.css). */
.pk[b-lw21bh655e] { display: flex; flex-direction: column; height: 100%; min-height: 0; }

.pk-toolbar[b-lw21bh655e] {
    flex: 0 0 auto;
    display: flex; align-items: center; gap: 4px;
    padding: 3px 5px;
    background: var(--wpf-panel-cap);
    border-bottom: 1px solid var(--wpf-border);
}
.pk-btn[b-lw21bh655e] {
    background: var(--wpf-panel); color: var(--wpf-muted);
    border: 1px solid var(--wpf-border); padding: 2px 8px;
    font-size: 0.75rem; cursor: pointer;
}
.pk-btn:hover[b-lw21bh655e] { color: var(--wpf-text); border-color: var(--wpf-line); }
.pk-btn.on[b-lw21bh655e] { color: var(--wpf-accent); border-color: var(--wpf-accent-muted); }
.pk-sep[b-lw21bh655e] { width: 1px; align-self: stretch; background: var(--wpf-border); margin: 2px 4px; }
.pk-status[b-lw21bh655e] { margin-left: auto; color: var(--wpf-muted); font-size: 0.74rem; }
.pk-muted[b-lw21bh655e] { color: var(--wpf-muted); }

.pk-list[b-lw21bh655e] { flex: 1 1 auto; overflow: auto; min-height: 0; }

/* Per-cell colour, and a direction tint on the row (server = blue, client = accent green). */
.pk-time[b-lw21bh655e] { color: var(--wpf-muted); white-space: nowrap; }
.pk-op[b-lw21bh655e] { font-family: 'Consolas', 'Courier New', monospace; }
.pk-hex[b-lw21bh655e] { font-family: 'Consolas', 'Courier New', monospace; color: var(--wpf-muted); }
tr.pk-s td:nth-child(2)[b-lw21bh655e], tr.pk-s .pk-op[b-lw21bh655e] { color: #6FB2F0; }
tr.pk-c td:nth-child(2)[b-lw21bh655e], tr.pk-c .pk-op[b-lw21bh655e] { color: var(--wpf-accent); }
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-ry70ln6oxt] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-ry70ln6oxt] {
    flex: 1;
}

.sidebar[b-ry70ln6oxt] {
    background-color: #1E2226; /* PanelBackgroundBrush */
    border-right: 1px solid #2B3036;
}

.top-row[b-ry70ln6oxt] {
    background-color: #17191C; /* AppBackgroundBrush */
    border-bottom: 1px solid #2B3036;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
}

    .top-row[b-ry70ln6oxt]  a, .top-row[b-ry70ln6oxt]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

    .top-row[b-ry70ln6oxt]  a:hover, .top-row[b-ry70ln6oxt]  .btn-link:hover {
        text-decoration: underline;
    }

    .top-row[b-ry70ln6oxt]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-ry70ln6oxt] {
        justify-content: space-between;
    }

    .top-row[b-ry70ln6oxt]  a, .top-row[b-ry70ln6oxt]  .btn-link {
        margin-left: 0;
    }
}

@media (min-width: 641px) {
    .page[b-ry70ln6oxt] {
        flex-direction: row;
    }

    .sidebar[b-ry70ln6oxt] {
        width: 250px;
        height: 100vh;
        position: sticky;
        top: 0;
    }

    .top-row[b-ry70ln6oxt] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .top-row.auth[b-ry70ln6oxt]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-ry70ln6oxt], article[b-ry70ln6oxt] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}

#blazor-error-ui[b-ry70ln6oxt] {
    background: #2a2410;
    color: #E0C070;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-ry70ln6oxt] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
