1895 lines
40 KiB
CSS
1895 lines
40 KiB
CSS
.pf-root{
|
|
max-width:1280px;
|
|
margin:0 auto;
|
|
display:flex;
|
|
flex-direction:column;
|
|
gap:16px;
|
|
}
|
|
.pf-root--analysis{
|
|
max-width:1440px;
|
|
}
|
|
.pf-head{
|
|
display:flex;
|
|
align-items:flex-end;
|
|
justify-content:space-between;
|
|
gap:var(--sp-4);
|
|
flex-wrap:wrap;
|
|
}
|
|
.pf-head__actions{
|
|
display:flex;
|
|
align-items:center;
|
|
justify-content:flex-end;
|
|
gap:8px;
|
|
flex-wrap:wrap;
|
|
}
|
|
.pf-head h1{
|
|
margin:6px 0 0;
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-h2);
|
|
line-height:1.28;
|
|
letter-spacing:0;
|
|
}
|
|
.pf-head p{
|
|
margin:6px 0 0;
|
|
max-width:760px;
|
|
color:var(--text-body);
|
|
font-size:var(--fs-xs);
|
|
line-height:1.55;
|
|
}
|
|
.pf-signal-strip{
|
|
order:1;
|
|
display:grid;
|
|
grid-template-columns:1fr;
|
|
gap:0;
|
|
min-width:0;
|
|
}
|
|
.pf-triage{
|
|
display:grid;
|
|
grid-template-columns:auto minmax(0,1fr) auto;
|
|
align-items:center;
|
|
gap:12px;
|
|
min-width:0;
|
|
padding:14px 16px;
|
|
border:1px solid var(--hair);
|
|
border-radius:var(--radius);
|
|
background:var(--bg-surface);
|
|
box-shadow:var(--shadow-sm);
|
|
}
|
|
.pf-triage.is-active{
|
|
background:color-mix(in srgb,var(--accent-tint) 42%,var(--bg-surface));
|
|
}
|
|
.pf-triage__copy{
|
|
min-width:0;
|
|
}
|
|
.pf-triage__copy .vg-kicker{
|
|
margin-bottom:4px;
|
|
}
|
|
.pf-triage__copy b{
|
|
display:block;
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-body);
|
|
line-height:1.35;
|
|
}
|
|
.pf-triage__copy span,
|
|
.pf-triage__meta small{
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
}
|
|
.pf-triage__meta{
|
|
display:grid;
|
|
grid-template-columns:repeat(2,minmax(0,1fr));
|
|
gap:0;
|
|
min-width:180px;
|
|
border:1px solid var(--border-subtle);
|
|
border-radius:var(--radius);
|
|
background:color-mix(in srgb,var(--bg-surface) 86%,transparent);
|
|
overflow:hidden;
|
|
}
|
|
.pf-triage__meta span{
|
|
display:grid;
|
|
align-content:center;
|
|
gap:2px;
|
|
padding:9px 12px;
|
|
}
|
|
.pf-triage__meta span + span{
|
|
border-left:1px solid var(--hair);
|
|
}
|
|
.pf-triage__meta b{
|
|
color:var(--text-strong);
|
|
font-family:var(--font-num);
|
|
font-size:17px;
|
|
line-height:1;
|
|
}
|
|
.pf-error{
|
|
display:flex;
|
|
align-items:center;
|
|
gap:10px;
|
|
padding:12px 14px;
|
|
border-radius:var(--radius);
|
|
background:var(--crit-tint);
|
|
color:var(--crit-text);
|
|
font-size:var(--fs-sm);
|
|
}
|
|
.pf-kpis{
|
|
display:grid;
|
|
grid-template-columns:repeat(6,minmax(0,1fr));
|
|
border:1px solid var(--hair);
|
|
border-radius:var(--radius);
|
|
overflow:hidden;
|
|
background:var(--bg-surface);
|
|
box-shadow:var(--shadow-sm);
|
|
}
|
|
.pf-kpi{
|
|
position:relative;
|
|
min-width:0;
|
|
padding:14px 16px;
|
|
display:grid;
|
|
grid-template-columns:minmax(0,1fr) auto;
|
|
gap:4px 10px;
|
|
}
|
|
.pf-kpi:nth-child(n+2){border-left:1px solid var(--hair);}
|
|
.pf-kpi:nth-child(n+4){border-top:0;}
|
|
.pf-kpi--primary,
|
|
.pf-kpi--warn{
|
|
background:color-mix(in srgb,var(--accent-tint) 32%,var(--bg-surface));
|
|
}
|
|
.pf-kpi--warn{
|
|
background:color-mix(in srgb,var(--warn-tint) 36%,var(--bg-surface));
|
|
}
|
|
.pf-kpi--primary .pf-kpi__ic{
|
|
color:var(--text-on-accent);
|
|
background:var(--accent);
|
|
}
|
|
.pf-kpi--warn .pf-kpi__ic{
|
|
color:var(--warn-text);
|
|
background:var(--warn-tint);
|
|
}
|
|
.pf-kpi__ic{
|
|
grid-column:2;
|
|
grid-row:1 / span 3;
|
|
width:30px;
|
|
height:30px;
|
|
display:grid;
|
|
place-items:center;
|
|
border-radius:var(--radius);
|
|
color:var(--accent);
|
|
background:var(--accent-tint);
|
|
}
|
|
.pf-kpi__lab{
|
|
display:block;
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
font-weight:700;
|
|
}
|
|
.pf-kpi b{
|
|
display:block;
|
|
color:var(--text-strong);
|
|
font-family:var(--font-num);
|
|
font-size:24px;
|
|
line-height:1;
|
|
}
|
|
.pf-kpi small{
|
|
color:var(--text-muted);
|
|
font-size:12px;
|
|
line-height:1.35;
|
|
}
|
|
.pf-workspace{
|
|
order:4;
|
|
display:grid;
|
|
grid-template-columns:minmax(320px,390px) minmax(0,1fr);
|
|
align-items:start;
|
|
gap:14px;
|
|
min-width:0;
|
|
}
|
|
.pf-analysis-page{
|
|
order:2;
|
|
display:flex;
|
|
flex-direction:column;
|
|
gap:12px;
|
|
min-width:0;
|
|
}
|
|
.pf-analysis-workbench{
|
|
min-width:0;
|
|
display:flex;
|
|
flex-direction:column;
|
|
gap:10px;
|
|
}
|
|
.pf-analysis-detail-head{
|
|
display:grid;
|
|
grid-template-columns:auto minmax(0,1fr);
|
|
gap:10px;
|
|
align-items:center;
|
|
min-width:0;
|
|
}
|
|
.pf-depth-strip{
|
|
display:grid;
|
|
grid-template-columns:repeat(3,minmax(0,1fr));
|
|
min-width:0;
|
|
border:1px solid var(--hair);
|
|
border-radius:var(--radius);
|
|
overflow:hidden;
|
|
background:var(--bg-surface);
|
|
box-shadow:var(--shadow-sm);
|
|
}
|
|
.pf-depth-strip span{
|
|
min-width:0;
|
|
display:flex;
|
|
align-items:center;
|
|
gap:7px;
|
|
padding:10px 12px;
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
font-weight:760;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-depth-strip span + span{
|
|
border-left:1px solid var(--hair);
|
|
}
|
|
.pf-depth-strip small{
|
|
width:22px;
|
|
height:22px;
|
|
display:grid;
|
|
place-items:center;
|
|
border-radius:var(--radius-sm);
|
|
color:var(--text-muted);
|
|
background:var(--bg-surface-2);
|
|
font-family:var(--font-num);
|
|
line-height:1;
|
|
}
|
|
.pf-depth-strip .is-current{
|
|
color:var(--text-strong);
|
|
background:color-mix(in srgb,var(--accent-tint) 36%,var(--bg-surface));
|
|
}
|
|
.pf-depth-strip .is-current small{
|
|
color:var(--text-on-accent);
|
|
background:var(--accent);
|
|
}
|
|
.pf-queue-stack{
|
|
display:flex;
|
|
flex-direction:column;
|
|
gap:14px;
|
|
min-width:0;
|
|
}
|
|
.pf-section{
|
|
display:flex;
|
|
flex-direction:column;
|
|
gap:10px;
|
|
min-width:0;
|
|
}
|
|
.pf-section__head{
|
|
display:flex;
|
|
align-items:flex-end;
|
|
justify-content:space-between;
|
|
gap:12px;
|
|
}
|
|
.pf-section__head h2{
|
|
margin:4px 0 0;
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-body);
|
|
font-weight:700;
|
|
line-height:1.3;
|
|
letter-spacing:0;
|
|
}
|
|
.pf-panel{
|
|
padding:0;
|
|
overflow:hidden;
|
|
}
|
|
.pf-studio-card{
|
|
display:grid;
|
|
grid-template-columns:minmax(0,1fr) auto;
|
|
gap:14px;
|
|
align-items:center;
|
|
padding:14px;
|
|
background:linear-gradient(180deg,var(--bg-surface),color-mix(in srgb,var(--accent-tint) 18%,var(--bg-surface)));
|
|
}
|
|
.pf-studio-card__copy{
|
|
min-width:0;
|
|
display:grid;
|
|
gap:7px;
|
|
}
|
|
.pf-studio-card__copy b{
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-body);
|
|
}
|
|
.pf-studio-card__copy p{
|
|
margin:0;
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
line-height:1.55;
|
|
}
|
|
.pf-studio-card__meta{
|
|
display:flex;
|
|
flex-wrap:wrap;
|
|
gap:6px;
|
|
}
|
|
.pf-studio-card__meta span{
|
|
padding:4px 7px;
|
|
border:1px solid var(--hair);
|
|
border-radius:var(--radius-sm);
|
|
color:var(--text-body);
|
|
background:var(--bg-surface-2);
|
|
font-size:11px;
|
|
line-height:1.2;
|
|
}
|
|
.pf-studio-card__actions{
|
|
display:flex;
|
|
justify-content:flex-end;
|
|
}
|
|
.pf-section--growth{
|
|
order:2;
|
|
min-width:0;
|
|
}
|
|
.pf-section--learner-analysis{
|
|
order:3;
|
|
min-width:0;
|
|
}
|
|
.pf-growth-panel{
|
|
background:linear-gradient(180deg,var(--bg-surface),color-mix(in srgb,var(--accent-tint) 18%,var(--bg-surface)));
|
|
}
|
|
.pf-learner-overview{
|
|
background:linear-gradient(180deg,var(--bg-surface),color-mix(in srgb,var(--bg-surface-2) 72%,var(--bg-surface)));
|
|
}
|
|
.pf-learner-toolbar{
|
|
display:grid;
|
|
grid-template-columns:minmax(240px,.72fr) auto;
|
|
gap:10px;
|
|
align-items:center;
|
|
padding:12px;
|
|
border-bottom:1px solid var(--hair);
|
|
background:color-mix(in srgb,var(--bg-surface) 86%,var(--bg-surface-2));
|
|
}
|
|
.pf-search-field{
|
|
min-width:0;
|
|
display:grid;
|
|
grid-template-columns:auto minmax(0,1fr);
|
|
gap:8px;
|
|
align-items:center;
|
|
padding:9px 10px;
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius);
|
|
color:var(--text-muted);
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-search-field input{
|
|
min-width:0;
|
|
border:0;
|
|
outline:0;
|
|
color:var(--text-strong);
|
|
background:transparent;
|
|
font:inherit;
|
|
font-size:var(--fs-sm);
|
|
}
|
|
.pf-search-field input::placeholder{
|
|
color:var(--text-muted);
|
|
}
|
|
.pf-sort-segment{
|
|
display:flex;
|
|
align-items:center;
|
|
justify-content:flex-end;
|
|
gap:0;
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius);
|
|
overflow:hidden;
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-sort-segment button{
|
|
min-height:38px;
|
|
padding:0 11px;
|
|
border:0;
|
|
border-left:1px solid var(--hair);
|
|
color:var(--text-muted);
|
|
background:transparent;
|
|
font:inherit;
|
|
font-size:var(--fs-xs);
|
|
font-weight:760;
|
|
cursor:pointer;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-sort-segment button:first-child{
|
|
border-left:0;
|
|
}
|
|
.pf-sort-segment button:hover,
|
|
.pf-sort-segment button:focus-visible{
|
|
color:var(--text-strong);
|
|
background:var(--bg-surface);
|
|
}
|
|
.pf-sort-segment button:focus-visible{
|
|
outline:2px solid var(--accent);
|
|
outline-offset:-2px;
|
|
}
|
|
.pf-sort-segment button.is-active{
|
|
color:var(--text-on-accent);
|
|
background:var(--accent);
|
|
}
|
|
.pf-learner-table{
|
|
min-width:0;
|
|
display:flex;
|
|
flex-direction:column;
|
|
/* 세로 가상화 스크롤 컨테이너. height:auto + max-height라 행이 적으면
|
|
내용 높이만 차지해 데드스페이스가 생기지 않는다. */
|
|
max-height:64vh;
|
|
overflow-x:auto;
|
|
overflow-y:auto;
|
|
scrollbar-gutter:stable;
|
|
}
|
|
/* 가상화 본문 — 전체 목록 높이를 확보하는 relative 캔버스.
|
|
column flex 컨테이너가 인라인 height를 축소하지 않도록 flex:none이 필수다. */
|
|
.pf-learner-table__body{
|
|
position:relative;
|
|
flex:none;
|
|
min-width:1000px;
|
|
}
|
|
.pf-learner-table__body .pf-learner-record{
|
|
position:absolute;
|
|
top:0;
|
|
left:0;
|
|
width:100%;
|
|
}
|
|
.pf-learner-table__head,
|
|
.pf-learner-row{
|
|
display:grid;
|
|
grid-template-columns:
|
|
minmax(178px,1.3fr)
|
|
minmax(86px,.55fr)
|
|
minmax(76px,.48fr)
|
|
minmax(64px,.42fr)
|
|
minmax(76px,.48fr)
|
|
minmax(70px,.42fr)
|
|
minmax(112px,.72fr)
|
|
48px
|
|
minmax(104px,.5fr);
|
|
gap:9px;
|
|
align-items:center;
|
|
min-width:1000px;
|
|
}
|
|
.pf-learner-table__head{
|
|
position:sticky;
|
|
top:0;
|
|
z-index:1;
|
|
padding:9px 12px;
|
|
border-bottom:1px solid var(--hair);
|
|
color:var(--text-muted);
|
|
background:var(--bg-surface);
|
|
font-size:var(--fs-xs);
|
|
font-weight:800;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-learner-record{
|
|
min-width:1000px;
|
|
border-top:1px solid var(--paper-2);
|
|
}
|
|
/* 가상화로 첫 행이 헤더의 형제가 아니게 되어 data-index 기준으로 상단 이중선을 막는다. */
|
|
.pf-learner-record[data-index="0"]{
|
|
border-top:0;
|
|
}
|
|
.pf-learner-row{
|
|
padding:10px 12px;
|
|
}
|
|
.pf-learner-record:hover .pf-learner-row,
|
|
.pf-learner-record.is-expanded .pf-learner-row{
|
|
background:color-mix(in srgb,var(--accent-tint) 14%,transparent);
|
|
}
|
|
.pf-learner-row__id,
|
|
.pf-learner-row__metric,
|
|
.pf-learner-row__trend,
|
|
.pf-learner-row__tag-summary,
|
|
.pf-learner-row__tags{
|
|
min-width:0;
|
|
}
|
|
/* 암시적 컬럼(auto = minmax(auto,max-content))은 자식의 width:max-content 요청을
|
|
그대로 수용해 셀 폭(261px)을 넘겨 288px까지 늘어났고, 그 결과 max-width:100%가
|
|
확장된 트랙 기준으로 풀려 ellipsis가 걸리지 않고 옆 컬럼을 침범했다.
|
|
트랙을 minmax(0,1fr)로 고정해야 셀 안에서 잘린다. (2026-07-27 겹침 회귀 수정) */
|
|
.pf-learner-row__id,
|
|
.pf-learner-row__metric,
|
|
.pf-learner-row__tag-summary{
|
|
grid-template-columns:minmax(0,1fr);
|
|
}
|
|
.pf-learner-row__id{
|
|
display:grid;
|
|
gap:3px;
|
|
}
|
|
.pf-learner-name-button{
|
|
width:max-content;
|
|
max-width:100%;
|
|
/* 상세 진입의 주 조작이다. 줄높이만큼(19px)이면 WCAG 2.2 SC 2.5.8(24px)에
|
|
미달해 세로 여백으로 타깃을 채운다. */
|
|
min-height:24px;
|
|
padding:3px 0;
|
|
border:0;
|
|
color:var(--text-strong);
|
|
background:transparent;
|
|
font:inherit;
|
|
font-size:var(--fs-sm);
|
|
font-weight:820;
|
|
line-height:1.35;
|
|
text-align:left;
|
|
cursor:pointer;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-learner-name-button:hover,
|
|
.pf-learner-name-button:focus-visible{
|
|
color:var(--accent-deep);
|
|
text-decoration:underline;
|
|
text-underline-offset:3px;
|
|
}
|
|
.pf-learner-name-button:focus-visible{
|
|
outline:2px solid var(--accent);
|
|
outline-offset:2px;
|
|
}
|
|
.pf-learner-row__id span,
|
|
.pf-learner-row__metric span,
|
|
.pf-learner-row__tag-summary span{
|
|
color:var(--text-muted);
|
|
font-size:11px;
|
|
line-height:1.3;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-learner-row__metric{
|
|
display:grid;
|
|
gap:3px;
|
|
}
|
|
.pf-learner-row__metric::before,
|
|
.pf-learner-row__trend::before,
|
|
.pf-learner-row__tag-summary::before,
|
|
.pf-learner-row__tags::before{
|
|
display:none;
|
|
content:attr(data-label);
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
font-weight:800;
|
|
}
|
|
.pf-learner-row__metric b{
|
|
color:var(--text-strong);
|
|
font-family:var(--font-num);
|
|
font-size:15px;
|
|
line-height:1.15;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-learner-row__trend{
|
|
display:flex;
|
|
align-items:center;
|
|
min-height:30px;
|
|
}
|
|
.pf-learner-row__tag-summary{
|
|
display:grid;
|
|
gap:3px;
|
|
}
|
|
.pf-learner-row__tag-summary b{
|
|
min-width:0;
|
|
color:var(--text-body);
|
|
font-size:var(--fs-xs);
|
|
font-weight:760;
|
|
line-height:1.25;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-learner-spark{
|
|
min-width:0;
|
|
height:46px;
|
|
display:flex;
|
|
align-items:flex-end;
|
|
gap:4px;
|
|
padding:6px 6px 4px;
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius-sm);
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-learner-spark .pf-growth-bar{
|
|
min-width:10px;
|
|
}
|
|
.pf-learner-spark .pf-growth-bar small{
|
|
display:none;
|
|
}
|
|
.pf-learner-row__tags{
|
|
display:flex;
|
|
flex-wrap:wrap;
|
|
gap:5px;
|
|
}
|
|
.pf-learner-row__tags span{
|
|
max-width:100%;
|
|
padding:4px 7px;
|
|
border:1px solid var(--paper-2);
|
|
border-radius:999px;
|
|
color:var(--text-body);
|
|
background:var(--bg-surface-2);
|
|
font-size:11px;
|
|
line-height:1.2;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-learner-row__expand{
|
|
display:flex;
|
|
justify-content:center;
|
|
}
|
|
.pf-icon-action{
|
|
width:34px;
|
|
height:34px;
|
|
display:inline-grid;
|
|
place-items:center;
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius-sm);
|
|
color:var(--text-muted);
|
|
background:var(--bg-surface-2);
|
|
cursor:pointer;
|
|
}
|
|
.pf-icon-action:hover,
|
|
.pf-icon-action:focus-visible,
|
|
.pf-icon-action[aria-expanded="true"]{
|
|
color:var(--accent-deep);
|
|
border-color:var(--accent);
|
|
background:var(--accent-tint);
|
|
}
|
|
.pf-icon-action:focus-visible{
|
|
outline:2px solid var(--accent);
|
|
outline-offset:2px;
|
|
}
|
|
.pf-learner-row__action{
|
|
display:flex;
|
|
justify-content:flex-end;
|
|
}
|
|
.pf-learner-row__action .vg-btn{
|
|
min-width:96px;
|
|
padding-inline:10px;
|
|
}
|
|
.pf-learner-row-detail{
|
|
min-width:1000px;
|
|
display:grid;
|
|
grid-template-columns:minmax(260px,1.4fr) minmax(140px,.72fr) minmax(170px,.85fr) minmax(190px,1fr);
|
|
gap:0;
|
|
padding:0 12px 12px;
|
|
background:color-mix(in srgb,var(--accent-tint) 12%,transparent);
|
|
}
|
|
.pf-learner-detail-item{
|
|
min-width:0;
|
|
display:grid;
|
|
align-content:start;
|
|
gap:5px;
|
|
padding:11px 12px;
|
|
border-top:1px solid var(--hair);
|
|
border-left:1px solid var(--hair);
|
|
background:color-mix(in srgb,var(--bg-surface) 90%,var(--bg-surface-2));
|
|
}
|
|
.pf-learner-detail-item:first-child{
|
|
border-left:0;
|
|
}
|
|
.pf-learner-detail-item > span{
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
font-weight:800;
|
|
line-height:1.25;
|
|
}
|
|
.pf-learner-detail-item > b{
|
|
min-width:0;
|
|
color:var(--text-strong);
|
|
font-family:var(--font-num);
|
|
font-size:14px;
|
|
line-height:1.2;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-learner-detail-item > small{
|
|
color:var(--text-muted);
|
|
font-size:11px;
|
|
line-height:1.3;
|
|
}
|
|
.pf-learner-detail-item--trend{
|
|
gap:8px;
|
|
}
|
|
.pf-learner-detail-item--tags .pf-learner-row__tags{
|
|
align-self:center;
|
|
}
|
|
.pf-recent__review-state{
|
|
color:var(--text-muted);
|
|
font-size:12px;
|
|
line-height:1.4;
|
|
}
|
|
/* [D3] "기록 대기 · 검토 대기"의 가운뎃점을 없애고 두 상태를 공백 컬럼으로 나란히 둔다. */
|
|
.pf-recent__review-state{
|
|
display:flex;
|
|
flex-wrap:wrap;
|
|
gap:0 10px;
|
|
margin-top:3px;
|
|
line-height:1.2;
|
|
}
|
|
.pf-growth-bar{
|
|
flex:1 1 0;
|
|
min-width:14px;
|
|
height:100%;
|
|
display:grid;
|
|
grid-template-rows:minmax(0,1fr) 14px;
|
|
gap:4px;
|
|
align-items:end;
|
|
}
|
|
.pf-growth-bar i{
|
|
display:block;
|
|
width:100%;
|
|
min-height:6px;
|
|
border-radius:6px 6px 3px 3px;
|
|
background:linear-gradient(180deg,var(--accent),var(--accent-deep));
|
|
}
|
|
.pf-growth-bar.is-empty i{
|
|
background:repeating-linear-gradient(135deg,var(--paper-2),var(--paper-2) 3px,var(--hair) 3px,var(--hair) 6px);
|
|
}
|
|
.pf-growth-bar small{
|
|
color:var(--text-muted);
|
|
font-family:var(--font-num);
|
|
font-size:10px;
|
|
text-align:center;
|
|
line-height:1;
|
|
}
|
|
.pf-analysis-panel{
|
|
background:linear-gradient(180deg,var(--bg-surface),color-mix(in srgb,var(--bg-surface-2) 72%,var(--bg-surface)));
|
|
}
|
|
.pf-analysis{
|
|
min-width:0;
|
|
display:grid;
|
|
gap:12px;
|
|
padding:12px;
|
|
}
|
|
.pf-analysis-tabs{
|
|
min-width:0;
|
|
display:grid;
|
|
grid-template-columns:repeat(3,minmax(0,1fr));
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius-sm);
|
|
overflow:hidden;
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-analysis-tabs button{
|
|
min-width:0;
|
|
min-height:48px;
|
|
display:grid;
|
|
gap:3px;
|
|
align-content:center;
|
|
padding:8px 12px;
|
|
border:0;
|
|
border-left:1px solid var(--hair);
|
|
color:var(--text-muted);
|
|
background:transparent;
|
|
font:inherit;
|
|
text-align:left;
|
|
cursor:pointer;
|
|
}
|
|
.pf-analysis-tabs button:first-child{
|
|
border-left:0;
|
|
}
|
|
.pf-analysis-tabs button:hover,
|
|
.pf-analysis-tabs button:focus-visible{
|
|
background:var(--bg-surface);
|
|
}
|
|
.pf-analysis-tabs button:focus-visible{
|
|
outline:2px solid var(--accent);
|
|
outline-offset:-2px;
|
|
}
|
|
.pf-analysis-tabs button.is-active{
|
|
color:var(--text-strong);
|
|
background:color-mix(in srgb,var(--accent-tint) 32%,var(--bg-surface));
|
|
}
|
|
.pf-analysis-tabs b{
|
|
font-size:var(--fs-sm);
|
|
line-height:1.2;
|
|
}
|
|
.pf-analysis-tabs span{
|
|
color:var(--text-muted);
|
|
font-size:11px;
|
|
line-height:1.2;
|
|
}
|
|
.pf-analysis__top{
|
|
min-width:0;
|
|
display:grid;
|
|
grid-template-columns:minmax(210px,.42fr) minmax(0,1fr);
|
|
gap:12px;
|
|
align-items:stretch;
|
|
}
|
|
.pf-analysis__title{
|
|
min-width:0;
|
|
display:grid;
|
|
align-content:center;
|
|
gap:5px;
|
|
padding:12px;
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius-sm);
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-analysis__title b{
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-body);
|
|
line-height:1.35;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-analysis__title span{
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
line-height:1.45;
|
|
overflow-wrap:anywhere;
|
|
}
|
|
.pf-analysis__metrics{
|
|
min-width:0;
|
|
display:grid;
|
|
grid-template-columns:repeat(6,minmax(0,1fr));
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius-sm);
|
|
background:var(--bg-surface-2);
|
|
overflow:hidden;
|
|
}
|
|
.pf-analysis__metrics span{
|
|
min-width:0;
|
|
display:grid;
|
|
align-content:center;
|
|
gap:4px;
|
|
padding:10px 11px;
|
|
}
|
|
.pf-analysis__metrics span + span{
|
|
border-left:1px solid var(--hair);
|
|
}
|
|
.pf-analysis__metrics small,
|
|
.pf-stage-item small,
|
|
.pf-timeline-row__metrics small{
|
|
color:var(--text-muted);
|
|
font-size:11px;
|
|
line-height:1.2;
|
|
}
|
|
.pf-analysis__metrics b,
|
|
.pf-stage-item b,
|
|
.pf-timeline-row__metrics b{
|
|
min-width:0;
|
|
color:var(--text-strong);
|
|
font-family:var(--font-num);
|
|
font-size:15px;
|
|
line-height:1.15;
|
|
white-space:nowrap;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
}
|
|
.pf-analysis__chart,
|
|
.pf-analysis__stages,
|
|
.pf-analysis__personas,
|
|
.pf-analysis__timeline{
|
|
min-width:0;
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius-sm);
|
|
background:color-mix(in srgb,var(--bg-surface) 84%,var(--bg-surface-2));
|
|
overflow:hidden;
|
|
}
|
|
.pf-analysis__subhead{
|
|
display:flex;
|
|
align-items:center;
|
|
justify-content:space-between;
|
|
gap:10px;
|
|
min-width:0;
|
|
padding:10px 12px;
|
|
border-bottom:1px solid var(--hair);
|
|
}
|
|
.pf-analysis__subhead b{
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-sm);
|
|
line-height:1.35;
|
|
}
|
|
.pf-analysis__subhead span{
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
white-space:nowrap;
|
|
}
|
|
.pf-analysis-bars{
|
|
height:118px;
|
|
display:flex;
|
|
align-items:flex-end;
|
|
gap:7px;
|
|
padding:12px;
|
|
overflow-x:auto;
|
|
scrollbar-gutter:stable;
|
|
}
|
|
.pf-analysis-bars .pf-growth-bar{
|
|
flex:0 0 34px;
|
|
}
|
|
.pf-stage-list{
|
|
display:grid;
|
|
grid-template-columns:repeat(4,minmax(0,1fr));
|
|
}
|
|
.pf-stage-item{
|
|
min-width:0;
|
|
display:grid;
|
|
gap:4px;
|
|
padding:12px;
|
|
border-left:1px solid var(--hair);
|
|
}
|
|
.pf-stage-item:first-child{
|
|
border-left:0;
|
|
}
|
|
.pf-stage-item span{
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
font-weight:700;
|
|
}
|
|
.pf-persona-drill{
|
|
display:flex;
|
|
flex-direction:column;
|
|
max-height:min(580px,62vh);
|
|
overflow:auto;
|
|
scrollbar-gutter:stable;
|
|
}
|
|
.pf-persona-group{
|
|
min-width:0;
|
|
border-top:1px solid var(--paper-2);
|
|
}
|
|
.pf-persona-group:first-child{
|
|
border-top:0;
|
|
}
|
|
.pf-persona-group__summary{
|
|
width:100%;
|
|
min-width:0;
|
|
display:grid;
|
|
grid-template-columns:44px minmax(160px,1fr) minmax(260px,.92fr) auto;
|
|
gap:10px;
|
|
align-items:center;
|
|
padding:12px;
|
|
border:0;
|
|
background:transparent;
|
|
color:inherit;
|
|
font:inherit;
|
|
text-align:left;
|
|
cursor:pointer;
|
|
}
|
|
.pf-persona-group__summary:hover,
|
|
.pf-persona-group.is-open .pf-persona-group__summary{
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-persona-group__summary:focus-visible{
|
|
outline:2px solid var(--accent);
|
|
outline-offset:-2px;
|
|
}
|
|
.pf-persona-group__code{
|
|
width:38px;
|
|
height:34px;
|
|
display:grid;
|
|
place-items:center;
|
|
border-radius:var(--radius-sm);
|
|
color:var(--accent-deep);
|
|
background:var(--accent-tint);
|
|
font-family:var(--font-num);
|
|
font-size:12px;
|
|
font-weight:830;
|
|
}
|
|
.pf-persona-group__main{
|
|
min-width:0;
|
|
display:grid;
|
|
gap:4px;
|
|
}
|
|
.pf-persona-group__main b{
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-sm);
|
|
line-height:1.35;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-persona-group__main small{
|
|
color:var(--text-muted);
|
|
font-size:12px;
|
|
line-height:1.35;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-persona-group__metrics{
|
|
min-width:0;
|
|
display:grid;
|
|
grid-template-columns:repeat(4,minmax(58px,1fr));
|
|
gap:7px;
|
|
}
|
|
.pf-persona-group__metrics span{
|
|
min-width:0;
|
|
display:grid;
|
|
gap:3px;
|
|
}
|
|
.pf-persona-group__metrics small{
|
|
color:var(--text-muted);
|
|
font-size:11px;
|
|
line-height:1.2;
|
|
}
|
|
.pf-persona-group__metrics b{
|
|
min-width:0;
|
|
color:var(--text-strong);
|
|
font-family:var(--font-num);
|
|
font-size:15px;
|
|
line-height:1.15;
|
|
white-space:nowrap;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
}
|
|
.pf-persona-group__open{
|
|
display:inline-flex;
|
|
align-items:center;
|
|
justify-content:center;
|
|
gap:4px;
|
|
min-height:30px;
|
|
padding:0 8px;
|
|
border:1px solid var(--hair);
|
|
border-radius:var(--radius-sm);
|
|
color:var(--accent-deep);
|
|
background:var(--accent-tint);
|
|
font-size:var(--fs-xs);
|
|
font-weight:760;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-persona-group__summary:hover .pf-persona-group__open{
|
|
border-color:var(--accent);
|
|
}
|
|
.pf-persona-sessions{
|
|
margin:0 12px 12px 56px;
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius-sm);
|
|
overflow:hidden;
|
|
background:var(--bg-surface);
|
|
}
|
|
.pf-persona-sessions .pf-timeline-row{
|
|
grid-template-columns:34px minmax(150px,1fr) minmax(200px,.82fr) minmax(104px,.42fr) auto;
|
|
padding:10px;
|
|
}
|
|
.pf-persona-sessions .pf-timeline-row__step{
|
|
width:28px;
|
|
height:28px;
|
|
}
|
|
.pf-timeline{
|
|
max-height:min(520px,58vh);
|
|
overflow:auto;
|
|
scrollbar-gutter:stable;
|
|
display:flex;
|
|
flex-direction:column;
|
|
}
|
|
.pf-timeline-row{
|
|
width:100%;
|
|
font:inherit;
|
|
text-align:left;
|
|
color:inherit;
|
|
background:transparent;
|
|
display:grid;
|
|
grid-template-columns:38px minmax(170px,1fr) minmax(210px,.82fr) minmax(112px,.42fr) auto;
|
|
gap:10px;
|
|
align-items:center;
|
|
padding:12px;
|
|
border:0;
|
|
border-top:1px solid var(--paper-2);
|
|
cursor:pointer;
|
|
}
|
|
.pf-timeline-row:first-child{
|
|
border-top:0;
|
|
}
|
|
.pf-timeline-row:hover{
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-timeline-row:focus-visible{
|
|
outline:2px solid var(--accent);
|
|
outline-offset:-2px;
|
|
}
|
|
.pf-timeline-row__step{
|
|
width:32px;
|
|
height:32px;
|
|
display:grid;
|
|
place-items:center;
|
|
border-radius:var(--radius-sm);
|
|
color:var(--accent-deep);
|
|
background:var(--accent-tint);
|
|
font-family:var(--font-num);
|
|
font-weight:800;
|
|
}
|
|
.pf-timeline-row__main{
|
|
min-width:0;
|
|
display:grid;
|
|
gap:3px;
|
|
}
|
|
.pf-timeline-row__main b{
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-sm);
|
|
line-height:1.35;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-timeline-row__main span,
|
|
.pf-timeline-row__main code,
|
|
.pf-timeline-row__dates span{
|
|
color:var(--text-muted);
|
|
font-size:12px;
|
|
line-height:1.35;
|
|
}
|
|
.pf-timeline-row__main span{
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-timeline-row__main code{
|
|
font-family:var(--font-num);
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-timeline-row__metrics{
|
|
min-width:0;
|
|
display:grid;
|
|
grid-template-columns:minmax(58px,.8fr) minmax(58px,.8fr) minmax(86px,1.12fr);
|
|
gap:7px;
|
|
}
|
|
.pf-timeline-row__metrics span{
|
|
min-width:0;
|
|
display:grid;
|
|
gap:3px;
|
|
}
|
|
.pf-timeline-row__metrics .vg-badge{
|
|
justify-self:start;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-timeline-row__dates{
|
|
display:grid;
|
|
gap:3px;
|
|
min-width:0;
|
|
font-family:var(--font-num);
|
|
}
|
|
.pf-timeline-row__open{
|
|
display:inline-flex;
|
|
align-items:center;
|
|
justify-content:center;
|
|
gap:4px;
|
|
min-height:30px;
|
|
padding:0 8px;
|
|
border:1px solid var(--hair);
|
|
border-radius:var(--radius-sm);
|
|
color:var(--accent-deep);
|
|
background:var(--accent-tint);
|
|
font-size:var(--fs-xs);
|
|
font-weight:760;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-timeline-row:hover .pf-timeline-row__open{
|
|
border-color:var(--accent);
|
|
}
|
|
.pf-empty{
|
|
min-height:118px;
|
|
display:grid;
|
|
place-items:center;
|
|
gap:6px;
|
|
padding:var(--sp-5);
|
|
text-align:center;
|
|
}
|
|
.pf-empty b{
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-body);
|
|
}
|
|
.pf-empty span{
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
}
|
|
.pf-list{
|
|
max-height:min(320px,42vh);
|
|
overflow:auto;
|
|
scrollbar-gutter:stable;
|
|
display:flex;
|
|
flex-direction:column;
|
|
}
|
|
.pf-personas{
|
|
max-height:min(320px,42vh);
|
|
overflow:auto;
|
|
scrollbar-gutter:stable;
|
|
display:flex;
|
|
flex-direction:column;
|
|
}
|
|
.pf-persona{
|
|
display:grid;
|
|
grid-template-columns:minmax(0,1fr);
|
|
gap:8px;
|
|
align-items:start;
|
|
padding:12px;
|
|
border-top:1px solid var(--paper-2);
|
|
}
|
|
.pf-persona:first-child{border-top:0;}
|
|
.pf-persona__main{
|
|
min-width:0;
|
|
display:grid;
|
|
grid-template-columns:40px minmax(0,1fr);
|
|
gap:10px;
|
|
align-items:center;
|
|
}
|
|
.pf-persona__code{
|
|
width:40px;
|
|
height:32px;
|
|
display:grid;
|
|
place-items:center;
|
|
border-radius:var(--radius);
|
|
color:var(--accent-deep);
|
|
background:var(--accent-tint);
|
|
font-family:var(--font-num);
|
|
font-weight:800;
|
|
font-size:12px;
|
|
}
|
|
.pf-persona__main b{
|
|
display:block;
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-sm);
|
|
line-height:1.35;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-persona__main span,
|
|
.pf-persona p,
|
|
.pf-persona__meta span{
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
line-height:1.45;
|
|
}
|
|
.pf-persona p{
|
|
margin:0;
|
|
min-width:0;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-persona__meta{
|
|
display:flex;
|
|
align-items:center;
|
|
gap:10px;
|
|
justify-content:space-between;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-persona__actions{
|
|
display:flex;
|
|
justify-content:flex-end;
|
|
gap:8px;
|
|
min-width:0;
|
|
}
|
|
.pf-persona__actions .vg-btn{
|
|
min-width:72px;
|
|
padding-inline:10px;
|
|
}
|
|
.pf-alerts{
|
|
max-height:min(300px,38vh);
|
|
overflow:auto;
|
|
scrollbar-gutter:stable;
|
|
display:flex;
|
|
flex-direction:column;
|
|
}
|
|
.pf-alert{
|
|
display:grid;
|
|
grid-template-columns:auto minmax(0,1fr) auto;
|
|
gap:10px;
|
|
align-items:center;
|
|
padding:12px;
|
|
border-top:1px solid var(--paper-2);
|
|
background:color-mix(in srgb,var(--warn-tint) 34%,transparent);
|
|
}
|
|
.pf-alert:first-child{border-top:0;}
|
|
.pf-alert__ic{
|
|
width:30px;
|
|
height:30px;
|
|
display:grid;
|
|
place-items:center;
|
|
border-radius:var(--radius);
|
|
color:var(--warn-text);
|
|
background:var(--warn-tint);
|
|
}
|
|
.pf-alert__main{
|
|
min-width:0;
|
|
display:grid;
|
|
gap:3px;
|
|
}
|
|
.pf-alert__main b{
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-sm);
|
|
}
|
|
.pf-alert__main span,
|
|
.pf-alert__main code,
|
|
.pf-alert__resource span{
|
|
color:var(--text-muted);
|
|
font-size:12px;
|
|
}
|
|
.pf-alert__main code{
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-alert__resource{
|
|
display:grid;
|
|
gap:2px;
|
|
justify-items:end;
|
|
min-width:86px;
|
|
}
|
|
.pf-alert__resource b{
|
|
color:var(--warn-text);
|
|
font-family:var(--font-num);
|
|
font-size:18px;
|
|
}
|
|
.pf-session{
|
|
width:100%;
|
|
font:inherit;
|
|
text-align:left;
|
|
background:transparent;
|
|
color:inherit;
|
|
display:grid;
|
|
grid-template-columns:8px minmax(0,1fr) auto;
|
|
gap:8px 10px;
|
|
align-items:start;
|
|
padding:12px;
|
|
border:0;
|
|
border-top:1px solid var(--paper-2);
|
|
cursor:default;
|
|
}
|
|
.pf-session:first-child{border-top:0;}
|
|
.pf-session--action{
|
|
cursor:pointer;
|
|
}
|
|
.pf-session--action:hover{
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-session--action:focus-visible{
|
|
outline:2px solid var(--accent);
|
|
outline-offset:-2px;
|
|
}
|
|
.pf-session__dot{
|
|
width:8px;
|
|
height:8px;
|
|
border-radius:50%;
|
|
background:var(--accent);
|
|
}
|
|
.pf-session__main{
|
|
min-width:0;
|
|
display:flex;
|
|
flex-direction:column;
|
|
gap:3px;
|
|
}
|
|
.pf-session__main b{
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-sm);
|
|
}
|
|
.pf-session__main span,.pf-session__main code{
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
overflow-wrap:anywhere;
|
|
}
|
|
.pf-session__main code,.pf-recent__learner code{
|
|
font-family:var(--font-num);
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
}
|
|
.pf-session__meta{
|
|
grid-column:2 / 4;
|
|
display:flex;
|
|
align-items:center;
|
|
justify-content:space-between;
|
|
gap:8px;
|
|
color:var(--text-muted);
|
|
font-family:var(--font-num);
|
|
font-size:var(--fs-xs);
|
|
white-space:normal;
|
|
}
|
|
.pf-session__open{
|
|
grid-column:3;
|
|
grid-row:1;
|
|
display:inline-flex;
|
|
align-items:center;
|
|
gap:5px;
|
|
align-self:center;
|
|
justify-self:end;
|
|
min-height:30px;
|
|
padding:0 9px;
|
|
border:1px solid var(--hair);
|
|
border-radius:var(--radius-sm);
|
|
color:var(--accent-deep);
|
|
background:var(--accent-tint);
|
|
font-size:var(--fs-xs);
|
|
font-weight:760;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-session--action:hover .pf-session__open{
|
|
border-color:var(--accent);
|
|
}
|
|
.pf-recent-list{
|
|
max-height:min(620px,calc(100vh - 220px));
|
|
overflow:auto;
|
|
scrollbar-gutter:stable;
|
|
min-width:0;
|
|
}
|
|
.pf-recent-head,
|
|
.pf-recent-row{
|
|
display:grid;
|
|
grid-template-columns:
|
|
minmax(128px,1.25fr)
|
|
minmax(58px,.55fr)
|
|
minmax(66px,.55fr)
|
|
minmax(82px,.85fr)
|
|
minmax(32px,.35fr)
|
|
minmax(70px,.6fr)
|
|
minmax(66px,.55fr)
|
|
minmax(86px,.65fr);
|
|
align-items:center;
|
|
gap:8px;
|
|
min-width:0;
|
|
}
|
|
.pf-recent-head{
|
|
position:sticky;
|
|
top:0;
|
|
z-index:1;
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
font-weight:700;
|
|
padding:9px 12px;
|
|
border-bottom:1px solid var(--hair);
|
|
background:var(--bg-surface);
|
|
white-space:nowrap;
|
|
}
|
|
.pf-recent-row{
|
|
width:100%;
|
|
font:inherit;
|
|
text-align:left;
|
|
color:inherit;
|
|
background:transparent;
|
|
padding:10px 12px;
|
|
border:0;
|
|
border-top:1px solid var(--paper-2);
|
|
}
|
|
.pf-recent-row--action{
|
|
cursor:pointer;
|
|
}
|
|
.pf-recent-row--action:hover{
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-recent-row--action:focus-visible{
|
|
outline:2px solid var(--accent);
|
|
outline-offset:-2px;
|
|
}
|
|
.pf-recent-head + .pf-recent-row{
|
|
border-top:0;
|
|
}
|
|
.pf-recent__learner,
|
|
.pf-recent__cell{
|
|
min-width:0;
|
|
color:var(--text-body);
|
|
font-size:var(--fs-sm);
|
|
overflow-wrap:anywhere;
|
|
}
|
|
.pf-recent__cell::before{
|
|
display:none;
|
|
}
|
|
.pf-recent__learner{
|
|
min-width:0;
|
|
display:flex;
|
|
flex-direction:column;
|
|
gap:3px;
|
|
}
|
|
.pf-recent__learner b{
|
|
color:var(--text-strong);
|
|
font-size:var(--fs-sm);
|
|
line-height:1.35;
|
|
overflow-wrap:anywhere;
|
|
}
|
|
.pf-recent__learner code{
|
|
max-width:100%;
|
|
color:var(--text-muted);
|
|
font-size:11px;
|
|
white-space:nowrap;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
}
|
|
.pf-recent__cell .vg-badge{
|
|
justify-self:start;
|
|
}
|
|
.pf-recent__cell--open{
|
|
display:flex;
|
|
justify-content:flex-end;
|
|
}
|
|
.pf-recent__open{
|
|
display:inline-flex;
|
|
align-items:center;
|
|
justify-content:center;
|
|
gap:4px;
|
|
min-height:30px;
|
|
padding:0 7px;
|
|
border:1px solid var(--hair);
|
|
border-radius:var(--radius-sm);
|
|
color:var(--accent-deep);
|
|
background:var(--accent-tint);
|
|
font-size:var(--fs-xs);
|
|
font-weight:760;
|
|
white-space:nowrap;
|
|
}
|
|
.pf-recent-row--action:hover .pf-recent__open{
|
|
border-color:var(--accent);
|
|
}
|
|
/* =====================================================================
|
|
2026-07-27 화면 정리 — D1(dot 밀도) / D3(가운뎃점) / D5(빈 상태 중립 기호)
|
|
===================================================================== */
|
|
/* [D5] 값이 없는 칸은 "평가 부족" 같은 부정어 대신 중립 기호 "-"를 쓰고, muted 로
|
|
눌러 값이 실제로 있는 행이 도드라지게 한다. 셀의 <b>/<small>이 text-strong 을
|
|
지정하므로 .pf-root 를 앞에 붙여 우선순위를 확보한다. */
|
|
.pf-root .pf-empty-mark{
|
|
color:var(--text-muted);
|
|
font-weight:600;
|
|
}
|
|
/* [D5] 빈 칸의 뜻을 표 상단에서 한 번만 설명하는 안내 줄. */
|
|
.pf-table-note{
|
|
margin:0;
|
|
padding:8px 12px;
|
|
border-bottom:1px solid var(--hair);
|
|
color:var(--text-muted);
|
|
background:color-mix(in srgb,var(--bg-surface) 86%,var(--bg-surface-2));
|
|
font-size:var(--fs-xs);
|
|
line-height:1.45;
|
|
}
|
|
/* [D3] 한 줄에 가운뎃점 1개. 남은 정보는 공백 컬럼으로 분리한다. */
|
|
.pf-session__facts,
|
|
.pf-persona__facts,
|
|
.pf-persona-group__facts,
|
|
.pf-timeline-row__facts,
|
|
.pf-alert__facts{
|
|
min-width:0;
|
|
display:flex;
|
|
flex-wrap:wrap;
|
|
gap:0 12px;
|
|
}
|
|
/* 분리된 컬럼도 원래대로 셀 안에서 잘리게 유지한다(겹침 회귀 방지). */
|
|
.pf-persona-group__facts > span,
|
|
.pf-timeline-row__facts > span{
|
|
min-width:0;
|
|
overflow:hidden;
|
|
text-overflow:ellipsis;
|
|
white-space:nowrap;
|
|
}
|
|
@media (max-width:1100px){
|
|
.pf-signal-strip,
|
|
.pf-workspace{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-triage{
|
|
grid-template-columns:auto minmax(0,max-content) auto;
|
|
justify-content:start;
|
|
}
|
|
.pf-kpis{
|
|
grid-template-columns:repeat(4,minmax(0,1fr));
|
|
}
|
|
.pf-kpi:nth-child(n+2){border-left:1px solid var(--hair);}
|
|
.pf-kpi:nth-child(n+4){border-top:0;}
|
|
.pf-learner-toolbar{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-sort-segment{
|
|
justify-content:flex-start;
|
|
overflow:auto;
|
|
scrollbar-gutter:stable;
|
|
}
|
|
.pf-learner-table{
|
|
background:var(--bg-surface-2);
|
|
}
|
|
.pf-analysis__top{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-analysis__metrics{
|
|
grid-template-columns:repeat(3,minmax(0,1fr));
|
|
}
|
|
.pf-analysis__metrics span:nth-child(3n+1){
|
|
border-left:0;
|
|
}
|
|
.pf-analysis__metrics span:nth-child(n+4){
|
|
border-top:1px solid var(--hair);
|
|
}
|
|
.pf-persona-group__summary{
|
|
grid-template-columns:44px minmax(0,1fr) auto;
|
|
}
|
|
.pf-persona-group__metrics{
|
|
grid-column:2 / 4;
|
|
grid-row:2;
|
|
}
|
|
.pf-persona-sessions .pf-timeline-row{
|
|
grid-template-columns:34px minmax(0,1fr) minmax(190px,.85fr) auto;
|
|
}
|
|
.pf-timeline-row{
|
|
grid-template-columns:34px minmax(0,1fr) minmax(190px,.85fr) auto;
|
|
}
|
|
.pf-timeline-row__dates{
|
|
grid-column:2 / 4;
|
|
grid-row:2;
|
|
grid-template-columns:repeat(2,minmax(0,1fr));
|
|
}
|
|
.pf-list,
|
|
.pf-personas{
|
|
max-height:360px;
|
|
}
|
|
.pf-recent-list{
|
|
max-height:460px;
|
|
}
|
|
}
|
|
@media (max-width:860px){
|
|
.pf-head__actions{
|
|
width:100%;
|
|
justify-content:flex-start;
|
|
}
|
|
.pf-analysis-detail-head{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-depth-strip{
|
|
grid-template-columns:repeat(2,minmax(0,1fr));
|
|
}
|
|
.pf-depth-strip span:nth-child(odd){
|
|
border-left:0;
|
|
}
|
|
.pf-depth-strip span:nth-child(n+3){
|
|
border-top:1px solid var(--hair);
|
|
}
|
|
.pf-triage{
|
|
grid-template-columns:auto minmax(0,1fr);
|
|
}
|
|
.pf-triage__meta{
|
|
grid-column:1 / -1;
|
|
width:100%;
|
|
}
|
|
.pf-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
|
|
.pf-kpi:nth-child(n+2){border-left:0;}
|
|
.pf-kpi:nth-child(even){border-left:1px solid var(--hair);}
|
|
.pf-kpi:nth-child(n+3){border-top:1px solid var(--hair);}
|
|
.pf-analysis{
|
|
padding:10px;
|
|
}
|
|
.pf-analysis-tabs{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-analysis-tabs button,
|
|
.pf-analysis-tabs button:first-child{
|
|
border-left:0;
|
|
}
|
|
.pf-analysis-tabs button:nth-child(n+2){
|
|
border-top:1px solid var(--hair);
|
|
}
|
|
.pf-analysis__metrics{
|
|
grid-template-columns:repeat(2,minmax(0,1fr));
|
|
}
|
|
.pf-analysis__metrics span,
|
|
.pf-analysis__metrics span:nth-child(3n+1){
|
|
border-left:0;
|
|
}
|
|
.pf-analysis__metrics span:nth-child(even){
|
|
border-left:1px solid var(--hair);
|
|
}
|
|
.pf-analysis__metrics span:nth-child(n+3){
|
|
border-top:1px solid var(--hair);
|
|
}
|
|
.pf-stage-list{
|
|
grid-template-columns:repeat(2,minmax(0,1fr));
|
|
}
|
|
.pf-stage-item,
|
|
.pf-stage-item:first-child{
|
|
border-left:0;
|
|
}
|
|
.pf-stage-item:nth-child(even){
|
|
border-left:1px solid var(--hair);
|
|
}
|
|
.pf-stage-item:nth-child(n+3){
|
|
border-top:1px solid var(--hair);
|
|
}
|
|
.pf-persona-drill{
|
|
max-height:560px;
|
|
}
|
|
.pf-persona-group__summary{
|
|
grid-template-columns:38px minmax(0,1fr);
|
|
align-items:start;
|
|
}
|
|
.pf-persona-group__metrics,
|
|
.pf-persona-group__open{
|
|
grid-column:2;
|
|
}
|
|
.pf-persona-group__metrics{
|
|
grid-row:auto;
|
|
grid-template-columns:repeat(4,minmax(0,1fr));
|
|
}
|
|
.pf-persona-group__open{
|
|
justify-self:start;
|
|
}
|
|
.pf-persona-sessions{
|
|
margin:0 10px 10px 48px;
|
|
}
|
|
.pf-persona-sessions .pf-timeline-row{
|
|
grid-template-columns:34px minmax(0,1fr);
|
|
align-items:start;
|
|
}
|
|
.pf-timeline{
|
|
max-height:560px;
|
|
}
|
|
.pf-timeline-row{
|
|
grid-template-columns:34px minmax(0,1fr);
|
|
align-items:start;
|
|
}
|
|
.pf-timeline-row__main{
|
|
grid-column:2;
|
|
}
|
|
.pf-timeline-row__metrics,
|
|
.pf-timeline-row__dates,
|
|
.pf-timeline-row__open{
|
|
grid-column:2;
|
|
}
|
|
.pf-timeline-row__metrics{
|
|
grid-template-columns:repeat(3,minmax(0,1fr));
|
|
}
|
|
.pf-timeline-row__dates{
|
|
grid-row:auto;
|
|
}
|
|
.pf-timeline-row__open{
|
|
justify-self:start;
|
|
}
|
|
.pf-recent-list{
|
|
display:flex;
|
|
flex-direction:column;
|
|
gap:10px;
|
|
padding:10px;
|
|
background:var(--bg-surface-2);
|
|
overflow-x:hidden;
|
|
}
|
|
.pf-recent-head{
|
|
display:none;
|
|
}
|
|
.pf-recent-row{
|
|
display:grid;
|
|
grid-template-columns:repeat(2,minmax(0,1fr));
|
|
gap:10px 12px;
|
|
padding:12px;
|
|
border:1px solid var(--paper-2);
|
|
border-radius:var(--radius);
|
|
background:var(--bg-surface);
|
|
}
|
|
.pf-recent__learner{
|
|
grid-column:1 / -1;
|
|
padding-bottom:10px;
|
|
border-bottom:1px solid var(--paper-2);
|
|
}
|
|
.pf-recent__learner code{
|
|
white-space:normal;
|
|
overflow-wrap:anywhere;
|
|
}
|
|
.pf-recent__cell{
|
|
display:grid;
|
|
grid-template-columns:minmax(74px,.4fr) minmax(0,1fr);
|
|
gap:8px;
|
|
align-items:center;
|
|
}
|
|
.pf-recent__cell--open{
|
|
justify-content:stretch;
|
|
}
|
|
.pf-recent__cell::before{
|
|
display:block;
|
|
content:attr(data-label);
|
|
color:var(--text-muted);
|
|
font-size:var(--fs-xs);
|
|
font-weight:700;
|
|
line-height:1.35;
|
|
}
|
|
.pf-session{
|
|
grid-template-columns:8px minmax(0,1fr);
|
|
}
|
|
.pf-session__meta{
|
|
grid-column:2;
|
|
justify-content:flex-start;
|
|
}
|
|
.pf-session__open{
|
|
grid-column:2;
|
|
grid-row:auto;
|
|
justify-self:start;
|
|
}
|
|
}
|
|
@media (max-width:520px){
|
|
.pf-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
|
|
.pf-kpi,
|
|
.pf-kpi + .pf-kpi{border-left:0;}
|
|
.pf-kpi:nth-child(even){border-left:1px solid var(--hair);}
|
|
.pf-kpi:nth-child(n+3){border-top:1px solid var(--hair);}
|
|
.pf-persona__actions{
|
|
display:grid;
|
|
grid-template-columns:repeat(2,minmax(0,1fr));
|
|
}
|
|
.pf-persona__actions .vg-btn{
|
|
width:100%;
|
|
}
|
|
.pf-depth-strip{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-depth-strip span,
|
|
.pf-depth-strip span:nth-child(odd){
|
|
border-left:0;
|
|
}
|
|
.pf-depth-strip span:nth-child(n+2){
|
|
border-top:1px solid var(--hair);
|
|
}
|
|
.pf-learner-toolbar{
|
|
padding:10px;
|
|
}
|
|
.pf-sort-segment{
|
|
display:grid;
|
|
grid-template-columns:repeat(2,minmax(0,1fr));
|
|
overflow:hidden;
|
|
}
|
|
.pf-sort-segment button,
|
|
.pf-sort-segment button:first-child{
|
|
border-left:0;
|
|
}
|
|
.pf-sort-segment button:nth-child(even){
|
|
border-left:1px solid var(--hair);
|
|
}
|
|
.pf-sort-segment button:nth-child(n+3){
|
|
border-top:1px solid var(--hair);
|
|
}
|
|
.pf-analysis__metrics{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-analysis__metrics span,
|
|
.pf-analysis__metrics span:nth-child(even),
|
|
.pf-analysis__metrics span:nth-child(3n+1){
|
|
border-left:0;
|
|
}
|
|
.pf-analysis__metrics span:nth-child(n+2){
|
|
border-top:1px solid var(--hair);
|
|
}
|
|
.pf-stage-list{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-stage-item,
|
|
.pf-stage-item:nth-child(even),
|
|
.pf-stage-item:first-child{
|
|
border-left:0;
|
|
}
|
|
.pf-stage-item:nth-child(n+2){
|
|
border-top:1px solid var(--hair);
|
|
}
|
|
.pf-persona-group__summary{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-persona-group__code{
|
|
width:auto;
|
|
min-width:38px;
|
|
justify-self:start;
|
|
padding:0 10px;
|
|
}
|
|
.pf-persona-group__metrics,
|
|
.pf-persona-group__open{
|
|
grid-column:1;
|
|
}
|
|
.pf-persona-group__metrics{
|
|
grid-template-columns:repeat(2,minmax(0,1fr));
|
|
}
|
|
.pf-persona-sessions{
|
|
margin:0 8px 8px;
|
|
}
|
|
.pf-persona-sessions .pf-timeline-row__metrics{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-timeline-row__metrics{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-timeline-row__dates{
|
|
grid-template-columns:1fr;
|
|
}
|
|
.pf-alert{
|
|
grid-template-columns:auto minmax(0,1fr);
|
|
}
|
|
.pf-alert__resource{
|
|
grid-column:2;
|
|
justify-items:start;
|
|
}
|
|
.pf-recent-list{
|
|
padding:8px;
|
|
}
|
|
.pf-recent-row{
|
|
grid-template-columns:1fr;
|
|
gap:10px;
|
|
}
|
|
.pf-recent__cell{
|
|
grid-template-columns:minmax(64px,.32fr) minmax(0,1fr);
|
|
}
|
|
.pf-recent__cell--open .pf-recent__open{
|
|
justify-self:start;
|
|
}
|
|
}
|