/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   ParthaOS â€” Light Instamart base tokens
   Final visual authority: portal-premium.css (LIGHT INSTAMART block).
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

.pr-portal-root {
    display: block;
    --pr-bg: #f8fafc;
    --pr-bg-pattern: #f8fafc;
    --pr-surface: #ffffff;
    --pr-surface-elevated: #ffffff;
    --pr-surface-2: #f1f5f9;
    --pr-border: #e2e8f0;
    --pr-border-strong: #cbd5e1;
    --pr-text: #0f172a;
    --pr-text-muted: #64748b;
    --pr-primary: #fc8019;
    --pr-primary-bright: #fc8019;
    --pr-primary-deep: #e23744;
    --pr-primary-glow: rgba(252, 128, 25, 0.22);
    --pr-sunrise: linear-gradient(135deg, #fc8019 0%, #e23744 100%);
    --pr-accent-blue: #fc8019;
    --pr-accent-blue-deep: #e23744;
    --pr-accent-blue-bright: #fc8019;
    --pr-slate: #0f172a;
    --pr-slate-mid: #334155;
    --pr-success: #10b981;
    --pr-danger: #ef4444;
    --pr-warning: #f59e0b;
    --pr-radius: 16px;
    --pr-radius-sm: 14px;
    --pr-radius-xs: 8px;
    --pr-shadow: 0 10px 30px rgba(15, 23, 42, 0.06);
    --pr-shadow-lg: 0 16px 40px rgba(15, 23, 42, 0.08);
    --pr-shadow-orange: 0 4px 20px rgba(249, 115, 22, 0.3);
    --pr-font: 'Rosario', Georgia, serif;
    --pr-font-ui: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --pr-font-digit: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --pr-font-display: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --pr-ease: cubic-bezier(0.16, 1, 0.3, 1);
    --pr-spring: cubic-bezier(0.16, 1, 0.3, 1);
    --pr-app-tabbar-height: 64px;
    --pr-safe-bottom: env(safe-area-inset-bottom, 0px);
    font-family: var(--pr-font-ui);
    font-size: 15px;
    line-height: 1.55;
    color: var(--pr-text-muted);
    background-color: transparent;
    min-height: 100vh;
    box-sizing: border-box;
    -webkit-font-smoothing: antialiased;
    position: relative;
    isolation: isolate;
    overflow-x: hidden;
    width: 100%;
    max-width: none;
}

.pr-portal-root::before,
.pr-portal-root::after {
    display: none;
}

.pr-portal-root *, .pr-portal-root *::before, .pr-portal-root *::after { box-sizing: border-box; }

.pr-portal-root h1, .pr-portal-root h2, .pr-portal-root h3, .pr-portal-root .pr-heading {
    font-family: var(--pr-font-display);
    font-weight: 700;
    letter-spacing: -0.03em;
    margin: 0;
    line-height: 1.2;
    color: #0f172a;
}

.pr-tabular { font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }
.pr-text-muted { color: var(--pr-text-muted); }
.pr-text-sm { font-size: 0.875rem; }
.pr-text-xs { font-size: 0.75rem; }
.pr-mb-0 { margin-bottom: 0; }
.pr-mb-1 { margin-bottom: 1rem; }
.pr-mb-2 { margin-bottom: 1.75rem; }
.pr-flex { display: flex; align-items: center; gap: 0.75rem; }
.pr-flex-between { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; flex-wrap: wrap; }

.pr-app-shell { animation: pr-rise 0.55s var(--pr-ease) both; }
@keyframes pr-rise {
    from { opacity: 0; transform: translateY(12px); }
    to { opacity: 1; transform: translateY(0); }
}

.pr-container { max-width: min(1440px, calc(100% - 3rem)); margin: 0 auto; padding: 1.75rem 1.5rem 3rem; }

/* â”€â”€â”€ Header â”€â”€â”€ */
.pr-header {
    background: rgba(255, 255, 255, 0.88);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    color: var(--pr-text);
    padding: 0.75rem 1.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    position: sticky;
    top: 0;
    z-index: 50;
    border-bottom: 2px solid transparent;
    border-image: linear-gradient(90deg, var(--pr-accent-blue-bright), var(--pr-primary-bright), var(--pr-accent-blue-bright)) 1;
    box-shadow: 0 4px 24px rgba(12, 74, 110, 0.08);
}
.pr-header .pr-heading { color: var(--pr-text); font-size: 1.2rem; transition: font-size 0.28s var(--pr-spring), opacity 0.28s var(--pr-spring); }
.pr-header .pr-secure-badge { color: var(--pr-primary-deep); }
.pr-header .pr-btn-ghost {
    background: var(--pr-surface-2);
    border: 1px solid var(--pr-border);
    color: var(--pr-text);
}
.pr-header .pr-btn-ghost:hover { background: #fff; border-color: var(--pr-primary); color: var(--pr-primary-deep); }
.pr-header .pr-session-timer {
    background: var(--pr-surface-2);
    border: 1px solid var(--pr-border);
    color: var(--pr-text);
}
.pr-header::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, var(--pr-accent-blue-bright), var(--pr-primary-bright), var(--pr-accent-blue-bright));
    opacity: 0.85;
}
.pr-header.is-compact { padding: 0.5rem 1.25rem; }
.pr-header.is-compact .pr-heading { font-size: 1.05rem; }
.pr-header.is-compact .pr-secure-badge { opacity: 0.85; font-size: 0.62rem; }
.pr-header-logo {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid rgba(249, 115, 22, 0.45);
    box-shadow: 0 4px 14px rgba(249, 115, 22, 0.25);
    opacity: 1;
    transform: scale(1);
    transition: transform 0.28s var(--pr-spring), opacity 0.28s var(--pr-spring);
}
.pr-logo-contain {
    object-fit: contain;
    background: rgba(255, 255, 255, 0.9);
    padding: 2px;
}
.pr-header.is-compact .pr-header-logo {
    transform: scale(0.72);
}
.pr-scroll-sentinel { height: 1px; margin: 0; pointer-events: none; }

.pr-brand-lockup { display: flex; align-items: center; gap: 1rem; }
.pr-brand-mark {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--pr-sunrise);
    color: #fff;
    font-family: var(--pr-font-display);
    font-weight: 700;
    font-size: 0.7rem;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 16px var(--pr-primary-glow), inset 0 1px 0 rgba(255,255,255,0.35);
    flex-shrink: 0;
}
.pr-secure-badge {
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    color: var(--pr-primary-bright);
    text-transform: uppercase;
    margin-top: 0.15rem;
}

.pr-session-timer {
    font-size: 0.8rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
}
.pr-header .pr-session-timer {
    background: var(--pr-surface-2);
    border: 1px solid var(--pr-border);
    color: var(--pr-text);
}
.pr-session-timer.pr-session-warn { background: rgba(180, 83, 9, 0.35); border-color: rgba(251, 191, 36, 0.4); color: #fef3c7; }
.pr-session-timer.pr-session-critical {
    background: rgba(254, 226, 226, 0.9);
    border-color: rgba(239, 68, 68, 0.45);
    color: #b91c1c;
    animation: pr-pulse 2s ease-in-out infinite;
}

/* â”€â”€â”€ Cards â”€â”€â”€ */
.pr-card {
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.55);
    border-radius: var(--pr-radius);
    box-shadow: var(--pr-shadow);
    overflow: hidden;
    margin-bottom: 1.5rem;
    transition:
        border-color 0.28s var(--pr-spring),
        box-shadow 0.28s var(--pr-spring),
        transform 0.28s var(--pr-spring);
}
.pr-card:hover {
    border-color: rgba(249, 115, 22, 0.35);
    box-shadow: 0 8px 32px rgba(12, 74, 110, 0.1);
    transform: translateY(-2px);
}
.pr-card-head {
    padding: 1.15rem 1.35rem;
    border-bottom: 1px solid var(--pr-border);
    background: linear-gradient(180deg, #fff 0%, var(--pr-surface-2) 100%);
    font-weight: 600;
    font-size: 0.9rem;
    letter-spacing: 0;
    text-transform: none;
    color: var(--pr-text);
}
.pr-card-head .pr-heading-inline {
    font-family: var(--pr-font-display);
    font-size: 1.1rem;
    text-transform: none;
    letter-spacing: -0.02em;
    color: var(--pr-text);
    font-weight: 600;
}
.pr-card-body { padding: 1.35rem; }

/* â”€â”€â”€ Forms & buttons â”€â”€â”€ */
.pr-input, .pr-select, .pr-textarea {
    width: 100%;
    padding: 0.7rem 0.9rem;
    border: 1px solid var(--pr-border-strong);
    border-radius: var(--pr-radius-sm);
    background: var(--pr-surface-elevated);
    color: var(--pr-text);
    font-family: inherit;
    font-size: 0.9rem;
    transition: border-color 0.2s var(--pr-ease), box-shadow 0.2s var(--pr-ease);
}
.pr-input:focus, .pr-select:focus, .pr-textarea:focus {
    outline: none;
    border-color: var(--pr-primary);
    box-shadow: 0 0 0 3px var(--pr-primary-glow);
}
.pr-label {
    display: block;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: none;
    color: var(--pr-text-muted);
    margin-bottom: 0.4rem;
}
.pr-field { margin-bottom: 1.15rem; }

.pr-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    padding: 0.6rem 1.15rem;
    border: none;
    border-radius: var(--pr-radius-sm);
    font-family: var(--pr-font-ui);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: transform 0.1s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.15s var(--pr-ease), background 0.15s;
}
.pr-btn:active:not(:disabled) { transform: scale(0.96); }
.pr-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.pr-btn-primary {
    background: var(--pr-sunrise);
    color: #fff;
    box-shadow: var(--pr-shadow-orange);
    font-weight: 700;
}
.pr-btn-primary:hover:not(:disabled) { box-shadow: 0 16px 40px rgba(249, 115, 22, 0.35); transform: translateY(-1px); }
.pr-btn-dark { background: var(--pr-slate); color: #fff; }
.pr-btn-success { background: var(--pr-success); color: #fff; }
.pr-btn-warning { background: var(--pr-warning); color: #fff; }
.pr-btn-danger { background: var(--pr-danger); color: #fff; }
.pr-btn-ghost {
    background: var(--pr-surface-2);
    color: var(--pr-text);
    border: 1px solid var(--pr-border-strong);
}
.pr-btn-sm { padding: 0.45rem 0.85rem; font-size: 0.72rem; }
.pr-btn-block { width: 100%; }

/* â”€â”€â”€ Portal mesh canvas (mesh-bg.js) â”€â”€â”€ */
.pr-portal-root {
    position: relative;
    background: transparent;
}
.pr-portal-root:not(.is-login) {
    min-height: 0;
    height: 100%;
    overflow: hidden;
}
.pr-portal-root.is-login {
    min-height: 100dvh;
    height: auto;
    overflow: auto;
}
.pr-portal-bg-canvas {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
}
.pr-portal-root > .pr-login-split,
.pr-portal-root > .pr-container,
.pr-portal-root > .pr-godmode-banner,
.pr-portal-root > header {
    position: relative;
    z-index: 1;
}

/* â”€â”€â”€ Login â”€â”€â”€ */
.pr-login-split {
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    min-height: 100vh;
    position: relative;
    z-index: 1;
}
.pr-login-brand {
    position: relative;
    background: linear-gradient(145deg, rgba(12, 74, 110, 0.88) 0%, rgba(21, 94, 138, 0.9) 50%, rgba(3, 105, 161, 0.88) 100%);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    color: #fff;
    padding: 3.5rem 3rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: hidden;
}
.pr-login-brand::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 20% 30%, rgba(249, 115, 22, 0.15) 0%, transparent 45%),
        radial-gradient(circle at 80% 70%, rgba(255, 255, 255, 0.04) 0%, transparent 40%);
    pointer-events: none;
}
.pr-login-brand::after {
    content: '';
    position: absolute;
    bottom: -20%;
    right: -10%;
    width: 60%;
    height: 60%;
    border: 1px solid rgba(249, 115, 22, 0.12);
    border-radius: 50%;
    pointer-events: none;
}
.pr-login-brand > * { position: relative; z-index: 1; }
.pr-login-brand h2 { font-size: 2.5rem; color: #fff; margin-bottom: 0.75rem; max-width: 420px; }
.pr-login-brand .pr-brand-mark { width: 56px; height: 56px; font-size: 0.8rem; margin-bottom: 2rem; }
.pr-login-brand p { color: rgba(255, 255, 255, 0.72); font-size: 1rem; max-width: 400px; line-height: 1.65; }
.pr-login-features { margin-top: 2.5rem; list-style: none; padding: 0; }
.pr-login-features li {
    padding: 0.65rem 0;
    font-size: 0.875rem;
    color: rgba(255, 255, 255, 0.88);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    display: flex;
    align-items: center;
    gap: 0.65rem;
}
.pr-login-features li::before {
    content: '';
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--pr-primary-bright);
    flex-shrink: 0;
}
.pr-login-panel {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2.5rem;
    background: transparent;
}
.pr-login-card {
    width: 100%;
    max-width: 400px;
    background: var(--pr-surface-elevated);
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius);
    padding: 2.25rem;
    box-shadow: var(--pr-shadow-lg);
}
.pr-login-card h2 { font-size: 1.75rem; margin-bottom: 0.35rem; }
@media (max-width: 900px) {
    .pr-login-split { grid-template-columns: 1fr; }
    .pr-login-brand { padding: 2.5rem 1.75rem; min-height: auto; }
    .pr-login-brand h2 { font-size: 1.85rem; }
}

/* â”€â”€â”€ Wallet hero â”€â”€â”€ */
.pr-wallet-section { margin-bottom: 2rem; }
.pr-wallet-hero {
    position: relative;
    border-radius: var(--pr-radius);
    padding: 2.25rem 2rem 2rem;
    margin-bottom: 1rem;
    color: var(--pr-text);
    background: linear-gradient(160deg, #ffffff 0%, #f8fbff 50%, #fff7ed 100%);
    border: 1px solid rgba(2, 132, 199, 0.1);
    box-shadow: var(--pr-shadow-lg);
    overflow: hidden;
}
.pr-wallet-hero::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 5px;
    background: var(--pr-sunrise);
    pointer-events: none;
}
.pr-wallet-hero::after {
    content: '';
    position: absolute;
    top: -40%;
    right: -8%;
    width: 240px;
    height: 240px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(251, 146, 60, 0.2) 0%, transparent 68%);
    pointer-events: none;
}
.pr-wallet-hero > * { position: relative; z-index: 1; }
.pr-wallet-hero.low-balance {
    border-color: rgba(196, 30, 74, 0.55);
    animation: none;
    box-shadow:
        0 0 0 1px rgba(196, 30, 74, 0.35),
        0 0 24px rgba(196, 30, 74, 0.22),
        0 0 48px rgba(196, 30, 74, 0.1),
        var(--pr-shadow-lg);
}
.pr-wallet-hero-label {
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    color: var(--pr-text-muted);
    margin-bottom: 0.35rem;
}
.pr-wallet-hero-value {
    font-family: var(--pr-font-display);
    font-size: 3.5rem;
    font-weight: 700;
    color: var(--pr-accent-blue-deep);
    line-height: 1;
    margin-bottom: 0.35rem;
}
.pr-wallet-hero-hint { font-size: 0.82rem; color: var(--pr-text-muted); }
.pr-wallet-grid {
    display: flex;
    gap: 0.75rem;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    padding: 0.25rem 0 0.5rem;
    -webkit-overflow-scrolling: touch;
}
.pr-wallet-grid .pr-wallet-card {
    flex: 0 0 min(74%, 240px);
    scroll-snap-align: start;
    animation: pr-stagger-in 0.45s var(--pr-spring) both;
}
@media (min-width: 769px) {
    .pr-wallet-grid {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        overflow-x: visible;
    }
    .pr-wallet-grid .pr-wallet-card { flex: unset; }
}
.pr-wallet-grid .pr-wallet-card:nth-child(1) { animation-delay: 0.04s; }
.pr-wallet-grid .pr-wallet-card:nth-child(2) { animation-delay: 0.1s; }
.pr-wallet-grid .pr-wallet-card:nth-child(3) { animation-delay: 0.16s; }
@keyframes pr-stagger-in {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}
.pr-wallet-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-sm);
    padding: 1.1rem 1.2rem;
    box-shadow: 0 4px 16px rgba(12, 74, 110, 0.06);
    overflow: hidden;
    transition:
        border-color 0.28s var(--pr-spring),
        box-shadow 0.28s var(--pr-spring),
        transform 0.28s var(--pr-spring);
}
.pr-wallet-card.pr-aura-card::before,
.pr-card.pr-aura-card::before {
    content: '';
    position: absolute;
    inset: -2px;
    border-radius: inherit;
    padding: 2px;
    background: conic-gradient(
        from var(--pr-aura-angle, 0deg),
        rgba(249, 115, 22, 0.55),
        rgba(14, 165, 233, 0.45),
        rgba(99, 102, 241, 0.5),
        rgba(249, 115, 22, 0.55)
    );
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 0.55;
    animation: pr-aura-spin 6s linear infinite;
    pointer-events: none;
    z-index: 0;
}
.pr-wallet-card.pr-aura-card::after,
.pr-card.pr-aura-card::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: radial-gradient(ellipse 80% 60% at 50% 0%, rgba(249, 115, 22, 0.12), transparent 70%);
    animation: pr-aura-breathe 4s ease-in-out infinite;
    pointer-events: none;
    z-index: 0;
}
.pr-wallet-card.pr-aura-card > *,
.pr-card.pr-aura-card > * {
    position: relative;
    z-index: 1;
}
@property --pr-aura-angle {
    syntax: '<angle>';
    initial-value: 0deg;
    inherits: false;
}
@keyframes pr-aura-spin {
    to { --pr-aura-angle: 360deg; }
}
@keyframes pr-aura-breathe {
    0%, 100% { opacity: 0.35; transform: scale(1); }
    50% { opacity: 0.75; transform: scale(1.02); }
}
.pr-wallet-hero {
    position: relative;
    overflow: hidden;
}
.pr-wallet-hero::after {
    content: '';
    position: absolute;
    inset: -40%;
    background: conic-gradient(from 0deg, transparent, rgba(249, 115, 22, 0.08), transparent, rgba(14, 165, 233, 0.06), transparent);
    animation: pr-hero-aura 12s linear infinite;
    pointer-events: none;
}
@keyframes pr-hero-aura {
    to { transform: rotate(360deg); }
}
.pr-wallet-card:hover {
    border-color: rgba(249, 115, 22, 0.35);
    box-shadow: 0 6px 24px rgba(12, 74, 110, 0.08);
    transform: translateY(-2px);
}
.pr-stat-value { font-size: 1.2rem; font-weight: 600; margin-top: 0.2rem; color: var(--pr-text); }
.pr-badge-low {
    display: inline-flex;
    margin-top: 0.75rem;
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
    background: #fff1f2;
    border: 1px solid #fecdd3;
    color: #be123c;
    font-size: 0.75rem;
    font-weight: 600;
    box-shadow: 0 4px 12px rgba(190, 18, 60, 0.12);
}
@media (max-width: 768px) {
    .pr-wallet-grid { grid-template-columns: 1fr; }
    .pr-wallet-hero-value { font-size: 2.25rem; }
}

/* â”€â”€â”€ Date chips â”€â”€â”€ */
.pr-chip-row { display: flex; flex-wrap: wrap; gap: 0.45rem; align-items: center; margin-top: 1rem; }
.pr-chip {
    padding: 0.45rem 1rem;
    border-radius: 999px;
    border: 1px solid var(--pr-border-strong);
    background: var(--pr-surface-elevated);
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--pr-text-muted);
    cursor: pointer;
    transition: all 0.2s var(--pr-ease);
}
.pr-chip:hover { border-color: var(--pr-primary); color: var(--pr-text); }
.pr-chip:active { transform: scale(0.96); transition: transform 0.1s cubic-bezier(0.4, 0, 0.2, 1); }
.pr-chip.active {
    background: linear-gradient(135deg, #fc8019 0%, #e23744 100%);
    border-color: transparent;
    color: #fff;
    box-shadow: 0 4px 14px rgba(252, 128, 25, 0.28);
}
.pr-chip-select {
    max-width: 150px;
    padding: 0.45rem 0.75rem;
    font-size: 0.72rem;
    border-radius: 999px;
}
.pr-period-label {
    font-size: 0.8rem;
    color: var(--pr-text-muted);
    margin-top: 0.25rem;
    font-variant-numeric: tabular-nums;
}

/* â”€â”€â”€ Campaign cards (client) â”€â”€â”€ */
.pr-campaign-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 1rem;
    font-size: 0.75rem;
    color: var(--pr-text-muted);
}
.pr-campaign-grid {
    display: grid;
    gap: 0.85rem;
    padding: 0 1.35rem 1.35rem;
}
.pr-campaign-grid-inner {
    display: grid;
    gap: 0.85rem;
}

/* â”€â”€â”€ Meta Ads Manager-style campaign grid â”€â”€â”€ */
.pr-meta-grid-wrap {
    padding: 0 1.35rem 1.35rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain;
}
.pr-campaign-fab {
    position: sticky;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.85rem 1rem calc(0.85rem + env(safe-area-inset-bottom, 1rem));
    margin-top: 0.75rem;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    box-shadow: 0 8px 28px rgba(15, 23, 42, 0.1);
    color: #334155;
}
.pr-meta-grid {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.8125rem;
}
.pr-meta-grid thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--pr-surface-elevated);
    border-bottom: 1px solid var(--pr-border);
    padding: 0.55rem 0.65rem;
    text-align: left;
    white-space: nowrap;
}
.pr-meta-th-label {
    font-size: 0.62rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
}
.pr-meta-grid-row {
    transition: background 0.2s ease;
}
.pr-meta-grid-row:hover {
    background: rgba(249, 115, 22, 0.04);
}
.pr-meta-grid-row.is-selected {
    background: rgba(249, 115, 22, 0.12);
}
.pr-meta-grid td {
    padding: 0.85rem 0.75rem;
    border-bottom: 1px solid #f1f5f9;
    vertical-align: middle;
}
.pr-meta-col-check { width: 2.5rem; }
.pr-meta-col-toggle { width: 3.5rem; }
.pr-meta-col-name { min-width: 11rem; }
.pr-meta-col-delivery { min-width: 5.5rem; }
.pr-meta-col-created { min-width: 7.5rem; }
.pr-meta-col-results { min-width: 6.5rem; }
.pr-meta-col-reach { min-width: 7rem; }
.pr-meta-col-cpr { min-width: 5.5rem; }
.pr-meta-col-spend { min-width: 6rem; text-align: right; }
.pr-meta-grid thead .pr-meta-col-spend { text-align: right; }

.pr-meta-toggle {
    display: inline-flex;
    align-items: center;
    width: 36px;
    height: 20px;
    border-radius: 999px;
    padding: 2px;
    background: #cbd5e1;
    transition: background 0.2s ease;
}
.pr-meta-toggle.is-on {
    background: linear-gradient(135deg, #0ea5e9 0%, #22c55e 100%);
}
.pr-meta-toggle-knob {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
    transition: transform 0.2s ease;
}
.pr-meta-toggle.is-on .pr-meta-toggle-knob {
    transform: translateX(16px);
}

.pr-meta-name-cell {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.5rem;
}
.pr-meta-campaign-name {
    font-family: var(--pr-font-display);
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--pr-text);
}
.pr-meta-objective-badge {
    display: inline-block;
    font-size: 0.62rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
    background: var(--pr-surface-elevated);
    border: 1px solid var(--pr-border);
    border-radius: 4px;
    padding: 0.1rem 0.35rem;
}
.pr-delivery-pill {
    display: inline-block;
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    white-space: nowrap;
}
.pr-delivery-pill.is-active {
    color: #166534;
    background: #dcfce7;
}
.pr-delivery-pill.is-paused {
    color: #92400e;
    background: #fef3c7;
}
.pr-delivery-pill.is-off {
    color: #64748b;
    background: #f1f5f9;
}
.pr-meta-primary-val {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--pr-text);
}
.pr-meta-sub-tag {
    font-size: 0.68rem;
    color: var(--pr-text-muted);
    margin-top: 0.15rem;
}
.pr-meta-created {
    font-size: 0.75rem;
    color: var(--pr-text-muted);
}
.pr-meta-muted {
    color: var(--pr-text-muted);
}
.pr-meta-grid-skeleton {
    display: grid;
    gap: 0.5rem;
}
.pr-meta-grid-skeleton-row {
    height: 48px;
    border-radius: var(--pr-radius-xs);
}
.pr-meta-preview-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
    align-items: flex-start;
    padding: 0.85rem 1rem;
    margin-bottom: 1rem;
    background: var(--pr-surface-elevated);
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-xs);
}
.pr-meta-preview-item {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 10rem;
}

.pr-chip-row-months {
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.35rem;
    padding-top: 0.35rem;
    border-top: 1px dashed var(--pr-border);
}
.pr-chip-month {
    font-size: 0.7rem;
    padding: 0.25rem 0.55rem;
}
.pr-header-agency-logo {
    width: 40px;
    height: 40px;
    object-fit: contain;
    opacity: 0.92;
}
.pr-login-agency-logo {
    width: 72px;
    height: 72px;
    object-fit: contain;
    margin-bottom: 1rem;
}
.pr-meta-attribution {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}
.pr-meta-tax-block {
    margin-top: 0.35rem;
    padding-top: 0.35rem;
    border-top: 1px dashed var(--pr-border);
}
.pr-meta-tax-line {
    display: block;
    font-size: 0.62rem;
    line-height: 1.45;
    color: var(--pr-text-muted);
}

.pr-campaign-card {
    border: 2px solid transparent;
    border-radius: var(--pr-radius);
    padding: 1.25rem 1.35rem;
    background: #fff;
    box-shadow: 0 4px 20px rgba(12, 74, 110, 0.07);
    transition:
        border-color 0.28s var(--pr-spring),
        box-shadow 0.28s var(--pr-spring),
        transform 0.28s var(--pr-spring);
}
.pr-campaign-card:hover {
    border-color: rgba(249, 115, 22, 0.35);
    box-shadow: 0 12px 32px rgba(12, 74, 110, 0.1);
    transform: translateY(-3px);
}
.pr-campaign-card.is-selected {
    border-color: var(--pr-primary);
    background: linear-gradient(135deg, #fff7ed 0%, #ffffff 100%);
    box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.2), var(--pr-shadow-lg);
}
.pr-campaign-card:active { transform: scale(0.98); }
.pr-campaign-card-top {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 1rem;
}
.pr-campaign-card-top input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin-top: 0.2rem;
    accent-color: var(--pr-primary-deep);
    cursor: pointer;
}
.pr-campaign-card-title {
    flex: 1;
    font-family: var(--pr-font-display);
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--pr-text);
    line-height: 1.3;
}
.pr-metric-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.65rem;
}
.pr-metric-cell {
    padding: 0.65rem 0.75rem;
    background: var(--pr-surface-elevated);
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-xs);
}
.pr-metric-cell .pr-label { margin-bottom: 0.25rem; font-size: 0.62rem; }
.pr-metric-cell .pr-metric-val { font-size: 0.95rem; font-weight: 600; }
@media (max-width: 768px) {
    .pr-metric-grid { grid-template-columns: repeat(2, 1fr); }
}

/* â”€â”€â”€ Status pills â”€â”€â”€ */
.pr-status-pill {
    display: inline-block;
    font-size: 0.62rem;
    font-weight: 700;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    flex-shrink: 0;
}
.pr-status-active {
    background: #6ee7b7;
    color: #064e3b;
    box-shadow: 0 0 0 1px rgba(6, 78, 59, 0.15), 0 4px 14px rgba(13, 122, 92, 0.28);
}
.pr-status-paused {
    background: #fecdd3;
    color: #881337;
    box-shadow: 0 0 0 1px rgba(136, 19, 55, 0.12), 0 4px 14px rgba(196, 30, 74, 0.22);
}
.pr-status-warn {
    background: #fde68a;
    color: #78350f;
    box-shadow: 0 0 0 1px rgba(120, 53, 15, 0.12), 0 4px 14px rgba(180, 83, 9, 0.22);
}
.pr-status-admin {
    background: var(--pr-surface-2);
    color: var(--pr-text-muted);
    border: 1px solid var(--pr-border);
    box-shadow: 0 2px 8px rgba(12, 74, 110, 0.06);
}
.pr-data-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.68rem;
    font-weight: 700;
    padding: 0.28rem 0.65rem;
    border-radius: 999px;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}
.pr-data-pill-active {
    background: #6ee7b7;
    color: #064e3b;
    box-shadow: 0 0 0 1px rgba(6, 78, 59, 0.15), 0 4px 14px rgba(13, 122, 92, 0.28);
}
.pr-data-pill-inactive {
    background: #fecdd3;
    color: #881337;
    box-shadow: 0 0 0 1px rgba(136, 19, 55, 0.12), 0 4px 14px rgba(196, 30, 74, 0.22);
}
.pr-data-pill-neutral {
    background: #e2e8f0;
    color: #334155;
    box-shadow: 0 2px 8px rgba(12, 74, 110, 0.08);
}
.pr-restricted { font-size: 0.75rem; color: var(--pr-text-muted); font-style: italic; }

/* â”€â”€â”€ Retainer & profile â”€â”€â”€ */
.pr-retainer-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.85rem 0;
    border-bottom: 1px solid var(--pr-border);
}
.pr-retainer-item:last-child { border-bottom: none; }
.pr-request-timeline { margin-top: 1rem; padding-top: 1rem; border-top: 1px dashed var(--pr-border); }
.pr-request-row { display: flex; gap: 0.65rem; align-items: center; margin-top: 0.4rem; font-size: 0.8rem; }
.pr-chip-status-pending { background: #fef3c7; color: #92400e; padding: 0.15rem 0.55rem; border-radius: 999px; font-size: 0.65rem; font-weight: 700; }
.pr-chip-status-approved { background: #d1fae5; color: #065f46; padding: 0.15rem 0.55rem; border-radius: 999px; font-size: 0.65rem; font-weight: 700; }
.pr-chip-status-rejected { background: var(--pr-surface-2); color: var(--pr-text-muted); padding: 0.15rem 0.55rem; border-radius: 999px; font-size: 0.65rem; font-weight: 700; }

.pr-profile-strip {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.25rem;
    padding: 1.25rem 1.5rem;
    background: var(--pr-surface-elevated);
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius);
    margin-bottom: 2rem;
}
@media (max-width: 768px) { .pr-profile-strip { grid-template-columns: 1fr; } }

/* â”€â”€â”€ Admin sidebar layout â”€â”€â”€ */
.pr-admin-layout {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 0;
    min-height: calc(100vh - 64px);
    animation: pr-rise 0.5s var(--pr-ease) both;
}
.pr-sidebar {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-right: 1px solid var(--pr-border);
    padding: 1.25rem 0.85rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    box-shadow: 4px 0 24px rgba(12, 74, 110, 0.04);
}
.pr-sidebar-label {
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: none;
    font-weight: 600;
    color: var(--pr-text-muted);
    padding: 0.5rem 0.85rem 0.75rem;
}
.pr-sidebar-btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 0.7rem 0.9rem;
    border: none;
    border-radius: var(--pr-radius-sm);
    background: transparent;
    color: var(--pr-text-muted);
    font-family: var(--pr-font-ui);
    font-size: 0.85rem;
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    transition: background 0.2s var(--pr-spring), color 0.2s, transform 0.1s;
}
.pr-sidebar-btn:hover { background: var(--pr-surface-2); color: var(--pr-text); }
.pr-sidebar-btn.active {
    background: linear-gradient(90deg, rgba(249, 115, 22, 0.14), rgba(56, 189, 248, 0.08));
    color: var(--pr-primary-deep);
    font-weight: 700;
    box-shadow: inset 3px 0 0 var(--pr-primary);
}
.pr-sidebar-badge {
    min-width: 20px;
    padding: 0 6px;
    border-radius: 999px;
    background: var(--pr-danger);
    color: #fff;
    font-size: 0.6rem;
    font-weight: 700;
    text-align: center;
}
.pr-admin-main {
    padding: 1.5rem 1.75rem 2.5rem;
    overflow-x: hidden;
}
@media (max-width: 900px) {
    .pr-admin-layout { grid-template-columns: 1fr; }
    .pr-sidebar {
        flex-direction: row;
        flex-wrap: wrap;
        padding: 0.75rem;
        border-right: none;
        border-bottom: 1px solid rgba(249, 115, 22, 0.2);
    }
    .pr-sidebar-label { display: none; }
    .pr-sidebar-btn { flex: 1 1 auto; justify-content: center; font-size: 0.7rem; padding: 0.5rem; }
}

/* â”€â”€â”€ Tables (admin) â”€â”€â”€ */
.pr-tabs { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
.pr-tab {
    padding: 0.5rem 1rem;
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-sm);
    background: var(--pr-surface-elevated);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
}
.pr-tab.active { background: var(--pr-slate); color: #fff; border-color: var(--pr-slate); }
.pr-tab-badge {
    display: inline-block;
    min-width: 18px;
    padding: 0 5px;
    margin-left: 4px;
    border-radius: 999px;
    background: var(--pr-danger);
    color: #fff;
    font-size: 0.6rem;
}
.pr-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.pr-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.pr-table th {
    text-align: left;
    padding: 0.8rem 1rem;
    background: var(--pr-surface-2);
    border-bottom: 1px solid var(--pr-border);
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--pr-text-muted);
}
.pr-table td { padding: 0.85rem 1rem; border-bottom: 1px solid var(--pr-border); vertical-align: top; }
.pr-table tbody tr {
    transition:
        background 0.28s var(--pr-spring),
        transform 0.28s var(--pr-spring),
        box-shadow 0.28s var(--pr-spring);
}
.pr-table tbody tr:hover {
    background: rgba(255, 255, 255, 0.55);
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(12, 74, 110, 0.06);
}

.pr-checkbox-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 0.5rem; }
.pr-checkbox-item {
    display: flex; align-items: center; gap: 0.5rem;
    padding: 0.55rem; border: 1px solid var(--pr-border); border-radius: var(--pr-radius-xs);
    font-size: 0.8rem; cursor: pointer;
}

/* â”€â”€â”€ Modals â”€â”€â”€ */
.pr-modal-backdrop {
    position: fixed; inset: 0;
    background: rgba(12, 74, 110, 0.55);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: 500;
    display: flex; align-items: center; justify-content: center;
    padding: 1rem;
}
.pr-modal {
    background: rgba(250, 248, 244, 0.92);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-radius: var(--pr-radius);
    width: 100%; max-width: 640px;
    max-height: 92vh; overflow-y: auto;
    box-shadow: var(--pr-shadow-lg);
    border: 1px solid rgba(255, 255, 255, 0.6);
}
.pr-modal-lg { max-width: 1100px; }
.pr-modal-head {
    padding: 1.25rem 1.5rem;
    border-bottom: 1px solid var(--pr-border);
    display: flex; justify-content: space-between; align-items: center;
}
.pr-modal-head h3 { font-family: var(--pr-font-display); font-size: 1.25rem; }
.pr-modal-body { padding: 1.5rem; }
.pr-modal-foot {
    padding: 1rem 1.5rem;
    border-top: 1px solid var(--pr-border);
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem;
    flex-wrap: wrap;
}

/* â”€â”€â”€ Security & misc â”€â”€â”€ */
.pr-security-blur { backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; }
.pr-security-blur > *:not(.pr-security-overlay):not(.pr-modal-backdrop):not(.pr-toast-stack) { filter: blur(5px); pointer-events: none; user-select: none; }
.pr-security-overlay {
    position: fixed; inset: 0; z-index: 200;
    display: flex; align-items: center; justify-content: center;
    background: rgba(12, 74, 110, 0.5); pointer-events: none;
}
.pr-security-overlay span {
    background: var(--pr-slate);
    color: #fff;
    padding: 1rem 2rem;
    border-radius: var(--pr-radius-sm);
    font-weight: 600;
    font-size: 0.85rem;
    border: 1px solid var(--pr-primary);
    box-shadow: var(--pr-shadow-lg);
}
.pr-godmode-banner {
    background: var(--pr-slate);
    color: #fff;
    padding: 0.75rem 1.5rem;
    display: flex; justify-content: space-between; align-items: center;
    border-bottom: 3px solid var(--pr-danger);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}
.pr-status-badge {
    display: inline-block;
    font-size: 0.65rem; font-weight: 700;
    padding: 0.25rem 0.5rem; border-radius: 999px; margin-top: 0.35rem;
}
.pr-net-preview {
    background: #ecfdf5;
    border: 1px dashed var(--pr-success);
    border-radius: var(--pr-radius-sm);
    padding: 0.85rem; margin-top: 0.5rem; font-size: 0.85rem;
}
.pr-net-preview strong { color: var(--pr-success); font-size: 1.15rem; }
.pr-redacted-block {
    background: var(--pr-slate); color: #fff;
    padding: 2rem; text-align: center; font-weight: 700;
    border-radius: var(--pr-radius-sm); margin-bottom: 1rem;
}
.pr-print-watermark {
    position: fixed; top: 45%; left: 25%;
    transform: rotate(-25deg);
    font-size: 1.75rem; font-weight: 700;
    color: rgba(12, 74, 110, 0.08);
    pointer-events: none; z-index: 9999; white-space: nowrap; user-select: none;
}
.pr-print-misuse-watermark {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) rotate(-28deg);
    width: 90%;
    text-align: center;
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.5;
    color: #0f172a;
    opacity: 0.2;
    pointer-events: none;
    z-index: 10000;
    user-select: none;
}
.pr-command-deck { display: grid; gap: 1rem; }

.pr-campaign-toolbar-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    flex-wrap: wrap;
}
.pr-campaign-filter-bar {
    display: grid;
    grid-template-columns: minmax(200px, 1fr) minmax(200px, 1.4fr) auto;
    gap: 1rem;
    align-items: end;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--pr-border);
    background: var(--pr-surface-2);
}
@media (max-width: 768px) {
    .pr-campaign-filter-bar {
        grid-template-columns: 1fr;
    }
}
.pr-command-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 0.75rem;
}
.pr-command-kpi {
    background: #fff;
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-xs);
    padding: 0.85rem 1rem;
}
.pr-command-kpi strong { display: block; font-size: 1.15rem; margin-top: 0.25rem; }
.pr-command-workspace { display: grid; gap: 1.25rem; }
.pr-command-client-head {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--pr-border);
}
.pr-command-section { display: grid; gap: 0.5rem; }
.pr-notification-list { display: grid; gap: 0.65rem; }
.pr-notification-item {
    padding: 0.75rem 1rem;
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-xs);
    background: var(--pr-surface-elevated);
}
.pr-notification-item.is-unread {
    border-color: rgba(249, 115, 22, 0.45);
    background: #fff7ed;
}
.pr-notification-title { font-weight: 600; font-size: 0.9rem; }
.pr-notification-msg { font-size: 0.8rem; color: var(--pr-text-muted); margin-top: 0.2rem; }
.pr-notification-meta { font-size: 0.68rem; color: var(--pr-text-muted); margin-top: 0.35rem; }
.pr-legal-modal-body { font-size: 0.85rem; line-height: 1.6; max-height: 55vh; overflow-y: auto; }
.pr-legal-modal-body h2 { margin: 0 0 0.75rem; font-size: 1.05rem; }
.pr-legal-modal-body h3 { margin: 1rem 0 0.35rem; font-size: 0.85rem; }
.pr-legal-modal-body h4 { margin: 1rem 0 0.35rem; font-size: 0.8rem; }
.pr-legal-modal-body p { margin: 0 0 0.65rem; }

.pr-vault-key-notice {
    margin: 0 1rem 0.75rem;
    padding: 0.75rem 1rem;
    border-radius: 10px;
    border: 1px solid #bfdbfe;
    background: #eff6ff;
    color: #1e3a5f;
}
.pr-vault-key-notice.is-warning {
    border-color: #fecaca;
    background: #fef2f2;
    color: #7f1d1d;
}
.pr-vault-key-notice code {
    font-size: 0.78rem;
    word-break: break-all;
}
.pr-link-btn {
    background: none; border: none; padding: 0;
    color: var(--pr-primary-deep); font-size: inherit;
    text-decoration: underline; cursor: pointer;
}
.pr-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.pr-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
@media (max-width: 768px) { .pr-grid-2, .pr-grid-3 { grid-template-columns: 1fr; } }

.pr-empty-state {
    text-align: center;
    padding: 3rem 1.5rem;
    color: var(--pr-text-muted);
}
.pr-empty-state strong {
    display: block;
    font-family: var(--pr-font-display);
    font-size: 1.15rem;
    color: var(--pr-text);
    margin-bottom: 0.35rem;
}
.pr-skeleton-shimmer {
    background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);
    background-size: 200% 100%;
    animation: pr-shimmer 1.2s infinite;
    border-radius: var(--pr-radius-xs);
}
.pr-skeleton-row {
    height: 52px; margin: 0.5rem 0;
}
.pr-skeleton-row .pr-skeleton-shimmer { height: 100%; width: 100%; }
.pr-skeleton-campaign {
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-sm);
    padding: 1.15rem 1.25rem;
    margin-bottom: 0.85rem;
    background: rgba(255, 255, 255, 0.5);
}
.pr-skeleton-campaign-title { height: 18px; width: 55%; margin-bottom: 0.75rem; }
.pr-skeleton-campaign-pill { height: 22px; width: 28%; margin-bottom: 1rem; }
.pr-skeleton-metric-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.65rem;
}
.pr-skeleton-metric-cell { height: 36px; }
.pr-skeleton-table { padding: 0 1.35rem 1.35rem; }
.pr-skeleton-table-head {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1fr;
    gap: 0.75rem;
    margin-bottom: 0.65rem;
}
.pr-skeleton-table-head > div { height: 14px; }
.pr-skeleton-table-row {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1fr;
    gap: 0.75rem;
    margin-bottom: 0.55rem;
    padding: 0.65rem 0;
    border-bottom: 1px solid var(--pr-border);
}
.pr-skeleton-table-row > div { height: 16px; }
@media (max-width: 768px) {
    .pr-skeleton-metric-grid { grid-template-columns: repeat(2, 1fr); }
    .pr-skeleton-table-head,
    .pr-skeleton-table-row { grid-template-columns: 1fr 1fr; }
}

@keyframes pr-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
@keyframes pr-pulse-glow {
    0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(13, 122, 92, 0.45); }
    50% { opacity: 0.75; box-shadow: 0 0 0 6px rgba(13, 122, 92, 0); }
}
@keyframes pr-spin { to { transform: rotate(360deg); } }
@keyframes pr-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(196, 30, 74, 0.25); }
    50% { box-shadow: 0 0 0 8px rgba(196, 30, 74, 0); }
}

/* Live campaign pulse */
.pr-live-pulse {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--pr-success);
    flex-shrink: 0;
    animation: pr-pulse-glow 2.2s ease-in-out infinite;
}

/* Budget progress */
.pr-budget-progress {
    margin-top: 0.85rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--pr-border);
}
.pr-budget-progress-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 0.7rem;
    color: var(--pr-text-muted);
    margin-bottom: 0.35rem;
}
.pr-budget-progress-track {
    height: 6px;
    border-radius: 999px;
    background: rgba(12, 74, 110, 0.08);
    overflow: hidden;
}
.pr-budget-progress-fill {
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--pr-primary-deep), var(--pr-primary-bright));
    transition: width 0.72s var(--pr-spring);
    min-width: 0;
}
.pr-budget-progress-fill.is-warning { background: linear-gradient(90deg, var(--pr-warning), #fbbf24); }
.pr-budget-progress-fill.is-critical { background: linear-gradient(90deg, var(--pr-danger), #fb7185); }

/* Vue spring transitions */
.pr-spring-enter-active,
.pr-spring-leave-active { transition: opacity 0.32s var(--pr-spring), transform 0.32s var(--pr-spring); }
.pr-spring-enter-from,
.pr-spring-leave-to { opacity: 0; transform: scale(0.96) translateY(10px); }
.pr-spring-enter-to,
.pr-spring-leave-from { opacity: 1; transform: scale(1) translateY(0); }

.pr-fade-enter-active,
.pr-fade-leave-active { transition: opacity 0.28s var(--pr-spring), transform 0.28s var(--pr-spring); }
.pr-fade-enter-from,
.pr-fade-leave-to { opacity: 0; transform: translateY(-6px); }

.pr-tab-enter-active,
.pr-tab-leave-active { transition: opacity 0.28s var(--pr-spring), transform 0.28s var(--pr-spring); }
.pr-tab-enter-from { opacity: 0; transform: translateY(8px); }
.pr-tab-leave-to { opacity: 0; transform: translateY(-6px); }

.pr-toast-enter-active,
.pr-toast-leave-active,
.pr-toast-move { transition: all 0.32s var(--pr-spring); }
.pr-toast-enter-from,
.pr-toast-leave-to { opacity: 0; transform: translateX(16px); }

/* Toast stack */
.pr-toast-stack {
    position: fixed;
    bottom: 1.25rem;
    right: 1.25rem;
    z-index: 10040;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: min(360px, calc(100vw - 2rem));
    pointer-events: none;
}
.pr-toast {
    pointer-events: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    border-radius: var(--pr-radius-sm);
    font-size: 0.85rem;
    font-weight: 500;
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.65);
    box-shadow: 0 12px 40px rgba(12, 74, 110, 0.14);
    color: var(--pr-text);
}
.pr-toast-success { border-color: rgba(13, 122, 92, 0.35); }
.pr-toast-error { border-color: rgba(196, 30, 74, 0.35); }
.pr-toast-info { border-color: rgba(59, 130, 246, 0.35); }
.pr-toast-warn { border-color: rgba(249, 115, 22, 0.45); background: #fffbeb; color: #92400e; }
.pr-toast-dismiss {
    background: none;
    border: none;
    color: var(--pr-text-muted);
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
    padding: 0 0.15rem;
}
.pr-toast-dismiss:hover { color: var(--pr-text); }

/* â”€â”€â”€ Offline banner â”€â”€â”€ */
.pr-offline-banner {
    position: sticky;
    top: 0;
    z-index: 60;
    padding: 0.65rem 1.25rem;
    background: linear-gradient(90deg, #0c4a6e, #155e8a);
    color: #fef3c7;
    font-size: 0.8rem;
    font-weight: 600;
    text-align: center;
    border-bottom: 2px solid var(--pr-primary);
    box-shadow: 0 4px 20px rgba(12, 74, 110, 0.2);
}

/* â”€â”€â”€ Stagger list animations â”€â”€â”€ */
.stagger-move { transition: transform 0.32s var(--pr-spring); }
.stagger-enter-active {
    transition: opacity 0.38s var(--pr-spring), transform 0.38s var(--pr-spring);
    transition-delay: calc(var(--stagger-index, 0) * 0.055s);
}
.stagger-leave-active {
    transition: opacity 0.2s ease, transform 0.2s ease;
    position: absolute;
    width: calc(100% - 2.7rem);
}
.stagger-enter-from,
.stagger-leave-to {
    opacity: 0;
    transform: translateY(10px);
}

/* â”€â”€â”€ Mobile bottom-sheet modals (Instamart-style) â”€â”€â”€ */
@media (max-width: 768px) {
    .pr-modal-backdrop {
        align-items: flex-end;
        padding: 0;
    }
    .pr-modal {
        max-height: 88vh;
        border-radius: 20px 20px 0 0;
        transform: translateY(0);
        animation: pr-sheet-rise 0.36s var(--pr-spring) both;
    }
    .pr-modal::before {
        content: '';
        display: block;
        width: 40px;
        height: 4px;
        border-radius: 999px;
        background: #94a3b8;
        margin: 0.65rem auto 0;
    }
    .pr-spring-enter-from .pr-modal,
    .pr-spring-leave-to .pr-modal {
        transform: translateY(100%);
    }
    .pr-spring-enter-active .pr-modal,
    .pr-spring-leave-active .pr-modal {
        transition: transform 0.36s var(--pr-spring);
    }
}
@keyframes pr-sheet-rise {
    from { transform: translateY(100%); }
    to { transform: translateY(0); }
}

/* Tactile tabs / sidebar */
.pr-sidebar-btn:active,
.pr-chip:active,
.pr-wallet-card:active {
    transform: scale(0.96);
    transition: transform 0.1s cubic-bezier(0.4, 0, 0.2, 1);
}

.pr-alert { padding: 0.85rem 1rem; border-radius: var(--pr-radius-sm); font-size: 0.85rem; margin-bottom: 1rem; }
.pr-alert-error { background: #fff1f2; color: #9f1239; border: 1px solid #fecdd3; }
.pr-alert-warn { background: #fffbeb; color: #92400e; border: 1px solid #fde68a; }
/* Spinner removed â€” use pr-skeleton-shimmer for loading states (UX-A) */

/* â”€â”€â”€ Logo upload tiles (Sunrise Commerce) â”€â”€â”€ */
.pr-branding-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1.25rem;
}
.pr-branding-client-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 1rem;
}
.pr-logo-upload-tile { display: flex; flex-direction: column; gap: 0.5rem; }
.pr-logo-upload-preview {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 120px;
    height: 120px;
    border-radius: 24px;
    background: linear-gradient(145deg, #fff 0%, var(--pr-surface-2) 100%);
    border: 2px dashed var(--pr-border-strong);
    cursor: pointer;
    overflow: hidden;
    transition: border-color 0.2s, box-shadow 0.2s, transform 0.1s;
}
.pr-logo-upload-preview-sm {
    width: 88px;
    height: 88px;
    border-radius: 50%;
}
.pr-logo-upload-preview:hover {
    border-color: var(--pr-primary);
    box-shadow: var(--pr-shadow-orange);
    transform: scale(1.02);
}
.pr-logo-upload-preview.has-image { border-style: solid; border-color: rgba(249, 115, 22, 0.4); }
.pr-logo-upload-preview img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.pr-logo-upload-placeholder {
    font-family: var(--pr-font-display);
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--pr-primary-deep);
}
.pr-logo-upload-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(12, 74, 110, 0.55);
    color: #fff;
    font-size: 0.7rem;
    font-weight: 700;
    opacity: 0;
    transition: opacity 0.2s;
}
.pr-logo-upload-preview:hover .pr-logo-upload-overlay { opacity: 1; }
.pr-logo-upload-input {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
    width: 100%;
    height: 100%;
}
.pr-metric-val { font-size: 1.1rem; font-weight: 700; color: var(--pr-accent-blue-deep); }

/* Client activity audit trail (admin) */
.pr-pulse-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
    gap: 1rem;
}
@media (max-width: 900px) {
    .pr-pulse-grid { grid-template-columns: 1fr; }
}
.pr-session-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 0.75rem;
    align-items: center;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-sm);
    margin-bottom: 0.5rem;
    cursor: pointer;
    transition: border-color 0.2s, background 0.2s;
}
.pr-session-row:hover,
.pr-session-row.is-selected {
    border-color: rgba(249, 115, 22, 0.45);
    background: rgba(249, 115, 22, 0.04);
}
.pr-session-live {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.7rem;
    font-weight: 600;
    color: #059669;
}
.pr-session-live::before {
    content: '';
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #10b981;
    box-shadow: 0 0 8px rgba(16, 185, 129, 0.8);
    animation: pr-live-pulse 1.4s ease-in-out infinite;
}
@keyframes pr-live-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.5; transform: scale(0.85); }
}
.pr-activity-timeline {
    max-height: 420px;
    overflow-y: auto;
    border: 1px solid var(--pr-border);
    border-radius: var(--pr-radius-sm);
    padding: 0.5rem;
    background: var(--pr-surface-2);
}
.pr-activity-event {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.35rem 0.75rem;
    padding: 0.5rem 0.6rem;
    border-bottom: 1px solid var(--pr-border);
    font-size: 0.8rem;
}
.pr-activity-event:last-child { border-bottom: none; }
.pr-activity-time { color: var(--pr-text-muted); font-size: 0.72rem; white-space: nowrap; }
.pr-retainer-history-table { width: 100%; font-size: 0.8rem; }
.pr-retainer-history-table th,
.pr-retainer-history-table td { padding: 0.45rem 0.5rem; border-bottom: 1px solid var(--pr-border); }
.pr-security-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    justify-content: space-between;
}
.pr-pwa-install-banner {
    position: fixed;
    bottom: calc(var(--pr-app-tabbar-height, 64px) + env(safe-area-inset-bottom, 0px));
    left: 0;
    right: 0;
    z-index: 10050;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.85rem 1rem calc(1rem + env(safe-area-inset-bottom, 0px));
    background: #ffffff;
    color: #0f172a;
    border-top: 1px solid #e2e8f0;
    box-shadow: 0 -8px 32px rgba(15, 23, 42, 0.08);
    transform: translateY(110%);
    opacity: 0;
    transition: transform 0.45s var(--pr-spring), opacity 0.35s ease;
}
.pr-pwa-install-banner.is-visible {
    transform: translateY(0);
    opacity: 1;
}
.pr-pwa-install-banner.is-hiding {
    transform: translateY(110%);
    opacity: 0;
}
.pr-pwa-install-glow {
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse 80% 120% at 20% 0%, rgba(249, 115, 22, 0.35), transparent 55%);
    pointer-events: none;
    animation: pr-pwa-glow-shift 3s ease-in-out infinite;
}
@keyframes pr-pwa-glow-shift {
    0%, 100% { opacity: 0.6; transform: translateX(0); }
    50% { opacity: 1; transform: translateX(8px); }
}
.pr-pwa-install-content {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex: 1;
    min-width: 0;
    position: relative;
    z-index: 1;
}
.pr-pwa-install-logo-wrap {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    overflow: hidden;
    flex-shrink: 0;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.08);
    animation: pr-pwa-logo-float 2.8s ease-in-out infinite;
}
@keyframes pr-pwa-logo-float {
    0%, 100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-4px) scale(1.04); }
}
.pr-pwa-install-logo {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.pr-pwa-install-logo-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #f97316, #ea580c);
    font-weight: 800;
    font-size: 0.85rem;
}
.pr-pwa-install-title {
    margin: 0;
    font-size: 0.92rem;
    font-weight: 700;
}
.pr-pwa-install-sub {
    margin: 0.15rem 0 0;
    font-size: 0.75rem;
    color: #64748b;
}
.pr-pwa-install-actions {
    display: flex;
    gap: 0.5rem;
    flex-shrink: 0;
    position: relative;
    z-index: 1;
}
.pr-pwa-install-cta {
    animation: pr-pwa-cta-pulse 2s ease-in-out infinite;
}
@keyframes pr-pwa-cta-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(249, 115, 22, 0.45); }
    50% { box-shadow: 0 0 0 8px rgba(249, 115, 22, 0); }
}
.pr-pwa-install-cta-icon {
    display: inline-block;
    animation: pr-pwa-arrow-bounce 1.2s ease-in-out infinite;
}
@keyframes pr-pwa-arrow-bounce {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(3px); }
}
.pr-pwa-dismiss-btn {
    color: #0f172a;
    border-color: #e2e8f0;
}
.pr-ios-install-hint {
    position: fixed;
    bottom: 1rem;
    left: 1rem;
    right: 1rem;
    z-index: 9997;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-radius: var(--pr-card-radius-sm);
    background: #ffffff;
    color: #0f172a;
    font-size: 0.8rem;
    border: 1px solid #e2e8f0;
    box-shadow: 0 12px 32px rgba(15, 23, 42, 0.1);
    transform: translateY(120%);
    opacity: 0;
    transition: transform 0.4s var(--pr-spring), opacity 0.3s ease;
    cursor: pointer;
}
.pr-ios-install-hint.is-visible {
    transform: translateY(0);
    opacity: 1;
    animation: pr-ios-hint-wiggle 4s ease-in-out infinite;
}
.pr-ios-install-hint.is-hiding {
    transform: translateY(120%);
    opacity: 0;
}
@keyframes pr-ios-hint-wiggle {
    0%, 92%, 100% { transform: translateY(0); }
    94% { transform: translateY(-3px); }
    96% { transform: translateY(2px); }
    98% { transform: translateY(-2px); }
}
.pr-ios-hint-pulse {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #22c55e;
    flex-shrink: 0;
    animation: pr-freshness-pulse 2s ease-in-out infinite;
}
.pr-ios-hint-icon {
    font-size: 1rem;
    opacity: 0.9;
}
.pr-notification-type {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--pr-text-muted);
}

/* â”€â”€â”€ v1.4 mobile admin, chat, font scale, motion â”€â”€â”€ */
.pr-font-small { font-size: 0.88rem; }
.pr-font-normal { font-size: 1rem; }
.pr-font-large { font-size: 1.12rem; }

.pr-login-card-glass {
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255, 255, 255, 0.55);
    box-shadow: 0 20px 50px rgba(12, 74, 110, 0.12);
}

.pr-login-trust-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin-top: 1.25rem;
}
.pr-trust-badge {
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 0.35rem 0.65rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    border: 1px solid rgba(255, 255, 255, 0.25);
    color: rgba(255, 255, 255, 0.92);
}

.pr-font-scale .pr-btn.active { background: rgba(12, 74, 110, 0.12); font-weight: 700; }
.pr-header-tools { gap: 0.35rem; align-items: center; }

.pr-wallet-pulse {
    animation: pr-wallet-pulse 1.2s ease-out 1;
}
@keyframes pr-wallet-pulse {
    0%, 100% { transform: scale(1); }
    40% { transform: scale(1.02); box-shadow: 0 0 0 3px rgba(196, 30, 74, 0.2); }
}

.pr-chat-panel { display: flex; flex-direction: column; min-height: 0; }
.pr-chat-thread {
    flex: 1;
    min-height: 120px;
    max-height: none;
    overflow-y: auto;
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    background: rgba(255, 255, 255, 0.45);
    border-radius: var(--pr-radius);
    border: 1px solid rgba(12, 74, 110, 0.08);
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain;
}
.pr-chat-thread-admin { max-height: 240px; }
.pr-chat-bubble {
    max-width: 85%;
    padding: 0.55rem 0.75rem;
    border-radius: 14px;
    animation: pr-chat-slide-in 0.35s var(--pr-spring);
}
.pr-chat-bubble.is-self { align-self: flex-end; background: linear-gradient(135deg, #0c4a6e, #155e8a); color: #fff; }
.pr-chat-bubble.is-admin { align-self: flex-start; background: #fff; border: 1px solid rgba(12, 74, 110, 0.12); }
.pr-chat-bubble.is-client { align-self: flex-start; background: #fff; border: 1px solid rgba(12, 74, 110, 0.12); }
.pr-chat-text { margin: 0; font-size: 0.9rem; line-height: 1.45; }
.pr-chat-time { font-size: 0.65rem; opacity: 0.75; display: block; margin-top: 0.25rem; }
.pr-chat-compose {
    display: flex;
    gap: 0.5rem;
    align-items: flex-end;
    margin-top: 0.75rem;
    padding-bottom: env(safe-area-inset-bottom, 1rem);
}
.pr-chat-input { flex: 1; min-height: 44px; resize: none; }

@keyframes pr-chat-slide-in {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

.pr-toast-stack-client {
    top: 1rem;
    right: 1rem;
}
@media (max-width: 767px) {
    .pr-toast-stack-client {
        top: auto;
        bottom: calc(4.5rem + env(safe-area-inset-bottom, 0));
        left: 0.75rem;
        right: 0.75rem;
    }
    .pr-modal-backdrop.pr-mobile-sheet {
        align-items: flex-end;
        padding: 0;
    }
    .pr-modal.pr-modal-sheet {
        width: 100%;
        max-width: 100%;
        max-height: 92vh;
        border-radius: 16px 16px 0 0;
        margin: 0;
        animation: pr-sheet-up 0.38s var(--pr-spring);
    }
    .pr-command-quick-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 0.45rem;
        margin-bottom: 0.75rem;
    }
    .pr-modal .pr-field input,
    .pr-modal .pr-field select,
    .pr-modal .pr-field textarea,
    .pr-modal .pr-btn {
        min-height: 44px;
    }
}
@keyframes pr-sheet-up {
    from { transform: translateY(100%); }
    to { transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .pr-wallet-pulse,
    .pr-chat-bubble,
    .pr-modal.pr-modal-sheet { animation: none !important; }
    .pr-budget-progress-fill { transition: none !important; }
}

.pr-pdf-footer-meta {
    margin-top: 1rem;
    padding-top: 0.5rem;
    font-size: 0.65rem;
    line-height: 1.45;
    color: #1c1e21;
    opacity: 0.3;
}

@media print {
    @page { margin: 14mm 12mm; }
    body * { visibility: hidden !important; }
    #print-root, #print-root * { visibility: visible !important; }
    #print-root {
        display: block !important;
        position: absolute !important;
        left: 0 !important;
        top: 0 !important;
        width: 100% !important;
        padding: 0 !important;
        background: #fff !important;
        color: #000 !important;
    }
    #print-root section {
        display: block !important;
        padding: 0 !important;
        background: #fff !important;
    }
    #printable-report-section,
    #printable-finance-section {
        display: none !important;
        visibility: hidden !important;
    }
    .pr-print-watermark,
    .pr-print-misuse-watermark,
    .pr-print-duplicate-mark { display: none !important; visibility: hidden !important; }
    .no-print, .pr-modal-backdrop, .pr-godmode-banner, .pr-sidebar { display: none !important; }
}

/* Mobile nav: CSS breakpoints (primary) + force-mobile-view UA fallback */
@media (max-width: 1023px) {
    body.pr-portal-shell .pr-app-rail,
    body.force-mobile-view .pr-app-rail { display: none !important; }
    body.pr-portal-shell .pr-app-tabbar,
    body.force-mobile-view .pr-app-tabbar { display: flex !important; }
    body.pr-portal-shell .pr-app-stage-scroll,
    body.force-mobile-view .pr-app-stage-scroll {
        padding-bottom: calc(var(--pr-app-tabbar-height) + var(--pr-safe-bottom) + 1.15rem);
    }
}

/* Legacy token stub — visual authority: portal-premium.css */
.pr-portal-root {
    --pr-fusion-text: #0f172a;
    --pr-fusion-muted: #64748b;
    --pr-bg: #f8fafc;
    --pr-text: #0f172a;
    --pr-text-muted: #64748b;
}

