@yewdiel21/motion-kit 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +3 -35
- package/README.md +93 -81
- package/dist/auto/index.d.ts +22 -3
- package/dist/auto/index.js +43 -5
- package/dist/auto/index.js.map +1 -1
- package/dist/{chunk-KLY5BRRI.js → chunk-34EZ7DF4.js} +1 -1
- package/dist/chunk-34EZ7DF4.js.map +1 -0
- package/dist/{chunk-RFDIZYFX.js → chunk-DOOMULVV.js} +20 -20
- package/dist/chunk-DOOMULVV.js.map +1 -0
- package/dist/{chunk-ABNRDDO7.js → chunk-I3DXF2KQ.js} +2 -2
- package/dist/{chunk-Q4LVFNLN.js → chunk-IKQ5FODN.js} +4 -4
- package/dist/chunk-IKQ5FODN.js.map +1 -0
- package/dist/{chunk-2BQGFOA7.js → chunk-J6OCFNGU.js} +2 -2
- package/dist/chunk-J6OCFNGU.js.map +1 -0
- package/dist/{chunk-6OJAP6ZL.js → chunk-QFBOHPWZ.js} +3 -3
- package/dist/chunk-QFBOHPWZ.js.map +1 -0
- package/dist/{chunk-J27KH2A2.js → chunk-RVSKEBIC.js} +1 -1
- package/dist/chunk-RVSKEBIC.js.map +1 -0
- package/dist/{chunk-34XYOXHG.js → chunk-TFNRIZHU.js} +1615 -12
- package/dist/chunk-TFNRIZHU.js.map +1 -0
- package/dist/{chunk-FS2HJVVY.js → chunk-XAKC2QY7.js} +1204 -5
- package/dist/chunk-XAKC2QY7.js.map +1 -0
- package/dist/css/components/calendar.css +159 -0
- package/dist/css/components/chat-background.css +2 -2
- package/dist/css/components/chat.css +1 -1
- package/dist/css/components/cursor.css +3 -3
- package/dist/css/components/dialog.css +3 -3
- package/dist/css/components/hover-card.css +14 -0
- package/dist/css/components/input-otp.css +10 -0
- package/dist/css/components/island.css +1 -1
- package/dist/css/components/menu.css +1 -1
- package/dist/css/components/nav.css +1 -5
- package/dist/css/components/pagination.css +11 -0
- package/dist/css/components/quantity.css +16 -0
- package/dist/css/components/slot-picker.css +126 -0
- package/dist/css/components/steps.css +2 -2
- package/dist/css/components/studio-dock.css +35 -0
- package/dist/css/components/theme-picker.css +1 -1
- package/dist/css/components/toast.css +1 -1
- package/dist/css/components/trailer.css +37 -0
- package/dist/css/controls.css +78 -13
- package/dist/css/effects.css +8 -8
- package/dist/css/fonts.css +1 -1
- package/dist/css/themes/black-green.css +1 -1
- package/dist/css/themes/black.css +1 -1
- package/dist/css/themes/blue.css +1 -1
- package/dist/css/themes/brown.css +1 -1
- package/dist/css/themes/cold-blue.css +1 -1
- package/dist/css/themes/funny.css +1 -1
- package/dist/css/themes/gray.css +1 -1
- package/dist/css/themes/green.css +1 -1
- package/dist/css/themes/modern-1.css +1 -1
- package/dist/css/themes/neogreen.css +1 -1
- package/dist/css/themes/new.css +1 -1
- package/dist/css/themes/new2.css +1 -1
- package/dist/css/themes/oled.css +1 -1
- package/dist/css/themes/orange.css +1 -1
- package/dist/css/themes/pastel-pink.css +1 -1
- package/dist/css/themes/pink.css +1 -1
- package/dist/css/themes/purple.css +1 -1
- package/dist/css/themes/red.css +1 -1
- package/dist/css/themes/super-blue.css +1 -1
- package/dist/css/themes.css +19 -19
- package/dist/css/tokens.css +9 -9
- package/dist/elements/index.d.ts +75 -7
- package/dist/elements/index.js +172 -6
- package/dist/elements/index.js.map +1 -1
- package/dist/{engine-CUr9QijM.d.ts → engine-GDGwQnJE.d.ts} +2 -2
- package/dist/gl/index.js +3 -3
- package/dist/index.css +1076 -63
- package/dist/index.d.ts +17 -17
- package/dist/index.js +49 -7
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +139 -40
- package/dist/react/index.js +355 -8
- package/dist/react/index.js.map +1 -1
- package/dist/{reduced-BM4Ls0g5.d.ts → reduced-BmBzKH94.d.ts} +215 -18
- package/dist/{reveal-WFUWDrei.d.ts → reveal-jsX-uwUz.d.ts} +233 -24
- package/dist/{store-Bqy_obnD.d.ts → store-DYb3tTsZ.d.ts} +5 -5
- package/dist/theme/generate.d.ts +1 -1
- package/dist/theme/generate.js +2 -2
- package/dist/theme/generate.js.map +1 -1
- package/dist/theme/index.d.ts +2 -2
- package/dist/theme/index.js +2 -2
- package/dist/{theme-BFMoCzi6.d.ts → theme-Bjf9qIIy.d.ts} +1 -1
- package/package.json +2 -2
- package/registry.json +230 -156
- package/skills/motion-kit/SKILL.md +209 -189
- package/skills/motion-kit/reference/components.md +5 -5
- package/skills/motion-kit/reference/design.md +14 -14
- package/skills/motion-kit/reference/recipes.md +48 -49
- package/src/auto/auto-init.ts +38 -0
- package/src/components/calendar/README.md +82 -0
- package/src/components/calendar/calendar.css +158 -0
- package/src/components/calendar/element.ts +27 -0
- package/src/components/calendar/engine.ts +412 -0
- package/src/components/calendar/react.tsx +69 -0
- package/src/components/chat/README.md +1 -3
- package/src/components/chat/chat.css +1 -1
- package/src/components/chat/engine.ts +1 -1
- package/src/components/chat/react.tsx +1 -1
- package/src/components/chat-background/README.md +1 -3
- package/src/components/chat-background/audio.ts +1 -1
- package/src/components/chat-background/chat-background.css +2 -2
- package/src/components/chat-background/engine.ts +1 -1
- package/src/components/chat-background/react.tsx +1 -1
- package/src/components/cursor/README.md +3 -5
- package/src/components/cursor/cursor.css +3 -3
- package/src/components/cursor/element.ts +2 -2
- package/src/components/cursor/engine.ts +5 -5
- package/src/components/cursor/react.tsx +1 -1
- package/src/components/dialog/README.md +4 -8
- package/src/components/dialog/dialog.css +3 -3
- package/src/components/dialog/engine.ts +2 -2
- package/src/components/dialog/react.tsx +1 -1
- package/src/components/hover-card/README.md +16 -0
- package/src/components/hover-card/element.ts +8 -0
- package/src/components/hover-card/engine.ts +69 -0
- package/src/components/hover-card/hover-card.css +13 -0
- package/src/components/hover-card/react.tsx +19 -0
- package/src/components/input-otp/README.md +18 -0
- package/src/components/input-otp/element.ts +14 -0
- package/src/components/input-otp/engine.ts +106 -0
- package/src/components/input-otp/input-otp.css +9 -0
- package/src/components/input-otp/react.tsx +21 -0
- package/src/components/island/README.md +7 -7
- package/src/components/island/engine.ts +3 -3
- package/src/components/island/island.css +1 -1
- package/src/components/island/react.tsx +3 -3
- package/src/components/menu/README.md +2 -4
- package/src/components/menu/engine.ts +1 -1
- package/src/components/menu/menu.css +1 -1
- package/src/components/menu/react.tsx +1 -1
- package/src/components/nav/README.md +12 -14
- package/src/components/nav/engine.ts +5 -5
- package/src/components/nav/nav.css +1 -5
- package/src/components/nav/react.tsx +3 -3
- package/src/components/pagination/README.md +17 -0
- package/src/components/pagination/element.ts +14 -0
- package/src/components/pagination/engine.ts +102 -0
- package/src/components/pagination/pagination.css +10 -0
- package/src/components/pagination/react.tsx +22 -0
- package/src/components/quantity/README.md +20 -0
- package/src/components/quantity/element.ts +14 -0
- package/src/components/quantity/engine.ts +85 -0
- package/src/components/quantity/quantity.css +15 -0
- package/src/components/quantity/react.tsx +21 -0
- package/src/components/slot-picker/README.md +68 -0
- package/src/components/slot-picker/element.ts +27 -0
- package/src/components/slot-picker/engine.ts +412 -0
- package/src/components/slot-picker/react.tsx +76 -0
- package/src/components/slot-picker/slot-picker.css +125 -0
- package/src/components/steps/README.md +1 -3
- package/src/components/steps/engine.ts +3 -3
- package/src/components/steps/react.tsx +2 -2
- package/src/components/steps/steps.css +2 -2
- package/src/components/studio-dock/README.md +44 -0
- package/src/components/studio-dock/element.ts +11 -0
- package/src/components/studio-dock/engine.ts +212 -0
- package/src/components/studio-dock/react.tsx +23 -0
- package/src/components/studio-dock/studio-dock.css +34 -0
- package/src/components/theme-picker/README.md +3 -5
- package/src/components/theme-picker/engine.ts +2 -2
- package/src/components/theme-picker/react.tsx +1 -1
- package/src/components/theme-picker/theme-picker.css +1 -1
- package/src/components/toast/README.md +1 -3
- package/src/components/toast/engine.ts +2 -2
- package/src/components/toast/react.tsx +1 -1
- package/src/components/toast/store.ts +1 -2
- package/src/components/toast/toast.css +1 -1
- package/src/components/trailer/README.md +28 -0
- package/src/components/trailer/element.ts +13 -0
- package/src/components/trailer/engine.ts +189 -0
- package/src/components/trailer/react.tsx +16 -0
- package/src/components/trailer/trailer.css +36 -0
- package/src/core/channels.ts +3 -3
- package/src/core/curves.ts +3 -3
- package/src/core/dates.ts +98 -0
- package/src/core/gsap.ts +2 -2
- package/src/core/loop.ts +1 -1
- package/src/core/math.ts +1 -1
- package/src/core/physics-spring.ts +2 -2
- package/src/core/scroll-track.ts +2 -4
- package/src/core/spring.ts +1 -1
- package/src/core/timing.ts +21 -22
- package/src/css/controls/README.md +24 -20
- package/src/css/controls/burger.css +1 -1
- package/src/css/controls/button.css +4 -4
- package/src/css/controls/checkbox.css +1 -1
- package/src/css/controls/chip.css +1 -1
- package/src/css/controls/field.css +2 -2
- package/src/css/controls/glass.css +4 -4
- package/src/css/controls/status.css +63 -0
- package/src/css/default-theme.css +1 -1
- package/src/css/effects/README.md +19 -21
- package/src/css/effects/anim.css +1 -1
- package/src/css/effects/fade.css +1 -1
- package/src/css/effects/float.css +1 -1
- package/src/css/effects/frost.css +1 -1
- package/src/css/effects/grain.css +1 -1
- package/src/css/effects/loading.css +1 -1
- package/src/css/effects/success.css +1 -1
- package/src/css/effects/text.css +1 -1
- package/src/css/fonts.css +1 -1
- package/src/css/states.css +1 -1
- package/src/css/themes/black-green.css +1 -1
- package/src/css/themes/black.css +1 -1
- package/src/css/themes/blue.css +1 -1
- package/src/css/themes/brown.css +1 -1
- package/src/css/themes/cold-blue.css +1 -1
- package/src/css/themes/funny.css +1 -1
- package/src/css/themes/gray.css +1 -1
- package/src/css/themes/green.css +1 -1
- package/src/css/themes/modern-1.css +1 -1
- package/src/css/themes/neogreen.css +1 -1
- package/src/css/themes/new.css +1 -1
- package/src/css/themes/new2.css +1 -1
- package/src/css/themes/oled.css +1 -1
- package/src/css/themes/orange.css +1 -1
- package/src/css/themes/pastel-pink.css +1 -1
- package/src/css/themes/pink.css +1 -1
- package/src/css/themes/purple.css +1 -1
- package/src/css/themes/red.css +1 -1
- package/src/css/themes/super-blue.css +1 -1
- package/src/css/tokens.css +8 -8
- package/src/elements/index.ts +24 -0
- package/src/gl/liquid-blend/README.md +3 -3
- package/src/gl/matcap/README.md +3 -3
- package/src/gl/particle-hero/README.md +1 -1
- package/src/gl/particle-hero/create-particle-hero.ts +3 -5
- package/src/gl/particle-hero/shaders.ts +1 -1
- package/src/gl/shader-blur/README.md +3 -3
- package/src/gl/shader-grain/README.md +3 -3
- package/src/index.ts +25 -0
- package/src/motion/chat.ts +2 -2
- package/src/motion/confetti.ts +1 -1
- package/src/motion/count.ts +1 -1
- package/src/motion/details.ts +1 -1
- package/src/motion/drag-dismiss.ts +1 -1
- package/src/motion/effects.ts +1 -1
- package/src/motion/entrances.ts +1 -1
- package/src/motion/floating.ts +1 -1
- package/src/motion/flow.ts +2 -2
- package/src/motion/indicator.ts +1 -1
- package/src/motion/layout.ts +1 -1
- package/src/motion/liquid.ts +1 -1
- package/src/motion/morph.ts +2 -2
- package/src/motion/reveal.ts +1 -1
- package/src/motion/sheet.ts +1 -1
- package/src/motion/surface.ts +1 -1
- package/src/react/animated-number.tsx +2 -2
- package/src/react/flip-group.tsx +1 -1
- package/src/react/frost.tsx +1 -1
- package/src/react/index.ts +21 -0
- package/src/react/slot-text.tsx +1 -1
- package/src/react/use-action-button.ts +6 -0
- package/src/react/use-card-dock.ts +1 -1
- package/src/react/use-cascade.ts +1 -1
- package/src/react/use-contrast.ts +1 -1
- package/src/react/use-depth-grid.ts +1 -1
- package/src/react/use-editorial-reveal.ts +7 -0
- package/src/react/use-fill-text.ts +1 -1
- package/src/react/use-film-hero.ts +6 -0
- package/src/react/use-font-cycle.ts +7 -0
- package/src/react/use-frame-zoom.ts +1 -1
- package/src/react/use-image-zoom.ts +5 -0
- package/src/react/use-joined-cta.ts +5 -0
- package/src/react/use-letters.ts +1 -1
- package/src/react/use-local-clock.ts +5 -0
- package/src/react/use-marquee.ts +1 -1
- package/src/react/use-mask-text.ts +1 -1
- package/src/react/use-parallax.ts +1 -1
- package/src/react/use-particle-hero.ts +1 -1
- package/src/react/use-scroll-dock.ts +5 -0
- package/src/react/use-snap-strip.ts +1 -1
- package/src/react/use-sticker.ts +5 -0
- package/src/react/use-studio-dock.ts +8 -0
- package/src/react/use-text-roll.ts +1 -1
- package/src/react/use-thumbnail-nav.ts +7 -0
- package/src/react/use-trailer.ts +6 -0
- package/src/react/use-weight-hover.ts +5 -0
- package/src/recipes/action-button/README.md +31 -0
- package/src/recipes/action-button/action-button.css +113 -0
- package/src/recipes/action-button/create-action-button.ts +56 -0
- package/src/recipes/card-dock/README.md +1 -1
- package/src/recipes/card-dock/card-dock.css +1 -1
- package/src/recipes/card-dock/create-card-dock.ts +2 -2
- package/src/recipes/cascade/README.md +1 -3
- package/src/recipes/cascade/create-cascade.ts +3 -3
- package/src/recipes/contrast/README.md +0 -2
- package/src/recipes/contrast/create-contrast.ts +1 -1
- package/src/recipes/counter/README.md +0 -2
- package/src/recipes/counter/create-counter.ts +1 -1
- package/src/recipes/curved-carousel/README.md +0 -2
- package/src/recipes/curved-carousel/create-curved-carousel.ts +2 -2
- package/src/recipes/curved-carousel/curved-carousel.css +1 -1
- package/src/recipes/depth-grid/README.md +0 -2
- package/src/recipes/depth-grid/create-depth-grid.ts +3 -4
- package/src/recipes/details/README.md +0 -2
- package/src/recipes/details/create-details.ts +1 -1
- package/src/recipes/dock-pill/README.md +3 -3
- package/src/recipes/drag-ruler/README.md +3 -3
- package/src/recipes/editorial-reveal/README.md +35 -0
- package/src/recipes/editorial-reveal/create-editorial-reveal.ts +91 -0
- package/src/recipes/editorial-reveal/editorial-reveal.css +17 -0
- package/src/recipes/fill-text/README.md +1 -1
- package/src/recipes/fill-text/create-fill-text.ts +1 -1
- package/src/recipes/film-hero/README.md +23 -0
- package/src/recipes/film-hero/create-film-hero.ts +65 -0
- package/src/recipes/film-hero/film-hero.css +29 -0
- package/src/recipes/fit-text/README.md +0 -2
- package/src/recipes/flow/README.md +0 -2
- package/src/recipes/flow/create-flow.ts +1 -1
- package/src/recipes/font-cycle/README.md +11 -0
- package/src/recipes/font-cycle/create-font-cycle.ts +126 -0
- package/src/recipes/font-cycle/font-cycle.css +36 -0
- package/src/recipes/frame-zoom/README.md +1 -3
- package/src/recipes/frame-zoom/create-frame-zoom.ts +2 -2
- package/src/recipes/image-zoom/README.md +16 -0
- package/src/recipes/image-zoom/create-image-zoom.ts +27 -0
- package/src/recipes/image-zoom/image-zoom.css +7 -0
- package/src/recipes/infinite-reel/README.md +3 -3
- package/src/recipes/joined-cta/README.md +13 -0
- package/src/recipes/joined-cta/create-joined-cta.ts +22 -0
- package/src/recipes/joined-cta/joined-cta.css +17 -0
- package/src/recipes/letters/README.md +2 -4
- package/src/recipes/letters/create-letters.ts +3 -3
- package/src/recipes/local-clock/README.md +31 -0
- package/src/recipes/local-clock/create-local-clock.ts +61 -0
- package/src/recipes/marquee/README.md +0 -2
- package/src/recipes/marquee/create-marquee.ts +3 -3
- package/src/recipes/marquee/marquee.css +1 -1
- package/src/recipes/mask-text/README.md +3 -5
- package/src/recipes/mask-text/create-mask-text.ts +4 -4
- package/src/recipes/parallax/README.md +1 -3
- package/src/recipes/parallax/create-parallax.ts +1 -1
- package/src/recipes/pile/README.md +0 -2
- package/src/recipes/pile/create-pile.ts +1 -1
- package/src/recipes/pile/pile-math.ts +1 -1
- package/src/recipes/pile/pile.css +1 -1
- package/src/recipes/pill/README.md +0 -2
- package/src/recipes/pill/pill.css +2 -2
- package/src/recipes/pop/README.md +0 -2
- package/src/recipes/pop/create-pop.ts +1 -1
- package/src/recipes/radial-menu/README.md +0 -2
- package/src/recipes/radial-menu/create-radial-menu.ts +1 -1
- package/src/recipes/radial-menu/radial-menu.css +1 -1
- package/src/recipes/reflow/README.md +3 -5
- package/src/recipes/reflow/create-reflow.ts +1 -1
- package/src/recipes/repel-bento/README.md +3 -3
- package/src/recipes/reveal/README.md +0 -2
- package/src/recipes/reveal/create-reveal.ts +1 -1
- package/src/recipes/rotator/README.md +3 -3
- package/src/recipes/scroll-dock/README.md +46 -0
- package/src/recipes/scroll-dock/create-scroll-dock.ts +72 -0
- package/src/recipes/scroll-dock/scroll-dock.css +70 -0
- package/src/recipes/slot-text/README.md +0 -2
- package/src/recipes/slot-text/create-slot-text.ts +1 -1
- package/src/recipes/snap-strip/README.md +1 -1
- package/src/recipes/snap-strip/create-snap-strip.ts +5 -6
- package/src/recipes/snap-strip/snap-strip.css +1 -1
- package/src/recipes/sortable/README.md +3 -5
- package/src/recipes/sortable/create-sortable.ts +4 -4
- package/src/recipes/sortable/sortable.css +1 -1
- package/src/recipes/spring-cards/README.md +0 -2
- package/src/recipes/spring-cards/create-spring-cards.ts +1 -1
- package/src/recipes/spring-cards/spring-cards.css +1 -1
- package/src/recipes/sticker/README.md +59 -0
- package/src/recipes/sticker/create-sticker.ts +490 -0
- package/src/recipes/sticker/sticker.css +112 -0
- package/src/recipes/stretch-footer/README.md +0 -2
- package/src/recipes/stretch-footer/create-stretch-footer.ts +1 -1
- package/src/recipes/stretch-footer/stretch-footer.css +1 -1
- package/src/recipes/tabs/README.md +0 -2
- package/src/recipes/tabs/create-tabs.ts +1 -1
- package/src/recipes/text-roll/README.md +1 -3
- package/src/recipes/text-roll/create-text-roll.ts +3 -3
- package/src/recipes/text-roll/text-roll.css +1 -1
- package/src/recipes/thumbnail-nav/README.md +16 -0
- package/src/recipes/thumbnail-nav/create-thumbnail-nav.ts +165 -0
- package/src/recipes/thumbnail-nav/thumbnail-nav.css +108 -0
- package/src/recipes/ticket-menu/README.md +3 -3
- package/src/recipes/weight-hover/README.md +37 -0
- package/src/recipes/weight-hover/create-weight-hover.ts +136 -0
- package/src/recipes/weight-hover/weight-hover.css +7 -0
- package/src/recipes/words/README.md +0 -2
- package/src/recipes/words/create-words.ts +1 -1
- package/src/theme/generate.ts +1 -1
- package/src/theme/presets.ts +2 -2
- package/src/theme/theme.ts +1 -2
- package/dist/chunk-2BQGFOA7.js.map +0 -1
- package/dist/chunk-34XYOXHG.js.map +0 -1
- package/dist/chunk-6OJAP6ZL.js.map +0 -1
- package/dist/chunk-FS2HJVVY.js.map +0 -1
- package/dist/chunk-J27KH2A2.js.map +0 -1
- package/dist/chunk-KLY5BRRI.js.map +0 -1
- package/dist/chunk-Q4LVFNLN.js.map +0 -1
- package/dist/chunk-RFDIZYFX.js.map +0 -1
- /package/dist/{chunk-ABNRDDO7.js.map → chunk-I3DXF2KQ.js.map} +0 -0
package/dist/index.css
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/* css/tokens.css */
|
|
2
2
|
/* motion-kit tokens — override any of them on :root, on a [data-mk-theme] or on a component. */
|
|
3
3
|
:root {
|
|
4
|
-
/*
|
|
4
|
+
/* Elastic curves */
|
|
5
5
|
--mk-ease-elastic: linear(0, 0.5737 7.6%, 0.8382 11.87%, 0.9463 14.19%, 1.0292 16.54%, 1.0886 18.97%, 1.1258 21.53%, 1.137 22.97%, 1.1424 24.48%, 1.1423 26.1%, 1.1366 27.86%, 1.1165 31.01%, 1.0507 38.62%, 1.0219 42.57%, 0.9995 46.99%, 0.9872 51.63%, 0.9842 58.77%, 1.0011 81.26%, 1);
|
|
6
6
|
--mk-ease-elastic-hover: linear(0, 0.2178 2.1%, 1.1144 8.49%, 1.2959 10.7%, 1.3463 11.81%, 1.3705 12.94%, 1.3726, 1.3643 14.48%, 1.3151 16.2%, 1.0317 21.81%, 0.941 24.01%, 0.8912 25.91%, 0.8694 27.84%, 0.8698 29.21%, 0.8824 30.71%, 1.0122 38.33%, 1.0357, 1.046 42.71%, 1.0416 45.7%, 0.9961 53.26%, 0.9839 57.54%, 0.9853 60.71%, 1.0012 68.14%, 1.0056 72.24%, 0.9981 86.66%, 1);
|
|
7
7
|
|
|
8
|
-
/*
|
|
8
|
+
/* Motion curves. The signature is a multi-point path sampled as CSS linear(). */
|
|
9
9
|
--mk-ease-signature: linear(0 0%, .017 2.5%, .037 5%, .061 7.5%, .091 10%, .13 12.5%, .184 15%, .275 17.5%, .562 20%, .733 22.5%, .803 25%, .848 27.5%, .88 30%, .902 32.5%, .942 40%, .97 50%, .985 60%, .993 70%, .998 80%, 1 90%, 1 100%);
|
|
10
|
-
/*
|
|
10
|
+
/* backdrop tint uses the same curve. */
|
|
11
11
|
--mk-ease-tint: var(--mk-ease-signature);
|
|
12
12
|
--mk-ease-flow: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
13
13
|
--mk-ease-close: cubic-bezier(0.56, 0.27, 0, 1);
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
--mk-ease-swatch: cubic-bezier(0.38, 0.49, 0, 1.5);
|
|
18
18
|
--mk-ease-swatch-light: cubic-bezier(0.11, 1, 0, 1);
|
|
19
19
|
--mk-ease-slot: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
20
|
-
/*
|
|
20
|
+
/* Glass, sheet and control curves */
|
|
21
21
|
--mk-ease-glass: cubic-bezier(0.25, 1, 0.5, 1);
|
|
22
22
|
--mk-ease-sheet: cubic-bezier(0.16, 1, 0.3, 1);
|
|
23
23
|
--mk-ease-siena: cubic-bezier(0.19, 1, 0.22, 1);
|
|
24
24
|
--mk-ease-quint: cubic-bezier(0.23, 1, 0.32, 1);
|
|
25
|
-
/*
|
|
25
|
+
/* springs (Motion 400/10 press, 260/18 success), sampled by springLinear(); a test keeps them in sync. */
|
|
26
26
|
--mk-ease-press: linear(0, 0.1957, 0.6333, 1.0817, 1.3717, 1.4412, 1.3274, 1.1249, 0.934, 0.8221, 0.808, 0.8691, 0.9612, 1.0413, 1.0833, 1.0824, 1.0513, 1.01, 0.9769, 0.9618, 0.9651, 0.9804, 0.9986, 1.0121, 1.0173, 1.0146, 1.0072, 0.9993, 0.9939, 0.9923, 0.994, 0.9974, 1.0008, 1.003, 1.0034, 1.0024, 1.0008, 0.9994, 0.9986, 0.9985, 1);
|
|
27
27
|
--mk-dur-press: 1.346s;
|
|
28
28
|
--mk-ease-success: linear(0, 0.0437, 0.1533, 0.3004, 0.4617, 0.6197, 0.7624, 0.8825, 0.9767, 1.0451, 1.0895, 1.1133, 1.1208, 1.1161, 1.1032, 1.0856, 1.0662, 1.047, 1.0296, 1.0149, 1.0034, 0.9949, 0.9894, 0.9864, 0.9854, 0.9859, 0.9874, 0.9895, 0.9919, 0.9942, 0.9963, 0.9981, 0.9995, 1.0006, 1.0012, 1.0016, 1.0018, 1.0017, 1.0015, 1.0013, 1);
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
--mk-shadow: 0 9px 21px rgb(0 0 0 / 0.1), 0 38px 38px rgb(0 0 0 / 0.09), 0 85px 51px rgb(0 0 0 / 0.05);
|
|
36
36
|
--mk-shadow-soft: 0 9px 21px rgb(0 0 0 / 0.05), 0 38px 38px rgb(0 0 0 / 0.045), 0 85px 51px rgb(0 0 0 / 0.025);
|
|
37
37
|
|
|
38
|
-
/* Shape:
|
|
38
|
+
/* Shape: large capsules */
|
|
39
39
|
--mk-radius-card: 1rem;
|
|
40
40
|
--mk-radius-xs: 8px;
|
|
41
41
|
--mk-radius-sm: 12px;
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
--mk-radius-chat: var(--mk-radius-3xl);
|
|
52
52
|
--mk-radius-dock: var(--mk-radius-4xl);
|
|
53
53
|
|
|
54
|
-
/* Spacing, 4 px steps.
|
|
54
|
+
/* Spacing, 4 px steps. navigation breakpoint is 680px (media queries use it literally). */
|
|
55
55
|
--mk-space-1: 4px;
|
|
56
56
|
--mk-space-2: 8px;
|
|
57
57
|
--mk-space-3: 12px;
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
/* Type: DM Sans, Geist Mono, Material Symbols Rounded (css/fonts.css loads them). */
|
|
74
74
|
--mk-font: 'DM Sans', ui-sans-serif, system-ui, sans-serif;
|
|
75
75
|
--mk-font-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
76
|
-
/* Material 3 type scale
|
|
76
|
+
/* Material 3 type scale; font weights are unitless. */
|
|
77
77
|
--md-sys-typescale-display-large-font: var(--mk-font);
|
|
78
78
|
--md-sys-typescale-display-large-size: 57px;
|
|
79
79
|
--md-sys-typescale-display-large-line-height: 64px;
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
/* css/default-theme.css */
|
|
186
|
-
/* Default palette
|
|
186
|
+
/* Default palette with zero specificity: any [data-mk-theme] wins.
|
|
187
187
|
Generated by scripts/import-themes.mjs; do not edit. */
|
|
188
188
|
:where(:root) {
|
|
189
189
|
--md-sys-color-background: #f1fded;
|
|
@@ -467,7 +467,7 @@
|
|
|
467
467
|
visibility: hidden;
|
|
468
468
|
}
|
|
469
469
|
|
|
470
|
-
/*
|
|
470
|
+
/* the island drops in from above, the fill-text starts dimmed. */
|
|
471
471
|
.mk-js:not(.mk-failed) :is(.mk-island, mk-island):not([data-mk-ready]) .mk-island__shell {
|
|
472
472
|
visibility: hidden;
|
|
473
473
|
}
|
|
@@ -505,7 +505,7 @@
|
|
|
505
505
|
}
|
|
506
506
|
|
|
507
507
|
/* recipes/spring-cards/spring-cards.css */
|
|
508
|
-
/* spring-cards — card geometry and tilt
|
|
508
|
+
/* spring-cards — card geometry and tilt */
|
|
509
509
|
|
|
510
510
|
[data-mk-card] {
|
|
511
511
|
display: grid;
|
|
@@ -531,7 +531,7 @@
|
|
|
531
531
|
|
|
532
532
|
/* recipes/curved-carousel/curved-carousel.css */
|
|
533
533
|
/*
|
|
534
|
-
* curved-carousel —
|
|
534
|
+
* curved-carousel — Layout rules apply only while the
|
|
535
535
|
* recipe runs (`[data-mk-carousel]`); without JS the root keeps whatever fallback
|
|
536
536
|
* the page gives it (e.g. a horizontal scroll row).
|
|
537
537
|
*/
|
|
@@ -582,7 +582,7 @@
|
|
|
582
582
|
}
|
|
583
583
|
|
|
584
584
|
/* recipes/pile/pile.css */
|
|
585
|
-
/* pile —
|
|
585
|
+
/* pile — stacked card geometry */
|
|
586
586
|
|
|
587
587
|
.mk-pile {
|
|
588
588
|
display: grid;
|
|
@@ -656,7 +656,7 @@
|
|
|
656
656
|
|
|
657
657
|
/* recipes/stretch-footer/stretch-footer.css */
|
|
658
658
|
/*
|
|
659
|
-
* stretch-footer —
|
|
659
|
+
* stretch-footer — The page content must sit above it:
|
|
660
660
|
* give <main> `position: relative; z-index: 1; background: <page colour>`.
|
|
661
661
|
*/
|
|
662
662
|
|
|
@@ -685,7 +685,7 @@
|
|
|
685
685
|
}
|
|
686
686
|
|
|
687
687
|
/* recipes/radial-menu/radial-menu.css */
|
|
688
|
-
/* radial-menu —
|
|
688
|
+
/* radial-menu — radial-menu. Scoped to its root:
|
|
689
689
|
[data-mk-item] and [data-mk-open] are also used by other recipes and components. */
|
|
690
690
|
|
|
691
691
|
[data-mk~="radial-menu"],
|
|
@@ -732,7 +732,7 @@
|
|
|
732
732
|
}
|
|
733
733
|
|
|
734
734
|
/* recipes/pill/pill.css */
|
|
735
|
-
/* pill —
|
|
735
|
+
/* pill — pill: elastic scale and shadow */
|
|
736
736
|
|
|
737
737
|
.mk-pill {
|
|
738
738
|
display: inline-flex;
|
|
@@ -768,7 +768,7 @@
|
|
|
768
768
|
}
|
|
769
769
|
}
|
|
770
770
|
|
|
771
|
-
/* Stretch on hover (
|
|
771
|
+
/* Stretch on hover (stretch-footer links) */
|
|
772
772
|
.mk-stretch {
|
|
773
773
|
display: inline-block;
|
|
774
774
|
transform-origin: 50% 100%;
|
|
@@ -847,7 +847,7 @@
|
|
|
847
847
|
}
|
|
848
848
|
|
|
849
849
|
/* recipes/sortable/sortable.css */
|
|
850
|
-
/* sortable —
|
|
850
|
+
/* sortable — drag reorder: the item lifts into a floating copy that tilts; the others make room. */
|
|
851
851
|
[data-mk-sorting] {
|
|
852
852
|
-webkit-user-select: none;
|
|
853
853
|
user-select: none;
|
|
@@ -889,7 +889,7 @@
|
|
|
889
889
|
}
|
|
890
890
|
|
|
891
891
|
/* recipes/text-roll/text-roll.css */
|
|
892
|
-
/* text-roll —
|
|
892
|
+
/* text-roll — slot title: each letter is a reel (its face and a copy below), clipped to one line. */
|
|
893
893
|
.mk-roll-word {
|
|
894
894
|
white-space: nowrap;
|
|
895
895
|
}
|
|
@@ -912,7 +912,7 @@
|
|
|
912
912
|
}
|
|
913
913
|
|
|
914
914
|
/* recipes/marquee/marquee.css */
|
|
915
|
-
/* marquee —
|
|
915
|
+
/* marquee — strip: every copy of the group slides its own length in a linear loop. */
|
|
916
916
|
.mk-marquee {
|
|
917
917
|
display: flex;
|
|
918
918
|
gap: var(--mk-marquee-gap, 0px);
|
|
@@ -956,7 +956,7 @@
|
|
|
956
956
|
|
|
957
957
|
/* recipes/card-dock/card-dock.css */
|
|
958
958
|
/*
|
|
959
|
-
*
|
|
959
|
+
* product dock. Cards are .mk-card-dock__item children (the last one
|
|
960
960
|
* is the front card); the optional .mk-card-dock__cta shows next to the stack
|
|
961
961
|
* once it has settled. Without JavaScript the stack still opens on hover/focus.
|
|
962
962
|
*/
|
|
@@ -1135,7 +1135,7 @@
|
|
|
1135
1135
|
}
|
|
1136
1136
|
|
|
1137
1137
|
/* recipes/snap-strip/snap-strip.css */
|
|
1138
|
-
/*
|
|
1138
|
+
/* phone cards: a strip of cards that snaps to each one. */
|
|
1139
1139
|
.mk-snap-strip {
|
|
1140
1140
|
--mk-snap-strip-item: 68vw;
|
|
1141
1141
|
--mk-snap-strip-gap: 0.75rem;
|
|
@@ -1245,8 +1245,544 @@
|
|
|
1245
1245
|
.mk-shader__canvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
|
|
1246
1246
|
.mk-shader__canvas[hidden] { display: none; }
|
|
1247
1247
|
|
|
1248
|
+
/* recipes/joined-cta/joined-cta.css */
|
|
1249
|
+
.mk-joined-cta { --mk-joined-duration: .5s; --mk-joined-bg: var(--mk-text); --mk-joined-color: var(--mk-bg); position: relative; display: inline-flex; align-items: center; justify-content: center; width: 17.7rem; height: 5.9rem; max-width: 100%; border: 0; padding: 0; background: transparent; text-decoration: none; color: var(--mk-joined-color); cursor: pointer; font: inherit; isolation: isolate; border-radius: var(--mk-radius-full); }
|
|
1250
|
+
.mk-joined-cta::before { content: ''; position: absolute; left: 0; width: 7.3rem; height: 5.9rem; border-radius: 100px; background: var(--mk-joined-bg); z-index: -1; transition: width var(--mk-joined-duration) ease-in-out; }
|
|
1251
|
+
.mk-joined-cta > span { position: relative; display: grid; place-items: center; flex-shrink: 0; background: var(--mk-joined-bg); border-radius: 100px; height: 5.9rem; transition: left var(--mk-joined-duration) ease-in-out, height var(--mk-joined-duration) ease-in-out, transform var(--mk-joined-duration) ease-in-out, background var(--mk-joined-duration); }
|
|
1252
|
+
.mk-joined-cta > span:nth-child(1) { width: 7.3rem; left: 0; }
|
|
1253
|
+
.mk-joined-cta > span:nth-child(2) { width: 4.5rem; left: 0; z-index: 2; }
|
|
1254
|
+
.mk-joined-cta > span:nth-child(3) { width: 5.9rem; height: 3.05rem; left: -1.45rem; transform: rotate(-90deg); }
|
|
1255
|
+
.mk-joined-cta:is(:hover,:focus-visible,[data-mk-expanded])::before { width: 17.7rem; }
|
|
1256
|
+
.mk-joined-cta:is(:hover,:focus-visible,[data-mk-expanded]) > span:nth-child(1) { left: 3.2rem; }
|
|
1257
|
+
.mk-joined-cta:is(:hover,:focus-visible,[data-mk-expanded]) > span:nth-child(2) { left: -.75rem; background: transparent; }
|
|
1258
|
+
.mk-joined-cta:is(:hover,:focus-visible,[data-mk-expanded]) > span:nth-child(3) { left: -3.65rem; height: 5.9rem; transform: rotate(0); }
|
|
1259
|
+
.mk-joined-cta:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 5px; }
|
|
1260
|
+
@media (hover: none), (max-width: 420px) {
|
|
1261
|
+
.mk-joined-cta { width: auto; height: auto; padding: 1.25rem 2rem; gap: .3em; background: var(--mk-joined-bg); }
|
|
1262
|
+
.mk-joined-cta::before { display: none; }
|
|
1263
|
+
.mk-joined-cta > span:nth-child(n) { width: auto; height: auto; left: 0; transform: none; background: transparent; }
|
|
1264
|
+
}
|
|
1265
|
+
@media (prefers-reduced-motion: reduce) { .mk-joined-cta::before, .mk-joined-cta > span { transition: none; } }
|
|
1266
|
+
|
|
1267
|
+
/* recipes/image-zoom/image-zoom.css */
|
|
1268
|
+
.mk-image-zoom { --mk-zoom-duration: 1s; --mk-zoom-frame-scale: 1.1; --mk-zoom-image-scale: 1.2; --mk-zoom-ease: cubic-bezier(.28,.71,0,.98); color: inherit; text-decoration: none; }
|
|
1269
|
+
.mk-image-zoom [data-mk-zoom-frame] { display: block; overflow: hidden; border-radius: inherit; transition: transform var(--mk-zoom-duration) var(--mk-zoom-ease); }
|
|
1270
|
+
.mk-image-zoom [data-mk-zoom-frame] > :is(img,video,picture), .mk-image-zoom [data-mk-zoom-image] { display: block; width: 100%; height: 100%; object-fit: cover; transform: scale(var(--mk-zoom-image-scale)); transition: transform var(--mk-zoom-duration) var(--mk-zoom-ease); }
|
|
1271
|
+
.mk-image-zoom:is(:hover,:focus-within,[data-mk-active]) [data-mk-zoom-frame] { transform: scale(var(--mk-zoom-frame-scale)); }
|
|
1272
|
+
.mk-image-zoom:is(:hover,:focus-within,[data-mk-active]) [data-mk-zoom-frame] > :is(img,video,picture), .mk-image-zoom:is(:hover,:focus-within,[data-mk-active]) [data-mk-zoom-image] { transform: scale(1); }
|
|
1273
|
+
.mk-image-zoom:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 5px; }
|
|
1274
|
+
@media (prefers-reduced-motion: reduce) { .mk-image-zoom [data-mk-zoom-frame], .mk-image-zoom [data-mk-zoom-frame] > :is(img,video,picture), .mk-image-zoom [data-mk-zoom-image] { transform: none !important; transition: none; } }
|
|
1275
|
+
|
|
1276
|
+
/* recipes/font-cycle/font-cycle.css */
|
|
1277
|
+
.mk-font-cycle {
|
|
1278
|
+
position: relative;
|
|
1279
|
+
display: inline-block;
|
|
1280
|
+
color: inherit;
|
|
1281
|
+
font-family: var(--mk-font, sans-serif);
|
|
1282
|
+
isolation: isolate;
|
|
1283
|
+
}
|
|
1284
|
+
.mk-font-cycle__accessible {
|
|
1285
|
+
position: absolute;
|
|
1286
|
+
width: 1px;
|
|
1287
|
+
height: 1px;
|
|
1288
|
+
padding: 0;
|
|
1289
|
+
overflow: hidden;
|
|
1290
|
+
clip-path: inset(50%);
|
|
1291
|
+
white-space: nowrap;
|
|
1292
|
+
}
|
|
1293
|
+
.mk-font-cycle__visual { display: inline-flex; white-space: pre; }
|
|
1294
|
+
.mk-font-cycle__char {
|
|
1295
|
+
position: relative;
|
|
1296
|
+
display: inline-grid;
|
|
1297
|
+
overflow: hidden;
|
|
1298
|
+
line-height: 1.12;
|
|
1299
|
+
vertical-align: bottom;
|
|
1300
|
+
}
|
|
1301
|
+
.mk-font-cycle__sizer { grid-area: 1 / 1; visibility: hidden; padding-inline: .035em; }
|
|
1302
|
+
.mk-font-cycle__track { position: absolute; inset: 0 0 auto; display: flex; flex-direction: column; will-change: transform; }
|
|
1303
|
+
.mk-font-cycle__face { display: block; flex: none; text-align: center; padding-inline: .035em; }
|
|
1304
|
+
.mk-font-cycle__overlay { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; pointer-events: none; opacity: 0; }
|
|
1305
|
+
.mk-font-cycle[data-mk-active][data-mk-font-overlay-ready] .mk-font-cycle__overlay { opacity: 1; }
|
|
1306
|
+
.mk-font-cycle[data-mk-active][data-mk-font-overlay-ready] .mk-font-cycle__visual { opacity: 0; }
|
|
1307
|
+
.mk-font-cycle:focus-visible { outline: 2px solid var(--mk-accent, currentColor); outline-offset: .15em; }
|
|
1308
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1309
|
+
.mk-font-cycle__track { will-change: auto; }
|
|
1310
|
+
.mk-font-cycle[data-mk-active][data-mk-font-overlay-ready] .mk-font-cycle__visual { opacity: 1; }
|
|
1311
|
+
.mk-font-cycle[data-mk-active][data-mk-font-overlay-ready] .mk-font-cycle__overlay { display: none; }
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
/* recipes/thumbnail-nav/thumbnail-nav.css */
|
|
1315
|
+
.mk-thumbnail-nav {
|
|
1316
|
+
--mk-thumbnail-nav-surface: #181716e6;
|
|
1317
|
+
--mk-thumbnail-nav-color: #fff;
|
|
1318
|
+
--mk-thumbnail-nav-duration: .5s;
|
|
1319
|
+
--mk-thumbnail-nav-ease: cubic-bezier(.165,.84,.44,1);
|
|
1320
|
+
position: relative;
|
|
1321
|
+
display: flex;
|
|
1322
|
+
align-items: end;
|
|
1323
|
+
justify-content: center;
|
|
1324
|
+
inline-size: min(100%, 18.0625rem);
|
|
1325
|
+
min-block-size: 4.25rem;
|
|
1326
|
+
margin-inline: auto;
|
|
1327
|
+
color: var(--mk-thumbnail-nav-color);
|
|
1328
|
+
font-family: var(--mk-font, sans-serif);
|
|
1329
|
+
isolation: isolate;
|
|
1330
|
+
}
|
|
1331
|
+
.mk-thumbnail-nav--fixed { position: fixed; z-index: 20; inset: auto auto max(1.25rem, env(safe-area-inset-bottom)) 50%; transform: translateX(-50%); }
|
|
1332
|
+
.mk-thumbnail-nav__toggle {
|
|
1333
|
+
position: relative;
|
|
1334
|
+
display: flex;
|
|
1335
|
+
align-items: center;
|
|
1336
|
+
flex: none;
|
|
1337
|
+
gap: .5rem;
|
|
1338
|
+
inline-size: 13.875rem;
|
|
1339
|
+
max-inline-size: 100%;
|
|
1340
|
+
min-block-size: 3.3125rem;
|
|
1341
|
+
padding: .40625rem .75rem;
|
|
1342
|
+
border: 0;
|
|
1343
|
+
border-radius: 3.3125rem;
|
|
1344
|
+
background: var(--mk-thumbnail-nav-surface);
|
|
1345
|
+
color: inherit;
|
|
1346
|
+
font: inherit;
|
|
1347
|
+
cursor: pointer;
|
|
1348
|
+
-webkit-backdrop-filter: blur(8px);
|
|
1349
|
+
backdrop-filter: blur(8px);
|
|
1350
|
+
transition: inline-size var(--mk-thumbnail-nav-duration) var(--mk-thumbnail-nav-ease), min-block-size var(--mk-thumbnail-nav-duration) var(--mk-thumbnail-nav-ease), border-radius var(--mk-thumbnail-nav-duration) var(--mk-thumbnail-nav-ease);
|
|
1351
|
+
}
|
|
1352
|
+
.mk-thumbnail-nav[data-mk-expanded] .mk-thumbnail-nav__toggle { inline-size: 18.0625rem; min-block-size: 4.25rem; border-radius: 4.25rem; }
|
|
1353
|
+
.mk-thumbnail-nav__preview { position: relative; display: block; flex: 0 0 4.25rem; block-size: 2.5rem; }
|
|
1354
|
+
.mk-thumbnail-nav__thumb {
|
|
1355
|
+
position: absolute;
|
|
1356
|
+
inset: 0 auto auto 0;
|
|
1357
|
+
display: grid;
|
|
1358
|
+
place-items: center;
|
|
1359
|
+
inline-size: 2.5rem;
|
|
1360
|
+
block-size: 2.5rem;
|
|
1361
|
+
overflow: hidden;
|
|
1362
|
+
border-radius: 100%;
|
|
1363
|
+
background: var(--mk-accent, #dda063);
|
|
1364
|
+
color: var(--mk-on-accent, #181716);
|
|
1365
|
+
font-size: .75rem;
|
|
1366
|
+
font-weight: 600;
|
|
1367
|
+
z-index: calc(3 - var(--mk-thumbnail-order));
|
|
1368
|
+
transform-origin: left center;
|
|
1369
|
+
transform: translateX(calc((2 - var(--mk-thumbnail-order)) * .625rem)) scale(.725);
|
|
1370
|
+
transition: transform var(--mk-thumbnail-nav-duration) var(--mk-thumbnail-nav-ease);
|
|
1371
|
+
}
|
|
1372
|
+
.mk-thumbnail-nav[data-mk-expanded] .mk-thumbnail-nav__thumb { transform: translateX(calc((2 - var(--mk-thumbnail-order)) * .5rem)) scale(1); }
|
|
1373
|
+
.mk-thumbnail-nav__thumb img { inline-size: 100%; block-size: 100%; object-fit: cover; }
|
|
1374
|
+
.mk-thumbnail-nav__copy { display: grid; flex: 1; min-inline-size: 0; gap: .125rem; text-align: start; }
|
|
1375
|
+
.mk-thumbnail-nav__kicker { display: none; font-size: .6875rem; opacity: .6; line-height: 1.1; }
|
|
1376
|
+
.mk-thumbnail-nav[data-mk-expanded] .mk-thumbnail-nav__kicker { display: block; }
|
|
1377
|
+
.mk-thumbnail-nav__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .875rem; font-weight: 600; line-height: 1.3; }
|
|
1378
|
+
.mk-thumbnail-nav__chevron { display: grid; flex: 0 0 1.8125rem; place-items: center; block-size: 1.8125rem; border-radius: 50%; background: #ffffff1a; line-height: 1; transition: transform var(--mk-thumbnail-nav-duration) var(--mk-thumbnail-nav-ease); }
|
|
1379
|
+
.mk-thumbnail-nav[data-mk-expanded] .mk-thumbnail-nav__chevron { transform: rotate(180deg); }
|
|
1380
|
+
.mk-thumbnail-nav__panel {
|
|
1381
|
+
position: absolute;
|
|
1382
|
+
z-index: 2;
|
|
1383
|
+
inset: auto 0 calc(100% + .625rem);
|
|
1384
|
+
display: grid;
|
|
1385
|
+
gap: .25rem;
|
|
1386
|
+
max-block-size: min(20rem, 55vh);
|
|
1387
|
+
overflow: auto;
|
|
1388
|
+
padding: .5rem;
|
|
1389
|
+
border: 1px solid #ffffff1a;
|
|
1390
|
+
border-radius: 1.125rem;
|
|
1391
|
+
background: var(--mk-thumbnail-nav-surface);
|
|
1392
|
+
color: inherit;
|
|
1393
|
+
box-shadow: 0 1rem 3rem #0003;
|
|
1394
|
+
-webkit-backdrop-filter: blur(8px);
|
|
1395
|
+
backdrop-filter: blur(8px);
|
|
1396
|
+
transform-origin: center bottom;
|
|
1397
|
+
}
|
|
1398
|
+
.mk-thumbnail-nav__panel[hidden] { display: none; }
|
|
1399
|
+
.mk-thumbnail-nav__panel :is(ul, ol) { margin: 0; padding: 0; list-style: none; }
|
|
1400
|
+
.mk-thumbnail-nav__panel [data-mk-thumbnail-item] {
|
|
1401
|
+
box-sizing: border-box;
|
|
1402
|
+
display: flex;
|
|
1403
|
+
align-items: center;
|
|
1404
|
+
gap: .75rem;
|
|
1405
|
+
inline-size: 100%;
|
|
1406
|
+
min-block-size: 3rem;
|
|
1407
|
+
padding: .5rem .625rem;
|
|
1408
|
+
border: 0;
|
|
1409
|
+
border-radius: .75rem;
|
|
1410
|
+
background: transparent;
|
|
1411
|
+
color: inherit;
|
|
1412
|
+
font: inherit;
|
|
1413
|
+
text-decoration: none;
|
|
1414
|
+
cursor: pointer;
|
|
1415
|
+
}
|
|
1416
|
+
.mk-thumbnail-nav__panel [data-mk-thumbnail-item]:is(:hover, [aria-current='page']) { background: #ffffff1a; }
|
|
1417
|
+
.mk-thumbnail-nav__panel [data-mk-thumbnail-item]:is(:disabled, [aria-disabled='true']) { opacity: .4; cursor: default; }
|
|
1418
|
+
.mk-thumbnail-nav__panel [data-mk-thumbnail-item] img { inline-size: 2rem; block-size: 2rem; object-fit: cover; border-radius: 50%; }
|
|
1419
|
+
.mk-thumbnail-nav__toggle:focus-visible, .mk-thumbnail-nav__panel [data-mk-thumbnail-item]:focus-visible { outline: 2px solid var(--mk-accent, #dda063); outline-offset: 2px; }
|
|
1420
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1421
|
+
.mk-thumbnail-nav *, .mk-thumbnail-nav *::before, .mk-thumbnail-nav *::after { transition: none !important; }
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1424
|
+
/* recipes/action-button/action-button.css */
|
|
1425
|
+
.mk-action-button {
|
|
1426
|
+
--mk-action-ink: var(--mk-text, #171713);
|
|
1427
|
+
--mk-action-paper: var(--mk-surface, #f7f5ee);
|
|
1428
|
+
--mk-action-lift: 5px;
|
|
1429
|
+
--mk-action-tilt: -1.2deg;
|
|
1430
|
+
appearance: none;
|
|
1431
|
+
position: relative;
|
|
1432
|
+
display: inline-flex;
|
|
1433
|
+
align-items: center;
|
|
1434
|
+
justify-content: center;
|
|
1435
|
+
gap: .6em;
|
|
1436
|
+
min-height: 44px;
|
|
1437
|
+
padding: .65em 1.5em;
|
|
1438
|
+
border: 3px solid var(--mk-action-paper);
|
|
1439
|
+
border-radius: 24px 30px 22px 28px / 30px 22px 28px 24px;
|
|
1440
|
+
background: var(--mk-action-ink);
|
|
1441
|
+
color: var(--mk-action-paper);
|
|
1442
|
+
box-shadow: var(--mk-action-lift) calc(var(--mk-action-lift) + 1px) 0 var(--mk-action-ink);
|
|
1443
|
+
transform: rotate(var(--mk-action-tilt));
|
|
1444
|
+
font: 700 .85rem/1.15 var(--mk-font, sans-serif);
|
|
1445
|
+
letter-spacing: .045em;
|
|
1446
|
+
text-transform: uppercase;
|
|
1447
|
+
text-decoration: none;
|
|
1448
|
+
cursor: pointer;
|
|
1449
|
+
touch-action: manipulation;
|
|
1450
|
+
transition: transform 130ms ease-out, box-shadow 130ms ease-out, background-color 150ms ease, color 150ms ease, border-color 150ms ease;
|
|
1451
|
+
}
|
|
1452
|
+
.mk-action-button[data-mk-action-variant="secondary"],
|
|
1453
|
+
.mk-action-button[data-mk-action-variant="icon"] {
|
|
1454
|
+
--mk-action-tilt: 1.1deg;
|
|
1455
|
+
background: var(--mk-action-paper);
|
|
1456
|
+
border-color: var(--mk-action-ink);
|
|
1457
|
+
color: var(--mk-action-ink);
|
|
1458
|
+
}
|
|
1459
|
+
.mk-action-button[data-mk-action-variant="icon"] {
|
|
1460
|
+
width: 44px;
|
|
1461
|
+
padding: 8px;
|
|
1462
|
+
border-radius: 16px 20px 15px 19px / 20px 15px 19px 16px;
|
|
1463
|
+
}
|
|
1464
|
+
.mk-action-button svg { width: 1.25em; height: 1.25em; flex: none; }
|
|
1465
|
+
.mk-action-button[data-mk-action-variant="stepper"] {
|
|
1466
|
+
--mk-action-tilt: 0deg;
|
|
1467
|
+
min-width: 44px;
|
|
1468
|
+
padding: .5em;
|
|
1469
|
+
border: 2px solid var(--mk-action-ink);
|
|
1470
|
+
border-radius: 11px;
|
|
1471
|
+
background: var(--mk-action-paper);
|
|
1472
|
+
color: var(--mk-action-ink);
|
|
1473
|
+
box-shadow: none;
|
|
1474
|
+
}
|
|
1475
|
+
.mk-action-button[data-mk-action-variant="film"] {
|
|
1476
|
+
--mk-action-tilt: 0deg;
|
|
1477
|
+
border: 0;
|
|
1478
|
+
border-radius: 0;
|
|
1479
|
+
background: transparent;
|
|
1480
|
+
color: inherit;
|
|
1481
|
+
box-shadow: none;
|
|
1482
|
+
padding: .5em 0;
|
|
1483
|
+
font-family: var(--mk-film-font, Georgia, serif);
|
|
1484
|
+
font-size: 1.25rem;
|
|
1485
|
+
}
|
|
1486
|
+
.mk-action-button[data-mk-action-variant="film"]::before,
|
|
1487
|
+
.mk-action-button[data-mk-action-variant="film"]::after {
|
|
1488
|
+
content: "";
|
|
1489
|
+
position: absolute;
|
|
1490
|
+
inset: 0 0 auto;
|
|
1491
|
+
height: 1px;
|
|
1492
|
+
background: currentColor;
|
|
1493
|
+
transition: transform .4s cubic-bezier(.32,.72,0,1);
|
|
1494
|
+
}
|
|
1495
|
+
.mk-action-button[data-mk-action-variant="film"]::after { inset: auto 0 0; }
|
|
1496
|
+
[data-mk-action-label] { display: inline-grid; overflow: clip; }
|
|
1497
|
+
.mk-action-button__line, .mk-action-button__copy {
|
|
1498
|
+
grid-area: 1 / 1;
|
|
1499
|
+
transition: clip-path .4s cubic-bezier(.32,.72,0,1), translate .35s cubic-bezier(.32,.72,0,1), scale .3s cubic-bezier(.34,2.27,.64,1);
|
|
1500
|
+
}
|
|
1501
|
+
.mk-action-button__line { clip-path: inset(0); transform-origin: bottom; }
|
|
1502
|
+
.mk-action-button__copy { clip-path: inset(0 0 100%); translate: 0 -.25em; scale: 1.05; transform-origin: top; }
|
|
1503
|
+
@media (hover: hover) {
|
|
1504
|
+
.mk-action-button:not(:disabled):not([aria-disabled="true"]):hover {
|
|
1505
|
+
transform: rotate(var(--mk-action-tilt)) translate(3px, 3px);
|
|
1506
|
+
box-shadow: 2px 3px 0 var(--mk-action-ink);
|
|
1507
|
+
}
|
|
1508
|
+
.mk-action-button:is([data-mk-action-variant="secondary"], [data-mk-action-variant="icon"], [data-mk-action-variant="stepper"]):not(:disabled):not([aria-disabled="true"]):hover {
|
|
1509
|
+
background: var(--mk-action-ink);
|
|
1510
|
+
border-color: var(--mk-action-paper);
|
|
1511
|
+
color: var(--mk-action-paper);
|
|
1512
|
+
}
|
|
1513
|
+
.mk-action-button[data-mk-action-variant="stepper"]:not(:disabled):not([aria-disabled="true"]):hover { transform: none; box-shadow: none; }
|
|
1514
|
+
}
|
|
1515
|
+
.mk-action-button:not(:disabled):not([aria-disabled="true"]):active,
|
|
1516
|
+
.mk-action-button[aria-pressed="true"] {
|
|
1517
|
+
transform: rotate(var(--mk-action-tilt)) translate(var(--mk-action-lift), calc(var(--mk-action-lift) + 1px));
|
|
1518
|
+
box-shadow: 0 0 0 var(--mk-action-ink);
|
|
1519
|
+
}
|
|
1520
|
+
.mk-action-button[aria-pressed="true"] { background: var(--mk-action-ink); color: var(--mk-action-paper); }
|
|
1521
|
+
.mk-action-button[aria-pressed="true"]:not(:disabled):not([aria-disabled="true"]):hover { transform: rotate(var(--mk-action-tilt)) translate(var(--mk-action-lift), calc(var(--mk-action-lift) + 1px)); box-shadow: none; }
|
|
1522
|
+
.mk-action-button[data-mk-action-variant="stepper"]:not(:disabled):not([aria-disabled="true"]):active { transform: translateY(1px); box-shadow: none; }
|
|
1523
|
+
.mk-action-button[data-mk-action-variant="film"]:is(:hover, :focus-visible):not(:disabled):not([aria-disabled="true"]) {
|
|
1524
|
+
transform: scale(1.03) rotate(-.75deg);
|
|
1525
|
+
box-shadow: none;
|
|
1526
|
+
}
|
|
1527
|
+
.mk-action-button[data-mk-action-variant="film"]:is(:hover, :focus-visible):not(:disabled):not([aria-disabled="true"]) .mk-action-button__line { clip-path: inset(100% 0 0); translate: 0 .25em; scale: .95; }
|
|
1528
|
+
.mk-action-button[data-mk-action-variant="film"]:is(:hover, :focus-visible):not(:disabled):not([aria-disabled="true"]) .mk-action-button__copy { clip-path: inset(0); translate: 0; scale: 1; transition-delay: 75ms; }
|
|
1529
|
+
.mk-action-button[data-mk-action-variant="film"]:active:not(:disabled) { transform: scale(.97); }
|
|
1530
|
+
.mk-action-button:focus-visible { outline: 3px solid var(--mk-action-focus, #356bdf); outline-offset: 7px; }
|
|
1531
|
+
.mk-action-button:disabled, .mk-action-button[aria-disabled="true"] { opacity: .35; cursor: default; }
|
|
1532
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1533
|
+
.mk-action-button, .mk-action-button *, .mk-action-button::before, .mk-action-button::after { transition: none; }
|
|
1534
|
+
.mk-action-button[data-mk-action-variant="film"]:is(:hover, :focus-visible):not(:disabled):not([aria-disabled="true"]) { transform: none; }
|
|
1535
|
+
.mk-action-button[data-mk-action-variant="film"]:is(:hover, :focus-visible):not(:disabled):not([aria-disabled="true"]) .mk-action-button__line { clip-path: none; translate: none; scale: 1; }
|
|
1536
|
+
.mk-action-button__copy { display: none; }
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1539
|
+
/* recipes/film-hero/film-hero.css */
|
|
1540
|
+
.mk-film-hero {
|
|
1541
|
+
--mk-film-ink: var(--mk-text, #191b18);
|
|
1542
|
+
--mk-film-paper: var(--mk-surface, #f4f1e8);
|
|
1543
|
+
--mk-film-font: Georgia, 'Times New Roman', serif;
|
|
1544
|
+
position: relative;
|
|
1545
|
+
isolation: isolate;
|
|
1546
|
+
color: var(--mk-film-ink);
|
|
1547
|
+
background: var(--mk-film-paper);
|
|
1548
|
+
overflow: clip;
|
|
1549
|
+
}
|
|
1550
|
+
.mk-film-hero__credits { padding: clamp(20px, 5cqw, 64px); text-align: center; }
|
|
1551
|
+
.mk-film-hero__eyebrow { font: 500 .65rem/1.5 var(--mk-font-mono, monospace); text-transform: uppercase; letter-spacing: .18em; }
|
|
1552
|
+
.mk-film-hero__title { margin: .2em 0 .35em; font: 400 clamp(3.5rem, 10cqw, 8rem)/.82 var(--mk-film-font); letter-spacing: -.065em; text-transform: uppercase; }
|
|
1553
|
+
.mk-film-hero__mask { display: block; overflow: clip; padding-bottom: .08em; margin-bottom: -.08em; }
|
|
1554
|
+
[data-mk-film-line] { display: block; }
|
|
1555
|
+
[data-mk-film-rule] { display: block; height: 1px; border: 0; background: currentColor; margin: 16px 0; }
|
|
1556
|
+
.mk-film-hero__metadata { display: grid; gap: 0; margin: 24px 0 0; font: .8rem/1.5 var(--mk-font, sans-serif); }
|
|
1557
|
+
.mk-film-hero__metadata > div { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; padding: 8px 0; border-top: 1px solid currentColor; }
|
|
1558
|
+
.mk-film-hero__metadata dt { font: .6rem/1.5 var(--mk-font-mono, monospace); text-transform: uppercase; letter-spacing: .14em; }
|
|
1559
|
+
.mk-film-hero__metadata dd { margin: 0; text-align: right; }
|
|
1560
|
+
.mk-film-hero__visual { position: relative; min-height: clamp(260px, 45cqw, 540px); display: grid; place-items: center; overflow: clip; color: #fffdf1; background: #243c36; }
|
|
1561
|
+
.mk-film-hero__media { position: absolute; inset: -8% 0; width: 100%; height: 116%; object-fit: cover; transform: translateY(var(--mk-film-shift, 0px)) scale(var(--mk-film-scale, 1)); transform-origin: center; }
|
|
1562
|
+
.mk-film-hero__visual::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(transparent, #00120c66); }
|
|
1563
|
+
.mk-film-hero__caption { position: relative; z-index: 1; padding: 48px 24px; text-align: center; }
|
|
1564
|
+
.mk-film-hero__caption blockquote { font: 400 clamp(2.25rem, 6cqw, 5.5rem)/.95 var(--mk-film-font); letter-spacing: -.04em; margin: 0 0 24px; text-transform: uppercase; }
|
|
1565
|
+
.mk-film-hero[data-mk-film-edge="organic"] .mk-film-hero__visual {
|
|
1566
|
+
clip-path: polygon(0 7%, 9% 8%, 20% 5%, 32% 2%, 43% 0, 54% 2%, 68% 6%, 82% 8%, 93% 6%, 100% 4%, 100% 100%, 0 100%);
|
|
1567
|
+
}
|
|
1568
|
+
@media (prefers-reduced-motion: reduce) { .mk-film-hero__media { transform: none; } }
|
|
1569
|
+
|
|
1570
|
+
/* recipes/editorial-reveal/editorial-reveal.css */
|
|
1571
|
+
.mk-editorial-reveal { position: relative; isolation: isolate; color: var(--mk-text); }
|
|
1572
|
+
.mk-editorial-reveal [data-mk-editorial-image], .mk-editorial-reveal [data-mk-editorial-card] { overflow: clip; border-radius: 12px; }
|
|
1573
|
+
.mk-editorial-reveal [data-mk-editorial-image] > :is(img,video,picture) { display: block; width: 100%; height: 100%; object-fit: cover; }
|
|
1574
|
+
.mk-editorial-reveal [data-mk-editorial-card] { display: grid; gap: 20px; padding: 24px; background: var(--mk-surface-2); color: inherit; text-decoration: none; transition: background-color .5s cubic-bezier(.6, 0, 0, 1), color .5s cubic-bezier(.6, 0, 0, 1); }
|
|
1575
|
+
.mk-editorial-reveal [data-mk-editorial-card][data-mk-editorial-active] { background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
1576
|
+
.mk-editorial-reveal [data-mk-editorial-card-image] { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 8px; }
|
|
1577
|
+
.mk-editorial-reveal [data-mk-editorial-button] { display: inline-flex; overflow: clip; align-items: center; padding: 12px 18px; border: 1px solid var(--mk-outline-soft); border-radius: 8px; background: var(--mk-text); color: var(--mk-surface); text-decoration: none; font: inherit; cursor: pointer; }
|
|
1578
|
+
.mk-editorial-reveal [data-mk-editorial-button-content] { position: relative; display: flex; align-items: center; gap: 1em; padding-inline-end: 2.25em; }
|
|
1579
|
+
.mk-editorial-reveal [data-mk-editorial-button-content]::before, .mk-editorial-reveal [data-mk-editorial-button-content]::after { content: '↗'; position: absolute; inset-block-start: 0; }
|
|
1580
|
+
.mk-editorial-reveal [data-mk-editorial-button-content]::before { inset-inline-start: -2.25em; }
|
|
1581
|
+
.mk-editorial-reveal [data-mk-editorial-button-content]::after { inset-inline-end: 0; }
|
|
1582
|
+
.mk-editorial-reveal [data-mk-editorial-cursor] { pointer-events: none; position: absolute; z-index: 3; inset: 0 auto auto 0; width: max-content; height: max-content; padding: 10px 14px; border-radius: 30px; background: var(--mk-text); color: var(--mk-surface); font-size: .75rem; }
|
|
1583
|
+
.mk-editorial-reveal [hidden] { display: none !important; }
|
|
1584
|
+
.mk-editorial-reveal [data-mk-editorial-header][data-mk-on='dark'] { color: var(--mk-surface); }
|
|
1585
|
+
.mk-editorial-reveal :is(a,button,input,textarea):focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 4px; }
|
|
1586
|
+
.mk-editorial-reveal [data-mk-editorial-group] [data-mk-cascade='rise'] { position: relative; }
|
|
1587
|
+
@media (prefers-reduced-motion: reduce) { .mk-editorial-reveal *, .mk-editorial-reveal *::after, .mk-editorial-reveal *::before { animation: none !important; transition: none !important; } }
|
|
1588
|
+
|
|
1589
|
+
/* recipes/weight-hover/weight-hover.css */
|
|
1590
|
+
/* weight-hover — each letter carries its own axis value; the font must be variable. */
|
|
1591
|
+
.mk-weight-hover {
|
|
1592
|
+
font-kerning: none;
|
|
1593
|
+
}
|
|
1594
|
+
.mk-weight-hover__visual [data-mk-weight-char] {
|
|
1595
|
+
will-change: font-variation-settings;
|
|
1596
|
+
}
|
|
1597
|
+
|
|
1598
|
+
/* recipes/sticker/sticker.css */
|
|
1599
|
+
/* sticker — die-cut holographic sticker (DOVV Studio). Place it with position/left/top; tilt it with --mk-sticker-rot. */
|
|
1600
|
+
.mk-sticker {
|
|
1601
|
+
--mk-sticker-rot: 0deg;
|
|
1602
|
+
--mk-sticker-foil: linear-gradient(115deg, #ed4a1c, #ff6a3d 18%, #ff8f5e 34%, #ff4f7a 52%, #ed4a1c 68%, #ff7a3d 84%, #ed4a1c);
|
|
1603
|
+
--mk-sticker-ink: #fff;
|
|
1604
|
+
display: inline-block;
|
|
1605
|
+
cursor: grab;
|
|
1606
|
+
touch-action: none;
|
|
1607
|
+
user-select: none;
|
|
1608
|
+
-webkit-user-select: none;
|
|
1609
|
+
scale: var(--mk-sticker-scale, 1);
|
|
1610
|
+
transform: rotate(var(--mk-sticker-rot));
|
|
1611
|
+
filter: drop-shadow(0 8px 14px rgb(0 0 0 / 0.16));
|
|
1612
|
+
transition: transform 0.4s var(--mk-ease-slot), filter 0.3s;
|
|
1613
|
+
animation: mk-sticker-pop 0.7s var(--mk-ease-slot) backwards;
|
|
1614
|
+
animation-delay: var(--mk-sticker-delay, 0s);
|
|
1615
|
+
}
|
|
1616
|
+
@media (hover: hover) {
|
|
1617
|
+
.mk-sticker:hover { transform: rotate(calc(var(--mk-sticker-rot) * -0.6)) scale(1.08); }
|
|
1618
|
+
}
|
|
1619
|
+
/* The engine freezes the pose it had at the press (inline transform), so there is no snap here. */
|
|
1620
|
+
.mk-sticker[data-mk-peeling],
|
|
1621
|
+
.mk-sticker[data-mk-peeling]:hover {
|
|
1622
|
+
transition: none;
|
|
1623
|
+
cursor: grabbing;
|
|
1624
|
+
}
|
|
1625
|
+
.mk-sticker[data-mk-carried] { cursor: grabbing; }
|
|
1626
|
+
.mk-sticker[data-mk-away] { visibility: hidden; }
|
|
1627
|
+
@keyframes mk-sticker-pop {
|
|
1628
|
+
0% { opacity: 0; scale: 0.4; }
|
|
1629
|
+
}
|
|
1630
|
+
|
|
1631
|
+
/* Peel layers: the top is clipped at the fold; the back is a reflected copy whose
|
|
1632
|
+
face is clipped (inner) while the shadow lives on the outer layer, outside the clip. */
|
|
1633
|
+
.mk-sticker__peel { position: relative; display: inline-block; vertical-align: top; }
|
|
1634
|
+
.mk-sticker__top { display: block; }
|
|
1635
|
+
.mk-sticker__back {
|
|
1636
|
+
position: absolute;
|
|
1637
|
+
left: 0;
|
|
1638
|
+
top: 0;
|
|
1639
|
+
width: 100%;
|
|
1640
|
+
height: 100%;
|
|
1641
|
+
transform-origin: 0 0;
|
|
1642
|
+
visibility: hidden;
|
|
1643
|
+
pointer-events: none;
|
|
1644
|
+
filter: drop-shadow(0 0 1.5px rgb(0 0 0 / 0.3)) drop-shadow(0 0 7px rgb(0 0 0 / 0.22));
|
|
1645
|
+
}
|
|
1646
|
+
.mk-sticker__back-face { width: 100%; height: 100%; }
|
|
1647
|
+
/* Paper backing: brightest along the fold, a little grey towards the lifted tip. */
|
|
1648
|
+
.mk-sticker:not([data-mk-sticker-back='silhouette']) .mk-sticker__back-face :is(.mk-sticker__art, .mk-sticker__pill, .mk-sticker__badge) {
|
|
1649
|
+
/* The gradient runs under the die-cut border too, so the back reads as one piece of paper. */
|
|
1650
|
+
background: linear-gradient(var(--mk-sticker-fold, 90deg), #fff 0%, #f6f6f4 40%, #e2e2de 100%) border-box !important;
|
|
1651
|
+
color: transparent !important;
|
|
1652
|
+
border-color: transparent !important;
|
|
1653
|
+
}
|
|
1654
|
+
.mk-sticker__back-face :is(.mk-sticker__art, .mk-sticker__pill, .mk-sticker__badge) * { visibility: hidden; }
|
|
1655
|
+
.mk-sticker__back-face :is(.mk-sticker__art, .mk-sticker__pill, .mk-sticker__badge)::after { display: none; }
|
|
1656
|
+
/* Free-form art (an <img> or <svg> shape): a white silhouette of it instead. */
|
|
1657
|
+
.mk-sticker[data-mk-sticker-back='silhouette'] .mk-sticker__back-face { filter: brightness(0) invert(0.95); }
|
|
1658
|
+
|
|
1659
|
+
/* Art: a pill, a round badge or any element with .mk-sticker__art. The white die-cut border is part of the art. */
|
|
1660
|
+
.mk-sticker__art,
|
|
1661
|
+
.mk-sticker__pill,
|
|
1662
|
+
.mk-sticker__badge {
|
|
1663
|
+
position: relative;
|
|
1664
|
+
display: block;
|
|
1665
|
+
overflow: hidden;
|
|
1666
|
+
isolation: isolate;
|
|
1667
|
+
color: var(--mk-sticker-ink);
|
|
1668
|
+
border: 4px solid #fff;
|
|
1669
|
+
}
|
|
1670
|
+
.mk-sticker__pill {
|
|
1671
|
+
padding: 0.6em 1.1em;
|
|
1672
|
+
border-radius: 999px;
|
|
1673
|
+
font-weight: 800;
|
|
1674
|
+
font-size: 1.15rem;
|
|
1675
|
+
letter-spacing: -0.02em;
|
|
1676
|
+
white-space: nowrap;
|
|
1677
|
+
}
|
|
1678
|
+
.mk-sticker__badge {
|
|
1679
|
+
display: grid;
|
|
1680
|
+
place-items: center;
|
|
1681
|
+
width: var(--mk-sticker-size, 7rem);
|
|
1682
|
+
aspect-ratio: 1;
|
|
1683
|
+
border-radius: 50%;
|
|
1684
|
+
font-weight: 800;
|
|
1685
|
+
text-align: center;
|
|
1686
|
+
}
|
|
1687
|
+
.mk-sticker__art { border-radius: var(--mk-sticker-radius, 24px); }
|
|
1688
|
+
.mk-sticker[data-mk-holo] :is(.mk-sticker__art, .mk-sticker__pill, .mk-sticker__badge) {
|
|
1689
|
+
background: var(--mk-sticker-foil);
|
|
1690
|
+
background-size: 220% 220%;
|
|
1691
|
+
background-position: calc(var(--mk-sticker-x, 0.5) * 100%) calc(var(--mk-sticker-y, 0.5) * 100%);
|
|
1692
|
+
}
|
|
1693
|
+
.mk-sticker[data-mk-holo] :is(.mk-sticker__art, .mk-sticker__pill, .mk-sticker__badge)::after {
|
|
1694
|
+
content: '';
|
|
1695
|
+
position: absolute;
|
|
1696
|
+
inset: 0;
|
|
1697
|
+
z-index: -1;
|
|
1698
|
+
pointer-events: none;
|
|
1699
|
+
background: radial-gradient(circle at calc(var(--mk-sticker-x, 0.5) * 100%) calc(var(--mk-sticker-y, 0.5) * 100%), rgb(255 255 255 / 0.7), transparent 65%);
|
|
1700
|
+
mix-blend-mode: soft-light;
|
|
1701
|
+
opacity: 0.9;
|
|
1702
|
+
}
|
|
1703
|
+
.mk-sticker--pink { --mk-sticker-foil: linear-gradient(115deg, #ff7ac6, #c084fc 22%, #ffb3e1 44%, #7dd3fc 66%, #ff7ac6 84%, #f0abfc); --mk-sticker-ink: #3d0a26; }
|
|
1704
|
+
.mk-sticker--blue { --mk-sticker-foil: linear-gradient(115deg, #2e90fa, #7c5cff 25%, #38bdf8 50%, #2e90fa 75%, #a78bfa); --mk-sticker-ink: #fff; }
|
|
1705
|
+
.mk-sticker--lime { --mk-sticker-foil: linear-gradient(115deg, #c6f432, #fef08a 25%, #5eead4 50%, #a3e635 75%, #c6f432); --mk-sticker-ink: #1d2a00; }
|
|
1706
|
+
.mk-sticker--gold { --mk-sticker-foil: linear-gradient(115deg, #facc15, #fde68a 25%, #f59e0b 50%, #fef3c7 70%, #eab308); --mk-sticker-ink: #1a1a1a; }
|
|
1707
|
+
|
|
1708
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1709
|
+
.mk-sticker { animation: none; transition: none; }
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1712
|
+
/* recipes/scroll-dock/scroll-dock.css */
|
|
1713
|
+
/* scroll-dock — inverted capsule at the bottom centre; rises with a soft overshoot. */
|
|
1714
|
+
.mk-scroll-dock {
|
|
1715
|
+
position: fixed;
|
|
1716
|
+
left: 50%;
|
|
1717
|
+
bottom: var(--mk-scroll-dock-bottom, 24px);
|
|
1718
|
+
z-index: 20;
|
|
1719
|
+
display: flex;
|
|
1720
|
+
gap: 4px;
|
|
1721
|
+
max-width: calc(100vw - 32px);
|
|
1722
|
+
padding: 6px;
|
|
1723
|
+
/* Too many items for the width: scroll inside the capsule, never overflow the page. */
|
|
1724
|
+
overflow-x: auto;
|
|
1725
|
+
scrollbar-width: none;
|
|
1726
|
+
border-radius: 100px;
|
|
1727
|
+
background: var(--mk-text);
|
|
1728
|
+
color: var(--mk-bg);
|
|
1729
|
+
box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--mk-bg) 20%, transparent), 0 12px 30px -10px rgb(0 0 0 / 0.5);
|
|
1730
|
+
opacity: 0;
|
|
1731
|
+
pointer-events: none;
|
|
1732
|
+
transform: translate(-50%, 140%);
|
|
1733
|
+
transition: transform 0.6s cubic-bezier(0.32, 1.25, 0.5, 1), opacity 0.3s;
|
|
1734
|
+
}
|
|
1735
|
+
.mk-scroll-dock[data-mk-visible],
|
|
1736
|
+
.mk-scroll-dock:focus-within {
|
|
1737
|
+
opacity: 1;
|
|
1738
|
+
pointer-events: auto;
|
|
1739
|
+
transform: translate(-50%, 0);
|
|
1740
|
+
}
|
|
1741
|
+
/* Inside a scrolling container: sticks to its bottom edge instead of the viewport's.
|
|
1742
|
+
Scrollable overflow counts the un-stuck box plus its transform, so the negative
|
|
1743
|
+
margin lifts that box by its height + bottom gap and the hide offset equals the
|
|
1744
|
+
gap: nothing reaches past the last section, no empty band at the end. */
|
|
1745
|
+
.mk-scroll-dock--sticky {
|
|
1746
|
+
position: sticky;
|
|
1747
|
+
left: auto;
|
|
1748
|
+
width: max-content;
|
|
1749
|
+
max-width: calc(100% - 16px);
|
|
1750
|
+
margin: calc(-1 * (var(--mk-scroll-dock-height, 58px) + var(--mk-scroll-dock-bottom, 24px))) auto 0;
|
|
1751
|
+
transform: translateY(var(--mk-scroll-dock-bottom, 24px)) scale(0.96);
|
|
1752
|
+
}
|
|
1753
|
+
.mk-scroll-dock--sticky:is([data-mk-visible], :focus-within) { transform: none; }
|
|
1754
|
+
.mk-scroll-dock > :is(a, button) {
|
|
1755
|
+
display: flex;
|
|
1756
|
+
align-items: center;
|
|
1757
|
+
gap: 8px;
|
|
1758
|
+
height: 46px;
|
|
1759
|
+
padding: 0 18px;
|
|
1760
|
+
border: 0;
|
|
1761
|
+
border-radius: 100px;
|
|
1762
|
+
background: transparent;
|
|
1763
|
+
color: inherit;
|
|
1764
|
+
font: inherit;
|
|
1765
|
+
font-size: 15px;
|
|
1766
|
+
font-weight: 500;
|
|
1767
|
+
white-space: nowrap;
|
|
1768
|
+
text-decoration: none;
|
|
1769
|
+
cursor: pointer;
|
|
1770
|
+
transition: background 0.25s;
|
|
1771
|
+
}
|
|
1772
|
+
.mk-scroll-dock > :is(a, button):hover { background: color-mix(in srgb, var(--mk-bg) 15%, transparent); }
|
|
1773
|
+
.mk-scroll-dock > :is(a, button):focus-visible { outline: 2px solid var(--mk-bg); outline-offset: -2px; }
|
|
1774
|
+
.mk-scroll-dock::-webkit-scrollbar { display: none; }
|
|
1775
|
+
/* Phones: a tab bar, icon over label, so four or five items fit in 360 px. */
|
|
1776
|
+
@media (max-width: 680px) {
|
|
1777
|
+
.mk-scroll-dock > :is(a, button) { flex-direction: column; justify-content: center; gap: 2px; height: 52px; padding: 0 12px; border-radius: 26px; font-size: 11px; }
|
|
1778
|
+
.mk-scroll-dock--sticky { margin-top: calc(-1 * (var(--mk-scroll-dock-height, 64px) + var(--mk-scroll-dock-bottom, 24px))); }
|
|
1779
|
+
}
|
|
1780
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1781
|
+
.mk-scroll-dock { transition: opacity 0.2s; }
|
|
1782
|
+
}
|
|
1783
|
+
|
|
1248
1784
|
/* css/controls/button.css */
|
|
1249
|
-
/* .mk-button —
|
|
1785
|
+
/* .mk-button — Capsule buttons. Filled buttons default to the tonal primary container. */
|
|
1250
1786
|
.mk-button {
|
|
1251
1787
|
--mk-button-bg: var(--mk-accent-soft);
|
|
1252
1788
|
--mk-button-fg: var(--mk-on-accent-soft);
|
|
@@ -1356,7 +1892,7 @@
|
|
|
1356
1892
|
font-size: 24px;
|
|
1357
1893
|
}
|
|
1358
1894
|
|
|
1359
|
-
/*
|
|
1895
|
+
/* small buttons: 32 px, 16 px sides, radius 12. */
|
|
1360
1896
|
.mk-button--sm {
|
|
1361
1897
|
--mk-button-height: 32px;
|
|
1362
1898
|
--mk-button-padding: 16px;
|
|
@@ -1379,7 +1915,7 @@
|
|
|
1379
1915
|
}
|
|
1380
1916
|
}
|
|
1381
1917
|
|
|
1382
|
-
/*
|
|
1918
|
+
/* press squash (buttonClickAnimation), on pointer focus only so tabbing does not bounce. */
|
|
1383
1919
|
.mk-button:focus:not(:focus-visible) {
|
|
1384
1920
|
animation: mk-press 0.5s cubic-bezier(0.37, 1.42, 0.37, 1);
|
|
1385
1921
|
}
|
|
@@ -1398,7 +1934,7 @@
|
|
|
1398
1934
|
}
|
|
1399
1935
|
}
|
|
1400
1936
|
|
|
1401
|
-
/* Rolling label
|
|
1937
|
+
/* Rolling label: the text and its copy roll up, the arrow slides on, the fill inverts. */
|
|
1402
1938
|
.mk-button--roll {
|
|
1403
1939
|
overflow: hidden;
|
|
1404
1940
|
background: transparent;
|
|
@@ -1475,7 +2011,7 @@
|
|
|
1475
2011
|
|
|
1476
2012
|
/* css/controls/field.css */
|
|
1477
2013
|
/*
|
|
1478
|
-
* .mk-field —
|
|
2014
|
+
* .mk-field — filled fields: container-high background, radius 16,
|
|
1479
2015
|
* no bottom indicator; focus draws a ring in the accent colour.
|
|
1480
2016
|
* <label class="mk-field"><span class="mk-field__label">…</span><input>…<span class="mk-field__hint">…</span></label>
|
|
1481
2017
|
*/
|
|
@@ -1553,7 +2089,7 @@
|
|
|
1553
2089
|
animation: mk-vibrate 0.3s;
|
|
1554
2090
|
}
|
|
1555
2091
|
|
|
1556
|
-
/*
|
|
2092
|
+
/* error vibration: plays each time the field becomes invalid. */
|
|
1557
2093
|
@keyframes mk-vibrate {
|
|
1558
2094
|
0% {
|
|
1559
2095
|
transform: translate(0);
|
|
@@ -1674,7 +2210,7 @@
|
|
|
1674
2210
|
}
|
|
1675
2211
|
|
|
1676
2212
|
/* css/controls/checkbox.css */
|
|
1677
|
-
/* .mk-checkbox — <input type="checkbox" class="mk-checkbox">: 18 px, radius 6
|
|
2213
|
+
/* .mk-checkbox — <input type="checkbox" class="mk-checkbox">: 18 px, radius 6, check drawn in on-accent. */
|
|
1678
2214
|
.mk-checkbox {
|
|
1679
2215
|
position: relative;
|
|
1680
2216
|
display: inline-grid;
|
|
@@ -1729,7 +2265,7 @@
|
|
|
1729
2265
|
}
|
|
1730
2266
|
|
|
1731
2267
|
/* css/controls/chip.css */
|
|
1732
|
-
/* .mk-chip — capsules on container-high; a pressed filter chip takes the primary container
|
|
2268
|
+
/* .mk-chip — capsules on container-high; a pressed filter chip takes the primary container. */
|
|
1733
2269
|
.mk-chip {
|
|
1734
2270
|
position: relative;
|
|
1735
2271
|
display: inline-flex;
|
|
@@ -1907,11 +2443,11 @@
|
|
|
1907
2443
|
|
|
1908
2444
|
/* css/controls/glass.css */
|
|
1909
2445
|
/*
|
|
1910
|
-
* .mk-glass —
|
|
2446
|
+
* .mk-glass — glass in one element: a translucent surface with a
|
|
1911
2447
|
* 4 px backdrop blur, an optical ring (::before) whose conic highlight turns
|
|
1912
2448
|
* from −75° to −125° on hover, and a specular band (::after) that slides and
|
|
1913
2449
|
* tilts when pressed. <span class="mk-glass__shadow" aria-hidden="true"> inside
|
|
1914
|
-
* adds
|
|
2450
|
+
* adds gradient shadow. Colours follow the theme's scheme (light-dark()).
|
|
1915
2451
|
*/
|
|
1916
2452
|
@property --mk-glass-angle-1 {
|
|
1917
2453
|
syntax: '<angle>';
|
|
@@ -1954,7 +2490,7 @@
|
|
|
1954
2490
|
isolation: isolate;
|
|
1955
2491
|
border: 0;
|
|
1956
2492
|
border-radius: 999vw;
|
|
1957
|
-
/*
|
|
2493
|
+
/* dark text on light, white on dark. */
|
|
1958
2494
|
color: var(--mk-glass-fg, light-dark(#121212, #fff));
|
|
1959
2495
|
background: linear-gradient(-75deg, var(--mk-glass-edge), var(--mk-glass-middle), var(--mk-glass-edge));
|
|
1960
2496
|
box-shadow: var(--mk-glass-shadow);
|
|
@@ -2015,7 +2551,7 @@
|
|
|
2015
2551
|
--mk-glass-angle-2 0.5s var(--mk-ease-glass);
|
|
2016
2552
|
}
|
|
2017
2553
|
|
|
2018
|
-
/*
|
|
2554
|
+
/* gradient shadow (optional child). Only its lower part shows: it sits under the button. */
|
|
2019
2555
|
.mk-glass__shadow {
|
|
2020
2556
|
--mk-glass-cut: 2em;
|
|
2021
2557
|
position: absolute;
|
|
@@ -2128,7 +2664,7 @@
|
|
|
2128
2664
|
}
|
|
2129
2665
|
|
|
2130
2666
|
/* css/controls/burger.css */
|
|
2131
|
-
/* .mk-burger —
|
|
2667
|
+
/* .mk-burger — menu icon: three lines that fold into an X when aria-expanded="true". */
|
|
2132
2668
|
.mk-burger {
|
|
2133
2669
|
--mk-burger-size: 24px;
|
|
2134
2670
|
--mk-burger-line: 1.5px;
|
|
@@ -2196,8 +2732,73 @@
|
|
|
2196
2732
|
}
|
|
2197
2733
|
}
|
|
2198
2734
|
|
|
2735
|
+
/* css/controls/status.css */
|
|
2736
|
+
/* status — "Available for new projects" pill and a live dot whose halo pulses (DOVV Studio: 1.6 s ease-out, scale 1 → 2.6). */
|
|
2737
|
+
.mk-status {
|
|
2738
|
+
display: inline-flex;
|
|
2739
|
+
align-items: center;
|
|
2740
|
+
gap: 10px;
|
|
2741
|
+
height: 40px;
|
|
2742
|
+
padding: 0 16px 0 14px;
|
|
2743
|
+
border-radius: 100px;
|
|
2744
|
+
background: var(--mk-surface);
|
|
2745
|
+
color: var(--mk-text);
|
|
2746
|
+
font: inherit;
|
|
2747
|
+
font-size: 14px;
|
|
2748
|
+
font-weight: 500;
|
|
2749
|
+
letter-spacing: -0.01em;
|
|
2750
|
+
white-space: nowrap;
|
|
2751
|
+
text-decoration: none;
|
|
2752
|
+
box-shadow: 0 0 0 1px var(--mk-outline-soft), 0 6px 20px -8px rgb(0 0 0 / 0.18);
|
|
2753
|
+
transition: box-shadow 0.3s, transform 0.3s;
|
|
2754
|
+
}
|
|
2755
|
+
/* One line always: on phones the secondary half goes. */
|
|
2756
|
+
@media (max-width: 480px) {
|
|
2757
|
+
.mk-status > :is(.mk-status__sep, .mk-status__muted) { display: none; }
|
|
2758
|
+
}
|
|
2759
|
+
a.mk-status:hover,
|
|
2760
|
+
button.mk-status:hover {
|
|
2761
|
+
transform: translateY(-1px);
|
|
2762
|
+
box-shadow: 0 0 0 1px var(--mk-outline), 0 10px 24px -8px rgb(0 0 0 / 0.22);
|
|
2763
|
+
}
|
|
2764
|
+
.mk-status__sep { width: 1px; height: 14px; background: var(--mk-outline-soft); }
|
|
2765
|
+
.mk-status__muted { color: var(--mk-muted); }
|
|
2766
|
+
.mk-status > svg,
|
|
2767
|
+
.mk-status > .mk-icon { color: var(--mk-muted); transition: transform 0.3s; }
|
|
2768
|
+
.mk-status:hover > svg,
|
|
2769
|
+
.mk-status:hover > .mk-icon { transform: translateX(2px); }
|
|
2770
|
+
.mk-status__dot {
|
|
2771
|
+
--mk-status-color: #16c847;
|
|
2772
|
+
position: relative;
|
|
2773
|
+
display: inline-block;
|
|
2774
|
+
flex: none;
|
|
2775
|
+
width: 8px;
|
|
2776
|
+
height: 8px;
|
|
2777
|
+
border-radius: 50%;
|
|
2778
|
+
background: var(--mk-status-color);
|
|
2779
|
+
}
|
|
2780
|
+
.mk-status__dot::after {
|
|
2781
|
+
content: '';
|
|
2782
|
+
position: absolute;
|
|
2783
|
+
inset: 0;
|
|
2784
|
+
border-radius: inherit;
|
|
2785
|
+
background: inherit;
|
|
2786
|
+
animation: mk-status-pulse 1.6s ease-out infinite;
|
|
2787
|
+
}
|
|
2788
|
+
.mk-status__dot--busy { --mk-status-color: #f59e0b; }
|
|
2789
|
+
.mk-status__dot--off { --mk-status-color: var(--mk-muted); }
|
|
2790
|
+
.mk-status__dot--off::after { animation: none; }
|
|
2791
|
+
@keyframes mk-status-pulse {
|
|
2792
|
+
0% { opacity: 0.6; transform: scale(1); }
|
|
2793
|
+
100% { opacity: 0; transform: scale(2.6); }
|
|
2794
|
+
}
|
|
2795
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2796
|
+
.mk-status { transition: none; }
|
|
2797
|
+
.mk-status__dot::after { animation: none; }
|
|
2798
|
+
}
|
|
2799
|
+
|
|
2199
2800
|
/* css/effects/anim.css */
|
|
2200
|
-
/*
|
|
2801
|
+
/* utility animations (shared stylesheet) and strong shake. Replay them with animate(el, name). */
|
|
2201
2802
|
.mk-anim-out {
|
|
2202
2803
|
animation: mk-out 0.5s ease forwards;
|
|
2203
2804
|
}
|
|
@@ -2423,7 +3024,7 @@
|
|
|
2423
3024
|
}
|
|
2424
3025
|
|
|
2425
3026
|
/* css/effects/loading.css */
|
|
2426
|
-
/*
|
|
3027
|
+
/* loading sweeps (animation-loading-1 / -2) and hover shimmer (hover-magic-1). */
|
|
2427
3028
|
.mk-loading {
|
|
2428
3029
|
position: relative;
|
|
2429
3030
|
overflow: hidden;
|
|
@@ -2485,7 +3086,7 @@
|
|
|
2485
3086
|
}
|
|
2486
3087
|
|
|
2487
3088
|
/* css/effects/text.css */
|
|
2488
|
-
/*
|
|
3089
|
+
/* animated gradient text: a rainbow (6 s) and one in the theme's colours (8 s). */
|
|
2489
3090
|
.mk-text-rainbow,
|
|
2490
3091
|
.mk-text-gradient {
|
|
2491
3092
|
-webkit-background-clip: text;
|
|
@@ -2554,7 +3155,7 @@
|
|
|
2554
3155
|
}
|
|
2555
3156
|
|
|
2556
3157
|
/* css/effects/frost.css */
|
|
2557
|
-
/* .mk-frost —
|
|
3158
|
+
/* .mk-frost — progressive blur: five backdrop-blur layers with staggered masks, so the blur grows toward the edge. */
|
|
2558
3159
|
.mk-frost {
|
|
2559
3160
|
--mk-frost-strength: 1;
|
|
2560
3161
|
position: absolute;
|
|
@@ -2618,7 +3219,7 @@
|
|
|
2618
3219
|
}
|
|
2619
3220
|
|
|
2620
3221
|
/* css/effects/float.css */
|
|
2621
|
-
/* .mk-float —
|
|
3222
|
+
/* .mk-float — floating tags: a slow bob (ease-in-out, infinite); children of .mk-float-group alternate five paths. */
|
|
2622
3223
|
.mk-float,
|
|
2623
3224
|
.mk-float-group > * {
|
|
2624
3225
|
--mk-float-y: 4px;
|
|
@@ -2684,7 +3285,7 @@
|
|
|
2684
3285
|
}
|
|
2685
3286
|
|
|
2686
3287
|
/* css/effects/grain.css */
|
|
2687
|
-
/* .mk-grain — film grain
|
|
3288
|
+
/* .mk-grain — film grain in CSS: an SVG turbulence tile that jumps between 8 places, like film. */
|
|
2688
3289
|
:where(.mk-grain) {
|
|
2689
3290
|
position: relative;
|
|
2690
3291
|
isolation: isolate;
|
|
@@ -2744,7 +3345,7 @@
|
|
|
2744
3345
|
}
|
|
2745
3346
|
|
|
2746
3347
|
/* css/effects/success.css */
|
|
2747
|
-
/* .mk-success —
|
|
3348
|
+
/* .mk-success — success mark: grows and untwists on a 260/18 spring after 0.15 s. Pair it with confetti(). */
|
|
2748
3349
|
.mk-success {
|
|
2749
3350
|
display: inline-grid;
|
|
2750
3351
|
place-items: center;
|
|
@@ -2768,7 +3369,7 @@
|
|
|
2768
3369
|
}
|
|
2769
3370
|
|
|
2770
3371
|
/* css/effects/fade.css */
|
|
2771
|
-
/*
|
|
3372
|
+
/* edge masks: content fades out at the edges of a strip or a column. */
|
|
2772
3373
|
.mk-fade-x {
|
|
2773
3374
|
-webkit-mask-image: linear-gradient(to right, transparent 0%, #000 20%, #000 80%, transparent 100%);
|
|
2774
3375
|
mask-image: linear-gradient(to right, transparent 0%, #000 20%, #000 80%, transparent 100%);
|
|
@@ -2785,7 +3386,7 @@
|
|
|
2785
3386
|
}
|
|
2786
3387
|
|
|
2787
3388
|
/* components/theme-picker/theme-picker.css */
|
|
2788
|
-
/* theme-picker —
|
|
3389
|
+
/* theme-picker — colour balls. */
|
|
2789
3390
|
.mk-theme-picker,
|
|
2790
3391
|
mk-theme-picker {
|
|
2791
3392
|
--mk-swatch-size: 72px;
|
|
@@ -2901,7 +3502,7 @@ mk-theme-picker {
|
|
|
2901
3502
|
}
|
|
2902
3503
|
|
|
2903
3504
|
/* components/dialog/dialog.css */
|
|
2904
|
-
/* dialog —
|
|
3505
|
+
/* dialog — modal surface: 400 px, radius 40, tonal surface; full screen under 680 px. */
|
|
2905
3506
|
.mk-dialog {
|
|
2906
3507
|
--mk-dialog-bg: var(--mk-surface-2);
|
|
2907
3508
|
--mk-dialog-radius: var(--mk-radius-dialog);
|
|
@@ -3121,7 +3722,7 @@ mk-dialog:not(:defined) {
|
|
|
3121
3722
|
display: none;
|
|
3122
3723
|
}
|
|
3123
3724
|
|
|
3124
|
-
/* Phones: dialogs take the whole screen with square corners
|
|
3725
|
+
/* Phones: dialogs take the whole screen with square corners. */
|
|
3125
3726
|
@media (max-width: 679px) {
|
|
3126
3727
|
.mk-dialog:not([data-mk-placement='anchor']) {
|
|
3127
3728
|
width: 100vw;
|
|
@@ -3141,7 +3742,7 @@ mk-dialog:not(:defined) {
|
|
|
3141
3742
|
}
|
|
3142
3743
|
}
|
|
3143
3744
|
|
|
3144
|
-
/* Sheet
|
|
3745
|
+
/* Sheet: pinned to the bottom, up to 720 px wide, rises from below. Also on phones. */
|
|
3145
3746
|
.mk-dialog[data-mk-variant='sheet'] {
|
|
3146
3747
|
--mk-dialog-width: var(--mk-sheet-max-width, 720px);
|
|
3147
3748
|
/* A modal <dialog> is inset: 0 — anchored only to the bottom, it takes its content's height. */
|
|
@@ -3161,7 +3762,7 @@ mk-dialog:not(:defined) {
|
|
|
3161
3762
|
}
|
|
3162
3763
|
|
|
3163
3764
|
/* components/menu/menu.css */
|
|
3164
|
-
/* menu —
|
|
3765
|
+
/* menu — translucent options panel that grows out of its button (an anchored .mk-dialog). */
|
|
3165
3766
|
.mk-menu {
|
|
3166
3767
|
--mk-menu-bg: color-mix(in srgb, var(--mk-surface-3) 78%, transparent);
|
|
3167
3768
|
--mk-menu-radius: 28px;
|
|
@@ -3267,7 +3868,7 @@ mk-menu:not(:defined) {
|
|
|
3267
3868
|
}
|
|
3268
3869
|
|
|
3269
3870
|
/* components/toast/toast.css */
|
|
3270
|
-
/* toast —
|
|
3871
|
+
/* toast — deck at the top of the screen, above dialogs (top layer when popovers exist). */
|
|
3271
3872
|
.mk-toaster {
|
|
3272
3873
|
position: fixed;
|
|
3273
3874
|
inset: 16px 0 auto;
|
|
@@ -3383,7 +3984,7 @@ mk-toaster {
|
|
|
3383
3984
|
}
|
|
3384
3985
|
|
|
3385
3986
|
/* components/chat-background/chat-background.css */
|
|
3386
|
-
/* chat-background —
|
|
3987
|
+
/* chat-background — Chat background: two orbiting blobs and a grain, driven by energy. */
|
|
3387
3988
|
.mk-chat-background,
|
|
3388
3989
|
mk-chat-background {
|
|
3389
3990
|
--mk-chat-orbit-1: 10s;
|
|
@@ -3431,7 +4032,7 @@ mk-chat-background::after {
|
|
|
3431
4032
|
animation: mk-chat-blob-2 var(--mk-chat-orbit-2) linear infinite;
|
|
3432
4033
|
}
|
|
3433
4034
|
|
|
3434
|
-
/* Grain
|
|
4035
|
+
/* Grain overlay using SVG turbulence at 30 %. */
|
|
3435
4036
|
.mk-chat-background__noise {
|
|
3436
4037
|
position: absolute;
|
|
3437
4038
|
inset: 0;
|
|
@@ -3471,7 +4072,7 @@ mk-chat-background::after {
|
|
|
3471
4072
|
}
|
|
3472
4073
|
|
|
3473
4074
|
/* components/chat/chat.css */
|
|
3474
|
-
/* chat —
|
|
4075
|
+
/* chat — Chat: glass bubbles over the live background, a soft fade at the bottom, a 64 px composer. */
|
|
3475
4076
|
.mk-chat,
|
|
3476
4077
|
mk-chat {
|
|
3477
4078
|
--mk-chat-radius: var(--mk-radius-2xl);
|
|
@@ -3710,11 +4311,7 @@ mk-chat > mk-chat-background {
|
|
|
3710
4311
|
|
|
3711
4312
|
/* components/nav/nav.css */
|
|
3712
4313
|
/*
|
|
3713
|
-
* nav —
|
|
3714
|
-
* mobile bar under 680 px, inside an app shell. Ported from Stepbro's
|
|
3715
|
-
* `.app-nav.style-N` rules: .app-container → .mk-shell, .app-view → .mk-shell__view,
|
|
3716
|
-
* .nav-button → .mk-nav__button, [active=true] → [aria-current="page"],
|
|
3717
|
-
* variant-1 → .mk-nav--accent.
|
|
4314
|
+
* nav — seven desktop styles and one mobile bar under 680 px, inside an app shell.
|
|
3718
4315
|
*/
|
|
3719
4316
|
|
|
3720
4317
|
/* Shell: the view and the nav side by side (the nav first), stacked on phones. */
|
|
@@ -4764,7 +5361,7 @@ mk-chat > mk-chat-background {
|
|
|
4764
5361
|
}
|
|
4765
5362
|
|
|
4766
5363
|
/* components/steps/steps.css */
|
|
4767
|
-
/* steps —
|
|
5364
|
+
/* steps — onboarding: one step at a time, centred in a column up to 600 px wide. */
|
|
4768
5365
|
.mk-steps,
|
|
4769
5366
|
mk-steps {
|
|
4770
5367
|
position: relative;
|
|
@@ -4777,7 +5374,7 @@ mk-steps {
|
|
|
4777
5374
|
font-family: var(--mk-font);
|
|
4778
5375
|
}
|
|
4779
5376
|
|
|
4780
|
-
/*
|
|
5377
|
+
/* onboarding background runs at 20 %. */
|
|
4781
5378
|
:is(.mk-steps, mk-steps) > :is(.mk-chat-background, mk-chat-background) {
|
|
4782
5379
|
--mk-chat-background-opacity: 0.2;
|
|
4783
5380
|
}
|
|
@@ -4815,7 +5412,7 @@ mk-steps {
|
|
|
4815
5412
|
}
|
|
4816
5413
|
|
|
4817
5414
|
/* components/cursor/cursor.css */
|
|
4818
|
-
/* cursor —
|
|
5415
|
+
/* cursor — glass chip and dot. The layer follows the pointer; the engine writes its transform. */
|
|
4819
5416
|
.mk-cursor {
|
|
4820
5417
|
position: fixed;
|
|
4821
5418
|
top: 0;
|
|
@@ -4825,7 +5422,7 @@ mk-steps {
|
|
|
4825
5422
|
will-change: transform;
|
|
4826
5423
|
}
|
|
4827
5424
|
|
|
4828
|
-
/* chip
|
|
5425
|
+
/* chip: a .mk-glass label; ink follows the background under it. */
|
|
4829
5426
|
.mk-cursor__chip {
|
|
4830
5427
|
--mk-glass-fg: #fff;
|
|
4831
5428
|
display: inline-flex;
|
|
@@ -4863,7 +5460,7 @@ mk-steps {
|
|
|
4863
5460
|
display: none;
|
|
4864
5461
|
}
|
|
4865
5462
|
|
|
4866
|
-
/* dot
|
|
5463
|
+
/* dot: a disc with a word and two arrows that slide in when pressed. */
|
|
4867
5464
|
.mk-cursor--dot {
|
|
4868
5465
|
--mk-cursor-size: 88px;
|
|
4869
5466
|
transition: opacity 0.15s var(--mk-ease-quint);
|
|
@@ -4995,7 +5592,7 @@ mk-cursor {
|
|
|
4995
5592
|
|
|
4996
5593
|
/* components/island/island.css */
|
|
4997
5594
|
/*
|
|
4998
|
-
*
|
|
5595
|
+
* floating navbar: frosted glass pill at the top that grows into a
|
|
4999
5596
|
* panel. Fixed over the page by default; .mk-island--contained keeps it (and its
|
|
5000
5597
|
* backdrop) inside a positioned parent, for previews.
|
|
5001
5598
|
*/
|
|
@@ -5294,3 +5891,419 @@ mk-cursor {
|
|
|
5294
5891
|
transition: none !important;
|
|
5295
5892
|
}
|
|
5296
5893
|
}
|
|
5894
|
+
|
|
5895
|
+
/* components/quantity/quantity.css */
|
|
5896
|
+
.mk-quantity, mk-quantity { display: inline-flex; align-items: center; gap: .5rem; --mk-quantity-size: 3rem; }
|
|
5897
|
+
.mk-quantity [data-mk-quantity-decrease], .mk-quantity [data-mk-quantity-increase], mk-quantity button {
|
|
5898
|
+
width: var(--mk-quantity-size); height: var(--mk-quantity-size); border: 0; border-radius: 50%;
|
|
5899
|
+
background: var(--mk-secondary-soft); color: var(--mk-on-secondary-soft); font: inherit; font-size: 1.65rem;
|
|
5900
|
+
cursor: pointer; transition: transform .4s cubic-bezier(.28,.71,0,.98), opacity .2s;
|
|
5901
|
+
}
|
|
5902
|
+
.mk-quantity [data-mk-quantity-increase], mk-quantity [data-mk-quantity-increase] { background: var(--mk-accent-soft); color: var(--mk-on-accent-soft); }
|
|
5903
|
+
.mk-quantity button:is(:hover,:focus-visible):not(:disabled), mk-quantity button:is(:hover,:focus-visible):not(:disabled) {
|
|
5904
|
+
transform: rotate(15deg); mask-image: radial-gradient(circle at 100% 0, transparent 22%, #000 23%);
|
|
5905
|
+
}
|
|
5906
|
+
.mk-quantity button:focus-visible, mk-quantity button:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 4px; }
|
|
5907
|
+
.mk-quantity button:disabled, mk-quantity button:disabled { opacity: .4; cursor: default; }
|
|
5908
|
+
.mk-quantity input, mk-quantity input { width: 3.5rem; padding: .4rem 0; border: 0; border-radius: var(--mk-radius-sm); text-align: center; font: inherit; font-variant-numeric: tabular-nums; background: transparent; color: var(--mk-text); appearance: textfield; }
|
|
5909
|
+
.mk-quantity input::-webkit-inner-spin-button, mk-quantity input::-webkit-inner-spin-button { appearance: none; }
|
|
5910
|
+
@media (prefers-reduced-motion: reduce) { .mk-quantity button, mk-quantity button { transition: none; transform: none !important; } }
|
|
5911
|
+
|
|
5912
|
+
/* components/pagination/pagination.css */
|
|
5913
|
+
.mk-pagination, mk-pagination { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .35rem; }
|
|
5914
|
+
.mk-pagination [data-mk-pagination-pages], mk-pagination [data-mk-pagination-pages] { display: flex; align-items: center; gap: .25rem; }
|
|
5915
|
+
.mk-pagination button, mk-pagination button { min-width: 2.5rem; height: 2.5rem; border: 0; border-radius: var(--mk-radius-full); background: var(--mk-surface-2); color: var(--mk-text); font: inherit; cursor: pointer; transition: transform .3s, background .3s, color .3s; }
|
|
5916
|
+
.mk-pagination button[aria-current], mk-pagination button[aria-current] { background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
5917
|
+
.mk-pagination button:hover:not(:disabled), mk-pagination button:hover:not(:disabled) { transform: translateY(-3px); }
|
|
5918
|
+
.mk-pagination button:active:not(:disabled), mk-pagination button:active:not(:disabled) { transform: scale(.9); }
|
|
5919
|
+
.mk-pagination button:focus-visible, mk-pagination button:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 3px; }
|
|
5920
|
+
.mk-pagination button:disabled, mk-pagination button:disabled { opacity: .35; cursor: default; }
|
|
5921
|
+
.mk-pagination__gap { padding: 0 .15rem; color: var(--mk-muted); }
|
|
5922
|
+
@media (prefers-reduced-motion: reduce) { .mk-pagination button, mk-pagination button { transition: none; transform: none !important; } }
|
|
5923
|
+
|
|
5924
|
+
/* components/hover-card/hover-card.css */
|
|
5925
|
+
.mk-hover-card, mk-hover-card { position: relative; display: inline-flex; }
|
|
5926
|
+
.mk-hover-card [data-mk-hover-panel], mk-hover-card [data-mk-hover-panel] {
|
|
5927
|
+
position: absolute; z-index: 10; bottom: calc(100% + .75rem); left: 0;
|
|
5928
|
+
width: min(19rem, calc(100vw - 3rem)); padding: 1.25rem; border-radius: var(--mk-radius-lg);
|
|
5929
|
+
color: var(--mk-text); background: var(--mk-surface-3); border: 1px solid var(--mk-outline-soft);
|
|
5930
|
+
box-shadow: 0 12px 40px color-mix(in srgb, var(--mk-shadow-color) 20%, transparent);
|
|
5931
|
+
animation: mk-hover-card-in .28s cubic-bezier(.2,.8,.2,1) both;
|
|
5932
|
+
}
|
|
5933
|
+
.mk-hover-card [data-mk-hover-panel]::after, mk-hover-card [data-mk-hover-panel]::after { content: ''; position: absolute; inset: -1rem 0; z-index: -1; }
|
|
5934
|
+
.mk-hover-card[data-mk-placement=bottom] [data-mk-hover-panel], mk-hover-card[data-mk-placement=bottom] [data-mk-hover-panel] { top: calc(100% + .75rem); bottom: auto; }
|
|
5935
|
+
.mk-hover-card [hidden], mk-hover-card [hidden] { display: none !important; }
|
|
5936
|
+
@keyframes mk-hover-card-in { from { opacity: 0; transform: translateY(7px) scale(.97); } to { opacity: 1; transform: none; } }
|
|
5937
|
+
@media (prefers-reduced-motion: reduce) { .mk-hover-card [data-mk-hover-panel], mk-hover-card [data-mk-hover-panel] { animation: none; } }
|
|
5938
|
+
|
|
5939
|
+
/* components/input-otp/input-otp.css */
|
|
5940
|
+
.mk-input-otp, mk-input-otp { --mk-otp-size: 2.75rem; --mk-otp-gap: .4rem; display: inline-block; position: relative; max-width: 100%; }
|
|
5941
|
+
.mk-input-otp [data-mk-otp-slots], mk-input-otp [data-mk-otp-slots] { display: flex; flex-wrap: wrap; gap: var(--mk-otp-gap); }
|
|
5942
|
+
.mk-input-otp__slot { box-sizing: border-box; width: var(--mk-otp-size); height: 3.5rem; display: grid; place-items: center; border: 1px solid var(--mk-outline-soft); border-radius: var(--mk-radius-sm); color: var(--mk-text); background: var(--mk-surface-1); font: 1.5rem var(--mk-font-mono, monospace); transition: border-color .2s, background .2s, transform .2s; }
|
|
5943
|
+
.mk-input-otp__slot[data-mk-active] { outline: 2px solid var(--mk-accent); outline-offset: 2px; background: var(--mk-accent-soft); color: var(--mk-on-accent-soft); transform: translateY(-2px); }
|
|
5944
|
+
.mk-input-otp [data-mk-otp-input], mk-input-otp [data-mk-otp-input] { position: absolute; inset: 0; box-sizing: border-box; width: 100%; height: 100%; border: 0; background: transparent; color: transparent; caret-color: transparent; outline: 0; font: 1.5rem var(--mk-font-mono, monospace); letter-spacing: calc(var(--mk-otp-size) + var(--mk-otp-gap) - 1ch); padding: 0 0 0 calc((var(--mk-otp-size) - 1ch) / 2); }
|
|
5945
|
+
.mk-input-otp:has([aria-invalid=true]) .mk-input-otp__slot, mk-input-otp:has([aria-invalid=true]) .mk-input-otp__slot { border-color: var(--mk-error); }
|
|
5946
|
+
.mk-input-otp:has(:disabled), mk-input-otp:has(:disabled) { opacity: .45; }
|
|
5947
|
+
@media (max-width: 420px) { .mk-input-otp, mk-input-otp { --mk-otp-size: 2.25rem; --mk-otp-gap: .3rem; } }
|
|
5948
|
+
@media (prefers-reduced-motion: reduce) { .mk-input-otp__slot { transition: none; transform: none !important; } }
|
|
5949
|
+
|
|
5950
|
+
/* components/studio-dock/studio-dock.css */
|
|
5951
|
+
.mk-studio-dock { position: relative; isolation: isolate; width: min(343px, 100%); color: var(--mk-text); font: inherit; }
|
|
5952
|
+
.mk-studio-dock--fixed { position: fixed; z-index: 70; inset-block-end: 24px; inset-inline-start: 50%; translate: -50% 0; width: min(343px, calc(100vw - 32px)); }
|
|
5953
|
+
.mk-studio-dock__bar { display: flex; align-items: center; gap: 16px; min-height: 64px; padding: 12px; border-radius: 18px; background: var(--mk-surface-2); }
|
|
5954
|
+
.mk-studio-dock__brand, .mk-studio-dock__toggle { display: grid; place-items: center; inline-size: 40px; block-size: 40px; flex: none; border: 0; border-radius: 10px; background: var(--mk-surface); color: inherit; text-decoration: none; font: inherit; }
|
|
5955
|
+
.mk-studio-dock__label { flex: 1; font-size: .9rem; }
|
|
5956
|
+
.mk-studio-dock__toggle { cursor: pointer; }
|
|
5957
|
+
.mk-studio-dock__toggle span { transition: transform .4s; }
|
|
5958
|
+
.mk-studio-dock[data-mk-studio-open] .mk-studio-dock__toggle span { transform: rotate(45deg); }
|
|
5959
|
+
.mk-studio-dock__panel { position: absolute; z-index: 2; inset-inline: 0; inset-block-end: var(--mk-studio-dock-offset, 76px); max-height: min(660px, 75dvh, var(--mk-studio-dock-space, 660px)); overflow: auto; overscroll-behavior: contain; padding: 12px; border: 1px solid var(--mk-outline-soft); border-radius: 18px; background: var(--mk-surface-2); box-shadow: 0 16px 60px #0002; }
|
|
5960
|
+
/* Not enough room above the bar: the engine opens the sheet below it. */
|
|
5961
|
+
.mk-studio-dock[data-mk-studio-below] .mk-studio-dock__panel { inset-block: var(--mk-studio-dock-offset, 76px) auto; }
|
|
5962
|
+
.mk-studio-dock [hidden] { display: none !important; }
|
|
5963
|
+
.mk-studio-dock__grid, .mk-studio-dock__page { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
|
|
5964
|
+
.mk-studio-dock__tile { min-height: 130px; display: flex; flex-direction: column; justify-content: flex-end; gap: 4px; padding: 12px; border-radius: 10px; background: var(--mk-surface); color: inherit; text-decoration: none; transition: transform .4s cubic-bezier(.2, 1.4, .4, 1); }
|
|
5965
|
+
.mk-studio-dock__tile small { color: var(--mk-muted); }
|
|
5966
|
+
.mk-studio-dock__tile:is(:hover, :focus-visible) { transform: scale(.94); }
|
|
5967
|
+
.mk-studio-dock__reel { display: flex; justify-content: space-between; align-items: end; min-height: 154px; margin-block: 12px; padding: 16px; border-radius: 10px; background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
5968
|
+
.mk-studio-dock__reel button { border: 1px solid currentColor; border-radius: 50%; padding: 14px; background: transparent; color: inherit; font: inherit; cursor: pointer; }
|
|
5969
|
+
.mk-studio-dock__slide-track { position: relative; display: flex; align-items: center; height: 64px; padding: 4px; margin-block: 12px; border-radius: 48px; background: var(--mk-surface-3, var(--mk-surface)); }
|
|
5970
|
+
.mk-studio-dock__slide-track > span { position: absolute; inset-inline: 60px 12px; text-align: center; font-size: .75rem; pointer-events: none; }
|
|
5971
|
+
.mk-studio-dock [data-mk-studio-slide] { position: relative; display: grid; place-items: center; width: 56px; height: 56px; border: 0; border-radius: 50%; background: var(--mk-surface); color: inherit; font-size: 20px; cursor: pointer; touch-action: pan-y; transform: translateX(var(--mk-studio-drag, 0px)); }
|
|
5972
|
+
.mk-studio-dock__clock { position: relative; aspect-ratio: 1; display: grid; place-content: center; gap: 4px; text-align: center; border: 10px solid var(--mk-surface); border-radius: 50%; background: var(--mk-surface-2); }
|
|
5973
|
+
.mk-studio-dock__clock::after { content: ''; position: absolute; inset: 8px; border: 1px solid var(--mk-outline-soft); border-radius: 50%; }
|
|
5974
|
+
.mk-studio-dock__clock small { color: var(--mk-muted); }
|
|
5975
|
+
.mk-studio-dock__pages { margin-block-start: 12px; }
|
|
5976
|
+
.mk-studio-dock__pagination { display: flex; justify-content: center; gap: 8px; margin-block-start: 12px; }
|
|
5977
|
+
.mk-studio-dock__pagination button { width: 32px; height: 32px; padding: 0; border: 0; border-radius: 50%; background: var(--mk-surface); color: inherit; font: inherit; cursor: pointer; }
|
|
5978
|
+
.mk-studio-dock__pagination [aria-current] { background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
5979
|
+
.mk-studio-dock__view { display: grid; gap: 16px; padding: 12px 0; }
|
|
5980
|
+
.mk-studio-dock__view input, .mk-studio-dock__view textarea { width: 100%; padding: 12px; border: 1px solid var(--mk-outline-soft); border-radius: 8px; background: var(--mk-surface); color: inherit; font: inherit; }
|
|
5981
|
+
.mk-studio-dock__view label { display: grid; gap: 6px; }
|
|
5982
|
+
.mk-studio-dock__view video { width: 100%; border-radius: 10px; }
|
|
5983
|
+
.mk-studio-dock :is(button,a,input,textarea):focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 3px; }
|
|
5984
|
+
@media (prefers-reduced-motion: reduce) { .mk-studio-dock *, .mk-studio-dock *::after { transition: none !important; animation: none !important; } }
|
|
5985
|
+
|
|
5986
|
+
/* components/trailer/trailer.css */
|
|
5987
|
+
.mk-trailer {
|
|
5988
|
+
--mk-trailer-ink: #f6f3e8;
|
|
5989
|
+
--mk-trailer-paper: #131816;
|
|
5990
|
+
width: min(1100px, calc(100vw - 32px));
|
|
5991
|
+
max-width: none;
|
|
5992
|
+
max-height: calc(100dvh - 32px);
|
|
5993
|
+
padding: 0;
|
|
5994
|
+
border: 0;
|
|
5995
|
+
border-radius: 0;
|
|
5996
|
+
color: var(--mk-trailer-ink);
|
|
5997
|
+
background: var(--mk-trailer-paper);
|
|
5998
|
+
overflow: auto;
|
|
5999
|
+
margin: auto;
|
|
6000
|
+
}
|
|
6001
|
+
.mk-trailer::backdrop { background: rgb(4 10 7 / .8); }
|
|
6002
|
+
.mk-trailer__header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 16px 20px; }
|
|
6003
|
+
.mk-trailer__title { font: 500 .75rem/1.5 var(--mk-font-mono, monospace); text-transform: uppercase; letter-spacing: .16em; margin: 0; }
|
|
6004
|
+
.mk-trailer video { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: contain; background: #060b08; }
|
|
6005
|
+
.mk-trailer [data-mk-trailer-stage]:fullscreen { display: flex; flex-direction: column; justify-content: center; width: 100%; height: 100%; background: var(--mk-trailer-paper); color: var(--mk-trailer-ink); }
|
|
6006
|
+
.mk-trailer [data-mk-trailer-stage]:fullscreen video { max-height: calc(100dvh - 90px); }
|
|
6007
|
+
.mk-trailer__controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px 20px 16px; font: .7rem/1.5 var(--mk-font-mono, monospace); }
|
|
6008
|
+
.mk-trailer button { display: grid; place-items: center; min-width: 44px; min-height: 44px; border: 1px solid currentColor; color: inherit; background: transparent; cursor: pointer; font: inherit; }
|
|
6009
|
+
.mk-trailer button:hover { background: rgb(255 255 255 / .12); }
|
|
6010
|
+
.mk-trailer button:focus-visible, .mk-trailer input:focus-visible { outline: 2px solid #e5ff96; outline-offset: 4px; }
|
|
6011
|
+
.mk-trailer button svg { width: 18px; height: 18px; fill: currentColor; }
|
|
6012
|
+
.mk-trailer [data-mk-trailer-seek] { flex: 1; min-width: 70px; accent-color: #d6f2ac; }
|
|
6013
|
+
.mk-trailer [data-mk-trailer-volume] { width: 72px; accent-color: #d6f2ac; }
|
|
6014
|
+
.mk-trailer [data-mk-trailer-time] { white-space: nowrap; }
|
|
6015
|
+
.mk-trailer [data-mk-trailer-status] { padding: 0 20px; font: .8rem/1.5 var(--mk-font, sans-serif); }
|
|
6016
|
+
.mk-trailer [data-mk-trailer-status]:empty { display: none; }
|
|
6017
|
+
.mk-trailer__pause-icon, .mk-trailer__sound-off { display: none; }
|
|
6018
|
+
.mk-trailer [data-mk-trailer-play][aria-pressed="true"] .mk-trailer__play-icon,
|
|
6019
|
+
.mk-trailer [data-mk-trailer-mute][aria-pressed="true"] .mk-trailer__sound-on { display: none; }
|
|
6020
|
+
.mk-trailer [data-mk-trailer-play][aria-pressed="true"] .mk-trailer__pause-icon,
|
|
6021
|
+
.mk-trailer [data-mk-trailer-mute][aria-pressed="true"] .mk-trailer__sound-off { display: block; }
|
|
6022
|
+
@media (max-width: 540px) { .mk-trailer [data-mk-trailer-volume] { display: none; } .mk-trailer__controls { gap: 8px; padding-inline: 12px; } .mk-trailer [data-mk-trailer-seek] { flex-basis: 100%; order: -1; } }
|
|
6023
|
+
|
|
6024
|
+
/* components/calendar/calendar.css */
|
|
6025
|
+
/* calendar — Melon Mind's month/week grid on the --mk-* tokens; parts are .mk-calendar__*. */
|
|
6026
|
+
.mk-calendar,
|
|
6027
|
+
mk-calendar {
|
|
6028
|
+
--mk-calendar-gap: 6px;
|
|
6029
|
+
--mk-calendar-radius: var(--mk-radius-lg);
|
|
6030
|
+
--mk-calendar-day-height: 112px;
|
|
6031
|
+
display: flex;
|
|
6032
|
+
flex-direction: column;
|
|
6033
|
+
gap: var(--mk-space-3);
|
|
6034
|
+
color: var(--mk-text);
|
|
6035
|
+
}
|
|
6036
|
+
.mk-calendar__header {
|
|
6037
|
+
display: flex;
|
|
6038
|
+
flex-wrap: wrap;
|
|
6039
|
+
align-items: center;
|
|
6040
|
+
gap: var(--mk-space-2);
|
|
6041
|
+
}
|
|
6042
|
+
.mk-calendar__title { margin: 0 auto 0 0; font-size: clamp(1.4rem, 2.6vw, 2rem); font-weight: 400; letter-spacing: -0.01em; }
|
|
6043
|
+
.mk-calendar__views { display: inline-flex; padding: 4px; gap: 2px; border-radius: var(--mk-radius-full); background: var(--mk-surface-3); }
|
|
6044
|
+
.mk-calendar__views button,
|
|
6045
|
+
.mk-calendar__nav {
|
|
6046
|
+
display: inline-grid;
|
|
6047
|
+
place-items: center;
|
|
6048
|
+
min-width: 44px;
|
|
6049
|
+
height: 44px;
|
|
6050
|
+
padding: 0 12px;
|
|
6051
|
+
border: 0;
|
|
6052
|
+
border-radius: var(--mk-radius-full);
|
|
6053
|
+
background: transparent;
|
|
6054
|
+
color: var(--mk-muted);
|
|
6055
|
+
font: inherit;
|
|
6056
|
+
cursor: pointer;
|
|
6057
|
+
transition: background 0.2s, color 0.2s, transform 0.3s var(--mk-ease-nav-move);
|
|
6058
|
+
}
|
|
6059
|
+
.mk-calendar__views button[aria-pressed='true'] { background: var(--mk-surface-5); color: var(--mk-text); }
|
|
6060
|
+
.mk-calendar__nav { background: var(--mk-surface-3); color: var(--mk-text); }
|
|
6061
|
+
.mk-calendar__nav:active { transform: scale(0.92); }
|
|
6062
|
+
:is(.mk-calendar__views button, .mk-calendar__nav):focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 2px; }
|
|
6063
|
+
|
|
6064
|
+
[data-mk-calendar-grid] { position: relative; display: flex; flex-direction: column; gap: var(--mk-calendar-gap); }
|
|
6065
|
+
.mk-calendar__head,
|
|
6066
|
+
.mk-calendar__week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: var(--mk-calendar-gap); }
|
|
6067
|
+
.mk-calendar__body { display: flex; flex-direction: column; gap: var(--mk-calendar-gap); }
|
|
6068
|
+
.mk-calendar__body--leaving { position: absolute; left: 0; right: 0; pointer-events: none; }
|
|
6069
|
+
.mk-calendar__weekday {
|
|
6070
|
+
padding: 8px 4px;
|
|
6071
|
+
border-radius: var(--mk-radius-md);
|
|
6072
|
+
background: var(--mk-surface-2);
|
|
6073
|
+
text-align: center;
|
|
6074
|
+
font-size: 0.95rem;
|
|
6075
|
+
}
|
|
6076
|
+
.mk-calendar__weekday-narrow { display: none; }
|
|
6077
|
+
|
|
6078
|
+
.mk-calendar__day {
|
|
6079
|
+
position: relative;
|
|
6080
|
+
display: flex;
|
|
6081
|
+
flex-direction: column;
|
|
6082
|
+
gap: 4px;
|
|
6083
|
+
min-width: 0;
|
|
6084
|
+
min-height: var(--mk-calendar-day-height);
|
|
6085
|
+
padding: 6px;
|
|
6086
|
+
border-radius: var(--mk-calendar-radius);
|
|
6087
|
+
background: var(--mk-surface-3);
|
|
6088
|
+
transition: background 0.3s, box-shadow 0.3s;
|
|
6089
|
+
container-type: inline-size;
|
|
6090
|
+
}
|
|
6091
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__day { min-height: calc(var(--mk-calendar-day-height) * 3); }
|
|
6092
|
+
.mk-calendar__day[data-outside] { background: var(--mk-surface-1); color: var(--mk-muted); }
|
|
6093
|
+
.mk-calendar__day:hover { background: var(--mk-surface-4); }
|
|
6094
|
+
.mk-calendar__day[aria-selected='true'] { box-shadow: inset 0 0 0 2px var(--mk-accent); }
|
|
6095
|
+
.mk-calendar__number {
|
|
6096
|
+
align-self: flex-end;
|
|
6097
|
+
min-width: 2.2rem;
|
|
6098
|
+
height: 2.2rem;
|
|
6099
|
+
padding: 0 0.4rem;
|
|
6100
|
+
border: 0;
|
|
6101
|
+
border-radius: var(--mk-radius-full);
|
|
6102
|
+
background: transparent;
|
|
6103
|
+
color: inherit;
|
|
6104
|
+
font: inherit;
|
|
6105
|
+
font-size: 1.15rem;
|
|
6106
|
+
cursor: pointer;
|
|
6107
|
+
transition: background 0.3s, color 0.3s, border-radius 0.3s var(--mk-ease-nav-radius), transform 0.3s var(--mk-ease-nav-radius);
|
|
6108
|
+
}
|
|
6109
|
+
.mk-calendar__number:hover { background: var(--mk-surface-5); }
|
|
6110
|
+
.mk-calendar__number:active { transform: scale(0.9); }
|
|
6111
|
+
.mk-calendar__number:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 2px; }
|
|
6112
|
+
.mk-calendar__day[data-today] .mk-calendar__number { background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
6113
|
+
|
|
6114
|
+
.mk-calendar__events { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
|
|
6115
|
+
.mk-calendar__event,
|
|
6116
|
+
.mk-calendar__more {
|
|
6117
|
+
--mk-calendar-event-color: var(--mk-accent);
|
|
6118
|
+
display: flex;
|
|
6119
|
+
align-items: center;
|
|
6120
|
+
gap: 6px;
|
|
6121
|
+
width: 100%;
|
|
6122
|
+
min-width: 0;
|
|
6123
|
+
padding: 5px 8px;
|
|
6124
|
+
border: 0;
|
|
6125
|
+
border-radius: 10px;
|
|
6126
|
+
background: var(--mk-surface-4);
|
|
6127
|
+
color: var(--mk-text);
|
|
6128
|
+
font: inherit;
|
|
6129
|
+
font-size: 0.85rem;
|
|
6130
|
+
text-align: left;
|
|
6131
|
+
cursor: pointer;
|
|
6132
|
+
transition: background 0.2s, transform 0.3s var(--mk-ease-nav-move);
|
|
6133
|
+
}
|
|
6134
|
+
.mk-calendar__event[data-state='pending'] {
|
|
6135
|
+
background: color-mix(in srgb, var(--mk-calendar-event-color) 30%, var(--mk-surface-3));
|
|
6136
|
+
}
|
|
6137
|
+
.mk-calendar__event:hover,
|
|
6138
|
+
.mk-calendar__more:hover { transform: translateY(-1px); background: var(--mk-surface-5); }
|
|
6139
|
+
.mk-calendar__event:focus-visible,
|
|
6140
|
+
.mk-calendar__more:focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 1px; }
|
|
6141
|
+
.mk-calendar__status {
|
|
6142
|
+
flex: none;
|
|
6143
|
+
width: 0.8rem;
|
|
6144
|
+
height: 0.8rem;
|
|
6145
|
+
border: 2px solid currentColor;
|
|
6146
|
+
border-radius: 50%;
|
|
6147
|
+
}
|
|
6148
|
+
.mk-calendar__event[data-state='done'] .mk-calendar__status { background: currentColor; box-shadow: inset 0 0 0 2px var(--mk-surface-4); }
|
|
6149
|
+
.mk-calendar__event[data-state='cancelled'] .mk-calendar__event-title { text-decoration: line-through; opacity: 0.6; }
|
|
6150
|
+
.mk-calendar__event-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
6151
|
+
.mk-calendar__event-time { flex: none; font-variant-numeric: tabular-nums; opacity: 0.85; }
|
|
6152
|
+
.mk-calendar__more { justify-content: center; background: transparent; color: var(--mk-muted); }
|
|
6153
|
+
|
|
6154
|
+
/* Narrow day cells: the month keeps the title (the time stays in the label); the week stacks the time under it. */
|
|
6155
|
+
@container (max-width: 150px) {
|
|
6156
|
+
.mk-calendar__body[data-view='month'] .mk-calendar__event-time { display: none; }
|
|
6157
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__event { flex-wrap: wrap; column-gap: 5px; row-gap: 1px; }
|
|
6158
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__event-title { flex: 1 1 0; }
|
|
6159
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__event-time { flex-basis: 100%; padding-left: calc(0.8rem + 5px); font-size: 0.72rem; }
|
|
6160
|
+
}
|
|
6161
|
+
@media (max-width: 680px) {
|
|
6162
|
+
.mk-calendar,
|
|
6163
|
+
mk-calendar { --mk-calendar-day-height: 64px; --mk-calendar-gap: 4px; --mk-calendar-radius: var(--mk-radius-sm); }
|
|
6164
|
+
.mk-calendar__weekday-long { display: none; }
|
|
6165
|
+
.mk-calendar__weekday-narrow { display: inline; }
|
|
6166
|
+
.mk-calendar__number { align-self: center; font-size: 0.95rem; }
|
|
6167
|
+
.mk-calendar__body[data-view='month'] .mk-calendar__events { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 3px; }
|
|
6168
|
+
.mk-calendar__body[data-view='month'] :is(.mk-calendar__event, .mk-calendar__more) {
|
|
6169
|
+
width: 7px;
|
|
6170
|
+
height: 7px;
|
|
6171
|
+
padding: 0;
|
|
6172
|
+
border-radius: 50%;
|
|
6173
|
+
background: var(--mk-calendar-event-color);
|
|
6174
|
+
font-size: 0;
|
|
6175
|
+
}
|
|
6176
|
+
.mk-calendar__body[data-view='month'] .mk-calendar__status { display: none; }
|
|
6177
|
+
.mk-calendar__body[data-view='week'] .mk-calendar__event-time { display: none; }
|
|
6178
|
+
}
|
|
6179
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6180
|
+
.mk-calendar *,
|
|
6181
|
+
mk-calendar * { transition: none !important; }
|
|
6182
|
+
}
|
|
6183
|
+
|
|
6184
|
+
/* components/slot-picker/slot-picker.css */
|
|
6185
|
+
/* slot-picker — Melon Mind's appointment picker on the --mk-* tokens; parts are .mk-slot-picker__*. */
|
|
6186
|
+
.mk-slot-picker,
|
|
6187
|
+
mk-slot-picker {
|
|
6188
|
+
--mk-slot-picker-radius: var(--mk-radius-md);
|
|
6189
|
+
display: grid;
|
|
6190
|
+
grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
|
|
6191
|
+
overflow: hidden;
|
|
6192
|
+
border-radius: var(--mk-radius-xl);
|
|
6193
|
+
background: var(--mk-surface);
|
|
6194
|
+
color: var(--mk-text);
|
|
6195
|
+
}
|
|
6196
|
+
.mk-slot-picker__calendar { padding: var(--mk-space-5); }
|
|
6197
|
+
.mk-slot-picker__panel {
|
|
6198
|
+
display: flex;
|
|
6199
|
+
flex-direction: column;
|
|
6200
|
+
gap: var(--mk-space-3);
|
|
6201
|
+
min-height: 100%;
|
|
6202
|
+
padding: var(--mk-space-5);
|
|
6203
|
+
background: var(--mk-surface-2);
|
|
6204
|
+
}
|
|
6205
|
+
.mk-slot-picker__month { display: flex; align-items: center; gap: var(--mk-space-2); margin-bottom: var(--mk-space-3); }
|
|
6206
|
+
.mk-slot-picker__title { margin: 0 auto 0 0; font-size: 1.35rem; font-weight: 400; }
|
|
6207
|
+
.mk-slot-picker__nav {
|
|
6208
|
+
display: grid;
|
|
6209
|
+
place-items: center;
|
|
6210
|
+
width: 42px;
|
|
6211
|
+
height: 42px;
|
|
6212
|
+
border: 0;
|
|
6213
|
+
border-radius: 50%;
|
|
6214
|
+
background: var(--mk-surface-2);
|
|
6215
|
+
color: var(--mk-text);
|
|
6216
|
+
font: inherit;
|
|
6217
|
+
cursor: pointer;
|
|
6218
|
+
transition: transform 0.3s var(--mk-ease-nav-move), opacity 0.2s;
|
|
6219
|
+
}
|
|
6220
|
+
.mk-slot-picker__nav:active { transform: scale(0.9); }
|
|
6221
|
+
.mk-slot-picker__nav:disabled { opacity: 0.35; cursor: default; }
|
|
6222
|
+
[data-mk-slot-days],
|
|
6223
|
+
[data-mk-slot-times] { position: relative; }
|
|
6224
|
+
.mk-slot-picker__days { display: flex; flex-direction: column; gap: 6px; }
|
|
6225
|
+
.mk-slot-picker__weekdays,
|
|
6226
|
+
.mk-slot-picker__week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
|
|
6227
|
+
.mk-slot-picker__weekdays span {
|
|
6228
|
+
padding: 6px 0;
|
|
6229
|
+
border-radius: var(--mk-radius-sm);
|
|
6230
|
+
background: color-mix(in srgb, var(--mk-surface-2) 70%, transparent);
|
|
6231
|
+
text-align: center;
|
|
6232
|
+
font-size: 0.9rem;
|
|
6233
|
+
}
|
|
6234
|
+
.mk-slot-picker__week > [role='gridcell'] { display: grid; }
|
|
6235
|
+
.mk-slot-picker__day {
|
|
6236
|
+
aspect-ratio: 1.15;
|
|
6237
|
+
border: 0;
|
|
6238
|
+
border-radius: var(--mk-slot-picker-radius);
|
|
6239
|
+
background: var(--mk-surface-3);
|
|
6240
|
+
color: var(--mk-text);
|
|
6241
|
+
font: inherit;
|
|
6242
|
+
font-size: 0.95rem;
|
|
6243
|
+
cursor: pointer;
|
|
6244
|
+
transition: background 0.25s, color 0.25s, border-radius 0.3s var(--mk-ease-nav-radius), transform 0.3s var(--mk-ease-nav-radius);
|
|
6245
|
+
}
|
|
6246
|
+
.mk-slot-picker__day:hover:not(:disabled) { background: var(--mk-surface-5); border-radius: var(--mk-radius-full); }
|
|
6247
|
+
.mk-slot-picker__day:active:not(:disabled) { transform: scale(0.92); }
|
|
6248
|
+
.mk-slot-picker__day:disabled { opacity: 0.35; cursor: default; }
|
|
6249
|
+
.mk-slot-picker__day[aria-current='date'] { box-shadow: inset 0 0 0 1.5px var(--mk-outline); }
|
|
6250
|
+
[aria-selected='true'] > .mk-slot-picker__day,
|
|
6251
|
+
[aria-selected='true'] > .mk-slot-picker__day:hover:not(:disabled) { background: var(--mk-accent); color: var(--mk-on-accent); }
|
|
6252
|
+
:is(.mk-slot-picker__day, .mk-slot-picker__time, .mk-slot-picker__nav):focus-visible { outline: 2px solid var(--mk-accent); outline-offset: 2px; }
|
|
6253
|
+
|
|
6254
|
+
.mk-slot-picker__heading {
|
|
6255
|
+
margin: 0;
|
|
6256
|
+
padding: 8px;
|
|
6257
|
+
border-radius: var(--mk-radius-md);
|
|
6258
|
+
background: var(--mk-surface);
|
|
6259
|
+
font-weight: 600;
|
|
6260
|
+
}
|
|
6261
|
+
.mk-slot-picker__heading:not([data-mk-shown]) { display: none; }
|
|
6262
|
+
.mk-slot-picker__heading[data-mk-shown] { animation: mk-slot-heading-in 0.5s cubic-bezier(0.38, 0.49, 0, 1.4); }
|
|
6263
|
+
@keyframes mk-slot-heading-in {
|
|
6264
|
+
0% { max-height: 0; min-height: 0; padding-block: 0; opacity: 0; }
|
|
6265
|
+
100% { max-height: 56px; min-height: 40px; opacity: 1; }
|
|
6266
|
+
}
|
|
6267
|
+
.mk-slot-picker__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(5.5rem, 1fr)); gap: 8px; align-content: start; }
|
|
6268
|
+
.mk-slot-picker__leaving { position: absolute; left: 0; right: 0; pointer-events: none; }
|
|
6269
|
+
.mk-slot-picker__note { grid-column: 1 / -1; margin: 2rem 0; color: var(--mk-muted); text-align: center; }
|
|
6270
|
+
.mk-slot-picker__time {
|
|
6271
|
+
position: relative;
|
|
6272
|
+
isolation: isolate;
|
|
6273
|
+
height: 44px;
|
|
6274
|
+
border: 0;
|
|
6275
|
+
border-radius: var(--mk-radius-sm);
|
|
6276
|
+
background: var(--mk-surface-4);
|
|
6277
|
+
color: var(--mk-text);
|
|
6278
|
+
font: inherit;
|
|
6279
|
+
font-variant-numeric: tabular-nums;
|
|
6280
|
+
cursor: pointer;
|
|
6281
|
+
transition: background 0.2s, color 0.2s, transform 0.3s var(--mk-ease-nav-move);
|
|
6282
|
+
}
|
|
6283
|
+
.mk-slot-picker__time:hover { transform: translateY(-2px); }
|
|
6284
|
+
.mk-slot-picker__time[aria-checked='true'] { color: var(--mk-on-accent); }
|
|
6285
|
+
.mk-slot-picker__time[aria-checked='true']::before {
|
|
6286
|
+
content: '';
|
|
6287
|
+
position: absolute;
|
|
6288
|
+
inset: 0;
|
|
6289
|
+
z-index: -1;
|
|
6290
|
+
border-radius: inherit;
|
|
6291
|
+
background: var(--mk-accent);
|
|
6292
|
+
animation: mk-slot-highlight 0.7s cubic-bezier(0.38, 0.49, 0, 1.1);
|
|
6293
|
+
}
|
|
6294
|
+
@keyframes mk-slot-highlight {
|
|
6295
|
+
0% { transform: scale(0.8); opacity: 0; filter: blur(16px); box-shadow: 0 0 0 1px var(--mk-surface-2); }
|
|
6296
|
+
100% { transform: scale(1); opacity: 1; filter: blur(0); }
|
|
6297
|
+
}
|
|
6298
|
+
.mk-slot-picker__actions { margin-top: auto; display: flex; justify-content: flex-end; }
|
|
6299
|
+
|
|
6300
|
+
@media (max-width: 680px) {
|
|
6301
|
+
.mk-slot-picker,
|
|
6302
|
+
mk-slot-picker { grid-template-columns: 1fr; }
|
|
6303
|
+
.mk-slot-picker__calendar,
|
|
6304
|
+
.mk-slot-picker__panel { padding: var(--mk-space-4); }
|
|
6305
|
+
}
|
|
6306
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6307
|
+
.mk-slot-picker *,
|
|
6308
|
+
mk-slot-picker * { transition: none !important; animation: none !important; }
|
|
6309
|
+
}
|