G0~G8 성과·동맹 측정 OS 작업 일괄 고정
8월 7일까지 워킹트리에만 남아 있던 미커밋 작업을 커밋한다. 여러 사본 폴더(worktree·clone)에 흩어져 있던 중간 스냅샷을 정리하기 전에 원본을 git 이력으로 고정하는 것이 목적이다. - contracts/routes/services: measurement, outcome_trajectory, rupture_repair, deliberate_practice, calibration_transfer, supervision_research, multimodal_alliance, continuous_improvement 계열 신규 모듈과 테스트 - infra/db/init: 07~16 마이그레이션(측정 기반~calibration transfer 실행) - apps/web: 세션 리뷰 카드·관리 화면·E2E 스펙 추가 - docs/ops: G0~G8 라이브 통합·배포·롤백 증거 문서와 evidence JSON/PNG - scripts: smoke·ledger·릴리스 에이전트·NAS 프리뷰 운영 스크립트 engine.public 로그 .bak과 apps/web/test-results 산출물은 커밋에서 제외했다.
This commit is contained in:
parent
93dd8f82d7
commit
16e791e044
390 changed files with 243188 additions and 499 deletions
|
|
@ -21,6 +21,10 @@
|
|||
gap:var(--sp-2);
|
||||
min-width:0;
|
||||
}
|
||||
.lh-head__primary{
|
||||
min-height:44px;
|
||||
flex:none;
|
||||
}
|
||||
.lh-head__status{
|
||||
flex:none;
|
||||
min-height:34px;
|
||||
|
|
@ -94,6 +98,7 @@
|
|||
font-size:var(--fs-sm);
|
||||
font-weight:700;
|
||||
cursor:pointer;
|
||||
min-height:44px;
|
||||
}
|
||||
/* D6(탭 구분 강화): 비활성 탭이 배경과 같아 "여러 개 중 하나"로 안 읽혔다.
|
||||
비활성 탭 사이에만 세로 구분선을 넣는다. 활성 탭은 자체 배경/테두리로
|
||||
|
|
@ -133,6 +138,13 @@
|
|||
align-content:start;
|
||||
gap:var(--sp-4);
|
||||
}
|
||||
.lh-dashboard-side__tabpanel{
|
||||
min-width:0;
|
||||
display:grid;
|
||||
align-content:start;
|
||||
gap:var(--sp-4);
|
||||
grid-column:1 / -1;
|
||||
}
|
||||
.lh-dashboard-feedback .lh-feedback-mini{
|
||||
padding-top:0;
|
||||
border-top:0;
|
||||
|
|
@ -783,7 +795,7 @@
|
|||
align-items:center;
|
||||
justify-content:space-between;
|
||||
gap:10px;
|
||||
min-height:40px;
|
||||
min-height:44px;
|
||||
margin-top:2px;
|
||||
padding:0 12px;
|
||||
border:1px solid color-mix(in srgb,var(--accent) 34%,transparent);
|
||||
|
|
@ -959,6 +971,114 @@
|
|||
font-size:11.5px;
|
||||
font-style:normal;
|
||||
}
|
||||
.lh-voice-practice-intent{
|
||||
display:grid;
|
||||
grid-template-columns:minmax(0,1.45fr) minmax(320px,.85fr);
|
||||
gap:var(--sp-4);
|
||||
align-items:center;
|
||||
padding:var(--sp-4);
|
||||
border:1px solid var(--border-strong);
|
||||
border-radius:var(--radius);
|
||||
background:var(--accent-tint);
|
||||
}
|
||||
.lh-voice-practice-intent h2{
|
||||
margin:5px 0 0;
|
||||
color:var(--text-strong);
|
||||
font-size:var(--fs-h3);
|
||||
line-height:1.35;
|
||||
}
|
||||
.lh-voice-practice-intent p{
|
||||
margin:7px 0 0;
|
||||
color:var(--text-body);
|
||||
font-size:var(--fs-sm);
|
||||
line-height:1.6;
|
||||
}
|
||||
.lh-voice-practice-intent dl{
|
||||
display:grid;
|
||||
grid-template-columns:repeat(3,minmax(0,1fr));
|
||||
gap:var(--sp-2);
|
||||
margin:0;
|
||||
}
|
||||
.lh-voice-practice-intent dl > div{
|
||||
min-width:0;
|
||||
padding:var(--sp-3);
|
||||
border:1px solid var(--border-subtle);
|
||||
border-radius:var(--radius-sm);
|
||||
background:var(--bg-surface);
|
||||
}
|
||||
.lh-voice-practice-intent dt{
|
||||
color:var(--text-muted);
|
||||
font-size:var(--fs-xs);
|
||||
}
|
||||
.lh-voice-practice-intent dd{
|
||||
margin:4px 0 0;
|
||||
overflow:hidden;
|
||||
color:var(--text-strong);
|
||||
font-family:var(--font-num);
|
||||
font-size:var(--fs-sm);
|
||||
font-weight:700;
|
||||
text-overflow:ellipsis;
|
||||
white-space:nowrap;
|
||||
}
|
||||
.lh-voice-practice-intent.is-error{
|
||||
border-color:color-mix(in srgb,var(--crit-text) 45%,var(--border-subtle));
|
||||
background:var(--crit-tint);
|
||||
}
|
||||
.lh-practice-launch-intent{
|
||||
border-color:color-mix(in srgb,var(--accent) 45%,var(--border-subtle));
|
||||
background:color-mix(in srgb,var(--accent-tint) 86%,var(--bg-surface));
|
||||
}
|
||||
.lh-practice-launch-intent dl{
|
||||
grid-template-columns:repeat(auto-fit,minmax(128px,1fr));
|
||||
}
|
||||
.lh-practice-launch-intent__details{
|
||||
min-width:0;
|
||||
}
|
||||
.lh-practice-launch-intent__details summary{
|
||||
min-width:0;
|
||||
min-height:44px;
|
||||
display:grid;
|
||||
grid-template-columns:auto minmax(0,1fr) auto;
|
||||
align-items:center;
|
||||
gap:10px;
|
||||
padding:10px 12px;
|
||||
border:1px solid var(--border-subtle);
|
||||
border-radius:var(--radius-sm);
|
||||
background:var(--bg-surface);
|
||||
color:var(--text-body);
|
||||
cursor:pointer;
|
||||
list-style:none;
|
||||
}
|
||||
.lh-practice-launch-intent__details summary::-webkit-details-marker{
|
||||
display:none;
|
||||
}
|
||||
.lh-practice-launch-intent__details summary span{
|
||||
color:var(--accent-deep);
|
||||
font-size:var(--fs-xs);
|
||||
font-weight:760;
|
||||
}
|
||||
.lh-practice-launch-intent__details summary b{
|
||||
min-width:0;
|
||||
overflow:hidden;
|
||||
color:var(--text-strong);
|
||||
font-size:var(--fs-sm);
|
||||
font-weight:720;
|
||||
text-overflow:ellipsis;
|
||||
white-space:nowrap;
|
||||
}
|
||||
.lh-practice-launch-intent__details summary svg{
|
||||
transition:transform var(--dur-base) var(--ease-out);
|
||||
}
|
||||
.lh-practice-launch-intent__details[open] summary svg{
|
||||
transform:rotate(90deg);
|
||||
}
|
||||
.lh-practice-launch-intent__details summary:focus-visible{
|
||||
outline:2px solid var(--border-focus);
|
||||
outline-offset:2px;
|
||||
}
|
||||
.lh-practice-launch-intent__details dl{
|
||||
margin-top:var(--sp-2);
|
||||
}
|
||||
.lh-practice-layout{
|
||||
min-width:0;
|
||||
display:grid;
|
||||
|
|
@ -1723,6 +1843,7 @@
|
|||
.lh-dashboard-hero,
|
||||
.lh-dashboard-columns,
|
||||
.lh-history-layout,
|
||||
.lh-voice-practice-intent,
|
||||
.lh-practice-layout{
|
||||
grid-template-columns:1fr;
|
||||
}
|
||||
|
|
@ -1774,13 +1895,16 @@
|
|||
}
|
||||
}
|
||||
@media (max-width:720px){
|
||||
.lh-voice-practice-intent dl{
|
||||
grid-template-columns:1fr;
|
||||
}
|
||||
.lh-head{
|
||||
display:grid;
|
||||
gap:10px;
|
||||
}
|
||||
.lh-head__tools{
|
||||
width:100%;
|
||||
justify-content:space-between;
|
||||
justify-content:flex-start;
|
||||
align-items:center;
|
||||
}
|
||||
.lh-head__status{
|
||||
|
|
@ -1896,6 +2020,9 @@
|
|||
}
|
||||
@media (max-width:460px){
|
||||
.lh-head__status{display:none;}
|
||||
.lh-head__primary{
|
||||
width:100%;
|
||||
}
|
||||
.lh-history-overview{
|
||||
grid-template-columns:1fr;
|
||||
}
|
||||
|
|
@ -2168,11 +2295,15 @@
|
|||
padding-right: clamp(24px, 24%, 92px);
|
||||
}
|
||||
.vg-shell--learner-dashboard .lh-coach-card__cta {
|
||||
background:
|
||||
linear-gradient(90deg, color-mix(in srgb, var(--accent) 42%, var(--glass-surface-inset)), color-mix(in srgb, var(--accent) 58%, var(--glass-surface-inset)));
|
||||
border-color: color-mix(in srgb, var(--accent) 44%, var(--lh-gold));
|
||||
background:var(--accent);
|
||||
border-color:color-mix(in srgb,var(--accent-deep) 78%,var(--lh-gold));
|
||||
color:var(--text-on-accent);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.28);
|
||||
}
|
||||
.vg-shell--learner-dashboard .lh-coach-card__cta:hover:not(:disabled) {
|
||||
background:var(--accent-deep);
|
||||
color:var(--text-on-accent);
|
||||
}
|
||||
.vg-shell--learner-dashboard .lh-panel__head button,
|
||||
.vg-shell--learner-dashboard .lh-panel__badge,
|
||||
.vg-shell--learner-dashboard .lh-tabs {
|
||||
|
|
@ -2282,6 +2413,9 @@
|
|||
.vg-shell--learner-dashboard .lh-dashboard-side {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
.vg-shell--learner-dashboard .lh-dashboard-side__tabpanel {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
.vg-shell--learner-dashboard .lh-root {
|
||||
|
|
@ -2497,6 +2631,19 @@
|
|||
}
|
||||
}
|
||||
@media (max-width: 720px) {
|
||||
.vg-shell--learner-dashboard .lh-metric-card {
|
||||
min-height: 104px;
|
||||
padding: 13px 34% 13px 13px;
|
||||
}
|
||||
.vg-shell--learner-dashboard .lh-metric-card::after {
|
||||
inset: 12px 0 8px 56%;
|
||||
width: auto;
|
||||
height: auto;
|
||||
background-position: center;
|
||||
}
|
||||
.vg-shell--learner-dashboard .lh-metric-card b {
|
||||
font-size: clamp(19px, 6vw, 24px);
|
||||
}
|
||||
.vg-shell--learner-dashboard .lh-recap {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue