@orangecheck/design 0.28.2 → 0.28.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +7 -7
- package/dist/index.mjs.map +1 -1
- package/dist/styles/sigil.css +58 -34
- package/dist/tokens.js +7 -7
- package/dist/tokens.js.map +1 -1
- package/dist/tokens.mjs +7 -7
- package/dist/tokens.mjs.map +1 -1
- package/package.json +1 -1
package/dist/styles/sigil.css
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* oc-sigil — the brand mark as a
|
|
2
|
+
* oc-sigil — the brand mark as a translucent 3D watermark (aurora depth R3).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* (
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* prefers-reduced-motion.
|
|
4
|
+
* A large, see-through extruded relief of the verb's mark, sitting behind the
|
|
5
|
+
* hero and bleeding off a corner. Many thin <use> layers under perspective +
|
|
6
|
+
* translateZ give real depth (a lit front face, shadowed walls, a back that
|
|
7
|
+
* dissolves into --background); the whole object is composited at a low
|
|
8
|
+
* `--oc-sigil-opacity` so the aurora reads through it — present, dimensional,
|
|
9
|
+
* but muted. The drift carries `.oc-ambient` (family oc_motion pause) and
|
|
10
|
+
* freezes under prefers-reduced-motion.
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Responsive by default: size is a clamp() so it scales with the viewport, and
|
|
13
|
+
* it stays visible (smaller, quieter) on phones. Position + size are tunable
|
|
14
|
+
* per-site via --oc-sigil-size / --oc-sigil-opacity / the corner classes.
|
|
16
15
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* skins show the wireframe stack instead.
|
|
16
|
+
* PRESERVE-3D FOOTGUN: opacity/mask/filter/overflow live on the OUTER wrapper
|
|
17
|
+
* ONLY — never on .oc-sigil__drift / .oc-sigil__par, or the 3D stack flattens.
|
|
20
18
|
*/
|
|
21
19
|
|
|
22
20
|
.oc-sigil {
|
|
@@ -24,28 +22,40 @@
|
|
|
24
22
|
pointer-events: none;
|
|
25
23
|
contain: layout paint;
|
|
26
24
|
perspective: 1100px;
|
|
27
|
-
/*
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
25
|
+
/* responsive footprint — scales with the smaller viewport axis, clamped */
|
|
26
|
+
width: var(--oc-sigil-size, clamp(240px, 52vmin, 600px));
|
|
27
|
+
height: var(--oc-sigil-size, clamp(240px, 52vmin, 600px));
|
|
28
|
+
/* translucent: the whole relief composites at this alpha so the aurora and
|
|
29
|
+
page read through it (a watermark, not an opaque object). Light mode
|
|
30
|
+
rides higher — a mid-tone terracotta over a near-white page needs more
|
|
31
|
+
presence to read than the same mark over a dark page. */
|
|
32
|
+
opacity: var(--oc-sigil-opacity, 0.58);
|
|
33
|
+
/* soft edge fade so the mark dissolves into the field rather than ending in
|
|
34
|
+
a hard box (on the wrapper, which is safe for preserve-3d) */
|
|
35
|
+
-webkit-mask-image: radial-gradient(125% 125% at 55% 45%, #000 42%, transparent 90%);
|
|
36
|
+
mask-image: radial-gradient(125% 125% at 55% 45%, #000 42%, transparent 90%);
|
|
37
|
+
}
|
|
38
|
+
:root.dark .oc-sigil {
|
|
39
|
+
opacity: var(--oc-sigil-opacity, 0.52);
|
|
31
40
|
}
|
|
32
41
|
|
|
33
|
-
/* corner anchors — the bleed crops against the hero's overflow-hidden
|
|
42
|
+
/* corner anchors — the bleed crops against the hero's overflow-hidden. Offsets
|
|
43
|
+
are a share of the mark's own size so the crop is consistent at every width. */
|
|
34
44
|
.oc-sigil--bottom-left {
|
|
35
|
-
left: -
|
|
36
|
-
bottom: -
|
|
45
|
+
left: -14%;
|
|
46
|
+
bottom: -18%;
|
|
37
47
|
}
|
|
38
48
|
.oc-sigil--bottom-right {
|
|
39
|
-
right: -
|
|
40
|
-
bottom: -
|
|
49
|
+
right: -14%;
|
|
50
|
+
bottom: -18%;
|
|
41
51
|
}
|
|
42
52
|
.oc-sigil--top-left {
|
|
43
|
-
left: -
|
|
44
|
-
top: -
|
|
53
|
+
left: -14%;
|
|
54
|
+
top: -16%;
|
|
45
55
|
}
|
|
46
56
|
.oc-sigil--top-right {
|
|
47
|
-
right: -
|
|
48
|
-
top: -
|
|
57
|
+
right: -14%;
|
|
58
|
+
top: -16%;
|
|
49
59
|
}
|
|
50
60
|
|
|
51
61
|
.oc-sigil__drift {
|
|
@@ -65,17 +75,17 @@
|
|
|
65
75
|
@keyframes oc-sigil-drift {
|
|
66
76
|
0%,
|
|
67
77
|
100% {
|
|
68
|
-
transform: rotateX(
|
|
78
|
+
transform: rotateX(19deg) rotateY(calc(-24deg + var(--oc-sigil-seed, 0deg)));
|
|
69
79
|
}
|
|
70
80
|
50% {
|
|
71
|
-
transform: rotateX(
|
|
81
|
+
transform: rotateX(25deg) rotateY(calc(-14deg + var(--oc-sigil-seed, 0deg)));
|
|
72
82
|
}
|
|
73
83
|
}
|
|
74
84
|
|
|
75
85
|
/* Layers are absolutely stacked; their translateZ + color ramp (the 3D relief)
|
|
76
86
|
are computed per-layer in the component so depth is tunable in one place. The
|
|
77
|
-
mark is always the OUTLINE form (the tile drops away), extruded into a
|
|
78
|
-
|
|
87
|
+
mark is always the OUTLINE form (the tile drops away), extruded into a slab
|
|
88
|
+
that recolors per skin via currentColor. */
|
|
79
89
|
.oc-sigil__layer {
|
|
80
90
|
position: absolute;
|
|
81
91
|
inset: 0;
|
|
@@ -84,10 +94,24 @@
|
|
|
84
94
|
backface-visibility: hidden;
|
|
85
95
|
}
|
|
86
96
|
|
|
87
|
-
/*
|
|
97
|
+
/* Phones: single-column heroes stack tall, so a bottom anchor buries the mark
|
|
98
|
+
below the fold. Re-anchor to the TOP-RIGHT corner (clear of a left-aligned
|
|
99
|
+
headline) so it lands in the first viewport, and keep it quiet. This wins on
|
|
100
|
+
specificity + source order over the desktop corner classes above. */
|
|
88
101
|
@media (max-width: 640px) {
|
|
89
102
|
.oc-sigil {
|
|
90
|
-
|
|
103
|
+
width: var(--oc-sigil-size-sm, clamp(170px, 56vw, 300px));
|
|
104
|
+
height: var(--oc-sigil-size-sm, clamp(170px, 56vw, 300px));
|
|
105
|
+
opacity: var(--oc-sigil-opacity-sm, 0.4);
|
|
106
|
+
}
|
|
107
|
+
:root.dark .oc-sigil {
|
|
108
|
+
opacity: var(--oc-sigil-opacity-sm, 0.42);
|
|
109
|
+
}
|
|
110
|
+
.oc-sigil--bottom-left,
|
|
111
|
+
.oc-sigil--bottom-right,
|
|
112
|
+
.oc-sigil--top-left,
|
|
113
|
+
.oc-sigil--top-right {
|
|
114
|
+
inset: -5% -24% auto auto; /* top-right, cropped off the right edge */
|
|
91
115
|
}
|
|
92
116
|
}
|
|
93
117
|
|
package/dist/tokens.js
CHANGED
|
@@ -961,14 +961,14 @@ var LAYERS = Array.from({ length: DEPTH }, (_, i) => i);
|
|
|
961
961
|
function layerStyle(i) {
|
|
962
962
|
const t = i / (DEPTH - 1);
|
|
963
963
|
let color;
|
|
964
|
-
if (t < 0.
|
|
965
|
-
color = `color-mix(in oklab, var(--primary), white ${Math.round((0.
|
|
966
|
-
} else if (t < 0.
|
|
967
|
-
const k = (t - 0.
|
|
968
|
-
color = `color-mix(in oklab, var(--primary), black ${Math.round(k *
|
|
964
|
+
if (t < 0.14) {
|
|
965
|
+
color = `color-mix(in oklab, var(--primary), white ${Math.round((0.14 - t) * 26)}%)`;
|
|
966
|
+
} else if (t < 0.6) {
|
|
967
|
+
const k = (t - 0.14) / 0.46;
|
|
968
|
+
color = `color-mix(in oklab, var(--primary), black ${Math.round(k * 34)}%)`;
|
|
969
969
|
} else {
|
|
970
|
-
const k = (t - 0.
|
|
971
|
-
color = `color-mix(in oklab, color-mix(in oklab, var(--primary), black
|
|
970
|
+
const k = (t - 0.6) / 0.4;
|
|
971
|
+
color = `color-mix(in oklab, color-mix(in oklab, var(--primary), black 34%), var(--background) ${Math.round(k * 100)}%)`;
|
|
972
972
|
}
|
|
973
973
|
return {
|
|
974
974
|
transform: `translateZ(${-i * Z_STEP}px)`,
|