/* DINO Design System v2.0 — klientský portál
   Scope je záměrně omezený na klientské rozhraní. Interní CRM se nemění. */

body.crm-client-portal-active {
    --dino-canvas: var(--dino-bg);
    --dino-white: #fcfeff;
    --dino-success: var(--dino-mint);
    --dino-border-strong: color-mix(in srgb, var(--dino-text-muted) 26%, transparent);
    --cp-bg: var(--dino-canvas);
    --cp-ink: var(--dino-text-primary);
    --cp-muted: var(--dino-text-secondary);
    --cp-soft-muted: var(--dino-text-muted);
    --cp-line: var(--dino-border);
    --cp-line-strong: var(--dino-border-strong);
    --cp-surface: var(--dino-surface-solid);
    --cp-surface-soft: var(--dino-surface-soft);
    --cp-surface-glass: var(--dino-surface-glass);
    --cp-accent: var(--dino-blue);
    --cp-accent-strong: var(--dino-blue-strong);
    --cp-accent-soft: var(--dino-blue-soft);
    --cp-intelligence: var(--dino-violet);
    --cp-gold: var(--dino-blue);
    --cp-gold-soft: var(--dino-blue-soft);
    --cp-green: var(--dino-success);
    --cp-warning: var(--dino-warning);
    --cp-danger: var(--dino-danger);
    --cp-shadow: var(--dino-shadow-1);
    --cp-shadow-hover: var(--dino-shadow-2);
    --office-brand: var(--dino-blue);
    --office-brand-rgb: 23, 107, 255;
    --office-brand-border: color-mix(in srgb, var(--dino-blue) 24%, transparent);
    --office-accent-rgb: 119, 88, 232;
    margin: 0;
    background:
        radial-gradient(circle at 18% 6%, rgba(116, 194, 255, .15), transparent 30rem),
        radial-gradient(circle at 84% 18%, rgba(139, 119, 255, .10), transparent 34rem),
        var(--dino-canvas);
    color: var(--dino-text-primary);
    font: 400 16px/1.625 var(--dino-font);
}

body.crm-client-portal-active,
body.crm-client-portal-active button,
body.crm-client-portal-active input,
body.crm-client-portal-active select,
body.crm-client-portal-active textarea { font-family: var(--dino-font) !important; }

body.crm-client-portal-active *,
body.crm-client-portal-active *::before,
body.crm-client-portal-active *::after { box-sizing: border-box; }

body.crm-client-portal-active .cp-shell {
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 0;
    width: 100%;
    min-height: 100dvh;
    background: transparent;
}

body.crm-client-portal-active .cp-sidebar {
    top: 0;
    z-index: 20;
    height: 100dvh;
    min-height: 0;
    max-height: 100dvh;
    padding: 24px 18px;
    border: 0;
    border-right: 1px solid var(--dino-border);
    border-radius: 0;
    background: color-mix(in srgb, var(--dino-white) 86%, transparent);
    box-shadow: 18px 0 50px rgba(42, 68, 130, .045);
    backdrop-filter: blur(28px) saturate(125%);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--dino-blue) 28%, transparent) transparent;
}

body.crm-client-portal-active .cp-sidebar::-webkit-scrollbar { width: 6px; }
body.crm-client-portal-active .cp-sidebar::-webkit-scrollbar-track { background: transparent; }
body.crm-client-portal-active .cp-sidebar::-webkit-scrollbar-thumb { border-radius: 999px; background: color-mix(in srgb, var(--dino-blue) 24%, transparent); }

/* V poradenském náhledu začíná portál pod horní ovládací lištou. Sidebar proto
   vyplní pouze skutečně dostupnou část prvního viewportu a neschová servisní menu. */
body.authenticated:not(.auth-role-client).crm-client-portal-active .cp-sidebar {
    height: max(520px, calc(100dvh - 200px));
    max-height: max(520px, calc(100dvh - 200px));
}

body.crm-client-portal-active .cp-sidebar-logo {
    min-height: 56px;
    margin: 0 0 20px;
    padding: 4px 8px 18px;
    border: 0;
    border-bottom: 1px solid var(--dino-divider);
    background: transparent;
    box-shadow: none;
}

body.crm-client-portal-active .cp-sidebar-logo-img { max-height: 44px; }
body.crm-client-portal-active .cp-sidebar-brand-mark { background: linear-gradient(145deg, var(--dino-blue), var(--dino-violet)); font-family: var(--dino-font); }
body.crm-client-portal-active .cp-sidebar-brand-copy strong { font-size: 16px; line-height: 22px; }
body.crm-client-portal-active .cp-sidebar-brand-copy small { font-size: 12px; line-height: 18px; }

body.crm-client-portal-active .cp-sidebar-navigation,
body.crm-client-portal-active .cp-sidebar-nav { gap: 4px; }

body.crm-client-portal-active .cp-sidebar-navigation {
    display: flex;
    flex: 1 0 auto;
    min-height: 0;
    flex-direction: column;
}

body.crm-client-portal-active .cp-sidebar-nav-item {
    min-height: 44px;
    padding: 10px 12px;
    border-radius: 12px;
    color: var(--dino-text-secondary);
    font-size: 14px;
    line-height: 22px;
    font-weight: 650;
}

body.crm-client-portal-active .cp-sidebar-nav-item:hover { background: var(--dino-surface-soft); color: var(--dino-text-primary); }
body.crm-client-portal-active .cp-sidebar-nav-item.is-active,
body.crm-client-portal-active .cp-cashflow-tab.is-active {
    background: linear-gradient(100deg, var(--dino-blue-soft), var(--dino-violet-soft));
    color: var(--dino-blue);
}
body.crm-client-portal-active .cp-sidebar-nav-icon { width: 18px; height: 18px; }
body.crm-client-portal-active .cp-sidebar-nav--service { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--dino-divider); }

body.crm-client-portal-active .cp-sidebar-footer { margin-top: auto; background: transparent; }
body.crm-client-portal-active .cp-sidebar-assistant,
body.crm-client-portal-active .cp-sidebar-dino {
    border: 1px solid var(--dino-border);
    border-radius: 16px;
    background: var(--dino-surface-glass);
    box-shadow: var(--dino-shadow-1);
    backdrop-filter: blur(18px);
}

body.crm-client-portal-active .cp-main {
    min-width: 0;
    padding: 32px clamp(24px, 3vw, 48px) 64px;
    background: transparent;
}

body.crm-client-portal-active .cp-main-header { margin: 0 0 28px; }
body.crm-client-portal-active .cp-main-greeting,
body.crm-client-portal-active .cp-section-title,
body.crm-client-portal-active .cp-card-title,
body.crm-client-portal-active h1,
body.crm-client-portal-active h2,
body.crm-client-portal-active h3,
body.crm-client-portal-active h4 { font-family: var(--dino-font) !important; color: var(--dino-text-primary); text-wrap: balance; }
body.crm-client-portal-active .cp-main-greeting { margin: 0; font-size: 32px; line-height: 40px; letter-spacing: -.035em; font-weight: 750; }
body.crm-client-portal-active .cp-main-lead { margin-top: 4px; color: var(--dino-text-secondary); font-size: 16px; line-height: 26px; }
body.crm-client-portal-active .cp-section-title { font-size: 24px; line-height: 32px; letter-spacing: -.02em; }
body.crm-client-portal-active .cp-card-title,
body.crm-client-portal-active .cp-tile-title { font-size: 18px; line-height: 26px; letter-spacing: -.01em; }
body.crm-client-portal-active .cp-section-lead,
body.crm-client-portal-active .cp-card-lead { color: var(--dino-text-secondary); font-size: 14px; line-height: 22px; }
body.crm-client-portal-active .cp-page-stack,
body.crm-client-portal-active .cp-dashboard { gap: 24px; }

/* Solid = finanční data. Glass = pouze AI a kontext. */
body.crm-client-portal-active .cp-section,
body.crm-client-portal-active .cp-card,
body.crm-client-portal-active .cp-tile,
body.crm-client-portal-active .cp-kpi-tile,
body.crm-client-portal-active .cp-fp-card,
body.crm-client-portal-active .cp-goal-card,
body.crm-client-portal-active .cp-contract-card,
body.crm-client-portal-active .cp-doc-group,
body.crm-client-portal-active .cp-doc-library-card,
body.crm-client-portal-active .cp-portfolio-area,
body.crm-client-portal-active .cp-analysis-breakdown,
body.crm-client-portal-active .cp-xray-product,
body.crm-client-portal-active .cp-performance-matrix,
body.crm-client-portal-active .cp-cashflow-focus-card {
    border-color: var(--dino-border) !important;
    border-radius: 16px !important;
    background: var(--dino-surface-solid) !important;
    box-shadow: var(--dino-shadow-1) !important;
}

body.crm-client-portal-active :is(.cp-dino-next,.cp-rec-next,.cp-analysis-loading,.cp-portfolio-ai-cta,.cp-spatial-goal,.cp-sidebar-assistant) {
    border-color: color-mix(in srgb, var(--dino-blue) 15%, transparent) !important;
    background: linear-gradient(135deg, color-mix(in srgb, var(--dino-blue-soft) 75%, transparent), color-mix(in srgb, var(--dino-violet-soft) 58%, transparent)) !important;
    box-shadow: var(--dino-shadow-2) !important;
}

body.crm-client-portal-active :is(.cp-btn,.cp-doc-action,.cp-doc-open-action,.cp-doc-toggle-all,.cp-doc-group-toggle,.cp-tile-action,.cp-cashflow-tab) {
    min-height: 44px;
    border-radius: 12px;
    font-size: 14px;
    line-height: 20px;
    font-weight: 700;
}
body.crm-client-portal-active .cp-btn--primary,
body.crm-client-portal-active .cp-sidebar-dino-btn {
    border-color: transparent;
    background: linear-gradient(135deg, var(--dino-blue), var(--dino-violet));
    color: #fff;
    box-shadow: 0 10px 24px rgba(23, 107, 255, .20);
}
body.crm-client-portal-active .cp-btn--secondary,
body.crm-client-portal-active .cp-btn--ghost {
    border-color: var(--dino-border-strong);
    background: var(--dino-surface-solid);
    color: var(--dino-text-primary);
}
body.crm-client-portal-active :is(button,a,[role='button']):focus-visible { outline: 3px solid color-mix(in srgb, var(--dino-blue) 24%, transparent); outline-offset: 3px; }

body.crm-client-portal-active :is(input,select,textarea,.cp-dino-input,.cp-doc-rename-form input) {
    min-height: 48px;
    border: 1px solid var(--dino-border-strong) !important;
    border-radius: 12px !important;
    background: var(--dino-surface-solid) !important;
    color: var(--dino-text-primary) !important;
    font-size: 16px !important;
    line-height: 24px;
}
body.crm-client-portal-active :is(input,select,textarea):focus { border-color: var(--dino-blue) !important; outline: 3px solid var(--dino-blue-soft); outline-offset: 1px; }
body.crm-client-portal-active label { color: var(--dino-text-secondary); font-size: 14px; line-height: 22px; font-weight: 650; }

body.crm-client-portal-active :is(table,.ds-table,.cp-performance-matrix__table) { color: var(--dino-text-primary); font-size: 14px; font-variant-numeric: tabular-nums; }
body.crm-client-portal-active :is(th,.cp-performance-matrix__head) { color: var(--dino-text-muted); font-size: 12px; line-height: 18px; font-weight: 750; letter-spacing: .025em; }
body.crm-client-portal-active :is(th,td,.cp-performance-matrix__head,.cp-performance-matrix__table article) { border-color: var(--dino-divider) !important; }

body.crm-client-portal-active details { border-color: var(--dino-border) !important; }
body.crm-client-portal-active summary { min-height: 44px; color: var(--dino-text-primary); font-size: 14px; line-height: 22px; font-weight: 700; cursor: pointer; }
body.crm-client-portal-active .cp-empty { border-color: var(--dino-border-strong); background: var(--dino-surface-soft); color: var(--dino-text-secondary); }

body.crm-client-portal-active :is(.cp-status,.cp-fp-status,.cp-card-tag,.cp-doc-company>span,.cp-analysis-coverage) { font-size: 12px; line-height: 18px; }
body.crm-client-portal-active :is(.cp-kpi-value,.cp-goal-pct,.cp-goal-hero-pct,.cp-finance-total strong,.cp-portfolio-total,.cp-spatial-wealth-total strong) { font-size: 32px !important; line-height: 38px !important; letter-spacing: -.035em !important; font-variant-numeric: tabular-nums; }

/* Přehled zůstává Spatial, ale respektuje stejné typografické limity. */
body.crm-client-portal-active .cp-shell--spatial-overview .cp-main { padding: 32px clamp(24px, 3vw, 48px) 64px; }
body.crm-client-portal-active .cp-shell--spatial-overview .cp-main-greeting { font-size: 14px; line-height: 22px; letter-spacing: .06em; }
body.crm-client-portal-active .cp-spatial-status span { font-size: 32px; line-height: 40px; }
body.crm-client-portal-active .cp-spatial-status small { font-size: 18px; line-height: 26px; }
body.crm-client-portal-active .cp-spatial-insight h2 { max-width: 650px; font-size: 48px; line-height: 54px; letter-spacing: -.04em; }
body.crm-client-portal-active .cp-spatial-insight-copy { font-size: 16px; line-height: 26px; }
body.crm-client-portal-active .cp-spatial-attention { border-left-color: var(--dino-warning) !important; background: var(--dino-warning-soft) !important; }

/* Grafy: omezená paleta, chybějící data neutrálně. */
body.crm-client-portal-active :is(.cp-mini-bar span,.cp-goal-bar span,.cp-spatial-progress i,.cp-analysis-bars b) { background: linear-gradient(90deg, var(--dino-blue), var(--dino-violet)) !important; }
body.crm-client-portal-active :is(.cp-chart-svg,.cp-analysis-donut,.cp-spatial-readiness) { filter: saturate(.92); }
body.crm-client-portal-active .is-missing { color: var(--dino-text-muted) !important; }

html[data-theme='dark'] body.crm-client-portal-active {
    --dino-canvas: #0d1422;
    --dino-surface-solid: #151e2e;
    --dino-surface-soft: #192437;
    --dino-surface-glass: rgba(22, 32, 49, .82);
    --dino-text-primary: #f4f7fc;
    --dino-text-secondary: #b8c3d5;
    --dino-text-muted: #8795aa;
    --dino-border: rgba(190, 208, 235, .13);
    --dino-border-strong: rgba(190, 208, 235, .22);
    --dino-divider: rgba(190, 208, 235, .10);
    background:
        radial-gradient(circle at 18% 6%, rgba(56, 125, 225, .14), transparent 30rem),
        radial-gradient(circle at 84% 18%, rgba(112, 88, 221, .12), transparent 34rem),
        var(--dino-canvas);
}
html[data-theme='dark'] body.crm-client-portal-active .cp-sidebar { background: rgba(15, 23, 36, .88); }
html[data-theme='dark'] body.crm-client-portal-active .cp-btn--secondary,
html[data-theme='dark'] body.crm-client-portal-active .cp-btn--ghost { background: var(--dino-surface-soft); }

@media (max-width: 1100px) {
    body.crm-client-portal-active .cp-shell { grid-template-columns: 210px minmax(0, 1fr); }
    body.crm-client-portal-active .cp-main { padding-inline: 24px; }
    body.crm-client-portal-active .cp-spatial-insight h2 { font-size: 40px; line-height: 48px; }
}

@media (max-width: 960px) {
    body.crm-client-portal-active .cp-shell { display: block; }
    body.crm-client-portal-active .cp-sidebar,
    body.authenticated:not(.auth-role-client).crm-client-portal-active .cp-sidebar { position: relative; width: 100%; height: auto; min-height: 0; max-height: none; padding: 14px 16px; border-right: 0; border-bottom: 1px solid var(--dino-border); overflow-y: visible; }
    body.crm-client-portal-active .cp-sidebar-logo { min-height: 0; margin: 0; padding: 0; border: 0; }
    body.crm-client-portal-active .cp-sidebar-navigation { display: grid; grid-template-columns: repeat(5, minmax(100px, 1fr)); overflow-x: auto; padding-top: 12px; }
    body.crm-client-portal-active .cp-sidebar-nav { display: contents; }
    body.crm-client-portal-active .cp-sidebar-nav--service { margin: 0; padding: 0; border: 0; }
    body.crm-client-portal-active .cp-sidebar-footer { display: none; }
    body.crm-client-portal-active .cp-main { padding: 24px 20px 56px; }
}

@media (max-width: 600px) {
    body.crm-client-portal-active { font-size: 16px; }
    body.crm-client-portal-active .cp-main { padding: 20px 16px 48px; }
    body.crm-client-portal-active .cp-main-greeting { font-size: 28px; line-height: 36px; }
    body.crm-client-portal-active .cp-section-title { font-size: 22px; line-height: 30px; }
    body.crm-client-portal-active .cp-spatial-status span { font-size: 28px; line-height: 36px; }
    body.crm-client-portal-active .cp-spatial-status small { font-size: 16px; line-height: 26px; }
    body.crm-client-portal-active .cp-spatial-insight h2 { font-size: 36px; line-height: 42px; }
    body.crm-client-portal-active .cp-sidebar-navigation { grid-template-columns: repeat(9, max-content); margin-inline: -16px; padding-inline: 16px; }
    body.crm-client-portal-active .cp-sidebar-nav-item { width: auto; padding-inline: 12px; }
    body.crm-client-portal-active :is(.cp-section,.cp-card,.cp-tile,.cp-kpi-tile,.cp-goal-card,.cp-contract-card,.cp-doc-group,.cp-analysis-breakdown,.cp-xray-product,.cp-performance-matrix) { border-radius: 14px !important; }
    body.crm-client-portal-active :is(.cp-overview-tiles,.cp-expenses-tiles,.cp-finance-grid,.cp-fp-grid,.cp-goals-row,.cp-analysis-grid,.cp-portfolio-grid) { grid-template-columns: 1fr !important; }
    body.crm-client-portal-active :is(.cp-performance-matrix__table,.cp-table-wrap,.cp-portfolio-table-wrap) { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }
}

@media (prefers-reduced-motion: reduce) {
    body.crm-client-portal-active *,
    body.crm-client-portal-active *::before,
    body.crm-client-portal-active *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
