/* ============================================
   SERVICEHUB — Design System
   ============================================ */

:root {
    --primary:        #00A859;
    --primary-dark:   #007d42;
    --primary-light:  #e6f7ef;
    --accent-orange:  #FF6B35;
    --accent-blue:    #2563EB;
    --accent-purple:  #7C3AED;
    --accent-pink:    #EC4899;

    --bg:             #F0F4F8;
    --bg-card:        #ffffff;
    --bg-elevated:    #ffffff;
    --text:           #0f172a;
    --text-muted:     #64748b;
    --text-subtle:    #94a3b8;
    --border:         #e2e8f0;

    --danger:         #ef4444;
    --warning:        #f59e0b;
    --success:        #10b981;

    --radius-sm:  8px;
    --radius-md:  14px;
    --radius-lg:  20px;
    --radius-xl:  28px;

    --shadow-sm:  0 1px 3px rgba(0,0,0,.07), 0 1px 2px rgba(0,0,0,.05);
    --shadow-md:  0 4px 16px rgba(0,0,0,.08);
    --shadow-lg:  0 12px 40px rgba(0,0,0,.12);

    --nav-h:      66px;
    --header-h:   62px;
    --font:       'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
}

@media (prefers-color-scheme: dark) {
    :root {
        --bg:          #0a0f1a;
        --bg-card:     #111827;
        --bg-elevated: #1a2235;
        --text:        #f1f5f9;
        --text-muted:  #94a3b8;
        --text-subtle: #475569;
        --border:      #1e293b;
        --primary-light: rgba(0,168,89,.15);
    }
}

/* ---- Reset ---- */
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }

body {
    font-family: var(--font);
    background: var(--bg);
    color: var(--text);
    -webkit-tap-highlight-color: transparent;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
}

body.app-mode {
    padding-top: var(--header-h);
    padding-bottom: var(--nav-h);
}

a { color: inherit; text-decoration: none; }
button { cursor: pointer; font-family: var(--font); }
img { max-width: 100%; }

/* ============================================
   LANDING PAGE
   ============================================ */

.landing {
    min-height: 100vh;
    background: var(--bg);
    overflow-x: hidden;
}

/* Nav bar */
.land-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1.2rem 1.5rem;
    position: sticky;
    top: 0;
    background: rgba(255,255,255,.85);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    z-index: 100;
    border-bottom: 1px solid var(--border);
}

@media (prefers-color-scheme: dark) {
    .land-nav { background: rgba(10,15,26,.85); }
}

.land-nav-logo { font-size: 1.4rem; font-weight: 800; color: var(--primary); }
.land-nav-logo span { color: var(--text); }

.land-nav-cta {
    display: flex; gap: .6rem;
}

.btn-ghost {
    background: transparent;
    border: 1.5px solid var(--border);
    color: var(--text);
    padding: .55rem 1.1rem;
    border-radius: var(--radius-md);
    font-size: .875rem;
    font-weight: 600;
}

/* Hero */
.land-hero {
    padding: 3rem 1.5rem 2rem;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.land-hero::before {
    content: '';
    position: absolute;
    top: -120px; left: 50%; transform: translateX(-50%);
    width: 600px; height: 600px;
    background: radial-gradient(circle, rgba(0,168,89,.15) 0%, transparent 70%);
    pointer-events: none;
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    background: var(--primary-light);
    color: var(--primary);
    font-size: .78rem;
    font-weight: 700;
    padding: .4rem .9rem;
    border-radius: 100px;
    margin-bottom: 1.2rem;
    letter-spacing: .03em;
    text-transform: uppercase;
}

.hero-badge i { font-size: .7rem; }

.land-hero h1 {
    font-size: clamp(2.2rem, 9vw, 3.4rem);
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -.03em;
    margin-bottom: 1rem;
    color: var(--text);
}

.land-hero h1 em {
    font-style: normal;
    color: var(--primary);
}

.land-hero p {
    font-size: 1.05rem;
    color: var(--text-muted);
    max-width: 360px;
    margin: 0 auto 2rem;
    line-height: 1.65;
}

.hero-actions {
    display: flex;
    flex-direction: column;
    gap: .75rem;
    max-width: 320px;
    margin: 0 auto 2.5rem;
}

/* Hero phone mockup */
.hero-phone {
    position: relative;
    max-width: 260px;
    margin: 0 auto 1rem;
}

.phone-frame {
    background: var(--text);
    border-radius: 38px;
    padding: 14px;
    box-shadow: var(--shadow-lg), 0 0 0 1px rgba(255,255,255,.08) inset;
    position: relative;
}

.phone-notch {
    width: 70px; height: 22px;
    background: var(--text);
    border-radius: 0 0 14px 14px;
    position: absolute; top: 0; left: 50%; transform: translateX(-50%);
    z-index: 2;
}

.phone-screen {
    background: var(--bg);
    border-radius: 28px;
    overflow: hidden;
    height: 360px;
    position: relative;
}

.phone-status {
    background: var(--primary);
    padding: .6rem 1rem .4rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.phone-status-logo { color: #fff; font-weight: 800; font-size: .85rem; }

.phone-content { padding: .8rem; }

.phone-greeting {
    font-size: .8rem; font-weight: 700;
    margin-bottom: .7rem;
    color: var(--text);
}

.phone-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .5rem;
}

.phone-card {
    background: var(--bg-card);
    border-radius: 10px;
    padding: .65rem .5rem;
    text-align: center;
    box-shadow: var(--shadow-sm);
}

.phone-card i { font-size: 1.3rem; display: block; margin-bottom: .3rem; }
.phone-card span { font-size: .65rem; font-weight: 600; color: var(--text-muted); }

.phone-wallet {
    background: var(--primary);
    border-radius: 10px;
    padding: .75rem;
    margin-top: .5rem;
    color: #fff;
}
.phone-wallet p { font-size: .65rem; opacity: .85; }
.phone-wallet h4 { font-size: 1.1rem; font-weight: 800; margin-top: .15rem; }

/* Stats strip */
.land-stats {
    display: flex;
    justify-content: space-around;
    padding: 1.5rem;
    background: var(--bg-card);
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    margin-bottom: 2.5rem;
}

.stat-item { text-align: center; }
.stat-num { font-size: 1.5rem; font-weight: 800; color: var(--primary); }
.stat-lbl { font-size: .75rem; color: var(--text-muted); margin-top: .2rem; }

/* Features */
.land-section {
    padding: 2rem 1.5rem;
}

.section-eyebrow {
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--primary);
    margin-bottom: .6rem;
}

.section-title {
    font-size: 1.6rem;
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.2;
    margin-bottom: .6rem;
}

.section-sub {
    font-size: .95rem;
    color: var(--text-muted);
    line-height: 1.6;
    margin-bottom: 1.5rem;
}

.feature-list { display: flex; flex-direction: column; gap: .9rem; }

.feature-item {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    background: var(--bg-card);
    padding: 1.1rem;
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-sm);
    border: 1px solid var(--border);
}

.feat-icon {
    width: 44px; height: 44px; flex-shrink: 0;
    border-radius: var(--radius-sm);
    display: flex; align-items: center; justify-content: center;
    font-size: 1.1rem;
}

.feat-text h5 { font-size: .9rem; font-weight: 700; margin-bottom: .2rem; }
.feat-text p { font-size: .82rem; color: var(--text-muted); line-height: 1.5; }

/* Roles section */
.roles-grid {
    display: flex;
    flex-direction: column;
    gap: .9rem;
}

.role-card {
    background: var(--bg-card);
    border-radius: var(--radius-md);
    padding: 1.2rem;
    border: 1.5px solid var(--border);
    display: flex; align-items: center; gap: 1rem;
    transition: border-color .2s, transform .2s;
    cursor: pointer;
}

.role-card:hover { border-color: var(--primary); transform: translateY(-1px); }

.role-icon {
    width: 50px; height: 50px; flex-shrink: 0;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.2rem;
}

.role-text h5 { font-size: .95rem; font-weight: 700; }
.role-text p { font-size: .82rem; color: var(--text-muted); margin-top: .15rem; line-height: 1.4; }
.role-arrow { margin-left: auto; color: var(--text-subtle); font-size: .9rem; }

/* Testimonials */
.testimonials { display: flex; flex-direction: column; gap: .9rem; }

.testi-card {
    background: var(--bg-card);
    border-radius: var(--radius-md);
    padding: 1.2rem;
    border: 1px solid var(--border);
    box-shadow: var(--shadow-sm);
}

.testi-text {
    font-size: .88rem;
    line-height: 1.6;
    color: var(--text-muted);
    margin-bottom: .9rem;
    font-style: italic;
}

.testi-author { display: flex; align-items: center; gap: .6rem; }

.testi-avatar {
    width: 34px; height: 34px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: .85rem; color: #fff;
    flex-shrink: 0;
}

.testi-name { font-size: .82rem; font-weight: 700; }
.testi-role { font-size: .75rem; color: var(--text-muted); }

.testi-stars { margin-left: auto; color: var(--warning); font-size: .78rem; }

/* CTA bottom */
.land-cta {
    padding: 2.5rem 1.5rem;
    text-align: center;
    background: var(--primary);
    color: #fff;
}

.land-cta h2 { font-size: 1.6rem; font-weight: 800; margin-bottom: .75rem; }
.land-cta p { font-size: .95rem; opacity: .88; margin-bottom: 1.5rem; line-height: 1.5; }

.land-footer {
    padding: 1.2rem 1.5rem;
    text-align: center;
    border-top: 1px solid var(--border);
    font-size: .78rem;
    color: var(--text-subtle);
}

/* ============================================
   APP SHELL
   ============================================ */

.app-header {
    position: fixed; top: 0; width: 100%;
    height: var(--header-h);
    background: var(--bg-card);
    display: flex; justify-content: space-between; align-items: center;
    padding: 0 1.25rem;
    box-shadow: 0 1px 0 var(--border);
    z-index: 1000;
}

.logo { font-size: 1.3rem; font-weight: 800; color: var(--primary); }
.logo span { color: var(--text); }

.header-actions { display: flex; align-items: center; gap: .25rem; }

.header-actions button {
    background: none; border: none;
    color: var(--text);
    font-size: 1.1rem;
    width: 40px; height: 40px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    position: relative;
    transition: background .15s;
}

.header-actions button:hover { background: var(--bg); }

.header-actions #btn-wallet {
    background: var(--primary-light);
    color: var(--primary);
    font-size: .8rem;
    font-weight: 700;
    width: auto;
    padding: 0 .9rem;
    border-radius: 100px;
    gap: .3rem;
}

.badge {
    position: absolute; top: 6px; right: 6px;
    background: var(--danger);
    color: #fff;
    font-size: .6rem; font-weight: 700;
    min-width: 16px; height: 16px;
    border-radius: 100px;
    display: flex; align-items: center; justify-content: center;
    padding: 0 3px;
    border: 2px solid var(--bg-card);
}

.bottom-nav {
    position: fixed; bottom: 0; width: 100%;
    height: var(--nav-h);
    background: var(--bg-card);
    display: flex; justify-content: space-around; align-items: center;
    box-shadow: 0 -1px 0 var(--border);
    z-index: 1000;
    padding-bottom: env(safe-area-inset-bottom, 0);
}

.nav-item {
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    gap: 3px;
    color: var(--text-subtle);
    font-size: .68rem; font-weight: 600;
    flex: 1;
    padding: .4rem 0;
    transition: color .2s;
    position: relative;
}

.nav-item i { font-size: 1.15rem; transition: transform .2s; }
.nav-item.active { color: var(--primary); }
.nav-item.active i { transform: scale(1.1); }

/* ============================================
   SKELETON LOADER
   ============================================ */

.skeleton-wrapper { padding: 1.25rem; }

.skeleton {
    background: linear-gradient(90deg, var(--bg-card) 25%, var(--border) 50%, var(--bg-card) 75%);
    background-size: 400% 100%;
    animation: shimmer 1.6s ease-in-out infinite;
    border-radius: var(--radius-md);
}

.skeleton-hero { height: 140px; margin-bottom: 1rem; }
.skeleton-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; margin-bottom: 1rem; }
.skeleton-card { height: 100px; }
.skeleton-text { height: 16px; margin-bottom: .6rem; }
.skeleton-text.short { width: 60%; }

@keyframes shimmer { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

/* ============================================
   SHARED COMPONENTS
   ============================================ */

.btn-primary {
    display: flex; align-items: center; justify-content: center; gap: .5rem;
    background: var(--primary);
    color: #fff; border: none;
    padding: .9rem 1.5rem;
    border-radius: var(--radius-md);
    font-weight: 700; font-size: .95rem;
    width: 100%;
    transition: background .15s, transform .1s;
    letter-spacing: -.01em;
}

.btn-primary:hover { background: var(--primary-dark); }
.btn-primary:active { transform: scale(.98); }
.btn-primary:disabled { opacity: .6; cursor: not-allowed; }

.btn-outline {
    display: flex; align-items: center; justify-content: center; gap: .5rem;
    background: transparent;
    color: var(--primary); border: 1.5px solid var(--primary);
    padding: .9rem 1.5rem;
    border-radius: var(--radius-md);
    font-weight: 700; font-size: .95rem;
    width: 100%;
    transition: background .15s;
}

.btn-outline:hover { background: var(--primary-light); }

.btn-danger {
    display: flex; align-items: center; justify-content: center; gap: .5rem;
    background: transparent; border: 1.5px solid var(--danger);
    color: var(--danger); padding: .9rem; border-radius: var(--radius-md);
    font-weight: 700; width: 100%; font-size: .95rem;
}

.card {
    background: var(--bg-card);
    border-radius: var(--radius-md);
    border: 1px solid var(--border);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}

.page-pad { padding: 1.25rem; padding-bottom: 2rem; }

.section-hd {
    display: flex; justify-content: space-between; align-items: center;
    margin-bottom: .9rem;
}

.section-hd h3 { font-size: 1rem; font-weight: 700; }
.section-hd a { font-size: .82rem; color: var(--primary); font-weight: 600; }

/* ============================================
   AUTH SCREENS
   ============================================ */

.auth-shell {
    min-height: 100vh;
    display: flex; flex-direction: column;
}

.auth-top {
    padding: 1.5rem 1.5rem .5rem;
    display: flex; align-items: center; gap: .75rem;
}

.auth-back-btn {
    width: 38px; height: 38px;
    border-radius: 50%;
    background: var(--bg-card);
    border: 1px solid var(--border);
    display: flex; align-items: center; justify-content: center;
    color: var(--text); font-size: .9rem;
}

.auth-body {
    flex: 1;
    padding: .5rem 1.5rem 2rem;
    display: flex; flex-direction: column;
    max-width: 480px;
    width: 100%;
    margin: 0 auto;
}

.auth-title { font-size: 1.7rem; font-weight: 800; margin-bottom: .35rem; letter-spacing: -.02em; }
.auth-sub { font-size: .9rem; color: var(--text-muted); margin-bottom: 1.75rem; line-height: 1.5; }

.form-group { margin-bottom: 1.1rem; }

.form-group label {
    display: block;
    font-size: .82rem; font-weight: 600;
    margin-bottom: .45rem;
    color: var(--text);
}

.form-control {
    width: 100%; padding: .8rem 1rem;
    background: var(--bg);
    border: 1.5px solid var(--border);
    border-radius: var(--radius-md);
    font-size: .95rem; font-family: var(--font);
    color: var(--text);
    transition: border-color .2s, box-shadow .2s;
    appearance: none;
}

.form-control:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(0,168,89,.12);
}

select.form-control { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; padding-right: 2.5rem; }

.input-group { position: relative; }
.input-group .form-control { padding-right: 3rem; }
.input-suffix {
    position: absolute; right: .9rem; top: 50%; transform: translateY(-50%);
    color: var(--text-muted); font-size: .9rem; background: none; border: none;
}

.error-msg {
    color: var(--danger); font-size: .82rem;
    margin-bottom: .75rem; display: none;
    padding: .7rem .9rem;
    background: rgba(239,68,68,.08);
    border-radius: var(--radius-sm);
    border-left: 3px solid var(--danger);
}

.auth-divider {
    text-align: center; margin: 1.2rem 0;
    font-size: .82rem; color: var(--text-muted);
    position: relative;
}

.auth-divider::before, .auth-divider::after {
    content: ''; position: absolute; top: 50%;
    width: 38%; height: 1px; background: var(--border);
}
.auth-divider::before { left: 0; }
.auth-divider::after { right: 0; }

.auth-switch {
    text-align: center; margin-top: 1.25rem;
    font-size: .88rem; color: var(--text-muted);
}

.auth-switch a { color: var(--primary); font-weight: 700; }

.btn-google {
    display: flex; align-items: center; justify-content: center; gap: .65rem;
    background: #fff;
    color: #1f1f1f; border: 1.5px solid var(--border);
    padding: .85rem 1.5rem;
    border-radius: var(--radius-md);
    font-weight: 600; font-size: .95rem;
    width: 100%;
    transition: background .15s, box-shadow .15s;
}
.btn-google:hover { box-shadow: 0 1px 6px rgba(0,0,0,.12); }
.btn-google:active { transform: scale(.98); }
.btn-google:disabled { opacity: .6; cursor: not-allowed; }
.btn-google svg { width: 1.1rem; height: 1.1rem; flex: 0 0 auto; }

.auth-forgot-link {
    text-align: right; margin: -.6rem 0 1.1rem;
    font-size: .82rem;
}
.auth-forgot-link a { color: var(--primary); font-weight: 600; }

.otp-input-row {
    display: flex; gap: .55rem; justify-content: center;
    margin: .25rem 0 1.4rem;
}
.otp-digit {
    width: 2.5rem; height: 3rem;
    text-align: center;
    font-size: 1.3rem; font-weight: 700;
    background: var(--bg);
    border: 1.5px solid var(--border);
    border-radius: var(--radius-md);
    color: var(--text);
}
.otp-digit:focus {
    outline: none; border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(0,168,89,.12);
}

.auth-resend {
    text-align: center; margin-top: 1rem;
    font-size: .85rem; color: var(--text-muted);
}
.auth-resend button {
    background: none; border: none; color: var(--primary);
    font-weight: 700; font-size: .85rem; padding: 0;
}
.auth-resend button:disabled { color: var(--text-muted); cursor: not-allowed; }


.role-select-grid {
    display: grid; grid-template-columns: 1fr 1fr;
    gap: .7rem; margin-bottom: 1.1rem;
}

.role-opt {
    border: 1.5px solid var(--border);
    border-radius: var(--radius-md);
    padding: .9rem .75rem;
    text-align: center;
    cursor: pointer;
    transition: border-color .2s, background .2s;
    background: var(--bg);
}

.role-opt i { font-size: 1.4rem; display: block; margin-bottom: .4rem; }
.role-opt span { font-size: .8rem; font-weight: 600; display: block; }
.role-opt small { font-size: .72rem; color: var(--text-muted); }

.role-opt.selected {
    border-color: var(--primary);
    background: var(--primary-light);
}
.role-opt.selected i { color: var(--primary); }

/* ============================================
   HOME VIEW
   ============================================ */

.home-banner {
    background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
    color: #fff;
    padding: 1.4rem 1.25rem;
    border-radius: var(--radius-lg);
    margin-bottom: 1.25rem;
    position: relative;
    overflow: hidden;
}

.home-banner::after {
    content: '';
    position: absolute; right: -20px; top: -20px;
    width: 120px; height: 120px;
    background: rgba(255,255,255,.08);
    border-radius: 50%;
}

.home-banner h2 { font-size: 1.2rem; font-weight: 800; margin-bottom: .2rem; }
.home-banner p { font-size: .85rem; opacity: .88; }
.home-banner .role-tag {
    display: inline-block;
    background: rgba(255,255,255,.2);
    padding: .25rem .7rem;
    border-radius: 100px;
    font-size: .72rem; font-weight: 700;
    margin-bottom: .6rem;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.wallet-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 1.1rem 1.25rem;
    margin-bottom: 1.25rem;
    display: flex; align-items: center; justify-content: space-between;
    box-shadow: var(--shadow-sm);
}

.wallet-info p { font-size: .78rem; color: var(--text-muted); margin-bottom: .2rem; }
.wallet-info h3 { font-size: 1.5rem; font-weight: 800; letter-spacing: -.02em; }

.wallet-actions { display: flex; gap: .5rem; }

.wallet-btn {
    display: flex; flex-direction: column; align-items: center; gap: .25rem;
    background: var(--primary-light);
    color: var(--primary);
    border: none; border-radius: var(--radius-sm);
    padding: .5rem .75rem;
    font-size: .72rem; font-weight: 700;
}

.wallet-btn i { font-size: 1rem; }

.quick-grid {
    display: grid; grid-template-columns: repeat(2, 1fr);
    gap: .75rem; margin-bottom: 1.5rem;
}

.quick-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 1.1rem;
    display: flex; flex-direction: column; align-items: flex-start;
    gap: .6rem;
    cursor: pointer;
    box-shadow: var(--shadow-sm);
    transition: transform .15s, box-shadow .15s;
}

.quick-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }

.quick-card-icon {
    width: 42px; height: 42px;
    border-radius: var(--radius-sm);
    display: flex; align-items: center; justify-content: center;
    font-size: 1.1rem;
}

.quick-card h5 { font-size: .88rem; font-weight: 700; }
.quick-card p { font-size: .75rem; color: var(--text-muted); line-height: 1.4; }

/* ============================================
   SERVICES VIEW
   ============================================ */

.search-bar {
    display: flex; align-items: center; gap: .75rem;
    background: var(--bg-card);
    border: 1.5px solid var(--border);
    border-radius: var(--radius-md);
    padding: .75rem 1rem;
    margin-bottom: 1.25rem;
    transition: border-color .2s;
}

.search-bar:focus-within { border-color: var(--primary); }
.search-bar i { color: var(--text-muted); font-size: 1rem; }
.search-bar input { flex: 1; background: none; border: none; outline: none; font-size: .95rem; font-family: var(--font); color: var(--text); }

.cat-scroll {
    display: flex; gap: .5rem;
    overflow-x: auto; padding-bottom: .5rem; margin-bottom: 1.25rem;
    scrollbar-width: none;
}
.cat-scroll::-webkit-scrollbar { display: none; }

.cat-pill {
    flex-shrink: 0;
    background: var(--bg-card);
    border: 1.5px solid var(--border);
    border-radius: 100px;
    padding: .45rem .9rem;
    font-size: .8rem; font-weight: 600;
    color: var(--text-muted);
    cursor: pointer;
    transition: all .2s;
}

.cat-pill.active {
    background: var(--primary);
    border-color: var(--primary);
    color: #fff;
}

.artisan-list { display: flex; flex-direction: column; gap: .75rem; }

.artisan-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 1rem;
    display: flex; gap: .9rem; align-items: center;
    box-shadow: var(--shadow-sm);
    cursor: pointer;
    transition: transform .15s;
}

.artisan-card:hover { transform: translateX(2px); }

.artisan-avatar {
    width: 54px; height: 54px; flex-shrink: 0;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-weight: 800; font-size: 1.1rem; color: #fff;
}

.artisan-info { flex: 1; min-width: 0; }
.artisan-info h5 { font-size: .9rem; font-weight: 700; margin-bottom: .15rem; }
.artisan-info p { font-size: .78rem; color: var(--text-muted); margin-bottom: .3rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.artisan-meta { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; }

.rating { font-size: .75rem; font-weight: 600; color: var(--warning); }
.rating i { font-size: .7rem; }

.badge-pill {
    font-size: .7rem; font-weight: 600;
    padding: .2rem .55rem;
    border-radius: 100px;
}

.badge-available { background: rgba(16,185,129,.12); color: var(--success); }
.badge-busy { background: rgba(245,158,11,.12); color: var(--warning); }
.badge-verified { background: var(--primary-light); color: var(--primary); }

.artisan-price { text-align: right; flex-shrink: 0; }
.artisan-price span { font-size: .8rem; font-weight: 700; color: var(--primary); display: block; }
.artisan-price small { font-size: .7rem; color: var(--text-muted); }

/* ============================================
   MARKETPLACE VIEW
   ============================================ */

.product-grid {
    display: grid; grid-template-columns: repeat(2, 1fr);
    gap: .75rem;
}

/* prod-* aliases — used by marketplace.js render */
.prod-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    cursor: pointer;
    transition: transform .15s;
    display: flex; flex-direction: column;
}
.prod-card:hover { transform: translateY(-2px); }

.prod-media {
    width: 100%; aspect-ratio: 1 / 1;
    overflow: hidden;
    background: var(--bg-surface);
    display: flex; align-items: center; justify-content: center;
}
.prod-media img {
    width: 100%; height: 100%; object-fit: cover; display: block;
}
.prod-noimg {
    width: 100%; height: 100%;
    display: flex; align-items: center; justify-content: center;
    color: var(--text-muted); font-size: 2.2rem;
}

.prod-body { padding: .6rem .7rem; flex: 1; display: flex; flex-direction: column; gap: .25rem; }
.prod-body h5 {
    font-size: .82rem; font-weight: 700; margin: 0;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.prod-seller {
    display: flex; align-items: center; gap: .3rem;
    font-size: .72rem; color: var(--text-muted); margin: 0;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.prod-avatar {
    width: 18px; height: 18px; border-radius: 50%; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: .58rem; font-weight: 700; color: #fff;
}
.prod-foot {
    display: flex; align-items: center; justify-content: space-between;
    margin-top: auto; padding-top: .3rem;
}
.prod-foot strong { font-size: .9rem; color: var(--primary); font-weight: 800; }

.product-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    cursor: pointer;
    transition: transform .15s;
}

.product-card:hover { transform: translateY(-2px); }

.product-img {
    height: 120px;
    display: flex; align-items: center; justify-content: center;
    font-size: 2.8rem;
    position: relative;
}

.product-fav {
    position: absolute; top: .5rem; right: .5rem;
    width: 28px; height: 28px;
    background: rgba(255,255,255,.9);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    border: none; color: var(--text-muted); font-size: .8rem;
    transition: color .2s;
}
.product-fav.active { color: var(--danger); }

.product-body { padding: .75rem; }
.product-body h5 { font-size: .85rem; font-weight: 700; margin-bottom: .2rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.product-body .product-seller { font-size: .72rem; color: var(--text-muted); margin-bottom: .5rem; }
.product-body .product-price { font-size: 1rem; font-weight: 800; color: var(--primary); }
.product-body .product-old { font-size: .75rem; color: var(--text-muted); text-decoration: line-through; margin-left: .3rem; }

.product-add {
    width: 28px; height: 28px;
    background: var(--primary);
    color: #fff; border: none; border-radius: var(--radius-sm);
    display: flex; align-items: center; justify-content: center;
    font-size: .85rem;
    float: right; margin-top: -.25rem;
}

/* ============================================
   CHAT VIEW
   ============================================ */

.chat-list { display: flex; flex-direction: column; gap: 0; }

.chat-item {
    display: flex; align-items: center; gap: .85rem;
    padding: .9rem 0;
    border-bottom: 1px solid var(--border);
    cursor: pointer;
    position: relative;
}

.chat-item:last-child { border-bottom: none; }

.chat-avatar {
    width: 48px; height: 48px; flex-shrink: 0;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: .95rem; color: #fff;
    position: relative;
}

.chat-online-dot {
    position: absolute; bottom: 1px; right: 1px;
    width: 11px; height: 11px;
    background: var(--success); border-radius: 50%;
    border: 2px solid var(--bg-card);
}

.chat-info { flex: 1; min-width: 0; }
.chat-info h5 { font-size: .88rem; font-weight: 700; margin-bottom: .15rem; }
.chat-info p { font-size: .78rem; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.chat-meta { display: flex; flex-direction: column; align-items: flex-end; gap: .3rem; }
.chat-time { font-size: .72rem; color: var(--text-subtle); }

.chat-unread {
    background: var(--primary); color: #fff;
    font-size: .65rem; font-weight: 700;
    min-width: 18px; height: 18px;
    border-radius: 100px;
    display: flex; align-items: center; justify-content: center;
    padding: 0 4px;
}

/* ============================================
   PROFILE VIEW
   ============================================ */

.profile-banner {
    background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
    padding: 1.75rem 1.25rem 3.5rem;
    text-align: center;
    color: #fff;
    position: relative;
}

.profile-avatar-wrap {
    width: 76px; height: 76px;
    border-radius: 50%;
    border: 3px solid rgba(255,255,255,.6);
    margin: 0 auto 0.7rem;
    overflow: hidden;
    background: rgba(255,255,255,.2);
    display: flex; align-items: center; justify-content: center;
    font-size: 1.8rem; font-weight: 800;
}

.profile-name { font-size: 1.15rem; font-weight: 800; }
.profile-email { font-size: .82rem; opacity: .85; margin-top: .2rem; }

.profile-role-badge {
    display: inline-block;
    margin-top: .6rem;
    background: rgba(255,255,255,.2);
    padding: .3rem .8rem;
    border-radius: 100px;
    font-size: .75rem; font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
}

.profile-stats-row {
    display: flex;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    margin: -1.5rem 1.25rem 1.25rem;
    overflow: hidden;
    box-shadow: var(--shadow-md);
    position: relative; z-index: 2;
}

.p-stat {
    flex: 1; padding: .9rem .5rem;
    text-align: center;
    border-right: 1px solid var(--border);
}
.p-stat:last-child { border-right: none; }
.p-stat-val { font-size: 1.2rem; font-weight: 800; color: var(--primary); }
.p-stat-lbl { font-size: .68rem; color: var(--text-muted); margin-top: .15rem; }

.menu-section { margin-bottom: 1.25rem; }

.menu-label {
    font-size: .72rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: .08em;
    color: var(--text-muted);
    padding: 0 1.25rem;
    margin-bottom: .5rem;
}

.menu-list {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    overflow: hidden;
    margin: 0 1.25rem;
}

.menu-item {
    display: flex; align-items: center; gap: .85rem;
    padding: .9rem 1.1rem;
    border-bottom: 1px solid var(--border);
    cursor: pointer;
    transition: background .15s;
}

.menu-item:last-child { border-bottom: none; }
.menu-item:hover { background: var(--bg); }

.menu-icon {
    width: 34px; height: 34px; border-radius: var(--radius-sm);
    display: flex; align-items: center; justify-content: center;
    font-size: .9rem; flex-shrink: 0;
}

.menu-item h5 { font-size: .88rem; font-weight: 600; }
.menu-item p { font-size: .75rem; color: var(--text-muted); margin-top: .1rem; }
.menu-item .menu-arrow { margin-left: auto; color: var(--text-subtle); font-size: .82rem; }
.menu-item .menu-value { margin-left: auto; font-size: .8rem; color: var(--text-muted); font-weight: 600; }

/* ============================================
   MODALS / SHEETS
   ============================================ */

.sheet-overlay {
    position: fixed; inset: 0;
    background: rgba(0,0,0,.5);
    z-index: 2000;
    display: flex; align-items: flex-end;
    animation: fadeIn .2s ease;
}

.sheet {
    background: var(--bg-card);
    border-radius: var(--radius-lg) var(--radius-lg) 0 0;
    padding: 1.5rem 1.5rem 2.5rem;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    animation: slideUp .25s ease;
}

.sheet-handle {
    width: 36px; height: 4px;
    background: var(--border);
    border-radius: 100px;
    margin: 0 auto 1.25rem;
}

.sheet h3 { font-size: 1.15rem; font-weight: 800; margin-bottom: .4rem; }
.sheet p.sub { font-size: .85rem; color: var(--text-muted); margin-bottom: 1.25rem; }

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideUp { from { transform: translateY(30px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

/* ============================================
   EMPTY STATES
   ============================================ */

.empty-state {
    padding: 3rem 1.5rem;
    text-align: center;
}

.empty-icon {
    width: 72px; height: 72px;
    border-radius: 50%;
    background: var(--primary-light);
    display: flex; align-items: center; justify-content: center;
    font-size: 1.8rem; color: var(--primary);
    margin: 0 auto 1.1rem;
}

.empty-state h4 { font-size: 1rem; font-weight: 700; margin-bottom: .4rem; }
.empty-state p { font-size: .85rem; color: var(--text-muted); line-height: 1.5; margin-bottom: 1.25rem; }

/* ============================================
   TOAST
   ============================================ */

.toast {
    position: fixed; bottom: calc(var(--nav-h) + 12px); left: 50%;
    transform: translateX(-50%) translateY(20px);
    background: var(--text); color: var(--bg-card);
    padding: .75rem 1.25rem;
    border-radius: 100px;
    font-size: .85rem; font-weight: 600;
    z-index: 9999; opacity: 0;
    transition: all .3s ease;
    white-space: nowrap;
    pointer-events: none;
    max-width: 90vw;
}

.toast.show {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* ============================================
   PROVIDER / SELLER / RIDER HOME EXTRAS
   ============================================ */

.online-toggle-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 1.1rem 1.25rem;
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 1.25rem;
    box-shadow: var(--shadow-sm);
}

.toggle-switch {
    width: 48px; height: 26px;
    background: var(--border);
    border-radius: 100px;
    position: relative; cursor: pointer;
    transition: background .25s;
    flex-shrink: 0;
    border: none;
}

.toggle-switch.on { background: var(--primary); }

.toggle-switch::after {
    content: '';
    position: absolute; top: 3px; left: 3px;
    width: 20px; height: 20px;
    background: #fff; border-radius: 50%;
    transition: transform .25s;
    box-shadow: 0 1px 4px rgba(0,0,0,.2);
}

.toggle-switch.on::after { transform: translateX(22px); }

.job-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 1rem;
    margin-bottom: .75rem;
    box-shadow: var(--shadow-sm);
}

.job-card-hd { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: .6rem; }
.job-card h5 { font-size: .9rem; font-weight: 700; }
.job-card p { font-size: .82rem; color: var(--text-muted); line-height: 1.5; }
.job-price { font-size: 1rem; font-weight: 800; color: var(--primary); }

.job-actions { display: flex; gap: .6rem; margin-top: .8rem; }
.job-actions .btn-accept {
    flex: 1; background: var(--primary); color: #fff; border: none;
    padding: .65rem; border-radius: var(--radius-sm); font-weight: 700; font-size: .85rem;
}
.job-actions .btn-decline {
    flex: 1; background: transparent; border: 1.5px solid var(--border);
    color: var(--text-muted); padding: .65rem; border-radius: var(--radius-sm); font-weight: 600; font-size: .85rem;
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (min-width: 480px) {
    .hero-phone { max-width: 300px; }
    .phone-screen { height: 400px; }
}

@media (min-width: 768px) {
    .auth-body { padding-top: 2rem; }
    .land-hero { padding: 5rem 2rem 3rem; }
    .land-hero h1 { font-size: 3.8rem; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

/* ============================================
   v3.1 POLISH ADDITIONS (appended — do not edit
   above; this section extends the design system)
   ============================================ */

/* Stackable toast queue */
.toast-stack {
    position: fixed; left: 50%; transform: translateX(-50%);
    bottom: calc(var(--nav-h) + 16px); z-index: 9999;
    display: flex; flex-direction: column-reverse; gap: .5rem;
    pointer-events: none; width: min(92vw, 380px);
}
.toast-stack .t {
    pointer-events: auto;
    background: var(--bg-card); color: var(--text);
    border: 1px solid var(--border); border-left: 4px solid var(--primary);
    border-radius: var(--radius-md); padding: .75rem .9rem;
    box-shadow: var(--shadow-lg); font-size: .85rem; font-weight: 600;
    display: flex; gap: .6rem; align-items: flex-start;
    animation: t-in .25s cubic-bezier(.2,.9,.3,1.2);
    will-change: transform, opacity;
}
.toast-stack .t.leaving { animation: t-out .2s ease forwards; }
.toast-stack .t.success { border-left-color: var(--success); }
.toast-stack .t.error   { border-left-color: var(--danger); }
.toast-stack .t.warning { border-left-color: var(--warning); }
.toast-stack .t .ic     { color: var(--primary); flex-shrink:0; margin-top:.1rem; }
.toast-stack .t.success .ic { color: var(--success); }
.toast-stack .t.error   .ic { color: var(--danger); }
.toast-stack .t.warning .ic { color: var(--warning); }
.toast-stack .t .x {
    background:none;border:none;color:var(--text-subtle);
    margin-left:auto;padding:0 .2rem;font-size:.9rem;
}
@keyframes t-in  { from { opacity:0; transform: translateY(8px) scale(.96); } to { opacity:1; transform: none; } }
@keyframes t-out { to   { opacity:0; transform: translateY(8px) scale(.96); } }

/* Status pills (semantic) */
.status-pill {
    display:inline-flex; align-items:center; gap:.35rem;
    padding:.22rem .55rem; border-radius:100px;
    font-size:.7rem; font-weight:700; letter-spacing:.02em;
    text-transform:uppercase;
}
.status-pill::before {
    content:''; width:6px; height:6px; border-radius:50%; background:currentColor;
}
.status-pending     { background: rgba(245,158,11,.12); color: #b45309; }
.status-accepted,
.status-assigned    { background: rgba(37,99,235,.12);  color: #1d4ed8; }
.status-in_progress,
.status-picked_up,
.status-shipped     { background: rgba(124,58,237,.12); color: #6d28d9; }
.status-completed,
.status-delivered,
.status-reviewed    { background: rgba(16,185,129,.12); color: #047857; }
.status-cancelled,
.status-declined    { background: rgba(100,116,139,.12);color: #475569; }
.status-searching   { background: rgba(236,72,153,.12); color: #be185d; }

/* Floating action button */
.fab {
    position: fixed; right: 18px;
    bottom: calc(var(--nav-h) + 18px);
    width: 56px; height: 56px; border-radius: 50%;
    background: var(--primary); color: #fff;
    border: none; box-shadow: 0 10px 28px rgba(0,168,89,.4);
    font-size: 1.2rem; display: flex; align-items: center; justify-content: center;
    z-index: 200; transition: transform .15s ease;
}
.fab:active { transform: scale(.94); }

/* Segmented control */
.segmented {
    display: flex; background: var(--bg-elevated);
    border: 1px solid var(--border); border-radius: 100px;
    padding: 4px; gap: 4px; margin-bottom: 1rem;
}
.segmented button {
    flex: 1; border: none; background: transparent;
    color: var(--text-muted); font-weight: 600; font-size: .82rem;
    padding: .55rem .8rem; border-radius: 100px; transition: all .18s ease;
}
.segmented button.active {
    background: var(--bg-card); color: var(--text);
    box-shadow: var(--shadow-sm);
}

/* Online presence dot */
.presence-dot {
    width:10px; height:10px; border-radius:50%;
    background: var(--text-subtle); border:2px solid var(--bg-card);
    position:absolute; right:-1px; bottom:-1px;
}
.presence-dot.on { background: var(--success); }

/* Cart pill */
.cart-pill {
    position: absolute; top: -4px; right: -4px;
    background: var(--danger); color: #fff;
    font-size: .65rem; font-weight: 800;
    min-width: 18px; height: 18px; padding: 0 5px;
    border-radius: 100px; display:inline-flex; align-items:center; justify-content:center;
    border: 2px solid var(--bg-card);
}

/* Chat bubbles */
.msg-row { display: flex; margin: .3rem 0; }
.msg-row.me { justify-content: flex-end; }
.bubble {
    max-width: 78%; padding: .55rem .8rem;
    border-radius: 16px; font-size: .88rem; line-height: 1.35;
    box-shadow: var(--shadow-sm);
    word-wrap: break-word;
}
.msg-row.them .bubble {
    background: var(--bg-card); color: var(--text);
    border-bottom-left-radius: 4px;
}
.msg-row.me .bubble {
    background: var(--primary); color: #fff;
    border-bottom-right-radius: 4px;
}
.bubble .stamp {
    display:block; font-size:.65rem; opacity:.7;
    margin-top:.25rem; text-align: right;
}

/* Composer */
.composer {
    display: flex; gap: .5rem; padding: .65rem .75rem;
    background: var(--bg-card); border-top: 1px solid var(--border);
    flex-shrink: 0;
}
.composer input {
    flex: 1; border: 1px solid var(--border);
    border-radius: 100px; padding: .65rem 1rem;
    background: var(--bg); color: var(--text);
    font-family: var(--font); font-size: .9rem; outline: none;
}
.composer input:focus { border-color: var(--primary); }
.composer button {
    width: 42px; height: 42px; border-radius: 50%;
    background: var(--primary); color: #fff; border: none;
}
.composer button:disabled { opacity: .5; }

/* Skeleton list item */
.sk-row {
    background: var(--bg-card); border:1px solid var(--border);
    border-radius: var(--radius-md); padding: .9rem;
    margin-bottom: .6rem; display:flex; gap:.8rem; align-items:center;
}
.sk-circle, .sk-line {
    background: linear-gradient(90deg, var(--border) 25%, var(--bg-elevated) 50%, var(--border) 75%);
    background-size: 200% 100%; animation: sk 1.4s infinite linear;
}
.sk-circle { width: 44px; height: 44px; border-radius: 50%; flex-shrink: 0; }
.sk-line   { height: 12px; border-radius: 6px; flex: 1; }
.sk-line.s { height: 10px; width: 60%; margin-top:.4rem; }
@keyframes sk { from { background-position: 200% 0; } to { background-position: -200% 0; } }

/* Route transitions */
#view-content { animation: route-in .25s ease; }
@keyframes route-in { from { opacity:.3; transform: translateY(6px); } to { opacity:1; transform: none; } }

/* ============================================
   WALLET LEDGER FEED
   ============================================ */
.ledger-feed { display:flex; flex-direction:column; gap:.4rem; max-height:360px; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.ledger-row { display:flex; align-items:center; gap:.7rem; padding:.6rem .25rem; border-bottom:1px solid var(--border); }
.ledger-row:last-child { border-bottom:none; }
.ledger-icon { width:36px; height:36px; flex-shrink:0; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:.8rem; }
.ledger-icon.credit { background:rgba(16,185,129,.14); color:var(--success); }
.ledger-icon.debit  { background:rgba(239,68,68,.12);  color:var(--danger); }
.ledger-info { flex:1; min-width:0; display:flex; flex-direction:column; gap:.1rem; }
.ledger-label { font-size:.85rem; font-weight:600; text-transform:capitalize; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ledger-time { font-size:.7rem; color:var(--text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ledger-amt { font-size:.9rem; font-weight:800; flex-shrink:0; }
.ledger-amt.credit { color:var(--success); }
.ledger-amt.debit  { color:var(--danger); }

/* ============================================
   SOURCE CODE VIEWER
   ============================================ */
.src-area {
    width:100%; min-height:340px; max-height:55vh;
    font-family:'SFMono-Regular', ui-monospace, Menlo, Consolas, monospace;
    font-size:.72rem; line-height:1.5;
    background:#0a0f1a; color:#e2e8f0;
    border:1px solid var(--border); border-radius:var(--radius-md);
    padding:.8rem; resize:vertical; white-space:pre; overflow:auto; tab-size:4;
}
#src-tabs button { text-transform:none; font-size:.78rem; }
.btn-secondary {
    display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
    background:var(--bg-elevated); color:var(--text);
    border:1.5px solid var(--border); border-radius:var(--radius-md);
    padding:.8rem 1rem; font-weight:700; font-size:.88rem;
}
.btn-secondary:hover { background:var(--primary-light); color:var(--primary); }

/* ============================================
   SERVICEHUB v3.2 — production additions
   ============================================ */

/* Header (app shell) */
#app-header {
    position: fixed; top: 0; left: 0; right: 0;
    height: var(--header-h);
    background: var(--bg-card);
    border-bottom: 1px solid var(--border);
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 1rem; z-index: 90;
}
#app-header .hdr-logo { font-weight: 800; font-size: 1.05rem; color: var(--text); }
#app-header .hdr-logo span { color: var(--primary); }
#app-header .hdr-right { display: flex; align-items: center; gap: .8rem; }
#app-header .hdr-cart { position: relative; color: var(--text); font-size: 1rem; }
#app-header .hdr-wallet {
    display: inline-flex; align-items: center; gap: .35rem;
    background: var(--primary-light); color: var(--primary);
    padding: .35rem .65rem; border-radius: 100px; font-weight: 700; font-size: .82rem;
}

/* Bottom nav */
#bottom-nav {
    position: fixed; left: 0; right: 0; bottom: 0;
    height: var(--nav-h);
    background: var(--bg-card);
    border-top: 1px solid var(--border);
    display: flex; align-items: stretch; justify-content: space-around; z-index: 90;
    padding-bottom: env(safe-area-inset-bottom, 0);
}
#bottom-nav .nav-item {
    flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    color: var(--text-muted); font-size: .68rem; gap: .15rem;
    text-decoration: none; padding: .3rem .2rem; min-height: 44px; position: relative;
}
#bottom-nav .nav-item i { font-size: 1.1rem; }
#bottom-nav .nav-item.active { color: var(--primary); }
#bottom-nav .nav-badge {
    position: absolute; top: 4px; right: 22%;
    background: var(--danger); color: #fff; font-size: .6rem; font-weight: 700;
    min-width: 16px; height: 16px; border-radius: 100px;
    display: inline-flex; align-items: center; justify-content: center; padding: 0 4px;
}

/* Cart pill */
.cart-pill {
    position: absolute; top: -6px; right: -10px;
    background: var(--danger); color: #fff;
    font-size: .62rem; font-weight: 700; min-width: 16px; height: 16px;
    border-radius: 100px; display: inline-flex; align-items: center; justify-content: center; padding: 0 4px;
}

/* Page loader */
#page-loader {
    display: none; position: fixed; inset: 0; align-items: center; justify-content: center;
    background: rgba(0,0,0,.04); z-index: 80;
}
#page-loader .spinner {
    width: 36px; height: 36px; border-radius: 50%;
    border: 3px solid var(--border); border-top-color: var(--primary);
    animation: sh-spin .8s linear infinite; margin: 30vh auto;
}
@keyframes sh-spin { to { transform: rotate(360deg); } }

/* Toast stack */
#toast-stack {
    position: fixed; left: 50%; bottom: calc(var(--nav-h) + 14px);
    transform: translateX(-50%);
    display: flex; flex-direction: column; gap: .5rem;
    z-index: 1000; pointer-events: none; max-width: min(420px, calc(100vw - 24px));
}
#toast-stack .t {
    pointer-events: auto;
    background: var(--bg-card); color: var(--text);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-md);
    padding: .65rem .8rem;
    display: flex; align-items: center; gap: .55rem;
    font-size: .85rem; font-weight: 600;
    animation: sh-toast-in .25s ease-out;
}
#toast-stack .t.leaving { animation: sh-toast-out .2s ease-in forwards; }
#toast-stack .t .ic { font-size: 1rem; }
#toast-stack .t.success .ic { color: var(--success); }
#toast-stack .t.error   .ic { color: var(--danger); }
#toast-stack .t.warning .ic { color: var(--warning); }
#toast-stack .t .x { margin-left: auto; background: none; border: none; color: var(--text-muted); font-size: 1rem; }
@keyframes sh-toast-in  { from { transform: translateY(12px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes sh-toast-out { to   { transform: translateY(12px); opacity: 0; } }

/* Upload progress bar (image uploads) */
.upload-bar {
    position: relative;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    overflow: hidden;
    height: 24px; margin-top: .4rem;
}
.upload-bar-fill {
    position: absolute; inset: 0 auto 0 0; width: 0%;
    background: linear-gradient(90deg, var(--primary), var(--primary-dark));
    transition: width .15s linear;
}
.upload-bar-label {
    position: relative; z-index: 1;
    font-size: .72rem; font-weight: 600; color: var(--text);
    line-height: 24px; padding: 0 .55rem; mix-blend-mode: difference; color: #fff;
}

/* Attachment thumbnails grid */
.att-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
    gap: .4rem; margin-top: .4rem;
}
.att-thumb {
    width: 100%; aspect-ratio: 1 / 1; object-fit: cover;
    border-radius: var(--radius-sm); background: var(--bg);
    border: 1px solid var(--border);
}

/* Chat: typing indicator, day separator, read ticks */
.typing-indicator {
    display: none; align-items: center; gap: .25rem;
    padding: .2rem 1rem .4rem; font-size: .72rem; color: var(--text-muted);
}
.typing-indicator .td {
    width: 5px; height: 5px; border-radius: 50%; background: var(--text-muted);
    animation: sh-typing 1s infinite ease-in-out;
}
.typing-indicator .td:nth-child(2) { animation-delay: .15s; }
.typing-indicator .td:nth-child(3) { animation-delay: .3s; }
@keyframes sh-typing {
    0%, 80%, 100% { opacity: .3; transform: translateY(0); }
    40%           { opacity: 1;  transform: translateY(-2px); }
}
.day-sep {
    text-align: center; font-size: .7rem; color: var(--text-subtle);
    text-transform: uppercase; letter-spacing: .5px; margin: .8rem 0 .4rem;
}
.msg-row .bubble .ticks { margin-left: .25rem; opacity: .6; }
.msg-row .bubble .ticks.read i { color: #38bdf8; opacity: 1; }
.msg-row.me .bubble .ticks { color: #fff; }

/* Wallet-tx status badges (profile + admin) */
.tx-badge {
    display: inline-block; padding: 1px 6px; border-radius: 100px;
    font-size: .62rem; font-weight: 700; margin-left: .35rem; text-transform: uppercase;
}
.tx-badge.tx-pending    { background: rgba(245,158,11,.15); color: var(--warning); }
.tx-badge.tx-successful { background: rgba(16,185,129,.15); color: var(--success); }
.tx-badge.tx-failed     { background: rgba(239,68,68,.15);  color: var(--danger); }

/* Presence dot */
.presence-dot {
    position: absolute; bottom: 0; right: 0;
    width: 10px; height: 10px; border-radius: 50%;
    background: var(--text-subtle); border: 2px solid var(--bg-card);
}
.presence-dot.on { background: var(--success); }

/* ╔══════════════════════════════════════════════════════════════════╗
   ║  Admin suite — dashboards, tabs, tables, KPIs, charts            ║
   ╚══════════════════════════════════════════════════════════════════╝ */
.adm-shell { padding: env(safe-area-inset-top, 0) 0 6rem; max-width: 1240px; margin: 0 auto;
    background: #0d1117; color: #f1f5f9; min-height: 100vh; }
.adm-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1rem 1.25rem;
    background: #0d1117; border-bottom: 1px solid #1e2a3a; }
.adm-head-l { display:flex; align-items:center; gap:.85rem; min-width:0; }
.adm-head h2 { font-size:1.15rem; font-weight:800; margin:0; line-height:1.2; }
.adm-head p  { font-size:.74rem; color:var(--text-muted,#6b7280); margin:.15rem 0 0; }
.adm-crest { width:42px; height:42px; border-radius:12px; display:grid; place-items:center;
    background:linear-gradient(135deg,#00A859,#0EA5E9); color:#fff; font-size:1.1rem; flex-shrink:0; }
.adm-back { width:auto !important; padding:.5rem .8rem !important; font-size:.78rem !important; }

.adm-tabs { display:flex; gap:.4rem; padding:0 1rem; overflow-x:auto; scrollbar-width:none;
    border-bottom:1px solid #1e2a3a; margin-bottom:1rem; background:#0d1117; }
.adm-tabs::-webkit-scrollbar { display:none; }
.adm-tab { flex:0 0 auto; display:flex; align-items:center; gap:.4rem; padding:.65rem .9rem;
    border-radius:10px 10px 0 0; font-size:.82rem; font-weight:600; color:#94a3b8;
    text-decoration:none; border-bottom:2px solid transparent; transition:all .15s; }
.adm-tab:hover:not(.is-disabled) { color:var(--text,#111); background:rgba(0,168,89,.06); }
.adm-tab.active { color:#00A859; border-bottom-color:#00A859; background:rgba(0,168,89,.08); }
.adm-tab.is-disabled { opacity:.35; cursor:not-allowed; }

.adm-body { padding:0 1rem 2rem; display:flex; flex-direction:column; gap:1rem; background:#0d1117; }
.adm-card { background:#161f2e; border:1px solid #1e2a3a;
    border-radius:14px; padding:1rem; box-shadow:0 1px 2px rgba(0,0,0,.3); color:#f1f5f9; }
.adm-card-hd { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-bottom:.85rem; }
.adm-card-hd h3 { font-size:.92rem; font-weight:700; margin:0; display:flex; align-items:center; gap:.5rem; }
.adm-card-hd h3 i { color:#00A859; }
.adm-mt { margin-top:.85rem; }
.adm-msg { font-size:.78rem; color:#94a3b8; margin:.5rem 0 0; }
.adm-msg.adm-err { color:#f87171; }
.adm-help { font-size:.74rem; color:#94a3b8; margin:.3rem 0 0; }
.adm-empty { padding:1.2rem; text-align:center; color:#94a3b8; font-size:.85rem; }

.adm-grid { display:grid; gap:.7rem; }
.adm-grid.kpis { grid-template-columns:repeat(auto-fill, minmax(180px, 1fr)); }
.adm-grid.two  { grid-template-columns:1fr; }
@media (min-width:721px) { .adm-grid.two { grid-template-columns:1fr 1fr; } }

.adm-row { display:flex; flex-wrap:wrap; gap:.5rem; align-items:stretch; }
.adm-row > * { flex:1 1 180px; min-width:0; }
.adm-row .btn-primary, .adm-row .btn-outline, .adm-row .btn-danger { width:auto; }
.adm-row-item { display:flex; justify-content:space-between; align-items:center; gap:.6rem;
    padding:.6rem .25rem; border-bottom:1px solid #1e2a3a; font-size:.85rem; color:#f1f5f9; }
.adm-row-item:last-child { border-bottom:none; }

.adm-mini { padding:.35rem .6rem !important; font-size:.74rem !important; min-height:auto !important; }

.kpi-card { display:flex; gap:.7rem; align-items:flex-start; padding:.85rem; border-radius:12px;
    background:#1a2535; border:1px solid #253347; min-width:0; color:#f1f5f9; }
.kpi-icon { width:38px; height:38px; flex-shrink:0; border-radius:10px; display:grid; place-items:center;
    color:#fff; background:#00A859; font-size:.9rem; }
.kpi-primary .kpi-icon { background:linear-gradient(135deg,#00A859,#0EA5E9); }
.kpi-success .kpi-icon { background:#10B981; }
.kpi-warn    .kpi-icon { background:#F59E0B; }
.kpi-accent  .kpi-icon { background:#7C3AED; }
.kpi-body { display:flex; flex-direction:column; min-width:0; flex:1; }
.kpi-label { font-size:.72rem; color:var(--text-muted,#6b7280); text-transform:uppercase; letter-spacing:.04em; }
.kpi-value { font-size:1.15rem; font-weight:800; margin-top:.15rem; word-break:break-word; }
.kpi-sub   { font-size:.72rem; color:var(--text-muted,#6b7280); margin-top:.1rem; }

.adm-table-wrap { overflow-x:auto; border-radius:10px; border:1px solid #1e2a3a; }
.adm-table { width:100%; border-collapse:collapse; font-size:.82rem; min-width:480px; color:#f1f5f9; }
.adm-table th, .adm-table td { padding:.55rem .65rem; text-align:left; border-bottom:1px solid #1e2a3a; vertical-align:middle; }
.adm-table thead th { background:#1a2535; font-weight:700; font-size:.72rem; color:#94a3b8;
    text-transform:uppercase; letter-spacing:.04em; color:var(--text-muted,#6b7280); }
.adm-table tbody tr:hover { background:rgba(0,168,89,.04); }
.adm-table code { font-size:.75rem; padding:.1rem .35rem; border-radius:4px; background:rgba(0,0,0,.05); }
.adm-thumb { width:54px; height:36px; object-fit:cover; border-radius:6px; }

.adm-spark { width:100%; max-width:320px; height:56px; color:#00A859; }
.adm-bars  { width:100%; max-width:640px; height:auto; color:var(--text,#111); }
.adm-chart-wrap { padding:.5rem 0; }

.adm-log { padding:.55rem .65rem; border-bottom:1px dashed rgba(0,0,0,.08); font-size:.8rem; }
.adm-log:last-child { border-bottom:none; }
.adm-log pre { background:rgba(0,0,0,.04); padding:.4rem .5rem; border-radius:6px; font-size:.7rem;
    margin:.25rem 0 0; overflow-x:auto; }

.adm-feature-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(160px,1fr)); gap:.5rem; }
.adm-feature { display:flex; align-items:center; gap:.5rem; padding:.6rem .75rem;
    border:1px solid rgba(0,0,0,.08); border-radius:10px; cursor:pointer; user-select:none; font-size:.85rem; }
.adm-feature input { accent-color:#00A859; transform:scale(1.15); }

.text-success { color:#10B981; }
.text-danger  { color:#EF4444; }

/* Source code viewer */
.src-viewer { width:min(960px, 96vw); max-height:90vh; margin:5vh auto; background:var(--surface,#fff);
    border-radius:16px; display:flex; flex-direction:column; overflow:hidden;
    box-shadow:0 24px 60px rgba(0,0,0,.35); }
.src-viewer-hd { display:flex; align-items:center; justify-content:space-between;
    padding:.85rem 1rem; border-bottom:1px solid rgba(0,0,0,.06); }
.src-viewer-hd h3 { font-size:.95rem; margin:0; display:flex; align-items:center; gap:.5rem; }
.src-viewer-tabs { display:flex; gap:.25rem; padding:.4rem .8rem; border-bottom:1px solid rgba(0,0,0,.05);
    overflow-x:auto; }
.src-viewer-tabs button { background:transparent; border:none; padding:.45rem .8rem; font-size:.78rem;
    font-weight:600; color:var(--text-muted,#6b7280); border-radius:8px; cursor:pointer; }
.src-viewer-tabs button.active { background:rgba(0,168,89,.12); color:#00A859; }
.src-viewer-toolbar { display:flex; align-items:center; gap:.5rem; padding:.5rem .8rem;
    background:var(--surface-2,#fafafa); border-bottom:1px solid rgba(0,0,0,.05); }
.src-viewer-meta { flex:1; font-size:.74rem; color:var(--text-muted,#6b7280);
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.src-viewer-body { flex:1; overflow:auto; margin:0; padding:1rem; background:#0f172a; color:#e2e8f0;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.78rem; line-height:1.55; }
.src-viewer-body code { font:inherit; white-space:pre; }
.src-viewer-help { font-size:.72rem; color:var(--text-muted,#6b7280); padding:.55rem 1rem;
    border-top:1px solid rgba(0,0,0,.05); margin:0; }
.src-viewer-help code { font-size:.72rem; padding:.1rem .3rem; background:rgba(0,0,0,.05); border-radius:4px; }

/* ── Cloudinary upload UI (added by audit) ────────────────────────── */
.dropzone { transition: background-color .12s ease, border-color .12s ease; }
.dropzone.dropzone-hover {
    background: var(--primary-light, rgba(0,168,89,.08));
    border-color: var(--primary, #00A859);
    color: var(--primary, #00A859);
}
.att-thumb.is-cover {
    outline: 3px solid var(--primary, #00A859);
    outline-offset: 1px;
}
.att-thumb.is-cover::after {
    content: "Cover";
    position: absolute; bottom: 4px; left: 4px;
    background: var(--primary, #00A859); color: #fff;
    font-size: .65rem; padding: 1px 6px; border-radius: 999px;
}

/* ── Online-status pill (services.js) ───────────────────────────── */
.online-pill{
    color:#16a34a;
    font-weight:600;
    font-size:.72rem;
    display:inline-flex;
    align-items:center;
    gap:.25rem;
}
/* ╔══════════════════════════════════════════════════════════════════╗
   ║  v3.3 additions — transactions, withdrawals, legal, footer, admin║
   ╚══════════════════════════════════════════════════════════════════╝ */

/* Transaction feed */
.tx-feed { display: flex; flex-direction: column; gap: .6rem; }
.tx-row {
    display: flex; gap: .8rem; align-items: flex-start;
    background: var(--card, #fff); border: 1px solid var(--border, #e5e7eb);
    border-radius: var(--radius-md, 12px); padding: .8rem .9rem;
}
.tx-ic {
    width: 38px; height: 38px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    flex: 0 0 auto; font-size: 1rem;
}
.tx-body { flex: 1; min-width: 0; }
.tx-head { display: flex; justify-content: space-between; gap: .5rem; align-items: baseline; }
.tx-label { font-weight: 700; font-size: .9rem; color: var(--text, #111827); }
.tx-amt { font-weight: 800; font-size: .95rem; }
.tx-amt.pos { color: #00A859; }
.tx-amt.neg { color: #DC2626; }
.tx-meta { display: flex; gap: .6rem; font-size: .72rem; color: var(--text-muted, #6b7280); margin-top: .3rem; flex-wrap: wrap; align-items: center; }
.tx-status { padding: .15rem .5rem; border-radius: 999px; font-weight: 700; font-size: .68rem; }
.tx-ok    { background: #d1fae5; color: #065f46; }
.tx-warn  { background: #fef3c7; color: #92400e; }
.tx-err   { background: #fee2e2; color: #991b1b; }
.tx-muted { background: #e5e7eb; color: #374151; }
.tx-ref   { font-family: ui-monospace, monospace; font-size: .68rem; color: var(--text-subtle, #9ca3af); }
.tx-split { font-size: .72rem; color: var(--text-muted); margin-top: .35rem; }
.tx-fix { display: inline-flex; align-items: center; gap: .3rem; }

/* Withdrawals */
.wd-row { background: var(--card, #fff); border: 1px solid var(--border, #e5e7eb);
    border-radius: var(--radius-md, 12px); padding: .8rem .9rem; margin-bottom: .6rem; }
.wd-row-h { display: flex; justify-content: space-between; align-items: center; margin-bottom: .25rem; }
.wd-row .muted { color: var(--text-muted); font-size: .78rem; }

/* Admin control rows */
.adm-row { display: flex; align-items: center; gap: .8rem; padding: .7rem .8rem;
    border: 1px solid var(--border, #e5e7eb); border-radius: var(--radius-md, 12px); margin-bottom: .5rem;
    background: var(--card, #fff); }
.adm-row > div:first-child { flex: 1; min-width: 0; }
.adm-stack { display: flex; flex-direction: column; gap: .5rem; }
.adm-section { margin-bottom: 1.4rem; }
.adm-section-h h3 { font-size: 1rem; font-weight: 800; margin-bottom: .6rem; display: flex; align-items: center; gap: .5rem; }
.adm-card { background: #161f2e; border: 1px solid #1e2a3a;
    border-radius: var(--radius-md, 12px); padding: 1rem; color: #f1f5f9; }
.adm-card h4 { font-size: .92rem; font-weight: 800; margin-bottom: .35rem; color: #f1f5f9; }
.adm-card .muted { font-size: .78rem; color: #94a3b8; }
.adm-grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; }
.kpi-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: .6rem; margin-bottom: .8rem; }

/* Admin card on profile */
.admin-card { background: linear-gradient(135deg, rgba(0,168,89,.06), rgba(0,168,89,0)); }

/* Page header used by transactions / withdrawals */
.page-head { display: flex; align-items: center; gap: .6rem; margin-bottom: .8rem; }
.page-head h2 { font-size: 1.2rem; font-weight: 800; }
.back-btn { background: transparent; border: 1px solid var(--border, #e5e7eb);
    border-radius: 50%; width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }

/* Legal pages */
.legal-shell {
    display: grid; grid-template-columns: 240px 1fr; grid-template-areas: "top top" "side main";
    max-width: 1100px; margin: 0 auto; padding: 1rem; gap: 1.2rem;
}
.legal-top { grid-area: top; display: flex; justify-content: space-between; align-items: center;
    padding: .6rem 0; border-bottom: 1px solid var(--border, #e5e7eb); margin-bottom: .4rem; }
.legal-logo { font-weight: 900; font-size: 1.15rem; color: var(--primary, #00A859); text-decoration: none; }
.legal-logo span { color: var(--text, #111827); }
.legal-side { grid-area: side; }
.legal-side nav { position: sticky; top: 1rem; display: flex; flex-direction: column; gap: .25rem; }
.legal-nav-item { padding: .5rem .75rem; border-radius: 8px; color: var(--text-muted); text-decoration: none; font-size: .85rem; }
.legal-nav-item:hover { background: rgba(0,0,0,.04); color: var(--text); }
.legal-nav-item.is-active { background: rgba(0,168,89,.1); color: var(--primary, #00A859); font-weight: 700; }
.legal-doc { grid-area: main; max-width: 720px; }
.legal-doc h1 { font-size: 1.6rem; font-weight: 900; margin-bottom: .3rem; }
.legal-doc h2 { font-size: 1.1rem; font-weight: 800; margin: 1.5rem 0 .4rem; }
.legal-doc p, .legal-doc li { line-height: 1.65; font-size: .92rem; color: var(--text, #111827); }
.legal-doc ul { padding-left: 1.2rem; margin: .4rem 0 .8rem; }
.legal-doc a { color: var(--primary, #00A859); }
.legal-meta { font-size: .78rem; color: var(--text-muted); margin-bottom: 1rem; }
.legal-changelog { margin-top: 2rem; border-top: 1px solid var(--border, #e5e7eb); padding-top: 1rem; }
.legal-changelog summary { cursor: pointer; font-weight: 700; }
.legal-changelog ul { margin-top: .5rem; font-size: .82rem; color: var(--text-muted); }
.legal-foot { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--border, #e5e7eb); font-size: .82rem; color: var(--text-muted); }

@media (max-width: 720px) {
    .legal-shell { grid-template-columns: 1fr; grid-template-areas: "top" "side" "main"; }
    .legal-side nav { flex-direction: row; flex-wrap: wrap; position: static; gap: .3rem; }
    .legal-nav-item { font-size: .78rem; padding: .35rem .6rem; border: 1px solid var(--border); }
}

/* Site footer */
.site-footer { background: #0f172a; color: #cbd5e1; padding: 1.6rem 1rem; margin-top: 2rem; }
.site-footer-cols { max-width: 1100px; margin: 0 auto; display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.4rem; }
.site-footer strong { color: #fff; font-size: 1rem; font-weight: 800; }
.site-footer p { font-size: .82rem; color: #94a3b8; margin-top: .3rem; }
.site-footer h6 { color: #fff; font-size: .85rem; font-weight: 800; margin-bottom: .6rem; text-transform: uppercase; letter-spacing: .04em; }
.site-footer ul { list-style: none; padding: 0; display: flex; flex-direction: column; gap: .35rem; }
.site-footer a { color: #cbd5e1; text-decoration: none; font-size: .85rem; }
.site-footer a:hover { color: #fff; text-decoration: underline; }
.site-footer-copy { max-width: 1100px; margin: 1.4rem auto 0; padding-top: 1rem; border-top: 1px solid #1e293b;
    text-align: center; font-size: .78rem; color: #94a3b8; }

/* Hide site footer when the in-app shell is active (signed-in routes) */
body.app-mode #site-footer { display: none; }
/* ╔══════════════════════════════════════════════════════════════════╗
   ║  Premium Profile — appended block                                ║
   ╚══════════════════════════════════════════════════════════════════╝ */
.pf-shell {
    --pf-card-bg: rgba(255,255,255,0.04);
    --pf-card-bd: rgba(255,255,255,0.08);
    --pf-text-2: var(--text-muted, #9aa0a6);
    padding: 0 0 6rem;
    display: flex; flex-direction: column; gap: 1rem;
    max-width: 760px; margin: 0 auto;
}

/* Cover */
.pf-cover {
    position: relative;
    margin: 0 1rem;
    border-radius: 22px;
    overflow: hidden;
    padding: 0 1rem 1.1rem;
    background: linear-gradient(180deg, rgba(0,168,89,0.18), rgba(0,0,0,0.55) 70%);
    border: 1px solid var(--pf-card-bd);
}
.pf-cover-bg {
    position: absolute; inset: 0;
    background: radial-gradient(120% 100% at 0% 0%, #00A85933 0%, transparent 60%),
                radial-gradient(120% 100% at 100% 0%, #2563eb33 0%, transparent 55%),
                linear-gradient(180deg, #0d1410, #07090b);
    background-size: cover; background-position: center;
    z-index: 0;
}
.pf-cover-grain {
    position: absolute; inset: 0; z-index: 0; opacity: .35; pointer-events:none;
    background-image: radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px);
    background-size: 3px 3px;
}
.pf-cover-edit {
    position: absolute; top: .75rem; right: .75rem; z-index: 2;
    width: 36px; height: 36px; border-radius: 50%;
    background: rgba(0,0,0,.55); color: #fff; border: 1px solid rgba(255,255,255,.15);
    backdrop-filter: blur(8px);
}
.pf-identity {
    position: relative; z-index: 1;
    display: flex; gap: 1rem; align-items: flex-end;
    padding-top: 5rem;
}
.pf-avatar-wrap { position: relative; width: 104px; height: 104px; }
.pf-avatar {
    width: 96px; height: 96px; border-radius: 50%;
    display: grid; place-items: center;
    color: #fff; font-weight: 800; font-size: 1.8rem;
    overflow: hidden; border: 3px solid rgba(0,0,0,.55);
    box-shadow: 0 8px 28px rgba(0,0,0,.5);
    position: absolute; top: 4px; left: 4px;
}
.pf-avatar img { width: 100%; height: 100%; object-fit: cover; }
.pf-ring { position: absolute; inset: 0; pointer-events: none; }
.pf-ring svg { width: 100%; height: 100%; }
.pf-ring .ring-bg { fill: none; stroke: rgba(255,255,255,.12); stroke-width: 4; }
.pf-ring .ring-fg { fill: none; stroke: var(--primary, #00A859); stroke-width: 4; stroke-linecap: round; transition: stroke-dashoffset .6s ease; }
.pf-avatar-edit {
    position: absolute; bottom: 0; right: 0; z-index: 2;
    width: 30px; height: 30px; border-radius: 50%;
    background: var(--primary, #00A859); color: #fff; border: 2px solid #0b0f12;
}
.pf-id-meta { flex: 1; min-width: 0; padding-bottom: .35rem; }
.pf-name { font-size: 1.25rem; font-weight: 800; margin: 0; color: #fff; line-height: 1.1; }
.pf-email { font-size: .8rem; color: var(--pf-text-2); margin: .2rem 0 .55rem; }
.pf-pills { display: flex; gap: .35rem; flex-wrap: wrap; }
.pf-pill {
    display: inline-flex; align-items: center; gap: .35rem;
    padding: .28rem .6rem; border-radius: 999px;
    font-size: .7rem; font-weight: 700; letter-spacing: .02em;
    background: rgba(255,255,255,.07); color: #fff; border: 1px solid rgba(255,255,255,.08);
}
.pf-pill i { font-size: .7rem; }
.pf-pill-role { background: rgba(0,168,89,.18); border-color: rgba(0,168,89,.35); }
.pf-pill-trust.tier-elite   { background: linear-gradient(135deg, #f5c44233, #f5c44211); border-color: #f5c44266; color: #f5c442; }
.pf-pill-trust.tier-trusted { background: rgba(0,168,89,.18); border-color: rgba(0,168,89,.4); }
.pf-pill-trust.tier-rising  { background: rgba(37,99,235,.18); border-color: rgba(37,99,235,.4); }
.pf-pill-trust.tier-new     { background: rgba(255,255,255,.06); }
.pf-upload-progress:empty { display: none; }

/* Completion */
.pf-completion { position: relative; z-index: 1; margin-top: 1rem; }
.pf-completion-row { display: flex; justify-content: space-between; align-items: center; color: #fff; font-size: .82rem; }
.pf-completion-row strong { color: var(--primary, #00A859); }
.pf-bar { margin-top: .4rem; height: 6px; background: rgba(255,255,255,.08); border-radius: 99px; overflow: hidden; }
.pf-bar span { display: block; height: 100%; background: linear-gradient(90deg, #00A859, #34d399); border-radius: 99px; transition: width .6s ease; }
.pf-completion-hint { margin: .45rem 0 0; font-size: .72rem; color: var(--pf-text-2); }

/* Generic card */
.pf-card {
    margin: 0 1rem;
    background: var(--pf-card-bg);
    border: 1px solid var(--pf-card-bd);
    border-radius: 18px; padding: 1rem;
    backdrop-filter: blur(6px);
}
.pf-card-hd { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .8rem; }
.pf-card-hd h3 { margin: 0; font-size: .95rem; font-weight: 800; color: #fff; }
.pf-card-hd p  { margin: .15rem 0 0; font-size: .72rem; color: var(--pf-text-2); }
.pf-shield {
    width: 36px; height: 36px; border-radius: 12px; display: grid; place-items: center;
    background: rgba(0,168,89,.18); color: var(--primary, #00A859); font-size: 1rem;
}
.pf-shield.tier-elite { background: rgba(245,196,66,.2); color: #f5c442; }

/* Verification */
.pf-verify-grid { display: grid; gap: .5rem; }
.pf-verify-row {
    display: flex; align-items: center; gap: .75rem;
    padding: .7rem .85rem; border-radius: 14px;
    background: rgba(255,255,255,.03);
    border: 1px solid rgba(255,255,255,.06);
    text-align: left; color: #fff;
    transition: background .2s;
}
.pf-verify-row:hover { background: rgba(255,255,255,.06); }
.pf-verify-row.is-done { border-color: rgba(0,168,89,.35); background: rgba(0,168,89,.08); }
.pf-verify-icon { width: 34px; height: 34px; border-radius: 10px; background: rgba(255,255,255,.06); display: grid; place-items: center; color: #fff; }
.pf-verify-row.is-done .pf-verify-icon { background: rgba(0,168,89,.22); color: var(--primary, #00A859); }
.pf-verify-body { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.pf-verify-body strong { font-size: .85rem; font-weight: 700; }
.pf-verify-body small  { font-size: .7rem; color: var(--pf-text-2); }
.pf-verify-state { color: var(--pf-text-2); }
.pf-verify-row.is-done .pf-verify-state { color: var(--primary, #00A859); }

/* Wallet */
.pf-wallet {
    margin: 0 1rem;
    border-radius: 22px; padding: 1.1rem;
    position: relative; overflow: hidden;
    background:
        radial-gradient(120% 120% at 100% 0%, rgba(0,168,89,.45), transparent 55%),
        radial-gradient(140% 120% at 0% 100%, rgba(37,99,235,.35), transparent 60%),
        linear-gradient(160deg, #0c1b14, #07090b);
    border: 1px solid rgba(255,255,255,.08);
    color: #fff;
}
.pf-wallet-hd { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; }
.pf-wallet-label { margin: 0 0 .15rem; font-size: .72rem; color: rgba(255,255,255,.7); text-transform: uppercase; letter-spacing: .08em; }
.pf-wallet-amt { margin: 0; font-size: 1.85rem; font-weight: 800; }
.pf-wallet-brand { display: flex; flex-direction: column; align-items: flex-end; gap: .2rem; font-size: .72rem; color: rgba(255,255,255,.65); }
.pf-wallet-brand i { font-size: 1.1rem; color: var(--primary, #00A859); }
.pf-wallet-mini {
    display: grid; grid-template-columns: repeat(2, 1fr); gap: .5rem; margin-top: 1rem;
}
.pf-wallet-mini .mini {
    background: rgba(0,0,0,.35);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 12px; padding: .55rem .7rem;
}
.pf-wallet-mini span { font-size: .68rem; color: rgba(255,255,255,.65); text-transform: uppercase; letter-spacing: .06em; }
.pf-wallet-mini strong { display: block; margin-top: .15rem; font-size: .9rem; font-weight: 800; }
.pf-wallet-mini strong.up   { color: #4ade80; }
.pf-wallet-mini strong.down { color: #f87171; }
.pf-wallet-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; margin-top: 1rem; }
.pf-wbtn {
    display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
    padding: .65rem; border-radius: 12px;
    background: rgba(255,255,255,.08); color: #fff; font-weight: 600; font-size: .8rem;
    border: 1px solid rgba(255,255,255,.1);
}
.pf-wbtn.primary { background: var(--primary, #00A859); border-color: transparent; }
.pf-wbtn:hover { background: rgba(255,255,255,.14); }
.pf-wbtn.primary:hover { background: #00bf65; }

/* Stats */
.pf-stats {
    margin: 0 1rem; display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem;
}
.pf-stat {
    background: var(--pf-card-bg); border: 1px solid var(--pf-card-bd);
    border-radius: 14px; padding: .7rem .5rem;
    display: flex; flex-direction: column; align-items: center; gap: .2rem;
    cursor: pointer;
}
.pf-stat-icon { width: 30px; height: 30px; border-radius: 9px; background: rgba(0,168,89,.16); color: var(--primary,#00A859); display: grid; place-items: center; font-size: .85rem; }
.pf-stat-num { font-size: 1.15rem; font-weight: 800; color: #fff; }
.pf-stat-label { font-size: .65rem; color: var(--pf-text-2); text-transform: uppercase; letter-spacing: .06em; }

/* Quick actions */
.pf-quick .pf-quick-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem; }
.pf-qa {
    display: flex; flex-direction: column; align-items: center; gap: .4rem;
    padding: .8rem .35rem; border-radius: 14px;
    background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06);
    color: #fff; font-size: .7rem; font-weight: 600; text-align: center;
    transition: background .2s, transform .15s;
}
.pf-qa:hover { background: rgba(255,255,255,.07); transform: translateY(-1px); }
.pf-qa-icon { width: 38px; height: 38px; border-radius: 12px; background: linear-gradient(135deg, rgba(0,168,89,.28), rgba(0,168,89,.08)); color: var(--primary,#00A859); display: grid; place-items: center; font-size: 1rem; }

/* CTA */
.pf-cta-row { display: flex; flex-direction: column; gap: .6rem; margin: 0 1rem; }
.pf-cta {
    position: relative; overflow: hidden;
    display: flex; align-items: center; gap: .85rem; text-align: left;
    padding: .9rem 1rem; border-radius: 18px;
    background: linear-gradient(120deg, #0c1b14, #07090b);
    border: 1px solid rgba(0,168,89,.3); color: #fff;
}
.pf-cta > i:first-child { width: 38px; height: 38px; border-radius: 12px; background: rgba(0,168,89,.22); display: grid; place-items: center; color: var(--primary,#00A859); font-size: 1rem; flex-shrink: 0; }
.pf-cta strong { display: block; font-size: .92rem; }
.pf-cta small { display: block; font-size: .72rem; color: var(--pf-text-2); margin-top: .1rem; }
.pf-cta-arrow { margin-left: auto; opacity: .6; }
.pf-cta-glow {
    position: absolute; inset: -40% -10% auto auto;
    width: 220px; height: 220px; border-radius: 50%;
    background: radial-gradient(circle, rgba(0,168,89,.45), transparent 70%);
    pointer-events: none;
}
.pf-cta-glow.alt { background: radial-gradient(circle, rgba(37,99,235,.45), transparent 70%); }

/* Achievements */
.pf-badges { display: grid; grid-template-columns: repeat(4, 1fr); gap: .55rem; }
.pf-badge {
    display: flex; flex-direction: column; align-items: center; gap: .35rem;
    padding: .65rem .35rem; border-radius: 14px;
    background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06);
    opacity: .45; filter: grayscale(.4);
}
.pf-badge.is-on { opacity: 1; filter: none; background: linear-gradient(160deg, rgba(0,168,89,.18), rgba(255,255,255,.02)); border-color: rgba(0,168,89,.3); }
.pf-badge-ic { width: 38px; height: 38px; border-radius: 50%; background: rgba(255,255,255,.06); display: grid; place-items: center; color: #fff; font-size: 1rem; }
.pf-badge.is-on .pf-badge-ic { background: rgba(0,168,89,.25); color: var(--primary,#00A859); }
.pf-badge small { font-size: .65rem; color: #fff; text-align: center; line-height: 1.15; }

/* Referral */
.pf-referral { background: linear-gradient(150deg, rgba(245,196,66,.08), var(--pf-card-bg)); }
.pf-ref-emoji { font-size: 1.5rem; color: #f5c442; }
.pf-ref-code { display: flex; align-items: center; gap: .5rem; background: rgba(0,0,0,.35); padding: .6rem .75rem; border-radius: 12px; border: 1px dashed rgba(255,255,255,.15); margin-bottom: .7rem; }
.pf-ref-label { font-size: .68rem; color: var(--pf-text-2); text-transform: uppercase; letter-spacing: .06em; }
.pf-ref-code code { flex: 1; font-family: ui-monospace, monospace; font-size: .95rem; font-weight: 800; color: #fff; letter-spacing: .08em; }
.pf-ref-copy { background: rgba(255,255,255,.08); color: #fff; border-radius: 8px; padding: .35rem .6rem; }
.pf-ref-stats { display: grid; grid-template-columns: repeat(3,1fr); gap: .5rem; margin-bottom: .8rem; }
.pf-ref-stats div { text-align: center; padding: .55rem; background: rgba(255,255,255,.04); border-radius: 12px; border: 1px solid rgba(255,255,255,.06); }
.pf-ref-stats strong { display: block; color: #fff; font-size: 1rem; }
.pf-ref-stats span { display: block; font-size: .65rem; color: var(--pf-text-2); text-transform: uppercase; letter-spacing: .06em; margin-top: .15rem; }
.pf-ref-share { width: 100%; padding: .75rem; border-radius: 14px; background: var(--primary,#00A859); color: #fff; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; gap: .5rem; }
.pf-ref-share:hover { background: #00bf65; }

/* Tabs */
.pf-tabs { display: flex; gap: .25rem; background: rgba(255,255,255,.05); padding: .2rem; border-radius: 10px; }
.pf-tabs button { padding: .35rem .6rem; font-size: .72rem; font-weight: 600; color: var(--pf-text-2); border-radius: 8px; }
.pf-tabs button.is-active { background: rgba(0,168,89,.22); color: #fff; }

/* Saved */
.pf-saved-list { display: flex; flex-direction: column; gap: .5rem; }
.pf-saved-row { display: flex; align-items: center; gap: .65rem; padding: .55rem; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06); border-radius: 12px; }
.pf-saved-thumb { width: 42px; height: 42px; border-radius: 10px; display: grid; place-items: center; color: #fff; overflow: hidden; flex-shrink: 0; }
.pf-saved-thumb img { width: 100%; height: 100%; object-fit: cover; }
.pf-saved-body { flex: 1; min-width: 0; }
.pf-saved-body strong { display: block; font-size: .85rem; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-saved-body small  { display: block; font-size: .7rem; color: var(--pf-text-2); }
.pf-saved-price { font-size: .85rem; font-weight: 800; color: var(--primary,#00A859); }

/* Timeline */
.pf-timeline { display: flex; flex-direction: column; gap: .55rem; }
.pf-tline { display: flex; align-items: center; gap: .7rem; padding: .55rem .7rem; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06); border-radius: 12px; }
.pf-tline-dot { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.06); color: #fff; flex-shrink: 0; }
.pf-tline-dot.wallet { background: rgba(0,168,89,.2);  color: var(--primary,#00A859); }
.pf-tline-dot.book   { background: rgba(37,99,235,.2); color: #60a5fa; }
.pf-tline-dot.order  { background: rgba(245,196,66,.2);color: #f5c442; }
.pf-tline-dot.rev    { background: rgba(236,72,153,.2);color: #f472b6; }
.pf-tline-body { flex: 1; min-width: 0; }
.pf-tline-body strong { display: block; font-size: .85rem; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-tline-body small  { display: block; font-size: .7rem; color: var(--pf-text-2); }

/* Location */
.pf-location .pf-loc-body { display: flex; align-items: center; gap: .8rem; padding: .25rem 0; }
.pf-loc-icon { width: 42px; height: 42px; border-radius: 12px; background: rgba(37,99,235,.18); color: #60a5fa; display: grid; place-items: center; font-size: 1.1rem; }
.pf-loc-text { flex: 1; min-width: 0; }
.pf-loc-text strong { display: block; color: #fff; font-size: .9rem; }
.pf-loc-text small  { display: block; color: var(--pf-text-2); font-size: .72rem; }
.pf-loc-btn { background: rgba(0,168,89,.18); color: var(--primary,#00A859); border: 1px solid rgba(0,168,89,.4); padding: .45rem .8rem; border-radius: 10px; font-weight: 700; font-size: .8rem; }

/* Generic list rows (security / notif / admin) */
.pf-list { display: flex; flex-direction: column; gap: .35rem; }
.pf-list-row {
    display: flex; align-items: center; gap: .7rem;
    padding: .7rem .8rem; border-radius: 12px;
    background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06);
    color: #fff; text-align: left; font-size: .85rem;
}
.pf-list-row:hover { background: rgba(255,255,255,.06); }
.pf-list-row > i:first-child { color: var(--primary,#00A859); width: 18px; text-align: center; }
.pf-list-row > span { flex: 1; min-width: 0; }
.pf-list-row > i:last-child { color: var(--pf-text-2); font-size: .75rem; }
.pf-list-row.danger { color: #fca5a5; }
.pf-list-row.danger > i:first-child { color: #f87171; }
.pf-toggle-row { cursor: pointer; }

/* Switch */
.pf-switch { position: relative; width: 38px; height: 22px; display: inline-block; flex-shrink: 0; }
.pf-switch input { opacity: 0; width: 0; height: 0; }
.pf-switch-track { position: absolute; inset: 0; background: rgba(255,255,255,.18); border-radius: 999px; transition: background .2s; }
.pf-switch-track::before { content:""; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; background: #fff; border-radius: 50%; transition: transform .2s; }
.pf-switch input:checked + .pf-switch-track { background: var(--primary,#00A859); }
.pf-switch input:checked + .pf-switch-track::before { transform: translateX(16px); }

/* Sheet shared bits */
.sheet-body { padding: 1rem 1.1rem 1.5rem; color: #fff; }
.sheet-title { display: flex; align-items: center; gap: .5rem; font-size: 1rem; font-weight: 800; margin: 0 0 .35rem; }
.sheet-title i { color: var(--primary,#00A859); }
.sheet-sub { font-size: .8rem; color: var(--pf-text-2); margin: 0 0 1rem; }
.pf-link-btn { background: none; color: var(--pf-text-2); padding: .3rem .5rem; }
.pf-link-btn:hover { color: #fff; }

/* Logout */
.pf-logout { margin: 1rem; width: calc(100% - 2rem); }
.pf-foot-mini { text-align: center; color: var(--pf-text-2); font-size: .7rem; margin: .5rem 0 0; }

/* Responsive bumps */
@media (min-width: 640px) {
    .pf-wallet-mini { grid-template-columns: repeat(4, 1fr); }
    .pf-stats { grid-template-columns: repeat(4, 1fr); }
    .pf-quick .pf-quick-grid { grid-template-columns: repeat(4, 1fr); }
    .pf-badges { grid-template-columns: repeat(8, 1fr); }
    .pf-cta-row { flex-direction: row; }
    .pf-cta { flex: 1; }
}

/* ═══════════════════════════════════════════════════════════════════
   Negotiation Offer Bubbles  (v6)
   ═══════════════════════════════════════════════════════════════════ */

/* Offer bubble overrides the default bubble */
.offer-bubble {
  background: var(--bg-card);
  border: 1.5px solid var(--primary, #3b82f6);
  border-radius: 12px;
  padding: .75rem 1rem;
  min-width: 200px;
  max-width: 280px;
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
  display: flex;
  flex-direction: column;
  gap: .35rem;
}

.offer-bubble.accepted-bubble {
  border-color: var(--success, #22c55e);
}

.offer-header {
  display: flex;
  align-items: center;
  gap: .4rem;
  font-size: .72rem;
  font-weight: 600;
  color: var(--primary, #3b82f6);
  text-transform: uppercase;
  letter-spacing: .04em;
}

.accepted-bubble .offer-header {
  color: var(--success, #22c55e);
}

.offer-label { }

.offer-amount {
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -.01em;
}

.offer-status {
  font-size: .72rem;
  font-weight: 600;
  padding: .2rem .55rem;
  border-radius: 100px;
  display: inline-block;
  width: fit-content;
}
.offer-status.pending  { background: #fef3c7; color: #92400e; }
.offer-status.accepted { background: #dcfce7; color: #166534; }
.offer-status.declined { background: #fee2e2; color: #991b1b; }
.offer-status.countered{ background: #ede9fe; color: #5b21b6; }

/* Action buttons row */
.offer-actions {
  display: flex;
  gap: .35rem;
  flex-wrap: wrap;
  margin-top: .25rem;
}
.offer-actions button {
  flex: 1;
  min-width: 60px;
  border: none;
  border-radius: 7px;
  padding: .45rem .5rem;
  font-size: .73rem;
  font-weight: 700;
  cursor: pointer;
  transition: filter .15s;
}
.offer-actions button:hover { filter: brightness(.92); }

.btn-offer-accept  { background: var(--success, #22c55e); color: #fff; }
.btn-offer-counter { background: #ede9fe; color: #5b21b6; }
.btn-offer-decline { background: #fee2e2; color: #991b1b; }

/* Pay to escrow CTA */
.btn-pay-escrow {
  background: var(--primary, #3b82f6);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: .55rem .75rem;
  font-size: .82rem;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  transition: filter .15s, background .2s;
}
.btn-pay-escrow:hover:not(:disabled) { filter: brightness(.92); }
.btn-pay-escrow:disabled { opacity: .7; cursor: not-allowed; }

/* Offer button in composer */
#offer-btn {
  flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════════════════
   SERVICE REQUESTS — Post a Request feature
   ═══════════════════════════════════════════════════════════════ */

/* Tab bar (shared with services page) */
.sr-tabs {
    display: flex;
    gap: .375rem;
    margin-bottom: .85rem;
    border-bottom: 1px solid var(--border-color, #e5e7eb);
    padding-bottom: .65rem;
}
.sr-tab {
    flex: 1;
    padding: .45rem .6rem;
    border-radius: 8px;
    font-size: .85rem;
    font-weight: 600;
    cursor: pointer;
    border: 1px solid var(--border-color, #e5e7eb);
    background: transparent;
    color: var(--text-secondary, #555);
    transition: background .18s, color .18s;
}
.sr-tab.active {
    background: var(--primary, #6366f1);
    color: #fff;
    border-color: transparent;
}
.sr-tab i { margin-right: .3rem; }

/* Request card */
.sr-card {
    background: #fff;
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 12px;
    padding: .9rem 1rem;
    margin-bottom: .75rem;
    box-shadow: 0 1px 3px rgba(0,0,0,.05);
    transition: box-shadow .18s;
}
.sr-card:hover { box-shadow: 0 3px 10px rgba(0,0,0,.08); }
.sr-card--mine { border-left: 3px solid var(--primary, #6366f1); }

.sr-card-header {
    display: flex;
    align-items: center;
    gap: .45rem;
    margin-bottom: .45rem;
    flex-wrap: wrap;
}

.sr-cat-badge {
    background: var(--primary-light, #eef2ff);
    color: var(--primary, #6366f1);
    font-size: .72rem;
    font-weight: 700;
    padding: .15rem .5rem;
    border-radius: 99px;
    letter-spacing: .03em;
    text-transform: uppercase;
}

.sr-time {
    font-size: .72rem;
    color: var(--text-muted, #9ca3af);
    margin-left: auto;
}

.sr-title {
    font-size: .95rem;
    font-weight: 700;
    margin: 0 0 .3rem;
    color: var(--text-primary, #111);
    line-height: 1.3;
}

.sr-desc {
    font-size: .84rem;
    color: var(--text-secondary, #555);
    margin: 0 0 .5rem;
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.sr-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    font-size: .78rem;
    color: var(--text-muted, #9ca3af);
}
.sr-meta i { margin-right: .2rem; }

/* Status pill on customer's own request */
.sr-status-pill {
    font-size: .7rem;
    font-weight: 700;
    padding: .12rem .45rem;
    border-radius: 99px;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.sr-status-open   { background: #d1fae5; color: #065f46; }
.sr-status-closed { background: #f3f4f6; color: #6b7280; }

/* ═══════════════════════════════════════════════════════════════════
   VERIFICATION + COMPLETENESS  (appended)
   ═══════════════════════════════════════════════════════════════════ */

/* ── Completeness card ─────────────────────────────────────────── */
.sh-completeness { padding: 1.25rem; }
.sh-completeness .sh-card__head { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:.75rem; }
.sh-pct-badge { font-size:1.35rem; font-weight:800; color:var(--primary,#0f62fe); min-width:3rem; text-align:right; }
.sh-pct-badge--mid { color:#e67e22; }
.sh-pct-badge--hi  { color:#27ae60; }

/* progress bar with gate markers */
.sh-progress-track { position:relative; background:var(--surface-alt,#f0f0f0); border-radius:99px; height:10px; margin:.5rem 0 2rem; }
.sh-progress-fill  { height:100%; border-radius:99px; background:var(--primary,#0f62fe); transition:width .5s ease; }
.sh-progress-gate  {
    position:absolute; top:50%; transform:translate(-50%,-50%);
    width:22px; height:22px; border-radius:50%;
    background:var(--surface-alt,#f0f0f0); border:2px solid var(--border,#ddd);
    display:flex; align-items:center; justify-content:center;
    font-size:.55rem; color:var(--text-muted,#888); cursor:default;
    transition:background .3s, border-color .3s;
}
.sh-progress-gate--done { background:var(--primary,#0f62fe); border-color:var(--primary,#0f62fe); color:#fff; }

/* steps list */
.sh-steps { list-style:none; padding:0; margin:.75rem 0; display:flex; flex-direction:column; gap:.4rem; }
.sh-step  { display:flex; align-items:center; gap:.6rem; font-size:.875rem; color:var(--text-muted,#888); }
.sh-step--done { color:var(--text,#111); }
.sh-step__icon { font-size:.9rem; }
.sh-step--done .sh-step__icon { color:var(--success,#27ae60); }
.sh-btn--xs { margin-left:auto; padding:.2rem .6rem; font-size:.75rem; border-radius:6px;
    border:1px solid var(--primary,#0f62fe); color:var(--primary,#0f62fe); background:none; cursor:pointer; }
.sh-btn--xs:hover { background:var(--primary,#0f62fe); color:#fff; }

/* feature gates row */
.sh-gates { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.75rem; }
.sh-gate  { display:flex; align-items:center; gap:.35rem; padding:.35rem .65rem; border-radius:8px;
    font-size:.78rem; border:1px solid var(--border,#ddd); transition:all .2s; }
.sh-gate--unlocked { background:rgba(39,174,96,.1); border-color:#27ae60; color:#1a7a42; }
.sh-gate--locked   { background:var(--surface-alt,#f5f5f5); color:var(--text-muted,#888); }

/* ── ID upload modal ──────────────────────────────────────────── */
.sh-modal-overlay {
    position:fixed; inset:0; z-index:9999;
    background:rgba(0,0,0,.55); display:flex; align-items:center; justify-content:center; padding:1rem;
}
.sh-modal { background:var(--bg,#fff); border-radius:14px; width:100%; max-width:480px;
    box-shadow:0 20px 60px rgba(0,0,0,.25); display:flex; flex-direction:column; max-height:90vh; overflow:hidden; }
.sh-modal__head { display:flex; align-items:center; justify-content:space-between;
    padding:1rem 1.25rem; border-bottom:1px solid var(--border,#eee); }
.sh-modal__head h3 { margin:0; font-size:1rem; display:flex; align-items:center; gap:.5rem; }
.sh-modal__close { background:none; border:none; font-size:1.4rem; cursor:pointer; color:var(--text-muted,#888); line-height:1; }
.sh-modal__body { padding:1.25rem; overflow-y:auto; flex:1; }
.sh-modal__foot { display:flex; gap:.75rem; justify-content:flex-end; padding:1rem 1.25rem;
    border-top:1px solid var(--border,#eee); }

.sh-field-label { display:block; font-size:.8rem; font-weight:600; color:var(--text-muted,#888);
    text-transform:uppercase; letter-spacing:.04em; margin-bottom:.4rem; }

/* ID type radio buttons */
.sh-id-types { display:flex; flex-wrap:wrap; gap:.4rem; }
.sh-id-type-opt { cursor:pointer; }
.sh-id-type-opt input { display:none; }
.sh-id-type-opt span {
    display:inline-block; padding:.35rem .75rem; border-radius:8px;
    border:1.5px solid var(--border,#ddd); font-size:.8rem; transition:all .15s;
}
.sh-id-type-opt input:checked + span { border-color:var(--primary,#0f62fe); background:rgba(15,98,254,.08); color:var(--primary,#0f62fe); font-weight:600; }

/* dropzone */
.sh-dropzone {
    border:2px dashed var(--border,#ddd); border-radius:12px;
    padding:1.5rem; text-align:center; cursor:pointer; transition:all .2s;
}
.sh-dropzone:hover, .sh-dropzone--over { border-color:var(--primary,#0f62fe); background:rgba(15,98,254,.04); }
.sh-dropzone__icon { font-size:2rem; color:var(--primary,#0f62fe); margin-bottom:.5rem; }
.sh-dropzone p { margin:.25rem 0; font-size:.875rem; }

/* ── Verification center updates ─────────────────────────────── */
.sh-verify__row { padding:.75rem 0; }
.sh-pill--err { background:rgba(220,53,69,.1); color:#dc3545; border-radius:4px; padding:.1rem .4rem; font-size:.75rem; }

/* ── Phone OTP modal ──────────────────────────────────────────── */
.sh-phone-modal { max-width: 400px; }
.sh-otp-row {
    display: flex; gap: .5rem; justify-content: center; margin-top: .75rem;
}
.sh-otp-digit {
    width: 44px; height: 52px; text-align: center; font-size: 1.4rem; font-weight: 700;
    border: 2px solid var(--border, #ddd); border-radius: 10px;
    background: var(--surface-alt, #f9f9f9); transition: border-color .15s;
    outline: none;
}
.sh-otp-digit:focus { border-color: var(--primary, #0f62fe); background: #fff; }
.sh-link-btn {
    background: none; border: none; color: var(--primary, #0f62fe);
    cursor: pointer; font-size: inherit; padding: 0; text-decoration: underline;
}
.sh-link-btn:disabled { color: var(--text-muted, #888); text-decoration: none; cursor: default; }
