Compare commits

...

4 Commits

Author SHA1 Message Date
c821e49519 prev-next chapitre. read more arrow 2026-02-19 16:41:43 +01:00
ca2a70f1b8 fixed bad menu links hover interaction 2026-02-18 20:39:27 +01:00
8f9cdb36d4 starting to have quite good animations with gsap 2026-02-18 12:21:24 +01:00
42c93da1cb placed cards formes 2026-02-13 22:11:29 +01:00
20 changed files with 1329 additions and 36 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<svg width="35" xmlns="http://www.w3.org/2000/svg" height="35" id="screenshot-52808c91-ee87-8059-8007-0f133be402ff" viewBox="0 0 35 35" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1"><g id="shape-52808c91-ee87-8059-8007-0f133be402ff" rx="0" ry="0"><g id="shape-52808c91-ee87-8059-8007-0f133be40302"><g class="fills" id="fills-52808c91-ee87-8059-8007-0f133be40302"><ellipse cx="17.5" cy="17.5" rx="17.5" ry="17.5" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)" style="fill: rgb(22, 66, 188); fill-opacity: 1;"/></g></g><g id="shape-52808c91-ee87-8059-8007-0f133be40303"><g class="fills" id="fills-52808c91-ee87-8059-8007-0f133be40303"><path d="M16.288759231567383,22.555646896362305L16.288759231567383,7.812972068786621L18.710634231567383,7.812972068786621L18.710634231567383,22.555646896362305L25.491884231567383,15.774886131286621L27.187196731567383,17.500471115112305L17.499696731567383,27.187971115112305L7.812196731567383,17.500471115112305L9.507509231567383,15.774886131286621L16.288759231567383,22.555646896362305Z" style="fill: rgb(255, 255, 255);"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg width="35" xmlns="http://www.w3.org/2000/svg" height="35" id="screenshot-22989948-29ed-804e-8007-28b5a726c6cf" viewBox="0 0 35 35" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1"><g id="shape-22989948-29ed-804e-8007-28b5a726c6cf" rx="0" ry="0"><g id="shape-22989948-29ed-804e-8007-28b5a726c6d4"><g class="fills" id="fills-22989948-29ed-804e-8007-28b5a726c6d4"><ellipse cx="17.5" cy="17.5" rx="17.5" ry="17.5" transform="matrix(1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)" style="fill: rgb(255, 255, 255); fill-opacity: 1;"/></g></g><g id="shape-22989948-29ed-804e-8007-28b5a726c6d5"><g class="fills" id="fills-22989948-29ed-804e-8007-28b5a726c6d5"><path d="M22.5556640625,18.7113037109375L7.81298828125,18.7113037109375L7.81298828125,16.2896728515625L22.5556640625,16.2896728515625L15.77490234375,9.5079345703125L17.50048828125,7.8131103515625L27.18798828125,17.5006103515625L17.50048828125,27.1878662109375L15.77490234375,25.4920654296875L22.5556640625,18.7113037109375Z" style="fill: rgb(22, 66, 188);"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-d8ccbdb6-0d67-80f5-8007-0f3b2221a5a2"
viewBox="-35.954 -35.954 300.00001 300.00001"
fill="none"
stroke="#1642bc"
version="1.1"
sodipodi:docname="cone.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3" />
<sodipodi:namedview
id="namedview3"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.8510925"
inkscape:cx="165.57789"
inkscape:cy="159.36535"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="shape-d8ccbdb6-0d67-80f5-8007-0f3b2221a5a2" />
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3b2221a5a2"
rx="0"
ry="0"
transform="matrix(1.5754364,0,0,1.5754364,-78.937998,-42.698956)"
style="stroke-width:0.634745">
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3b2221a5a3"
rx="0"
ry="0"
style="stroke-width:0.634745;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:3.80847001,3.80847001;stroke-dashoffset:0">
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3b2221a5a5"
style="stroke-width:0.634745;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:3.80847001,3.80847001;stroke-dashoffset:0">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f3b2221a5a5"
style="stroke-width:0.634745;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:3.80847001,3.80847001;stroke-dashoffset:0">
<path
d="M 52.102974,175.05916 67.465645,9.5801487 199.89497,109.98786"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.634745;stroke-opacity:1;stroke-dasharray:3.80847001,3.80847001;stroke-dashoffset:0"
id="path1" />
</g>
</g>
</g>
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3b2221a5a4"
style="stroke-width:0.634745;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:3.80847001,3.80847001;stroke-dashoffset:0">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f3b2221a5a4"
style="stroke-width:0.634745;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:3.80847001,3.80847001;stroke-dashoffset:0">
<ellipse
cx="127.12667"
cy="143.76231"
rx="80.485847"
ry="30.115566"
transform="rotate(-23.763291,127.12683,143.76245)"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.634745;stroke-opacity:1;stroke-dasharray:3.80847001,3.80847001;stroke-dashoffset:0"
id="ellipse2" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-d8ccbdb6-0d67-80f5-8007-0f4cd3df90e2"
viewBox="4465 2506 300 300"
fill="none"
stroke="#1642bc"
version="1.1"
sodipodi:docname="croissant.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="3.020485"
inkscape:cx="132.92567"
inkscape:cy="140.70588"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="shape-d8ccbdb6-0d67-80f5-8007-0f4cd3df90e2" />
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f4cd3df90e2">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f4cd3df90e2"
transform="matrix(1.2067065,0,0,1.2067065,-964.42483,-478.75662)"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.828702;stroke-dasharray:4.97222, 4.97222;stroke-dashoffset:0;stroke-opacity:1">
<path
d="m 4571.9961,2675.9731 c -59.0527,-34.041 -79.2334,-109.8383 -45.0381,-169.1591 0.626,-1.085 214.6172,122.271 213.9912,123.3564 -34.1953,59.3203 -109.9009,79.8442 -168.9531,45.8027"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.828702;stroke-dasharray:4.97222, 4.97222;stroke-dashoffset:0;stroke-opacity:1"
id="path1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-52808c91-ee87-8059-8007-0f133be4024b"
viewBox="-22.648 -22.505 300.00001 299.99999"
stroke="#1642bc"
fill="none"
version="1.1"
sodipodi:docname="cube.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs5" />
<sodipodi:namedview
id="namedview5"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.6304193"
inkscape:cx="178.10848"
inkscape:cy="163.8522"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="screenshot-52808c91-ee87-8059-8007-0f133be4024b" />
<g
class="fills"
id="fills-52808c91-ee87-8059-8007-0f133be402cf"
style="stroke-width:1.44726;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:8.68356014,8.68356014;stroke-dashoffset:0"
transform="matrix(0.6909633,0,0,0.6909633,2.3937652,1.3554119)">
<path
d="M -22.647984,336.22495 13.056607,72.397263 15.813931,72.770432 170.13913,-2.9843304 382.64841,25.774946 l -32.6919,241.569324 -106.36719,100.5943 -0.57373,4.2395"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.44726;stroke-opacity:1;stroke-dasharray:8.68356014,8.68356014;stroke-dashoffset:0"
id="path1" />
</g>
<g
id="strokes-5b0d4cb0-e4c2-80ff-8007-914867142e14-52808c91-ee87-8059-8007-0f133be402d0"
class="strokes"
style="stroke-width:1.44726;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:8.68356014,8.68356014;stroke-dashoffset:0"
transform="matrix(0.6909633,0,0,0.6909633,2.3937652,1.3554119)" />
<g
class="fills"
id="fills-52808c91-ee87-8059-8007-0f133be402d1"
style="stroke-width:1.44726;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:8.68356014,8.68356014;stroke-dashoffset:0"
transform="matrix(0.6909633,0,0,0.6909633,2.3937652,1.3554119)" />
<g
class="fills"
id="fills-52808c91-ee87-8059-8007-0f133be402d2"
style="stroke-width:1.44726;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:8.68356014,8.68356014;stroke-dashoffset:0"
transform="matrix(0.6909633,0,0,0.6909633,2.3937652,1.3554119)">
<path
d="M 276.56589,109.99174 380.49362,27.416059"
id="path4"
style="stroke-width:1.44726;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:8.68356014,8.68356014;stroke-dashoffset:0" />
</g>
<g
class="fills"
id="fills-52808c91-ee87-8059-8007-0f133be402d0"
style="stroke-width:1.44726;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:8.68356014,8.68356014;stroke-dashoffset:0"
transform="matrix(0.6909633,0,0,0.6909633,2.393765,1.355412)">
<rect
rx="0"
ry="0"
x="-6.0065403"
y="89.171249"
transform="rotate(7.7072189,128.03627,222.28682)"
width="268.08511"
height="266.23282"
id="rect1"
style="stroke-width:1.44726;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:8.68356014,8.68356014;stroke-dashoffset:0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-52808c91-ee87-8059-8007-0f133be4024a"
viewBox="42.252 -118.216 300 300"
fill="none"
stroke="#1642bc"
version="1.1"
sodipodi:docname="cyclindre.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs6" />
<sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.252564"
inkscape:cx="136.12079"
inkscape:cy="85.42478"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="screenshot-52808c91-ee87-8059-8007-0f133be4024a" />
<g
id="g7"
transform="matrix(0.63902778,0,0,0.63902778,59.969996,-43.573019)"
style="stroke-width:1.56488">
<g
id="shape-52808c91-ee87-8059-8007-0f133be402cb"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1">
<g
class="fills"
id="fills-52808c91-ee87-8059-8007-0f133be402cb"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1">
<rect
rx="0"
ry="0"
x="76.110184"
y="-1.2839383"
transform="rotate(104.99999,216.34401,120.71608)"
width="280.46768"
height="244"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1"
id="rect1" />
</g>
</g>
<g
id="shape-52808c91-ee87-8059-8007-0f133be402cc"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1">
<g
class="fills"
id="fills-52808c91-ee87-8059-8007-0f133be402cc"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1">
<ellipse
cx="251.77914"
cy="-11.529586"
rx="77.760002"
ry="122"
transform="rotate(104.99999,251.77914,-11.529559)"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1"
id="ellipse2" />
</g>
<g
id="strokes-f430270b-0cf6-8015-8007-91483f8a85da-52808c91-ee87-8059-8007-0f133be402cc"
class="strokes"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<g
id="shape-52808c91-ee87-8059-8007-0f133be402cd"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1">
<g
class="fills"
id="fills-52808c91-ee87-8059-8007-0f133be402cd"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1">
<ellipse
cx="180.22086"
cy="255.52959"
rx="77.760002"
ry="122"
transform="rotate(104.99999,180.22082,255.52959)"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.56488;stroke-dasharray:9.38926, 9.38926;stroke-dashoffset:0;stroke-opacity:1"
id="ellipse4" />
</g>
</g>
<g
id="shape-52808c91-ee87-8059-8007-0f133be402ce"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.56239;stroke-dasharray:9.37438, 9.37438;stroke-dashoffset:0;stroke-opacity:1"
transform="matrix(1.003179,0,0,1,-1.0227586,0)">
<g
class="fills"
id="fills-52808c91-ee87-8059-8007-0f133be402ce"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.56239;stroke-dasharray:9.37438, 9.37438;stroke-dashoffset:0;stroke-opacity:1">
<rect
rx="0"
ry="0"
x="145.76228"
y="87.349953"
transform="rotate(104.99999,192.94994,208.02388)"
width="94.375381"
height="241.34782"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.56239;stroke-dasharray:9.37438, 9.37438;stroke-dashoffset:0;stroke-opacity:1"
id="rect6" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-d8ccbdb6-0d67-80f5-8007-0f486309a42a"
viewBox="-31.943 -18.675 300.00001 299.99999"
fill="none"
stroke="#1642bc"
version="1.1"
sodipodi:docname="diamant.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs5" />
<sodipodi:namedview
id="namedview5"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.9820571"
inkscape:cx="130.2792"
inkscape:cy="168.67551"
inkscape:window-width="1920"
inkscape:window-height="1029"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="screenshot-d8ccbdb6-0d67-80f5-8007-0f486309a42a" />
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f486309a42b"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1"
transform="translate(16.43161,-17.772966)">
<path
d="M 194.34372,127.27941 63.900356,4.0450368 2.6562154,172.72058 133.09958,295.9552 194.34372,127.27941 v 0"
style="fill:#ffffff;fill-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;stroke-opacity:1"
id="path1" />
</g>
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f486309a42c"
transform="translate(16.43161,-17.772966)"
style="stroke-dasharray:6,6;stroke-dashoffset:0">
<path
d="m 64.296837,5.7176442 45.140133,123.5798458 24.4961,166.4602"
id="path2"
style="stroke-dasharray:6,6;stroke-dashoffset:0" />
</g>
<g
id="strokes-2cdddd35-cea9-805d-8007-9147f4af12eb-d8ccbdb6-0d67-80f5-8007-0f486309a42d"
class="strokes"
transform="translate(16.43161,-17.772966)">
<g
class="stroke-shape"
id="g5">
<path
d="M 4.6205711,173.57971 110.0317,131.80676 l 83.57764,-3.91163"
style="fill:none;stroke-width:1;stroke-dasharray:6, 6;stroke-dashoffset:0;stroke-opacity:1"
id="path5" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-d8ccbdb6-0d67-80f5-8007-0f3aa2a8cd91"
viewBox="1592 1007 300.00001 300.00001"
fill="none"
stroke="#1642bc"
version="1.1"
sodipodi:docname="infinite.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.3428454"
inkscape:cx="158.56786"
inkscape:cy="139.14704"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="shape-d8ccbdb6-0d67-80f5-8007-0f3aa2a8cd91" />
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3aa2a8cd91">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f3aa2a8cd91"
style="stroke-width:0.719491;stroke-dasharray:0.719491, 0.719491;stroke-dashoffset:0;stroke-opacity:1"
transform="matrix(1.3898722,0,0,1.3898722,-634.4535,-366.08988)">
<path
d="m 1610.8833,1134.1846 c -14.7687,-33.7845 12.4991,-72.9344 52.7172,-67.5467 13.2492,1.7752 26.0938,7.1809 39.9683,13.148 0.631,0.2712 0.8173,0.1404 1.061,-0.4517 8.9624,-21.7617 21.4516,-54.4624 56.2635,-57.9922 14.6506,-1.4856 27.2158,3.304 37.1204,14.2203 33.1484,36.5354 3.0478,90.3591 -44.8957,82.4958 -12.0919,-1.9834 -23.7912,-6.7624 -37.7799,-12.8025 -0.7468,-0.3225 -0.953,-0.1489 -1.2345,0.5352 -6.5562,15.9272 -13.5647,33.1916 -26.3437,44.4524 -26.0049,22.915 -62.4844,16.6899 -76.8766,-16.0586 z m 18.6932,-8.4304 c 9.0384,19.3076 27.9006,22.3068 42.5575,12.2231 12.6669,-8.7144 19.3014,-25.7669 25.036,-40.0869 0.1934,-0.4827 -0.052,-0.5459 -0.3702,-0.6673 -11.9401,-4.5493 -24.4117,-10.9721 -37.1127,-11.7033 -24.6164,-1.4173 -38.0843,20.9685 -30.1106,40.2344 z m 159.6901,-66.3953 c -8.4126,-18.7915 -27.6301,-23.0366 -43.2124,-11.9109 -12.2604,8.7539 -18.851,25.7205 -24.4139,39.6025 -0.193,0.4815 0,0.5901 0.3802,0.7344 16.6674,6.3484 38.1795,18.3396 56.0532,7.2254 11.9058,-7.4031 16.6516,-22.4085 11.1929,-35.6514 z"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.719491;stroke-dasharray:4.31694, 4.31694;stroke-dashoffset:0;stroke-opacity:1"
id="path1" />
</g>
<g
class="inner-stroke-shape"
id="g2"
transform="matrix(1.3898722,0,0,1.3898722,-634.4535,-366.08988)"
style="stroke-width:0.719491">
<defs
id="defs1">
<clipPath
id="inner-stroke-render-1-d8ccbdb6-0d67-80f5-8007-0f3aa2a8cd91-0">
<use
href="#stroke-shape-render-1-d8ccbdb6-0d67-80f5-8007-0f3aa2a8cd91-0"
id="use1" />
</clipPath>
<path
d="m 1610.8833,1134.1846 c -14.7687,-33.7845 12.4991,-72.9344 52.7172,-67.5467 13.2492,1.7752 26.0938,7.1809 39.9683,13.148 0.631,0.2712 0.8173,0.1404 1.061,-0.4517 8.9624,-21.7617 21.4516,-54.4624 56.2635,-57.9922 14.6506,-1.4856 27.2158,3.304 37.1204,14.2203 33.1484,36.5354 3.0478,90.3591 -44.8957,82.4958 -12.0919,-1.9834 -23.7912,-6.7624 -37.7799,-12.8025 -0.7468,-0.3225 -0.953,-0.1489 -1.2345,0.5352 -6.5562,15.9272 -13.5647,33.1916 -26.3437,44.4524 -26.0049,22.915 -62.4844,16.6899 -76.8766,-16.0586 z m 18.6932,-8.4304 c 9.0384,19.3076 27.9006,22.3068 42.5575,12.2231 12.6669,-8.7144 19.3014,-25.7669 25.036,-40.0869 0.1934,-0.4827 -0.052,-0.5459 -0.3702,-0.6673 -11.9401,-4.5493 -24.4117,-10.9721 -37.1127,-11.7033 -24.6164,-1.4173 -38.0843,20.9685 -30.1106,40.2344 z m 159.6901,-66.3953 c -8.4126,-18.7915 -27.6301,-23.0366 -43.2124,-11.9109 -12.2604,8.7539 -18.851,25.7205 -24.4139,39.6025 -0.193,0.4815 0,0.5901 0.3802,0.7344 16.6674,6.3484 38.1795,18.3396 56.0532,7.2254 11.9058,-7.4031 16.6516,-22.4085 11.1929,-35.6514 z"
id="stroke-shape-render-1-d8ccbdb6-0d67-80f5-8007-0f3aa2a8cd91-0"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" />
</defs>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-d8ccbdb6-0d67-80f5-8007-0f3b08c23460"
viewBox="1220 3305 299.99999 300"
fill="none"
stroke="#1642bc"
version="1.1"
sodipodi:docname="pi.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.4750174"
inkscape:cx="165.04935"
inkscape:cy="146.66564"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="shape-d8ccbdb6-0d67-80f5-8007-0f3b08c23460" />
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3b08c23460">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f3b08c23460"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.1176;stroke-dasharray:6.70558, 6.70558;stroke-dashoffset:0;stroke-opacity:1"
transform="matrix(0.8947766,0,0,0.8947766,127.10472,355.4647)">
<path
d="m 1397.8412,3563.5229 c -10.8759,-23.4223 -8.2047,-46.956 -2.8204,-63.1679 17.6236,-53.065 29.0848,-87.7161 36.1325,-109.0774 l -66.6282,-22.0554 -65.0722,196.5757 -37.6327,-12.5398 65.0476,-196.5015 -41.6288,-13.78 12.5759,-37.7422 225.2723,74.5703 -12.576,37.7422 -41.7519,-13.8208 -36.1391,109.2173 c 0,0 -6.5218,22.749 4.43,42.642 12.1043,21.9849 37.1178,29.5455 37.1178,29.5455 l -11.2166,34.9677 c 0,0 -7.316,-2.9477 -18.9255,-6.8037 -18.8872,-6.2729 -38.7871,-33.8413 -46.1847,-49.772"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.1176;stroke-dasharray:6.70558, 6.70558;stroke-dashoffset:0;stroke-opacity:1"
id="path1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-d8ccbdb6-0d67-80f5-8007-0f3a77a9213a"
viewBox="0 0 300 300"
fill="none"
stroke="#1642bc"
version="1.1"
sodipodi:docname="prct.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs6" />
<sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.103479"
inkscape:cx="148.56341"
inkscape:cy="141.19466"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="shape-d8ccbdb6-0d67-80f5-8007-0f3a77a9213a" />
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3a77a9213a"
rx="0"
ry="0"
transform="translate(6,10)">
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3a77a9213b"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f3a77a9213b"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0">
<path
d="M 58.431641,0 C 90.68103,0 116.8634,26.207275 116.8634,58.487305 c 0,32.279907 -26.18237,58.487185 -58.431759,58.487185 C 26.182373,116.97449 0,90.767212 0,58.487305 0,26.207275 26.182373,0 58.431641,0 m 0,29.243652 c -16.124634,0 -29.215821,13.103638 -29.215821,29.243653 0,16.139892 13.091187,29.24353 29.215821,29.24353 16.124755,0 29.215942,-13.103638 29.215942,-29.24353 0,-16.140015 -13.091187,-29.243653 -29.215942,-29.243653"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0"
id="path1" />
</g>
</g>
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3a77a9213c"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f3a77a9213c"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0">
<path
d="M 230.56836,162.02551 C 262.81763,162.02551 289,188.23279 289,220.5127 289,252.79272 262.81763,279 230.56836,279 c -32.24939,0 -58.43176,-26.20728 -58.43176,-58.4873 0,-32.27991 26.18237,-58.48719 58.43176,-58.48719 m 0,29.24366 c -16.12476,0 -29.21594,13.10363 -29.21594,29.24353 0,16.14001 13.09118,29.24365 29.21594,29.24365 16.12463,0 29.21582,-13.10364 29.21582,-29.24365 0,-16.1399 -13.09119,-29.24353 -29.21582,-29.24353"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0"
id="path2" />
</g>
</g>
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3a77a9213d"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f3a77a9213d"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0">
<rect
rx="0"
ry="0"
x="-23.747015"
y="114.23817"
transform="matrix(0.706771,-0.707443,0.706771,0.707443,-56.849936,138.40387)"
width="324.6871"
height="47.399578"
style="fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:5.99999882, 5.99999882;stroke-dashoffset:0"
id="rect4" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-86032aec-245b-8085-8006-fcc8db0f2a47"
viewBox="166 965.643 299.99999 300.00001"
fill="none"
stroke="#1642bc"
version="1.1"
sodipodi:docname="pyramide.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs2"><clipPath
id="inner-stroke-render-2-86032aec-245b-8085-8006-fcc8db0f2a47-0-0"><use
href="#stroke-shape-render-2-86032aec-245b-8085-8006-fcc8db0f2a47-0-2"
id="use1-6" /></clipPath><clipPath
id="clipPath2"><use
href="#stroke-shape-render-2-86032aec-245b-8085-8006-fcc8db0f2a47-0-2"
id="use2-0" /></clipPath><path
d="M 458.56934,965.64209 633.07031,1475.6133 283.56299,1409.3257 458.56934,965.64209"
id="stroke-shape-render-2-86032aec-245b-8085-8006-fcc8db0f2a47-0-2"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /><clipPath
id="inner-stroke-render-1-86032aec-245b-8085-8006-fcc8db0f2a46-0-7"><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="use1-5"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /></clipPath><clipPath
id="clipPath5"><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="use5"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /></clipPath><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="path5"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /><clipPath
id="inner-stroke-render-1-86032aec-245b-8085-8006-fcc8db0f2a47-0"><use
href="#stroke-shape-render-1-86032aec-245b-8085-8006-fcc8db0f2a47-0"
id="use1" /></clipPath><path
d="M 458.56934,965.64209 633.07031,1475.6133 283.56299,1409.3257 458.56934,965.64209"
id="stroke-shape-render-1-86032aec-245b-8085-8006-fcc8db0f2a47-0"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /><clipPath
id="clipPath4-7"><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="use4-0"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /></clipPath><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="path4-9"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /></defs><sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.1728846"
inkscape:cx="162.68696"
inkscape:cy="173.50208"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="screenshot-86032aec-245b-8085-8006-fcc8db0f2a47"
showgrid="false"><inkscape:grid
id="grid1"
units="px"
originx="0"
originy="0"
spacingx="0.99999998"
spacingy="1"
empcolor="#3f3fff"
empopacity="0.25098039"
color="#3f3fff"
opacity="0.1254902"
empspacing="5"
enabled="true"
visible="false" /></sodipodi:namedview><g
id="shape-86032aec-245b-8085-8006-fcc8db0f2a46-5"
transform="matrix(0.47105857,0,0,0.47105857,47.435811,544.35641)"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-opacity:1;stroke-dasharray:12.73726987,12.73726987;stroke-dashoffset:0"><g
class="fills"
id="fills-86032aec-245b-8085-8006-fcc8db0f2a46-6"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-opacity:1;stroke-dasharray:12.73726987,12.73726987;stroke-dashoffset:0" /><g
id="strokes-810b715b-abb2-8072-8007-9122d962ac84-86032aec-245b-8085-8006-fcc8db0f2a46-9"
class="strokes"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-opacity:1;stroke-dasharray:12.73726987,12.73726987;stroke-dashoffset:0"><g
class="inner-stroke-shape"
id="g2-1"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-opacity:1;stroke-dasharray:12.73726987,12.73726987;stroke-dashoffset:0"><defs
id="defs2-2"><clipPath
id="clipPath4"><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="use4"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /></clipPath><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="path4"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /></defs><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="use3-3"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-dasharray:12.73726987,12.73726987;stroke-opacity:1;stroke-dashoffset:0" /></g></g></g><g
id="shape-86032aec-245b-8085-8006-fcc8db0f2a46-5-6"
transform="matrix(0.47105857,0,0,0.47105857,47.435811,544.35641)"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-opacity:1;stroke-dasharray:12.73726987,12.73726987;stroke-dashoffset:0"><g
class="fills"
id="fills-86032aec-245b-8085-8006-fcc8db0f2a46-6-2"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-opacity:1;stroke-dasharray:12.73726987,12.73726987;stroke-dashoffset:0" /><g
id="strokes-810b715b-abb2-8072-8007-9122d962ac84-86032aec-245b-8085-8006-fcc8db0f2a46-9-9"
class="strokes"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-opacity:1;stroke-dasharray:12.73726987,12.73726987;stroke-dashoffset:0"><g
class="inner-stroke-shape"
id="g2-1-1"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-opacity:1;stroke-dasharray:12.73726987,12.73726987;stroke-dashoffset:0"><defs
id="defs2-2-2"><clipPath
id="clipPath6"><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="path6"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /></clipPath><path
d="m 457.20117,966.11035 174.5,509.97165 235.63086,-266.5097 -410.13086,-243.46195"
id="path7"
style="fill:none;stroke-width:2;stroke-dasharray:11, 11;stroke-opacity:1" /></defs><path
d="m 457.20117,966.11035 174.5,509.97165 -349.50945,-66.2877 175.00945,-443.68395"
id="use3-3-3"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-dasharray:12.73726987,12.73726987;stroke-opacity:1;stroke-dashoffset:0"
sodipodi:nodetypes="cccc" /></g></g></g></svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="300"
height="300"
id="screenshot-d8ccbdb6-0d67-80f5-8007-0f3b52c5e036"
viewBox="-62.985 -37.071 299.99999 300"
fill="none"
stroke="#1642bc"
version="1.1"
sodipodi:docname="supeg.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs4" />
<sodipodi:namedview
id="namedview4"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.0651063"
inkscape:cx="206.5269"
inkscape:cy="185.46261"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="shape-d8ccbdb6-0d67-80f5-8007-0f3b52c5e036" />
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3b52c5e036"
rx="0"
ry="0"
transform="matrix(0.73349108,0,0,0.73349108,-6.6202387,-66.156305)"
style="stroke-width:1.36334">
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3b52c5e037"
style="stroke-width:1.3633431;fill:#ffffff;fill-opacity:1;stroke-opacity:1;opacity:1;stroke-dasharray:8.18005871,8.18005871;stroke-dashoffset:0">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f3b52c5e037"
style="stroke-width:1.3633431;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:8.18005871,8.18005871;stroke-dashoffset:0">
<path
d="M 29.890766,312.68713 168.84407,144.37196 -46.326336,107.76918 -37.184612,53.382702 233.33333,99.400772 234.52187,99.363419 247.70168,135.4767 72.350784,347.88098 29.890766,312.68713"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.3633431;stroke-opacity:1;stroke-dasharray:8.18005871,8.18005871;stroke-dashoffset:0"
id="path1" />
</g>
</g>
<g
id="shape-d8ccbdb6-0d67-80f5-8007-0f3b52c5e038"
style="stroke-width:1.3633431;fill:#ffffff;fill-opacity:1;stroke-opacity:1;opacity:1;stroke-dasharray:8.18005871,8.18005871;stroke-dashoffset:0">
<g
class="fills"
id="fills-d8ccbdb6-0d67-80f5-8007-0f3b52c5e038"
style="stroke-width:1.3633431;fill:#ffffff;fill-opacity:1;stroke-opacity:1;stroke-dasharray:8.18005871,8.18005871;stroke-dashoffset:0">
<rect
rx="0"
ry="0"
x="55.272293"
y="281.75412"
transform="matrix(0.636637,-0.771164,-0.76991,-0.638152,308.28052,655.55371)"
width="275.43353"
height="55.149281"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.36334443;stroke-opacity:1;stroke-dasharray:8.18006669,8.18006669;stroke-dashoffset:0"
id="rect2" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -33,8 +33,23 @@ gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
const MathalloTheme = function () {
const _is_front = drupalSettings.path.isFront
console.log('drupalSettings', drupalSettings)
// liste forme file names
const formesclasses = [
'pyramide',
'prct',
'infinite',
'pi',
'supeg',
'cone',
'croissant',
'cube',
'diamant',
'cylindre'
]
let sizes = [];
// let _I18n
// ___ _ _
// |_ _|_ _ (_) |_
@@ -44,7 +59,8 @@ gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
console.log('MathalloTheme init()')
initBurgerMenu();
initPartieFrontBackCardSwitch();
initBgAnime()
initBgFormes();
initBgAnime();
// initVues()
}
@@ -77,18 +93,209 @@ gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
}
async function initBgFormes(){
const container = document.querySelector('main[role="main"] > .layout-content > .wrapper');
// console.log('container', container);
// listes all available sizes
// let min = 150;
// let increment = Math.round((350 / (formesclasses.length -1)));
// for (let i = 0; i < formesclasses.length; i++) {
// sizes.push( min + increment * i)
// }
// console.log('sizes', sizes);
let cards = document.querySelectorAll('article[role="home-presentation"], .field-card, .node-type-chapitre, .node-type-partie');
// console.log('cards', cards);
let used_n = [];
let oddeven=1;
for (const card of cards) {
// console.log('card', card);
// random forme
// avoid duplicated formes
let n = Math.round(Math.random() * (formesclasses.length -1));
while (used_n.includes(n)) {
n = Math.round(Math.random() * (formesclasses.length -1));
}
used_n.push(n);
// console.log('n',n, 'class', formesclasses[n]);
let forme = await createForme(card, n);
container.prepend(forme);
// Snap au centre de la fenêtre pour la card en utilisant le plugin Snap de GSAP
// ScrollTrigger.create({
// trigger: document.querySelector('.partie-principes-pratique'),
// start: "top 60%",
// end: "bottom 40%",
// snap: {
// snapTo: "top", // Snap au centre de la fenêtre
// duration: {min: 0.2, max: 0.5}, // Durée de l'animation de snap
// delay: 0, // Pas de délai
// ease: "power3.out" // Type d'easing pour l'animation
// }
// });
// Animation des cards au scroll
gsap.timeline({
scrollTrigger: {
trigger: card,
start: "top bottom",
end: "bottom top",
scrub: true,
ease: "power4.out",
snap: false,
// markers: true,
// onToggle: (self) => {
// console.log('card scroll toggled, self:', self)
// },
}
})
// cards opacity
.from(card.children, {
opacity: 0.4,
}, 0)
.to(card.children, {
opacity: 1,
}, 0.5)
.to(card.children, {
opacity: 0.4,
}, 0.7)
// cards mvmt
.from(card, {
translateX: `${200 * oddeven}px`,
translateY: `${100 * oddeven}px`
}, 0)
.to(card, {
translateX: "0",
translateY: "0"
}, 0.5);
// .to(card, {
// translateX: `${200 * oddeven}px`,
// }, 0.9);
// Animation des formes continue de rotation + skew pendant tout le scroll
gsap.to(forme.querySelector('svg'), {
scrollTrigger: {
trigger: forme,
start: "top bottom",
end: "bottom top",
scrub: true,
ease: "power4.out"
},
rotation: Math.random() > 0.5 ? 45 : -45,
skewX: Math.random() > 0.5 ? 10 : -10
});
// Animation de couleur des formes uniquement au centre de l'écran
gsap.timeline({
scrollTrigger: {
trigger: card,
start: "top center", // Commence quand le haut de l'élément atteint le centre
end: "bottom center", // Termine quand le bas de l'élément passe le centre
scrub: true,
markers: false // Désactivez les marqueurs en production
}
})
.to(forme.querySelector('svg'), {
stroke: "#f661e2", // Passage au rose
duration: 0.1
}, 0.3) // Au milieu de la timeline (centre de l'écran)
.to(forme.querySelector('svg'), {
stroke: "#1642bc", // Retour au bleu
duration: 0.1
}, 0.7); // Juste après le centre
// inverse oddeven
oddeven*=-1;
}
}
async function createForme(card, n){
let forme = document.createElement('div');
forme.classList.add('bg-forme');
// forme.classList.add(formesclasses[n]);
// inject svg from file
const response = await fetch(`/themes/custom/mathallo/assets/img/formes/${formesclasses[n]}.svg`)
const svgText = await response.text();
forme.innerHTML = svgText;
// get the svg ode
const svgNode = forme.querySelector('svg');
// random size
let wh = 200 + Math.random()*300;
// OR
// pic a size
// let wh = sizes.splice(Math.floor(Math.random() * sizes.length), 1)[0];
// record the original scale for stroke width rescalling
const init_wh = svgNode.getAttribute('width');
// set the new size
forme.style.width = forme.style.height = `${wh}px`;
svgNode.setAttribute('width', wh);
svgNode.setAttribute('height', wh);
// // keep stroke width to visualy 1px
// let scale = wh / init_wh;
// const paths = svgNode.querySelectorAll('path, line, rect, circle, ellipse, polygon, polyline');
// // console.log('paths', paths);
// paths.forEach(path => {
// const init_SW = parseFloat(path.getAttribute('stroke-width')) || 1;
// let new_SW = init_SW / scale;
// path.setAttribute('stroke-width', `${new_SW}px`);
// path.style.strokeWidth = `${new_SW}px`;
// });
// random position
// top
let top = card.offsetTop + card.clientHeight/2 - wh/2;
if (card.clientHeight < 300) {
top = Math.random() > 0.5
? card.offsetTop - wh/2 // on top
: card.offsetTop + card.clientHeight - wh/2; // on bottom
}
forme.style.top = `${top}px`;
let randoffset = 20 + Math.random() * 20;
// left right
if (card.classList.contains('field-principes-reflexion')) {
// left
forme.style.left = `${card.offsetLeft - wh + randoffset}px`;
} else if(card.classList.contains('field-en-pratique')) {
// right
forme.style.left = `${card.offsetLeft + card.clientWidth - randoffset}px`;
} else {
// random
forme.style.left = Math.random() > 0.5
? `${card.offsetLeft - wh + randoffset}px`
: `${card.offsetLeft + card.clientWidth - randoffset}px`;
}
return forme;
}
function initBgAnime(){
// gsap.to('body', {
// scrollTrigger: 'main[role="main"]', // start animation when ".box" enters the viewport
// backgroundPositionY: 10
// });
// ScrollSmoother.create({
// smooth: 1, // how long (in seconds) it takes to "catch up" to the native scroll position
// effects: true, // looks for data-speed and data-lag attributes on elements
// smoothTouch: 0.1, // much shorter smoothing time on touch devices (default is NO smoothing on touch devices)
// wrapper: 'main[role="main"]',
// content: 'main[role="main"]>.layout-content'
// });
gsap.to('body', {
scrollTrigger: 'main[role="main"]', // start animation when ".box" enters the viewport
backgroundPositionY: 10
});
ScrollSmoother.create({
smooth: 1, // how long (in seconds) it takes to "catch up" to the native scroll position
effects: true, // looks for data-speed and data-lag attributes on elements
smoothTouch: 0.1, // much shorter smoothing time on touch devices (default is NO smoothing on touch devices)
wrapper: 'main[role="main"]',
content: 'main[role="main"]>.layout-content'
});
}
// function initVues(){

View File

@@ -5,6 +5,7 @@
a, a:visited{
text-decoration: none;
color: inherit;
transition: color 0.15s ease-out;
}
body{
@@ -261,7 +262,109 @@ nav[role="breadcrumb"]{
// \_| |_/\__,_|_|_| |_|
main[role="main"]{
div.layout-content{
&>div.layout-content{
&>.wrapper{
position:relative;
padding-bottom: 100vh;
}
// next chapitre
nav.prev-chapitre,
nav.next-chapitre{
position:absolute;
top:-10em;
padding: 0.5em 1em;
@include menu-contenus;
.wrapper{
position: relative;
}
ul{
margin:0;
padding-left: 0.5em;
li{
list-style: none;
display: none;
}
}
// prev
&.prev-chapitre{
left:0;
a:after{
transform: rotate(180deg);
}
li:has(+ li.in-active-trail){
display: block;
}
}
// next
&.next-chapitre{
right:0;
li.in-active-trail + li{
display: block;
}
}
// common
label{
background-color: $bleu_site;
color: #fff;
padding: 0.5em 1em;
z-index: 2;
top:-3em;
}
a{
display: block;
padding:0.5em 1em;
background-color: #fff;
box-shadow: 0 0 10px rgba(0,0,0,0.25);
border: white 1px solid;
transition: border-color 0.5s;
&:hover{
border-color: $rose;
}
&:after{
content:"";
@include arrow-white();
position:absolute;
box-shadow: 0 0 10px rgba(0,0,0,0.25);
top:calc(100% + 0.5em);
left: calc(50% - 15px);
}
}
}
// more
ul.links{
margin:0;
padding:0;
position: absolute;
top:calc(100% - 15px);
left: calc(50% - 15px);
li{
list-style: none;
a{
@include arrow-blue;
}
}
}
// arrox
nav.arrow-more{
position: absolute;
top:calc(100% - 15px);
left: calc(50% - 15px);
a.arrow{
@include arrow-blue;
}
}
article{
@@ -297,8 +400,8 @@ main[role="main"]{
// Page Chapitres
section.parties{
display: flex;
gap: 2em;
// display: flex;
// gap: 2em;
padding:1em;
}
@@ -353,6 +456,10 @@ main[role="main"]{
}
}
}
}
}
div#partie-principes-pratique{
position: relative;
@@ -362,10 +469,16 @@ main[role="main"]{
@mixin front-card{
z-index: 2;
background-color: #fff;
&>*>*{
opacity: 1;
}
}
@mixin back-card{
z-index: 1;
background-color: #eee;
background-color: rgba(247,247,247,1);
&>*>*{
opacity: 0.6;
}
}
&.field-principes-reflexion{
@@ -373,7 +486,7 @@ main[role="main"]{
}
&.field-en-pratique{
margin-left: -50%;
margin-top: 7em;
transform: translateY(2em);
@include back-card();
}
&.field-principes-reflexion,
@@ -392,11 +505,11 @@ main[role="main"]{
// HOME
div.views-home-chapitres{
display: flex;
gap: 2em;
// display: flex;
// gap: 2em;
padding:1em;
>.views-row{
max-width: 700px;
// max-width: 700px;
article.node-type-chapitre{
h2{
@@ -406,6 +519,42 @@ main[role="main"]{
}
}
// FORMES
.bg-forme{
position: absolute;
// background-color: red;
width:300px; height:300px;
top:50%;
left:-300px;
z-index: -1;
background-position: center;
background-size: contain;
background-repeat: no-repeat;
// &.pyramide{ background-image: url('/themes/custom/mathallo/assets/img/formes/pyramide.svg'); }
// &.infinite{ background-image: url('/themes/custom/mathallo/assets/img/formes/infinite.svg'); }
// &.prct{ background-image: url('/themes/custom/mathallo/assets/img/formes/prct.svg'); }
// &.pi{ background-image: url('/themes/custom/mathallo/assets/img/formes/pi.svg'); }
// &.supeg{ background-image: url('/themes/custom/mathallo/assets/img/formes/supeg.svg'); }
// &.cone{ background-image: url('/themes/custom/mathallo/assets/img/formes/cone.svg'); }
// &.cube{ background-image: url('/themes/custom/mathallo/assets/img/formes/cube.svg'); }
// &.diamant{ background-image: url('/themes/custom/mathallo/assets/img/formes/diamant.svg'); }
// &.croissant{ background-image: url('/themes/custom/mathallo/assets/img/formes/croissant.svg'); }
// &.cylindre{ background-image: url('/themes/custom/mathallo/assets/img/formes/cylindre.svg'); }
svg{
// width: 100%;
// height: 100%;
path,line,rect,circle,ellipse,polygon,polyline{
vector-effect: non-scaling-stroke;
stroke-width: 1px!important;
}
}
}
}

View File

@@ -1,3 +1,3 @@
$bleu_site: #1642bc;
$bleu_typo: #0b1e52;
$rose: #f661e2
$rose: #f661e2;

View File

@@ -4,6 +4,9 @@
margin:0;
list-style: none;
}
.wrapper{
position: relative;
}
label{
color:$bleu_site;
font-weight: 600;
@@ -11,6 +14,8 @@
font-size: 0.756em;
padding:0 0 0.25em 0;
transition: color 0.25s ease-out;
position: absolute;
z-index: 0;
&:has(+ a:hover){
color: $rose;
}
@@ -18,6 +23,10 @@
a{
font-size: 1.13em;
transition: color 0.15s ease-out;
display: block;
position: relative;
z-index: 1;
padding-top: 1em;
&:hover{
color: $bleu_site;
}
@@ -31,6 +40,30 @@
padding:2em;
box-shadow: 0 0 10px rgba(0,0,0,0.25);
max-width: 50em;
margin: 5em auto 0;
box-sizing: content-box;
margin: 30vh auto 0;
&[role="home-presentation"]{
margin-top: 10vh;
}
}
@mixin arrow{
display: block;
width:30px; height:30px;
border-radius: 15px;
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
text-indent: 100px;
overflow: hidden;
}
@mixin arrow-white{
@include arrow();
background-image: url('/themes/custom/mathallo/assets/img/arrow-white.svg');
}
@mixin arrow-blue{
@include arrow();
background-image: url('/themes/custom/mathallo/assets/img/arrow-blue.svg');
}

View File

@@ -79,7 +79,16 @@
{{ content|without('field_chapitre_num','field_parties') }}
</div>
{% if view_mode == "home" %}
<nav class="arrow-more">
<a class="arrow" href="{{ url }}">Ouvrir</a>
</nav>
{% endif %}
</article>
{% if content.field_parties %}
<section class="parties">
{{ content.field_parties }}
<section>
<section>
{% endif %}

View File

@@ -0,0 +1,89 @@
{#
/**
* @file
* Default theme implementation to display a node.
*
* Available variables:
* - node: The node entity with limited access to object properties and methods.
* Only method names starting with "get", "has", or "is" and a few common
* methods such as "id", "label", and "bundle" are available. For example:
* - node.getCreatedTime() will return the node creation timestamp.
* - node.hasField('field_example') returns TRUE if the node bundle includes
* field_example. (This does not indicate the presence of a value in this
* field.)
* - node.isPublished() will return whether the node is published or not.
* Calling other methods, such as node.delete(), will result in an exception.
* See \Drupal\node\Entity\Node for a full list of public properties and
* methods for the node object.
* - label: (optional) The title of the node.
* - content: All node items. Use {{ content }} to print them all,
* or print a subset such as {{ content.field_example }}. Use
* {{ content|without('field_example') }} to temporarily suppress the printing
* of a given child element.
* - author_picture: The node author user entity, rendered using the "compact"
* view mode.
* - metadata: Metadata for this node.
* - date: (optional) Themed creation date field.
* - author_name: (optional) Themed author name field.
* - url: Direct URL of the current node.
* - display_submitted: Whether submission information should be displayed.
* - attributes: HTML attributes for the containing element.
* The attributes.class element may contain one or more of the following
* classes:
* - node: The current template type (also known as a "theming hook").
* - node--type-[type]: The current node type. For example, if the node is an
* "Article" it would result in "node--type-article". Note that the machine
* name will often be in a short form of the human readable label.
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
* teaser would result in: "node--view-mode-teaser", and
* full: "node--view-mode-full".
* The following are controlled through the node publishing options.
* - node--promoted: Appears on nodes promoted to the front page.
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
* teaser listings.
* - node--unpublished: Appears on unpublished nodes visible only to site
* admins.
* - title_attributes: Same as attributes, except applied to the main title
* tag that appears in the template.
* - content_attributes: Same as attributes, except applied to the main
* content tag that appears in the template.
* - author_attributes: Same as attributes, except applied to the author of
* the node tag that appears in the template.
* - title_prefix: Additional output populated by modules, intended to be
* displayed in front of the main title tag that appears in the template.
* - title_suffix: Additional output populated by modules, intended to be
* displayed after the main title tag that appears in the template.
* - view_mode: View mode; for example, "teaser" or "full".
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
*
* @see template_preprocess_node()
*
* @ingroup themeable
*/
#}
<article{{ attributes }} role="home-presentation">
{{ title_prefix }}
{% if label and not page %}
<h2{{ title_attributes }}>
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
</h2>
{% endif %}
{{ title_suffix }}
{% if display_submitted %}
<footer>
{{ author_picture }}
<div{{ author_attributes }}>
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
{{ metadata }}
</div>
</footer>
{% endif %}
<div{{ content_attributes }}>
{{ content }}
</div>
</article>