/* ── DivinerCubicle — Application Styles ─────────────────────────────── */
/* Phase index: 0 = Tokens/Components, 1 = Shell, 2 = Auth                */

/* ═══════════════════════════════════════════════════════════════════════ */
/* 1. Design Tokens                                                         */
/* ═══════════════════════════════════════════════════════════════════════ */

:root {
    /* Surface palette */
    --dc-canvas:      #F7F5FF;
    --dc-surface:     #FFFFFF;
    --dc-surface-2:   #F2EFF9;
    --dc-surface-3:   #EAE6F5;
    --dc-border:      #D8D2EC;
    --dc-border-focus:#7C5AC7;

    /* Primary — deep purple */
    --dc-primary:      #5C35A5;
    --dc-primary-light:#7C5AC7;
    --dc-primary-dark: #3D1F80;
    --dc-primary-bg:   #EDE7F6;
    --dc-primary-text: #FFFFFF;

    /* Accent — warm amber */
    --dc-accent:       #9C7339;
    --dc-accent-light: #C49A5A;
    --dc-accent-bg:    #FFF8ED;

    /* Semantic */
    --dc-success:    #2E7D32;
    --dc-success-bg: #E8F5E9;
    --dc-warning:    #E65100;
    --dc-warning-bg: #FFF3E0;
    --dc-danger:     #C62828;
    --dc-danger-bg:  #FFEBEE;
    --dc-info:       #1565C0;
    --dc-info-bg:    #E3F2FD;

    /* Text */
    --dc-text-primary:   #1A1033;
    --dc-text-body:      #3D3558;
    --dc-text-secondary: #6B5E8A;
    --dc-text-muted:     #9E94B8;
    --dc-text-disabled:  #C4BDD8;

    /* Material elevation shadows */
    --dc-shadow-1: 0 1px 3px rgba(26,16,51,0.10), 0 1px 2px rgba(26,16,51,0.06);
    --dc-shadow-2: 0 3px 6px rgba(26,16,51,0.10), 0 2px 4px rgba(26,16,51,0.06);
    --dc-shadow-3: 0 10px 20px rgba(26,16,51,0.10), 0 3px 6px rgba(26,16,51,0.05);
    --dc-shadow-4: 0 15px 25px rgba(26,16,51,0.12), 0 5px 10px rgba(26,16,51,0.05);

    /* Transitions (Material motion) */
    --dc-ease-standard: cubic-bezier(0.4, 0.0, 0.2, 1);
    --dc-ease-decel:    cubic-bezier(0.0, 0.0, 0.2, 1);
    --dc-ease-accel:    cubic-bezier(0.4, 0.0, 1.0, 1);
    --dc-transition:      all 0.2s var(--dc-ease-standard);
    --dc-transition-slow: all 0.35s var(--dc-ease-decel);

    /* Spacing — 8px grid */
    --dc-space-1: 0.5rem;
    --dc-space-2: 1rem;
    --dc-space-3: 1.5rem;
    --dc-space-4: 2rem;
    --dc-space-6: 3rem;
    --dc-space-8: 4rem;

    /* Border radius */
    --dc-radius-sm:   4px;
    --dc-radius:      8px;
    --dc-radius-lg:   12px;
    --dc-radius-xl:   16px;
    --dc-radius-pill: 999px;

    /* Font families */
    --dc-font-display: 'Playfair Display', Georgia, serif;
    --dc-font-body:    'Nunito', -apple-system, sans-serif;
    --dc-font-mono:    'JetBrains Mono', 'Courier New', monospace;

    /* Type scale */
    --dc-text-xs:   0.75rem;
    --dc-text-sm:   0.875rem;
    --dc-text-base: 1rem;
    --dc-text-md:   1.125rem;
    --dc-text-lg:   1.375rem;
    --dc-text-xl:   1.75rem;
    --dc-text-2xl:  2.25rem;
    --dc-text-3xl:  3rem;
    --dc-text-hero: clamp(2.25rem, 5vw, 4rem);

    /* Weight */
    --dc-weight-light:   300;
    --dc-weight-regular: 400;
    --dc-weight-medium:  600;
    --dc-weight-bold:    700;
}

/* Culture-specific font overrides (Burmese and Chinese are LTR — no RTL needed) */
html[lang="my"] {
    --dc-font-body:    'Noto Sans Myanmar', 'Pyidaungsu', sans-serif;
    --dc-font-display: 'Noto Sans Myanmar', 'Pyidaungsu', sans-serif;
}
html[lang="zh-CN"] {
    --dc-font-body:    'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
    --dc-font-display: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
}
html[lang="my"] .dc-btn-primary,
html[lang="my"] .dc-btn-ghost,
html[lang="my"] .dc-btn-danger {
    white-space: normal;
}

/* ═══════════════════════════════════════════════════════════════════════ */
/* 2. Base                                                                  */
/* ═══════════════════════════════════════════════════════════════════════ */

html { font-size: 16px; }

body.dc-app {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-base);
    color: var(--dc-text-body);
    background-color: var(--dc-canvas);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    margin-bottom: 0;
}

.dc-app h1, .dc-app h2, .dc-app h3,
.dc-app h4, .dc-app h5, .dc-app h6,
.dc-font-display {
    font-family: var(--dc-font-display);
    color: var(--dc-text-primary);
}

/* ═══════════════════════════════════════════════════════════════════════ */
/* 3. Animation Keyframes                                                   */
/* ═══════════════════════════════════════════════════════════════════════ */

@keyframes dc-fade-up  { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:none; } }
@keyframes dc-fade-in  { from { opacity:0; } to { opacity:1; } }
@keyframes dc-scale-in { from { opacity:0; transform:scale(0.96); } to { opacity:1; transform:scale(1); } }
@keyframes dc-shimmer  { from { background-position: -200% 0; } to { background-position: 200% 0; } }
@keyframes dc-spin     { to { transform: rotate(360deg); } }
@keyframes dc-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(198,40,40,0.4); }
    50%       { box-shadow: 0 0 0 5px rgba(198,40,40,0); }
}

.dc-anim-fade-up  { animation: dc-fade-up  0.4s var(--dc-ease-decel) both; }
.dc-anim-fade-in  { animation: dc-fade-in  0.3s var(--dc-ease-decel) both; }
.dc-anim-scale-in { animation: dc-scale-in 0.3s var(--dc-ease-decel) both; }
.dc-anim-delay-1  { animation-delay: 0.08s; }
.dc-anim-delay-2  { animation-delay: 0.16s; }
.dc-anim-delay-3  { animation-delay: 0.24s; }
.dc-anim-delay-4  { animation-delay: 0.32s; }

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

/* ═══════════════════════════════════════════════════════════════════════ */
/* 4. Component Library                                                     */
/* ═══════════════════════════════════════════════════════════════════════ */

/* ── Card ────────────────────────────────────────────────────────────── */
.dc-card {
    background: var(--dc-surface);
    border-radius: var(--dc-radius);
    box-shadow: var(--dc-shadow-2);
    padding: var(--dc-space-3);
    border: none;
    transition: box-shadow 0.2s var(--dc-ease-standard);
}
.dc-card:hover { box-shadow: var(--dc-shadow-4); }

/* ── Buttons ─────────────────────────────────────────────────────────── */
.dc-btn-primary,
.dc-btn-ghost,
.dc-btn-danger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    padding: 0.5rem 1.25rem;
    border-radius: var(--dc-radius);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    font-weight: var(--dc-weight-medium);
    line-height: 1.5;
    cursor: pointer;
    text-decoration: none !important;
    transition: var(--dc-transition);
    position: relative;
    overflow: hidden;
    border: 2px solid transparent;
    white-space: nowrap;
    vertical-align: middle;
}

.dc-btn-primary {
    background: var(--dc-primary);
    color: var(--dc-primary-text) !important;
    border-color: var(--dc-primary);
}
.dc-btn-primary:hover {
    background: var(--dc-primary-light);
    border-color: var(--dc-primary-light);
    color: var(--dc-primary-text) !important;
    box-shadow: var(--dc-shadow-2);
}
.dc-btn-primary:active { background: var(--dc-primary-dark); border-color: var(--dc-primary-dark); }

.dc-btn-ghost {
    background: transparent;
    color: var(--dc-primary) !important;
    border-color: var(--dc-primary);
}
.dc-btn-ghost:hover,
.dc-btn-ghost--active { background: var(--dc-primary-bg); color: var(--dc-primary) !important; border-color: var(--dc-primary); }

.dc-btn-danger {
    background: var(--dc-danger);
    color: #ffffff !important;
    border-color: var(--dc-danger);
}
.dc-btn-danger:hover { background: #b71c1c; border-color: #b71c1c; color: #ffffff !important; }

/* Ripple effect */
.dc-btn-primary::after,
.dc-btn-ghost::after,
.dc-btn-danger::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(circle, rgba(255,255,255,0.25) 0%, transparent 70%);
    opacity: 0;
    transition: opacity 0.3s var(--dc-ease-standard);
}
.dc-btn-primary:active::after,
.dc-btn-ghost:active::after,
.dc-btn-danger:active::after { opacity: 1; }

/* ── Input ───────────────────────────────────────────────────────────── */
.dc-input {
    display: block;
    width: 100%;
    padding: 0.625rem 0.875rem;
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-base);
    color: var(--dc-text-body);
    background: var(--dc-surface);
    border: 1.5px solid var(--dc-border);
    border-radius: var(--dc-radius);
    transition: border-color 0.2s var(--dc-ease-standard),
                box-shadow   0.2s var(--dc-ease-standard);
    outline: none;
}
.dc-input:focus {
    border-color: var(--dc-border-focus);
    box-shadow: 0 0 0 3px rgba(124,90,199,0.15);
}
.dc-input::placeholder { color: var(--dc-text-muted); }

/* ── Badge ───────────────────────────────────────────────────────────── */
.dc-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.2rem 0.65rem;
    border-radius: var(--dc-radius-pill);
    font-size: var(--dc-text-xs);
    font-weight: var(--dc-weight-medium);
    font-family: var(--dc-font-body);
    letter-spacing: 0.02em;
}
.dc-badge-success { background: var(--dc-success-bg); color: var(--dc-success); }
.dc-badge-warning { background: var(--dc-warning-bg); color: var(--dc-warning); }
.dc-badge-danger  { background: var(--dc-danger-bg);  color: var(--dc-danger); }
.dc-badge-info    { background: var(--dc-info-bg);    color: var(--dc-info); }
.dc-badge-primary { background: var(--dc-primary-bg); color: var(--dc-primary); }

/* ── Avatar ──────────────────────────────────────────────────────────── */
.dc-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--dc-primary-bg);
    color: var(--dc-primary);
    font-family: var(--dc-font-body);
    font-weight: var(--dc-weight-medium);
    font-size: var(--dc-text-sm);
    flex-shrink: 0;
}
.dc-avatar-sm { width: 32px; height: 32px; font-size: var(--dc-text-xs); }
.dc-avatar-lg { width: 56px; height: 56px; font-size: var(--dc-text-md); }

/* ── Page header ─────────────────────────────────────────────────────── */
.dc-page-header {
    background: var(--dc-surface-2);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-4);
    margin-bottom: var(--dc-space-4);
}
.dc-page-header h1, .dc-page-header h2, .dc-page-header h3,
.dc-page-header h4, .dc-page-header h5 {
    font-family: var(--dc-font-display);
    color: var(--dc-text-primary);
    margin-bottom: 0;
}

/* ── Divider ─────────────────────────────────────────────────────────── */
.dc-divider {
    display: flex;
    align-items: center;
    gap: var(--dc-space-2);
    margin: var(--dc-space-4) 0;
    color: var(--dc-text-muted);
    font-size: var(--dc-text-sm);
}
.dc-divider::before,
.dc-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--dc-border);
}

/* ── Empty state ─────────────────────────────────────────────────────── */
.dc-empty {
    text-align: center;
    padding: var(--dc-space-8) var(--dc-space-4);
    color: var(--dc-text-muted);
}
.dc-empty-icon  { font-size: 3rem; margin-bottom: var(--dc-space-2); opacity: 0.5; }
.dc-empty-title {
    font-family: var(--dc-font-display);
    color: var(--dc-text-secondary);
    font-size: var(--dc-text-lg);
    margin-bottom: var(--dc-space-1);
}

/* ── Spinner ─────────────────────────────────────────────────────────── */
.dc-spinner {
    width: 32px;
    height: 32px;
    border: 3px solid var(--dc-border);
    border-top-color: var(--dc-primary);
    border-radius: 50%;
    animation: dc-spin 0.8s linear infinite;
    display: inline-block;
}
.dc-spinner-sm { width: 20px; height: 20px; border-width: 2px; }

/* ── Skeleton ────────────────────────────────────────────────────────── */
.dc-skeleton {
    background: linear-gradient(90deg,
        var(--dc-surface-2) 25%,
        var(--dc-surface-3) 50%,
        var(--dc-surface-2) 75%);
    background-size: 200% 100%;
    animation: dc-shimmer 1.5s infinite;
    border-radius: var(--dc-radius);
}

/* ── Toast ───────────────────────────────────────────────────────────── */
.dc-toast {
    position: fixed;
    bottom: var(--dc-space-4);
    right: var(--dc-space-4);
    z-index: 9999;
    display: flex;
    align-items: center;
    gap: var(--dc-space-1);
    padding: 0.75rem 1rem;
    border-radius: var(--dc-radius);
    box-shadow: var(--dc-shadow-3);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    max-width: 320px;
    transform: translateY(120%);
    transition: transform 0.35s var(--dc-ease-decel);
    pointer-events: none;
}
.dc-toast--show        { transform: translateY(0); pointer-events: auto; }
.dc-toast-success      { background: var(--dc-success-bg); color: var(--dc-success); border-left: 3px solid var(--dc-success); }
.dc-toast-danger       { background: var(--dc-danger-bg);  color: var(--dc-danger);  border-left: 3px solid var(--dc-danger); }
.dc-toast-warning      { background: var(--dc-warning-bg); color: var(--dc-warning); border-left: 3px solid var(--dc-warning); }
.dc-toast-info         { background: var(--dc-info-bg);    color: var(--dc-info);    border-left: 3px solid var(--dc-info); }
.dc-toast-icon         { font-size: 1rem; flex-shrink: 0; }

/* ── Stepper ─────────────────────────────────────────────────────────── */
.dc-stepper {
    display: flex;
    align-items: center;
    margin-bottom: var(--dc-space-4);
}
.dc-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.375rem;
    position: relative;
    flex: 1;
}
.dc-step:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 16px;
    left: 50%;
    width: 100%;
    height: 2px;
    background: var(--dc-border);
    z-index: 0;
}
.dc-step--done::after   { background: var(--dc-success) !important; }
.dc-step--active::after { background: var(--dc-primary); }

.dc-step-circle {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 2px solid var(--dc-border);
    background: var(--dc-surface);
    color: var(--dc-text-muted);
    font-family: var(--dc-font-body);
    font-weight: var(--dc-weight-medium);
    font-size: var(--dc-text-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
    position: relative;
}
.dc-step--active .dc-step-circle { background: var(--dc-primary); border-color: var(--dc-primary); color: #ffffff; }
.dc-step--done   .dc-step-circle { background: var(--dc-success-bg); border-color: var(--dc-success); color: var(--dc-success); }

.dc-step-label {
    font-size: var(--dc-text-xs);
    font-family: var(--dc-font-body);
    color: var(--dc-text-muted);
    text-align: center;
    white-space: nowrap;
}
.dc-step--active .dc-step-label { color: var(--dc-primary); font-weight: var(--dc-weight-medium); }
.dc-step--done   .dc-step-label { color: var(--dc-success); }

/* ── Stars ───────────────────────────────────────────────────────────── */
.dc-stars {
    color: var(--dc-accent);
    font-size: var(--dc-text-sm);
    letter-spacing: 0.05em;
}

/* Interactive star rating buttons (review forms) */
.dc-star-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 12px;
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius);
    background: var(--dc-surface);
    color: var(--dc-text-muted);
    font-size: var(--dc-text-sm);
    font-weight: 500;
    cursor: pointer;
    transition: border-color .15s, background .15s, color .15s;
}
.dc-star-btn:hover,
.dc-star-btn.active {
    border-color: var(--dc-accent);
    background: rgba(var(--dc-accent-rgb, 99,102,241), .12);
    color: var(--dc-accent);
}

/* ═══════════════════════════════════════════════════════════════════════ */
/* 5. Navigation — Phase 1 Global Shell                                    */
/* ═══════════════════════════════════════════════════════════════════════ */

/* Navbar wrapper */
.dc-navbar {
    background: var(--dc-surface) !important;
    box-shadow: var(--dc-shadow-1);
    border-bottom: none !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.dc-navbar .container {
    min-height: 64px;
}

/* Brand / wordmark */
.dc-navbar-brand {
    font-family: var(--dc-font-display) !important;
    font-size: var(--dc-text-xl) !important;
    font-weight: 700 !important;
    color: var(--dc-primary) !important;
    letter-spacing: -0.01em;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
.dc-navbar-brand:hover { color: var(--dc-primary-light) !important; text-decoration: none; }

/* Toggler button (mobile hamburger) */
.dc-navbar .navbar-toggler {
    border: 1.5px solid var(--dc-border);
    border-radius: var(--dc-radius);
    padding: 0.375rem 0.5rem;
    color: var(--dc-text-primary);
    font-size: 1.1rem;
}
.dc-navbar .navbar-toggler:focus { box-shadow: 0 0 0 3px rgba(92,53,165,0.2); }
.dc-navbar .navbar-toggler-icon {
    background-image: none;
}

/* Primary nav links */
.dc-nav-link {
    font-family: var(--dc-font-body) !important;
    font-weight: var(--dc-weight-medium) !important;
    font-size: var(--dc-text-sm) !important;
    color: var(--dc-text-body) !important;
    padding: 0.5rem 0.75rem !important;
    position: relative;
    transition: color 0.2s var(--dc-ease-standard);
}
.dc-nav-link::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0.75rem;
    right: 0.75rem;
    height: 2px;
    background: var(--dc-primary);
    transform: scaleX(0);
    transition: transform 0.2s var(--dc-ease-standard);
    border-radius: var(--dc-radius-pill);
}
.dc-nav-link:hover  { color: var(--dc-primary) !important; }
.dc-nav-link.active { color: var(--dc-primary) !important; }
.dc-nav-link.active::after,
.dc-nav-link:hover::after  { transform: scaleX(1); }

/* Mobile: active link gets tinted bg instead of underline */
@media (max-width: 991.98px) {
    .dc-nav-link::after { display: none; }
    .dc-nav-link.active { background: var(--dc-primary-bg); border-radius: var(--dc-radius); }
}

/* Notification bell */
.dc-notif-btn {
    position: relative;
    background: none;
    border: none;
    color: var(--dc-text-secondary) !important;
    padding: 0.4rem 0.5rem;
    border-radius: var(--dc-radius);
    font-size: 1.25rem;
    display: inline-flex !important;
    align-items: center;
    transition: color 0.2s var(--dc-ease-standard),
                background 0.2s var(--dc-ease-standard);
    text-decoration: none !important;
    line-height: 1;
}
.dc-notif-btn:hover { color: var(--dc-primary) !important; background: var(--dc-primary-bg); }

.dc-notif-badge {
    position: absolute;
    top: 2px;
    right: 2px;
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    border-radius: var(--dc-radius-pill);
    background: var(--dc-danger);
    color: #ffffff;
    font-size: 0.65rem;
    font-weight: 700;
    font-family: var(--dc-font-body);
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}
.dc-notif-badge--pulse { animation: dc-pulse 1.5s ease-in-out infinite; }

/* User dropdown — avatar initials circle */
.dc-avatar-initials {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--dc-primary-bg);
    color: var(--dc-primary);
    font-weight: var(--dc-weight-medium);
    font-size: var(--dc-text-xs);
    font-family: var(--dc-font-body);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

/* Dropdown toggle button */
.dc-user-toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0.3rem 0.5rem !important;
    border-radius: var(--dc-radius);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm) !important;
    font-weight: var(--dc-weight-medium) !important;
    color: var(--dc-text-body) !important;
    transition: background 0.2s var(--dc-ease-standard);
}
.dc-user-toggle:hover  { background: var(--dc-surface-2) !important; }
.dc-user-toggle:focus  { box-shadow: none !important; }
.dc-user-toggle::after { display: none; } /* hide Bootstrap's caret arrow */

.dc-user-toggle .bi-chevron-down {
    font-size: 0.75rem;
    color: var(--dc-text-muted);
    transition: transform 0.2s var(--dc-ease-standard);
}
.dc-user-toggle.show .bi-chevron-down,
.show > .dc-user-toggle .bi-chevron-down { transform: rotate(180deg); }

/* Dropdown menu */
.dc-navbar .dropdown-menu {
    border: 1px solid var(--dc-border) !important;
    border-radius: var(--dc-radius) !important;
    box-shadow: var(--dc-shadow-3) !important;
    padding: 0.375rem 0;
    min-width: 200px;
    margin-top: 8px !important;
    animation: dc-scale-in 0.15s var(--dc-ease-decel) both;
}
.dc-navbar .dropdown-item {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-body);
    padding: 0.5rem 1rem;
    transition: background 0.15s var(--dc-ease-standard);
}
.dc-navbar .dropdown-item:hover,
.dc-navbar .dropdown-item:focus {
    background: var(--dc-surface-2);
    color: var(--dc-text-primary);
}
.dc-navbar .dropdown-divider { border-color: var(--dc-border); margin: 0.375rem 0; }
.dc-navbar .dc-item-danger { color: var(--dc-danger) !important; }
.dc-navbar .dc-item-danger:hover { background: var(--dc-danger-bg) !important; color: var(--dc-danger) !important; }

/* Auth buttons in nav (Login / Register) */
.dc-navbar .dc-nav-actions .nav-item { display: flex; align-items: center; }
.dc-navbar .dc-nav-actions { gap: 0.5rem; }

/* Collapse override for mobile — ensure clean slide */
@media (max-width: 991.98px) {
    .dc-navbar .navbar-collapse {
        border-top: 1px solid var(--dc-border);
        padding: var(--dc-space-2) 0 var(--dc-space-3);
        background: var(--dc-surface);
    }
    .dc-navbar .navbar-nav + .navbar-nav {
        margin-top: var(--dc-space-1);
        padding-top: var(--dc-space-1);
        border-top: 1px solid var(--dc-border);
    }
    .dc-nav-link { display: block; width: 100%; }
    .dc-notif-btn { display: flex !important; width: 100%; padding: 0.5rem 0.75rem !important; font-size: var(--dc-text-sm) !important; gap: 0.5rem; }
    .dc-navbar .dropdown-menu { box-shadow: none !important; border: none !important; background: var(--dc-surface-2) !important; border-radius: var(--dc-radius) !important; margin-top: 0 !important; }
    .dc-user-toggle { width: 100%; }
    .dc-navbar .dc-nav-actions { padding-left: 0; }
    .dc-navbar .dc-nav-actions .nav-item { display: block; width: 100%; }
    .dc-btn-primary, .dc-btn-ghost {
        display: block;
        width: 100%;
        text-align: center;
        margin: 0.25rem 0.75rem;
        width: calc(100% - 1.5rem);
    }
}

/* ═══════════════════════════════════════════════════════════════════════ */
/* 6. Footer — Phase 1 Global Shell                                        */
/* ═══════════════════════════════════════════════════════════════════════ */

.dc-footer {
    background: var(--dc-text-primary);
    color: var(--dc-text-muted);
    border-top: 2px solid var(--dc-primary);
    margin-top: var(--dc-space-8);
    padding: var(--dc-space-6) 0 var(--dc-space-4);
}

.dc-footer-brand {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-xl);
    font-weight: 700;
    color: #ffffff;
    text-decoration: none !important;
    display: inline-block;
    margin-bottom: var(--dc-space-1);
}
.dc-footer-brand:hover { color: var(--dc-primary-light); }

.dc-footer-tagline {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
    margin-bottom: 0;
}

.dc-footer-heading {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-xs);
    font-weight: var(--dc-weight-medium);
    color: #ffffff;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: var(--dc-space-2);
}

.dc-footer-links {
    list-style: none;
    padding: 0;
    margin: 0;
}
.dc-footer-links li { margin-bottom: 0.5rem; }
.dc-footer-links a {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
    text-decoration: none;
    transition: color 0.15s var(--dc-ease-standard);
}
.dc-footer-links a:hover { color: #ffffff; }

.dc-footer-copyright {
    font-family: var(--dc-font-body);
    font-weight: var(--dc-weight-light);
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    border-top: 1px solid rgba(255,255,255,0.08);
    padding-top: var(--dc-space-3);
    margin-top: var(--dc-space-4);
    text-align: center;
}

/* ═══════════════════════════════════════════════════════════════════════ */
/* 7. Authentication — Phase 2                                              */
/* ═══════════════════════════════════════════════════════════════════════ */

/* Centered page wrapper — vertically centers the card */
.dc-auth-wrap {
    min-height: calc(100vh - 64px - 280px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--dc-space-4) var(--dc-space-2);
}

/* Auth card — elevation dp3, fixed max-width */
.dc-auth-card {
    width: 100%;
    max-width: 440px;
    box-shadow: var(--dc-shadow-3);
    padding: var(--dc-space-4);
}

/* Card header */
.dc-auth-header {
    text-align: center;
    margin-bottom: var(--dc-space-4);
}
.dc-auth-brand {
    display: block;
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-lg);
    font-weight: 700;
    color: var(--dc-primary);
    text-decoration: none;
    margin-bottom: 0.375rem;
}
.dc-auth-title {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-2xl);
    font-weight: 700;
    color: var(--dc-text-primary);
    margin-bottom: 0;
    line-height: 1.2;
}

/* Error / success alert banners */
.dc-auth-errors {
    background: var(--dc-danger-bg);
    border: 1px solid rgba(198,40,40,0.2);
    border-left: 3px solid var(--dc-danger);
    border-radius: var(--dc-radius);
    padding: 0.75rem 1rem;
    margin-bottom: var(--dc-space-3);
    color: var(--dc-danger);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    line-height: 1.5;
}
.dc-auth-success {
    background: var(--dc-success-bg);
    border: 1px solid rgba(46,125,50,0.2);
    border-left: 3px solid var(--dc-success);
    border-radius: var(--dc-radius);
    padding: 0.75rem 1rem;
    margin-bottom: var(--dc-space-3);
    color: var(--dc-success);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
}

/* Form fields */
.dc-field { position: relative; margin-bottom: var(--dc-space-3); }

/* Bootstrap form-floating inputs, styled with DC tokens */
.dc-auth-card .form-floating > .form-control {
    background: var(--dc-surface);
    border: 1.5px solid var(--dc-border);
    border-radius: var(--dc-radius);
    color: var(--dc-text-body);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-base);
    padding-right: 3rem; /* room for pwd toggle */
}
.dc-auth-card .form-floating > .form-control:focus {
    border-color: var(--dc-border-focus);
    box-shadow: 0 0 0 3px rgba(124,90,199,0.15);
    background: var(--dc-surface);
    color: var(--dc-text-body);
}
.dc-auth-card .form-floating > label {
    color: var(--dc-text-muted);
    font-family: var(--dc-font-body);
}
.dc-auth-card .form-floating > .form-control:focus ~ label,
.dc-auth-card .form-floating > .form-control:not(:placeholder-shown) ~ label {
    color: var(--dc-text-secondary);
}
.dc-auth-card .form-text {
    color: var(--dc-text-muted);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-xs);
    margin-top: 0.25rem;
}

/* Inline field validation error */
.dc-field-error {
    display: block;
    font-size: var(--dc-text-xs);
    color: var(--dc-danger);
    font-family: var(--dc-font-body);
    margin-top: 0.3rem;
    padding-left: 0.25rem;
    min-height: 0;
}
.dc-field-error:empty { display: none; }

/* Password show/hide toggle button */
.dc-pwd-toggle {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: var(--dc-text-muted);
    cursor: pointer;
    padding: 4px;
    z-index: 5;
    font-size: 1rem;
    display: flex;
    align-items: center;
    line-height: 1;
}
.dc-pwd-toggle:hover { color: var(--dc-text-secondary); }

/* Submit button — full-width, with spinner variant */
.dc-auth-submit {
    width: 100%;
    justify-content: center;
    padding: 0.7rem 1.25rem;
    font-size: var(--dc-text-base);
}
.dc-auth-submit .dc-spinner-sm,
.dc-auth-submit-spinner {
    border-top-color: rgba(255,255,255,0.9);
}

/* Cross-link below form */
.dc-auth-crosslink {
    text-align: center;
    margin-top: var(--dc-space-3);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-secondary);
}
.dc-auth-crosslink a {
    color: var(--dc-primary);
    font-weight: var(--dc-weight-medium);
    text-decoration: none;
}
.dc-auth-crosslink a:hover {
    color: var(--dc-primary-light);
    text-decoration: underline;
}

/* VerifyEmail status icons / states */
.dc-verify-icon {
    font-size: 3rem;
    margin-bottom: var(--dc-space-2);
    display: block;
    text-align: center;
}
.dc-verify-icon--success { color: var(--dc-success); }
.dc-verify-icon--danger  { color: var(--dc-danger); }
.dc-verify-icon--muted   { color: var(--dc-text-muted); }
.dc-verify-message {
    text-align: center;
    font-family: var(--dc-font-body);
    color: var(--dc-text-body);
    margin-bottom: var(--dc-space-3);
}

/* ═══════════════════════════════════════════════════════════════════════ */
/* 8. Home / Landing Page — Phase 3                                        */
/* ═══════════════════════════════════════════════════════════════════════ */

/* Scroll-animation base: elements hidden until IntersectionObserver fires */
[data-animate] { opacity: 0; }
@media (prefers-reduced-motion: reduce) { [data-animate] { opacity: 1; } }

/* ── Hero ─────────────────────────────────────────────────────────────── */
.dc-hero {
    padding: var(--dc-space-8) 0 var(--dc-space-6);
}
.dc-hero-headline {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-hero);
    font-weight: 700;
    color: var(--dc-text-primary);
    line-height: 1.15;
    margin-bottom: var(--dc-space-2);
}
.dc-hero-sub {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-md);
    color: var(--dc-text-secondary);
    line-height: 1.7;
    margin-bottom: var(--dc-space-4);
    max-width: 480px;
}
.dc-hero-actions { display: flex; flex-wrap: wrap; gap: var(--dc-space-2); }

/* SVG illustration */
.dc-hero-illustration {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--dc-space-2);
}
.dc-hero-svg {
    width: 100%;
    max-width: 420px;
    height: auto;
}

/* ── Section common ───────────────────────────────────────────────────── */
.dc-section { padding: var(--dc-space-8) 0; }
.dc-section-label {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-xs);
    font-weight: var(--dc-weight-medium);
    color: var(--dc-primary);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    display: block;
    margin-bottom: 0.5rem;
}
.dc-section-heading {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-2xl);
    font-weight: 700;
    color: var(--dc-text-primary);
    margin-bottom: var(--dc-space-1);
}
.dc-section-lead {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-md);
    color: var(--dc-text-secondary);
    margin-bottom: 0;
}

/* ── How It Works step cards ──────────────────────────────────────────── */
.dc-step-card {
    height: 100%;
    border-radius: var(--dc-radius-lg);
}
.dc-step-num {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--dc-primary-bg);
    color: var(--dc-primary);
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-xl);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--dc-space-3);
    flex-shrink: 0;
}
.dc-step-card h3 {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-lg);
    font-weight: 600;
    color: var(--dc-text-primary);
    margin-bottom: var(--dc-space-1);
}
.dc-step-card p {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-base);
    color: var(--dc-text-secondary);
    margin-bottom: 0;
    line-height: 1.65;
}

/* ── Discipline pills ─────────────────────────────────────────────────── */
.dc-pill-scroller {
    display: flex;
    flex-wrap: wrap;
    gap: var(--dc-space-1);
    justify-content: center;
    padding: var(--dc-space-3) 0;
}
.dc-pill {
    display: inline-flex;
    align-items: center;
    padding: 0.4rem 1.1rem;
    border: 1.5px solid var(--dc-border);
    border-radius: var(--dc-radius-pill);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    font-weight: var(--dc-weight-medium);
    color: var(--dc-text-secondary);
    text-decoration: none !important;
    background: var(--dc-surface);
    transition: var(--dc-transition);
    white-space: nowrap;
}
.dc-pill:hover {
    border-color: var(--dc-primary);
    color: var(--dc-primary);
    background: var(--dc-primary-bg);
}

/* ── Trust strip ──────────────────────────────────────────────────────── */
.dc-trust-strip {
    background: var(--dc-surface);
    border-radius: var(--dc-radius-xl);
    box-shadow: var(--dc-shadow-1);
    padding: var(--dc-space-6) var(--dc-space-4);
    margin: var(--dc-space-4) 0;
}
.dc-stat-number {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-3xl);
    font-weight: 700;
    color: var(--dc-primary);
    line-height: 1;
    margin-bottom: 0.375rem;
}
.dc-stat-label {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-secondary);
    font-weight: var(--dc-weight-medium);
}

/* ── CTA section ──────────────────────────────────────────────────────── */
.dc-cta-section {
    background: var(--dc-primary-bg);
    border-radius: var(--dc-radius-xl);
    padding: var(--dc-space-8) var(--dc-space-4);
    text-align: center;
    margin: var(--dc-space-4) 0 var(--dc-space-6);
}
.dc-cta-section .dc-section-heading { color: var(--dc-text-primary); }
.dc-cta-section .dc-section-lead    { color: var(--dc-text-secondary); margin-bottom: var(--dc-space-4); }

/* Mobile adjustments */
@media (max-width: 991.98px) {
    .dc-hero { padding: var(--dc-space-6) 0 var(--dc-space-4); }
    .dc-hero-illustration { padding-top: var(--dc-space-2); }
    .dc-hero-svg { max-width: 280px; }
    .dc-stat-number { font-size: var(--dc-text-2xl); }
}
@media (max-width: 575.98px) {
    .dc-hero-actions { flex-direction: column; }
    .dc-hero-actions .dc-btn-primary,
    .dc-hero-actions .dc-btn-ghost { width: 100%; justify-content: center; }
    .dc-trust-strip .col-4 + .col-4 { border-left: 1px solid var(--dc-border); }
}

/* ═══════════════════════════════════════════════════════════════════════ */
/* 9. Directory & Diviner Profile — Phase 4                                */
/* ═══════════════════════════════════════════════════════════════════════ */

/* ── Filter panel (directory left col) ───────────────────────────────── */
.dc-filter-panel {
    background: var(--dc-surface);
    border-radius: var(--dc-radius-lg);
    box-shadow: var(--dc-shadow-1);
    padding: var(--dc-space-3);
    position: sticky;
    top: 80px;
}
.dc-filter-heading {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-base);
    font-weight: 600;
    color: var(--dc-text-primary);
    margin-bottom: var(--dc-space-3);
    padding-bottom: var(--dc-space-1);
    border-bottom: 1px solid var(--dc-border);
}
.dc-filter-label {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-xs);
    font-weight: var(--dc-weight-medium);
    color: var(--dc-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.07em;
    display: block;
    margin-bottom: 0.375rem;
}
.dc-filter-group { margin-bottom: var(--dc-space-2); }

/* Active-filter chip strip */
.dc-active-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    margin-bottom: var(--dc-space-2);
}
.dc-filter-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.2rem 0.6rem;
    background: var(--dc-primary-bg);
    border-radius: var(--dc-radius-pill);
    font-size: var(--dc-text-xs);
    color: var(--dc-primary);
    font-family: var(--dc-font-body);
    font-weight: var(--dc-weight-medium);
    text-decoration: none;
}

/* ── Directory result header ──────────────────────────────────────────── */
.dc-result-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--dc-space-3);
    flex-wrap: wrap;
    gap: var(--dc-space-1);
}
.dc-result-count {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-secondary);
}
.dc-result-count strong {
    color: var(--dc-text-primary);
    font-weight: var(--dc-weight-medium);
}

/* ── Diviner card ─────────────────────────────────────────────────────── */
.dc-diviner-card {
    height: 100%;
    display: flex;
    flex-direction: column;
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-3);
}
.dc-diviner-card:hover { box-shadow: var(--dc-shadow-4); }
.dc-diviner-body { flex: 1; }

.dc-diviner-name {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-lg);
    font-weight: 600;
    color: var(--dc-text-primary);
    margin-bottom: 0.125rem;
    line-height: 1.25;
}
.dc-diviner-tagline {
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
    margin-bottom: var(--dc-space-2);
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.dc-diviner-disciplines {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    margin-bottom: var(--dc-space-2);
}
.dc-diviner-footer {
    margin-top: var(--dc-space-2);
    padding-top: var(--dc-space-2);
    border-top: 1px solid var(--dc-border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--dc-space-1);
}
.dc-diviner-rating {
    display: flex;
    align-items: center;
    gap: 0.375rem;
}
.dc-rating-count {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
}

/* ── Pagination (DC style) ────────────────────────────────────────────── */
.dc-pagination .page-link {
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    color: var(--dc-primary);
    border: 1.5px solid var(--dc-border);
    border-radius: var(--dc-radius) !important;
    margin: 0 3px;
    padding: 0.375rem 0.75rem;
    transition: var(--dc-transition);
}
.dc-pagination .page-link:hover { background: var(--dc-primary-bg); border-color: var(--dc-primary); }
.dc-pagination .page-item.active .page-link {
    background: var(--dc-primary);
    border-color: var(--dc-primary);
    color: #ffffff;
}
.dc-pagination .page-item.disabled .page-link {
    color: var(--dc-text-disabled);
    border-color: var(--dc-border);
}

/* ── Profile header ───────────────────────────────────────────────────── */
.dc-profile-header {
    background: var(--dc-surface-2);
    border-radius: var(--dc-radius-xl);
    padding: var(--dc-space-4);
    margin-bottom: var(--dc-space-4);
    display: flex;
    align-items: flex-start;
    gap: var(--dc-space-4);
    flex-wrap: wrap;
}
.dc-profile-avatar-lg {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    background: var(--dc-primary-bg);
    color: var(--dc-primary);
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-2xl);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    overflow: hidden;
}
.dc-profile-avatar-lg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.dc-profile-info { flex: 1; min-width: 0; }
.dc-profile-name {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-2xl);
    font-weight: 700;
    color: var(--dc-text-primary);
    margin-bottom: 0.25rem;
    line-height: 1.2;
}
.dc-profile-tagline {
    font-size: var(--dc-text-base);
    color: var(--dc-text-secondary);
    margin-bottom: var(--dc-space-2);
}
.dc-profile-meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--dc-space-2);
    align-items: center;
    margin-bottom: var(--dc-space-2);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-secondary);
}
.dc-profile-meta-sep::before { content: '·'; margin-right: var(--dc-space-1); }
.dc-profile-disciplines {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
}

/* ── Profile tabs (Bootstrap nav-tabs override) ───────────────────────── */
.dc-profile-tabs > .nav-tabs {
    border-bottom: 2px solid var(--dc-border);
    gap: 0;
    margin-bottom: var(--dc-space-3);
    flex-wrap: nowrap;
    overflow-x: auto;
}
.dc-profile-tabs > .nav-tabs .nav-link {
    font-family: var(--dc-font-body);
    font-weight: var(--dc-weight-medium);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-secondary);
    border: none;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    padding: 0.625rem 1.25rem;
    margin-bottom: -2px;
    white-space: nowrap;
    transition: color 0.15s, border-color 0.15s;
    background: none;
}
.dc-profile-tabs > .nav-tabs .nav-link:hover {
    color: var(--dc-primary);
    border-bottom-color: var(--dc-primary-light);
}
.dc-profile-tabs > .nav-tabs .nav-link.active {
    color: var(--dc-primary);
    border-bottom-color: var(--dc-primary);
    background: none;
}

/* ── Package card (on profile) ────────────────────────────────────────── */
.dc-pkg-card {
    height: 100%;
    border: 1.5px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-4) var(--dc-space-6);
    padding-left: var(--dc-space-4);
    padding-right: var(--dc-space-4);
    background: var(--dc-surface);
    display: flex;
    flex-direction: column;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.dc-pkg-card:hover {
    border-color: var(--dc-primary);
    box-shadow: var(--dc-shadow-2);
}
.dc-pkg-title {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-base);
    font-weight: 600;
    color: var(--dc-text-primary);
    margin-bottom: 0.25rem;
    line-height: 1.3;
}
.dc-pkg-meta {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    margin-bottom: var(--dc-space-2);
    flex: 1;
}
.dc-pkg-price {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-lg);
    font-weight: 700;
    color: var(--dc-accent);
}
.dc-pkg-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: var(--dc-space-3);
    padding-top: var(--dc-space-3);
    border-top: 1px solid var(--dc-border);
}

/* ── Rating breakdown bar ─────────────────────────────────────────────── */
.dc-rating-bar-row {
    display: flex;
    align-items: center;
    gap: var(--dc-space-1);
    margin-bottom: 0.375rem;
}
.dc-rating-bar-label {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-secondary);
    min-width: 48px;
    text-align: right;
}
.dc-rating-bar-track {
    flex: 1;
    height: 6px;
    background: var(--dc-surface-3);
    border-radius: var(--dc-radius-pill);
    overflow: hidden;
}
.dc-rating-bar-fill {
    height: 100%;
    background: var(--dc-accent);
    border-radius: var(--dc-radius-pill);
}
.dc-rating-bar-count {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    min-width: 24px;
}

/* ── Review item ──────────────────────────────────────────────────────── */
.dc-review-item {
    padding: var(--dc-space-3) 0;
    border-bottom: 1px solid var(--dc-border);
}
.dc-review-item:last-child { border-bottom: none; }
.dc-review-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 0.375rem;
    gap: var(--dc-space-2);
}
.dc-review-author {
    font-family: var(--dc-font-body);
    font-weight: var(--dc-weight-medium);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-primary);
}
.dc-review-date {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    white-space: nowrap;
}
.dc-review-body {
    font-size: var(--dc-text-sm);
    color: var(--dc-text-body);
    line-height: 1.65;
    margin-top: 0.375rem;
}

/* ── Sticky sidebar ───────────────────────────────────────────────────── */
.dc-sticky-sidebar { position: sticky; top: 80px; }
.dc-book-card {
    background: var(--dc-surface);
    border: 1.5px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-3);
}
.dc-book-card .dc-btn-primary { width: 100%; justify-content: center; }

/* ── Slot time chip ───────────────────────────────────────────────────── */
.dc-slot-chip {
    display: inline-flex;
    align-items: center;
    padding: 0.2rem 0.6rem;
    background: var(--dc-surface-2);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius-pill);
    font-size: var(--dc-text-xs);
    color: var(--dc-text-secondary);
    font-family: var(--dc-font-body);
}

/* ── Supplementary utilities (Phase 4) ───────────────────────────────── */
.dc-avatar-md { width: 52px; height: 52px; font-size: var(--dc-text-md); }

.dc-btn-sm {
    padding: 0.3rem 0.875rem;
    font-size: var(--dc-text-sm);
}

.dc-back-link {
    color: var(--dc-text-muted);
    font-size: var(--dc-text-sm);
    text-decoration: none;
    transition: color 0.15s;
}
.dc-back-link:hover { color: var(--dc-primary); }

.dc-divider-dot::before {
    content: "·";
    margin: 0 0.25rem;
    color: var(--dc-text-muted);
}

.dc-badge-muted {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.2rem 0.55rem;
    border-radius: var(--dc-radius-pill);
    font-size: var(--dc-text-xs);
    font-weight: var(--dc-weight-medium);
    background: var(--dc-surface-3);
    color: var(--dc-text-muted);
}

.dc-filter-clear {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    text-decoration: none;
    transition: color 0.15s;
}
.dc-filter-clear:hover { color: var(--dc-danger); }

.dc-page-header-title {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-2xl);
    font-weight: var(--dc-weight-bold);
    color: var(--dc-text-primary);
    margin-bottom: 0.25rem;
}
.dc-page-header-sub {
    font-size: var(--dc-text-base);
    color: var(--dc-text-muted);
    margin-bottom: 0;
}

.dc-diviner-session-types { display: flex; gap: 0.25rem; flex-wrap: wrap; }

.dc-slot-chip--more {
    background: var(--dc-primary-bg);
    color: var(--dc-primary);
    border-color: var(--dc-primary-bg);
}

.dc-review-item { padding: var(--dc-space-3); }

/* Mobile adjustments */
@media (max-width: 991.98px) {
    .dc-filter-panel { position: static; }
    .dc-sticky-sidebar { position: static; }
    .dc-profile-header { flex-direction: column; align-items: center; text-align: center; }
    .dc-profile-meta   { justify-content: center; }
    .dc-profile-disciplines { justify-content: center; }
}

/* ════════════════════════════════════════════════════════════════════════
   Phase 5 — Seeker Dashboard (Booking Wizard · Sessions · Charm Orders)
   ════════════════════════════════════════════════════════════════════════ */

/* ── Booking wizard stepper ──────────────────────────────────────────── */
.dc-stepper {
    display: flex;
    align-items: center;
    gap: 0;
    margin-bottom: var(--dc-space-5);
    padding: var(--dc-space-3) var(--dc-space-4);
    background: var(--dc-surface);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
}
.dc-step {
    display: flex;
    align-items: center;
    gap: var(--dc-space-2);
    flex: 1;
    min-width: 0;
}
.dc-step:last-child { flex: 0; }
.dc-step-bubble {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--dc-text-sm);
    font-weight: var(--dc-weight-bold);
    flex-shrink: 0;
    background: var(--dc-surface-3);
    color: var(--dc-text-muted);
    transition: background 0.2s, color 0.2s;
}
.dc-step--active .dc-step-bubble {
    background: var(--dc-primary);
    color: #fff;
}
.dc-step--done .dc-step-bubble {
    background: var(--dc-success);
    color: #fff;
}
.dc-step-label {
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
    font-weight: var(--dc-weight-medium);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dc-step--active .dc-step-label { color: var(--dc-primary); }
.dc-step--done  .dc-step-label  { color: var(--dc-success); }
.dc-step-line {
    flex: 1;
    height: 2px;
    background: var(--dc-border);
    margin: 0 var(--dc-space-2);
    border-radius: 1px;
}
.dc-step-line--done { background: var(--dc-success); }

/* ── Package selection cards ─────────────────────────────────────────── */
.dc-pkg-select-card {
    border: 1.5px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-3);
    background: var(--dc-surface);
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s;
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
}
.dc-pkg-select-card:hover {
    border-color: var(--dc-primary);
    box-shadow: var(--dc-shadow-2);
}
.dc-pkg-select-card--selected {
    border-color: var(--dc-primary);
    background: var(--dc-primary-bg);
    box-shadow: 0 0 0 3px rgba(92,53,165,0.12);
}
.dc-pkg-select-check {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--dc-primary);
    color: #fff;
    display: none;
    align-items: center;
    justify-content: center;
    font-size: 13px;
}
.dc-pkg-select-card--selected .dc-pkg-select-check { display: flex; }

/* ── Slot time grid ──────────────────────────────────────────────────── */
.dc-slot-grid { display: flex; flex-wrap: wrap; gap: var(--dc-space-2); }
.dc-slot-btn {
    padding: 0.35rem 0.75rem;
    border: 1.5px solid var(--dc-border);
    border-radius: var(--dc-radius-pill);
    background: var(--dc-surface);
    color: var(--dc-text-body);
    font-size: var(--dc-text-sm);
    font-family: var(--dc-font-body);
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s, color 0.15s;
}
.dc-slot-btn:hover {
    border-color: var(--dc-primary);
    color: var(--dc-primary);
    background: var(--dc-primary-bg);
}

/* ── Session cards ───────────────────────────────────────────────────── */
.dc-session-card {
    background: var(--dc-surface);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-3);
    margin-bottom: var(--dc-space-3);
    display: flex;
    align-items: center;
    gap: var(--dc-space-3);
    transition: box-shadow 0.2s;
}
.dc-session-card:hover { box-shadow: var(--dc-shadow-2); }
.dc-session-card-info { flex: 1; min-width: 0; }
.dc-session-diviner-name {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-md);
    font-weight: 600;
    color: var(--dc-text-primary);
    margin-bottom: 2px;
}
.dc-session-pkg-title {
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
    margin-bottom: var(--dc-space-1);
}
.dc-session-meta {
    display: flex;
    align-items: center;
    gap: var(--dc-space-2);
    flex-wrap: wrap;
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
}
.dc-session-actions {
    display: flex;
    gap: var(--dc-space-2);
    flex-wrap: wrap;
    justify-content: flex-end;
}

/* Fade-out animation for cancel */
@keyframes dc-fade-out {
    from { opacity: 1; transform: scaleY(1); max-height: 200px; }
    to   { opacity: 0; transform: scaleY(0.8); max-height: 0; padding: 0; margin: 0; }
}
.dc-anim-fade-out {
    animation: dc-fade-out 0.4s var(--dc-ease-standard) forwards;
    overflow: hidden;
}

/* ── Charm order cards ───────────────────────────────────────────────── */
.dc-charm-order-card {
    background: var(--dc-surface);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-3);
    margin-bottom: var(--dc-space-3);
    display: flex;
    align-items: center;
    gap: var(--dc-space-3);
}
.dc-charm-order-thumb {
    width: 64px;
    height: 64px;
    border-radius: var(--dc-radius);
    object-fit: cover;
    background: var(--dc-surface-2);
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--dc-text-muted);
    font-size: 1.5rem;
}
.dc-charm-order-info { flex: 1; min-width: 0; }
.dc-charm-order-title {
    font-weight: var(--dc-weight-semibold);
    color: var(--dc-text-primary);
    margin-bottom: 2px;
}
.dc-charm-order-meta {
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
}

/* ── Order timeline (Detail page) ────────────────────────────────────── */
.dc-timeline { position: relative; padding-left: 28px; }
.dc-timeline::before {
    content: "";
    position: absolute;
    left: 10px;
    top: 8px;
    bottom: 8px;
    width: 2px;
    background: var(--dc-border);
    border-radius: 1px;
}
.dc-timeline-item {
    position: relative;
    padding-bottom: var(--dc-space-3);
    font-size: var(--dc-text-sm);
}
.dc-timeline-item:last-child { padding-bottom: 0; }
.dc-timeline-dot {
    position: absolute;
    left: -24px;
    top: 4px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--dc-border);
    border: 2px solid var(--dc-surface);
    z-index: 1;
}
.dc-timeline-item--done .dc-timeline-dot { background: var(--dc-success); }
.dc-timeline-item--active .dc-timeline-dot { background: var(--dc-primary); }
.dc-timeline-item--future .dc-timeline-dot { background: var(--dc-surface-3); }
.dc-timeline-title {
    font-weight: var(--dc-weight-medium);
    color: var(--dc-text-primary);
    line-height: 1.2;
}
.dc-timeline-sub {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    margin-top: 2px;
}
.dc-timeline-item--future .dc-timeline-title { color: var(--dc-text-muted); }

/* ── Tarot Wheel ─────────────────────────────────────────────────────── */
.dc-tarot-wheel-wrap {
    position: relative;
    width: 160px;
    height: 230px;
    margin: 28px auto;
}

.dc-tarot-pointer {
    position: absolute;
    top: -26px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 1.5rem;
    color: var(--dc-primary);
    z-index: 200;
    filter: drop-shadow(0 0 4px var(--dc-primary));
}

.dc-tarot-ring {
    width: 100%;
    height: 100%;
    position: relative;
    transform-origin: center;
    will-change: transform;
}

/* Stacked deck: every card occupies the same spot, offset slightly to
   simulate the physical thickness of a 78-card pile (Solitaire stock). */
.dc-tarot-card {
    position: absolute;
    width: 140px;
    height: 210px;
    top: calc(50% - 105px + var(--card-stack, 0) * -0.18px);
    left: calc(50% - 70px + var(--card-stack, 0) * 0.18px);
    perspective: 800px;
    cursor: pointer;
    transition: transform 0.45s var(--dc-ease-standard),
                opacity   0.45s var(--dc-ease-standard),
                top       0.3s  var(--dc-ease-standard),
                left      0.3s  var(--dc-ease-standard),
                filter    0.2s  var(--dc-ease-standard);
}
.dc-tarot-card:hover { filter: brightness(1.08); }

/* When a card is "drawn" it slides off the deck toward the spread below. */
.dc-tarot-card--drawn {
    transform: translate3d(0, 130px, 0) scale(0.55) rotate(-6deg);
    opacity: 0;
    pointer-events: none;
}

/* Shuffle: cards riffle outward and back, hinting at all 78 in the pile. */
.dc-tarot-ring--shuffling .dc-tarot-card:not(.dc-tarot-card--drawn) {
    animation: dc-deck-shuffle 1.4s var(--dc-ease-standard);
}
@keyframes dc-deck-shuffle {
    0%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); }
    25% {
        transform: translate3d(
            calc((var(--card-stack, 0) - 39) * 1.6px),
            -12px,
            0
        ) rotate(calc((var(--card-stack, 0) - 39) * 0.18deg));
    }
    60% {
        transform: translate3d(
            calc((var(--card-stack, 0) - 39) * -1.6px),
            -6px,
            0
        ) rotate(calc((var(--card-stack, 0) - 39) * -0.18deg));
    }
}

.dc-card-inner {
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    transition: transform 0.6s var(--dc-ease-standard);
}
.dc-tarot-card--flipped .dc-card-inner { transform: rotateY(180deg); }

.dc-card-back,
.dc-card-front {
    position: absolute;
    inset: 0;
    border-radius: var(--dc-radius-sm);
    backface-visibility: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-size: var(--dc-text-xs);
    text-align: center;
    padding: 4px;
}

.dc-card-back {
    background: var(--dc-primary);
    border: 1px solid rgba(255,255,255,0.2);
}
.dc-card-back-pattern {
    width: 110px;
    height: 180px;
    background: repeating-linear-gradient(
        45deg,
        transparent,
        transparent 5px,
        rgba(255,255,255,0.10) 5px,
        rgba(255,255,255,0.10) 10px
    );
    border: 1px solid rgba(255,255,255,0.18);
    border-radius: 4px;
}

.dc-card-front {
    transform: rotateY(180deg);
    background: var(--dc-surface);
    border: 1px solid var(--dc-border);
    color: var(--dc-text-primary);
}
.dc-card-front-name {
    font-family: var(--dc-font-display);
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.2;
    display: block;
}
.dc-card-front-arcana {
    font-size: 0.75rem;
    color: var(--dc-text-muted);
    display: block;
    margin-top: 4px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.dc-card-reversed-tag {
    font-size: 0.7rem;
    color: var(--dc-accent);
    display: block;
    margin-top: 4px;
}
.dc-card--reversed { transform: rotateY(180deg) rotate(180deg); }

/* ── Spread layout ──────────────────────────────────────────────────── */
.dc-tarot-spread {
    display: flex;
    flex-wrap: wrap;
    gap: var(--dc-space-2);
    justify-content: center;
    min-height: 160px;
}
.dc-tarot-spread[data-spread="1"]  { max-width: 180px; margin: 0 auto; }
.dc-tarot-spread[data-spread="3"]  { max-width: 560px; margin: 0 auto; }
.dc-tarot-spread[data-spread="10"] { max-width: 640px; margin: 0 auto; }

.dc-spread-cell {
    flex: 0 0 160px;
    min-height: 140px;
    border: 1px dashed var(--dc-border);
    border-radius: var(--dc-radius);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color 0.2s;
}
.dc-spread-cell--filled { border-style: solid; border-color: var(--dc-primary); }
.dc-spread-cell-placeholder { text-align: center; color: var(--dc-text-muted); }
.dc-spread-cell-label {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-secondary);
}

.dc-spread-card { padding: var(--dc-space-2); text-align: center; width: 100%; }
.dc-spread-card-name {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-md);
    font-weight: 600;
    color: var(--dc-text-primary);
    line-height: 1.2;
}
.dc-spread-card-arcana {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-top: 2px;
}
.dc-spread-upright  { color: var(--dc-success); font-size: var(--dc-text-sm); margin-top: 4px; }
.dc-spread-reversed { color: var(--dc-accent);  font-size: var(--dc-text-sm); margin-top: 4px; }
.dc-spread-keywords { font-size: var(--dc-text-xs); color: var(--dc-text-secondary); margin-top: 4px; }
.dc-spread-position-label {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-xs);
    color: var(--dc-primary);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-top: var(--dc-space-1);
    border-top: 1px solid var(--dc-border);
    padding-top: var(--dc-space-1);
}

.dc-tarot-hint { text-align: center; min-height: 1.2em; }
.dc-tarot-spread-selector { display: flex; align-items: center; flex-wrap: wrap; gap: var(--dc-space-2); }

@media (max-width: 576px) {
    .dc-tarot-wheel-wrap { width: 130px; height: 190px; }
    .dc-tarot-card {
        width: 116px;
        height: 174px;
        top: calc(50% - 87px + var(--card-stack, 0) * -0.16px);
        left: calc(50% - 58px + var(--card-stack, 0) * 0.16px);
    }
    .dc-card-back-pattern { width: 90px; height: 148px; }
    .dc-card-front-name { font-size: 0.85rem; }
    .dc-card-front-arcana { font-size: 0.65rem; }
    .dc-spread-cell { flex: 0 0 calc(50% - 8px); min-height: 120px; }
    .dc-stepper { flex-wrap: wrap; gap: var(--dc-space-2); }
    .dc-step-line { display: none; }
    .dc-session-card { flex-direction: column; align-items: flex-start; }
    .dc-session-actions { width: 100%; justify-content: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
    .dc-card-inner { transition: none; }
    .dc-session-card { transition: none; }
    .dc-tarot-card { transition: opacity 0.2s linear; }
    .dc-tarot-ring--shuffling .dc-tarot-card { animation: none; }
}

/* ════════════════════════════════════════════════════════════════════════
   Phase 6 — Diviner Dashboard
   ════════════════════════════════════════════════════════════════════════ */

/* ── Diviner sidebar ─────────────────────────────────────────────────── */
.dc-sidebar {
    background: var(--dc-surface);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-2);
    position: sticky;
    top: 80px;
}
.dc-sidebar-heading {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-xs);
    font-weight: var(--dc-weight-bold);
    color: var(--dc-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    padding: var(--dc-space-1) var(--dc-space-2);
    margin-bottom: var(--dc-space-1);
}
.dc-sidebar-nav { display: flex; flex-direction: column; gap: 2px; list-style: none; padding-left: 0; margin: 0; }
.dc-sidebar-link {
    display: flex;
    align-items: center;
    gap: var(--dc-space-2);
    padding: 0.55rem var(--dc-space-2);
    border-radius: var(--dc-radius);
    color: var(--dc-text-body);
    font-size: var(--dc-text-sm);
    font-weight: var(--dc-weight-medium);
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
    border-left: 3px solid transparent;
}
.dc-sidebar-link:hover {
    background: var(--dc-surface-2);
    color: var(--dc-primary);
}
.dc-sidebar-link.active {
    background: var(--dc-primary-bg);
    color: var(--dc-primary);
    border-left-color: var(--dc-primary);
}
.dc-sidebar-link i { font-size: 1rem; flex-shrink: 0; }
.dc-sidebar-badge {
    margin-left: auto;
    background: var(--dc-warning-bg);
    color: var(--dc-accent);
    font-size: var(--dc-text-xs);
    font-weight: var(--dc-weight-bold);
    padding: 1px 7px;
    border-radius: var(--dc-radius-pill);
}

/* ── Availability scheduler ──────────────────────────────────────────── */
.dc-avail-day {
    background: var(--dc-surface);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius);
    overflow: hidden;
}
.dc-avail-day-header {
    background: var(--dc-surface-2);
    padding: 0.4rem 0.75rem;
    font-size: var(--dc-text-xs);
    font-weight: var(--dc-weight-bold);
    color: var(--dc-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    border-bottom: 1px solid var(--dc-border);
}
.dc-avail-slot-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.4rem 0.75rem;
    border-bottom: 1px solid var(--dc-border);
    font-size: var(--dc-text-sm);
}
.dc-avail-slot-row:last-child { border-bottom: none; }
.dc-avail-slot-time { color: var(--dc-text-body); }
.dc-avail-slot-tz   { color: var(--dc-text-muted); font-size: var(--dc-text-xs); }

/* ── Package / charm list items ──────────────────────────────────────── */
.dc-list-item {
    background: var(--dc-surface);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius);
    padding: var(--dc-space-3);
    margin-bottom: var(--dc-space-2);
    display: flex;
    align-items: center;
    gap: var(--dc-space-3);
}
.dc-list-item-info { flex: 1; min-width: 0; }
.dc-list-item-title {
    font-weight: var(--dc-weight-semibold);
    color: var(--dc-text-primary);
    margin-bottom: 2px;
}
.dc-list-item-meta {
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
    display: flex;
    flex-wrap: wrap;
    gap: var(--dc-space-2);
    align-items: center;
}
.dc-list-item-actions {
    display: flex;
    gap: var(--dc-space-1);
    flex-shrink: 0;
}

/* ── Inbox request card ──────────────────────────────────────────────── */
.dc-inbox-card {
    background: var(--dc-primary-bg);
    border: 1.5px solid rgba(92,53,165,0.2);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-3);
    margin-bottom: var(--dc-space-3);
    display: flex;
    align-items: center;
    gap: var(--dc-space-3);
}
.dc-inbox-card-info { flex: 1; min-width: 0; }
.dc-inbox-card-name {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-md);
    font-weight: 600;
    color: var(--dc-text-primary);
}
.dc-inbox-card-meta { font-size: var(--dc-text-sm); color: var(--dc-text-muted); }
.dc-inbox-card-actions { display: flex; gap: var(--dc-space-2); flex-shrink: 0; }

/* ── Dash page header with action slot ───────────────────────────────── */
.dc-dash-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--dc-space-4);
    flex-wrap: wrap;
    gap: var(--dc-space-2);
}
.dc-dash-header-title {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-xl);
    font-weight: 700;
    color: var(--dc-text-primary);
}

@media (max-width: 991.98px) {
    .dc-sidebar { position: static; margin-bottom: var(--dc-space-3); }
    .dc-sidebar-nav { flex-direction: row; flex-wrap: wrap; }
    .dc-sidebar-link { border-left: none; border-bottom: 3px solid transparent; }
    .dc-sidebar-link.active { border-left-color: transparent; border-bottom-color: var(--dc-primary); }
}

/* ════════════════════════════════════════════════════════════════════════
   Phase 7 — Chat Room
   ════════════════════════════════════════════════════════════════════════ */

/* Strip container padding when chat page is active */
body.dc-chat-page > .container { padding-top: 0; padding-bottom: 0; }
body.dc-chat-page > .container > main { padding-bottom: 0; }

.dc-chat-shell {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 72px);
    background: var(--dc-surface);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    overflow: hidden;
    position: relative;
    box-shadow: var(--dc-shadow-2);
}

/* ── Header ─────────────────────────────────────────────────── */
.dc-chat-header {
    display: flex;
    align-items: center;
    gap: var(--dc-space-2);
    padding: var(--dc-space-2) var(--dc-space-3);
    background: var(--dc-surface);
    border-bottom: 1px solid var(--dc-border);
    flex-shrink: 0;
}
.dc-chat-header-name {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-md);
    font-weight: 600;
    color: var(--dc-text-primary);
    line-height: 1.2;
}
.dc-chat-header-status {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    display: flex;
    align-items: center;
    gap: 4px;
}
.dc-online-dot {
    width: 8px;
    height: 8px;
    background: var(--dc-success);
    border-radius: 50%;
    display: inline-block;
    box-shadow: 0 0 0 2px var(--dc-success-bg);
}
.dc-chat-timer {
    font-family: var(--dc-font-mono);
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
    background: var(--dc-surface-2);
    padding: 2px 10px;
    border-radius: var(--dc-radius-pill);
    letter-spacing: 0.05em;
}

/* ── Messages area ──────────────────────────────────────────── */
.dc-chat-messages {
    flex: 1;
    overflow-y: auto;
    padding: var(--dc-space-3) var(--dc-space-3);
    display: flex;
    flex-direction: column;
    gap: 6px;
    scroll-behavior: smooth;
}
.dc-chat-messages::-webkit-scrollbar { width: 4px; }
.dc-chat-messages::-webkit-scrollbar-thumb { background: var(--dc-border); border-radius: 4px; }

.dc-chat-row { display: flex; }
.dc-chat-row--mine   { justify-content: flex-end; }
.dc-chat-row--theirs { justify-content: flex-start; }

.dc-chat-bubble {
    max-width: 68%;
    padding: 0.55rem 0.9rem;
    font-size: var(--dc-text-sm);
    line-height: 1.55;
    position: relative;
    word-break: break-word;
}
.dc-chat-bubble--mine {
    background: var(--dc-primary);
    color: #fff;
    border-radius: 18px 18px 4px 18px;
}
.dc-chat-bubble--theirs {
    background: var(--dc-surface-2);
    color: var(--dc-text-body);
    border-radius: 18px 18px 18px 4px;
}
.dc-chat-bubble-sender {
    font-size: var(--dc-text-xs);
    font-weight: 700;
    color: var(--dc-primary-light);
    margin-bottom: 3px;
}
.dc-chat-bubble--mine .dc-chat-bubble-sender { color: rgba(255,255,255,0.8); }

.dc-chat-bubble-time {
    font-size: var(--dc-text-xs);
    margin-top: 3px;
    opacity: 0;
    transition: opacity 0.15s;
}
.dc-chat-bubble--mine   .dc-chat-bubble-time { color: rgba(255,255,255,0.6); }
.dc-chat-bubble--theirs .dc-chat-bubble-time { color: var(--dc-text-muted); }
.dc-chat-bubble:hover .dc-chat-bubble-time { opacity: 1; }

.dc-chat-attachment { margin-top: 4px; font-size: var(--dc-text-xs); }
.dc-chat-bubble--mine .dc-chat-attachment a { color: rgba(255,255,255,0.85); }

/* ── Typing indicator ───────────────────────────────────────── */
.dc-chat-typing-row { display: flex; padding: 2px 0; }
.dc-chat-typing {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 10px 14px;
    background: var(--dc-surface-2);
    border-radius: 18px 18px 18px 4px;
}
.dc-typing-dot {
    width: 7px;
    height: 7px;
    background: var(--dc-text-muted);
    border-radius: 50%;
    animation: dc-typing 1.2s infinite ease-in-out;
    flex-shrink: 0;
}
.dc-typing-dot:nth-child(2) { animation-delay: 0.2s; }
.dc-typing-dot:nth-child(3) { animation-delay: 0.4s; }
@keyframes dc-typing {
    0%, 60%, 100% { transform: scale(1);   opacity: 0.45; }
    30%            { transform: scale(1.4); opacity: 1;    }
}

/* ── Input bar ──────────────────────────────────────────────── */
.dc-chat-input-bar {
    display: flex;
    align-items: flex-end;
    gap: var(--dc-space-1);
    padding: var(--dc-space-2) var(--dc-space-3);
    background: var(--dc-surface);
    border-top: 1px solid var(--dc-border);
    flex-shrink: 0;
}
.dc-chat-attach-btn {
    background: none;
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius);
    padding: 0.45rem 0.6rem;
    color: var(--dc-text-muted);
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
    flex-shrink: 0;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
    height: 40px;
    display: flex;
    align-items: center;
}
.dc-chat-attach-btn:hover { background: var(--dc-primary-bg); border-color: var(--dc-primary); color: var(--dc-primary); }
.dc-chat-textarea {
    flex: 1;
    resize: none;
    min-height: 40px;
    max-height: 120px;
    overflow-y: auto;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius);
    font-family: var(--dc-font-body);
    font-size: var(--dc-text-sm);
    background: var(--dc-surface-2);
    color: var(--dc-text-body);
    line-height: 1.5;
    transition: border-color 0.15s;
}
.dc-chat-textarea:focus { outline: none; border-color: var(--dc-primary); background: var(--dc-surface); }
.dc-chat-send-btn { flex-shrink: 0; height: 40px; padding: 0 var(--dc-space-2); }

/* ── Session ended overlay ──────────────────────────────────── */
.dc-chat-ended-overlay {
    position: absolute;
    inset: 0;
    background: color-mix(in srgb, var(--dc-canvas) 90%, transparent);
    backdrop-filter: blur(6px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--dc-space-3);
    z-index: 20;
    padding: var(--dc-space-4);
}
.dc-chat-ended-title {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-xl);
    color: var(--dc-text-primary);
    text-align: center;
}
.dc-chat-ended-stats {
    display: flex;
    gap: var(--dc-space-4);
    flex-wrap: wrap;
    justify-content: center;
}
.dc-chat-ended-stat { text-align: center; }
.dc-chat-ended-stat-value {
    font-family: var(--dc-font-display);
    font-size: 2rem;
    font-weight: 700;
    color: var(--dc-accent);
    display: block;
}
.dc-chat-ended-stat-label {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

/* ════════════════════════════════════════════════════════════════════════
   Phase 8 — Charms Marketplace
   ════════════════════════════════════════════════════════════════════════ */

/* Hero strip */
.dc-charm-hero {
    background: var(--dc-primary-bg);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-4) var(--dc-space-4);
    margin-bottom: var(--dc-space-4);
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--dc-space-2);
}
.dc-charm-hero-title {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-xl);
    font-weight: 700;
    color: var(--dc-primary-dark);
    margin: 0;
}
.dc-charm-hero-sub {
    color: var(--dc-text-secondary);
    font-size: var(--dc-text-sm);
    margin-top: 4px;
}

/* Product card */
.dc-charm-card {
    background: var(--dc-surface);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    overflow: hidden;
    transition: box-shadow 0.2s var(--dc-ease-standard), transform 0.2s var(--dc-ease-standard);
    display: flex;
    flex-direction: column;
    height: 100%;
}
.dc-charm-card:hover {
    box-shadow: var(--dc-shadow-3);
    transform: translateY(-2px);
}
.dc-charm-card-img-wrap {
    position: relative;
    width: 100%;
    padding-top: 75%; /* 4:3 aspect */
    background: var(--dc-surface-2);
    overflow: hidden;
    flex-shrink: 0;
}
.dc-charm-card-img-wrap img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.35s var(--dc-ease-decel);
}
.dc-charm-card:hover .dc-charm-card-img-wrap img { transform: scale(1.04); }
.dc-charm-card-img-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 3rem;
    color: var(--dc-text-muted);
}
.dc-charm-card-body {
    padding: var(--dc-space-2) var(--dc-space-2) var(--dc-space-2);
    display: flex;
    flex-direction: column;
    flex: 1;
}
.dc-charm-card-name {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-md);
    font-weight: 600;
    color: var(--dc-text-primary);
    line-height: 1.3;
    margin-bottom: 4px;
}
.dc-charm-card-diviner {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    margin-bottom: var(--dc-space-1);
}
.dc-charm-card-diviner a { color: var(--dc-text-muted); text-decoration: none; }
.dc-charm-card-diviner a:hover { color: var(--dc-primary); }
.dc-charm-card-price {
    font-size: var(--dc-text-md);
    font-weight: 700;
    color: var(--dc-accent);
    margin-top: auto;
    padding-top: var(--dc-space-1);
}

/* Charm description — Cormorant Garamond editorial style */
.dc-charm-description {
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: 1.1rem;
    line-height: 1.8;
    color: var(--dc-text-body);
}

/* Diviner mini-card in Detail */
.dc-diviner-mini {
    display: flex;
    align-items: center;
    gap: var(--dc-space-2);
    background: var(--dc-surface-2);
    border: 1px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-2);
    text-decoration: none;
    color: inherit;
    transition: background 0.15s, border-color 0.15s;
}
.dc-diviner-mini:hover { background: var(--dc-primary-bg); border-color: var(--dc-primary); }
.dc-diviner-mini-name {
    font-weight: 600;
    font-size: var(--dc-text-sm);
    color: var(--dc-text-primary);
}
.dc-diviner-mini-label {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
}

/* Charm detail image */
.dc-charm-detail-img {
    width: 100%;
    border-radius: var(--dc-radius-lg);
    object-fit: cover;
    max-height: 420px;
    box-shadow: var(--dc-shadow-2);
}
.dc-charm-detail-img-placeholder {
    width: 100%;
    border-radius: var(--dc-radius-lg);
    background: var(--dc-surface-2);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 5rem;
    color: var(--dc-text-muted);
    min-height: 300px;
}

/* ═══════════════════════════════════════════════════════════════════════════ */
/* Phase 9 — Financial Features (Wallet · TopUp · Cashout)                   */
/* ═══════════════════════════════════════════════════════════════════════════ */

/* Wallet balance cards */
.dc-wallet-balance-card { text-align: center; padding: var(--dc-space-4); }
.dc-wallet-balance-icon { font-size: 1.5rem; margin-bottom: var(--dc-space-1); }
.dc-wallet-balance-num {
    font-family: var(--dc-font-display);
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.1;
    color: var(--dc-accent);
}
.dc-wallet-balance-label {
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
    margin-top: var(--dc-space-1);
}

/* Transaction items */
.dc-tx-item {
    display: flex;
    align-items: center;
    gap: var(--dc-space-3);
    padding: var(--dc-space-3) var(--dc-space-4);
    border-bottom: 1px solid var(--dc-border);
}
.dc-tx-item:last-child { border-bottom: none; }
.dc-tx-icon {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    flex-shrink: 0;
}
.dc-tx-icon--in      { background: rgba(34,197,94,0.12); color: var(--dc-success); }
.dc-tx-icon--out     { background: rgba(239,68,68,0.12);  color: var(--dc-danger); }
.dc-tx-icon--neutral { background: var(--dc-surface-2);   color: var(--dc-text-muted); }
.dc-tx-body { flex: 1; min-width: 0; }
.dc-tx-type {
    font-weight: 600;
    font-size: var(--dc-text-sm);
    color: var(--dc-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dc-tx-note {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dc-tx-right  { text-align: right; flex-shrink: 0; }
.dc-tx-amount { font-family: var(--dc-font-display); font-size: var(--dc-text-md); font-weight: 700; }
.dc-tx-amount--in  { color: var(--dc-success); }
.dc-tx-amount--out { color: var(--dc-danger); }
.dc-tx-date { font-size: var(--dc-text-xs); color: var(--dc-text-muted); }

/* TopUp package cards */
.dc-pkg-card {
    background: var(--dc-surface);
    border: 2px solid var(--dc-border);
    border-radius: var(--dc-radius-lg);
    padding: var(--dc-space-5);
    padding-top: var(--dc-space-2);
    padding-left: var(--dc-space-2);
    padding-right: var(--dc-space-2);
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: border-color 0.2s, box-shadow 0.2s;
    height: 100%;
    display: flex;
    flex-direction: column;
}
.dc-pkg-card:hover {
    border-color: var(--dc-primary);
    box-shadow: var(--dc-shadow-2);
}
.dc-pkg-card--popular {
    border-color: var(--dc-primary);
    box-shadow: var(--dc-shadow-2);
}
.dc-pkg-card--popular::before {
    content: 'Most Popular';
    position: absolute;
    top: 18px;
    right: -28px;
    background: var(--dc-primary);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    padding: 4px 34px;
    transform: rotate(40deg);
}
.dc-pkg-name {
    font-family: var(--dc-font-display);
    font-size: var(--dc-text-lg);
    font-weight: 600;
    color: var(--dc-text-primary);
    margin-bottom: var(--dc-space-3);
}
.dc-pkg-diamonds {
    font-family: var(--dc-font-display);
    font-size: 2.6rem;
    font-weight: 700;
    color: var(--dc-accent);
    line-height: 1;
    margin-bottom: var(--dc-space-1);
}
.dc-pkg-diamonds-label {
    font-size: var(--dc-text-sm);
    color: var(--dc-text-muted);
    margin-bottom: var(--dc-space-3);
}
.dc-pkg-bonus-tag {
    display: inline-block;
    background: rgba(234,179,8,0.15);
    color: #854d0e;
    font-size: var(--dc-text-xs);
    font-weight: 700;
    border-radius: var(--dc-radius-full);
    padding: 2px 10px;
    margin-bottom: var(--dc-space-3);
}
.dc-pkg-price {
    font-size: var(--dc-text-xl);
    font-weight: 700;
    color: var(--dc-text-primary);
    margin-top: auto;
    padding-top: var(--dc-space-3);
}
.dc-pkg-price-sub {
    font-size: var(--dc-text-xs);
    color: var(--dc-text-muted);
    margin-bottom: var(--dc-space-3);
}

/* Cashout status badges */
.dc-cashout-badge--pending  { background: rgba(234,179,8,0.15);  color: #854d0e;           border-radius: var(--dc-radius-full); padding: 2px 10px; font-size: var(--dc-text-xs); font-weight: 600; white-space: nowrap; }
.dc-cashout-badge--approved { background: rgba(34,197,94,0.15);  color: var(--dc-success);  border-radius: var(--dc-radius-full); padding: 2px 10px; font-size: var(--dc-text-xs); font-weight: 600; white-space: nowrap; }
.dc-cashout-badge--rejected { background: rgba(239,68,68,0.15);  color: var(--dc-danger);   border-radius: var(--dc-radius-full); padding: 2px 10px; font-size: var(--dc-text-xs); font-weight: 600; white-space: nowrap; }
.dc-cashout-badge--paid     { background: rgba(99,102,241,0.15); color: var(--dc-primary);  border-radius: var(--dc-radius-full); padding: 2px 10px; font-size: var(--dc-text-xs); font-weight: 600; white-space: nowrap; }

/* Cashout history item */
.dc-cashout-history-item {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--dc-space-3);
    padding: var(--dc-space-3) var(--dc-space-4);
    border-bottom: 1px solid var(--dc-border);
}
.dc-cashout-history-item:last-child { border-bottom: none; }

/* Charm photo management (dashboard edit page) */
.dc-charm-photo-thumb {
    border-radius: var(--dc-radius-md);
    overflow: hidden;
    border: 2px solid var(--dc-border);
}
.dc-charm-photo-delete {
    position: absolute;
    top: 6px;
    right: 6px;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    border: none;
    background: rgba(0,0,0,0.55);
    color: #fff;
    font-size: .75rem;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: background .15s;
}
.dc-charm-photo-delete:hover { background: var(--dc-danger); }

/* Charm gallery thumbnails (storefront detail) */
.dc-charm-thumb {
    width: 64px;
    height: 64px;
    object-fit: cover;
    border-radius: var(--dc-radius-sm);
    border: 2px solid var(--dc-border);
    cursor: pointer;
    transition: border-color .15s;
}
.dc-charm-thumb:hover,
.dc-charm-thumb--active { border-color: var(--dc-primary); }
