/* Host app styles. Shoppe palette/theme lives in shoppe-theme.css (RCL). */

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

.blazor-error-boundary::after {
    content: "An error has occurred."
}

#blazor-error-ui {
    color: #ffffff;
    background: #750b0e;
    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 {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}

#blazor-error-ui .reload {
    color: inherit;
}

/* Pages without their own shell (not-found, error): Shoppe palette, never the browser default blue. */
.plain-shell { max-width: 560px; margin: 2rem auto; padding: 0 1rem; font-family: Fraunces, Georgia, serif; color: #4A2C2A; }
.plain-shell h1 { font-family: Shrikhand, cursive; color: #D7263D; }
.plain-shell a { color: #4A2C2A; font-weight: 700; text-decoration: underline; text-decoration-color: rgba(74,44,42,.35); text-underline-offset: .15em; }
.plain-shell a:hover { color: #D7263D; text-decoration-color: #D7263D; }
.plain-shell .ref { font-size: .85rem; opacity: .75; }

/* ---------- /admin (plain, functional, Shoppe palette) ---------- */
.admin-shell { max-width: 1800px; margin: 0 auto; padding: 1rem 1.25rem 3rem; font-family: Fraunces, Georgia, serif; color: #4A2C2A; }
.admin-shell h1 { font-family: Shrikhand, cursive; color: #D7263D; font-size: 1.8rem; margin: .75rem 0; }
.admin-shell a { color: #4A2C2A; font-weight: 700; text-decoration: underline; text-decoration-color: rgba(74,44,42,.35); text-underline-offset: .15em; }
.admin-shell a:hover { color: #D7263D; text-decoration-color: #D7263D; }
.admin-head { display: flex; align-items: center; gap: 1.5rem; padding: .6rem 1rem; background: #4A2C2A; color: #FFF4E0; border-radius: 12px; }
.admin-head a, .admin-head .admin-user a { color: #FFF4E0; text-decoration: none; }
.admin-head a:hover { color: #FFE066; }
.admin-head nav { display: flex; gap: 1rem; }
.admin-head nav a.active { color: #FFE066; text-decoration: underline; }
.admin-brand { font-family: Shrikhand, cursive; font-size: 1.15rem; color: #FFE066; }
.admin-user { margin-left: auto; display: flex; gap: 1rem; font-size: .85rem; }
.admin-banner { padding: .55rem .9rem; border-radius: 8px; margin: .75rem 0; font-size: .9rem; }
.admin-banner.warn { background: #FBE8C8; border: 2px dashed #F4A259; }
.admin-banner.ok { background: #E3F6EF; border: 2px solid #3FA98A; }
.admin-banner.err { background: #FDE3E6; border: 2px solid #D7263D; }
.admin-filters { display: flex; flex-wrap: wrap; gap: .6rem .9rem; align-items: flex-end; background: #FFF4E0; border: 2px solid #4A2C2A; border-radius: 12px; padding: .75rem 1rem; }
.admin-filters label { display: flex; flex-direction: column; font-size: .78rem; font-weight: 700; gap: .2rem; }
.admin-filters label.grow { flex: 1 1 220px; }
.admin-filters input, .admin-filters select { font: inherit; font-size: .9rem; padding: .35rem .5rem; border: 2px solid rgba(74,44,42,.45); border-radius: 8px; background: #FFFDF8; color: #4A2C2A; }
.admin-btn { font: 700 .88rem Fraunces, Georgia, serif; background: #4A2C2A; color: #FFF4E0 !important; border: 0; border-radius: 999px; padding: .45rem 1rem; cursor: pointer; text-decoration: none !important; display: inline-block; }
.admin-btn:hover { background: #2E1A19; }
.admin-btn.ghost { background: transparent; color: #4A2C2A !important; border: 2px solid #4A2C2A; }
.admin-btn.ghost:hover { border-color: #D7263D; color: #D7263D !important; }
.admin-btn.rasp { background: #D7263D; }
.admin-btn.rasp:hover { background: #A3162B; }
.admin-btn.small { font-size: .78rem; padding: .3rem .7rem; white-space: nowrap; }
.admin-btn:disabled { opacity: .5; cursor: progress; }
.admin-actions { display: flex; justify-content: space-between; align-items: center; margin: .9rem 0 .5rem; font-size: .9rem; }
.admin-table-wrap { overflow-x: auto; border: 2px solid #4A2C2A; border-radius: 12px; background: #FFFDF8; }
.admin-table { width: 100%; border-collapse: collapse; font-size: .84rem; }
.admin-table th { text-align: left; background: #FBE8C8; padding: .5rem .6rem; position: sticky; top: 0; white-space: nowrap; }
.admin-table td { padding: .45rem .6rem; border-top: 1px solid rgba(74,44,42,.15); vertical-align: top; }
.admin-table tbody tr:hover { background: #FFF4E0; }
.admin-table .num { text-align: right; }
.admin-table .nowrap { white-space: nowrap; }
.admin-table .small { font-size: .78rem; }
.admin-table .empty { text-align: center; padding: 1.5rem; opacity: .7; }
.admin-table code { font-size: .8rem; }
.admin-table .muted { opacity: .6; font-style: italic; }
.admin-table .err-text { color: #A3162B; font-size: .74rem; }
.admin-table .badge { display: inline-block; margin-left: .3rem; background: #F4A259; color: #2E1A19; border-radius: 999px; padding: 0 .45rem; font-size: .7rem; font-weight: 800; }
.admin-table .status, .admin-table .type { display: inline-block; border-radius: 999px; padding: .05rem .55rem; font-weight: 700; font-size: .76rem; background: #FBE8C8; white-space: nowrap; }
.status.s-fulfilled { background: #D5F2E8; color: #1F6B55; }
.status.s-emailfailed, .status.s-pdffailed { background: #FDE3E6; color: #A3162B; }
.status.s-refunded, .status.s-blocked, .status.s-flagged { background: #E9DDF8; color: #4A2C2A; }
.status.s-pendingpayment { background: #FFF1C2; }
.type.t-certified { background: #D5F2E8; }
.type.t-saved { background: #FFE2C2; }
