음성 재생과 운영 배포 정리

This commit is contained in:
Yun Chan 2026-06-28 12:18:20 +09:00
parent 8ed185ce6c
commit ac7db95542
1020 changed files with 46863 additions and 2175 deletions

View file

@ -3,23 +3,9 @@
.sr-root {
width: min(100%, 1360px);
margin: 0 auto;
position: relative;
isolation: isolate;
display: grid;
gap: var(--sp-5);
}
.sr-root::before {
content: "";
position: absolute;
z-index: -1;
inset: -90px 0 auto auto;
width: min(620px, 56vw);
height: 440px;
background: var(--asset-warm-elements) center / cover no-repeat;
opacity: .05;
filter: saturate(.8);
pointer-events: none;
}
.sr-root--empty {
--sr-empty-tone: var(--neutral-sig);
}
@ -128,18 +114,29 @@
.sr-cols {
min-width: 0;
display: grid;
grid-template-columns: minmax(230px, 0.62fr) minmax(0, 1.22fr) minmax(280px, 0.68fr);
grid-template-columns: minmax(236px, 280px) minmax(0, 1fr) minmax(286px, 340px);
grid-template-areas:
"overview chart rubric"
"overview flow good"
"transcript transcript growth"
"transcript transcript feedback"
"worksheet worksheet worksheet"
"overview flow rubric"
"overview transcript good"
"overview transcript growth"
"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 worksheet"
"overview transcript feedback"
"session session session";
}
.sr-left,
.sr-right {
display: contents;
@ -148,10 +145,14 @@
grid-area: overview;
min-width: 0;
display: grid;
gap: var(--sp-4);
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;
@ -165,6 +166,9 @@
.sr-card--rubric {
grid-area: rubric;
}
.sr-card--teacher-review {
grid-area: teacher;
}
.sr-card--good {
grid-area: good;
}
@ -192,6 +196,68 @@
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__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 {
outline: 2px solid var(--accent);
outline-offset: 1px;
border-color: var(--accent);
}
.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-summary {
max-width: 68ch;
@ -203,27 +269,32 @@
line-height: 1.45;
}
.sr-overview .sr-summary {
font-size: clamp(18px, 1.26vw, 21px);
font-size: var(--fs-sm);
font-weight: 520;
line-height: 1.58;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 12;
-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: 10px;
padding-top: var(--sp-4);
gap: 8px;
padding-top: var(--sp-3);
border-top: 1px solid var(--hair);
}
.sr-readiness span {
min-width: 0;
display: grid;
gap: 4px;
padding: 10px 12px;
padding: 8px 10px;
border-radius: var(--radius);
background: var(--bg-surface-2);
}
@ -246,6 +317,24 @@
.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;
@ -646,13 +735,66 @@
letter-spacing: 0.04em;
text-transform: uppercase;
}
.sr-note__txt {
margin: 0;
.sr-note__body {
display: grid;
gap: 8px;
color: var(--text-body);
font-size: var(--fs-sm);
line-height: 1.58;
}
.sr-note__txt .sr-quote {
.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;
}
@ -737,6 +879,20 @@
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;
@ -815,6 +971,16 @@
outline: 2px solid var(--accent-tint);
border-color: var(--accent);
}
.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 {
outline: none;
border-color: var(--border-subtle);
}
.sr-ws-input::placeholder {
color: var(--text-muted);
}
@ -867,9 +1033,7 @@
/* 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)),
var(--asset-warm-elements) center / cover no-repeat;
background: linear-gradient(135deg, rgba(30, 39, 36, .95), rgba(30, 39, 36, .82));
box-shadow: var(--shadow-sm);
}
.sr-feedback__kicker {
@ -1006,25 +1170,17 @@
overflow-wrap: anywhere;
}
[data-theme="dark"] .sr-root::before {
opacity: 0.1;
filter: saturate(0.9) contrast(1.06);
}
[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)),
var(--asset-warm-elements) center / cover no-repeat;
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)),
var(--asset-warm-elements) center / cover no-repeat;
background: linear-gradient(180deg, rgba(13, 24, 22, 0.98), rgba(11, 19, 17, 0.98));
}
[data-theme="dark"] .sr-stat,
[data-theme="dark"] .sr-readiness span,
@ -1057,9 +1213,7 @@
}
[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)),
var(--asset-warm-elements) center / cover no-repeat;
background: linear-gradient(135deg, rgba(12, 24, 21, 0.98), rgba(30, 44, 40, 0.92));
}
@media (max-width: 1180px) {
@ -1075,8 +1229,23 @@
"worksheet worksheet"
"session session";
}
.sr-cols--supervisor {
grid-template-areas:
"overview overview"
"chart flow"
"teacher teacher"
"rubric rubric"
"good growth"
"transcript transcript"
"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));
@ -1097,9 +1266,6 @@
.sr-root {
gap: var(--sp-4);
}
.sr-root::before {
display: none;
}
.sr-head {
grid-template-columns: 1fr;
gap: var(--sp-4);
@ -1123,12 +1289,28 @@
"session";
gap: var(--sp-4);
}
.sr-cols--supervisor {
grid-template-areas:
"overview"
"chart"
"flow"
"teacher"
"rubric"
"good"
"growth"
"transcript"
"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));
@ -1200,6 +1382,9 @@
flex-basis: 100%;
min-height: 38px;
}
.sr-teacher-review__actions {
grid-template-columns: 1fr;
}
.sr-feedback,
.sr-card,
.sr-overview {