@kawaijs/renderer-dom 0.1.12 → 0.1.14
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/dist/components/choice-menu.d.ts.map +1 -1
- package/dist/components/choice-menu.js +2 -3
- package/dist/components/choice-menu.js.map +1 -1
- package/dist/components/hotspot-layer.d.ts.map +1 -1
- package/dist/components/hotspot-layer.js +1 -0
- package/dist/components/hotspot-layer.js.map +1 -1
- package/dist/components/main-menu.d.ts.map +1 -1
- package/dist/components/main-menu.js +1 -0
- package/dist/components/main-menu.js.map +1 -1
- package/dist/components/quick-menu.js +1 -1
- package/dist/components/stage-layer.d.ts +4 -0
- package/dist/components/stage-layer.d.ts.map +1 -1
- package/dist/components/stage-layer.js +150 -25
- package/dist/components/stage-layer.js.map +1 -1
- package/dist/components/vfx-layer.d.ts +5 -1
- package/dist/components/vfx-layer.d.ts.map +1 -1
- package/dist/components/vfx-layer.js +75 -28
- package/dist/components/vfx-layer.js.map +1 -1
- package/dist/gamepad.d.ts +15 -0
- package/dist/gamepad.d.ts.map +1 -0
- package/dist/gamepad.js +77 -0
- package/dist/gamepad.js.map +1 -0
- package/dist/icons.js +28 -28
- package/dist/icons.js.map +1 -1
- package/dist/layout/viewport-adapter.d.ts.map +1 -1
- package/dist/layout/viewport-adapter.js +36 -6
- package/dist/layout/viewport-adapter.js.map +1 -1
- package/dist/modals/settings-modal.d.ts +7 -0
- package/dist/modals/settings-modal.d.ts.map +1 -1
- package/dist/modals/settings-modal.js +55 -2
- package/dist/modals/settings-modal.js.map +1 -1
- package/dist/renderer.d.ts +7 -0
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +150 -2
- package/dist/renderer.js.map +1 -1
- package/dist/touch.d.ts.map +1 -1
- package/dist/touch.js +9 -3
- package/dist/touch.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +37 -12
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
- package/src/theme.css +331 -12
package/dist/types.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { ShareConfig } from './share-meta.js';
|
|
|
3
3
|
export type AssetType = 'background' | 'character' | 'audio';
|
|
4
4
|
export declare function defaultAssetResolver(path: string, type: AssetType): string;
|
|
5
5
|
/**
|
|
6
|
-
* Preload
|
|
6
|
+
* Preload story assets with bounded concurrency to avoid RAM/network spikes on mobile.
|
|
7
7
|
*/
|
|
8
8
|
export declare function preloadStoryAssets(story: StoryPackage, assetResolver?: (path: string, type: AssetType) => string): void;
|
|
9
9
|
export interface GalleryItem {
|
|
@@ -103,6 +103,8 @@ export interface RendererFeatureOptions {
|
|
|
103
103
|
advanceDebounceMs?: number;
|
|
104
104
|
/** Horizontal swipe gestures on mobile (default: true). */
|
|
105
105
|
touchGestures?: boolean;
|
|
106
|
+
/** Controller and Gamepad API navigation support (default: true). */
|
|
107
|
+
gamepad?: boolean;
|
|
106
108
|
}
|
|
107
109
|
export interface DOMRendererOptions {
|
|
108
110
|
container: HTMLElement;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAE7D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CA0B1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,GAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,MAA6B,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -21,7 +21,7 @@ export function defaultAssetResolver(path, type) {
|
|
|
21
21
|
return path;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Preload
|
|
24
|
+
* Preload story assets with bounded concurrency to avoid RAM/network spikes on mobile.
|
|
25
25
|
*/
|
|
26
26
|
export function preloadStoryAssets(story, assetResolver = defaultAssetResolver) {
|
|
27
27
|
if (typeof window === 'undefined')
|
|
@@ -40,21 +40,46 @@ export function preloadStoryAssets(story, assetResolver = defaultAssetResolver)
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
+
const urls = [];
|
|
43
44
|
for (const bg of bgSet) {
|
|
44
|
-
|
|
45
|
-
img.src = assetResolver(bg, 'background');
|
|
45
|
+
urls.push(assetResolver(bg, 'background'));
|
|
46
46
|
}
|
|
47
47
|
for (const char of charSet) {
|
|
48
48
|
const candidates = characterAssetCandidates(char, assetResolver);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
49
|
+
if (candidates[0])
|
|
50
|
+
urls.push(candidates[0]);
|
|
51
|
+
}
|
|
52
|
+
const saveData = Boolean(navigator.connection?.saveData);
|
|
53
|
+
const coarse = typeof window.matchMedia === 'function' && window.matchMedia('(pointer: coarse)').matches;
|
|
54
|
+
const concurrency = saveData ? 2 : coarse ? 3 : 6;
|
|
55
|
+
let index = 0;
|
|
56
|
+
let active = 0;
|
|
57
|
+
const pump = () => {
|
|
58
|
+
while (active < concurrency && index < urls.length) {
|
|
59
|
+
const url = urls[index++];
|
|
60
|
+
active++;
|
|
61
|
+
const img = new Image();
|
|
62
|
+
const done = () => {
|
|
63
|
+
active--;
|
|
64
|
+
// Drop reference promptly so decode buffers can GC.
|
|
65
|
+
img.onload = null;
|
|
66
|
+
img.onerror = null;
|
|
67
|
+
pump();
|
|
68
|
+
};
|
|
69
|
+
img.onload = done;
|
|
70
|
+
img.onerror = done;
|
|
71
|
+
img.decoding = 'async';
|
|
72
|
+
img.src = url;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const start = () => {
|
|
76
|
+
pump();
|
|
77
|
+
};
|
|
78
|
+
if (typeof window.requestIdleCallback === 'function') {
|
|
79
|
+
window.requestIdleCallback(() => start(), { timeout: 1200 });
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
setTimeout(start, 0);
|
|
58
83
|
}
|
|
59
84
|
}
|
|
60
85
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,IAAe;IAChE,IACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EACrB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,KAAK,MAAM,CAAC;IACjG,CAAC;IAED,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB,KAAK,MAAM,CAAC;IAC/F,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI,MAAM,CAAC;IAClF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAmB,EAAE,gBAA2D,oBAAoB;IACrI,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/D,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBACtF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kawaijs/renderer-dom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Standard semantic DOM and CSS rendering engine for Kawaijs visual novels",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"typecheck": "tsc --noEmit"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@kawaijs/ast": "^0.1.
|
|
43
|
-
"@kawaijs/audio": "^0.1.
|
|
44
|
-
"@kawaijs/runtime": "^0.1.
|
|
42
|
+
"@kawaijs/ast": "^0.1.14",
|
|
43
|
+
"@kawaijs/audio": "^0.1.14",
|
|
44
|
+
"@kawaijs/runtime": "^0.1.14"
|
|
45
45
|
},
|
|
46
46
|
"keywords": [
|
|
47
47
|
"kawaijs",
|
package/src/theme.css
CHANGED
|
@@ -140,16 +140,25 @@ body.kawa-fullscreen {
|
|
|
140
140
|
transition: opacity 0.85s cubic-bezier(0.4, 0, 0.2, 1);
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
/* Directional wipe transitions */
|
|
143
|
+
/* Directional wipe & push & zoom transitions */
|
|
144
144
|
.kawa-background[data-transition="wipeleft"] .kawa-bg-layer,
|
|
145
|
-
.kawa-background[data-transition="wiperight"] .kawa-bg-layer
|
|
146
|
-
|
|
145
|
+
.kawa-background[data-transition="wiperight"] .kawa-bg-layer,
|
|
146
|
+
.kawa-background[data-transition="wipeup"] .kawa-bg-layer,
|
|
147
|
+
.kawa-background[data-transition="wipedown"] .kawa-bg-layer,
|
|
148
|
+
.kawa-background[data-transition="circlewipe"] .kawa-bg-layer,
|
|
149
|
+
.kawa-background[data-transition="iris"] .kawa-bg-layer,
|
|
150
|
+
.kawa-background[data-transition="pushleft"] .kawa-bg-layer,
|
|
151
|
+
.kawa-background[data-transition="pushright"] .kawa-bg-layer,
|
|
152
|
+
.kawa-background[data-transition="pushup"] .kawa-bg-layer,
|
|
153
|
+
.kawa-background[data-transition="pushdown"] .kawa-bg-layer,
|
|
154
|
+
.kawa-background[data-transition="zoom"] .kawa-bg-layer,
|
|
155
|
+
.kawa-background[data-transition="blur"] .kawa-bg-layer {
|
|
156
|
+
transition: opacity 0.55s ease, clip-path 0.55s cubic-bezier(0.4, 0, 0.2, 1), transform 0.55s cubic-bezier(0.4, 0, 0.2, 1), filter 0.55s ease;
|
|
147
157
|
}
|
|
148
158
|
|
|
149
159
|
.kawa-bg-layer.kawa-wipe-from-left {
|
|
150
160
|
clip-path: inset(0 100% 0 0);
|
|
151
161
|
}
|
|
152
|
-
|
|
153
162
|
.kawa-bg-layer.kawa-wipe-from-left.active {
|
|
154
163
|
clip-path: inset(0 0 0 0);
|
|
155
164
|
}
|
|
@@ -157,11 +166,75 @@ body.kawa-fullscreen {
|
|
|
157
166
|
.kawa-bg-layer.kawa-wipe-from-right {
|
|
158
167
|
clip-path: inset(0 0 0 100%);
|
|
159
168
|
}
|
|
160
|
-
|
|
161
169
|
.kawa-bg-layer.kawa-wipe-from-right.active {
|
|
162
170
|
clip-path: inset(0 0 0 0);
|
|
163
171
|
}
|
|
164
172
|
|
|
173
|
+
.kawa-bg-layer.kawa-wipe-from-up {
|
|
174
|
+
clip-path: inset(0 0 100% 0);
|
|
175
|
+
}
|
|
176
|
+
.kawa-bg-layer.kawa-wipe-from-up.active {
|
|
177
|
+
clip-path: inset(0 0 0 0);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.kawa-bg-layer.kawa-wipe-from-down {
|
|
181
|
+
clip-path: inset(100% 0 0 0);
|
|
182
|
+
}
|
|
183
|
+
.kawa-bg-layer.kawa-wipe-from-down.active {
|
|
184
|
+
clip-path: inset(0 0 0 0);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.kawa-bg-layer.kawa-wipe-circle {
|
|
188
|
+
clip-path: circle(0% at 50% 50%);
|
|
189
|
+
}
|
|
190
|
+
.kawa-bg-layer.kawa-wipe-circle.active {
|
|
191
|
+
clip-path: circle(120% at 50% 50%);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.kawa-bg-layer.kawa-push-from-left {
|
|
195
|
+
transform: translateX(-100%);
|
|
196
|
+
}
|
|
197
|
+
.kawa-bg-layer.kawa-push-from-left.active {
|
|
198
|
+
transform: translateX(0);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.kawa-bg-layer.kawa-push-from-right {
|
|
202
|
+
transform: translateX(100%);
|
|
203
|
+
}
|
|
204
|
+
.kawa-bg-layer.kawa-push-from-right.active {
|
|
205
|
+
transform: translateX(0);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.kawa-bg-layer.kawa-push-from-up {
|
|
209
|
+
transform: translateY(-100%);
|
|
210
|
+
}
|
|
211
|
+
.kawa-bg-layer.kawa-push-from-up.active {
|
|
212
|
+
transform: translateY(0);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.kawa-bg-layer.kawa-push-from-down {
|
|
216
|
+
transform: translateY(100%);
|
|
217
|
+
}
|
|
218
|
+
.kawa-bg-layer.kawa-push-from-down.active {
|
|
219
|
+
transform: translateY(0);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.kawa-bg-layer.kawa-zoom-in {
|
|
223
|
+
transform: scale(1.15);
|
|
224
|
+
filter: blur(8px);
|
|
225
|
+
}
|
|
226
|
+
.kawa-bg-layer.kawa-zoom-in.active {
|
|
227
|
+
transform: scale(1);
|
|
228
|
+
filter: blur(0px);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.kawa-bg-layer.kawa-blur-transition {
|
|
232
|
+
filter: blur(16px);
|
|
233
|
+
}
|
|
234
|
+
.kawa-bg-layer.kawa-blur-transition.active {
|
|
235
|
+
filter: blur(0px);
|
|
236
|
+
}
|
|
237
|
+
|
|
165
238
|
/* Characters Layer */
|
|
166
239
|
.kawa-characters {
|
|
167
240
|
position: absolute;
|
|
@@ -1330,6 +1403,17 @@ body.kawa-fullscreen {
|
|
|
1330
1403
|
animation: kawa-fade-in 0.5s cubic-bezier(0.16, 1, 0.3, 1);
|
|
1331
1404
|
}
|
|
1332
1405
|
|
|
1406
|
+
.kawa-bg-video,
|
|
1407
|
+
.kawa-cg-video {
|
|
1408
|
+
position: absolute;
|
|
1409
|
+
inset: 0;
|
|
1410
|
+
width: 100%;
|
|
1411
|
+
height: 100%;
|
|
1412
|
+
object-fit: cover;
|
|
1413
|
+
pointer-events: none;
|
|
1414
|
+
z-index: 1;
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1333
1417
|
/* ==========================================================================
|
|
1334
1418
|
Camera Shake, Flash & Stage Directives
|
|
1335
1419
|
========================================================================== */
|
|
@@ -1810,13 +1894,55 @@ body.kawa-fullscreen {
|
|
|
1810
1894
|
display: none !important;
|
|
1811
1895
|
}
|
|
1812
1896
|
|
|
1813
|
-
/* Embed
|
|
1814
|
-
.kawa-root.kawa-embed
|
|
1815
|
-
|
|
1897
|
+
/* Embed: always letterbox 16:9 — never inherit full-page mobile fill sizing. */
|
|
1898
|
+
.kawa-root.kawa-embed {
|
|
1899
|
+
min-height: 0 !important;
|
|
1900
|
+
height: 100% !important;
|
|
1901
|
+
max-height: 100% !important;
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1904
|
+
.kawa-root.kawa-embed .kawa-stage {
|
|
1905
|
+
max-width: 100% !important;
|
|
1906
|
+
max-height: 100% !important;
|
|
1907
|
+
border-radius: 0;
|
|
1908
|
+
box-shadow: none;
|
|
1909
|
+
}
|
|
1910
|
+
|
|
1911
|
+
.kawa-root.kawa-embed .kawa-ui-layer {
|
|
1912
|
+
padding: clamp(8px, 2.2vh, 16px) clamp(10px, 2.5vw, 18px);
|
|
1816
1913
|
}
|
|
1817
1914
|
|
|
1818
1915
|
.kawa-root.kawa-embed .kawa-dialogue-box {
|
|
1916
|
+
min-height: 0;
|
|
1819
1917
|
max-width: min(920px, 94%);
|
|
1918
|
+
padding: clamp(10px, 1.8vh, 16px) clamp(12px, 2.5vw, 20px);
|
|
1919
|
+
}
|
|
1920
|
+
|
|
1921
|
+
.kawa-root.kawa-embed .kawa-dialogue-text {
|
|
1922
|
+
font-size: clamp(0.88rem, 2.6vw, 1.05rem);
|
|
1923
|
+
line-height: 1.45;
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
.kawa-root.kawa-embed .kawa-choice-container {
|
|
1927
|
+
width: min(92%, 440px);
|
|
1928
|
+
gap: 8px;
|
|
1929
|
+
top: 48%;
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
.kawa-root.kawa-embed .kawa-choice-btn {
|
|
1933
|
+
font-size: clamp(0.82rem, 2.4vw, 1rem);
|
|
1934
|
+
padding: 0.65rem 0.9rem;
|
|
1935
|
+
min-height: 42px;
|
|
1936
|
+
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
|
|
1937
|
+
}
|
|
1938
|
+
|
|
1939
|
+
.kawa-root.kawa-embed .kawa-choice-btn:hover,
|
|
1940
|
+
.kawa-root.kawa-embed .kawa-choice-btn:focus-visible {
|
|
1941
|
+
transform: none;
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
.kawa-root.kawa-embed .kawa-quick-menu {
|
|
1945
|
+
display: none !important;
|
|
1820
1946
|
}
|
|
1821
1947
|
|
|
1822
1948
|
.kawa-continue-link-btn {
|
|
@@ -1863,6 +1989,66 @@ body.kawa-fullscreen {
|
|
|
1863
1989
|
}
|
|
1864
1990
|
|
|
1865
1991
|
@media (max-width: 768px), (pointer: coarse) {
|
|
1992
|
+
/* Full-page player only — never blow up embedded previews (playground / iframe). */
|
|
1993
|
+
.kawa-root:not(.kawa-embed) {
|
|
1994
|
+
/* Use dynamic viewport so mobile browser chrome doesn't clip the stage */
|
|
1995
|
+
min-height: 100dvh;
|
|
1996
|
+
height: 100dvh;
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1999
|
+
.kawa-root:not(.kawa-embed) .kawa-stage {
|
|
2000
|
+
width: 100% !important;
|
|
2001
|
+
max-width: none;
|
|
2002
|
+
max-height: none;
|
|
2003
|
+
border-radius: 0;
|
|
2004
|
+
box-shadow: none;
|
|
2005
|
+
border-left: none;
|
|
2006
|
+
border-right: none;
|
|
2007
|
+
}
|
|
2008
|
+
|
|
2009
|
+
@media (orientation: portrait) {
|
|
2010
|
+
.kawa-root:not(.kawa-embed) .kawa-stage {
|
|
2011
|
+
height: 100% !important;
|
|
2012
|
+
aspect-ratio: auto;
|
|
2013
|
+
}
|
|
2014
|
+
}
|
|
2015
|
+
|
|
2016
|
+
.kawa-main-menu-backdrop {
|
|
2017
|
+
backdrop-filter: none;
|
|
2018
|
+
-webkit-backdrop-filter: none;
|
|
2019
|
+
}
|
|
2020
|
+
|
|
2021
|
+
.kawa-main-menu-btn {
|
|
2022
|
+
backdrop-filter: none;
|
|
2023
|
+
-webkit-backdrop-filter: none;
|
|
2024
|
+
width: min(100%, 420px);
|
|
2025
|
+
}
|
|
2026
|
+
|
|
2027
|
+
.kawa-ui-layer {
|
|
2028
|
+
padding: 10px 12px max(10px, env(safe-area-inset-bottom));
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
.kawa-dialogue-box {
|
|
2032
|
+
min-height: 112px;
|
|
2033
|
+
padding: 14px 16px 18px;
|
|
2034
|
+
padding-bottom: max(14px, env(safe-area-inset-bottom));
|
|
2035
|
+
/* backdrop-filter is expensive on mobile GPUs */
|
|
2036
|
+
backdrop-filter: none;
|
|
2037
|
+
-webkit-backdrop-filter: none;
|
|
2038
|
+
background: rgba(10, 15, 29, 0.94);
|
|
2039
|
+
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.55);
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
.kawa-dialogue-text {
|
|
2043
|
+
font-size: clamp(0.95rem, 3.6vw, 1.1rem);
|
|
2044
|
+
line-height: 1.45;
|
|
2045
|
+
}
|
|
2046
|
+
|
|
2047
|
+
.kawa-choice-container {
|
|
2048
|
+
backdrop-filter: none;
|
|
2049
|
+
-webkit-backdrop-filter: none;
|
|
2050
|
+
}
|
|
2051
|
+
|
|
1866
2052
|
.kawa-choice-btn {
|
|
1867
2053
|
min-height: 48px;
|
|
1868
2054
|
padding: 0.85rem 1.1rem;
|
|
@@ -1877,6 +2063,9 @@ body.kawa-fullscreen {
|
|
|
1877
2063
|
justify-content: center;
|
|
1878
2064
|
align-self: stretch;
|
|
1879
2065
|
border-radius: 16px;
|
|
2066
|
+
backdrop-filter: none;
|
|
2067
|
+
-webkit-backdrop-filter: none;
|
|
2068
|
+
background: rgba(15, 23, 42, 0.92);
|
|
1880
2069
|
}
|
|
1881
2070
|
|
|
1882
2071
|
.kawa-quick-menu .kawa-btn {
|
|
@@ -1890,19 +2079,32 @@ body.kawa-fullscreen {
|
|
|
1890
2079
|
display: none;
|
|
1891
2080
|
}
|
|
1892
2081
|
|
|
1893
|
-
.kawa-
|
|
1894
|
-
|
|
2082
|
+
.kawa-sprite img {
|
|
2083
|
+
filter: none;
|
|
2084
|
+
animation: none;
|
|
1895
2085
|
}
|
|
1896
2086
|
|
|
1897
2087
|
.kawa-hotspot {
|
|
1898
|
-
min-width:
|
|
1899
|
-
min-height:
|
|
2088
|
+
min-width: 48px;
|
|
2089
|
+
min-height: 48px;
|
|
2090
|
+
}
|
|
2091
|
+
|
|
2092
|
+
.kawa-main-menu {
|
|
2093
|
+
overflow-y: auto;
|
|
2094
|
+
-webkit-overflow-scrolling: touch;
|
|
2095
|
+
padding: max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom));
|
|
1900
2096
|
}
|
|
1901
2097
|
|
|
1902
2098
|
.kawa-main-menu-btn {
|
|
1903
2099
|
min-height: 48px;
|
|
1904
2100
|
}
|
|
1905
2101
|
|
|
2102
|
+
.kawa-modal-overlay,
|
|
2103
|
+
.kawa-modal {
|
|
2104
|
+
backdrop-filter: none;
|
|
2105
|
+
-webkit-backdrop-filter: none;
|
|
2106
|
+
}
|
|
2107
|
+
|
|
1906
2108
|
.kawa-slot-actions {
|
|
1907
2109
|
flex-wrap: wrap;
|
|
1908
2110
|
}
|
|
@@ -1910,6 +2112,17 @@ body.kawa-fullscreen {
|
|
|
1910
2112
|
.kawa-slot-btn {
|
|
1911
2113
|
min-height: 44px;
|
|
1912
2114
|
}
|
|
2115
|
+
|
|
2116
|
+
.kawa-ending-card {
|
|
2117
|
+
backdrop-filter: none;
|
|
2118
|
+
-webkit-backdrop-filter: none;
|
|
2119
|
+
}
|
|
2120
|
+
}
|
|
2121
|
+
|
|
2122
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2123
|
+
.kawa-sprite img {
|
|
2124
|
+
animation: none !important;
|
|
2125
|
+
}
|
|
1913
2126
|
}
|
|
1914
2127
|
|
|
1915
2128
|
|
|
@@ -1993,3 +2206,109 @@ body.kawa-fullscreen {
|
|
|
1993
2206
|
font-size: 0.75rem;
|
|
1994
2207
|
color: #64748b;
|
|
1995
2208
|
}
|
|
2209
|
+
|
|
2210
|
+
/* ==========================================================================
|
|
2211
|
+
Accessibility & Themes (A11y, Dyslexia Font & High Contrast)
|
|
2212
|
+
========================================================================== */
|
|
2213
|
+
|
|
2214
|
+
.kawa-dyslexia-font,
|
|
2215
|
+
.kawa-dyslexia-font .kawa-dialogue-text,
|
|
2216
|
+
.kawa-dyslexia-font .kawa-speaker-tag,
|
|
2217
|
+
.kawa-dyslexia-font .kawa-choice-btn,
|
|
2218
|
+
.kawa-dyslexia-font .kawa-modal-card {
|
|
2219
|
+
font-family: 'OpenDyslexic', 'Comic Sans MS', sans-serif !important;
|
|
2220
|
+
letter-spacing: 0.05em !important;
|
|
2221
|
+
word-spacing: 0.12em !important;
|
|
2222
|
+
line-height: 1.7 !important;
|
|
2223
|
+
}
|
|
2224
|
+
|
|
2225
|
+
.kawa-high-contrast .kawa-dialogue-box {
|
|
2226
|
+
background: #000000 !important;
|
|
2227
|
+
border: 3px solid #ffffff !important;
|
|
2228
|
+
box-shadow: 0 0 0 2px #000000 !important;
|
|
2229
|
+
}
|
|
2230
|
+
|
|
2231
|
+
.kawa-high-contrast .kawa-dialogue-text {
|
|
2232
|
+
color: #ffffff !important;
|
|
2233
|
+
font-weight: 700 !important;
|
|
2234
|
+
text-shadow: none !important;
|
|
2235
|
+
}
|
|
2236
|
+
|
|
2237
|
+
.kawa-high-contrast .kawa-speaker-tag {
|
|
2238
|
+
background: #ffff00 !important;
|
|
2239
|
+
color: #000000 !important;
|
|
2240
|
+
border: 2px solid #ffffff !important;
|
|
2241
|
+
font-weight: 900 !important;
|
|
2242
|
+
}
|
|
2243
|
+
|
|
2244
|
+
.kawa-high-contrast .kawa-choice-btn {
|
|
2245
|
+
background: #000000 !important;
|
|
2246
|
+
color: #ffffff !important;
|
|
2247
|
+
border: 2px solid #ffff00 !important;
|
|
2248
|
+
font-weight: 700 !important;
|
|
2249
|
+
}
|
|
2250
|
+
|
|
2251
|
+
.kawa-high-contrast .kawa-choice-btn:hover,
|
|
2252
|
+
.kawa-high-contrast .kawa-choice-btn:focus-visible {
|
|
2253
|
+
background: #ffff00 !important;
|
|
2254
|
+
color: #000000 !important;
|
|
2255
|
+
}
|
|
2256
|
+
|
|
2257
|
+
.kawa-setting-section {
|
|
2258
|
+
margin-top: 14px;
|
|
2259
|
+
padding-top: 12px;
|
|
2260
|
+
border-top: 1px solid rgba(255, 255, 255, 0.12);
|
|
2261
|
+
display: flex;
|
|
2262
|
+
flex-direction: column;
|
|
2263
|
+
gap: 10px;
|
|
2264
|
+
}
|
|
2265
|
+
|
|
2266
|
+
.kawa-setting-section-title {
|
|
2267
|
+
font-size: 0.95rem;
|
|
2268
|
+
font-weight: 700;
|
|
2269
|
+
color: #f8fafc;
|
|
2270
|
+
margin-bottom: 2px;
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2273
|
+
.kawa-toggle-label {
|
|
2274
|
+
display: flex;
|
|
2275
|
+
align-items: center;
|
|
2276
|
+
gap: 10px;
|
|
2277
|
+
font-size: 0.9rem;
|
|
2278
|
+
color: #cbd5e1;
|
|
2279
|
+
cursor: pointer;
|
|
2280
|
+
}
|
|
2281
|
+
|
|
2282
|
+
.kawa-toggle-label input[type="checkbox"] {
|
|
2283
|
+
width: 18px;
|
|
2284
|
+
height: 18px;
|
|
2285
|
+
accent-color: var(--kawa-primary-accent, #f43f5e);
|
|
2286
|
+
cursor: pointer;
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2289
|
+
.kawa-select {
|
|
2290
|
+
width: 100%;
|
|
2291
|
+
padding: 8px 12px;
|
|
2292
|
+
border-radius: 8px;
|
|
2293
|
+
background: rgba(15, 23, 42, 0.8);
|
|
2294
|
+
color: #f8fafc;
|
|
2295
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
2296
|
+
font-size: 0.95rem;
|
|
2297
|
+
cursor: pointer;
|
|
2298
|
+
outline: none;
|
|
2299
|
+
}
|
|
2300
|
+
|
|
2301
|
+
.kawa-select:focus {
|
|
2302
|
+
border-color: var(--kawa-primary-accent, #f43f5e);
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
.kawa-sprite.kawa-speaking {
|
|
2306
|
+
animation: kawa-sprite-lip-sync 0.35s ease-in-out infinite alternate;
|
|
2307
|
+
}
|
|
2308
|
+
|
|
2309
|
+
@keyframes kawa-sprite-lip-sync {
|
|
2310
|
+
0% { transform: translateY(0) scale(1); }
|
|
2311
|
+
100% { transform: translateY(-3px) scale(1.015); }
|
|
2312
|
+
}
|
|
2313
|
+
|
|
2314
|
+
|