/* ============================================================================
   EMS PREMIUM DESIGN SYSTEM  v1
   Executive management cockpit — glassmorphism, depth, subtle 3D, motion.
   Loaded via PanelsRenderHook::STYLES_AFTER (after Filament's own styles).
   Plain CSS — no build step. Pairs with /js/ems-premium.js.
   ============================================================================ */

/* ----------------------------------------------------------------------------
   1. DESIGN TOKENS
   ---------------------------------------------------------------------------- */
:root {
    /* Brand — Elhumaira (coffee #663930 · peach #FFBE98 · cream #FFEEEB) */
    --ems-brand:        #663930;          /* coffee */
    --ems-brand-2:      #ffbe98;          /* peach */
    --ems-brand-soft:   rgba(255, 190, 152, .22);

    /* Secondary accent — warm terracotta / coffee */
    --ems-exec:         #a9694a;          /* terracotta-coffee */
    --ems-exec-2:       #663930;          /* coffee */

    /* Semantic */
    --ems-success:      #059669;
    --ems-success-2:    #10b981;
    --ems-warning:      #d97706;
    --ems-warning-2:    #f59e0b;
    --ems-danger:       #dc2626;
    --ems-danger-2:     #f43f5e;
    --ems-info:         #0284c7;
    --ems-info-2:       #06b6d4;

    /* Neutrals / text — coffee-tinted */
    --ems-ink:          #3a201a;
    --ems-ink-soft:     #663930;
    --ems-muted:        #9c7e72;
    --ems-faint:        #c2a99e;
    --ems-line:         rgba(102, 57, 48, .12);
    --ems-line-soft:    rgba(102, 57, 48, .07);

    /* Surfaces — Elhumaira cream base, white cards */
    --ems-bg:           #ffeeeb;
    --ems-bg-2:         #ffe4dd;
    --ems-surface:      #ffffff;
    --ems-surface-2:    #fff6f3;

    /* Glass */
    --ems-glass-bg:     rgba(255, 255, 255, .66);
    --ems-glass-brd:    rgba(255, 255, 255, .82);
    --ems-glass-blur:   16px;

    /* Radii */
    --ems-r-sm: 10px;
    --ems-r:    16px;
    --ems-r-lg: 22px;
    --ems-r-xl: 28px;

    /* Layered shadows — soft coffee depth */
    --ems-shadow-sm: 0 1px 2px rgba(102,57,48,.05), 0 1px 3px rgba(102,57,48,.07);
    --ems-shadow:    0 2px 4px rgba(102,57,48,.05), 0 8px 20px rgba(102,57,48,.09);
    --ems-shadow-lg: 0 8px 24px rgba(102,57,48,.11), 0 24px 48px rgba(102,57,48,.12);
    --ems-shadow-glow: 0 10px 40px -8px var(--ems-brand-soft);

    /* Motion */
    --ems-ease: cubic-bezier(.22, 1, .36, 1);
    --ems-dur:  .45s;
}

/* Dark mode (Filament toggles .dark on <html>) — warm coffee espresso */
.dark {
    --ems-ink:          #ffeeeb;
    --ems-ink-soft:     #f0d5cb;
    --ems-muted:        #c2a394;
    --ems-faint:        #8a6f62;
    --ems-line:         rgba(255, 238, 235, .10);
    --ems-line-soft:    rgba(255, 238, 235, .06);

    /* Warm coffee espresso dark surfaces */
    --ems-bg:           #1a100c;
    --ems-bg-2:         #221610;
    --ems-surface:      #2a1a14;
    --ems-surface-2:    #34211a;

    --ems-glass-bg:     rgba(42, 26, 20, .58);
    --ems-glass-brd:    rgba(255, 190, 152, .18);

    --ems-brand-soft:   rgba(255, 190, 152, .18);
    --ems-shadow-sm: 0 1px 2px rgba(0,0,0,.3);
    --ems-shadow:    0 2px 6px rgba(0,0,0,.4), 0 10px 28px rgba(0,0,0,.45);
    --ems-shadow-lg: 0 12px 32px rgba(0,0,0,.5), 0 30px 60px rgba(0,0,0,.55);
}

/* ----------------------------------------------------------------------------
   2. COCKPIT CANVAS — Elhumaira cream analytics stage (light, brand-unified)
   ---------------------------------------------------------------------------- */
.ems-cockpit {
    position: relative;
    isolation: isolate;
    color: var(--ems-ink);
    padding: 1.4rem;
    border-radius: var(--ems-r-lg);
    border: 1px solid rgba(102, 57, 48, .10);
    box-shadow: var(--ems-shadow-lg);
    background:
        radial-gradient(46rem 30rem at 6% -8%,   rgba(255, 190, 152, .42), transparent 56%),  /* peach glow */
        radial-gradient(40rem 30rem at 104% 4%,  rgba(255, 190, 152, .28), transparent 55%),
        radial-gradient(52rem 42rem at 72% 118%, rgba(102, 57, 48, .07),  transparent 60%),    /* coffee */
        linear-gradient(160deg, #fff7f3 0%, #ffeeeb 52%, #ffe5df 100%);                          /* cream fade */
}
.dark .ems-cockpit {
    border-color: rgba(255, 190, 152, .14);
    background:
        radial-gradient(46rem 30rem at 6% -8%,   rgba(255, 190, 152, .14), transparent 56%),
        radial-gradient(52rem 42rem at 72% 118%, rgba(102, 57, 48, .30),  transparent 60%),
        linear-gradient(158deg, #2c1a14 0%, #20120d 55%, #160c08 100%);
}

/* ----------------------------------------------------------------------------
   3. TYPOGRAPHY SCALE
   ---------------------------------------------------------------------------- */
.ems-title       { font-size: 1.55rem; font-weight: 800; letter-spacing: -.02em; color: var(--ems-ink); line-height: 1.15; }
.ems-section-title { font-size: 1.02rem; font-weight: 700; letter-spacing: -.01em; color: var(--ems-ink); }
.ems-card-title  { font-size: .82rem; font-weight: 700; letter-spacing: .02em; color: var(--ems-ink-soft); }
.ems-kpi-number  { font-size: 2.1rem; font-weight: 800; letter-spacing: -.03em; color: var(--ems-ink); line-height: 1; font-variant-numeric: tabular-nums; }
.ems-label       { font-size: .68rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--ems-muted); }
.ems-helper      { font-size: .78rem; color: var(--ems-muted); }
.ems-muted       { color: var(--ems-faint); }
.ems-eyebrow     { font-size: .64rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--ems-brand); }

/* ----------------------------------------------------------------------------
   4. SURFACES — card / glass / chart housing
   ---------------------------------------------------------------------------- */
.ems-card {
    position: relative;
    background: var(--ems-surface);
    border: 1px solid var(--ems-line);
    border-radius: var(--ems-r);
    box-shadow: var(--ems-shadow-sm);
    transition: transform var(--ems-dur) var(--ems-ease), box-shadow var(--ems-dur) var(--ems-ease);
}

.ems-glass {
    position: relative;
    background: var(--ems-glass-bg);
    -webkit-backdrop-filter: blur(var(--ems-glass-blur)) saturate(160%);
    backdrop-filter: blur(var(--ems-glass-blur)) saturate(160%);
    border: 1px solid var(--ems-glass-brd);
    border-radius: var(--ems-r-lg);
    box-shadow: var(--ems-shadow);
}
/* Inner top highlight — glass sheen */
.ems-glass::after {
    content: "";
    position: absolute; inset: 0;
    border-radius: inherit;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(255,255,255,.35), rgba(255,255,255,0) 38%);
    opacity: .7;
}
.dark .ems-glass::after { background: linear-gradient(180deg, rgba(255,255,255,.06), transparent 40%); }

/* ----------------------------------------------------------------------------
   5. SUBTLE 3D — elevated chart canvas
   ---------------------------------------------------------------------------- */
.ems-3d { perspective: 1400px; }
.ems-chart-card {
    position: relative;
    background:
        linear-gradient(180deg, var(--ems-surface), var(--ems-surface-2));
    border: 1px solid var(--ems-line);
    border-radius: var(--ems-r-lg);
    box-shadow: var(--ems-shadow-lg);
    overflow: hidden;
}
.ems-chart-card::before { /* top accent line */
    content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
    background: linear-gradient(90deg, var(--ems-brand), var(--ems-exec) 60%, var(--ems-exec-2));
    opacity: .85;
}
/* Header — clears the 22px corner radius + 3px accent bar so the title
   isn't cramped against the top edge. Body keeps a clean gap from the header.
   Layout is declared here (not via Tailwind utilities) so spacing is reliable
   even without a Vite/Tailwind build step. */
.ems-chart-card__head {
    display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem;
    padding: 1.35rem 1.4rem .35rem;   /* top clears corner curve · roomy sides · tight to body */
}
.ems-chart-card__heading { min-width: 0; }
.ems-chart-card__head .ems-section-title { line-height: 1.25; }
.ems-chart-card__sub { margin-top: .3rem; line-height: 1.35; }
.ems-chart-card__body { padding: .85rem 1.1rem 1.25rem; }
.ems-chart-canvas {
    position: relative;
    border-radius: var(--ems-r);
    padding: .35rem;
    background:
        radial-gradient(120% 80% at 50% 0%, rgba(226,156,84,.09), transparent 60%);
    transform: rotateX(2.2deg);
    transform-origin: center bottom;
    transition: transform var(--ems-dur) var(--ems-ease);
}
.ems-chart-card:hover .ems-chart-canvas { transform: rotateX(0deg); }

/* ----------------------------------------------------------------------------
   6. KPI HERO CARD
   ---------------------------------------------------------------------------- */
.ems-kpi-hero {
    position: relative;
    padding: 1.15rem 1.25rem 1.2rem;
    border-radius: var(--ems-r-lg);
    background: var(--ems-glass-bg);
    -webkit-backdrop-filter: blur(var(--ems-glass-blur)) saturate(160%);
    backdrop-filter: blur(var(--ems-glass-blur)) saturate(160%);
    border: 1px solid var(--ems-glass-brd);
    box-shadow: var(--ems-shadow);
    overflow: hidden;
    transition: transform var(--ems-dur) var(--ems-ease), box-shadow var(--ems-dur) var(--ems-ease);
}
.ems-kpi-hero::before { /* accent glow blob */
    content: ""; position: absolute; right: -30%; top: -60%;
    width: 16rem; height: 16rem; border-radius: 50%;
    background: radial-gradient(circle, var(--ems-accent, var(--ems-brand-soft)), transparent 65%);
    opacity: .6; pointer-events: none;
}
.ems-kpi-hero:hover { transform: translateY(-4px); box-shadow: var(--ems-shadow-lg); }

.ems-kpi-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 2.6rem; height: 2.6rem; border-radius: 14px;
    color: #fff;
    background: linear-gradient(145deg, var(--ems-accent, var(--ems-brand)), var(--ems-accent2, var(--ems-brand-2)));
    box-shadow: 0 8px 18px -6px var(--ems-accent, var(--ems-brand-soft)), inset 0 1px 0 rgba(255,255,255,.35);
}
.ems-kpi-icon svg { width: 1.3rem; height: 1.3rem; }

/* trend chip */
.ems-trend {
    display: inline-flex; align-items: center; gap: .2rem;
    font-size: .72rem; font-weight: 700; padding: .15rem .5rem; border-radius: 999px;
    line-height: 1;
}
.ems-trend--up   { color: var(--ems-success); background: rgba(5,150,105,.12); }
.ems-trend--down { color: var(--ems-danger);  background: rgba(220,38,38,.12); }
.ems-trend--flat { color: var(--ems-muted);   background: rgba(100,116,139,.12); }

/* ----------------------------------------------------------------------------
   7. STAT TILE  /  DEPARTMENT CARD
   ---------------------------------------------------------------------------- */
.ems-stat {
    padding: .7rem .8rem; border-radius: var(--ems-r-sm);
    background: var(--ems-surface-2);
    border: 1px solid var(--ems-line-soft);
}
.ems-stat .v { font-size: 1.15rem; font-weight: 800; color: var(--ems-ink); line-height: 1; font-variant-numeric: tabular-nums; }
.ems-stat .l { font-size: .66rem; color: var(--ems-muted); margin-top: .4rem; letter-spacing: .02em; }

.ems-dept {
    position: relative; display: flex; flex-direction: column;
    border-radius: var(--ems-r); overflow: hidden;
    background: var(--ems-surface);
    border: 1px solid var(--ems-line);
    box-shadow: var(--ems-shadow-sm);
    transition: transform var(--ems-dur) var(--ems-ease), box-shadow var(--ems-dur) var(--ems-ease);
}
.ems-dept--active { cursor: pointer; }
.ems-dept--active:hover { transform: translateY(-5px); box-shadow: var(--ems-shadow-lg); }
.ems-dept--muted { opacity: .42; }
.ems-dept__accent { height: 4px; width: 100%;
    background: linear-gradient(90deg, var(--ems-dc, var(--ems-brand)), transparent); }
.ems-dept__glow {
    position: absolute; inset: 0; pointer-events: none; opacity: .5;
    background: radial-gradient(20rem 12rem at 100% 0%, color-mix(in srgb, var(--ems-dc, var(--ems-brand)) 16%, transparent), transparent 70%);
}

/* ----------------------------------------------------------------------------
   8. ALERT / SUGGESTION / DIRECTIVE / TASK CARDS
   ---------------------------------------------------------------------------- */
.ems-row-card {
    position: relative; display: flex; gap: .85rem; align-items: flex-start;
    padding: .85rem 1rem; border-radius: var(--ems-r);
    background: var(--ems-surface);
    border: 1px solid var(--ems-line);
    box-shadow: var(--ems-shadow-sm);
    transition: transform .25s var(--ems-ease), box-shadow .25s var(--ems-ease);
}
.ems-row-card:hover { transform: translateY(-2px); box-shadow: var(--ems-shadow); }
.ems-row-card__bar { position: absolute; left: 0; top: 0; bottom: 0; width: 4px; border-radius: var(--ems-r) 0 0 var(--ems-r); }

.ems-sev { width: 2.1rem; height: 2.1rem; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.ems-sev svg { width: 1.05rem; height: 1.05rem; }
.ems-sev--danger  { background: rgba(220,38,38,.12);  color: var(--ems-danger); }
.ems-sev--warning { background: rgba(217,119,6,.13);  color: var(--ems-warning); }
.ems-sev--info    { background: rgba(2,132,199,.12);  color: var(--ems-info); }
.ems-sev--success { background: rgba(5,150,105,.12);  color: var(--ems-success); }
.ems-sev--exec    { background: rgba(79,70,229,.12);  color: var(--ems-exec); }

.ems-bar--danger  { background: var(--ems-danger); }
.ems-bar--warning { background: var(--ems-warning); }
.ems-bar--info    { background: var(--ems-info); }
.ems-bar--success { background: var(--ems-success); }
.ems-bar--exec    { background: var(--ems-exec); }

/* progress block (directive) */
.ems-progress { height: 7px; border-radius: 999px; background: var(--ems-line); overflow: hidden; }
.ems-progress > span {
    display: block; height: 100%; border-radius: 999px;
    background: linear-gradient(90deg, var(--ems-exec), var(--ems-exec-2));
    transition: width 1s var(--ems-ease);
}

/* ----------------------------------------------------------------------------
   9. AI INSIGHT PANEL
   ---------------------------------------------------------------------------- */
.ems-ai {
    position: relative; border-radius: var(--ems-r-lg); overflow: hidden;
    padding: 1.1rem 1.2rem;
    background:
        linear-gradient(135deg, rgba(138,90,60,.16), rgba(241,184,120,.08) 55%, transparent),
        var(--ems-glass-bg);
    -webkit-backdrop-filter: blur(var(--ems-glass-blur));
    backdrop-filter: blur(var(--ems-glass-blur));
    border: 1px solid color-mix(in srgb, var(--ems-exec) 30%, var(--ems-glass-brd));
    box-shadow: var(--ems-shadow), 0 0 40px -16px rgba(138,90,60,.5);
}
.ems-ai__badge {
    display: inline-flex; align-items: center; gap: .35rem;
    font-size: .62rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;
    color: var(--ems-exec); padding: .25rem .55rem; border-radius: 999px;
    background: rgba(138,90,60,.14); border: 1px solid rgba(138,90,60,.28);
}
.ems-ai__dot { width: .5rem; height: .5rem; border-radius: 50%; background: var(--ems-brand-2);
    box-shadow: 0 0 0 0 rgba(226,156,84,.6); animation: emsPulse 2s infinite; }
.ems-ai__item { display: flex; gap: .6rem; align-items: flex-start; padding: .5rem 0; border-top: 1px dashed var(--ems-line); }
.ems-ai__item:first-of-type { border-top: 0; }
/* Per-insight action link — jumps to the page where the owner can act */
.ems-ai__act {
    display: inline-block; margin-left: .35rem; white-space: nowrap;
    font-size: .7rem; font-weight: 700; text-decoration: none;
    color: var(--ems-brand); background: var(--ems-brand-soft);
    padding: .12rem .5rem; border-radius: 999px; transition: .15s;
}
.ems-ai__act:hover { background: var(--ems-brand-2); color: #4a2a20; }

/* ----------------------------------------------------------------------------
   10. PILLS / BADGES / BUTTONS / TABS
   ---------------------------------------------------------------------------- */
.ems-pill {
    display: inline-flex; align-items: center; gap: .3rem;
    font-size: .68rem; font-weight: 700; padding: .22rem .6rem; border-radius: 999px;
    background: var(--ems-surface-2); color: var(--ems-ink-soft); border: 1px solid var(--ems-line);
}
.ems-pill--brand   { color: var(--ems-brand);   background: var(--ems-brand-soft); border-color: transparent; }
.ems-pill--danger  { color: var(--ems-danger);  background: rgba(220,38,38,.1);  border-color: transparent; }
.ems-pill--success { color: var(--ems-success); background: rgba(5,150,105,.1);  border-color: transparent; }
.ems-pill--warning { color: var(--ems-warning); background: rgba(217,119,6,.12); border-color: transparent; }
.ems-pill--exec    { color: var(--ems-exec);    background: rgba(79,70,229,.1);  border-color: transparent; }

.ems-btn {
    display: inline-flex; align-items: center; gap: .4rem; cursor: pointer;
    font-size: .76rem; font-weight: 700; padding: .5rem .9rem; border-radius: 11px;
    color: #fff; border: 0; text-decoration: none;
    background: linear-gradient(145deg, var(--ems-brand), var(--ems-brand-2));
    box-shadow: 0 8px 18px -8px var(--ems-brand-soft), inset 0 1px 0 rgba(255,255,255,.3);
    transition: transform .2s var(--ems-ease), box-shadow .2s var(--ems-ease), filter .2s;
}
.ems-btn:hover { transform: translateY(-2px); filter: brightness(1.04); box-shadow: var(--ems-shadow); }
.ems-btn--ghost { background: var(--ems-surface-2); color: var(--ems-ink-soft); border: 1px solid var(--ems-line); box-shadow: none; }

.ems-tabs { display: inline-flex; padding: .25rem; border-radius: 12px; background: var(--ems-bg-2); border: 1px solid var(--ems-line); gap: .15rem; }
.ems-tab { font-size: .74rem; font-weight: 700; padding: .35rem .8rem; border-radius: 9px; color: var(--ems-muted); cursor: pointer; transition: all .2s var(--ems-ease); }
.ems-tab--active { color: var(--ems-brand); background: var(--ems-surface); box-shadow: var(--ems-shadow-sm); }

/* ----------------------------------------------------------------------------
   11. MOTION
   ---------------------------------------------------------------------------- */
@keyframes emsReveal { from { opacity: 0; transform: translateY(14px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes emsPulse  { 0% { box-shadow: 0 0 0 0 rgba(226,156,84,.5); } 70% { box-shadow: 0 0 0 8px rgba(226,156,84,0); } 100% { box-shadow: 0 0 0 0 rgba(226,156,84,0); } }
@keyframes emsShimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
@keyframes emsFloat  { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }

/* reveal on scroll (JS adds .is-visible) */
.ems-reveal { opacity: 0; }
.ems-reveal.is-visible { animation: emsReveal var(--ems-dur) var(--ems-ease) forwards; }
.ems-reveal[data-ems-delay="1"].is-visible { animation-delay: .06s; }
.ems-reveal[data-ems-delay="2"].is-visible { animation-delay: .12s; }
.ems-reveal[data-ems-delay="3"].is-visible { animation-delay: .18s; }
.ems-reveal[data-ems-delay="4"].is-visible { animation-delay: .24s; }
.ems-reveal[data-ems-delay="5"].is-visible { animation-delay: .30s; }
.ems-reveal[data-ems-delay="6"].is-visible { animation-delay: .36s; }

.ems-lift { transition: transform var(--ems-dur) var(--ems-ease), box-shadow var(--ems-dur) var(--ems-ease); }
.ems-lift:hover { transform: translateY(-4px); box-shadow: var(--ems-shadow-lg); }
.ems-float { animation: emsFloat 6s ease-in-out infinite; }

/* loading shimmer skeleton */
.ems-skeleton {
    border-radius: var(--ems-r-sm);
    background: linear-gradient(90deg, var(--ems-line-soft) 25%, var(--ems-line) 37%, var(--ems-line-soft) 63%);
    background-size: 200% 100%;
    animation: emsShimmer 1.4s infinite linear;
}

/* alert dot */
.ems-ping { position: relative; display: inline-flex; width: .6rem; height: .6rem; }
.ems-ping span:first-child { position: absolute; inset: 0; border-radius: 50%; background: var(--ems-warning-2); opacity: .75; animation: emsPulse 1.8s infinite; }
.ems-ping span:last-child  { position: relative; width: .6rem; height: .6rem; border-radius: 50%; background: var(--ems-warning); }

@media (prefers-reduced-motion: reduce) {
    .ems-reveal, .ems-float, .ems-skeleton, .ems-ai__dot, .ems-ping span { animation: none !important; }
    .ems-reveal { opacity: 1 !important; }
    .ems-chart-canvas { transform: none !important; }
}

/* ----------------------------------------------------------------------------
   12. LAYOUT HELPERS
   ---------------------------------------------------------------------------- */
.ems-grid { display: grid; gap: 1rem; }
.ems-stack > * + * { margin-top: 1rem; }
.ems-divider { height: 1px; background: var(--ems-line); border: 0; margin: 0; }
.ems-num { font-variant-numeric: tabular-nums; }
.ems-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* ----------------------------------------------------------------------------
   13. ANALYTICS BLOCKS — gauge / leaderboard / compare
   ---------------------------------------------------------------------------- */
.ems-gauge {
    width: 9.5rem; height: 9.5rem; border-radius: 50%;
    background: conic-gradient(var(--g-color) var(--g-deg, 0deg), color-mix(in srgb, var(--g-color) 14%, transparent) 0);
    display: flex; align-items: center; justify-content: center;
    position: relative; box-shadow: inset 0 0 0 1px var(--ems-line);
}
.ems-gauge__hole {
    width: 7rem; height: 7rem; border-radius: 50%;
    background: var(--ems-surface);
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    box-shadow: var(--ems-shadow-sm);
}
.ems-gauge__val { font-size: 1.45rem; font-weight: 800; color: var(--ems-ink); font-variant-numeric: tabular-nums; }
.ems-gauge__cap { font-size: .62rem; color: var(--ems-muted); margin-top: .15rem; text-align: center; padding: 0 .4rem; }

.ems-lb-rank {
    display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
    width: 1.5rem; height: 1.5rem; border-radius: 8px;
    font-size: .7rem; font-weight: 800; color: var(--ems-exec);
    background: var(--ems-brand-soft);
}
.ems-lb-track, .ems-cmp-track { height: 6px; border-radius: 999px; background: var(--ems-line); overflow: hidden; }
.ems-lb-track > span, .ems-cmp-track > span { display: block; height: 100%; border-radius: 999px; transition: width .8s var(--ems-ease); }

/* ----------------------------------------------------------------------------
   14. PANEL — Power-BI style labeled block with a coloured header bar
   ---------------------------------------------------------------------------- */
.ems-panel {
    border-radius: var(--ems-r);
    overflow: hidden;
    background: var(--ems-surface);
    border: 1px solid var(--ems-line);
    box-shadow: var(--ems-shadow);
}
.ems-panel__head {
    display: flex; align-items: center; gap: .5rem;
    padding: .55rem .9rem;
    background: linear-gradient(90deg,
        color-mix(in srgb, var(--p-accent, var(--ems-brand)) 34%, var(--ems-surface-2)),
        var(--ems-surface-2) 82%);
    border-bottom: 1px solid var(--ems-line);
}
.ems-panel__head svg { width: 1rem; height: 1rem; flex-shrink: 0; }
.ems-panel__title {
    font-size: .74rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
    color: var(--ems-ink);
}
.ems-panel__dot { width: .5rem; height: .5rem; border-radius: 2px; flex-shrink: 0; background: var(--p-accent, var(--ems-brand)); }

/* ----------------------------------------------------------------------------
   15. GLOBAL OPERATIONAL PREMIUM — a subtle warm layer on ALL admin pages.
        Pairs with the Filament gray→Stone palette so CRUD/tables/forms feel
        warm & premium but stay clean and readable. Cockpit pages override this
        with the heavier .ems-cockpit dark canvas.
   ---------------------------------------------------------------------------- */
html:not(.dark) .fi-main {
    background-color: #ffeeeb;                 /* Elhumaira cream — main background */
    background-image:
        radial-gradient(44rem 28rem at 6% -6%,  rgba(255, 190, 152, .32), transparent 58%),
        radial-gradient(40rem 30rem at 102% 0%, rgba(255, 190, 152, .18), transparent 56%);
    background-attachment: fixed;
}
.dark .fi-main {
    background-color: #160c08;
    background-image:
        radial-gradient(44rem 28rem at 6% -6%,  rgba(255, 190, 152, .07), transparent 58%),
        radial-gradient(40rem 30rem at 102% 0%, rgba(102, 57, 48, .35),  transparent 56%);
    background-attachment: fixed;
}

/* ----------------------------------------------------------------------------
   16. PRINT / EXPORT SAFETY — force clean, professional, white documents.
        Applies to payslips, invoices, receipts, printed reports — never dark.
   ---------------------------------------------------------------------------- */
.ems-print-safe { background: #ffffff; color: #111827; border-radius: .5rem; }

@media print {
    body, .fi-body, .fi-main, .fi-page, .fi-modal, .fi-modal-window { background: #fff !important; }
    .fi-sidebar, .fi-topbar { display: none !important; }

    /* Neutralise the dark analytics canvas + premium surfaces for print */
    .ems-cockpit, .ems-cockpit * {
        background: #fff !important; color: #000 !important;
        box-shadow: none !important; text-shadow: none !important;
        -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
        border-color: #ccc !important;
    }
    .ems-cockpit::before, .ems-cockpit::after { display: none !important; }
    .ems-card, .ems-glass, .ems-panel, .ems-chart-card, .ems-kpi-hero, .ems-ai, .ems-panel__head {
        background: #fff !important; color: #000 !important; box-shadow: none !important; border: 1px solid #ddd !important;
    }

    /* Explicit print-safe documents (payslip / invoice / receipt) */
    .ems-print-safe, .ems-print-safe * {
        background: #fff !important; color: #000 !important; box-shadow: none !important; border-color: #ccc !important;
    }
}

/* ----------------------------------------------------------------------------
   17. COMPACT TABLE DENSITY — tighter rows on EVERY Filament table (app-wide).
        Saves vertical space on all list/record tables (names, transactions, …).
        .fi-ta-cell is p-0; each column's content wrapper uses py-4 (1rem) — shrink it.
   ---------------------------------------------------------------------------- */
.fi-ta-cell .py-4 {
    padding-top: .4rem !important;
    padding-bottom: .4rem !important;
}
.fi-ta-header-cell {
    padding-top: .45rem !important;
    padding-bottom: .45rem !important;
}
.fi-ta-pagination { padding-top: .55rem !important; padding-bottom: .55rem !important; }

/* Match the compact feel on the custom cockpit order tables too */
.ems-cockpit table th, .ems-cockpit table td { padding-top: .45rem !important; padding-bottom: .45rem !important; }

/* ----------------------------------------------------------------------------
   18. GROUPED INSET SIDEBAR — iOS / ChatGPT-style "grouped list" navigation.
        Each navigation group becomes a rounded inset CARD with a floating
        section header above it and indented hairline dividers between rows.
        The card tint uses an --ems-ink wash so it auto-contrasts in BOTH modes
        (darkens on the light sidebar, lightens on the dark one). The panel is
        fully-collapsible (no icon-mini rail), so this always renders full width.
   ---------------------------------------------------------------------------- */
.fi-sidebar-nav            { gap: .25rem !important; padding: .5rem .6rem .9rem !important; }
.fi-sidebar-nav-groups     { gap: .9rem !important; }          /* breathing room BETWEEN cards */
.fi-sidebar-group          { gap: 0 !important; }

/* Floating section header (ADMIN, FINANCE, …) — sits just above its card */
.fi-sidebar-group-button {
    padding: .1rem .4rem .4rem .85rem !important;
    background: transparent !important;
}
.fi-sidebar-group-label {
    font-size: .64rem !important; font-weight: 700 !important;
    letter-spacing: .08em !important; text-transform: uppercase !important;
    line-height: 1 !important; color: var(--ems-muted) !important;
}
/* Group expand/collapse chevron — clearly visible affordance (▼ to expand) */
.fi-sidebar-group-collapse-button { opacity: .7 !important; color: var(--ems-muted) !important; transition: opacity .15s, color .15s, transform .2s var(--ems-ease) !important; }
.fi-sidebar-group:hover .fi-sidebar-group-collapse-button { opacity: 1 !important; color: var(--ems-brand) !important; }

/* Parent-item expand chevron (Settings, Bank, Reports …) — ▶ to expand children */
.fi-sidebar-group-items .fi-sidebar-item-has-children { position: relative; }
.fi-sidebar-item-expand {
    position: absolute; top: .5rem; right: .45rem; z-index: 5;
    display: inline-flex; align-items: center; justify-content: center;
    width: 1.5rem; height: 1.5rem; border-radius: 8px;
    color: var(--ems-muted); opacity: .8; cursor: pointer;
    transition: background .15s, opacity .15s, color .15s;
}
.fi-sidebar-item-expand:hover {
    opacity: 1; color: var(--ems-brand);
    background: color-mix(in srgb, var(--ems-ink) 10%, transparent);
}

/* The grouped card — wraps the rows */
.fi-sidebar-group-items {
    gap: 0 !important;
    background: color-mix(in srgb, var(--ems-ink) 4%, transparent);
    border: 1px solid var(--ems-line);
    border-radius: 14px;
    box-shadow: var(--ems-shadow-sm);
    overflow: hidden;
}

/* Rows — full-bleed inside the card */
.fi-sidebar-group-items .fi-sidebar-item-button {
    position: relative;
    border-radius: 0 !important;
    justify-content: flex-start !important;
    gap: .7rem !important;
    padding: .52rem .8rem !important;
    transition: background .15s !important;
}
.fi-sidebar-group-items .fi-sidebar-item-icon  { width: 1.15rem !important; height: 1.15rem !important; }
.fi-sidebar-group-items .fi-sidebar-item-label { font-size: .8rem !important; }

/* Hover — soft ink wash (adapts to mode) */
.fi-sidebar-group-items .fi-sidebar-item-button:hover {
    background: color-mix(in srgb, var(--ems-ink) 7%, transparent) !important;
}

/* Active row — peach tint + left terracotta accent bar (reads in both modes) */
.fi-sidebar-group-items .fi-active > .fi-sidebar-item-button,
.fi-sidebar-group-items .fi-sidebar-item-active > .fi-sidebar-item-button {
    background: var(--ems-brand-soft) !important;
    box-shadow: inset .2rem 0 0 var(--ems-exec) !important;
}

/* Indented hairline divider between rows (starts after the icon, like iOS) */
.fi-sidebar-group-items .fi-sidebar-item + .fi-sidebar-item > .fi-sidebar-item-button::before {
    content: ""; position: absolute; top: 0; left: 2.55rem; right: .7rem; height: 1px;
    background: var(--ems-line-soft); pointer-events: none;
}

/* Keep the injected Personal/Management toggle clear of the first card */
.fi-sidebar-nav > *:first-child { margin-bottom: .55rem !important; }

/* ----------------------------------------------------------------------------
   19. OWNER COCKPIT — moved out of the page body so Livewire's DOM-morph never
       touches it. (An inline <style> inside the component wiped the header
       controls on every wire:click.) These classes are cockpit-scoped (.oc-*).
   ---------------------------------------------------------------------------- */
/* Forced LIGHT PEACH executive stage (theme-proof) */
.oc-stage.ems-cockpit{
    --ems-ink:#3a201a; --ems-ink-soft:#663930; --ems-muted:#9c7a6e; --ems-faint:#c4a99c;
    --ems-brand:#663930; --ems-brand-2:#ffbe98; --ems-exec:#a9694a; --ems-exec-2:#663930;
    --ems-surface:#ffffff; --ems-surface-2:#fff6f3;
    --ems-line:rgba(102,57,48,.14); --ems-line-soft:rgba(102,57,48,.08);
    background:
        radial-gradient(120% 80% at 0% 0%, rgba(255,190,152,.42), transparent 55%),
        radial-gradient(90% 70% at 100% 0%, rgba(255,190,152,.26), transparent 50%),
        radial-gradient(130% 120% at 50% 125%, rgba(102,57,48,.07), transparent 60%),
        linear-gradient(160deg,#fff7f3,#ffeeeb 45%,#ffe5df) !important;
    color:#3a201a !important;
}
@media print {
    .oc-stage.ems-cockpit{ background:#fff !important; color:#000 !important; box-shadow:none !important; }
    .oc-kpi, .oc-row, .oc-mini__c, .oc-liq{ box-shadow:none !important; background:#fff !important; }
    .oc-ai-btn, .oc-segment, .oc-chips, .oc-team{ display:none !important; }
}
.oc-head{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start;justify-content:space-between}
.oc-brand{display:flex;align-items:center;gap:.7rem}
.oc-brand__mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;color:#fff;
    background:linear-gradient(135deg,#663930,#a9694a);box-shadow:0 6px 16px rgba(102,57,48,.28)}
.oc-controls{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.oc-segment{display:inline-flex;gap:.15rem;padding:.25rem;border-radius:999px;
    background:rgba(255,255,255,.6);border:1px solid var(--ems-line-soft);backdrop-filter:blur(8px)}
.oc-seg-btn{border:0;background:transparent;cursor:pointer;font-size:.74rem;font-weight:600;color:var(--ems-ink-soft);
    padding:.34rem .7rem;border-radius:999px;transition:.2s;white-space:nowrap;line-height:1}
.oc-seg-btn:hover{background:rgba(255,190,152,.3)}
.oc-seg-btn--active{background:linear-gradient(135deg,#663930,#a9694a);color:#fff;box-shadow:0 3px 9px rgba(102,57,48,.25)}
.oc-chips{display:inline-flex;flex-wrap:wrap;gap:.3rem;align-items:center}
.oc-chip{border:1px solid var(--ems-line);background:rgba(255,255,255,.55);cursor:pointer;font-size:.72rem;font-weight:600;
    color:var(--ems-ink-soft);padding:.3rem .6rem;border-radius:999px;transition:.18s;display:inline-flex;gap:.25rem;align-items:center;line-height:1}
.oc-chip:hover{border-color:var(--ems-brand-2);background:rgba(255,190,152,.22)}
.oc-chip--on{background:var(--ems-brand-2);border-color:var(--ems-brand-2);color:#4a2a20}
.oc-ai-btn{display:inline-flex;align-items:center;gap:.4rem;border:0;cursor:pointer;text-decoration:none;
    font-size:.78rem;font-weight:700;color:#fff;padding:.5rem .95rem;border-radius:999px;
    background:linear-gradient(135deg,#663930,#ffbe98);box-shadow:0 6px 16px rgba(102,57,48,.28);transition:.2s}
.oc-ai-btn:hover{transform:translateY(-1px);box-shadow:0 9px 22px rgba(102,57,48,.32)}
.oc-date-inputs{display:flex;gap:.4rem;align-items:center}
.oc-date-inputs input{font-size:.74rem;border:1px solid var(--ems-line);border-radius:9px;padding:.3rem .5rem;background:#fff;color:var(--ems-ink-soft)}
.oc-team{display:inline-flex;gap:.15rem;padding:.2rem;border-radius:999px;background:rgba(255,255,255,.6);border:1px solid var(--ems-line-soft)}
.oc-kpis{display:grid;gap:.85rem;grid-template-columns:repeat(2,minmax(0,1fr))}
@media(min-width:680px){.oc-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:1280px){.oc-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}}
.oc-grid-3{display:grid;gap:.85rem;grid-template-columns:repeat(1,minmax(0,1fr))}
@media(min-width:680px){.oc-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
.oc-grid-4{display:grid;gap:.85rem;grid-template-columns:repeat(2,minmax(0,1fr))}
@media(min-width:900px){.oc-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
.oc-charts{display:grid;gap:1rem;grid-template-columns:1fr}
@media(min-width:1024px){.oc-charts{grid-template-columns:1fr 1fr}}
.oc-kpi{position:relative;display:flex;flex-direction:column;gap:.45rem;padding:.85rem .9rem;border-radius:16px;
    background:rgba(255,255,255,.66);border:1px solid rgba(255,255,255,.8);backdrop-filter:blur(14px);
    box-shadow:0 10px 24px -16px rgba(102,57,48,.5),0 2px 6px -4px rgba(102,57,48,.35);
    transition:transform .25s var(--ems-ease),box-shadow .25s var(--ems-ease);overflow:hidden;min-height:118px}
.oc-kpi::before{content:'';position:absolute;inset:0 auto 0 0;width:3px;background:var(--k);opacity:.85}
.oc-kpi:hover{transform:translateY(-3px);box-shadow:0 18px 34px -18px rgba(102,57,48,.55)}
.oc-kpi__top{display:flex;align-items:flex-start;justify-content:space-between;gap:.4rem}
.oc-kpi__label{font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ems-muted)}
.oc-kpi__ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto;color:var(--k);background:color-mix(in srgb,var(--k) 15%,transparent)}
.oc-kpi__ic svg{width:17px;height:17px}
.oc-kpi__val{font-size:1.42rem;font-weight:800;line-height:1.05;color:var(--ems-ink);letter-spacing:-.01em}
.oc-kpi__val--empty{font-size:.86rem;font-weight:600;color:var(--ems-muted);line-height:1.25}
.oc-kpi__foot{display:flex;align-items:center;justify-content:space-between;gap:.4rem;margin-top:auto}
.oc-kpi__sub{font-size:.66rem;color:var(--ems-muted);font-weight:500}
.oc-badge{font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:.16rem .42rem;border-radius:999px;white-space:nowrap}
.oc-badge--success{background:rgba(22,163,74,.14);color:#15803d}
.oc-badge--info{background:rgba(2,132,199,.14);color:#0369a1}
.oc-badge--warning{background:rgba(217,119,6,.16);color:#b45309}
.oc-badge--danger{background:rgba(220,38,38,.14);color:#b91c1c}
.oc-badge--muted{background:rgba(102,57,48,.1);color:var(--ems-muted)}
.oc-badge--demo{background:rgba(169,105,74,.18);color:#8a4d2f}
.oc-trend{font-size:.68rem;font-weight:700;display:inline-flex;align-items:center;gap:.15rem}
.oc-trend--up{color:#15803d}.oc-trend--down{color:#b91c1c}
.oc-spark{width:60px;height:24px;display:block}
.oc-prog{height:5px;border-radius:999px;background:rgba(102,57,48,.12);overflow:hidden}
.oc-prog>span{display:block;height:100%;border-radius:999px}
.oc-prog--success>span{background:linear-gradient(90deg,#16a34a,#4ade80)}
.oc-prog--danger>span{background:linear-gradient(90deg,#dc2626,#f87171)}
.oc-rows{display:flex;flex-direction:column;gap:.55rem}
.oc-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.6rem .7rem;border-radius:12px;background:var(--ems-surface-2);border:1px solid var(--ems-line-soft)}
.oc-row__l{display:flex;align-items:center;gap:.6rem;min-width:0}
.oc-row__ic{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto;color:var(--t,#663930);background:color-mix(in srgb,var(--t,#663930) 14%,transparent)}
.oc-row__ic svg{width:17px;height:17px}
.oc-row__name{font-size:.82rem;font-weight:600;color:var(--ems-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oc-row__meta{font-size:.66rem;color:var(--ems-muted)}
.oc-row__val{font-size:.9rem;font-weight:800;color:var(--ems-ink);white-space:nowrap}
.oc-row__val--neg{color:#b91c1c}
.oc-total{display:flex;align-items:center;justify-content:space-between;margin-top:.7rem;padding-top:.7rem;border-top:1px dashed var(--ems-line)}
.oc-total__k{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ems-muted)}
.oc-total__v{font-size:1.25rem;font-weight:800;color:var(--ems-brand)}
.oc-liq{padding:1rem 1.1rem;border-radius:18px;background:linear-gradient(135deg,rgba(255,255,255,.8),rgba(255,246,243,.7));
    border:1px solid rgba(255,255,255,.85);box-shadow:0 12px 26px -16px rgba(102,57,48,.5)}
.oc-liq__l{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ems-muted)}
.oc-liq__v{font-size:1.5rem;font-weight:800;color:var(--ems-brand);margin-top:.25rem}
.oc-liq--accent{background:linear-gradient(135deg,#663930,#a9694a);border:0;box-shadow:0 14px 30px -14px rgba(102,57,48,.6)}
.oc-liq--accent .oc-liq__l{color:rgba(255,255,255,.78)}
.oc-liq--accent .oc-liq__v{color:#fff}
.oc-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.45rem;padding:1.4rem 1rem;color:var(--ems-muted)}
.oc-empty__ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:var(--ems-exec);background:rgba(169,105,74,.12)}
.oc-empty__ic svg{width:21px;height:21px}
.oc-empty__t{font-size:.82rem;font-weight:700;color:var(--ems-ink-soft)}
.oc-empty__s{font-size:.7rem;max-width:34ch;line-height:1.45}
.oc-aging{display:flex;align-items:flex-end;gap:.6rem;height:96px;padding-top:.4rem}
.oc-aging__col{flex:1;display:flex;flex-direction:column;align-items:center;gap:.35rem;height:100%}
.oc-aging__bar{width:100%;border-radius:8px 8px 4px 4px;margin-top:auto;min-height:4px;transition:height .5s var(--ems-ease)}
.oc-aging__lab{font-size:.6rem;font-weight:700;color:var(--ems-muted);text-transform:uppercase}
.oc-split{display:flex;flex-direction:column;gap:.7rem}
.oc-split__top{display:flex;justify-content:space-between;font-size:.74rem;margin-bottom:.3rem}
.oc-split__name{color:var(--ems-ink-soft);font-weight:600}.oc-split__val{color:var(--ems-ink);font-weight:700}
.oc-warn{margin-top:.7rem;font-size:.72rem;font-weight:600;color:#b45309;display:flex;gap:.35rem;align-items:center;background:rgba(217,119,6,.1);border:1px solid rgba(217,119,6,.2);padding:.45rem .6rem;border-radius:10px}
.oc-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}
.oc-mini__c{text-align:center;padding:.6rem;border-radius:12px;background:rgba(255,255,255,.66);border:1px solid rgba(255,255,255,.8);box-shadow:0 8px 20px -16px rgba(102,57,48,.5)}
.oc-mini__v{font-size:1.1rem;font-weight:800;color:var(--ems-ink)}
.oc-mini__v--empty{font-size:.78rem;font-weight:600;color:var(--ems-muted)}
.oc-mini__l{font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--ems-muted)}
.oc-note{font-size:.68rem;color:var(--ems-muted);margin-top:.6rem;display:flex;gap:.35rem;align-items:center}

/* ── §19.1 Sticky filter bar — entity + range controls follow the scroll ── */
[x-cloak]{display:none !important}
.oc-sticky{
    position:sticky;top:4.6rem;z-index:30;
    max-width:100%;min-width:0;
    padding:.5rem .65rem;border-radius:16px;
    border:1px solid rgba(255,255,255,.78);
    background:rgba(255,246,243,.88);
    -webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);
    box-shadow:0 10px 24px -16px rgba(102,57,48,.5);
}
.oc-sticky .oc-controls{min-width:0;max-width:100%}
/* Rows must be able to SHRINK inside the bar, then scroll internally */
.oc-sticky .oc-chips,
.oc-sticky .oc-segment{max-width:100%;min-width:0}
@media print{.oc-sticky{position:static !important;box-shadow:none !important;background:#fff !important}}

/* Phone / narrow screens — compact, single-line swipeable rows */
@media (max-width:768px){
    .ems-cockpit{padding:.85rem}
    .oc-sticky{top:4.2rem;padding:.4rem .5rem;border-radius:13px}
    .oc-sticky .oc-controls{gap:.4rem}
    .oc-sticky .oc-chips,
    .oc-sticky .oc-segment{
        flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;
        -webkit-overflow-scrolling:touch;scrollbar-width:none;
    }
    .oc-sticky .oc-chips::-webkit-scrollbar,
    .oc-sticky .oc-segment::-webkit-scrollbar{display:none}
    .oc-sticky .oc-chip,
    .oc-sticky .oc-seg-btn{flex:0 0 auto}
    .oc-sticky .oc-chip{font-size:.66rem;padding:.26rem .5rem}
    .oc-sticky .oc-seg-btn{font-size:.68rem;padding:.3rem .55rem}
    .oc-sticky .oc-ai-btn{font-size:.72rem;padding:.4rem .75rem}
    .oc-sticky .oc-date-inputs input{font-size:.7rem;padding:.26rem .4rem}
}

/* Topbar variant — sits beside the avatar; icon-only on phones */
.oc-ai-btn--topbar{
    padding:.42rem .8rem;font-size:.74rem;margin-inline-end:.25rem;
}
.oc-ai-btn--topbar .oc-ai-btn__label{white-space:nowrap}
@media (max-width:640px){
    .oc-ai-btn--topbar{padding:.45rem;border-radius:999px}
    .oc-ai-btn--topbar .oc-ai-btn__label{display:none}
}

/* ── §19.2 Info (ⓘ) button + shared explainer modal ── */
.oc-info{
    width:17px;height:17px;flex:0 0 auto;border:1px solid var(--ems-line);border-radius:999px;
    display:inline-grid;place-items:center;cursor:pointer;background:rgba(255,255,255,.7);
    font-size:.6rem;font-weight:800;font-style:italic;font-family:Georgia,serif;
    color:var(--ems-muted);line-height:1;transition:.15s;
}
.oc-info:hover{color:var(--ems-brand);border-color:var(--ems-exec);background:rgba(255,190,152,.25)}
.oc-modal{
    position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
    background:rgba(58,32,26,.35);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);padding:1rem;
}
.oc-modal__card{
    width:min(30rem,94vw);border-radius:18px;padding:1.1rem 1.25rem 1.25rem;
    background:linear-gradient(180deg,#fff,#fff6f3);border:1px solid rgba(255,255,255,.85);
    box-shadow:0 24px 60px -20px rgba(58,32,26,.5);color:var(--ems-ink);
}
.oc-modal__head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.5rem}
.oc-modal__title{font-size:.95rem;font-weight:800;color:#3a201a}
.oc-modal__x{
    border:0;background:rgba(102,57,48,.08);cursor:pointer;color:#663930;border-radius:999px;
    width:26px;height:26px;display:inline-grid;place-items:center;font-size:.75rem;transition:.15s;
}
.oc-modal__x:hover{background:rgba(102,57,48,.16)}
.oc-modal__body{font-size:.8rem;line-height:1.6;color:#6b4a3f;white-space:pre-line}

/* ── §19.3 Ask AI drawer — same-page rule-based assistant ── */
.oc-ai-drawer{
    position:fixed;right:1rem;bottom:1rem;z-index:55;
    width:min(24rem,calc(100vw - 2rem));max-height:min(34rem,calc(100vh - 7rem));
    display:flex;flex-direction:column;border-radius:20px;overflow:hidden;
    background:linear-gradient(180deg,#fff,#fff6f3);border:1px solid rgba(255,255,255,.85);
    box-shadow:0 26px 64px -18px rgba(58,32,26,.55);color:#3a201a;
}
.oc-ai-drawer__head{
    display:flex;align-items:center;gap:.45rem;padding:.7rem .85rem;
    border-bottom:1px solid rgba(102,57,48,.1);background:rgba(255,246,243,.7);
}
.oc-ai-drawer__title{display:inline-flex;align-items:center;gap:.35rem;font-size:.82rem;font-weight:800;color:#663930}
.oc-ai-drawer__ctx{padding:.4rem .85rem;font-size:.66rem;color:#9c7e72;border-bottom:1px dashed rgba(102,57,48,.12)}
.oc-ai-drawer__ctx strong{color:#663930;font-weight:700}
.oc-ai-drawer__thread{flex:1;overflow-y:auto;padding:.75rem .85rem;display:flex;flex-direction:column;gap:.5rem;min-height:7rem}
.oc-ai-msg{max-width:88%;padding:.5rem .7rem;border-radius:13px;font-size:.76rem;line-height:1.5}
.oc-ai-msg--ai{align-self:flex-start;background:rgba(102,57,48,.07);color:#4a2a20;border-bottom-left-radius:4px}
.oc-ai-msg--user{align-self:flex-end;background:linear-gradient(135deg,#663930,#a9694a);color:#fff;border-bottom-right-radius:4px}
.oc-ai-msg__act{
    display:inline-flex;margin-top:.4rem;font-size:.7rem;font-weight:700;color:#663930;text-decoration:none;
    background:rgba(255,190,152,.35);padding:.25rem .55rem;border-radius:999px;transition:.15s;
}
.oc-ai-msg__act:hover{background:rgba(255,190,152,.6)}
.oc-ai-drawer__quick{display:flex;flex-wrap:wrap;gap:.3rem;padding:.5rem .85rem;border-top:1px dashed rgba(102,57,48,.12)}
.oc-ai-drawer__input{display:flex;gap:.4rem;padding:.6rem .85rem .8rem}
.oc-ai-drawer__input input{
    flex:1;font-size:.76rem;border:1px solid var(--ems-line);border-radius:11px;
    padding:.45rem .6rem;background:#fff;color:#3a201a;outline:none;
}
.oc-ai-drawer__input input:focus{border-color:var(--ems-exec)}
@media print{.oc-ai-drawer,.oc-modal,.oc-info{display:none !important}}

/* ── Floating horizontal scrollbar (jadual lebar) ─────────────────────── */
.ems-hscroll{
    position:fixed;bottom:0;z-index:35;display:none;
    height:15px;overflow-x:auto;overflow-y:hidden;
    background:rgba(255,238,235,.92);
    border-top:1px solid rgba(102,57,48,.18);
    -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
}
.ems-hscroll__inner{height:1px}
.ems-hscroll::-webkit-scrollbar{height:13px}
.ems-hscroll::-webkit-scrollbar-track{background:transparent}
.ems-hscroll::-webkit-scrollbar-thumb{
    background:rgba(102,57,48,.45);border-radius:999px;
    border:3px solid rgba(255,238,235,.92);
}
.ems-hscroll::-webkit-scrollbar-thumb:hover{background:rgba(102,57,48,.7)}
.ems-hscroll{scrollbar-color:rgba(102,57,48,.5) transparent;scrollbar-width:auto}
@media print{.ems-hscroll{display:none !important}}
