vignette/apps/web/src/pages/session-review/session-review.css
2026-07-03 19:53:14 +09:00

1826 lines
38 KiB
CSS

/* SessionReview page-only layout and components. */
.sr-root {
width: min(100%, 1360px);
margin: 0 auto;
display: grid;
gap: var(--sp-5);
}
.sr-root--empty {
--sr-empty-tone: var(--neutral-sig);
}
.sr-head {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: var(--sp-5);
padding: var(--sp-4) var(--sp-5);
border: 1px solid var(--border-subtle);
border-radius: var(--radius);
background:
linear-gradient(180deg, color-mix(in srgb, var(--bg-surface) 86%, var(--accent-tint)), var(--bg-surface));
box-shadow: var(--shadow-sm);
}
.sr-head__id {
min-width: 0;
display: grid;
grid-template-columns: auto minmax(0, 1fr);
align-items: center;
gap: var(--sp-4);
}
.sr-avatar {
width: 48px;
height: 48px;
border-radius: 50%;
flex: none;
display: inline-flex;
align-items: center;
justify-content: center;
font-family: var(--font-num);
font-size: 20px;
font-weight: 700;
letter-spacing: 0;
color: var(--clay-deep);
background: var(--clay-tint);
}
.sr-head__name {
min-width: 0;
color: var(--text-strong);
font-size: var(--fs-h3);
font-weight: 680;
letter-spacing: 0;
line-height: 1.25;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.sr-head__meta {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px 10px;
margin-top: 5px;
color: var(--text-muted);
font-size: var(--fs-xs);
}
.sr-head__meta .sr-mono {
font-family: var(--font-num);
}
.sr-meta-sep {
width: 3px;
height: 3px;
border-radius: 50%;
background: var(--neutral-200);
flex: none;
}
.sr-head__stats {
display: grid;
grid-template-columns: repeat(2, minmax(130px, auto));
gap: var(--sp-2);
}
.sr-stat {
min-width: 0;
display: grid;
gap: 5px;
padding: 9px 12px;
border: 1px solid var(--border-subtle);
border-radius: var(--radius);
background: var(--bg-surface-2);
}
.sr-stat__lab {
font-family: var(--font-num);
font-size: var(--fs-kicker);
font-weight: 650;
letter-spacing: 0.06em;
color: var(--text-muted);
}
.sr-stat__val {
min-width: 0;
display: inline-flex;
align-items: center;
gap: 7px;
color: var(--text-strong);
font-size: var(--fs-sm);
font-weight: 650;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.sr-stat__val--accent {
color: var(--accent-deep);
}
.sr-cols {
min-width: 0;
display: grid;
grid-template-columns: minmax(236px, 280px) minmax(0, 1fr) minmax(286px, 340px);
grid-template-areas:
"overview chart rubric"
"overview flow rubric"
"overview transcript good"
"overview transcript growth"
"overview transcript prepost"
"overview transcript worksheet"
"overview transcript feedback"
"session session session";
gap: var(--sp-4);
align-items: start;
margin-top: 0;
}
.sr-cols--supervisor {
grid-template-areas:
"overview chart teacher"
"overview flow rubric"
"overview transcript good"
"overview transcript growth"
"overview transcript prepost"
"overview transcript worksheet"
"overview transcript feedback"
"session session session";
}
.sr-cols--learner {
grid-template-columns: minmax(232px, 300px) minmax(380px, 1fr) minmax(264px, 328px);
grid-template-areas:
"overview transcript rubric"
"chart transcript good"
"flow transcript growth"
"worksheet worksheet prepost"
"worksheet worksheet feedback"
"session session session";
}
.sr-cols--learner .sr-overview {
position: sticky;
top: calc(var(--topbar-h) + var(--sp-4));
max-height: calc(100vh - var(--topbar-h) - var(--sp-5) - var(--sp-5));
overflow: auto;
scrollbar-gutter: stable;
}
.sr-root--empty .sr-cols {
grid-template-columns: minmax(236px, 300px) minmax(0, 1fr);
grid-template-areas:
"overview chart"
"overview flow"
"overview transcript"
"overview rubric"
"overview good"
"overview growth"
"overview prepost"
"overview worksheet"
"overview feedback"
"session session";
}
.sr-root--empty .sr-cols--supervisor {
grid-template-areas:
"overview chart"
"overview flow"
"overview teacher"
"overview transcript"
"overview rubric"
"overview good"
"overview growth"
"overview prepost"
"overview worksheet"
"overview feedback"
"session session";
}
.sr-left,
.sr-right {
display: contents;
}
.sr-overview {
grid-area: overview;
min-width: 0;
display: grid;
gap: var(--sp-3);
align-self: start;
position: sticky;
top: calc(var(--topbar-h) + var(--sp-4));
z-index: 1;
max-height: calc(100vh - var(--topbar-h) - var(--sp-5) - var(--sp-5));
overflow: auto;
scrollbar-gutter: stable;
}
.sr-feedback {
grid-area: feedback;
}
.sr-card--chart {
grid-area: chart;
}
.sr-card--flow {
grid-area: flow;
}
.sr-card--rubric {
grid-area: rubric;
}
.sr-card--teacher-review {
grid-area: teacher;
}
.sr-card--good {
grid-area: good;
}
.sr-card--growth {
grid-area: growth;
}
.sr-card--prepost {
grid-area: prepost;
}
.sr-card--worksheet {
grid-area: worksheet;
}
.sr-card--transcript {
grid-area: transcript;
}
.sr-session-id {
grid-area: session;
}
.sr-card {
min-width: 0;
box-shadow: var(--shadow-sm);
border-radius: var(--radius);
}
.sr-card--side {
align-self: start;
}
@media (min-width: 1181px) {
.sr-cols--supervisor {
grid-template-columns: minmax(0, 1fr) minmax(286px, 340px);
grid-template-areas: "main side";
align-items: start;
}
.sr-cols--supervisor .sr-left {
grid-area: main;
min-width: 0;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-areas:
"overview overview"
"chart flow"
"transcript transcript";
gap: var(--sp-4);
align-items: start;
}
.sr-cols--supervisor .sr-right {
grid-area: side;
min-width: 0;
display: grid;
gap: var(--sp-4);
align-items: start;
}
.sr-cols--supervisor .sr-left > *,
.sr-cols--supervisor .sr-right > * {
grid-area: auto;
}
.sr-cols--supervisor .sr-overview {
grid-area: overview;
position: static;
max-height: none;
overflow: visible;
scrollbar-gutter: auto;
}
.sr-cols--supervisor .sr-card--chart {
grid-area: chart;
}
.sr-cols--supervisor .sr-card--flow {
grid-area: flow;
}
.sr-cols--supervisor .sr-card--transcript {
grid-area: transcript;
align-self: start;
}
}
.sr-root--empty .sr-card--side {
padding-top: var(--sp-5);
padding-bottom: var(--sp-5);
}
.sr-teacher-review__head {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: var(--sp-3);
margin-bottom: var(--sp-3);
}
.sr-teacher-review__head b {
display: block;
margin-top: 6px;
color: var(--text-strong);
font-size: var(--fs-body);
line-height: 1.35;
}
.sr-teacher-review__head--sub {
margin-bottom: var(--sp-2);
}
.sr-eval-scope {
display: grid;
gap: var(--sp-2);
margin-bottom: var(--sp-3);
padding: 10px 11px;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-sm);
background: var(--bg-surface-2);
}
.sr-eval-scope__title {
display: inline-flex;
align-items: center;
gap: 7px;
color: var(--text-strong);
font-size: var(--fs-xs);
line-height: 1.35;
}
.sr-eval-scope dl {
display: grid;
gap: 7px;
margin: 0;
}
.sr-eval-scope dl div {
display: grid;
gap: 2px;
}
.sr-eval-scope dt {
color: var(--text-strong);
font-size: 11px;
font-weight: 740;
line-height: 1.35;
}
.sr-eval-scope dd {
margin: 0;
color: var(--text-muted);
font-size: 11px;
line-height: 1.5;
overflow-wrap: anywhere;
}
.sr-teacher-review__worksheet {
margin-top: var(--sp-4);
padding-top: var(--sp-4);
border-top: 1px solid var(--border-subtle);
}
.sr-teacher-review__note {
display: grid;
gap: 7px;
}
.sr-teacher-review__note span {
color: var(--text-muted);
font-size: var(--fs-xs);
font-weight: 700;
}
.sr-teacher-review__note textarea {
width: 100%;
min-height: 104px;
resize: vertical;
border: 1px solid var(--border-subtle);
border-radius: var(--radius);
background: var(--bg-surface-2);
color: var(--text-body);
padding: 10px 12px;
font: inherit;
font-size: var(--fs-sm);
line-height: 1.5;
}
.sr-teacher-review__note textarea:focus-visible {
outline: 2px solid var(--border-focus);
outline-offset: 2px;
border-color: var(--border-focus);
box-shadow: 0 0 0 3px var(--focus-ring);
}
.sr-teacher-review__meta,
.sr-teacher-review__error {
margin: var(--sp-3) 0 0;
font-size: var(--fs-xs);
line-height: 1.45;
}
.sr-teacher-review__meta {
color: var(--text-muted);
}
.sr-teacher-review__error {
color: var(--crit-text);
}
.sr-teacher-review__actions {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--sp-2);
margin-top: var(--sp-3);
}
.sr-teacher-review__actions .vg-btn {
width: 100%;
}
.sr-teacher-review__actions--three {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.sr-summary {
max-width: 68ch;
margin: 0;
color: var(--text-strong);
font-size: clamp(19px, 1.7vw, 25px);
font-weight: 650;
letter-spacing: 0;
line-height: 1.45;
}
.sr-overview .sr-summary {
font-size: var(--fs-sm);
font-weight: 520;
line-height: 1.58;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
}
.sr-summary .sr-hl {
color: var(--accent-deep);
}
.sr-overview .sr-summary .sr-hl {
font-weight: 650;
}
.sr-readiness {
display: grid;
grid-template-columns: 1fr;
gap: 8px;
padding-top: var(--sp-3);
border-top: 1px solid var(--hair);
}
.sr-readiness span {
min-width: 0;
display: grid;
gap: 4px;
padding: 8px 10px;
border-radius: var(--radius);
background: var(--bg-surface-2);
}
.sr-readiness b {
color: var(--text-strong);
font-size: var(--fs-sm);
line-height: 1.35;
overflow-wrap: anywhere;
}
.sr-readiness small {
color: var(--text-muted);
font-size: var(--fs-xs);
font-weight: 650;
}
.sr-actions {
display: grid;
grid-template-columns: 1fr;
gap: var(--sp-3);
}
.sr-actions .vg-btn {
width: 100%;
}
.sr-share-note {
min-width: 0;
margin: calc(var(--sp-2) * -1) 0 0;
padding: 8px 10px;
border: 1px solid var(--border-subtle);
border-radius: var(--radius);
background: var(--bg-surface-2);
color: var(--text-muted);
font-family: var(--font-num);
font-size: var(--fs-xs);
line-height: 1.45;
overflow-wrap: anywhere;
}
.sr-share-note--error {
color: var(--crit-text);
background: var(--crit-tint);
border-color: color-mix(in srgb, var(--crit-text) 28%, var(--border-subtle));
}
.sr-empty {
max-width: none;
gap: var(--sp-2);
padding: var(--sp-4);
border-radius: var(--radius);
background: var(--bg-surface-2);
}
.sr-empty .vg-empty__title {
font-size: var(--fs-body);
line-height: 1.35;
}
.sr-empty .vg-empty__desc {
color: var(--text-body);
font-size: var(--fs-sm);
line-height: 1.55;
}
.sr-prepost__head {
min-width: 0;
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: var(--sp-3);
}
.sr-prepost__head > div {
min-width: 0;
display: grid;
gap: 4px;
}
.sr-prepost__head b {
color: var(--text-strong);
font-size: var(--fs-sm);
line-height: 1.35;
}
.sr-prepost__badge {
flex: none;
display: inline-flex;
align-items: center;
min-height: 28px;
padding: 0 9px;
border: 1px solid color-mix(in srgb, var(--accent) 24%, var(--border-subtle));
border-radius: var(--radius-sm);
color: var(--accent-deep);
background: var(--accent-tint);
font-family: var(--font-num);
font-size: 11px;
font-weight: 750;
white-space: nowrap;
}
.sr-prepost__note {
margin: var(--sp-3) 0 0;
color: var(--text-muted);
font-size: var(--fs-xs);
line-height: 1.5;
}
.sr-prepost__table {
min-width: 0;
display: grid;
gap: 7px;
margin-top: var(--sp-4);
}
.sr-prepost__row {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) repeat(2, minmax(58px, 68px));
gap: 8px;
align-items: center;
}
.sr-prepost__row--head {
color: var(--text-muted);
font-family: var(--font-num);
font-size: 10.5px;
font-weight: 750;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.sr-prepost__row--head span:not(:first-child) {
text-align: center;
}
.sr-prepost__measure {
min-width: 0;
display: grid;
gap: 2px;
}
.sr-prepost__measure b {
min-width: 0;
color: var(--text-strong);
font-size: var(--fs-xs);
line-height: 1.35;
overflow-wrap: anywhere;
}
.sr-prepost__measure small {
min-width: 0;
color: var(--text-muted);
font-size: 10.5px;
line-height: 1.35;
overflow-wrap: anywhere;
}
.sr-prepost__field {
min-width: 0;
display: grid;
}
.sr-prepost__field span {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0 0 0 0);
clip-path: inset(50%);
white-space: nowrap;
}
.sr-prepost__field input {
width: 100%;
min-width: 0;
height: 36px;
padding: 0 7px;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-sm);
background: var(--bg-surface);
color: var(--text-strong);
font-family: var(--font-num);
font-size: var(--fs-sm);
font-weight: 650;
text-align: center;
}
.sr-prepost__field input:focus-visible {
outline: 2px solid var(--border-focus);
outline-offset: 2px;
border-color: var(--border-focus);
box-shadow: 0 0 0 3px var(--focus-ring);
}
.sr-prepost__field input[aria-invalid="true"] {
border-color: color-mix(in srgb, var(--crit-text) 44%, var(--border-subtle));
background: var(--crit-tint);
}
.sr-prepost__error {
margin: var(--sp-3) 0 0;
color: var(--crit-text);
font-size: 12px;
line-height: 1.45;
}
.sr-prepost__actions {
min-width: 0;
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--sp-3);
margin-top: var(--sp-4);
padding-top: var(--sp-3);
border-top: 1px solid var(--hair);
}
.sr-prepost__actions span {
min-width: 0;
color: var(--text-muted);
font-size: var(--fs-xs);
line-height: 1.35;
overflow-wrap: anywhere;
}
.sr-chart {
position: relative;
width: 100%;
}
.sr-chart__legend {
display: flex;
flex-wrap: wrap;
gap: var(--sp-4);
margin-bottom: var(--sp-4);
}
.sr-legend-item {
display: inline-flex;
align-items: center;
gap: 7px;
color: var(--text-body);
font-size: var(--fs-xs);
}
.sr-legend-line {
width: 18px;
height: 0;
border-top-width: 2px;
border-top-style: solid;
flex: none;
}
.sr-legend-line--client {
border-top-color: var(--clay);
}
.sr-legend-line--baseline {
border-top-style: dashed;
border-top-color: var(--accent-bright);
}
.sr-chart__plot {
position: relative;
width: 100%;
height: 180px;
}
.sr-chart__yaxis {
position: absolute;
left: 0;
top: 0;
bottom: 18px;
width: 30px;
display: flex;
flex-direction: column;
justify-content: space-between;
padding-right: 8px;
color: var(--text-muted);
font-family: var(--font-num);
font-size: 10px;
text-align: right;
}
.sr-chart__canvas {
position: absolute;
left: 34px;
right: 0;
top: 0;
bottom: 18px;
}
.sr-chart__svg {
width: 100%;
height: 100%;
display: block;
overflow: visible;
}
.sr-chart__xaxis {
position: absolute;
left: 34px;
right: 0;
bottom: 0;
display: flex;
justify-content: space-between;
color: var(--text-muted);
font-family: var(--font-num);
font-size: 10px;
}
.sr-phasebar__track {
min-width: 0;
display: flex;
min-height: 38px;
border: 1px solid var(--hair);
border-radius: var(--radius);
overflow: hidden;
}
.sr-phase {
min-width: 0;
display: flex;
align-items: center;
justify-content: center;
gap: 7px;
padding: 0 8px;
border-right: 1px solid var(--hair);
color: var(--text-body);
font-size: var(--fs-xs);
font-weight: 650;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.sr-phase:last-child {
border-right: none;
}
.sr-phase__dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--accent-bright);
flex: none;
}
.sr-phasebar__axis {
display: flex;
justify-content: space-between;
margin-top: 7px;
color: var(--text-muted);
font-family: var(--font-num);
font-size: 11px;
}
.sr-card--transcript {
padding: 0;
overflow: hidden;
border-color: color-mix(in srgb, var(--accent) 14%, var(--border-subtle));
}
.sr-tx__head {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--sp-3);
padding: var(--sp-5) var(--sp-5) var(--sp-3);
border-bottom: 1px solid var(--hair);
flex-wrap: wrap;
}
.sr-tx__filters {
display: inline-flex;
gap: 6px;
flex: none;
}
.sr-chip-toggle {
flex: none;
min-height: 30px;
padding: 4px 12px;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-sm);
background: var(--bg-surface);
color: var(--text-muted);
font-family: var(--font-sans);
font-size: var(--fs-xs);
font-weight: 650;
line-height: 1.35;
white-space: nowrap;
word-break: keep-all;
cursor: pointer;
transition:
background var(--dur-base) var(--ease-out),
color var(--dur-base) var(--ease-out),
border-color var(--dur-base) var(--ease-out);
}
.sr-chip-toggle:hover {
color: var(--text-strong);
border-color: var(--border-strong);
}
.sr-chip-toggle:focus-visible,
.sr-ws-evidence:focus-visible,
.sr-point__at:focus-visible {
outline: 2px solid var(--border-focus);
outline-offset: 2px;
box-shadow: 0 0 0 3px var(--focus-ring);
}
.sr-chip-toggle[aria-pressed="true"] {
color: var(--accent-deep);
background: var(--accent-tint);
border-color: transparent;
}
.sr-chip-toggle:disabled {
cursor: not-allowed;
opacity: .55;
}
.sr-turns {
display: flex;
flex-direction: column;
padding: 0 var(--sp-5) var(--sp-4);
}
.sr-turn {
display: grid;
grid-template-columns: 58px minmax(0, 1fr);
column-gap: var(--sp-4);
padding: var(--sp-4) 0;
}
.sr-turn + .sr-turn {
border-top: 1px solid var(--paper-2);
}
.sr-turn__rail {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
padding-top: 3px;
}
.sr-turn__ts {
color: var(--text-muted);
font-family: var(--font-num);
font-size: 10px;
}
.sr-turn__node {
width: 11px;
height: 11px;
border-radius: 50%;
flex: none;
}
.sr-turn__node--learner {
background: var(--accent-bright);
}
.sr-turn__node--client {
background: var(--clay);
}
.sr-turn__stem {
width: 2px;
flex: 1;
min-height: 8px;
background: var(--hair);
}
.sr-turn__body {
min-width: 0;
}
.sr-turn__who {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 5px;
font-size: var(--fs-xs);
font-weight: 650;
letter-spacing: 0.01em;
}
.sr-turn__who--learner {
color: var(--accent-deep);
}
.sr-turn__who--client {
color: var(--clay-deep);
}
.sr-turn__said {
max-width: 68ch;
margin: 0;
color: var(--text-strong);
font-size: var(--fs-body);
line-height: 1.62;
}
.sr-turn__said--client {
color: var(--text-body);
}
.sr-technique {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 2px 8px;
border-radius: var(--radius-sm);
font-family: var(--font-sans);
font-size: 11px;
font-weight: 650;
line-height: 1.5;
white-space: nowrap;
}
.sr-technique__dot {
width: 5px;
height: 5px;
border-radius: 50%;
flex: none;
}
.sr-technique--empathy {
color: var(--pos-text);
background: var(--pos-tint);
}
.sr-technique--empathy .sr-technique__dot {
background: var(--pos-solid);
}
.sr-technique--explore {
color: var(--accent-deep);
background: var(--accent-tint);
}
.sr-technique--explore .sr-technique__dot {
background: var(--accent);
}
.sr-technique--reflect {
color: var(--info-text);
background: var(--info-tint);
}
.sr-technique--reflect .sr-technique__dot {
background: var(--info-solid);
}
.sr-technique--confront {
color: var(--clay-deep);
background: var(--clay-tint);
}
.sr-technique--confront .sr-technique__dot {
background: var(--clay);
}
.sr-technique--closed {
color: var(--warn-text);
background: var(--warn-tint);
}
.sr-technique--closed .sr-technique__dot {
background: var(--warn-solid);
}
.sr-nonverbal {
display: inline-flex;
align-items: center;
gap: 6px;
min-width: 0;
padding: 2px 8px;
border: 1px solid var(--hair);
border-radius: var(--radius-sm);
background: var(--paper-1);
color: var(--text-body);
font-family: var(--font-sans);
font-size: 11px;
font-weight: 650;
line-height: 1.5;
white-space: nowrap;
}
.sr-nonverbal__dot {
width: 5px;
height: 5px;
border-radius: 50%;
flex: none;
background: var(--text-muted);
}
.sr-nonverbal__detail {
color: var(--text-muted);
font-family: var(--font-num);
font-size: 10px;
font-weight: 650;
}
.sr-nonverbal--silence .sr-nonverbal__dot {
background: var(--warn-solid);
}
.sr-nonverbal--pace .sr-nonverbal__dot {
background: var(--info-solid);
}
.sr-nonverbal--barge_in .sr-nonverbal__dot {
background: var(--clay);
}
.sr-nonverbal--audio .sr-nonverbal__dot {
background: var(--accent);
}
.sr-nonverbal--paralinguistic .sr-nonverbal__dot {
background: var(--good-solid);
}
.sr-nonverbal--prosody .sr-nonverbal__dot {
background: var(--ink-soft);
}
.sr-nonverbal--audio_quality .sr-nonverbal__dot {
background: var(--text-muted);
}
.sr-note {
max-width: 68ch;
margin-top: var(--sp-3);
padding: var(--sp-3) var(--sp-4);
border-radius: var(--radius);
transition:
opacity var(--dur-base) var(--ease-out),
transform var(--dur-base) var(--ease-out);
}
.sr-note--ai {
background: color-mix(in srgb, var(--info-tint) 72%, var(--accent-tint));
}
.sr-note--warn {
background: var(--warn-tint);
}
.sr-note__head {
display: flex;
align-items: center;
gap: 7px;
margin-bottom: 5px;
font-size: 11px;
font-weight: 650;
letter-spacing: 0.03em;
}
.sr-note--ai .sr-note__head {
color: var(--accent-deep);
}
.sr-note--warn .sr-note__head {
color: var(--warn-text);
}
.sr-note__head svg {
flex: none;
}
.sr-note__tag {
margin-left: auto;
color: var(--text-muted);
font-family: var(--font-num);
font-size: 10px;
font-weight: 650;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.sr-note__body {
display: grid;
gap: 8px;
color: var(--text-body);
font-size: var(--fs-sm);
line-height: 1.58;
}
.sr-md {
display: grid;
gap: 7px;
}
.sr-md__p {
margin: 0;
}
.sr-md code {
display: inline;
padding: 1px 5px;
border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
border-radius: 5px;
font-family: var(--font-num);
font-size: .92em;
color: var(--text-strong);
background: color-mix(in srgb, var(--bg-surface) 74%, transparent);
white-space: normal;
word-break: break-word;
}
.sr-md strong {
color: var(--text-strong);
font-weight: 720;
}
.sr-md__list {
display: grid;
gap: 4px;
margin: 0;
padding-left: 18px;
}
.sr-md__quote,
.sr-note__quote {
margin: 0;
padding: 8px 10px;
border-left: 3px solid color-mix(in srgb, var(--accent) 70%, var(--border-strong));
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
color: var(--text-strong);
background: color-mix(in srgb, var(--bg-surface) 72%, var(--accent-tint));
}
.sr-md__quote {
display: grid;
gap: 3px;
}
.sr-note__quote span {
display: block;
margin-bottom: 3px;
color: var(--text-muted);
font-family: var(--font-num);
font-size: 10px;
font-weight: 700;
letter-spacing: 0.06em;
}
.sr-note__quote p {
margin: 0;
color: var(--text-strong);
font-style: italic;
}
.sr-rubric {
display: grid;
gap: var(--sp-4);
}
.sr-rubric__row {
min-width: 0;
}
.sr-rubric__row .sr-rubric__top {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: var(--sp-3);
margin-bottom: 8px;
}
.sr-rubric__name {
min-width: 0;
color: var(--text-strong);
font-size: var(--fs-sm);
font-weight: 650;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.sr-rubric__qual {
display: inline-flex;
align-items: center;
gap: 6px;
flex: none;
font-size: var(--fs-xs);
font-weight: 650;
}
.sr-rubric__qual--good {
color: var(--pos-text);
}
.sr-rubric__qual--watch {
color: var(--warn-text);
}
.sr-rubric__qual .sr-technique__dot {
width: 6px;
height: 6px;
}
.sr-rubric__qual--good .sr-technique__dot {
background: var(--pos-solid);
}
.sr-rubric__qual--watch .sr-technique__dot {
background: var(--warn-solid);
}
.sr-rubric__cluster {
margin-top: 6px;
color: var(--text-muted);
font-family: var(--font-num);
font-size: 11px;
}
.sr-worksheet {
display: grid;
gap: var(--sp-4);
margin-top: var(--sp-4);
max-height: 620px;
overflow: auto;
padding-right: 4px;
scrollbar-gutter: stable;
}
.sr-ws-toolbar {
min-width: 0;
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: var(--sp-3);
}
.sr-ws-toolbar > div {
min-width: 0;
display: grid;
gap: 4px;
}
.sr-ws-state {
color: var(--text-muted);
font-size: 11px;
line-height: 1.35;
}
.sr-ws-readonly {
flex: none;
min-height: 28px;
display: inline-flex;
align-items: center;
padding: 0 9px;
border: 1px solid var(--hair);
border-radius: var(--radius-sm);
color: var(--text-muted);
background: var(--bg-surface-2);
font-size: 11px;
font-weight: 700;
white-space: nowrap;
}
.sr-ws-section {
min-width: 0;
display: grid;
gap: var(--sp-3);
}
.sr-ws-section h3 {
margin: 0;
color: var(--text-strong);
font-size: var(--fs-sm);
font-weight: 680;
line-height: 1.35;
}
.sr-ws-items {
display: grid;
gap: 8px;
}
.sr-ws-item {
min-width: 0;
display: grid;
gap: 6px;
padding: 10px 11px;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-sm);
background: var(--bg-surface-2);
}
.sr-ws-item__head {
min-width: 0;
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.sr-ws-item__head b {
min-width: 0;
color: var(--text-strong);
font-size: var(--fs-xs);
font-weight: 680;
line-height: 1.35;
}
.sr-ws-badge {
flex: none;
padding: 2px 7px;
border-radius: var(--radius-sm);
font-size: 10.5px;
font-weight: 680;
line-height: 1.45;
white-space: nowrap;
}
.sr-ws-badge--medium {
color: var(--pos-text);
background: var(--pos-tint);
}
.sr-ws-badge--low {
color: var(--accent-deep);
background: var(--accent-tint);
}
.sr-ws-badge--none {
color: var(--text-muted);
background: var(--paper-2);
}
.sr-ws-input {
width: 100%;
min-height: 78px;
resize: vertical;
padding: 8px 9px;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-sm);
background: var(--bg-surface);
color: var(--text-body);
font-family: var(--font-sans);
font-size: var(--fs-xs);
line-height: 1.55;
overflow-wrap: anywhere;
}
.sr-ws-input:focus-visible {
outline: 2px solid var(--border-focus);
outline-offset: 2px;
border-color: var(--border-focus);
box-shadow: 0 0 0 3px var(--focus-ring);
}
.sr-ws-input.is-readonly {
resize: none;
cursor: default;
color: var(--text-body);
background: color-mix(in srgb, var(--bg-surface) 82%, var(--bg-surface-2));
}
.sr-ws-input.is-readonly:focus-visible {
outline: none;
border-color: var(--border-subtle);
box-shadow: none;
}
.sr-ws-input::placeholder {
color: var(--text-muted);
}
.sr-ws-evidence {
min-width: 0;
width: 100%;
padding: 0;
border: none;
background: none;
color: var(--accent-deep);
font-family: var(--font-sans);
font-size: 11px;
font-weight: 650;
line-height: 1.5;
text-align: left;
cursor: pointer;
overflow-wrap: anywhere;
}
.sr-ws-evidence:hover {
text-decoration: underline;
}
.sr-ws-save-error {
margin-top: var(--sp-3);
color: var(--crit-text);
font-size: 12px;
line-height: 1.45;
}
.sr-ws-limitations {
display: grid;
gap: 5px;
margin-top: var(--sp-4);
padding-top: var(--sp-3);
border-top: 1px solid var(--hair);
}
.sr-ws-limitations span {
color: var(--text-muted);
font-size: 11px;
line-height: 1.45;
}
/* Empty state: keep the card as low-contrast as the other placeholders so an
unanswered feedback block never outweighs the page heading or actions. */
.sr-feedback {
min-width: 0;
padding: var(--sp-5);
border: 1px solid var(--border-subtle);
border-radius: var(--radius);
background: var(--bg-surface-2);
}
/* Filled state: only a real client quote earns the high-contrast stage card. */
.sr-feedback--filled {
border-color: transparent;
background: linear-gradient(135deg, rgba(30, 39, 36, .95), rgba(30, 39, 36, .82));
box-shadow: var(--shadow-sm);
}
.sr-feedback__kicker {
display: inline-flex;
align-items: center;
gap: 8px;
margin-bottom: var(--sp-3);
color: var(--text-muted);
font-family: var(--font-num);
font-size: var(--fs-kicker);
font-weight: 650;
letter-spacing: 0.08em;
}
.sr-feedback__kicker .sr-technique__dot {
width: 6px;
height: 6px;
background: var(--text-muted);
}
.sr-feedback--filled .sr-feedback__kicker {
color: var(--accent-bright);
}
.sr-feedback--filled .sr-feedback__kicker .sr-technique__dot {
background: var(--accent-bright);
}
.sr-feedback__quote {
margin: 0;
color: var(--text-body);
font-size: var(--fs-sm);
font-style: italic;
line-height: 1.65;
}
.sr-feedback--filled .sr-feedback__quote {
color: #d7ddda;
}
.sr-feedback__src {
display: flex;
align-items: center;
gap: 8px;
margin-top: var(--sp-4);
padding-top: var(--sp-3);
border-top: 1px solid var(--hair);
color: var(--text-muted);
font-family: var(--font-num);
font-size: 11px;
}
.sr-feedback--filled .sr-feedback__src {
border-top-color: rgba(255, 255, 255, 0.12);
color: #8a9794;
}
.sr-points {
display: grid;
gap: var(--sp-4);
}
.sr-point {
min-width: 0;
display: grid;
grid-template-columns: auto minmax(0, 1fr);
column-gap: 11px;
align-items: start;
}
.sr-point__mk {
width: 7px;
height: 7px;
margin-top: 7px;
border-radius: 50%;
flex: none;
}
.sr-points--good .sr-point__mk {
background: var(--pos-solid);
}
.sr-points--grow .sr-point__mk {
background: var(--warn-solid);
}
.sr-point__h {
margin-bottom: 2px;
color: var(--text-strong);
font-size: var(--fs-sm);
font-weight: 650;
}
.sr-point__d {
color: var(--text-body);
font-size: var(--fs-xs);
line-height: 1.58;
}
.sr-point__at {
margin-left: 6px;
padding: 0;
border: none;
background: none;
color: var(--accent);
cursor: pointer;
font-family: var(--font-num);
font-size: 11px;
font-weight: 650;
}
.sr-point__at:hover {
color: var(--accent-deep);
text-decoration: underline;
}
.sr-nextline {
margin-top: var(--sp-4);
padding: var(--sp-4);
border-radius: var(--radius);
background: color-mix(in srgb, var(--warn-tint) 58%, var(--bg-surface-2));
}
.sr-nextline__lab {
margin-bottom: 7px;
color: var(--accent-deep);
font-family: var(--font-num);
font-size: 11px;
font-weight: 650;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.sr-nextline__q {
color: var(--text-strong);
font-size: var(--fs-sm);
font-weight: 550;
line-height: 1.58;
}
.sr-turn--active .sr-turn__said {
margin: 0 -8px;
padding: 4px 8px;
border-radius: var(--radius-sm);
background: var(--accent-tint);
}
.sr-session-id {
min-width: 0;
margin: 0;
color: var(--text-muted);
font-family: var(--font-num);
font-size: var(--fs-xs);
overflow-wrap: anywhere;
}
[data-theme="dark"] .sr-head,
[data-theme="dark"] .sr-card,
[data-theme="dark"] .sr-overview {
background: linear-gradient(180deg, rgba(27, 42, 38, 0.92), rgba(18, 31, 28, 0.96));
border-color: rgba(203, 227, 220, 0.13);
box-shadow:
0 16px 42px rgba(3, 9, 8, 0.24),
inset 0 1px 0 rgba(255, 255, 255, 0.035);
}
[data-theme="dark"] .sr-card--transcript {
background: linear-gradient(180deg, rgba(13, 24, 22, 0.98), rgba(11, 19, 17, 0.98));
}
[data-theme="dark"] .sr-overview {
border-color: rgba(111, 179, 164, 0.2);
background: linear-gradient(180deg, rgba(32, 50, 45, 0.94), rgba(18, 31, 28, 0.98));
}
[data-theme="dark"] .sr-card--worksheet {
background: linear-gradient(180deg, rgba(25, 39, 44, 0.94), rgba(16, 27, 31, 0.98));
}
[data-theme="dark"] .sr-card--prepost,
[data-theme="dark"] .sr-card--rubric {
background: linear-gradient(180deg, rgba(29, 43, 38, 0.92), rgba(18, 30, 27, 0.96));
}
[data-theme="dark"] .sr-stat,
[data-theme="dark"] .sr-readiness span,
[data-theme="dark"] .sr-empty,
[data-theme="dark"] .sr-chip-toggle,
[data-theme="dark"] .sr-eval-scope,
[data-theme="dark"] .sr-ws-item,
[data-theme="dark"] .sr-prepost__field input,
[data-theme="dark"] .sr-feedback,
[data-theme="dark"] .sr-nextline {
background: rgba(255, 255, 255, 0.055);
border-color: rgba(203, 227, 220, 0.12);
}
[data-theme="dark"] .sr-tx__head,
[data-theme="dark"] .sr-turn + .sr-turn,
[data-theme="dark"] .sr-readiness,
[data-theme="dark"] .sr-ws-limitations,
[data-theme="dark"] .sr-prepost__actions,
[data-theme="dark"] .sr-feedback__src {
border-color: rgba(203, 227, 220, 0.1);
}
[data-theme="dark"] .sr-turn__said--client {
color: rgba(234, 240, 241, 0.74);
}
[data-theme="dark"] .sr-note--ai {
background: rgba(92, 151, 190, 0.12);
}
[data-theme="dark"] .sr-note--warn {
background: rgba(212, 162, 74, 0.12);
}
[data-theme="dark"] .sr-turn--active .sr-turn__said {
background: rgba(111, 179, 164, 0.14);
}
[data-theme="dark"] .sr-feedback--filled {
border-color: rgba(203, 227, 220, 0.12);
background: linear-gradient(135deg, rgba(12, 24, 21, 0.98), rgba(30, 44, 40, 0.92));
}
@media (max-width: 1180px) {
.sr-cols {
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-areas:
"overview overview"
"chart flow"
"rubric rubric"
"good growth"
"transcript transcript"
"prepost prepost"
"feedback feedback"
"worksheet worksheet"
"session session";
}
.sr-root--empty .sr-cols {
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-areas:
"overview overview"
"chart flow"
"transcript transcript"
"rubric rubric"
"good growth"
"prepost prepost"
"feedback feedback"
"worksheet worksheet"
"session session";
}
.sr-cols--supervisor {
grid-template-areas:
"overview overview"
"chart flow"
"teacher teacher"
"rubric rubric"
"good growth"
"transcript transcript"
"prepost prepost"
"feedback feedback"
"worksheet worksheet"
"session session";
}
.sr-root--empty .sr-cols--supervisor {
grid-template-areas:
"overview overview"
"chart flow"
"teacher teacher"
"transcript transcript"
"rubric rubric"
"good growth"
"prepost prepost"
"feedback feedback"
"worksheet worksheet"
"session session";
}
.sr-overview {
position: static;
max-height: none;
overflow: visible;
scrollbar-gutter: auto;
}
.sr-readiness {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.sr-actions {
display: flex;
flex-wrap: wrap;
}
.sr-actions .vg-btn {
width: auto;
}
.sr-worksheet {
max-height: 520px;
}
}
@media (max-width: 780px) {
.sr-root {
gap: var(--sp-4);
}
.sr-head {
grid-template-columns: 1fr;
gap: var(--sp-4);
padding: var(--sp-4);
}
.sr-head__stats {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sr-cols {
grid-template-columns: minmax(0, 1fr);
grid-template-areas:
"overview"
"chart"
"flow"
"rubric"
"good"
"growth"
"prepost"
"transcript"
"feedback"
"worksheet"
"session";
gap: var(--sp-4);
}
.sr-root--empty .sr-cols {
grid-template-columns: minmax(0, 1fr);
grid-template-areas:
"overview"
"chart"
"flow"
"transcript"
"rubric"
"good"
"growth"
"prepost"
"feedback"
"worksheet"
"session";
}
.sr-cols--supervisor {
grid-template-areas:
"overview"
"chart"
"flow"
"teacher"
"rubric"
"good"
"growth"
"prepost"
"transcript"
"feedback"
"worksheet"
"session";
}
.sr-root--empty .sr-cols--supervisor {
grid-template-areas:
"overview"
"chart"
"flow"
"teacher"
"transcript"
"rubric"
"good"
"growth"
"prepost"
"feedback"
"worksheet"
"session";
}
.sr-summary {
font-size: 20px;
line-height: 1.45;
}
.sr-overview .sr-summary {
-webkit-line-clamp: 8;
font-size: clamp(18px, 1.26vw, 21px);
font-weight: 650;
}
.sr-readiness {
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
}
.sr-readiness span {
padding: 9px;
}
.sr-actions .vg-btn {
flex: 1 1 150px;
}
.sr-worksheet {
max-height: 460px;
}
.sr-ws-toolbar {
align-items: stretch;
flex-direction: column;
}
.sr-ws-toolbar .vg-btn {
width: 100%;
}
.sr-chart__plot {
height: 156px;
}
.sr-tx__head {
padding: var(--sp-4) var(--sp-4) var(--sp-3);
}
.sr-turns {
padding: 0 var(--sp-4) var(--sp-3);
}
.sr-turn {
grid-template-columns: 48px minmax(0, 1fr);
column-gap: var(--sp-3);
}
}
@media (max-width: 520px) {
.sr-head__id {
grid-template-columns: 40px minmax(0, 1fr);
align-items: start;
}
.sr-avatar {
width: 40px;
height: 40px;
font-size: 17px;
}
.sr-head__name {
white-space: normal;
}
.sr-head__stats {
grid-template-columns: 1fr;
}
.sr-stat {
padding: 8px 10px;
}
.sr-summary {
font-size: 18px;
}
.sr-overview .sr-summary {
-webkit-line-clamp: 7;
}
.sr-readiness {
grid-template-columns: 1fr;
}
.sr-actions {
gap: var(--sp-2);
}
.sr-actions .vg-btn {
flex-basis: 100%;
min-height: 38px;
}
.sr-teacher-review__actions {
grid-template-columns: 1fr;
}
.sr-feedback,
.sr-card,
.sr-overview {
padding: var(--sp-4);
}
.sr-card--transcript {
padding: 0;
}
.sr-phasebar__track {
min-height: 34px;
}
.sr-phase {
gap: 5px;
padding: 0 5px;
font-size: 11px;
}
.sr-phase__dot {
display: none;
}
.sr-tx__head {
align-items: flex-start;
}
.sr-tx__filters {
width: 100%;
}
.sr-chip-toggle {
flex: 1;
min-height: 34px;
}
.sr-turn {
grid-template-columns: 1fr;
gap: 6px;
}
.sr-turn__rail {
flex-direction: row;
justify-content: flex-start;
gap: 8px;
padding-top: 0;
}
.sr-turn__stem {
display: none;
}
.sr-turn__said,
.sr-note {
max-width: none;
}
}
@media (prefers-reduced-motion: reduce) {
.sr-note,
.sr-chip-toggle,
.sr-turn--active .sr-turn__said {
transition-duration: 0.01ms;
}
}