/* Клиентские разделы портала — вёрстка по прототипу ТЗ (docs/tz-prototype.md) */

.jgf-section { max-width: 68rem; }
.jgf-lead { color: var(--gray-500, #6b7280); margin: -0.25rem 0 1.25rem; font-size: 0.925rem; }
.dark .jgf-lead { color: #9ca3af; }

/* строка «вид + клиент» над разделом; выбор клиента — выпадающим списком (MVP-1, 04.10) */
.jgf-switcher { display: flex; gap: .9rem; align-items: center; margin-bottom: 1.25rem; flex-wrap: wrap; }
.jgf-client-select { display: inline-flex; align-items: center; gap: .4rem; font-size: .8rem; color: #6b7280; }
.dark .jgf-client-select { color: #9ca3af; }
.jgf-client-select select { font-size: .8rem; border: 1px solid #e5e7eb; border-radius: .4rem; padding: .25rem 1.6rem .25rem .55rem; background: #fff; color: #111827; min-width: 12rem; }
.dark .jgf-client-select select { background: #21242A; border-color: #333; color: #e5e7eb; }

.jgf-card { background: #fff; border: 1px solid #e5e7eb; border-radius: .75rem; padding: 1.1rem 1.25rem; margin-bottom: 1rem; }
.dark .jgf-card { background: #21242A; border-color: #333; }

.jgf-badge { display: inline-block; padding: .15rem .6rem; border-radius: 9999px; font-size: .72rem; font-weight: 600; white-space: nowrap; }
.jgf-badge.done { background: rgba(76,217,100,.15); color: #2c9e46; }
.jgf-badge.in_progress { background: rgba(7,42,227,.12); color: #3b5bef; }
.dark .jgf-badge.in_progress { color: #B3C9F3; }
.jgf-badge.planned { background: rgba(156,163,175,.18); color: #6b7280; }
.jgf-badge.effect { background: rgba(76,217,100,.15); color: #2c9e46; }
.jgf-badge.target { background: rgba(245,158,11,.15); color: #b45309; }
.jgf-badge.pillar { background: rgba(7,42,227,.10); color: #3b5bef; font-weight: 500; }
.dark .jgf-badge.pillar { color: #B3C9F3; }

/* Гантт (табличный вид — карточки фаз) */
.jgf-phase { margin-bottom: 1.5rem; }
.jgf-phase-title { font-weight: 700; font-size: .95rem; margin-bottom: .15rem; }
.jgf-phase-milestone { font-size: .8rem; color: #2c9e46; margin: .35rem 0 0; }
.jgf-phase-milestone.future { color: #6b7280; }
.jgf-phase-head { display: flex; gap: .6rem; align-items: baseline; flex-wrap: wrap; margin-bottom: .5rem; }
.jgf-gantt-wrap { overflow-x: auto; padding-bottom: .25rem; }

/* Гантт по референсу Bonamark, в палитре остальных карточек портала: светлая карточка,
   фирменный синий, оранжевый маркер «сегодня»; тёмная тема — переопределением переменных */
.jgf-roadmap { --rm-bg: #fff; --rm-border: #e5e7eb; --rm-line: rgba(107,114,128,.18); --rm-text: #111827; --rm-muted: #6b7280;
  --rm-blue: #072AE3; --rm-done: rgba(40,230,10,.3); --rm-done-edge: rgb(10,230,10); --rm-progress: rgba(10,40,230,.6); --rm-planned: rgba(10,40,230,.1); --rm-orange: #F59E0B; --rm-green: #2c9e46; --rm-pill: #f3f4f6;
  background: var(--rm-bg); color: var(--rm-text); border: 1px solid var(--rm-border); border-radius: .75rem; padding: 1.25rem 1.5rem 1.1rem; margin-bottom: 1rem; }
.dark .jgf-roadmap { --rm-bg: #21242A; --rm-border: #333; --rm-line: rgba(156,163,175,.16); --rm-text: #f3f4f6; --rm-muted: #9ca3af;
  --rm-blue: #4d7bff; --rm-done: rgba(40,230,10,.25); --rm-done-edge: rgba(10,230,10,.75); --rm-progress: rgba(77,123,255,.8); --rm-planned: rgba(77,123,255,.14); --rm-green: #6ee7a0; --rm-pill: #2a2d33; }
.jgf-rm-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1.5rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.jgf-rm-title { font-size: 1.35rem; font-weight: 800; color: var(--rm-text); line-height: 1.2; letter-spacing: -.01em; }
.jgf-rm-sub { font-size: .85rem; color: var(--rm-muted); margin-top: .3rem; }
.jgf-rm-week { text-align: right; margin-left: auto; }
.jgf-rm-tools { display: flex; gap: .35rem; align-items: center; flex-wrap: wrap; }
.jgf-rm-tools button, .jgf-ranges button, .jgf-pills button { font-size: .74rem; font-weight: 600; color: #6b7280; background: #f3f4f6; border: 1px solid transparent; border-radius: 9999px; padding: .25rem .7rem; cursor: pointer; }
.dark .jgf-rm-tools button, .dark .jgf-ranges button, .dark .jgf-pills button { background: #2a2d33; color: #9ca3af; }
.jgf-rm-tools button.active, .jgf-ranges button.active, .jgf-pills button.active { background: rgba(7,42,227,.12); color: #072AE3; border-color: rgba(7,42,227,.35); }
.dark .jgf-rm-tools button.active, .dark .jgf-ranges button.active, .dark .jgf-pills button.active { color: #B3C9F3; }
.jgf-ranges { display: flex; gap: .35rem; align-items: center; flex-wrap: wrap; }
.jgf-nav { display: inline-flex; gap: .2rem; margin-left: .3rem; }
.jgf-nav button { padding: .25rem .55rem; }
.jgf-filters { display: flex; gap: .9rem; align-items: center; flex-wrap: wrap; margin: -.4rem 0 1rem; font-size: .78rem; color: #6b7280; }
.jgf-pills { display: inline-flex; gap: .3rem; flex-wrap: wrap; }
.jgf-pills button .jgf-type-dot { margin-right: .35rem; }
.jgf-filters label { display: inline-flex; align-items: center; gap: .35rem; }
.jgf-filters select { font-size: .78rem; border: 1px solid #e5e7eb; border-radius: .4rem; padding: .2rem 1.4rem .2rem .5rem; background: #fff; color: inherit; }
.dark .jgf-filters select { background: #21242A; border-color: #333; }
.jgf-pipeline .jgf-item-row { align-items: center; }
/* формы roadmap: добавление, правка, комментарии */
.jgf-form .jgf-muted { margin: .2rem 0 .6rem; }
.jgf-form-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .6rem .8rem; }
@media (max-width: 48rem) { .jgf-form-grid { grid-template-columns: 1fr 1fr; } }
.jgf-form-grid label { display: flex; flex-direction: column; gap: .25rem; font-size: .74rem; font-weight: 600; color: #6b7280; }
.jgf-form-grid label.wide { grid-column: span 2; }
.jgf-input { font-size: .85rem; font-weight: 400; color: inherit; border: 1px solid #e5e7eb; border-radius: .5rem; padding: .4rem .6rem; background: #fff; width: 100%; box-sizing: border-box; }
.dark .jgf-input { background: #21242A; border-color: #333; }
.jgf-error { font-size: .72rem; color: #b91c1c; font-weight: 500; }
.jgf-form-actions { display: flex; gap: .5rem; align-items: center; margin-top: .8rem; }
.jgf-controls { display: inline-flex; gap: .25rem; align-items: center; margin-left: .2rem; }
.jgf-icon-btn { font-size: .68rem; line-height: 1.4; color: #6b7280; background: transparent; border: 1px solid #e5e7eb; border-radius: .3rem; padding: 0 .35rem; cursor: pointer; }
.jgf-icon-btn:hover { color: #072AE3; border-color: rgba(7,42,227,.4); }
.jgf-icon-btn.has { color: #072AE3; }
.jgf-icon-btn.accept { color: #2c9e46; border-color: rgba(44,158,70,.4); font-weight: 600; }
.jgf-icon-btn.decline { color: #b91c1c; border-color: rgba(185,28,28,.35); font-weight: 600; }
.dark .jgf-icon-btn { border-color: #333; color: #9ca3af; }
.jgf-proposed { margin-top: .2rem; font-size: .72rem; color: #6d28d9; }
.jgf-bar.proposal { top: calc(50% + .6rem); height: .5rem; }
.jgf-comments .jgf-phase-title { display: flex; justify-content: space-between; align-items: baseline; }
.jgf-link { background: none; border: none; color: #6b7280; font-size: .75rem; cursor: pointer; text-decoration: underline; }
.jgf-comment { padding: .45rem 0; border-bottom: 1px solid rgba(156,163,175,.15); font-size: .88rem; }
.jgf-comment:last-of-type { border-bottom: none; }
.jgf-comment-meta { font-size: .72rem; color: #6b7280; margin-bottom: .1rem; }
.jgf-approved { margin-top: .6rem; font-size: .82rem; font-weight: 600; color: #2c9e46; }
.jgf-status { font-size: .72rem; font-weight: 600; border: 1px solid #e5e7eb; border-radius: 9999px; padding: .15rem 1.4rem .15rem .6rem; background: #fff; color: #6b7280; }
.jgf-status.done { color: #2c9e46; } .jgf-status.in_progress { color: #3b5bef; }
.dark .jgf-status { background: #21242A; border-color: #333; }
.jgf-pipeline .jgf-item-row.pending .text { color: #6d28d9; }
.jgf-rm-week .label { font-size: .65rem; letter-spacing: .12em; text-transform: uppercase; color: var(--rm-muted); }
.jgf-rm-week .num { font-size: 1.6rem; font-weight: 800; color: var(--rm-blue); line-height: 1.1; }
.jgf-rm-week .num span { font-size: 1rem; font-weight: 500; color: var(--rm-muted); }
.jgf-rm-week .date { font-size: .75rem; color: var(--rm-muted); }

.jgf-rm-grid { display: grid; grid-template-columns: minmax(15rem, 34%) 1fr; column-gap: 1.5rem; min-width: 46rem; position: relative; }
.jgf-rm-corner { grid-column: 1; }
.jgf-rm-months { grid-column: 2; display: flex; gap: .35rem; margin-bottom: .4rem; }
/* блочная раскладка, а не flex: у flex-контейнера text-overflow не работает и подпись просто резалась */
.jgf-rm-months .pill { box-sizing: border-box; display: block; min-width: 0; height: 2rem; line-height: 2rem; text-align: center; font-size: .78rem; font-weight: 600; color: var(--rm-muted);
  background: var(--rm-pill); border-radius: .5rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: 0 .35rem; }
.jgf-rm-months .pill.active { color: #fff; background: var(--rm-blue); }

.jgf-rm-track .month-line { position: absolute; top: 0; bottom: 0; border-left: 1px dashed var(--rm-line); pointer-events: none; }
.jgf-rm-track .today-line { position: absolute; top: 0; bottom: 0; border-left: 2px solid var(--rm-orange); pointer-events: none; z-index: 2; }
.jgf-rm-grid { position: relative; }
.jgf-rm-grid > .jgf-rm-label, .jgf-rm-grid > .jgf-rm-track { z-index: 1; }

.jgf-rm-label { grid-column: 1; padding: .9rem 0 .8rem; border-bottom: 1px solid var(--rm-line); min-width: 0; }
.jgf-rm-label .name { font-size: .95rem; font-weight: 700; color: var(--rm-text); line-height: 1.25; display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
/* строка элемента воркстрима: отступ, тонкая полоса, галочка */
.jgf-rm-label.sub { padding: .5rem 0 .45rem .9rem; border-bottom: 1px dashed var(--rm-line); }
.jgf-rm-label.sub .name { font-size: .85rem; font-weight: 500; }
.jgf-rm-label.sub.done .name > span { color: var(--rm-muted); text-decoration: line-through; text-decoration-color: rgba(107,114,128,.5); }
.jgf-rm-label.sub .items { margin-top: .15rem; font-size: .74rem; gap: .5rem; }
.jgf-rm-label.sub .items a { color: var(--rm-blue); text-decoration: none; }
.jgf-rm-track.sub { min-height: 2.2rem; border-bottom: 1px dashed var(--rm-line); }
.jgf-rm-track.sub .jgf-bar.thin { height: .9rem; border-radius: .3rem; }
.jgf-chevron { flex: none; width: 1.1rem; height: 1.1rem; border: 1px solid var(--rm-border); border-radius: .3rem; background: var(--rm-pill); cursor: pointer; position: relative; }
.jgf-chevron::after { content: ''; position: absolute; left: .32rem; top: .22rem; width: .32rem; height: .32rem; border-right: 1.5px solid var(--rm-muted); border-bottom: 1.5px solid var(--rm-muted); transform: rotate(-45deg); transition: transform .15s; }
.jgf-chevron.open::after { transform: rotate(45deg); top: .16rem; }
.jgf-tick { flex: none; width: 1rem; height: 1rem; border-radius: 50%; border: 1.5px solid #9ca3af; background: transparent; cursor: pointer; padding: 0; position: relative; }
.jgf-tick:hover { border-color: var(--rm-blue, #072AE3); }
.jgf-tick.on { background: var(--rm-blue, #072AE3); border-color: var(--rm-blue, #072AE3); }
.jgf-tick.on::after { content: ''; position: absolute; left: .28rem; top: .12rem; width: .28rem; height: .5rem; border-right: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(45deg); }
.jgf-tick.static { cursor: default; display: inline-block; }
.jgf-type-dot { display: inline-block; width: .5rem; height: .5rem; border-radius: 50%; background: #9ca3af; margin-right: .3rem; flex: none; vertical-align: middle; }
.jgf-type-dot.task { background: var(--rm-blue, #072AE3); }
.jgf-type-dot.milestone { background: #7c3aed; border-radius: 1px; transform: rotate(45deg); width: .42rem; height: .42rem; }
.jgf-type-dot.meeting { background: #fff; border: 2px solid #0369a1; box-sizing: border-box; }
.jgf-type-dot.routine { background: #9ca3af; border-radius: 2px; width: .7rem; height: .35rem; }
.jgf-owner { flex: none; font-size: .68rem; font-weight: 600; color: var(--rm-muted); border: 1px solid var(--rm-border); border-radius: 9999px; padding: 0 .45rem; line-height: 1.5; }
.jgf-slip { flex: none; font-size: .66rem; font-weight: 700; color: #b45309; background: rgba(245,158,11,.14); border-radius: .3rem; padding: 0 .3rem; line-height: 1.5; margin-left: .3rem; }
.overdue { color: #b91c1c !important; }
.jgf-badge.pending { background: rgba(124,58,237,.12); color: #6d28d9; }
.dark .jgf-badge.pending { color: #c4b5fd; }
.jgf-rm-label.done .name { color: var(--rm-muted); font-weight: 600; }
.jgf-rm-label .items { display: flex; align-items: baseline; gap: .45rem; margin-top: .3rem; font-size: .8rem; color: var(--rm-muted); line-height: 1.4; }
.jgf-rm-label .dots { display: inline-flex; gap: .28rem; flex: none; align-self: center; }
.jgf-rm-label .dots i, .jgf-rm-legend .dot { display: inline-block; width: .45rem; height: .45rem; border-radius: 50%; border: 1px solid #9ca3af; box-sizing: border-box; }
.jgf-rm-label .dots i.done, .jgf-rm-legend .dot.on { background: var(--rm-blue); border-color: var(--rm-blue); }
.jgf-rm-label .dots i.in_progress { border-color: var(--rm-blue); box-shadow: inset 0 0 0 1px var(--rm-bg), inset 0 0 0 3px var(--rm-blue); }
.jgf-rm-label .count { flex: none; font-size: .68rem; font-weight: 600; color: var(--rm-muted); border: 1px solid var(--rm-border); border-radius: .3rem; padding: 0 .3rem; line-height: 1.35; align-self: center; }
.jgf-rm-label .names { min-width: 0; }
.jgf-rm-label .milestone { margin-top: .3rem; font-size: .75rem; color: var(--rm-muted); }
.jgf-rm-label .milestone.hit { color: var(--rm-green); }

.jgf-rm-track { grid-column: 2; position: relative; border-bottom: 1px solid var(--rm-line); min-height: 3rem; }
.jgf-rm-track .jgf-bar { position: absolute; top: 50%; transform: translateY(-50%); }
.jgf-rm-track .unscheduled { position: absolute; top: 50%; transform: translateY(-50%); left: .5rem; font-size: .72rem; font-style: italic; color: var(--rm-muted); }

.jgf-bar { display: block; height: 1.5rem; border-radius: .45rem; box-sizing: border-box; }
/* расцветка полос (ClickUp 123zgec7a2c): сделанное зелёным, в работе синим, запланированное бледно-голубым с пунктиром */
.jgf-bar.in_progress { background: var(--rm-progress); }
.jgf-bar.done { background: var(--rm-done); border: 1px solid var(--rm-done-edge); }
.jgf-bar.planned { background: var(--rm-planned); border: 1.5px dashed #9ca3af; }
.jgf-bar.ongoing { background: var(--rm-pill); border: 1px solid var(--rm-border); }
.jgf-bar.overdue { box-shadow: 0 0 0 2px rgba(220,38,38,.35); }
/* предложение клиента: фиолетовая штриховка, пока CFO не подтвердил */
.jgf-bar.pending { background: repeating-linear-gradient(135deg, rgba(124,58,237,.35) 0 4px, rgba(124,58,237,.08) 4px 8px); border: 1px solid #7c3aed; }
.jgf-bar.pending.legend { height: .8rem; }
/* майлстоун — ромб на одной дате, встреча — кружок */
.jgf-milestone { position: absolute; top: 50%; width: .8rem; height: .8rem; margin: -.4rem 0 0 -.4rem; background: #7c3aed; border-radius: 2px; transform: rotate(45deg); z-index: 1; }
.jgf-milestone.done { background: rgba(124,58,237,.35); border: 1px solid #7c3aed; box-sizing: border-box; }
.jgf-milestone.overdue { background: #dc2626; }
.jgf-milestone.pending { background: repeating-linear-gradient(135deg, #7c3aed 0 2px, #fff 2px 4px); border: 1px solid #7c3aed; box-sizing: border-box; }
.jgf-milestone.legend { position: static; display: inline-block; margin: 0 .2rem; width: .6rem; height: .6rem; }
.jgf-meeting-dot { position: absolute; top: 50%; width: .85rem; height: .85rem; margin: -.425rem 0 0 -.425rem; border-radius: 50%; background: var(--rm-bg); border: 2.5px solid #0369a1; box-sizing: border-box; z-index: 1; }
.jgf-meeting-dot.done { background: #0369a1; }
.jgf-meeting-dot.pending { border-style: dashed; border-color: #7c3aed; }
.jgf-meeting-dot.legend { position: static; display: inline-block; margin: 0 .2rem; width: .7rem; height: .7rem; }
/* baseline — тонкая скобка под полосой по согласованным датам */
.jgf-baseline { position: absolute; top: calc(50% + .55rem); height: .3rem; border: 1.5px solid #b45309; border-top: none; box-sizing: border-box; opacity: .8; }
.jgf-baseline.legend { position: static; display: inline-block; width: 1.4rem; height: .35rem; }
/* стрелки зависимостей поверх сетки */
.jgf-deps { position: absolute; left: 0; top: 0; pointer-events: none; overflow: visible; z-index: 3; }
.jgf-deps .jgf-dep { fill: none; stroke: #6b7280; stroke-width: 1.5; stroke-dasharray: 4 3; }
.jgf-deps .jgf-dep-head { fill: #6b7280; }
[x-cloak] { display: none !important; }

/* ось недель и плашки стоят над дорожками: стрелка «сегодня» смотрит вниз, на линию в дорожках */
.jgf-rm-weeks { grid-column: 2; display: flex; padding-bottom: .35rem; }
.jgf-rm-weeks div { flex: 1 1 0; text-align: center; font-size: .68rem; color: var(--rm-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 1px solid var(--rm-line); }
.jgf-rm-weeks div:first-child { border-left: none; }
.jgf-rm-weeks div.now { color: var(--rm-orange); font-weight: 700; }
.jgf-rm-markers { grid-column: 2; position: relative; height: 2.4rem; margin: .2rem 0 .6rem; }
.jgf-rm-markers span { position: absolute; top: 0; transform: translateX(-50%); white-space: nowrap; font-size: .78rem; padding: .3rem .7rem; border-radius: .5rem; }
.jgf-rm-markers .today { background: var(--rm-orange); color: #111827; font-weight: 700; z-index: 2; }
.jgf-rm-markers .today::before { content: ''; position: absolute; left: 50%; bottom: -.35rem; margin-left: -.35rem; border: .35rem solid transparent; border-bottom: none; border-top-color: var(--rm-orange); }
.jgf-rm-markers .meeting { border: 1px solid var(--rm-border); background: var(--rm-bg); color: var(--rm-muted); }
.jgf-rm-markers.two-rows { height: 4.6rem; }
.jgf-rm-markers .meeting.below { top: 2.3rem; }
.jgf-rm-markers.two-rows .today { z-index: 3; }

.jgf-rm-foot { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: 1rem; padding-top: .9rem; border-top: 1px solid var(--rm-line); font-size: .8rem; color: var(--rm-muted); }
.jgf-rm-legend { display: flex; gap: 1.2rem; flex-wrap: wrap; }
.jgf-rm-legend span { display: inline-flex; align-items: center; gap: .4rem; }
.jgf-rm-legend .jgf-bar { width: 1.8rem; height: .8rem; border-radius: .3rem; }
.jgf-rm-legend .dot + .dot { margin-left: -.2rem; }
.jgf-rm-now { color: var(--rm-text); }
.jgf-rm-now::before { content: '●'; color: var(--rm-orange); margin-right: .4rem; font-size: .7rem; }

/* Тулбар плана: переключатель Gantt/таблица + фильтр по датам — на компонентах Filament */
.jgf-toolbar { display: flex; gap: 1rem; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-bottom: 1rem; }
.jgf-toolbar-group { display: flex; gap: .9rem; align-items: center; flex-wrap: wrap; }
/* подписи рядов тулбара Roadmap: Period from / Show / View */
.jgf-row-label { font-size: .8rem; color: #6b7280; min-width: 2.6rem; }
.dark .jgf-row-label { color: #9ca3af; }
.jgf-toggle { display: inline-flex; gap: .4rem; }
.jgf-filter { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; font-size: .8rem; color: #6b7280; }
.dark .jgf-filter { color: #9ca3af; }
.jgf-filter .fi-input-wrp { flex: none; }
.jgf-filter .fi-input { width: 9.5rem; padding-top: .35rem; padding-bottom: .35rem; font-size: .8rem; }
.jgf-plan-table td:first-child { font-weight: 500; }

/* Решения */
.jgf-decision-head { display: flex; gap: .75rem; align-items: baseline; flex-wrap: wrap; margin-bottom: .35rem; }
.jgf-decision-num { font-weight: 800; color: #072AE3; }
.dark .jgf-decision-num { color: #B3C9F3; }
.jgf-trio { display: flex; gap: 1.5rem; margin: .6rem 0; flex-wrap: wrap; }
.jgf-trio div span { display: block; font-size: .7rem; color: #9ca3af; }
.jgf-trio div b { font-size: .95rem; }
.jgf-muted { color: #6b7280; font-size: .85rem; }
.dark .jgf-muted { color: #9ca3af; }

/* Встречи */
.jgf-meeting { border-left: 3px solid #072AE3; padding-left: 1rem; margin-bottom: 1.25rem; }
.jgf-meeting.review { border-left-color: #F59E0B; }
.jgf-meeting-head { font-weight: 700; margin-bottom: .3rem; }
.jgf-meeting-head .date { color: #9ca3af; font-weight: 400; font-size: .85rem; margin-left: .5rem; }
.jgf-item-row { display: flex; gap: .6rem; align-items: baseline; padding: .22rem 0; font-size: .875rem; flex-wrap: wrap; }
.jgf-item-row .kind { font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; color: #9ca3af; min-width: 3.6rem; }
.jgf-item-row .owner { color: #6b7280; font-size: .78rem; }
.dark .jgf-item-row .owner { color: #9ca3af; }
.jgf-item-row .text { flex: 1 1 16rem; }

/* Аудит */
.jgf-stat-row { display: flex; gap: 1rem; flex-wrap: wrap; }
.jgf-stat { flex: 1 1 10rem; }
.jgf-stat span { display: block; font-size: .75rem; color: #9ca3af; }
.jgf-stat b { font-size: 1.6rem; }
.jgf-table { width: 100%; border-collapse: collapse; font-size: .85rem; }
.jgf-table th { text-align: left; font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; color: #9ca3af; padding: .35rem .6rem; border-bottom: 1px solid #e5e7eb; }
.dark .jgf-table th { border-color: #333; }
.jgf-table td { padding: .42rem .6rem; border-bottom: 1px solid #f3f4f6; }
.dark .jgf-table td { border-color: #2a2d33; }
.jgf-table tr.jgf-group td { font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: #9ca3af; background: rgba(156,163,175,.07); font-weight: 700; }
.jgf-dots { display: inline-flex; gap: .25rem; }
.jgf-dots i { width: .6rem; height: .6rem; border-radius: 50%; background: #d1d5db; display: inline-block; }
.dark .jgf-dots i { background: #4b5563; }
.jgf-dots i.full { background: #4CD964; }
.jgf-dots i.half { background: #F59E0B; }

/* Итоги месяца: mini-chart */
.jgf-spark { display: flex; gap: 1.6rem; align-items: flex-end; }
.jgf-spark .col { display: flex; flex-direction: column; align-items: center; gap: .15rem; font-size: .75rem; }
.jgf-spark .bar { width: 2rem; background: #072AE3; border-radius: .25rem .25rem 0 0; }

/* Процессы */
.jgf-steps { margin: .6rem 0 0; padding-left: 1.4rem; }
.jgf-steps li { padding: .22rem 0; font-size: .875rem; }
.jgf-steps li .owner { color: #6b7280; font-size: .78rem; margin-left: .5rem; }
.dark .jgf-steps li .owner { color: #9ca3af; }

/* Как это работает */
.jgf-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 48rem) { .jgf-two-col { grid-template-columns: 1fr; } }
.jgf-list { margin: 0; padding-left: 1.2rem; font-size: .875rem; }
.jgf-list li { padding: .18rem 0; }

/* Monday screen */
.jgf-h3 { font-size: 1rem; font-weight: 700; margin: 1.4rem 0 .6rem; }
.jgf-next-meeting { border-left: 3px solid #072AE3; }
/* карточки месяца: касса + метрики клиента (3 универсальные и до 2 своих) — сколько есть, столько и колонок */
.jgf-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: .8rem; }
.jgf-kpi { margin-bottom: 0; }
.jgf-kpi span { display: block; font-size: .72rem; color: #9ca3af; }
.jgf-kpi b { font-size: 1.35rem; display: block; margin: .1rem 0; }
.jgf-kpi i { display: block; font-style: normal; font-size: .72rem; color: #6b7280; }
.dark .jgf-kpi i { color: #9ca3af; }
.jgf-kpi i.up { color: #2c9e46; }
.jgf-kpi i.down { color: #e11d48; }
.jgf-roi-row { display: flex; justify-content: space-between; gap: 1rem; padding: .3rem 0; font-size: .875rem; border-bottom: 1px solid rgba(156,163,175,.15); }
.jgf-roi-row:last-child { border-bottom: none; }
.jgf-roi-row span { color: #6b7280; }
.dark .jgf-roi-row span { color: #9ca3af; }
.jgf-roi-total b { color: #2c9e46; font-size: 1.1rem; }
.jgf-legend { font-size: .75rem; color: #6b7280; margin-top: .3rem; display: flex; gap: .9rem; align-items: center; }
.jgf-legend i { width: .7rem; height: .7rem; border-radius: 2px; display: inline-block; margin-right: .3rem; }
.jgf-legend i.gray { background: #9ca3af; }
.jgf-legend i.blue { background: #072AE3; }

/* Цели: цель — заголовок карточки, короткое название и иконка столпа — в шапке */
.jgf-goal-head { display: flex; align-items: flex-start; gap: .75rem; }
.jgf-goal-headline { flex: 1; min-width: 0; }
.jgf-goal-name { font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #6b7280; }
.dark .jgf-goal-name { color: #9ca3af; }
.jgf-goal-title { font-size: 1.15rem; font-weight: 700; line-height: 1.3; margin: .1rem 0 0; }
.jgf-goal-icon { flex: none; width: 2.4rem; height: 2.4rem; border-radius: .6rem; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; }
.jgf-goal-icon svg { width: 1.35rem; height: 1.35rem; }
.jgf-goal-icon.pillar-cash { background: rgba(7,42,227,.12); color: #072AE3; }
.jgf-goal-icon.pillar-profit { background: rgba(76,217,100,.16); color: #2c9e46; }
.jgf-goal-icon.pillar-growth { background: rgba(139,92,246,.16); color: #7c3aed; }
.jgf-goal-icon.pillar-safety { background: rgba(245,158,11,.16); color: #b45309; }
.jgf-goal-icon.pillar-control { background: rgba(14,165,233,.16); color: #0369a1; }
.jgf-goal-icon.no-pillar { background: rgba(156,163,175,.18); color: #6b7280; }
.dark .jgf-goal-icon.pillar-cash { color: #B3C9F3; }
.dark .jgf-goal-icon.pillar-profit { color: #6ee7a0; }
.dark .jgf-goal-icon.pillar-growth { color: #c4b5fd; }
.dark .jgf-goal-icon.pillar-safety { color: #fcd34d; }
.dark .jgf-goal-icon.pillar-control { color: #7dd3fc; }
.dark .jgf-goal-icon.no-pillar { color: #9ca3af; }
.jgf-goal-why { margin-top: .5rem; font-size: .88rem; }
.jgf-goal-quote { font-size: .92rem; font-style: italic; margin-top: .4rem; color: #6b7280; }
.dark .jgf-goal-quote { color: #9ca3af; }
.jgf-goal-done { margin-top: .6rem; padding-left: .7rem; border-left: 3px solid rgba(7,42,227,.35); font-size: .88rem; }
.jgf-goal-done-label { display: block; font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #6b7280; }
.dark .jgf-goal-done-label { color: #9ca3af; }
.jgf-goal-meta { display: flex; gap: .4rem; align-items: center; flex-wrap: wrap; margin-top: .6rem; }
.jgf-badge.overdue { background: rgba(239,68,68,.15); color: #b91c1c; }
.dark .jgf-badge.overdue { color: #fca5a5; }
@media (max-width: 40rem) {
    .jgf-goal-head { flex-wrap: wrap; }
    .jgf-goal-head .jgf-badge { order: 3; }
}
.jgf-footnote { font-size: .8rem; color: #9ca3af; margin-top: 1rem; font-style: italic; }

/* Раздел, закрытый от клиента: размытый скелет и надпись поверх него */
.jgf-locked { position: relative; }
.jgf-locked-skeleton { filter: blur(6px); opacity: .5; user-select: none; pointer-events: none; }
.jgf-locked-note { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column;
    align-items: center; justify-content: center; gap: .35rem; text-align: center; padding: 0 1rem; }
.jgf-locked-note b,
.jgf-locked-note span { background: rgba(255,255,255,.88); border-radius: .5rem; padding: .2rem .7rem; }
.dark .jgf-locked-note b,
.dark .jgf-locked-note span { background: rgba(33,36,42,.88); }
.jgf-locked-note b { font-size: 1.05rem; }
.jgf-locked-note span { max-width: 26rem; font-size: .88rem; }
.jgf-skel-line { height: .85rem; border-radius: 9999px; background: rgba(156,163,175,.35); margin: .55rem 0; }
.dark .jgf-skel-line { background: rgba(156,163,175,.22); }

/* Demo-клиент: бейдж на каждой странице, чтобы выдуманные цифры не приняли за реальные */
.jgf-demo { background: rgba(245,158,11,.12); border: 1px solid rgba(245,158,11,.45); color: #92400e; border-radius: .75rem; padding: .6rem 1rem; margin-bottom: 1rem; font-size: .85rem; }
.dark .jgf-demo { color: #fcd34d; }

/* Finance Stack: список ссылок */
.jgf-links { list-style: none; margin: 0; padding: 0; }
.jgf-links li { padding: .45rem 0; border-bottom: 1px solid rgba(156,163,175,.15); font-size: .9rem; }
.jgf-links li:last-child { border-bottom: none; }
.jgf-links a { color: #072AE3; font-weight: 600; text-decoration: none; margin-right: .5rem; }
.jgf-links a:hover { text-decoration: underline; }
.dark .jgf-links a { color: #B3C9F3; }

/* бренд панели: название и подпись «Your Fractional CFO» под ним (ClickUp 123zgec6wp4) */
.jgf-brand { display: flex; flex-direction: column; justify-content: center; white-space: nowrap; }
.jgf-brand-tag { margin-top: .2rem; font-size: .72rem; line-height: 1; font-weight: 400; font-style: italic; letter-spacing: 0; color: #6b7280; }
.dark .jgf-brand-tag { color: #9ca3af; }
