@mkbabb/glass-ui 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/CardAction-CW7a0m8M.js +253 -0
- package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-DvZNQ_HF.js} +4 -4
- package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
- package/dist/{ContextMenuContent-ON3x7cuk.js → ContextMenuContent-uWnVxDab.js} +1 -1
- package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
- package/dist/{DataTable-C464Zbqd.js → DataTable-CuKwF7wr.js} +4 -4
- package/dist/{DialogContent-DDE6pQBU.js → DialogContent-DcKK8k9i.js} +5 -5
- package/dist/{DialogFooter-8eZbdmPc.js → DialogFooter-BZNX5aVr.js} +3 -3
- package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DI6hQhT9.js} +1 -1
- package/dist/{HoverCardContent-DkMaQzH5.js → HoverCardContent-b2uaAMRR.js} +1 -1
- package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-CbqbNwgU.js} +2 -2
- package/dist/{IconChip-BDw1j5mu.js → IconChip-BTD-nay5.js} +3 -2
- package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-Bl8gFZ8d.js} +1 -1
- package/dist/{Input-DVG_J0ne.js → Input-h9v5LeXf.js} +1 -1
- package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
- package/dist/Notification-VUwexFUf.js +43 -0
- package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
- package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
- package/dist/{Progress-hAT4gqGH.js → Progress-DctG61iZ.js} +4 -4
- package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-yOpBzFYq.js} +2 -2
- package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-CrA8F0iV.js} +18 -19
- package/dist/Toaster-Bw4xR8xV.js +274 -0
- package/dist/{ToggleGroupItem-Dzk9hWsF.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
- package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +8 -3
- package/dist/api/types-extra.d.ts +6 -0
- package/dist/aurora.js +885 -242
- package/dist/badge.js +1 -1
- package/dist/border-progress.d.ts +1 -0
- package/dist/border-progress.js +106 -0
- package/dist/{button-BNDWhAZb.js → button-DYCUa-tH.js} +71 -26
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +2 -2
- package/dist/carousel.js +93 -110
- package/dist/collapsible.js +1 -1
- package/dist/command.js +1 -1
- package/dist/compile-CQEFRTmx.js +19 -0
- package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
- package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
- package/dist/components/custom/aurora/composables/runtime.d.ts +19 -0
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
- package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
- package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
- package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +2 -2
- package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -12
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
- package/dist/components/custom/aurora/index.d.ts +2 -1
- package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
- package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -0
- package/dist/components/custom/border-progress/constants.d.ts +59 -0
- package/dist/components/custom/border-progress/index.d.ts +4 -0
- package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
- package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
- package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
- package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
- package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
- package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
- package/dist/components/custom/concentric/constants.d.ts +43 -0
- package/dist/components/custom/concentric/index.d.ts +5 -0
- package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
- package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
- package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
- package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
- package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
- package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
- package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
- package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
- package/dist/components/custom/dot-flow-field/constants.d.ts +48 -0
- package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +20 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
- package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
- package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
- package/dist/components/custom/easing/composables/useEasingPicker.d.ts +75 -0
- package/dist/components/custom/easing/constants.d.ts +28 -0
- package/dist/components/custom/easing/index.d.ts +3 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +12 -2
- package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
- package/dist/components/custom/fourier-field/constants.d.ts +7 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
- package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +18 -11
- package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
- package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
- package/dist/components/custom/icon-chip/types.d.ts +11 -1
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
- package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
- package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
- package/dist/components/custom/spa-view/index.d.ts +2 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +10 -0
- package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +1 -1
- package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
- package/dist/components/ui/badge/index.d.ts +1 -1
- package/dist/components/ui/button/Button.vue.d.ts +5 -2
- package/dist/components/ui/button/index.d.ts +2 -2
- package/dist/components/ui/card/Card.vue.d.ts +34 -4
- package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
- package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
- package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
- package/dist/components/ui/card/index.d.ts +2 -0
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
- package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
- package/dist/components/ui/command/Command.vue.d.ts +1 -1
- package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -8
- package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
- package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
- package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
- package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
- package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
- package/dist/components/ui/drawer/constants.d.ts +45 -0
- package/dist/components/ui/drawer/index.d.ts +23 -15
- package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
- package/dist/components/ui/focus-scope/index.d.ts +2 -0
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
- package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
- package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
- package/dist/components/ui/toast/use-toast.d.ts +14 -0
- package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
- package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
- package/dist/composables/glass/index.d.ts +5 -2
- package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
- package/dist/composables/glass/vSpecular.d.ts +2 -0
- package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
- package/dist/composables/glass/webgpu/index.d.ts +2 -0
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +54 -0
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/composables/motion/index.d.ts +4 -0
- package/dist/composables/motion/useDockCtaReceive.d.ts +59 -0
- package/dist/composables/motion/useDragMorph.d.ts +77 -0
- package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
- package/dist/composables/motion/useLiquidPress.d.ts +71 -0
- package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
- package/dist/composables/motion/useNumericTransition.d.ts +3 -3
- package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
- package/dist/concentric.d.ts +1 -0
- package/dist/concentric.js +562 -0
- package/dist/configurator.js +3 -2
- package/dist/confirm-dialog.js +22 -24
- package/dist/constellation.js +11 -11
- package/dist/context-menu.js +3 -3
- package/dist/controls.js +1 -1
- package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +564 -457
- package/dist/{dockContext-Bu1Avy-a.js → dockContext-BNfyPLe9.js} +1 -1
- package/dist/dom.js +5 -5
- package/dist/dot-flow-field.d.ts +1 -0
- package/dist/dot-flow-field.js +604 -0
- package/dist/drawer.d.ts +1 -0
- package/dist/drawer.js +380 -0
- package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-CofSZuk8.js} +14 -15
- package/dist/dropdown-menu.js +1 -1
- package/dist/easing.d.ts +1 -0
- package/dist/easing.js +463 -0
- package/dist/expandable-container.js +7 -4
- package/dist/fading-scroll.js +1 -1
- package/dist/focus-scope.d.ts +1 -0
- package/dist/focus-scope.js +23 -0
- package/dist/forms.js +7 -7
- package/dist/fourier-field.js +128 -116
- package/dist/fourier-math.js +1 -1
- package/dist/glass-panel.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +149 -341
- package/dist/goo-blob.js +830 -224
- package/dist/handmark.js +2 -2
- package/dist/header-ribbon.js +1 -1
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-chip.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/instrument-chassis.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +6 -6
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +1 -1
- package/dist/metric-stack.js +4 -8
- package/dist/motion-core.js +36 -36
- package/dist/motion-curves.js +1 -1
- package/dist/motion.js +157 -55
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{compile-EXXzEr1q.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
- package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +9 -11
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-CquRYOAw.js → sheet-tZMg0E0w.js} +5 -5
- package/dist/sheet.js +1 -1
- package/dist/{slider-DQ95MET2.js → slider-DVb4HXU-.js} +3 -3
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +3 -3
- package/dist/spa-view.d.ts +1 -0
- package/dist/spa-view.js +46 -0
- package/dist/styles/animations.css +33 -9
- package/dist/styles/border-progress.css +109 -0
- package/dist/styles/cards.css +76 -0
- package/dist/styles/components.css +1 -1
- package/dist/styles/critical-partition.mjs +140 -0
- package/dist/styles/critical.css +12 -0
- package/dist/styles/deferred.css +31 -0
- package/dist/styles/dock/density.css +45 -0
- package/dist/styles/dock/layers.css +54 -30
- package/dist/styles/dock/morph.css +124 -7
- package/dist/styles/dock/overflow.css +16 -2
- package/dist/styles/dock/shell.css +54 -16
- package/dist/styles/dock.css +32 -0
- package/dist/styles/drawer.css +81 -35
- package/dist/styles/glass/deep.css +44 -0
- package/dist/styles/glass/ladder.css +87 -31
- package/dist/styles/glass/material.css +78 -15
- package/dist/styles/glass/reveal.css +136 -0
- package/dist/styles/glass/rim.css +100 -0
- package/dist/styles/glass/surfaces.css +101 -3
- package/dist/styles/glass-refract.css +96 -44
- package/dist/styles/glass-specular-track.css +7 -0
- package/dist/styles/glass.css +3 -0
- package/dist/styles/hover-popover.css +7 -6
- package/dist/styles/icon-chip.css +77 -15
- package/dist/styles/index.css +21 -9
- package/dist/styles/instrument-chassis.css +66 -3
- package/dist/styles/scroll-choreography.css +300 -0
- package/dist/styles/segmented-tabs.css +31 -0
- package/dist/styles/theme/bridges.css +11 -0
- package/dist/styles/theme/literals.css +11 -2
- package/dist/styles/theme/radius.css +6 -1
- package/dist/styles/tokens/dark-arm.css +98 -26
- package/dist/styles/tokens/glass-deep.css +75 -0
- package/dist/styles/tokens/glass-fx.css +333 -0
- package/dist/styles/tokens/glass.css +39 -319
- package/dist/styles/tokens/light-dark.css +15 -2
- package/dist/styles/tokens/offsets.css +116 -0
- package/dist/styles/tokens/on-glass-fg.css +39 -0
- package/dist/styles/tokens/property-regs.css +127 -0
- package/dist/styles/tokens/scale-paper.css +117 -89
- package/dist/styles/tokens/scheme-motion.css +70 -32
- package/dist/styles/tokens/scroll-tokens.css +123 -0
- package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +37 -100
- package/dist/styles/tokens.css +9 -3
- package/dist/styles/typography/semantic.css +8 -8
- package/dist/styles/typography/utilities.css +22 -7
- package/dist/styles/utilities/animate.css +27 -24
- package/dist/styles/utilities/base-misc.css +255 -0
- package/dist/styles/utilities/base.css +47 -261
- package/dist/styles/utilities/btn.css +3 -1
- package/dist/styles/utilities/metal.css +189 -0
- package/dist/styles/utilities.css +14 -7
- package/dist/switch.js +1 -1
- package/dist/tabs.js +220 -107
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
- package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
- package/dist/useDragMorph-DgxnsVJz.js +102 -0
- package/dist/useLiquidPress-kfb4KX79.js +39 -0
- package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
- package/dist/useSpring-C0jyvEJB.js +40 -0
- package/dist/useSpringMount-q1amq1SJ.js +71 -0
- package/dist/useSpringPress-BsqPr7FJ.js +34 -0
- package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
- package/dist/vSpecular-CQFmLNzA.js +68 -0
- package/dist/vendor-CKmzio-i.js +226 -0
- package/dist/watercolor-dot.js +2 -2
- package/package.json +126 -22
- package/src/styles/animations.css +33 -9
- package/src/styles/border-progress.css +109 -0
- package/src/styles/cards.css +76 -0
- package/src/styles/critical-partition.mjs +140 -0
- package/src/styles/dock/density.css +45 -0
- package/src/styles/dock/layers.css +54 -30
- package/src/styles/dock/morph.css +124 -7
- package/src/styles/dock/overflow.css +16 -2
- package/src/styles/dock/shell.css +54 -16
- package/src/styles/dock.css +32 -0
- package/src/styles/drawer.css +81 -35
- package/src/styles/glass/deep.css +44 -0
- package/src/styles/glass/ladder.css +87 -31
- package/src/styles/glass/material.css +78 -15
- package/src/styles/glass/reveal.css +136 -0
- package/src/styles/glass/rim.css +100 -0
- package/src/styles/glass/surfaces.css +101 -3
- package/src/styles/glass-refract.css +96 -44
- package/src/styles/glass-specular-track.css +7 -0
- package/src/styles/glass.css +3 -0
- package/src/styles/hover-popover.css +7 -6
- package/src/styles/icon-chip.css +77 -15
- package/src/styles/index.css +12 -0
- package/src/styles/instrument-chassis.css +66 -3
- package/src/styles/scroll-choreography.css +300 -0
- package/src/styles/segmented-tabs.css +31 -0
- package/src/styles/theme/bridges.css +11 -0
- package/src/styles/theme/literals.css +11 -2
- package/src/styles/theme/radius.css +6 -1
- package/src/styles/tokens/dark-arm.css +98 -26
- package/src/styles/tokens/glass-deep.css +75 -0
- package/src/styles/tokens/glass-fx.css +333 -0
- package/src/styles/tokens/glass.css +39 -319
- package/src/styles/tokens/light-dark.css +15 -2
- package/src/styles/tokens/offsets.css +116 -0
- package/src/styles/tokens/on-glass-fg.css +39 -0
- package/src/styles/tokens/property-regs.css +127 -0
- package/src/styles/tokens/scale-paper.css +117 -89
- package/src/styles/tokens/scheme-motion.css +70 -32
- package/src/styles/tokens/scroll-tokens.css +123 -0
- package/src/styles/tokens/{offsets-sizing.css → sizing.css} +37 -100
- package/src/styles/tokens.css +9 -3
- package/src/styles/typography/semantic.css +8 -8
- package/src/styles/typography/utilities.css +22 -7
- package/src/styles/utilities/animate.css +27 -24
- package/src/styles/utilities/base-misc.css +255 -0
- package/src/styles/utilities/base.css +47 -261
- package/src/styles/utilities/btn.css +3 -1
- package/src/styles/utilities/metal.css +189 -0
- package/src/styles/utilities.css +14 -7
- package/dist/CardAction-XH4YBVEK.js +0 -158
- package/dist/Notification-DKjKsQq8.js +0 -100
- package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
- package/dist/Toaster-Bm_HQSpc.js +0 -263
- package/dist/check-njhk-vfu.js +0 -7
- package/dist/chevron-down-DKkxb4VV.js +0 -7
- package/dist/chevron-right-CPXbqQQz.js +0 -7
- package/dist/chevron-up-n_24SqI-.js +0 -7
- package/dist/createLucideIcon-DydS2qgk.js +0 -43
- package/dist/minimize-2-BV31Ob_h.js +0 -38
- package/dist/search-BSGrf2Sk.js +0 -12
- package/dist/useCanvas2D-ClrQuZtp.js +0 -96
- package/dist/useConfiguratorState-kiIlun8I.js +0 -303
- package/dist/useSpecularTracking-Bo5su68i.js +0 -32
- package/dist/useSpringMount-CvopqiFr.js +0 -108
- package/dist/useViewTransition-COsPjQVZ.js +0 -47
- package/dist/x-BUwTKe50.js +0 -10
- /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
- /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
- /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
- /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
- /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
- /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-DwwjicPY.js} +0 -0
- /package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-DXswVdRz.js} +0 -0
- /package/dist/{Separator-BArl4OaB.js → Separator-pKF0oA4M.js} +0 -0
- /package/dist/{Switch-Dr--uLGH.js → Switch-CwYNf8bo.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
- /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
- /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
- /package/dist/{math-DeuJwLFx.js → math-BINYmg5z.js} +0 -0
- /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
- /package/dist/{prng-Cg22zv8g.js → prng-Za0Rmgag.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
- /package/dist/{springPresets-WXaLbu8u.js → springPresets-CFQGQfdl.js} +0 -0
- /package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-BfUq2bUM.js} +0 -0
- /package/dist/{useInterval-CNdua40W.js → useInterval-CvK1mL92.js} +0 -0
- /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-mZPMiNXh.js} +0 -0
- /package/dist/{useRAFLoop-CdwJ7284.js → useRAFLoop-UYa4zoiN.js} +0 -0
- /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
- /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
- /package/dist/{useSortable-BVqlJRBR.js → useSortable-DHjtZSEd.js} +0 -0
- /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
- /package/dist/{useTextHighlight-NmBM5V_4.js → useTextHighlight-CWEi25hf.js} +0 -0
- /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
- /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
- /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
- /package/dist/{vReveal-D9k0jADx.js → vReveal-Czsb7zQC.js} +0 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* scroll-choreography.css — the SOTA scroll-driven CHOREOGRAPHY register
|
|
3
|
+
* (BB.W-SCROLL-MOTION).
|
|
4
|
+
*
|
|
5
|
+
* Cascade rung AFTER scroll-driven.css. glass-ui owns the native scroll-driven
|
|
6
|
+
* SUBSTRATE (scroll-driven.css `scroll()`/`view()` + the `--demo-main-progress`
|
|
7
|
+
* named timeline + the `supportsCssTimeline` harden) but composes none of the
|
|
8
|
+
* CHOREOGRAPHY — the page-load BUILD, the section CASCADE, the scroll-PINNED
|
|
9
|
+
* fixed-stage-advances-time reveals + the smooth-scroll register. The award-winners
|
|
10
|
+
* hand-roll these on Lenis+GSAP (a 20-40KB JS dependency); glass-ui ships the
|
|
11
|
+
* NATIVE register — the platform now ships `scroll()`/`view()`/`timeline-scope`
|
|
12
|
+
* natively, off the compositor at 60fps (the no-net-dep fence; the 2026
|
|
13
|
+
* universal-support convergence). NO Lenis/GSAP/Locomotive dependency, ever.
|
|
14
|
+
*
|
|
15
|
+
* .scroll-build — the route-enter page-build (chrome -> hero -> body, a
|
|
16
|
+
* spring-clocked coupled-fade, @keyframes-on-mount [NOT a
|
|
17
|
+
* scroll timeline — the build fires on mount], PRM-snapped).
|
|
18
|
+
* .scroll-cascade — the orchestrated section cascade (per-child view() timeline,
|
|
19
|
+
* the implicit stagger [NO setTimeout], the spring-clocked
|
|
20
|
+
* coupled transform+opacity build).
|
|
21
|
+
* .scroll-pin — the fixed-stage-advances-time scroll-pinned register
|
|
22
|
+
* (position: sticky stage + a named scroll-timeline linked via
|
|
23
|
+
* timeline-scope; the stage's internal phases advance with
|
|
24
|
+
* scroll progress, compositor channels only).
|
|
25
|
+
* .smooth-scroll — the native scroll-behavior: smooth opt-in (PRM-gated,
|
|
26
|
+
* zero runtime — a smooth-scroll under reduce is a vestibular
|
|
27
|
+
* concern, so the smooth interpolation is dropped under PRM).
|
|
28
|
+
*
|
|
29
|
+
* THE DISCIPLINE (mirrors scroll-driven.css EXACTLY — the exemplary outer-gate):
|
|
30
|
+
* the whole register sits under `@media (prefers-reduced-motion: no-preference)`
|
|
31
|
+
* so under PRM no scroll/build animation attaches at all and content renders in
|
|
32
|
+
* its terminal state (the `from` keyframe never applies because the animation
|
|
33
|
+
* never binds; the .scroll-pin stage shows its terminal phase, no sweep). The
|
|
34
|
+
* scroll-driven recipes sit under a second `@supports (animation-timeline: …)`
|
|
35
|
+
* gate so a non-supporting engine gets the STATIC layout (the .scroll-pin stage
|
|
36
|
+
* is a correct non-pinned read, never a broken silent stage).
|
|
37
|
+
*
|
|
38
|
+
* COMPOSITOR-ONLY (the proof:no-layout-animation floor BB.W-CARD-COMPOSITE): every
|
|
39
|
+
* @keyframes step + transition animates ONLY transform/translate/scale/opacity/
|
|
40
|
+
* clip-path — NEVER a layout-triggering property (no height/padding/inline-size/
|
|
41
|
+
* top/grid-template). The SPATIAL (transform) legs ride the per-spring `--spring-*`
|
|
42
|
+
* + the matching `--spring-*-duration` settle clock (P2/P4); the EFFECTS (opacity)
|
|
43
|
+
* legs ride the no-overshoot `--ease-out` bezier (P1/P3 — a fade must never
|
|
44
|
+
* overshoot). The spring tokens are READ-ONLY (the W-GLASS-CAL clock fence — this
|
|
45
|
+
* register THREADS them, it never re-tunes a spring value or a duration).
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/* ─────────────────────────────────────────────────────────────────────────────
|
|
49
|
+
* .scroll-build — the route-enter page-build.
|
|
50
|
+
*
|
|
51
|
+
* A MOUNT-driven entrance (route-enter), NOT a scroll-driven one — so it rides a
|
|
52
|
+
* plain `@keyframes ... animation` (NOT a `view()`/`scroll()` timeline; the build
|
|
53
|
+
* fires on first paint of the new route, not on scroll). It sits under the PRM
|
|
54
|
+
* no-preference gate ALONE (no `@supports (animation-timeline)` — it does not use a
|
|
55
|
+
* timeline, so it runs on every engine; under PRM it never binds, so the page
|
|
56
|
+
* mounts at its terminal state).
|
|
57
|
+
*
|
|
58
|
+
* The coordinated stagger: the .scroll-build container's direct children are the
|
|
59
|
+
* BEATS (chrome, hero, body), each delayed by `--scroll-build-step * --i` (the
|
|
60
|
+
* per-beat coordinated stagger — the page assembles chrome-first, then the hero,
|
|
61
|
+
* then the first section). `--i` is the beat index a consumer sets per child
|
|
62
|
+
* (0-based); the chassis sets it on the chrome/hero/section in reading order
|
|
63
|
+
* (W-HIERARCHY2 owns the ORDER; this register threads the entrance ON it).
|
|
64
|
+
* ─────────────────────────────────────────────────────────────────────────── */
|
|
65
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
66
|
+
@keyframes gl-page-build {
|
|
67
|
+
from {
|
|
68
|
+
opacity: 0;
|
|
69
|
+
/* SPATIAL leg — the build rise (a transform, compositor-only). */
|
|
70
|
+
transform: translateY(var(--scroll-build-rise, 1.5rem));
|
|
71
|
+
}
|
|
72
|
+
to {
|
|
73
|
+
opacity: 1;
|
|
74
|
+
transform: translateY(0);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* The page-build container marks the entrance; the beats are its children. */
|
|
79
|
+
.scroll-build > * {
|
|
80
|
+
/* The coupled build: the SPATIAL transform rides the snappy spring settle
|
|
81
|
+
clock (P2/P4 — the page parts arrive with crisp gravity); the opacity is
|
|
82
|
+
a coupled leg in the SAME keyframe on the SAME clock so the fade tracks
|
|
83
|
+
the rise as ONE coherent glide (P3 — fade coupled to transform). The
|
|
84
|
+
no-overshoot bezier governs the FADE channel where the spring's
|
|
85
|
+
overshoot is not wanted: `--ease-out` is named on the build's title beat
|
|
86
|
+
(the hero <h1> — audacious type arrives with GRAVITY, not bounce, per
|
|
87
|
+
W-HIERARCHY2); the other beats ride the snappy spring. */
|
|
88
|
+
animation: gl-page-build var(--spring-snappy-duration, 0.34s)
|
|
89
|
+
var(--spring-snappy) both;
|
|
90
|
+
animation-delay: calc(var(--scroll-build-step, 90ms) * var(--i, 0));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* The hero/title beat: the audacious-type-arrives-with-gravity register — the
|
|
94
|
+
no-overshoot `--ease-out` bezier (a strictly monotone settle, NO overshoot
|
|
95
|
+
past the terminal transform), the existing .story-hero-title--enter
|
|
96
|
+
discipline folded into the ONE entrance system. A consumer marks the hero
|
|
97
|
+
beat `.scroll-build-hero`. */
|
|
98
|
+
.scroll-build > .scroll-build-hero {
|
|
99
|
+
animation: gl-page-build 0.62s var(--ease-out, ease-out) both;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* The EXPLICIT P6 carve — under prefers-reduced-motion: reduce the page-build DROPS
|
|
104
|
+
the spatial transform (no movement — the vestibular floor) but KEEPS a gentle
|
|
105
|
+
terminal fade-in (the EFFECTS channel survives per P6: fade-keeps, transform-
|
|
106
|
+
drops). This sits OUTSIDE the no-preference gate as the reduce-arm of the
|
|
107
|
+
coordinated build (mirroring the transitions.css fade-slide PRM arm — the
|
|
108
|
+
opacity leg alone under reduce). The build is mount-driven, so the no-preference
|
|
109
|
+
gate above never binds under reduce; this arm gives PRM users the coupled-FADE
|
|
110
|
+
terminal entrance with ZERO motion frames (no translateY), the genuine P6 read. */
|
|
111
|
+
@media (prefers-reduced-motion: reduce) {
|
|
112
|
+
@keyframes gl-page-build-fade {
|
|
113
|
+
from {
|
|
114
|
+
opacity: 0;
|
|
115
|
+
}
|
|
116
|
+
to {
|
|
117
|
+
opacity: 1;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
.scroll-build > * {
|
|
121
|
+
/* fade-keeps (opacity only), transform-DROPS (no translateY) — P6. */
|
|
122
|
+
animation: gl-page-build-fade var(--duration-fast, 0.16s) var(--ease-out, ease-out)
|
|
123
|
+
both;
|
|
124
|
+
animation-delay: 0s; /* no coordinated stagger under reduce — a single calm paint */
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* ─────────────────────────────────────────────────────────────────────────────
|
|
129
|
+
* .scroll-cascade — the orchestrated section cascade.
|
|
130
|
+
*
|
|
131
|
+
* Extends the bare `[data-scroll-reveal] > *` 6px fade into the SOTA coordinated
|
|
132
|
+
* build: the per-child `view()` timeline stays the implicit-stagger mechanism (each
|
|
133
|
+
* child owns its own timeline — NO setTimeout cascade), but the entrance is the
|
|
134
|
+
* spring-clocked coupled build (a deeper rise + a tighter reveal window). It sits
|
|
135
|
+
* under the PRM no-preference gate + the `@supports (animation-timeline: view())`
|
|
136
|
+
* gate (the scroll-driven.css discipline) — under PRM/non-support the sections
|
|
137
|
+
* render at their terminal state.
|
|
138
|
+
* ─────────────────────────────────────────────────────────────────────────── */
|
|
139
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
140
|
+
@supports ((animation-timeline: view()) and (animation-range: entry)) {
|
|
141
|
+
@keyframes gl-cascade-build {
|
|
142
|
+
from {
|
|
143
|
+
/* EFFECTS leg — the coupled fade (no overshoot). */
|
|
144
|
+
opacity: 0;
|
|
145
|
+
/* SPATIAL leg — the build rise (a transform, compositor-only). */
|
|
146
|
+
transform: translateY(var(--scroll-cascade-rise, 1.25rem));
|
|
147
|
+
}
|
|
148
|
+
to {
|
|
149
|
+
opacity: 1;
|
|
150
|
+
transform: translateY(0);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.scroll-cascade > * {
|
|
155
|
+
/* The view()-timeline drives the build off each child's OWN entry into
|
|
156
|
+
the viewport (the implicit stagger). The progress-bound timeline maps
|
|
157
|
+
the entrance across the `animation-range` window; the keyframe's
|
|
158
|
+
coupled transform+opacity build is the orchestrated cascade (vs the
|
|
159
|
+
bare 6px reveal). `linear` is the right easing for a SCROLL-bound
|
|
160
|
+
progress map (the spring shaping lives in the section's own settle
|
|
161
|
+
where the build is mount-driven; a scroll-bound timeline reads
|
|
162
|
+
1:1 with scroll position — a spring on a scrubbed timeline reads as
|
|
163
|
+
a scrubbed spring, which is correct here as the linear progress map). */
|
|
164
|
+
animation: gl-cascade-build auto linear both;
|
|
165
|
+
animation-timeline: view(block);
|
|
166
|
+
animation-range: entry 0% entry var(--scroll-cascade-range-end, 45%);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* The horizontal-scroller variant — a `view(inline)` axis. */
|
|
170
|
+
.scroll-cascade.scroll-cascade--inline > * {
|
|
171
|
+
animation-timeline: view(inline);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* The OPT-IN column-stagger variant (the Codrops nuance — even columns
|
|
175
|
+
from top, odd from below). A GRID-surface flourish, NOT the default (the
|
|
176
|
+
proportion fence: a uniform vertical cascade is the calm StoryPage
|
|
177
|
+
default; the column-stagger is the front-door grid showcase). A consumer
|
|
178
|
+
sets `--col` (the column index) per child; even/odd rise from opposite
|
|
179
|
+
directions, offset by `--scroll-cascade-column-stagger`. */
|
|
180
|
+
@keyframes gl-cascade-build-col-even {
|
|
181
|
+
from {
|
|
182
|
+
opacity: 0;
|
|
183
|
+
transform: translateY(calc(-1 * var(--scroll-cascade-rise, 1.25rem)));
|
|
184
|
+
}
|
|
185
|
+
to {
|
|
186
|
+
opacity: 1;
|
|
187
|
+
transform: translateY(0);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
.scroll-cascade.scroll-cascade--columns > * {
|
|
191
|
+
animation-range: entry 0%
|
|
192
|
+
entry
|
|
193
|
+
calc(
|
|
194
|
+
var(--scroll-cascade-range-end, 45%) +
|
|
195
|
+
var(--scroll-cascade-column-stagger, 60ms) * 0
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
.scroll-cascade.scroll-cascade--columns > *:nth-child(even) {
|
|
199
|
+
animation-name: gl-cascade-build-col-even;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* ─────────────────────────────────────────────────────────────────────────────
|
|
205
|
+
* .scroll-pin — the fixed-stage-advances-time scroll-pinned register.
|
|
206
|
+
*
|
|
207
|
+
* The SOTA "scrolling does not move the scene, it advances time inside it" model:
|
|
208
|
+
* a `.scroll-pin` tall container (the `--scroll-pin-stage-height` temporal space)
|
|
209
|
+
* holds a `.scroll-pin-stage` `position: sticky` element. The container declares
|
|
210
|
+
* a named `scroll-timeline`; the stage's internal phase animations bind to that
|
|
211
|
+
* named timeline via `timeline-scope` (so the stage animates against the
|
|
212
|
+
* CONTAINER'S scroll progress — the fixed stage advances time). The phase
|
|
213
|
+
* animations are compositor-only (transform/opacity/clip-path over the
|
|
214
|
+
* `animation-range` phase windows — the Codrops phased sequence: a reveal phase
|
|
215
|
+
* 0..45%, an expand phase 45..90%, a settle phase 90..100%).
|
|
216
|
+
*
|
|
217
|
+
* `timeline-scope` is the newest primitive — the `@supports` gate probes it (NOT
|
|
218
|
+
* just `scroll()`), so an engine with `scroll()`/`view()` but not `timeline-scope`
|
|
219
|
+
* gets the STATIC layout (a correct non-pinned read: the stage is a plain sticky
|
|
220
|
+
* element at its terminal phase, never a broken silent stage). In 2026
|
|
221
|
+
* `timeline-scope` ships alongside `scroll()`/`view()` (the universal-support
|
|
222
|
+
* convergence), so the CSS-only register is the ship; the JS fallback leaf (mirror
|
|
223
|
+
* useScrollProgress's dual-path single-writer) is BOOKED only on a material
|
|
224
|
+
* engine-gap reveal (the §Triumvirate support-matrix trigger) — never a JS scroll
|
|
225
|
+
* lib (the no-net-dep fence is binding either way).
|
|
226
|
+
* ─────────────────────────────────────────────────────────────────────────── */
|
|
227
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
228
|
+
@supports (animation-timeline: scroll()) and (timeline-scope: --gl-pin) {
|
|
229
|
+
@keyframes gl-pin-reveal {
|
|
230
|
+
from {
|
|
231
|
+
opacity: 0;
|
|
232
|
+
transform: translateY(var(--scroll-pin-lift, 2.5rem)) scale(0.96);
|
|
233
|
+
}
|
|
234
|
+
to {
|
|
235
|
+
opacity: 1;
|
|
236
|
+
transform: translateY(0) scale(1);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
@keyframes gl-pin-settle {
|
|
240
|
+
from {
|
|
241
|
+
transform: scale(1);
|
|
242
|
+
opacity: 1;
|
|
243
|
+
}
|
|
244
|
+
to {
|
|
245
|
+
/* The settle phase — a gentle compositor drift, never a layout move. */
|
|
246
|
+
transform: scale(1.02) translateY(calc(-1 * var(--scroll-pin-lift, 2.5rem)));
|
|
247
|
+
opacity: 1;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* The tall temporal container declares a named scroll-timeline + exposes it
|
|
252
|
+
to descendants via timeline-scope (the fixed-stage-advances-time link). */
|
|
253
|
+
.scroll-pin {
|
|
254
|
+
position: relative;
|
|
255
|
+
block-size: var(--scroll-pin-stage-height, 320vh);
|
|
256
|
+
scroll-timeline-name: --gl-pin;
|
|
257
|
+
scroll-timeline-axis: block;
|
|
258
|
+
timeline-scope: --gl-pin;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* The sticky stage — pinned to the viewport while the container scrolls
|
|
262
|
+
past; its phases advance against the container's --gl-pin timeline. */
|
|
263
|
+
.scroll-pin-stage {
|
|
264
|
+
position: sticky;
|
|
265
|
+
inset-block-start: 0;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* Phase 1 — the reveal (0..45% of the container scroll). */
|
|
269
|
+
.scroll-pin-stage .scroll-pin-phase-reveal {
|
|
270
|
+
animation: gl-pin-reveal auto linear both;
|
|
271
|
+
animation-timeline: --gl-pin;
|
|
272
|
+
animation-range: 0% var(--scroll-pin-phase-reveal-end, 45%);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/* Phase 2 — the settle/expand (the reveal-end..expand-end window). */
|
|
276
|
+
.scroll-pin-stage .scroll-pin-phase-settle {
|
|
277
|
+
animation: gl-pin-settle auto linear both;
|
|
278
|
+
animation-timeline: --gl-pin;
|
|
279
|
+
animation-range: var(--scroll-pin-phase-reveal-end, 45%)
|
|
280
|
+
var(--scroll-pin-phase-expand-end, 90%);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/* ─────────────────────────────────────────────────────────────────────────────
|
|
286
|
+
* .smooth-scroll — the native smooth-scroll opt-in.
|
|
287
|
+
*
|
|
288
|
+
* The native `scroll-behavior: smooth` (CSS-first, zero runtime — NOT a JS rAF
|
|
289
|
+
* momentum loop, which IS Lenis and is the fence). An OPT-IN class the scroller
|
|
290
|
+
* (`<main>`, a `.scroll-pin` container) applies. PRM-GATED: under
|
|
291
|
+
* `prefers-reduced-motion: reduce` the smooth interpolation is DROPPED and the
|
|
292
|
+
* jump-scroll is correct (a smooth-scroll over an anchor-jump is a vestibular
|
|
293
|
+
* concern). A consumer wanting Lenis-grade momentum brings it in THEIR app (the
|
|
294
|
+
* presets-in-consumers discipline); the library ships the native register.
|
|
295
|
+
* ─────────────────────────────────────────────────────────────────────────── */
|
|
296
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
297
|
+
.smooth-scroll {
|
|
298
|
+
scroll-behavior: smooth;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
@@ -344,3 +344,34 @@
|
|
|
344
344
|
.segmented-tabs--underline .segmented-tab:hover {
|
|
345
345
|
color: color-mix(in oklab, var(--foreground) 70%, transparent);
|
|
346
346
|
}
|
|
347
|
+
|
|
348
|
+
/* ════════════════════════════════════════════════════════════════════════
|
|
349
|
+
BB.W-DRAG-MORPH — the `.glass-drag-lift` decoration (the pull affordance).
|
|
350
|
+
|
|
351
|
+
The `useDragMorph` consumer adds this class to the morph element while
|
|
352
|
+
`dragging` is true (the SegmentedTabs `:draggable` indicator; the
|
|
353
|
+
DockLayerGroup pull rail). It is the visual "this is grabbable + grabbed"
|
|
354
|
+
affordance — the GRAB cursor + a sub-perceptual `--glass-specular` catch-light
|
|
355
|
+
lift + the `will-change: transform` compositor hint that promotes the lozenge
|
|
356
|
+
to its own layer for the 1:1 follow. It carries NO transform itself (the
|
|
357
|
+
translate + squish are the primitive's own `translate`/`--stretch` writes, the
|
|
358
|
+
§6 compositor channels); this class only paints the affordance + the hint.
|
|
359
|
+
|
|
360
|
+
The grab cursor sits on the morph element AT REST too (a draggable indicator
|
|
361
|
+
reads grabbable before the grab), so `.glass-drag-grabbable` marks the rest
|
|
362
|
+
affordance and `.glass-drag-lift` adds the grabbing state. PRM does not gate
|
|
363
|
+
the cursor/hint (they are not motion); the lift is a static specular nudge. */
|
|
364
|
+
.glass-drag-grabbable {
|
|
365
|
+
cursor: grab;
|
|
366
|
+
touch-action: none;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
.glass-drag-lift {
|
|
370
|
+
cursor: grabbing;
|
|
371
|
+
/* Promote to its own compositor layer for the 1:1 follow (the translate write
|
|
372
|
+
is compositor-only; the hint keeps the plate off the main-thread paint). */
|
|
373
|
+
will-change: transform;
|
|
374
|
+
/* Sub-perceptual catch-light lift — the grabbed lozenge reads a hair brighter
|
|
375
|
+
at its specular edge (the W-GLASS-CAL specular register, disco-FREE). */
|
|
376
|
+
--glass-specular: 0.1;
|
|
377
|
+
}
|
|
@@ -47,6 +47,9 @@
|
|
|
47
47
|
|
|
48
48
|
/* Letter spacing → tracking-* utilities */
|
|
49
49
|
--tracking-tight: var(--type-tracking-tight);
|
|
50
|
+
/* BB.W-DISPLAY-TRACKING — the display-ONLY Apple −1.5% tracking rung bridged
|
|
51
|
+
to the `tracking-display` utility (the token-first consumer affordance). */
|
|
52
|
+
--tracking-display: var(--type-tracking-display);
|
|
50
53
|
--tracking-snug: var(--type-tracking-snug);
|
|
51
54
|
--tracking-normal: var(--type-tracking-normal);
|
|
52
55
|
--tracking-wide: var(--type-tracking-wide);
|
|
@@ -219,6 +222,14 @@
|
|
|
219
222
|
--color-silver-dark: var(--silver-dark);
|
|
220
223
|
--color-silver-deep: var(--silver-deep);
|
|
221
224
|
|
|
225
|
+
/* BB.W-METAL-SHIMMER — the bronze brand metal (the third member of the
|
|
226
|
+
gold·silver·bronze triad; the @theme namespace bridge so a `text-bronze`/
|
|
227
|
+
`bg-bronze` utility resolves through, mirroring gold/silver). */
|
|
228
|
+
--color-bronze: var(--bronze);
|
|
229
|
+
--color-bronze-light: var(--bronze-light);
|
|
230
|
+
--color-bronze-dark: var(--bronze-dark);
|
|
231
|
+
--color-bronze-deep: var(--bronze-deep);
|
|
232
|
+
|
|
222
233
|
--color-rainbow-red: var(--rainbow-red);
|
|
223
234
|
--color-rainbow-orange: var(--rainbow-orange);
|
|
224
235
|
--color-rainbow-yellow: var(--rainbow-yellow);
|
|
@@ -30,10 +30,19 @@
|
|
|
30
30
|
band-pass vs one-pass sweep) want different tempos. The pre-V audit
|
|
31
31
|
(C-c §5.3) flagged this as a "naming inversion"; it is intentional —
|
|
32
32
|
documented here so the offset is searchable. The orphan
|
|
33
|
-
`--duration-shimmer-slow` (8s) was excised in V.W2 T5.
|
|
33
|
+
`--duration-shimmer-slow` (8s) was excised in V.W2 T5.
|
|
34
|
+
|
|
35
|
+
BB.W-METAL-SHIMMER — `--animate-gold-shimmer` re-points onto the metal-
|
|
36
|
+
PARAMETERIZED `metal-shimmer-sweep` keyframe (the gold-only
|
|
37
|
+
`gold-shimmer-slide` RETIRED — clean break, no alias); the duration/tempo
|
|
38
|
+
are byte-preserved (the gold READ unchanged). `--animate-metal` is the
|
|
39
|
+
brand-metal family's own row on the slow `--duration-metal` (6s) clock — the
|
|
40
|
+
`.metal-{gold,silver,bronze}`/`.metal-*-border`/`.metal-rainbow-rim`
|
|
41
|
+
utilities read it (utilities/metal.css). */
|
|
34
42
|
--animate-shimmer: shimmer var(--duration-shimmer-fast) linear infinite;
|
|
35
43
|
--animate-shimmer-sweep: shimmer-sweep var(--duration-shimmer) ease-in-out infinite;
|
|
36
|
-
--animate-gold-shimmer:
|
|
44
|
+
--animate-gold-shimmer: metal-shimmer-sweep var(--duration-shimmer) linear infinite;
|
|
45
|
+
--animate-metal: metal-shimmer-sweep var(--duration-metal) linear infinite;
|
|
37
46
|
--animate-shake: shake 0.5s ease-in-out;
|
|
38
47
|
|
|
39
48
|
/* ═══════════════════════════════════════════════
|
|
@@ -64,7 +64,12 @@
|
|
|
64
64
|
|x|^(2K) + |y|^(2K) = 1, so the curve exponent n = 2K. The CSS `squircle`
|
|
65
65
|
keyword == `superellipse(2)` == n=4 — the iOS-idiomatic web squircle. The
|
|
66
66
|
k-PRIMITIVE band (a consumer dials 1.7–2.4 to taste; W42's dock-morph calc()s
|
|
67
|
-
its animated k against this ONE vocabulary — do not re-define a second k).
|
|
67
|
+
its animated k against this ONE vocabulary — do not re-define a second k).
|
|
68
|
+
(BB.W-DEAD-SWEEP re-ground: --corner-k-soft / --corner-k-sharp have no
|
|
69
|
+
runtime var() consumer but ARE pinned by proof:squircle-language (the
|
|
70
|
+
TOKEN-AXIS-EXISTS clause asserts both rungs are minted) — so KEPT, not
|
|
71
|
+
swept; the clean-break delete is a coordination follow-up once the gate
|
|
72
|
+
re-anchors.) */
|
|
68
73
|
--corner-k-squircle: 2; /* the squircle — superellipse(2), n=4 */
|
|
69
74
|
--corner-k-soft: 1.7; /* gentler, between round and squircle — n≈3.4 */
|
|
70
75
|
--corner-k-sharp: 2.4; /* crisper square-bias for large surfaces — n≈4.8 */
|
|
@@ -57,7 +57,17 @@
|
|
|
57
57
|
--accent{,-foreground} / --border / --input are pure var()-aliases —
|
|
58
58
|
DELETED here (AQ.W2 §2a): they auto-track the --neutral-* ladder +
|
|
59
59
|
--foreground above. Re-declaring them would be redundant. */
|
|
60
|
-
--foreground
|
|
60
|
+
/* BB.W-DARK-INK-WARM — the dark --foreground warmed off hsl(48 10% 90%) (OKLab H95.1°,
|
|
61
|
+
the EXACT yellow-green W-NO-GRAY condemned as "a cast, not warm material") onto the
|
|
62
|
+
no-gray warm identity hsl(30 14% 90%) (OKLab L0.926 C0.0063 H75.4° — the --foreground
|
|
63
|
+
56° warm-amber family, L held within ±0.001 of HEAD, chroma off the gray floor,
|
|
64
|
+
chroma-only at constant L). The contrast contract holds (the dark ink over the L4 page
|
|
65
|
+
stays ≥ the body floor). EVERY dark var(--foreground) consumer (body copy, the lifted
|
|
66
|
+
muted register, --glass-tint-ink, the cartoon shadow, the configurator divider, the
|
|
67
|
+
dock-selected-accent, the --surface-tint-* relative-color recipe below) re-resolves
|
|
68
|
+
warm in lockstep, zero per-site edit. LOCKSTEP light-dark.css:92 (the §2c discipline —
|
|
69
|
+
both mode arms warm together or the FOUC/enhancement split paints two inks). */
|
|
70
|
+
--foreground: hsl(30 14% 90%);
|
|
61
71
|
/* BA.W-DARK-MATERIAL scope 1 — the --card plate LIFTS L10→L16 (a warm-dark elevated
|
|
62
72
|
surface, macOS-window territory) so it sits ~5× the deepened L4 page relL — a
|
|
63
73
|
clearly distinct surface the five glass rungs ladder up from. LOCKSTEP light-dark.css:80. */
|
|
@@ -190,9 +200,14 @@
|
|
|
190
200
|
--constellation-edge-floor: 0;
|
|
191
201
|
--constellation-edge-accent-alpha: 0.34;
|
|
192
202
|
|
|
193
|
-
/* Glass opacity + grain for dark —
|
|
194
|
-
|
|
195
|
-
|
|
203
|
+
/* Glass opacity + grain for dark — the per-tier canonical alpha, DARK arm
|
|
204
|
+
(BB.W-CARD-TIER-ALPHA). The SAME named `--glass-opacity-{tier}` register as
|
|
205
|
+
the light arm (tokens/glass.css), per-mode — the dark identity. Five-tier
|
|
206
|
+
ladder, alpha-monotonic; each rung lifts ~0.08 from its light counterpart so
|
|
207
|
+
the dark surfaces carry comparable read-weight against the deeper canvas. A
|
|
208
|
+
consumer reads these named tokens; a divergent register stays a consumer preset.
|
|
209
|
+
Machine-locked by `proof:card-tier-alpha` (the dark-arm-present + monotonic +
|
|
210
|
+
lift-over-light asserts). */
|
|
196
211
|
--glass-opacity-wash: 0.38;
|
|
197
212
|
--glass-opacity-quiet: 0.58;
|
|
198
213
|
--glass-opacity-resting: 0.72;
|
|
@@ -218,6 +233,21 @@
|
|
|
218
233
|
--glass-blur-overlay: blur(calc(var(--glass-blur-overlay-radius) * var(--glass-level))) saturate(1.22) brightness(1.06);
|
|
219
234
|
--glass-blur-dock: blur(calc(var(--glass-blur-dock-radius) * var(--glass-level))) saturate(1.30) brightness(1.12);
|
|
220
235
|
|
|
236
|
+
/* BB.W-DEEP-GLASS — the DARK arm of the OPT-IN deep tier (the luminous-dark
|
|
237
|
+
deep mirror, the W-DARK-MATERIAL scope-2 "dark glass glows where light
|
|
238
|
+
passes" model). The deep tier is even more transmissive in dark — the deep
|
|
239
|
+
dark glass glows MORE where the backdrop passes — so its saturate/brightness
|
|
240
|
+
companion lifts HARDER than the calm dark floating (1.28/1.10): the deep
|
|
241
|
+
arm carries saturate(1.55) brightness(1.16), in LOCKSTEP with the light deep
|
|
242
|
+
arm (which sits at saturate 1.5 / depth-LERPed, glass-deep.css). The RADIUS
|
|
243
|
+
is the SAME --glass-blur-deep-active-radius × --glass-level (radius-only
|
|
244
|
+
across modes, the §2c discipline — only the saturate/brightness companions
|
|
245
|
+
differ between light/dark). This is a SEPARATE deep token the calm dark
|
|
246
|
+
ladder never reads (CALM-UNCHANGED in dark too — proof:glass-cal GREEN). */
|
|
247
|
+
--glass-blur-deep:
|
|
248
|
+
blur(var(--glass-blur-deep-active-radius))
|
|
249
|
+
saturate(1.55) brightness(1.16);
|
|
250
|
+
|
|
221
251
|
/* BA.W-DARK-MATERIAL scope 3 — the dark arm of the adaptive --glass-tint-* seam (the
|
|
222
252
|
SAME seam, NO third fork). The W55 self-engage block (glass/ladder.css) re-points
|
|
223
253
|
--glass-tint-source → --glass-tint-ink at --glass-tint-strength-aa. In LIGHT that is
|
|
@@ -242,28 +272,59 @@
|
|
|
242
272
|
mode arms — the content-tier self-engage needs no mode branch. */
|
|
243
273
|
--glass-tint-strength-floor: 12%;
|
|
244
274
|
|
|
245
|
-
/*
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
--
|
|
257
|
-
--
|
|
258
|
-
--
|
|
259
|
-
--
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
275
|
+
/* BB.W-ON-GLASS-FG — the surface-aware FOREGROUND register, DARK arm (the N13
|
|
276
|
+
whisper collapse where it bites hardest). The dark page-muted --neutral-5 (L62,
|
|
277
|
+
"AA: 7.64:1 vs page") COLLAPSES over the lifted luminous-dark plate (the L16 card
|
|
278
|
+
at the 12% --glass-tint-strength-floor composites the bright backdrop UP — the
|
|
279
|
+
measured 1.15-3.29:1). The on-glass muted rung lifts BRIGHTER (the mirror of the
|
|
280
|
+
light arm's darkening) so it clears AA over the composited dark plate WHILE
|
|
281
|
+
staying subordinate to the L90 --foreground ink (the quiet-subordinate hierarchy
|
|
282
|
+
preserved — NOT a blanket lift to full ink, which the bright bucket already does).
|
|
283
|
+
Warm-amber (the BB.W-DARK-INK-WARM identity), NOT the slides deck hsl(45 …) literal
|
|
284
|
+
(the deck is the REFERENCE; the library re-derives against its own --card). The
|
|
285
|
+
light arm lives in tokens/glass.css (the plain per-mode pair — the house idiom). */
|
|
286
|
+
--on-glass-muted: hsl(34 16% 72%); /* brighter than the collapsed --neutral-5 L62 (6.63:1 vs the luminous-dark plate; subordinate to --foreground) */
|
|
287
|
+
--on-glass-muted-strong: hsl(36 14% 78%); /* the -strong rung, one step more present (7.75:1 vs plate) */
|
|
288
|
+
--input-on-glass: hsl(26 12% 22%); /* the form-well fill — grounded warm-dark so the L90 input TEXT reads against a stable base (9.3:1) */
|
|
289
|
+
--progress-track-on-glass: hsl(28 14% 26%); /* the recessed meter track — a warm-dark channel distinct from the fill silhouette */
|
|
290
|
+
|
|
291
|
+
/* BA.W-DARK-MATERIAL scope 5 + BB.W-DARK-INK-WARM — the --surface-tint-* dark arm,
|
|
292
|
+
--foreground-DERIVED. The light family is color-mix(in srgb, var(--foreground) N%,
|
|
293
|
+
transparent) — over a near-black dark card a LIGHT-ink (dark --foreground IS light
|
|
294
|
+
cream) tint composites to near-black: the 9-rung chip/hairline/divider scale is
|
|
295
|
+
INVISIBLE in dark. The dark arm re-anchors the mix ink to a BRIGHTER warm off-white
|
|
296
|
+
so a chip/hairline LIFTS off the deep card (the inverse intent of light's dark-ink
|
|
297
|
+
tint). BA executed that intent as a hardcoded hsl(48 12% 96%) literal ×12 — at the
|
|
298
|
+
EXACT OKLab H95.1° yellow-green the SAME tranche's W-NO-GRAY ruled "a cast, not warm
|
|
299
|
+
material", AND a per-rung literal a --foreground re-point can never reach (the
|
|
300
|
+
architectural asymmetry with the light arm + the substitution-vs-redeclaration trap
|
|
301
|
+
at the token mint). BB re-expresses each rung as a oklch(from var(--foreground) 0.975
|
|
302
|
+
c h) RELATIVE-COLOR derivation: the recipe extracts the (now-warmed) dark --foreground's
|
|
303
|
+
warm hue + chroma and lifts the lightness to 0.975 (≈ HEAD's 0.973 ink L, so the chip
|
|
304
|
+
lift off the L16 card is preserved) — the ink CARRIES the --foreground's warm hue
|
|
305
|
+
(OKLab H75.4°) BY DERIVATION (re-point the dark ink → every rung re-resolves warm; a
|
|
306
|
+
future re-tune reaches all 12 from ONE --foreground edit — the symmetry the light arm
|
|
307
|
+
has had since L.W5). The OUTER mix STAYS color-mix(in srgb, … N%, transparent) — the
|
|
308
|
+
SAME 12-rung α ladder + the SAME in-srgb interpolation space the light arm uses (the
|
|
309
|
+
AW.W26 fence holds — the oklch(from …) is the INK SOURCE, not the tint mix space).
|
|
310
|
+
This re-resolves every --surface-tint-* consumer (chip backplates, the dock-rail
|
|
311
|
+
divider, the spine, the timeline dot) in lockstep, zero per-site edit. The 0.975 lift
|
|
312
|
+
sits well under the sRGB gamut edge (the AX css-relative-color book's "browsers don't
|
|
313
|
+
gamut-map yet" caveat does not bite — at 0.975 the small high-L chroma resolves clean;
|
|
314
|
+
lift→1.0 drifts the hue, so 0.975 is the calibrated pin). The css-relative-color
|
|
315
|
+
chronic's FIRST live consumer (the tolerant α-mix the AX book was waiting for). */
|
|
316
|
+
--surface-tint-4: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 4%, transparent);
|
|
317
|
+
--surface-tint-6: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 6%, transparent);
|
|
318
|
+
--surface-tint-8: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 8%, transparent);
|
|
319
|
+
--surface-tint-10: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 10%, transparent);
|
|
320
|
+
--surface-tint-12: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 12%, transparent);
|
|
321
|
+
--surface-tint-15: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 15%, transparent);
|
|
322
|
+
--surface-tint-18: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 18%, transparent);
|
|
323
|
+
--surface-tint-22: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 22%, transparent);
|
|
324
|
+
--surface-tint-25: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 25%, transparent);
|
|
325
|
+
--surface-tint-35: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 35%, transparent);
|
|
326
|
+
--surface-tint-40: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 40%, transparent);
|
|
327
|
+
--surface-tint-70: color-mix(in srgb, oklch(from var(--foreground) 0.975 c h) 70%, transparent);
|
|
267
328
|
|
|
268
329
|
/* Hairline-accent dark mirror — see light counterpart at line ~404. */
|
|
269
330
|
--hairline-catch-light: inset 0 0.5px 0 0 rgb(255 255 255 / 0.05);
|
|
@@ -304,5 +365,16 @@
|
|
|
304
365
|
--silver: oklch(0.792 0.012 255);
|
|
305
366
|
--silver-light: oklch(0.912 0.010 255);
|
|
306
367
|
--silver-dark: oklch(0.648 0.014 255);
|
|
368
|
+
|
|
369
|
+
/* Bronze — lifted for dark (BB.W-METAL-SHIMMER; mirrors gold's dark arm: the
|
|
370
|
+
warm metal lifts ~+0.03 L so the bronze register reads on the deep canvas.
|
|
371
|
+
`--bronze-deep` is mode-invariant — NOT re-declared here, exactly as
|
|
372
|
+
`--gold-deep`/`--silver-deep` are omitted from this dark block). The warm hue
|
|
373
|
+
holds; the chroma stays above the W-NO-GRAY floor. The `.dark`-class fallback
|
|
374
|
+
for engines without `light-dark()` (the §2c lockstep — the light-dark arm AND
|
|
375
|
+
this dark fallback move TOGETHER). */
|
|
376
|
+
--bronze: oklch(0.650 0.090 54.0);
|
|
377
|
+
--bronze-light: oklch(0.790 0.110 60.0);
|
|
378
|
+
--bronze-dark: oklch(0.560 0.085 50.0);
|
|
307
379
|
}
|
|
308
380
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* glass-deep.css — BB.W-DEEP-GLASS — the OPT-IN deep-glass token family.
|
|
3
|
+
*
|
|
4
|
+
* A SEPARATE `--glass-blur-deep-*` token family ABOVE the W-GLASS-CAL calm
|
|
5
|
+
* default (the Apple iOS-27 Liquid-Glass deep register: `saturate(1.8) blur(20px)`
|
|
6
|
+
* measured on Apple's live nav material; glass-ui lands the deep tier in the
|
|
7
|
+
* 14-20px band at a budget-clearing 16px + saturate 1.5). The calm content
|
|
8
|
+
* default is BYTE-UNTOUCHED — this family is minted ALONGSIDE the calm
|
|
9
|
+
* `--glass-blur-*` ladder (tokens/glass.css), which NEVER reads these tokens, so
|
|
10
|
+
* `proof:glass-cal` B1-B3 stay GREEN by construction (the calm default is the
|
|
11
|
+
* user's "a hair too much" call, INVIOLATE).
|
|
12
|
+
*
|
|
13
|
+
* This is the §8-ladder partial sibling of tokens/glass.css (kept OUT of glass.css
|
|
14
|
+
* so the ratchet-baselined glass.css stays at 505); @import-ed in tokens.css
|
|
15
|
+
* AFTER glass.css (the deep family resolves in the same :root cascade slot,
|
|
16
|
+
* adjacent same-selector blocks). The dark deep arm lives in tokens/dark-arm.css
|
|
17
|
+
* (the W-DARK-MATERIAL discipline — the luminous-dark companion beside the calm
|
|
18
|
+
* dark companions).
|
|
19
|
+
*
|
|
20
|
+
* ── The Apple-range derivation (DELTA cross-ref) ───────────────────────────
|
|
21
|
+
* Apple home nav: saturate(1.8) blur(20px) (the canonical measure)
|
|
22
|
+
* Apple product tiers: blur(14-20px) (the band)
|
|
23
|
+
* glass-ui calm ceiling: floating 13px / saturate 1.18 (W-GLASS-CAL dial-back)
|
|
24
|
+
* glass-ui DEEP: 16px / saturate 1.5 (STRICTLY deeper on BOTH axes,
|
|
25
|
+
* in-band, the budget-clearing landing — the full 20px is
|
|
26
|
+
* a BOOKED successor with the recorded throttle number).
|
|
27
|
+
* The deep saturate lands at the LOW end of the 1.5-1.8 band: the Apple 1.8 is
|
|
28
|
+
* measured over a NEUTRAL backdrop; glass-ui's deep tier sits over warm-aurora,
|
|
29
|
+
* and the warm-cream light-concentration ceiling (AX.W52 D19 — a saturate that
|
|
30
|
+
* over-juices a colored substrate reads as a garish smear) keeps it just-rich.
|
|
31
|
+
* The deepest BLUR carries the "more glass" read; the saturate stays restrained.
|
|
32
|
+
*/
|
|
33
|
+
:root {
|
|
34
|
+
/* The Apple-range deep ENDPOINTS — the radius + saturate the deep tier reaches
|
|
35
|
+
at full depth (`--glass-depth: 1`). The calm `floating` rung (13px / 1.18)
|
|
36
|
+
is the depth-0 floor; the deep recipe LERPs between the two on `--glass-depth`
|
|
37
|
+
so the axis is a genuine driver, not a literal. */
|
|
38
|
+
--glass-blur-deep-radius: 16px; /* in [14,20], STRICTLY > calm floating 13px */
|
|
39
|
+
--glass-saturate-deep: 1.5; /* >= 1.5 (toward Apple 1.8), > calm floating 1.18 */
|
|
40
|
+
|
|
41
|
+
/* The deep blur RADIUS — LERPed from the calm floating radius (depth 0) to the
|
|
42
|
+
Apple-deep radius (depth 1) on `--glass-depth`, THEN scaled by the ONE
|
|
43
|
+
`--glass-level` clarity scalar (the W54 seam reaches the deep plate, so the
|
|
44
|
+
opaque escape + the a11y brackets compose: at `--glass-level: 0` the deep
|
|
45
|
+
blur resolves blur(0), the same solid floor). NOT a parallel recipe — the
|
|
46
|
+
deep blur COMPOSES `var(--glass-level)` exactly like every calm rung, and
|
|
47
|
+
reads `var(--glass-depth)` so a host dials the depth on any ancestor. */
|
|
48
|
+
--glass-blur-deep-active-radius:
|
|
49
|
+
calc(
|
|
50
|
+
(
|
|
51
|
+
var(--glass-blur-floating-radius)
|
|
52
|
+
+ (var(--glass-blur-deep-radius) - var(--glass-blur-floating-radius))
|
|
53
|
+
* var(--glass-depth)
|
|
54
|
+
)
|
|
55
|
+
* var(--glass-level)
|
|
56
|
+
);
|
|
57
|
+
/* The deep SATURATE — LERPed from the calm floating saturate (1.18, depth 0)
|
|
58
|
+
to the deep saturate (depth 1) on `--glass-depth`. The saturate is the
|
|
59
|
+
light-concentration lift (chroma-only — it LIFTS the backdrop's existing
|
|
60
|
+
chroma, it does NOT inject a hue; the warm-cream `--card` base is the same). */
|
|
61
|
+
--glass-saturate-deep-active:
|
|
62
|
+
calc(
|
|
63
|
+
1.18 + (var(--glass-saturate-deep) - 1.18) * var(--glass-depth)
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
/* The composed deep backdrop-filter — the SEPARATE deep family. The calm
|
|
67
|
+
ladder never reads this; `.glass-deep` (glass/deep.css) is its only
|
|
68
|
+
consumer. The brightness companion mirrors the calm floating arm's
|
|
69
|
+
light-concentration (the calm floating carries saturate only; the deep
|
|
70
|
+
tier adds a small brightness lift for the thicker-glass read — still no
|
|
71
|
+
hue inject). */
|
|
72
|
+
--glass-blur-deep:
|
|
73
|
+
blur(var(--glass-blur-deep-active-radius))
|
|
74
|
+
saturate(var(--glass-saturate-deep-active));
|
|
75
|
+
}
|