creoui 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +167 -0
- package/dist/components.css +3984 -0
- package/dist/shells/CreoFacetGrid.d.ts +37 -0
- package/dist/shells/CreoPageShell.d.ts +42 -0
- package/dist/shells/index.css +1 -0
- package/dist/shells/index.d.ts +17 -0
- package/dist/shells/index.js +45 -0
- package/dist/shells/index.js.map +1 -0
- package/dist/token-shim.css +133 -0
- package/dist/tokens.css +798 -0
- package/dist/tokens.d.ts +1038 -0
- package/dist/tokens.js +612 -0
- package/package.json +61 -0
package/dist/tokens.css
ADDED
|
@@ -0,0 +1,798 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Do not edit directly — generated by Style Dictionary from creoui tokens.
|
|
3
|
+
* Source: tokens/**/*.json (DTCG).
|
|
4
|
+
*
|
|
5
|
+
* Default theme: mint-dark (Creo Design System default)
|
|
6
|
+
* Switch theme via `[data-theme="{id}"]` attribute on any ancestor.
|
|
7
|
+
* fleetstage 後方互換: `.dark` / `[data-theme="dark"]` = mint-dark、
|
|
8
|
+
* `[data-theme="light"]` = mint-light。
|
|
9
|
+
*
|
|
10
|
+
* NOTE: :root block は category (depth / editor-mode / frame / layout 等)
|
|
11
|
+
* 別に分割して emit する (Chrome CSS parser の prop-count 閾値回避)。
|
|
12
|
+
*/
|
|
13
|
+
/* === color === */
|
|
14
|
+
:root {
|
|
15
|
+
--color-surface-scrim: oklch(0 0 0 / 0.4); /** Drawer / side sheet backdrop scrim — theme-agnostic 40% black overlay。 dark theme でも light theme でも統一して暗 backdrop を使う UX 慣習に従う。 中央 modal (dialog) はより重い注意を引くため `scrim-modal` (50%) を使う。 */
|
|
16
|
+
--color-surface-scrim-modal: oklch(0 0 0 / 0.5); /** Dialog (中央 modal) backdrop scrim — 50% black overlay。 drawer (40%) より強く content を後退させ、 user の注意を modal に集中させる。 dark/light theme 共通。 */
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* === density === */
|
|
20
|
+
:root {
|
|
21
|
+
--density-default-padding-scale: 1; /** Default density — base spacing そのまま (4 mode の現状値) */
|
|
22
|
+
--density-default-gap-scale: 1; /** Default density — base gap そのまま */
|
|
23
|
+
--density-default-min-height-scale: 1; /** Default density — base target そのまま */
|
|
24
|
+
--density-comfortable-padding-scale: 1.25; /** Comfortable density — base × 1.25、 広い呼吸 (reading mode / hero / onboarding) */
|
|
25
|
+
--density-comfortable-gap-scale: 1.25; /** Comfortable density — gap も × 1.25 で element 間に余裕 */
|
|
26
|
+
--density-comfortable-min-height-scale: 1.1; /** Comfortable density — target × 1.1 (tap も focus も少し大きく) */
|
|
27
|
+
--density-compact-padding-scale: 0.85; /** Compact density — base × 0.85、 dense interface (data table / dashboard / dev tool) */
|
|
28
|
+
--density-compact-gap-scale: 0.85; /** Compact density — gap も × 0.85 */
|
|
29
|
+
--density-compact-min-height-scale: 0.95; /** Compact density — target × 0.95 (tap >= 44px は維持、 focus は少し縮) */
|
|
30
|
+
--density-cozy-padding-scale: 0.7; /** Cozy density — base × 0.7、 最も dense (terminal mode / log viewer / max info-density) */
|
|
31
|
+
--density-cozy-gap-scale: 0.7; /** Cozy density — gap も × 0.7 */
|
|
32
|
+
--density-cozy-min-height-scale: 0.85; /** Cozy density — target × 0.85 (a11y minimum 24px は超える) */
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* === depth === */
|
|
36
|
+
:root {
|
|
37
|
+
--depth-flat: 0; /** Flat — z=0、 base plane (no elevation) */
|
|
38
|
+
--depth-raised: 0.25rem; /** Raised — subtle hover lift / sidebar active item */
|
|
39
|
+
--depth-elevated: 0.5rem; /** Elevated — card / hero default forward (5-step rule の中央) */
|
|
40
|
+
--depth-floating: 1rem; /** Floating — feature card hover / popover / dropdown */
|
|
41
|
+
--depth-modal: 2rem; /** Modal — overlay / dialog / drawer の前面 (最深 elevation) */
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* === editor-mode === */
|
|
45
|
+
:root {
|
|
46
|
+
--editor-mode-axis-global: var(--color-brand-secondary); /** TOP 領域 accent — global tools / 視線の起点 (active theme の brand secondary に追従) */
|
|
47
|
+
--editor-mode-axis-utility: var(--color-text-tertiary); /** BOTTOM 領域 accent — ローカル utility (active theme の text tertiary) */
|
|
48
|
+
--editor-mode-axis-past: var(--color-semantic-info); /** LEFT 領域 accent — 時系列過去 / 参照 / 元ソース (active theme の semantic info) */
|
|
49
|
+
--editor-mode-axis-future: var(--color-brand-primary); /** RIGHT 領域 accent — 時系列未来 / ツール / 生成 (active theme の brand primary) */
|
|
50
|
+
--editor-mode-overlay-backdrop-opacity: 0; /** Editor Layer 最背面の opacity。デフォルト 0 (完全透過) で Content Layer を遮らない */
|
|
51
|
+
--editor-mode-panel-field-label: var(--color-text-secondary); /** Field label の text 色 (active theme の text secondary) */
|
|
52
|
+
--editor-mode-panel-field-value: var(--color-text-primary); /** Field value の text 色 (active theme の text primary) */
|
|
53
|
+
--editor-mode-panel-separator: var(--color-surface-border-subtle); /** Field group の区切り線 (active theme の border subtle) */
|
|
54
|
+
--editor-mode-panel-field-gap: 0.5rem; /** Field 同士の縦間隔 */
|
|
55
|
+
--editor-mode-panel-group-gap: 1rem; /** Field group 間の縦間隔 */
|
|
56
|
+
--editor-mode-region-bg-color: var(--color-surface-bg-base); /** Region 背景の base RGB (active theme に追従) */
|
|
57
|
+
--editor-mode-region-bg-opacity: 0.92; /** Region 背景の 不透明度 (0.0-1.0)。Content を完全に隠さず薄く透かす */
|
|
58
|
+
--editor-mode-region-border: var(--color-surface-border); /** Region の輪郭色 (active theme に追従) */
|
|
59
|
+
--editor-mode-region-padding: 0.75rem; /** Region 内側の padding */
|
|
60
|
+
--editor-mode-region-top-height: 2.75rem; /** TOP region の固定高さ (Content を大きく隠さないコンパクトサイズ) */
|
|
61
|
+
--editor-mode-region-bottom-height: 2.75rem; /** BOTTOM region の固定高さ */
|
|
62
|
+
--editor-mode-region-left-width: 15rem; /** LEFT region の default 幅 (collapsible) */
|
|
63
|
+
--editor-mode-region-right-width: 17.5rem; /** RIGHT region の default 幅 (tool panel、左より広め) */
|
|
64
|
+
--editor-mode-selection-outline-hover: var(--color-brand-primary-subtle); /** Editor mode 中の hover outline (ghost highlight、Content を触らず上に描画) */
|
|
65
|
+
--editor-mode-selection-outline-active: var(--color-brand-primary); /** 選択中の要素 outline (active theme の brand primary) */
|
|
66
|
+
--editor-mode-selection-outline-width: 0.125rem; /** Selection outline の太さ */
|
|
67
|
+
--editor-mode-selection-outline-offset: 0.125rem; /** 要素から outline までの offset (要素本体を遮らない) */
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* === focus-ring === */
|
|
71
|
+
:root {
|
|
72
|
+
--focus-ring-width: 0.125rem; /** Outer ring width — WCAG 2.4.11 minimum 2px contrast border、 thinner だと visible 不足 */
|
|
73
|
+
--focus-ring-offset: 0.125rem; /** Outline offset — 要素境界から 2px 離す (要素を遮らず ring が呼吸) */
|
|
74
|
+
--focus-ring-halo-width: 0.25rem; /** Inner halo width — outer ring の補完 subtle bg tint、 ring を 「包む glow」 として演出 */
|
|
75
|
+
--focus-ring-style: solid; /** Outline style — solid のみ採用 (dashed は精度に欠ける、 double は thicker 設計) */
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* === frame === */
|
|
79
|
+
:root {
|
|
80
|
+
--frame-perspective-default: 1400px; /** Default perspective — page-level spatial frame (subtle 3D) */
|
|
81
|
+
--frame-perspective-shallow: 50rem; /** Shallow — closer camera、 dramatic 3D (hero / playground) */
|
|
82
|
+
--frame-perspective-deep: 2400px; /** Deep — farther camera、 subtle 3D (long-form content / reading) */
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* === layout === */
|
|
86
|
+
:root {
|
|
87
|
+
--layout-container-xs: 30rem; /** Extra-narrow column — single-line CTA / standalone form / compact dialog body。 mobile portrait の effective text width に近い、 minimal modal stage。 */
|
|
88
|
+
--layout-container-s: 40rem; /** Narrow column — short form / single-line input collection / compact reading. iPhone 15 Pro Max landscape (932×430) や dense modal と整合。 */
|
|
89
|
+
--layout-container-m: 48rem; /** Default reading-friendly — 60-80 char line for long-form text. iPad portrait の content viewport と整合。 */
|
|
90
|
+
--layout-container-l: 1024px; /** Dashboard / table-rich content — multi-column tables / data lists. iPad landscape / 13" laptop の effective viewport。 */
|
|
91
|
+
--layout-container-xl: 1280px; /** Hero / multi-column layout — landing / marketing / wide app shell。 14" laptop 以上 desktop の comfortable upper bound。 */
|
|
92
|
+
--layout-gap-tight: var(--spacing-xs); /** Tight gap — icon+label inline, chip group, closely-related siblings */
|
|
93
|
+
--layout-gap-sibling: var(--spacing-m); /** Default sibling gap — between stacked elements (list items, form fields) */
|
|
94
|
+
--layout-gap-section: var(--margin-l); /** Section-to-section gap — thematic block break (between content sections) */
|
|
95
|
+
--layout-gap-page: var(--margin-xl); /** Page-level break — hero / footer separation, landing page major divisions */
|
|
96
|
+
--layout-grid-col-min-xs: 7.5rem; /** auto-fit grid 最小 column 幅 (xs cells) — chip / avatar grid / icon-only tile。 dense 並びで多数表示が前提の最小単位。 */
|
|
97
|
+
--layout-grid-col-min-s: 10rem; /** auto-fit grid 最小 column 幅 (s cells) — image thumbnail / icon tile / chip group 等の 密 grid 向け。 */
|
|
98
|
+
--layout-grid-col-min-m: 13.75rem; /** auto-fit grid 最小 column 幅 (m cells) — card list / preview tile の標準サイズ、 readable summary を含む card に最適。 */
|
|
99
|
+
--layout-grid-col-min-l: 17.5rem; /** auto-fit grid 最小 column 幅 (l cells) — content card with headline + 1-2 line description + meta、 article preview。 */
|
|
100
|
+
--layout-grid-col-min-xl: 20rem; /** auto-fit grid 最小 column 幅 (xl cells) — feature card / hero tile、 multi-line description + CTA を含む rich card。 */
|
|
101
|
+
--layout-target-tap: 2.75rem; /** Minimum tap target — Apple HIG accessibility requirement (modals, buttons on touch devices) */
|
|
102
|
+
--layout-target-focus: 2rem; /** Minimum focus target — pointer devices / desktop-first (smaller than tap but still comfortable) */
|
|
103
|
+
--layout-target-hit: 1.5rem; /** Minimum hit target — dense UI (toolbars, inline actions), still WCAG-reasonable with hover affordance */
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* === margin === */
|
|
107
|
+
:root {
|
|
108
|
+
--margin-xs: 0.5rem; /** Extra-small margin — tight stack (paragraph spacing, inline gap) */
|
|
109
|
+
--margin-s: 1rem; /** Small margin — standard vertical rhythm between elements */
|
|
110
|
+
--margin-m: 1.125rem; /** Medium margin — component block separation (default、 spacing.m と揃える) */
|
|
111
|
+
--margin-l: 2.5rem; /** Large margin — section divider (between thematic blocks) */
|
|
112
|
+
--margin-xl: 4rem; /** Extra-large margin — major section or hero break (page-level breathing) */
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* === motion === */
|
|
116
|
+
:root {
|
|
117
|
+
--motion-duration-instant: 80ms; /** Instant — micro feedback (button click flash 等) */
|
|
118
|
+
--motion-duration-fast: 160ms; /** Fast — small UI transitions (tooltip / hover) */
|
|
119
|
+
--motion-duration-normal: 220ms; /** Normal — default transition (card lift / nav switch、 5-step 中央) */
|
|
120
|
+
--motion-duration-slow: 320ms; /** Slow — Frame morph / page transition (perceptible motion) */
|
|
121
|
+
--motion-duration-lazy: 480ms; /** Lazy — large layout shift / hero reveal (deliberate) */
|
|
122
|
+
--motion-easing-linear: linear; /** Linear — constant velocity (progress bars 等の cumulative motion) */
|
|
123
|
+
--motion-easing-in: cubic-bezier(0.4, 0, 1, 1); /** Ease-in — slow start, fast end (退場 animation) */
|
|
124
|
+
--motion-easing-out: cubic-bezier(0, 0, 0.2, 1); /** Ease-out — fast start, slow end (登場 animation、 Material 3 default) */
|
|
125
|
+
--motion-easing-in-out: cubic-bezier(0.4, 0, 0.2, 1); /** Ease-in-out — smooth both ends (state change、 standard default) */
|
|
126
|
+
--motion-easing-spring: cubic-bezier(0.2, 0.8, 0.2, 1); /** Spring — Creo brand bouncy curve (3D Frame morph / lively interactions) */
|
|
127
|
+
--motion-mapping-hover-duration: var(--motion-duration-fast); /** Hover transition duration — fast (160ms)、 small surface motion で 「変化が現れる」 感 */
|
|
128
|
+
--motion-mapping-hover-easing: var(--motion-easing-out); /** Hover transition easing — ease-out で 「登場 → 落ち着く」 (Material 3 default) */
|
|
129
|
+
--motion-mapping-press-duration: var(--motion-duration-instant); /** Press transition duration — instant (80ms) で micro feedback、 押下の即時感 */
|
|
130
|
+
--motion-mapping-press-easing: var(--motion-easing-in); /** Press transition easing — ease-in で 「押し込み」 (急停止) */
|
|
131
|
+
--motion-mapping-toggle-duration: var(--motion-duration-normal); /** Toggle transition duration — normal (220ms) で滑らかな state change */
|
|
132
|
+
--motion-mapping-toggle-easing: var(--motion-easing-in-out); /** Toggle transition easing — in-out で両端滑らか (radio / checkbox / switch / segmented) */
|
|
133
|
+
--motion-mapping-focus-ring-duration: var(--motion-duration-instant); /** Focus ring transition duration — instant (80ms) で keyboard tab に即応 */
|
|
134
|
+
--motion-mapping-focus-ring-easing: var(--motion-easing-out); /** Focus ring transition easing — ease-out で「ring が現れる」 */
|
|
135
|
+
--motion-mapping-dropdown-duration: var(--motion-duration-fast); /** Dropdown / popover / tooltip duration — fast (160ms) で軽快な登場 */
|
|
136
|
+
--motion-mapping-dropdown-easing: var(--motion-easing-out); /** Dropdown easing — ease-out で 「ふわっと出る」 */
|
|
137
|
+
--motion-mapping-modal-enter-duration: var(--motion-duration-slow); /** Modal entry duration — slow (320ms) で「落ち着いた登場」 (modal / drawer / dialog) */
|
|
138
|
+
--motion-mapping-modal-enter-easing: var(--motion-easing-out); /** Modal entry easing — ease-out で fast → slow (前面に現れて止まる) */
|
|
139
|
+
--motion-mapping-modal-exit-duration: var(--motion-duration-normal); /** Modal exit duration — normal (220ms) で「素早く消える」 */
|
|
140
|
+
--motion-mapping-modal-exit-easing: var(--motion-easing-in); /** Modal exit easing — ease-in で slow → fast (退場、 引っ込む) */
|
|
141
|
+
--motion-mapping-page-transition-duration: var(--motion-duration-normal); /** Page route transition duration — normal (220ms) で滑らかな移動 */
|
|
142
|
+
--motion-mapping-page-transition-easing: var(--motion-easing-in-out); /** Page transition easing — in-out で両端滑らか (route 変化) */
|
|
143
|
+
--motion-mapping-frame-morph-duration: var(--motion-duration-slow); /** Frame system morph duration — slow (320ms)、 Creo brand identity の「呼吸」 */
|
|
144
|
+
--motion-mapping-frame-morph-easing: var(--motion-easing-spring); /** Frame morph easing — spring で Creo brand bouncy (3D depth metaphor articulate) */
|
|
145
|
+
--motion-mapping-skeleton-shimmer-duration: var(--motion-duration-lazy); /** Skeleton shimmer duration — lazy (480ms) で loading の cumulative motion */
|
|
146
|
+
--motion-mapping-skeleton-shimmer-easing: var(--motion-easing-linear); /** Skeleton shimmer easing — linear で「途切れない流れ」 (loading は時間流動) */
|
|
147
|
+
--motion-mapping-progress-indeterminate-duration: var(--motion-duration-lazy); /** Progress indeterminate bar duration — lazy (480ms) で end-less cumulative motion */
|
|
148
|
+
--motion-mapping-progress-indeterminate-easing: var(--motion-easing-linear); /** Progress indeterminate easing — linear で constant velocity (途中 progress 表現) */
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* === radius === */
|
|
152
|
+
:root {
|
|
153
|
+
--radius-none: 0; /** No rounding — explicit reset (special, outside 5 tier rule) */
|
|
154
|
+
--radius-xs: 0.25rem; /** Extra-small radius — minimal rounding (chips, tags) */
|
|
155
|
+
--radius-s: 0.5rem; /** Small radius — subtle rounding (buttons, inputs) */
|
|
156
|
+
--radius-m: 0.9375rem; /** Medium radius — cards, popovers (soft friendly feel) */
|
|
157
|
+
--radius-l: 1.375rem; /** Large radius — modals, larger surfaces */
|
|
158
|
+
--radius-xl: 1.75rem; /** Extra-large radius — hero surfaces */
|
|
159
|
+
--radius-full: 9999px; /** Fully rounded — pill shapes and circles (special, outside 5 tier rule) */
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* === shadow === */
|
|
163
|
+
:root {
|
|
164
|
+
--shadow-none: none; /** No shadow */
|
|
165
|
+
--shadow-s: 0 1px 2px 0 rgba(32, 36, 46, 0.06); /** Small elevation — quiet lift for subtle layers */
|
|
166
|
+
--shadow-m: 0 4px 6px -1px rgba(32, 36, 46, 0.08), 0 2px 4px -2px rgba(32, 36, 46, 0.06); /** Medium elevation — cards, dropdowns */
|
|
167
|
+
--shadow-l: 0 10px 15px -3px rgba(32, 36, 46, 0.10), 0 4px 6px -4px rgba(32, 36, 46, 0.08); /** Large elevation — popovers, overlays */
|
|
168
|
+
--shadow-xl: 0 20px 25px -5px rgba(32, 36, 46, 0.12), 0 8px 10px -6px rgba(32, 36, 46, 0.08); /** Extra-large elevation — modals, focal surfaces */
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/* === spacing === */
|
|
172
|
+
:root {
|
|
173
|
+
--spacing-xs: 0.25rem; /** Extra-small spacing — 4px (base unit) */
|
|
174
|
+
--spacing-s: 0.5rem; /** Small spacing — 8px */
|
|
175
|
+
--spacing-m: 1.125rem; /** Medium spacing — 18px (default gap between UI elements) */
|
|
176
|
+
--spacing-l: 1.5rem; /** Large spacing — 24px */
|
|
177
|
+
--spacing-xl: 2rem; /** Extra-large spacing — 32px */
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* === typography === */
|
|
181
|
+
:root {
|
|
182
|
+
--typography-body-lead: var(--typography-size-xl); /** Lead body — opening paragraph / intro (larger, invites reading) */
|
|
183
|
+
--typography-body-default: var(--typography-size-m); /** Default body — regular paragraph text (最もよく使う) */
|
|
184
|
+
--typography-body-emphasis: var(--typography-size-m); /** Emphasis body — default size with stronger weight (意味的な強調、size は default と同じ) */
|
|
185
|
+
--typography-body-helper: var(--typography-size-s); /** Helper text — form helper, status message, secondary info */
|
|
186
|
+
--typography-body-caption: var(--typography-size-xs); /** Caption — image caption, footnote, meta info (smallest readable body) */
|
|
187
|
+
--typography-display-xs: 1.5rem; /** Display xs — smallest heading (h4 / section title / card title) */
|
|
188
|
+
--typography-display-s: 2rem; /** Display s — standard heading (h3 / article title / section headline) */
|
|
189
|
+
--typography-display-m: 2.75rem; /** Display m — default hero / h2 (Creo aesthetic: 柔らかく強い存在感) */
|
|
190
|
+
--typography-display-l: 3.5rem; /** Display l — page hero / h1 */
|
|
191
|
+
--typography-display-xl: 4.5rem; /** Display xl — landing mega headline / promotional hero */
|
|
192
|
+
--typography-family-sans: 'Creo Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI Variable', 'Segoe UI', 'Yu Gothic UI', 'Meiryo UI', Roboto, 'Noto Sans JP', sans-serif; /** Default UI sans-serif family (multi-language: EN/JA/KO, multi-platform: macOS/Win/Linux) */
|
|
193
|
+
--typography-family-mono: 'JetBrainsMono Nerd Font', 'FiraCode Nerd Font', 'CaskaydiaCove Nerd Font', 'Iosevka Nerd Font', '0xProto Nerd Font', 'IBM Plex Mono', 'JetBrains Mono', 'SF Mono', 'Cascadia Code', 'Cascadia Mono', 'Fira Code', 'Consolas', 'Yu Gothic UI', monospace; /** Default monospace family for code blocks, tokens, IDs. Top 5 Nerd Fonts (JetBrainsMono / FiraCode / Cascadia / Iosevka / 0xProto) を primary fallback、IBM Plex Mono を corporate fallback。Nerd Font が install 済なら icon glyph も同 stack で使える */
|
|
194
|
+
--typography-family-mono-legible: 'AtkinsonHyperlegibleMono Nerd Font', 'Atkinson Hyperlegible Mono', 'Hack Nerd Font', 'Hack', 'JetBrainsMono Nerd Font', 'JetBrains Mono', monospace; /** Mono variant for accessibility / high legibility. Atkinson Hyperlegible Mono (Braille Institute) + Hack を主軸。低視力 / 小サイズ / long session で読みやすさ最優先 */
|
|
195
|
+
--typography-family-mono-retro: 'DepartureMono Nerd Font', 'Departure Mono', 'Gohu Nerd Font', 'GohuFont', '3270 Nerd Font', '3270 Medium', 'Terminus Nerd Font', 'Terminus', 'JetBrainsMono Nerd Font', monospace; /** Mono variant for retro / pixel / lo-fi aesthetic. Departure Mono / GohuFont / 3270 / Terminus の bitmap-like / pixel-perfect な font 群。display heading や theme アクセントで使う */
|
|
196
|
+
--typography-family-mono-corporate: 'IBM Plex Mono Nerd Font', 'IBM Plex Mono', 'AdwaitaMono Nerd Font', 'Adwaita Mono', 'JetBrainsMono Nerd Font', 'JetBrains Mono', monospace; /** Mono variant for corporate / professional tone. IBM Plex Mono が主軸 (Plex Sans/Serif と family 統一可)、Adwaita Mono が GNOME/Linux native flavor */
|
|
197
|
+
--typography-family-mono-display: 'ShareTechMono Nerd Font', 'Share Tech Mono', 'VictorMono Nerd Font', 'Victor Mono', 'JetBrainsMono Nerd Font', 'JetBrains Mono', monospace; /** Mono variant for display / heading / cyberpunk aesthetic. Share Tech Mono (CRT terminal feel) や Victor Mono (cursive italic 強調) が主軸。banner / hero / accent 用 */
|
|
198
|
+
--typography-family-display: 'Creo Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI Variable', 'Segoe UI', 'Yu Gothic UI', 'Noto Sans JP', sans-serif; /** Display family — heroes, large marketing headlines (multi-platform) */
|
|
199
|
+
--typography-family-icon: 'Symbols Nerd Font Mono', 'Symbols Nerd Font', 'JetBrainsMono Nerd Font', 'FiraCode Nerd Font', 'CaskaydiaCove Nerd Font', 'Iosevka Nerd Font', '0xProto Nerd Font', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji', sans-serif; /** Icon family — Nerd Fonts (~10k アイコン: devicons / octicons / font-awesome / material) + OS native emoji fallback。Nerd Font 未 install 環境では emoji / 普通文字に degrade */
|
|
200
|
+
--typography-family-app: 'JetBrainsMono Nerd Font Mono', 'JetBrainsMono Nerd Font', 'JetBrains Mono', 'PlemolJP', 'Noto Sans JP', monospace; /** App UI mode — chrome 全般 (sidebar / button / dialog / tab)。等幅 + Nerd Font icon、CJK は PlemolJP fallback で完全等幅統一。VP Phase A1 default */
|
|
201
|
+
--typography-family-read: 'PlemolJP', 'Noto Sans JP', 'JetBrainsMono Nerd Font Mono', monospace; /** Read mode — 読み専用表示 (memory view / chat history / canvas markdown render / log viewer)。PlemolJP の Plex Sans JP + JetBrains Mono Latin で CJK 完全等幅統一 */
|
|
202
|
+
--typography-family-editor: 'iAWriterDuoS Nerd Font Mono', 'iAWriterDuoS Nerd Font', 'iA Writer Duo S', 'PlemolJP', 'Noto Sans JP', monospace; /** Editor mode (write、default) — textarea / Markdown editor / chat input。iA Writer Duo の Duospace で writer 体験、CJK は PlemolJP */
|
|
203
|
+
--typography-family-editor-mono: 'iAWriterMonoS', 'iA Writer Mono S', 'PlemolJP', 'Noto Sans JP', monospace; /** Editor mode option — 純粋 mono。iA Writer Mono、コード重視 user 向け */
|
|
204
|
+
--typography-family-editor-quattro: 'iAWriterQuattroS', 'iA Writer Quattro S', 'PlemolJP', 'Noto Sans JP', sans-serif; /** Editor mode option — semi-proportional。iA Writer Quattro、長文散文 user 向け */
|
|
205
|
+
--typography-family-terminal: 'JetBrainsMono Nerd Font Mono', 'JetBrainsMono Nerd Font', 'JetBrains Mono', 'PlemolJP', 'Noto Sans JP', monospace; /** Terminal mode — xterm.js (app と同じ stack だが意味的に分離、将来 terminal 専用調整に拡張可) */
|
|
206
|
+
--typography-icon-xs: 1rem; /** Tiny inline icon — text-flow に並ぶ 1em 相当の補助 mark / favicon / dense list の leading icon。 */
|
|
207
|
+
--typography-icon-s: 1.5rem; /** Small icon — button / input / chip の leading mark、 toolbar action。 base 16px text と並ぶ comfortable 比率。 */
|
|
208
|
+
--typography-icon-m: 2.5rem; /** Icon display — list item / inline 強調。 emoji や icon font の visual size、 typography size とは別 scale。 */
|
|
209
|
+
--typography-icon-l: 4rem; /** Icon display — empty-state default / card header / feature illustration。 */
|
|
210
|
+
--typography-icon-xl: 6rem; /** Icon display — empty-state large variant / hero illustration / onboarding。 page-level の visual anchor。 */
|
|
211
|
+
--typography-line-height-tight: 1.25; /** Tight line-height — headings */
|
|
212
|
+
--typography-line-height-normal: 1.5; /** Normal line-height — default body */
|
|
213
|
+
--typography-line-height-relaxed: 1.75; /** Relaxed line-height — long-form text, CJK languages */
|
|
214
|
+
--typography-size-xs: 0.75rem; /** Caption / meta text */
|
|
215
|
+
--typography-size-s: 0.875rem; /** Small body / helper text */
|
|
216
|
+
--typography-size-m: 1rem; /** Default body text */
|
|
217
|
+
--typography-size-l: 1.125rem; /** Large body / subheading */
|
|
218
|
+
--typography-size-xl: 1.25rem; /** Largest body / small heading (h4) */
|
|
219
|
+
--typography-title-hero: var(--typography-display-xl); /** Hero title — landing page mega headline (promotional / marketing) */
|
|
220
|
+
--typography-title-page: var(--typography-display-m); /** Page title — h1 (article title, app screen heading) */
|
|
221
|
+
--typography-title-section: var(--typography-display-s); /** Section title — h2 (thematic block within a page) */
|
|
222
|
+
--typography-title-subsection: var(--typography-display-xs); /** Subsection title — h3 (nested group within a section) */
|
|
223
|
+
--typography-title-card: var(--typography-size-xl); /** Card title — h4 (inline block title, table header, menu label) */
|
|
224
|
+
--typography-weight-regular: 400; /** Regular body weight */
|
|
225
|
+
--typography-weight-medium: 500; /** Medium emphasis */
|
|
226
|
+
--typography-weight-semibold: 600; /** Semi-bold — subheadings, buttons */
|
|
227
|
+
--typography-weight-bold: 700; /** Bold — headings */
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/* === default theme color (mint-dark) === */
|
|
231
|
+
:root {
|
|
232
|
+
--color-brand-primary: oklch(0.75 0.12 160); /** Brand primary (base) */
|
|
233
|
+
--color-brand-primary-hover: oklch(0.8 0.13 160); /** Brand primary — hover */
|
|
234
|
+
--color-brand-primary-active: oklch(0.7 0.11 160); /** Brand primary — active / pressed */
|
|
235
|
+
--color-brand-primary-subtle: oklch(0.25 0.05 160); /** Brand primary — subtle tint surface */
|
|
236
|
+
--color-brand-secondary: oklch(0.7 0.12 300); /** Brand secondary (base) */
|
|
237
|
+
--color-brand-secondary-hover: oklch(0.75 0.13 300); /** Brand secondary — hover */
|
|
238
|
+
--color-brand-secondary-active: oklch(0.65 0.11 300); /** Brand secondary — active / pressed */
|
|
239
|
+
--color-brand-secondary-subtle: oklch(0.25 0.05 300); /** Brand secondary — subtle tint surface */
|
|
240
|
+
--color-semantic-success: oklch(0.7 0.15 145); /** Semantic success (base) */
|
|
241
|
+
--color-semantic-success-hover: oklch(0.75 0.16 145); /** Semantic success — hover */
|
|
242
|
+
--color-semantic-success-active: oklch(0.65 0.14 145); /** Semantic success — active */
|
|
243
|
+
--color-semantic-success-subtle: oklch(0.25 0.06 145); /** Semantic success — subtle surface */
|
|
244
|
+
--color-semantic-success-text: oklch(0.8 0.12 145); /** Semantic success — text on tinted bg */
|
|
245
|
+
--color-semantic-warning: oklch(0.75 0.14 85); /** Semantic warning (base) */
|
|
246
|
+
--color-semantic-warning-hover: oklch(0.8 0.15 85); /** Semantic warning — hover */
|
|
247
|
+
--color-semantic-warning-active: oklch(0.7 0.13 85); /** Semantic warning — active */
|
|
248
|
+
--color-semantic-warning-subtle: oklch(0.25 0.06 85); /** Semantic warning — subtle surface */
|
|
249
|
+
--color-semantic-warning-text: oklch(0.85 0.1 85); /** Semantic warning — text on tinted bg */
|
|
250
|
+
--color-semantic-error: oklch(0.7 0.18 25); /** Semantic error (base) */
|
|
251
|
+
--color-semantic-error-hover: oklch(0.75 0.19 25); /** Semantic error — hover */
|
|
252
|
+
--color-semantic-error-active: oklch(0.65 0.17 25); /** Semantic error — active */
|
|
253
|
+
--color-semantic-error-subtle: oklch(0.25 0.06 25); /** Semantic error — subtle surface */
|
|
254
|
+
--color-semantic-error-text: oklch(0.85 0.12 25); /** Semantic error — text on tinted bg */
|
|
255
|
+
--color-semantic-info: oklch(0.7 0.12 240); /** Semantic info (base) */
|
|
256
|
+
--color-semantic-info-hover: oklch(0.75 0.13 240); /** Semantic info — hover */
|
|
257
|
+
--color-semantic-info-active: oklch(0.65 0.11 240); /** Semantic info — active */
|
|
258
|
+
--color-semantic-info-subtle: oklch(0.25 0.05 240); /** Semantic info — subtle surface */
|
|
259
|
+
--color-semantic-info-text: oklch(0.85 0.1 240); /** Semantic info — text on tinted bg */
|
|
260
|
+
--color-surface-bg-base: oklch(0.15 0.02 260); /** Root background — page canvas */
|
|
261
|
+
--color-surface-bg-subtle: oklch(0.18 0.02 260); /** Subtle background — panels, sections */
|
|
262
|
+
--color-surface-bg-emphasis: oklch(0.28 0.02 260); /** Emphasized background — highlighted regions */
|
|
263
|
+
--color-surface-surface: oklch(0.2 0.02 260); /** Card / modal / elevated container surface */
|
|
264
|
+
--color-surface-border: oklch(0.3 0.02 260); /** Default border / divider */
|
|
265
|
+
--color-surface-border-subtle: oklch(0.25 0.015 260); /** Subtle border — quiet separators */
|
|
266
|
+
--color-text-primary: oklch(0.95 0.01 260); /** Primary foreground text */
|
|
267
|
+
--color-text-secondary: oklch(0.75 0.01 260); /** Secondary text — supporting copy */
|
|
268
|
+
--color-text-tertiary: oklch(0.6 0.01 260); /** Tertiary text — captions, hints */
|
|
269
|
+
--color-text-disabled: oklch(0.45 0.01 260); /** Disabled text */
|
|
270
|
+
--color-text-inverse: oklch(0.15 0.02 260); /** Inverse text — on dark surfaces */
|
|
271
|
+
--color-shadow-base: oklch(0 0 0 / 0.3); /** Shadow tint — default */
|
|
272
|
+
--color-shadow-strong: oklch(0 0 0 / 0.5); /** Shadow tint — strong */
|
|
273
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.2 0.04 160) 0%, oklch(0.18 0.03 175) 50%, oklch(0.22 0.05 165) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
274
|
+
--color-focus-ring-color: oklch(0.85 0.14 160); /** Focus ring color — outer 2px solid ring (mint-dark、 brand 同 hue + luminance UP で AAA contrast 確保) */
|
|
275
|
+
--color-focus-ring-halo: oklch(0.85 0.14 160 / 0.18); /** Focus halo — inner 4px subtle bg tint、 ring を 「包む glow」 として演出 */
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
[data-theme="contrast-dark"] {
|
|
279
|
+
--color-brand-primary: oklch(0.62 0.16 270); /** Brand primary (base) */
|
|
280
|
+
--color-brand-primary-hover: oklch(0.67 0.17 270); /** Brand primary — hover */
|
|
281
|
+
--color-brand-primary-active: oklch(0.57 0.15 270); /** Brand primary — active / pressed */
|
|
282
|
+
--color-brand-primary-subtle: oklch(0.24 0.06 270); /** Brand primary — subtle tint surface */
|
|
283
|
+
--color-brand-secondary: oklch(0.72 0.18 335); /** Brand secondary (base) */
|
|
284
|
+
--color-brand-secondary-hover: oklch(0.77 0.19 335); /** Brand secondary — hover */
|
|
285
|
+
--color-brand-secondary-active: oklch(0.67 0.17 335); /** Brand secondary — active / pressed */
|
|
286
|
+
--color-brand-secondary-subtle: oklch(0.24 0.06 335); /** Brand secondary — subtle tint surface */
|
|
287
|
+
--color-semantic-success: oklch(0.7 0.14 160); /** Semantic success (base) */
|
|
288
|
+
--color-semantic-success-hover: oklch(0.75 0.15 160); /** Semantic success — hover */
|
|
289
|
+
--color-semantic-success-active: oklch(0.65 0.13 160); /** Semantic success — active */
|
|
290
|
+
--color-semantic-success-subtle: oklch(0.24 0.05 160); /** Semantic success — subtle surface */
|
|
291
|
+
--color-semantic-success-text: oklch(0.82 0.1 160); /** Semantic success — text on tinted bg */
|
|
292
|
+
--color-semantic-warning: oklch(0.75 0.13 85); /** Semantic warning (base) */
|
|
293
|
+
--color-semantic-warning-hover: oklch(0.8 0.14 85); /** Semantic warning — hover */
|
|
294
|
+
--color-semantic-warning-active: oklch(0.7 0.12 85); /** Semantic warning — active */
|
|
295
|
+
--color-semantic-warning-subtle: oklch(0.24 0.05 85); /** Semantic warning — subtle surface */
|
|
296
|
+
--color-semantic-warning-text: oklch(0.85 0.1 85); /** Semantic warning — text on tinted bg */
|
|
297
|
+
--color-semantic-error: oklch(0.68 0.17 15); /** Semantic error (base) */
|
|
298
|
+
--color-semantic-error-hover: oklch(0.73 0.18 15); /** Semantic error — hover */
|
|
299
|
+
--color-semantic-error-active: oklch(0.63 0.16 15); /** Semantic error — active */
|
|
300
|
+
--color-semantic-error-subtle: oklch(0.24 0.06 15); /** Semantic error — subtle surface */
|
|
301
|
+
--color-semantic-error-text: oklch(0.83 0.12 15); /** Semantic error — text on tinted bg */
|
|
302
|
+
--color-semantic-info: oklch(0.8 0.1 195); /** Semantic info (base) */
|
|
303
|
+
--color-semantic-info-hover: oklch(0.85 0.11 195); /** Semantic info — hover */
|
|
304
|
+
--color-semantic-info-active: oklch(0.75 0.09 195); /** Semantic info — active */
|
|
305
|
+
--color-semantic-info-subtle: oklch(0.24 0.04 195); /** Semantic info — subtle surface */
|
|
306
|
+
--color-semantic-info-text: oklch(0.88 0.08 195); /** Semantic info — text on tinted bg */
|
|
307
|
+
--color-surface-bg-base: oklch(0.16 0.06 280); /** Root background — page canvas */
|
|
308
|
+
--color-surface-bg-subtle: oklch(0.19 0.06 280); /** Subtle background — panels, sections */
|
|
309
|
+
--color-surface-bg-emphasis: oklch(0.28 0.05 280); /** Emphasized background — highlighted regions */
|
|
310
|
+
--color-surface-surface: oklch(0.2 0.06 280); /** Card / modal / elevated container surface */
|
|
311
|
+
--color-surface-border: oklch(0.32 0.04 280); /** Default border / divider */
|
|
312
|
+
--color-surface-border-subtle: oklch(0.26 0.03 280); /** Subtle border — quiet separators */
|
|
313
|
+
--color-text-primary: oklch(0.95 0.01 280); /** Primary foreground text */
|
|
314
|
+
--color-text-secondary: oklch(0.75 0.01 280); /** Secondary text — supporting copy */
|
|
315
|
+
--color-text-tertiary: oklch(0.58 0.01 280); /** Tertiary text — captions, hints */
|
|
316
|
+
--color-text-disabled: oklch(0.42 0.01 280); /** Disabled text */
|
|
317
|
+
--color-text-inverse: oklch(0.95 0.01 280); /** Inverse text — on dark surfaces */
|
|
318
|
+
--color-shadow-base: oklch(0 0 0 / 0.4); /** Shadow tint — default */
|
|
319
|
+
--color-shadow-strong: oklch(0 0 0 / 0.6); /** Shadow tint — strong */
|
|
320
|
+
--color-focus-ring-color: oklch(0.78 0.20 270); /** Focus ring color — outer 2px solid ring (contrast-dark、 high chroma で paradox identity を保持しつつ luminance UP で AAA contrast) */
|
|
321
|
+
--color-focus-ring-halo: oklch(0.78 0.20 270 / 0.20); /** Focus halo — inner 4px subtle bg tint (alpha 0.20 で contrast theme assertive) */
|
|
322
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.2 0.08 280) 0%, oklch(0.18 0.06 300) 50%, oklch(0.22 0.08 335) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
[data-theme="contrast-light"] {
|
|
326
|
+
--color-brand-primary: oklch(0.52 0.18 270); /** Brand primary (base) */
|
|
327
|
+
--color-brand-primary-hover: oklch(0.47 0.19 270); /** Brand primary — hover */
|
|
328
|
+
--color-brand-primary-active: oklch(0.42 0.2 270); /** Brand primary — active / pressed */
|
|
329
|
+
--color-brand-primary-subtle: oklch(0.94 0.05 270); /** Brand primary — subtle tint surface */
|
|
330
|
+
--color-brand-secondary: oklch(0.62 0.2 335); /** Brand secondary (base) */
|
|
331
|
+
--color-brand-secondary-hover: oklch(0.57 0.21 335); /** Brand secondary — hover */
|
|
332
|
+
--color-brand-secondary-active: oklch(0.52 0.22 335); /** Brand secondary — active / pressed */
|
|
333
|
+
--color-brand-secondary-subtle: oklch(0.95 0.05 335); /** Brand secondary — subtle tint surface */
|
|
334
|
+
--color-semantic-success: oklch(0.6 0.16 160); /** Semantic success (base) */
|
|
335
|
+
--color-semantic-success-hover: oklch(0.55 0.17 160); /** Semantic success — hover */
|
|
336
|
+
--color-semantic-success-active: oklch(0.5 0.18 160); /** Semantic success — active */
|
|
337
|
+
--color-semantic-success-subtle: oklch(0.95 0.04 160); /** Semantic success — subtle surface */
|
|
338
|
+
--color-semantic-success-text: oklch(0.35 0.12 160); /** Semantic success — text on tinted bg */
|
|
339
|
+
--color-semantic-warning: oklch(0.78 0.15 85); /** Semantic warning (base) */
|
|
340
|
+
--color-semantic-warning-hover: oklch(0.73 0.16 85); /** Semantic warning — hover */
|
|
341
|
+
--color-semantic-warning-active: oklch(0.68 0.17 85); /** Semantic warning — active */
|
|
342
|
+
--color-semantic-warning-subtle: oklch(0.96 0.05 85); /** Semantic warning — subtle surface */
|
|
343
|
+
--color-semantic-warning-text: oklch(0.4 0.12 85); /** Semantic warning — text on tinted bg */
|
|
344
|
+
--color-semantic-error: oklch(0.6 0.2 15); /** Semantic error (base) */
|
|
345
|
+
--color-semantic-error-hover: oklch(0.55 0.21 15); /** Semantic error — hover */
|
|
346
|
+
--color-semantic-error-active: oklch(0.5 0.22 15); /** Semantic error — active */
|
|
347
|
+
--color-semantic-error-subtle: oklch(0.95 0.04 15); /** Semantic error — subtle surface */
|
|
348
|
+
--color-semantic-error-text: oklch(0.4 0.15 15); /** Semantic error — text on tinted bg */
|
|
349
|
+
--color-semantic-info: oklch(0.6 0.12 195); /** Semantic info (base) */
|
|
350
|
+
--color-semantic-info-hover: oklch(0.55 0.13 195); /** Semantic info — hover */
|
|
351
|
+
--color-semantic-info-active: oklch(0.5 0.14 195); /** Semantic info — active */
|
|
352
|
+
--color-semantic-info-subtle: oklch(0.95 0.04 195); /** Semantic info — subtle surface */
|
|
353
|
+
--color-semantic-info-text: oklch(0.35 0.1 195); /** Semantic info — text on tinted bg */
|
|
354
|
+
--color-surface-bg-base: oklch(0.98 0.008 280); /** Root background — page canvas */
|
|
355
|
+
--color-surface-bg-subtle: oklch(0.96 0.01 280); /** Subtle background — panels, sections */
|
|
356
|
+
--color-surface-bg-emphasis: oklch(0.88 0.015 280); /** Emphasized background — highlighted regions */
|
|
357
|
+
--color-surface-surface: oklch(1 0 0); /** Card / modal / elevated container surface */
|
|
358
|
+
--color-surface-border: oklch(0.86 0.015 280); /** Default border / divider */
|
|
359
|
+
--color-surface-border-subtle: oklch(0.91 0.01 280); /** Subtle border — quiet separators */
|
|
360
|
+
--color-text-primary: oklch(0.18 0.02 280); /** Primary foreground text */
|
|
361
|
+
--color-text-secondary: oklch(0.38 0.02 280); /** Secondary text — supporting copy */
|
|
362
|
+
--color-text-tertiary: oklch(0.52 0.01 280); /** Tertiary text — captions, hints */
|
|
363
|
+
--color-text-disabled: oklch(0.68 0.01 280); /** Disabled text */
|
|
364
|
+
--color-text-inverse: oklch(0.98 0 0); /** Inverse text — on dark surfaces */
|
|
365
|
+
--color-shadow-base: oklch(0.2 0.03 280 / 0.1); /** Shadow tint — default */
|
|
366
|
+
--color-shadow-strong: oklch(0.2 0.03 280 / 0.2); /** Shadow tint — strong */
|
|
367
|
+
--color-focus-ring-color: oklch(0.40 0.22 270); /** Focus ring color — outer 2px solid ring (contrast-light、 high chroma + luminance DOWN で AAA contrast on light bg) */
|
|
368
|
+
--color-focus-ring-halo: oklch(0.40 0.22 270 / 0.20); /** Focus halo — inner 4px subtle bg tint (alpha 0.20 で contrast theme assertive) */
|
|
369
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.94 0.04 270) 0%, oklch(0.96 0.03 300) 50%, oklch(0.92 0.05 335) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
[data-theme="mint-dark"] {
|
|
373
|
+
--color-brand-primary: oklch(0.75 0.12 160); /** Brand primary (base) */
|
|
374
|
+
--color-brand-primary-hover: oklch(0.8 0.13 160); /** Brand primary — hover */
|
|
375
|
+
--color-brand-primary-active: oklch(0.7 0.11 160); /** Brand primary — active / pressed */
|
|
376
|
+
--color-brand-primary-subtle: oklch(0.25 0.05 160); /** Brand primary — subtle tint surface */
|
|
377
|
+
--color-brand-secondary: oklch(0.7 0.12 300); /** Brand secondary (base) */
|
|
378
|
+
--color-brand-secondary-hover: oklch(0.75 0.13 300); /** Brand secondary — hover */
|
|
379
|
+
--color-brand-secondary-active: oklch(0.65 0.11 300); /** Brand secondary — active / pressed */
|
|
380
|
+
--color-brand-secondary-subtle: oklch(0.25 0.05 300); /** Brand secondary — subtle tint surface */
|
|
381
|
+
--color-semantic-success: oklch(0.7 0.15 145); /** Semantic success (base) */
|
|
382
|
+
--color-semantic-success-hover: oklch(0.75 0.16 145); /** Semantic success — hover */
|
|
383
|
+
--color-semantic-success-active: oklch(0.65 0.14 145); /** Semantic success — active */
|
|
384
|
+
--color-semantic-success-subtle: oklch(0.25 0.06 145); /** Semantic success — subtle surface */
|
|
385
|
+
--color-semantic-success-text: oklch(0.8 0.12 145); /** Semantic success — text on tinted bg */
|
|
386
|
+
--color-semantic-warning: oklch(0.75 0.14 85); /** Semantic warning (base) */
|
|
387
|
+
--color-semantic-warning-hover: oklch(0.8 0.15 85); /** Semantic warning — hover */
|
|
388
|
+
--color-semantic-warning-active: oklch(0.7 0.13 85); /** Semantic warning — active */
|
|
389
|
+
--color-semantic-warning-subtle: oklch(0.25 0.06 85); /** Semantic warning — subtle surface */
|
|
390
|
+
--color-semantic-warning-text: oklch(0.85 0.1 85); /** Semantic warning — text on tinted bg */
|
|
391
|
+
--color-semantic-error: oklch(0.7 0.18 25); /** Semantic error (base) */
|
|
392
|
+
--color-semantic-error-hover: oklch(0.75 0.19 25); /** Semantic error — hover */
|
|
393
|
+
--color-semantic-error-active: oklch(0.65 0.17 25); /** Semantic error — active */
|
|
394
|
+
--color-semantic-error-subtle: oklch(0.25 0.06 25); /** Semantic error — subtle surface */
|
|
395
|
+
--color-semantic-error-text: oklch(0.85 0.12 25); /** Semantic error — text on tinted bg */
|
|
396
|
+
--color-semantic-info: oklch(0.7 0.12 240); /** Semantic info (base) */
|
|
397
|
+
--color-semantic-info-hover: oklch(0.75 0.13 240); /** Semantic info — hover */
|
|
398
|
+
--color-semantic-info-active: oklch(0.65 0.11 240); /** Semantic info — active */
|
|
399
|
+
--color-semantic-info-subtle: oklch(0.25 0.05 240); /** Semantic info — subtle surface */
|
|
400
|
+
--color-semantic-info-text: oklch(0.85 0.1 240); /** Semantic info — text on tinted bg */
|
|
401
|
+
--color-surface-bg-base: oklch(0.15 0.02 260); /** Root background — page canvas */
|
|
402
|
+
--color-surface-bg-subtle: oklch(0.18 0.02 260); /** Subtle background — panels, sections */
|
|
403
|
+
--color-surface-bg-emphasis: oklch(0.28 0.02 260); /** Emphasized background — highlighted regions */
|
|
404
|
+
--color-surface-surface: oklch(0.2 0.02 260); /** Card / modal / elevated container surface */
|
|
405
|
+
--color-surface-border: oklch(0.3 0.02 260); /** Default border / divider */
|
|
406
|
+
--color-surface-border-subtle: oklch(0.25 0.015 260); /** Subtle border — quiet separators */
|
|
407
|
+
--color-text-primary: oklch(0.95 0.01 260); /** Primary foreground text */
|
|
408
|
+
--color-text-secondary: oklch(0.75 0.01 260); /** Secondary text — supporting copy */
|
|
409
|
+
--color-text-tertiary: oklch(0.6 0.01 260); /** Tertiary text — captions, hints */
|
|
410
|
+
--color-text-disabled: oklch(0.45 0.01 260); /** Disabled text */
|
|
411
|
+
--color-text-inverse: oklch(0.15 0.02 260); /** Inverse text — on dark surfaces */
|
|
412
|
+
--color-shadow-base: oklch(0 0 0 / 0.3); /** Shadow tint — default */
|
|
413
|
+
--color-shadow-strong: oklch(0 0 0 / 0.5); /** Shadow tint — strong */
|
|
414
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.2 0.04 160) 0%, oklch(0.18 0.03 175) 50%, oklch(0.22 0.05 165) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
415
|
+
--color-focus-ring-color: oklch(0.85 0.14 160); /** Focus ring color — outer 2px solid ring (mint-dark、 brand 同 hue + luminance UP で AAA contrast 確保) */
|
|
416
|
+
--color-focus-ring-halo: oklch(0.85 0.14 160 / 0.18); /** Focus halo — inner 4px subtle bg tint、 ring を 「包む glow」 として演出 */
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
[data-theme="mint-light"] {
|
|
420
|
+
--color-brand-primary: oklch(0.85 0.14 160); /** Brand primary (base) */
|
|
421
|
+
--color-brand-primary-hover: oklch(0.8 0.15 160); /** Brand primary — hover */
|
|
422
|
+
--color-brand-primary-active: oklch(0.75 0.16 160); /** Brand primary — active / pressed */
|
|
423
|
+
--color-brand-primary-subtle: oklch(0.95 0.05 160); /** Brand primary — subtle tint surface */
|
|
424
|
+
--color-brand-secondary: oklch(0.65 0.15 300); /** Brand secondary (base) */
|
|
425
|
+
--color-brand-secondary-hover: oklch(0.6 0.16 300); /** Brand secondary — hover */
|
|
426
|
+
--color-brand-secondary-active: oklch(0.55 0.17 300); /** Brand secondary — active / pressed */
|
|
427
|
+
--color-brand-secondary-subtle: oklch(0.95 0.05 300); /** Brand secondary — subtle tint surface */
|
|
428
|
+
--color-semantic-success: oklch(0.75 0.18 145); /** Semantic success (base) */
|
|
429
|
+
--color-semantic-success-hover: oklch(0.7 0.19 145); /** Semantic success — hover */
|
|
430
|
+
--color-semantic-success-active: oklch(0.65 0.2 145); /** Semantic success — active */
|
|
431
|
+
--color-semantic-success-subtle: oklch(0.95 0.05 145); /** Semantic success — subtle surface */
|
|
432
|
+
--color-semantic-success-text: oklch(0.35 0.12 145); /** Semantic success — text on tinted bg */
|
|
433
|
+
--color-semantic-warning: oklch(0.8 0.16 85); /** Semantic warning (base) */
|
|
434
|
+
--color-semantic-warning-hover: oklch(0.75 0.17 85); /** Semantic warning — hover */
|
|
435
|
+
--color-semantic-warning-active: oklch(0.7 0.18 85); /** Semantic warning — active */
|
|
436
|
+
--color-semantic-warning-subtle: oklch(0.95 0.06 85); /** Semantic warning — subtle surface */
|
|
437
|
+
--color-semantic-warning-text: oklch(0.4 0.12 85); /** Semantic warning — text on tinted bg */
|
|
438
|
+
--color-semantic-error: oklch(0.65 0.2 25); /** Semantic error (base) */
|
|
439
|
+
--color-semantic-error-hover: oklch(0.6 0.21 25); /** Semantic error — hover */
|
|
440
|
+
--color-semantic-error-active: oklch(0.55 0.22 25); /** Semantic error — active */
|
|
441
|
+
--color-semantic-error-subtle: oklch(0.95 0.05 25); /** Semantic error — subtle surface */
|
|
442
|
+
--color-semantic-error-text: oklch(0.4 0.15 25); /** Semantic error — text on tinted bg */
|
|
443
|
+
--color-semantic-info: oklch(0.7 0.15 240); /** Semantic info (base) */
|
|
444
|
+
--color-semantic-info-hover: oklch(0.65 0.16 240); /** Semantic info — hover */
|
|
445
|
+
--color-semantic-info-active: oklch(0.6 0.17 240); /** Semantic info — active */
|
|
446
|
+
--color-semantic-info-subtle: oklch(0.95 0.04 240); /** Semantic info — subtle surface */
|
|
447
|
+
--color-semantic-info-text: oklch(0.4 0.12 240); /** Semantic info — text on tinted bg */
|
|
448
|
+
--color-surface-bg-base: oklch(0.99 0 0); /** Root background — page canvas */
|
|
449
|
+
--color-surface-bg-subtle: oklch(0.97 0.005 260); /** Subtle background — panels, sections */
|
|
450
|
+
--color-surface-bg-emphasis: oklch(0.9 0.01 260); /** Emphasized background — highlighted regions */
|
|
451
|
+
--color-surface-surface: oklch(1 0 0); /** Card / modal / elevated container surface */
|
|
452
|
+
--color-surface-border: oklch(0.88 0.01 260); /** Default border / divider */
|
|
453
|
+
--color-surface-border-subtle: oklch(0.92 0.005 260); /** Subtle border — quiet separators */
|
|
454
|
+
--color-text-primary: oklch(0.2 0.02 260); /** Primary foreground text */
|
|
455
|
+
--color-text-secondary: oklch(0.4 0.02 260); /** Secondary text — supporting copy */
|
|
456
|
+
--color-text-tertiary: oklch(0.55 0.01 260); /** Tertiary text — captions, hints */
|
|
457
|
+
--color-text-disabled: oklch(0.7 0.01 260); /** Disabled text */
|
|
458
|
+
--color-text-inverse: oklch(0.98 0 0); /** Inverse text — on dark surfaces */
|
|
459
|
+
--color-shadow-base: oklch(0.2 0.02 260 / 0.08); /** Shadow tint — default */
|
|
460
|
+
--color-shadow-strong: oklch(0.2 0.02 260 / 0.15); /** Shadow tint — strong */
|
|
461
|
+
--color-focus-ring-color: oklch(0.45 0.16 160); /** Focus ring color — outer 2px solid ring (mint-light、 brand 同 hue + luminance DOWN で AAA contrast on light bg) */
|
|
462
|
+
--color-focus-ring-halo: oklch(0.45 0.16 160 / 0.18); /** Focus halo — inner 4px subtle bg tint、 ring を 「包む glow」 として演出 */
|
|
463
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.92 0.08 160) 0%, oklch(0.94 0.06 175) 50%, oklch(0.9 0.1 165) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
[data-theme="oldschool-dark"] {
|
|
467
|
+
--color-brand-primary: oklch(0.68 0.12 145); /** Brand primary (base) */
|
|
468
|
+
--color-brand-primary-hover: oklch(0.73 0.13 145); /** Brand primary — hover */
|
|
469
|
+
--color-brand-primary-active: oklch(0.63 0.11 145); /** Brand primary — active / pressed */
|
|
470
|
+
--color-brand-primary-subtle: oklch(0.24 0.04 145); /** Brand primary — subtle tint surface */
|
|
471
|
+
--color-brand-secondary: oklch(0.75 0.16 55); /** Brand secondary (base) */
|
|
472
|
+
--color-brand-secondary-hover: oklch(0.8 0.17 55); /** Brand secondary — hover */
|
|
473
|
+
--color-brand-secondary-active: oklch(0.7 0.15 55); /** Brand secondary — active / pressed */
|
|
474
|
+
--color-brand-secondary-subtle: oklch(0.24 0.05 55); /** Brand secondary — subtle tint surface */
|
|
475
|
+
--color-semantic-success: oklch(0.68 0.12 140); /** Semantic success (base) */
|
|
476
|
+
--color-semantic-success-hover: oklch(0.73 0.13 140); /** Semantic success — hover */
|
|
477
|
+
--color-semantic-success-active: oklch(0.63 0.11 140); /** Semantic success — active */
|
|
478
|
+
--color-semantic-success-subtle: oklch(0.24 0.04 140); /** Semantic success — subtle surface */
|
|
479
|
+
--color-semantic-success-text: oklch(0.8 0.1 140); /** Semantic success — text on tinted bg */
|
|
480
|
+
--color-semantic-warning: oklch(0.78 0.13 75); /** Semantic warning (base) */
|
|
481
|
+
--color-semantic-warning-hover: oklch(0.83 0.14 75); /** Semantic warning — hover */
|
|
482
|
+
--color-semantic-warning-active: oklch(0.73 0.12 75); /** Semantic warning — active */
|
|
483
|
+
--color-semantic-warning-subtle: oklch(0.24 0.05 75); /** Semantic warning — subtle surface */
|
|
484
|
+
--color-semantic-warning-text: oklch(0.85 0.1 75); /** Semantic warning — text on tinted bg */
|
|
485
|
+
--color-semantic-error: oklch(0.68 0.16 20); /** Semantic error (base) */
|
|
486
|
+
--color-semantic-error-hover: oklch(0.73 0.17 20); /** Semantic error — hover */
|
|
487
|
+
--color-semantic-error-active: oklch(0.63 0.15 20); /** Semantic error — active */
|
|
488
|
+
--color-semantic-error-subtle: oklch(0.24 0.05 20); /** Semantic error — subtle surface */
|
|
489
|
+
--color-semantic-error-text: oklch(0.83 0.12 20); /** Semantic error — text on tinted bg */
|
|
490
|
+
--color-semantic-info: oklch(0.7 0.1 220); /** Semantic info (base) */
|
|
491
|
+
--color-semantic-info-hover: oklch(0.75 0.11 220); /** Semantic info — hover */
|
|
492
|
+
--color-semantic-info-active: oklch(0.65 0.09 220); /** Semantic info — active */
|
|
493
|
+
--color-semantic-info-subtle: oklch(0.24 0.04 220); /** Semantic info — subtle surface */
|
|
494
|
+
--color-semantic-info-text: oklch(0.82 0.08 220); /** Semantic info — text on tinted bg */
|
|
495
|
+
--color-surface-bg-base: oklch(0.16 0.02 80); /** Root background — page canvas */
|
|
496
|
+
--color-surface-bg-subtle: oklch(0.19 0.02 80); /** Subtle background — panels, sections */
|
|
497
|
+
--color-surface-bg-emphasis: oklch(0.28 0.02 80); /** Emphasized background — highlighted regions */
|
|
498
|
+
--color-surface-surface: oklch(0.2 0.02 80); /** Card / modal / elevated container surface */
|
|
499
|
+
--color-surface-border: oklch(0.32 0.02 80); /** Default border / divider */
|
|
500
|
+
--color-surface-border-subtle: oklch(0.26 0.015 80); /** Subtle border — quiet separators */
|
|
501
|
+
--color-text-primary: oklch(0.92 0.01 80); /** Primary foreground text */
|
|
502
|
+
--color-text-secondary: oklch(0.72 0.01 80); /** Secondary text — supporting copy */
|
|
503
|
+
--color-text-tertiary: oklch(0.55 0.01 80); /** Tertiary text — captions, hints */
|
|
504
|
+
--color-text-disabled: oklch(0.42 0.01 80); /** Disabled text */
|
|
505
|
+
--color-text-inverse: oklch(0.15 0.02 80); /** Inverse text — on dark surfaces */
|
|
506
|
+
--color-shadow-base: oklch(0 0 0 / 0.35); /** Shadow tint — default */
|
|
507
|
+
--color-shadow-strong: oklch(0 0 0 / 0.55); /** Shadow tint — strong */
|
|
508
|
+
--color-focus-ring-color: oklch(0.82 0.14 145); /** Focus ring color — outer 2px solid ring (oldschool-dark、 olive hue + luminance UP で AAA contrast) */
|
|
509
|
+
--color-focus-ring-halo: oklch(0.82 0.14 145 / 0.18); /** Focus halo — inner 4px subtle bg tint、 retro/corporate identity 保持 */
|
|
510
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.2 0.03 80) 0%, oklch(0.18 0.02 70) 50%, oklch(0.22 0.04 90) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
[data-theme="oldschool-light"] {
|
|
514
|
+
--color-brand-primary: oklch(0.55 0.14 145); /** Brand primary (base) */
|
|
515
|
+
--color-brand-primary-hover: oklch(0.5 0.15 145); /** Brand primary — hover */
|
|
516
|
+
--color-brand-primary-active: oklch(0.45 0.16 145); /** Brand primary — active / pressed */
|
|
517
|
+
--color-brand-primary-subtle: oklch(0.94 0.04 145); /** Brand primary — subtle tint surface */
|
|
518
|
+
--color-brand-secondary: oklch(0.7 0.18 55); /** Brand secondary (base) */
|
|
519
|
+
--color-brand-secondary-hover: oklch(0.65 0.19 55); /** Brand secondary — hover */
|
|
520
|
+
--color-brand-secondary-active: oklch(0.6 0.2 55); /** Brand secondary — active / pressed */
|
|
521
|
+
--color-brand-secondary-subtle: oklch(0.95 0.05 55); /** Brand secondary — subtle tint surface */
|
|
522
|
+
--color-semantic-success: oklch(0.6 0.14 140); /** Semantic success (base) */
|
|
523
|
+
--color-semantic-success-hover: oklch(0.55 0.15 140); /** Semantic success — hover */
|
|
524
|
+
--color-semantic-success-active: oklch(0.5 0.16 140); /** Semantic success — active */
|
|
525
|
+
--color-semantic-success-subtle: oklch(0.94 0.04 140); /** Semantic success — subtle surface */
|
|
526
|
+
--color-semantic-success-text: oklch(0.35 0.1 140); /** Semantic success — text on tinted bg */
|
|
527
|
+
--color-semantic-warning: oklch(0.78 0.14 75); /** Semantic warning (base) */
|
|
528
|
+
--color-semantic-warning-hover: oklch(0.73 0.15 75); /** Semantic warning — hover */
|
|
529
|
+
--color-semantic-warning-active: oklch(0.68 0.16 75); /** Semantic warning — active */
|
|
530
|
+
--color-semantic-warning-subtle: oklch(0.96 0.05 75); /** Semantic warning — subtle surface */
|
|
531
|
+
--color-semantic-warning-text: oklch(0.42 0.1 75); /** Semantic warning — text on tinted bg */
|
|
532
|
+
--color-semantic-error: oklch(0.62 0.18 20); /** Semantic error (base) */
|
|
533
|
+
--color-semantic-error-hover: oklch(0.57 0.19 20); /** Semantic error — hover */
|
|
534
|
+
--color-semantic-error-active: oklch(0.52 0.2 20); /** Semantic error — active */
|
|
535
|
+
--color-semantic-error-subtle: oklch(0.95 0.04 20); /** Semantic error — subtle surface */
|
|
536
|
+
--color-semantic-error-text: oklch(0.4 0.13 20); /** Semantic error — text on tinted bg */
|
|
537
|
+
--color-semantic-info: oklch(0.64 0.11 220); /** Semantic info (base) */
|
|
538
|
+
--color-semantic-info-hover: oklch(0.59 0.12 220); /** Semantic info — hover */
|
|
539
|
+
--color-semantic-info-active: oklch(0.54 0.13 220); /** Semantic info — active */
|
|
540
|
+
--color-semantic-info-subtle: oklch(0.95 0.03 220); /** Semantic info — subtle surface */
|
|
541
|
+
--color-semantic-info-text: oklch(0.38 0.1 220); /** Semantic info — text on tinted bg */
|
|
542
|
+
--color-surface-bg-base: oklch(0.98 0.02 100); /** Root background — page canvas */
|
|
543
|
+
--color-surface-bg-subtle: oklch(0.96 0.03 100); /** Subtle background — panels, sections */
|
|
544
|
+
--color-surface-bg-emphasis: oklch(0.88 0.04 100); /** Emphasized background — highlighted regions */
|
|
545
|
+
--color-surface-surface: oklch(0.99 0.01 100); /** Card / modal / elevated container surface */
|
|
546
|
+
--color-surface-border: oklch(0.86 0.02 90); /** Default border / divider */
|
|
547
|
+
--color-surface-border-subtle: oklch(0.91 0.015 90); /** Subtle border — quiet separators */
|
|
548
|
+
--color-text-primary: oklch(0.22 0.02 80); /** Primary foreground text */
|
|
549
|
+
--color-text-secondary: oklch(0.42 0.02 80); /** Secondary text — supporting copy */
|
|
550
|
+
--color-text-tertiary: oklch(0.55 0.01 80); /** Tertiary text — captions, hints */
|
|
551
|
+
--color-text-disabled: oklch(0.7 0.01 80); /** Disabled text */
|
|
552
|
+
--color-text-inverse: oklch(0.98 0 0); /** Inverse text — on dark surfaces */
|
|
553
|
+
--color-shadow-base: oklch(0.25 0.02 80 / 0.1); /** Shadow tint — default */
|
|
554
|
+
--color-shadow-strong: oklch(0.25 0.02 80 / 0.2); /** Shadow tint — strong */
|
|
555
|
+
--color-focus-ring-color: oklch(0.38 0.16 145); /** Focus ring color — outer 2px solid ring (oldschool-light、 olive hue + luminance DOWN で AAA contrast on paper-like bg) */
|
|
556
|
+
--color-focus-ring-halo: oklch(0.38 0.16 145 / 0.18); /** Focus halo — inner 4px subtle bg tint、 retro/corporate identity 保持 */
|
|
557
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.94 0.05 100) 0%, oklch(0.92 0.04 90) 50%, oklch(0.9 0.06 110) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
[data-theme="sora-dark"] {
|
|
561
|
+
--color-brand-primary: oklch(0.7 0.1 230); /** Brand primary (base) */
|
|
562
|
+
--color-brand-primary-hover: oklch(0.75 0.11 230); /** Brand primary — hover */
|
|
563
|
+
--color-brand-primary-active: oklch(0.65 0.09 230); /** Brand primary — active / pressed */
|
|
564
|
+
--color-brand-primary-subtle: oklch(0.22 0.04 230); /** Brand primary — subtle tint surface */
|
|
565
|
+
--color-brand-secondary: oklch(0.72 0.12 50); /** Brand secondary (base) */
|
|
566
|
+
--color-brand-secondary-hover: oklch(0.77 0.13 50); /** Brand secondary — hover */
|
|
567
|
+
--color-brand-secondary-active: oklch(0.67 0.11 50); /** Brand secondary — active / pressed */
|
|
568
|
+
--color-brand-secondary-subtle: oklch(0.22 0.04 50); /** Brand secondary — subtle tint surface */
|
|
569
|
+
--color-semantic-success: oklch(0.68 0.14 155); /** Semantic success (base) */
|
|
570
|
+
--color-semantic-success-hover: oklch(0.73 0.15 155); /** Semantic success — hover */
|
|
571
|
+
--color-semantic-success-active: oklch(0.63 0.13 155); /** Semantic success — active */
|
|
572
|
+
--color-semantic-success-subtle: oklch(0.22 0.05 155); /** Semantic success — subtle surface */
|
|
573
|
+
--color-semantic-success-text: oklch(0.78 0.11 155); /** Semantic success — text on tinted bg */
|
|
574
|
+
--color-semantic-warning: oklch(0.73 0.12 70); /** Semantic warning (base) */
|
|
575
|
+
--color-semantic-warning-hover: oklch(0.78 0.13 70); /** Semantic warning — hover */
|
|
576
|
+
--color-semantic-warning-active: oklch(0.68 0.11 70); /** Semantic warning — active */
|
|
577
|
+
--color-semantic-warning-subtle: oklch(0.22 0.05 70); /** Semantic warning — subtle surface */
|
|
578
|
+
--color-semantic-warning-text: oklch(0.83 0.09 70); /** Semantic warning — text on tinted bg */
|
|
579
|
+
--color-semantic-error: oklch(0.68 0.16 15); /** Semantic error (base) */
|
|
580
|
+
--color-semantic-error-hover: oklch(0.73 0.17 15); /** Semantic error — hover */
|
|
581
|
+
--color-semantic-error-active: oklch(0.63 0.15 15); /** Semantic error — active */
|
|
582
|
+
--color-semantic-error-subtle: oklch(0.22 0.05 15); /** Semantic error — subtle surface */
|
|
583
|
+
--color-semantic-error-text: oklch(0.83 0.11 15); /** Semantic error — text on tinted bg */
|
|
584
|
+
--color-semantic-info: oklch(0.68 0.1 250); /** Semantic info (base) */
|
|
585
|
+
--color-semantic-info-hover: oklch(0.73 0.11 250); /** Semantic info — hover */
|
|
586
|
+
--color-semantic-info-active: oklch(0.63 0.09 250); /** Semantic info — active */
|
|
587
|
+
--color-semantic-info-subtle: oklch(0.22 0.04 250); /** Semantic info — subtle surface */
|
|
588
|
+
--color-semantic-info-text: oklch(0.83 0.08 250); /** Semantic info — text on tinted bg */
|
|
589
|
+
--color-surface-bg-base: oklch(0.12 0.025 240); /** Root background — page canvas */
|
|
590
|
+
--color-surface-bg-subtle: oklch(0.15 0.025 240); /** Subtle background — panels, sections */
|
|
591
|
+
--color-surface-bg-emphasis: oklch(0.25 0.025 240); /** Emphasized background — highlighted regions */
|
|
592
|
+
--color-surface-surface: oklch(0.17 0.025 240); /** Card / modal / elevated container surface */
|
|
593
|
+
--color-surface-border: oklch(0.28 0.02 240); /** Default border / divider */
|
|
594
|
+
--color-surface-border-subtle: oklch(0.23 0.015 240); /** Subtle border — quiet separators */
|
|
595
|
+
--color-text-primary: oklch(0.94 0.01 240); /** Primary foreground text */
|
|
596
|
+
--color-text-secondary: oklch(0.73 0.01 240); /** Secondary text — supporting copy */
|
|
597
|
+
--color-text-tertiary: oklch(0.58 0.01 240); /** Tertiary text — captions, hints */
|
|
598
|
+
--color-text-disabled: oklch(0.43 0.01 240); /** Disabled text */
|
|
599
|
+
--color-text-inverse: oklch(0.92 0.01 240); /** Inverse text — on dark surfaces */
|
|
600
|
+
--color-shadow-base: oklch(0 0 0 / 0.35); /** Shadow tint — default */
|
|
601
|
+
--color-shadow-strong: oklch(0 0 0 / 0.55); /** Shadow tint — strong */
|
|
602
|
+
--color-focus-ring-color: oklch(0.82 0.13 230); /** Focus ring color — outer 2px solid ring (sora-dark、 brand 同 hue + luminance UP で AAA contrast) */
|
|
603
|
+
--color-focus-ring-halo: oklch(0.82 0.13 230 / 0.18); /** Focus halo — inner 4px subtle bg tint、 ring を 「包む glow」 として演出 */
|
|
604
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.15 0.04 240) 0%, oklch(0.13 0.03 250) 50%, oklch(0.18 0.05 230) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
[data-theme="sora-light"] {
|
|
608
|
+
--color-brand-primary: oklch(0.75 0.12 230); /** Brand primary (base) */
|
|
609
|
+
--color-brand-primary-hover: oklch(0.7 0.13 230); /** Brand primary — hover */
|
|
610
|
+
--color-brand-primary-active: oklch(0.65 0.14 230); /** Brand primary — active / pressed */
|
|
611
|
+
--color-brand-primary-subtle: oklch(0.95 0.04 230); /** Brand primary — subtle tint surface */
|
|
612
|
+
--color-brand-secondary: oklch(0.75 0.15 50); /** Brand secondary (base) */
|
|
613
|
+
--color-brand-secondary-hover: oklch(0.7 0.16 50); /** Brand secondary — hover */
|
|
614
|
+
--color-brand-secondary-active: oklch(0.65 0.17 50); /** Brand secondary — active / pressed */
|
|
615
|
+
--color-brand-secondary-subtle: oklch(0.95 0.05 50); /** Brand secondary — subtle tint surface */
|
|
616
|
+
--color-semantic-success: oklch(0.72 0.16 155); /** Semantic success (base) */
|
|
617
|
+
--color-semantic-success-hover: oklch(0.67 0.17 155); /** Semantic success — hover */
|
|
618
|
+
--color-semantic-success-active: oklch(0.62 0.18 155); /** Semantic success — active */
|
|
619
|
+
--color-semantic-success-subtle: oklch(0.95 0.04 155); /** Semantic success — subtle surface */
|
|
620
|
+
--color-semantic-success-text: oklch(0.38 0.1 155); /** Semantic success — text on tinted bg */
|
|
621
|
+
--color-semantic-warning: oklch(0.82 0.14 70); /** Semantic warning (base) */
|
|
622
|
+
--color-semantic-warning-hover: oklch(0.77 0.15 70); /** Semantic warning — hover */
|
|
623
|
+
--color-semantic-warning-active: oklch(0.72 0.16 70); /** Semantic warning — active */
|
|
624
|
+
--color-semantic-warning-subtle: oklch(0.96 0.05 70); /** Semantic warning — subtle surface */
|
|
625
|
+
--color-semantic-warning-text: oklch(0.42 0.11 70); /** Semantic warning — text on tinted bg */
|
|
626
|
+
--color-semantic-error: oklch(0.65 0.18 15); /** Semantic error (base) */
|
|
627
|
+
--color-semantic-error-hover: oklch(0.6 0.19 15); /** Semantic error — hover */
|
|
628
|
+
--color-semantic-error-active: oklch(0.55 0.2 15); /** Semantic error — active */
|
|
629
|
+
--color-semantic-error-subtle: oklch(0.95 0.04 15); /** Semantic error — subtle surface */
|
|
630
|
+
--color-semantic-error-text: oklch(0.4 0.13 15); /** Semantic error — text on tinted bg */
|
|
631
|
+
--color-semantic-info: oklch(0.68 0.13 250); /** Semantic info (base) */
|
|
632
|
+
--color-semantic-info-hover: oklch(0.63 0.14 250); /** Semantic info — hover */
|
|
633
|
+
--color-semantic-info-active: oklch(0.58 0.15 250); /** Semantic info — active */
|
|
634
|
+
--color-semantic-info-subtle: oklch(0.95 0.03 250); /** Semantic info — subtle surface */
|
|
635
|
+
--color-semantic-info-text: oklch(0.38 0.11 250); /** Semantic info — text on tinted bg */
|
|
636
|
+
--color-surface-bg-base: oklch(0.98 0.005 230); /** Root background — page canvas */
|
|
637
|
+
--color-surface-bg-subtle: oklch(0.96 0.008 230); /** Subtle background — panels, sections */
|
|
638
|
+
--color-surface-bg-emphasis: oklch(0.88 0.015 230); /** Emphasized background — highlighted regions */
|
|
639
|
+
--color-surface-surface: oklch(1 0 0); /** Card / modal / elevated container surface */
|
|
640
|
+
--color-surface-border: oklch(0.86 0.012 230); /** Default border / divider */
|
|
641
|
+
--color-surface-border-subtle: oklch(0.91 0.008 230); /** Subtle border — quiet separators */
|
|
642
|
+
--color-text-primary: oklch(0.18 0.02 240); /** Primary foreground text */
|
|
643
|
+
--color-text-secondary: oklch(0.38 0.02 240); /** Secondary text — supporting copy */
|
|
644
|
+
--color-text-tertiary: oklch(0.52 0.01 240); /** Tertiary text — captions, hints */
|
|
645
|
+
--color-text-disabled: oklch(0.68 0.01 240); /** Disabled text */
|
|
646
|
+
--color-text-inverse: oklch(0.98 0 0); /** Inverse text — on dark surfaces */
|
|
647
|
+
--color-shadow-base: oklch(0.2 0.02 240 / 0.1); /** Shadow tint — default */
|
|
648
|
+
--color-shadow-strong: oklch(0.2 0.02 240 / 0.18); /** Shadow tint — strong */
|
|
649
|
+
--color-focus-ring-color: oklch(0.42 0.16 230); /** Focus ring color — outer 2px solid ring (sora-light、 brand 同 hue + luminance DOWN で AAA contrast on light bg) */
|
|
650
|
+
--color-focus-ring-halo: oklch(0.42 0.16 230 / 0.18); /** Focus halo — inner 4px subtle bg tint、 ring を 「包む glow」 として演出 */
|
|
651
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.9 0.06 230) 0%, oklch(0.92 0.04 245) 50%, oklch(0.88 0.08 220) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
/* fleetstage / legacy 後方互換 */
|
|
655
|
+
.dark,
|
|
656
|
+
[data-theme="dark"] {
|
|
657
|
+
--color-brand-primary: oklch(0.75 0.12 160); /** Brand primary (base) */
|
|
658
|
+
--color-brand-primary-hover: oklch(0.8 0.13 160); /** Brand primary — hover */
|
|
659
|
+
--color-brand-primary-active: oklch(0.7 0.11 160); /** Brand primary — active / pressed */
|
|
660
|
+
--color-brand-primary-subtle: oklch(0.25 0.05 160); /** Brand primary — subtle tint surface */
|
|
661
|
+
--color-brand-secondary: oklch(0.7 0.12 300); /** Brand secondary (base) */
|
|
662
|
+
--color-brand-secondary-hover: oklch(0.75 0.13 300); /** Brand secondary — hover */
|
|
663
|
+
--color-brand-secondary-active: oklch(0.65 0.11 300); /** Brand secondary — active / pressed */
|
|
664
|
+
--color-brand-secondary-subtle: oklch(0.25 0.05 300); /** Brand secondary — subtle tint surface */
|
|
665
|
+
--color-semantic-success: oklch(0.7 0.15 145); /** Semantic success (base) */
|
|
666
|
+
--color-semantic-success-hover: oklch(0.75 0.16 145); /** Semantic success — hover */
|
|
667
|
+
--color-semantic-success-active: oklch(0.65 0.14 145); /** Semantic success — active */
|
|
668
|
+
--color-semantic-success-subtle: oklch(0.25 0.06 145); /** Semantic success — subtle surface */
|
|
669
|
+
--color-semantic-success-text: oklch(0.8 0.12 145); /** Semantic success — text on tinted bg */
|
|
670
|
+
--color-semantic-warning: oklch(0.75 0.14 85); /** Semantic warning (base) */
|
|
671
|
+
--color-semantic-warning-hover: oklch(0.8 0.15 85); /** Semantic warning — hover */
|
|
672
|
+
--color-semantic-warning-active: oklch(0.7 0.13 85); /** Semantic warning — active */
|
|
673
|
+
--color-semantic-warning-subtle: oklch(0.25 0.06 85); /** Semantic warning — subtle surface */
|
|
674
|
+
--color-semantic-warning-text: oklch(0.85 0.1 85); /** Semantic warning — text on tinted bg */
|
|
675
|
+
--color-semantic-error: oklch(0.7 0.18 25); /** Semantic error (base) */
|
|
676
|
+
--color-semantic-error-hover: oklch(0.75 0.19 25); /** Semantic error — hover */
|
|
677
|
+
--color-semantic-error-active: oklch(0.65 0.17 25); /** Semantic error — active */
|
|
678
|
+
--color-semantic-error-subtle: oklch(0.25 0.06 25); /** Semantic error — subtle surface */
|
|
679
|
+
--color-semantic-error-text: oklch(0.85 0.12 25); /** Semantic error — text on tinted bg */
|
|
680
|
+
--color-semantic-info: oklch(0.7 0.12 240); /** Semantic info (base) */
|
|
681
|
+
--color-semantic-info-hover: oklch(0.75 0.13 240); /** Semantic info — hover */
|
|
682
|
+
--color-semantic-info-active: oklch(0.65 0.11 240); /** Semantic info — active */
|
|
683
|
+
--color-semantic-info-subtle: oklch(0.25 0.05 240); /** Semantic info — subtle surface */
|
|
684
|
+
--color-semantic-info-text: oklch(0.85 0.1 240); /** Semantic info — text on tinted bg */
|
|
685
|
+
--color-surface-bg-base: oklch(0.15 0.02 260); /** Root background — page canvas */
|
|
686
|
+
--color-surface-bg-subtle: oklch(0.18 0.02 260); /** Subtle background — panels, sections */
|
|
687
|
+
--color-surface-bg-emphasis: oklch(0.28 0.02 260); /** Emphasized background — highlighted regions */
|
|
688
|
+
--color-surface-surface: oklch(0.2 0.02 260); /** Card / modal / elevated container surface */
|
|
689
|
+
--color-surface-border: oklch(0.3 0.02 260); /** Default border / divider */
|
|
690
|
+
--color-surface-border-subtle: oklch(0.25 0.015 260); /** Subtle border — quiet separators */
|
|
691
|
+
--color-text-primary: oklch(0.95 0.01 260); /** Primary foreground text */
|
|
692
|
+
--color-text-secondary: oklch(0.75 0.01 260); /** Secondary text — supporting copy */
|
|
693
|
+
--color-text-tertiary: oklch(0.6 0.01 260); /** Tertiary text — captions, hints */
|
|
694
|
+
--color-text-disabled: oklch(0.45 0.01 260); /** Disabled text */
|
|
695
|
+
--color-text-inverse: oklch(0.15 0.02 260); /** Inverse text — on dark surfaces */
|
|
696
|
+
--color-shadow-base: oklch(0 0 0 / 0.3); /** Shadow tint — default */
|
|
697
|
+
--color-shadow-strong: oklch(0 0 0 / 0.5); /** Shadow tint — strong */
|
|
698
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.2 0.04 160) 0%, oklch(0.18 0.03 175) 50%, oklch(0.22 0.05 165) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
699
|
+
--color-focus-ring-color: oklch(0.85 0.14 160); /** Focus ring color — outer 2px solid ring (mint-dark、 brand 同 hue + luminance UP で AAA contrast 確保) */
|
|
700
|
+
--color-focus-ring-halo: oklch(0.85 0.14 160 / 0.18); /** Focus halo — inner 4px subtle bg tint、 ring を 「包む glow」 として演出 */
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
[data-theme="light"] {
|
|
704
|
+
--color-brand-primary: oklch(0.85 0.14 160); /** Brand primary (base) */
|
|
705
|
+
--color-brand-primary-hover: oklch(0.8 0.15 160); /** Brand primary — hover */
|
|
706
|
+
--color-brand-primary-active: oklch(0.75 0.16 160); /** Brand primary — active / pressed */
|
|
707
|
+
--color-brand-primary-subtle: oklch(0.95 0.05 160); /** Brand primary — subtle tint surface */
|
|
708
|
+
--color-brand-secondary: oklch(0.65 0.15 300); /** Brand secondary (base) */
|
|
709
|
+
--color-brand-secondary-hover: oklch(0.6 0.16 300); /** Brand secondary — hover */
|
|
710
|
+
--color-brand-secondary-active: oklch(0.55 0.17 300); /** Brand secondary — active / pressed */
|
|
711
|
+
--color-brand-secondary-subtle: oklch(0.95 0.05 300); /** Brand secondary — subtle tint surface */
|
|
712
|
+
--color-semantic-success: oklch(0.75 0.18 145); /** Semantic success (base) */
|
|
713
|
+
--color-semantic-success-hover: oklch(0.7 0.19 145); /** Semantic success — hover */
|
|
714
|
+
--color-semantic-success-active: oklch(0.65 0.2 145); /** Semantic success — active */
|
|
715
|
+
--color-semantic-success-subtle: oklch(0.95 0.05 145); /** Semantic success — subtle surface */
|
|
716
|
+
--color-semantic-success-text: oklch(0.35 0.12 145); /** Semantic success — text on tinted bg */
|
|
717
|
+
--color-semantic-warning: oklch(0.8 0.16 85); /** Semantic warning (base) */
|
|
718
|
+
--color-semantic-warning-hover: oklch(0.75 0.17 85); /** Semantic warning — hover */
|
|
719
|
+
--color-semantic-warning-active: oklch(0.7 0.18 85); /** Semantic warning — active */
|
|
720
|
+
--color-semantic-warning-subtle: oklch(0.95 0.06 85); /** Semantic warning — subtle surface */
|
|
721
|
+
--color-semantic-warning-text: oklch(0.4 0.12 85); /** Semantic warning — text on tinted bg */
|
|
722
|
+
--color-semantic-error: oklch(0.65 0.2 25); /** Semantic error (base) */
|
|
723
|
+
--color-semantic-error-hover: oklch(0.6 0.21 25); /** Semantic error — hover */
|
|
724
|
+
--color-semantic-error-active: oklch(0.55 0.22 25); /** Semantic error — active */
|
|
725
|
+
--color-semantic-error-subtle: oklch(0.95 0.05 25); /** Semantic error — subtle surface */
|
|
726
|
+
--color-semantic-error-text: oklch(0.4 0.15 25); /** Semantic error — text on tinted bg */
|
|
727
|
+
--color-semantic-info: oklch(0.7 0.15 240); /** Semantic info (base) */
|
|
728
|
+
--color-semantic-info-hover: oklch(0.65 0.16 240); /** Semantic info — hover */
|
|
729
|
+
--color-semantic-info-active: oklch(0.6 0.17 240); /** Semantic info — active */
|
|
730
|
+
--color-semantic-info-subtle: oklch(0.95 0.04 240); /** Semantic info — subtle surface */
|
|
731
|
+
--color-semantic-info-text: oklch(0.4 0.12 240); /** Semantic info — text on tinted bg */
|
|
732
|
+
--color-surface-bg-base: oklch(0.99 0 0); /** Root background — page canvas */
|
|
733
|
+
--color-surface-bg-subtle: oklch(0.97 0.005 260); /** Subtle background — panels, sections */
|
|
734
|
+
--color-surface-bg-emphasis: oklch(0.9 0.01 260); /** Emphasized background — highlighted regions */
|
|
735
|
+
--color-surface-surface: oklch(1 0 0); /** Card / modal / elevated container surface */
|
|
736
|
+
--color-surface-border: oklch(0.88 0.01 260); /** Default border / divider */
|
|
737
|
+
--color-surface-border-subtle: oklch(0.92 0.005 260); /** Subtle border — quiet separators */
|
|
738
|
+
--color-text-primary: oklch(0.2 0.02 260); /** Primary foreground text */
|
|
739
|
+
--color-text-secondary: oklch(0.4 0.02 260); /** Secondary text — supporting copy */
|
|
740
|
+
--color-text-tertiary: oklch(0.55 0.01 260); /** Tertiary text — captions, hints */
|
|
741
|
+
--color-text-disabled: oklch(0.7 0.01 260); /** Disabled text */
|
|
742
|
+
--color-text-inverse: oklch(0.98 0 0); /** Inverse text — on dark surfaces */
|
|
743
|
+
--color-shadow-base: oklch(0.2 0.02 260 / 0.08); /** Shadow tint — default */
|
|
744
|
+
--color-shadow-strong: oklch(0.2 0.02 260 / 0.15); /** Shadow tint — strong */
|
|
745
|
+
--color-focus-ring-color: oklch(0.45 0.16 160); /** Focus ring color — outer 2px solid ring (mint-light、 brand 同 hue + luminance DOWN で AAA contrast on light bg) */
|
|
746
|
+
--color-focus-ring-halo: oklch(0.45 0.16 160 / 0.18); /** Focus halo — inner 4px subtle bg tint、 ring を 「包む glow」 として演出 */
|
|
747
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.92 0.08 160) 0%, oklch(0.94 0.06 175) 50%, oklch(0.9 0.1 165) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
/* system が light preference で [data-theme] 未指定なら mint-light に逆転 */
|
|
751
|
+
@media (prefers-color-scheme: light) {
|
|
752
|
+
:root:not([data-theme]):not(.dark):not([data-theme="mint-dark"]) {
|
|
753
|
+
--color-brand-primary: oklch(0.85 0.14 160); /** Brand primary (base) */
|
|
754
|
+
--color-brand-primary-hover: oklch(0.8 0.15 160); /** Brand primary — hover */
|
|
755
|
+
--color-brand-primary-active: oklch(0.75 0.16 160); /** Brand primary — active / pressed */
|
|
756
|
+
--color-brand-primary-subtle: oklch(0.95 0.05 160); /** Brand primary — subtle tint surface */
|
|
757
|
+
--color-brand-secondary: oklch(0.65 0.15 300); /** Brand secondary (base) */
|
|
758
|
+
--color-brand-secondary-hover: oklch(0.6 0.16 300); /** Brand secondary — hover */
|
|
759
|
+
--color-brand-secondary-active: oklch(0.55 0.17 300); /** Brand secondary — active / pressed */
|
|
760
|
+
--color-brand-secondary-subtle: oklch(0.95 0.05 300); /** Brand secondary — subtle tint surface */
|
|
761
|
+
--color-semantic-success: oklch(0.75 0.18 145); /** Semantic success (base) */
|
|
762
|
+
--color-semantic-success-hover: oklch(0.7 0.19 145); /** Semantic success — hover */
|
|
763
|
+
--color-semantic-success-active: oklch(0.65 0.2 145); /** Semantic success — active */
|
|
764
|
+
--color-semantic-success-subtle: oklch(0.95 0.05 145); /** Semantic success — subtle surface */
|
|
765
|
+
--color-semantic-success-text: oklch(0.35 0.12 145); /** Semantic success — text on tinted bg */
|
|
766
|
+
--color-semantic-warning: oklch(0.8 0.16 85); /** Semantic warning (base) */
|
|
767
|
+
--color-semantic-warning-hover: oklch(0.75 0.17 85); /** Semantic warning — hover */
|
|
768
|
+
--color-semantic-warning-active: oklch(0.7 0.18 85); /** Semantic warning — active */
|
|
769
|
+
--color-semantic-warning-subtle: oklch(0.95 0.06 85); /** Semantic warning — subtle surface */
|
|
770
|
+
--color-semantic-warning-text: oklch(0.4 0.12 85); /** Semantic warning — text on tinted bg */
|
|
771
|
+
--color-semantic-error: oklch(0.65 0.2 25); /** Semantic error (base) */
|
|
772
|
+
--color-semantic-error-hover: oklch(0.6 0.21 25); /** Semantic error — hover */
|
|
773
|
+
--color-semantic-error-active: oklch(0.55 0.22 25); /** Semantic error — active */
|
|
774
|
+
--color-semantic-error-subtle: oklch(0.95 0.05 25); /** Semantic error — subtle surface */
|
|
775
|
+
--color-semantic-error-text: oklch(0.4 0.15 25); /** Semantic error — text on tinted bg */
|
|
776
|
+
--color-semantic-info: oklch(0.7 0.15 240); /** Semantic info (base) */
|
|
777
|
+
--color-semantic-info-hover: oklch(0.65 0.16 240); /** Semantic info — hover */
|
|
778
|
+
--color-semantic-info-active: oklch(0.6 0.17 240); /** Semantic info — active */
|
|
779
|
+
--color-semantic-info-subtle: oklch(0.95 0.04 240); /** Semantic info — subtle surface */
|
|
780
|
+
--color-semantic-info-text: oklch(0.4 0.12 240); /** Semantic info — text on tinted bg */
|
|
781
|
+
--color-surface-bg-base: oklch(0.99 0 0); /** Root background — page canvas */
|
|
782
|
+
--color-surface-bg-subtle: oklch(0.97 0.005 260); /** Subtle background — panels, sections */
|
|
783
|
+
--color-surface-bg-emphasis: oklch(0.9 0.01 260); /** Emphasized background — highlighted regions */
|
|
784
|
+
--color-surface-surface: oklch(1 0 0); /** Card / modal / elevated container surface */
|
|
785
|
+
--color-surface-border: oklch(0.88 0.01 260); /** Default border / divider */
|
|
786
|
+
--color-surface-border-subtle: oklch(0.92 0.005 260); /** Subtle border — quiet separators */
|
|
787
|
+
--color-text-primary: oklch(0.2 0.02 260); /** Primary foreground text */
|
|
788
|
+
--color-text-secondary: oklch(0.4 0.02 260); /** Secondary text — supporting copy */
|
|
789
|
+
--color-text-tertiary: oklch(0.55 0.01 260); /** Tertiary text — captions, hints */
|
|
790
|
+
--color-text-disabled: oklch(0.7 0.01 260); /** Disabled text */
|
|
791
|
+
--color-text-inverse: oklch(0.98 0 0); /** Inverse text — on dark surfaces */
|
|
792
|
+
--color-shadow-base: oklch(0.2 0.02 260 / 0.08); /** Shadow tint — default */
|
|
793
|
+
--color-shadow-strong: oklch(0.2 0.02 260 / 0.15); /** Shadow tint — strong */
|
|
794
|
+
--color-focus-ring-color: oklch(0.45 0.16 160); /** Focus ring color — outer 2px solid ring (mint-light、 brand 同 hue + luminance DOWN で AAA contrast on light bg) */
|
|
795
|
+
--color-focus-ring-halo: oklch(0.45 0.16 160 / 0.18); /** Focus halo — inner 4px subtle bg tint、 ring を 「包む glow」 として演出 */
|
|
796
|
+
--color-gradient-hero: linear-gradient(135deg, oklch(0.92 0.08 160) 0%, oklch(0.94 0.06 175) 50%, oklch(0.9 0.1 165) 100%); /** Hero gradient — marketing / splash surfaces */
|
|
797
|
+
}
|
|
798
|
+
}
|