fix(spreadsheet): D · sub4 대신 색 줄만 — 두 css 도 테마 토큰으로

브레인 승인(sub7 · sub4 는 같은 파일의 다른 부분 작업 중이라 색 줄만 최소로 고침 · 주인은
그대로 D(spreadsheet.css) · sub_laptop_4(spreadsheet_stage3.css)).

spreadsheet.css — 부품 틀 · 주소 상자 · 수식 입력줄 · 칸 편집기 · 채우기 미리보기 · 알림 ·
찾기 패널 · 메모 · 골라 붙여넣기 · 자동완성 · 데이터 메뉴의 하드코딩 색(#fff · #1f2328 ·
#d0d7de · #217346 · #6e7781 · #57606a · #24292f · #dafbe1 · #bf8700 · #fff8c5 · #ddf4ff ·
#8c959f · #f6f8fa · 그림자 rgb(0 0 0/15%))을 전역 토큰(--color-surface-raised · -text-body ·
-border · -focus-ring · -text-muted · -text-secondary · -primary/-primary-text · -warning ·
-accent · -surface · --shadow-lg/-sm)으로 바꿈. 메모(주석) 배경 · 자동완성 강조 · 서식 붓
켜짐 배경은 이름 없는 톤(포스트잇 옅은 노랑 등)이라 color-mix 로 기존 토큰에서 옅게 섞어냄
(새 토큰 안 만듦).
spreadsheet_stage3.css — 조건부 서식 · 유효성 드롭다운 그림자 한 줄(rgba(0,0,0,0.12))만
남아 있던 것을 --shadow-sm 으로.

ORCA 수치(C 시험 틀에 두 css 임시로 얹어 밝은 · 어두운 전환) — 밝은: .ss 배경
rgb(255,255,255)·글 rgb(51,51,51) · 알림(toast) 배경 rgb(38,17,74)·글 흰색 · 메모 테두리
rgb(184,134,11). 어두운: .ss 배경 rgb(37,31,56)·글 rgb(228,224,240) · 알림 배경
rgb(185,154,255)·글 rgb(22,18,31)(반전) · 메모 테두리 rgb(224,182,74) — 대화상자 · 찾기 ·
자동완성 · 조건부 서식 패널 · 상태 표시줄까지 모두 두 테마에서 배경 · 글 대비 확인.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VVM3xZ1aUPcUTuW2WZSnwg
This commit is contained in:
2026-09-28 09:53:53 +09:00
co-authored by Claude Sonnet 5
parent db899349a4
commit ee64781a7c
2 changed files with 43 additions and 43 deletions
+42 -42
View File
@@ -7,8 +7,8 @@
height: 100%;
min-height: 0;
font-size: 13px;
color: #1f2328;
background: #fff;
color: var(--color-text-body);
background: var(--color-surface-raised);
}
.ss-grid-host {
@@ -21,26 +21,26 @@
flex: none;
align-items: stretch;
height: 26px;
border-bottom: 1px solid #d0d7de;
border-bottom: 1px solid var(--color-border);
}
.ss-addr {
width: 96px;
padding: 0 6px;
border: none;
border-right: 1px solid #d0d7de;
border-right: 1px solid var(--color-border);
font: inherit;
outline: none;
}
.ss-addr:focus {
box-shadow: inset 0 0 0 2px #217346;
box-shadow: inset 0 0 0 2px var(--color-focus-ring);
}
.ss-fx {
align-self: center;
padding: 0 8px;
color: #6e7781;
color: var(--color-text-muted);
font-style: italic;
user-select: none;
}
@@ -49,7 +49,7 @@
flex: 1;
padding: 4px 6px;
border: none;
border-left: 1px solid #d0d7de;
border-left: 1px solid var(--color-border);
font: inherit;
line-height: 18px;
white-space: pre;
@@ -59,7 +59,7 @@
}
.ss--readonly .ss-formula {
color: #57606a;
color: var(--color-text-secondary);
}
/* 칸 편집기 = 숨은 textarea — 쉴 때는 활성 칸 자리에 투명하게(한글 조합 창 자리) */
@@ -69,9 +69,9 @@
box-sizing: border-box;
margin: 0;
padding: 1px 3px;
border: 2px solid #217346;
background: #fff;
color: #000;
border: 2px solid var(--color-focus-ring);
background: var(--color-surface-raised);
color: var(--color-text-body);
font: inherit;
line-height: 1.25;
white-space: pre;
@@ -95,7 +95,7 @@
position: absolute;
z-index: 4;
box-sizing: border-box;
border: 1px dashed #57606a;
border: 1px dashed var(--color-text-secondary);
pointer-events: none;
}
@@ -106,8 +106,8 @@
z-index: 20;
padding: 6px 10px;
border-radius: 4px;
background: #24292f;
color: #fff;
background: var(--color-primary);
color: var(--color-primary-text);
}
/* 2단계 잇기 — 서식 붓 · 찾기 패널 · 메모 · 골라 붙여넣기 */
@@ -115,15 +115,15 @@
flex: none;
padding: 0 8px;
border: none;
border-right: 1px solid #d0d7de;
border-right: 1px solid var(--color-border);
background: none;
font: inherit;
cursor: pointer;
}
.ss-brush.is-on {
background: #dafbe1;
box-shadow: inset 0 0 0 2px #217346;
background: color-mix(in srgb, var(--color-focus-ring) 20%, var(--color-surface-raised));
box-shadow: inset 0 0 0 2px var(--color-focus-ring);
}
.ss--painting .ss-grid-host {
@@ -139,10 +139,10 @@
flex-direction: column;
gap: 4px;
padding: 8px;
border: 1px solid #d0d7de;
border: 1px solid var(--color-border);
border-radius: 6px;
background: #fff;
box-shadow: 0 4px 12px rgb(0 0 0 / 15%);
background: var(--color-surface-raised);
box-shadow: var(--shadow-lg);
}
.ss-find[hidden],
@@ -162,15 +162,15 @@
.ss-find__input {
width: 180px;
padding: 2px 6px;
border: 1px solid #d0d7de;
border: 1px solid var(--color-border);
font: inherit;
}
.ss-find__btn {
padding: 2px 8px;
border: 1px solid #d0d7de;
border: 1px solid var(--color-border);
border-radius: 4px;
background: #f6f8fa;
background: var(--color-surface);
font: inherit;
cursor: pointer;
}
@@ -184,7 +184,7 @@
.ss-find__status {
font-size: 12px;
color: #57606a;
color: var(--color-text-secondary);
}
.ss-memo,
@@ -194,11 +194,11 @@
min-width: 140px;
max-width: 260px;
padding: 4px 6px;
border: 1px solid #bf8700;
background: #fff8c5;
border: 1px solid var(--color-warning);
background: color-mix(in srgb, var(--color-warning) 15%, var(--color-surface-raised));
font: inherit;
white-space: pre-wrap;
box-shadow: 0 2px 6px rgb(0 0 0 / 15%);
box-shadow: var(--shadow-sm);
}
.ss-memo {
@@ -213,15 +213,15 @@
display: flex;
gap: 2px;
padding: 4px;
border: 1px solid #d0d7de;
background: #fff;
box-shadow: 0 4px 12px rgb(0 0 0 / 15%);
border: 1px solid var(--color-border);
background: var(--color-surface-raised);
box-shadow: var(--shadow-lg);
}
.ss-pick > button {
padding: 2px 8px;
border: 1px solid #d0d7de;
background: #f6f8fa;
border: 1px solid var(--color-border);
background: var(--color-surface);
font: inherit;
cursor: pointer;
}
@@ -232,10 +232,10 @@
z-index: 6;
min-width: 200px;
max-width: 360px;
border: 1px solid #d0d7de;
background: #fff;
border: 1px solid var(--color-border);
background: var(--color-surface-raised);
font-size: 12px;
box-shadow: 0 4px 12px rgb(0 0 0 / 15%);
box-shadow: var(--shadow-lg);
}
.ss-hint[hidden] {
@@ -255,7 +255,7 @@
}
.ss-hint__item.is-on {
background: #ddf4ff;
background: color-mix(in srgb, var(--color-accent) 18%, var(--color-surface-raised));
}
/* 데이터 메뉴 — 패널 창 · 유효성 목록 ▼ */
@@ -266,10 +266,10 @@
z-index: 21;
max-height: calc(100% - 8px);
overflow: auto;
border: 1px solid #d0d7de;
border: 1px solid var(--color-border);
border-radius: 6px;
background: #fff;
box-shadow: 0 4px 12px rgb(0 0 0 / 15%);
background: var(--color-surface-raised);
box-shadow: var(--shadow-lg);
}
.ss-dialog[hidden],
@@ -283,7 +283,7 @@
justify-content: space-between;
gap: 8px;
padding: 6px 8px;
border-bottom: 1px solid #d0d7de;
border-bottom: 1px solid var(--color-border);
font-weight: bold;
}
@@ -296,8 +296,8 @@
z-index: 8;
width: 16px;
padding: 0;
border: 1px solid #8c959f;
background: #f6f8fa;
border: 1px solid var(--color-border);
background: var(--color-surface);
font-size: 9px;
cursor: pointer;
}
@@ -75,7 +75,7 @@
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
box-shadow: var(--shadow-sm);
max-height: 160px;
overflow-y: auto;
}