/* texturas de tramado (weave) y sombras — tokens del sistema original */
:root {
  --weave-bayer: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' shape-rendering='crispEdges'%3E%3Crect x='0' y='0' width='4' height='4' fill='%23000' fill-opacity='0.090'/%3E%3Crect x='4' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.006'/%3E%3Crect x='8' y='0' width='4' height='4' fill='%23000' fill-opacity='0.066'/%3E%3Crect x='12' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.030'/%3E%3Crect x='0' y='4' width='4' height='4' fill='%23fff' fill-opacity='0.054'/%3E%3Crect x='4' y='4' width='4' height='4' fill='%23000' fill-opacity='0.042'/%3E%3Crect x='8' y='4' width='4' height='4' fill='%23fff' fill-opacity='0.078'/%3E%3Crect x='12' y='4' width='4' height='4' fill='%23000' fill-opacity='0.018'/%3E%3Crect x='0' y='8' width='4' height='4' fill='%23000' fill-opacity='0.054'/%3E%3Crect x='4' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.042'/%3E%3Crect x='8' y='8' width='4' height='4' fill='%23000' fill-opacity='0.078'/%3E%3Crect x='12' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.018'/%3E%3Crect x='0' y='12' width='4' height='4' fill='%23fff' fill-opacity='0.090'/%3E%3Crect x='4' y='12' width='4' height='4' fill='%23000' fill-opacity='0.006'/%3E%3Crect x='8' y='12' width='4' height='4' fill='%23fff' fill-opacity='0.066'/%3E%3Crect x='12' y='12' width='4' height='4' fill='%23000' fill-opacity='0.030'/%3E%3C/svg%3E");
  --weave-bayer-soft: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' shape-rendering='crispEdges'%3E%3Crect x='0' y='0' width='4' height='4' fill='%23000' fill-opacity='0.0225'/%3E%3Crect x='4' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.0015'/%3E%3Crect x='8' y='0' width='4' height='4' fill='%23000' fill-opacity='0.0165'/%3E%3Crect x='12' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.0075'/%3E%3Crect x='0' y='4' width='4' height='4' fill='%23fff' fill-opacity='0.0135'/%3E%3Crect x='4' y='4' width='4' height='4' fill='%23000' fill-opacity='0.0105'/%3E%3Crect x='8' y='4' width='4' height='4' fill='%23fff' fill-opacity='0.0195'/%3E%3Crect x='12' y='4' width='4' height='4' fill='%23000' fill-opacity='0.0045'/%3E%3Crect x='0' y='8' width='4' height='4' fill='%23000' fill-opacity='0.0135'/%3E%3Crect x='4' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.0105'/%3E%3Crect x='8' y='8' width='4' height='4' fill='%23000' fill-opacity='0.0195'/%3E%3Crect x='12' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.0045'/%3E%3Crect x='0' y='12' width='4' height='4' fill='%23fff' fill-opacity='0.0225'/%3E%3Crect x='4' y='12' width='4' height='4' fill='%23000' fill-opacity='0.0015'/%3E%3Crect x='8' y='12' width='4' height='4' fill='%23fff' fill-opacity='0.0165'/%3E%3Crect x='12' y='12' width='4' height='4' fill='%23000' fill-opacity='0.0075'/%3E%3C/svg%3E");
  --weave-bayer-hard: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' shape-rendering='crispEdges'%3E%3Crect x='0' y='0' width='4' height='4' fill='%23000' fill-opacity='0.200'/%3E%3Crect x='4' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.013'/%3E%3Crect x='8' y='0' width='4' height='4' fill='%23000' fill-opacity='0.147'/%3E%3Crect x='12' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.067'/%3E%3Crect x='0' y='4' width='4' height='4' fill='%23fff' fill-opacity='0.120'/%3E%3Crect x='4' y='4' width='4' height='4' fill='%23000' fill-opacity='0.093'/%3E%3Crect x='8' y='4' width='4' height='4' fill='%23fff' fill-opacity='0.173'/%3E%3Crect x='12' y='4' width='4' height='4' fill='%23000' fill-opacity='0.040'/%3E%3Crect x='0' y='8' width='4' height='4' fill='%23000' fill-opacity='0.120'/%3E%3Crect x='4' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.093'/%3E%3Crect x='8' y='8' width='4' height='4' fill='%23000' fill-opacity='0.173'/%3E%3Crect x='12' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.040'/%3E%3Crect x='0' y='12' width='4' height='4' fill='%23fff' fill-opacity='0.200'/%3E%3Crect x='4' y='12' width='4' height='4' fill='%23000' fill-opacity='0.013'/%3E%3Crect x='8' y='12' width='4' height='4' fill='%23fff' fill-opacity='0.147'/%3E%3Crect x='12' y='12' width='4' height='4' fill='%23000' fill-opacity='0.067'/%3E%3C/svg%3E");
  --weave-grid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' shape-rendering='crispEdges'%3E%3Crect x='0' y='0' width='8' height='2' fill='%23fff' fill-opacity='0.036'/%3E%3Crect x='0' y='0' width='2' height='8' fill='%23fff' fill-opacity='0.026'/%3E%3Crect x='2' y='2' width='6' height='6' fill='%23000' fill-opacity='0.035'/%3E%3C/svg%3E");
  --weave-grid-wide: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' shape-rendering='crispEdges'%3E%3Crect x='0' y='0' width='8' height='2' fill='%23fff' fill-opacity='0.025'/%3E%3Crect x='0' y='0' width='2' height='8' fill='%23fff' fill-opacity='0.018'/%3E%3Crect x='2' y='2' width='6' height='6' fill='%23000' fill-opacity='0.025'/%3E%3C/svg%3E");
  --weave-alarm: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' shape-rendering='crispEdges'%3E%3Crect x='0' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.014'/%3E%3Crect x='4' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.081'/%3E%3Crect x='8' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.031'/%3E%3Crect x='12' y='0' width='4' height='4' fill='%23fff' fill-opacity='0.098'/%3E%3Crect x='0' y='4' width='4' height='4' fill='%23000' fill-opacity='0.039'/%3E%3Crect x='4' y='4' width='4' height='4' fill='%23000' fill-opacity='0.106'/%3E%3Crect x='8' y='4' width='4' height='4' fill='%23000' fill-opacity='0.022'/%3E%3Crect x='12' y='4' width='4' height='4' fill='%23000' fill-opacity='0.090'/%3E%3Crect x='0' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.039'/%3E%3Crect x='4' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.106'/%3E%3Crect x='8' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.022'/%3E%3Crect x='12' y='8' width='4' height='4' fill='%23fff' fill-opacity='0.090'/%3E%3Crect x='0' y='12' width='4' height='4' fill='%23000' fill-opacity='0.014'/%3E%3Crect x='4' y='12' width='4' height='4' fill='%23000' fill-opacity='0.081'/%3E%3Crect x='8' y='12' width='4' height='4' fill='%23000' fill-opacity='0.031'/%3E%3Crect x='12' y='12' width='4' height='4' fill='%23000' fill-opacity='0.098'/%3E%3C/svg%3E");
  --shade-inset: linear-gradient(#0000000f, #ffffff08);
  --shade-raised: linear-gradient(#ffffff0f, #00000008);
}
