kawaijs 1.0.0 → 1.0.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.
Files changed (48) hide show
  1. package/dist/commands/build.js +4 -4
  2. package/dist/commands/build.js.map +1 -1
  3. package/dist/commands/create.d.ts.map +1 -1
  4. package/dist/commands/create.js +3 -1
  5. package/dist/commands/create.js.map +1 -1
  6. package/dist/commands/dev.js +4 -4
  7. package/dist/commands/dev.js.map +1 -1
  8. package/dist/commands/validate.d.ts.map +1 -1
  9. package/dist/commands/validate.js +20 -2
  10. package/dist/commands/validate.js.map +1 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +8 -3
  13. package/dist/config.js.map +1 -1
  14. package/dist/pwa.d.ts +1 -1
  15. package/dist/pwa.d.ts.map +1 -1
  16. package/dist/pwa.js +4 -3
  17. package/dist/pwa.js.map +1 -1
  18. package/dist/runtime-bundle.d.ts +1 -0
  19. package/dist/runtime-bundle.d.ts.map +1 -1
  20. package/dist/runtime-bundle.js +32 -15
  21. package/dist/runtime-bundle.js.map +1 -1
  22. package/package.json +8 -7
  23. package/templates/starter/README.md +11 -0
  24. package/templates/starter/game/assets/audio/bgm_ambient.mp3 +0 -0
  25. package/templates/starter/game/assets/audio/bgm_ambient.wav +0 -0
  26. package/templates/starter/game/assets/audio/bgm_upbeat.mp3 +0 -0
  27. package/templates/starter/game/assets/audio/bgm_upbeat.wav +0 -0
  28. package/templates/starter/game/assets/audio/sfx_click.mp3 +0 -0
  29. package/templates/starter/game/assets/audio/sfx_click.wav +0 -0
  30. package/templates/starter/game/assets/audio/sfx_sparkle.mp3 +0 -0
  31. package/templates/starter/game/assets/audio/sfx_sparkle.wav +0 -0
  32. package/templates/starter/game/assets/backgrounds/cg_celebration.svg +150 -0
  33. package/templates/starter/game/assets/backgrounds/cg_sunset_promise.svg +70 -0
  34. package/templates/starter/game/assets/backgrounds/classroom.svg +47 -0
  35. package/templates/starter/game/assets/backgrounds/rooftop.svg +86 -0
  36. package/templates/starter/game/assets/backgrounds/sunset_courtyard.svg +75 -0
  37. package/templates/starter/game/assets/characters/kaori/happy.svg +40 -0
  38. package/templates/starter/game/assets/characters/kaori/normal.svg +46 -0
  39. package/templates/starter/game/assets/characters/kaori/smug.svg +38 -0
  40. package/templates/starter/game/assets/characters/kaori/thinking.svg +38 -0
  41. package/templates/starter/game/assets/characters/yumia/excited.svg +51 -0
  42. package/templates/starter/game/assets/characters/yumia/happy.svg +48 -0
  43. package/templates/starter/game/assets/characters/yumia/normal.svg +41 -0
  44. package/templates/starter/game/assets/characters/yumia/sad.svg +41 -0
  45. package/templates/starter/game/favicon.svg +8 -0
  46. package/templates/starter/game/script.kawa +160 -0
  47. package/templates/starter/game/style.css +41 -0
  48. package/templates/starter/package.json +14 -0
@@ -0,0 +1,51 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 1000" width="600" height="1000">
2
+ <defs>
3
+ <linearGradient id="hairGrad" x1="0" y1="0" x2="0" y2="1">
4
+ <stop offset="0%" stop-color="#fb7185"/>
5
+ <stop offset="100%" stop-color="#e11d48"/>
6
+ </linearGradient>
7
+ <linearGradient id="uniformGrad" x1="0" y1="0" x2="0" y2="1">
8
+ <stop offset="0%" stop-color="#1e293b"/>
9
+ <stop offset="100%" stop-color="#0f172a"/>
10
+ </linearGradient>
11
+ </defs>
12
+
13
+ <!-- Body / School Uniform -->
14
+ <path d="M220 450 L380 450 L420 900 L180 900 Z" fill="url(#uniformGrad)"/>
15
+ <!-- White Collar -->
16
+ <polygon points="260,450 300,530 340,450 380,450 300,560 220,450" fill="#ffffff"/>
17
+ <!-- Red Ribbon -->
18
+ <polygon points="285,520 315,520 330,580 300,550 270,580" fill="#f43f5e"/>
19
+
20
+ <!-- Neck -->
21
+ <rect x="275" y="380" width="50" height="80" fill="#fed7aa"/>
22
+
23
+ <!-- Long Hair (Back) -->
24
+ <path d="M160 250 C130 500, 150 750, 190 850 C230 750, 200 500, 220 280 Z" fill="url(#hairGrad)"/>
25
+ <path d="M440 250 C470 500, 450 750, 410 850 C370 750, 400 500, 380 280 Z" fill="url(#hairGrad)"/>
26
+
27
+ <!-- Face -->
28
+ <ellipse cx="300" cy="320" rx="100" ry="115" fill="#ffedd5"/>
29
+
30
+ <!-- Starry / Excited Eyes -->
31
+ <circle cx="245" cy="310" r="16" fill="#881337"/>
32
+ <circle cx="355" cy="310" r="16" fill="#881337"/>
33
+ <polygon points="245,298 249,307 258,307 251,313 253,322 245,317 237,322 239,313 232,307 241,307" fill="#fbbf24"/>
34
+ <polygon points="355,298 359,307 368,307 361,313 363,322 355,317 347,322 349,313 342,307 351,307" fill="#fbbf24"/>
35
+
36
+ <!-- Blush -->
37
+ <ellipse cx="235" cy="355" rx="22" ry="12" fill="#f43f5e" opacity="0.6"/>
38
+ <ellipse cx="365" cy="355" rx="22" ry="12" fill="#f43f5e" opacity="0.6"/>
39
+
40
+ <!-- Wide Open Happy Mouth -->
41
+ <path d="M275 360 Q300 410 325 360 Z" fill="#e11d48"/>
42
+ <path d="M285 390 Q300 405 315 390 Z" fill="#fda4af"/>
43
+
44
+ <!-- Hair (Front & Bangs) -->
45
+ <path d="M200 250 C210 160, 390 160, 400 250 C380 280, 350 310, 330 280 C310 320, 290 320, 270 280 C250 310, 220 280, 200 250 Z" fill="url(#hairGrad)"/>
46
+ <path d="M190 240 C170 340, 180 430, 210 470 C195 410, 195 330, 205 260 Z" fill="url(#hairGrad)"/>
47
+ <path d="M410 240 C430 340, 420 430, 390 470 C405 410, 405 330, 395 260 Z" fill="url(#hairGrad)"/>
48
+
49
+ <!-- Bouncing Ahoge -->
50
+ <path d="M300 170 Q340 80 370 110 Q335 120 305 170" fill="url(#hairGrad)"/>
51
+ </svg>
@@ -0,0 +1,48 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 1000" width="600" height="1000">
2
+ <defs>
3
+ <linearGradient id="hairGrad" x1="0" y1="0" x2="0" y2="1">
4
+ <stop offset="0%" stop-color="#fb7185"/>
5
+ <stop offset="100%" stop-color="#e11d48"/>
6
+ </linearGradient>
7
+ <linearGradient id="uniformGrad" x1="0" y1="0" x2="0" y2="1">
8
+ <stop offset="0%" stop-color="#1e293b"/>
9
+ <stop offset="100%" stop-color="#0f172a"/>
10
+ </linearGradient>
11
+ </defs>
12
+
13
+ <!-- Body / School Uniform -->
14
+ <path d="M220 450 L380 450 L420 900 L180 900 Z" fill="url(#uniformGrad)"/>
15
+ <!-- White Collar -->
16
+ <polygon points="260,450 300,530 340,450 380,450 300,560 220,450" fill="#ffffff"/>
17
+ <!-- Red Ribbon -->
18
+ <polygon points="285,520 315,520 330,580 300,550 270,580" fill="#f43f5e"/>
19
+
20
+ <!-- Neck -->
21
+ <rect x="275" y="380" width="50" height="80" fill="#fed7aa"/>
22
+
23
+ <!-- Long Hair (Back) -->
24
+ <path d="M160 250 C130 500, 150 750, 190 850 C230 750, 200 500, 220 280 Z" fill="url(#hairGrad)"/>
25
+ <path d="M440 250 C470 500, 450 750, 410 850 C370 750, 400 500, 380 280 Z" fill="url(#hairGrad)"/>
26
+
27
+ <!-- Face -->
28
+ <ellipse cx="300" cy="320" rx="100" ry="115" fill="#ffedd5"/>
29
+
30
+ <!-- Blush -->
31
+ <ellipse cx="235" cy="355" rx="18" ry="10" fill="#f43f5e" opacity="0.4"/>
32
+ <ellipse cx="365" cy="355" rx="18" ry="10" fill="#f43f5e" opacity="0.4"/>
33
+
34
+ <!-- Cheerful Eyes (Happy Arcs) -->
35
+ <path d="M225 315 Q245 295 265 315" fill="none" stroke="#881337" stroke-width="6" stroke-linecap="round"/>
36
+ <path d="M335 315 Q355 295 375 315" fill="none" stroke="#881337" stroke-width="6" stroke-linecap="round"/>
37
+
38
+ <!-- Smiling Mouth -->
39
+ <path d="M280 365 Q300 395 320 365 Z" fill="#e11d48"/>
40
+
41
+ <!-- Hair (Front & Bangs) -->
42
+ <path d="M200 250 C210 160, 390 160, 400 250 C380 280, 350 310, 330 280 C310 320, 290 320, 270 280 C250 310, 220 280, 200 250 Z" fill="url(#hairGrad)"/>
43
+ <path d="M190 240 C170 340, 180 430, 210 470 C195 410, 195 330, 205 260 Z" fill="url(#hairGrad)"/>
44
+ <path d="M410 240 C430 340, 420 430, 390 470 C405 410, 405 330, 395 260 Z" fill="url(#hairGrad)"/>
45
+
46
+ <!-- Cute Ahoge (Hair Strand) -->
47
+ <path d="M300 170 Q320 100 350 120 Q325 125 305 170" fill="url(#hairGrad)"/>
48
+ </svg>
@@ -0,0 +1,41 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 1000" width="600" height="1000">
2
+ <defs>
3
+ <linearGradient id="hairGrad" x1="0" y1="0" x2="0" y2="1">
4
+ <stop offset="0%" stop-color="#fb7185"/>
5
+ <stop offset="100%" stop-color="#e11d48"/>
6
+ </linearGradient>
7
+ <linearGradient id="uniformGrad" x1="0" y1="0" x2="0" y2="1">
8
+ <stop offset="0%" stop-color="#1e293b"/>
9
+ <stop offset="100%" stop-color="#0f172a"/>
10
+ </linearGradient>
11
+ </defs>
12
+
13
+ <!-- Body / School Uniform -->
14
+ <path d="M220 450 L380 450 L420 900 L180 900 Z" fill="url(#uniformGrad)"/>
15
+ <polygon points="260,450 300,530 340,450 380,450 300,560 220,450" fill="#ffffff"/>
16
+ <polygon points="285,520 315,520 330,580 300,550 270,580" fill="#f43f5e"/>
17
+
18
+ <!-- Neck -->
19
+ <rect x="275" y="380" width="50" height="80" fill="#fed7aa"/>
20
+
21
+ <!-- Long Hair (Back) -->
22
+ <path d="M160 250 C130 500, 150 750, 190 850 C230 750, 200 500, 220 280 Z" fill="url(#hairGrad)"/>
23
+ <path d="M440 250 C470 500, 450 750, 410 850 C370 750, 400 500, 380 280 Z" fill="url(#hairGrad)"/>
24
+
25
+ <!-- Face -->
26
+ <ellipse cx="300" cy="320" rx="100" ry="115" fill="#ffedd5"/>
27
+
28
+ <!-- Normal Eyes -->
29
+ <circle cx="245" cy="315" r="14" fill="#881337"/>
30
+ <circle cx="355" cy="315" r="14" fill="#881337"/>
31
+ <circle cx="249" cy="311" r="5" fill="#ffffff"/>
32
+ <circle cx="359" cy="311" r="5" fill="#ffffff"/>
33
+
34
+ <!-- Neutral Gentle Smile -->
35
+ <path d="M285 365 Q300 380 315 365" fill="none" stroke="#e11d48" stroke-width="4" stroke-linecap="round"/>
36
+
37
+ <!-- Hair (Front & Bangs) -->
38
+ <path d="M200 250 C210 160, 390 160, 400 250 C380 280, 350 310, 330 280 C310 320, 290 320, 270 280 C250 310, 220 280, 200 250 Z" fill="url(#hairGrad)"/>
39
+ <path d="M190 240 C170 340, 180 430, 210 470 C195 410, 195 330, 205 260 Z" fill="url(#hairGrad)"/>
40
+ <path d="M410 240 C430 340, 420 430, 390 470 C405 410, 405 330, 395 260 Z" fill="url(#hairGrad)"/>
41
+ </svg>
@@ -0,0 +1,41 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 1000" width="600" height="1000">
2
+ <defs>
3
+ <linearGradient id="hairGrad" x1="0" y1="0" x2="0" y2="1">
4
+ <stop offset="0%" stop-color="#fb7185"/>
5
+ <stop offset="100%" stop-color="#e11d48"/>
6
+ </linearGradient>
7
+ <linearGradient id="uniformGrad" x1="0" y1="0" x2="0" y2="1">
8
+ <stop offset="0%" stop-color="#1e293b"/>
9
+ <stop offset="100%" stop-color="#0f172a"/>
10
+ </linearGradient>
11
+ </defs>
12
+
13
+ <!-- Body / School Uniform -->
14
+ <path d="M220 450 L380 450 L420 900 L180 900 Z" fill="url(#uniformGrad)"/>
15
+ <polygon points="260,450 300,530 340,450 380,450 300,560 220,450" fill="#ffffff"/>
16
+ <polygon points="285,520 315,520 330,580 300,550 270,580" fill="#f43f5e"/>
17
+
18
+ <!-- Neck -->
19
+ <rect x="275" y="380" width="50" height="80" fill="#fed7aa"/>
20
+
21
+ <!-- Long Hair (Back) -->
22
+ <path d="M160 250 C130 500, 150 750, 190 850 C230 750, 200 500, 220 280 Z" fill="url(#hairGrad)"/>
23
+ <path d="M440 250 C470 500, 450 750, 410 850 C370 750, 400 500, 380 280 Z" fill="url(#hairGrad)"/>
24
+
25
+ <!-- Face -->
26
+ <ellipse cx="300" cy="320" rx="100" ry="115" fill="#ffedd5"/>
27
+
28
+ <!-- Sad / Pouting Eyes -->
29
+ <circle cx="245" cy="315" r="14" fill="#881337"/>
30
+ <circle cx="355" cy="315" r="14" fill="#881337"/>
31
+ <!-- Tear droplet -->
32
+ <circle cx="230" cy="335" r="5" fill="#38bdf8"/>
33
+
34
+ <!-- Pout / Frown -->
35
+ <path d="M285 375 Q300 360 315 375" fill="none" stroke="#e11d48" stroke-width="4" stroke-linecap="round"/>
36
+
37
+ <!-- Hair (Front & Bangs) -->
38
+ <path d="M200 250 C210 160, 390 160, 400 250 C380 280, 350 310, 330 280 C310 320, 290 320, 270 280 C250 310, 220 280, 200 250 Z" fill="url(#hairGrad)"/>
39
+ <path d="M190 240 C170 340, 180 430, 210 470 C195 410, 195 330, 205 260 Z" fill="url(#hairGrad)"/>
40
+ <path d="M410 240 C430 340, 420 430, 390 470 C405 410, 405 330, 395 260 Z" fill="url(#hairGrad)"/>
41
+ </svg>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-label="Game icon">
3
+ <rect width="512" height="512" rx="96" fill="#0f172a"/>
4
+ <circle cx="256" cy="210" r="110" fill="#f43f5e" opacity="0.95"/>
5
+ <path d="M120 400c40-70 100-100 136-100s96 30 136 100" fill="none" stroke="#f43f5e" stroke-width="28" stroke-linecap="round"/>
6
+ <circle cx="210" cy="190" r="14" fill="#0f172a"/>
7
+ <circle cx="302" cy="190" r="14" fill="#0f172a"/>
8
+ </svg>
@@ -0,0 +1,160 @@
1
+ # Kawaijs Showcase — "Code of Hearts"
2
+ # Living syntax guide: define, input, transitions, sakura, audio, camera, CG.
3
+ character yumia "Yumia" #f43f5e
4
+ character kaori "Kaori" #0284c7
5
+
6
+ define bg classroom = "classroom.svg"
7
+ define bg rooftop = "rooftop.svg"
8
+ define bg sunset_courtyard = "sunset_courtyard.svg"
9
+ define music ambient = "bgm_ambient"
10
+ define music upbeat = "bgm_upbeat"
11
+
12
+ label start:
13
+ set player_name = "Sensei"
14
+ set dev_score = 0
15
+ set creative_score = 0
16
+
17
+ play music ambient fade 2
18
+
19
+ scene bg classroom with fade
20
+ vfx sakura
21
+ show yumia happy at left with bounce
22
+ show kaori normal at right with dissolve
23
+
24
+ yumia "Welcome to the {b}Game Development Club{/b}! I'm Yumia."
25
+ kaori "And I'm Kaori. Before we begin — what should we call you?"
26
+
27
+ input player_name "What is your name?"
28
+ yumia "Nice to meet you, [player_name]! Watch the {color=#fda4af}sakura{/color} — that's {b}vfx sakura{/b}."
29
+ kaori "Scenes use {b}define{/b} aliases and transitions like {b}fade{/b}, {b}dissolve{/b}, or {b}wipeleft{/b}."
30
+
31
+ window hide
32
+ pause 700
33
+ window show
34
+
35
+ yumia "We need your help choosing our project's direction, [player_name]! What's your strength?"
36
+
37
+ menu:
38
+ "High-performance architecture & Web Audio":
39
+ play sound sfx_click
40
+ camera vpunch
41
+ set dev_score += 2
42
+ show kaori happy at right with nod
43
+ show yumia normal at left
44
+ kaori "Impressive. An engineer with an eye for modularity and crisp performance."
45
+ yumia "Hey! Don't forget that great stories need emotional resonance too!"
46
+ jump technical_route
47
+
48
+ "Rich storytelling, character drama & art":
49
+ play sound sfx_click
50
+ camera shake 500
51
+ set creative_score += 2
52
+ show yumia excited at left with bounce
53
+ show kaori thinking at right
54
+ yumia "Yes!! Players remember characters that touch their hearts."
55
+ kaori "A solid script is essential, provided the memory footprint stays lightweight."
56
+ jump creative_route
57
+
58
+ "Full-stack mastery: Code, Music, and Narrative":
59
+ play sound sfx_click
60
+ camera flash
61
+ set dev_score += 1
62
+ set creative_score += 1
63
+ show yumia excited at left with bounce
64
+ show kaori smug at right with nod
65
+ kaori "Ambitious. A true solo-dev Renaissance creator."
66
+ yumia "That means we can make something unforgettable together, [player_name]!"
67
+ jump courtyard_scene
68
+
69
+ label technical_route:
70
+ play music upbeat fade 1
71
+ scene bg rooftop with wipeleft
72
+ vfx fog
73
+ show kaori smug at center with dissolve
74
+
75
+ kaori "Up here on the misty rooftop — {b}vfx fog{/b} after a wipe transition."
76
+ kaori "Rollback snapshots, live reload, and a modular audio pipeline come free with the toolchain."
77
+
78
+ play sound sfx_sparkle
79
+ camera flash
80
+ pause 600
81
+ cg "cg_sunset_promise.svg" as "sunset_promise"
82
+ kaori "Look at the horizon, [player_name]. Dev score: [dev_score]. That's a fullscreen {b}cg{/b}."
83
+ jump evaluate_ending
84
+
85
+ label creative_route:
86
+ play music upbeat fade 1
87
+ scene bg sunset_courtyard with dissolve
88
+ vfx sakura
89
+ vfx tint "#fda4af"
90
+ show yumia happy at center with bounce
91
+
92
+ yumia "Isn't the sunset courtyard breathtaking, [player_name]?"
93
+ yumia "{b}vfx sakura{/b} plus {b}vfx tint{/b} — pink light over falling petals."
94
+
95
+ play sound sfx_sparkle
96
+ camera flash
97
+ pause 600
98
+ cg "cg_sunset_promise.svg" as "sunset_promise"
99
+ yumia "Creative score: [creative_score]. Great stories bloom when imagination meets great tools."
100
+ jump evaluate_ending
101
+
102
+ label courtyard_scene:
103
+ play music upbeat fade 1
104
+ scene bg sunset_courtyard with wiperight
105
+ vfx sakura
106
+ show yumia happy at left with bounce
107
+ show kaori happy at right with nod
108
+
109
+ yumia "Look at the sunset! Story branches and characters are already outlined."
110
+ kaori "The bundle is light. The Web Audio controller is ready."
111
+
112
+ yumia "Try a web-native {b}theme{/b}, a {b}style{/b} skin, and clickable {b}hotspots{/b}."
113
+ theme "sakura"
114
+ style dialogue glass
115
+ window hide
116
+ hotspot door 8 35 22 40 jump ending_master
117
+ hotspot poster 72 20 20 28 jump evaluate_ending
118
+ window show
119
+
120
+ camera hpunch
121
+ yumia "Let's bring all our talents together, [player_name]!"
122
+ jump evaluate_ending
123
+
124
+ label evaluate_ending:
125
+ if dev_score >= 2:
126
+ jump ending_tech
127
+ else:
128
+ if creative_score >= 2:
129
+ jump ending_creative
130
+ else:
131
+ jump ending_master
132
+
133
+ label ending_tech:
134
+ scene bg rooftop with fade
135
+ vfx fog
136
+ show kaori smug at center with dissolve
137
+ kaori "Engineering mastery with [dev_score] dev points. Our next release will be revolutionary."
138
+ narrator "{b}Ending 1/3: The Master Architect{/b} — High Performance & Flawless Code."
139
+ stop music fade 2
140
+ return
141
+
142
+ label ending_creative:
143
+ scene bg sunset_courtyard with fade
144
+ vfx sakura
145
+ show yumia excited at center with bounce
146
+ yumia "Creative score [creative_score]! This VN will touch hearts around the world!"
147
+ narrator "{b}Ending 2/3: The Renowned Storyteller{/b} — Emotion, Art & Unforgettable Characters."
148
+ stop music fade 2
149
+ return
150
+
151
+ label ending_master:
152
+ play sound sfx_sparkle
153
+ camera flash
154
+ pause 800
155
+ cg "cg_celebration.svg" as "celebration"
156
+ yumia "Code, art, music, and story in harmony! Dev: [dev_score], Creative: [creative_score]!"
157
+ kaori "You have unlocked the full power of Kawaijs, [player_name]."
158
+ narrator "{b}Ending 3/3: The Renaissance Visionary{/b} — A True Master of Interactive Fiction."
159
+ stop music fade 2
160
+ return
@@ -0,0 +1,41 @@
1
+ /*
2
+ * Project CSS — override design tokens or target Kawaijs classes.
3
+ *
4
+ * Script hooks (no CSS edit required):
5
+ * theme "noir" | "sakura" | "ocean" | "dusk"
6
+ * style dialogue glass | solid | minimal
7
+ * style choices pill | card | underline
8
+ * style stage dim | vignette
9
+ *
10
+ * Official tokens (see @kawaijs/renderer-dom/theme.css):
11
+ * --kawa-primary-accent, --kawa-primary-glow, --kawa-dialogue-bg,
12
+ * --kawa-dialogue-border, --kawa-font-body, --kawa-font-heading
13
+ */
14
+ :root {
15
+ --kawa-primary-accent: #f43f5e;
16
+ --kawa-primary-glow: rgba(244, 63, 94, 0.45);
17
+ --kawa-dialogue-radius: 18px;
18
+ --kawa-choice-radius: 12px;
19
+ }
20
+
21
+ /* Custom Dialogue Box Glassmorphism */
22
+ .kawa-dialogue-box,
23
+ .kawa-dialogue {
24
+ backdrop-filter: blur(20px) saturate(180%);
25
+ -webkit-backdrop-filter: blur(20px) saturate(180%);
26
+ box-shadow: 0 24px 60px -10px rgba(0, 0, 0, 0.8), 0 0 30px rgba(244, 63, 94, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.2);
27
+ border: 1px solid rgba(244, 63, 94, 0.4);
28
+ }
29
+
30
+ /* Custom Choice Buttons */
31
+ .kawa-choice-btn,
32
+ .kawa-choice {
33
+ transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
34
+ letter-spacing: 0.02em;
35
+ }
36
+
37
+ .kawa-choice-btn:hover,
38
+ .kawa-choice:hover {
39
+ transform: translateY(-3px) scale(1.025);
40
+ box-shadow: 0 12px 30px rgba(244, 63, 94, 0.5), 0 0 20px rgba(244, 63, 94, 0.3);
41
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "starter-visual-novel",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "kawa dev",
8
+ "build": "kawa build",
9
+ "validate": "kawa validate"
10
+ },
11
+ "dependencies": {
12
+ "kawaijs": "^1.0.0"
13
+ }
14
+ }