dsh-kingdom 2.0.0 → 3.2.0
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/ASSETS_NOTICE.md +22 -22
- package/README.md +246 -243
- package/THIRD_PARTY_NOTICES.md +92 -92
- package/docs/DSH-KINGDOM-3.0-ANNOUNCEMENT.md +13 -0
- package/docs/V2.0-RELEASE-NOTES.md +30 -30
- package/docs/V2.0-USER-GUIDE.md +74 -74
- package/docs/V3.0-RELEASE-NOTES.md +21 -0
- package/docs/V3.0-USER-GUIDE.md +33 -0
- package/docs/V3.1-RELEASE-NOTES.md +76 -0
- package/docs/V3.2-RELEASE-NOTES.md +103 -0
- package/lib/core/binding.js +167 -60
- package/lib/core/binding.js.map +1 -1
- package/lib/core/db.js +582 -546
- package/lib/core/db.js.map +1 -1
- package/lib/core/delivery-ack.js +1356 -0
- package/lib/core/delivery-ack.js.map +1 -0
- package/lib/core/delivery-change.js +1237 -0
- package/lib/core/delivery-change.js.map +1 -0
- package/lib/core/owner-binding-intent.js +14 -25
- package/lib/core/owner-binding-intent.js.map +1 -1
- package/lib/core/owner-window.js +698 -23
- package/lib/core/owner-window.js.map +1 -1
- package/lib/core/task-service.js +144 -5
- package/lib/core/task-service.js.map +1 -1
- package/lib/core/territory.js +43 -9
- package/lib/core/territory.js.map +1 -1
- package/lib/gui/assets/characters/chancellor-idle.svg +67 -67
- package/lib/gui/assets/characters/chancellor-sleeping.svg +67 -67
- package/lib/gui/assets/characters/chancellor-thinking.svg +67 -67
- package/lib/gui/assets/characters/chancellor-working.svg +67 -67
- package/lib/gui/assets/characters/knight-redraw-r1-idle.svg +67 -67
- package/lib/gui/assets/characters/knight-redraw-r1-sleeping.svg +67 -67
- package/lib/gui/assets/characters/knight-redraw-r1-thinking.svg +67 -67
- package/lib/gui/assets/characters/knight-redraw-r1-working.svg +67 -67
- package/lib/gui/assets/characters/supervisor-idle.svg +67 -67
- package/lib/gui/assets/characters/supervisor-sleeping.svg +67 -67
- package/lib/gui/assets/characters/supervisor-thinking.svg +67 -67
- package/lib/gui/assets/characters/supervisor-working.svg +67 -67
- package/lib/gui/console-app.js +7 -1
- package/lib/gui/console-app.js.map +1 -1
- package/lib/gui/contract.js +6 -0
- package/lib/gui/contract.js.map +1 -1
- package/lib/gui/control-contract.js +3 -2
- package/lib/gui/control-contract.js.map +1 -1
- package/lib/gui/owner-control.js +114 -4
- package/lib/gui/owner-control.js.map +1 -1
- package/lib/gui/owner-ui.js +645 -183
- package/lib/gui/owner-ui.js.map +1 -1
- package/lib/gui/server.js +109 -109
- package/lib/gui/snapshot.js +127 -4
- package/lib/gui/snapshot.js.map +1 -1
- package/lib/gui/visual-assets.js +37 -21
- package/lib/gui/visual-assets.js.map +1 -1
- package/lib/gui/visual-system.js +269 -269
- package/lib/gui/workbench-ui.js +549 -136
- package/lib/gui/workbench-ui.js.map +1 -1
- package/lib/gui/workbench.js +133 -0
- package/lib/gui/workbench.js.map +1 -1
- package/lib/index.js +392 -40
- package/lib/index.js.map +1 -1
- package/lib/types/core/binding.d.ts +29 -0
- package/lib/types/core/db.d.ts +14 -0
- package/lib/types/core/delivery-ack.d.ts +688 -0
- package/lib/types/core/delivery-change.d.ts +381 -0
- package/lib/types/core/owner-binding-intent.d.ts +9 -1
- package/lib/types/core/owner-window.d.ts +237 -3
- package/lib/types/core/task-service.d.ts +22 -0
- package/lib/types/core/territory.d.ts +18 -3
- package/lib/types/gui/contract.d.ts +162 -1
- package/lib/types/gui/owner-control.d.ts +61 -1
- package/lib/types/gui/snapshot.d.ts +8 -0
- package/lib/types/gui/visual-assets.d.ts +16 -0
- package/lib/types/gui/workbench.d.ts +47 -1
- package/lib/types/index.d.ts +60 -1
- package/lib/types/worker/governed-executor.d.ts +15 -0
- package/lib/worker/governed-executor.js +21 -0
- package/lib/worker/governed-executor.js.map +1 -1
- package/package.json +80 -75
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 112" width="80" height="112" preserveAspectRatio="xMidYMid meet" role="img" focusable="false" aria-labelledby="character-title character-desc" data-role="chancellor" data-state="sleeping">
|
|
2
|
-
<title id="character-title">Kingdom 宰相 · sleeping</title>
|
|
3
|
-
<desc id="character-desc">高冠、银须、长袍和规划卷轴。展开卷轴,提笔指示,回看全局。克制的连续关节动作,支持减少动态效果。</desc>
|
|
4
|
-
<metadata>{"visualVersion":"kingdom-motion-r4-gui","role":"chancellor","state":"sleeping","cycleSeconds":8,"viewBox":[0,0,80,112],"origin":"Owner character redesign authorized 2026-09-08"}</metadata>
|
|
5
|
-
<style><![CDATA[
|
|
6
|
-
/* SVG-wide coordinates make every joint pivot explicit and stable. */
|
|
7
|
-
svg{overflow:hidden;--phase:-.6s}
|
|
8
|
-
.weight,.breath,.head,.cape,.arm-far,.forearm-far,.arm-near,.forearm-near,.hat-follow{transform-box:view-box}
|
|
9
|
-
.weight{transform-origin:40px 99px;animation:weight 8s cubic-bezier(.42,0,.58,1) infinite}
|
|
10
|
-
.breath{transform-origin:40px 87px;animation:breathe 4s cubic-bezier(.37,0,.63,1) var(--phase) infinite}
|
|
11
|
-
.head{transform-origin:40px 44px;animation:idle-look 8s cubic-bezier(.4,0,.4,1) infinite}
|
|
12
|
-
.cape{transform-origin:40px 48px;animation:cloth 8s cubic-bezier(.4,0,.5,1) infinite}
|
|
13
|
-
.arm-far{transform-origin:27px 51px}.forearm-far{transform-origin:22px 64px}
|
|
14
|
-
.arm-near{transform-origin:54px 51px}.forearm-near{transform-origin:58px 63px}
|
|
15
|
-
.hat-follow{transform-origin:49px 18px;animation:hat-settle 8s ease-in-out infinite}
|
|
16
|
-
.eyes-open{transform-box:fill-box;transform-origin:center;animation:blink 8s linear var(--phase) infinite}
|
|
17
|
-
.eyes-closed{display:none}
|
|
18
|
-
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .arm-near{animation:idle-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
19
|
-
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .forearm-near{animation:idle-hand 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
20
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .weight{animation-name:work-weight}
|
|
21
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .head{animation-name:work-look}
|
|
22
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-far{animation:steady-page 8s ease-in-out infinite}
|
|
23
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-near{animation:chancellor-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
24
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .forearm-near{animation:chancellor-gesture 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
25
|
-
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .head{transform:rotate(-5deg);animation:consider 8s ease-in-out infinite}
|
|
26
|
-
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .forearm-near{transform:rotate(-18deg);animation:thinking-hand 8s ease-in-out infinite}
|
|
27
|
-
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .arm-near{transform:rotate(-6deg);animation:thinking-shoulder 8s ease-in-out infinite}
|
|
28
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .head{transform:rotate(9deg) translateY(1px);animation:rest-head 8s ease-in-out infinite}
|
|
29
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-near{transform:rotate(9deg)}
|
|
30
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-far{transform:rotate(-5deg)}
|
|
31
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .forearm-near{transform:rotate(8deg)}
|
|
32
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-open{display:none}
|
|
33
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-closed{display:inline}
|
|
34
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .weight{animation:none;transform:rotate(.4deg)}
|
|
35
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .breath{animation-duration:4s}
|
|
36
|
-
svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .figure,svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .ground-shadow{display:none}
|
|
37
|
-
@keyframes breathe{0%,100%{transform:scale(1,1)}42%{transform:scale(1.01,1.028)}68%{transform:scale(1.005,1.013)}}
|
|
38
|
-
@keyframes weight{0%,100%{transform:rotate(0deg)}20%,35%{transform:rotate(-6deg)}64%,78%{transform:rotate(5deg)}}
|
|
39
|
-
@keyframes work-weight{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(3deg)}28%,39%{transform:rotate(-8deg)}51%{transform:rotate(-3deg)}63%,72%{transform:rotate(4deg)}83%,91%{transform:rotate(-5deg)}}
|
|
40
|
-
@keyframes cloth{0%,100%{transform:rotate(0deg)}16%{transform:rotate(-4deg)}33%,43%{transform:rotate(9deg)}53%{transform:rotate(3deg)}71%,83%{transform:rotate(-7deg)}93%{transform:rotate(3deg)}}
|
|
41
|
-
@keyframes hat-settle{0%,100%{transform:rotate(0deg)}29%{transform:rotate(-12deg)}43%{transform:rotate(5deg)}57%,79%{transform:rotate(0deg)}88%{transform:rotate(-6deg)}}
|
|
42
|
-
@keyframes idle-look{0%,10%,100%{transform:rotate(0deg) translateY(0)}23%,37%{transform:rotate(-16deg) translateY(3px)}49%,66%{transform:rotate(0deg) translateY(0)}80%,90%{transform:rotate(12deg) translateY(2px)}}
|
|
43
|
-
@keyframes idle-shoulder{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(-28deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(12deg)}}
|
|
44
|
-
@keyframes idle-hand{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(14deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(-18deg)}}
|
|
45
|
-
@keyframes blink{0%,27%,30%,72%,75%,100%{transform:scaleY(1)}28.5%,73.5%{transform:scaleY(.12)}}
|
|
46
|
-
@keyframes work-look{0%,8%,100%{transform:rotate(0deg) translateY(0)}27%,40%{transform:rotate(-20deg) translateY(5px)}54%,68%{transform:rotate(6deg) translateY(1px)}82%,91%{transform:rotate(-13deg) translateY(3px)}}
|
|
47
|
-
@keyframes steady-page{0%,100%{transform:rotate(0deg)}16%{transform:rotate(6deg)}28%,43%{transform:rotate(-8deg)}56%,73%{transform:rotate(0deg)}83%,91%{transform:rotate(-4deg)}}
|
|
48
|
-
@keyframes chancellor-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(10deg)}28%,38%{transform:rotate(-58deg)}48%{transform:rotate(-38deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(-34deg)}}
|
|
49
|
-
@keyframes chancellor-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-12deg)}28%,38%{transform:rotate(28deg)}48%{transform:rotate(18deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(14deg)}}
|
|
50
|
-
@keyframes supervisor-shoulder{0%,8%,100%{transform:rotate(0deg)}16%{transform:rotate(-12deg)}27%,41%{transform:rotate(22deg)}54%,67%{transform:rotate(-30deg)}82%,91%{transform:rotate(16deg)}}
|
|
51
|
-
@keyframes supervisor-gesture{0%,8%,100%{transform:rotate(0deg)}17%{transform:rotate(15deg)}26%{transform:rotate(-32deg)}32%{transform:rotate(8deg)}40%{transform:rotate(-26deg)}54%,67%{transform:rotate(34deg)}81%{transform:rotate(-24deg)}90%{transform:rotate(-4deg)}}
|
|
52
|
-
@keyframes knight-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(12deg)}28%,38%{transform:rotate(-70deg)}47%{transform:rotate(-44deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(-42deg)}}
|
|
53
|
-
@keyframes knight-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-14deg)}28%,38%{transform:rotate(36deg)}47%{transform:rotate(18deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(22deg)}}
|
|
54
|
-
@keyframes consider{0%,100%{transform:rotate(-5deg) translateY(0)}20%,38%{transform:rotate(-23deg) translateY(7px)}58%,77%{transform:rotate(10deg) translateY(2px)}}
|
|
55
|
-
@keyframes thinking-shoulder{0%,100%{transform:rotate(-6deg)}22%,40%{transform:rotate(-32deg)}60%,78%{transform:rotate(8deg)}}
|
|
56
|
-
@keyframes thinking-hand{0%,100%{transform:rotate(-18deg)}22%,40%{transform:rotate(-40deg)}60%,78%{transform:rotate(10deg)}}
|
|
57
|
-
@keyframes rest-head{0%,100%{transform:rotate(9deg) translateY(1px)}40%,49%{transform:rotate(23deg) translateY(5px)}65%,77%{transform:rotate(5deg) translateY(.5px)}}
|
|
58
|
-
/* The console supplies page-clock phase to preserve motion across node reconstruction. */
|
|
59
|
-
.weight,.head,.cape,.hat-follow,.arm-far,.arm-near,.forearm-near{animation-delay:var(--kingdom-motion-offset,0s)}
|
|
60
|
-
.breath,.eyes-open{animation-delay:calc(var(--kingdom-motion-offset,0s) + var(--phase))}
|
|
61
|
-
/* Keep the state-specific resting pose. No scripts, SMIL, filters or external assets. */
|
|
62
|
-
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
63
|
-
]]></style>
|
|
64
|
-
<g stroke="#28352f" stroke-width="2.1" stroke-linejoin="round" stroke-linecap="round">
|
|
65
|
-
<ellipse class="ground-shadow" cx="40" cy="104" rx="23" ry="3" fill="#07140e" opacity=".2" stroke="none"/>
|
|
66
|
-
<g class="figure" data-part="figure"><g class="feet" data-part="feet"><path d="M27 91h12v12H23v-6l4-2Z" fill="#655446" /><path d="M43 91h12l2 7v5H41v-8Z" fill="#655446" /><path d="M24 100h14 M43 100h13" fill="none" stroke="#a28b65" stroke-width="2"/></g><g class="weight" data-part="weight"><g class="cape" data-part="cape"><path d="M24 47Q39 43 56 47L64 93L52 98L40 94L23 99L17 92Z" fill="#514664" /><path d="M22 52l-3 31l5 7l5-42Z" fill="#ab94b9" stroke="none" opacity=".45"/></g><g class="breath" data-part="breath"><g class="arm-far" data-part="arm-far"><path d="M27 49Q21 47 18 56L18 65l9 1l5-9Z" fill="#79648f" /><path d="M18 61h10v6H18Z" fill="#ab94b9" /><g class="forearm-far" data-part="forearm-far"><path d="M10 59L29 60L31 80L12 79Z" fill="#f2e4bb" /><path d="M9 58h6v6H9Z" fill="#d4b570" /><path d="M11 76h6v7h-6Z" fill="#d4b570" /><path d="M16 65l9 1 M17 70l8 1 M18 75h6" fill="none" stroke="#92774b" stroke-width="1.8"/><path d="M16 65q-4 2-2 6l7 1l1-5Z" fill="#efc69a" /></g></g><g class="torso" data-part="torso"><path d="M27 47L39 44L52 47L55 71L59 95H22L26 71Z" fill="#79648f" /><path d="M31 48l8 7l8-8l-2 45H34Z" fill="#514664" stroke="none"/><path d="M29 48l3 1l3 44h-4Z" fill="#d4b570" stroke="none"/><path d="M47 49l3-1l-2 45h-4Z" fill="#d4b570" stroke="none"/><path d="M23 91h35v4H23Z" fill="#d4b570" /><path d="M27 70h26v6H27Z" fill="#635440" /><path d="M37 69h9v8h-9Z" fill="#d4b570" /></g><g class="head" data-part="head"><path d="M27 24 Q27 16 40 16 Q53 16 53 25 L52 35 Q50 44 40 45 Q30 44 28 35Z" fill="#efc69a" /><path d="M48 25 L52 24 L51 36 Q48 42 41 43 L40 39 Q47 36 48 25Z" fill="#cf9970" stroke="none"/><path d="M26 28 Q21 26 24 33 L28 34 M53 28 Q58 26 56 33 L52 34" fill="#efc69a" /><g class="eyes-open" data-part="eyes-open"><path d="M32 29v2 M45 29v2" fill="none" stroke="#28352f" stroke-width="2.6"/></g><g class="eyes-closed" data-part="eyes-closed"><path d="M30.5 30q3 2.5 6 0 M43 30q3 2.5 6 0" fill="none" stroke="#28352f" stroke-width="1.7"/></g><path d="M30 25.5l6-.5 M43 25l5 .7" fill="none" stroke="#e6ddc8" stroke-width="2.3"/><path d="M40 30l-2 5h4" fill="#cf9970" stroke="none"/><path d="M28 34 L32 35 L34 40 L40 42 L46 40 L49 34 L52 34 L51 43 L46 49 L40 52 L34 49 L29 43Z" fill="#e8dfc9" /><path d="M31 35q5-3 9 1q5-4 9-1l-2 5l-7-1l-6 1Z" fill="#f5ecd6" /><path d="M38 42h4" fill="none" stroke="#746f61" stroke-width="1.5"/><path d="M25 23 L26 10 L31 7 L48 7 L54 12 L55 23Z" fill="#514664" /><path d="M29 9h18l4 5v7H29Z" fill="#79648f" stroke="none"/><path d="M24 21h32v6H24Z" fill="#d4b570" /><path d="M37 11h6v9h-6Z" fill="#ab94b9" stroke="none"/><g class="hat-follow" data-part="hat-follow"><path d="M53 13q7 1 8 7" fill="none" stroke="#d4b570" stroke-width="2"/><path d="M60 19h3v7h-3Z" fill="#d4b570" stroke="none"/></g></g><g class="arm-near" data-part="arm-near"><path d="M53 48q7-1 10 7l-3 9l-9-4Z" fill="#79648f" /><g class="forearm-near" data-part="forearm-near"><path d="M60 59l4 8l-7 7l-6-5Z" fill="#79648f" /><path d="M52 66l7-2l4 5l-7 5Z" fill="#d4b570" /><path d="M55 64q2-4 6-2l3 5l-4 4l-5-2Z" fill="#efc69a" /><g class="tool" data-part="tool"><path d="M61 65l8-18" fill="none" stroke="#755940" stroke-width="2.4"/><path d="M65 55q0-9 8-13q1 9-8 13Z" fill="#f2e4bb" /></g></g></g></g></g></g>
|
|
67
|
-
</g></svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 112" width="80" height="112" preserveAspectRatio="xMidYMid meet" role="img" focusable="false" aria-labelledby="character-title character-desc" data-role="chancellor" data-state="sleeping">
|
|
2
|
+
<title id="character-title">Kingdom 宰相 · sleeping</title>
|
|
3
|
+
<desc id="character-desc">高冠、银须、长袍和规划卷轴。展开卷轴,提笔指示,回看全局。克制的连续关节动作,支持减少动态效果。</desc>
|
|
4
|
+
<metadata>{"visualVersion":"kingdom-motion-r4-gui","role":"chancellor","state":"sleeping","cycleSeconds":8,"viewBox":[0,0,80,112],"origin":"Owner character redesign authorized 2026-09-08"}</metadata>
|
|
5
|
+
<style><![CDATA[
|
|
6
|
+
/* SVG-wide coordinates make every joint pivot explicit and stable. */
|
|
7
|
+
svg{overflow:hidden;--phase:-.6s}
|
|
8
|
+
.weight,.breath,.head,.cape,.arm-far,.forearm-far,.arm-near,.forearm-near,.hat-follow{transform-box:view-box}
|
|
9
|
+
.weight{transform-origin:40px 99px;animation:weight 8s cubic-bezier(.42,0,.58,1) infinite}
|
|
10
|
+
.breath{transform-origin:40px 87px;animation:breathe 4s cubic-bezier(.37,0,.63,1) var(--phase) infinite}
|
|
11
|
+
.head{transform-origin:40px 44px;animation:idle-look 8s cubic-bezier(.4,0,.4,1) infinite}
|
|
12
|
+
.cape{transform-origin:40px 48px;animation:cloth 8s cubic-bezier(.4,0,.5,1) infinite}
|
|
13
|
+
.arm-far{transform-origin:27px 51px}.forearm-far{transform-origin:22px 64px}
|
|
14
|
+
.arm-near{transform-origin:54px 51px}.forearm-near{transform-origin:58px 63px}
|
|
15
|
+
.hat-follow{transform-origin:49px 18px;animation:hat-settle 8s ease-in-out infinite}
|
|
16
|
+
.eyes-open{transform-box:fill-box;transform-origin:center;animation:blink 8s linear var(--phase) infinite}
|
|
17
|
+
.eyes-closed{display:none}
|
|
18
|
+
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .arm-near{animation:idle-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
19
|
+
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .forearm-near{animation:idle-hand 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
20
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .weight{animation-name:work-weight}
|
|
21
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .head{animation-name:work-look}
|
|
22
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-far{animation:steady-page 8s ease-in-out infinite}
|
|
23
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-near{animation:chancellor-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
24
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .forearm-near{animation:chancellor-gesture 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
25
|
+
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .head{transform:rotate(-5deg);animation:consider 8s ease-in-out infinite}
|
|
26
|
+
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .forearm-near{transform:rotate(-18deg);animation:thinking-hand 8s ease-in-out infinite}
|
|
27
|
+
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .arm-near{transform:rotate(-6deg);animation:thinking-shoulder 8s ease-in-out infinite}
|
|
28
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .head{transform:rotate(9deg) translateY(1px);animation:rest-head 8s ease-in-out infinite}
|
|
29
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-near{transform:rotate(9deg)}
|
|
30
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-far{transform:rotate(-5deg)}
|
|
31
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .forearm-near{transform:rotate(8deg)}
|
|
32
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-open{display:none}
|
|
33
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-closed{display:inline}
|
|
34
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .weight{animation:none;transform:rotate(.4deg)}
|
|
35
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .breath{animation-duration:4s}
|
|
36
|
+
svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .figure,svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .ground-shadow{display:none}
|
|
37
|
+
@keyframes breathe{0%,100%{transform:scale(1,1)}42%{transform:scale(1.01,1.028)}68%{transform:scale(1.005,1.013)}}
|
|
38
|
+
@keyframes weight{0%,100%{transform:rotate(0deg)}20%,35%{transform:rotate(-6deg)}64%,78%{transform:rotate(5deg)}}
|
|
39
|
+
@keyframes work-weight{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(3deg)}28%,39%{transform:rotate(-8deg)}51%{transform:rotate(-3deg)}63%,72%{transform:rotate(4deg)}83%,91%{transform:rotate(-5deg)}}
|
|
40
|
+
@keyframes cloth{0%,100%{transform:rotate(0deg)}16%{transform:rotate(-4deg)}33%,43%{transform:rotate(9deg)}53%{transform:rotate(3deg)}71%,83%{transform:rotate(-7deg)}93%{transform:rotate(3deg)}}
|
|
41
|
+
@keyframes hat-settle{0%,100%{transform:rotate(0deg)}29%{transform:rotate(-12deg)}43%{transform:rotate(5deg)}57%,79%{transform:rotate(0deg)}88%{transform:rotate(-6deg)}}
|
|
42
|
+
@keyframes idle-look{0%,10%,100%{transform:rotate(0deg) translateY(0)}23%,37%{transform:rotate(-16deg) translateY(3px)}49%,66%{transform:rotate(0deg) translateY(0)}80%,90%{transform:rotate(12deg) translateY(2px)}}
|
|
43
|
+
@keyframes idle-shoulder{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(-28deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(12deg)}}
|
|
44
|
+
@keyframes idle-hand{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(14deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(-18deg)}}
|
|
45
|
+
@keyframes blink{0%,27%,30%,72%,75%,100%{transform:scaleY(1)}28.5%,73.5%{transform:scaleY(.12)}}
|
|
46
|
+
@keyframes work-look{0%,8%,100%{transform:rotate(0deg) translateY(0)}27%,40%{transform:rotate(-20deg) translateY(5px)}54%,68%{transform:rotate(6deg) translateY(1px)}82%,91%{transform:rotate(-13deg) translateY(3px)}}
|
|
47
|
+
@keyframes steady-page{0%,100%{transform:rotate(0deg)}16%{transform:rotate(6deg)}28%,43%{transform:rotate(-8deg)}56%,73%{transform:rotate(0deg)}83%,91%{transform:rotate(-4deg)}}
|
|
48
|
+
@keyframes chancellor-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(10deg)}28%,38%{transform:rotate(-58deg)}48%{transform:rotate(-38deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(-34deg)}}
|
|
49
|
+
@keyframes chancellor-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-12deg)}28%,38%{transform:rotate(28deg)}48%{transform:rotate(18deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(14deg)}}
|
|
50
|
+
@keyframes supervisor-shoulder{0%,8%,100%{transform:rotate(0deg)}16%{transform:rotate(-12deg)}27%,41%{transform:rotate(22deg)}54%,67%{transform:rotate(-30deg)}82%,91%{transform:rotate(16deg)}}
|
|
51
|
+
@keyframes supervisor-gesture{0%,8%,100%{transform:rotate(0deg)}17%{transform:rotate(15deg)}26%{transform:rotate(-32deg)}32%{transform:rotate(8deg)}40%{transform:rotate(-26deg)}54%,67%{transform:rotate(34deg)}81%{transform:rotate(-24deg)}90%{transform:rotate(-4deg)}}
|
|
52
|
+
@keyframes knight-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(12deg)}28%,38%{transform:rotate(-70deg)}47%{transform:rotate(-44deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(-42deg)}}
|
|
53
|
+
@keyframes knight-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-14deg)}28%,38%{transform:rotate(36deg)}47%{transform:rotate(18deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(22deg)}}
|
|
54
|
+
@keyframes consider{0%,100%{transform:rotate(-5deg) translateY(0)}20%,38%{transform:rotate(-23deg) translateY(7px)}58%,77%{transform:rotate(10deg) translateY(2px)}}
|
|
55
|
+
@keyframes thinking-shoulder{0%,100%{transform:rotate(-6deg)}22%,40%{transform:rotate(-32deg)}60%,78%{transform:rotate(8deg)}}
|
|
56
|
+
@keyframes thinking-hand{0%,100%{transform:rotate(-18deg)}22%,40%{transform:rotate(-40deg)}60%,78%{transform:rotate(10deg)}}
|
|
57
|
+
@keyframes rest-head{0%,100%{transform:rotate(9deg) translateY(1px)}40%,49%{transform:rotate(23deg) translateY(5px)}65%,77%{transform:rotate(5deg) translateY(.5px)}}
|
|
58
|
+
/* The console supplies page-clock phase to preserve motion across node reconstruction. */
|
|
59
|
+
.weight,.head,.cape,.hat-follow,.arm-far,.arm-near,.forearm-near{animation-delay:var(--kingdom-motion-offset,0s)}
|
|
60
|
+
.breath,.eyes-open{animation-delay:calc(var(--kingdom-motion-offset,0s) + var(--phase))}
|
|
61
|
+
/* Keep the state-specific resting pose. No scripts, SMIL, filters or external assets. */
|
|
62
|
+
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
63
|
+
]]></style>
|
|
64
|
+
<g stroke="#28352f" stroke-width="2.1" stroke-linejoin="round" stroke-linecap="round">
|
|
65
|
+
<ellipse class="ground-shadow" cx="40" cy="104" rx="23" ry="3" fill="#07140e" opacity=".2" stroke="none"/>
|
|
66
|
+
<g class="figure" data-part="figure"><g class="feet" data-part="feet"><path d="M27 91h12v12H23v-6l4-2Z" fill="#655446" /><path d="M43 91h12l2 7v5H41v-8Z" fill="#655446" /><path d="M24 100h14 M43 100h13" fill="none" stroke="#a28b65" stroke-width="2"/></g><g class="weight" data-part="weight"><g class="cape" data-part="cape"><path d="M24 47Q39 43 56 47L64 93L52 98L40 94L23 99L17 92Z" fill="#514664" /><path d="M22 52l-3 31l5 7l5-42Z" fill="#ab94b9" stroke="none" opacity=".45"/></g><g class="breath" data-part="breath"><g class="arm-far" data-part="arm-far"><path d="M27 49Q21 47 18 56L18 65l9 1l5-9Z" fill="#79648f" /><path d="M18 61h10v6H18Z" fill="#ab94b9" /><g class="forearm-far" data-part="forearm-far"><path d="M10 59L29 60L31 80L12 79Z" fill="#f2e4bb" /><path d="M9 58h6v6H9Z" fill="#d4b570" /><path d="M11 76h6v7h-6Z" fill="#d4b570" /><path d="M16 65l9 1 M17 70l8 1 M18 75h6" fill="none" stroke="#92774b" stroke-width="1.8"/><path d="M16 65q-4 2-2 6l7 1l1-5Z" fill="#efc69a" /></g></g><g class="torso" data-part="torso"><path d="M27 47L39 44L52 47L55 71L59 95H22L26 71Z" fill="#79648f" /><path d="M31 48l8 7l8-8l-2 45H34Z" fill="#514664" stroke="none"/><path d="M29 48l3 1l3 44h-4Z" fill="#d4b570" stroke="none"/><path d="M47 49l3-1l-2 45h-4Z" fill="#d4b570" stroke="none"/><path d="M23 91h35v4H23Z" fill="#d4b570" /><path d="M27 70h26v6H27Z" fill="#635440" /><path d="M37 69h9v8h-9Z" fill="#d4b570" /></g><g class="head" data-part="head"><path d="M27 24 Q27 16 40 16 Q53 16 53 25 L52 35 Q50 44 40 45 Q30 44 28 35Z" fill="#efc69a" /><path d="M48 25 L52 24 L51 36 Q48 42 41 43 L40 39 Q47 36 48 25Z" fill="#cf9970" stroke="none"/><path d="M26 28 Q21 26 24 33 L28 34 M53 28 Q58 26 56 33 L52 34" fill="#efc69a" /><g class="eyes-open" data-part="eyes-open"><path d="M32 29v2 M45 29v2" fill="none" stroke="#28352f" stroke-width="2.6"/></g><g class="eyes-closed" data-part="eyes-closed"><path d="M30.5 30q3 2.5 6 0 M43 30q3 2.5 6 0" fill="none" stroke="#28352f" stroke-width="1.7"/></g><path d="M30 25.5l6-.5 M43 25l5 .7" fill="none" stroke="#e6ddc8" stroke-width="2.3"/><path d="M40 30l-2 5h4" fill="#cf9970" stroke="none"/><path d="M28 34 L32 35 L34 40 L40 42 L46 40 L49 34 L52 34 L51 43 L46 49 L40 52 L34 49 L29 43Z" fill="#e8dfc9" /><path d="M31 35q5-3 9 1q5-4 9-1l-2 5l-7-1l-6 1Z" fill="#f5ecd6" /><path d="M38 42h4" fill="none" stroke="#746f61" stroke-width="1.5"/><path d="M25 23 L26 10 L31 7 L48 7 L54 12 L55 23Z" fill="#514664" /><path d="M29 9h18l4 5v7H29Z" fill="#79648f" stroke="none"/><path d="M24 21h32v6H24Z" fill="#d4b570" /><path d="M37 11h6v9h-6Z" fill="#ab94b9" stroke="none"/><g class="hat-follow" data-part="hat-follow"><path d="M53 13q7 1 8 7" fill="none" stroke="#d4b570" stroke-width="2"/><path d="M60 19h3v7h-3Z" fill="#d4b570" stroke="none"/></g></g><g class="arm-near" data-part="arm-near"><path d="M53 48q7-1 10 7l-3 9l-9-4Z" fill="#79648f" /><g class="forearm-near" data-part="forearm-near"><path d="M60 59l4 8l-7 7l-6-5Z" fill="#79648f" /><path d="M52 66l7-2l4 5l-7 5Z" fill="#d4b570" /><path d="M55 64q2-4 6-2l3 5l-4 4l-5-2Z" fill="#efc69a" /><g class="tool" data-part="tool"><path d="M61 65l8-18" fill="none" stroke="#755940" stroke-width="2.4"/><path d="M65 55q0-9 8-13q1 9-8 13Z" fill="#f2e4bb" /></g></g></g></g></g></g>
|
|
67
|
+
</g></svg>
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 112" width="80" height="112" preserveAspectRatio="xMidYMid meet" role="img" focusable="false" aria-labelledby="character-title character-desc" data-role="chancellor" data-state="thinking">
|
|
2
|
-
<title id="character-title">Kingdom 宰相 · thinking</title>
|
|
3
|
-
<desc id="character-desc">高冠、银须、长袍和规划卷轴。展开卷轴,提笔指示,回看全局。克制的连续关节动作,支持减少动态效果。</desc>
|
|
4
|
-
<metadata>{"visualVersion":"kingdom-motion-r4-gui","role":"chancellor","state":"thinking","cycleSeconds":8,"viewBox":[0,0,80,112],"origin":"Owner character redesign authorized 2026-09-08"}</metadata>
|
|
5
|
-
<style><![CDATA[
|
|
6
|
-
/* SVG-wide coordinates make every joint pivot explicit and stable. */
|
|
7
|
-
svg{overflow:hidden;--phase:-.6s}
|
|
8
|
-
.weight,.breath,.head,.cape,.arm-far,.forearm-far,.arm-near,.forearm-near,.hat-follow{transform-box:view-box}
|
|
9
|
-
.weight{transform-origin:40px 99px;animation:weight 8s cubic-bezier(.42,0,.58,1) infinite}
|
|
10
|
-
.breath{transform-origin:40px 87px;animation:breathe 4s cubic-bezier(.37,0,.63,1) var(--phase) infinite}
|
|
11
|
-
.head{transform-origin:40px 44px;animation:idle-look 8s cubic-bezier(.4,0,.4,1) infinite}
|
|
12
|
-
.cape{transform-origin:40px 48px;animation:cloth 8s cubic-bezier(.4,0,.5,1) infinite}
|
|
13
|
-
.arm-far{transform-origin:27px 51px}.forearm-far{transform-origin:22px 64px}
|
|
14
|
-
.arm-near{transform-origin:54px 51px}.forearm-near{transform-origin:58px 63px}
|
|
15
|
-
.hat-follow{transform-origin:49px 18px;animation:hat-settle 8s ease-in-out infinite}
|
|
16
|
-
.eyes-open{transform-box:fill-box;transform-origin:center;animation:blink 8s linear var(--phase) infinite}
|
|
17
|
-
.eyes-closed{display:none}
|
|
18
|
-
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .arm-near{animation:idle-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
19
|
-
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .forearm-near{animation:idle-hand 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
20
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .weight{animation-name:work-weight}
|
|
21
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .head{animation-name:work-look}
|
|
22
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-far{animation:steady-page 8s ease-in-out infinite}
|
|
23
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-near{animation:chancellor-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
24
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .forearm-near{animation:chancellor-gesture 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
25
|
-
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .head{transform:rotate(-5deg);animation:consider 8s ease-in-out infinite}
|
|
26
|
-
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .forearm-near{transform:rotate(-18deg);animation:thinking-hand 8s ease-in-out infinite}
|
|
27
|
-
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .arm-near{transform:rotate(-6deg);animation:thinking-shoulder 8s ease-in-out infinite}
|
|
28
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .head{transform:rotate(9deg) translateY(1px);animation:rest-head 8s ease-in-out infinite}
|
|
29
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-near{transform:rotate(9deg)}
|
|
30
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-far{transform:rotate(-5deg)}
|
|
31
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .forearm-near{transform:rotate(8deg)}
|
|
32
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-open{display:none}
|
|
33
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-closed{display:inline}
|
|
34
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .weight{animation:none;transform:rotate(.4deg)}
|
|
35
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .breath{animation-duration:4s}
|
|
36
|
-
svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .figure,svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .ground-shadow{display:none}
|
|
37
|
-
@keyframes breathe{0%,100%{transform:scale(1,1)}42%{transform:scale(1.01,1.028)}68%{transform:scale(1.005,1.013)}}
|
|
38
|
-
@keyframes weight{0%,100%{transform:rotate(0deg)}20%,35%{transform:rotate(-6deg)}64%,78%{transform:rotate(5deg)}}
|
|
39
|
-
@keyframes work-weight{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(3deg)}28%,39%{transform:rotate(-8deg)}51%{transform:rotate(-3deg)}63%,72%{transform:rotate(4deg)}83%,91%{transform:rotate(-5deg)}}
|
|
40
|
-
@keyframes cloth{0%,100%{transform:rotate(0deg)}16%{transform:rotate(-4deg)}33%,43%{transform:rotate(9deg)}53%{transform:rotate(3deg)}71%,83%{transform:rotate(-7deg)}93%{transform:rotate(3deg)}}
|
|
41
|
-
@keyframes hat-settle{0%,100%{transform:rotate(0deg)}29%{transform:rotate(-12deg)}43%{transform:rotate(5deg)}57%,79%{transform:rotate(0deg)}88%{transform:rotate(-6deg)}}
|
|
42
|
-
@keyframes idle-look{0%,10%,100%{transform:rotate(0deg) translateY(0)}23%,37%{transform:rotate(-16deg) translateY(3px)}49%,66%{transform:rotate(0deg) translateY(0)}80%,90%{transform:rotate(12deg) translateY(2px)}}
|
|
43
|
-
@keyframes idle-shoulder{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(-28deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(12deg)}}
|
|
44
|
-
@keyframes idle-hand{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(14deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(-18deg)}}
|
|
45
|
-
@keyframes blink{0%,27%,30%,72%,75%,100%{transform:scaleY(1)}28.5%,73.5%{transform:scaleY(.12)}}
|
|
46
|
-
@keyframes work-look{0%,8%,100%{transform:rotate(0deg) translateY(0)}27%,40%{transform:rotate(-20deg) translateY(5px)}54%,68%{transform:rotate(6deg) translateY(1px)}82%,91%{transform:rotate(-13deg) translateY(3px)}}
|
|
47
|
-
@keyframes steady-page{0%,100%{transform:rotate(0deg)}16%{transform:rotate(6deg)}28%,43%{transform:rotate(-8deg)}56%,73%{transform:rotate(0deg)}83%,91%{transform:rotate(-4deg)}}
|
|
48
|
-
@keyframes chancellor-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(10deg)}28%,38%{transform:rotate(-58deg)}48%{transform:rotate(-38deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(-34deg)}}
|
|
49
|
-
@keyframes chancellor-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-12deg)}28%,38%{transform:rotate(28deg)}48%{transform:rotate(18deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(14deg)}}
|
|
50
|
-
@keyframes supervisor-shoulder{0%,8%,100%{transform:rotate(0deg)}16%{transform:rotate(-12deg)}27%,41%{transform:rotate(22deg)}54%,67%{transform:rotate(-30deg)}82%,91%{transform:rotate(16deg)}}
|
|
51
|
-
@keyframes supervisor-gesture{0%,8%,100%{transform:rotate(0deg)}17%{transform:rotate(15deg)}26%{transform:rotate(-32deg)}32%{transform:rotate(8deg)}40%{transform:rotate(-26deg)}54%,67%{transform:rotate(34deg)}81%{transform:rotate(-24deg)}90%{transform:rotate(-4deg)}}
|
|
52
|
-
@keyframes knight-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(12deg)}28%,38%{transform:rotate(-70deg)}47%{transform:rotate(-44deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(-42deg)}}
|
|
53
|
-
@keyframes knight-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-14deg)}28%,38%{transform:rotate(36deg)}47%{transform:rotate(18deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(22deg)}}
|
|
54
|
-
@keyframes consider{0%,100%{transform:rotate(-5deg) translateY(0)}20%,38%{transform:rotate(-23deg) translateY(7px)}58%,77%{transform:rotate(10deg) translateY(2px)}}
|
|
55
|
-
@keyframes thinking-shoulder{0%,100%{transform:rotate(-6deg)}22%,40%{transform:rotate(-32deg)}60%,78%{transform:rotate(8deg)}}
|
|
56
|
-
@keyframes thinking-hand{0%,100%{transform:rotate(-18deg)}22%,40%{transform:rotate(-40deg)}60%,78%{transform:rotate(10deg)}}
|
|
57
|
-
@keyframes rest-head{0%,100%{transform:rotate(9deg) translateY(1px)}40%,49%{transform:rotate(23deg) translateY(5px)}65%,77%{transform:rotate(5deg) translateY(.5px)}}
|
|
58
|
-
/* The console supplies page-clock phase to preserve motion across node reconstruction. */
|
|
59
|
-
.weight,.head,.cape,.hat-follow,.arm-far,.arm-near,.forearm-near{animation-delay:var(--kingdom-motion-offset,0s)}
|
|
60
|
-
.breath,.eyes-open{animation-delay:calc(var(--kingdom-motion-offset,0s) + var(--phase))}
|
|
61
|
-
/* Keep the state-specific resting pose. No scripts, SMIL, filters or external assets. */
|
|
62
|
-
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
63
|
-
]]></style>
|
|
64
|
-
<g stroke="#28352f" stroke-width="2.1" stroke-linejoin="round" stroke-linecap="round">
|
|
65
|
-
<ellipse class="ground-shadow" cx="40" cy="104" rx="23" ry="3" fill="#07140e" opacity=".2" stroke="none"/>
|
|
66
|
-
<g class="figure" data-part="figure"><g class="feet" data-part="feet"><path d="M27 91h12v12H23v-6l4-2Z" fill="#655446" /><path d="M43 91h12l2 7v5H41v-8Z" fill="#655446" /><path d="M24 100h14 M43 100h13" fill="none" stroke="#a28b65" stroke-width="2"/></g><g class="weight" data-part="weight"><g class="cape" data-part="cape"><path d="M24 47Q39 43 56 47L64 93L52 98L40 94L23 99L17 92Z" fill="#514664" /><path d="M22 52l-3 31l5 7l5-42Z" fill="#ab94b9" stroke="none" opacity=".45"/></g><g class="breath" data-part="breath"><g class="arm-far" data-part="arm-far"><path d="M27 49Q21 47 18 56L18 65l9 1l5-9Z" fill="#79648f" /><path d="M18 61h10v6H18Z" fill="#ab94b9" /><g class="forearm-far" data-part="forearm-far"><path d="M10 59L29 60L31 80L12 79Z" fill="#f2e4bb" /><path d="M9 58h6v6H9Z" fill="#d4b570" /><path d="M11 76h6v7h-6Z" fill="#d4b570" /><path d="M16 65l9 1 M17 70l8 1 M18 75h6" fill="none" stroke="#92774b" stroke-width="1.8"/><path d="M16 65q-4 2-2 6l7 1l1-5Z" fill="#efc69a" /></g></g><g class="torso" data-part="torso"><path d="M27 47L39 44L52 47L55 71L59 95H22L26 71Z" fill="#79648f" /><path d="M31 48l8 7l8-8l-2 45H34Z" fill="#514664" stroke="none"/><path d="M29 48l3 1l3 44h-4Z" fill="#d4b570" stroke="none"/><path d="M47 49l3-1l-2 45h-4Z" fill="#d4b570" stroke="none"/><path d="M23 91h35v4H23Z" fill="#d4b570" /><path d="M27 70h26v6H27Z" fill="#635440" /><path d="M37 69h9v8h-9Z" fill="#d4b570" /></g><g class="head" data-part="head"><path d="M27 24 Q27 16 40 16 Q53 16 53 25 L52 35 Q50 44 40 45 Q30 44 28 35Z" fill="#efc69a" /><path d="M48 25 L52 24 L51 36 Q48 42 41 43 L40 39 Q47 36 48 25Z" fill="#cf9970" stroke="none"/><path d="M26 28 Q21 26 24 33 L28 34 M53 28 Q58 26 56 33 L52 34" fill="#efc69a" /><g class="eyes-open" data-part="eyes-open"><path d="M32 29v2 M45 29v2" fill="none" stroke="#28352f" stroke-width="2.6"/></g><g class="eyes-closed" data-part="eyes-closed"><path d="M30.5 30q3 2.5 6 0 M43 30q3 2.5 6 0" fill="none" stroke="#28352f" stroke-width="1.7"/></g><path d="M30 25.5l6-.5 M43 25l5 .7" fill="none" stroke="#e6ddc8" stroke-width="2.3"/><path d="M40 30l-2 5h4" fill="#cf9970" stroke="none"/><path d="M28 34 L32 35 L34 40 L40 42 L46 40 L49 34 L52 34 L51 43 L46 49 L40 52 L34 49 L29 43Z" fill="#e8dfc9" /><path d="M31 35q5-3 9 1q5-4 9-1l-2 5l-7-1l-6 1Z" fill="#f5ecd6" /><path d="M38 42h4" fill="none" stroke="#746f61" stroke-width="1.5"/><path d="M25 23 L26 10 L31 7 L48 7 L54 12 L55 23Z" fill="#514664" /><path d="M29 9h18l4 5v7H29Z" fill="#79648f" stroke="none"/><path d="M24 21h32v6H24Z" fill="#d4b570" /><path d="M37 11h6v9h-6Z" fill="#ab94b9" stroke="none"/><g class="hat-follow" data-part="hat-follow"><path d="M53 13q7 1 8 7" fill="none" stroke="#d4b570" stroke-width="2"/><path d="M60 19h3v7h-3Z" fill="#d4b570" stroke="none"/></g></g><g class="arm-near" data-part="arm-near"><path d="M53 48q7-1 10 7l-3 9l-9-4Z" fill="#79648f" /><g class="forearm-near" data-part="forearm-near"><path d="M60 59l4 8l-7 7l-6-5Z" fill="#79648f" /><path d="M52 66l7-2l4 5l-7 5Z" fill="#d4b570" /><path d="M55 64q2-4 6-2l3 5l-4 4l-5-2Z" fill="#efc69a" /><g class="tool" data-part="tool"><path d="M61 65l8-18" fill="none" stroke="#755940" stroke-width="2.4"/><path d="M65 55q0-9 8-13q1 9-8 13Z" fill="#f2e4bb" /></g></g></g></g></g></g>
|
|
67
|
-
</g></svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 112" width="80" height="112" preserveAspectRatio="xMidYMid meet" role="img" focusable="false" aria-labelledby="character-title character-desc" data-role="chancellor" data-state="thinking">
|
|
2
|
+
<title id="character-title">Kingdom 宰相 · thinking</title>
|
|
3
|
+
<desc id="character-desc">高冠、银须、长袍和规划卷轴。展开卷轴,提笔指示,回看全局。克制的连续关节动作,支持减少动态效果。</desc>
|
|
4
|
+
<metadata>{"visualVersion":"kingdom-motion-r4-gui","role":"chancellor","state":"thinking","cycleSeconds":8,"viewBox":[0,0,80,112],"origin":"Owner character redesign authorized 2026-09-08"}</metadata>
|
|
5
|
+
<style><![CDATA[
|
|
6
|
+
/* SVG-wide coordinates make every joint pivot explicit and stable. */
|
|
7
|
+
svg{overflow:hidden;--phase:-.6s}
|
|
8
|
+
.weight,.breath,.head,.cape,.arm-far,.forearm-far,.arm-near,.forearm-near,.hat-follow{transform-box:view-box}
|
|
9
|
+
.weight{transform-origin:40px 99px;animation:weight 8s cubic-bezier(.42,0,.58,1) infinite}
|
|
10
|
+
.breath{transform-origin:40px 87px;animation:breathe 4s cubic-bezier(.37,0,.63,1) var(--phase) infinite}
|
|
11
|
+
.head{transform-origin:40px 44px;animation:idle-look 8s cubic-bezier(.4,0,.4,1) infinite}
|
|
12
|
+
.cape{transform-origin:40px 48px;animation:cloth 8s cubic-bezier(.4,0,.5,1) infinite}
|
|
13
|
+
.arm-far{transform-origin:27px 51px}.forearm-far{transform-origin:22px 64px}
|
|
14
|
+
.arm-near{transform-origin:54px 51px}.forearm-near{transform-origin:58px 63px}
|
|
15
|
+
.hat-follow{transform-origin:49px 18px;animation:hat-settle 8s ease-in-out infinite}
|
|
16
|
+
.eyes-open{transform-box:fill-box;transform-origin:center;animation:blink 8s linear var(--phase) infinite}
|
|
17
|
+
.eyes-closed{display:none}
|
|
18
|
+
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .arm-near{animation:idle-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
19
|
+
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .forearm-near{animation:idle-hand 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
20
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .weight{animation-name:work-weight}
|
|
21
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .head{animation-name:work-look}
|
|
22
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-far{animation:steady-page 8s ease-in-out infinite}
|
|
23
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-near{animation:chancellor-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
24
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .forearm-near{animation:chancellor-gesture 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
25
|
+
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .head{transform:rotate(-5deg);animation:consider 8s ease-in-out infinite}
|
|
26
|
+
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .forearm-near{transform:rotate(-18deg);animation:thinking-hand 8s ease-in-out infinite}
|
|
27
|
+
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .arm-near{transform:rotate(-6deg);animation:thinking-shoulder 8s ease-in-out infinite}
|
|
28
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .head{transform:rotate(9deg) translateY(1px);animation:rest-head 8s ease-in-out infinite}
|
|
29
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-near{transform:rotate(9deg)}
|
|
30
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-far{transform:rotate(-5deg)}
|
|
31
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .forearm-near{transform:rotate(8deg)}
|
|
32
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-open{display:none}
|
|
33
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-closed{display:inline}
|
|
34
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .weight{animation:none;transform:rotate(.4deg)}
|
|
35
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .breath{animation-duration:4s}
|
|
36
|
+
svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .figure,svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .ground-shadow{display:none}
|
|
37
|
+
@keyframes breathe{0%,100%{transform:scale(1,1)}42%{transform:scale(1.01,1.028)}68%{transform:scale(1.005,1.013)}}
|
|
38
|
+
@keyframes weight{0%,100%{transform:rotate(0deg)}20%,35%{transform:rotate(-6deg)}64%,78%{transform:rotate(5deg)}}
|
|
39
|
+
@keyframes work-weight{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(3deg)}28%,39%{transform:rotate(-8deg)}51%{transform:rotate(-3deg)}63%,72%{transform:rotate(4deg)}83%,91%{transform:rotate(-5deg)}}
|
|
40
|
+
@keyframes cloth{0%,100%{transform:rotate(0deg)}16%{transform:rotate(-4deg)}33%,43%{transform:rotate(9deg)}53%{transform:rotate(3deg)}71%,83%{transform:rotate(-7deg)}93%{transform:rotate(3deg)}}
|
|
41
|
+
@keyframes hat-settle{0%,100%{transform:rotate(0deg)}29%{transform:rotate(-12deg)}43%{transform:rotate(5deg)}57%,79%{transform:rotate(0deg)}88%{transform:rotate(-6deg)}}
|
|
42
|
+
@keyframes idle-look{0%,10%,100%{transform:rotate(0deg) translateY(0)}23%,37%{transform:rotate(-16deg) translateY(3px)}49%,66%{transform:rotate(0deg) translateY(0)}80%,90%{transform:rotate(12deg) translateY(2px)}}
|
|
43
|
+
@keyframes idle-shoulder{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(-28deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(12deg)}}
|
|
44
|
+
@keyframes idle-hand{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(14deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(-18deg)}}
|
|
45
|
+
@keyframes blink{0%,27%,30%,72%,75%,100%{transform:scaleY(1)}28.5%,73.5%{transform:scaleY(.12)}}
|
|
46
|
+
@keyframes work-look{0%,8%,100%{transform:rotate(0deg) translateY(0)}27%,40%{transform:rotate(-20deg) translateY(5px)}54%,68%{transform:rotate(6deg) translateY(1px)}82%,91%{transform:rotate(-13deg) translateY(3px)}}
|
|
47
|
+
@keyframes steady-page{0%,100%{transform:rotate(0deg)}16%{transform:rotate(6deg)}28%,43%{transform:rotate(-8deg)}56%,73%{transform:rotate(0deg)}83%,91%{transform:rotate(-4deg)}}
|
|
48
|
+
@keyframes chancellor-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(10deg)}28%,38%{transform:rotate(-58deg)}48%{transform:rotate(-38deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(-34deg)}}
|
|
49
|
+
@keyframes chancellor-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-12deg)}28%,38%{transform:rotate(28deg)}48%{transform:rotate(18deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(14deg)}}
|
|
50
|
+
@keyframes supervisor-shoulder{0%,8%,100%{transform:rotate(0deg)}16%{transform:rotate(-12deg)}27%,41%{transform:rotate(22deg)}54%,67%{transform:rotate(-30deg)}82%,91%{transform:rotate(16deg)}}
|
|
51
|
+
@keyframes supervisor-gesture{0%,8%,100%{transform:rotate(0deg)}17%{transform:rotate(15deg)}26%{transform:rotate(-32deg)}32%{transform:rotate(8deg)}40%{transform:rotate(-26deg)}54%,67%{transform:rotate(34deg)}81%{transform:rotate(-24deg)}90%{transform:rotate(-4deg)}}
|
|
52
|
+
@keyframes knight-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(12deg)}28%,38%{transform:rotate(-70deg)}47%{transform:rotate(-44deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(-42deg)}}
|
|
53
|
+
@keyframes knight-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-14deg)}28%,38%{transform:rotate(36deg)}47%{transform:rotate(18deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(22deg)}}
|
|
54
|
+
@keyframes consider{0%,100%{transform:rotate(-5deg) translateY(0)}20%,38%{transform:rotate(-23deg) translateY(7px)}58%,77%{transform:rotate(10deg) translateY(2px)}}
|
|
55
|
+
@keyframes thinking-shoulder{0%,100%{transform:rotate(-6deg)}22%,40%{transform:rotate(-32deg)}60%,78%{transform:rotate(8deg)}}
|
|
56
|
+
@keyframes thinking-hand{0%,100%{transform:rotate(-18deg)}22%,40%{transform:rotate(-40deg)}60%,78%{transform:rotate(10deg)}}
|
|
57
|
+
@keyframes rest-head{0%,100%{transform:rotate(9deg) translateY(1px)}40%,49%{transform:rotate(23deg) translateY(5px)}65%,77%{transform:rotate(5deg) translateY(.5px)}}
|
|
58
|
+
/* The console supplies page-clock phase to preserve motion across node reconstruction. */
|
|
59
|
+
.weight,.head,.cape,.hat-follow,.arm-far,.arm-near,.forearm-near{animation-delay:var(--kingdom-motion-offset,0s)}
|
|
60
|
+
.breath,.eyes-open{animation-delay:calc(var(--kingdom-motion-offset,0s) + var(--phase))}
|
|
61
|
+
/* Keep the state-specific resting pose. No scripts, SMIL, filters or external assets. */
|
|
62
|
+
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
63
|
+
]]></style>
|
|
64
|
+
<g stroke="#28352f" stroke-width="2.1" stroke-linejoin="round" stroke-linecap="round">
|
|
65
|
+
<ellipse class="ground-shadow" cx="40" cy="104" rx="23" ry="3" fill="#07140e" opacity=".2" stroke="none"/>
|
|
66
|
+
<g class="figure" data-part="figure"><g class="feet" data-part="feet"><path d="M27 91h12v12H23v-6l4-2Z" fill="#655446" /><path d="M43 91h12l2 7v5H41v-8Z" fill="#655446" /><path d="M24 100h14 M43 100h13" fill="none" stroke="#a28b65" stroke-width="2"/></g><g class="weight" data-part="weight"><g class="cape" data-part="cape"><path d="M24 47Q39 43 56 47L64 93L52 98L40 94L23 99L17 92Z" fill="#514664" /><path d="M22 52l-3 31l5 7l5-42Z" fill="#ab94b9" stroke="none" opacity=".45"/></g><g class="breath" data-part="breath"><g class="arm-far" data-part="arm-far"><path d="M27 49Q21 47 18 56L18 65l9 1l5-9Z" fill="#79648f" /><path d="M18 61h10v6H18Z" fill="#ab94b9" /><g class="forearm-far" data-part="forearm-far"><path d="M10 59L29 60L31 80L12 79Z" fill="#f2e4bb" /><path d="M9 58h6v6H9Z" fill="#d4b570" /><path d="M11 76h6v7h-6Z" fill="#d4b570" /><path d="M16 65l9 1 M17 70l8 1 M18 75h6" fill="none" stroke="#92774b" stroke-width="1.8"/><path d="M16 65q-4 2-2 6l7 1l1-5Z" fill="#efc69a" /></g></g><g class="torso" data-part="torso"><path d="M27 47L39 44L52 47L55 71L59 95H22L26 71Z" fill="#79648f" /><path d="M31 48l8 7l8-8l-2 45H34Z" fill="#514664" stroke="none"/><path d="M29 48l3 1l3 44h-4Z" fill="#d4b570" stroke="none"/><path d="M47 49l3-1l-2 45h-4Z" fill="#d4b570" stroke="none"/><path d="M23 91h35v4H23Z" fill="#d4b570" /><path d="M27 70h26v6H27Z" fill="#635440" /><path d="M37 69h9v8h-9Z" fill="#d4b570" /></g><g class="head" data-part="head"><path d="M27 24 Q27 16 40 16 Q53 16 53 25 L52 35 Q50 44 40 45 Q30 44 28 35Z" fill="#efc69a" /><path d="M48 25 L52 24 L51 36 Q48 42 41 43 L40 39 Q47 36 48 25Z" fill="#cf9970" stroke="none"/><path d="M26 28 Q21 26 24 33 L28 34 M53 28 Q58 26 56 33 L52 34" fill="#efc69a" /><g class="eyes-open" data-part="eyes-open"><path d="M32 29v2 M45 29v2" fill="none" stroke="#28352f" stroke-width="2.6"/></g><g class="eyes-closed" data-part="eyes-closed"><path d="M30.5 30q3 2.5 6 0 M43 30q3 2.5 6 0" fill="none" stroke="#28352f" stroke-width="1.7"/></g><path d="M30 25.5l6-.5 M43 25l5 .7" fill="none" stroke="#e6ddc8" stroke-width="2.3"/><path d="M40 30l-2 5h4" fill="#cf9970" stroke="none"/><path d="M28 34 L32 35 L34 40 L40 42 L46 40 L49 34 L52 34 L51 43 L46 49 L40 52 L34 49 L29 43Z" fill="#e8dfc9" /><path d="M31 35q5-3 9 1q5-4 9-1l-2 5l-7-1l-6 1Z" fill="#f5ecd6" /><path d="M38 42h4" fill="none" stroke="#746f61" stroke-width="1.5"/><path d="M25 23 L26 10 L31 7 L48 7 L54 12 L55 23Z" fill="#514664" /><path d="M29 9h18l4 5v7H29Z" fill="#79648f" stroke="none"/><path d="M24 21h32v6H24Z" fill="#d4b570" /><path d="M37 11h6v9h-6Z" fill="#ab94b9" stroke="none"/><g class="hat-follow" data-part="hat-follow"><path d="M53 13q7 1 8 7" fill="none" stroke="#d4b570" stroke-width="2"/><path d="M60 19h3v7h-3Z" fill="#d4b570" stroke="none"/></g></g><g class="arm-near" data-part="arm-near"><path d="M53 48q7-1 10 7l-3 9l-9-4Z" fill="#79648f" /><g class="forearm-near" data-part="forearm-near"><path d="M60 59l4 8l-7 7l-6-5Z" fill="#79648f" /><path d="M52 66l7-2l4 5l-7 5Z" fill="#d4b570" /><path d="M55 64q2-4 6-2l3 5l-4 4l-5-2Z" fill="#efc69a" /><g class="tool" data-part="tool"><path d="M61 65l8-18" fill="none" stroke="#755940" stroke-width="2.4"/><path d="M65 55q0-9 8-13q1 9-8 13Z" fill="#f2e4bb" /></g></g></g></g></g></g>
|
|
67
|
+
</g></svg>
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 112" width="80" height="112" preserveAspectRatio="xMidYMid meet" role="img" focusable="false" aria-labelledby="character-title character-desc" data-role="chancellor" data-state="working">
|
|
2
|
-
<title id="character-title">Kingdom 宰相 · working</title>
|
|
3
|
-
<desc id="character-desc">高冠、银须、长袍和规划卷轴。展开卷轴,提笔指示,回看全局。克制的连续关节动作,支持减少动态效果。</desc>
|
|
4
|
-
<metadata>{"visualVersion":"kingdom-motion-r4-gui","role":"chancellor","state":"working","cycleSeconds":8,"viewBox":[0,0,80,112],"origin":"Owner character redesign authorized 2026-09-08"}</metadata>
|
|
5
|
-
<style><![CDATA[
|
|
6
|
-
/* SVG-wide coordinates make every joint pivot explicit and stable. */
|
|
7
|
-
svg{overflow:hidden;--phase:-.6s}
|
|
8
|
-
.weight,.breath,.head,.cape,.arm-far,.forearm-far,.arm-near,.forearm-near,.hat-follow{transform-box:view-box}
|
|
9
|
-
.weight{transform-origin:40px 99px;animation:weight 8s cubic-bezier(.42,0,.58,1) infinite}
|
|
10
|
-
.breath{transform-origin:40px 87px;animation:breathe 4s cubic-bezier(.37,0,.63,1) var(--phase) infinite}
|
|
11
|
-
.head{transform-origin:40px 44px;animation:idle-look 8s cubic-bezier(.4,0,.4,1) infinite}
|
|
12
|
-
.cape{transform-origin:40px 48px;animation:cloth 8s cubic-bezier(.4,0,.5,1) infinite}
|
|
13
|
-
.arm-far{transform-origin:27px 51px}.forearm-far{transform-origin:22px 64px}
|
|
14
|
-
.arm-near{transform-origin:54px 51px}.forearm-near{transform-origin:58px 63px}
|
|
15
|
-
.hat-follow{transform-origin:49px 18px;animation:hat-settle 8s ease-in-out infinite}
|
|
16
|
-
.eyes-open{transform-box:fill-box;transform-origin:center;animation:blink 8s linear var(--phase) infinite}
|
|
17
|
-
.eyes-closed{display:none}
|
|
18
|
-
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .arm-near{animation:idle-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
19
|
-
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .forearm-near{animation:idle-hand 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
20
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .weight{animation-name:work-weight}
|
|
21
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .head{animation-name:work-look}
|
|
22
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-far{animation:steady-page 8s ease-in-out infinite}
|
|
23
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-near{animation:chancellor-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
24
|
-
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .forearm-near{animation:chancellor-gesture 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
25
|
-
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .head{transform:rotate(-5deg);animation:consider 8s ease-in-out infinite}
|
|
26
|
-
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .forearm-near{transform:rotate(-18deg);animation:thinking-hand 8s ease-in-out infinite}
|
|
27
|
-
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .arm-near{transform:rotate(-6deg);animation:thinking-shoulder 8s ease-in-out infinite}
|
|
28
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .head{transform:rotate(9deg) translateY(1px);animation:rest-head 8s ease-in-out infinite}
|
|
29
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-near{transform:rotate(9deg)}
|
|
30
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-far{transform:rotate(-5deg)}
|
|
31
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .forearm-near{transform:rotate(8deg)}
|
|
32
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-open{display:none}
|
|
33
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-closed{display:inline}
|
|
34
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .weight{animation:none;transform:rotate(.4deg)}
|
|
35
|
-
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .breath{animation-duration:4s}
|
|
36
|
-
svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .figure,svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .ground-shadow{display:none}
|
|
37
|
-
@keyframes breathe{0%,100%{transform:scale(1,1)}42%{transform:scale(1.01,1.028)}68%{transform:scale(1.005,1.013)}}
|
|
38
|
-
@keyframes weight{0%,100%{transform:rotate(0deg)}20%,35%{transform:rotate(-6deg)}64%,78%{transform:rotate(5deg)}}
|
|
39
|
-
@keyframes work-weight{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(3deg)}28%,39%{transform:rotate(-8deg)}51%{transform:rotate(-3deg)}63%,72%{transform:rotate(4deg)}83%,91%{transform:rotate(-5deg)}}
|
|
40
|
-
@keyframes cloth{0%,100%{transform:rotate(0deg)}16%{transform:rotate(-4deg)}33%,43%{transform:rotate(9deg)}53%{transform:rotate(3deg)}71%,83%{transform:rotate(-7deg)}93%{transform:rotate(3deg)}}
|
|
41
|
-
@keyframes hat-settle{0%,100%{transform:rotate(0deg)}29%{transform:rotate(-12deg)}43%{transform:rotate(5deg)}57%,79%{transform:rotate(0deg)}88%{transform:rotate(-6deg)}}
|
|
42
|
-
@keyframes idle-look{0%,10%,100%{transform:rotate(0deg) translateY(0)}23%,37%{transform:rotate(-16deg) translateY(3px)}49%,66%{transform:rotate(0deg) translateY(0)}80%,90%{transform:rotate(12deg) translateY(2px)}}
|
|
43
|
-
@keyframes idle-shoulder{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(-28deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(12deg)}}
|
|
44
|
-
@keyframes idle-hand{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(14deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(-18deg)}}
|
|
45
|
-
@keyframes blink{0%,27%,30%,72%,75%,100%{transform:scaleY(1)}28.5%,73.5%{transform:scaleY(.12)}}
|
|
46
|
-
@keyframes work-look{0%,8%,100%{transform:rotate(0deg) translateY(0)}27%,40%{transform:rotate(-20deg) translateY(5px)}54%,68%{transform:rotate(6deg) translateY(1px)}82%,91%{transform:rotate(-13deg) translateY(3px)}}
|
|
47
|
-
@keyframes steady-page{0%,100%{transform:rotate(0deg)}16%{transform:rotate(6deg)}28%,43%{transform:rotate(-8deg)}56%,73%{transform:rotate(0deg)}83%,91%{transform:rotate(-4deg)}}
|
|
48
|
-
@keyframes chancellor-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(10deg)}28%,38%{transform:rotate(-58deg)}48%{transform:rotate(-38deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(-34deg)}}
|
|
49
|
-
@keyframes chancellor-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-12deg)}28%,38%{transform:rotate(28deg)}48%{transform:rotate(18deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(14deg)}}
|
|
50
|
-
@keyframes supervisor-shoulder{0%,8%,100%{transform:rotate(0deg)}16%{transform:rotate(-12deg)}27%,41%{transform:rotate(22deg)}54%,67%{transform:rotate(-30deg)}82%,91%{transform:rotate(16deg)}}
|
|
51
|
-
@keyframes supervisor-gesture{0%,8%,100%{transform:rotate(0deg)}17%{transform:rotate(15deg)}26%{transform:rotate(-32deg)}32%{transform:rotate(8deg)}40%{transform:rotate(-26deg)}54%,67%{transform:rotate(34deg)}81%{transform:rotate(-24deg)}90%{transform:rotate(-4deg)}}
|
|
52
|
-
@keyframes knight-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(12deg)}28%,38%{transform:rotate(-70deg)}47%{transform:rotate(-44deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(-42deg)}}
|
|
53
|
-
@keyframes knight-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-14deg)}28%,38%{transform:rotate(36deg)}47%{transform:rotate(18deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(22deg)}}
|
|
54
|
-
@keyframes consider{0%,100%{transform:rotate(-5deg) translateY(0)}20%,38%{transform:rotate(-23deg) translateY(7px)}58%,77%{transform:rotate(10deg) translateY(2px)}}
|
|
55
|
-
@keyframes thinking-shoulder{0%,100%{transform:rotate(-6deg)}22%,40%{transform:rotate(-32deg)}60%,78%{transform:rotate(8deg)}}
|
|
56
|
-
@keyframes thinking-hand{0%,100%{transform:rotate(-18deg)}22%,40%{transform:rotate(-40deg)}60%,78%{transform:rotate(10deg)}}
|
|
57
|
-
@keyframes rest-head{0%,100%{transform:rotate(9deg) translateY(1px)}40%,49%{transform:rotate(23deg) translateY(5px)}65%,77%{transform:rotate(5deg) translateY(.5px)}}
|
|
58
|
-
/* The console supplies page-clock phase to preserve motion across node reconstruction. */
|
|
59
|
-
.weight,.head,.cape,.hat-follow,.arm-far,.arm-near,.forearm-near{animation-delay:var(--kingdom-motion-offset,0s)}
|
|
60
|
-
.breath,.eyes-open{animation-delay:calc(var(--kingdom-motion-offset,0s) + var(--phase))}
|
|
61
|
-
/* Keep the state-specific resting pose. No scripts, SMIL, filters or external assets. */
|
|
62
|
-
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
63
|
-
]]></style>
|
|
64
|
-
<g stroke="#28352f" stroke-width="2.1" stroke-linejoin="round" stroke-linecap="round">
|
|
65
|
-
<ellipse class="ground-shadow" cx="40" cy="104" rx="23" ry="3" fill="#07140e" opacity=".2" stroke="none"/>
|
|
66
|
-
<g class="figure" data-part="figure"><g class="feet" data-part="feet"><path d="M27 91h12v12H23v-6l4-2Z" fill="#655446" /><path d="M43 91h12l2 7v5H41v-8Z" fill="#655446" /><path d="M24 100h14 M43 100h13" fill="none" stroke="#a28b65" stroke-width="2"/></g><g class="weight" data-part="weight"><g class="cape" data-part="cape"><path d="M24 47Q39 43 56 47L64 93L52 98L40 94L23 99L17 92Z" fill="#514664" /><path d="M22 52l-3 31l5 7l5-42Z" fill="#ab94b9" stroke="none" opacity=".45"/></g><g class="breath" data-part="breath"><g class="arm-far" data-part="arm-far"><path d="M27 49Q21 47 18 56L18 65l9 1l5-9Z" fill="#79648f" /><path d="M18 61h10v6H18Z" fill="#ab94b9" /><g class="forearm-far" data-part="forearm-far"><path d="M10 59L29 60L31 80L12 79Z" fill="#f2e4bb" /><path d="M9 58h6v6H9Z" fill="#d4b570" /><path d="M11 76h6v7h-6Z" fill="#d4b570" /><path d="M16 65l9 1 M17 70l8 1 M18 75h6" fill="none" stroke="#92774b" stroke-width="1.8"/><path d="M16 65q-4 2-2 6l7 1l1-5Z" fill="#efc69a" /></g></g><g class="torso" data-part="torso"><path d="M27 47L39 44L52 47L55 71L59 95H22L26 71Z" fill="#79648f" /><path d="M31 48l8 7l8-8l-2 45H34Z" fill="#514664" stroke="none"/><path d="M29 48l3 1l3 44h-4Z" fill="#d4b570" stroke="none"/><path d="M47 49l3-1l-2 45h-4Z" fill="#d4b570" stroke="none"/><path d="M23 91h35v4H23Z" fill="#d4b570" /><path d="M27 70h26v6H27Z" fill="#635440" /><path d="M37 69h9v8h-9Z" fill="#d4b570" /></g><g class="head" data-part="head"><path d="M27 24 Q27 16 40 16 Q53 16 53 25 L52 35 Q50 44 40 45 Q30 44 28 35Z" fill="#efc69a" /><path d="M48 25 L52 24 L51 36 Q48 42 41 43 L40 39 Q47 36 48 25Z" fill="#cf9970" stroke="none"/><path d="M26 28 Q21 26 24 33 L28 34 M53 28 Q58 26 56 33 L52 34" fill="#efc69a" /><g class="eyes-open" data-part="eyes-open"><path d="M32 29v2 M45 29v2" fill="none" stroke="#28352f" stroke-width="2.6"/></g><g class="eyes-closed" data-part="eyes-closed"><path d="M30.5 30q3 2.5 6 0 M43 30q3 2.5 6 0" fill="none" stroke="#28352f" stroke-width="1.7"/></g><path d="M30 25.5l6-.5 M43 25l5 .7" fill="none" stroke="#e6ddc8" stroke-width="2.3"/><path d="M40 30l-2 5h4" fill="#cf9970" stroke="none"/><path d="M28 34 L32 35 L34 40 L40 42 L46 40 L49 34 L52 34 L51 43 L46 49 L40 52 L34 49 L29 43Z" fill="#e8dfc9" /><path d="M31 35q5-3 9 1q5-4 9-1l-2 5l-7-1l-6 1Z" fill="#f5ecd6" /><path d="M38 42h4" fill="none" stroke="#746f61" stroke-width="1.5"/><path d="M25 23 L26 10 L31 7 L48 7 L54 12 L55 23Z" fill="#514664" /><path d="M29 9h18l4 5v7H29Z" fill="#79648f" stroke="none"/><path d="M24 21h32v6H24Z" fill="#d4b570" /><path d="M37 11h6v9h-6Z" fill="#ab94b9" stroke="none"/><g class="hat-follow" data-part="hat-follow"><path d="M53 13q7 1 8 7" fill="none" stroke="#d4b570" stroke-width="2"/><path d="M60 19h3v7h-3Z" fill="#d4b570" stroke="none"/></g></g><g class="arm-near" data-part="arm-near"><path d="M53 48q7-1 10 7l-3 9l-9-4Z" fill="#79648f" /><g class="forearm-near" data-part="forearm-near"><path d="M60 59l4 8l-7 7l-6-5Z" fill="#79648f" /><path d="M52 66l7-2l4 5l-7 5Z" fill="#d4b570" /><path d="M55 64q2-4 6-2l3 5l-4 4l-5-2Z" fill="#efc69a" /><g class="tool" data-part="tool"><path d="M61 65l8-18" fill="none" stroke="#755940" stroke-width="2.4"/><path d="M65 55q0-9 8-13q1 9-8 13Z" fill="#f2e4bb" /></g></g></g></g></g></g>
|
|
67
|
-
</g></svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 112" width="80" height="112" preserveAspectRatio="xMidYMid meet" role="img" focusable="false" aria-labelledby="character-title character-desc" data-role="chancellor" data-state="working">
|
|
2
|
+
<title id="character-title">Kingdom 宰相 · working</title>
|
|
3
|
+
<desc id="character-desc">高冠、银须、长袍和规划卷轴。展开卷轴,提笔指示,回看全局。克制的连续关节动作,支持减少动态效果。</desc>
|
|
4
|
+
<metadata>{"visualVersion":"kingdom-motion-r4-gui","role":"chancellor","state":"working","cycleSeconds":8,"viewBox":[0,0,80,112],"origin":"Owner character redesign authorized 2026-09-08"}</metadata>
|
|
5
|
+
<style><![CDATA[
|
|
6
|
+
/* SVG-wide coordinates make every joint pivot explicit and stable. */
|
|
7
|
+
svg{overflow:hidden;--phase:-.6s}
|
|
8
|
+
.weight,.breath,.head,.cape,.arm-far,.forearm-far,.arm-near,.forearm-near,.hat-follow{transform-box:view-box}
|
|
9
|
+
.weight{transform-origin:40px 99px;animation:weight 8s cubic-bezier(.42,0,.58,1) infinite}
|
|
10
|
+
.breath{transform-origin:40px 87px;animation:breathe 4s cubic-bezier(.37,0,.63,1) var(--phase) infinite}
|
|
11
|
+
.head{transform-origin:40px 44px;animation:idle-look 8s cubic-bezier(.4,0,.4,1) infinite}
|
|
12
|
+
.cape{transform-origin:40px 48px;animation:cloth 8s cubic-bezier(.4,0,.5,1) infinite}
|
|
13
|
+
.arm-far{transform-origin:27px 51px}.forearm-far{transform-origin:22px 64px}
|
|
14
|
+
.arm-near{transform-origin:54px 51px}.forearm-near{transform-origin:58px 63px}
|
|
15
|
+
.hat-follow{transform-origin:49px 18px;animation:hat-settle 8s ease-in-out infinite}
|
|
16
|
+
.eyes-open{transform-box:fill-box;transform-origin:center;animation:blink 8s linear var(--phase) infinite}
|
|
17
|
+
.eyes-closed{display:none}
|
|
18
|
+
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .arm-near{animation:idle-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
19
|
+
svg:is([data-state="idle"],[data-state="ready"],[data-state="available"]) .forearm-near{animation:idle-hand 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
20
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .weight{animation-name:work-weight}
|
|
21
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .head{animation-name:work-look}
|
|
22
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-far{animation:steady-page 8s ease-in-out infinite}
|
|
23
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .arm-near{animation:chancellor-shoulder 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
24
|
+
svg:is([data-state="working"],[data-state="running"],[data-state="executing"],[data-state="reviewing"]) .forearm-near{animation:chancellor-gesture 8s cubic-bezier(.42,0,.24,1) infinite}
|
|
25
|
+
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .head{transform:rotate(-5deg);animation:consider 8s ease-in-out infinite}
|
|
26
|
+
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .forearm-near{transform:rotate(-18deg);animation:thinking-hand 8s ease-in-out infinite}
|
|
27
|
+
svg:is([data-state="thinking"],[data-state="confused"],[data-state="planning"],[data-state="waiting-input"]) .arm-near{transform:rotate(-6deg);animation:thinking-shoulder 8s ease-in-out infinite}
|
|
28
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .head{transform:rotate(9deg) translateY(1px);animation:rest-head 8s ease-in-out infinite}
|
|
29
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-near{transform:rotate(9deg)}
|
|
30
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .arm-far{transform:rotate(-5deg)}
|
|
31
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .forearm-near{transform:rotate(8deg)}
|
|
32
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-open{display:none}
|
|
33
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .eyes-closed{display:inline}
|
|
34
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .weight{animation:none;transform:rotate(.4deg)}
|
|
35
|
+
svg:is([data-state="sleeping"],[data-state="paused"],[data-state="resting"]) .breath{animation-duration:4s}
|
|
36
|
+
svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .figure,svg:is([data-state="offline"],[data-state="stopped"],[data-state="absent"]) .ground-shadow{display:none}
|
|
37
|
+
@keyframes breathe{0%,100%{transform:scale(1,1)}42%{transform:scale(1.01,1.028)}68%{transform:scale(1.005,1.013)}}
|
|
38
|
+
@keyframes weight{0%,100%{transform:rotate(0deg)}20%,35%{transform:rotate(-6deg)}64%,78%{transform:rotate(5deg)}}
|
|
39
|
+
@keyframes work-weight{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(3deg)}28%,39%{transform:rotate(-8deg)}51%{transform:rotate(-3deg)}63%,72%{transform:rotate(4deg)}83%,91%{transform:rotate(-5deg)}}
|
|
40
|
+
@keyframes cloth{0%,100%{transform:rotate(0deg)}16%{transform:rotate(-4deg)}33%,43%{transform:rotate(9deg)}53%{transform:rotate(3deg)}71%,83%{transform:rotate(-7deg)}93%{transform:rotate(3deg)}}
|
|
41
|
+
@keyframes hat-settle{0%,100%{transform:rotate(0deg)}29%{transform:rotate(-12deg)}43%{transform:rotate(5deg)}57%,79%{transform:rotate(0deg)}88%{transform:rotate(-6deg)}}
|
|
42
|
+
@keyframes idle-look{0%,10%,100%{transform:rotate(0deg) translateY(0)}23%,37%{transform:rotate(-16deg) translateY(3px)}49%,66%{transform:rotate(0deg) translateY(0)}80%,90%{transform:rotate(12deg) translateY(2px)}}
|
|
43
|
+
@keyframes idle-shoulder{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(-28deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(12deg)}}
|
|
44
|
+
@keyframes idle-hand{0%,12%,100%{transform:rotate(0deg)}25%,37%{transform:rotate(14deg)}49%,68%{transform:rotate(0deg)}80%,89%{transform:rotate(-18deg)}}
|
|
45
|
+
@keyframes blink{0%,27%,30%,72%,75%,100%{transform:scaleY(1)}28.5%,73.5%{transform:scaleY(.12)}}
|
|
46
|
+
@keyframes work-look{0%,8%,100%{transform:rotate(0deg) translateY(0)}27%,40%{transform:rotate(-20deg) translateY(5px)}54%,68%{transform:rotate(6deg) translateY(1px)}82%,91%{transform:rotate(-13deg) translateY(3px)}}
|
|
47
|
+
@keyframes steady-page{0%,100%{transform:rotate(0deg)}16%{transform:rotate(6deg)}28%,43%{transform:rotate(-8deg)}56%,73%{transform:rotate(0deg)}83%,91%{transform:rotate(-4deg)}}
|
|
48
|
+
@keyframes chancellor-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(10deg)}28%,38%{transform:rotate(-58deg)}48%{transform:rotate(-38deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(-34deg)}}
|
|
49
|
+
@keyframes chancellor-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-12deg)}28%,38%{transform:rotate(28deg)}48%{transform:rotate(18deg)}60%,71%{transform:rotate(0deg)}83%,90%{transform:rotate(14deg)}}
|
|
50
|
+
@keyframes supervisor-shoulder{0%,8%,100%{transform:rotate(0deg)}16%{transform:rotate(-12deg)}27%,41%{transform:rotate(22deg)}54%,67%{transform:rotate(-30deg)}82%,91%{transform:rotate(16deg)}}
|
|
51
|
+
@keyframes supervisor-gesture{0%,8%,100%{transform:rotate(0deg)}17%{transform:rotate(15deg)}26%{transform:rotate(-32deg)}32%{transform:rotate(8deg)}40%{transform:rotate(-26deg)}54%,67%{transform:rotate(34deg)}81%{transform:rotate(-24deg)}90%{transform:rotate(-4deg)}}
|
|
52
|
+
@keyframes knight-shoulder{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(12deg)}28%,38%{transform:rotate(-70deg)}47%{transform:rotate(-44deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(-42deg)}}
|
|
53
|
+
@keyframes knight-gesture{0%,7%,100%{transform:rotate(0deg)}14%{transform:rotate(-14deg)}28%,38%{transform:rotate(36deg)}47%{transform:rotate(18deg)}59%,69%{transform:rotate(0deg)}82%,90%{transform:rotate(22deg)}}
|
|
54
|
+
@keyframes consider{0%,100%{transform:rotate(-5deg) translateY(0)}20%,38%{transform:rotate(-23deg) translateY(7px)}58%,77%{transform:rotate(10deg) translateY(2px)}}
|
|
55
|
+
@keyframes thinking-shoulder{0%,100%{transform:rotate(-6deg)}22%,40%{transform:rotate(-32deg)}60%,78%{transform:rotate(8deg)}}
|
|
56
|
+
@keyframes thinking-hand{0%,100%{transform:rotate(-18deg)}22%,40%{transform:rotate(-40deg)}60%,78%{transform:rotate(10deg)}}
|
|
57
|
+
@keyframes rest-head{0%,100%{transform:rotate(9deg) translateY(1px)}40%,49%{transform:rotate(23deg) translateY(5px)}65%,77%{transform:rotate(5deg) translateY(.5px)}}
|
|
58
|
+
/* The console supplies page-clock phase to preserve motion across node reconstruction. */
|
|
59
|
+
.weight,.head,.cape,.hat-follow,.arm-far,.arm-near,.forearm-near{animation-delay:var(--kingdom-motion-offset,0s)}
|
|
60
|
+
.breath,.eyes-open{animation-delay:calc(var(--kingdom-motion-offset,0s) + var(--phase))}
|
|
61
|
+
/* Keep the state-specific resting pose. No scripts, SMIL, filters or external assets. */
|
|
62
|
+
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
|
|
63
|
+
]]></style>
|
|
64
|
+
<g stroke="#28352f" stroke-width="2.1" stroke-linejoin="round" stroke-linecap="round">
|
|
65
|
+
<ellipse class="ground-shadow" cx="40" cy="104" rx="23" ry="3" fill="#07140e" opacity=".2" stroke="none"/>
|
|
66
|
+
<g class="figure" data-part="figure"><g class="feet" data-part="feet"><path d="M27 91h12v12H23v-6l4-2Z" fill="#655446" /><path d="M43 91h12l2 7v5H41v-8Z" fill="#655446" /><path d="M24 100h14 M43 100h13" fill="none" stroke="#a28b65" stroke-width="2"/></g><g class="weight" data-part="weight"><g class="cape" data-part="cape"><path d="M24 47Q39 43 56 47L64 93L52 98L40 94L23 99L17 92Z" fill="#514664" /><path d="M22 52l-3 31l5 7l5-42Z" fill="#ab94b9" stroke="none" opacity=".45"/></g><g class="breath" data-part="breath"><g class="arm-far" data-part="arm-far"><path d="M27 49Q21 47 18 56L18 65l9 1l5-9Z" fill="#79648f" /><path d="M18 61h10v6H18Z" fill="#ab94b9" /><g class="forearm-far" data-part="forearm-far"><path d="M10 59L29 60L31 80L12 79Z" fill="#f2e4bb" /><path d="M9 58h6v6H9Z" fill="#d4b570" /><path d="M11 76h6v7h-6Z" fill="#d4b570" /><path d="M16 65l9 1 M17 70l8 1 M18 75h6" fill="none" stroke="#92774b" stroke-width="1.8"/><path d="M16 65q-4 2-2 6l7 1l1-5Z" fill="#efc69a" /></g></g><g class="torso" data-part="torso"><path d="M27 47L39 44L52 47L55 71L59 95H22L26 71Z" fill="#79648f" /><path d="M31 48l8 7l8-8l-2 45H34Z" fill="#514664" stroke="none"/><path d="M29 48l3 1l3 44h-4Z" fill="#d4b570" stroke="none"/><path d="M47 49l3-1l-2 45h-4Z" fill="#d4b570" stroke="none"/><path d="M23 91h35v4H23Z" fill="#d4b570" /><path d="M27 70h26v6H27Z" fill="#635440" /><path d="M37 69h9v8h-9Z" fill="#d4b570" /></g><g class="head" data-part="head"><path d="M27 24 Q27 16 40 16 Q53 16 53 25 L52 35 Q50 44 40 45 Q30 44 28 35Z" fill="#efc69a" /><path d="M48 25 L52 24 L51 36 Q48 42 41 43 L40 39 Q47 36 48 25Z" fill="#cf9970" stroke="none"/><path d="M26 28 Q21 26 24 33 L28 34 M53 28 Q58 26 56 33 L52 34" fill="#efc69a" /><g class="eyes-open" data-part="eyes-open"><path d="M32 29v2 M45 29v2" fill="none" stroke="#28352f" stroke-width="2.6"/></g><g class="eyes-closed" data-part="eyes-closed"><path d="M30.5 30q3 2.5 6 0 M43 30q3 2.5 6 0" fill="none" stroke="#28352f" stroke-width="1.7"/></g><path d="M30 25.5l6-.5 M43 25l5 .7" fill="none" stroke="#e6ddc8" stroke-width="2.3"/><path d="M40 30l-2 5h4" fill="#cf9970" stroke="none"/><path d="M28 34 L32 35 L34 40 L40 42 L46 40 L49 34 L52 34 L51 43 L46 49 L40 52 L34 49 L29 43Z" fill="#e8dfc9" /><path d="M31 35q5-3 9 1q5-4 9-1l-2 5l-7-1l-6 1Z" fill="#f5ecd6" /><path d="M38 42h4" fill="none" stroke="#746f61" stroke-width="1.5"/><path d="M25 23 L26 10 L31 7 L48 7 L54 12 L55 23Z" fill="#514664" /><path d="M29 9h18l4 5v7H29Z" fill="#79648f" stroke="none"/><path d="M24 21h32v6H24Z" fill="#d4b570" /><path d="M37 11h6v9h-6Z" fill="#ab94b9" stroke="none"/><g class="hat-follow" data-part="hat-follow"><path d="M53 13q7 1 8 7" fill="none" stroke="#d4b570" stroke-width="2"/><path d="M60 19h3v7h-3Z" fill="#d4b570" stroke="none"/></g></g><g class="arm-near" data-part="arm-near"><path d="M53 48q7-1 10 7l-3 9l-9-4Z" fill="#79648f" /><g class="forearm-near" data-part="forearm-near"><path d="M60 59l4 8l-7 7l-6-5Z" fill="#79648f" /><path d="M52 66l7-2l4 5l-7 5Z" fill="#d4b570" /><path d="M55 64q2-4 6-2l3 5l-4 4l-5-2Z" fill="#efc69a" /><g class="tool" data-part="tool"><path d="M61 65l8-18" fill="none" stroke="#755940" stroke-width="2.4"/><path d="M65 55q0-9 8-13q1 9-8 13Z" fill="#f2e4bb" /></g></g></g></g></g></g>
|
|
67
|
+
</g></svg>
|